[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影象處理] 八.影象腐蝕與影象膨脹
[Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算
數學形態學(Mathematical morphology)是一門建立在格論和拓撲學基礎之上的影象分析學科,是數學形態學影象處理的基本理論。其基本的運算包括:腐蝕和膨脹、開運算和閉運算、骨架抽取、極限腐蝕、擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換等。
本篇文章主要講解Python呼叫OpenCV實現影象形態學轉化,包括影象頂帽運算和影象黑帽運算,基礎性知識希望對您有所幫助。
1.影象頂帽運算
2.影象黑帽運算
PS:文章參考自己以前系列影象處理文章及OpenCV庫函式,同時部分參考網易雲lilizong老師的視訊,推薦大家去學習。同時,本篇文章涉及到《計算機圖形學》基礎知識,請大家下來補充。
PSS:2019年1~2月作者參加了CSDN2018年部落格評選,希望您能投出寶貴的一票。我是59號,Eastmount,楊秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
一. 影象頂帽運算
1.基本原理
影象頂帽(或影象禮帽)運算是原始影象減去影象開運算的結果,得到影象的噪聲。如下圖所示:
2.函式原型
影象開運算主要使用的函式morphologyEx,它是形態學擴充套件的一組函式,其引數cv2.MORPH_TOPHAT對應開運算。其原型如下:
dst = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
引數dst表示處理的結果,src表示原影象,cv2.MORPH_TOPHAT表示頂帽運算,kernel表示卷積核。下圖表示5*5的卷積核,可以採用函式 np.ones((5,5), np.uint8) 構建。
3.程式碼實現
完整程式碼如下所示:
#encoding:utf-8
import cv2
import numpy as np
#讀取圖片
src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
#設定卷積核
kernel = np.ones((5,5), np.uint8)
#影象頂帽運算
result = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
#顯示影象
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下圖所示,可以看到外部噪聲被提取出來。
kernel = np.ones((10,10), np.uint8)
result = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
二. 影象黑帽運算
1.基本原理
影象黑帽運算是影象閉運算操作減去原始影象的結果,得到影象內部的小孔,或者前景色中的小黑點。如下圖所示:
2.函式原型
影象開運算主要使用的函式morphologyEx,它是形態學擴充套件的一組函式,其引數cv2.MORPH_BLACKHAT對應開運算。其原型如下:
dst = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
引數dst表示處理的結果,src表示原影象,cv2.MORPH_BLACKHAT表示黑帽運算,kernel表示卷積核。下圖表示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)
#影象黑帽運算
result = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
#顯示影象
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出結果如下圖所示,可以看到影象內部黑點被提取出來。
但內部比較大的四個黑點沒有被提取,如果想獲取更多的細節,可以將卷積設定為10*10,如下圖所示:
kernel = np.ones((10,10), np.uint8)
result = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
希望文章對大家有所幫助,如果有錯誤或不足之處,還請海涵。最近經歷的事情太多,有喜有悲,關閉了朋友圈,希望通過不斷學習和寫文章來忘記煩勞,將憂鬱轉換為動力,每週學習都記錄下來,加油!!!
(By:Eastmount 2018-11-04 深夜12點 https://blog.csdn.net/Eastmount/)
相關文章
- Python 影像處理 OpenCV (10):影像處理形態學之頂帽運算與黑帽運算PythonOpenCV
- [Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算Python梯度
- Python從零到壹丨影像增強的頂帽運算和底帽運算Python
- [Python影象處理] 五.影象融合、加法運算及影象型別轉換Python型別
- 【數字影像處理】影像形態學演算法C語言實現(影像卷積,膨脹,腐蝕,開運算,閉運算,頂帽,黑帽,雕版,銳化)演算法C語言卷積
- OpenCV計算機視覺學習(5)——形態學處理(腐蝕膨脹,開閉運算,禮帽黑帽,邊緣檢測)OpenCV計算機視覺
- Python 影像處理 OpenCV (9):影像處理形態學開運算、閉運算以及梯度運算PythonOpenCV梯度
- [影象處理] Python+OpenCV實現車牌區域識別及Sobel運算元PythonOpenCV
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- Python影像處理丨三種實現影像形態學轉化運算模式Python模式
- 影象處理之影象增強
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- OpenCV計算機視覺學習(15)——淺談影像處理的飽和運算和取模運算OpenCV計算機視覺
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- Python 影像處理 OpenCV (13): Scharr 運算元和 LOG 運算元邊緣檢測技術PythonOpenCV
- 實戰 | 用Python做影象處理(一)Python
- Python數學運算Python
- 10.[機器視覺]Halcon形態學膨脹,腐蝕,開運算,閉運算視覺
- [Python影象處理] 四.影象平滑之均值濾波、方框濾波、高斯濾波及中值濾波Python
- 數字影象處理DIP
- opencv 黑帽操作OpenCV
- Python科學計算之Numpy陣列生成與運算Python陣列
- 黑帽SEO之搜尋引擎劫持
- matlab中中影象PSNR和SSIM的計算Matlab
- Python基礎教程:Day15-影象和辦公文件處理Python
- 影象中的畫素處理
- 【筆記】基於Python的數字影象處理筆記Python
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- JavaScript 資料處理 - 運算元組JavaScript
- Python 影像處理 OpenCV (4):影像算數運算以及修改顏色空間PythonOpenCV
- 計算機視覺—影象特效(3)計算機視覺特效
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI
- Python 黑帽程式設計 4.2 Sniffer 之資料本地儲存和載入Python程式設計
- php 處理 浮點數 精度運算 數字處理等PHP