基本的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 差异。此外,澄清一下,根本没有代码错误。
答案 0 :(得分:4)
为了使其适用于正确的图像,您可以查看以下两种方法。 我使用OpenCV 3.0.0进行编码:
import cv2
x = 'Columbia river.jpg'
img = cv2.imread(x, 1)
cv2.imshow("Original",img)
#---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)
#---Approach 2---
aw = cv2.addWeighted(img, 4, cv2.blur(img, (30, 30)), -4, 128)
cv2.imshow("Add_weighted", aw)
答案 1 :(得分:3)
对于未来的读者,代码确实有效只是因为我的图像太模糊了,上面的代码没有明显效果!
答案 2 :(得分:0)
我认为fft反卷积应该对你有用:http://www.nist.gov/lispix/imlab/FFT/deblur.html。
但是这个算法有用,如果你知道模糊内核。如果没有,那么你应该google盲目反卷积算法。