本發(fā)明主要涉及車載智能輔助駕駛和工業(yè)視覺表面檢測領(lǐng)域,具體地說,涉及車載智能輔助駕駛視覺傳感器和工業(yè)視覺表面檢測相機(jī)硬件化的一種基于投影的圖像連通域單次掃描方法及裝置。
背景技術(shù):
在車載智能輔助駕駛和工業(yè)視覺表面檢測領(lǐng)域,都需要實(shí)現(xiàn)目標(biāo)物跟蹤檢測算法,而連通區(qū)域標(biāo)記CCL(Conneted Component Labeling)是該算法的核心技術(shù)。常見的CCL包括Two-Pass(兩次掃描)和One-Pass(單次掃描)的方法。
Two-Pass方法常見于基于PC進(jìn)行圖像處理的軟件實(shí)現(xiàn)算法中,對處理的實(shí)時性有一定的影響,具體是指先掃描一遍圖像找到連通區(qū)域并標(biāo)號,第二次掃描利用并查集算法合并不同的標(biāo)號區(qū)域。
One-Pass方法有“基于區(qū)域生長”的方法和“基于輪廓跟蹤”的方法。
“基于區(qū)域生長”的方法是指基于與掃描尺寸一致的標(biāo)記矩陣、緩存隊(duì)列以及標(biāo)記計(jì)數(shù)機(jī)制,掃描一遍圖像,基于八鄰域像素點(diǎn)按照連通長度進(jìn)行區(qū)域標(biāo)記,最終得到標(biāo)記矩陣和連通區(qū)域的個數(shù)。該方法只需要掃描一次圖像,但需要標(biāo)記矩陣,從而占用較大的存儲區(qū)域,且沒有很好的考慮線掃描方式獲取的連續(xù)圖像情況。
“基于輪廓跟蹤”是指從種子點(diǎn)p開始對內(nèi)輪廓和外輪廓進(jìn)行搜尋,對輪廓進(jìn)行跟蹤標(biāo)記,最終找到連通區(qū)域。該方法也只需要掃描一次圖像,但進(jìn)行輪廓搜尋過程中同樣需要占用較大的存儲空間,且采用硬件加速的方式比較困難。
由于算法處理實(shí)時性和有限存儲的要求,如何找到能有效采用硬件加速實(shí)現(xiàn)流水化連通區(qū)域算法,已成為本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于投影的圖像連通域單次掃描方法,只需要對圖像進(jìn)行單次掃描就能完成連通域的標(biāo)記和計(jì)算,將單個像素的所有處理步驟在一個時鐘周期內(nèi)完成,非常適合采用硬件環(huán)境的流水線實(shí)現(xiàn)。
本發(fā)明基于投影的圖像連通域單次掃描方法,包括如下步驟:
步驟一:初始化掃描第一行,將此行的連通段進(jìn)行標(biāo)號,輸出到標(biāo)號行緩存,并將標(biāo)號狀態(tài)數(shù)據(jù)輸入數(shù)據(jù)表隊(duì)列緩存;
步驟二:將上一行的標(biāo)號投影到當(dāng)前行,進(jìn)行連通段的連通判斷、分析和計(jì)算;
步驟三:在當(dāng)前像素點(diǎn)位置,進(jìn)行當(dāng)前標(biāo)號是否有效的第一判斷,以及上一行投影到當(dāng)前行的標(biāo)號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則返回步驟二;若第一判斷為無效,第二判斷為有效,則執(zhí)行步驟四;若第一判斷為有效,且第二判斷也為有效,則執(zhí)行步驟五;若第一判斷為有效,第二判斷為無效,則執(zhí)行步驟六;
步驟四:取出上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將其作為當(dāng)前標(biāo)號,并掃描下一個像素;
步驟五:取出當(dāng)前標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù)和上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將兩個標(biāo)號所代表的連通段進(jìn)行合并,將合并后的狀態(tài)數(shù)據(jù)存儲到當(dāng)前標(biāo)號指示的數(shù)據(jù)表隊(duì)列,并將上一行投影的標(biāo)號狀態(tài)設(shè)置為無效狀態(tài);
步驟六:判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,若結(jié)束則將當(dāng)前標(biāo)號置為無效,重新開始新的像素點(diǎn)掃描;若沒有結(jié)束則保持當(dāng)前標(biāo)號的狀態(tài)數(shù)據(jù),掃描下一個像素。
進(jìn)一步地,所述步驟二還包括:如果所述圖像的最后一行已經(jīng)被掃描,則結(jié)束流程;所述步驟四、步驟五和步驟六中,在結(jié)束當(dāng)前行的掃描處理后,返回步驟二。
進(jìn)一步地,所述步驟二具體包括:將上一行的標(biāo)號投影到當(dāng)前行,采用標(biāo)號行緩存存儲上一行的標(biāo)號投影,根據(jù)投影標(biāo)號從數(shù)據(jù)表隊(duì)列中讀出標(biāo)號數(shù)據(jù)狀態(tài)。
進(jìn)一步地,在所述步驟五和步驟六中,還包括:將設(shè)置為無效狀態(tài)的標(biāo)號,寫入用于循環(huán)利用的標(biāo)號空閑循環(huán)隊(duì)列中。
進(jìn)一步地,存儲標(biāo)號狀態(tài)數(shù)據(jù)的數(shù)據(jù)表隊(duì)列數(shù)據(jù),與標(biāo)號空閑循環(huán)隊(duì)列設(shè)置的大小一致。
進(jìn)一步地,所述數(shù)據(jù)表隊(duì)列根據(jù)標(biāo)號來存儲和讀取連通段的狀態(tài)數(shù)據(jù),根據(jù)圖像的分辨率大小和連通長度來預(yù)設(shè)隊(duì)列的長度。
進(jìn)一步地,在標(biāo)號循環(huán)隊(duì)列中,由空閑標(biāo)號的讀出指針和失效標(biāo)號的寫回指針控制整個隊(duì)列的運(yùn)轉(zhuǎn);當(dāng)連通段需要建立新的標(biāo)號時,從讀出指針讀出空閑標(biāo)號,而當(dāng)連通段連通狀態(tài)結(jié)束時或合并時,則將失效的標(biāo)號從寫回指針寫回到循環(huán)隊(duì)列中,用于循環(huán)利用。
進(jìn)一步地,在所述步驟六中,當(dāng)x方向連通長度達(dá)到設(shè)定要求時,當(dāng)前標(biāo)號的連通狀態(tài)設(shè)置為結(jié)束;當(dāng)x方向和y方向連通長度同時達(dá)到設(shè)定要求時,當(dāng)前標(biāo)號的連通狀態(tài)設(shè)置為結(jié)束,并根據(jù)當(dāng)前標(biāo)號取出數(shù)據(jù)表中連通區(qū)域狀態(tài)數(shù)據(jù)作為該連通段的最終狀態(tài)數(shù)據(jù)。
進(jìn)一步地,該方法還包括以下步驟:設(shè)定x方向和y方向的連通長度,控制連通域的連通范圍。
本發(fā)明的另一個目的,還提供一種基于投影的圖像連通域單次掃描裝置,該裝置包括:
初始化模塊,用于初始化掃描第一行,將此行的連通段進(jìn)行標(biāo)號,輸出到標(biāo)號行緩存,并將標(biāo)號狀態(tài)數(shù)據(jù)輸入數(shù)據(jù)表隊(duì)列緩存;
投影模塊,用于將上一行的標(biāo)號投影到當(dāng)前行,進(jìn)行連通段的連通判斷、分析和計(jì)算;
判斷模塊,用于在當(dāng)前像素點(diǎn)位置,進(jìn)行當(dāng)前標(biāo)號是否有效的第一判斷,以及上一行投影到當(dāng)前行的標(biāo)號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則觸發(fā)投影模塊;若第一判斷為無效,第二判斷為有效,則觸發(fā)第一執(zhí)行模塊;若第一判斷為有效,且第二判斷也為有效,則觸發(fā)第二執(zhí)行模塊;若第一判斷為有效,第二判斷為無效,則觸發(fā)第三執(zhí)行模塊;
第一執(zhí)行模塊,用于取出上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將其作為當(dāng)前標(biāo)號,并掃描下一個像素;
第二執(zhí)行模塊,用于取出當(dāng)前標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù)和上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將兩個標(biāo)號所代表的連通段進(jìn)行合并,將合并后的狀態(tài)數(shù)據(jù)存儲到當(dāng)前標(biāo)號指示的數(shù)據(jù)表隊(duì)列,并將上一行投影的標(biāo)號狀態(tài)設(shè)置為無效狀態(tài);
第三執(zhí)行模塊,用于判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,若結(jié)束則將當(dāng)前標(biāo)號置為無效,重新開始新的像素點(diǎn)掃描;若沒有結(jié)束則保持當(dāng)前標(biāo)號的狀態(tài)數(shù)據(jù),掃描下一個像素。
本發(fā)明基于投影的圖像連通域單次掃描方法及裝置,只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進(jìn)行隨機(jī)訪問;此外,本發(fā)明可通過設(shè)置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應(yīng)于4連通或8連通域(即連通長度為1的情況);而且,在硬件環(huán)境中,由于采用了投影技術(shù),本發(fā)明非常適合采用流水線方式實(shí)現(xiàn),達(dá)到實(shí)時處理的效果。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為發(fā)明實(shí)施例提供的單次掃描方法的標(biāo)號判定方法示意圖;
圖2為發(fā)明實(shí)施例提供的單次掃描連通方法的數(shù)據(jù)流圖;
圖3為發(fā)明一實(shí)施例基于投影的圖像連通域單次掃描方法的流程圖;
圖4為本發(fā)明另一實(shí)施例基于投影的圖像連通域單次掃描方法的流程圖;
圖5a和圖5b為發(fā)明實(shí)施例提供的掃描連通長度示意圖;
圖6a和圖6b為發(fā)明實(shí)施例提供的標(biāo)號循環(huán)隊(duì)列和數(shù)據(jù)表隊(duì)列示意圖;
圖7為發(fā)明實(shí)施例提供的掃描過程的示意圖;
圖8為本發(fā)明一實(shí)施例基于投影的圖像連通域單次掃描裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面對本發(fā)明的具體實(shí)施方式作進(jìn)一步的詳細(xì)說明。對于所屬技術(shù)領(lǐng)域的技術(shù)人員而言,從對本發(fā)明的詳細(xì)說明中,本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)將顯而易見。
本發(fā)明實(shí)現(xiàn)了一種可以在硬件環(huán)境中進(jìn)行流水線設(shè)計(jì)運(yùn)行的圖像連通域單次掃描方法及裝置。該方法及裝置采用基于投影的技術(shù),在每次掃描過程中將上一行的連通標(biāo)號投影到下一行,并分析標(biāo)號連通段的連通狀態(tài),從而不需要存儲整幅的圖像,大大節(jié)省了存儲空間,并且只需要進(jìn)行單次掃描就能將連通的區(qū)域合并,極大的提高算法在硬件中的運(yùn)行效率,并達(dá)到實(shí)時處理的效果。
首先,先介紹該方法的標(biāo)號判定方法和數(shù)據(jù)的流通過程。
圖1為本發(fā)明實(shí)施例提供的單次掃描方法的標(biāo)號判定方法示意圖。如圖1所示,箭頭表示掃描圖像的方向,I表示掃描到的當(dāng)前像素點(diǎn)位置,A表示即將掃描到的下一個像素點(diǎn)的上一行的位置,B表示當(dāng)前像素點(diǎn)的前一個像素點(diǎn)位置。在掃描過程中,需要根據(jù)前一個像素點(diǎn)位置標(biāo)號的狀態(tài)(此狀態(tài)作為當(dāng)前標(biāo)號狀態(tài)),當(dāng)前掃描像素點(diǎn)的狀態(tài),即將掃描到的下一個像素點(diǎn)的上一行的位置標(biāo)號的狀態(tài),這三個狀態(tài)同時進(jìn)行是否合并的判定。
圖2為本發(fā)明實(shí)施例提供的單次掃描連通方法的數(shù)據(jù)流圖。如圖2所示,I、B、A表示的含義與圖1一致,Q表示合并判定后的標(biāo)號輸出,Q輸出后需要進(jìn)行緩存,用于下一行的判定;合并控制通過判斷I、B、A的標(biāo)號和像素狀態(tài),進(jìn)行是否合并的判定,以及數(shù)據(jù)表隊(duì)列的緩存,而當(dāng)需要建立新的連通段時,則由標(biāo)號循環(huán)隊(duì)列提供空閑標(biāo)號,用于建立新連通段。
圖3為本發(fā)明一實(shí)施例基于投影的圖像連通域單次掃描方法的流程圖,包括如下步驟:
步驟S1:初始化掃描第一行,將此行的連通段進(jìn)行標(biāo)號,輸出到標(biāo)號行緩存,并將標(biāo)號狀態(tài)數(shù)據(jù)輸入數(shù)據(jù)表隊(duì)列緩存;
步驟S2:將上一行的標(biāo)號投影到當(dāng)前行,進(jìn)行連通段的連通判斷、分析和計(jì)算;
進(jìn)一步地,步驟S2還包括:如果所述圖像的最后一行已經(jīng)被掃描,則結(jié)束流程。此外,優(yōu)選步驟S2具體包括:將上一行的標(biāo)號投影到當(dāng)前行,采用標(biāo)號行緩存存儲上一行的標(biāo)號投影,根據(jù)投影標(biāo)號從數(shù)據(jù)表隊(duì)列中讀出標(biāo)號數(shù)據(jù)狀態(tài)。
步驟S3:在當(dāng)前像素點(diǎn)位置,進(jìn)行當(dāng)前標(biāo)號是否有效的第一判斷,以及上一行投影到當(dāng)前行的標(biāo)號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則返回步驟S2;若第一判斷為無效,第二判斷為有效,則執(zhí)行步驟S4;若第一判斷為有效,且第二判斷也為有效,則執(zhí)行步驟S5;若第一判斷為有效,第二判斷為無效,則執(zhí)行步驟S6;
步驟S4:取出上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將其作為當(dāng)前標(biāo)號,并掃描下一個像素;
步驟S5:取出當(dāng)前標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù)和上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將兩個標(biāo)號所代表的連通段進(jìn)行合并,將合并后的狀態(tài)數(shù)據(jù)存儲到當(dāng)前標(biāo)號指示的數(shù)據(jù)表隊(duì)列,并將上一行投影的標(biāo)號狀態(tài)設(shè)置為無效狀態(tài);
步驟S6:判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,若結(jié)束則將當(dāng)前標(biāo)號置為無效,重新開始新的像素點(diǎn)掃描;若沒有結(jié)束則保持當(dāng)前標(biāo)號的狀態(tài)數(shù)據(jù),掃描下一個像素。
前述步驟S4、步驟S5和步驟S6中,在結(jié)束當(dāng)前行的掃描處理后,返回步驟S2。
需要說明的是,前述S1-S6只是為了更清楚簡要地表達(dá)各步驟而標(biāo)號,但并不能據(jù)此限定各步驟的順序。在前述各步驟的順序調(diào)換時,同樣可以實(shí)現(xiàn)本發(fā)明的技術(shù)效果。
前述實(shí)施例只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進(jìn)行隨機(jī)訪問;而且,在硬件環(huán)境中,由于采用了投影技術(shù),該實(shí)施例非常適合采用流水線方式實(shí)現(xiàn),達(dá)到實(shí)時處理的效果。
此外,前述實(shí)施例還可以還包括以下步驟:設(shè)定x方向和y方向的連通長度,控制連通域的連通范圍。通過設(shè)置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應(yīng)于4連通或8連通域(即連通長度為1的情況)。
圖4為本發(fā)明另一實(shí)施例基于投影的圖像連通域單次掃描方法的流程圖,包括如下步驟:
步驟401,初始化掃描第一行,將此行的連通段進(jìn)行標(biāo)號,輸出到標(biāo)號行緩存,并將標(biāo)號狀態(tài)數(shù)據(jù)輸入數(shù)據(jù)表隊(duì)列緩存;
步驟402,將上一行的標(biāo)號投影到當(dāng)前行,從左到右進(jìn)行連通段的連通判斷、分析和計(jì)算;
步驟403,判斷在當(dāng)前像素點(diǎn)位置,當(dāng)前標(biāo)號是否有效,有效則執(zhí)行步驟405,否則執(zhí)行步驟404;
步驟404,在步驟403判定無效時,判斷在當(dāng)前像素點(diǎn)位置,上一行投影到當(dāng)前行的標(biāo)號是否有效,有效則執(zhí)行步驟406,否則直接掃描下一個像素點(diǎn);
步驟405,在步驟403判定有效時,判斷在當(dāng)前像素點(diǎn)位置,上一行投影到當(dāng)前行的標(biāo)號是否有效,有效則執(zhí)行步驟407,否則執(zhí)行步驟408;
步驟406,取出上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將其作為當(dāng)前標(biāo)號,并掃描下一個像素;
步驟407,取出當(dāng)前標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù)和上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將兩個標(biāo)號所代表的連通段進(jìn)行合并,將合并后的狀態(tài)數(shù)據(jù)存儲到當(dāng)前標(biāo)號指示的數(shù)據(jù)表隊(duì)列,并將上一行投影的標(biāo)號狀態(tài)設(shè)置為無效狀態(tài),掃描下一個像素;
步驟408,判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,若結(jié)束則將當(dāng)前標(biāo)號置為無效,重新開始新的像素點(diǎn)掃描;若沒有結(jié)束則保持當(dāng)前標(biāo)號的狀態(tài)數(shù)據(jù),掃描下一個像素;
在步驟406、步驟407和步驟408中,當(dāng)掃描到一行的最后一個像素,則返回步驟402,并且所述步驟402還包括:如果所述圖像的最后一行已經(jīng)被掃描,則結(jié)束流程。
圖4所示的實(shí)施例也可以通過設(shè)置x、y方向各自的連通長度,來處理不同連通長度的連通段,而現(xiàn)有技術(shù)中其他連通域掃描方法只能處理4連通域或8連通域的連通掃描,即x、y方向連通長度只能為1。
圖5a和圖5b為本發(fā)明實(shí)施例提供的掃描連通長度示意圖。如圖5a和圖5b所示,連通長度分為x方向和y方向,當(dāng)連通段屬于連通長度之內(nèi),則將兩個連通塊合并為一個連通段,當(dāng)連通段超出了連通長度,則分為不同的連通段進(jìn)行處理。在步驟S6或步驟408中,需要判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,而當(dāng)x方向連通長度達(dá)到設(shè)定要求時,當(dāng)前標(biāo)號的連通狀態(tài)設(shè)置為結(jié)束;當(dāng)x方向和y方向連通長度同時達(dá)到設(shè)定要求時,當(dāng)前標(biāo)號的連通狀態(tài)設(shè)置為結(jié)束,并根據(jù)當(dāng)前標(biāo)號取出數(shù)據(jù)表中連通區(qū)域狀態(tài)數(shù)據(jù)作為該連通段的最終狀態(tài)數(shù)據(jù),即圖2中的連通區(qū)域輸出。
本發(fā)明的方法需要一個用于存放標(biāo)號的循環(huán)隊(duì)列和存放連通段狀態(tài)數(shù)據(jù)的數(shù)據(jù)表隊(duì)列,如圖6a和圖6b所示,為發(fā)明實(shí)施例提供的標(biāo)號循環(huán)隊(duì)列和數(shù)據(jù)表隊(duì)列示意圖。在標(biāo)號循環(huán)隊(duì)列中,由空閑標(biāo)號的讀出指針和失效標(biāo)號的寫回指針控制整個隊(duì)列的運(yùn)轉(zhuǎn)。當(dāng)連通段需要建立新的標(biāo)號時,從讀出指針讀出空閑標(biāo)號,而當(dāng)連通段連通狀態(tài)結(jié)束時或合并時,則將失效的標(biāo)號從寫回指針寫回到循環(huán)隊(duì)列中,用于循環(huán)利用;數(shù)據(jù)表隊(duì)列則根據(jù)標(biāo)號來存儲和讀取連通段的狀態(tài)數(shù)據(jù)。標(biāo)號循環(huán)隊(duì)列大小與數(shù)據(jù)表隊(duì)列的大小一致,可根據(jù)圖像的分辨率大小和連通長度來設(shè)定,由于采用了循環(huán)隊(duì)列機(jī)制,且只存儲連通段的狀態(tài)數(shù)據(jù),因此需要的存儲空間不大。
圖7為發(fā)明實(shí)施例提供的掃描過程的示意圖,此示意說明設(shè)置的x、y連通長度都為4,具體的掃描過程如下:
掃描R1行:由于是第1行,因此沒有上一行的投影,只需考慮本行的連通段,在C3列的位置,建立新的標(biāo)號“1”,并在數(shù)據(jù)表隊(duì)列的相應(yīng)位置記錄下當(dāng)前連通段的狀態(tài)數(shù)據(jù);在C4列時,由于當(dāng)前標(biāo)號已經(jīng)有效,則直接更新當(dāng)前標(biāo)號的連通段狀態(tài)數(shù)據(jù);掃描完R1行后,將此行的標(biāo)號投影到下一行。
掃描R2行:由于上一個的標(biāo)號已經(jīng)投影到了本行,所以在C2列的位置,需要判斷上一行投影到當(dāng)前行的標(biāo)號是否有效,在有效的情況下,將該標(biāo)號的連通段的狀態(tài)數(shù)據(jù)讀出,并更新,然后寫回到數(shù)據(jù)表隊(duì)列;在該行的掃描中,C3、C4、C5列的數(shù)據(jù)都會更新到標(biāo)號“1”的連通段狀態(tài)數(shù)據(jù)中,而在C12列的位置,因已超出標(biāo)號“1”的連通段的連通長度,所以新建標(biāo)號“2”的連通段。
掃描R3、R4行:此兩行都根據(jù)上一行的標(biāo)號投影進(jìn)行連通判斷和狀態(tài)數(shù)據(jù)更新,在第R4行結(jié)束后,形成了標(biāo)號“1”和標(biāo)號“2”的兩個連通段。
掃描R5行:首先該行的掃描與上面描述的類似,在第C9列時,因?yàn)檫B通長度還在連通范圍之內(nèi),因此將C9列的數(shù)據(jù)更新到標(biāo)號“1”的連通段;在C10列的位置,此時出現(xiàn)了當(dāng)前標(biāo)號“1”的連通段有效,而上一行投影到此行的標(biāo)號“2”的連通段也有效的情況,因此需要將兩個連通段合并,將連通狀態(tài)數(shù)據(jù)更新,合并到標(biāo)號“1”的連通段中,存儲到數(shù)據(jù)表隊(duì)列,并設(shè)置標(biāo)號“2”失效,寫回到標(biāo)號循環(huán)隊(duì)列中。
掃描R6行:該行的掃描中,由上一行投影到該行的標(biāo)號就變?yōu)楹喜⒑蟮臉?biāo)號“1”的連通段。而在后續(xù)行的掃描中,當(dāng)x方向和y方向連通長度同時達(dá)到設(shè)定要求時,標(biāo)號“1”的連通狀態(tài)結(jié)束,可輸出該連通段的最終狀態(tài)數(shù)據(jù)。
圖8為本發(fā)明一實(shí)施例基于投影的圖像連通域單次掃描裝置的結(jié)構(gòu)框圖,該裝置包括:
初始化模塊100,用于初始化掃描第一行,將此行的連通段進(jìn)行標(biāo)號,輸出到標(biāo)號行緩存,并將標(biāo)號狀態(tài)數(shù)據(jù)輸入數(shù)據(jù)表隊(duì)列緩存;
投影模塊200,用于將上一行的標(biāo)號投影到當(dāng)前行,進(jìn)行連通段的連通判斷、分析和計(jì)算;
判斷模塊300,用于在當(dāng)前像素點(diǎn)位置,進(jìn)行當(dāng)前標(biāo)號是否有效的第一判斷,以及上一行投影到當(dāng)前行的標(biāo)號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則觸發(fā)投影模塊;若第一判斷為無效,第二判斷為有效,則觸發(fā)第一執(zhí)行模塊;若第一判斷為有效,且第二判斷也為有效,則觸發(fā)第二執(zhí)行模塊;若第一判斷為有效,第二判斷為無效,則觸發(fā)第三執(zhí)行模塊;
第一執(zhí)行模塊400,用于取出上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將其作為當(dāng)前標(biāo)號,并掃描下一個像素;
第二執(zhí)行模塊500,用于取出當(dāng)前標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù)和上一行投影到當(dāng)前行標(biāo)號的數(shù)據(jù)表隊(duì)列數(shù)據(jù),將兩個標(biāo)號所代表的連通段進(jìn)行合并,將合并后的狀態(tài)數(shù)據(jù)存儲到當(dāng)前標(biāo)號指示的數(shù)據(jù)表隊(duì)列,并將上一行投影的標(biāo)號狀態(tài)設(shè)置為無效狀態(tài);
第三執(zhí)行模塊600,用于判斷當(dāng)前標(biāo)號的連通狀態(tài)是否結(jié)束,若結(jié)束則將當(dāng)前標(biāo)號置為無效,重新開始新的像素點(diǎn)掃描;若沒有結(jié)束則保持當(dāng)前標(biāo)號的狀態(tài)數(shù)據(jù),掃描下一個像素。
前述實(shí)施例只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進(jìn)行隨機(jī)訪問;而且,在硬件環(huán)境中,由于采用了投影技術(shù),該實(shí)施例非常適合采用流水線方式實(shí)現(xiàn),達(dá)到實(shí)時處理的效果。
此外,前述實(shí)施例還可以包括設(shè)定模塊,用于設(shè)定x方向和y方向的連通長度,控制連通域的連通范圍。通過設(shè)置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應(yīng)于4連通或8連通域(即連通長度為1的情況)。
還應(yīng)當(dāng)理解,本發(fā)明雖然已通過以上實(shí)施例進(jìn)行了清楚說明,然而在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,所屬技術(shù)領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種變化和修正,均屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。