如何在OpenCV中锐化图像?

如何使用OpenCV来锐化图像? 有许多平滑或模糊的方法,但我没有看到任何磨削。

一个一般程序是在维基百科上关于模糊掩模的文章中列出的 :你使用高斯平滑滤波器并从原始图像中减去平滑版本(以加权的方式使常量区域的值保持不变)。

为了得到一个锐化版本的frameimage :(两个cv::Mat

 cv::GaussianBlur(frame, image, cv::Size(0, 0), 3); cv::addWeighted(frame, 1.5, image, -0.5, 0, image); 

这些参数是你需要为自己调整的。

还有laplacian锐化,你应该find什么,当你谷歌。

你可以尝试一个简单的内核和filter2D ,例如在Python中:

 kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]]) im = cv2.filter2D(im, -1, kernel) 

维基百科有一个很好的(短的)内核概述:

https://en.wikipedia.org/wiki/Kernel_(image_processing);

您可以在OpenCV文档中 使用“unsharp mask”algorithmfind关于锐化图像的示例代码

改变sigma值, thresholdamount会给出不同的结果

 // sharpen image using "unsharp mask" algorithm Mat blurred; double sigma = 1, threshold = 5, amount = 1; GaussianBlur(img, blurred, Size(), sigma, sigma); Mat lowContrastMask = abs(img - blurred) < threshold; Mat sharpened = img*(1+amount) + blurred*(-amount); img.copyTo(sharpened, lowContrastMask); 

试试这个:

 cv::bilateralFilter(img,9,75,75); 

你可能会在这里find更多信息