直方图均衡化Histogram Equalization

之前在用LBP做单样本人脸识别的时候,对于光照角度太大或者光线太暗的情况并不是很好,出错的概率还是很大,老师推荐用直方图均衡化先对大图做一下预处理。 

直方图均衡化的主要思想是对像素个数较多的灰度级进行展宽,而对于像素个数较少的灰度级进行压缩。

在处理过程中,直方图均衡化分为四个部分:

(1) 统计每个像素点的个数并计算分布密度

(2)计算直方图分布

(3)计算每个像素值均衡化之后的值,并取整

(4) 均衡化原始图片

Matlab具体实现代码如下:

function equ_image = equalization( image )

    [row,column] = size(image);、

     %统计像素值的分布密度

     pixelNum=zeros(1,256);

     for i=0:255

          pixelNum(i+1)=length(find(image==i))/(row*column*1.0);

     end

     %计算直方图分布

     pixelEqualize=zeros(1,256);

     for i=1:256

          if i==1

              pixelEqualize(i)=pixelNum(i);

          else

              pixelEqualize(i)=pixelEqualize(i-1)+pixelNum(i);

          end

     end

     %取整

     pixelEqualize=round(256 .* pixelEqualize +0.5);

     %均衡化

     for i=1:row

          for j=1:column

               equ_image(i,j)=pixelEqualize(image(i,j)+1);

          end

      end

end

例子:

直方图均衡化Histogram Equalization_第1张图片
原来未处理的图片


直方图均衡化Histogram Equalization_第2张图片
处理之后的图片

你可能感兴趣的:(直方图均衡化Histogram Equalization)