LoginSignup
1
0

More than 3 years have passed since last update.

pythonで一から画像処理 (2)平滑化

Last updated at Posted at 2019-10-16

基本となる画像処理を一から勉強していくシリーズ (2)。

OpenCV-Pythonチュートリアルを参考に、
画像認識本 https://www.amazon.co.jp/dp/4061529129/
でやっている処理の理解を進める方針です。

目次

  1. 環境
  2. 箱型フィルタ
  3. ガウシアンフィルタ
  4. 中央値フィルタ
  5. バイラテラルフィルタ

1. 環境

Python 3.7.0
OpenCV 4.1.0
Jupyter Notebook

2. 箱型フィルタ

画素周辺の n x m ウィンドウの平均値を取る。

Hako.py
img = cv2.imread('brabra/1.jpg',0)

#n x m = 150 x 150
blur = cv2.blur(img,(150,150))

plt.subplot(121),plt.imshow(img,'gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur,'gray'),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

hako.png

角(高周波成分)が取れてぼやけた画像になった。

3. ガウシアンフィルタ

画素周辺の画素をガウシアン分布で重み付けする。

Gaussian.py
img = cv2.imread('brabra/1.jpg',0)

#sigmax = sigmay = 71
blur = cv2.GaussianBlur(img,(71,71),0)

plt.subplot(121),plt.imshow(img,'gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur,'gray'),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

gaussian.png

箱型フィルタよりもくっきりかつまろやか?

3. 中央値フィルタ

ウィンドウの中の画素の中央値を使う。粒粒ノイズのような飛び値に強い。

Median.py
img = cv2.imread('brabra/1.jpg',0)

#window = 151
blur = cv2.medianBlur(img,151)

plt.subplot(121),plt.imshow(img,'gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur,'gray'),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

median.png

確かに飛び値が取れてマイルド。

4. バイラテラルフィルタ

エッジを残したまま平均化する処理とのこと。これはガウシアンフィルタの近傍の画素で重み付けするのに加えて、注目画素と大きく異なる画素の重みを弱くすることで平滑化&エッジ残しを実現するそう。

Bi.py
img = cv2.imread('brabra/1.jpg',0)

blur = cv2.bilateralFilter(img,51,11,11)

plt.subplot(121),plt.imshow(img,'gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur,'gray'),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

bi.png

輪郭残る感じ。
5回処理を繰り返すと絵画っぽくなった。

bi5.png

まとめ

今回は平滑化について理解を深めた。
次はエッジ検出をやる。

参考文献

1
0
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
1
0