麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

基于投影的圖像連通域單次掃描方法及裝置與流程

文檔序號:11139104閱讀:345來源:國知局
基于投影的圖像連通域單次掃描方法及裝置與制造工藝

本發明主要涉及車載智能輔助駕駛和工業視覺表面檢測領域,具體地說,涉及車載智能輔助駕駛視覺傳感器和工業視覺表面檢測相機硬件化的一種基于投影的圖像連通域單次掃描方法及裝置。



背景技術:

在車載智能輔助駕駛和工業視覺表面檢測領域,都需要實現目標物跟蹤檢測算法,而連通區域標記CCL(Conneted Component Labeling)是該算法的核心技術。常見的CCL包括Two-Pass(兩次掃描)和One-Pass(單次掃描)的方法。

Two-Pass方法常見于基于PC進行圖像處理的軟件實現算法中,對處理的實時性有一定的影響,具體是指先掃描一遍圖像找到連通區域并標號,第二次掃描利用并查集算法合并不同的標號區域。

One-Pass方法有“基于區域生長”的方法和“基于輪廓跟蹤”的方法。

“基于區域生長”的方法是指基于與掃描尺寸一致的標記矩陣、緩存隊列以及標記計數機制,掃描一遍圖像,基于八鄰域像素點按照連通長度進行區域標記,最終得到標記矩陣和連通區域的個數。該方法只需要掃描一次圖像,但需要標記矩陣,從而占用較大的存儲區域,且沒有很好的考慮線掃描方式獲取的連續圖像情況。

“基于輪廓跟蹤”是指從種子點p開始對內輪廓和外輪廓進行搜尋,對輪廓進行跟蹤標記,最終找到連通區域。該方法也只需要掃描一次圖像,但進行輪廓搜尋過程中同樣需要占用較大的存儲空間,且采用硬件加速的方式比較困難。

由于算法處理實時性和有限存儲的要求,如何找到能有效采用硬件加速實現流水化連通區域算法,已成為本領域技術人員亟待解決的技術問題。



技術實現要素:

有鑒于此,本發明的目的在于提供一種基于投影的圖像連通域單次掃描方法,只需要對圖像進行單次掃描就能完成連通域的標記和計算,將單個像素的所有處理步驟在一個時鐘周期內完成,非常適合采用硬件環境的流水線實現。

本發明基于投影的圖像連通域單次掃描方法,包括如下步驟:

步驟一:初始化掃描第一行,將此行的連通段進行標號,輸出到標號行緩存,并將標號狀態數據輸入數據表隊列緩存;

步驟二:將上一行的標號投影到當前行,進行連通段的連通判斷、分析和計算;

步驟三:在當前像素點位置,進行當前標號是否有效的第一判斷,以及上一行投影到當前行的標號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則返回步驟二;若第一判斷為無效,第二判斷為有效,則執行步驟四;若第一判斷為有效,且第二判斷也為有效,則執行步驟五;若第一判斷為有效,第二判斷為無效,則執行步驟六;

步驟四:取出上一行投影到當前行標號的數據表隊列數據,將其作為當前標號,并掃描下一個像素;

步驟五:取出當前標號的數據表隊列數據和上一行投影到當前行標號的數據表隊列數據,將兩個標號所代表的連通段進行合并,將合并后的狀態數據存儲到當前標號指示的數據表隊列,并將上一行投影的標號狀態設置為無效狀態;

步驟六:判斷當前標號的連通狀態是否結束,若結束則將當前標號置為無效,重新開始新的像素點掃描;若沒有結束則保持當前標號的狀態數據,掃描下一個像素。

進一步地,所述步驟二還包括:如果所述圖像的最后一行已經被掃描,則結束流程;所述步驟四、步驟五和步驟六中,在結束當前行的掃描處理后,返回步驟二。

進一步地,所述步驟二具體包括:將上一行的標號投影到當前行,采用標號行緩存存儲上一行的標號投影,根據投影標號從數據表隊列中讀出標號數據狀態。

進一步地,在所述步驟五和步驟六中,還包括:將設置為無效狀態的標號,寫入用于循環利用的標號空閑循環隊列中。

進一步地,存儲標號狀態數據的數據表隊列數據,與標號空閑循環隊列設置的大小一致。

進一步地,所述數據表隊列根據標號來存儲和讀取連通段的狀態數據,根據圖像的分辨率大小和連通長度來預設隊列的長度。

進一步地,在標號循環隊列中,由空閑標號的讀出指針和失效標號的寫回指針控制整個隊列的運轉;當連通段需要建立新的標號時,從讀出指針讀出空閑標號,而當連通段連通狀態結束時或合并時,則將失效的標號從寫回指針寫回到循環隊列中,用于循環利用。

進一步地,在所述步驟六中,當x方向連通長度達到設定要求時,當前標號的連通狀態設置為結束;當x方向和y方向連通長度同時達到設定要求時,當前標號的連通狀態設置為結束,并根據當前標號取出數據表中連通區域狀態數據作為該連通段的最終狀態數據。

進一步地,該方法還包括以下步驟:設定x方向和y方向的連通長度,控制連通域的連通范圍。

本發明的另一個目的,還提供一種基于投影的圖像連通域單次掃描裝置,該裝置包括:

初始化模塊,用于初始化掃描第一行,將此行的連通段進行標號,輸出到標號行緩存,并將標號狀態數據輸入數據表隊列緩存;

投影模塊,用于將上一行的標號投影到當前行,進行連通段的連通判斷、分析和計算;

判斷模塊,用于在當前像素點位置,進行當前標號是否有效的第一判斷,以及上一行投影到當前行的標號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則觸發投影模塊;若第一判斷為無效,第二判斷為有效,則觸發第一執行模塊;若第一判斷為有效,且第二判斷也為有效,則觸發第二執行模塊;若第一判斷為有效,第二判斷為無效,則觸發第三執行模塊;

第一執行模塊,用于取出上一行投影到當前行標號的數據表隊列數據,將其作為當前標號,并掃描下一個像素;

第二執行模塊,用于取出當前標號的數據表隊列數據和上一行投影到當前行標號的數據表隊列數據,將兩個標號所代表的連通段進行合并,將合并后的狀態數據存儲到當前標號指示的數據表隊列,并將上一行投影的標號狀態設置為無效狀態;

第三執行模塊,用于判斷當前標號的連通狀態是否結束,若結束則將當前標號置為無效,重新開始新的像素點掃描;若沒有結束則保持當前標號的狀態數據,掃描下一個像素。

本發明基于投影的圖像連通域單次掃描方法及裝置,只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進行隨機訪問;此外,本發明可通過設置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應于4連通或8連通域(即連通長度為1的情況);而且,在硬件環境中,由于采用了投影技術,本發明非常適合采用流水線方式實現,達到實時處理的效果。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為發明實施例提供的單次掃描方法的標號判定方法示意圖;

圖2為發明實施例提供的單次掃描連通方法的數據流圖;

圖3為發明一實施例基于投影的圖像連通域單次掃描方法的流程圖;

圖4為本發明另一實施例基于投影的圖像連通域單次掃描方法的流程圖;

圖5a和圖5b為發明實施例提供的掃描連通長度示意圖;

圖6a和圖6b為發明實施例提供的標號循環隊列和數據表隊列示意圖;

圖7為發明實施例提供的掃描過程的示意圖;

圖8為本發明一實施例基于投影的圖像連通域單次掃描裝置的結構框圖。

具體實施方式

下面對本發明的具體實施方式作進一步的詳細說明。對于所屬技術領域的技術人員而言,從對本發明的詳細說明中,本發明的上述和其他目的、特征和優點將顯而易見。

本發明實現了一種可以在硬件環境中進行流水線設計運行的圖像連通域單次掃描方法及裝置。該方法及裝置采用基于投影的技術,在每次掃描過程中將上一行的連通標號投影到下一行,并分析標號連通段的連通狀態,從而不需要存儲整幅的圖像,大大節省了存儲空間,并且只需要進行單次掃描就能將連通的區域合并,極大的提高算法在硬件中的運行效率,并達到實時處理的效果。

首先,先介紹該方法的標號判定方法和數據的流通過程。

圖1為本發明實施例提供的單次掃描方法的標號判定方法示意圖。如圖1所示,箭頭表示掃描圖像的方向,I表示掃描到的當前像素點位置,A表示即將掃描到的下一個像素點的上一行的位置,B表示當前像素點的前一個像素點位置。在掃描過程中,需要根據前一個像素點位置標號的狀態(此狀態作為當前標號狀態),當前掃描像素點的狀態,即將掃描到的下一個像素點的上一行的位置標號的狀態,這三個狀態同時進行是否合并的判定。

圖2為本發明實施例提供的單次掃描連通方法的數據流圖。如圖2所示,I、B、A表示的含義與圖1一致,Q表示合并判定后的標號輸出,Q輸出后需要進行緩存,用于下一行的判定;合并控制通過判斷I、B、A的標號和像素狀態,進行是否合并的判定,以及數據表隊列的緩存,而當需要建立新的連通段時,則由標號循環隊列提供空閑標號,用于建立新連通段。

圖3為本發明一實施例基于投影的圖像連通域單次掃描方法的流程圖,包括如下步驟:

步驟S1:初始化掃描第一行,將此行的連通段進行標號,輸出到標號行緩存,并將標號狀態數據輸入數據表隊列緩存;

步驟S2:將上一行的標號投影到當前行,進行連通段的連通判斷、分析和計算;

進一步地,步驟S2還包括:如果所述圖像的最后一行已經被掃描,則結束流程。此外,優選步驟S2具體包括:將上一行的標號投影到當前行,采用標號行緩存存儲上一行的標號投影,根據投影標號從數據表隊列中讀出標號數據狀態。

步驟S3:在當前像素點位置,進行當前標號是否有效的第一判斷,以及上一行投影到當前行的標號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則返回步驟S2;若第一判斷為無效,第二判斷為有效,則執行步驟S4;若第一判斷為有效,且第二判斷也為有效,則執行步驟S5;若第一判斷為有效,第二判斷為無效,則執行步驟S6;

步驟S4:取出上一行投影到當前行標號的數據表隊列數據,將其作為當前標號,并掃描下一個像素;

步驟S5:取出當前標號的數據表隊列數據和上一行投影到當前行標號的數據表隊列數據,將兩個標號所代表的連通段進行合并,將合并后的狀態數據存儲到當前標號指示的數據表隊列,并將上一行投影的標號狀態設置為無效狀態;

步驟S6:判斷當前標號的連通狀態是否結束,若結束則將當前標號置為無效,重新開始新的像素點掃描;若沒有結束則保持當前標號的狀態數據,掃描下一個像素。

前述步驟S4、步驟S5和步驟S6中,在結束當前行的掃描處理后,返回步驟S2。

需要說明的是,前述S1-S6只是為了更清楚簡要地表達各步驟而標號,但并不能據此限定各步驟的順序。在前述各步驟的順序調換時,同樣可以實現本發明的技術效果。

前述實施例只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進行隨機訪問;而且,在硬件環境中,由于采用了投影技術,該實施例非常適合采用流水線方式實現,達到實時處理的效果。

此外,前述實施例還可以還包括以下步驟:設定x方向和y方向的連通長度,控制連通域的連通范圍。通過設置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應于4連通或8連通域(即連通長度為1的情況)。

圖4為本發明另一實施例基于投影的圖像連通域單次掃描方法的流程圖,包括如下步驟:

步驟401,初始化掃描第一行,將此行的連通段進行標號,輸出到標號行緩存,并將標號狀態數據輸入數據表隊列緩存;

步驟402,將上一行的標號投影到當前行,從左到右進行連通段的連通判斷、分析和計算;

步驟403,判斷在當前像素點位置,當前標號是否有效,有效則執行步驟405,否則執行步驟404;

步驟404,在步驟403判定無效時,判斷在當前像素點位置,上一行投影到當前行的標號是否有效,有效則執行步驟406,否則直接掃描下一個像素點;

步驟405,在步驟403判定有效時,判斷在當前像素點位置,上一行投影到當前行的標號是否有效,有效則執行步驟407,否則執行步驟408;

步驟406,取出上一行投影到當前行標號的數據表隊列數據,將其作為當前標號,并掃描下一個像素;

步驟407,取出當前標號的數據表隊列數據和上一行投影到當前行標號的數據表隊列數據,將兩個標號所代表的連通段進行合并,將合并后的狀態數據存儲到當前標號指示的數據表隊列,并將上一行投影的標號狀態設置為無效狀態,掃描下一個像素;

步驟408,判斷當前標號的連通狀態是否結束,若結束則將當前標號置為無效,重新開始新的像素點掃描;若沒有結束則保持當前標號的狀態數據,掃描下一個像素;

在步驟406、步驟407和步驟408中,當掃描到一行的最后一個像素,則返回步驟402,并且所述步驟402還包括:如果所述圖像的最后一行已經被掃描,則結束流程。

圖4所示的實施例也可以通過設置x、y方向各自的連通長度,來處理不同連通長度的連通段,而現有技術中其他連通域掃描方法只能處理4連通域或8連通域的連通掃描,即x、y方向連通長度只能為1。

圖5a和圖5b為本發明實施例提供的掃描連通長度示意圖。如圖5a和圖5b所示,連通長度分為x方向和y方向,當連通段屬于連通長度之內,則將兩個連通塊合并為一個連通段,當連通段超出了連通長度,則分為不同的連通段進行處理。在步驟S6或步驟408中,需要判斷當前標號的連通狀態是否結束,而當x方向連通長度達到設定要求時,當前標號的連通狀態設置為結束;當x方向和y方向連通長度同時達到設定要求時,當前標號的連通狀態設置為結束,并根據當前標號取出數據表中連通區域狀態數據作為該連通段的最終狀態數據,即圖2中的連通區域輸出。

本發明的方法需要一個用于存放標號的循環隊列和存放連通段狀態數據的數據表隊列,如圖6a和圖6b所示,為發明實施例提供的標號循環隊列和數據表隊列示意圖。在標號循環隊列中,由空閑標號的讀出指針和失效標號的寫回指針控制整個隊列的運轉。當連通段需要建立新的標號時,從讀出指針讀出空閑標號,而當連通段連通狀態結束時或合并時,則將失效的標號從寫回指針寫回到循環隊列中,用于循環利用;數據表隊列則根據標號來存儲和讀取連通段的狀態數據。標號循環隊列大小與數據表隊列的大小一致,可根據圖像的分辨率大小和連通長度來設定,由于采用了循環隊列機制,且只存儲連通段的狀態數據,因此需要的存儲空間不大。

圖7為發明實施例提供的掃描過程的示意圖,此示意說明設置的x、y連通長度都為4,具體的掃描過程如下:

掃描R1行:由于是第1行,因此沒有上一行的投影,只需考慮本行的連通段,在C3列的位置,建立新的標號“1”,并在數據表隊列的相應位置記錄下當前連通段的狀態數據;在C4列時,由于當前標號已經有效,則直接更新當前標號的連通段狀態數據;掃描完R1行后,將此行的標號投影到下一行。

掃描R2行:由于上一個的標號已經投影到了本行,所以在C2列的位置,需要判斷上一行投影到當前行的標號是否有效,在有效的情況下,將該標號的連通段的狀態數據讀出,并更新,然后寫回到數據表隊列;在該行的掃描中,C3、C4、C5列的數據都會更新到標號“1”的連通段狀態數據中,而在C12列的位置,因已超出標號“1”的連通段的連通長度,所以新建標號“2”的連通段。

掃描R3、R4行:此兩行都根據上一行的標號投影進行連通判斷和狀態數據更新,在第R4行結束后,形成了標號“1”和標號“2”的兩個連通段。

掃描R5行:首先該行的掃描與上面描述的類似,在第C9列時,因為連通長度還在連通范圍之內,因此將C9列的數據更新到標號“1”的連通段;在C10列的位置,此時出現了當前標號“1”的連通段有效,而上一行投影到此行的標號“2”的連通段也有效的情況,因此需要將兩個連通段合并,將連通狀態數據更新,合并到標號“1”的連通段中,存儲到數據表隊列,并設置標號“2”失效,寫回到標號循環隊列中。

掃描R6行:該行的掃描中,由上一行投影到該行的標號就變為合并后的標號“1”的連通段。而在后續行的掃描中,當x方向和y方向連通長度同時達到設定要求時,標號“1”的連通狀態結束,可輸出該連通段的最終狀態數據。

圖8為本發明一實施例基于投影的圖像連通域單次掃描裝置的結構框圖,該裝置包括:

初始化模塊100,用于初始化掃描第一行,將此行的連通段進行標號,輸出到標號行緩存,并將標號狀態數據輸入數據表隊列緩存;

投影模塊200,用于將上一行的標號投影到當前行,進行連通段的連通判斷、分析和計算;

判斷模塊300,用于在當前像素點位置,進行當前標號是否有效的第一判斷,以及上一行投影到當前行的標號是否有效的第二判斷;若第一判斷為無效,且第二判斷也為無效,則觸發投影模塊;若第一判斷為無效,第二判斷為有效,則觸發第一執行模塊;若第一判斷為有效,且第二判斷也為有效,則觸發第二執行模塊;若第一判斷為有效,第二判斷為無效,則觸發第三執行模塊;

第一執行模塊400,用于取出上一行投影到當前行標號的數據表隊列數據,將其作為當前標號,并掃描下一個像素;

第二執行模塊500,用于取出當前標號的數據表隊列數據和上一行投影到當前行標號的數據表隊列數據,將兩個標號所代表的連通段進行合并,將合并后的狀態數據存儲到當前標號指示的數據表隊列,并將上一行投影的標號狀態設置為無效狀態;

第三執行模塊600,用于判斷當前標號的連通狀態是否結束,若結束則將當前標號置為無效,重新開始新的像素點掃描;若沒有結束則保持當前標號的狀態數據,掃描下一個像素。

前述實施例只需要單次掃描就能夠完成圖像的連通處理,并且不需要存儲完整的圖像,也不需要對圖像進行隨機訪問;而且,在硬件環境中,由于采用了投影技術,該實施例非常適合采用流水線方式實現,達到實時處理的效果。

此外,前述實施例還可以包括設定模塊,用于設定x方向和y方向的連通長度,控制連通域的連通范圍。通過設置x、y方向的連通長度,控制連通域的連通范圍,而不僅僅只適應于4連通或8連通域(即連通長度為1的情況)。

還應當理解,本發明雖然已通過以上實施例進行了清楚說明,然而在不背離本發明精神及其實質的情況下,所屬技術領域的技術人員當可根據本發明作出各種變化和修正,均屬于本發明的權利要求的保護范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 项城市| 南陵县| 渭源县| 伊宁县| 宿州市| 马鞍山市| 师宗县| 金山区| 綦江县| 财经| 辛集市| 高清| 湖州市| 罗江县| 左权县| 绥德县| 灯塔市| 林甸县| 阿拉善右旗| 保定市| 吴堡县| 宣城市| 金昌市| 宝丰县| 泽库县| 南安市| 稷山县| 昌乐县| 鹿泉市| 石屏县| 申扎县| 宣汉县| 新巴尔虎左旗| 巩留县| 公主岭市| 宁陵县| 祁阳县| 垫江县| 南召县| 突泉县| 博客|