熱線(xiàn)電話(huà):0755-23712116
郵箱:contact@shuangyi-tech.com
地址:深圳市寶安區(qū)沙井街道后亭茅洲山工業(yè)園工業(yè)大廈全至科技創(chuàng)新園科創(chuàng)大廈2層2A
基本思想:用一定形態(tài)的結(jié)構(gòu)元素去度量和提取圖像中的對(duì)應(yīng)形狀,達(dá)到分析知識(shí)的目的??捎糜趫D像處理的各個(gè)方面,包括圖像分割、邊界檢測(cè)、特征提取。
結(jié)構(gòu)元素:形態(tài)學(xué)變換中的基本元素,使為了探測(cè)圖像的某種結(jié)構(gòu)信息而設(shè)計(jì)的特定形狀和尺寸的圖像,稱(chēng)為收集圖像結(jié)構(gòu)信息的探針。
結(jié)構(gòu)元素有多種類(lèi)型:如圓形、方形、線(xiàn)型等,可攜帶知識(shí)(形態(tài)、大小、灰度和色度信息)來(lái)探測(cè)、研究圖像的結(jié)構(gòu)特點(diǎn)。
形態(tài)學(xué)運(yùn)算包括:二值化腐蝕和膨脹、二值化開(kāi)閉運(yùn)算、骨架抽取、擊中擊不中變換等。
形態(tài)學(xué)四個(gè)基本算子:膨脹,腐蝕、開(kāi)啟和閉合組成,這些基本運(yùn)算還可以推導(dǎo)和組合成各種數(shù)學(xué)形態(tài)學(xué)實(shí)用算法。
腐蝕運(yùn)算思路:定義結(jié)構(gòu)元素(與模板類(lèi)似),結(jié)構(gòu)元素在整幅圖像中移動(dòng),移動(dòng)到每個(gè)像素點(diǎn)上,只有結(jié)構(gòu)元素與圖像上對(duì)應(yīng)像素點(diǎn)的像素值全部相等時(shí),保留這個(gè)像素點(diǎn)的值。
腐蝕運(yùn)算作用:消除物體邊界點(diǎn),使邊界點(diǎn)向內(nèi)部收縮,可以把小于結(jié)構(gòu)元素的物體去除。選取不同大小的結(jié)構(gòu)元素,去除不同大小的物體。如兩個(gè)物體間有細(xì)小的連通,通過(guò)腐蝕可以將兩個(gè)物體分開(kāi)。
腐蝕運(yùn)算:
腐蝕運(yùn)算示意圖:
基本方法:
通常拖到結(jié)構(gòu)元素在X域移動(dòng),在每一個(gè)位置上,當(dāng)結(jié)構(gòu)元素B在中心平移到X圖像上的某優(yōu)點(diǎn)(x,y)。
如果結(jié)構(gòu)元素內(nèi)的每一個(gè)像素都與以(x,y)為中心的相同鄰域中對(duì)應(yīng)像素完全相同,那么就保留(x,y)像素點(diǎn)。
對(duì)于不滿(mǎn)足條件的像素點(diǎn)則全部刪除,達(dá)到邊界向內(nèi)收縮效果。
int Image[120][180]; memset(Image, 0, sizeof(Image)); //全方位腐蝕運(yùn)算 for (int i = 1; i < Use_ROWS-1; i++) { for (int j = 1; j < Use_Line - 1; j++) { if (Image_Use[i][j] == 255 && Image_Use[i][j + 1] == 255 && Image_Use[i][j - 1] == 255) { Image[i][j] = 255; } } }
膨脹運(yùn)算思路:定義結(jié)構(gòu)元素(與模板類(lèi)似),結(jié)構(gòu)元素在整幅圖像中移動(dòng),移動(dòng)到每個(gè)像素點(diǎn)上,如果結(jié)構(gòu)元素與圖像上對(duì)應(yīng)像素點(diǎn)的像素值至少有一個(gè)像素相等時(shí),保留這個(gè)像素點(diǎn)的值。
膨脹運(yùn)算作用:與腐蝕相反,對(duì)二值化物體邊界點(diǎn)擴(kuò)充,將與物體接觸的所以背景點(diǎn)合并到該物體中,使邊界向外擴(kuò)張。如果兩個(gè)物體之間的距離比較近,會(huì)把兩個(gè)物體連通到一起,對(duì)填補(bǔ)圖像分割后物體的空洞有用。
膨脹與腐蝕比較:
膨脹運(yùn)算:
膨脹運(yùn)算示意圖:
int Image[120][180]; memset(Image, 0, sizeof(Image)); //全方位膨脹運(yùn)算 for (int i = 1; i < Use_ROWS-1; i++) { for (int j = 1; j < Use_Line - 1; j++) { if (Image_Use[i][j] == 255 || Image_Use[i][j + 1] == 255 || Image_Use[i][j - 1] == 255) { Image[i][j] = 255; } } }