文獻標識碼: A
文章編號: 0258-7998(2015)04-0043-03
0 引言
近年來,快速發展的CMOS圖像傳感器因具有高集成、功耗低、工藝簡單和開發周期短等優點,已被廣泛應用在工業、監控、航空和航天等眾多領域[1-2]。目前我國航天領域中攝像設備的分辨率普遍不高,畫面質量有待提高,嚴重制約著我國空間可視監控技術的進一步發展[3],因此研究以CMOS圖像傳感器作為光電轉換器件的數字高清遙感成像技術,在航天領域具有較高的實際應用價值。
1 硬件平臺及基本工作原理
本文主要采用了CMOS圖像傳感器、可編程邏輯門陣列FPGA、第二代雙倍速率同步動態隨機存儲器(Double Date Rate Synchronous Dynamic Random Access,DDR2)、視頻串行器等,搭建了一個可實現圖像實時采集、預處理及傳輸功能的高清成像系統,如圖1所示。本文采用的傳感器是APTINA公司的MT9M034,它集成了模擬圖像采樣和模數轉換及在片自動曝光等功能,并支持720p60的高清視頻,具有重量輕、體積小、功耗低、動態范圍寬等優點,適合航天的應用場景。
FPGA作為系統主處理器,主要完成對傳感器的初始化和接口控制,并對傳感器輸出的圖像數據進行采集和預處理,以提高圖像質量并供顯示,這些處理主要包括時序調整、圖像類型轉換、圖像預處理、數據存儲、高清數字分量串行接口(High Definition Serial Digital Interface,HD-SDI)視頻合成等。本文FPGA選用的是Xilinx公司的 XC6SLX75t,它內部具有豐富的邏輯、存儲資源及用戶接口。
為了將圖像傳輸至監視器上呈現出來,本系統選用了National Semiconductor公司的芯片LHM0340作為數字視頻串行器,它對接收到的亮度和色差信號的并行數據進行并串轉換,輸出HD-SDI數據流并送往監視器。
2 FPGA設計
根據模塊化的設計思路,將FPGA的功能分為主控制接口、傳感器接口、圖像預處理等6個子模塊來實現,如圖2所示。
2.1 時鐘管理模塊
時鐘管理模塊接收外部晶振輸入的74.25 MHz時鐘,再利用FPGA的時鐘管理資源和全局時鐘資源產生74.25 MHz和148.5 MHz的全局時鐘。其中,除DDR2控制模塊和數字視頻合成模塊使用了兩個全局時鐘外,其他模塊均使用74.25 MHz全局時鐘。
2.2 主控制接口模塊
如圖2所示,該模塊連接其他各模塊并控制它們的運作,產生其他各模塊的復位信號并通過對寄存器讀寫的方式產生系統控制信號;另外,主控接口模塊還支持通過異步串口連接上位機進行通信和控制。
2.3 傳感器接口模塊
傳感器接口模塊的主要功能是對CMOS傳感器進行復位及內部寄存器的配置、采集傳感器輸出的Bayer模式圖像數據并輸出符合格式要求的圖像數據。該模塊與傳感器通過I2C接口進行通信,由于傳感器的分辨率是1 280×960,為符合數字高清的標準,需對其稍作調整,轉換為1 280×720的分辨率。
2.4 圖像預處理模塊
由于航天應用場景中存在多種光照環境,且遙感畫面動態范圍較大,為了使獲得的圖像在各種光照環境下都能呈現最佳的效果,圖像預處理模塊采用了多種算法對傳感器輸出的圖像信號進行處理,這些處理包括壞點校正、去馬賽克、自動白平衡、色彩校正、伽馬校正、色度空間轉換、寬動態處理以及色度/亮度/飽和度/對比度調整。在FPGA設計時,將該模塊分割為8個算法子模塊和一個控制子模塊,如圖3所示。
各模塊的輸入參數均通過主控模塊配置。其中,寬動態處理、色彩校正和色度空間轉換均采用了Xilinx公司的IP核予以實現,色度/亮度/飽和度/對比度調整則采用Lattice公司的IP核,對其他幾個模塊介紹如下。
2.4.1 壞點校正模塊
本模塊接收到的Bayer陣列型圖像數據,其特點如圖4所示,對任一像素而言,若其為壞點,則可利用同一行中其左右相鄰同分量的兩個像素值來糾正。
為得到3個相鄰的同類型分量像素,需得到5個連續的像素。因此將模塊的輸入圖像數據作4級延遲,與當前輸入的數據一起組成5個像素。對于這5個像素的中心像素,計算出其左右相鄰兩個同分量像素的平均值,再分別乘上1.25、1.5和2的系數構成3種閾值以供不同場景使用。
根據主控制接口模塊的指示,從3種閾值中選擇一種作為當前閾值,對中心像素進行判斷,若超出該閾值則判為壞點,用已計算出的其相鄰同分量的平均值代替該像素的值,否則保持不變。利用FPGA來設計這一算法,可實現流水線式的壞點檢測與校正功能。
2.4.2 自動白平衡
自動白平衡算法有很多,其中應用極為廣泛的是基于灰度世界理論:對于任一幅圖像,當它有足夠的色彩變化時,則它的RGB分量的均值會趨于相等。
相對于其他算法而言,該算法簡單可靠且便于硬件實現,本文采用的即是這種基于灰度世界假設的算法[4],如圖5所示。
圖像分割判斷模塊首先把圖像分塊,對每一塊計算其像素的標準差(即顏色變化的情況),判斷是否是大色塊,是否是過亮塊、過暗塊。對于標準差越大的圖像塊,說明其顏色越豐富,越符合灰度世界理論的假設,權重越大;而標準差越小的塊則權重越小。
計算模塊根據圖像分割模塊提供的信息,進行全局的塊選取,并按照灰度世界的假設進行計算,得到矯正過的圖像數據。
2.4.3 去馬賽克
去馬賽克算法的目的是將Bayer格式的圖像信號通過插值處理去馬賽克,轉化成完整的RGB信號。本模塊選用的是改進的線性插值法[5]。
本模塊設有4個行緩存,用于接收輸入的圖像數據。將當前輸入的圖像數據以及從4個行緩存中讀出的數據分別進行5級延遲,則可得到5×5的Bayer數據塊。按照數據塊中心像素為R/G/B何種分量以及與其領域各像素相對關系的不同,可總結出4種情況,分別如圖6所示,中心像素點的坐標為(3,3)。對待插值像素(中心像素)的5×5鄰域內數據塊在不同情況下通過不同的公式進行插值運算即可得出中心像素點R、G、B三分量的值。
2.4.4 伽馬校正
大多數的顯示設備的輸入電壓與顯示的彩色圖像強度成非線性的關系,為了使顯示圖像和真實圖像相符,得到更加自然、真實、悅目的畫面,有必要對因為顯示器特性造成的非線性誤差進行伽馬校正。
本模塊通過預先設定伽馬校正數據表,通過上位機經過異步串口寫入FPGA,存入只讀存儲器中,再進行查表獲取伽馬校正后的數據。
2.5 DDR2控制模塊
DDR2控制模塊通過管理DDR2存儲芯片將圖像預處理模塊輸出的YCbCr格式數據進行緩存并輸出。其功能通過3個子模塊來實現,如圖7所示。子模塊1將接收到的16 bit并行數據進行緩存;子模塊2為Xilinx公司的DDR2控制器IP核,它將子模塊1中的緩存數據以32位寫入DDR2,同樣以32位讀出發送至子模塊3再次進行緩存,最終恢復成16 bit并行數據輸出。
2.6 數字視頻合成模塊
數字視頻合成模塊按照HD-SDI格式將數據合成為并行數據,并送入串行器進行并串轉換。該模塊的功能通過3個子模塊來實現,分別是打包子模塊、編碼子模塊、串行器接口子模塊。
打包子模塊接收DDR2控制模塊輸出的圖像數據,通過對Y分量和C分量分別低位填零擴展至20 bit并行,再根據2.2節所述主控制接口模塊的指示,在圖像數據中插入HD-SDI格式所需的時間基準信號及消隱,打包輸出至編碼子模塊。
編碼子模塊為Xilinx公司的IP核,它通過檢測輸入的視頻數據流,提取時間基準并進行CRC校驗,再進行HD-SDI編碼,以20 bit并行輸出至串行器接口子模塊。
串行器接口子模塊將輸入的20 bit并行數據用148.5 MHz時鐘進行高速采樣,再利用FPGA的ODDR2資源雙沿發送將數據提速,拆分成5 bit并行數據,最后用OBUFDS資源將其轉換為差分信號發送至串行器。
3 系統驗證
本文通過ISE14.1開發環境進行了FPGA代碼設計和仿真驗證。圖8是HD-SDI合成模塊的仿真結果,圖9是本文成像系統在監視器上的顯示結果對比,其中(a)是未啟動白平衡算法和伽馬校正的原始圖像,(b)是經過白平衡算法和伽馬校正等預處理后的圖像,從兩者對比可以看出,未經過預處理的圖像顏色失真,而經本文預處理后的圖像畫面逼真,質量更高。
4 結論
本文設計了一種基于FPGA的數字高清CMOS遙感成像系統,以FPGA為主處理器,經過對傳感器控制、圖像采集與圖像預處理,得到了高質量的遙感圖像。通過軟件仿真和硬件測試,驗證了該設計方案的正確性和有效性。
參考文獻
[1] 范鐵道.基于FPGA的數字高清CCD攝像機技術研究[D].西安:中國科學院研究生院(西安光學精密機械研究所),2009.
[2] 趙鵬,沈庭芝,單寶堂.基于CMOS圖像傳感器的微型無人機遙感系統設計[J].光子學報,2008,37(8):1657-1661.
[3] 劉海英.基于CMOS圖像傳感器的數字高清成像技術研究[D].西安:中國科學院研究生院(西安光學精密機械研究所),2008.
[4] 谷元保,付守卓.一種基于灰度世界模型自動白平衡方法[J].計算機仿真,2005,22(9):185-188.
[5] MALVAR H S,He Liwei,CUTLER R.High-quality linear interpolation for demosaicing of Bayer-patterned color im-ages[C].IEEE International Conference on Acoustics,Speechand Signal Processing.Montreal:IEEE,Piscataway,NJ,2004.