LoginSignup
5
7

More than 3 years have passed since last update.

【python】画像処理その4 ~フィルター~

Posted at

SciPy

「サイパイ」って読むらしいです.
この中にあるndimagesignalを使っていきますです.

ガウシアンフィルタ

今回はガウシアンフィルタをかけていきます.
画像が平滑化されます.
とりあえずやってみましょう.
ガウシアンフィルタとはなんぞ?って人はこちら→ガウシアンフィルタの解説

コードと結果

from PIL import Image
import numpy as np
from matplotlib import pylab as plt
from scipy import ndimage
#画像を開いてグレーにしてNumPy配列にする
img = np.array(Image.open('lena.jpg').convert('L'), 'f')
#ガウシアンフィルタをかける
img_gaussian = ndimage.filters.gaussian_filter(img, 10)
#表示
plt.imshow(img_gaussian, cmap='Greys_r')
plt.show()

gaussian_10.PNG

ぼやっとしましたね.
因みに,ndimage.filters.gaussian_filter(img, 10)
この引数の二番目は標準偏差σのことらしいです.
この値が大きとよりぼやっとします.
さっきの例はσ=10でした.
σ=2だとこんな具合です.

gaussian_2.PNG

さっきよりハッキリしてますね.

ウィーナーフィルタ

お次はウィーナーフィルタです.
ウィーナーフィルタとはなんぞ?って人はこちら→ウィーナーフィルタの解説

コードと結果

from PIL import Image
import numpy as np
from matplotlib import pylab as plt
from scipy import ndimage
from scipy import signal

#画像を開いてグレーにしてNumPy配列にする
img = np.array(Image.open('lena.jpg').convert('L'), 'f')

#ウィーナーフィルタをかける
img_wiener = signal.wiener(img, 151, 1999.0)

#画像を連結して表示する
#連結するために配列を用意する
images = [img, img_wiener]
#concatenateは連結するって意味
img_show = np.concatenate(images, axis=1)

#表示
plt.imshow(img_show, cmap='Greys_r')
plt.show()

gray_and_wiener.PNG

なんかいい感じですね(小並感)

参考

http://www.turbare.net/transl/scipy-lecture-notes/advanced/image_processing/index.html
http://www.mwsoft.jp/programming/computer_vision_with_python/1_4_scipy.html

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7