0 引言
SDI 接口(Serial Digital Interface)是直接通過采用數字化的方法對視頻信號進行控制。處理和傳輸,將數字視頻或者音頻信號按有效行場方式通過單芯同軸電纜傳輸,而后將數字信號直接接入后續的處理系統,避免傳統的模擬信號因A/D 和D/A 轉換帶來的圖像細節和質量損失,也使得設備間的交互變得更加簡單方便。
SDI接口傳輸速率高。適應性強。即插即用。對環境要求不高以及應用范圍廣等特點,目前SDI已經作為國內很多戰略靶場軍工圖像設備的一種協議標準。
目前在民用方面,SDI接口作為一種標準視頻傳輸接口已被世界上多數視頻設備廠商接受并采納,涉足數字攝像領域。電視電影及專業的演播室等領域。世界知名的索尼。松下等公司生產的視頻設備均支持SDI接口協議。
1 系統硬件結構
系統結構如圖1所示,主要由Camera Link接口。千兆網接口。大容量SRAM存儲器.FPGA芯片.SDI接口芯片以及SDI接口監視器等構成。這里FPGA是整個系統的核心邏輯,采用XILINX 公司的V2 系列XC2V4000FFG1152 芯片,該芯片有1 152 個IO 引腳,4 MB 的系統門單元,120個乘法器,12個數字時鐘管理器,824個用戶可定義IO,120×18 b的塊RAM.豐富的硬件資源給輸入圖像的顯示和增強處理提供了可靠保證。該系統的基本工作過程首先接收Camera Link接口或千兆網接口的圖像數據,經過專用接口轉換芯片將數據轉換成TTL 或者CMOS 格式,傳送給FPGA,在FPGA內部經過實時圖像處理。協議轉換,輸出符合SDI接口芯片的數據,經過接口芯片的并串轉換,實時輸出SDI標清圖像數據。
這里FPGA的主要工作原理如圖2所示。在該模塊中,系統上電后首先完成對SDI接口芯片工作寄存器的配置,從而完成對其工作模式的選擇;然后需要完成輸入圖像數據接口到接口芯片的行場時鐘協議轉換以及數據到YCbCr格式轉換,這里采用FPGA對雙緩存的控制完成格式轉換,本文應用畫幅縮放?;叶壤旌蛡尾噬幚韺崿F圖像增強處理,這在下一節做具體描述。
2 圖像增強算法
2.1 灰度拉伸算法
現在很多相機都基于CameraLink接口和千兆網接口,它們的輸出數據位存在8 b,10 b 和14 b 等多種情況,本文在系統設計時做了智能處理,通過上位機RS232串口向該系統轉換模塊發送一個命令信號,告知系統輸入端的灰度數據位數和系統輸出端的數據位數,從而使算法實現不同的灰度拉伸。由于一般的監視器只能顯示8 b灰度的圖像數據,SDI信號有8 b和10 b兩個差別。對灰度圖像做一個線性拉伸,不論前端輸入圖像數據是多少位,可以利用該算法將圖像數據映射到8 b和10 b 空間,即下面介紹的拉伸處理。這里以輸入圖像數據14 b為例,假設輸入為10 b圖像數據,其宏觀概念是,將14 b 數據空間線性映射到10 b 空間。假設做灰度拉伸前的灰度值為Yi ,則它的灰度取值范圍是[0,16 383];灰度拉伸之后的灰度值為Yi ′ ,它的取值范圍為[0,1 023],則Yi 和Yi ′ 直接直接的映射關系為:
式中:Ymax 為某幀圖像的灰度最大值;Ymin 為某幀圖像的灰度最小值。
如果輸出為8 b圖像數據,則根據需要將14 b灰度轉換到8 b灰度空間,線性映射關系為:
式中:Ymax 為某幀圖像的灰度最大值;Ymin 為某幀圖像的灰度最小值。
根據上面的公式可看出,在進行拉伸變換時,需要用到基本的乘除法運算,這在Xilinx公司 FPGA內部實現起來較困難,最為常用的做法是調用FPGA內部的乘除法IP核,這樣可以極大提高FPGA的工作效率。根據上面的公式,若想實現算法,還需要知道當前幀圖像數據的灰度最小值和最大值.FPGA工作是以時鐘為基礎的,具有實時性,如果想獲得當前幀的灰度最值,需要對圖像數據進行緩存處理,然后二次提取最值。在程序實現上,為了簡便起見,在此利用前一幀數據的灰度最大值和最小值來代替當前幀的最大值最小值。這樣對當前幀遍歷求取最值,然后應用到下一幀圖像中去,這里認為前后幀相關性比較大,不會對算法造成很大影響。
2.2 偽彩處理
經黑白相機輸入的圖像數據經過協議轉換處理后得到的是SDI接口視頻YCbCr格式中亮度Y 分量,這時將CbCr在程序里填充80h,就構成YcbCr信號,而后用于輸出顯示,為了增強顯示效果,顏色更加能豐富人眼的視覺效果,下面給出一個算法將灰度轉換為偽彩色。
實現偽彩處理,通常是把當前像素灰度值作為存儲地址查找RGB 偽彩碼表,將碼表中對應的RGB 三色值用RGB轉換到YcbCr彩色區間,而后輸出偽彩圖像。在FPGA里實現的基本方法是最大限度地利用FPGA的IP核,將RGB碼表寫到FPGA的內嵌RAM核里,在程序中依次遍歷查找表和計算下面的公式計算出相應的CbCr值并且輸出。
2.3 畫幅縮放
圖像的畫幅縮放也被稱為圖像重采樣,它是視頻處理中的一項重要技術。在SDI顯示輸出模塊中,由于標清SDI 顯示畫幅分辨率是720 × 576,前端輸入CameraLink或者其他接口的圖像分辨率隨機,所以必然會用到圖像畫幅縮放,否則,如果圖像分辨率超出SDI的這個范圍,就會導致顯示不全,如果分辨率小于這個范圍,就會導致有黑框,直接影響后續的顯示效果。
目前畫幅縮放的算法種類繁多,但基本方法都是插值運算方面的算法,例如最近鄰插值。雙線性插值以及立方卷積插值算法等,但最近鄰插值算法在亮度變化比較快的圖像邊緣比較粗糙;立方卷積插值算法非常復雜而且運算量大,不滿足實時處理條件。同前面2種插值算法比較,雙線性插值算法運算量少。實時性高,適合于在FPGA內部實現。
如圖3所示,假設原始圖像中的某點 (x,y) ,則相鄰的右側和下方像素點位置為 (x + 1,y),(x,y + 1), (x + 1,y + 1),假設它們的灰度值分別是P1,P2,P3,P4,在水平方向和垂直方向上的位移都是單位1,并假設待插入點的位置坐標為:(x + d ) x ,y + dy 。
那么根據雙線性插值算法原理得到插入點的灰度值為:
從上式看出,當知道待插值點的偏移距離dx 和dy后,那么該插值像素點的灰度值可根據周圍的4 點得到。該系統中的畫幅縮放處理正是采用雙線性插值算法,其在FPGA內部實現的具體功能如框圖4所示,主要由數據緩存單元。雙線性插值單元。插值系數控制單元組成。
在實現圖像縮放算法以前,首要算出圖像的縮放因子k.這里以一行圖像為例,以單位長度“1”表示相鄰2個像素的距離,圖像縮放前的分辨率為A × 1,圖像縮放后的分辨率為B × 1,則縮放前后的圖像的像素縮放因子k = B A 。例如,分辨率為640×512 的圖像縮放為720×576的圖像,則在水平方向上縮放因子k=1.25;垂直方向上的縮放因子k=1.125;根據不同的情況,在水平。垂直方向上的縮放比例因子不同。
根據圖4 和插值的運算公式,每經過一個像素時鐘,插值系數dx ,dy 需要實時提供給插值運算模塊,這就要求FPGA 時序同步,并且FPGA 各個功能模塊能夠有效配合。
3 實驗結果及分析
將硬件系統和相機連接,該相機基本參數是320×256 分辨率,14 b 像素深度,幀頻25/50 可調。通過PC機的RS 232 串口連接轉一個轉換設備,使之滿足RS 422 差分協議,以便發送命令給硬件系統和返回硬件系統狀態。
FPGA程序采用模塊化方式,分為圖像采集輸出模塊。雙緩存控制模塊。通信控制模塊。偽彩處理模塊?;叶壤炷K。畫幅縮放模塊和SDI時序生成模塊,其中偽彩處理模塊?;叶壤炷K和畫幅縮放模塊通過RS 422 接口發送不同的指令給FPGA,就會觸發相應的模塊工作,具體FPGA 初始化過程中軟件工作流程如圖5所示。
SDI輸出顯示采用JVC 公司專用的SDI監視器,和電路板之間用75 Ω的同軸電纜連接,系統工作后測試了相應功能,并將圖像顯示在監視器上,圖6是顯示的未通過任何增強處理的7~14位圖像。
圖7是顯示的經過灰度拉伸處理的圖像,將14位拉伸成8位。
圖8 是經過拉伸處理后再經過偽彩色增強處理的圖像。圖9是經過偽彩色增強處理的拉伸圖像再進行畫幅拉伸使之全屏顯示。
4 結語
本文設計了一種基于SDI接口輸出的圖像顯示系統,在FPGA 里面封裝了灰度拉伸。偽彩色處理以及畫幅拉伸增強算法函數,幾種算法可以單獨調用,也可以串行一塊工作。實驗結果表明,該系統可以很穩定地將Camera Link接口或者千兆網口輸入圖像經協議轉換為標清SDI輸出,并可以把灰度很低的圖像進行對比度增強,極大增強了人眼的視覺效果,由于SDI轉換協議以及各個增強算法都在FPGA內部實現,完全可以達到資源優化利用和實時性要求.
評論