标签:src title http 之间 直方图的均衡化 效果 灰度 它的 均衡
均衡化处理后的图象只能是近似均匀分布。均衡化图象的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了,
因此,原来灰度不同的象素经处理后可能变的相同,形成了一片的相同灰度的区域,各区域之间有明显的边界,从而出现了伪轮廓。
如果原始图像对比度本来就很高,如果再均衡化则灰度调和,对比度降低。在泛白缓和的图像中,均衡化会合并一些象素灰度,从而增大对比度。均衡化后的图片如果再对其均衡化,则图像不会有任何变化。
灰度直方图均衡化的算法,简单地说,就是把直方图的每个灰度级进行归一化处理,求每种灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。
经典的直方图均衡化算法可能存在以下一些不足:
直方图均衡化的机理,是将对应像素较少的几个连续灰度级合并成一个灰度级,通过减少灰度级来实现的均衡化。对于离散灰度级的图像,不可能做到完全的均衡,我们得到的结果只是一个大致的均衡。
〈=s〈=1。则前后之间存在如下转换关系:
s(k) = T(r(k))
T(r)为一个单调递增函数,它的获得可由下面的公式给出:
T(r(k)) = ∑pr(r(j)) , j=0:k
pr(r(k)) = n(r(k))/n ,表示每一个灰度值出现的概率
n = ∑n(rj) , j=0:L-1 ,图像总像素值
计算s(k) = T(r(k),就得到了r(k)~s(k)的映射关系。寻找待处理图像的灰度值全部转换成相应灰度值,便完成了直方图的均衡化操作。
如某图像有像素分布:
由此,得到转换关系为
灰度值0、0.1都写成0.2,概率0.17;合并了
灰度级0.2写成0.3,概率0.1;
灰度值0.3、0.4都写成0.4,概率0.17;合并了
灰度级0.5写成0.5,概率0.03;
灰度值0.6写成0.6,概率0.09;
灰度级0.7写成0.7,概率0.12;
灰度值0.8写成0.9,概率0.23;
灰度级0.9、1写成1,概率0.09;合并了
matlab实现: im = imread(‘image/dipum_images_ch03/Fig0308(a)(pollen).tif‘); [m,n] = size(im); L = 256; %灰度级L=256 pixel = zeros(1,L); % for i=1:L temp = find( im==(i-1) ); len = size(temp); pixel(i) = len(1)/(m*n); end T = linspace(0,L-1,L); temp = 0; for i=1:L temp = temp + pixel(i); T(i) = temp; end s = uint8(T * L); newim = im; for i =1:L newim(find(im == (i-1))) = s(i); end newpixel = zeros(1,L); for i=1:L temp = size( find( newim==(i-1) ) ); newpixel(i) = temp(1) /(m*n); end subplot(2,2,1);imshow(im); subplot(2,2,2);bar(0:L-1,pixel); subplot(2,2,3);imshow(newim); subplot(2,2,4);bar(0:L-1,newpixel);
效果图:
标签:src title http 之间 直方图的均衡化 效果 灰度 它的 均衡
原文地址:http://www.cnblogs.com/wxl845235800/p/7429223.html