文獻標識碼: A
文章編號: 0258-7998(2012)01-0034-04
在航空攝影測量領域,常采用高分辨率CCD相機在高空對物體進行拍攝。目前的CCD數據處理系統(tǒng)首先在CCD相機的控制下,輸出海量連續(xù)的CCD數據流。然后通過構造緩存單元結構,緩存接收的CCD圖像數據。由于圖像信息量太大,無法實時處理,需要在飛行過程中將所有圖像實時記錄在高速硬盤上,最終把緩存的數據流輸入至實時記錄系統(tǒng)實現高分辨率CCD數據的記錄。
針對飛行過程中的一些特殊情況,需根據接收的GPS信息(飛行高度、速度等)實時調整CCD幀頻[1]。要實現可變幀率的CCD數據處理,對整個CCD數據實時處理能力提出了更高的要求。同時,隨著CCD像元數的激增,每幀CCD圖像的像素分辨率超大,如何實現基于高分辨率CCD圖像感興趣區(qū)域的智能實時觀測是目前航測領域的研究重點。針對可變幀率和智能觀測需求,提出了一種基于感興趣區(qū)域的可變頻CCD實時處理系統(tǒng)。
系統(tǒng)根據可變頻要求,一方面通過在FPGA內部設計UART控制器,觸發(fā)CCD相機外同步觸發(fā)信號,實時計算出隨GPS信息不斷變化的CCD幀頻信息;另一方面,提出了一種數據提取算法,該算法通過對乒乓緩存的CCD圖像數據進行可變窗口定位,實現了感興趣區(qū)域的智能觀察和存儲;最后,通過視頻編碼實現感興趣區(qū)域的高清晰視頻實時顯示。整個系統(tǒng)已在FPGA內實現并通過驗證,可廣泛適用于任何分辨率大小CCD的智能實時處理。
1 系統(tǒng)設計方案
該可變頻CCD智能實時處理系統(tǒng)由CCD控制模塊、數據實時處理模塊和實時顯示模塊組成。CCD控制模塊:在相機外同步工作模式下,通過在FPGA內設計UART控制器,接收外部發(fā)來的GPS信息,實現CCD相機幀頻的實時調整。針對數據實時處理模塊,提出了一種數據提取算法:首先提取出原始CCD圖像數據的感興趣區(qū)域,該區(qū)域符合SMPTE(1080i)有效的高清晰視頻數據分辨率大小,并通過可變窗口定位實現區(qū)域的智能實時調整;然后通過乒乓緩存結構的設計,實現感興趣區(qū)域的實時存儲;最后由實時顯示模塊,將緩存的感興趣區(qū)域數據打包為高清晰視頻格式,通過視頻編碼實現感興趣區(qū)域的高清晰視頻實時顯示。圖1給出了整個系統(tǒng)的實現方案。
2 CCD控制模塊的設計
2.1 可變頻幀率的設計與實現
在飛行過程中,首先需接收GPS導航信息[3](主要包括飛行器經緯度位置、時間(時/分/秒)以及海拔高度、地速等飛行參數,數據刷新率為10 Hz/s),根據信息計算得到當前相機幀頻。由于數據刷新率較高,接收數據的準確性是保證后續(xù)工作精度穩(wěn)定的前提條件。
傳統(tǒng)的處理方式是[4]:通過串口配合相關電路,接收GPS信息,并計算得到隨飛行高度和速度實時改變的相機幀頻。UART(Universal Asynchronous Receiver Transmitter)作為計算機或外圍設備的串行通信接口,通常在單片機中使用。本設計中改用FPGA完成所有數據處理,并設計了基于PFGA的UART控制器。
UART控制器包含以下組件:時鐘發(fā)生器、輸入和輸出移位寄存器、發(fā)送/接收控制單元和FIFO緩沖存儲器。時鐘發(fā)生器通常是比特率允許在一個位周期中采樣的倍數。輸入和輸出移位寄存器是串行和并行之間形式轉換的基本方法。發(fā)送或接收控制單元完成數據的傳輸和接收器下控制讀或寫控制邏輯。FIFO緩沖存儲器實現對發(fā)送/接收數據的高速緩存。圖2給出了基于FPGA的UART控制器設計,可見,整個UART設計充分利用FPGA的內部存儲和時序邏輯資源,減小了系統(tǒng)的面積, 改變了傳統(tǒng)通過單片機處理器的控制,大大降低了系統(tǒng)功耗,提高了設計的穩(wěn)定性。
通過基于FPGA的UART控制器設計,GPS信息可從UART正確接收,根據GPS相應的飛行參數,可計算得到可變幀率,并輸入至FPGA。本系統(tǒng)每幀CCD的拍攝時間間隔表達式如下:
式中,v是飛行速度(km/h),H是飛行高度,a是拍攝視角, qx是相鄰的圖片重疊比例??梢姡ㄟ^接收GPS的飛行速度和飛行高度信息和實際拍攝要求,即可計算出拍攝時間間隔。根據時間和頻率之間的關系,得到CCD當前幀速率。
FPGA在內部時鐘的控制下,針對可變幀頻率,通過FPGA的時序邏輯控制,產生外同步控制脈沖信號。這樣,在外同步脈沖的觸發(fā)下,相機開始積分,積分完畢后,在行、場、消隱同步信號的控制下,讀出CCD相機數據。
2.2 基于高速Cameralink接口的CCD數據傳輸
為提高海量CCD連續(xù)數據流的傳輸速率,采用基于Cameralink接口技術實現高速CCD數據傳輸。Cameralink接口技術是基于Channel Link技術發(fā)展而來的。Channel Link是基于LVDS技術發(fā)展而來的,它是一種用來傳輸視頻數據的新技術。Channel Link使用一個并轉串驅動器和一個串轉并接收器傳輸數據,其最高速率可達2.38 GHz/s,非常適合高分辨率CCD數據實時處理以及其他高速控制信號的傳輸[5]。
高分辨率CCD數字相機通過Camera Link接口的連接,實現多位高速并行的數據線轉換為串行數據線輸出。同時,通過接收芯片DS90CR288A實現對CCD相機輸出的串行數據還原為原始的并行數據輸出,并提供了相應的CCD相機通信信號和有效控制信號。對DS90CR288A解碼輸出的CCD相機數據輸入至FPGA,實現實時處理。
3 實時數據處理模塊
3.1 感興趣區(qū)域提取算法
實時處理模塊主要對輸入至FPGA的CCD圖像數據進行處理。CCD相機數據的時鐘輸出速率為2 MHz×40 MHz,以兩路并行格式輸出,兩路數據像元分辨率大小為2 048×1 024,數據分辨率為10 bit。為有利于數據進一步處理,在FPGA內構造FIFO實現對兩路并行數據的實時合成。合成后的數據分辨率為10 bit,頻率為80 MHz,像元分辨率大小為2 048×2 048。
在實際觀測中,需要實時提取感興趣區(qū)域。設原始圖像分辨率大小為M×N,感興趣區(qū)域分辨率大小為m×n。由于CCD原始數據分辨率遠大于感興趣區(qū)域數據分辨率,提出了一種感興趣區(qū)域提取算法。算法設計思路如下:
(1)通過UART接收當前波門位置信息(Rstart,Rwidth,Cstart,Cwidth),同時波門位置信息實時寫入FPGA。其中,Rstart、Rwidth分別表示在像素時鐘的作用下,原始圖像對應的行起始地址和行寬;Cstart、Cwidth分別表示在像素時鐘的作用下,列起始地址和列寬。
(2)在FPGA中構造4個專用寄存器分別用來動態(tài)存儲上述波門位置信息(Rstart,Rwidth,Cstart,Cwidth)。
(3)在像素時鐘的控制下,在FPGA內構造兩個計數器分別對每行、每列像素個數進行計數。Pi、Qj分別表示當前行、列計數值。
(4)構造波門判別函數模型,如判別函數為真,即當前計數值在波門信息范圍內時,對于圖像數據予以保留,否則予以舍棄。判別函數如式(2)所示。
當一幀圖像數據接收完畢時,即完成了對當前幀圖像的感興趣區(qū)域數據提取。當下一幀數據輸入且波門位置改變時,則返回(1),重復上述過程即可。
3.2 高速緩存的設計
在實時抽取后,保留下的數據分辨率大小與高清晰模擬視頻有效數據分辨率相同。但兩者在速率和幀頻上都不相等(相機數據速率為80 MHz,幀頻為變量,高清晰視頻數據格式選擇速率為74.25 MHz,幀頻為30幀/s,每幀分為奇場和偶場的格式),因此需要為變頻的CCD圖像感興趣區(qū)域和恒速的視頻編碼之間構造一個適應通道——高速緩存結構。常用的緩存結構主要有以下三種形式[6]:
(1)FIFO結構:能夠達到很高的傳輸速度和效率,且由于省去了地址線而有利于PCB 板布線。缺點是只能順序讀寫數據,因而顯得比較呆板。
(2)雙口RAM結構: 具有兩套獨立的數據、地址和控制總線,能達到很高的傳輸速度,并且具有隨機存取的優(yōu)點。缺點是大容量的高速雙口RAM 硬件復雜度高,價格昂貴。
(3)SRAM乒乓緩存結構:可隨機存取,同時較大容量的高速SRAM容易得到且價格適中。缺點是切換控制電路比較復雜。
綜合考慮以上三種高速緩存方案,在本設計單元中,選用SRAM乒乓緩存方案。具體設計流程如下:在第一個緩沖周期,將輸入數據流緩存到第一片SRAM中;在第二個緩沖周期,通過控制信號的切換,將輸入的數據流緩存到第二片SRAM中,并將第一片SRAM緩存的第一個周期的數據通過控制送入下一處理單元(視頻編碼單元);在第三個緩沖周期,通過控制權的再次切換,將輸入的數據流緩存到第一片SRAM,并將第二片SRAM緩存的第二個周期的數據通過控制權的切換,送到下一處理單元。如此循環(huán),周而復始,很好地完成對數據流的無縫緩沖和處理。
4 實時顯示模塊
4.1 基于FPGA的高清晰視頻數據打包
由于從數據實時處理單元SRAM 讀出的是純粹圖像數據, 因此首先要將讀出數據打包為符合SMPTE274 標準的1080i 高清晰視頻格式,最終實現高清晰的模擬視頻顯示。
首先簡單介紹符合SMPTE274標準的1080i高清晰模擬視頻格式[7]。圖3給出了高清晰視頻數據包格式。其中,每個EAV 和SAV 定時基準信號由4 個字的序列組成,格式如下:FF、00、FF、XY(數值以16進制表示,FF、00留供定時基準信號用) 。頭三個是固定前綴,第四個字包含定義第二場標識、場消隱狀態(tài)和行消隱狀態(tài)的信息。每行有效數據像素為1 920個像素,行消隱期為272個像素。
對數據進行打包實際就是用FPGA產生包頭信息、消隱期的填充數據以及Y分量的數據和Cb、Cr分量的數據復合,再進一步將視頻數據和包頭信息、填充數據合并,最終產生符合上述定義格式標準的數據包。在具體實現過程中,FPGA要設計兩個計數器,一個用來進行行計數,另一個用來對每行的像素進行計數。根據兩個計數器的值,在相應的地方寫上包頭信息,在消隱期填上填充數據,而在有效行的有效像素期,FPGA 的輸出來自SRAM 輸出的原始相機數據。這樣,在FPGA 里的視頻數據復合成模塊,用74.25 MHz 的時鐘將Y分量和Cb、Cr分量按格式要求的4:2:2格式復合成高清晰視頻數據流,如圖3所示。
4.2 基于FPGA的視頻編碼芯片控制和實現
在完成對數據的打包后,需要對視頻芯片內部寄存器進行配置并最終轉換為模擬視頻顯示。ADV7300A支持I2C總線通信協(xié)議。傳統(tǒng)的工作方式通常使用單片機實現對I2C總線接口的控制。然而,為減少設計資源并提高FPGA的使用效率,設計了基于FPGA的I2C總線控制器。
I2C總線控制器主要包括以下幾個單元:數據緩存單元、移位寄存器單元、I2C總線傳輸控制單元和分頻單元。其中,數據緩存單元實現對如初始化ADV7300的數據進行緩存,這里緩存單元即通過FPGA內部的RAM存儲即可。
移位寄存器單元實現數據的并-串轉換。由于FPGA內部的緩存單元的數據位寬為8 bit,而I2C總線上傳輸的位寬為1 bit,所以要進行并串轉換,且需滿足數據高位在前,低位在后。通過構造移位寄存器,可在時序控制邏輯模塊的控制下根據讀寫使能信號對數據進行正確處理。
I2C總線傳輸控制單元是設計的核心,根據I2C總線傳輸協(xié)議,整個傳輸過程可以分為空閑、開始、發(fā)送數據、接收數據、停止5個狀態(tài)。當I2C總線處于空閑狀態(tài)且驅動信號為高電平時開始運作I2C模塊, 并根據讀/寫判斷進入下一狀態(tài),即進行傳輸數據或接收數據。當數據傳輸完畢, 跳入停止狀態(tài)。因此,在FPGA內設計有限狀態(tài)機的結構實現對I2C總線的傳輸時序控制,其狀態(tài)轉移如圖4所示。
分頻單元則根據I2C總線傳輸速率,通過對FPGA的全局時鐘進行分頻,以滿足I2C總線的傳輸速率要求。
通過在FPGA內實現基于I2C總線控制器的設計,很好地完成了FPGA對視頻編碼芯片ADV7300內部寄存器的配置和讀寫,最終實現高清晰模擬視頻顯示。目前,該設計已通過驗證,并成功應用于某航空攝影測量工程,具有很高的工程應用價值。
參考文獻
[1] 陳蘇婷,吳欽章,楊世洪.航空攝影測量用高清晰視頻編碼顯示系統(tǒng)設計[J].半導體光電,2007,28(4):596-600.
[2] 陳蘇婷,楊世洪.基于IB-IWT實時圖像壓縮的FPGA設計與實現[J].信息與控制,2009,38(1):145-149.
[3] 高文武,賀賽先.基于GPS的CCD相機同步控制器[J]. 武漢大學學報,2004,29(8):744-746.
[4] 宋杰,何友,唐小明.雷達視頻回波信號的實時采集、顯示與存儲系統(tǒng)[J].數據采集與處理,2006,21(1):90294.
[5] 王明富,楊世洪,吳欽章.大面陣CCD圖像實時顯示系統(tǒng)的設計[J].光學精密工程,2010,18(9):2053-2059.
[6] 李武森,遲澤英,陳文建.高速DSP圖像處理系統(tǒng)中的乒乓緩存結構研究[J].光電子技術與信息,2005,18(3):76279.
[7] Analog Devices,Inc.ADV7300A datasheet[EB/OL].http//www.analog.com.2005.
[8] 何立民.I2C總線應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,1995.