亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Matlab的圖形輪廓提取及填充

        2008-12-31 00:00:00井艾斌孟祥增
        電腦知識(shí)與技術(shù) 2008年9期

        摘要:提取圖形的形狀特征是當(dāng)前圖像處理領(lǐng)域的重要研究?jī)?nèi)容,而圖形的邊緣輪廓又能很好地反映形狀的信息,因此本文闡述了如何利用matlab較好的提取圖形的輪廓,以及將簡(jiǎn)單輪廓圖形填充起來(lái)作為形狀圖形進(jìn)行研究的算法及代碼實(shí)現(xiàn)。

        關(guān)鍵詞:圖形;輪廓;膨脹;填充

        中圖分類(lèi)號(hào):TP317文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2008)09-11722-02

        Extraction and Filling of the Outline of Black-and-White Binary Graphics Based on Matlab

        JING Ai-bin,LIU Qing,MENG Xiang-zeng

        (Shandong Normal University, Jinnan 250014,China)

        Abstract: Extracing the characteristic of shape from graphics is an important research field,while the outline can well reflect the information of the shape, so this article elaborates the algorithm and the codes about how to use the matlab to extract outlines of graphics, and to filll the existing outline graphics so as to research them as shape graphics.

        Key words: graphics; outline; expansion; filling

        1 圖形及輪廓的界定

        在圖像的視覺(jué)特征研究領(lǐng)域,形狀特征因更接近人的視覺(jué)特點(diǎn),一直是人們的研究重點(diǎn)。而形狀的邊緣又能很好的反映形狀的信息,所以有必要提取圖形的邊緣輪廓以對(duì)以后的深入分析打下基礎(chǔ)。

        實(shí)驗(yàn)之前我們首先闡明兩個(gè)概念,即圖形和輪廓。我們這里所說(shuō)的圖形,指的是有明顯的形狀和線條特征,但沒(méi)有太復(fù)雜的顏色或紋理特征的簡(jiǎn)單圖像。為了便于研究,本文中所采用的圖形為黑白二值圖形。

        另外,因?yàn)槲覀冃枰芯康膶?duì)象是形狀而非內(nèi)部細(xì)節(jié),所以本文所涉及的輪廓,指圖形的外輪廓,不包括圖形內(nèi)部的孔洞所圍成的內(nèi)部邊界,例如,對(duì)于示例圖1,我們所期望得到的輪廓是如圖3所示的外輪廓,而非圖2所示圖形的整個(gè)內(nèi)外邊界輪廓。

        2 基于matlab的輪廓提取

        圖形的外輪廓提取所面臨二個(gè)問(wèn)題:

        首先,我們知道,在matlab中有一個(gè)提取圖形輪廓的函數(shù)bwperim,但這個(gè)函數(shù)的局限性在于,它不僅提取外輪廓,對(duì)圖形區(qū)域內(nèi)部的孔洞所圍成的內(nèi)部邊緣也提取出來(lái)。如圖1中這種帶花紋的圖形,那些花紋細(xì)節(jié)也將被提取出來(lái),我們得到的不是一個(gè)單純的蝴蝶的形狀,如圖2。解決方法是在提取輪廓之前先利用孔洞填補(bǔ)函數(shù)bwfill(F,'holes');將這些孔洞填補(bǔ)上。代碼如下:

        F2=bwfill(F1,'holes');

        其次,對(duì)于圖形中比較細(xì)小的部分,例如蝴蝶的觸角,提取輪廓后可能這一部分會(huì)出現(xiàn)斷點(diǎn),或者提取出一條曲線或直線段而非閉合區(qū)域。解決方法是先用膨脹函數(shù)dilate(F,SE)將原圖形膨脹,這樣就可以將細(xì)小部分加粗,然后再提取輪廓。其中SE為函數(shù)dilate的二值結(jié)構(gòu)元素。SE不能太大也不能太小,太大可能較原圖中原本分離的兩部分連接起來(lái),而太小的話膨脹效果不明顯,細(xì)小的區(qū)域仍然沒(méi)得到擴(kuò)大。實(shí)驗(yàn)表明,當(dāng)SE=為3*3單位矩陣時(shí),輪廓提取的效果較為理想。

        下面我們通過(guò)實(shí)驗(yàn)來(lái)具體闡述一下如何用matlab提取輪廓。

        我們將圖1的文件命名為butter,提取后的輪廓圖形重新保存為后綴名為.bmp的文件,則輪廓提取的代碼為:

        F=imread('butter.bmp');

        F1=~im2bw(F); %bwfill函數(shù)處理的是背景色為黑色的二值圖形,原圖為白色背景,故先對(duì)原圖反色;

        F2=bwfill(F1,'holes');

        SE=ones(3);

        F3=dilate(F2,SE);

        F4=bwperim(F2);

        figure,imshow(F4); %顯示一下輪廓圖形,以查看提取后的效果

        imwrite(F4, butter2,'bmp');

        3 簡(jiǎn)單輪廓圖形的填充

        上面我們研究了如何提取黑白圖形的輪廓,其實(shí)在我們獲得的網(wǎng)絡(luò)圖像圖形資源中,還經(jīng)常得到一些輪廓圖形,我們需要將這些輪廓填充起來(lái)作為形狀來(lái)研究,因此有必要研究如何有效地填充邊界輪廓。為便于實(shí)驗(yàn),本文中用來(lái)填充的輪廓圖形都是簡(jiǎn)單的輪廓圖形。

        輪廓都是一個(gè)閉合的曲線,但有些圖形的邊界非常接近畫(huà)布的邊緣,以至于在填充時(shí)程序往往將這部分區(qū)域作為對(duì)象外部區(qū)域,即背景來(lái)考慮,這樣就導(dǎo)致輪廓的范圍被改變,從而不能正確填充。因此在填充前,我們需要利用photoshop中的動(dòng)作命令將輪廓圖形的畫(huà)布變得稍大一些,例如原始圖像畫(huà)布大小為256*256,那么我們可以將其尺寸改為280*280,這樣,一些輪廓點(diǎn)就不會(huì)距離畫(huà)布邊緣過(guò)近了。

        畫(huà)布尺寸處理好以后,我們就可以進(jìn)行填充了。目前研究比較多的填充算法有掃描線算法、種子填充算法等。但這些算法的代碼不易編寫(xiě),而且對(duì)于簡(jiǎn)單的形狀來(lái)說(shuō),這些算法顯得比較繁瑣,針對(duì)我們的實(shí)驗(yàn)中使用的輪廓圖形比較簡(jiǎn)單的特點(diǎn),我們提出了一種較為簡(jiǎn)單的輪廓填充思想,這種算法共分為兩大步,這里我們所取一幅背景為黑色的帽子的輪廓圖”hat.bmp”為例,如圖4。

        首先,從左至右逐行掃描圖形,如果像素值為0,則是背景,不做任何改變,繼續(xù)往后掃描,直到遇到像素值為1的點(diǎn),如果這個(gè)點(diǎn)的下一個(gè)點(diǎn)像素值為0,表示掃描到了最左邊的輪廓點(diǎn),這時(shí)設(shè)置一個(gè)標(biāo)記,從這個(gè)點(diǎn)往后所有像素值為0的點(diǎn)全部置1,直到再次遇到像素值為1的點(diǎn)為止,此過(guò)程將這兩個(gè)邊界點(diǎn)之間的區(qū)域填充起來(lái)。

        然后接著掃描后面的點(diǎn),當(dāng)再次遇到像素值為1的點(diǎn)事時(shí),重復(fù)以上步驟。這樣一行行的掃描填充,整幅輪廓圖就被填充起來(lái)了。

        其代碼如下:

        F2=imread('hat.bmp');

        [K,L]=size(F2);

        for i=1:K

        flag=1;

        j=1;

        while j

        if F2(i,j)==1

        j=j+1;

        flag=F2(i,j);%設(shè)置標(biāo)志

        while flag==0j

        F2(i,j)=1; %填充

        j=j+1;

        flag=F2(i,j);

        end

        j=j+1;

        else

        =j+1;

        end

        end

        end

        填充后的效果如圖5所示。

        需要注意的是,用來(lái)填充的輪廓圖必須是完全閉合的,如果邊緣本身存在斷點(diǎn),則檢測(cè)邊界點(diǎn)時(shí)就會(huì)出錯(cuò),導(dǎo)致圖形無(wú)法正常填充。

        4 結(jié)束語(yǔ)

        以上,我們通過(guò)實(shí)驗(yàn)給出了利用matlab對(duì)黑白二值圖像的外輪廓提取和簡(jiǎn)單輪廓圖形的填充時(shí)遇到的問(wèn)題進(jìn)行了解決,并給出了算法的部分代碼。希望這些工作能對(duì)從事圖像處理及相關(guān)領(lǐng)域的研究人員和學(xué)習(xí)者有所幫助。

        參考文獻(xiàn):

        [1] 王曉丹,吳崇明. 基于MATLAB的系統(tǒng)分析與設(shè)計(jì)—圖象處理[M]. 北京:西安電子科技大學(xué)出版社,2000.

        [2] 周正杰,王潤(rùn)生. 基于輪廓的形狀特征提取與識(shí)別方法[J]. 計(jì)算機(jī)工程與應(yīng)用,2006(14):92—94.

        [3] 李丙春. 圖像區(qū)域邊緣形狀特征提取[J]. 喀什師范學(xué)院學(xué)報(bào),2007,28(3):62-64.

        [4] 李弼程,彭天強(qiáng),彭波. 智能圖象處理技術(shù)[M]. 電子工業(yè)出版社,2004.

        无码av免费精品一区二区三区| 妺妺窝人体色www看美女| 人人狠狠综合久久亚洲| 国产婷婷丁香五月麻豆| 亚洲欧洲日产国码无码久久99| 日本视频一区二区三区免费观看| 国产盗摄一区二区三区av| 青青草手机免费播放视频| 天堂网站一区二区三区| 无码乱人伦一区二区亚洲一| 亚洲国产精品久久久久秋霞1| 一区二区久久不射av| 蜜桃视频一区视频二区| 国产猛烈高潮尖叫视频免费| 中文亚洲成a人片在线观看| 国产欧美曰韩一区二区三区| 国产91久久精品成人看网站| 亚洲中文字幕无码av永久| 五月婷婷俺也去开心| 亚洲成Av人片不卡无码观看| 亚洲精品中文字幕乱码无线| 精品亚洲麻豆1区2区3区| 久久久久久国产精品mv| 久久久久欧洲AV成人无码国产| 欧美激情精品久久999| 亚洲精品大全中文字幕| 精品国产一区二区三区色搞| 在线人成免费视频69国产| 亚洲精品中国国产嫩草影院美女 | 日本丶国产丶欧美色综合| 久久久精品电影| 日本女优禁断视频中文字幕| 偷拍夫妻视频一区二区| 青楼妓女禁脔道具调教sm | 国产韩国精品一区二区三区 | 又黄又爽又色视频| 中文字幕乱偷无码av先锋蜜桃 | 真人做人试看60分钟免费视频| 亚洲中文字幕无码一区| av天堂精品久久久久| 东京道一本热码加勒比小泽|