您的位置:首页 > 其它

DIP关键算法-直方图均衡化

2016-09-13 09:27 411 查看
  直方图均衡化中均衡的含义指图像的直方图是平直的,即各灰度级具有相同的出现频数,而均衡化则是将原图像的直方图通过变换函数修正为均匀的直方图,使图像看起来更清晰。即直方图均衡化的本质就是找到合理的映射,将原图像中的亮度重新调整,以使亮度的分配更加均匀。matlab实现如下,结合代码来看思路更加清晰。  

%直方图均衡化
I = imread('rice.png');
[height,width] = size(I);
figure
subplot(221)
imshow(I)%显示原始图像
subplot(222)
imhist(I)%显示原始图像直方图

%进行像素灰度统计;
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
for j = 1: width
NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
ProbPixel = zeros(1,256);
for i = 1:256
ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end
%计算累计直方图分布
CumuPixel = zeros(1,256);
for i = 1:256
if i == 1
CumuPixel(i) = ProbPixel(i);
else
CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);
end
end
%累计分布取整
CumuPixel = uint8(255 .* CumuPixel + 0.5);
%对灰度值进行映射(均衡化)
for i = 1:height
for j = 1: width
I(i,j) = CumuPixel(I(i,j) + 1);
end
end

subplot(223)
imshow(I)%显示原始图像
subplot(224)
imhist(I)%显示原始图像直方图


代码参考:http://blog.csdn.net/xiajun07061225/article/details/6910129
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  直方图均衡化