形態學轉換是影像處理中根據影像形狀進行處理的技術,常用於去除雜訊、分離物體或分析形狀。侵蝕(Erosion)是形態學轉換中一個重要的操作,它的作用是縮小前景物體的範圍,使得物體的邊界變得更小。
侵蝕通過一個稱為「核(kernel)」的小矩陣操作影像。核在影像上滑動,每次覆蓋影像的一部分,並根據核的形狀決定是否保留該區域的前景像素。當前景像素被核完全覆蓋時,它才會保留,否則會變為背景。這會導致前景區域縮小,邊緣變薄。這個過程可以用來去除細小的物體或分離接近的物體。
在 OpenCV 中,可以使用 cv.erode()
函數來執行侵蝕操作。以下是一段使用侵蝕的範例程式碼,透過讀取影像,並對其進行侵蝕處理。
import cv2
import numpy as np
# 讀取灰階影像
img = cv2.imread('j.png', cv2.IMREAD_GRAYSCALE)
assert img is not None, "file could not be read, check with os.path.exists()"
# 定義5x5的核
kernel = np.ones((5, 5), np.uint8)
# 進行侵蝕操作,執行一次迭代
erosion = cv2.erode(img, kernel, iterations=1)
# 顯示原始影像與侵蝕後的影像
cv2.imshow('Original Image', img)
cv2.imshow('Eroded Image', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imread()
函數讀取一張名為 j.png
的影像,並將其轉換為灰階模式處理。np.ones()
建立一個 5x5 大小的核。這個核的每個元素都是 1,用來進行侵蝕操作。cv2.erode()
函數,對影像進行侵蝕操作,並指定執行一次迭代。迭代次數決定侵蝕的強度,更多次數會使前景縮小得更快。cv2.imshow()
分別顯示原始影像與侵蝕後的影像,讓我們能夠直觀地觀察侵蝕效果。
圖一、侵蝕前(Original Image)
圖二、侵蝕後(Eroded Image)
侵蝕是形態學轉換中的重要技術,它通過縮小前景物體的邊界來處理影像,常用於雜訊去除和物體分離。透過 OpenCV 的 cv2.erode()
函數,我們可以輕鬆地實現這一功能。這在影像處理任務的預處理階段中非常有用,能夠讓我們更有效地處理影像。