[Python影象處理] 八.影象腐蝕與影象膨脹
該系列文章是講解Python OpenCV影象處理知識,前期主要講解影象入門、OpenCV基礎用法,中期講解影象處理的各種演算法,包括影象銳化運算元、影象增強技術、影象分割等,後期結合深度學習研究影象識別、影象分類應用。希望文章對您有所幫助,如果有不足之處,還請海涵~
同時推薦作者的C++影象系列知識:
[數字影象處理] 一.MFC詳解顯示BMP格式圖片
[數字影象處理] 二.MFC單文件分割視窗顯示圖片
[數字影象處理] 三.MFC實現影象灰度、取樣和量化功能詳解
[數字影象處理] 四.MFC對話方塊繪製灰度直方圖
[數字影象處理] 五.MFC影象點運算之灰度線性變化、灰度非線性變化、閾值化和均衡化處理詳解
[數字影象處理] 六.MFC空間幾何變換之影象平移、映象、旋轉、縮放詳解
[數字影象處理] 七.MFC影象增強之影象普通平滑、高斯平滑、Laplacian、Sobel、Prewitt銳化詳解
前文參考:
[Python影象處理] 一.影象處理基礎知識及OpenCV入門函式
[Python影象處理] 二.OpenCV+Numpy庫讀取與修改畫素
[Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理
[Python影象處理] 四.影象平滑之均值濾波、方框濾波、高斯濾波及中值濾波
[Python影象處理] 五.影象融合、加法運算及影象型別轉換
[Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移
[Python影象處理] 七.影象閾值化處理及演算法對比
本篇文章主要講解Python呼叫OpenCV實現影象腐蝕和影象膨脹的演算法,基礎性知識希望對您有所幫助。
1.基礎理論
2.影象腐蝕程式碼實現
3.影象膨脹程式碼實現
PS:文章參考自己以前系列影象處理文章及OpenCV庫函式,同時部分參考網易雲視訊,推薦大家去學習。同時,本篇文章涉及到《計算機圖形學》基礎知識,請大家下來補充。
PSS:文章參考自己以前系列影象處理文章及OpenCV庫函式,同時部分參考網易雲lilizong老師的視訊,推薦大家去學習。同時,本篇文章涉及到《計算機圖形學》基礎知識,請大家下來補充。
PSS:2019年1~2月作者參加了CSDN2018年部落格評選,希望您能投出寶貴的一票。我是59號,Eastmount,楊秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
一. 基礎知識
(注:該部分參考作者論文《一種改進的Sobel運算元及區域擇優的身份證智慧識別方法》)
影象的膨脹(Dilation)和腐蝕(Erosion)是兩種基本的形態學運算,主要用來尋找影象中的極大區域和極小區域。其中膨脹類似於“領域擴張”,將影象中的高亮區域或白色部分進行擴張,其執行結果圖比原圖的高亮區域更大;腐蝕類似於“領域被蠶食”,將影象中的高亮區域或白色部分進行縮減細化,其執行結果圖比原圖的高亮區域更小。
1.影象膨脹
膨脹的運算子是“⊕”,其定義如下:
2.影象腐蝕
腐蝕的運算子是“-”,其定義如下:
二. 影象腐蝕程式碼實現
1.基礎理論
形態學轉換主要針對的是二值影象(0或1)。影象腐蝕類似於“領域被蠶食”,將影象中的高亮區域或白色部分進行縮減細化,其執行結果圖比原圖的高亮區域更小。其主要包括兩個輸入物件:
(1)二值影象
(2)卷積核
卷積核是腐蝕中的關鍵陣列,採用numpy庫可以生成。卷積核的中心點逐個畫素掃描原始影象,如下圖所示:
2.函式原型
影象腐蝕主要使用的函式為erode,其原型如下:
dst = cv2.erode(src, kernel, iterations)
引數dst表示處理的結果,src表示原影象,kernel表示卷積核,iterations表示迭代次數。下圖表示5*5的卷積核,可以採用函式 np.ones((5,5), np.uint8) 構建。
3.程式碼實現
完整程式碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
#讀取圖片
src = cv2.imread('test01.jpg', cv2.IMREAD_UNCHANGED)
#設定卷積核
kernel = np.ones((5,5), np.uint8)
#影象腐蝕處理
erosion = cv2.erode(src, kernel)
#顯示影象
cv2.imshow("src", src)
cv2.imshow("result", erosion)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下圖所示:
erosion = cv2.erode(src, kernel,iterations=9)
輸出結果如下圖所示:
三. 影象膨脹程式碼實現
1.基礎理論
影象膨脹是腐蝕操作的逆操作,類似於“領域擴張”,將影象中的高亮區域或白色部分進行擴張,其執行結果圖比原圖的高亮區域更大,線條變粗了,主要用於去噪。
(1) 影象被腐蝕後,去除了噪聲,但是會壓縮影象。
(2) 對腐蝕過的影象,進行膨脹處理,可以去除噪聲,並且保持原有形狀。
它也包括兩個輸入物件:
(1)二值影象或原始影象
(2)卷積核
卷積核是腐蝕中的關鍵陣列,採用numpy庫可以生成。卷積核的中心點逐個畫素掃描原始影象,如下圖所示:
被掃描到的原始影象中的畫素點,當卷積核對應的元素值只要有一個為1時,其值就為1,否則為0。
2.函式原型
影象膨脹主要使用的函式為dilate,其原型如下:
dst = cv2.dilate(src, kernel, iterations)
引數dst表示處理的結果,src表示原影象,kernel表示卷積核,iterations表示迭代次數。下圖表示5*5的卷積核,可以採用函式 np.ones((5,5), np.uint8) 構建。
3.程式碼實現
完整程式碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
#讀取圖片
src = cv2.imread('test02.png', cv2.IMREAD_UNCHANGED)
#設定卷積核
kernel = np.ones((5,5), np.uint8)
#影象膨脹處理
erosion = cv2.dilate(src, kernel)
#顯示影象
cv2.imshow("src", src)
cv2.imshow("result", erosion)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下所示:
影象去噪通常需要先腐蝕後膨脹,這又稱為開運算,下篇文章將詳細介紹。如下圖所示:
erosion = cv2.erode(src, kernel)
result = cv2.dilate(erosion, kernel)
希望文章對大家有所幫助,如果有錯誤或不足之處,還請海涵。最近經歷的事情太多,有喜有悲,關閉了朋友圈,希望通過不斷學習和寫文章來忘記煩勞,將憂鬱轉換為動力。哎,總感覺自己在感動這個世界,幫助所有人,而自己卻…保重。
(By:Eastmount 2018-10-31 下午4點 https://blog.csdn.net/Eastmount/)
相關文章
- opencv中的影象形態學——腐蝕膨脹OpenCV
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- Python-OpenCV 處理影象(八):影象二值化處理PythonOpenCV
- opencv 影像腐蝕、影像的膨脹OpenCV
- iOS 影象處理 - 影象拼接iOS
- 影象處理之影象增強
- Python-OpenCV 處理影象(七):影象灰度化處理PythonOpenCV
- OpenCV (iOS)中的腐蝕和膨脹(9)OpenCViOS
- [Python影象處理] 五.影象融合、加法運算及影象型別轉換Python型別
- Python-OpenCV 處理影象(三):影象畫素點操作PythonOpenCV
- UIImage 影象處理UI
- Bayer影象處理
- python PIL 影象處理操作Python
- Python-OpenCV 處理影象(二):濾鏡和影象運算PythonOpenCV
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- MATLAB數字影象處理(二)影象增強Matlab
- C++影象處理 -- 影象黑白調整應用C++
- 前端影象處理指南前端
- c#影象處理C#
- Python-OpenCV 處理影象(四):影象直方圖和反向投影PythonOpenCV直方圖
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- 數字影象處理DIP
- 柵格影象的處理
- Python影象處理庫Pillow入門Python
- Python-OpenCV 處理影象(五):影象中邊界和輪廓檢測PythonOpenCV
- 實戰 | 用Python做影象處理(一)Python
- Python影象處理庫:Pillow 初級教程Python
- Python OpenCV Tutorial Introduction影象處理教程PythonOpenCV
- Python-OpenCV 處理影象(一):基本操作PythonOpenCV
- 影象中的畫素處理
- 第十四章 處理影象
- GPU 加速下的影象處理GPU
- 數字影象處理之二維碼影象提取演算法(一)演算法
- [Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算Python梯度
- [Python影象處理] 十.形態學之影象頂帽運算和黑帽運算Python
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI