【发布时间】:2019-03-11 14:54:38
【问题描述】:
我正在阅读 Jan Erik Solem 的《使用 Python 编程计算机视觉》一书,最终草案(CC 许可证)可通过 here 获得。
在第 34 页上,显示了将 Sobel 过滤器应用于图像的结果,参见图 1.10,如下所示。当我运行书中的代码时,梯度幅度的图像,即面板 (d),看起来是反转的,见下文。
我的问题是,这只是因为作者反转了图像,还是有其他原因?
下面列出了 Python 代码,改编自本书并添加了绘图功能。
这些是使用书中代码生成的图像。
Python 代码
from PIL import Image
from numpy import *
from pylab import *
from scipy.ndimage import filters
im = array(Image.open('empire.jpg').convert('L'))
# Sobel derivative filters
imx = zeros(im.shape)
filters.sobel(im,1,imx)
imy = zeros(im.shape)
filters.sobel(im,0,imy)
magnitude = sqrt(imx**2+imy**2)
figure(figsize=(12,4))
gray()
subplot(1,4,1)
title('Oiginal')
axis('off')
imshow(im)
subplot(1,4,2)
title('imx')
axis('off')
imshow(imx)
subplot(1,4,3)
title('imy')
axis('off')
imshow(imy)
subplot(1,4,4)
title('magnitude')
axis('off')
imshow(magnitude)
savefig('sobel.png')
show()
示例代码中使用的图片
【问题讨论】: