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

原理

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

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

实现

1、建立从0-255的、uint8格式的JND曲线:存储为JNDtable.mat文件,以作备用。(JND函数就从老师ppt上码下来的,百度不太多?)
在这里插入图片描述
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:
在这里插入图片描述

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

识别结果:
在这里插入图片描述
对比发现亮图中衣服细节能体现出来,后面的字亮图的提取结果也稍完整一些,比较符合人看到的结果。

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值