伍 穎,陳明義
(中南大學(xué) 信息科學(xué)與工程學(xué)院,湖南 長(zhǎng)沙 410083)
隨著數(shù)字電視的成熟與發(fā)展,高清電視將成為數(shù)字電視發(fā)展的必然趨勢(shì)。數(shù)字高清電視技術(shù)及其標(biāo)準(zhǔn)系統(tǒng)的形成,是電視技術(shù)發(fā)展的一次重要飛躍。數(shù)字標(biāo)清電視已廣泛應(yīng)用于電視產(chǎn)業(yè),世界上已出現(xiàn)了數(shù)字高清電視技術(shù)的熱潮。我國(guó)正處于高清晰電視推廣初期,高清晰度的節(jié)目源非常有限,需要格式轉(zhuǎn)換設(shè)備將大量的標(biāo)清格式的節(jié)目轉(zhuǎn)成高清格式。另外,為了節(jié)省寶貴的傳輸帶寬資源,在客戶端也可利用視頻上變換轉(zhuǎn)換成高清數(shù)字電視,滿足消費(fèi)者的需求。本文設(shè)計(jì)了基于FPGA的SDTV-HDTV轉(zhuǎn)換模塊來(lái)實(shí)現(xiàn)視頻上變換功能。
視頻格式轉(zhuǎn)換采用空間分辨率,這種分辨率轉(zhuǎn)換通常是指圖像縮放。如果輸入圖像和需要顯示的輸出圖像的每行像素?cái)?shù)或者每幀行數(shù)不同,則必須采用空間縮放技術(shù),圖像的空間縮放技術(shù)可以實(shí)現(xiàn)圖像的放大或者縮小[3]。本文研究圖像放大算法,在傳統(tǒng)的分辨率轉(zhuǎn)換算法中,一般先采用“去隔行”算法,將隔行轉(zhuǎn)換為逐行,然后再對(duì)逐行信號(hào)進(jìn)行提升轉(zhuǎn)換,得到目標(biāo)格式的圖像信號(hào)。由于“去隔行”技術(shù)的算法比較復(fù)雜且需要大量的存儲(chǔ)空間,因此將“去隔行”步驟與分辨率轉(zhuǎn)換中的垂直方向像素提升一起完成,簡(jiǎn)化了工作量,并節(jié)省了FPGA資源。
標(biāo)清數(shù)字視頻格式遵循PAL 625/50的標(biāo)準(zhǔn)[5],亮度信號(hào)的采樣頻率為13.5 MHz,一幀數(shù)據(jù)總共有625行,有效行為576行,其中分為奇偶兩場(chǎng),奇場(chǎng)有312行,偶場(chǎng)有313行,每場(chǎng)有效行為288行,每行共有 864個(gè)數(shù)據(jù),其中有效數(shù)據(jù)為 720個(gè),消隱數(shù)據(jù)為 144個(gè);高清數(shù)字視頻格式遵循HDTV-1920的標(biāo)準(zhǔn)[2],亮度信號(hào)的采樣頻率為74.25 MHz,一幀數(shù)據(jù)總共 1 125行,有效行為1 080行,其中分為奇偶兩場(chǎng),奇場(chǎng)有563行,偶場(chǎng)有562行,每場(chǎng)有效行位 540行,每行共有2 640個(gè)數(shù)據(jù),其中有效數(shù)據(jù)為1 920個(gè),消隱數(shù)據(jù)為720個(gè)。視頻信號(hào)同步字節(jié)嵌入在視頻數(shù)據(jù)中,用4個(gè)特征字節(jié)表示,分別為EAV和SAV。EAV與SAV之間的數(shù)據(jù)稱為行消隱區(qū)。標(biāo)清與高清在行消隱區(qū)的標(biāo)志位上也有區(qū)別,標(biāo)清視頻數(shù)據(jù)在EAV后直接接行消隱數(shù)據(jù),而高清視頻數(shù)據(jù)緊隨EAV后接行號(hào)LN和CRC校驗(yàn)碼再接行消隱數(shù)據(jù)。
根據(jù)SDTV與HDTV之間的差別,兩者之間的轉(zhuǎn)換主要是將水平方向的像素點(diǎn)個(gè)數(shù)增加為原來(lái)的1 920/720=8/3,垂直方向?qū)⒃黾訛樵瓉?lái)的1 080/576=15/8。
FPGA系統(tǒng)框圖如圖1所示,插值實(shí)現(xiàn)的過(guò)程分成2個(gè)步驟:(1)在水平方向的插值即行內(nèi)插值;(2)在垂直方向?qū)崿F(xiàn)插值即行間插值。系統(tǒng)接收到視頻輸入以后,根據(jù)幀同步、行同步等同步信號(hào)將有效視頻數(shù)據(jù)進(jìn)行行內(nèi)插值運(yùn)算,根據(jù)新生成像素對(duì)應(yīng)每個(gè)相鄰原始像素的權(quán)值,計(jì)算出新生成像素點(diǎn)的像素值,然后將行內(nèi)插值后的行寫入行存儲(chǔ)模塊中。行存儲(chǔ)模塊有2個(gè)作用:隔離輸入和輸出的2個(gè)不同時(shí)鐘域以及作為乒乓模塊提高數(shù)據(jù)的吞吐能力。根據(jù)之前的縮放比例要求,行內(nèi)插值模塊從行存儲(chǔ)模塊中讀出相關(guān)數(shù)據(jù),對(duì)某些地址的數(shù)據(jù)進(jìn)行重復(fù)讀取,再進(jìn)行新生成行的計(jì)算。插值完成以后的數(shù)據(jù)只是有效視頻數(shù)據(jù)的提升,最后根據(jù)高清視頻格式的標(biāo)準(zhǔn),打包生成符合格式標(biāo)準(zhǔn)的完整視頻數(shù)據(jù)。組標(biāo)志位數(shù)據(jù)包括了視頻消隱區(qū)里的EAV和SAV以及高清視頻中必須添加的行號(hào)LN和CRC碼。視頻輸出模塊對(duì)原始行和新生成的行進(jìn)行讀操作,以滿足縮放比例的要求。所有數(shù)據(jù)處理模塊同步時(shí)鐘均由同步控制模塊產(chǎn)生,保證數(shù)據(jù)流的同步,并確保顯示數(shù)據(jù)能以正確格式輸出。方向分別只利用到了相鄰2個(gè)像素的信息。雙線性插值濾波算法的優(yōu)點(diǎn)是能有效消除像素間的鋸齒,使輸出圖像平滑,缺點(diǎn)是對(duì)特殊場(chǎng)景如運(yùn)動(dòng)圖像等,可能出現(xiàn)圖像模糊等現(xiàn)象。但是該算法簡(jiǎn)潔、規(guī)則,處理圖像品質(zhì)穩(wěn)定。因此出于對(duì)設(shè)計(jì)周期、芯片成本等的綜合考慮,本設(shè)計(jì)采用雙線性插值濾波算法來(lái)實(shí)現(xiàn)視頻圖像縮放。
由于系統(tǒng)采用線性濾波算法,本質(zhì)上是對(duì)空間域內(nèi)點(diǎn)的加權(quán)求和,所以系統(tǒng)核心單元為乘加器。如果加權(quán)系數(shù)實(shí)時(shí)運(yùn)算,則會(huì)消耗大量的FPGA資源。因此將插值位置調(diào)整為固定的插值相位,各個(gè)插值相位的插值系數(shù)也為固定值。這樣,在簡(jiǎn)化系統(tǒng)設(shè)計(jì)的同時(shí),實(shí)現(xiàn)了圖像的縮放。行內(nèi)插值模塊是水平方向上分辨率的提升,使用輸入與輸出對(duì)應(yīng)2個(gè)不同頻率時(shí)鐘進(jìn)行控制。
在每個(gè)像素點(diǎn)中,亮度信號(hào)Y是獨(dú)立存在的,也就是在水平方向上將原來(lái)的720個(gè)亮度數(shù)據(jù)插值生成1 920個(gè)亮度數(shù)據(jù)。其中比值為8/3,即以3個(gè)數(shù)據(jù)為一組,插值生成8個(gè)數(shù)據(jù)。亮度信號(hào)行內(nèi)插值電路如圖2所示,相鄰兩點(diǎn)像素值的亮度數(shù)據(jù)經(jīng)過(guò)系數(shù)加權(quán)后再相加,根據(jù)行內(nèi)點(diǎn)計(jì)數(shù)器選擇輸出。y1、y2、y3為輸入的行內(nèi)插值前的3個(gè)像素點(diǎn)的亮度數(shù)據(jù)。此時(shí)輸出時(shí)鐘與輸入時(shí)鐘之比也為8/3,時(shí)鐘模塊由PLL產(chǎn)生。
視頻圖像格式轉(zhuǎn)換算法經(jīng)歷了線性濾波、自適應(yīng)非線性算法以及運(yùn)動(dòng)補(bǔ)償插值算法(MC)3個(gè)階段,其中線性濾波算法具有理想低通濾波的頻譜特性,且結(jié)構(gòu)簡(jiǎn)單,能取得較好的濾波效果[1]。雙線性插值算法的待插值點(diǎn)由其空間域內(nèi)的采樣點(diǎn)加權(quán)求得,其計(jì)算公式為:
式中f0(X,Y,n)為待插幀/場(chǎng),X、Y為空間位置,n為幀/場(chǎng)序號(hào),fi(x+k,y+l,n+m)為原始幀場(chǎng)中(X,Y,n)鄰域?qū)?yīng)的點(diǎn),h(k,l,m)為 插值 內(nèi)核[4]。 這種插 值內(nèi) 核只利用了當(dāng)前幀/場(chǎng)的相關(guān)性,因?yàn)殡p線性插值在水平和垂直
在每個(gè)像素點(diǎn)中,色差分量有2個(gè),分別為Cb和Cr。標(biāo)清720個(gè)像素點(diǎn)中有360個(gè)Cb數(shù)據(jù)和360個(gè) Cr數(shù)據(jù);高清1 920個(gè)像素點(diǎn)中有960個(gè)Cb數(shù)據(jù)和960個(gè)Cr數(shù)據(jù),2個(gè)色差分量是交錯(cuò)存在的。所以在水平方向上進(jìn)行插值時(shí),要以Cb和Cr為一組數(shù)據(jù),即將3組數(shù)據(jù)插值生成8組數(shù)據(jù),這其中的比值為16/6。色差分量信號(hào)行內(nèi)插值電路如圖3所示,相鄰2個(gè)像素點(diǎn)的2個(gè)色差數(shù)據(jù)經(jīng)過(guò)系數(shù)加權(quán)后再相加,根據(jù)行內(nèi)點(diǎn)計(jì)數(shù)器選擇數(shù)據(jù)輸出。 cb1,cr1,cb3,cr3,cb5,cr5 為輸入的行插值前6個(gè)像素點(diǎn)的色差分量數(shù)據(jù),相鄰2個(gè)亮度信號(hào)共用一組色差分量。
本系統(tǒng)要通過(guò)控制讀寫寄存器進(jìn)行行數(shù)提升,但這樣做會(huì)使圖像產(chǎn)生運(yùn)動(dòng)失真,表現(xiàn)為鋸齒和模糊,圖像分布也不均勻。解決這一問(wèn)題的方法是:首先進(jìn)行行數(shù)的場(chǎng)內(nèi)插值,然后利用場(chǎng)內(nèi)相鄰行間的內(nèi)容進(jìn)行線性插值,算出新插值生成行的內(nèi)容。垂直方向上亮度信號(hào)與色差信號(hào)的提升是一樣的,都是將原來(lái)的576行轉(zhuǎn)換成 1 080行,比例為 15/8,即以8行為一組,插值生成15行。將行內(nèi)插值后的高清數(shù)據(jù)分為Y、C 2個(gè)通道進(jìn)行行間插值。由于一行高清數(shù)據(jù)有1 920個(gè)字(行內(nèi)插值生成的),如果運(yùn)用8個(gè)RAM分別來(lái)存儲(chǔ)8行數(shù)據(jù),需要1 920×10×8=153 600 bit的 RAM,2 個(gè)通道就是2×153 600=307 200 bit的RAM,再加上需要進(jìn)行FIFO緩存,這樣存儲(chǔ)量相當(dāng)大,占用了大量FPGA的存儲(chǔ)量,甚至超過(guò)現(xiàn)有FPGA芯片的存儲(chǔ)資源且不方便后期處理,所以在行輸入端采用2個(gè)1 920 B的RAM循環(huán)交替存儲(chǔ)8行,分別用2個(gè)FIFO緩存從這2個(gè)RAM中讀出的行內(nèi)數(shù)據(jù),并且讀出行數(shù)據(jù)時(shí)經(jīng)過(guò)插值模塊算出新生成的一行數(shù)據(jù),這個(gè)插值模塊的系數(shù)也是固定的,最后再循環(huán)交替讀出15行數(shù)據(jù)。這中間需要讀寫2個(gè)控制模塊,根據(jù)行計(jì)數(shù)和每行有效數(shù)據(jù)的標(biāo)志位進(jìn)行合理的讀寫控制,保證不重復(fù)寫入行數(shù)據(jù)和不丟失讀出行數(shù)據(jù)。寫時(shí)鐘和讀時(shí)鐘是2個(gè)不同的時(shí)鐘域,通過(guò)PLL產(chǎn)生模塊生成讀時(shí)鐘。行間插值電路如電路圖4所示。
高清視頻的標(biāo)志位數(shù)據(jù)與標(biāo)清視頻的標(biāo)志位數(shù)據(jù)除了消隱區(qū)數(shù)據(jù)個(gè)數(shù)不同外,還添加了行號(hào)LN和CRC校驗(yàn)碼4個(gè)字[6]。行號(hào)是指當(dāng)前行計(jì)數(shù)器得到的行數(shù),包含了2個(gè)字;CRC校驗(yàn)碼是根據(jù)多項(xiàng)式CRC(x)=x18+x5+x4+1算出的,包含了2個(gè)字,用于檢測(cè)有效數(shù)據(jù)行中EAV后有效視頻數(shù)據(jù)。
本系統(tǒng)采用VHDL語(yǔ)言編寫,通過(guò)基于Altera Cy-CloneⅢ系列FPGA芯片EP3C25Q240實(shí)驗(yàn)平臺(tái)的驗(yàn)證。普通標(biāo)清SDTV的PAL制模擬視頻信號(hào)通過(guò)ADC解碼芯片,以 ITU_RT656標(biāo)準(zhǔn)的 4:2:2的數(shù)字視頻格式輸出。FPGA接收到視頻信號(hào)后開始同步數(shù)據(jù),并將同步后的有效視頻數(shù)據(jù)送入圖像縮放模塊進(jìn)行視頻處理,輸出為符合HDTV-1920的數(shù)字視頻格式標(biāo)準(zhǔn)數(shù)據(jù),再由DAC編碼芯片轉(zhuǎn)換成高清模擬視頻分量信號(hào)輸出給顯示設(shè)備。通過(guò)外部模擬源給ADC提供視頻輸入,對(duì)比原始圖像和縮放處理后圖像的結(jié)果,驗(yàn)證是否達(dá)到預(yù)期效果。整個(gè)實(shí)驗(yàn)驗(yàn)證平臺(tái)結(jié)構(gòu)如圖5所示。
用VHDL編寫的FPGA模塊設(shè)計(jì)文件,經(jīng)EDA工具QUARTUS II全編譯后直接下載到FPGA芯片中。使用QUARTUS II提供的嵌入式邏輯分析儀觀察最后生成高清數(shù)據(jù)的格式。結(jié)果證明,設(shè)計(jì)完全滿足要求,嵌入式邏輯分析儀上觀察到的數(shù)據(jù)也符合要求,如圖6所示。亮度信號(hào)和色度信號(hào)分離的2個(gè)通道,消隱區(qū)的數(shù)據(jù)都一樣,有效視頻數(shù)據(jù)有區(qū)別。 其中3FF h、000 h、000 h、274 h為一行視頻數(shù)據(jù)EAV同步字,后面跟的254 h和200 h是由行號(hào)21行十六進(jìn)制015 h構(gòu)成的2個(gè)字,12E h和182 h是一行有效視頻數(shù)據(jù)通過(guò)CRC校驗(yàn)碼多項(xiàng)式算出的CRC循環(huán)冗余校驗(yàn)碼的2個(gè)字,這4個(gè)字是根據(jù)高清視頻SMPTE 292M標(biāo)準(zhǔn)規(guī)定組合而成的,200 h和040 h為視頻行消隱區(qū)里的數(shù)據(jù),這個(gè)包頭符合高清視頻格式。
廣泛應(yīng)用于數(shù)字化電視處理領(lǐng)域的“去隔行”技術(shù)都會(huì)用到幀存儲(chǔ)器。本文結(jié)合實(shí)際工作,采用場(chǎng)內(nèi)/行間插值方法處理實(shí)時(shí)圖像。利用交替寫RAM和讀RAM以及FIFO緩存的方法實(shí)現(xiàn)掃描行數(shù)的提升,重點(diǎn)探討了在FPGA芯片上實(shí)現(xiàn)視頻圖像縮放算法,將標(biāo)準(zhǔn)清晰度的電視視頻轉(zhuǎn)換成高清晰度的電視視頻。這種方法簡(jiǎn)潔且節(jié)省資源,調(diào)試結(jié)果表明該系統(tǒng)設(shè)計(jì)方案可行,配合外圍其他專用芯片的調(diào)試還可提高系統(tǒng)功能的擴(kuò)展及靈活性。在數(shù)字電視的播控前端,可以利用該模塊將現(xiàn)有的標(biāo)清視頻源轉(zhuǎn)換成HDTV格式進(jìn)行傳送。隨著數(shù)字電視機(jī)的快速普及,數(shù)字電視市場(chǎng)產(chǎn)品的不斷細(xì)化,該方案今后也可應(yīng)用于數(shù)字電視機(jī),以滿足不同消費(fèi)人群的需求。
[1]LEE H Y,PARK J W.Adaptive scan rate up-conversion system based on human visualcharacteristics.IEEE Transactions on consumer electronics,2000,46(4):999-1006.
[2]POYNTON C.Digital video and HDTV algorithms and interfaces.Morgan Kaufmann Publishers,2003.111-116.
[3]王棟.視頻格式轉(zhuǎn)換算法及ASIC實(shí)現(xiàn)的研究[D].上海:上海交通大學(xué),2002.
[4]易湖,趙照,于軍,等.基于 FPGA的數(shù)字視頻圖像縮放模塊設(shè)計(jì)[J].有線電視技術(shù),2006,5(197):41-43.
[5]ITU_R BT656.國(guó)際電信聯(lián)盟無(wú)線電部門656號(hào)建議.
[6]SMPTE 292M.美國(guó)電影電視工程協(xié)會(huì)SMPTE標(biāo)準(zhǔn).