摘 要:介紹一款帶有字符疊加功能的畫中畫視頻處理器,將兩路視頻輸入信號處理后在屏幕上顯示一大一小兩個可調(diào)畫面,減少多畫面監(jiān)控所需的數(shù)據(jù)存儲量,并提高視頻安全性。通過內(nèi)部字符點陣轉(zhuǎn)換,能在畫面疊加任意字符信息,提供更為詳細具體的畫面信息,可廣泛應(yīng)用于審訊、交通、銀行等部門的視頻監(jiān)控系統(tǒng)中。
關(guān)鍵詞:字符疊加;畫中畫;視頻處理器;視頻監(jiān)控系統(tǒng)
中圖分類號:TN941.1 文獻標識碼:A
1 引言
目前的視頻監(jiān)控系統(tǒng)普遍采用畫面分割器或視頻矩陣來實現(xiàn)多畫面監(jiān)控,每一路視頻信號的保存給存儲空間提出了很高的要求。畫中畫視頻處理器可以將兩路或更多視頻信號疊加成一路信號,在這一路信號上同時混入多路視頻的數(shù)據(jù),大大地減小了存儲空間,而且其連續(xù)的視頻流還能夠防止人為修改畫面信息,在視頻數(shù)據(jù)安全性及保存時限要求較高的視頻監(jiān)控系統(tǒng)中得到廣泛的應(yīng)用。
畫中畫(Picture in Picture,PIP),即在一個屏幕上同時顯示不同通道的兩個或多個畫面,并能實現(xiàn)畫面的調(diào)整、切換等。目前國內(nèi)畫中畫視頻處理器基本都是只對視頻信號進行處理,而在需要記錄環(huán)境和特定的字符信息,包括日期時間、溫度濕度信息以及標題等時,則采用外部字符疊加器來實現(xiàn)字符疊加。本文介紹一種集成字符疊加功能的畫中畫視頻處理系統(tǒng),將字符信息混入視頻信號中,從而在屏幕的特定位置上與圖像信號同時進行顯示,不僅可以疊加靜態(tài)字符,還能與上位機通訊來實現(xiàn)任意字符的動態(tài)疊加,脫離上位機仍能顯示并保存字符,從而簡化監(jiān)控系統(tǒng)的工程實施,降低成本。
2 功能原理
本系統(tǒng)通過對Nextchip公司的視頻處理芯片NVC1001的讀寫控制,來實現(xiàn)視頻信號處理和字符疊加功能。NVC1001是一款功能強大的專用芯片,支持NTSC和PAL視頻制式,具有四路視頻輸入兩路視頻輸出(為敘述方便,僅以兩路輸入一路輸出為例),通過內(nèi)部寄存器的設(shè)置可以實現(xiàn)對每路視頻輸入的位置和大小進行調(diào)節(jié),具有OSD(On Screen Display)功能,能夠?qū)⒒烊胍曨l信號的字符信息在屏幕上顯示出來。
2.1 畫中畫原理
視頻處理芯片NVCl001通過設(shè)置相關(guān)寄存器來支持畫中畫模式,最主要的寄存器如圖1所示,其中CHEAN和CH_PIP控制每路輸入信號的顯示使能和畫中畫功能使能,CHEAN為高時該通道輸出顯示使能,而CH_PIP為高時則該通道進入畫中畫模式,即顯示為小畫面,為低時顯示普通的大畫面,通過改變其值能實現(xiàn)大小畫面之間的無混疊切換;CH_HL、CH_HR、CH_VT、CH_VB則是設(shè)置通道01畫面的位置坐標(以通道01為例),通過設(shè)置不同值來調(diào)節(jié)畫面在屏幕的顯示位置;而其內(nèi)建高性能的H/V定標器由SCALE來控制,設(shè)置為000~111來調(diào)用7檔不同的大小比例。
2.2 字符疊加原理
字符一般以點陣形式存儲,通過一定的掃描方式逐個把點陣描繪出來并輸出至顯示設(shè)備。以HZKl6中的16*16點陣為例,它使用32字節(jié)數(shù)據(jù)(256個象素點)來描述一個漢字,每個象數(shù)點的顏色分為前景色和背景色,分別用1和0表示,如圖2所示。將所有常用字符的點陣數(shù)據(jù)按照一定的排列順序存放在一起,就形成了點陣字庫。
在視頻系統(tǒng)中疊加字符時,如果前端攝像頭所攝取的畫面與字符的前景色相同或相近時,字符將被混淆而不能識別。因此需要通過一定的轉(zhuǎn)換算法,使這些點陣信息具有邊框?qū)傩?,例如白字黑邊,這樣在不同的色彩環(huán)境下均能清晰地顯示字符信息。本系統(tǒng)的優(yōu)點在于能通過單片機將標準字符點陣轉(zhuǎn)換為符合NVC1001 OSD功能的字符信息,用2bit參數(shù)來表示字符的前景色、邊框和背景色,在對視頻信號進行畫中畫處理的同時實現(xiàn)點陣信息的轉(zhuǎn)換和疊加,而不需要另外的CPU和專用字符疊加芯片來進行計算處理。
具體轉(zhuǎn)換過程為:某字符32字節(jié)點陣數(shù)據(jù)存放在Character_Buf[32]中,在其每一位右邊插入一個0,即擴展為64字節(jié)數(shù)據(jù)并寫入NVC_Char-acter_Buf[64]。此時原點陣數(shù)據(jù)中的1轉(zhuǎn)換成10,0則由00表示,也即是前景色表示成10,背景色表示成00。這樣就可以判斷每字節(jié)數(shù)據(jù)中偶數(shù)位為1的相鄰8個偶數(shù)位的值,為1則表示該點也是屬于字符前景色,為0則認為是字符的邊框,將該0位右邊的對應(yīng)奇數(shù)位置1,該點就表示成01了。
通過對標準字符點陣所有偶數(shù)位的判斷和計算后,逐次更新NVC_Character Buf[64]得到新的字符信息,此也即是系統(tǒng)待疊加的字符信息。這給系統(tǒng)設(shè)計提出兩點要求:一是準確讀取固化于存儲芯片中的標準字庫點陣信息,并通過算法實現(xiàn)正確轉(zhuǎn)換;二是要求較高的單片機處理速度,完成一連串處理命令時保證字符顯示的連續(xù)性,不出現(xiàn)明顯的停頓感。
3 硬件電路設(shè)計
本系統(tǒng)的字符疊加功能是以NVC1001為核心,通過單片機W77E58的控制,并輔以一些外圍的電路和器件來實現(xiàn)的。硬件設(shè)計包括視頻解碼電路、視頻信號處理電路、控制電路、通信接口電路及存儲電路,如圖3所示。
視頻解碼電路:設(shè)計上選用解碼芯片NVP1000A,它具有全數(shù)字同步鎖相電路、自動增益放大器和高性能二維Y/C梳狀濾波器等,支持12C協(xié)議,及可編程調(diào)節(jié)的亮度、對比度、色飽和度。從外部獲得的兩路復(fù)合視頻信號經(jīng)過NVP1000A內(nèi)部A/D轉(zhuǎn)換、濾波、解碼及校準電路后得到Y(jié)、Cb、Cr的數(shù)字色差信號,最后通過54M的二分頻時鐘信號來控制兩路信號的獨立分時輸出。
視頻信號處理電路:作為視頻信號處理和字符疊加的核心部分,NVC1001與四個部分進行數(shù)據(jù)交換。解碼電路輸出的8位數(shù)字視頻信號同時接入VIN_01和VIN_02,并由CLK_01和CLK_02時鐘信號來控制輸入選通;8根數(shù)據(jù)線MAD[7:0]經(jīng)+5V上拉電阻后與單片機的P0口相連,來實現(xiàn)寄存器的初始化、設(shè)置和數(shù)據(jù)讀寫;監(jiān)視器組的36個接口管腳與16M的SDRAM對應(yīng)管腳直接相連,最后的復(fù)合視頻信號Y/C經(jīng)視頻驅(qū)動芯片放大后即可輸入到顯示設(shè)備。
控制電路:選用Winbond公司的快速單片機W77E58,通過全新設(shè)計的微處理器內(nèi)核,去除多余的時鐘和存儲周期,在相同的晶振頻率下,其運行速度比傳統(tǒng)8051系列快1.5到3倍,給復(fù)雜字符點陣轉(zhuǎn)換和疊加提供保證,即使?jié)M屏顯示字符也不會有大的停留感。1K的SRAM也給字符轉(zhuǎn)換所需的緩存區(qū)提供足夠空間。
通信接口電路:具有RS232、RS485兩個串口來擴展系統(tǒng)與外圍設(shè)備的連接,可同時與PC上位機和溫濕度傳感器等進行通訊,實現(xiàn)上位機控制和溫度濕度信息的靜態(tài)疊加顯示。 存儲電路:NVC1001支持標準16M~256M的SDRAM直連,給電路設(shè)計帶來很大的方便,根據(jù)視頻輸入通道數(shù)來選擇存儲容量不同的SDRAM,用于保存待處理的視頻信號數(shù)據(jù),得到實時流暢的視頻輸出。AT24C16用于存放各種需掉電保存的數(shù)據(jù),包括視頻處理芯片的寄存器、參數(shù)設(shè)置以及字符數(shù)據(jù)等,也同樣支持12C協(xié)議,而SST25VF020則用于存儲14*14的一級、二級常用漢字庫(每個字符以32字節(jié)存儲,由其它程序裝入),通過SPI協(xié)議與單片機實現(xiàn)數(shù)據(jù)讀寫,節(jié)省了單片機的硬件資源。
4 功能實現(xiàn)
處理器功能通過單片機程序和上位機設(shè)置來實現(xiàn)。單片機程序主要包括初始化模塊(管腳、串口、各芯片相關(guān)寄存器)、讀取存儲器保存的數(shù)據(jù)信息模塊、讀字符點陣模塊、字符點陣轉(zhuǎn)換模塊、鍵盤掃描模塊及與上位機通信程序模塊;而上位機通過串口通訊向單片機發(fā)出各種控制命令實現(xiàn)對系統(tǒng)畫面屬性和字符疊加的控制等。
4.1 單片機程序
單片機執(zhí)行初始化程序后,根據(jù)存儲器的數(shù)據(jù)來設(shè)置各芯片寄存器,調(diào)節(jié)各通道畫面屬性和信息,再把要疊加的字符串點陣數(shù)據(jù)依次從Flash中讀出,并完成字符逐個轉(zhuǎn)換和疊加顯示,然后等待鍵盤輸入和上位機的控制命令,程序流程如圖4所示。系統(tǒng)上電后初始化各管腳、定時器、串口等,設(shè)置制式標志寄存器,并按視頻制式來設(shè)置畫面質(zhì)量、畫面顯示及其模式、畫面的位置和大小等,還原掉電前的屬性設(shè)置;根據(jù)鍵盤輸入和上位機通信命令去執(zhí)行相應(yīng)的子程序,并在每次修改寄存器之前,將其設(shè)置值寫入存儲器中,實現(xiàn)掉電保存的功能。
除了執(zhí)行畫中畫功能外,還根據(jù)上位機命令執(zhí)行字符疊加功能,按疊加要求把相應(yīng)的字符信息顯示在屏幕的指定位置。
4.2 字符點陣信息讀取
標準漢字字庫中漢字是以兩個字節(jié)的機內(nèi)碼形式存儲,第一個字節(jié)為區(qū)碼,為了與ASCII碼區(qū)別,范圍從0A1H開始(小于80H的為ASCH碼字符),對應(yīng)區(qū)位碼中的第一區(qū);第二個字節(jié)為位碼,范圍也從0A1H開始,對應(yīng)某區(qū)中的第一個位碼,這樣,將漢字機內(nèi)碼減去0A1A1H就得該漢字的區(qū)位碼,進而計算其對應(yīng)的存儲偏移量。以HZKl6中某漢字的機內(nèi)碼為例來計算其區(qū)位碼和存儲偏移量:
區(qū)碼X=(機內(nèi)碼字節(jié)1-0xAl)
位碼Y=(機內(nèi)碼字節(jié)2-0xAl)
偏移量OFFSET=(X*94+Y)*32
(HZK24則乘以48來計算偏移量)
根據(jù)計算出的偏移量就能得到字符存儲的起始位置,只需將其后的連續(xù)32個字節(jié)數(shù)據(jù)讀出,就得到了字符的點陣信息。
單片機將每次接收到的字符串顯示位置和內(nèi)碼信息都保存在存儲器中,下次上電時查詢、判斷相應(yīng)存儲區(qū)并讀出數(shù)據(jù),轉(zhuǎn)換后把它們顯示在畫面上,實現(xiàn)字符信息的掉電保存功能。同樣可以在程序代碼中寫入固定的字符機內(nèi)碼,程序運行時自動完成靜態(tài)字符的疊加,在某些應(yīng)用中就可以完全脫離上位機來實現(xiàn)字符顯示。
4.3 字符點陣轉(zhuǎn)換算法
視頻處理芯片NVC1001根據(jù)所要疊加的點陣信息來設(shè)置點的屬性寄存器MDATA,而EXTV和EXTH則是確定疊加字符的位置坐標,由芯片提供的屏蔽功能MMask來判斷該點信息是否寫入SDRAM,即混入到視頻流中,最終視頻輸出實現(xiàn)字符疊加。點的屬性參數(shù)有Mix、Blink、Index1、Index2,分別對應(yīng)亮度、閃爍以及顏色。字符點陣轉(zhuǎn)換就是針對標準字庫點陣的每個點來判斷其周圍各點的屬性,并用Index1、Index2來表示,設(shè)置不同的數(shù)值去調(diào)用不同的顏色LUT,或為前景色,或為邊框,或為背景色。
有一點需要注意的是:標準字符點陣信息是高位在前,低位在后,而NVC1001中的MDATA描述點陣則是低位在前高位在后,因此在字符轉(zhuǎn)換之前必須把32字節(jié)點陣數(shù)據(jù)重新排列并擴展為64字節(jié)存儲,再進行字符邊框的判斷。通過設(shè)置顏色表LUT不同的值,將轉(zhuǎn)換后的數(shù)據(jù)寫入MDATA就能以不同的顏色來顯示字符的前景色、邊框和背景色。
5 結(jié)束語
本系統(tǒng)將畫中畫視頻處理和字符疊加功能集于一體,可以實現(xiàn)動態(tài)和靜態(tài)字符疊加,功能齊全、操作方便、布線簡單、成本低,已成功應(yīng)用于檢察院審訊室監(jiān)控系統(tǒng)中。應(yīng)用結(jié)果證明系統(tǒng)運行安全可靠,有效地監(jiān)視目標和記錄各項信息,取得良好的錄像監(jiān)控取證效果。本系統(tǒng)還能設(shè)置地址實現(xiàn)多機聯(lián)網(wǎng),通過上位機來控制多臺畫中畫處理器獨立顯示字符,在商場、銀行、交通管理等多點集中監(jiān)控場所具有廣闊的推廣應(yīng)用前景。