【图像锐化】非锐化掩模 USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask)

非锐化掩模USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask)

掩膜操作可以提高图像对比度,对比度提高可以增加图像感官度、锐化,让看起来有点模糊的图像更清晰。
原理:提取图像的高频分量,再用一个参数放大之后与原图叠加,这样就产生了一个增强了边缘的图像。
提取图像的高频分量的做法有两种:
1.直接使用高通滤波器,得到高频分量。2.通过低通滤波器,再用原图减去低频就得到了高频信息。

  • 锐化掩模 SM 锐化增强算法-加法操作
    效果图 = 源图像+w*高频分量图像;其中w表示权重(0.1~0.9),默认为0.6
    矩阵的掩膜操作十分简单,根据掩膜来重新计算每个像素的像素值,掩膜(mask 也被称为Kernel)。直接提取高频的方法有sobel算法、laplcian算子,sobel算子是图像的一阶导数,提取的是梯度信息,分水平和垂直两种,常常用来做边缘检测、方向判别,sobel算子在斜坡处不为0,因此会产生较粗的边缘。laplcian算子是图像的二阶导,在图像开始变化和结束变化的地方值不为0,渐变时结果为0,因此laplacian比sobel算子更适合做sharpen。

  • 非锐化掩模 USM 锐化增强算法-减法操作
    效果图 = 源图像+(源图像– w*低频分量图像)/(1-w);其中w表示权重(0.1~0.9),默认为0.6
    除了直接提取高频的方法外,我们也可以先提取低频,原图减去低频得到高频。这种方法称为非锐化掩(unsharpen mask),我们常使用低通滤波器(高斯、双边)对图像进行滤波,这种方法滤波器很好控制(包括大小和强弱),从而可以控制高频分量的强弱。
    请添加图片描述
    图像卷积处理实现锐化有一种常用的算法叫做Unsharpen Mask方法,这种锐化的方法就是对原图像先做一个高斯模糊,然后用原来的图像减去一个系数乘以高斯模糊之后的图像,然后再把值Scale到0~255的RGB像素值范围之内。基于USM锐化的方法可以去除一些细小的干扰细节和噪声,比一般直接使用卷积锐化算子得到的图像锐化结果更加真实可信。

c++程序代码+opencv

void quick_opencv::unsharpenMask_Demo(Mat &image)
{
    
    
	// 非锐化掩模
	// USM锐化公式表示如下:
	//(源图像– w*高斯模糊) / (1 - w);其中w表示权重(0.1~0.9),默认为0.6
	Mat blur_img, usm;
	GaussianBlur(image, blur_img, Size(0, 0), 25);
	addWeighted(image, 1.5, blur_img, -0.5, 0, usm);
	imshow("非锐化掩模", usm);
}

void quick_opencv::sharpenMask_Demo(Mat &image)
{
    
    
	//掩膜操作
	int channels = image.channels();//图像的通道数
	int cols = (image.cols)*image.channels();//列数*通道数
	int rows = image.rows;//行数
	Mat dst = Mat::zeros(image.size(), image.type());//初始化 dst

	for (int row = 1; row < rows - 1; row++) 
	{
    
    
		const uchar* previous = image.ptr<uchar>(row - 1);//上一行
		const uchar* current = image.ptr<uchar>(row);//当前行
		const uchar* next = image.ptr<uchar>(row + 1);//下一行

		uchar* output = dst.ptr<uchar>(row);
		for (int col = 1 * channels; col < cols - 1 * channels; col++) {
    
    
			//掩膜操作:I(i,j) = 5*I(i,j) - [I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)]
			output[col] = saturate_cast<uchar>(5 * current[col] - (previous[col] + next[col] + current[col + channels] + current[col + channels]));
		}
	}
	imshow("锐化掩模", dst);
}

效果图请添加图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45355387/article/details/118968696