对比度展宽的目的:
通过将亮暗差异(即对比度)扩大,来把人所关心的部分强调出来。
原理:
进行像素点对点的,灰度级的线性影射。该影射关系通过调整参数,来实现对亮暗差异的扩大。
实现方法:
- 设原图、处理后的结果图的灰度值分别为[f(ij)]和[g(i,)];
- 要求[g(i,)]和[f(i,)]均在[0, 255]间变化,但是g的表现效果要优于f。
- 因为f和g的取值范围相同,所以通过抑制不重要的部分,来扩展所关心部分的对比度。
原图(横轴上的f(i,j))与处理后图(纵轴上的g(i,j))的灰度影射关系如下图:
……不好意思放错了,是这张图:
计算公式:
其中
(图像大小为m✖️n)
接下来在MATLAB上写一下
原图:
MATLAB:
文字版:
fa=5;fb=30;
ga=80;gb = 100;
ImPath='bqb.jpeg';
%%J=ContrastWidening(ImPath, fa, fb, ga, gb) ;
F=imread (ImPath) ;
color=size(F,3) ;
if (color>1)
F=rgb2gray(F) ;
end
m=size(F, 1) ;
n=size(F, 2) ;
G=zeros (m, n) ;
for i=1 :m
for j=1:n
if(F(i, j)<fa)
G(i, j)=(ga/fa)*F(i, j);
elseif(F(i, j)<fb)
G(i, j)=(gb-ga)/ (fb-fa)*(F(i, j)-fa) +ga;
else
G(i, j)= (255-gb)/ (255-fb)*(F(i, j)-fb) +gb;
end
end
end
G=uint8 (G);
imshow(G);
运行结果:
可能是我的图片找的不好,另一组的示例更具有代表性:
end~