如何在OpenCV中锐化图像

时间:2013-11-10 13:06:32

标签: c++ image opencv

基本的Google搜索会找到this SO question,这似乎是一个很好的答案。但是,当我尝试时,它对锐化我模糊的图像完全没有影响。

有人可以澄清我是否做错了吗?

到目前为止我所做的是在图像上实现filter2D功能以消除随机噪声,它也模糊了我的周期性噪声,这是非常好的。现在我已经模糊了噪点,我想要锐化图像以查看比原始图像更低噪声的图像。这是我的代码: -

   anchor = Point( -1, -1 );
   delta = 0;
   ddepth = -1;
   dst = frame;
   dst2 = image;

  filter2D(src, dst, ddepth , kernel, anchor, delta, BORDER_DEFAULT );

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

gaussianblur和addWeighted对图像产生 NO 差异。此外,澄清一下,根本没有代码错误。

3 个答案:

答案 0 :(得分:4)

为了使其适用于正确的图像,您可以查看以下两种方法。 我使用OpenCV 3.0.0进行编码:

import cv2

x = 'Columbia river.jpg'
img = cv2.imread(x, 1)
cv2.imshow("Original",img)

enter image description here

#---Approach 1---
#---Sharpening filter----
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
im = cv2.filter2D(img, -1, kernel)
cv2.imshow("Sharpening",im)

enter image description here

#---Approach 2---
aw = cv2.addWeighted(img, 4, cv2.blur(img, (30, 30)), -4, 128)
cv2.imshow("Add_weighted", aw)

enter image description here

答案 1 :(得分:3)

对于未来的读者,代码确实有效只是因为我的图像太模糊了,上面的代码没有明显效果!

答案 2 :(得分:0)

我认为fft反卷积应该对你有用:http://www.nist.gov/lispix/imlab/FFT/deblur.html

但是这个算法有用,如果你知道模糊内核。如果没有,那么你应该google盲目反卷积算法。