摘 要:針對當前基于專用ASIC的視頻顯示OSD方法不能滿足機載環境和特殊功能要求的難題,提出一種基于FP—GA的視頻OSD實現方法。新方法將前端輸入的原始視頻數據和當前模塊的OSD數據分層處理,然后在顯示終端再混合,能夠實現OSD對象的可控透明顯示和特殊符號定制。實驗證明該方法不僅占用FPGA片上資源少,顯示效果非常好,而且完全滿足機載環境要求。
關鍵詞:機載;視頻;OSD;FPGA
中圖分類號:TN873.93
文獻標識碼:A
文章編號:1004—373X(2008)04—137—02
1 引 言
視頻OSD(on Screen Display,在屏顯示)一般采用ASIC方法,OSD芯片內嵌常用字符和位圖,首先將所需的符號從專用OSD芯片內讀出,然后在屏幕指定位置寫入上述數據。但是OSD芯片通常為商業級別,不能滿足機載環境要求;而且內部固化好的字符和位圖無法提供機載系統需要定制的某些特種符號。
針對基于ASIC的視頻OSD方法不能滿足機載環境和特殊功能的難題,本文提出一種基于FPGA的視頻OSD實現方法。新方法將原始視頻數據和OSD數據分層處理,能夠實現0SD對象的透明顯示和符號定制。由于采用工業級以上FPGA芯片實現OSD,不僅易于實現定制的特殊圖形對象,而且占用資源少,顯示效果非常好。
2 系統架構
機載視頻OSD實現方法是機載視頻系統的重要部分,完成特征信息疊加功能,圖1為機載視頻系統實現框圖。攝像頭采集的CVBS信號送入視頻解碼芯片,產生BT656格式的YCrCb4:2:2視頻數據和同步信號,通過串行方式送入FPGA的視頻轉換模塊,進行分辨率與幀率等轉換,生成800×600/60 Hz的RGB信號,并送給視頻處理模塊。視頻處理模塊通過視頻識別算法鎖定目標對象,將其起始位置(x1,y1)和結束位置(z2,y2),即某行點象素時鐘計數值和行同步信號計數值發送給OSD模塊,用于確定疊加目標的鎖定矩形框的位置和大小。其中,SDRAM用于存儲視頻轉換和視頻處理模塊中緩存的大量視頻數據,各路傳感器將飛機狀態經過放大和A/D轉換后。送給FPGA的OSD模塊進行疊加。片上ROM存儲用于OSD疊加的字符和位圖;視頻處理模塊輸出的數據和OSD模塊數據融合后輸出到LCD。

如圖2所示,OSD模塊的各種數據采用分層方法:LO層為視頻處理輸出RGB數據;u層為OSD字符和位圖數據,字符用來表示飛機的經緯度、高度、速度、座艙溫度等信息,位圖用來表示亮度和對比度調整的示意信息;L2層為矩形框,用來表示鎖定目標的大小和位置,由于攝像頭和目標處于運動狀態,顯示目標大小是不斷變化的,因此需要跟蹤的矩形框也隨著改變大小。在機載視頻顯示系統中,需要將和鎖定目標的矩形框等疊加在攝像機輸入視頻流上,然后融合輸出給LCD屏;在混合器里通過可調系數Alpha改變疊加信息的透明度。用戶通過矩陣鍵盤控制OSD符號的亮度、對比度、位置、透明度和開關功能。
3 OSD疊加方法
3.1符號的產生與存儲方法
字符位圖的存儲采用FPGA的片上空間,將16進制字符和位圖數據合并生成一個.mif文件,將.mif文件導入LPM_ROM中。由于本系統所需符號較少,FPGA片上空間有限,只需將重要字符和位圖存儲進ROM空間。字符大小定為16×16象素,位圖大小定為64×64象素,每個字符在RGB空間占32 B,每個位圖占256 B,RGB每個分量都開辟這樣的空間,就可以實現彩色顯示。字符包括中英文字符和數字符號,根據國標GB 2312—80表,找出所需字符的16進制區位碼,而LCD輸出顯示的是機內碼,可以通過公式進行區位碼和機內碼的轉換:
(16進制區位碼)+16’hAOAO=機內碼
位圖可以用PC機圖像編輯工具將所需位圖編輯為64×64大小的bmp圖,生成.mif文件有2種方法:一種是將字符和位圖的16進制數據拷進.mif表中;還有一種是用Matlab工具按照字符和位圖的排布順序編程生成.mif文件。顯然第一種方法效率太低,這里采用第二種方法,按照mif文件格式,將字符和位圖數據用Matlab工具組織起來。
Mif文件生成后,還需開辟一個存放字符與位圖OSD區域位置分配的RAM空間表,將字符位圖的顯示位置和在ROM空間里面的存放位置形成一一對應關系,圖3為單個漢字字符顯示位置分配、組織結構和存儲空間結構示意圖。
3.2 圖形產生與顯示方法
視頻目標跟蹤矩形框由視頻信號點時鐘CLOCK、行同步信號HS、場同步信號VS和目標起始位置(x1,y1)、結束位置(x2,y2)決定。在OSD模塊L2層的視頻一場中,當行同步信號計數器HCount=x1或x2,且點象素時鐘計數器y1≤CCount≤y2時,輸出1;或者當點象素時鐘計數器CCount=y1或y2,且行同步信號計數器X1≤HCount≤X2時,輸出1;其他都輸出0。場同步信號用來給行同步信號計數器HCount和點象素時鐘計數器CCount清零。
3.3透明效果控制方法
在機載視頻顯示系統中,有時需要查看目標,有時需要查看重要參數,可在OSD控制模塊中設置一個Alpha(0(Alpha(1)參數,控制視頻疊加的透明度,規定Alpha=0時,L2層信息完全覆蓋L1層對應位置,L1層信息完全覆蓋L0層對應位置;Alpha=1時,L2層信息完全透明L1層對應位置,L1層信息完全透明L0層對應位置。定義LO層數據為VDataL0,L1層數據為VDataLl,L2層數據為VDataL2,L0層與L1層疊加后數據為VDataLO_L1,疊加后的L1層與L2層疊加后數據為VDataL0_LI_L2,即:VDataL0_L1=VDataL0*Alpha+VDataLl*(1-Alpha)VDataL0_LI_L2=VDataL0_IA*Alpha+VDataL2*(1-Al-pha)
在對FPGA編程設計時,小數的運算可以先記住小數點的位置,將小數左移n位變為整數,最后得出結果后再相應的右移n位,小數點后面的數舍掉。為了突出FPGA速度快的優勢,對3層數據和R,G,B三個分量同時采用并行運算,這樣就實現了視頻融合的同步顯示。
3.4 亮度與對比度調整方法
在機載環境下,受外在光線影響特別大,要想得到好的顯示效果,必須注重亮度與對比度控制。以RGB888為例,每個分量的值的范圍為0~255,共256種色深。將輸入色深作為2維坐標系橫坐標,將輸出色深作為縱坐標,以(0,0)為原點,則可得到一個直線方程:y=A×X+B。X為輸入色深;y為輸出色深;A為對比度;B為亮度。對比度和亮度要分別對待,不能因為改變對比度而改變亮度,將直線方程進行修改,把(127,127)這一點映射成坐標系的原點,那么直線方程將變為:y=(X-127)×A+B+127。A表示對比度,B表示亮度增量÷視頻的3個分量的變換公式為:
N_Red=(O_Red一127)×A+127+B
N_Green=(0一Green--127)×A+127+B
N_Blue=(O_Blue--127)×A+127+B
通過矩陣鍵盤可以控制A,B值,從而實現亮度和對比度的調整。
4 仿真實驗和分析
機載視頻OSD系統采用Altera公司的EP2C35為主控芯片,外加各路傳感器、視頻解碼器、LCD和矩陣鍵盤,LCD采用6.4″的工業級SHARP屏。通過仿真實驗發現OSD融合顯示模塊共耗費2 396個LE、92 460位RAM。實驗結果表明,本方法不僅完全滿足高低溫環境要求,而且實現定制圖案,占用片上資源少,實現效果好。