基于SDI接口的實(shí)時(shí)圖像增強(qiáng)顯示系統(tǒng)
經(jīng)黑白相機(jī)輸入的圖像數(shù)據(jù)經(jīng)過協(xié)議轉(zhuǎn)換處理后得到的是SDI接口視頻YCbCr格式中亮度Y分量,這時(shí)將CbCr在程序里填充80h,就構(gòu)成YebCr信號,而后用于輸出顯示,為了增強(qiáng)顯示效果,顏色更加能豐富人眼的視覺效果,下面給出一個(gè)算法將灰度轉(zhuǎn)換為偽彩色。
實(shí)現(xiàn)偽彩處理,通常是把當(dāng)前像素灰度值作為存儲地址查找RGB偽彩碼表,將碼表中對應(yīng)的RGB三色值用RGB轉(zhuǎn)換到Y(jié)ebCr彩色區(qū)間,而后輸出偽彩圖像。在FPGA里實(shí)現(xiàn)的基本方法是最大限度地利用FPGA的IP核,將RGB碼表寫到FPGA的內(nèi)嵌RAM核里,在程序中依次遍歷查找表和計(jì)算下面的公式計(jì)算出相應(yīng)的CbCr值并且輸出。
R=1.164(Y-16)+1.596(Cr-128)
G=1.164(Y-16)-0.813(Cr-128)-0.391(Cb-128)
B=1.164(Y-16)+2.018(Cb-128)
2.3 畫幅縮放
圖像的畫幅縮放也被稱為圖像重采樣,它是視頻處理中的一項(xiàng)重要技術(shù)。在SDI顯示輸出模塊中,由于標(biāo)清SDI顯示畫幅分辨率是720× 576,前端輸入CameraLink或者其他接口的圖像分辨率隨機(jī),所以必然會用到圖像畫幅縮放,否則,如果圖像分辨率超出SDI的這個(gè)范圍,就會導(dǎo)致顯示不全,如果分辨率小于這個(gè)范圍,就會導(dǎo)致有黑框,直接影響后續(xù)的顯示效果。
目前畫幅縮放的算法種類繁多,但基本方法都是插值運(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+dx,y+dy)。
那么根據(jù)雙線性插值算法原理得到插入點(diǎn)的灰度值為:
P’(x+dx,y+dy)=(1-dx)(1-dy)P1+dx(1-dy)P2+dy(1-dx)P3+dxdyP4
化簡后得到:
P’(x+dx,y+dy)=P1+(P2-P1)dx+(P3-P1)dy+[(P4-P3)-(P2-P1)]dxdy
從上式看出,當(dāng)知道待插值點(diǎn)的偏移距離dx和dy后,那么該插值像素點(diǎn)的灰度值可根據(jù)周圍的4點(diǎn)得到。該系統(tǒng)中的畫幅縮放處理正是采用雙線性插值算法,其在FPGA內(nèi)部實(shí)現(xiàn)的具體功能如框圖4所示,主要由數(shù)據(jù)緩存單元、雙線性插值單元、插值系數(shù)控制單元組成。
在實(shí)現(xiàn)圖像縮放算法以前,首要算出圖像的縮放因子k。這里以一行圖像為例,以單位長度“1”表示相鄰2個(gè)像素的距離,圖像縮放前的分辨率為A×1,圖像縮放后的分辨率為B×1,則縮放前后的圖像的像素縮放因子k=B/A。例如,分辨率為640x512的圖像縮放為720x576的圖像,則在水平方向上縮放因子k=1.25;垂直方向上的縮放因子k=1.125;根據(jù)不同的情況,在水平、垂直方向上的縮放比例因子不同。
根據(jù)圖4和插值的運(yùn)算公式,每經(jīng)過一個(gè)像素時(shí)鐘,插值系數(shù)dx,dy需要實(shí)時(shí)提供給插值運(yùn)算模塊,這就要求FPGA時(shí)序同步,并且FPGA各個(gè)功能模塊能夠有效配合。
3 實(shí)驗(yàn)結(jié)果及分析
將硬件系統(tǒng)和相機(jī)連接,該相機(jī)基本參數(shù)是320x256分辨率,14 b像素深度,幀頻25/50可調(diào)。通過PC機(jī)的RS 232串口連接轉(zhuǎn)一個(gè)轉(zhuǎn)換設(shè)備,使之滿足RS 422差分協(xié)議,以便發(fā)送命令給硬件系統(tǒng)和返回硬件系統(tǒng)狀態(tài)。
FPGA程序采用模塊化方式,分為圖像采集輸出模塊、雙緩存控制模塊、通信控制模塊、偽彩處理模塊、灰度拉伸模塊、畫幅縮放模塊和SDI時(shí)序生成模塊,其中偽彩處理模塊、灰度拉伸模塊和畫幅縮放模塊通過RS 422接口發(fā)送不同的指令給FPGA,就會觸發(fā)相應(yīng)的模塊工作,具體FPGA初始化過程中軟件工作流程如圖5所示。
評論