数字图像处理之直方图均衡

Posted ImageProcessing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字图像处理之直方图均衡相关的知识,希望对你有一定的参考价值。

直方图均衡化的原理在这里就不赘述了,网上有多此类的博文,也可以参考冈萨雷斯的《数字图像处理》(第三版)一书中的第三章中的相关介绍;

这里演示一下直方图均衡化的效果:

原图像如下:

经过直方图均衡化处理后:

可以看到图像的对比度整体有的很大的提升,原本模糊不清的细节也变得清晰起来

直方图均衡化的算法实现可以分为三个步骤:

第一步:获得原图像的概率密度函数(PDF)。

 1 for(i=0;i<rows;i++)
 2 {
 3     for(j=0;j<cols;j++)
 4     {
 5         n[Image[i][j]]++;        //遍历整幅图像          
 6     }
 7 }  
 8 for(i=0;i<L;i++)
 9 {
10     p[i]=n[i]/(rows*cols);
11 }  

其中,n[i]代表了灰度级为i的像素个数,那么p[i]的含义也就呼之欲出了,即为原始图像的概率密度函数(PDF)也称为归一化之后的直方图,L为图像的灰度级(典型取值如:256)

第二步:获得累计的归一化直方图

1 for(i=0;i<L;i++)
2 {
3     for(j=0;j<=i;j++)
4     {
5         c[i]+=p[j];
6     }
7 }

第三步:获得处理后的图像

1 for(i=0;i<rows;i++)
2 {
3     for(j=0;j<cols;j++)
4     {
5         result[i][j]=c[Image[i][j]]*(max - min) + min;  
6     }
7 }

其中max, min分别代表原图像中的最大和最小灰度级(需要遍历图像获得,前面的代码中并没有加入获得max以及min的值的代码)

以上是关于数字图像处理之直方图均衡的主要内容,如果未能解决你的问题,请参考以下文章

数字图像处理直方图均衡化与规定化

数字图像处理:直方图均衡化

图像处理之直方图均衡化拉伸

数字图像处理:OpenCV直方图均衡算法研究及模拟实现

[数字图像处理] 直方图均衡化

数字图像处理五.MFC图像点运算之灰度线性变化灰度非线性变化阈值化和均衡化处理具体解释