【新星计划】Python OpenCV 形态学应用—图像开运算与闭运算
開運算?
開運算=先腐蝕運算,再膨脹運算(看上去把細微連在一起的兩塊目標分開了)?
開運算的效果圖如下圖所示:?
開運算總結:?
(1)開運算能夠除去孤立的小點,毛刺和小橋,而總的位置和形狀不便。?
(2)開運算是一個基于幾何運算的濾波器。?
(3)結構元素大小的不同將導致濾波效果的不同。?
(4)不同的結構元素的選擇導致了不同的分割,即提取出不同的特征。
?
樣例
原始圖像?
代碼實踐
?
# coding:utf-8# 開運算 open_operationimport cv2import numpy as np # 開運算執行次數iter_times = 5# 讀取圖像img = cv2.imread("1.png", flags=cv2.IMREAD_GRAYSCALE) # 定義操作框,在圖像上以這個框大小的像素進行遍歷開運算operation_kernel = np.ones((3, 3), np.uint8)# 開運算result_image = cv2.morphologyEx(img, cv2.MORPH_OPEN, operation_kernel, iterations=iter_times) # 顯示原始圖像cv2.imshow("img", img)# 顯示處理完后的圖像cv2.imshow("result_image", result_image)cv2.waitKey(0)代碼解讀:在上面的代碼中,我們可以看到做了實際工作的是cv2.morphologyEx()這個函數,該函數一共四個參數,依次為需要處理的圖像,處理圖像的方式,處理的核大小,處理的次數,其中我們主要調試的是核的大小和處理的次數,這兩個參數需要多次調試才能取得較好的效果,這里分別是3x3和5 ?當時核的大小也可以取7x7之類的,只要是整數就好了,不然會報錯哦。
?
結果
?
閉運算?
閉運算 = 先膨脹運算,再腐蝕運算(看上去將兩個細微連接的圖塊封閉在一起)?
閉運算的效果圖如下圖所示:
閉運算總結:?
(1)閉運算能夠填平小湖(即小孔),彌合小裂縫,而總的位置和形狀不變。?
(2)閉運算是通過填充圖像的凹角來濾波圖像的。?
(3)結構元素大小的不同將導致濾波效果的不同。?
(4)不同結構元素的選擇導致了不同的分割。
樣例
原始圖像?
代碼實踐
# coding:utf-8import cv2import numpy as np # 迭代次數iter_time = 1# 讀入灰度圖image = cv2.imread("2.png", flags=cv2.IMREAD_GRAYSCALE) # 定義操作框,在圖像上以這個框大小的像素進行遍歷閉運算operation_kernel = np.ones((3, 3), np.uint8)# 閉運算result_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, operation_kernel, iterations=iter_time) # 顯示原始圖像cv2.imshow("img", image)# 顯示處理完后的圖像cv2.imshow("result_image", result_image)cv2.waitKey(0)代碼解讀:與之前的代碼一樣,我們主要關注cv2.morphologyEx()函數,不同的是我們的第二個參數換成了cv2.MORPH_CLOSE,也就是閉運算,另外幾個參數都是類似的,注意與上一個區分哦。
結果
(可以看到原始圖像中筆畫中間的黑點消失了一部分,筆畫銜接de部分也被連接在了一起)
總結
以上是生活随笔為你收集整理的【新星计划】Python OpenCV 形态学应用—图像开运算与闭运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【新星计划】MATLAB-字符串处理
- 下一篇: Matlab图像形态学处理—开操作和闭操