数字图像处理:直方图均衡化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字图像处理:直方图均衡化相关的知识,希望对你有一定的参考价值。
参考技术A 首先在直方图的修整,有两种方法,一种是直方图均衡化,另外一种是直方图规定化,用起来的话第一种方法用的比较多,这里着重说一下第一种:直方图均衡化.我们引入直方图,很大程度上是可以根据直方图的形态来去判断图像的质量,比如根据下图所示,会很快发现一张图片是过亮还是过暗,这篇文章会说一下直方图均衡化的原理,至于实现,以后有机会再说吧.
1.直方图均衡化
直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。
直方图均衡化方法的基本思想是对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。从而达到清晰图像的目的。
一些理论的东西我们不谈,直接用一个例子来说一下,会更容易理解:
假设有一幅图像,共有64×64个像素,8个灰度级,各灰度级概率分布见下表 ,试将其直方图均匀化。
解题步骤:
1:确定图像的灰度级
在实际情况下,如果我们的图像是彩色,需要将其转换为灰度图像,其中的灰度级一般是0-255,这个题的灰度级只有8级,需要注意下
2:计算原始直方图的概率
统计每一个灰度在原始图像上的像素所占总体的比例,记为Pi
3:计算直方图概率的累加值S(i)
直到最后一个灰度级,总和为1
4: 根据公式求取像素映射关系.
这里的pix是指的灰度级,也就是(最大灰度级-最小灰度级)*累加概率+0.5后取整数
5: 灰度映射
找到了原图像和均衡化图像灰度的对应关系,对原图进行操作,将每个像素映射成新的像素
此时图像均衡化已经完成,当然你也可以再次统计灰度概率,观察一下结果。
数字图像处理之直方图均衡
直方图均衡化的原理在这里就不赘述了,网上有多此类的博文,也可以参考冈萨雷斯的《数字图像处理》(第三版)一书中的第三章中的相关介绍;
这里演示一下直方图均衡化的效果:
原图像如下:
经过直方图均衡化处理后:
可以看到图像的对比度整体有的很大的提升,原本模糊不清的细节也变得清晰起来
直方图均衡化的算法实现可以分为三个步骤:
第一步:获得原图像的概率密度函数(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的值的代码)
以上是关于数字图像处理:直方图均衡化的主要内容,如果未能解决你的问题,请参考以下文章