依靠視頻預/后處理實現(xiàn)更出眾的高清多媒體設計
視頻產(chǎn)品的差異化
高清數(shù)字視頻編解碼算法的標準化確保了不同產(chǎn)品之間的協(xié)同工作能力,標準編碼器的輸出必須能夠被所有標準解碼器解碼。因此在編解碼算法上沒有太多的差異化空間。這對于終端產(chǎn)品設計者來說有好處,因為它利于芯片設計人員針對算法作出非常高效的設計;而對于那些希望自己的產(chǎn)品與眾不同的設計者來說,則是個缺點。好在用于提高圖像質(zhì)量和色彩還原能力的視頻預處理和后處理模塊提供了產(chǎn)品差異化的機會,同時也對產(chǎn)品的可編程性提出了要求。
視頻預處理算法
毫無疑問的,視頻流不會以來自傳感器的初始狀態(tài)傳輸,在進行編碼之前,會對原始碼流進行一系列的變換處理。主要的預處理操作包括:
* 像素掃描/數(shù)據(jù)傳輸–這一步操作只是簡單的從傳感器得到圖像。
* 拜爾格式解交織–現(xiàn)代視頻圖像技術用三色RGB拜爾濾波器替代了單色的圖像傳感器,因此來自傳感器的數(shù)據(jù)流包括了紅、綠、藍的顏色信息。這些信息被分離后,變換為YCbCr的亮度與色度信息來表示圖像。
* 噪聲濾波–電子世界中總是會有噪聲存在,而降低或消除噪聲的最佳階段是在進行編碼之前。
* 抖動檢測與補償–抖動檢測與補償可以減小因相機抖動造成的圖像質(zhì)量下降。
* 局部動態(tài)范圍補償–在特定的模式下,圖像的動態(tài)范圍可能會超出傳感器的極限。而照相機或攝像機應該具備智能調(diào)整曝光量從而擴展傳感器基本動態(tài)范圍的功能。
* 對焦調(diào)整(銳化)–圖像傳感器無法捕獲連續(xù)的圖像信息。它們將圖像分解為一個個像素,然后根據(jù)不同的分辨率在像素間進行插值并重新組合成新的圖像。這種操作會導致圖像銳度的下降,但通過適當?shù)念A處理算法是可以糾正的。除此之外,銳化算法還可以使由于鏡頭原因輕微跑焦的圖像看起來更銳利。
* 顏色校正–不同色溫下的白光是有所不同的,這會影響到最終獲取的圖像。除此之外,不同的顯示設備處理顏色的方法也不一樣。視頻系統(tǒng)中的顏色校正補償功能可以糾正顏色偏移,特別是皮膚色調(diào)的偏移
* 人臉識別–在人物眾多的圖像中,拍攝者通常希望圖像聚焦在人物的面部。照相機和攝像機的一個重要功能就是能夠識別人臉并自動對焦。
* 立體圖像–根據(jù)平面圖像的密度信息來構建立體圖像,這種預處理常用在融合了虛擬和真實圖像的混合現(xiàn)實系統(tǒng)中。
圖1是四種預處理算法的示例圖像:噪聲濾波、抖動檢測與補償、動態(tài)范圍補償和顏色校正。
圖1: 四種預處理算法示例:噪聲濾波、抖動檢測與補償、動態(tài)范圍補償和顏色校正。
[!--empirenews.page--]視頻后處理算法
從標準視頻解碼器得到的圖像并非完美無缺,視頻后處理算法可以大大提高圖像的質(zhì)量,提高最終產(chǎn)品的附加值。視頻后處理算法包括:
* 解塊/解環(huán)路濾波器–在視頻壓縮和解壓縮過程中會把圖像分成小塊,分別進行編碼,解碼時再把這些塊組合成完整的圖像。這種操作是有損的,而解塊/去振鈴濾波器可以降低其對圖像造成的影響。
* 邊界檢測–邊界檢測算法用于縮放,解交織以及其他一些視頻處理操作。除此之外,在安保,視頻監(jiān)視,交通管理和醫(yī)學圖像處理領域也起著重要作用。
* 圖像縮放–從掛在墻上的平板電視到拿在手中的移動電話,視頻設備的屏幕大小千差萬別,這使得編碼后的視頻流尺寸和播放設備的屏幕尺寸多有不同。圖像縮放算法可以調(diào)整視頻流的尺寸以適應播放設備的屏幕。
* 解交織–視頻交織是為了在電視屏幕上顯示設計的,每一幅交織視頻圖像顯示為兩個連續(xù)的畫面,每個畫面包括了奇數(shù)或偶數(shù)條狀視頻線,這樣交替的每個畫面包含了對應圖像的一半視頻線。但是在電腦屏幕或液晶電視上顯示時,每個畫面都需要顯示對應圖像的所有視頻線,這時交織視頻在顯示前就必須進行解交織處理。
* 幀率轉(zhuǎn)換–在解碼后的各幀圖像間插值以提高視頻幀率的方法可以增強運動圖像的平滑度。這種能力對于高端的120fps視頻和24fps電影視頻的轉(zhuǎn)換都非常重要。
* 噪聲濾波–噪聲會使視頻圖像的質(zhì)量下降。而各種噪聲濾波算法可以改善圖像質(zhì)量。
* 視頻覆蓋/透明效果–許多視頻系統(tǒng)都會在播放視頻的同時覆蓋顯示用戶界面。
* 色彩空間轉(zhuǎn)換/亮度/對比度/伽馬校正–不同的顯示設備有不同的動態(tài)范圍,對顏色的處理也不相同(不同的顏色傳輸函數(shù))。如果知道相應的參數(shù),就可以選擇適當?shù)囊曨l后處理算法。對于液晶顯示來說伽馬校正非常重要因為每個液晶面板都有獨特的傳輸函數(shù)。
圖2是四種后處理算法的示例圖像:解塊和去振鈴、邊界檢測、圖像縮放和解交織。
圖2: 四種后處理算法示例:解塊和去振鈴、邊界檢測、圖像縮放和解交織。
[!--empirenews.page--]視頻預處理和后處理算法的實現(xiàn)
與視頻編解碼算法不同,預處理和后處理算法并沒有統(tǒng)一的標準,各個產(chǎn)品采用的算法是不同的。此外,原有算法會不斷升級,新的算法也會不斷涌現(xiàn),這些都要求預/后處理算法的硬件具有更高的可編程能力,因此專門針對這些算法優(yōu)化過的可配置處理器是一個不錯的解決方案。
你可能并不熟悉可配置處理器的概念,但你一定對固定指令集架構處理器有所了解,自片上系統(tǒng)誕生之日起就在使用它們。固定指令集架構處理器延續(xù)了自1971年Intel發(fā)明業(yè)界第一顆商用單片處理器4004以來一直使用標準處理器架構的傳統(tǒng)。SOC的出現(xiàn)(其實就是內(nèi)置處理器的ASIC)在90年代中期改變了微處理器的傳統(tǒng)架構。既然用戶可以根據(jù)特定應用定制硅片,那么同樣也可以定制片上的處理器。但是過去由于缺乏專門的處理器設計人員和開發(fā)維護軟件工具鏈的昂貴費用,定制處理器一直未能實現(xiàn)。
如今,自動化工具已經(jīng)可以幫助邏輯設計和軟件開發(fā)人員針對特定的任務來定制處理器,而不需要專門的處理器設計者參與了。由于增加了新的指令和寄存器以及將多條指令合并成單條指令,優(yōu)化后的定制處理器實現(xiàn)目標算法的性能比通用處理器和DSP要高得多。因此,開發(fā)一個視頻專用處理器來加速各種視頻預/后處理算法就順理成章了。有很多方法來實現(xiàn)視頻算法,這里提到的辦法很簡單:用C語言來描述算法,在處理器上編譯運行并進行性能分析,接下來就可以看到在不同處理器架構上的性能差異了。
表1列出了采用上述方法針對5種不同的視頻算法分別在RISC處理器、DSP處理器、針對算法用自動化工具定制的處理器和設計人員手工定制的處理器上運行的結果。這里的RISC處理器是一款基于Tensilica Xtensa架構的RISC核,DSP處理器同樣基于Tensilica Xtensa架構,但是增加了包括4路SIMD MAC和DSP專用ALU等一系列DSP擴展指令,能夠執(zhí)行4路或8路SIMD向量操作,該處理器還支持超長指令字功能,每個時鐘周期能夠發(fā)射3條獨立的指令,這套擴展指令集被稱作Vectra LX指令集。
表1中所列視頻處理算法包括:
* 5x5像素2D濾波器:2維濾波器可用于包括圖像銳化,模糊化和增加抖動等操作中。
* 5x5像素門限濾波器:門限濾波用黑白二值來表示圖像像素,從而使每個像素只占用1bit。濾波結果中不包括灰度信息,用于噪聲檢測等算法中
* 中值濾波:中值濾波經(jīng)常用于減小椒鹽噪聲和高斯噪聲的影響。
* 幀采樣:簡單的圖像縮小功能
* 幀求和:該算法用于衡量視頻圖像不同部位的光強,在降噪、曝光補償中都有應用,也用于輔助視頻壓縮。
經(jīng)過了SIMD/DSP擴展的Xtensa處理器比未擴展版本快很多,大多數(shù)視頻處理算法的性能都得到了巨大提升,但增加的面積相對來說很小(在TSMC 65LP制程下大約0.4mm2)。
表1中“XPRES”列所示為采用Tensilica自動化工具XPRES定制的處理器執(zhí)行5種算法的性能。
XPRES對C源代碼進行性能分析并自動生成針對相應代碼進行優(yōu)化的處理器擴展指令。自動生成的處理器比擴展了Vectra LX指令集的處理器面積稍小,但在大多數(shù)算法的性能上卻可以略勝一籌。
表1最后一列所示為手工定制擴展指令和IO接口來加速特定算法的處理器性能。我們可以看到5x5 2D濾波算法的性能比未定制處理器提高了170倍;5x5門限濾波算法的性能提高了225倍;幀求和算法的性能提高了44倍。
表1:視頻算法性能結果:RISC處理器、DSP處理器和Tensilica自動化工具XPRES定制的處理器之間的性能比較。