基于數(shù)字電路和稀疏點(diǎn)配準(zhǔn)的零延遲電子穩(wěn)像方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及圖像處理領(lǐng)域,尤其是涉及一種基于數(shù)字電路和稀疏點(diǎn)配準(zhǔn)的 零延遲電子穩(wěn)像方法。
【背景技術(shù)】
[0002] 無論是手持?jǐn)z像頭,還是汽車、飛機(jī)上的攝像設(shè)備,都不可避免地存在攝像頭的抖 動(dòng),從而造成視頻圖像的抖動(dòng),這給觀測和后續(xù)處理帶來不便。為了消除或減弱圖像的抖 動(dòng),穩(wěn)像技術(shù)應(yīng)運(yùn)而生。傳統(tǒng)的機(jī)械穩(wěn)像、光學(xué)穩(wěn)像技術(shù)通常需要陀螺、伺服系統(tǒng)等昂貴的 設(shè)備。相比之下,電子穩(wěn)像技術(shù)完全依靠圖像處理來消除視頻的抖動(dòng),不僅能夠降低成本, 而且能夠減小系統(tǒng)的體積和重量。
[0003] 雖然電子穩(wěn)像技術(shù)已經(jīng)有將近30年的發(fā)展歷史,但是由于圖像處理涉及到巨大 的運(yùn)算量,計(jì)算的實(shí)時(shí)性仍然是制約電子穩(wěn)像技術(shù)發(fā)展的主要瓶頸。電子穩(wěn)像算法通常包 括圖像預(yù)處理、幀間特征配準(zhǔn)、低通濾波(分離高頻抖動(dòng))、抖動(dòng)補(bǔ)償四個(gè)步驟。其中,圖像 預(yù)處理和幀間特征配準(zhǔn)占據(jù)了 90%以上的計(jì)算量,而圖像預(yù)處理、幀間特征配準(zhǔn)、抖動(dòng)補(bǔ)償 這三個(gè)步驟則占據(jù)了 99%以上的計(jì)算量。因此,只有徹底解決這三個(gè)步驟的計(jì)算實(shí)時(shí)性問 題,才能從根本上解決電子穩(wěn)像的瓶頸問題,使實(shí)時(shí)電子穩(wěn)像技術(shù)得到廣泛應(yīng)用。
[0004] 在以CPU為核心的傳統(tǒng)計(jì)算平臺上,人們設(shè)計(jì)了各種電子穩(wěn)像算法,力求降低計(jì) 算量,提高實(shí)時(shí)性。對于幀間特征配準(zhǔn),代表性的算法有灰度投影法、塊匹配法、相位法、光 流場法、位平面法、特征點(diǎn)匹配法等等。當(dāng)攝像頭發(fā)生大幅度旋轉(zhuǎn)抖動(dòng)時(shí),以灰度投影法為 代表的許多方法都會(huì)失效。光流場法計(jì)算量巨大,難以實(shí)時(shí)計(jì)算。雖然特征點(diǎn)匹配法能夠 在大幅度旋轉(zhuǎn)和平移下實(shí)現(xiàn)準(zhǔn)確的幀間特征配準(zhǔn),但是其計(jì)算實(shí)時(shí)性仍然有待提高。
[0005] 從這些年的發(fā)展來看,無論CPU的性能如何提高,如果僅僅依靠CPU的串行指令 計(jì)算來處理圖像和視頻數(shù)據(jù),實(shí)現(xiàn)高性能的實(shí)時(shí)電子穩(wěn)像仍然是一件非常困難的事情。特 別是對于高分辨率的圖像和視頻,CPU的局限性就更加明顯。為此,人們將目光轉(zhuǎn)向并行計(jì) 算。GPU(GraphicsProcessingUnit,圖形處理單元)和FPGA(FieldProgrammableGate Array,在線可編程邏輯陣列)是兩類具有并行計(jì)算能力的器件。其中,GPU是由許多小計(jì)算 單元構(gòu)成的陣列,而FPGA則直接用邏輯門、觸發(fā)器等底層元件構(gòu)成的數(shù)字電路來實(shí)現(xiàn)計(jì)算 功能。由于FPGA是一種完全徹底的硬件計(jì)算,其功耗低于GPU,而計(jì)算的并行性高于GPU。 如果采用FPGA進(jìn)行開發(fā),有望通過低功耗的硬件并行計(jì)算實(shí)現(xiàn)高速的實(shí)時(shí)圖像處理。因 此,盡管FPGA的開發(fā)難度很大,人們?nèi)匀粓?jiān)持不懈地進(jìn)行了基于FPGA的圖像處理和電子穩(wěn) 像研究,參見《基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)》,DonaldG.Bailey著,原魁、何文浩、 肖晗譯,電子工業(yè)出版社,2013,ISBN:9787121195976.
[0006] -些研究者已將位平面法或其改進(jìn)版本實(shí)現(xiàn)在了FPGA上,能夠補(bǔ)償圖像的平移 抖動(dòng),而對于圖像的旋轉(zhuǎn)抖動(dòng)仍然無能為力。要檢測和補(bǔ)償圖像的旋轉(zhuǎn)抖動(dòng),最有效的方法 還是特征點(diǎn)匹配法。但由于特征點(diǎn)的檢測、描述符向量的提取、匹配搜索都需要很大的計(jì)算 量,并且步驟復(fù)雜,不易在FPGA上實(shí)現(xiàn),一些研究者采用了FPGA加多個(gè)DSP的系統(tǒng)方案,將 圖像預(yù)處理放在FPGA上,而將其余的計(jì)算都交給DSP們?nèi)ネ瓿伞_@種方案本質(zhì)上還是一種 多CPU的計(jì)算方案,對FPGA的計(jì)算能力開發(fā)得還是很不充分。
[0007] 對于如何用FPGA檢測特征點(diǎn),一些學(xué)者進(jìn)行了專門的研究,參見HanXiao,Wenhao He,KuiYuan,etal.,''Real-timeSceneRecognitiononEmbeddedSystemwithSIFT KeypointsandaNewDescriptor,"in2013IEEEInternationalConferenceon MechatronicsandAutomation, 2013,pp. 1317-1324.肖哈,〃基于FPGA與DSP的SIFT特 征點(diǎn)檢測與匹配方法研究,"博士學(xué)位論文,北京:中國科學(xué)院自動(dòng)化研究所,中國科學(xué) 院研究生院,2011.然而,現(xiàn)有的方法僅能用FPGA進(jìn)行特征點(diǎn)的位置檢測,或者用FPGA輔 助CPU進(jìn)行描述符向量的提取計(jì)算,對于匹配搜索的任務(wù),則只能交由CPU來完成。
[0008] 如果能將圖像預(yù)處理、特征點(diǎn)的檢測、特征描述符的提取、匹配特征點(diǎn)的搜索這一 系列計(jì)算任務(wù)都實(shí)現(xiàn)在FPGA上,用一條硬件流水線完成計(jì)算,那么勢必極大地提高計(jì)算的 并行性。然而,這一設(shè)想確實(shí)難以實(shí)現(xiàn)。其根本原因在于特征點(diǎn)的數(shù)量隨場景內(nèi)容而變化, 有的場景特征點(diǎn)太多,有的場景則太少,而且很多特征點(diǎn)的位置都不夠穩(wěn)定。
[0009] 另一方面,如圖1所示,傳統(tǒng)的電子穩(wěn)像系統(tǒng)都是在采集完一幀圖像之后才對其 進(jìn)行處理,這樣每一幀圖像所占用的時(shí)間都由三個(gè)部分組成:圖像采集時(shí)間、處理時(shí)間、存 儲結(jié)果時(shí)間。由于處理圖像和存儲結(jié)果都至少要將圖像中的所有像素掃描一遍,因此傳統(tǒng) 電子穩(wěn)像系統(tǒng)的延遲都在2幀以上。
[0010] 有鑒于此,特提出本發(fā)明。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明實(shí)施例的主要目的在于提供一種基于數(shù)字電路和稀疏點(diǎn)配準(zhǔn)的零延遲電 子穩(wěn)像方法,以解決如何提高電子穩(wěn)像實(shí)時(shí)性的問題。
[0012] 為了實(shí)現(xiàn)上述目的,采用如下技術(shù)方案:
[0013] 根據(jù)一個(gè)方面,提供一種基于數(shù)字電路和稀疏點(diǎn)配準(zhǔn)的零延遲電子穩(wěn)像方法,其 中,以數(shù)字電路為計(jì)算主體,在通用處理器的協(xié)助下,實(shí)現(xiàn)如下計(jì)算步驟:
[0014] 步驟1 :基于所述數(shù)字電路進(jìn)行圖像預(yù)處理;
[0015] 其中,構(gòu)建流水線,對輸入的數(shù)字化圖像信號進(jìn)行處理,首先通過濾波來平滑圖 像,然后計(jì)算所述平滑圖像中每一點(diǎn)處的灰度梯度,最后通過一定的梯度閾值將所述平滑 圖像二值化,得到由粗線條勾勒出來的二值圖像;
[0016] 步驟2 :基于所述數(shù)字電路提取描述符向量;
[0017] 其中,繼續(xù)構(gòu)建流水線,其輸入信號為上一步驟得到的所述二值圖像,每個(gè)像素用 一個(gè)比特表示;首先在所述二值圖像上開辟一個(gè)滑動(dòng)窗口;然后對所述滑動(dòng)窗口內(nèi)的局部 二值圖像提取描述符向量;本步驟與上一步驟連成一條流水線,隨著原始圖像像素的一個(gè) 個(gè)輸入,經(jīng)過一定的所述流水線的延遲,得到圖像中以每個(gè)像素位置為中心的一個(gè)個(gè)局部 圖像描述符向量;
[0018] 步驟3 :基于所述數(shù)字電路選取基準(zhǔn)點(diǎn);
[0019] 其中,對所述二值圖像進(jìn)行區(qū)域劃分,在所述流水線處理過程中,對同一個(gè)區(qū)域內(nèi) 不同像素位置的描述符向量進(jìn)行比較和甄別,將各維度數(shù)值方差最大的那個(gè)描述符向量所 對應(yīng)的像素位置作為相應(yīng)區(qū)域內(nèi)的基準(zhǔn)點(diǎn),根據(jù)所述基準(zhǔn)點(diǎn)的描述符向量間接估算所述滑 動(dòng)窗口內(nèi)的黑白像素個(gè)數(shù),并據(jù)此判斷該基準(zhǔn)點(diǎn)是否有效,將每個(gè)區(qū)域的基準(zhǔn)點(diǎn)坐標(biāo)及對 應(yīng)的描述符向量和基準(zhǔn)點(diǎn)有效性判斷結(jié)果都存儲下來;本步驟與前述步驟連成一條流水 線;
[0020] 步驟4 :基于所述數(shù)字電路搜索匹配點(diǎn);
[0021] 其中,將處理上一幀時(shí)存儲下來的所述所有基準(zhǔn)點(diǎn)坐標(biāo)和對應(yīng)的描述符向量從所 在寄存器的輸出端引出,然后在當(dāng)前幀中尋找所述基準(zhǔn)點(diǎn)的匹配點(diǎn);以所述每個(gè)基準(zhǔn)點(diǎn)為 中心,在一定的半徑范圍內(nèi)尋找所述匹配點(diǎn),以描述符向量的距離作為匹配標(biāo)準(zhǔn),在所述一 定的半徑范圍內(nèi)尋找與所述基準(zhǔn)點(diǎn)描述符向量距離最小的那個(gè)描述符向量,其所對應(yīng)的像 素位置就是該基準(zhǔn)點(diǎn)的匹配點(diǎn);本步驟的計(jì)算流水線接在步驟2后面,與步驟3并行,也就 是說所述數(shù)字電路的計(jì)算流水線經(jīng)過所述步驟1、所述步驟2之后就產(chǎn)生了分叉,分別流向 所述步驟3、所述步驟4兩個(gè)并行的計(jì)算分支,其中所述步驟3得到供下一幀使用的所有基 準(zhǔn)點(diǎn),所述步驟4得到上一幀的每個(gè)基準(zhǔn)點(diǎn)在當(dāng)前幀的匹配點(diǎn);
[0022] 步驟5 :基于所述通用處理器進(jìn)行低通濾波;
[0023]其中,所述數(shù)字電路在處理完每一幀二值圖像之前,將所述上一幀中的基準(zhǔn)點(diǎn)坐 標(biāo)及所述當(dāng)前幀中所對應(yīng)的匹配點(diǎn)坐標(biāo)都傳給所述通用處理器,所述通用處理器在此基礎(chǔ) 上通過求解方程組得到幀間變換參數(shù),然后結(jié)合歷史記錄完成低通濾波計(jì)算,分離出高頻 抖動(dòng),并將下一幀的抖動(dòng)補(bǔ)償參數(shù)傳給所述