失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > OpenCV非锐化掩蔽和高提升滤波

OpenCV非锐化掩蔽和高提升滤波

时间:2021-12-08 22:10:47

相关推荐

OpenCV非锐化掩蔽和高提升滤波

非锐化掩蔽和高提升滤波

在印刷和出版界使用多年的图像锐化处理过程是从原图像中减去一幅非锐化(平滑过的)版本。这个称为非锐化掩蔽的处理过程由下列步骤组成:

1、模糊原图像

2、从原图像中减去模糊图像(产生的差值图像称为模板)

3、将模板加到原图像上。

另F(x,y)表示模糊图像,非锐化掩蔽以公式形式描述如下。首先我们要先得到模板:

gmask(x,y)=f(x,y) - F(x,y)

然后在原图像上加上该模板的一个权重部分:

g(x,y)= f(x,y) + k* gmask(x,y)

通常,我们会在上式中包含一个权重系数k(k>=0)。当k=1时,我们得到上面定义的非锐化掩蔽。当k>1时,该处理称为高提升滤波。当k<1时,则不强调非锐化模板的贡献。

代码:

#include "opencv2/imgproc.hpp"

#include "opencv2/imgcodecs.hpp"

#include "opencv2/highgui.hpp"

#include <iostream>

using namespace cv;

int main( int argc, char** argv )

{

Mat src, gaussi;

const char* imageName = argc >=2 ? argv[1] : "123.tif";

int k = 3;

src = imread( imageName, IMREAD_COLOR ); // Load an image

// Check if image is loaded fine

if(src.empty()){

printf(" Error opening image\n");

printf(" Program Arguments: [image_name -- default ../data/lena.jpg] \n");

return -1;

}

imshow("src", src);

GaussianBlur(src, gaussi, Size(5, 5), 3, 3);

imshow("gaussi", gaussi);

Mat mask;

cv::subtract(src, gaussi, mask);

imshow("mask", k*mask);

Mat imageEnhance;

cv::add(src,k*mask, imageEnhance );

imshow("dst", imageEnhance);

waitKey(0);

return 0;

}

结果:

dst更清晰了

如果觉得《OpenCV非锐化掩蔽和高提升滤波》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。