我在读Jan Erik Solem的《用Python编程计算机视觉》(Programming Computer Vision with 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()
示例代码中使用的图像
尝试
imshow(magnitude, cmap='gray')
显式声明colormap。如果仍然是反转的,请尝试cmap='gray_r'
使用反转的灰度颜色贴图。在相关问题 更多 >
编程相关推荐