影象處理 形態學操作
基本的運算包括:二值腐蝕和膨脹、二值開閉運算、骨架抽取、極限腐蝕、擊中擊不中變換、形態學梯度、Top-hat變換、顆粒分析、流域變換、灰值腐蝕和膨脹、灰值開閉運算、灰值形態學梯度等。
注意:腐蝕和膨脹是對白色部分(高亮部分)而言的,不是黑色部分。膨脹就是影象中的高亮部分進行膨脹,“領域擴張”,效果圖擁有比原圖更大的高亮區域。腐蝕就是原圖中的高亮部分被腐蝕,“領域被蠶食”,效果圖擁有比原圖更小的高亮區域。
注意: 大多數影象,一般相對於背景而言物體的顏色(灰度)更深, 二值化之後物體會成為黑色, 而背景則成為白色, opencv中將物體用黑色(灰度值0)表示, 而背景用白色(灰度值255)表示,但Matlab 在二點陣圖像形態學處理中,預設情況下白色的
實際上, 無論以什麼灰度值為前景和背景都只是一種處理上的習慣, 與形態學演算法本身無關。例如對於上面兩幅圖片, 只需要在形態學處理之前先對影象反色就可以在兩種認定習慣之間自由切換。
膨脹與腐蝕能實現多種多樣的功能,主要如下:
- 消除噪聲
- 分割(isolate)出獨立的影象元素,在影象中連線(join)相鄰的元素。
- 尋找影象中的明顯的極大值區域或極小值區域
- 求出影象的梯度
1.2 膨脹
膨脹就是求區域性最大值的操作,核B與圖形卷積,即計算核B覆蓋的區域1.3 腐蝕
腐蝕與膨脹是相反的操作,腐蝕是求區域性最小值。高亮區域逐漸變小,減少的多少由結構元素決定,如果高亮部分小於結構元素,則腐蝕後高亮部分將完全消失,如果高亮部分小於結構元素,則腐蝕後在細連通處斷裂。
腐蝕的過程相當於對可以填入結構元素的位置作標記的過程
效果圖:
1.4 開操作(Opening Operation)
開操作(Opening Operation)先腐蝕後膨脹,其數學表示式如下:
特點:使影象的輪廓變得光滑, 使狹窄的連線斷開和消除細毛刺,濾除噪聲,同時並沒有對物體的形狀、面積造成明顯的影響,
但當我們只關心物體的位置或者個數時,物體形狀的改變不會給我們帶來困擾,此時用腐蝕濾波具有處理速度上的優勢〈同開運算相比節省了一次膨脹運算〉。
1.5 閉操作(Closing Operation)
閉操作(Closing Operation)先膨脹後腐蝕,其數學表示式如下:
特點:能夠彌合狹窄的間斷, 填充小的孔洞,填補輪廓線中的斷裂、也會平滑輪廓的一部分。
1.6 擊中擊不中變換
效果圖:
1.7 形態學梯度(Morphological Gradient)
形態學梯度(Morphological Gradient)為膨脹圖與腐蝕圖之差
特點:對二值影象進行這一操作可以將團塊(blob)的邊緣突出出來。我們可以用形態學梯度來 保留物體的邊緣輪廓。1.8 頂帽(Top Hat)
頂帽運算(Top Hat)為原影象與“開運算“的結果圖之差
特點:開運算放大了局部低亮度區域,因此,從原圖中減去開運算後的圖,得到的效果圖 突出了比原圖輪廓周圍的區域更明亮的區域,且這一操作和選擇的核的大小相關。
頂帽運算往往用來分離比鄰近點亮一些的斑塊。當一幅影象具有大幅的背景的時候,而微小物品比較有規律的情況下,可以使用頂帽運算進行背景提取。
1.9 黑帽(Black Hat)
黑帽(Black Hat)運算為”閉運算“的結果圖與原影象之差。數學表示式為:
閉運算放大了局部高亮度區域。黑帽運算後的效果圖 突出了比原圖輪廓周圍的區域更暗的區域,且這一操作和選擇的核的大小相關。所以,黑帽運算用來分離比鄰近點暗一些的斑塊。
總結:
頂帽和黑帽都是做差求得的,最後顯示的都是放大的區域。
- 頂帽:突出原圖中的亮區域。
- 黑帽:突出原圖中的暗區域。
2.0 區域填充
區域填充可視為邊界提取的反過程, 它是在邊界已知的情況下得到邊界包圍的整個區域的形態學技術。
2.1 連通分量提取及其實現提取連通分量的過程實際上也是標註連通分量的過程, 通常的做法是給原影象中的每個連通區分配一個唯一代表該區域的編號, 在輸出影象中該連通區內的所有畫素的畫素值就賦值為該區域的編號, 我們將這樣的輸出影象稱為標註影象。
2.2 骨架提取
影象骨架提取,實際上就是提取目標在影象上的中心畫素輪廓。說白了就是以目標中心為準,對目標進行細化,一般細化後的目標都是單層畫素寬度。
骨架提取演算法無外乎分為迭代和非迭代兩大類。在迭代演算法中,又分為並行迭代和順序迭代兩種。
介紹兩種提取演算法,它們分別來源於論文[1](K3M順序迭代)、[2](Zhang-Suenalgorithm,並行迭代)。
這兩種方法都是對二值影象操作的,思想都是從目標外圍往目標中心,利用以待檢測畫素為中心3*3畫素視窗的特徵,對目標不斷腐蝕細化,直至腐蝕到不能再腐蝕(單層畫素寬度),就得到了影象的骨架。
2.2.1 K3M
思想是,提取目標外圍輪廓,然後利用輪廓腐蝕目標影象邊界(這是一次迭代過程),直至腐蝕到不能再腐蝕。
演算法分為兩塊
第一塊,不斷腐蝕,提取出偽骨架(部分割槽域有兩層畫素寬度,但已經很接近真實骨架)。
第二塊,從偽骨架中提取真實骨架。
2.2.2 Zhang-Suen algorithm
該演算法每一次的迭代步驟是對符合特定條件的目標畫素,進行腐蝕,效果就是目標變得越來越細。不斷的迭代,直到在上一次腐蝕後的目標在本輪操作中,沒有新的畫素點被腐蝕,演算法結束。
下面說一下此演算法的四個條件:
條件(a):中心畫素P1周圍的目標畫素(二值中的1)的個數之和在2和6之間。
條件(b): 8鄰域畫素中,按順時針方向,相鄰兩個畫素出現0->1的次數。
條件(c)(d)有兩種模式,一種上面提到過,下面是另一種。
參考:https://blog.csdn.net/whuhan2013/article/details/53956606
https://blog.csdn.net/poem_qianmo/article/details/23710721
https://blog.csdn.net/zhubaohua_bupt/article/details/76850555