图像导数 - Python SciPy 中的 Sobel 滤波器

Image derivative - Sobel filters in Python SciPy

我正在阅读 Jan Erik Solem 的书 "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') 显式声明颜色图。如果还是倒置,尝试cmap='gray_r'使用倒置的灰度色图。