如何在OpenCV中锐化图像?
如何使用OpenCV来锐化图像? 有许多平滑或模糊的方法,但我没有看到任何磨削。
一个一般程序是在维基百科上关于模糊掩模的文章中列出的 :你使用高斯平滑滤波器并从原始图像中减去平滑版本(以加权的方式使常量区域的值保持不变)。
为了得到一个锐化版本的frame
到image
:(两个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)
维基百科有一个很好的(短的)内核概述:
您可以在OpenCV文档中 使用“unsharp mask”algorithmfind关于锐化图像的示例代码
改变sigma
值, threshold
, amount
会给出不同的结果
// 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更多信息