這篇文章主要為大家展示了“Python圖像處理中如何解決圖像腐蝕與圖像膨脹問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python圖像處理中如何解決圖像腐蝕與圖像膨脹問題”這篇文章吧。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、交口網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、成都做商城網(wǎng)站、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為交口等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
圖像的膨脹(Dilation)和腐蝕(Erosion)是兩種基本的形態(tài)學(xué)運算,主要用來尋找圖像中的極大區(qū)域和極小區(qū)域。其中膨脹類似于“領(lǐng)域擴張”,將圖像中的高亮區(qū)域或白色部分進行擴張,其運行結(jié)果圖比原圖的高亮區(qū)域更大;腐蝕類似于“領(lǐng)域被蠶食”,將圖像中的高亮區(qū)域或白色部分進行縮減細化,其運行結(jié)果圖比原圖的高亮區(qū)域更小。
1.圖像膨脹
膨脹的運算符是“⊕”,其定義如下:
該公式表示用B來對圖像A進行膨脹處理,其中B是一個卷積模板或卷積核,其形狀可以為正方形或圓形,通過模板B與圖像A進行卷積計算,掃描圖像中的每一個像素點,用模板元素與二值圖像元素做“與”運算,如果都為,那么目標(biāo)像素點為,否則為1。從而計算B覆蓋區(qū)域的像素點最大值,并用該值替換參考點的像素值實現(xiàn)膨脹。下圖是將左邊的原始圖像A膨脹處理為右邊的效果圖A⊕B。
2.圖像腐蝕
腐蝕的運算符是“-”,其定義如下:
該公式表示圖像A用卷積模板B來進行腐蝕處理,通過模板B與圖像A進行卷積計算,得出B覆蓋區(qū)域的像素點最小值,并用這個最小值來替代參考點的像素值。如圖所示,將左邊的原始圖像A腐蝕處理為右邊的效果圖A-B。
處理結(jié)果如下圖所示:
二. 圖像腐蝕代碼實現(xiàn)
1.基礎(chǔ)理論
形態(tài)學(xué)轉(zhuǎn)換主要針對的是二值圖像(或1)。圖像腐蝕類似于“領(lǐng)域被蠶食”,將圖像中的高亮區(qū)域或白色部分進行縮減細化,其運行結(jié)果圖比原圖的高亮區(qū)域更小。其主要包括兩個輸入對象:
(1)二值圖像
(2)卷積核
卷積核是腐蝕中的關(guān)鍵數(shù)組,采用numpy庫可以生成。卷積核的中心點逐個像素掃描原始圖像,如下圖所示:
被掃描到的原始圖像中的像素點,只有當(dāng)卷積核對應(yīng)的元素值均為1時,其值才為1,否則其值修改為。換句話說,遍歷到的黃色點位置,其周圍全部是白色,保留白色,否則變?yōu)楹谏?,圖像腐蝕變小。
2.函數(shù)原型
圖像腐蝕主要使用的函數(shù)為erode,其原型如下:
dst = cv2.erode(src, kernel, iterations)
參數(shù)dst表示處理的結(jié)果,src表示原圖像,kernel表示卷積核,iterations表示迭代次數(shù)。下圖表示5*5的卷積核,可以采用函數(shù) np.ones((5,5), np.uint8) 構(gòu)建。
注意:迭代次數(shù)默認是1,表示進行一次腐蝕,也可以根據(jù)需要進行多次迭代,進行多次腐蝕。
3.代碼實現(xiàn)
完整代碼如下所示:
輸出結(jié)果如下圖所示:
由圖可見,干擾的細線被進行了清洗,但仍然有些輪廓,此時可設(shè)置迭代次數(shù)進行腐蝕。
erosion = cv2.erode(src, kernel,iterations=9)
輸出結(jié)果如下圖所示:
三. 圖像膨脹代碼實現(xiàn)
1.基礎(chǔ)理論
圖像膨脹是腐蝕操作的逆操作,類似于“領(lǐng)域擴張”,將圖像中的高亮區(qū)域或白色部分進行擴張,其運行結(jié)果圖比原圖的高亮區(qū)域更大,線條變粗了,主要用于去噪。
(1) 圖像被腐蝕后,去除了噪聲,但是會壓縮圖像。
(2) 對腐蝕過的圖像,進行膨脹處理,可以去除噪聲,并且保持原有形狀。
它也包括兩個輸入對象:
(1)二值圖像或原始圖像
(2)卷積核
卷積核是腐蝕中的關(guān)鍵數(shù)組,采用numpy庫可以生成。卷積核的中心點逐個像素掃描原始圖像,如下圖所示:
被掃描到的原始圖像中的像素點,當(dāng)卷積核對應(yīng)的元素值只要有一個為1時,其值就為1,否則為。
2.函數(shù)原型
圖像膨脹主要使用的函數(shù)為dilate,其原型如下:
dst = cv2.dilate(src, kernel, iterations)
參數(shù)dst表示處理的結(jié)果,src表示原圖像,kernel表示卷積核,iterations表示迭代次數(shù)。下圖表示5*5的卷積核,可以采用函數(shù) np.ones((5,5), np.uint8) 構(gòu)建。
注意:迭代次數(shù)默認是1,表示進行一次膨脹,也可以根據(jù)需要進行多次迭代,進行多次膨脹。通常進行1次膨脹即可。
3.代碼實現(xiàn)
完整代碼如下所示:
輸出結(jié)果如下所示:
圖像去噪通常需要先腐蝕后膨脹,這又稱為開運算,下篇文章將詳細介紹。如下圖所示:
erosion = cv2.erode(src, kernel)
result = cv2.dilate(erosion, kernel)
以上是“Python圖像處理中如何解決圖像腐蝕與圖像膨脹問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!