灰度均衡算法原理与设计

)算法思想

灰度均衡也称直方图均衡,目的是通过点运算使输入转换为在每一灰度级上都有相同的像素点数的输出图像(即输出的直方图是平的)。这对于在进行图像比较或分割之前将图像转化为一级的格式是十分有效的。

按照图像的概率密度函数(PDF,归一化带单位面积的直方图)的定义:

P(x) =  

 * H(x)(式5)

其中H(x)为直方图,A0为图像的面积,设转换前图像的概率密度函数为

Pr(r),转换后图像的概率密度函数为Ps(S),转换函数为s = f(r),由概率论知识,我们可以得到:

Ps(S) =  Pr(r)* 

(式6)

这样,如果想使转换后图像的概率密度函数为1(即直方图是平的)则必须满足:

Pr(r)= 

 (式4-5)

等式两边积分,得:  

S = f(r)= 0 rP2(u)du =

0 r H(u)du  (式7)

该转换式被称为图像的累积分布函数

上面的式是被归一化后推导的对于没有归一化的情况,只要求以最大的灰度值(DMax,对于灰度图就是255)即可,灰度均衡的转换式为:

DB  = f (DA)=

  H(u)du (式1)

对于离散图像转换式为:

DB =  f(DA)=

 

 (式8)                        

式中Hi为第i级灰度的像素个数。

(2)编程实现

在灰度均衡操作同样不需要改变DIB的调色板和文件夹,只要把指向DIB像素起始位置的指针和DIB高度、宽度信息传递给子函数就可以完成灰度均衡变换工作,其核心代码如下:

*(lpData + lOffset)=state ; //显示灰度均衡

*(lpData + lOffset+1)=state ;

*(lpData + lOffset+2)=state ;

(3)效果图

  

   图 4-5 灰度均衡效果图

5、图像对比度增强

  1. 算法思想:

在对图像均衡直方图处理以后,便可对图像进行对比度增强,进一步拉开对比度。它通过对图像的灰度值进行统计,对于比最小设定值小的则认为是有关的信息,则将它作为黑色处理,比最大设定值大的则认为是一些无关的信息,将它们去掉,而处于两者之间的,则进行对比度增强,将他们在总的灰度值里面的比例作为新的像素信息保存起来。

这个工作的主要目的是将图像的特征一步一步显现出来。

(2) 编码实现:

①  编辑菜单IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名为“实现图像对比度增强”,并将其ID设为ID_READY_ContrastEnhance。

  •   类CFaceDetectView中添加“实现图像对比度增强”菜单项的事件处理程序,其代码如下;

lOffset = gDib.PixelOffset(i, j, gwBytesPerLine);

获取图像灰度增强函数

int state=IncreaseContrast(ZFT[k][k1], 100);    

显示灰度增强后的图像

*(lpData +  lOffset ) = state ;

      *(lpData + lOffset+1) = state ;

*(lpData + lOffset+2) = state ;

其中IncreaseContras()函数是实现图像对比度增强的关键函数,该根据参数n来调节对比度,n越大,对比越强烈,其核心是:

如果数据很小,设置为0

if(pByte<=Low)

return 0;

获得中间数据,并进行对比增强处理

else if ((Low<pByte)&&(pByte<High))

return int(((pByte-Low)/Grad));

如果数据很大,设置为255

else

return  255;

  • 效果图

图4-6  对比度增强效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值