形態(tài)學(xué)操作是根據(jù)圖像形狀進(jìn)行的簡單操作。一般情況下對二值化圖像進(jìn)行的操作。需要輸入兩個(gè)參數(shù),一個(gè)是原始圖像,第二個(gè)被稱為結(jié)構(gòu)化元素或核,它是用來決定操作的性質(zhì)的。兩個(gè)基本的形態(tài)學(xué)操作是腐蝕和膨脹。他們的變體構(gòu)成了開運(yùn)算,閉運(yùn)算,梯度等。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括宜陽網(wǎng)站建設(shè)、宜陽網(wǎng)站制作、宜陽網(wǎng)頁制作以及宜陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宜陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宜陽省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
結(jié)構(gòu)元素
圖像處理經(jīng)常要用到形態(tài)學(xué)操作,其中首先要獲取結(jié)構(gòu)元素。包括結(jié)構(gòu)元素的大小及形狀。
我們使用 Numpy 構(gòu)建了結(jié)構(gòu)化元素,它是正方形的。但有時(shí)我們需要構(gòu)建一個(gè)橢圓形/圓形的核。為了實(shí)現(xiàn)這種要求,提供了 OpenCV函數(shù) cv2.getStructuringElement()。你只需要告訴他你需要的核的形狀和大小。
腐蝕 (erode)
定義E為歐氏空間,在二值圖像A上使用B進(jìn)行腐蝕運(yùn)算的定義為:
其中 為B平移向量z得到。
在深藍(lán)色正方形上使用圓盤進(jìn)行腐蝕運(yùn)算,結(jié)果為淺藍(lán)色正方形。
腐蝕作用:可以用來消除小且無意義的物體。
參數(shù)意義如下:
例子
膨脹 (dilate)
定義E為歐氏空間,在二值圖像A上使用B進(jìn)行膨脹運(yùn)算的定義為:
其中 為A平移向量b得到。
在深藍(lán)色正方形上使用圓盤進(jìn)行膨脹運(yùn)算,結(jié)果為淺藍(lán)色正方形,帶有圓角。
膨脹作用:可以用來填補(bǔ)物體中的空洞。
參數(shù)意義同腐蝕。
例子
開運(yùn)算
在數(shù)學(xué)形態(tài)學(xué)中,開運(yùn)算 被定義為先腐蝕后膨脹。
其中 和 分別表示腐蝕和膨脹。
在深藍(lán)色正方形上使用圓盤進(jìn)行開運(yùn)算,結(jié)果為淺藍(lán)色正方形,帶有圓角。
開運(yùn)算作用:它被用來去除噪聲
參數(shù)意義如下:
例子
閉運(yùn)算
在數(shù)學(xué)形態(tài)學(xué)中,閉運(yùn)算 被定義為先膨脹后腐蝕。
其中 和 分別表示腐蝕和膨脹。
在深藍(lán)色區(qū)域(兩個(gè)相連的正方形)上使用圓盤進(jìn)行閉運(yùn)算,結(jié)果為深藍(lán)色和淺藍(lán)色的并集。
閉運(yùn)算作用:經(jīng)常被用來填充前景物體中的小洞,或者前景物體上的小黑點(diǎn)。
cv2.MORPH_CLOSE代表閉運(yùn)算,其他參數(shù)意義同開運(yùn)算。
例子
形態(tài)學(xué)梯度
其實(shí)就是一幅圖像膨脹與腐蝕的之差。
形態(tài)學(xué)梯度作用:提取前景物體的輪廓。
cv2.MORPH_GRADIENT代表形態(tài)學(xué)梯度,其他參數(shù)意義同開運(yùn)算。
例子
禮帽
原始圖像與進(jìn)行開運(yùn)算之后得到的圖像的差。
例子
黑帽
進(jìn)行閉運(yùn)算之后得到的圖像與原始圖像的差。
例子
參考資料:
網(wǎng)址:
書籍:《數(shù)字圖像處理》《OpenCV-Python-Toturial-中文版》
在matlab定義里面,這兩個(gè)函數(shù)本來就是能夠作用于灰度圖像的,看幫助文件你也能看到
作用與灰度圖的例子
當(dāng)然,膨脹和腐蝕多用于處理二值圖像
先把輸入的圖像二值化成為二值圖像,在用這兩個(gè)函數(shù)就可以了
膨脹和腐蝕被稱為形態(tài)學(xué)操作。它們通常在二進(jìn)制圖像上執(zhí)行,類似于輪廓檢測。通過將像素添加到該圖像中的對象的感知邊界,擴(kuò)張放大圖像中的明亮白色區(qū)域。侵蝕恰恰相反:它沿著物體邊界移除像素并縮小物體的大小。
通常這兩個(gè)操作是按順序執(zhí)行的,以增強(qiáng)重要的對象特征!
如上所述,這些操作通常組合在一起以獲得理想的結(jié)果!一種這樣的組合稱為Opening,其是侵蝕,然后是膨脹
這在降噪中是有用的,其中侵蝕首先消除噪聲(并收縮物體)然后擴(kuò)張?jiān)俅螖U(kuò)大物體,但噪聲將從先前的侵蝕中消失!
為了在OpenCV中實(shí)現(xiàn)這一點(diǎn),我們將函數(shù)morphologyEx與原始圖像,我們想要執(zhí)行的操作以及傳入的內(nèi)核一起使用。
Closing 是Opening的反向組合,它是膨脹,然后是侵蝕。這對于關(guān)閉物體內(nèi)的小孔或暗區(qū)很有用
它可用于關(guān)閉前景對象內(nèi)的小孔或?qū)ο笊系男『邳c(diǎn)。
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)