OpenCV

画像処理 「OpenCV 4」モルフォロジー変換 収縮/膨張処理

モルフォロジー処理とは、主に二値画像を対象として、図形に対してシンプルな処理を指します。

本稿では、収縮と膨張の処理を確認していきます。

収縮(Erosion)・膨張(Dilation)処理

収縮は、境界を浸食するような処理です。カーネルに含まれる画素の画素値が全て1の時、1、そうでない時、0を出力します。

cv2.erode(image, kernel, iterations = 1)

膨張は、基本的に、収縮の後に膨張させるノイズの除去方法として用いられます。カーネル内の画素値で1が1つでも含まれている時、出力画像の注目画素の画素値を1にする処理です。

cv2.dilate(image, kernel, iterations = 1)

サンプルコード

import cv2
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread('image.png', 0)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(image, kernel, iterations=1)
dilation = cv2.dilate(image, kernel, iterations=1)

plt.subplot(1, 3, 1)
plt.title('original')
plt.xticks([]), plt.yticks([])
plt.imshow(image)

plt.subplot(1, 3, 2)
plt.title('erosion')
plt.xticks([]), plt.yticks([])
plt.imshow(erosion)

plt.subplot(1, 3, 3)
plt.title('dilation')
plt.xticks([]), plt.yticks([])
plt.imshow(dilation)

plt.show()
実行結果