在模糊图像中执行边缘检测

时间:2018-07-13 10:46:12

标签: python opencv image-processing edge-detection

我正在做一个作业,要求我以下内容:

  

用手机(或照相机)拍摄(模糊)图像并将其传输到   你的电脑。执行一些基本的图像分析步骤以增强   图片:

     

a)直方图均衡(带有注释和图表)

     b)通过应用适当的方法对图像进行去模糊(去噪)   过滤器(在空间/频率字段上)并尝试不同的   选择并提供评论。

     

c)使用一种(或多种)技术进行边缘检测。

我设法完成了所有三个任务(对于c,我使用了Canny边缘检测)。我的问题是任务的去模糊部分不能产生足够好以进行边缘检测的图像:

此代码:

# Task a
equ = cv2.equalizeHist(gray) 

# Task b (attempt #1)
kernel = np.array([[-1,-1,-1], [-1,50,-1], [-1,-1,-1]])
im = cv2.filter2D(equ, -1, kernel)

# Task b (attempt #2)
psf = np.ones((5, 5)) / 25
equ = convolve2d(equ, psf, 'same')
im, _ = restoration.unsupervised_wiener(equ, psf)

# Task c
equCopy = np.uint8(im)
edges = cv2.Canny(equCopy,300,500)

这是均衡图像:

enter image description here

这些是输出:

B部分:

尝试#1:

enter image description here

尝试#2(摘自here)(虽然不知道为什么会这样输出):

enter image description here

C部分:

enter image description here

从这样的模糊图像中获得最好的效果吗?还是还有其他方法?有人可以帮我解决我第二次尝试分开b吗?

0 个答案:

没有答案