2016年7月28日木曜日

開発環境

Elegant Scipy (Juan Nunez-iglesias (著)、Stéfan Van Der Walt (著)、Harriet Dashnow (著)、 O'Reilly Media)のChapter 3.(Networks of Images Regions with ndimage)、Generic filters の Exercise: (Ssobel gradient magnitude.) を取り組んでみる。

Exercise: (Ssobel gradient magnitude.)

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
from scipy import ndimage as ndi
from skimage import io
from skimage import morphology


def sobel(coins):
    hsobel = np.array([[1, 2, 1],
                       [0, 0, 0],
                       [-1, -2, -1]])
    vsobel = hsobel.T
    coins = coins.reshape((3, 3))
    coins_h = ndi.convolve(coins, hsobel)
    coins_v = ndi.convolve(coins, vsobel)
    coins_sobel = np.sqrt(coins_h ** 2 + coins_v ** 2)
    return coins_sobel[1, 1]

url_coins = (
    'https://raw.githubusercontent.com/scikit-image/scikit-image/v0.10.1/'
    'skimage/data/coins.png'
)

coins = io.imread(url_coins)
coins = coins.astype(float) / 255
coins_sobel = ndi.generic_filter(coins, sobel, size=(3, 3))
plt.figure(figsize=(5, 5))
plt.imshow(coins_sobel, cmap=plt.cm.viridis)
plt.savefig('coins_sobel.png')

入出力結果(Terminal, IPython)

$ ./sobel_gradient_magnitude.py
$

0 コメント:

コメントを投稿