亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種嵌入式復(fù)雜連通域搜索方法

文檔序號:6423301閱讀:162來源:國知局
專利名稱:一種嵌入式復(fù)雜連通域搜索方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機(jī)視覺技術(shù)和機(jī)器視覺技術(shù)領(lǐng)域,涉及一種嵌入式復(fù)雜連通域搜索方法,具體是涉及一種新的可在嵌入式系統(tǒng)中使用的復(fù)雜連通域非遞歸搜索方法。
背景技術(shù)
Blob檢測(也被稱為斑點(diǎn)檢測)是計算機(jī)視覺中的一種重要技術(shù),它為視覺系統(tǒng)提供圖像中斑點(diǎn)的拓?fù)浣Y(jié)構(gòu)、大小、形狀、位置和方向信息。Blob檢測已經(jīng)應(yīng)用于OCR識別、鈔票印刷中、電路板檢測、機(jī)器人定位、芯片管腳檢測、互動多媒體娛樂等許多計算視覺應(yīng)用領(lǐng)域。在Blob檢測中復(fù)雜連通域搜索是一個關(guān)鍵的處理流程,Blob檢測處理必須進(jìn)行連通域搜索,以便把圖像中所有孤立區(qū)域標(biāo)記出來,為后續(xù)判斷識別提供必須的信息。因此連通域搜索的速度和程序復(fù)雜性對于提高計算視覺系統(tǒng)的處理性能非常重要。
隨著微電子、傳感器和計算機(jī)科學(xué)的發(fā)展帶動了嵌入式電子設(shè)備的發(fā)展,嵌入式電子裝置的體積小,消除了軟硬件冗余,功耗低,使用靈活方便,應(yīng)用范圍廣。工業(yè)上和消費(fèi)電子的嵌入式電子產(chǎn)品對視覺處理軟件的實時性、速度和系統(tǒng)資源提出了更高的要求,因此必須發(fā)展適合于嵌入式平臺使用的視覺處理方法。當(dāng)前大容量的存儲器價格已經(jīng)非常低廉,因此在嵌入式平臺上可以使用空間換時間的連通域處理方法。目前常用的連通域搜索方法是使用遞歸或者鏈表實現(xiàn),占用操作系統(tǒng)資源較多,程序復(fù)雜程度大,并且標(biāo)記合并方法復(fù)雜,處理復(fù)雜物體連通域速度慢。文獻(xiàn)《一種新的圖像連通域快速標(biāo)號算法》(宋斌.一種新的圖像連通域快速標(biāo)號算法.電子測量技術(shù),2009. 9,32(9) :67-73)、《一種基于線的標(biāo)號傳播二值圖象連通體快速檢測方法》(張樹生.一種基于線的標(biāo)號傳播二值圖象連通體快速檢測方法.計算機(jī)研究與發(fā)展,1994,31(10) 51-54)中提出了針對簡單物體的快速連通域搜索方法,但對多級分叉的復(fù)雜物體連通域搜索效率比較低;專利《一種并行流水線實現(xiàn)的點(diǎn)目標(biāo)連通域?qū)崟r標(biāo)記與識別方法》(專利號200910090766. 2,申請人周平,劉越,王涌天)中提出了針對簡單小物體的快速連通域搜索方法,文獻(xiàn)《快速連通域分析算法及其實現(xiàn)》(孔斌.快速連通域分析算法及其實現(xiàn).模式識別與人工智能,2003,16 (I) :1102115.)中使用鏈?zhǔn)綑C(jī)制解決連通域搜索和計算問題,但在多個連通域搜索時,這兩種方法效率會顯著降低。

發(fā)明內(nèi)容
為解決現(xiàn)有的連通域搜索方法中占用操作系統(tǒng)資源較多,程序復(fù)雜程度大,并且標(biāo)記合并方法復(fù)雜,處理復(fù)雜物體連通域速度慢的不足,本發(fā)明提出了一種嵌入式復(fù)雜連通域搜索方法。本發(fā)明實現(xiàn)的連通域檢測方法具有一種非遞歸的、代碼量小、占用操作系統(tǒng)和處理器硬件資源少、掃描速度快的優(yōu)點(diǎn),可以很好的完成多級分叉的復(fù)雜連通域搜索,并且魯棒性能好,搜索速度幾乎不受物體形狀和數(shù)目的影響,適合于各種嵌入式硬件平臺使用。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種嵌入式復(fù)雜連通域搜索方法,包含如下步驟(I)讀入圖像數(shù)據(jù)和二值化;(2 )創(chuàng)建flagmap標(biāo)號圖和LTRegion信息表建立一個和待搜索區(qū)域尺寸一致的標(biāo)號圖二維數(shù)組flagmap以及一個連通域信息表LTRegion,標(biāo)號圖二維數(shù)組flagmap用于標(biāo)記不同的連通域,連通域信息表LTRegion用于存儲所有連通域的左右邊界端點(diǎn)位置、有效性標(biāo)志和包圍框信息,連通域信息表LTRegion的每個表項的類型是Region ;(3)自上而下,自左而右掃描一遍圖像,將搜索到的連通域左右端點(diǎn)信息存儲在連通域信息表LTRegion中,并在flagmap標(biāo)號圖中標(biāo)記①自下而上,自左而右掃描一遍圖像,通過行計數(shù)器i對掃描行計數(shù),每掃描完一行,行計數(shù)器加1,如果行計數(shù)器大于圖像行數(shù)退出行掃描處理;②在每一行掃描過程中,先讀出當(dāng)前像素點(diǎn)t、左方像素點(diǎn)td和與當(dāng)前像素點(diǎn)的左下方tdl,正下方像素tdc和右下方像素tdr的灰度值,通過有限狀態(tài)機(jī)控制掃描過程,整個行掃描過程包括初始化“init”,行掃描“l(fā)inescan”,合并“Uniting”,背景掃描“Backscan”四個過程,在掃描中通過判斷當(dāng)前像素td和下方相鄰像素的關(guān)系來完成連通域的創(chuàng)建、標(biāo)記和合并操作。③每個行掃描開始,狀態(tài)機(jī)先進(jìn)入“init”狀態(tài),如果灰度在當(dāng)前像素點(diǎn)處變?yōu)榘咨?,也就是td和t灰度差大于設(shè)定值thresh,創(chuàng)建一個新的連通域,編號為ID,將當(dāng)前點(diǎn)作為新連通域的左邊界點(diǎn),并存儲到連通域信息表左端點(diǎn)變量中,然后狀態(tài)機(jī)跳轉(zhuǎn)到“l(fā)inescan”狀態(tài);如果td和t灰度差小于設(shè)定值thresh,行計數(shù)器n加I狀態(tài)機(jī)跳轉(zhuǎn)到“Backscan”狀態(tài)。在“l(fā)inescan”狀態(tài),如果當(dāng)前像素t灰度大于thresh并且下方像素小于thresh,使用t的行坐標(biāo)更新區(qū)域ID的右邊界端點(diǎn)計數(shù)器,并在標(biāo)號圖像上相應(yīng)的像素位置標(biāo)記新的連通域序號ID,然后行計數(shù)器加I ;在“1111^(^11”狀態(tài)中,如果當(dāng)前像素t和正下方像素tdown都大于thresh,將當(dāng)前t下方相鄰位置的標(biāo)號圖中數(shù)值賦給變量IDl,也就是使用IDl保存當(dāng)前像素下方三個相鄰像素(tdownr, tdownc, townl)的連通域標(biāo)號。在合并狀態(tài)“Uniting”,如果當(dāng)前像素大于thresh,就將連通域IDl的右端點(diǎn)設(shè)置為當(dāng)前像素,如果當(dāng)前像素小于thresh,在標(biāo)號圖上將當(dāng)前像素及左面的所有白色像素位置設(shè)置為ID1,也就是將當(dāng)前行這些連續(xù)的白色像素合并到連通域IDl中,然后狀態(tài)切換到“Backscan” ;在“Backscan”中如果當(dāng)前像素是白色(灰度大于thresh),則狀態(tài)重新切換到“l(fā)inescan”,否責(zé)列計數(shù)器n加1,對圖像的每一行執(zhí)行②和③的掃描操作,直到掃描最后一行結(jié)束;(4)步驟(3)完成之后,根據(jù)記錄的左右端點(diǎn)坐標(biāo),計算已經(jīng)搜索到的連通域的包圍框,存儲在連通域信息表LTRegion中;(5)使用LTRegion信息表和LTRegion標(biāo)號圖合并多于的連通區(qū)域步驟(3) —遍掃描過程只能處理實心物體的連通搜索,對于有孔洞的連通域掃描后,還需要進(jìn)行合并運(yùn)算,對任意一個連通域K,先初始化一個變量combine為零,然后判斷連通域有效性標(biāo)志Regiondeleted是否等于零,如果Regiondeleted為零,則從連通域左端掃描到右端,在標(biāo)號圖flagmap上檢查連通域上邊界的每個像素上方相鄰像素是否屬于另外一個連通域,如果是屬于另外一個連通區(qū)域ObjectID,同時設(shè)置combine為I ;連通域從左到右掃描完后,再判斷combine是否等于1,如果等于1,則將連通區(qū)域K和連通區(qū)域ObjectID合并,更新連通區(qū)域ObjectID相應(yīng)的信息表項(左右和上下邊界),然后將標(biāo)號圖flagmap位置上所有標(biāo)號值為K的單元均修改為ObjectID,最后設(shè)置當(dāng)前連通區(qū)域K無效,即設(shè)置連通域信息表第K個單元的連通域有效性標(biāo)志Regiondeleted為I ;重復(fù)執(zhí)行本步驟2次,完成所有相鄰連通區(qū)域的合并; (6)結(jié)束,輸出結(jié)果。進(jìn)一步地,步驟(2)中,使用Region類數(shù)據(jù)結(jié)構(gòu)保存連通域信息,每個連通域信息存儲在一個Region變量中,其成員包含左右端點(diǎn)信息,標(biāo)號,有效性狀態(tài)變量,包圍框,旋轉(zhuǎn)方向,填充率和標(biāo)號圖指針等。進(jìn)一步地,步驟(5)中多余連通域的刪除操作均通過Region類的Regiondeleted狀態(tài)變量實現(xiàn),當(dāng)某個連通域因為合并或過濾操作被判斷為不合法(不符合要求)時將 Regiondeleted變量設(shè)為I,表示刪除,否則保持為0,表示保存。 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是(I)搜索速度快,對圖像使用一次掃描和一至兩次區(qū)域合并即可獲得圖像中的所有連通區(qū)域;(2)適用范圍廣,可以完成多孔洞和各種凹凸多邊形的連通域搜索,可以用于標(biāo)志識別,動作識別,特征點(diǎn)檢測,機(jī)器人弓I導(dǎo),字符識別等許多機(jī)器視覺領(lǐng)域;(3)占用處理器資源少,使用非遞歸的標(biāo)號圖和連通域信息表標(biāo)記編程策略,避免了大量的費(fèi)時的堆棧操作,適用于嵌入式系統(tǒng);(4)便于移植,使用標(biāo)準(zhǔn)C語言開發(fā)而成,程序和硬件平臺無關(guān),可以方便地用于ARM、DSP和x86等硬件平臺。


圖I是本發(fā)明的標(biāo)號圖flagmap示意圖。圖2是本發(fā)明的步驟流程圖。圖3是本發(fā)明的第一次掃描流程圖。圖4是本發(fā)明的Init狀態(tài)處理流程圖。圖5是本發(fā)明的Linescan狀態(tài)處理流程圖。圖6是本發(fā)明的Uniting狀態(tài)處理流程圖。圖7是本發(fā)明的Backscan狀態(tài)處理流程圖。圖8是本發(fā)明的相鄰連通域最后合并處理流程圖。圖9是使用本方法處理二值圖像的結(jié)果。圖10是使用Blob粒度分析方法定位電路板基準(zhǔn)點(diǎn)示例。圖11是使用Blob粒度分析方法定位具有復(fù)雜背景的一個零件中心。圖12是使用Blob粒度分析方法檢測零件孔加工缺陷。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明進(jìn)一步說明。參見圖I,本發(fā)明使用的使用的標(biāo)號圖flagmap用于標(biāo)記不同的連通域,圖中” I”和” 2”是兩個聚集在一起的連通區(qū)域,LTRegion表用于存儲所有連通域的左右邊界端點(diǎn)位置、有效性標(biāo)志和包圍框等信息。LTRegion表的每個表項的類型是Region,使用Region類數(shù)據(jù)結(jié)構(gòu)保存連通域信息,對連通域信息進(jìn)行封閉式管理,使得本方法便于平臺移植。每個連通域信息存儲在一個Region變量中,其成員包含左右端點(diǎn)信息,標(biāo)號,有效性狀態(tài)變量,包圍框,旋轉(zhuǎn)方向,填充率和標(biāo)號圖指針等,以便快速完成連通域搜索,面積過濾,填充率過濾,連通域方向和形狀特征計算等操作,為后續(xù)的快速Blob分析,提供必需的參數(shù)信息。Region類定義如下
typedef struct {
int IeftPOINT[N]; //區(qū)域每行左端點(diǎn) int rightPOINT[N] ; //區(qū)域每行右端點(diǎn)
int RegionNum; //區(qū)域數(shù)目,LTRegion
. RegionNum 有效區(qū)域數(shù)目
CRect Surround—Rect; //包圍框
int LTRegion^ID; // 區(qū)域 ID 號 LTRegion
LTRegion—ID'區(qū)
域總數(shù)目
' int Region_shape; Il 區(qū)域形狀代碼
int Regiondeleted; Il區(qū)域形狀有效性代碼,0,有效區(qū)域,I無
用區(qū)域
int Angle—IongAxis; //區(qū)域角度double Fill_rate;//填充率
int *f Iagmap; //區(qū)域標(biāo)志圖
RegionSurround RegionRect;//區(qū)域的最小包圍框
} Region;進(jìn)入第一遍掃描圖像前,首先對標(biāo)號圖和連通域信息表進(jìn)行初始化,將flagmap清零,設(shè)置LTRegion表中每個Region類型變量的左IeftPOINT [ ]和右端點(diǎn)值rightPOINT[.]為-I。參見圖2,本發(fā)明包含如下步驟
(I)讀入圖像數(shù)據(jù)和二值化;(2)創(chuàng)建flagmap標(biāo)號圖和LTRegion信息表(3)自上而下,自左而右掃描一遍圖像,將搜索到的連通域左右端點(diǎn)信息存儲在連通域信息表LTRegion中,并在flagmap上標(biāo)記。參見圖3第一次掃描流程圖,圖3中的C、D、E、F是四種狀態(tài)處理,i表示行坐標(biāo)變量,n表示列坐標(biāo)變量,Height表示圖像高度,Width表示圖像寬度,Lstate表示狀態(tài)變量,Img表示圖像矩陣數(shù)組,Img坐標(biāo)表示為(n, i),行掃描初始化中,t = Img (n,i) ;td = Img (n_l,i);tdownc = Img (n,i_l) ;tdownr = Img (n_l,i_l);t down I = Img (n+1, i_l);
計算下方像素值總和tdown = tdownr+tdownc+tdownl ;右下方像素索引pindexr = (m_l) *Width+n+l ;左下方像素索引pindexl = (m_l) *Width+n_l ;在圖3-7中,本步驟的實現(xiàn)方式如下①自下而上,自左而右掃描一遍圖像,通過行計數(shù)器i對掃描行計數(shù),每掃描完一行,行計數(shù)器加1,如果行計數(shù)器大于圖像行數(shù)退出行掃描處理;②在每一行掃描過程中,先讀出當(dāng)前像素點(diǎn)t、左方像素點(diǎn)td和與當(dāng)前像素點(diǎn)的左下方tdl,正下方像素tdc和右下方像素tdr的灰度值,通過有限狀態(tài)機(jī)控制掃描過程,整個行掃描過程包括初始化“init”,行掃描“l(fā)inescan”,合并“Uniting”,背景掃描“Backscan”四個過程,在掃描中通過判斷當(dāng)前像素td和下方相鄰像素的關(guān)系來完成連通域的創(chuàng)建、標(biāo)記和合并操作。③每個行掃描開始,狀態(tài)機(jī)先進(jìn)入“init”狀態(tài),如果灰度在當(dāng)前像素點(diǎn)處變?yōu)榘咨?,也就是td和t灰度差大于設(shè)定值thresh,創(chuàng)建一個新的連通域,編號為ID,將當(dāng)前點(diǎn)作為新連通域的左邊界點(diǎn),并存儲到連通域信息表左端點(diǎn)變量中,然后狀態(tài)機(jī)跳轉(zhuǎn)到“l(fā)inescan”狀態(tài);如果td和t灰度差小于設(shè)定值thresh,行計數(shù)器n加I狀態(tài)機(jī)跳轉(zhuǎn)到“Backscan”狀態(tài)。在“l(fā)inescan”狀態(tài),如果當(dāng)前像素t灰度大于thresh并且下方像素小于thresh,使用t的行坐標(biāo)更新區(qū)域ID的右邊界端點(diǎn)計數(shù)器,并在標(biāo)號圖像上相應(yīng)的像素位置標(biāo)記新的連通域序號ID,然后行計數(shù)器加I ;在“1111^(^11”狀態(tài)中,如果當(dāng)前像素t和正下方像素tdown都大于thresh,將當(dāng)前t下方相鄰位置的標(biāo)號圖中數(shù)值賦給變量IDl,也就是使用IDl保存當(dāng)前像素下方三個相鄰像素(tdownr, tdownc, townl)的連通域標(biāo)號。在合并狀態(tài)“Uniting”,如果當(dāng)前像素大于thresh,就將連通域IDl的右端點(diǎn)設(shè)置為當(dāng)前像素,如果當(dāng)前像素小于thresh,在標(biāo)號圖上將當(dāng)前像素及左面的所有白色像素位置設(shè)置為ID1,也就是將當(dāng)前行這些連續(xù)的白色像素合并到連通域IDl中,然后狀態(tài)切換到“Backscan” ;在“Backscan”中如果當(dāng)前像素是白色(灰度大于thresh),則狀態(tài)重新切換到“l(fā)inescan”,否責(zé)列計數(shù)器n加1,對圖像的每一行執(zhí)行②和③的掃描操作,直到掃描最后一行結(jié)束;(4)步驟(3)完成之后,根據(jù)記錄的左右端點(diǎn)坐標(biāo),計算已經(jīng)搜索到的連通域的包圍框,存儲在連通域信息表LTRegion中;(5)使用LTRegion信息表和LTRegion標(biāo)號圖合并多于的連通區(qū)域
參見圖8,步驟(3) —遍掃描過程只能處理實心物體的連通搜索,對于有孔洞的連通域掃描后,還需要進(jìn)行合并運(yùn)算,對任意一個連通域K,先初始化一個變量combine為零,然后判斷連通域有效性標(biāo)志Regiondeleted是否等于零,如果Regiondeleted為零,則從連通域左端掃描到右端,在標(biāo)號圖flagmap上檢查連通域上邊界的每個像素上方相鄰像素是否屬于另外一個連通域,如果是屬于另外一個連通區(qū)域ObjectID,同時設(shè)置combine為I ;連通域從左到右掃描完后,再判斷combine是否等于1,如果等于1,則將連通區(qū)域K和連通區(qū)域ObjectID合并,更新連通區(qū)域ObjectID相應(yīng)的信息表項(左右和上下邊界),然后將標(biāo)號圖flagmap位置上所有標(biāo)號值為K的單元均修改為ObjectID,最后設(shè)置當(dāng)前連通區(qū)域K無效,即設(shè)置連通域信息表第K個單元的連通域有效性標(biāo)志Regiondeleted為I ;重復(fù)執(zhí)行本步驟2次,完成所有相鄰連通區(qū)域的合并。本發(fā)明具體實施時,計算機(jī)從硬盤存儲器或外部采集設(shè)備獲得一幅圖像,將其按照BMP位圖格式放入計算機(jī)內(nèi)部隨機(jī)存儲器中RAM,如果這幅圖像是彩色圖像,先將其轉(zhuǎn)換位Sbits灰度圖像格式,然后對此圖像進(jìn)行二值化,對于Sbits灰度圖像則直接進(jìn)行二值化。二值化后最好進(jìn)行一次腐蝕和膨脹操作,以便消除圖像上的雜點(diǎn)。然后由應(yīng)用程序創(chuàng) 建如下大小和處理圖像相同的標(biāo)號圖flagmap和LTRegion連通域信息表。本發(fā)明的算法封裝在RegionSearch (void*proc_img, int Width, int Height,int*f lagmap, Region*LTRegions)函數(shù)中,proc_img 是圖像指針,Width 是圖像寬度,Height是圖像高度,flagmap是標(biāo)號圖指針,LTRegions參數(shù)返回搜索到的連通域信息。系統(tǒng)軟件在調(diào)用RegionSearch之前靜態(tài)分配好標(biāo)號圖flagmap和連通域信息表LTRegions的內(nèi)存。LTRegions表的條目總數(shù)是maxNum。使用RegionSearch函數(shù)時,向函數(shù)傳入處理圖像指針參數(shù)proc_img,標(biāo)號圖內(nèi)存指針flagmap和連通域指針LTRegions。當(dāng)函數(shù)執(zhí)行完后,flagmap將在圖像對應(yīng)像素坐標(biāo)位置存放連通域的唯一標(biāo)識號,LTRegions返回所有連通域的邊界、包圍框、有效性信息,它們被后續(xù)的Blob分析函數(shù)使用,以便用來計算填充率,物體大小和物體重心等特征。本發(fā)明的算法在CPU頻率2. 4GHz的x86平臺驗證運(yùn)行時,對于640*480圖像連通搜索時間為8ms,1280*1024大小圖像搜索時間為32ms。本算法在嵌入式DSP平臺運(yùn)行時,已經(jīng)被應(yīng)用于馬達(dá)零件在線檢測、工件尺寸視覺測量等視覺系統(tǒng)中,DSP的頻率是600MHz,圖10和圖11是使用本算法定位工件和特征圖片,圖象大小720*576,定位速度在小于0. I秒。本算法也應(yīng)用于ARM9嵌入式處理器內(nèi),運(yùn)行頻率400MHz,圖象大小640*480,物體識別速度0.2s左右。圖9是使用本方法處理二值圖像的結(jié)果,紅色包圍框用于標(biāo)識搜索到物體,檢測到物體后將物體顯示成綠色,可以看出,采用本方法,可以同時檢測到同一幅圖像里的所有的連通域,對于右上角復(fù)雜線條圖案也能檢測到。圖10是使用Blob粒度分析方法定位電路板基準(zhǔn)點(diǎn)示例,先使用圖像分割算法對圖10左方圖像進(jìn)行分割,然后使用本文方法搜索出來所有連通的白色區(qū)域,然后根據(jù)連通區(qū)域的面積和大小識別出來的基準(zhǔn)點(diǎn)的連通區(qū)域,最后算出基準(zhǔn)點(diǎn)區(qū)域的中心作為初始定位點(diǎn),圖10的右圖是Blob定位的結(jié)果。使用Blob定位電路板技術(shù),已經(jīng)應(yīng)用在電路板自動沖孔設(shè)備和電路板光學(xué)檢查儀器設(shè)備中。圖11是使用Blob粒度分析方法定位具有復(fù)雜背景的一個零件中心,先使用圖像分割算法對圖11左方圖像進(jìn)行分割,然后使用本文方法搜索出來所有連通的白色區(qū)域,然后根據(jù)連通區(qū)域的大小識別出來的零件區(qū)域,最后算出零件的中心,圖11的右圖是Blob定位的結(jié)果。圖12是使用Blob粒度分析方法檢測零件孔加工缺陷,先對圖12右方圖像進(jìn)行分割和反色,然后使用本文方法搜索出來孔區(qū)域,然后根據(jù)孔區(qū)域的面積是否符合要求來判斷產(chǎn)品質(zhì)量好壞,因為每次鉆孔,孔的形狀都不一致,并且零件角度是隨機(jī)的,所以采用固定模板匹配方法錯判率高,并且處理速度慢。·
權(quán)利要求
1.一種嵌入式復(fù)雜連通域搜索方法,其特征是包含如下步驟 (1)讀入圖像數(shù)據(jù)和二值化; (2)創(chuàng)建fIagmap標(biāo)號圖和LTRegion信息表 建立一個和待搜索區(qū)域尺寸一致的標(biāo)號圖二維數(shù)組fIagmap以及一個連通域信息表LTRegion,標(biāo)號圖二維數(shù)組flagmap用于標(biāo)記不同的連通域,連通域信息表LTRegion用于存儲所有連通域的左右邊界端點(diǎn)位置、有效性標(biāo)志和包圍框信息,連通域信息表LTRegion的每個表項的類型是Region ; (3)自上而下,自左而右掃描一遍圖像,將搜索到的連通域左右端點(diǎn)信息存儲在連通域信息表LTRegion中,并在flagmap標(biāo)號圖中標(biāo)記 ①自下而上,自左而右掃描一遍圖像,通過行計數(shù)器i對掃描行計數(shù),每掃描完一行,行計數(shù)器加1,如果行計數(shù)器大于圖像行數(shù)退出行掃描處理; ②在每一行掃描過程中,先讀出當(dāng)前像素點(diǎn)t、左方像素點(diǎn)td和與當(dāng)前像素點(diǎn)的左下方tdl,正下方像素tdc和右下方像素tdr的灰度值,通過有限狀態(tài)機(jī)控制掃描過程,整個行掃描過程包括初始化“init”,行掃描“l(fā)inescan”,合并“Uniting”,背景掃描“Backscan”四個過程,在掃描中通過判斷當(dāng)前像素td和下方相鄰像素的關(guān)系來完成連通域的創(chuàng)建、標(biāo)記和合并操作; ③每個行掃描開始,狀態(tài)機(jī)先進(jìn)入“init”狀態(tài),如果灰度在當(dāng)前像素點(diǎn)處變?yōu)榘咨簿褪莟d和t灰度差大于設(shè)定值thresh,創(chuàng)建一個新的連通域,編號為ID,將當(dāng)前點(diǎn)作為新連通域的左邊界點(diǎn),并存儲到連通域信息表左端點(diǎn)變量中,然后狀態(tài)機(jī)跳轉(zhuǎn)到“l(fā)inescan”狀態(tài);如果td和t灰度差小于設(shè)定值thresh,行計數(shù)器n加I狀態(tài)機(jī)跳轉(zhuǎn)到“Backscan”狀態(tài),在“l(fā)inescan”狀態(tài),如果當(dāng)前像素t灰度大于thresh并且下方像素小于thresh,使用t的行坐標(biāo)更新區(qū)域ID的右邊界端點(diǎn)計數(shù)器,并在標(biāo)號圖像上相應(yīng)的像素位置標(biāo)記新的連通域序號ID,然后行計數(shù)器加I ;在“1111680&11”狀態(tài)中,如果當(dāng)前像素t和正下方像素tdown都大于thresh,將當(dāng)前t下方相鄰位置的標(biāo)號圖中數(shù)值賦給變量ID1,也就是使用IDl保存當(dāng)前像素下方三個相鄰像素(tdownr, tdownc, townl)的連通域標(biāo)號,在合并狀態(tài)“Uniting”,如果當(dāng)前像素大于thresh,就將連通域IDl的右端點(diǎn)設(shè)置為當(dāng)前像素,如果當(dāng)前像素小于thresh,在標(biāo)號圖上將當(dāng)前像素及左面的所有白色像素位置設(shè)置為ID1,也就是將當(dāng)前行這些連續(xù)的白色像素合并到連通域IDl中,然后狀態(tài)切換到“Backscan”;在“Backscan”中如果當(dāng)前像素是白色(灰度大于thresh),則狀態(tài)重新切換到“l(fā)inescan”,否責(zé)列計數(shù)器n加1,對圖像的每一行執(zhí)行②和③的掃描操作,直到掃描最后一行結(jié)束; (4)步驟(3)完成之后,根據(jù)記錄的左右端點(diǎn)坐標(biāo),計算已經(jīng)搜索到的連通域的包圍框,存儲在連通域信息表LTRegion中; (5)使用LTRegion信息表和LTRegion標(biāo)號圖合并多于的連通區(qū)域 步驟(3) —遍掃描過程只能處理實心物體的連通搜索,對于有孔洞的連通域掃描后,還需要進(jìn)行合并運(yùn)算,對任意一個連通域K,先初始化一個變量combine為零,然后判斷連通域有效性標(biāo)志Regiondeleted是否等于零,如果Regiondeleted為零,則從連通域左端掃描到右端,在標(biāo)號圖flagmap上檢查連通域上邊界的每個像素上方相鄰像素是否屬于另外一個連通域,如果是屬于另外一個連通區(qū)域ObjectID,同時設(shè)置combine為I ;連通域從左到右掃描完后,再判斷combine是否等于1,如果等于1,則將連通區(qū)域K和連通區(qū)域ObjectID合并,更新連通區(qū)域ObjectID相應(yīng)的信息表項(左右和上下邊界),然后將標(biāo)號圖flagmap位置上所有標(biāo)號值為K的單元均修改為Ob jectID,最后設(shè)置當(dāng)前連通區(qū)域K無效,即設(shè)置連通域信息表第K個單元的連通域有效性標(biāo)志Regiondeleted為I ;重復(fù)執(zhí)行本步驟2次,完成所有相鄰連通區(qū)域的合并; (6)結(jié)束,輸出結(jié)果。
2.根據(jù)權(quán)利要求I所述的一種嵌入式復(fù)雜連通域搜索方法,其特征是步驟(2)中,使用Region類數(shù)據(jù)結(jié)構(gòu)保存連通域信息,每個連通域信息存儲在一個Region變量中,其成員包含左右端點(diǎn)信息,標(biāo)號,有效性狀態(tài)變量,包圍框,旋轉(zhuǎn)方向,填充率和標(biāo)號圖指針。
3.根據(jù)權(quán)利要求I所述的一種嵌入式復(fù)雜連通域搜索方法,其特征是步驟(5)中多余連通域的刪除操作均通過Region類的Regiondeleted狀態(tài)變量實現(xiàn),當(dāng)某個連通域因為合并或過濾操作被判斷為不合法(不符合要求)時將Regiondeleted變量設(shè)為1,表示刪除,否則保持為0,表示保存。
全文摘要
本發(fā)明涉及一種嵌入式復(fù)雜連通域搜索方法,本發(fā)明的步驟包括先讀入圖像數(shù)據(jù)和二值化,再創(chuàng)建flagmap標(biāo)號圖和LTRegion信息表,然后自上而下,自左而右掃描一遍圖像,將搜索到的連通域左右端點(diǎn)信息存儲在連通域信息表LTRegion中,并在flagmap上標(biāo)記,再使用LTRegion信息表和LTRegion標(biāo)號圖合并多于的連通區(qū)域,最后輸出結(jié)果。本發(fā)明實現(xiàn)的連通域檢測方法具有一種非遞歸的,代碼量小,占用操作系統(tǒng)和處理器硬件資源少,掃描速度快的優(yōu)點(diǎn),并且可以很好的完成多級分叉的復(fù)雜連通域搜索,并且魯棒性能好,搜索速度幾乎不受物體形狀和數(shù)目的影響,具有很好的應(yīng)用價值,適合于各種嵌入式硬件平臺使用。
文檔編號G06T7/00GK102760289SQ20111010925
公開日2012年10月31日 申請日期2011年4月29日 優(yōu)先權(quán)日2011年4月29日
發(fā)明者王曉東 申請人:王曉東
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1