gpt4 book ai didi

python - 边缘检测未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:33 25 4
gpt4 key购买 nike

我只是在 SciPy 和 Python 中玩弄卷积和内核。我使用以下内核进行边缘检测,因为它已在 this wikipedia article 中列出。 :

kernel

这是我使用的图像:
lion

我得到的结果非常令人失望:
result

我用于卷积的代码:

edge = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
results = sg.convolve(img, edge, mode='same')
results[results > 255] = 255
results[results < 0] = 0

...以及我用来读取图像的代码:

img = np.array(Image.open('convolution_test/1.jpg'))
img = img[:, :, 0]

为什么我会得到这些不好的结果?

TIA。

最佳答案

我认为问题在于您的图像适用于无符号整数。因此,如果您从 0 中减去 1,您将得到 uint80-1 = 255,因此您会在值实际上应该是黑色的地方得到白色。

但是,您可以通过使用有符号整数(最好具有更多深度)轻松解决此问题。例如:

from PIL import Image
import numpy as np
import scipy.signal as sg

img = np.array(Image.open('convolution_test/1.jpg'))
img = img[:, :, 0]
img = img.astype(np.int16)

edge = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
results = sg.convolve(img, edge, mode='same')
results[results > 255] = 255
results[results < 0] = 0

results = results.astype(np.uint8)

对我来说,这会生成以下图像: enter image description here

关于python - 边缘检测未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45406132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com