網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好
當前位置:酷知知識幫 > 遊戲數碼 > 電腦

GPU視頻處理詳析(去除馬賽克的技巧)

欄目: 電腦 / 發佈於: / 人氣:1.28W

操作方法

(01)隨着互聯網的發達,在線視頻VOD點播的普及,視頻回放能力越來越受重視,顯示芯片廠商對於視頻能力的宣傳也不遺餘力,但是彙總起來對比感覺非常混亂,名詞又特別多,比如Fullstream,PureVideo等,本文討論的就是視頻回放的一些原理和要點,希望能給用户一點幫助。對於視頻回放而言,硬件加速能力,插值補償能力,色彩還原和調節能力以及軟件支持都是決定因素。一.硬件加速 從NVIDIA 近來力推的PureVideo來説起吧,NVIDIA在視頻處理方面用上了兩千萬晶體管這個規模,正好一塊GeForce 2 MX400芯片的晶體管規模;在不算上這些晶體管總量已經破兩億規模的情況下和ATI 將來的同系列產品(對於6800而言就是X800系列)對抗成本會相當不利,尤其是雙方勢均力敵的時候,下面就來看看這兩千萬晶體管到底葫蘆裏賣的是什麼藥。上圖就是NV4X的視頻部分的概圖,在GPU中視頻處理單元被劃分為三個處理部分:視頻處理器(Video Processor),MPEG2解碼器(MPEG2 Decoder),運動估算器(Motion Estimator),三個部分連在一個仲裁器上(Arbiter)。 其中,MPEG2 解碼器的作用顧名思義,用來硬件解碼MPEG2視頻的,包括了DVD和MPEG2編碼的HDTV(720p/1080i/1080p)等視頻。 圖中示意的是MPEG2壓縮視頻處理流程,在NV4X GPU中綠色部分由GPU完成處理器中,其中 IDCT(Inverse Discrete Cosine Transformation反向離散餘弦變換)和Motion Compensation(運動補償,簡稱MC)。前者是DCT的逆運算,DCT的處理針對圖像數據在空間上的宂餘的,壓縮圖像的時候是逐8*8像素單元處理的,為的是把矩陣的能量集中到矩陣的左上角,便於壓縮(矩陣大部分是0),浮點運算量不小,其逆運算亦然;後者是針對視頻流的時間宂餘的,連續圖像中相同的部分就是宂餘,運動補償就像畫動畫的時候,經常使用的方法一樣:要畫主角説話,一般就是好幾張圖區別只有嘴型,於是除了嘴以外的部分可以“偷懶”不畫,直接“複製粘貼”,在這幾張圖中光畫不同的嘴即可,畫的時候省去的工作,在壓縮的時候也可以省去。運動補償要做的就是找出嘴各個部位在動的時候和前一張圖的同部分的相對位置(即運動向量),由於計算機識別圖像快匹配不像人眼觀察那樣,所以計算比較複雜,運算量也不小,在視頻回放的時候,根據壓縮的時候記錄下來的運動向量和不變的“背景圖”,“畫”出連續的視頻幀來。這兩個運算佔了解壓DVD的大部分工作,因為這兩個處理前的數據流都是比較簡單的矩陣,之前的行程編碼(RLE),反量化(量化是有損壓縮的關鍵,畫質損失主要在這裏)等處理輕鬆不少。 這兩部分運算交給GPU現在相當普遍了,當初最早在顯示適配器上集成硬件IDCT和硬件運動補償(MC)的就是著名的SIS 6326DVD(Dx版和Cx版,讓K6 233這樣的CPU也能看DVD),然後就是ATI Rage128,這兩款顯卡系列當初靠這個能力贏得了不少用户的親睞;INTEL的810和815板載顯卡都硬件支持了MC,NVIDIA在 GeForce 256後開始支持硬件MC,MX440後又加入了硬件IDCT,比起SIS和ATI,NVIDIA過去的視頻能力,的確很不怎麼樣。在NV4X的 PureVideo中,MPEG2 Decoder就是用來處理MPEG2視頻文件的IDCT和MC運算的。 其他部分主要還是改善視頻效果作用的,De-Interlacing最早Banshee就有了,消除隔行問題處理不好容易導致清晰度不行,一般有Bob和Weave兩種方式, ATI從Radeon DDR開始引入Adaptive Pre-Pixel De-Interlacing,即可適應逐像素除交錯,在NVIDIA的PureVideo中也有,像素着色器(Pixel Shader)對以前的除交錯方式進行修正(Radeon 中的確就有Pixel Shader,只是版本很老,在3D遊戲中不實用),PureVideo中引入的是Spatial-Temporal Adaptive Per Pixel De-Interlacing。去馬賽克和後處理和插值補償關係很大了,在後文中有詳細描述。 既然MPEG2 Decoder就能很好的回放MPEG2視頻,那另外兩個部件是幹什麼的呢? 答案來自其他視頻:WMV,MPEG4(AVI等)以及H.264。這些視頻解壓的時候也有大量IDCT運算和MC運算,這個時候Motion Estimator和Video Precessor就起到作用了。上圖就是MPEG4編碼的流程,比MPEG2多了預測部分和馬賽克處理部分,其餘的操作都比較類似,只不過IDCT和MC的時候算法或者參數不同,MPEG2 Decoder無法完成罷了。於是Motion Estamitor就擔負起MC相關的運算,Video Processor擔負起IDCT運算。上圖就是Video Processor的結構,比較複雜,視頻處理單元晶體管的很大部分被其佔據,主要分為地址單元,純量運算單元,向量運算單元和分支單元,另外還有8KB 的數據緩存和4KB的指令緩存。這個處理器支持動態分支預測,向量處理單元是16路的SIMD 向量單元,用於IDCT這類8*8矩陣運算很合適,運算能力強勁,同時也適合實現複雜的視頻編碼算法。 對於WMV9,主要的運算和MPEG4類型差不多,參數不同。 H.264 編碼效率比較高,相比H263+與MPEG-4標準在保證相同的圖象質量下,編碼後的碼率能減少50%;相比MPEG-2的複雜度,解碼器複雜度增加了3 倍,編碼器增加了4倍。Video Prosessor也被設計用來實現這樣的複雜解碼。同時H.264編碼的運動補償部分也比其他編碼複雜,運算量大了不少,對Motion Estimator也是個考驗。 二.插值補償以上視頻加速部分都是針對視頻解壓,出來的視頻是原始大小,比如DVD視頻就是720 X 480(NTSC),VCD視頻甚至只有352 X 288,只有720p的視頻和1080i,1080p的視頻一般不需要縮放,原始大小即可。所以一般PC上的視頻播放都是在1024 X 768或者1280 X 1024下全屏播放,這就涉及到視頻縮放了。 視頻縮放的時候最容易出現的就是馬賽克,最簡單的例子,打開張圖片,用ACDsee打開,放大了看,倍數越高,馬賽克越明顯。在視頻編碼裏的去馬賽克是針對編碼中的損失的修正,不是縮放的修正;在縮放的時候就得靠軟件或者硬件來對馬賽克進行插值補償了,方法有不少,一般是用類似模糊,柔化的方法。不同的顯示芯片,插值的方法和效果大相徑庭。 説到插值就得説説Overlay Mixer和Video Mixing Renderer (VMR)了。前者被稱為“視頻覆蓋”或者重疊,是通過相關硬件進行視頻縮放,色域轉換(RGB和YUV的互相轉換),亮度,Gamma,色彩飽和度的調節等等,老顯卡的視頻都是通過Overlay“顯示”出來的,Overlay的對於視頻放大所產生馬賽克通過過濾器進行插值補償,達到消除馬賽克的效果。過濾器通常有水平5級和垂直3級之類的規格,比較厲害的比如Voodoo Banshee/Voodoo3/4/5是10級過濾,在消除馬賽克的功夫上是老顯卡中的佼佼者。NVIDIA在吞併了3dfx後在GeForce FX顯卡中把3dfx的10級過濾學到手了,彌補了以前的不足,脱掉了“格子神化”的帽子。幻日的10級帶鋭化的過濾器是目前最強大的,V卡的過濾器經常被人描述成“太模糊,有朦朧感,有Photoshop中模糊用過分了的感覺”,幻日的過濾器很好的解決了這個問題。由於Overlay是硬件播放和縮放,對於配置比較低的機器而言,用Overlay Mixer是首選。 Vmr7(Video Mixing Renderer 7)是Windows XP中默認的播放選擇,直接支持了DXVA(DirectX Video Acceleration, DirectX視頻加速,包括了對硬件IDCT,MC的支持),兼容性比較好,對顯示芯片的特殊要求少,顯存有16M,支持16位及以上級別色彩回放即可,Overlay Mixer不同的顯示芯片支持的程度不同,比如TNT2就不支持硬件色彩飽和度調節,我用CANOPUS SPECTRA 5400的時候一動飽和度選項,放DIVX視頻就卡了,CPU是ATHLON 1.33G。VMR7還支持了多窗口播放,這個是Overlay Mixer的軟肋,硬件Overlay Mixer只支持單窗口播放,開第二個窗口播放就變成軟件Overlay Mixer播放了,CPU佔用率大大增加,VMR就沒這個問題,並且不會像軟件Overlay Mixer那樣狂佔CPU,雙頭顯示的時候相當實用。還有個好處就是支持了視頻截圖,Overlay Mixer在視頻截圖的時候常常採用的方法是開兩個視頻窗口,截軟件Overlay Mixer的圖,很麻煩。VMR可以加入各種效果,類似濾鏡,比如模糊,鋭化,甚至IDCT都能調節(針對軟件IDCT)。著名的ffdshow就是 VMR的好伴侶,不過ffdshow是軟件調節,對CPU要求不低。上圖就是ffdshow的去馬賽克選項,調整後可以達到比硬件插值補償更好的效果。另外Blur和Sharp也是比較受歡迎的選項。 VMR7的缺陷是CPU佔用率比硬件Overlay Mixer高,對於比較弱的CPU來説還是要求不低。 Vmr9是DirectX 9.0發佈後的產物,特點是支持了Pixel Shader(像素着色器)對視頻的修正。Pixel Shader可以對像素進行操作,以前的操作,包括去馬賽克等都是針對圖像快,不是針對單個像素而言的,因此VMR9有着更高的精度,在高分辨率的情況下效果更好。對於硬件支持Pixel Shader的顯卡(即完全硬件支持DirectX 8.0或者以上級別的顯卡)VMR9能獲得更好的視頻效果,並且,由於Pixel Shader是GPU操作(要選擇“紋理表面並以3D模式渲染”,CPU佔用率比VMR7低不少。對於VMR9,ATI的9X00及以上級別顯卡,NVIDIA的FX以及以上級別顯卡都支持相當不錯,一般回放視頻的時候,這類顯卡按照上圖的設置效果最好,CPU佔用也不高。ATI同時還推出了Video Shader來改善MPEG4播放的效果(主要還是用Pixel Shader來修正),宣傳為Fullstream,但是目前看來似乎也就DIVX有ATI優化,而且效果對比對手也顯示不了多少優勢,驅動中能提供的選項似乎只有一些不太實用的效果,比如浮雕等。VIA-S3推出的Deltachrome S8的Chromotion在這方面比ATI複雜不少,也是通過Pixel Shader來進行後處理的,驅動選項裏的柔化,鋭化,以及解塊滲透對於視頻播放質量的改善效果很明顯。NVIDIA的FX系列顯卡以及NV4X在 VMR9上都用了4 X 5的過濾來消除馬賽克,ATI,Matrox以及S3都是隻用了4 x 4的過濾,加之Pixel Shader的修正,NVIDIA在VMR9的情況下效果非常好。三.色彩 色彩是視頻回放好壞的又一個重點,NVIDIA以前有“黯淡神化”的説法,理由是NVIDIA以前的顯卡,諸如TNT2,GeForce 2,默認的Overlay Mixer的Gamma值太低,亮度也太低,導致暗部的層次不清楚,看片很不爽,TNT2甚至調節色彩飽和度對CPU要求還不小;同時期的ATI的默認 Gamma相當不錯,再加之Overlay Mixer和VMR的插值補償都很不錯,又支持硬件IDCT,硬件MC,CPU佔用率相當低,所以ATI當時的視頻相當受用户歡迎。NVIDIA為了解決 “黯淡”的問題,推出了DVC,即數字震動,調節後的確可以改善暗淡的問題,但是FX問世前的數字震動調節太不靈活,只有4級變化,感覺失真比較嚴重,DVC 2.0後的數字震動就能進行微調了,比默認稍稍左移就能達到很好的效果,並且可以隨時調節,不像ATI調節視頻覆蓋,必須回放的時候調節。 即便如此,ATI仍舊有優勢,因為大多數用户還是僅僅使用默認設置的。ATI默認設置的色彩取向偏紅,比較適合我們東方人的胃口,並非是真實的色彩才受歡迎的,就像沒有音染的音箱耳機不一定討人喜歡一樣,很多人就認為ATI視頻的色彩比能真實還原色彩的Matrox G400MAX顯卡色彩好;NVIDIA雖然也能調節到ATI相同的效果,甚至更好的效果,但是調節總是麻煩事,數字震動出現以前,玩家也可以通過調節 Overlay的Gamma和對比度,色調等達到DVC能調到的效果,這畢竟麻煩了很多,而且CPU佔用大大提高。所以現在的ATI雖然馬賽克修正和硬件視頻播放上有點吃虧,但是憑藉比較受歡迎的默認色彩取向,還是相當有競爭力的。 四.軟件支持 軟件支持也相當重要,當初SIS 6326DVD在任何播放器上都能硬件回放DVD視頻?NVIDIA的PureVideo更是發佈後好幾個月都沒有相應軟件支持,連DVD播放都只能軟件播放,對於NV4X而言,WMV,MPEG4硬件播放也需要驅動和播放器的支持,不然Video Processor不會代替CPU進行處理,還是在軟件播放。S3 Deltachrome也備受沒什麼軟件支持,打不開硬件加速之苦。現在NVIDIA的DVD Decoder準備收費,而且相應的播放器也沒有出來,第三方播放器對其的支持更是遙遙無期,這個是PureVideo目前最大的問題。在這方面ATI向來做得不錯,隨光盤附帶的播放器能夠對顯卡提供最好的支持,效果看得見摸得着,在第三方軟件上對ATI的支持也相當不錯。 以往赫赫有名的WinDVD,PowerDVD的硬件加速,色彩調節依舊不錯,MPC(Media Player Classic,國內有DIY版,暴風影音等版本)是一個很好的選擇,不僅僅在於這個播放器能加很多插件和解碼器,有“全能播放器”的味道,更在於其豐富的調節能力,調用FFDSHOW能達到硬件回放達不到的效果;Kmp Player能很方便的更換解碼器,Cineplayer則在MPEG2硬件加速支持方面功力深厚,網上流傳的“讓賽揚1.2G流暢HDTV”就是利用這個播放器的解碼器達到的(針對MPEG2編碼的HDTV)。五.其他 Matrox和VIA-S3在2D和視頻方面功力深厚,除了支持標準的DXVA以外,還有獨到的手段。前者的幻日,P750,P650芯片支持了億彩視頻,每個色彩通道10BIT色彩,也就是1024級色彩(2的10次方),RGB三個通道就是10億色;普通的顯卡只支持8BIT,也就是256級(2的8次方),RGB三個通道只有1677萬色(16m),能表現的色彩範圍差別太大。很多高檔的DVD播放機都是要支持超過16m(24位)色的,在PC上,幻日等P系列顯卡獨佔鰲頭了,其他顯示芯片雖然支持10bit輸出,但是沒有支持億彩視頻的。 後者的Deltachrome S8的Chromotion很有特色,驅動控制面板上直接帶有了deblocking,鋭化等選項,而且調節起來cpu佔用遠遠小於ffdshow的軟件調節,相當方便。上圖就是鋭化效果解塊滲透就是deblocking選項,用於去馬賽克,特別針對RMVB,WMV,RM文件,第一檔足以滿足要求,第二檔適合品質很差的rm文件,超過2不建議使用。尾聲 對於現在大多數顯卡而言,視頻回放很差的顯卡已經難找到了,但是,對於不同的要求要選擇稱心如意的還是得斟酌斟酌的,以下是筆者的推薦: 對於機器配置很低的用户,建議二手Voodoo3,Rage 128,Radeon LE,Overlay Mixer下視頻播放,Voodoo卡對於去馬賽克還是很有功底的,用來看RM,RMVB,WMV效果相當不錯。 對於普通用户,一般就上上網在線看看東方寬頻的電影,看看DVD視頻,看看RMVB格式的電影,推薦NVIDIA FX5200或者FX5700 LE,測試表明,FX系列的硬件加速能力比ATI的顯卡要強大,FX的插值補償能力是值得推薦的,NVIDIA現在的驅動能直接對VMR進行調節,色彩上DVC稍稍右移一點能達到更好的效果。對於什麼都不調節,又不喜歡NVIDIA默認的色彩,9550是個很不錯的選擇,如果配合ffdshow進行去馬賽克的調節(De-Blocking)效果也相當不錯。 對於PCIe顯卡的用户,6600系列目前是最適合作視頻顯卡的了,支持了很多的格式的硬件加速,畫面質量也相當不錯,不過還是要注意驅動和DVD Decoder的選擇。 對於高端視頻用户,在高檔顯示器(高檔大屏幕CRT,雙正投,等離子等)看看HDTV視頻,還是推薦幻日+軟件調節,憑藉幻日優異的色彩還原能力達到很好的效果;另外S3 Deltachrome S8也是一個很好的選擇,調節相當方便。解塊滲透就是deblocking選項,用於去馬賽克,特別針對RMVB,WMV,RM文件,第一檔足以滿足要求,第二檔適合品質很差的rm文件,超過2不建議使用。尾聲 對於現在大多數顯卡而言,視頻回放很差的顯卡已經難找到了,但是,對於不同的要求要選擇稱心如意的還是得斟酌斟酌的,以下是筆者的推薦: 對於機器配置很低的用户,建議二手Voodoo3,Rage 128,Radeon LE,Overlay Mixer下視頻播放,Voodoo卡對於去馬賽克還是很有功底的,用來看RM,RMVB,WMV效果相當不錯。 對於普通用户,一般就上上網在線看看東方寬頻的電影,看看DVD視頻,看看RMVB格式的電影,推薦NVIDIA FX5200或者FX5700 LE,測試表明,FX系列的硬件加速能力比ATI的顯卡要強大,FX的插值補償能力是值得推薦的,NVIDIA現在的驅動能直接對VMR進行調節,色彩上DVC稍稍右移一點能達到更好的效果。對於什麼都不調節,又不喜歡NVIDIA默認的色彩,9550是個很不錯的選擇,如果配合ffdshow進行去馬賽克的調節(De-Blocking)效果也相當不錯。 對於PCIe顯卡的用户,6600系列目前是最適合作視頻顯卡的了,支持了很多的格式的硬件加速,畫面質量也相當不錯,不過還是要注意驅動和DVD Decoder的選擇。 對於高端視頻用户,在高檔顯示器(高檔大屏幕CRT,雙正投,等離子等)看看HDTV視頻,還是推薦幻日+軟件調節,憑藉幻日優異的色彩還原能力達到很好的效果;另外S3 Deltachrome S8也是一個很好的選擇,調節相當方便。

GPU視頻處理詳析(去除馬賽克的技巧)
GPU視頻處理詳析(去除馬賽克的技巧) 第2張
GPU視頻處理詳析(去除馬賽克的技巧) 第3張
GPU視頻處理詳析(去除馬賽克的技巧) 第4張
GPU視頻處理詳析(去除馬賽克的技巧) 第5張
GPU視頻處理詳析(去除馬賽克的技巧) 第6張