在影像處理中,我們總是會想把圖像內一些物件的特徵讓它明顯一點,形態學運算就是一個好用強大的工具。
形態學運算是圖像處理中的一個重要概念,用於改善或改變圖像的形狀。在OpenCV中,形態學運算提供了一系列操作,包括開運算、閉運算、禮帽運算和黑帽運算。這些操作通常應用於二值圖像,用於去除噪聲、連接物體、擴張或收縮物體等。
[OpenCV基礎][Python]形態學運算(侵蝕、膨脹、梯度)
開運算 (Opening):
閉運算 (Closing):
禮帽運算 (Top Hat):
黑帽運算 (Black Hat):
開運算 (Opening):
移除影像中的白色雜訊或線條。
import cv2
import numpy as np
img = cv2.imread('3.png',cv2.IMREAD_GRAYSCALE) #讀取灰階圖
kernel = np.ones((11, 11), np.uint8) #結構元素(kernel)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) #開運算
cv2.imshow('Original Image', img)
cv2.imshow('Opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
閉運算 (Closing):
填補黑色小洞。
import cv2
import numpy as np
img = cv2.imread('3.png',cv2.IMREAD_GRAYSCALE)
kernel = np.ones((11, 11), np.uint8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) #閉運算
cv2.imshow('Original Image', img)
cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
禮帽運算 (Top Hat):
顯現出白線條。
import cv2
import numpy as np
img = cv2.imread('3.png',cv2.IMREAD_GRAYSCALE)
kernel = np.ones((11, 11), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) #禮帽運算
cv2.imshow('Original Image', img)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
黑帽運算 (Black Hat):
顯現出黑點。
import cv2
import numpy as np
img = cv2.imread('3.png',cv2.IMREAD_GRAYSCALE)
kernel = np.ones((11, 11), np.uint8)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel) #黑帽運算
cv2.imshow('Original Image', img)
cv2.imshow('closing', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()