【圖像識別】基于形態(tài)學(xué)算法實現(xiàn)道路缺陷的自動識別matlab源碼含GUI
??? 一般圖像處理是針對圖像做形狀的改變,而形態(tài)處理則是對圖像進行結(jié)構(gòu)性的改變,而常見的形態(tài)處理就是針對二值圖像(圖像中的任何像素灰度值不是0就是255)的膨脹(Dilation)、腐蝕(Erosion)、開運算(先腐蝕再膨脹)、閉運算(先膨脹再腐蝕)。
注意:如果對灰度圖進行膨脹、腐蝕等,會起到增強圖像對比度的效果
一、理論:
膨脹(dilation、dilation_rectangle1、dilation_circle)-增加像素:
? ? ? ? 把結(jié)構(gòu)元素B的中心元素(origin)掃描圖像的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“或”操作,即結(jié)構(gòu)元素與其覆蓋的二值圖像的重合部分只要有黑色(0),則結(jié)構(gòu)元素的中心點所在的二值圖像灰度值就為黑色(0);
?
? ? ? ? 如圖所示:左邊是需要被處理的圖像X(二值圖像,我們針對的是黑點),中間是結(jié)構(gòu)元素B,右邊是膨脹處理之后的圖像。膨脹的方法是:拿B的中心點在X上從左到右,從上到下滑動,只要B上的黑點與X上的黑點有重合,則就將B的中心點所在位置的圖像像素值置為黑;右邊是膨脹后的結(jié)果??梢钥闯觯╔的所有范圍,就像X膨脹了一圈似的。

腐蝕(erosion、erosion_rectangle1、erosion_circle)-減少像素:
? ? ? ?把結(jié)構(gòu)元素B的中心元素(origin)掃描圖像的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作,即結(jié)構(gòu)元素與其覆蓋的二值圖像的重合部分全都為黑色(0),則結(jié)構(gòu)元素的中心點所在的二值圖像灰度值才為黑色(0);換而言之,兩者重合部分只要有白色(1)則結(jié)構(gòu)元素的中心點所在的二值圖像灰度值就為白色(1)。
? ? ? ?如圖所示:左邊是被處理的圖像X(二值圖像,我們針對的是黑點),中間是結(jié)構(gòu)元素B,那個標(biāo)有origin的點是中心點,即當(dāng)前處理元素的位置。腐蝕的方法是:拿B的中心點在X上從左到右,從上到下滑動,如果結(jié)構(gòu)元素B與二值圖像X有空白交集,則將B的中心點所在的二值圖像黑點去掉(變?yōu)榘住?)。

膨脹和腐蝕主要用途:
刪除噪聲
圖中個別原素的隔離與不同原素的連接
尋找圖中濃密點與空洞
注:對標(biāo)準(zhǔn)矩形或圓形進行等比例擴大或縮小要用上面的算子,擴展比例為3:1,例:dilation_rectangle1 (RegionTrans, RegionDilation, 3, 3) 為對標(biāo)準(zhǔn)矩形區(qū)域RegionTrans的長和寬方向各增加一個像素
開運算(opening_rectangle1等)-減少像素:先進行腐蝕,然后再膨脹
? ? ? ?如圖所示:左邊是被處理的圖像X(二值圖像,我們針對的是黑點),右邊是結(jié)構(gòu)元素B,下面的兩幅圖中左邊是腐蝕后的結(jié)果;右邊是在此基礎(chǔ)上膨脹的結(jié)果??梢钥吹?,原圖經(jīng)過開運算后,一些孤立的小點被去掉了。一般來說,開運算能夠去除孤立的小點、毛刺和小橋(即連通兩塊區(qū)域的小點),而總的位置和形狀不變。這就是開運算的作用。要注意的是,如果B是非對稱的,進行開運算時要用B的對稱集Bv膨脹,否則,開運算的結(jié)果和原圖相比要發(fā)生平移。

閉運算(closing_rectangle1等)-增加像素:先進行膨脹,然后進行腐蝕
? ? ? ?左邊是被處理的圖像X(二值圖像,我們針對的是黑點),右邊是結(jié)構(gòu)元素B,下面的兩幅圖中左邊是膨脹后的結(jié)果,右邊是在此基礎(chǔ)上腐蝕的結(jié)果可以看到,原圖經(jīng)過閉運算后,斷裂的地方被彌合了。一般來說,閉運算能夠填平小湖(即小孔),彌合小裂縫,而總的位置和形狀不變,比如在OCR字符識別、車牌識別等地方,需要對激光點打印的字體或有一些缺陷的字體進行閉運算,實現(xiàn)連接。同樣要注意的是,如果B是非對稱的,進行閉運算時要用B的對稱集Bv膨脹,否則,閉運算的結(jié)果和原圖相比要發(fā)生平移。
? ? ??

注意:
1)要與原圖像的像素點作比較,新增或去掉的像素點不算。
2)上面我們介紹的是對二值化圖像的處理。如果是對灰度圖像進行形態(tài)學(xué)處理,則膨脹和閉運算會使灰度圖像變亮,腐蝕和開運算會使灰度圖像變暗,這點大家注意下。
?
總結(jié):
1)結(jié)構(gòu)元素的形狀(圓形,矩形)一般隨著要處理的區(qū)域形狀(圓形、矩形等)的不同而有所不同。比如圓形的結(jié)構(gòu)元素對圓形區(qū)域的腐蝕、膨脹效果會更好。
2)結(jié)構(gòu)元素的半徑或邊長越大,則膨脹、腐蝕效果越強。
3)如果想增加像素,用膨脹或閉運算;如果想減少像素,用腐蝕或開運算。區(qū)別在于膨脹和腐蝕的度要大于閉運算和開運算。
4)形態(tài)學(xué)對二值化區(qū)域是改變形狀,而對灰度圖像是改變圖像明暗。
5)開運算一般適合去除邊緣毛刺、孔洞等,如果需要對標(biāo)準(zhǔn)圓形或矩形區(qū)域四周進行等比例擴大或縮小,可以使用算子dilation_rectangle1、erosion_rectangle1、dilation_circle、erosion_circle算子。



?