iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Python

Python x OpenCV系列 第 5

[Day 05] OpenCV 形態轉換 - 侵蝕

  • 分享至 

  • xImage
  •  

OpenCV 形態學轉換:侵蝕(Erosion)介紹

形態學轉換是影像處理中根據影像形狀進行處理的技術,常用於去除雜訊、分離物體或分析形狀。侵蝕(Erosion)是形態學轉換中一個重要的操作,它的作用是縮小前景物體的範圍,使得物體的邊界變得更小。

侵蝕的原理

侵蝕通過一個稱為「核(kernel)」的小矩陣操作影像。核在影像上滑動,每次覆蓋影像的一部分,並根據核的形狀決定是否保留該區域的前景像素。當前景像素被核完全覆蓋時,它才會保留,否則會變為背景。這會導致前景區域縮小,邊緣變薄。這個過程可以用來去除細小的物體或分離接近的物體。

使用 OpenCV 進行侵蝕操作

在 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()

程式碼說明

  1. 讀取影像:使用 cv2.imread() 函數讀取一張名為 j.png 的影像,並將其轉換為灰階模式處理。
  2. 核的定義:使用 np.ones() 建立一個 5x5 大小的核。這個核的每個元素都是 1,用來進行侵蝕操作。
  3. 侵蝕操作:透過 cv2.erode() 函數,對影像進行侵蝕操作,並指定執行一次迭代。迭代次數決定侵蝕的強度,更多次數會使前景縮小得更快。
  4. 顯示影像:使用 cv2.imshow() 分別顯示原始影像與侵蝕後的影像,讓我們能夠直觀地觀察侵蝕效果。

結果

Original Image
圖一、侵蝕前(Original Image)

Eroded Image
圖二、侵蝕後(Eroded Image)

侵蝕的應用

  • 去除小物體:侵蝕可以有效地去除影像中的小噪點或細小的物體。
  • 物體分離:在兩個接近的物體之間,侵蝕可以用來分離它們。
  • 減少邊界細節:侵蝕常常用於削弱影像中細小的邊界,讓物體的輪廓更加明顯。

結論

侵蝕是形態學轉換中的重要技術,它通過縮小前景物體的邊界來處理影像,常用於雜訊去除和物體分離。透過 OpenCV 的 cv2.erode() 函數,我們可以輕鬆地實現這一功能。這在影像處理任務的預處理階段中非常有用,能夠讓我們更有效地處理影像。


上一篇
[Day04] Numpy簡介與OpenCV影像裁剪
系列文
Python x OpenCV5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言