本發(fā)明屬于數(shù)字圖像信號(hào)處理領(lǐng)域,具體涉及一種基于特征匹配的地面目標(biāo)跟蹤裝置。
背景技術(shù):
計(jì)算機(jī)視覺中實(shí)現(xiàn)目標(biāo)跟蹤有著多種研究應(yīng)用,在嵌入式領(lǐng)域中一般常使用DSP作為跟蹤方法實(shí)現(xiàn)的核心器件,然而在嵌入式DSP中,在功耗以及實(shí)時(shí)性要求下,DSP中難以實(shí)現(xiàn)復(fù)雜的目標(biāo)跟蹤算法。而圖像特征點(diǎn)具有旋轉(zhuǎn)、尺度、光照的不變性,使其在圖像配準(zhǔn)、目標(biāo)跟蹤等領(lǐng)域均有較多的應(yīng)用。而特征點(diǎn)算法本身較為復(fù)雜,令其在嵌入式領(lǐng)域的應(yīng)用有諸多障礙。例如,類似SIFT、SURF的特征提取算法需要建立尺度空間,對(duì)單幀圖像就需要得到多個(gè)尺度下的高斯濾波圖像,這對(duì)嵌入式場景中功耗要求高,計(jì)算資源受限,高實(shí)時(shí)性要求相矛盾。為滿足嵌入式場景的跟蹤應(yīng)用需求,可使用專有的硬件如ASIC,F(xiàn)PGA等協(xié)助處理圖像、加速算法。
Wang,J.,et al.,An Embedded System-on-Chip Architecture for Real-time Visual Detection and Matching.IEEE Transactions on Circuits&Systems for Video Technology,2014.24(3):p.525-538,提出了一種在單片F(xiàn)PGA上實(shí)現(xiàn)的實(shí)時(shí)視覺特征匹配系統(tǒng)。該系統(tǒng)設(shè)計(jì)了SIFT+BRIEF架構(gòu)的系統(tǒng)結(jié)構(gòu),將整個(gè)算法實(shí)現(xiàn)在單片F(xiàn)PGA上,并完成實(shí)時(shí)前后幀圖像的配準(zhǔn),速度能達(dá)到720p圖像60FPS速度。該系統(tǒng)的主要特點(diǎn)是該硬件驗(yàn)證平臺(tái)僅依靠單片F(xiàn)PGA完成,并能將特征的前后幀匹配在片上實(shí)時(shí)實(shí)現(xiàn),并且資源占用較少。但是該方法的局限在于工作僅限于特征提取加速以及幀間特征匹配但并沒有進(jìn)一步合理協(xié)調(diào)FPGA資源與DSP資源完成一個(gè)跟蹤系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的缺陷和技術(shù)需求,本發(fā)明提供了一種基于特征匹配的地面目標(biāo)跟蹤硬件實(shí)現(xiàn)方法及裝置,將復(fù)雜的基于特征點(diǎn)的目標(biāo)跟蹤算法完全地實(shí)現(xiàn)在嵌入式FPGA上,將幀間轉(zhuǎn)換關(guān)系計(jì)算是現(xiàn)在DSP,兼顧算法復(fù)雜性與嵌入式板卡的低功耗要求,以FPGA作為核心的算法實(shí)現(xiàn)器件,得以實(shí)時(shí)處理大量的圖像數(shù)據(jù),相比于現(xiàn)有技術(shù),成數(shù)量級(jí)地提升算法處理速度。
一種基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置,包括:可編程門陣列FPGA和數(shù)字信號(hào)處理器DSP;
可編程門陣列FPGA,包括特征提取單元、跟蹤點(diǎn)坐標(biāo)計(jì)算單元和精確匹配單元;所述特征提取單元用于對(duì)外部輸入的圖像序列每一幀圖像,提取圖像特征,根據(jù)圖像特征完成相鄰幀間特征匹配結(jié)果,將成功幀間特征匹配結(jié)果傳送給DSP;所述跟蹤點(diǎn)坐標(biāo)計(jì)算單元用于根據(jù)DSP反饋的幀間幾何變換關(guān)系,由前一幀跟蹤點(diǎn)坐標(biāo)計(jì)算得到當(dāng)前幀中跟蹤點(diǎn)坐標(biāo)值;所述精確匹配單元,用于以DSP計(jì)算得到的當(dāng)前幀跟蹤點(diǎn)位置坐標(biāo)為中心,在其鄰域做基于模板的互相關(guān)匹配,得到跟蹤點(diǎn)坐標(biāo)精確坐標(biāo);
數(shù)字信號(hào)處理器DSP,用于根據(jù)所述FPGA輸出的特征匹配結(jié)果計(jì)算出相鄰圖像幀間變換關(guān)系,并反饋給FPGA。
進(jìn)一步地,所述特征提取單元包括特征檢測模塊、特征描述模塊、特征存儲(chǔ)模塊和前后幀圖像特征點(diǎn)配準(zhǔn)模塊;
特征檢測模塊用于對(duì)圖像數(shù)據(jù)進(jìn)行多個(gè)尺度的高斯濾波、差分、判斷極值點(diǎn)、剔除低響應(yīng)度的點(diǎn),得到檢測到的圖像特征點(diǎn)坐標(biāo);
特征描述模塊用于根據(jù)所述圖像特征點(diǎn)坐標(biāo),對(duì)圖像的領(lǐng)域提取圖像信息,得到所述特征點(diǎn)的描述向量;
特征存儲(chǔ)模塊用于緩存每一幀圖像的特征點(diǎn)坐標(biāo)與所述特征點(diǎn)描述信息;特征存儲(chǔ)模塊包括兩雙端口隨機(jī)存儲(chǔ)器RAMA和RAMB,采用乒乓操作,緩存前一幀信息與當(dāng)前幀信息,即第N-1幀圖像的特征點(diǎn)坐標(biāo)與描述向量被存儲(chǔ)在RAMA中,則第N幀圖像的特征點(diǎn)坐標(biāo)與描述信息被存儲(chǔ)在RAMB中;
前后幀圖像特征點(diǎn)配準(zhǔn)模塊用于根據(jù)圖像的特征點(diǎn)坐標(biāo)與所述特征點(diǎn)描述信息完成相鄰幀間特征匹配結(jié)果,將成功幀間特征匹配結(jié)果傳送給DSP。
進(jìn)一步地,
所述特征檢測模塊包括下采樣模塊和兩組結(jié)構(gòu)相同的特征點(diǎn)檢測模塊;特征點(diǎn)檢測模塊包括多個(gè)高斯濾波單元、多個(gè)差分計(jì)算單元、多個(gè)窗口生成單元和一個(gè)特征點(diǎn)選取單元;
第一組特征點(diǎn)檢測模塊的多個(gè)高斯濾波單元用于并行地對(duì)所述模擬相機(jī)裝置產(chǎn)生的圖像序列每一幀圖像進(jìn)行不同尺度參數(shù)的高斯濾波;差分計(jì)算單元用于對(duì)兩相鄰尺度高斯濾波后的兩幅圖像進(jìn)行差分運(yùn)算得到高斯差分圖像;窗口生成單元用于以高斯差分圖像中的像素點(diǎn)為中心及其鄰域?yàn)檫吔缟纱翱?;特征點(diǎn)選取單元用于在生成的窗口中確定極值點(diǎn),將極值點(diǎn)作為候選特征點(diǎn),從候選特征點(diǎn)中刪除低對(duì)比度點(diǎn)或邊緣點(diǎn),保留的候選特征點(diǎn)即為最終的特征點(diǎn);
從多個(gè)高斯濾波單元中選取中間尺度的高斯濾波單元,將該高斯濾波單元輸出的高斯濾波圖像輸入給下采樣模塊,下采樣模塊用于對(duì)輸入的圖像進(jìn)行下采樣,將下采樣后的圖像輸出至第二組特征點(diǎn)檢測模塊,第二組特征點(diǎn)檢測模塊按照與第一組特征點(diǎn)檢測模塊相同的方式確定特征點(diǎn)。
進(jìn)一步地,
所述特征描述模塊包括數(shù)據(jù)控制模塊和描述向量計(jì)算模塊;
所述數(shù)據(jù)控制模塊用于讀取特征點(diǎn)坐標(biāo),分別以每一特征點(diǎn)為基準(zhǔn)以及隨機(jī)數(shù)緩存中存儲(chǔ)的偏移量提取一定量的圖像像素?cái)?shù)據(jù);
所述描述向量計(jì)算模塊用于通過對(duì)提取的圖像像素?cái)?shù)據(jù)進(jìn)行兩兩像素點(diǎn)灰度值比對(duì),得到二進(jìn)制描述向量。
進(jìn)一步地,
所述前后幀圖像特征點(diǎn)配準(zhǔn)模塊包括描述向量距離計(jì)算器、讀中斷生成器和匹配點(diǎn)對(duì)存儲(chǔ)器FIFO;
描述向量距離計(jì)算器,使用第一狀態(tài)機(jī)讀取當(dāng)前幀以及前一幀圖像的特征點(diǎn),使用第二狀態(tài)機(jī)讀取當(dāng)前幀以及前一幀圖像的特征點(diǎn)描述向量,將當(dāng)前幀以及前一幀圖像的特征點(diǎn)描述向量,該距離小于某一閾值則認(rèn)定為兩幀的特征點(diǎn)匹配成功;
匹配點(diǎn)對(duì)存儲(chǔ)器FIFO用于存儲(chǔ)成功匹配點(diǎn)對(duì);
讀中斷生成器用于在前后幀圖像特征點(diǎn)配準(zhǔn)結(jié)束時(shí),向DSP給出中斷信號(hào),等待DSP響應(yīng)。
進(jìn)一步地,
所述精確匹配單元包括搜索區(qū)緩存模塊、相關(guān)匹配模塊以及模板緩存與更新模塊;
搜索區(qū)緩存模塊用于緩存從外部接口輸入的圖像,新的一幀過來時(shí)將覆蓋上一幀的圖像;
相關(guān)匹配模塊用于以當(dāng)前幀中跟蹤點(diǎn)坐標(biāo)值為中心創(chuàng)建一個(gè)待匹配區(qū)域,從模板緩存與更新模塊提取模板,通過窗口遍歷的方式進(jìn)行灰度相關(guān)運(yùn)算,灰度相關(guān)運(yùn)算結(jié)果中最大值對(duì)應(yīng)的窗口中心點(diǎn)為最佳匹配位置,同時(shí)將灰度相關(guān)運(yùn)算結(jié)果中最大值對(duì)應(yīng)的窗口更新至模板緩存與更新模塊;
模板更新模塊用于緩存模板。
進(jìn)一步地,
所述DSP用于在捕獲到FPGA發(fā)送的中斷信號(hào)之后,發(fā)起一個(gè)增強(qiáng)型直接存儲(chǔ)器訪問,接收FPGA中匹配成功的特征點(diǎn)對(duì),采用隨機(jī)抽樣一致性計(jì)算特征點(diǎn)對(duì)之間反映幀間幾何變換關(guān)系的變換矩陣;向FPGA發(fā)送中斷信號(hào),并在得到響應(yīng)后將變換矩陣反饋給FPGA。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比:
本發(fā)明通過對(duì)特征點(diǎn)算法的分解,以及FPGA/DSP和合理協(xié)同完成一個(gè)主要基于特征匹配的高度并行化的地面目標(biāo)跟蹤裝置,該方法利用FPGA的并行加速以及FPGA與DSP高效協(xié)同實(shí)現(xiàn)復(fù)雜算法架構(gòu)下的地面目標(biāo)跟蹤。相比于傳統(tǒng)的使用DSP作為主要信號(hào)處理器,能夠?qū)崿F(xiàn)更加復(fù)雜的算法,即將特征點(diǎn)算法、相關(guān)匹配算法、以及抽樣一致算法有機(jī)地結(jié)合起來,能在地面跟蹤中具有更好地實(shí)時(shí)效果,可達(dá)到50幀/秒。
本發(fā)明通過將特征算法分解模塊化,將FPGA作為核心處理器件,將復(fù)雜的基于特征點(diǎn)的目標(biāo)跟蹤算法以及互相關(guān)精匹配算法完全地實(shí)現(xiàn)在嵌入式的FPGA上,兼顧算法復(fù)雜性與嵌入式板卡的低功耗要求,并且算法的大量計(jì)算通過FPGA的并行化設(shè)計(jì)實(shí)現(xiàn),得以實(shí)時(shí)處理大量的數(shù)據(jù)處理,相比于純DSP處理算法,成數(shù)量級(jí)地提升算法處理速度。
本發(fā)明采用了動(dòng)態(tài)緩存結(jié)構(gòu)來鏈接不同的處理部件,F(xiàn)IFO和同步存儲(chǔ)器的使用有效地解決了不同數(shù)據(jù)寬度,不同數(shù)據(jù)速率、不同接口間的差異引起的互聯(lián)問題,減少資源消耗,提高系統(tǒng)的資源利用率。
本發(fā)明能對(duì)實(shí)時(shí)圖像同步接收處理并達(dá)到實(shí)時(shí)的圖像跟蹤,利用FPGA作為系統(tǒng)架構(gòu)核心與數(shù)據(jù)處理核心,模塊接口標(biāo)準(zhǔn)化易于重構(gòu),并且具有實(shí)時(shí)的大數(shù)據(jù)量吞吐的特點(diǎn),以及功耗低,體積小的特點(diǎn),可以有效地應(yīng)用于目標(biāo)跟蹤,導(dǎo)航,識(shí)別等領(lǐng)域。
附圖說明
圖1為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置整體結(jié)構(gòu)框圖
圖2為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置詳細(xì)結(jié)構(gòu)框圖;
圖3為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置SIFT特征檢測部分框圖;
圖4為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置BRIEF特征提取結(jié)構(gòu)框圖;
圖5為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置相鄰幀間特征匹配結(jié)構(gòu)框圖;
圖6為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置FPGA與DSP通信示意圖;
圖7為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置灰度互相關(guān)匹配詳細(xì)結(jié)構(gòu)實(shí)現(xiàn)圖;
圖8為本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置工作流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,本發(fā)明基于圖像關(guān)鍵點(diǎn)特征匹配的地面目標(biāo)跟蹤裝置,包括:可編程門陣列FPGA和數(shù)字信號(hào)處理器DSP。FPGA與DSP之間的接口采用EMIF接口,F(xiàn)PGA與模擬相機(jī)單元之間的接口采用cameralink接口,F(xiàn)PGA與外部上位機(jī)之間的接口為RS422串行接口。
可編程門陣列FPGA,包括特征提取單元、跟蹤點(diǎn)坐標(biāo)計(jì)算單元和精確匹配單元;特征提取單元用于對(duì)所述模擬相機(jī)裝置產(chǎn)生的圖像序列每一幀圖像,提取圖像特征,根據(jù)圖像特征完成相鄰幀間特征匹配結(jié)果,將幀間特征匹配結(jié)果傳送給DSP;跟蹤點(diǎn)坐標(biāo)計(jì)算單元用于根據(jù)DSP反饋的幀間幾何變換關(guān)系,由前一幀跟蹤點(diǎn)坐標(biāo)計(jì)算得到到當(dāng)前幀中跟蹤點(diǎn)坐標(biāo)值;精確匹配單元用于以當(dāng)前幀跟蹤點(diǎn)位置坐標(biāo)為中心,在其鄰域做基于模板的互相關(guān)匹配,得到跟蹤點(diǎn)坐標(biāo)精確坐標(biāo)。
數(shù)字信號(hào)處理器DSP,包括變換關(guān)系計(jì)算單元,所述變換關(guān)系計(jì)算單元用于根據(jù)所述FPGA輸出的特征匹配結(jié)果計(jì)算出相鄰圖像幀間變換關(guān)系。
圖2給出可編程門陣列FPGA的一種較佳實(shí)施方式,F(xiàn)PGA包括特征提取單元、跟蹤點(diǎn)坐標(biāo)計(jì)算單元和精確匹配單元。
特征提取單元又包括特征檢測模塊、特征描述模塊、特征存儲(chǔ)模塊和前后幀圖像特征點(diǎn)配準(zhǔn)模塊。
本發(fā)明優(yōu)選特征檢測模塊提取的SIFT(尺度不變特征變換,Scale Invariant Feature Transform)特征。
特征檢測模塊對(duì)圖像數(shù)據(jù)進(jìn)行多個(gè)尺度的高斯濾波,差分,判斷極值點(diǎn),剔除低響應(yīng)度的點(diǎn)等流程,得到檢測到的圖像特征點(diǎn)坐標(biāo)信息。如圖3所示,特征檢測模塊包括下采樣模塊和兩組結(jié)構(gòu)相同的特征點(diǎn)檢測模塊;特征點(diǎn)檢測模塊包括多個(gè)高斯濾波單元、多個(gè)差分計(jì)算單元、多個(gè)窗口生成單元和一個(gè)特征點(diǎn)選取單元;第一組特征點(diǎn)檢測模塊的多個(gè)高斯濾波單元用于并行地對(duì)所述模擬相機(jī)裝置產(chǎn)生的圖像序列每一幀圖像進(jìn)行不同尺度參數(shù)的高斯濾波;差分計(jì)算單元用于對(duì)兩相鄰尺度高斯濾波后的兩幅圖像進(jìn)行差分運(yùn)算得到高斯差分圖像;窗口生成單元用于以高斯差分圖像中的像素點(diǎn)為中心及其鄰域?yàn)檫吔缟纱翱?;特征點(diǎn)選取單元用于在生成的窗口中確定極值點(diǎn),將極值點(diǎn)作為候選特征點(diǎn),從候選特征點(diǎn)中刪除低對(duì)比度點(diǎn)或邊緣點(diǎn),保留的候選特征點(diǎn)即為最終的特征點(diǎn);從多個(gè)高斯濾波單元中選取中間尺度的高斯濾波單元,將該高斯濾波單元輸出的高斯濾波圖像輸入給下采樣模塊,下采樣模塊用于對(duì)輸入的圖像進(jìn)行下采樣,將下采樣后的圖像輸出至第二組特征點(diǎn)檢測模塊,第二組特征點(diǎn)檢測模塊按照與第一組特征點(diǎn)檢測模塊相同的方式確定特征點(diǎn)。
SIFT算法的特征點(diǎn)檢測算法需要對(duì)圖像進(jìn)行多個(gè)尺度參數(shù)σ下的高斯濾波并且降采樣圖像,來形成高斯尺度空間,這里采用在FPGA內(nèi)部設(shè)置多個(gè)高斯濾波模板,圖像數(shù)據(jù)在像素時(shí)鐘驅(qū)動(dòng)下,逐像素進(jìn)入模板與圖像進(jìn)行卷積操作,因此可以實(shí)現(xiàn)多個(gè)高斯卷積同時(shí)進(jìn)行,并且卷積結(jié)果將也會(huì)在像素時(shí)鐘驅(qū)動(dòng)下逐像素出來結(jié)果,只是相對(duì)與原始圖像數(shù)據(jù)有一定的時(shí)鐘周期延遲。在圖像數(shù)據(jù)全部輸入完成后,經(jīng)過所述的一定時(shí)鐘周期延遲,所有的尺度參數(shù)σ下的濾波結(jié)果,多個(gè)高斯濾波圖像會(huì)同時(shí)產(chǎn)生,這就生成了高斯尺度空間圖像組。生成的高斯尺度空間圖像組,相鄰的兩層之間做圖像間的灰度差分,生成高斯差分尺度空間。在所述高斯差分尺度空間中,除去頂層與底層圖像,對(duì)其余的每一層圖像的每個(gè)像素,可以找到其26臨域的像素,即該像素周圍譬如3×3×3的區(qū)域。若所述的每個(gè)像素,符合其為26臨域里面灰度極值,極大值或者極小值,則初步判定為特征點(diǎn)。所述初步判定的特征點(diǎn)將使用Hessian矩陣來判斷該點(diǎn)是否為邊緣響應(yīng)點(diǎn),是邊緣響應(yīng)的點(diǎn)被剔除。需要說明的是,此處選用的特征點(diǎn)檢測算法是SIFT算法,但是并不局限于SIFT,廣泛使用的還有SURF算法、Harris角點(diǎn)、Fast角點(diǎn)等特征點(diǎn)檢測方法。
描述模塊緩存圖像數(shù)據(jù),根據(jù)檢測到的所述圖像特征點(diǎn)坐標(biāo)信息,對(duì)圖像的領(lǐng)域按照BRIEF(Binary Robust Independent Elementary Feature)算法提取圖像信息,得到所述特征點(diǎn)的描述信息。特征描述模塊包括數(shù)據(jù)控制模塊和描述向量計(jì)算模塊;所述數(shù)據(jù)控制模塊用于讀取特征點(diǎn)坐標(biāo),分別以每一特征點(diǎn)為基準(zhǔn)以及隨機(jī)數(shù)緩存中存儲(chǔ)的偏移量提取一定量的圖像像素?cái)?shù)據(jù);所述描述向量計(jì)算模塊用于通過對(duì)提取的圖像像素?cái)?shù)據(jù)進(jìn)行兩兩像素點(diǎn)灰度值比對(duì),得到二進(jìn)制描述向量。
BRIEF算法的思想是將特征點(diǎn)周圍的圖像取出一個(gè)區(qū)域,一般是以特征點(diǎn)為中心的一個(gè)正方形,同時(shí)存儲(chǔ)一組坐標(biāo)對(duì),一般建議的是256對(duì)。對(duì)每一對(duì)坐標(biāo)對(duì),在所述的圖像塊中將它們?nèi)〕鰜恚容^所取出來的兩個(gè)像素的灰度值大小,前者較大則比較結(jié)果為1,否則為0。比較完256對(duì)之后,得到一個(gè)256位寬度的二進(jìn)制序列,這個(gè)序列即是該特征點(diǎn)的BEIRF描述向量。在硬件FPGA架構(gòu)里面實(shí)現(xiàn)流程如圖4,每一幀的圖像數(shù)據(jù)都將會(huì)緩存在所述的圖像緩存DPRAM里面,所述特征點(diǎn)檢測模塊將緩存在FIFO里面,隨機(jī)生成模塊在復(fù)位結(jié)束后產(chǎn)生256對(duì)隨機(jī)的坐標(biāo)點(diǎn),隨機(jī)的坐標(biāo)點(diǎn)將存儲(chǔ)在一個(gè)DPRAM里面,針對(duì)FIFO里面過來的每一個(gè)特征點(diǎn)坐標(biāo),點(diǎn)對(duì)比較模塊將根據(jù)特征點(diǎn)坐標(biāo)和DPRAM里面緩存的隨機(jī)數(shù)對(duì),讀取圖像緩存DPRAM里面相應(yīng)的圖像灰度值,執(zhí)行BRIEF算法步驟,得到當(dāng)前特征點(diǎn)的BRIEF描述信息,即一個(gè)256位寬的二進(jìn)制向量??梢灾赋龅氖?,這里描述信息的提取并不僅僅限定為BRIEF算法,比如SIFT描述子提取,SURF描述子提取等都可以采用。
特征存儲(chǔ)模塊緩存每一幀圖像的特征點(diǎn)坐標(biāo)與所述特征點(diǎn)描述信息。特征存儲(chǔ)模塊采用雙端口隨機(jī)存儲(chǔ)器(Random Access Memory),這里使用乒乓操作,使用兩個(gè)雙口RAM來始終緩存前一幀信息與當(dāng)前幀信息,即兩個(gè)雙端口RAM分別為RAMA和RAMB,第N-1幀圖像的特征點(diǎn)坐標(biāo)與描述信息被存儲(chǔ)在RAMA中,則第N幀圖像的特征點(diǎn)坐標(biāo)與描述信息被存儲(chǔ)在RAMB中,第N+1幀時(shí),圖像的特征點(diǎn)坐標(biāo)與描述信息被存儲(chǔ)在RAMA中,RAMA中原來存儲(chǔ)的第N-1幀圖像的特征點(diǎn)坐標(biāo)與描述信息則被覆蓋,依此類推。
前后幀圖像特征點(diǎn)配準(zhǔn)模塊包括BRIEF描述向量距離計(jì)算器、讀中斷生成器和匹配點(diǎn)對(duì)存儲(chǔ)器FIFO。如圖2中所示的圖像特征點(diǎn)配準(zhǔn)部分,其流程為首先讀取一個(gè)當(dāng)前幀的特征點(diǎn)描述向量,隨后遍歷地逐個(gè)讀取另一塊RAM中緩存的上一幀圖像特征點(diǎn)描述向量,將兩向量做特征距離計(jì)算,該距離小于某一閾值則認(rèn)定為兩點(diǎn)匹配成功。例如實(shí)施例中使用BRIEF的描述向量,兩個(gè)描述向量之間漢明距離小于30則認(rèn)為匹配成功。該距離計(jì)算過程如圖5所示,使用兩個(gè)狀態(tài)機(jī)完成,所述狀態(tài)機(jī)1完成當(dāng)前幀以及前一幀的特征點(diǎn)描述向量讀取,所述狀態(tài)機(jī)2完成前一幀圖像特征點(diǎn)描述向量讀取。所有成功匹配點(diǎn)對(duì)緩存入匹配點(diǎn)對(duì)存儲(chǔ)器FIFO,在匹配過程結(jié)束時(shí)間,由FPGA中給出中斷信號(hào),等待DSP響應(yīng)。
所述的配準(zhǔn)信息通過EMIF接口傳輸?shù)紻SP中,DSP接收到所述的配準(zhǔn)信息之后,可使用隨機(jī)抽樣一致算法(RANSAC,RANdom Sample Consensus)來計(jì)算出所述這些配準(zhǔn)信息之間對(duì)應(yīng)的變換關(guān)系。計(jì)算所得的變換關(guān)系為一個(gè)矩陣,使用不同的算法矩陣類型會(huì)有差異。所述的計(jì)算結(jié)果再通過EMIF接口傳輸回FPGA中并反饋給FPGA的精確匹配單元。
精確匹配單元根據(jù)矩陣變換關(guān)系以及緩存的上一幀的跟蹤的坐標(biāo)點(diǎn),計(jì)算得到當(dāng)前幀的跟蹤點(diǎn)坐標(biāo)位置。精確匹配單元利用所述的計(jì)算所得的跟蹤點(diǎn)坐標(biāo)位置作為搜索區(qū)域的中心點(diǎn),在周圍一定領(lǐng)域,例如7×7的領(lǐng)域里面做模板匹配,找到與緩存模板最匹配的坐標(biāo)作為跟蹤坐標(biāo)。如圖2所示,精確匹配單元包括搜索區(qū)緩存模塊、相關(guān)匹配模塊以及模板緩存與更新模塊。
搜索區(qū)緩存模塊:緩存圖像的控制模塊,圖像數(shù)據(jù)從外部cameralink接口輸入,將圖像逐像素寫入DPRAM里面,寫一整幀圖像。新的一幀過來時(shí)將覆蓋上一幀的圖像。緩存圖像的雙口RAM,寫入端為前面一級(jí)給過來的圖像數(shù)據(jù)流,讀取端為后面做模板匹配的模塊從這里取數(shù)據(jù)。
相關(guān)匹配:以當(dāng)前幀中跟蹤點(diǎn)坐標(biāo)值為中心創(chuàng)建一個(gè)待匹配區(qū)域,從模板緩存與更新模塊提取模板,通過窗口遍歷的方式進(jìn)行灰度相關(guān)運(yùn)算,灰度相關(guān)運(yùn)算結(jié)果中最大值對(duì)應(yīng)的窗口中心點(diǎn)為最佳匹配位置,同時(shí)將灰度相關(guān)運(yùn)算結(jié)果中最大值對(duì)應(yīng)的窗口更新至模板緩存與更新模塊。譬如,請(qǐng)參見圖7,讀取當(dāng)前幀中跟蹤點(diǎn)的XY坐標(biāo),然后在外部圖像數(shù)據(jù)輸入過來時(shí)會(huì)生成一個(gè)以XY為中心的15×15的窗口。在緩存這個(gè)15×15的區(qū)域的時(shí)候,同時(shí)會(huì)有一個(gè)7×7的匹配窗口生成,隨著像素一個(gè)個(gè)過來,窗口會(huì)一個(gè)像素一個(gè)像素地往前移動(dòng)。這個(gè)窗口里面的數(shù)據(jù)與緩存的前一幀的模板(也是一個(gè)7×7的模板)做相關(guān)運(yùn)算,這樣流水線地往后計(jì)算,在整個(gè)搜索區(qū)的圖像數(shù)據(jù)來完了之后,延遲幾個(gè)時(shí)鐘周期,相關(guān)運(yùn)算的結(jié)果也會(huì)計(jì)算完畢。在每次相關(guān)匹配的計(jì)算結(jié)果有效時(shí),判斷相關(guān)匹配的匹配度,始終緩存當(dāng)前相關(guān)匹配度最大的時(shí)候?qū)?yīng)的區(qū)域中心點(diǎn),直到所有的點(diǎn)的結(jié)果都計(jì)算出來。這樣整個(gè)遍歷匹配過程結(jié)束后,最佳匹配的位置即可得到。在整個(gè)計(jì)算完成時(shí),緩存的點(diǎn)坐標(biāo)作為NewXY給模板更新模塊。
模板更新模塊負(fù)責(zé)根據(jù)給入的NewXY坐標(biāo),將相應(yīng)的模板進(jìn)行更新,然后更新后的模板信息將作為下一個(gè)遍歷匹配的模板。
圖5所示是本發(fā)明前后幀圖像特征點(diǎn)配準(zhǔn)的優(yōu)選實(shí)施方式。所述的特征點(diǎn)的描述向量是256位寬的二進(jìn)制向量,以及特征點(diǎn)本身的坐標(biāo)、尺度信息32位數(shù)據(jù)合并成288位寬的合并的描述信息。通過乒乓緩存,分別將當(dāng)前幀所述的合并的描述信息與前一幀的合并的描述信息緩存在兩塊DPRAM里面。圖5所示的是優(yōu)選例中內(nèi)部數(shù)據(jù)處理流程。匹配過程由兩個(gè)有限狀態(tài)機(jī)(Finite State Machine FSM)來完成。第一個(gè)狀態(tài)機(jī)控制讀取當(dāng)前幀的一個(gè)描述信息作為狀態(tài)機(jī)的一次循環(huán),第二個(gè)狀態(tài)機(jī)控制每一次循環(huán)中,找到最佳匹配點(diǎn)。圖中,
狀態(tài)機(jī)1是由所述特征描述模塊從當(dāng)前幀中的每一個(gè)新的特征點(diǎn)觸發(fā)的,它不停地將前一幀的特征點(diǎn)迭代,在每一個(gè)周期中給出一對(duì)特征點(diǎn)。每一步的過程如下所示:
其他:作為未定義狀態(tài)或者復(fù)位后的狀態(tài)。一旦進(jìn)入這個(gè)狀態(tài),馬上跳入等待狀態(tài)。
等待:等待,知道有新特征點(diǎn)信號(hào)有效,跳至讀當(dāng)前幀狀態(tài)。
讀當(dāng)前幀:從當(dāng)前幀的特征點(diǎn)DPRAM緩存中讀取一個(gè)特征點(diǎn),然后跳入讀前幀狀態(tài)。
讀前幀:從上一幀的特征點(diǎn)DPRAM緩存里面取出特征點(diǎn),然后產(chǎn)生一個(gè)針對(duì)狀態(tài)機(jī)2的NewResult信號(hào)。除此之外,該狀態(tài)還負(fù)責(zé)判斷是否前一幀里的特征點(diǎn)已經(jīng)全部迭代完。如果迭代完了,則跳入寫狀態(tài),否則繼續(xù)讀取前一幀中的下一個(gè)特征點(diǎn)。
寫:等待狀態(tài)機(jī)2來將其輸出的匹配的特征點(diǎn)寫入匹配點(diǎn)DPRAM,然后跳入等待狀態(tài)。
狀態(tài)機(jī)2接收兩特征點(diǎn)間的Hamming距離,然后選出具有最短距離的特征點(diǎn)對(duì)。符合要求的點(diǎn)對(duì)將被存儲(chǔ)在匹配點(diǎn)DPRAM中,狀態(tài)機(jī)2中具體每個(gè)狀態(tài)的功能如下:
其他:未定義的狀態(tài)或者是復(fù)位后的狀態(tài),一旦進(jìn)入這個(gè)狀態(tài)馬上跳入等待狀態(tài)。
等待:等待直至NewResult信號(hào)有效,然后跳入找最小狀態(tài),并且初始化一個(gè)最小距離寄存器(MIN_DIST)作為判斷是否匹配的閾值,只有比較后的距離小于這個(gè)閾值的特征點(diǎn)對(duì)才被認(rèn)為是匹配的點(diǎn)對(duì)。
找最?。涸摖顟B(tài)讀取一個(gè)距離結(jié)果并將該結(jié)果與MIN_DIST進(jìn)行比較,如果距離比MIN_DIST小,則將當(dāng)前的距離賦給MIN_DIST,并且將當(dāng)前的特征點(diǎn)對(duì)標(biāo)記為匹配成功特征點(diǎn)對(duì)。如果距離比MIN_DIST大,則不作任何處理。該狀態(tài)一直循環(huán)迭代,直到所有的距離都比較完,然后狀態(tài)機(jī)跳入WRITE狀態(tài)。
寫:如果由FIND_MIN狀態(tài)找出的特征點(diǎn)對(duì)是一個(gè)有效的特征點(diǎn)對(duì)信號(hào),則將該特征點(diǎn)點(diǎn)對(duì)寫入特征點(diǎn)對(duì)的DPRAM。一旦進(jìn)入該狀態(tài),下一個(gè)狀態(tài)就是等待狀態(tài)。
圖6所示是FPGA與DSP通信回路設(shè)計(jì)示意圖。在每一幀圖像輸入完成一定的時(shí)鐘周期之后,F(xiàn)PGA中將緩存當(dāng)前幀所有的與上一幀的匹配點(diǎn)對(duì),之后FPGA將產(chǎn)生一個(gè)中斷信號(hào),傳遞給DSP。DSP將中斷信號(hào)捕獲之后,按照設(shè)置,發(fā)起一個(gè)EDMA的搬運(yùn),將FPGA中緩存的點(diǎn)對(duì)傳輸?shù)紻SP中。DSP根據(jù)傳輸進(jìn)來的點(diǎn)對(duì)數(shù)據(jù),用隨機(jī)抽樣一致性(RANdomSAmple Consensus,RANSAC)來計(jì)算出點(diǎn)對(duì)之間對(duì)應(yīng)的變換矩陣。得到的矩陣DSP同樣通過給出中斷信號(hào),F(xiàn)PGA捕獲中斷信號(hào),讀取得到矩陣參數(shù)。
請(qǐng)參見圖8,本發(fā)明裝置的工作過程為:外部模擬相機(jī)以cameralink格式輸入圖像數(shù)據(jù),圖像數(shù)據(jù)在像素時(shí)鐘驅(qū)動(dòng)下進(jìn)入下一級(jí)的SIFT特征檢測模塊,檢測的特征點(diǎn)信息傳遞給BRIEF特征描述提取模塊,提取出每個(gè)特征點(diǎn)的描述向量,得到的描述向量在特征匹配模塊中完成相鄰幀間的特征點(diǎn)匹配,特征匹配完成得到的是一組一組的匹配成功的匹配點(diǎn)對(duì),該匹配點(diǎn)對(duì)存儲(chǔ)在FIFO中,由DSP取出匹配點(diǎn)數(shù)據(jù),使用RANSAC算法計(jì)算得到矩陣形式的相鄰幀圖像的幾何變換關(guān)系,再由FPGA得到這個(gè)矩陣數(shù)據(jù),F(xiàn)PGA根據(jù)矩陣變換關(guān)系,結(jié)合前幀跟蹤點(diǎn)坐標(biāo),得到當(dāng)前幀跟蹤點(diǎn)坐標(biāo)范圍,灰度相關(guān)精確匹配模塊在該坐標(biāo)的鄰域,做灰度相關(guān)精確匹配定位跟蹤點(diǎn)。最終的跟蹤點(diǎn)與圖像疊加后顯示輸出。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。