新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的實時視頻信號處理平臺的設(shè)計,包括電路圖及源代碼

基于FPGA的實時視頻信號處理平臺的設(shè)計,包括電路圖及源代碼

作者: 時間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201706/348676.htm

摘要:

介紹了一種實時視頻信號處理平臺的設(shè)計,該系統(tǒng)接收低幀率數(shù)字YCbCr視頻信號,利用一片DDR2 SDRAM存儲器作為幀緩存,對接收的視頻信號進(jìn)行格式轉(zhuǎn)換、、圖像放大、色空間轉(zhuǎn)換,使輸入的視頻信號可以在VGA顯示器上實時顯示;并研究了光學(xué)鏡頭中變倍電機(jī)和聚焦電機(jī)的控制原理,實現(xiàn)了步進(jìn)電機(jī)初始位置檢測、圖像變倍時變倍電機(jī)與聚焦電機(jī)的配合驅(qū)動,為了適應(yīng)不同物距變倍跟蹤,實現(xiàn)了灰度差分算法,實時計算當(dāng)前幀圖像的聚焦評價函數(shù)值,采用爬山搜索策略實現(xiàn)對聚焦電機(jī)的控制,使當(dāng)前圖像的聚焦函數(shù)值最大,實現(xiàn)圖像的。整個設(shè)計采用VHDL語言實現(xiàn),在Xilinx XUPV5-LX110T FPGA開發(fā)板上驗證。利用該平臺還可實現(xiàn)圖像的壓縮編碼、解碼、本地存儲及以太網(wǎng)傳輸?shù)裙δ堋?/p>

關(guān)鍵詞:;DDR2 SDRAM;;;FPGA;

1. 引言

隨著半導(dǎo)體技術(shù)的發(fā)展,圖像傳感器的分辨率有了很大提高,但由于處理數(shù)據(jù)量巨大,圖像傳感器輸出高分辨率圖像時幀率一般較低,其輸出圖像不能直接在VGA顯示器上顯示。為了使高分辨率圖像傳感器采集的圖像在VGA顯示器上實時顯示,需要對其輸出的圖像進(jìn)行、色空間轉(zhuǎn)換等后端處理。目前,市場上常用的芯片有PixelWorks公司的PW1226、Tvia公司的TrueView5725、Averlogic公司的AL250、威斯達(dá)公司的WSC2000等。采用上述芯片可實現(xiàn)視頻圖像的幀率提升、圖像增強(qiáng)等功能,但由于其功能固定,不能適用于一些特殊應(yīng)用場合,如圖像存儲、自動聚焦等。

指內(nèi)置光學(xué)鏡頭,具有變倍、自動聚焦功能的攝像機(jī),其結(jié)構(gòu)小巧、使用方便、監(jiān)控范圍廣,已廣泛應(yīng)用在教學(xué)視頻展臺、視頻監(jiān)控等領(lǐng)域。變焦控制可實現(xiàn)圖像的變倍、自動聚焦,是一體化攝像機(jī)中的關(guān)鍵技術(shù)之一。步進(jìn)電機(jī)可將電脈沖信號轉(zhuǎn)換成角位移,每接收一個脈沖信號就可驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)動一個固定角度,實現(xiàn)物體的準(zhǔn)確定位,通過控制脈沖的頻率可控制電機(jī)轉(zhuǎn)動的速度,步進(jìn)電機(jī)已廣泛應(yīng)用于高精度控制系統(tǒng)中。一體化攝像機(jī)光學(xué)鏡頭中包含變倍步進(jìn)電機(jī)與聚焦步進(jìn)電機(jī),變倍電機(jī)轉(zhuǎn)動時,為使圖像聚焦清晰,聚焦電機(jī)也應(yīng)隨之轉(zhuǎn)動,具體轉(zhuǎn)動步數(shù)與物距有關(guān),具體參數(shù)可由鏡頭生產(chǎn)廠家提供的變焦跟蹤曲線獲得。為了適應(yīng)不同物距的清晰成像,變倍跟蹤結(jié)束后,還應(yīng)進(jìn)行自動聚焦,以顯示清晰的圖像。

圖像聚焦程度與其高頻分量有關(guān),圖像聚焦時,其包含的高頻分量最大,圖像最清晰,通常采用聚焦評價函數(shù)來描述圖像的清晰程度。常用的聚焦評價函數(shù)主要有:高頻分量法、平滑法、閾值積分法、灰度差分法、拉普拉斯像能函數(shù)等。為了提高聚焦速度,本項目采用灰度差分法實時計算每場圖像的聚焦函數(shù)值,判斷當(dāng)前圖像的清晰與否,采用爬山搜索策略,實現(xiàn)圖像的快速自動聚焦。快速自動聚焦的實現(xiàn)與變倍跟蹤曲線的精度、自動聚焦算法的優(yōu)劣、搜索策略、電機(jī)驅(qū)動速度等因素有關(guān)。

由于FPGA 器件的可并行處理能力及其可重復(fù)在系統(tǒng)編程的靈活性,其應(yīng)用越來越廣泛。同時隨著微處理器、專用邏輯器件、以及DSP算法以IP Core的形式嵌入到FPGA中,F(xiàn)PGA可實現(xiàn)的功能越來越強(qiáng),F(xiàn)PGA在現(xiàn)代電子系統(tǒng)設(shè)計中正發(fā)揮著越來越重要的作用。本項目設(shè)計的實時視頻信號處理平臺利用XUPV5-LX110T FPGA開發(fā)板,并自制了視頻圖像采集板,采用22倍一體化光學(xué)鏡頭,利用FPGA開發(fā)板上的一片DDR2存儲器作為幀緩存,已實現(xiàn)的圖像的幀率提升、圖像放大,并實現(xiàn)灰度差分自動聚焦算法,實時計算當(dāng)前圖像的高頻分量,利用爬山搜索策略控制聚焦步進(jìn)電機(jī)的轉(zhuǎn)動,實現(xiàn)圖像的自動聚焦,在該開發(fā)平臺上還可實現(xiàn)視頻圖像的壓縮編碼、解壓縮、本地存儲、網(wǎng)絡(luò)傳輸?shù)裙δ堋?/p>

2.設(shè)計性能指標(biāo)

該平臺可將CMOS彩色圖像傳感器輸出的分辨率為736*576、幀率為12Hz的8位YCbCr視頻信號放大到分辨率為1024*768、幀率為60Hz的24位RGB信號,經(jīng)過Xilinx XUP Virtex-5LX110T開發(fā)板上的DVI轉(zhuǎn)換器(CHRONTEL CH7301),可通過DVI接口在顯示器上直接顯示,或通過DVI-VGA轉(zhuǎn)接口在VGA接口的顯示器上顯示。同時,實現(xiàn)了圖像的變倍跟蹤、自動聚焦功能,具體性能指標(biāo)如下:

(1)輸入視頻圖像分辨率736*576、幀率12Hz、8位YCbCr視頻信號;

(2)輸出圖像分辨率1024*768、幀率60Hz,以DVI或VGA接口輸出;

(3)具有黑白/彩色轉(zhuǎn)換、圖像凍結(jié)、OSD等功能;

(4)16倍光學(xué)變倍;

(5)變倍放大后具有自動聚焦功能,自動聚焦執(zhí)行時間在2秒以內(nèi);

(6)支持輸入圖像的壓縮編碼、解碼、本地硬盤存儲及以太網(wǎng)傳輸。

3. 系統(tǒng)方案

系統(tǒng)結(jié)構(gòu)如圖1所示。

圖像傳感器輸出分辨率為736*576、幀率為12Hz的8位YCbCr視頻信號,并輸入到FPGA,F(xiàn)PGA利用外部一片DDR2存儲器內(nèi)的兩個Bank空間作為幀緩存,采用乒乓存儲機(jī)制將輸入的視頻幀率由12Hz提升到60Hz,將視頻信號由YCbCr空間轉(zhuǎn)換到RGB色空間,分辨率由736*576放大到1024*768,并產(chǎn)生1024*768@60Hz的行場時序掃描信號,F(xiàn)PGA輸出的數(shù)字視頻信號經(jīng)D/A轉(zhuǎn)換后,輸出到VGA接口,從而圖像傳感器采集的圖像可在VGA顯示器上實時顯示。

FPGA輸出變倍電機(jī)和聚焦電機(jī)驅(qū)動信號,并經(jīng)H橋驅(qū)動電路放大后輸出到光學(xué)鏡頭,同時,光學(xué)鏡頭將變倍電機(jī)和聚焦電機(jī)的位置檢測信號反饋輸出到FPGA,用以檢測當(dāng)前電機(jī)位置。

系統(tǒng)上電后,F(xiàn)PGA判斷光學(xué)鏡頭返回的變倍電機(jī)位置檢測信號和聚焦電機(jī)返回的檢測信號,若檢測信號為低電平則驅(qū)動電機(jī)向靠近圖像傳感器方向轉(zhuǎn)動,直至檢測信號為高電平,在電平跳變處停止,同理,若檢測信號為高電平,則驅(qū)動電機(jī)向遠(yuǎn)離傳感器方向轉(zhuǎn)動,直至檢測信號為低電平,在電平跳變處停止,以上則完成對電機(jī)的初始化。初始化結(jié)束后,則驅(qū)動電機(jī)轉(zhuǎn)動到一固定放大倍數(shù)位置。電機(jī)變倍時,變倍電機(jī)轉(zhuǎn)動一定步數(shù),同時驅(qū)動聚焦電機(jī)轉(zhuǎn)動對應(yīng)步數(shù),具體步數(shù)可根據(jù)變倍跟蹤曲線獲得,變倍結(jié)束后,F(xiàn)PGA從輸入的視頻信號中提取亮度Y信號,采用灰度差分聚焦算法,實時計算當(dāng)前幀圖像的高頻分量,圖像完全聚焦時,圖像聚焦評價函數(shù)值最大。利用爬山搜索策略,控制聚焦電機(jī)的轉(zhuǎn)動,使當(dāng)前圖像的聚焦函數(shù)值最大,即當(dāng)前圖像最清晰,從而實現(xiàn)了圖像的自動聚焦,從而可保證每次變倍結(jié)束后得到清晰的圖像。

該視頻信號處理平臺可對輸入的視頻圖像進(jìn)行壓縮編碼(H.264、AVS等算法),通過硬盤控制器模塊實現(xiàn)壓縮圖像的本地存儲,并通過內(nèi)部以太網(wǎng)控制器模塊將壓縮后的數(shù)據(jù)輸出到FPGA開發(fā)板上的以太網(wǎng)物理層芯片,進(jìn)而通過RJ45網(wǎng)絡(luò)接口進(jìn)行以太網(wǎng)傳輸,還可通過以太網(wǎng)接收壓縮的視頻數(shù)據(jù)流,進(jìn)行解碼,并通過后端處理在本地播放。

4. 系統(tǒng)設(shè)計

本項目采用現(xiàn)代EDA設(shè)計常用的“自頂向下”的設(shè)計方法,進(jìn)行功能劃分并按模塊化設(shè)計原則,F(xiàn)PGA內(nèi)部功能模塊如圖2所示。

數(shù)字視頻信號輸入到FPGA后,首先進(jìn)入前端處理模塊,前端處理模塊主要實現(xiàn)了對外部光學(xué)電機(jī)的控制,該模塊對輸入的視頻信號進(jìn)行格式轉(zhuǎn)換并提取亮度Y信號,根據(jù)亮度Y信號實現(xiàn)了灰度差分自動聚焦算法,并實現(xiàn)了步進(jìn)電機(jī)初始位置檢測、圖像變倍時變倍電機(jī)與聚焦電機(jī)的配合驅(qū)動,為了適應(yīng)不同物距變倍跟蹤,利用灰度差分自動聚焦算法獲得的當(dāng)前幀圖像的聚焦評價函數(shù)值,采用爬山搜索策略實現(xiàn)對聚焦電機(jī)的控制,使當(dāng)前圖像的聚焦函數(shù)值最大,實現(xiàn)圖像的自動聚焦。

圖像處理模塊可實現(xiàn)圖像的壓縮編碼(可實現(xiàn)H.264、AVS等壓縮算法)、本地硬盤存儲,并通過以太網(wǎng)控制器實現(xiàn)壓縮圖像的網(wǎng)絡(luò)傳輸,該模塊還可通過以太網(wǎng)接收壓縮視頻流,進(jìn)行解碼,并通過后端處理模塊進(jìn)行圖像顯示。

后端處理模塊接收前端處理模塊輸入的視頻信號,或接收圖像處理模塊解碼的視頻信號,主要實現(xiàn)了圖像的幀率提升、圖像放大、色空間轉(zhuǎn)換,使輸入的低幀率YCbCr視頻信號在DVI接口顯示器或VGA顯示器上實時顯示。下面詳細(xì)介紹各模塊的功能及實現(xiàn)方法。

  1. 前端處理模塊

該模塊接收輸入的YCbCr格式8位數(shù)字視頻信號,進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成16位YCbCr(4:2:2)格式,根據(jù)亮度Y信號,采用灰度差分算法計算當(dāng)前幀圖像的高頻分量。

該模塊輸出變倍電機(jī)和聚焦電機(jī)的驅(qū)動信號,經(jīng)H橋驅(qū)動放大電路后輸出到光學(xué)鏡頭,同時,光學(xué)鏡頭將變倍電機(jī)和聚焦電機(jī)的位置檢測信號反饋輸出到該模塊,用以檢測當(dāng)前電機(jī)位置。

系統(tǒng)工作時,首先判斷光學(xué)鏡頭返回的變倍電機(jī)位置檢測信號和聚焦電機(jī)返回的檢測信號,若檢測信號為低電平則驅(qū)動電機(jī)向靠近圖像傳感器方向轉(zhuǎn)動,直至檢測信號為高電平,在電平跳變處停止,同理,若檢測信號為高電平,則驅(qū)動電機(jī)向遠(yuǎn)離傳感器方向轉(zhuǎn)動,直至檢測信號為低電平,在電平跳變處停止,以上則完成對電機(jī)的初始化。初始化結(jié)束后,則驅(qū)動電機(jī)轉(zhuǎn)動到一固定放大倍數(shù)位置。電機(jī)變倍時,變倍電機(jī)轉(zhuǎn)動一定步數(shù),同時驅(qū)動聚焦電機(jī)轉(zhuǎn)動對應(yīng)步數(shù),具體步數(shù)可根據(jù)變倍跟蹤曲線獲得,變倍結(jié)束后,該模塊計算當(dāng)前場圖像的高頻分量,判斷當(dāng)前圖像的清晰度,并采用爬山搜索策略驅(qū)動聚焦電機(jī),以實現(xiàn)圖像的自動聚焦,從而可保證每次變倍結(jié)束后得到清晰的圖像。

前端處理模塊可分為以下功能子模塊:格式轉(zhuǎn)換、電機(jī)初始化、變倍跟蹤、搜索、自動聚焦算法、系統(tǒng)控制、電機(jī)驅(qū)動等,如圖3所示,下面將詳細(xì)介紹各模塊的實現(xiàn)方法。

  1. 格式轉(zhuǎn)換

該模塊功能是將輸入的8位視頻信號轉(zhuǎn)換成16位YCbCr(4:2:2)格式視頻信號。實現(xiàn)方法如下:在輸入視頻信號的行同步信號有效時,在第一個像素時鐘同步下,將第一個8位數(shù)據(jù)寫入8位寄存器1,第二個像素時鐘同步下,將第二個8位數(shù)據(jù)寫入8位寄存器3,同時將寄存器1的數(shù)據(jù)輸出到8位寄存器2,第三個像素時鐘同步下,將第三個8位輸入數(shù)據(jù)寫入寄存器1,同時,將寄存器2、寄存器3的數(shù)據(jù)寫入到16位寄存器4,一直按此規(guī)則進(jìn)行寫入,則寄存器4輸出16位YCbCr(4:2:2)格式數(shù)據(jù),輸出速率為原像素時鐘的2分頻。其內(nèi)部寄存器格式如圖4所示。

(2) 步進(jìn)電機(jī)初始化

該模塊功能是實現(xiàn)電機(jī)初始位置的判斷,并驅(qū)動電機(jī)轉(zhuǎn)動到某一固定位置。

由于每次系統(tǒng)掉電時,步進(jìn)電機(jī)的停止位置不固定,所以每次系統(tǒng)工作時,首先要進(jìn)行步進(jìn)電機(jī)位置的判斷并驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)到某一固定位置,如一倍放大位置。步進(jìn)電機(jī)中用電機(jī)位置檢測器來判斷電機(jī)的位置,位置檢測器電路如圖5所示。其工作原理為,當(dāng)電機(jī)驅(qū)動的檢測器運動到發(fā)光二極管與光敏三極管之間時,阻擋二極管發(fā)出的光線,則三極管處于截止?fàn)顟B(tài),輸出信號為高電平;當(dāng)檢測器離開中間位置時,發(fā)光二極管使三極管導(dǎo)通,則輸出信號為低電平。由于二極管和三極管位置固定,所以輸出信號電平跳變位置是固定的。

圖5 電機(jī)位置檢測電路

系統(tǒng)上電后,根據(jù)電機(jī)位置檢測器返回的狀態(tài)信號判斷當(dāng)前電機(jī)的運動位置,若返回低電平則驅(qū)動電機(jī)向圖像傳感器方向移動,直至檢測信號為高電平,在檢測信號跳變時,停止電機(jī)轉(zhuǎn)動;若檢測信號為高電平,則驅(qū)動電機(jī)向遠(yuǎn)離傳感器方向移動,直至檢測信號為低電平,在檢測信號跳變時,停止電機(jī)轉(zhuǎn)動,由于檢測信號跳變位置是固定的,所以系統(tǒng)上電后可驅(qū)動電機(jī)轉(zhuǎn)動到預(yù)設(shè)置的固定位置。

(3) 變倍跟蹤

(4) 自動聚焦算法

通常采用聚焦評價函數(shù)來描述圖像的清晰程度,常用的聚焦評價函數(shù)有:高頻分量法、平滑法、閾值積分法、灰度差分法、拉普拉斯像能函數(shù)等?;叶炔罘址ɡ脠D像的相鄰像素灰度值差的絕對值之和作為聚焦評價函數(shù),灰度差分算法實現(xiàn)簡單,由于沒有復(fù)雜的運算,易于在FPGA上實現(xiàn),算法公式描述為:

該算法實現(xiàn)時,緩存四行數(shù)據(jù),實現(xiàn)內(nèi)部功能模塊如圖6所示。

圖6 自動聚焦算法實現(xiàn)內(nèi)部模塊

讀寫控制模塊控制四個行緩存中數(shù)據(jù)的讀寫,每場圖像第一行數(shù)據(jù)寫入到行緩存1,第二行數(shù)據(jù)寫入到行緩存2,第三行數(shù)據(jù)寫入到行緩存3,第四行數(shù)據(jù)寫入到行緩存4,同時,將行緩存1、2、3中數(shù)據(jù)讀出到算法實現(xiàn)模塊,第五行數(shù)據(jù)寫入到行緩存1,同時,將行緩存2、3、4中數(shù)據(jù)讀出到算法實現(xiàn)模塊,按此讀寫規(guī)律進(jìn)行直至一場圖像結(jié)束。算法實現(xiàn)模塊接收從行緩存中讀出的數(shù)據(jù),并將每個行緩存讀出的數(shù)據(jù)賦值給內(nèi)部相連的三個寄存器,則第二行中間寄存器對應(yīng)算法中的像素,根據(jù)聚焦評價函數(shù)值公式即可求出當(dāng)前場的聚焦函數(shù)值,并將當(dāng)前場圖像的聚焦函數(shù)值與前一場圖像的聚焦函數(shù)值相比較,如當(dāng)前場圖像的聚焦函數(shù)值大于前一場圖像聚焦函數(shù)值,則輸出比較信號為高電平,表示當(dāng)前場比前一場圖像清晰,反之輸出低電平,表示當(dāng)前場圖像比前一場圖像模糊。

(5) 搜索

該模塊根據(jù)自動聚焦算法模塊輸出的相鄰兩場圖像聚焦函數(shù)值的比較結(jié)果,來控制聚焦電機(jī)的轉(zhuǎn)動方向,當(dāng)輸出圖像的聚焦函數(shù)值最大時停止轉(zhuǎn)動,則實現(xiàn)圖像的自動聚焦。

該模塊具體實現(xiàn)過程為,變倍結(jié)束后,在圖像場同步信號的消隱期間,使聚焦電機(jī)朝預(yù)定義的固定方向轉(zhuǎn)動一步,在下一場圖像場同步的下降沿采集自動聚焦算法模塊輸出的聚焦函數(shù)值比較結(jié)果信號,若該信號為高電平,則表示當(dāng)前圖像比前一場圖像清晰,則電機(jī)轉(zhuǎn)動方向正確,繼續(xù)向該方向轉(zhuǎn)動一步,同理,在下一場圖像的場同步下降沿采集聚焦函數(shù)值比較結(jié)果信號,若為高電平,則繼續(xù)向該方向轉(zhuǎn)動,若為低電平,則向相反方向轉(zhuǎn)動一步后停止電機(jī)轉(zhuǎn)動,則自動聚焦結(jié)束;若第一次采集的聚焦函數(shù)值比較結(jié)果信號為低電平,則表明首次設(shè)定的轉(zhuǎn)動方向錯誤,則向相反方向轉(zhuǎn)動兩步后,在下一場圖像的場同步下降沿判斷聚焦函數(shù)值比較結(jié)果信號,若為高電平,則繼續(xù)沿該方向轉(zhuǎn)動,若為低電平,則向相反方向轉(zhuǎn)動一步后停止電機(jī)轉(zhuǎn)動,則自動聚焦結(jié)束。

(6) 系統(tǒng)控制

該模塊主要對初始化模塊、變倍跟蹤模塊、搜索模塊輸出的變倍電機(jī)和聚焦電機(jī)的驅(qū)動信號(包括轉(zhuǎn)動方向、步數(shù))進(jìn)行選擇輸出,系統(tǒng)上電后,首先是初始化模塊產(chǎn)生的驅(qū)動信號有效,初始化結(jié)束后,其它模塊才可正常工作,圖像變倍時,變倍跟蹤模塊輸出的電機(jī)驅(qū)動信號有效,變倍結(jié)束后,搜索模塊產(chǎn)生的電機(jī)驅(qū)動信號有效。

(7)電機(jī)驅(qū)動模塊

本項目選用的光學(xué)鏡頭具有變倍和聚焦兩個步進(jìn)電機(jī),光學(xué)變焦22倍,步距角18°,每步位移量0.02mm,轉(zhuǎn)速600~800pps,采用2-2相驅(qū)動勵磁方式,驅(qū)動脈沖變化如表1所示。

表1 步進(jìn)電機(jī)驅(qū)動脈沖

1

2

3

4

A+

H

H

L

L

A-

L

L

H

H

B+

L

H

H

L

B-

H

L

L

H

若驅(qū)動脈沖按1à2à3à4方向循環(huán)發(fā)出,則步進(jìn)電機(jī)帶動的鏡片朝靠近圖像傳感器方向移動,反之朝遠(yuǎn)離圖像傳感器方向移動,從而可通過產(chǎn)生不同的驅(qū)動脈沖控制電機(jī)的轉(zhuǎn)動步數(shù)及轉(zhuǎn)動方向。

該模塊根據(jù)系統(tǒng)控制模塊輸出的電機(jī)驅(qū)動信號(轉(zhuǎn)向,步長)來產(chǎn)生對應(yīng)的A+、A-、B+、B-電機(jī)驅(qū)動脈沖。該模塊內(nèi)部為模值為4的計數(shù)器,輸入轉(zhuǎn)向控制信號為高電平時,該計數(shù)器加法計數(shù),轉(zhuǎn)向為低電平時,計數(shù)器減法計數(shù),根據(jù)輸入的步長控制輸出驅(qū)動脈沖的持續(xù)時間長度,計數(shù)器值對應(yīng)不同的驅(qū)動脈沖信號,則可產(chǎn)生不同方向、不同步長的電機(jī)驅(qū)動脈沖。

  1. 圖像處理模塊

圖像處理模塊可實現(xiàn)圖像的壓縮編碼、解碼、本地存儲及以太網(wǎng)傳輸。其內(nèi)部功能模塊如圖7所示。

  1. 后端處理模塊

后端處理模塊主要實現(xiàn)了圖像的幀率提升、圖像放大。其內(nèi)部結(jié)構(gòu)如圖8所示。

該模塊接收16位的YCbCr(4:2:2)格式視頻信號,并輸入到輸入緩沖,輸入緩沖寫滿一行、即736*16數(shù)據(jù)后,觸發(fā)主控制器讀取,主控制器將從輸入緩沖中連續(xù)讀取一行數(shù)據(jù)并輸出到DDR控制器模塊,由于DDR存儲器為雙沿觸發(fā),所以主控制器模塊將接收的16位數(shù)據(jù)轉(zhuǎn)換成32位寬。DDR控制器分別在260MHz時鐘上升沿、下降沿將數(shù)據(jù)寫入到DDR存儲器的Bank0中,并從Bank1中每次連續(xù)讀取一行圖像數(shù)據(jù),即736個數(shù)據(jù),輸出到輸出緩沖中。當(dāng)一幀圖像都寫入到Bank0中,則下一幀圖像數(shù)據(jù)寫入到Bank1中,并從Bank0中讀取數(shù)據(jù),一直按此規(guī)則進(jìn)行讀寫切換。同時,時序發(fā)生器模塊產(chǎn)生1024*768@60Hz的行場掃描信號,在行場信號都有效時,在輸出像素時鐘同步下,從輸出緩沖中讀取視頻數(shù)據(jù),由于寫入輸入緩沖中的數(shù)據(jù)速率較低,在寫滿一幀圖像的時間內(nèi)可從DDR中讀出5幀,則輸出圖像的幀率可由12Hz提升至60Hz。色空間轉(zhuǎn)換模塊將16位的YCbCr(4:2:2)格式視頻信號轉(zhuǎn)換成24位的RGB信號,并通過圖像放大模塊將分辨率由736*576放大到1024*768。

  1. 輸入緩沖模塊

該模塊內(nèi)部包含一個異步先進(jìn)先出(FIFO),寬度為16位,深度為2048,接收格式轉(zhuǎn)換模塊輸出的16位圖像數(shù)據(jù),寫入速率為原視頻輸入像素時鐘的2分頻,當(dāng)寫滿一行圖像數(shù)據(jù)(736*16)時,觸發(fā)主控制器產(chǎn)生讀使能信號,在520MHz主時鐘同步下,連續(xù)讀取736個數(shù)據(jù)。

  1. 主控制器模塊

該模塊為視頻處理的主要控制模塊,接收輸入緩沖模塊發(fā)出的讀觸發(fā)信號,產(chǎn)生輸入緩沖的讀使能信號,從輸入緩沖中讀取數(shù)據(jù),并轉(zhuǎn)換成32數(shù)據(jù)寬度,轉(zhuǎn)換方法與格式轉(zhuǎn)換模塊原理相同,轉(zhuǎn)換后的32位寬數(shù)據(jù)寫入到DDR控制器模塊。該模塊同時接收輸出緩沖模塊發(fā)出的寫觸發(fā)信號,并向DDR控制器模塊發(fā)出讀請求信號,接收DDR控制器模塊輸出的32位寬的數(shù)據(jù)信息,并將32位寬數(shù)據(jù)轉(zhuǎn)換成16位寬,寫入到輸出緩沖,每次連續(xù)寫入數(shù)據(jù)個數(shù)為736。

當(dāng)從輸入緩沖模塊接收完一幀數(shù)據(jù),并寫入到DDR存儲器Bank0空間后,第二幀數(shù)據(jù)將寫入到Bank1空間,同時從Bank0中讀取數(shù)據(jù),寫滿一幀數(shù)據(jù)后,進(jìn)行讀寫切換,由于寫滿一幀的時間為輸入圖像的場周期,即83ms,讀取一幀的時間為輸出視頻的場頻,即16.67ms,則在寫滿一幀數(shù)據(jù)的時間內(nèi),可連續(xù)循環(huán)讀出5幀數(shù)據(jù),提高了幀率。

  1. DDR控制器模塊

該模塊工作時,首先對DDR2存儲器進(jìn)行初始化,設(shè)置迸發(fā)長度為4。由于選用的DDR2存儲器的行寬度為13位,所以設(shè)置刷新周期為64ms/213,即7.8125us。

該模塊主要功能是接收主控制器模塊發(fā)出的寫命令、寫地址、32位寬的寫入數(shù)據(jù),將數(shù)據(jù)寫入到對應(yīng)存儲單元,由于DDR存儲器為雙沿觸發(fā),在內(nèi)部260MHz時鐘的上升沿和下降沿分別將低16位和高16位數(shù)據(jù)寫入到DDR2存儲器,同時接收主控制器模塊產(chǎn)生的讀命令、讀地址,并讀取對應(yīng)存儲單元的數(shù)據(jù),輸出到主控制器模塊。

  1. 時序發(fā)生器模塊

該模塊主要功能是根據(jù)VESA標(biāo)準(zhǔn),產(chǎn)生1024*768@60Hz的行場掃描信號,并在行場信號都有效時,產(chǎn)生輸出緩沖的讀使能信號。

  1. 輸出緩沖模塊

該模塊內(nèi)部包含一個異步先進(jìn)先出(FIFO),寫時鐘為520MHz的系統(tǒng)主時鐘,寫入數(shù)據(jù)來自主控制器模塊從DDR控制器中讀出的視頻數(shù)據(jù),每次連續(xù)寫入一行數(shù)據(jù),即736個數(shù)據(jù),讀時鐘為時序發(fā)生器模塊生成的輸出像素時鐘,讀使能為時序發(fā)生器模塊輸出的讀使能信號。

系統(tǒng)工作時,主控制器模塊首先向輸出緩沖中寫入一行數(shù)據(jù),在讀使能信號有效時讀取FIFO中的數(shù)據(jù),當(dāng)快讀空時,觸發(fā)主控制器模塊從DDR存儲器中再讀取一行數(shù)據(jù)并寫入到輸出緩沖中,由于輸出緩沖的讀使能信號是輸出時序信號的行場同步信號都有效時生成的,行同步信號有消隱時間,所以輸出緩沖模塊不會出現(xiàn)讀空現(xiàn)象。

  1. 色空間轉(zhuǎn)換模塊

該模塊將輸出緩沖模塊輸出的16位YCbCr(4:2:2)格式視頻信號轉(zhuǎn)換成RGB空間(8:8:8)格式。首先將16位YCbCr(4:2:2)格式信號采用臨近插值算法生成24位YCbCr(4:4:4)格式視頻信號。根據(jù)CCIR-601標(biāo)準(zhǔn),數(shù)字YCbCr色空間到RGB色空間轉(zhuǎn)換的公式為:

其中,Y的取值范圍是(16,240),Cb、Cr的取值范圍是(16,235)。

該轉(zhuǎn)換公式實現(xiàn)時,由于含有小數(shù)乘法,可將小數(shù)乘以211,取整進(jìn)行乘法運算,將運算結(jié)果右移11位,可近似求得小數(shù)的乘法運算。

該模塊生成的RGB視頻信號經(jīng)外部D/A轉(zhuǎn)換后,可直接輸出到VGA接口,則圖像傳感器采集的圖像可在VGA顯示器上實時顯示。

  1. 圖像放大模塊

該模塊實現(xiàn)圖像的分辨率由736*576放大到1024*768。

本項目選用一種特定比例的圖像放大算法。特定比例的圖像放大算法的出發(fā)點是利用給定的放大比例尋找一個簡單、易于實現(xiàn)且具有較高精度的核函數(shù)。其基本原理是,選擇兩個互質(zhì)的整數(shù)q和p,使其比值q/p與給定的放大比例盡可能接近。于是放大算法簡化為:利用原始圖像的p個離散值求得連續(xù)核函數(shù)模型參數(shù),并用采樣率q對連續(xù)核函數(shù)模型重新采樣,得到放大后的q個像素值。在水平和垂直方向上重復(fù)循環(huán)若干次可得到整幅圖像的縮放結(jié)果。

將水平和垂直放大比例分別記為SC_XSC_Y,則有:

SC_X = 1024/736 ≈ 1.3913

SC_Y = 768/576 ≈ 1.3333

因4/3 ≈1.3333與SC_Y近似,IZAS算法的列處理過程選擇將3行原始圖像濾波插值擴(kuò)展為4行,即選取垂直放大比例。SC_Y0 = 4/3

7/5 = 1.4與SC_X接近,IZAS算法的行處理過程選擇將5列原始圖像濾波插值擴(kuò)展為7列,即選取水平放大比例,SC_X0 = 7/5

垂直方向放大將3個原始像素放大生成4個新像素,其核函數(shù)公式:

f0 = g0

f1 = 1/4 g0+3/4 g1

f2 = 2/4 g1+2/4 g2

f3 = 3/4 g2+1/4 g3

其中g表示原始輸入像素數(shù)據(jù),f表示放大處理后輸出的像素數(shù)據(jù)。

水平方向放大將5個原始像素放大生成7個新像素,其核函數(shù)公式:

f0 = g0

f1 = 2/7 g0+5/7 g1

f2 = 4/7 g1+3/7 g2

f3 = 6/7 g2+1/7 g3

f4 = 1/7 g2+6/7 g3

f5 = 3/7 g3+4/7 g4

f6 = 6/7 g4+1/7 g5

插值模塊的實現(xiàn)需要一定的行緩存,來緩存三行數(shù)據(jù),然后可根據(jù)插值算法來實現(xiàn)。設(shè)計中利用FPGA內(nèi)部的塊RAM存儲器(Block RAM)來作為行緩存。

該模塊內(nèi)部功能模塊如圖9所示,數(shù)據(jù)傳輸控制模塊控制對輸入緩沖數(shù)據(jù)的更新和讀取,并且在系數(shù)定標(biāo)器模塊選擇相應(yīng)的插值系數(shù)送給插值模塊進(jìn)行插值計算。本項目采用的IZAS放大算法計算每一個目標(biāo)圖像像素值需要原始圖像相鄰3行像素,因此輸入緩沖模塊采用3個雙口SRAM來實現(xiàn)。可將原始圖像的相鄰3行像素寫入雙口SRAM中,計算出利用這三行數(shù)據(jù)能插值出的所有目標(biāo)像素,然后更新較早寫入雙口SRAM對應(yīng)的一行像素數(shù)據(jù)再進(jìn)行插值計算。系數(shù)定標(biāo)器模塊含有從分辨率736*576放大到分辨率1024*768所對應(yīng)的插值系數(shù)。

圖9 圖像放大模塊內(nèi)部結(jié)構(gòu)圖

數(shù)據(jù)存取控制處理由數(shù)據(jù)傳輸控制模塊配合系數(shù)定標(biāo)器模塊和輸入緩沖來實現(xiàn)??刂颇K選擇當(dāng)前行數(shù)據(jù)存入哪一個雙口SRAM并產(chǎn)生讀寫地址。例如水平方向要進(jìn)行2倍放大時要讀取2個原始像素,計算出4個插值像素,而在進(jìn)行7/5倍放大時要讀取5個原始像素,計算出7個插值像素。因此在進(jìn)行2倍放大時連續(xù)讀取緩沖里面的2個原始像素后要停頓2個像素周期再讀取新的原始像素,而進(jìn)行7/5倍放大時連續(xù)讀取緩沖里面的5個原始像素后要停頓2個像素周期再讀取新的原始像素。

當(dāng)一幀中的第一行圖像數(shù)據(jù)到來時,數(shù)據(jù)傳輸控制模塊先將此行數(shù)據(jù)寫入SRAM1中,不讀取另外兩個SRAM,第二行數(shù)據(jù)到來時控制模塊將此行數(shù)據(jù)寫入SRAM2中,第三行數(shù)據(jù)到來時控制模塊將此行數(shù)據(jù)寫入SRAM3中,當(dāng)?shù)谒男袛?shù)據(jù)到來時將此行數(shù)據(jù)寫入SRAM1中,當(dāng)?shù)谖逍袛?shù)據(jù)到來時,將此行數(shù)據(jù)寫入SRAM2中如此反復(fù)完成數(shù)據(jù)的緩沖。另外因為圖像在垂直方向也要進(jìn)行4/3倍的放大,即把三行數(shù)據(jù)計算出四行,所以每緩沖三行后要停止一行緩沖。

圖10 插值算法模塊內(nèi)部寄存器

插值模塊內(nèi)部對R、G、B信號各有1組9個8位的寄存器,如圖10所示。這9個寄存器分成a,b,c三組,分別接收來自3個雙口SRAM(SRAMi,i = 1,2,3)的輸出數(shù)據(jù)。在輸入時鐘的同步下,寄存器a1在接收到SRAM1輸出的數(shù)據(jù)之前,先完成寄存器ai 給ai+1的數(shù)據(jù)賦值操作,另外2組寄存器依次類推。

當(dāng)輸入到SRAM1和SARM2的數(shù)據(jù)分別滿1行時,寄存器組a和b開始接收數(shù)據(jù)并進(jìn)行插值濾波,同時輸出放大后的數(shù)據(jù)。SRAM3同時緩沖下一行數(shù)據(jù),緩沖結(jié)束后新的一行數(shù)據(jù)開始往SRAM1中緩沖,如此交替循環(huán)。根據(jù)上述公式濾波R、G、B三個通道之一的插值計算的結(jié)果,以寄存器組a為例說明如下:

fR0 =a1

fR1 =5/7 a2+2/7 a1

fR2 =4/7 a2+3/7 a1

fR3 =6/7 a2+1/7 a1

fR4 =1/7 a3+6/7 a2

fR5 =3/7 a2+4/7 a1

fR6 =2/7 a2+5/7 a1

為提高計算精確度,可將系數(shù)擴(kuò)大210倍后與像素數(shù)據(jù)進(jìn)行乘法運算,然后將乘積進(jìn)行右移10位操作。

圖像行數(shù)由576放大到768時,放大比例系數(shù)可選為4/3,則根據(jù)上述公式,用X[n]表示原始行相素數(shù)據(jù),用Y[n]表示列放大后行的數(shù)據(jù),則放大行的計算公式描述為:

Y[0]=X[0];

Y[1]=0.25*X[0]+0.75*X[1];

Y[2]=0.75*X[1]+0.25*X[2];

Y[3]=X[2];

在FPGA內(nèi)部實現(xiàn)上述算法,將X[n]右移2位得到0.25*X[n],將X[n]右移1位與X[n]右移2位相加得到0.75*X[n]。這樣通過移位相加求和代替了乘法器,節(jié)省了系統(tǒng)資源并避免了浮點計算帶來的舍入誤差。

5.系統(tǒng)完成的關(guān)鍵設(shè)計

1. 實現(xiàn)了對DDR2存儲器的控制,利用一片DDR2中的兩個BANK空間作為幀緩存實現(xiàn)圖像的幀率提升,將幀率由12Hz提升到60Hz。

2. 采用給定比例的圖像放大算法將圖像分辨率由736*576放大到1024*768,實現(xiàn)了圖像的實時放大。

3. 實現(xiàn)了灰度差分聚焦算法,實時計算當(dāng)前幀圖像的聚焦評價函數(shù)值,采用爬山搜索策略實現(xiàn)對聚焦電機(jī)的控制,實現(xiàn)圖像的自動聚焦。

4. 實現(xiàn)了對光學(xué)電機(jī)中變倍和聚焦電機(jī)的驅(qū)動控制,完成了圖像的變倍跟蹤功能。

5. 建立了視頻信號從輸入,校正,處理,格式變換,輸出,顯示的完整平臺,在此平臺上可以進(jìn)一步開發(fā)各種圖像處理應(yīng)用(如編解碼、分析、識別、跟蹤等算法)系統(tǒng)。

6.評測與結(jié)論

本項目設(shè)計的實時視頻信號處理平臺實現(xiàn)了輸入圖像的格式轉(zhuǎn)換、幀率提升、色空間轉(zhuǎn)換等功能,并從輸入圖像的亮度信息中計算當(dāng)前圖像的高頻分量,采用爬山搜索策略,實現(xiàn)了圖像的自動聚焦,由于對整幀圖像計算高頻分量,該算法得到的聚焦函數(shù)值較好的反映圖像的離焦極性,可適應(yīng)不同的環(huán)境,由于FPGA的并行處理能力,本項目設(shè)計的變焦控制系統(tǒng)可同時控制變倍電機(jī)和聚焦電機(jī),極大提高了變倍跟蹤速度。

利用平臺中的圖像處理部分可實現(xiàn)圖像的壓縮編碼、解碼、本地硬盤存儲、網(wǎng)絡(luò)傳輸?shù)裙δ?,該平臺可應(yīng)用于高分辨率一體化網(wǎng)絡(luò)攝像機(jī)、視頻編解碼芯片的研發(fā)。該平臺中前端處理和后端處理模塊已在Xilinx XUPV5-LX110T FPGA開發(fā)板上驗證,并獲得了滿意的效果。

附錄1 圖像采集板原理圖

1. 圖像傳感器原理圖

附圖1

2. H橋驅(qū)動電路

附圖2

3. 圖像采集板與XUPV5-LX110T FPGA開發(fā)板接口

附圖3

附錄2 項目中使用的光學(xué)電機(jī)

附圖4

附錄3 圖像采集板外觀圖

附圖5

附錄4 圖像采集板XUPV5-LX110T FPGA開發(fā)板連接外觀圖

附圖6



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉