读了几篇关于直方图均衡化的文章 终于发现让我百思不得其解的老师PPT上的映射方法是错的……
这是老师ppt上的内容 【正确的映射是不用除以N的】
说一下个人理解的直方图均衡化吧:
就是把原图像的频数(或频率)直方图每一根的高度不变,把他们分别移动到使直方图看起来最均衡的位置,这个最均衡的位置是指该条所对应的原图中的灰度值的累计频率乘以(L-1)
所以所谓均衡化的直方图,就是以原图的累计频率乘以(L-1)为横坐标,原图的频率为纵坐标做出的
MATLAB代码:
function [ B ] = Hist_Equ( A )
value=unique(A);%每个元素取一个数
freq=[];
for k=1:length(value)
temp=sum(sum(value(k)==A));%求每个元素的频数
freq=[freq;temp];
end
B=[value,freq];
B(1,4)=B(1,2)/sum(B(:,2));
for i=1:size(value,1)
B(i,3)=B(i,2)/sum(B(:,2));%求每个元素的概率
if i>1
B