大多數普通視頻信號在利用視頻壓縮編解碼器進行編碼之前都必須進行預處理,這要求數據采用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格式轉換的視頻,可通過一個縮放引擎來對其進行預處理。由于某些因素(例如視頻編解碼器往往去除了高頻分量)的影響,需對壓縮后的視頻質量進行考慮。不過,這項技術并不適合于所有應用,而且必須小心確保輸出質量是應用可以接受的。
-
解碼器
+關注
關注
9文章
1144瀏覽量
40860 -
噪聲
+關注
關注
13文章
1125瀏覽量
47485 -
視頻
+關注
關注
6文章
1956瀏覽量
73052
發布評論請先 登錄
相關推薦
評論