一、非锐化掩模USM大体原理
USM,是英文unsharp mask的缩写,所以中文翻译过来就是“非锐化掩膜”,它可以去除一些细小的干扰细节和噪声。在Emgu CV中没有单独的函数实现USM锐化算法,而是通过两个简单的函数组合:
1. GaussianBlur,高斯模糊原始图像;
2. AddWeighted,原始图像和高斯模糊后的图像进行权重叠加。
二、代码
C#代码如下:
Mat tempMat = srcMat.Clone();
Mat gaussianMat = new Mat();
Mat dstMat = new Mat();
int ksizeW = 9;
int ksizeH = 9;
double sigmaX = 5;
double sigmaY = 5;
CvInvoke.GaussianBlur(tempMat, gaussianMat, new System.Drawing.Size(ksizeW, ksizeH), sigmaX, sigmaY);
CvInvoke.AddWeighted(tempMat, 2, gaussianMat, -1, 0, dstMat);
CvInvoke.Imshow("Final image, " + dstMat.Size.ToString(), dstMat);
GaussianBlur函数和AddWeighted函数都在之前介绍过,这里就不多说了。值得注意的是,AddWeighted进行权重叠加时,原始图像权重是2,高斯模糊后的图像是-1,这个是用户自己定义的,具体要根据实际要求设置。
三、效果举例
原始素材定义为srcMat,如下:
还是这张夜晚天桥的照片,执行上述代码,锐化后的图像如下:
注意哈,它是锐化的作用,因此最终输出的图像,明暗对比没有被增强,但是仔细看,最下方地砖的纹理和树叶的边缘,是不是更清晰了????
再提一句,我这里把锐化、增强放到一起连续讲了。锐化就是边缘更清晰,增强是明暗对比更明显,概念别弄混了。
原创不易,请勿抄袭。共同进步,相互学习。