图像处理:图像增强质量评估

原理

1、亮度阈值效应:JND曲线
图像处理:图像增强质量评估_第1张图片
图中说明,人眼在暗的场景下分辨能力是弱的。
比如下图,在灰度值整体加80之后,人眼原先分辨不出的背景文字,衣服褶皱便可看清
(PS:从ppt里扒下来的图都不能用,由于图片压缩,其实原图黑色部分已十分接近,+80也分辨不出来,只能百度重搜。还有上次,只有5个灰度级的图像扒下来后灰度级变多了很多(比较连续了),以后有功夫再看压缩的原理吧)
图像处理:图像增强质量评估_第2张图片
让我想起一个小伙用美图秀秀的涂鸦笔给自己名字打码,被人调高亮度后扒出来的事。
2、空间频率掩盖效应(单位视角,明暗变化个数)

图像处理:图像增强质量评估_第3张图片
频率越高,视网膜细胞是有限的嘛,所以分辨能力会下降,比如隔远了看屏幕,尽管屏幕分辨率没变,但看到的细节就没那么清晰了。
那频率低了为啥也不行呢?
比如这张图(我记得有个祖师爷的图来着就是没搜到),近了看全是小点点,远了看却是人像。和视线聚焦有关吧?人眼关注的焦点部分其实不大,so。。。
图像处理:图像增强质量评估_第4张图片
于是乎,就有了利用JND和MTF评判图片处理质量的算法:

实现

1、建立从0-255的、uint8格式的JND曲线:存储为JNDtable.mat文件,以作备用。(JND函数就从老师ppt上码下来的,百度不太多?)
图像处理:图像增强质量评估_第5张图片
2、导入图像,这里我用同一张图,亮图=暗图+80(uint8格式,超过255自动变255)
如下

J=imread('***.jpg');
J=rgb2gray(I); 
K=J+100;
subplot(1,2,1);
imshow(J);title('原图像');
subplot(1,2,2);
imshow(K);title('灰度+80');

运行结果就最上面俩图
然后调用质量评估函数JND_test

map1=JND_test(K);
map2=JND_test(J);
subplot(1,2,1);
imshow(map1);title('亮图像');%一个figure显示
subplot(1,2,2);
imshow(map2);title('暗图像');%一个figure显示

质量评估函数JND_test.m文件:
采用中心灰度值减去周围灰度加权的方式,作为该中心点灰度变化的值。采用filter滤波器,核参数5*5:
图像处理:图像增强质量评估_第6张图片

function [map] = JND_test(A)
load 'JNDtable.mat'%函数内外参数互不影响,如果不load,会把y当做函数名,显示未定义与 'uint8' 类型的输入参数相对应的函数 'y'。
h=[1 1 1 1 1
    1 2 2 2 1 
    1 2 0 2 1 
    1 2 2 2 1
    1 1 1 1 1];
pic = filter2(h,A,'same')./32;
pic=uint8(pic);
img=A-pic;

[H, L] = size(A);
map=uint8(zeros(H,L));
for i=1:H
    for j=1:L
        if img(i,j)>y(A(i,j)+1)
            map(i,j)=255;
        end
    end
end

识别结果:
图像处理:图像增强质量评估_第7张图片
对比发现亮图中衣服细节能体现出来,后面的字亮图的提取结果也稍完整一些,比较符合人看到的结果。

然后,MTF没听懂啊啊啊啊啊啊啊啊啊啊啊

你可能感兴趣的:(图像处理)