基于fpga的卷積與時序優(yōu)化的圖像關(guān)鍵點檢測的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及圖像處理技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 尺度不變特征轉(zhuǎn)換(ScaleInvariantFea1:ureTransform,SIFT)是一種同時具 有平移、旋轉(zhuǎn)、尺度不變性的特征點檢測和匹配算法,對光照和仿射變換也具有一定程度的 魯椿性,因而成為計算機視覺中一種著名的算法。此算法是由化vidG.Lowe于2004年提 出的。利用SIFT算法獲取圖像特征的主要計算步驟如下:
[0003] 步驟一;尺度空間極值檢測;第一步是在全部尺度范圍進行捜索,通過高斯差分 方法獲得潛在的尺度、方向不變的關(guān)鍵點。
[0004] 步驟二;關(guān)鍵點定位;在每個關(guān)鍵點上都應(yīng)用一個詳盡的模版確定最終的位置與 尺度。關(guān)鍵點根據(jù)測量它們的穩(wěn)定性來選擇。
[0005] 步驟關(guān)鍵點方向分配;高斯差分圖像的梯度幅值與方向可W通過每個特征點 各自的尺度決定,所有接下來的步驟都是在已知轉(zhuǎn)換圖像的方向、尺度W及位置的基礎(chǔ)上 完成的,從而提供該些變換的不變性。
[000引步驟四:生成特征描述子;已知圖像的梯度可W在已選的每一個關(guān)鍵點的鄰域內(nèi) 進行測量,換言之,可W允許大范圍的局部形狀崎變和亮度變化。
[0007] 現(xiàn)有的實現(xiàn)方法基本都是基于軟件的操作,由于SIFT算法計算量、存儲量巨大, 使該算法對圖像處理的實時性難W保證。故合理地結(jié)合硬件方法進行處理是非常有必要 的。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明是為了解決現(xiàn)有的基于軟件的圖像特征點檢測方法由于計算量大導(dǎo)致無 法實時進行圖像處理的問題,從而提供一種基于FPGA的卷積與時序優(yōu)化的圖像關(guān)鍵點檢 測的方法。
[0009] 本發(fā)明所述的基于FPGA的卷積與時序優(yōu)化的圖像關(guān)鍵點檢測的方法,該方法的 步驟為:
[0010] 步驟一、構(gòu)建高斯金字塔:
[0011] 采用標(biāo)準(zhǔn)差0不同的高斯函數(shù)G(X,y,0 )分別對待檢測圖像進行卷積處理,構(gòu)造 高斯尺度空間函數(shù)L(x,y,0 ),將高斯尺度空間劃分為0組,每組分為S層;其中,X和y分 別為高斯函數(shù)的自變量和變量;0、S均為正整數(shù);
[0012] 采用標(biāo)準(zhǔn)差0不同的高斯函數(shù)G(x,y,0)分別對待檢測圖像進行卷積處理的方 法為:
[0013] 利用高斯核可分離的特性利用FPGA處理器,將二維卷積轉(zhuǎn)化為橫縱兩個一維卷 積對圖像進行處理;二維高斯核分解成為橫縱兩個一維高斯函數(shù)的卷積通過公式:
[0014]G(x,y,〇)=h(x,〇)*v(y,〇)
[0017] 并采用基于FPGA的行卷積模塊對待檢測圖像進行行卷積處理,再經(jīng)行列轉(zhuǎn)換模 塊對行卷積圖像信息進行轉(zhuǎn)換,轉(zhuǎn)換后的圖像信號經(jīng)基于FPGA的列卷積模塊對圖像信息 的列卷積處理;
[0018] 步驟二、構(gòu)造差分高斯尺度空間函數(shù);
[0019] 高斯尺度空間的每組中相鄰尺度圖像層的差為差分高斯尺度空間函數(shù) D(x,y, 0 );
[0020] 步驟s、在差分高斯尺度空間中找到極值點;
[0021] 采用基于FPGA的灰度值大小比較模塊對每一個采樣點的灰度值和它所有相鄰的 點灰度值進行比較,若一個點的灰度值如果在差分高斯尺度空間本層W及上層和下層的鄰 域中灰度值都是最大或最小值時,采用判斷模塊對基于FPGA的灰度值大小比較模塊輸出 的最大或最小值是否位于中間層進行判斷,如果是,則該最大值或最小值點作為圖像在該 尺度下的極值點輸出,如果不是,刪除該最大值或最小值點;
[0022] 步驟四、篩選特征點;
[002引在檢測到的極值點中,去除對比度低的點和不穩(wěn)定的邊緣響應(yīng)點,完成基于FPGA的卷積與時序優(yōu)化的圖像關(guān)鍵點檢測。
[0024] 本發(fā)明在生成圖像高斯尺度空間過程中,本發(fā)明引入了一種新的時序控制方法, 充分利用了高斯金字塔每組圖像采樣過程中的空閑時間,可實現(xiàn)同時并行處理所有組圖像 的卷積,并且隨著處理圖像組數(shù)的增加,硬件使用資源數(shù)大致為恒定值。同時還利用了高斯 核的可分離性,將二維卷積運算巧妙地轉(zhuǎn)化為橫縱一維卷積運算,充分利用了FPGA處理信 號的優(yōu)勢,很大程度地節(jié)省了系統(tǒng)存儲資源,提高了運算速度,可W達到實時圖像處理的目 的。
【附圖說明】
[00巧]圖1是本發(fā)明的流程示意圖;
[0026] 圖2是硬件實現(xiàn)SIFT算法關(guān)鍵點檢測部分原理示意圖;
[0027] 圖3是高斯核可分離性的原理示意圖;
[0028] 圖4是本發(fā)明基于高斯核的可分離性提出的圖像卷積模塊框圖;
[0029] 圖5是本發(fā)明提出的一維卷積模塊示意圖;
[0030] 圖6是本發(fā)明提出的用于連接連個一維卷積模塊的橫縱卷積轉(zhuǎn)換模塊示意圖;
[0031] 圖7是本發(fā)明引入的一種新的時序控制方法原理圖;
[0032] 圖8是本發(fā)明差分高斯空間產(chǎn)生框圖;
[0033]圖9是本發(fā)明的局部極值檢測模塊整體示意圖;
[0034] 圖10是本發(fā)明的極值檢測子模塊細節(jié)放大示意圖。
【具體實施方式】
【具體實施方式】 [0035] 一、結(jié)合圖1說明本實施方式,本實施方式所述的基于FPGA的卷積 與時序優(yōu)化的圖像關(guān)鍵點檢測的方法,該方法的步驟為:
[0036] 步驟一、構(gòu)建高斯金字塔;
[0037] 采用標(biāo)準(zhǔn)差0不同的高斯函數(shù)G(x,y,0 )分別對待檢測圖像進行卷積處理,構(gòu)造 高斯尺度空間函數(shù)L(x,y,0 ),將高斯尺度空間劃分為0組,每組分為S層;其中,X和y分 別為高斯函數(shù)的自變量和變量;0、S均為正整數(shù);
[003引采用標(biāo)準(zhǔn)差0不同的高斯函數(shù)G(x,y,0)分別對待檢測圖像進行卷積處理的方 法為:
[0039] 利用高斯核可分離的特性利用FPGA處理器,將二維卷積轉(zhuǎn)化為橫縱兩個一維卷 積對圖像進行處理;二維高斯核分解成為橫縱兩個一維高斯函數(shù)的卷積通過公式:
[0043] 并采用基于FPGA的行卷積模塊對待檢測圖像進行行卷積處理,再經(jīng)行列轉(zhuǎn)換模 塊對行卷積圖像信息進行轉(zhuǎn)換,轉(zhuǎn)換后的圖像信號經(jīng)基于FPGA的列卷積模塊對圖像信息 的列卷積處理;
[0044] 步驟二、構(gòu)造差分高斯尺度空間值ifferenceofGuassian,DoG)函數(shù);
[0045] 高斯尺度空間的每組中相鄰尺度圖像層的差為差分高斯尺度空間函數(shù) D(x,y, 0 );
[0046] 步驟S、在差分高斯尺度空間中找到極值點:
[0047] 采用基于FPGA的灰度值大小比較模塊對每一個采樣點的灰度值和它所有相鄰的 點灰度值進行比較,若一個點的灰度值如果在差分高斯尺度空間本層W及上層和下層的鄰 域中灰度值都是最大或最小值時,采用判斷模塊對基于FPGA的灰度值大小比較模塊輸出 的最大或最小值是否位于中間層進行判斷,如果是,則該最大值或最小值點作為圖像在該 尺度下的極值點輸出,如果不是,刪除該最大值或最小值點;
[0048] 步驟四、篩選特征點:
[004引在檢測到的極值點中,去除對比度低的點和不穩(wěn)定的邊緣響應(yīng)點,完成基于FPGA的卷積與時序優(yōu)化的圖像關(guān)鍵點檢測。
[0050] 根據(jù)說明書附圖5具體說明本實施方式,該圖表示的是步驟一中采用的橫縱一維 卷積的裝置框圖;由于兩次卷積中間采用了橫縱轉(zhuǎn)換裝置,故此裝置中橫縱卷積模塊相同。 在橫縱卷積模塊中,輸入的圖像先W行的形式輸入進圖中Buffer裝置,W實現(xiàn)實時卷積并 輸出結(jié)果的目的;同時,橫縱卷積模塊還充分利用了FPGA的優(yōu)勢,W查表的方式代替圖像 與高斯核卷積的過程。因為高斯核的每個系數(shù)都是小于1大于0的小數(shù),如果在硬件實現(xiàn) 過程中直接用乘法器運算圖像像素灰度值與高斯系數(shù)的乘積結(jié)果,就會帶來很大的誤差, 同時也會嚴重影響圖像處理速度。而查表的方式是將圖像灰度值0~255與高斯核系數(shù)相 乘的結(jié)果存入一個8bitsX256words的只讀存儲器ROM中,該就可W完全實現(xiàn)圖像卷積的 實時處理目的。
[0051] 根據(jù)說明書附圖6采用橫縱卷積兩個一維高斯函數(shù)代替二維高斯核對圖像進行 卷積,大大減少了計算量。然而,在圖像進行該兩次卷積中間還需要添加橫縱轉(zhuǎn)換裝置,W 達到對圖像實行橫縱卷積的目的。附圖6就是本發(fā)明中實現(xiàn)圖像橫縱卷積的轉(zhuǎn)換裝置硬件 實現(xiàn)框圖。為了實現(xiàn)圖像橫縱轉(zhuǎn)換,本方法利用FPGA的處理優(yōu)勢,先將與第一個一維高斯 函數(shù)卷積后的圖像每個像素灰度值按行輸入到一個隨機存取存儲器RAM中,然后按列讀取 圖像每一列的灰度值,將其輸出給下一個卷積模塊,對圖像進行按列的縱向卷積。
[0052] 本發(fā)明采用了如附圖1所述的時序?qū)γ拷M高斯尺度空間的圖像進行處理;此時序 方式是將第一組的圖像采樣率降為原來的1/2,然后將其他組的圖像按照某種特殊的順序 在第一組處于空閑時進行工作,該樣就能保證裝置一直處于工作狀態(tài),同時與現(xiàn)有方法相 比也減少了硬件浪費。在該種時序下,第k組圖像處理的時刻如下式所示:
[0053] Sk: 3k, 3k+T。? 4\ak+2 (T。? 4氣,...,ak+n(T。? 4氣,......
[0054] 其中,ak為第k組圖像第一次被采樣的時刻,T。是第一組圖像的采樣周期。
[00巧]現(xiàn)有方法在處理高斯尺度空間的一組圖像后,圖像都是W2倍降采樣得到下一組 圖像。相鄰兩組圖像的關(guān)系如下式所述:
[0056] 1。4 (X,y)=I〇(2x,巧)
[0057] 其中,I。表示高斯尺度空間的第0組圖像;
[005引所W每組圖像經(jīng)2倍降采樣后圖像像素的個數(shù)都會減少為上一組的1/4。那么,每 處理一組圖像,下一組的采樣率就會降為上一組