OpenCV

画像処理 「OpenCV 4」モルフォロジー変換 オープニング/クロージング処理

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

本稿では、オープニングとクロージングの処理を確認していきます。

オープニング

オープニングは、収縮の後に膨張する処理です。

cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

サンプルコード

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

image = cv2.imread('image2.png', 0)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
kernel = np.ones((2, 2), np.uint8)
opening = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

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

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

plt.show()
実行結果

クロージング

クロージングは、膨張の後に収縮する処理です。

cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

サンプルコード

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

image = cv2.imread('image3.png', 0)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
kernel = np.ones((3, 3), np.uint8)
closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

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

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

plt.show()
実行結果