本發(fā)明涉及圖像模板匹配技術領域,特別涉及一種基于歸一化相關系數(shù)的模板匹配高速并行實現(xiàn)方法和裝置。
背景技術:模板匹配主要用來定位圖像中的一個目標,它廣泛應用于圖像對齊、邊緣檢測、雙目立體視覺等圖像處理領域,并且這些圖像處理手段已經在導彈目標識別、衛(wèi)星圖像監(jiān)控、醫(yī)療圖像融合、基于雙目立體視覺的測量等軍用民用領域中得到廣泛應用。模板匹配主要是通過計算搜索位置處已知模板圖與實時圖搜索區(qū)域之間的相似性測度來定位與模板圖有類似尺寸和圖像的目標。由于歸一化互相關系數(shù)對亮度和對比度變化具有不變性,其算法相對簡單并且具有很高的精度,因此迄今為止它是模板匹配中應用最廣泛的一種測度。假設實時圖由A表示,模板圖由B表示,其尺寸分別為K×L和M×N個像素。在任一搜索位置(u,v)(0≤u≤K-M,0≤v≤L-N)的歸一化互相關系數(shù)(NCC-NormalizedCross-Correlation)定義為:其中∑∑表示為模板圖的灰度均值,為在當前搜索位置的實時圖與模板圖重疊部分的灰度均值。由此可以看出,實際上該運算就是在實時圖中平移模板圖,并對實時圖和模板圖重疊點進行歸一化相乘,然后進行累加操作。為了獲得精確定位,模板匹配需要在實時圖中搜索與模板圖相重合的每一個區(qū)域,因此對于一個通常的應用,需要搜索的位置數(shù)目往往非常多。對于自動目標識別、跟蹤等實時應用領域,基于歸一化互相關測度的模板匹配計算量相對還是太大從而導致其應用受到很大限制。目前已經提出許多技術來加速模板匹配計算,由于這些技術不需要對所有位置進行匹配,因此大幅度的降低了計算量,但是這些技術通常由于局部的極值點干擾導致錯誤的匹配。事實上,由于模板匹配的計算是針對圖像各個像素進行相關運算,因此該方法本身能夠通過并行的方法來加速。另外也提出了一些多處理器系統(tǒng)來加速模板匹配的計算。但是對于要求小型化、微功耗的嵌入式應用,多處理器方法無法滿足實際應用要求,并且也不經濟。近年來,隨著電子技術和制造工藝的快速發(fā)展,現(xiàn)場可編程門陣列(FPGA)的容量越來越大、速度越來越快,這使得FPGA具有了一般微處理器所無法比擬的強大的并行性,因此FPGA特別適用于實現(xiàn)模板匹配計算。專利申請?zhí)枮?00910069272.6高速圖像匹配方法及裝置提出的是一種實現(xiàn)歸一化互相關系數(shù)方法,該方法實現(xiàn)結構簡單,但具體實現(xiàn)流程需要太多的切換,乘累加模塊的輸入需要切換多個輸入,這將增加邏輯資源消耗、增加布線的難度,導致布線路徑較長從而降低系統(tǒng)可能達到的最高內核速度,同時增加了功耗;輸出的只是中間累加結果,這將導致需要更多的外部存儲空間或者需要DSP緊密配合運算,從而占用大量的DSP運行時間,導致DSP的控制和通信的復雜度,降低DSP運行的實時性。而本發(fā)明能夠解決上面的問題。
技術實現(xiàn)要素:本發(fā)明針對上述現(xiàn)有技術的不足,提出了一種基于歸一化相關系數(shù)的模板匹配高速并行實現(xiàn)方法,該方法可由現(xiàn)場可編程門陣列(FPGA)或超大規(guī)模集成電路(VLSI)通過并行方式來高速高精度地計算歸一化互相關系數(shù),能夠進一步減少邏輯資源消耗,降低功耗和成本,同時提高運算速度;采用該方法的設備能夠實現(xiàn)精度高、參數(shù)設置靈活、實時性強的高速模板匹配。本發(fā)明解決上述技術問題所采用的技術方案是:基于歸一化相關系數(shù)的模板匹配高速并行實現(xiàn)方法和裝置,高速并行實現(xiàn)方法包括有如下步驟:步驟1:讀入實時圖和模板圖數(shù)據(jù)到對應的內部RAM緩沖塊中,同時實時圖數(shù)據(jù)存儲到用于計算實時圖灰度值總和與實時圖灰度值平方總和的實時圖數(shù)據(jù)緩沖RAM中,同時進行模板圖灰度值總和模板圖灰度值平方總和的計算和第1行第1列搜索位置處實時圖灰度值總和實時圖灰度值平方總和的計算;步驟2:計算搜索位置第1行后續(xù)各列的實時圖灰度值總和同時計算當前位置實時圖灰度值平方總和搜索位置第1行各列模板圖實時圖灰度值乘積總和及歸一化相關系數(shù);步驟3:讀入新一行的實時圖數(shù)據(jù)到數(shù)據(jù)已經無效的內部RAM緩沖塊,同時該新一行實時圖數(shù)據(jù)讀入到用于計算實時圖灰度值總和與實時圖灰度值平方總和的實時圖數(shù)據(jù)緩沖RAM中覆蓋已經無效的數(shù)據(jù),同時計算當前行第1列的實時圖灰度值總和實時圖灰度值平方總和值;步驟4:采用上述步驟2、步驟3相同的方式,依次計算出后續(xù)各行歸一化相關系數(shù)。上述模板匹配方法所用的歸一化相關系數(shù)公式如下:A表示實時圖,B表示模板圖,其尺寸分別為K×L和M×N個像素。(u,v)為任一搜索位置,0≤u≤K-M,0≤v≤L-N。ΣΣ表示為模板圖像的灰度平均值,為當前搜索位置(u,v)處實時圖與模板圖重疊部分的灰度平均值。步驟1所述的模板圖數(shù)據(jù)讀入到對應的內部RAM緩沖塊,是將每一行N列的灰度值存儲到一個RAM塊中,共存入M行,即采用了M個RAM塊,每個RAM塊包含N個存儲單元;實時圖數(shù)據(jù)讀入到對應的內部RAM緩沖塊,是將每一行L列的灰度值存儲到一個RAM塊中,共存入M行,同樣采用了M個RAM塊,每個RAM塊包含L個存儲單元;實時圖數(shù)據(jù)存儲到用于計算實時圖灰度值總和和實時圖灰度值平方總和的實時圖數(shù)據(jù)緩沖RAM中,總計存入M行N列數(shù)據(jù),即該塊RAM包含M×N個存儲單元。步驟1所述的模板圖灰度值總和的運算在讀入模板圖數(shù)據(jù)時,通過時序控制模塊控制一個累加器實現(xiàn)。累加器的輸入端連接到模板圖數(shù)據(jù)輸入端,其輸出即為模板圖灰度值總和。步驟1所述的模板圖灰度值平方總和的運算在讀入模板圖數(shù)據(jù)時,通過時序控制模塊控制一個平方運算模塊和累加器實現(xiàn)。平方運算模塊的輸入端連接到模板圖數(shù)據(jù)輸入端,平方運算模塊的輸出連接到累加器的輸入端,累加器輸出即為模板圖灰度值平方總和。步驟1中所述的搜索位置第1行第1列的實時圖灰度值總和的計算,是通過時序控制模塊控制一個行數(shù)據(jù)累加模塊在讀入每一行實時圖數(shù)據(jù)時,對實時圖第1行第1列搜索位置處每一行數(shù)據(jù)進行累加,然后通過一個列累加器對這些行數(shù)據(jù)累加模塊輸出結果逐列進行累加,并且和經過M步(模板圖行數(shù)步)延遲的列累加器累加結果相減獲得。步驟1中所述的搜索位置第1行第1列的實時圖灰度值平方總和的計算,是通過時序控制模塊控制一個行數(shù)據(jù)累加模塊在每一行實時圖數(shù)據(jù)讀入時,對實時圖第1行第1列搜索位置處每一行數(shù)據(jù)平方后進行累加,然后通過一個列累加器對這些行數(shù)據(jù)累加模塊輸出結果逐列進行累加,并且和經過M步(模板圖行數(shù)步)延遲的列累加器累加結果相減獲得。步驟2中后續(xù)各列每一個實時圖灰度值總和計算,是從搜索位置第2列開始,通過時序控制模塊控制實時圖數(shù)據(jù)緩沖RAM同時依次逐行輸出實時圖與模板圖重疊區(qū)域中相對于前一個搜索位置新進的一列數(shù)據(jù)和剛移出的一列數(shù)據(jù),由減法器作差后,再通過累加器逐行求和,并且與前一列搜索位置處的該累加器結果值求和(即該累加器從第2列開始保留所有的累加值),然后由加法器與已經計算出的當前行第1列搜索位置處的相加即可獲得當前列的步驟2中后續(xù)各列每一個實時圖灰度值平方總和計算,是從搜索位置第2列開始,通過時序控制模塊控制實時圖數(shù)據(jù)緩沖RAM同時依次逐行輸出實時圖與模板圖重疊區(qū)域中相對于前一個搜索位置新進的一列數(shù)據(jù)和剛移出的一列數(shù)據(jù),分別由平方運算模塊求平方后再由減法器作差,然后通過累加器逐行求和,并且與前一列搜索位置處的該累加器結果值求和(即該累加器從第2列開始保留所有的累加值),最后由加法器與已經計算出的當前行第1列搜索位置處的相加即可獲得當前列的步驟2中模板圖與實時圖當前搜索位置的灰度值乘積總和的計算如下實現(xiàn)。模板圖RAM緩沖塊的所有輸出端連接到一個多路選通開關,多路選通開關的輸出連接到乘法模塊中的一個乘法器的一端,乘法器的另一端對應連接到實時圖像RAM緩沖塊的輸出端;采用模板圖最大行數(shù)(M)個這樣的并行通道進行并行運算,然后各個通道輸出端連接到一個并加模塊的輸入端,并加模塊的輸出端連接到一個累加模塊。在具體計算時,時序控制模塊控制選通開關使得對應的模板圖數(shù)據(jù)與實時圖數(shù)據(jù)進行乘積運算,改變模板圖像和實時圖像RAM緩沖塊的地址,逐列輸出模板圖和實時圖的對應數(shù)據(jù)進行乘積運算,然后經過并加模塊對當前列各行數(shù)據(jù)進行求和,然后由累加模塊對并加模塊輸出結果逐列求和,獲得當前列各個搜索位置的步驟2所述計算歸一化相關系數(shù)是在和計算出來以后,相應的可以由乘法器、平方運算、加、減法器計算出來。歸一化相關系數(shù)計算公式中的分母由兩個求根模塊進行求根運算,然后再對兩者進行相乘獲得。然后歸一化相關系數(shù)計算公式中的分子和分母由定點轉化為浮點,最終通過一個浮點除法運算得到浮點數(shù)據(jù)類型的歸一化相關系數(shù)。步驟2所述的搜索位置第1行歸一化相關系數(shù)的計算,是模板圖像第1到M行與實時圖第1到M行數(shù)據(jù)對應計算,搜索位置第1列歸一化相關系數(shù)的計算為模板圖像第1到N列與實時圖像第1到N列數(shù)據(jù)對應計算,同時計算第2列的模板圖像在實時圖像中右移一列,并計算該處的同時計算第3列的此時后續(xù)的求平方根、浮點除法等后續(xù)運算同步流水進行,以此重復,直到第一行歸一化相關系數(shù)計算完成。步驟3所述從外部RAM讀入新一行的實時圖數(shù)據(jù)到相應的內部RAM緩沖塊中,為第一行相關系數(shù)計算完成后,讀入一行新的實時圖數(shù)據(jù)覆蓋不用的實時圖RAM塊數(shù)據(jù),在后續(xù)各行計算時需要通過時序控制模塊重新切換多路選通開關使模板圖RAM緩沖塊輸出與實時圖RAM緩沖塊輸出順序變化對應。同時該新一行實時圖數(shù)據(jù)讀入到實時圖數(shù)據(jù)緩沖RAM中覆蓋已經無效的數(shù)據(jù)。步驟3中所述在讀入實時圖新一行數(shù)據(jù)時,同時由前述方式相應的計算出當前行第1列的實時圖灰度值總和的值,后續(xù)列實時圖灰度值總和亦是按前述方式依次計算得出。步驟3中所述在讀入實時圖新一行的數(shù)據(jù)時,此時會由前述方式相應的計算出當前行第1列的實時圖灰度值平方總和的值,后續(xù)列實時圖灰度值平方總和亦是按前述方式依次計算得出。步驟4所述計算出后續(xù)各行歸一化互相關系數(shù),是指計算實時圖像第2行至第K-M+1行歸一化相關系數(shù),第一行相關系數(shù)計算完成后,依次讀入一行新的實時圖數(shù)據(jù)覆蓋不用的實時圖RAM緩沖塊數(shù)據(jù)和對應的實時圖數(shù)據(jù)緩沖RAM中的數(shù)據(jù),并且通過時序控制模塊重新選擇模板圖RAM緩沖塊輸出多路選通開關使其與之對應,這樣相當于模板圖像在待匹配圖像中下移一行,然后按照步驟2和步驟3方式進行計算,依次得到每行的歸一化相關系數(shù)。本發(fā)明還提出了一種基于歸一化相關系數(shù)的模板匹配高速并行方法的裝置,該裝置是由高速相關運算器10、模板圖實時圖數(shù)據(jù)存儲器9、結果存儲器11和微處理器37組成,高速相關運算器10與模板圖實時圖數(shù)據(jù)存儲器9、結果存儲器11、微處理器37相連,模板圖實時圖數(shù)據(jù)存儲器9、結果存儲器11也與微處理器37相連。所述的高速相關運算器10由歸一化相關系數(shù)計算模塊36、外部通信接口模塊7以及時序控制模塊8組成。歸一化相關系數(shù)計算模塊36主要用于歸一化相關系數(shù)的計算。外部通信接口模塊7主要通過寄存器與處理器進行參數(shù)輸入輸出、指令輸入、狀態(tài)查詢輸出。時序控制模塊8主要基于上述步驟控制整個歸一化相關系數(shù)計算的工作流程,它與各個模塊中的RAM的地址及控制線、選通開關的選通地址、使能端寄存器的使能端相連。模板圖實時圖數(shù)據(jù)存儲器9、結果存儲器11分別存儲原始圖像數(shù)據(jù)以及運算結果,微處理器37由高速相關運算器10的外部通信接口模塊7通過寄存器訪問的方式進行參數(shù)輸入輸出、指令輸入和狀態(tài)查詢輸出,從而命令高速相關運算器10進行相應的操作,同時也進行原始圖像數(shù)據(jù)的準備工作。高速相關運算器10把結果存儲到結果存儲器11中,并且從模板圖實時圖數(shù)據(jù)存儲器9中讀取數(shù)據(jù)。高速模板匹配裝置中高速相關運算器10的歸一化相關系數(shù)計算模塊36包括模板圖灰度值求和模塊2,模板圖灰度值平方求和模塊1,實時圖灰度值求和模塊4、實時圖灰度值平方求和模塊5、實時圖模板圖灰度值乘積求和模塊3和后續(xù)計算模塊6。模板圖灰度值求和模塊2由一個累加器14組成,模板圖灰度值平方求和模塊1由一個平方運算模塊12和一個累加器13相連而成。實時圖灰度值求和模塊4由與實時圖灰度值平方求和模塊5共用的實時圖數(shù)據(jù)緩沖RAM21、第1列累加模塊24、減法器22、累加器23和加法器組成。實時圖灰度值平方求和模塊5由與實時圖灰度值平方求和模塊4共用的實時圖數(shù)據(jù)緩沖RAM21、第1列累加模塊28、平方運算模塊26、27、38、減法器25、累加器29和加法器組成。實時圖模板圖灰度值乘積求和模塊3由實時圖RAM緩沖塊20、模板圖RAM緩沖塊15、多路選通開關16、乘法器17、并加模塊18和累加器19組成。后續(xù)計算模塊由乘法器、加、減法器和分子分母定點浮點轉換模塊(30、31)、分母方根運算模塊(33、34)、浮點除法運算模塊32組成。高速模板匹配裝置工作流程為:首先微處理器37把原始模板圖和實時圖數(shù)據(jù)存入模板圖實時圖數(shù)據(jù)存儲器9中,然后向高速相關運算器10輸入圖像的尺寸參數(shù),而后輸入啟動命令啟動歸一化相關運算。在運算過程中通過寄存器訪問的方式查詢運算的進程狀態(tài)。在運算完成以后,微處理器37會從高速相關運算器10收到完成的中斷信號,為可靠起見,微處理器37進一步查詢高速相關運算器10的完成標志,在確保完成以后從結果存儲器讀取歸一化相關系數(shù)計算結果進行后續(xù)處理工作。高速模板匹配裝置中所包含的高速相關運算器可以利用FPGA實現(xiàn),也可利用VLSI實現(xiàn)。高速相關運算器中實時圖像以及模板圖像的行數(shù)和列數(shù)都是可以由外部微處理器輸入的可變的參數(shù),而最終實現(xiàn)的并行通道數(shù)目,包括內部實時圖和模板圖RAM緩沖塊的數(shù)目,是由任務要求決定的最大的行數(shù)。本發(fā)明的有益效果:1、本發(fā)明的實現(xiàn)方法通過合理、精細的設計,有效地減少了系統(tǒng)邏輯資源消耗,加快了運行速度,從而降低了功耗。2、本發(fā)明縮短了布線路徑,提高了FPGA內核所能達到的最大運行速度。3、本發(fā)明降低了對外部微處理器的要求,并且該實現(xiàn)縮小了系統(tǒng)的體積。附圖說明圖1是基于歸一化相關系數(shù)的模板匹配高速并行實現(xiàn)方法的原理結構框圖。圖2是基于歸一化相關系數(shù)的模板匹配高速并行實現(xiàn)方法的工作流程圖。圖3是累加器的結構圖。圖4是圖1中第1列累加模塊實現(xiàn)原理結構圖。圖5是模板匹配原理示意圖。圖6是(a)累加-并加運算;(b)并加-累加運算。圖7是并加實現(xiàn)結構圖。圖8是基于歸一化相關系數(shù)的高速并行模板匹配裝置原理結構框圖。圖9是高速相關運算器的時序仿真波形結果圖。圖10是基于...