Python實例解析圖像形態(tài)學運算技術
1 圖像形態(tài)學運算
在Python OpenCV圖像處理之圖像濾波特效詳解中我們將圖像濾波進行了以下分類:
鄰域濾波
- 線性濾波
- 非線性濾波
頻域濾波
- 低通濾波
- 高通濾波
在非線性濾波中,之前只介紹了中值濾波,事實上,還有一類非常常用的非線性濾波方法,稱為圖像形態(tài)學運算(Morphological operations)。
圖像形態(tài)學運算是一類基于圖像形狀運算的非線性濾波技術,其基本思想是利用一些特殊的結(jié)構(gòu)元來測量或提取圖像中相應的形狀和特征,以便進一步進行圖像分析和處理。這里結(jié)構(gòu)元素就相當于我們在濾波中所涉及到的模板——一個給定像素的矩陣,這個矩陣形狀可以任意,但一般是正方形。
接下來,我們分析一下幾種經(jīng)典的圖像形態(tài)學運算算法,再編程測試一下~
2 腐蝕
腐蝕就是用局部灰度最小值代替目標像素值實現(xiàn)對高亮區(qū)域的腐蝕。
舉個例子,有這樣一張圖像和這樣一個結(jié)構(gòu)元素,其中結(jié)構(gòu)元素的藍色方塊表示的是模板原點。
下面我們開始遍歷這張圖像,到下圖這個位置的時候,模板內(nèi)灰度最小值是灰色方格的像素,因此替換掉模板原點中藍色方格處的像素為灰色(原本為白色,被腐蝕了)
就這樣遍歷完這張圖像得到
3 膨脹
膨脹就是用局部灰度最大值代替目標像素值實現(xiàn)對高亮區(qū)域的膨脹。
和腐蝕類似,遍歷這張圖像,到下圖這個位置的時候,模板內(nèi)灰度最大值是白色方格的像素,因此替換掉模板原點中藍色方格處的像素為白色(原本為灰色,膨脹了)
就這樣遍歷完這張圖像得到膨脹的最終結(jié)果為
上個實物圖感受下腐蝕和膨脹的效果
4 開運算與閉運算
理解了圖像腐蝕與膨脹,那么開閉運算就很容易了
- 開運算(Opening):先腐蝕再膨脹
- 閉運算(Closing):先膨脹再腐蝕
開運算能夠除有效去除孤立點、毛刺和小橋;閉運算能夠填平小孔,彌合縫隙。
上圖假設灰色區(qū)域為高亮。
5 頂帽運算與底帽運算
頂帽運算與底帽運算是用于表征開閉運算與原圖像間差異的運算,類似邊緣檢測的梯度差
- 圖像頂帽運算:表征原圖像與開運算得到的圖像之間的區(qū)別
- 圖像底帽運算:表征原圖像與閉運算得到的圖像之間的區(qū)別
6 惡魔與天使
先看看原圖,一對可愛的貓咪
進行腐蝕操作,首先創(chuàng)建結(jié)構(gòu)元
int eSize = 3; //結(jié)構(gòu)元尺寸 int s = eSize * 2 + 1; Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
接著用結(jié)構(gòu)元遍歷原圖,OpenCV
有封裝好的API,直接調(diào)用即可
erode(src, dst, structureElement); imshow("腐蝕操作后:", dst);
得到腐蝕后的圖像如下所示,眼睛空洞洞的,有點恐怖片內(nèi)味了,這還是原來那兩只貓嗎?
膨脹操作類似于腐蝕,也有OpenCV
封裝好的API
dilate(srcImg, dstImg, structureElement, Point(-1, -1), 1); imshow("膨脹操作后:", dstImg);
膨脹出來的小貓就顯得輕松很多,感覺升華了。
今后要是想有一張照片創(chuàng)造光與影
、正與邪
、天使與惡魔
兩種反差,可以考慮采用圖像腐蝕和膨脹操作。
到此這篇關于Python實例解析圖像形態(tài)學運算技術的文章就介紹到這了,更多相關Python 圖像形態(tài)學運算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python hbase讀取數(shù)據(jù)發(fā)送kafka的方法
今天小編就為大家分享一篇python hbase讀取數(shù)據(jù)發(fā)送kafka的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12詳解pandas.DataFrame.plot() 畫圖函數(shù)
這篇文章主要介紹了詳解pandas.DataFrame.plot()畫圖函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06Python開發(fā)之身份證驗證庫id_validator驗證身份證號合法性及根據(jù)身份證號返回住址年齡等信息
這篇文章主要介紹了Python開發(fā)之身份證驗證庫id_validator驗證身份證號合法性及Python解析身份證號,根據(jù)身份證號返回住址年齡等信息,需要的朋友可以參考下2020-03-03淺談keras中的目標函數(shù)和優(yōu)化函數(shù)MSE用法
這篇文章主要介紹了淺談keras中的目標函數(shù)和優(yōu)化函數(shù)MSE用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python?使用turtle實現(xiàn)實時鐘表并生成exe
這篇文章主要為大家詳細介紹了python使用Turtle庫繪制動態(tài)鐘表,并有需要可以生成exe可執(zhí)行文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03