使用Python在图片上应用滤镜

时间:2018-12-21 20:02:16

标签: python-3.x numpy matplotlib image-processing 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()

k3过滤器假设是边缘检测过滤器。相反,我得到的怪异图像看起来像白噪声。

为什么?

以下是输出:

enter image description here

1 个答案:

答案 0 :(得分:2)

print(etree.tostring(tse.element.find('Main/Platform'), pretty_print=True).decode()) <Platform>iTunes</Platform> 可能是8位无符号整数。像使用Laplace蒙版一样进行卷积,输出值可能会超出[0,255]的有效范围。例如,当给这样的图像分配-1时,写入的值将为254。这将导致输出,如问题所示。

使用此特定的过滤器,首先将图像转换为带符号类型很重要,例如16位带符号整数或浮点类型。

img

PS:请注意Laplace is not an edge detector