OpenCV中圖像形態(tài)學(xué)操作
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
本文轉(zhuǎn)自:視學(xué)算法
圖像形態(tài)學(xué)是圖像處理的分支學(xué)科,在二值圖像處理中占有重要地位、OpenCV中實(shí)現(xiàn)了圖像形態(tài)學(xué)如下常見操作:
-膨脹操作
-腐蝕操作
-開操作
-閉操作
-擊中擊不中操作
-黑帽操作
-頂帽操作
-梯度操作
在開始相關(guān)API與代碼演示之前,首先要加載圖片然后把圖像從彩色圖像轉(zhuǎn)換為二值圖像,實(shí)現(xiàn)代碼如下:

圖像形態(tài)學(xué)操作,必須有結(jié)構(gòu)元素才可以,不同形狀的結(jié)構(gòu)元素對(duì)同樣的圖像進(jìn)行相同的操作可以得到不同的輸出結(jié)果,所以在形態(tài)學(xué)操作中結(jié)構(gòu)元素的選擇至關(guān)重要。OpenCV中獲取結(jié)構(gòu)元素的相關(guān)代碼如下:
腐蝕操作是將結(jié)構(gòu)元素覆蓋下的中心像素點(diǎn)的值用最小值替換,得到結(jié)果即為腐蝕操作輸出圖像,通過OpenCV API調(diào)用實(shí)現(xiàn)腐蝕操作的代碼如下

運(yùn)行效果如下:

膨脹操作是將結(jié)構(gòu)元素覆蓋下的中心像素點(diǎn)的值用最大值替換,得到結(jié)果即為膨脹操作輸出圖像,通過OpenCV API調(diào)用實(shí)現(xiàn)膨脹操作的代碼如下

運(yùn)行效果如下:

開操作是首先對(duì)圖像進(jìn)行腐蝕操作,然后在對(duì)圖像進(jìn)行膨脹操作,開操作可以斷開兩個(gè)對(duì)象的連接性。實(shí)現(xiàn)對(duì)象分離。開操作的代碼實(shí)現(xiàn)如下:

運(yùn)行結(jié)果如下:

閉操作使用結(jié)構(gòu)元素對(duì)圖像先膨脹后腐蝕,正好跟開操作的順序相反,但是閉操作絕對(duì)不是開操作的反操作結(jié)果。閉操作可以消除圖像中背景小點(diǎn)。OpenCV中開操作代碼演示如下:

運(yùn)行結(jié)果如下

根據(jù)結(jié)構(gòu)元素的選擇被擊中的區(qū)域?qū)?huì)被保留、而沒有被擊中的區(qū)域則被去掉OpenCV中代碼演示如下:

結(jié)果顯示如下:

黑帽操作的結(jié)果是圖像閉操作與源圖像之間的不同,OpenCV中實(shí)現(xiàn)圖像黑帽操作的代碼如下:

結(jié)果顯示如下:

頂帽操作是源圖像與開操作結(jié)果之間的差異,頂帽操作可以顯示出圖像中區(qū)域之間微小不同之處。OpenCV頂帽操作的代碼演示如下:

顯示結(jié)果如下:

形態(tài)學(xué)的梯度操作是圖像膨脹與腐蝕結(jié)果之間的不同,常見的梯度操作是基本梯度-是膨脹與腐蝕結(jié)果之間不同。OpenCV的代碼演示如下:

效果顯示如下:

morphologyEx- 形態(tài)學(xué)操作函數(shù)
-第一個(gè)參數(shù)表示輸入圖像,通道數(shù)目任意,位數(shù)可以是8、16、32
-第二個(gè)參數(shù)表示輸出圖像,通道數(shù)與位數(shù)與輸入圖像一致
-第三個(gè)參數(shù)表示是那種形態(tài)學(xué)操作
-第四個(gè)參數(shù)表示結(jié)構(gòu)元素是什么
上述舉例都是基于矩形結(jié)構(gòu)元素5x5窗口大小,此外文章中還定義另外兩種結(jié)構(gòu)元素,感興趣的讀者可以自己嘗試。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

