yas*_*eco 6 numpy image-processing matplotlib python-3.x data-science
这是我的代码:
from matplotlib.pyplot import imread
import matplotlib.pyplot as plt
from scipy.ndimage.filters import convolve
k3 = np.array([ [-1, -1, -1], [-1, 8, -1], [-1, -1, -1] ])
img = imread("lena.jpg")
channels = []
for channel in range(3):
res = convolve(img[:,:,channel], k3)
channels.append(res)
img = np.dstack((channels[0], channels[1], channels[2]))
plt.imshow(img)
plt.show()
Run Code Online (Sandbox Code Playgroud)
k3
过滤器假设是一个边缘检测过滤器。相反,我得到了一个看起来像白噪声的奇怪图像。
为什么?
这是输出:
img
可能是一个 8 位无符号整数。像您一样与拉普拉斯掩模进行卷积,输出值可能会超出 [0,255] 的有效范围。例如,当为这样的图像分配 -1 时,写入的值将为 254。这会导致输出如问题所示。
对于这个特定的过滤器,首先将图像转换为有符号类型非常重要,例如 16 位有符号整数或浮点类型。
img = img.astype(np.int16)
Run Code Online (Sandbox Code Playgroud)
PS:请注意,拉普拉斯不是边缘检测器!
归档时间: |
|
查看次数: |
6381 次 |
最近记录: |