Производная изображения - фильтры Собеля в Python SciPy - PullRequest
0 голосов
/ 06 октября 2018

Я читаю книгу Яна Эрика Солема «Программирование компьютерного зрения на Python», окончательный вариант (лицензия CC) доступен здесь .

На стр. 34 результат примененияФильтры Собеля для изображения показаны, см. рис. 1.10, также показанный ниже.Когда я запускаю код в книге, изображение величины градиента, то есть панель (d), выглядит перевернутым, см. Ниже.

У меня вопрос, это только потому, что автор инвертировал изображение, илиесть какая-то другая причина?

Код Python, адаптированный из книги с дополнениями для построения графиков, приведен ниже.


Image derivatives

Этоизображение сгенерировано с помощью кода в книге.

Image derivatives 2

Python Code

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()

Изображение, использованное в примере кода

image used in the example code

1 Ответ

0 голосов
/ 06 октября 2018

Попробуйте imshow(magnitude, cmap='gray') явно объявить цветовую карту.Если он все еще инвертирован, попробуйте cmap='gray_r', чтобы использовать инвертированную цветовую карту в оттенках серого.

...