直方图均衡化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

例子:

原来未处理的图片


处理之后的图片
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容