基于SDI 接口的實(shí)時(shí)圖像增強(qiáng)顯示系統(tǒng)
0 引言
SDI 接口(Serial Digital Interface)是直接通過(guò)采用數(shù)字化的方法對(duì)視頻信號(hào)進(jìn)行控制.處理和傳輸,將數(shù)字視頻或者音頻信號(hào)按有效行場(chǎng)方式通過(guò)單芯同軸電纜傳輸,而后將數(shù)字信號(hào)直接接入后續(xù)的處理系統(tǒng),避免傳統(tǒng)的模擬信號(hào)因A/D 和D/A 轉(zhuǎn)換帶來(lái)的圖像細(xì)節(jié)和質(zhì)量損失,也使得設(shè)備間的交互變得更加簡(jiǎn)單方便.
SDI接口傳輸速率高.適應(yīng)性強(qiáng).即插即用.對(duì)環(huán)境要求不高以及應(yīng)用范圍廣等特點(diǎn),目前SDI已經(jīng)作為國(guó)內(nèi)很多戰(zhàn)略靶場(chǎng)軍工圖像設(shè)備的一種協(xié)議標(biāo)準(zhǔn).
目前在民用方面,SDI接口作為一種標(biāo)準(zhǔn)視頻傳輸接口已被世界上多數(shù)視頻設(shè)備廠商接受并采納,涉足數(shù)字?jǐn)z像領(lǐng)域.電視電影及專(zhuān)業(yè)的演播室等領(lǐng)域.世界知名的索尼.松下等公司生產(chǎn)的視頻設(shè)備均支持SDI接口協(xié)議.
1 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)如圖1所示,主要由Camera Link接口.千兆網(wǎng)接口.大容量SRAM存儲(chǔ)器.FPGA芯片.SDI接口芯片以及SDI接口監(jiān)視器等構(gòu)成.這里FPGA是整個(gè)系統(tǒng)的核心邏輯,采用XILINX 公司的V2 系列XC2V4000FFG1152 芯片,該芯片有1 152 個(gè)IO 引腳,4 MB 的系統(tǒng)門(mén)單元,120個(gè)乘法器,12個(gè)數(shù)字時(shí)鐘管理器,824個(gè)用戶可定義IO,120×18 b的塊RAM.豐富的硬件資源給輸入圖像的顯示和增強(qiáng)處理提供了可靠保證.該系統(tǒng)的基本工作過(guò)程首先接收Camera Link接口或千兆網(wǎng)接口的圖像數(shù)據(jù),經(jīng)過(guò)專(zhuān)用接口轉(zhuǎn)換芯片將數(shù)據(jù)轉(zhuǎn)換成TTL 或者CMOS 格式,傳送給FPGA,在FPGA內(nèi)部經(jīng)過(guò)實(shí)時(shí)圖像處理.協(xié)議轉(zhuǎn)換,輸出符合SDI接口芯片的數(shù)據(jù),經(jīng)過(guò)接口芯片的并串轉(zhuǎn)換,實(shí)時(shí)輸出SDI標(biāo)清圖像數(shù)據(jù).
這里FPGA的主要工作原理如圖2所示.在該模塊中,系統(tǒng)上電后首先完成對(duì)SDI接口芯片工作寄存器的配置,從而完成對(duì)其工作模式的選擇;然后需要完成輸入圖像數(shù)據(jù)接口到接口芯片的行場(chǎng)時(shí)鐘協(xié)議轉(zhuǎn)換以及數(shù)據(jù)到Y(jié)CbCr格式轉(zhuǎn)換,這里采用FPGA對(duì)雙緩存的控制完成格式轉(zhuǎn)換,本文應(yīng)用畫(huà)幅縮放.灰度拉伸和偽彩色處理實(shí)現(xiàn)圖像增強(qiáng)處理,這在下一節(jié)做具體描述.
2 圖像增強(qiáng)算法
2.1 灰度拉伸算法
現(xiàn)在很多相機(jī)都基于CameraLink接口和千兆網(wǎng)接口,它們的輸出數(shù)據(jù)位存在8 b,10 b 和14 b 等多種情況,本文在系統(tǒng)設(shè)計(jì)時(shí)做了智能處理,通過(guò)上位機(jī)RS232串口向該系統(tǒng)轉(zhuǎn)換模塊發(fā)送一個(gè)命令信號(hào),告知系統(tǒng)輸入端的灰度數(shù)據(jù)位數(shù)和系統(tǒng)輸出端的數(shù)據(jù)位數(shù),從而使算法實(shí)現(xiàn)不同的灰度拉伸.由于一般的監(jiān)視器只能顯示8 b灰度的圖像數(shù)據(jù),SDI信號(hào)有8 b和10 b兩個(gè)差別.對(duì)灰度圖像做一個(gè)線性拉伸,不論前端輸入圖像數(shù)據(jù)是多少位,可以利用該算法將圖像數(shù)據(jù)映射到8 b和10 b 空間,即下面介紹的拉伸處理.這里以輸入圖像數(shù)據(jù)14 b為例,假設(shè)輸入為10 b圖像數(shù)據(jù),其宏觀概念是,將14 b 數(shù)據(jù)空間線性映射到10 b 空間.假設(shè)做灰度拉伸前的灰度值為Yi ,則它的灰度取值范圍是[0,16 383];灰度拉伸之后的灰度值為Yi ′ ,它的取值范圍為[0,1 023],則Yi 和Yi ′ 直接直接的映射關(guān)系為:
式中:Ymax 為某幀圖像的灰度最大值;Ymin 為某幀圖像的灰度最小值.
如果輸出為8 b圖像數(shù)據(jù),則根據(jù)需要將14 b灰度轉(zhuǎn)換到8 b灰度空間,線性映射關(guān)系為:
式中:Ymax 為某幀圖像的灰度最大值;Ymin 為某幀圖像的灰度最小值.
根據(jù)上面的公式可看出,在進(jìn)行拉伸變換時(shí),需要用到基本的乘除法運(yùn)算,這在Xilinx公司FPGA內(nèi)部實(shí)現(xiàn)起來(lái)較困難,最為常用的做法是調(diào)用FPGA內(nèi)部的乘除法IP核,這樣可以極大提高FPGA的工作效率.根據(jù)上面的公式,若想實(shí)現(xiàn)算法,還需要知道當(dāng)前幀圖像數(shù)據(jù)的灰度最小值和最大值.FPGA工作是以時(shí)鐘為基礎(chǔ)的,具有實(shí)時(shí)性,如果想獲得當(dāng)前幀的灰度最值,需要對(duì)圖像數(shù)據(jù)進(jìn)行緩存處理,然后二次提取最值.在程序?qū)崿F(xiàn)上,為了簡(jiǎn)便起見(jiàn),在此利用前一幀數(shù)據(jù)的灰度最大值和最小值來(lái)代替當(dāng)前幀的最大值最小值.這樣對(duì)當(dāng)前幀遍歷求取最值,然后應(yīng)用到下一幀圖像中去,這里認(rèn)為前后幀相關(guān)性比較大,不會(huì)對(duì)算法造成很大影響.
2.2 偽彩處理
經(jīng)黑白相機(jī)輸入的圖像數(shù)據(jù)經(jīng)過(guò)協(xié)議轉(zhuǎn)換處理后得到的是SDI接口視頻YCbCr格式中亮度Y 分量,這時(shí)將CbCr在程序里填充80h,就構(gòu)成YcbCr信號(hào),而后用于輸出顯示,為了增強(qiáng)顯示效果,顏色更加能豐富人眼的視覺(jué)效果,下面給出一個(gè)算法將灰度轉(zhuǎn)換為偽彩色.
實(shí)現(xiàn)偽彩處理,通常是把當(dāng)前像素灰度值作為存儲(chǔ)地址查找RGB 偽彩碼表,將碼表中對(duì)應(yīng)的RGB 三色值用RGB轉(zhuǎn)換到Y(jié)cbCr彩色區(qū)間,而后輸出偽彩圖像.在FPGA里實(shí)現(xiàn)的基本方法是最大限度地利用FPGA的IP核,將RGB碼表寫(xiě)到FPGA的內(nèi)嵌RAM核里,在程序中依次遍歷查找表和計(jì)算下面的公式計(jì)算出相應(yīng)的CbCr值并且輸出.
2.3 畫(huà)幅縮放
圖像的畫(huà)幅縮放也被稱為圖像重采樣,它是視頻處理中的一項(xiàng)重要技術(shù).在SDI顯示輸出模塊中,由于標(biāo)清SDI 顯示畫(huà)幅分辨率是720 × 576,前端輸入CameraLink或者其他接口的圖像分辨率隨機(jī),所以必然會(huì)用到圖像畫(huà)幅縮放,否則,如果圖像分辨率超出SDI的這個(gè)范圍,就會(huì)導(dǎo)致顯示不全,如果分辨率小于這個(gè)范圍,就會(huì)導(dǎo)致有黑框,直接影響后續(xù)的顯示效果.
目前畫(huà)幅縮放的算法種類(lèi)繁多,但基本方法都是插值運(yùn)算方面的算法,例如最近鄰插值.雙線性插值以及立方卷積插值算法等,但最近鄰插值算法在亮度變化比較快的圖像邊緣比較粗糙;立方卷積插值算法非常復(fù)雜而且運(yùn)算量大,不滿足實(shí)時(shí)處理?xiàng)l件.同前面2種插值算法比較,雙線性插值算法運(yùn)算量少.實(shí)時(shí)性高,適合于在FPGA內(nèi)部實(shí)現(xiàn).
如圖3所示,假設(shè)原始圖像中的某點(diǎn) (x,y) ,則相鄰的右側(cè)和下方像素點(diǎn)位置為 (x + 1,y),(x,y + 1), (x + 1,y + 1),假設(shè)它們的灰度值分別是P1,P2,P3,P4,在水平方向和垂直方向上的位移都是單位1,并假設(shè)待插入點(diǎn)的位置坐標(biāo)為:(x + d ) x ,y + dy .
評(píng)論