專利名稱:圖像連通元快速標(biāo)記的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像分析與識別技術(shù)領(lǐng)域,特別涉及一種二值圖像的連通元目標(biāo)的快速標(biāo)記方法。
背景技術(shù):
在大多數(shù)的圖像分析和識別系統(tǒng)中,連通元標(biāo)記是一個基本的操作,是后續(xù)處理的基礎(chǔ)。標(biāo)記連通元的目的,是為了將二值圖像轉(zhuǎn)換成符號圖像,即給每個連通元分配一個標(biāo)簽將它們區(qū)分開來。
在現(xiàn)有技術(shù)中,最常用的方法是將圖像按順序進行處理,并且建立等價類表來保存等價類的相關(guān)信息。在第一次掃描中基于相鄰象素的值給每個前景(目標(biāo))象素分配一個臨時標(biāo)記。如果發(fā)生兩個相鄰的前景象素?fù)碛胁煌臉?biāo)記的情況,那么這兩個標(biāo)記視為等價類,并記錄到等價類表中。在第二次掃描中,將圖像中屬于同一等價類的象素用相同的標(biāo)記表示。
由于連通元標(biāo)記是圖像象素級的處理,相對比較費時,而且需要占用大量內(nèi)存。隨著計算機技術(shù)的快速發(fā)展,雖然存儲空間問題已不再突出,但是,如何以更快的速度對圖像進行處理,正是人們期待的。
為此,人們一直致力于連通元標(biāo)記方法的研究,以提高處理速度和減少存儲空間。
發(fā)明內(nèi)容
對大多數(shù)的圖像識別系統(tǒng)而言,連通元的標(biāo)記是最耗時的過程之一,尤其是對較大尺寸的圖像更是如此。為了減少連通元的標(biāo)記時間,提高連通元的標(biāo)記速度,本發(fā)明提出了以下技術(shù)方案。
1.一種圖像連通元的標(biāo)記方法,包括以下步驟;a.進行初始化工作,即把行標(biāo)j指向起始行、總游程數(shù)K置為0;b.掃描圖像第j行數(shù)據(jù),得到Zj個游程,并記錄為Rk(j)(k=K+1,K+2,…,K+Zj);c.檢查Zj是否為0,如果檢查結(jié)果為是,則跳過步驟d、e,進行步驟f;d.如果步驟c檢查結(jié)果為否,則記錄第j行的每個游程、并將它們標(biāo)記到對應(yīng)的樹上;e.總游程數(shù)量增加Zj個,即由原來的K個總游程數(shù)量變?yōu)镵+Zj個總游程數(shù)量;f.行標(biāo)號j增加1,即由原來的行標(biāo)號j變?yōu)樾袠?biāo)號j+1;g.檢查行標(biāo)號是否超出圖像高度范圍,如果檢查結(jié)果為否,則返回步驟b;h.如果步驟g檢查結(jié)果為是,則輸出游程和樹結(jié)構(gòu)信息。
2.所述的記錄第j行的每個游程、并將它們標(biāo)記到對應(yīng)的樹上,其方法包括以下步驟;a.置當(dāng)前處理的游程標(biāo)號k為K+1;b.對游程Rk(j),尋找上一行與其相連接的游程;c.檢查是否存在步驟b中所述的相連接的情況,如果檢查結(jié)果為是,則先進行步驟d后、再跳過步驟e直接進行步驟f;如果檢查結(jié)果為否,則跳過步驟d后,直接進行步驟e;d.確定并記錄與游程Rk(j)相連的上一行的某一個游程為Rk(j)的父游程;e.生成一個新的樹,游程Rk(j)作為其根節(jié)點;f.將k增加1;g.檢查k是否大于K+Zj,如果檢查結(jié)果為否,則返回步驟b;h.如果步驟g檢查結(jié)果為是,則轉(zhuǎn)入其它相連的后續(xù)步驟。
3.所述的確定并記錄與游程Rk(j)相連的上一行的某一個游程為Rk(j)的父游程,其方法包括以下步驟;a.上一行與游程Rk(j)相連的游程,按從左到右順序記為Rl(j-1)、Rl+1(j-1)、….、Rr(j-1);b.檢查上一行是否只有一個相連的游程,即檢查Rl(j-1)是否等于Rr(j-1);如果檢查結(jié)果為是,則跳過步驟c,直接進行步驟d;c.如果步驟b檢查結(jié)果為否,設(shè)置Rm(j-1)(m=l+1,…,r)的根節(jié)點的父游程Rl(j-1)對應(yīng)的樹根;所述的Rm(j-1)(m=l+1,…,r),Rm(j-1)和Rl(j-1)屬于不同的樹;d.確定并記錄Rl(j-1)為Rk(j)的父游程;e.轉(zhuǎn)入其它相連的后續(xù)步驟。
本發(fā)明的有益效果是只用一次掃描就能獲得數(shù)字圖像的外接矩形和象素面積等特性,由于大大地提高了連通元的標(biāo)記速度,所以對圖像處理速度、尤其是對大尺寸的圖像處理速度,能明顯的得到提高。
附圖1是輸入輸出示意圖。
附圖2是本發(fā)明方法的主流程圖,也是權(quán)利要求1的流程圖。
附圖3是第j行游程標(biāo)記到樹上的方法流程圖,也是權(quán)利要求2的流程圖。
附圖4是確定記錄游程Rk(j)的父游程的方法流程圖,也是權(quán)利要求3的流程圖。
附圖5是游程之間的連接類型示意圖;其中x是各種一對一的連接類型;y是一對多的連接類型;z是多對一的連接類型。
附圖6是實施例的示意圖,以一個連通元為例,說明如何對游程進行處理的;圖中的A、B、C、D、E、F、G都是游程;j、j+1、j+2、j+3是依順序連續(xù)的行。
附圖7是樹結(jié)構(gòu)示意圖,圖中的雙線圓圈代表根節(jié)點、單線圈代表內(nèi)部節(jié)點或葉節(jié)點。
附圖7中a部分的樹結(jié)構(gòu),即j部分的樹結(jié)構(gòu),與附圖6中的j行掃描相對應(yīng);附圖7中b部分的樹結(jié)構(gòu),即j+1部分的樹結(jié)構(gòu),與附圖6中的j+1行掃描相對應(yīng);附圖7中c部分的樹結(jié)構(gòu),即j+2部分的樹結(jié)構(gòu),與附圖6中的j+2行掃描相對應(yīng);附圖7d中部分的樹結(jié)構(gòu),即j+3部分的樹結(jié)構(gòu),與附圖6中的j+3行掃描相對應(yīng)。
附圖6和附圖7應(yīng)該一一對應(yīng)起來進行理解。
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步的詳細說明。
具體實施例方式
標(biāo)記連通元的目的是為了將二值圖像轉(zhuǎn)換成符號圖像,即給每個連通元分配一個標(biāo)簽將它們區(qū)分開來。在現(xiàn)有技術(shù)中,最常用的方法是將圖像按順序進行處理,并且建立等價類表來保存等價類的相關(guān)信息。在第一次掃描中基于相鄰象素的值給每個前景(目標(biāo))象素分配一個臨時標(biāo)記。如果發(fā)生兩個相鄰的前景象素?fù)碛胁煌臉?biāo)記的情況,那么這兩個標(biāo)記視為等價類,并記錄到等價類表中。在第二次掃描中,將圖像中屬于同一等價類的象素用相同的標(biāo)記表示。
本發(fā)明的目的在于實現(xiàn)一種基于游程并以樹結(jié)構(gòu)表示的快速標(biāo)記連通元的方法。首先,從圖像中逐行提取游程,并把它們的位置間關(guān)系信息存儲下來。用樹來表示當(dāng)前行的游程與上一行游程間的位置關(guān)系,每棵樹就對應(yīng)一個連通元,圖1是本方法的輸入輸出示意圖。該方法只需一次掃描就可以獲得連通元的外接矩形框和象素總數(shù)等有用信息。
下面,結(jié)合圖進行描述。
首先對圖像,按從上到下和從左到右的順序進行掃描,在每一行中,尋找且記錄每個游程。
游程定義為同一行中左右連續(xù)相鄰的前景(也稱目標(biāo))象素點的集合。我們用一個五元組(k,yk,sk,tk,pk)來表示一個游程Rk(y)k表示游程在圖像中的序列號;yk 表示游程的行坐標(biāo);sk 表示游程起始點的列坐標(biāo);tk 表示游程終止點的列坐標(biāo);pk 該游程在上一行的父游程。
每個連通元內(nèi)的游程之間的關(guān)系用樹結(jié)構(gòu)來表示。每個游程對應(yīng)著樹中的一個節(jié)點,如果當(dāng)前行的一個游程與上一行的一個游程相連通,那么這兩個游程在樹中對應(yīng)的節(jié)點相連。游程間的連通關(guān)系定義如下定義假設(shè)Rk(y)是第y行的一個游程。Rm(y-1)是第y-1行的游程,如果它們滿足下列條件中的任意一個,那么我們稱Rk(y)與Rm(y-1)是連通的。
(1)sk-n≤sm≤tk(2)sk≤tm≤tk+n(3)sm-n≤sk≤tm(4)sm≤tk≤tm+n對于8連通的情況n=1;而4連通的情況n=0。
如果Rk(y)與Rm(y-1)是連通的,則稱Rm(y-1)是Rk(y)的父游程,或稱Rk(y)是Rm(y-1)的子游程。
當(dāng)一個新的游程產(chǎn)生時,將它的起始點和終止點坐標(biāo)與上一行的游程相比較,判斷是否與上一行的游程相連通。兩個相鄰行(當(dāng)前行與上一行)游程之間的關(guān)系可以總結(jié)為三種類型,即一對一,一對多和多對一共三種類型,如圖5中的上圖、中圖、下圖所示。在一對一的類型中,當(dāng)前行有一個游程與上一行的一個游程相連通;在一對多的類型中,當(dāng)前行有多個游程與上一行的一個游程相連通;在多對一的類型中,當(dāng)前行有一個游程與上一行的多個游程相連通。
如果一個游程在上一行中沒有找到與之相連通的游程,那么這個游程就作為樹的根節(jié)點。這棵樹對應(yīng)一個新的連通元。如果一個游程在上一行中找到與之相連通的游程,這個游程就作為上一行中與之相連通的游程的子節(jié)點。在一對一類型中,當(dāng)前游程是上一行中相連游程的唯一子節(jié)點,而在一對多的類型中,上一行的對應(yīng)游程在當(dāng)前行有多個相連通的游程,所以有多個子節(jié)點。
如果多對一的類型出現(xiàn),也即上一行中有多個游程與當(dāng)前一個游程相連,那么必須做特別的處理。我們首先觀察上一行中與之相連通的所有游程是否屬于不同的樹。如果是,應(yīng)將這些不同的樹合并。本方法中,這種處理非常簡單,只需把包含最左邊節(jié)點的樹的根節(jié)點予以保留,而其他樹的根節(jié)點合并為保留的根節(jié)點的子節(jié)點?;谏鲜鎏幚?,每棵樹只對應(yīng)于圖像中的一個連通元。
為了更好的理解這個方法,在以下實施例中進行更詳細的描述。
實施例一。
現(xiàn)結(jié)合圖6、圖7,進行進一步的說明。圖6和圖7的內(nèi)容,應(yīng)該一一對照起來看。
當(dāng)掃描進行到第j行時,找到了游程A,這個游程是一棵新樹的根節(jié)點,如圖7中的(a)部分所示。
當(dāng)掃描到第j+1行時,找到了游程B和C,如圖7中的(b)部分所示,B與A連接,所以A是B的父節(jié)點,而C是另一棵新樹的根節(jié)點。繼續(xù)掃描至第j+2行時,如圖7中的(c)部分所示,找到游程D、E和F,D和E與B連接。因此,它們是B的子節(jié)點,F(xiàn)與C相連接,所以F是C的子節(jié)點。當(dāng)掃描至第j+3行時,找到游程G,因為E和F都與G連接,G作為最左邊游程E的子節(jié)點。此外,我們必須檢查E和F是否屬于同一棵樹。如果他們屬于不同的樹,那么必須把他們合并起來。在這里,A是E的根,C是F的根。因此,這兩棵樹需合并起來。其中一棵樹的根節(jié)點變?yōu)閮?nèi)部節(jié)點,成為另一棵樹的子節(jié)點。如圖7中的(d)部分所示,游程C為A的子節(jié)點。
當(dāng)整幅圖像掃描完畢后,所有的游程都記錄下來了,每棵樹對應(yīng)一個連通元。根據(jù)一棵樹,我們可以得到對應(yīng)的那個連通元的所有信息,如連通元外接矩形的寬、高和連通元的象素總數(shù)等。
對于一個連通元Cn,所有屬于Cn的游程的序號用集合Ψn表示。Cn的外接矩形的左上角坐標(biāo)和右下角坐標(biāo)分別用(xn(l),yn(t))和(xn(r),yn(b))表示,它們的坐標(biāo)值可由下面的計算得到xn(l)=mini∈Ψnsi]]>yn(t)=mini∈Ψnyi]]>xn(r)=maxi∈Ψnti]]>yn(b)=maxi∈Ψnyi]]>其中min表示求最小值,max表示求最大值。該連通元外接矩形的寬和高分別為寬xn(r)-xn(l)高yn(b)-yn(t)該連通元中的象素總數(shù)可以由下式直接計算得到Σi∈Ψn(ti-si+1)]]>
權(quán)利要求
1.一種圖像連通元的標(biāo)記方法,包括以下步驟;a.進行初始化工作,即把行標(biāo)j指向起始行、總游程數(shù)K置為0;b.掃描圖像第j行數(shù)據(jù),得到Zj個游程,并記錄為Rk(j)(k=K+1,K+2,…,K+Zj);c.檢查Zj是否為0,如果檢查結(jié)果為是,則跳過步驟d、e,進行步驟f;d.如果步驟c檢查結(jié)果為否,則記錄第j行的每個游程、并將它們標(biāo)記到對應(yīng)的樹上;e.總游程數(shù)量增加Zj個,即由原來的K個總游程數(shù)量變?yōu)镵+Zj個總游程數(shù)量;f.行標(biāo)號j增加1,即由原來的行標(biāo)號j變?yōu)樾袠?biāo)號j+1;g.檢查行標(biāo)號是否超出圖像高度范圍,如果檢查結(jié)果為否,則返回步驟b;h.如果步驟g檢查結(jié)果為是,則輸出游程和樹結(jié)構(gòu)信息。
2.根據(jù)權(quán)利要求1所述的一種圖像連通元的標(biāo)記方法,所述的記錄第j行的每個游程、并將它們標(biāo)記到對應(yīng)的樹上,其方法包括以下步驟;a.置當(dāng)前處理的游程標(biāo)號k為K+1;b.對游程Rk(j),尋找上一行與其相連接的游程;c.檢查是否存在步驟b中所述的相連接的情況,如果檢查結(jié)果為是,則先進行步驟d后、再跳過步驟e直接進行步驟f;如果檢查結(jié)果為否,則跳過步驟d后,直接進行步驟e;d.確定并記錄與游程Rk(j)相連的上一行的某一個游程為Rk(j)的父游程;e.生成一個新的樹,游程Rk(j)作為其根節(jié)點;f.將k增加1;g.檢查k是否大于K+Zj,如果檢查結(jié)果為否,則返回步驟b;h.如果步驟g檢查結(jié)果為是,則轉(zhuǎn)入其它相連的后續(xù)步驟。
3.根據(jù)權(quán)利要求2所述的一種圖像連通元的標(biāo)記方法,所述的確定并記錄與游程Rk(j)相連的上一行的某一個游程為Rk(j)的父游程,其方法包括以下步驟;a.上一行與游程Rk(j)相連的游程,按從左到右順序記為Rl(j-1)、Rl+1(j-1)、….、Rr(j-1);b.檢查上一行是否只有一個相連的游程,即檢查Rl(j-1)是否等于Rr(j-1);如果檢查結(jié)果為是,則跳過步驟c,直接進行步驟d;c.如果步驟b檢查結(jié)果為否,設(shè)置Rm(j-1)(m=l+1,…,r)的根節(jié)點的父游程為Rl(j-1)對應(yīng)的樹根;所述的Rm(j-1)(m=l+1,…,r),Rm(j-1)和Rl(j-1)屬于不同的樹;d.確定并記錄Rl(j-1)為Rk(j)的父游程;e.轉(zhuǎn)入其它相連的后續(xù)步驟。
全文摘要
本發(fā)明涉及圖像技術(shù)領(lǐng)域,公開了一種二值圖像的連通元目標(biāo)的快速標(biāo)記方法。步驟是a.進行初始化工作,即把行標(biāo)j指向起始行、總游程數(shù)K置為0;b.掃描圖像第j行數(shù)據(jù),得到Zj個游程,并記錄;c.檢查Zj是否為0,如果為是,則跳過步驟d、e,進行步驟f;d.如果步驟c檢查為否,則記錄第j行的每個游程、并標(biāo)記到對應(yīng)的樹上;e.總游程數(shù)量增加Zj個;f.行標(biāo)號j增加1;g.檢查行標(biāo)號是否超出圖像高度范圍,結(jié)果為否,則返回步驟b;h.如果步驟g檢查結(jié)果為是,則輸出游程和樹結(jié)構(gòu)信息。有益效果是由于只用一次掃描就能獲得數(shù)字圖像的外接矩形和象素面積等特性,大大地提高了連通元的標(biāo)記速度,所以對圖像處理速度能明顯的得到提高。
文檔編號G06K9/20GK101042734SQ200710039540
公開日2007年9月26日 申請日期2007年4月17日 優(yōu)先權(quán)日2007年4月17日
發(fā)明者呂岳 申請人:華東師范大學(xué)