【Emgu CV教程】7.6、图像锐化(增强)之CLAHE图像增强


一、介绍

1.CLAHE大体原理

CLAHE,是英文Contrast Limited Adaptive Histogram Equalization的缩写,中文翻译过来就是“对比度受限的自适应直方图均衡”。

前面讲过直方图均衡化,直方图均衡化是全局的, 因此图像局部区域存在过亮或者过暗时, 效果不是很好。而且直方图均衡会增强背景噪声,影响效果。因此就有专家提出了新的解决办法,通过对图像分块(分区域)进行直方图均衡化,再增加一个对比度限制的算法,就变成了CLAHE算法。分块(分区域)比较好理解,就是把原始图像分成多个 m * n大小的小区域,然后对这些小区域分别进行直方图均衡化,得到增强后的 m * n 个小区域。然后对比度受限呢,这个好像是在将 m * n 个增强后的小区域拼接成完整图像时进行对比度判断,不好意思,我编不下去了,其实原始函数是怎么写的我也不知道,读者有兴趣可以去OpenCV的源码看看,我还是直接介绍Emgu CV中相关函数怎么用吧。

CLAHE主要作用在于增强图像的对比度同时能够抑制噪声,特别适用于医学、红外图像的处理。

2.CLAHE函数

Emgu CV中官方定义如下:

public static void CLAHE(
	IInputArray src, // 输入图像,单通道图像
	double clipLimit, // 对比度限制的阈值,一般在2 - 5
	Size tileGridSize, // 网格大小,也就是分成的小区域是多大
	IOutputArray dst // 输出图像,单通道图像
)

二、代码

C#代码如下:

Mat tempMat = srcMat.Clone();
Mat gray = new Mat();
Mat dstMat = new Mat();
double clipLimit = 2.0;
int width = 10;
int height = 10;
System.Drawing.Size tileGridSize = new System.Drawing.Size(width, height);
CvInvoke.CvtColor(tempMat, gray, ColorConversion.Bgr2Gray);
CvInvoke.CLAHE(gray, clipLimit, tileGridSize, dstMat);
CvInvoke.Imshow("CLAHE sharping image, " + dstMat.Size.ToString(), dstMat);

三、效果举例

原始素材定义为srcMat,如下:
在这里插入图片描述

还是这张夜晚天桥的照片,执行上述代码,CLAHE增强后的图像如下:
在这里插入图片描述

直接进行直方图均衡化的图像是下面这样的:
在这里插入图片描述

两种增强方式一对比,还是很明显的:它们都大幅度地提高了夜间显示效果,但是直方图均衡化后的天桥夜景明亮部分显得有些刺眼,而CLAHE图像增强在提高暗处细节的同时,让明亮部分和黑暗部分的对比更加自然。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值