OpenCV

画像処理 「OpenCV 4」モルフォロジー変換 高度な処理

高度な処理(モルフォロジー勾配・トップハット・ブラックハット)

モルフォロジー勾配は、膨張と収縮の差を出力とする処理です。

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

トップハットは、入力とオープニングした結果の差を出力とする処理です。

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

ブラックハットは、入力とクロージングした結果の差を出力とする処理です。

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

サンプルコード

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((3, 3), np.uint8)
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
kernel = np.ones((11, 11), np.uint8)
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
blackhat = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)

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

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

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

plt.subplot(1, 4, 4)
plt.title('blackhat')
plt.xticks([]), plt.yticks([])
plt.imshow(blackhat)

plt.show()
実行結果