【Emgu CV教程】7.2、图像锐化(增强)之直方图均衡化


一、介绍

1.什么叫直方图

这篇文章出现的有点早,因为要连续介绍图像锐化的方法,我这里就把直方图均衡化也加进来了。直方图均衡化是一个简单好用的函数,但是这里面有两个名词很难理解,什么叫直方图??什么叫直方图均衡化???,这里先简单解释一下相关概念。

直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的一个统计表,称为图像直方图。它是一个统计学概念,可以反映图像灰度的分布情况。

举例说明,我们把 0 - 255 ,一共256个值分为10个等级,其中 0到24是一级,25到50是二级,51到76是三级,77到102是四级,103到128是五级,129到154是六级,155到180是七级,181到206是八级,207到232是九级,233到255是十级。如果有一个9 * 9的灰度图,其具体的数值根据上述分级方法,得到一个级数图是这样的:

在这里插入图片描述

注意了:上图中的 1 代表实际灰度图的值在 0 到 24之间,10 就代表实际灰度图的值在 233 到 255之间

根据上图,得到一个级数的统计表,如下图:

在这里插入图片描述

这个表用excel中的折线图表示,就是这样的:

在这里插入图片描述

2.什么叫直方图均衡化

看上面这个“出现次数”统计表,很明显,等级4、5、6出现的次数较多,也就是原始的灰度图中,像素值在77到102、103到128、129到154中的比较多,其余像素值比较少。整体上看这个灰度图不会太黑,因为等级1、2、3的很少;也不会特别亮,因为等级7、8、9、10的比较少。

直方图均衡化,其实就是将等级4、5、6向两边拉伸,由一个又尖又陡的曲线图,变成平缓一些的曲线图,就像是下图这样:
在这里插入图片描述
具体拉伸方法,我也不会,大概意思就是这样,读者们可以自己去找找相关资料。

3.直方图均衡化的作用

直方图均衡化就是让那些较大的亮度在全局图像中更好的分布,一般用来增加图像的全局对比度,对于背景和前景都太亮或者太暗的图像非常有用。

4.直方图均衡化的函数

Emgu CV里面直方图均衡化的函数是EqualizeHist(),函数定义如下:

public static void EqualizeHist(
	IInputArray src, //输入图像, 8位单通道的灰度图
	IOutputArray dst //输出图像, 也是8位单通道的灰度图
)

二、举例

1.原始素材

原始素材定义为srcMat,如下:
在这里插入图片描述
这是个电影里的镜头,下面看一下锐化效果。

2.代码

直方图均衡化代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat(tempMat.Size, tempMat.Depth, 1);

// 彩色图像三通道要专为灰度图,分别对每个通道进行直方图均衡化,再通道合并
CvInvoke.CvtColor(tempMat, tempMat, ColorConversion.Bgr2Gray);

// 直方图均衡化,输出的是单通道灰度图
CvInvoke.EqualizeHist(tempMat, dstMat);  

3.运行结果

在这里插入图片描述

直方图均衡化的结果,比灰度图要亮很多,看上去就像是白天拍摄的效果。再举个例子大伙儿看看:
在这里插入图片描述
看到了吧,直方图均衡化代码简单,就一个函数自动完成计算,也不用输入任何参数,就可以把一副图像变成明暗分布更加均匀。

直方图除了均衡化以外,还有归一化、匹配等功能,讲完图像锐化,接下来就细细地讲它。


原创不易,请勿抄袭。共同进步,相互学习。

  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值