大多數普通視訊信号在利用視訊壓縮編解碼器進行編碼之前都必須進行預處理,這要求資料采用420平面格式(planar format)以獲得更高的處理性能。例如,NTSC和PAL等廣播标準可能需要将隔行掃描(interlaced)格式轉換為逐行掃描(progressive),此外還常常需要對色度和亮度資訊進行格式重定。
特别的是,CCD相機的視訊是以4:2:2交錯式隔行掃描格式被捕獲的。但視訊壓縮标準的特定規格隻接受逐行掃描4:2:0格式的輸入。在這種情況下,必須去掉隔行掃描僞信号,因為對逐行掃描編碼器而言,處理隔行掃描視訊内容可能相當困難。
有大量複雜的去隔行(de-interlacing)算法可供工程師選擇,但并非所有應用都需要最進階别的視訊品質。此外,複雜的算法往往需要大量的計算,而開發人員總是受到數字信号處理器(DSP)的MIPS預算限制。
當應用不需要最進階别的視訊品質時,可在硬體中采用縮放算法來實作去隔行。這種技術可以将4:2:2到4:2:0格式的轉換工作和去隔行操作解除安裝給其它硬體,這對于節省珍貴的DSP MIPS資源特别有幫助。令人驚訝的是,當把視訊壓縮處理考慮進來之後,縮放硬體有時能獲得可與高複雜度去隔行算法相媲美的去隔行品質。
本文描述的簡單方法可用于視訊應用的去隔行處理。當視訊資料幀中存在大量動作時,這種技術最為有效,因為靜态圖像往往會更加突出缺陷。
亮度和色度編碼
NTSC将标準清晰度(NTSC SD)的分辨率定義為每行720像素,每列480像素,每秒30幀。每個像素的資訊包含三個分量:Y是亮度(luma)資訊,Cb(U)是藍色資訊,Cr(V)是紅色資訊。
過去采用NTSC标準時,工程師在視訊流編碼方面受到傳輸帶寬和計算能力的限制。由于人眼對于亮度資訊更為敏感,而NTSC标準隻要求色度資訊進行2:1的水準下采樣,進而減輕了這一負擔。
CCD相機捕獲到的每一幀都具有720×480的Y值、360×480的U值和360×480的V值。其中每一個值都是8位(1個位元組),範圍在[0,255],這樣,每一個NTSC SD幀就是(720+360+360)×480=691,200位元組。
被捕獲幀的Y/U/V分量一般進行隔行掃描,通常采用YUV 4:2:2的格式。有兩種方法構成這些資料,但為了簡單起見,假設資料是以UYVY 4:2:2隔行掃描格式構成的(圖1)。
如前所述,大多數編碼器都要求輸入視訊采用YUV 4:2:0格式。在4:2:2隔行掃描資料和4:2:0平面資料之間存在着兩大差異。
在4:2:0格式中,色度資訊還需進一步進行2:1的垂直下采樣。也就是說,對每一個NTSC SD幀,每個U或V分量都包含360×240位元組而不是360×480位元組。這樣,每個4:2:0格式的NTSC SD幀為518,400位元組[(720×480)+(360×240×2)]。為平衡實時性能和合格的圖像品質,需要額外的色度下采樣。
視訊壓縮标準的有效實作還常常需要将亮度和色度分量分别存儲,因為編碼算法可能采用不同的方法來處理它們。圖2所示為4:2:0平面格式的NTSC SD視訊幀。
隔行掃描僞像
隔行掃描包含對圖像的兩次掃描,一次掃描捕獲偶數行,另一次掃描捕獲奇數行。兩次捕獲以很小時差分隔開,然後再合在一起形成一個完整的幀。
在合并這兩部分時,可能會形成隔行掃描僞信号。例如,矩形框的垂直邊緣将導緻鋸齒效應(見圖3的最後一幀)。在不同時間捕獲一個運動視訊目标而産生的這種僞信号被稱為隔行僞像。
對于NTSC标準,若以30幀/秒的速度捕獲視訊幀,兩個連續鏡頭(即頂場及其互補的底場)之間的啟動時間是16.67ms。如果在這類幀中捕獲視訊場景中的快速運動行為,将會産生隔行掃描僞像。
由于這些僞信号被表示為高頻噪聲,它們有可能會導緻逐行視訊編碼器出現嚴重問題,其主要原因在于人眼的敏感度以及壓縮标準的工作方式。實際上所有的視訊壓縮标準都是基于兩個非常重要的假設:1. 人眼對低頻資訊更為敏感,這意味着即使去掉原始幀中的部分高頻資訊,仍然可以保持可接受的視覺品質。2. 編碼過程基于像素塊進行,這意味着對于視訊幀中的每個16×16或8×8的像素塊,在相鄰幀中都可能存在非常相似的子產品。是以,編碼的實作通常是在前面的編碼幀中尋找一個相似的像素塊,并僅對它們之間的delta進行編碼。這樣可以獲得很高的壓縮比,而在大多數壓縮标準中,運動評估(ME)子產品就是專為該目的而定義的。
遺憾的是,幾乎所有像素塊中都可能出現隔行掃描僞像,這使得ME子產品很難在前面的編碼幀中找到相似的像素塊。結果使得delta更大,并且ME需使用更多的比特來對其進行編碼。是以,最好的方法是在将被捕獲的幀饋入到逐行視訊編碼器之前,減少或去除其中的隔行掃描僞信号。
去隔行視訊處理
如前所述,可以通過采用大量計算的複雜算法來實作高品質的去隔行處理。此外,還有一種更直接簡單的方法,即采用縮放硬體,例如德州儀器的TMS320DM6446數字媒體處理器。采用縮放硬體可完全去除全部場力線,它利用剩餘場的資訊來産生丢失資料。
去除480i60(480像素、隔行掃描、60幀/秒)視訊的所有底場資料,将産生一個240p30(240像素、逐行掃描、30幀/秒)的視訊。該資料被垂直縮放,以産生一個480p30的去隔行結果。這種方法的優點是可以100%地消除所有隔行掃描僞信号,但垂直保真度會有明顯損失。
當用作逐行壓縮之前的預處理步驟時,這種方案能夠産生非常棒的效果。這是因為有損視訊壓縮算法通常都去掉了高頻信号(尤其是在低比特率下)。
是以,根據資料源内容的不同,在把壓縮處理考慮進來之後,該方案可以達到和複雜算法一樣的效果。例如,可以利用複雜度較低的去隔行器來把隔行掃描廣播資料轉換成低比特率資料以供逐行掃描手機屏顯示。
設計實作
TMS320DM6446處理器中的縮放器(resizer)執行和所有縮放器相同的常用功能,但有少許差别。需注意的兩個主要特性是,縮放器子產品在水準和垂直方向上都能支援1/4x到4x的縮放,且縮放因子與方向無關。
此外,所有濾波器系數都是可程式設計的。例如,如果使用4:2:2隔行掃描格式(由UYVY格式構成)的輸入幀(圖1),分辨率為每幀720×480像素(NTSC SD)。
在去隔行進行中,縮放器首先被告知輸入幀的寬度為724像素,而非實際的720像素。這是由于為準确實作1:1的縮放,DM6446處理器的水準輸入大小必須被調節為720+delta,delta由縮放器中的公式計算求得。
接着,縮放器獲知間距是實際間距的兩倍寬,這樣它就可以把第一組兩個水準掃描行當作一個來接收。這使得縮放器可以在偶數行上實作1:1的水準縮放(見圖4中的左上角),并将奇數行丢棄(右上角)。輸入和輸出在垂直方向上尺寸分别被設定為244和480,是以縮放器執行1:2的垂直放大以插入被丢棄的奇數行。
然後縮放器被告知輸出幀的寬度是720像素,輸出間距是1440[720+(360×2)]位元組,進而形成一個輸出幀(圖4)。
為實作從4:2:2到4:2:0的轉換,以便逐行編碼器能夠利用這些資料,對于每個4:2:2隔行掃描格式的輸入幀,縮放器都被調用三次以生成去隔行的4:2:0幀。必須保持三組配置參數分别作為U、Y和V值。是以,需調用縮放器三次。
起始點是采用UYVY 4:2:2格式的輸入幀(NTSC SD分辨率)。輸出幀被定義用4CIF分辨率(704×480)代替NTSC SD分辨率(720×480)。由于縮放器的32位元組輸出對齊限制,輸入幀的右邊16列必須被丢棄。一種替代方法可能是将右邊8列和左邊8列删減掉。
首次調用是提取輸入幀中的Y分量,然後對其進行去隔行處理。通過訓示縮放器将輸入幀當作一個4:2:0平面格式的圖像(圖5),去隔行操作應該僅應用于Y分量上。此外,縮放器還被訓示執行2:1的水準縮放,間隔提取輸入幀中的Y分量,并執行1:2的垂直縮放以在奇數行中插入被丢棄的Y分量。
對縮放器的第二次調用是修改U分量,這需要以2:1的比例進一步垂直下采樣。由于下采樣需丢棄所有的奇數行,這會自動生成逐行U緩沖器,是以不再需要進行去隔行操作。為實作垂直下調節(downscaling),垂直輸入大小被設為484,輸出大小被設為240。對V分量的操作類似于U分量。
對于在利用視訊壓縮編解碼器進行編碼之前需要去隔行和YUV格式轉換的視訊,可通過一個縮放引擎來對其進行預處理。由于某些因素(例如視訊編解碼器往往去除了高頻分量)的影響,需對壓縮後的視訊品質進行考慮。不過,這項技術并不适合于所有應用,而且必須小心確定輸出品質是應用可以接受的。
視訊格式之間的互相轉換
從20世紀初發明的黑白電視到50時年代出現的彩色電視,以及從模拟時代跨入到數字時代,從标清電視過渡到高清電視,伴随着資訊高速公路以及國際網際網路的飛速發展,廣播電視在不同時期不同領域出現了多種格式。這其中有早期彩色電視領域的PAL制,NTSC制,SCREAM制;近期數字電視領域内的DVB歐洲、ATSC美國、 日本的ISDB;以及根據數字電視圖像清晰度不同而出現的SDTV和HDTV,這些格式多樣化的存在為電視台的系統搭建提出了一個新課題,那就是如何結決電視信号格式間的轉換。
盡管電視信号有多種格式,各種格式有不盡相同,但歸結起來相異之處主要在這三個方面:隔行或逐行不同,幀頻或場頻不同,顯示寬高比不同。在數字化普及之前,這些不同制式與格式互相變換所涉及到的時域壓縮和擴張實作起來十分困難,但數字領域這些模拟領域棘手的問題已迎刃而解。是以對模拟電視信号進行格式轉換,若先進行數字化,在數字域進行将會友善很多。
一 信号的數字化
對于模拟分量電視信号,應按ITU-R BT.601 标準進行數字化,取樣結構為4:2:2,亮度信号Y抽樣頻率選為525/60和625/50三大制式行頻的公倍數2.25MHz的6倍即13.5MHz。接口标準為 SMPTE259M串行數字接口SDI格式(D1格式),輸出碼率為270MHz(4:3)或360MHz(16:9)。對于模拟複合電視信号,從抽樣所形成的樣點結構圖考慮,抽樣頻率取彩色副載波的4倍更為合适,量化後輸出碼率為142MHz(8BIT PAL制)和114MHz(8BIT NTSC制)。對于高清信号,數字化後變換成HDSDI信号,傳輸率為1.5GMHz(SMPTE292M)。
電視信号經過數字化,從時域的電視圖像變換成一個三維的時空取樣點結構。對于電視信号,無論是場頻的變換,行頻的變換,還是隔行掃描與逐行掃描的轉換,寬高比的轉換等,均可看成三維取樣結構的轉換。這些取樣結構的轉換主要借助于數字信号的内插來實作。下面先簡單介紹數字内插算法。
二 制式轉換的基本原理
在保持原視訊基帶信号頻譜時,為提高數字信号的取樣頻率,可對原數字信号進行内插。針對不同的目的,信号内插可分為行内插與場内插,行内插主要針對于不同行頻格式之間的變化,場内插主要針對于不同場頻格式之間變化。
1 行内插
所謂行内插是指在原數字取樣點之間插入新的取樣值,它可以是相鄰兩值的平均值,也可以是零值,也可以用多項式内插方法得到。由于内插必然會引起垂直分辨率的變化,不管是增加還是減少,本來連續的兩條掃描行之間多出一行或少掉一行,都會引起原圖像的不連續,出現鋸齒失真,如果采用非運動内插的簡單重複或簡單删減某些行資料的方法,這種資料将會很明顯。如下圖:
通常所說的行内插都是指運動行内插,即行内插的資料不是靠簡單重複某些
行内插可分為場内行内插和場間行内插。用同一場的相鄰行通過内插系數的運算得到内插行圖像資料的方法就是場内行内插。參與一次内插運算的相鄰行可以是2行、4行,隻要硬體運算量足夠大,相鄰行可以更多(這裡有個成本效益的關系)。場内行内插利用了同場相鄰行的相關性,對于運動圖像的内插效果要比靜止圖像的内插效果要好。
如果将前一場的圖像資料存儲起來,留待下一場作行内插時用場間相鄰兩行依據内插系數得到内插行的圖像資料,這就是場間行内插。它認為場間相鄰兩行資料的相關性大于同一場内相鄰兩行的相關性。這種行内插方式使得行内插資料在很大程度上由前一場對應行決定,是以對于靜止圖像的内插效果要比運動圖像的内插效果要好。
為了判别出何種情況用場内行内插或場間行内插,隻須對圖像進行運動檢測,根據待處理圖像的運動情況,即圖像幀差信号(如亮度Y信号幅值的差别)的大小選擇使用場内行内插或場間行内插,這就是自适應場内和場間的行内插方法。根據圖像運動檢測電路的判斷,待處理圖像相對于前一場而言是靜止圖像還是運動圖像,運動圖像采用帶數字濾波器的場内行内插,靜止圖像采用場間行内插。數字濾波器的作用在于濾除圖像的高頻成分,避免高頻分量在行内插後産生失真。這樣可以同時減少兩者做内插處理所帶來的清晰度劣化。
2 場内插
對于場頻的變換,例如從PAL到NTSC;不僅要實作525行到625行的變換,還要實作場頻從50Hz到60Hz的變換,如果簡單的采用每6場舍棄1場,針對靜止圖像還可以,但對于運動圖像,必然會造成圖像資訊的丢失,會出現運動圖像的不連續性和跳躍型。是以,如何通過采用各種不同的運動場内插方法,盡可能減少内插處理後對圖像連續性的影響,就成為一個相當重要的課題。
相鄰兩場參與内插運算的的場内插不僅不能完全消除運動圖像的不連續性,而且還會産生不連續動作的爬行現象,但這種不連續動作的幅度顯然比簡單重複某些場資料時的運動不連續性幅度要小。
為了進一步減小這種不連續性,可以采用運動估算和運動補償技術對場内插資料進行校正,運動估算通過檢測運動圖象在時域的變化幅度來計算圖像的運動,精确的算出圖像中運動單元的運動方向和速度,決定内插資料和運動補償時的時間─空間方向;在實際中,由于運動檢測得到的移動矢量值有時并不能真正反映相鄰兩場内圖像運動變化後的實際矢量資料,畢竟它隻是一個估值,為了減少這種由于估值所帶來的圖像内插失真,可采用運動補償技術在運動估算的基礎上進一步減少圖像失真。見圖:
兩種不同格式的電視信号互相轉換,首先要進行數字化,由于格式不同其數字化時的抽樣頻率也不盡相同,利用兩者抽樣頻率求出最小公倍頻率,作為内插的抽樣頻率,可以順利實作兩種不同格式之間的互相轉換。例如兩種不同格式的電視信号的抽樣率為:F1=3f? F2=4f, 最小公倍頻率為12f,先以3f抽樣率對F1進行抽樣,然或通過内插變換形成總數為12f的抽樣頻率,再進行3選1的抽選取樣,就可把 F1格式轉換為F2格式。這裡的抽選是指根據要求對取樣頻率進行N選一的選取,取樣頻率為f/N,f為最小公倍頻率。按奈奎斯特抽樣定律,為使抽選後的信号不産生混疊失真,必須在抽選之前經過一個數字濾波器,限制視訊信号的最高頻率。抽選與内插相結合可轉換不同格式。
三 下面讨論幾種具體的格式轉換。
1. 去隔行技術
去隔行技術實際上就是把隔行掃描轉換成逐行掃描,去隔行時可以先對隔行信号的每一場進行2倍的行内插,原奇數行内插偶數行,原偶數行内插奇數行。内插可采用行複制,行平均或非線性内插。簡單的行複制,就是将奇偶場合并實作,即該場需要内插行的地方由前一場相同位置的行信号複制而來,對于靜止圖像這種方法效果較好,但對于運動圖像會産生鋸齒邊緣失真。行平均算法,是指在該場需要内插行的地方由本場相鄰上下位置的行信号複制而來,運算限制在本場内,這種算法雖會減少簡單行複制所引起的鋸齒邊緣失真,卻要付出圖像細節模糊的代價,往往利用改進的自适應空間場間插入法,減少細節模糊。
為了使去隔行技術在靜止與運動圖像時都能達到較好的效果,可以采用場間自适應内插方法,在靜止圖像時采用場間複制,在運動圖像時采用場内複制,并用運動檢測函數來控制切換點,對于快速運動物體時,須采用運動估算與運動補償相結合的方法求出内插像素點的運動軌迹,運動軌迹的精度是決定内插效果的關鍵因素。
2. 變頻技術
在對電視信号的幀頻或場頻進行互相變換時,涉及到變頻技術。
我們以常見的50Hz場頻向60Hz場頻轉換為例,結合場内插技術簡單描述變換過程。見下圖
變換前的視訊信号,水準像素,垂直像素都沒有增加,也無法增加,有可能視訊信号帶寬有所增加倍,卻是由于存儲器高速讀出所至,對圖像清晰度不可能有根本改善。不能期望SDTV轉換到HDTV,對圖像品質有好的改變。
3. 不同行頻之間的轉換
把一種隔行掃描信号轉換成另一種行頻不同的隔行掃描信号時,一般先對隔行掃描信号作去隔行處理,将之轉換成相對應的逐行掃描信号,然後再運用内插技術完成逐行掃描至逐行掃描的變換, 最後進行隔行處理,變換成所需的隔行掃描格式。
四 具體的格式轉換
1 HDTV下行變換至SDTV
從HDTV轉換到SDTV時典型的下變換,下行變換使取樣頻率降低,為防止混疊失真,再轉換前必須進行反混疊濾波,但反混疊濾波會使原信号中的高頻分量永久丢失,這些高頻資訊在以後的轉換中不可能恢複。
2 SDTV上行變換至HDTV
以576i/50上變換至1080i/50為例。當輸入信号經過适當的降噪處理後,轉換的品質就取決于内插算法的品質和再取樣算法的品質。其第一步(也是最複雜的一步)就是将隔行掃描的畫面轉換成逐行掃描(576p/50)。然後,對每兩行進行N=14的内插,再進行8選1的抽樣,得到每場1080号的圖像,最後下變換隔行處理形成 1080i/50格式。
3 PAL與NTSC之間的轉換
4 24幀/秒電影格式與電視格式轉換
因為高清标準中有一款格式為1080p/24,它是專門為電影/高清互換而開發,由于采用了與電影掃描頻率24幀完全相同的掃描方式,互換後每幀電視畫面與電影的每一幅畫面完全相同,是以無論是從高清轉換到電影還是從電影轉換到高清,都不會産生由于轉換帶來的圖像品質損失。還可再通過下拉變換适用于1080i/50格式。
五 顯示畫面寬高比之間轉換
4:3信号在16:9螢幕上顯示,一般有三種方式:(1)垂直充滿,左右兩邊出現黑邊;(2)水準充滿,而垂直方向上圖像上下被裁減;(3)完全填充,在16:9的螢幕上完全看到4:3的圖像,水準方向被拉長。
16:9信号在4:3螢幕上顯示,有三種正常的下變換方式:切邊模式(垂直方向充滿,左右兩邊一部分資訊被去掉);信箱模式(水準方向充滿,上下部分會出現黑邊);壓縮模式(垂直方向充滿,水準方向壓縮後充滿,使物體變高)。