解析H.264視頻編解碼DSP實現與優化

引言

  基于互聯網的數字視頻產業前景看好,而3G的規模部署,也會推動移動視頻通信成為現實。但數字化后的視頻圖像具有數據海量性,給圖像的存儲和傳輸造成較大的困難。數字視頻產業,是指數字內容中以數字視頻形態為主的文化創意和傳播產業,及其必需依賴的多學科高科技技術支撐和保障服務產業。為此,該專家組基于幀內圖像相鄰像素間及相鄰行間的空間相關性和相鄰幀間運動圖像的時間相關性,采用壓縮編碼技術,將那些對人眼視覺圖像和人耳聽覺聲音不太重要的東西及冗余成分拋棄,從而縮減了存儲、傳輸和處理的數據量,提高了頻譜資源利用率,使數字化正在變為現實。數字視頻壓縮編碼技術是解決這一問題的關鍵技術。H.264以其良好的網絡適應性和高編碼壓縮效率,靈活的語法配置,在視頻處理領域比以往的視頻編碼標準更加適合視頻處理的發展方向,更加適合不同應用環境的對象。進一步提高了編碼算法的壓縮效率和圖像回放質量。在肉眼主觀感受相同的情況下,H.264較之H.263的編碼效率提高了50%左右。

  利用高性能數字信號處理器(DSP)來實現H.264實時編碼器是一種快速有效的方法,有助于H.264視頻標準的迅速推廣和應用,也指明了視頻圖像壓縮領域最新的研究方向。數字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學科而又廣泛應用于許多領域的新興學科。20世紀60年代以來,隨著計算機和信息技術的飛速發展,數字信號處理技術應運而生并得到迅速的發展。數字信號處理是一種通過使用數學技巧執行轉換或提取信息,來處理現實信號的方法,這些信號由數字序列表示。在過去的二十多年時間里,數字信號處理已經在通信等領域得到極為廣泛的應用。DSP(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數字信號。再對數字信號進行修改、刪除、強化,并在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。

  1 H.264編碼的關鍵技術

  1.1 基于靈活分割宏塊(MB)的運動矢量估計和補償以及增加變換的壓縮效果

  H.264根據宏塊的編碼特性采用亮度塊直流變換,色度塊直流變換與普通差值變換相結合的方法。在運動估計時,H.264信源編碼采用基于4×4塊的整數變換,可以靈活地選擇塊的大小。而其他標準處理的像素塊大小均為16×16或者8x8.H.264以可變大小的塊來適應不同應用環境和要求,采用16×16,16×8,8×16,8×8四種模式;當劃分為8×8模式時,又可進一步采用8×4,4×8,4×4三種子宏塊劃分模式進一步劃分,如圖1所示。根據需要由不同尺寸的宏塊來執行,采用整數變換既可以使運動物體的劃分更加精確,不可以減小運動物體邊緣的銜接誤差,處理好需要更多運動細節的場合,即以引入更小運動補償塊可以提高一般和特殊情況下的預測質量,它可以提高主觀視覺效果,同時又減小了變換過程中的計算量。實驗表明,應用7種不同大小和形狀的塊可以比單一利用16×16塊進行的編碼提高15%以上的壓縮率。

?

?

  1.2 支持l/4像素或l/8像素精度的運動估值

  運動估計與補償算法是目前視頻壓縮技術中最為關鍵的部分,影響著編碼的速度、質量和碼率,其編碼的復雜度也是整個編碼系統中最高的。

  在H.264中通過6階FIR濾波器的內插獲得1/2像素位置的預測值。FIR(Finite Impulse Response)濾波器:有限長單位沖激響應濾波器,是數字信號處理系統中最基本的元件,它可以在保證任意幅頻特性的同時具有嚴格的線性相頻特性,同時其單位抽樣響應是有限長的,因而濾波器是穩定的系統。因此,FIR濾波器在通信、圖像處理、模式識別等領域都有著廣泛的應用。當獲得1/2像素值后,通過取整數像素位置和1/2像素位置像素值均值的方式獲得l/4像素位置的值。在高碼率情況下,提供1/8像素精度的運動估計。采用高精度運動估計會進一步減小幀間預測誤差,減少經變換和量化后的非0比特數,提高了編碼效率。利用1/4像素空間精度可以比原有的一個像素精度(整數精度)預測提高20%的編碼效率。

  1.3 多參考幀預測

  參考幀是幀間預測編碼,也就是運動補償的基礎,根據它與待預測幀之間的位置關系,可分為前向參考幀和后向參考幀。

  以往的編解碼技術在對P幀圖像進行幀間預測時,只允許以參考前一幀圖像進行編碼,即以前一個I圖像或P圖像為參考幀,在對B圖像進行預測時,只允許參考前后幀圖像進行編碼,即以前后兩個I圖像或P圖像為參考圖像。H.264則打破了這些限制,允許在從當前幀的前幾幀中選擇一幀作為參考幀圖像,對宏塊進行運動預測,當選用多參考幀模式時。編碼器從幾個參考幀中選擇一個效果最好的參考幀,編碼器(encoder)是將信號(如比特流)或數據進行編制、轉換為可用以通訊、傳輸和存儲的信號形式的設備。 編碼器把角位移或直線位移轉換成電信號,前者成為碼盤,后者稱碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種。接觸式采用電刷輸出,一電刷接觸導電區或絕緣區來表示代碼的狀態是"1"還是"0";非接觸式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件時以透光區和不透光區來表示代碼的狀態是"1"還是"0",通過"1"和"0"的二進制編碼來將采集來的物理信號轉換為機器碼可讀取的電信號用以通訊、傳輸和儲存。達到最佳的預測效果,參考幀圖像甚至可以是采用雙向預測編碼方式的圖像,大幅度降低了預測誤差。另

  因此,多參考幀預測對周期性運動和背景切換能夠提供更好的預測效果。

  1.4 消除塊效厘適應性濾波器

  基于分塊處理的變換編碼算法,忽略了物體邊緣的連續性,在低碼率情況下,容易出現方塊效應。為消除在預測和變換過程中引入的塊效應,H.264對此采用了消除塊效應適應性濾波器,對宏塊邊緣進行平滑,有效改進圖像的主觀質量。但與以往標準不同的是,H.264的消除塊效應濾波器位于運動估計循環內部,可以利用消除塊效應以后的圖像去預測其他圖像的運動,即濾波后宏塊用于運動估計,以產生更小的幀差進行編碼,進一步提高預測精度。

  1.5 增強的熵編碼

  以往標準的熵編碼采用變長的哈夫曼編碼,碼表統一,不能適應變換多端的視頻內容,影響編碼效率。根據視頻內容的不同,H.264利用較短的碼字來代表出現,高頻率的符號,可進一步去除碼流中的冗余,提供兩種熵編碼,即上下文自適應二進制算術編碼(CABAC)和基于內容的自適應可變長編碼(CAVLC),CABAC的編碼效率更高,也更復雜,在相同圖像質量下,使用CABAC編碼電視信號可降低10%左右(10%~15%)的碼率,后者具有較強抗誤碼能力。

  2 H.264的視頻編解碼的DSP平臺實現

  在數字圖像處理中,要完成大量的數字信號處理工作,特別是對于H.264這樣的新一代視頻壓縮編碼標準。就其Baseline而言,其解碼復雜度是同等情況下H.263的2倍,而編碼復雜度更是H.263的3倍,解決這種高運算量問題,很大程度上依賴于高速DSP技術,而且采用半導體制造工藝生產的DSP處理器可以有更低的功耗。

  TI公司生產的DM64X系列芯片具有超高主頻、很強的并行處理能力和信號處理功能,是實現H.264編解碼的理想平臺。

  TI公司生產的642系列是一款專門面向多媒體應用的專用DSP,該DSP時鐘頻率高達600 MHz,8個并行運算單元,處理能力達4 800 MIPS.它是在C64X的基礎上,增加了很多外圍設備和接口。可見,DM642是一個強大的多媒體處理器,是構成多媒體通信系統的良好平臺。

  該系統主要是為了對模擬視頻圖像(PAL制式)進行采集,之后對其進行壓縮,然后把壓縮后的數據通過擴頻的方式發送到接收端,在接收端接收碼流后由DSP進行解壓縮,之后再由DSP負責圖像的顯示,存儲等。所以總體設計方案必須包括視頻的輸入/輸出、網絡等接口。設計圖如圖2所示。

?

?

  在發送端,視頻輸出由視頻A/D芯片先轉換為數字視頻信號,然后輸入到DM642的視頻端口2,由DM642進行圖像采集,并把圖像數據送入SDRAM中,同時DM642對視頻圖像進行實時壓縮,并把壓縮后的數據通過McBSP發送到信道編碼部分,完成發送端的工作。在接收端,接收由信道譯碼部分送來的壓縮圖像數據,然后由DM642完成圖像的實時解壓,并把解壓后的數據送到SDRAM中,然后把解壓后的圖像數據送人視頻端口0,再由視頻端口0把數據送入視頻D/A,完成視頻的實時顯示。圖2中音頻/視頻接口作為擴展,10/100Mb/s的以太網卡以及USB控制器外設主要是為了方便接收端直接把數字視頻信號傳送到計算機或者終端各處,供電及復位電路完成對電路板的供電及復位功能。

  3 H.264的視頻編解碼的DSP優化

  將H.264編碼器移植到DM642圖像處理平臺上,由于H.264的核心算法不僅在代碼結構上需要改進,而且在具體的核心算法上也需要做較大的改動,因此整個系統的編碼速度非常令人不滿意,達不到實時應用的要求,因此需要從各個方面對該系統進行優化,將編碼的時間減少下去。首先去除了編碼器中的冗余代碼,然后優化工作分三步:在PC機上實現H.264算法并進行優化;PC機H.264代碼的DSP化,可以在DSP上實現H.264的編解碼算法,但是,這樣實現的算法運行效率很低,因為所有的代碼都是由C語言編寫,并沒有完全利用DSP的各種性能,所以必須結合DSP本身的特點,對其進一步優化,才能實現H.264視頻解碼器算法對視頻圖像的實時處理,即要H.264的DSP算法優化。對于DSP代碼的優化共分為三個層次:項目級優化、C程序級優化、匯編程序級優化。

  4 結語

  在上述環境下,解碼器算法對QCIF測試序列已經能夠達到45~60 f/s的解碼速度,達到了實時性解碼的目的。測試結果表明,圖像主觀質量較好,無明顯方塊效應,碼率也比較低。另外,圖像編碼的實時性能與圖像的內容、運動的劇烈程度等都有一定的關系。在DM642板卡上實現的H.264視頻編解碼器具有功能強,使用靈活等特點,有廣泛的應用前景。RADVISION策略的關鍵是在SCOPIA架構中支持H.264-SVC技術,這樣RADVISION的支持SVC的SCOPIA桌面系統就可以與諸如H.263和H.264等其它標準視頻編解碼技術互通。可以向同一個會議室接入不同的設備,每臺設備根據其性能均可獲得最佳的視頻編解碼質量。不支持H.264-SVC的設備仍可通過H.263或H.264方式進行連接,相信在不久的將來,基于H.264算法和DSP處理器的可視電話、視頻會議、有線電視、無線流媒體通信等產品會逐漸地走進千家萬戶,視頻編解碼器在嵌入式處理終端上的應用會漸漸地成為應用的主流。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454435.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ap計算機科學a買什么書,準備AP*計算機科學A考試-第1部分

你將學到什么Identify the use and proper use of Variables, Conditionals, Objects and primitives, control structures, booleans, lists and arrays, and Exceptions.Implement problem descriptions in well designed code.Identify and begin to design algorithms to s…

python 打包exe_python如何封裝為exe

1、首先進入python安裝路徑D:\Python27\Scripts下,查看pip或easy_install是否安裝。2、確保安裝了pip或者easy_install,在cmd命令行下輸入“easy_install”,沒有提示“xxx不是內部或外部命令……”,就說明easy install工具安裝成功…

CentOS7安裝Hadoop2.7完整步驟

總體思路,準備主從服務器,配置主服務器可以無密碼SSH登錄從服務器,解壓安裝JDK,解壓安裝Hadoop,配置hdfs、mapreduce等主從關系。 1、環境,3臺CentOS7,64位,Hadoop2.7需要64位Linux&…

Django REST framework 解析器和渲染器

解析器的作用 解析器的作用就是服務端接收客戶端傳過來的數據,把數據解析成自己可以處理的數據。本質就是對請求體中的數據進行解析。 在了解解析器之前,我們要先知道Accept以及ContentType請求頭。 Accept是告訴對方我能解析什么樣的數據&#xff0c…

MyBatis的學習之路(二)

上篇文章介紹了MyBatis的配置文件,現在來介紹實體映射文件Mapper.xml。 說道實體映射文件,就不得不說一下實體與表之間的映射關系:單表映射和多表映射。 a. 單表映射 1 public class Admin{ 2 private String id; 3 private String n…

計算機一級實驗素材題目,計算機一級EXCEL操作題整理素材(12頁)-原創力文檔...

素材摘錄,文檔可編輯分享PAGE 頁碼頁碼/NUMPAGES 總頁數總頁數單元格合并首先選中你要合并的單元格,然后找到EXCEL上的開始分區里的這種圖標或者是含有“合并”兩字的位置如圖1-1,如果題目要求的是要你合并單元格并讓內容居中,你就…

python爬取toefl_spark學習進度6-Python爬取數據的四個簡單實例

今天本來想把昨天安裝的intellij配置好,但是一直顯示沒有網絡,網上查了相關資料也沒有查出來解決辦法。然后暫停了intellij的配置,開始做了幾個Python爬取簡單數據的實例,先做了幾個最簡單的,以后再加大難度&#xff0…

Django REST framework 版本

API 版本控制允許我們在不同的客戶端之間更改行為(同一個接口的不同版本會返回不同的數據)。 DRF提供了許多不同的版本控制方案。 可能會有一些客戶端因為某些原因不再維護了,但是我們后端的接口還要不斷的更新迭代,這個時候通過…

AngularJS中的過濾器(filter)

AngularJS中的過濾器是用于對數據的格式化,或者篩選的函數,可以直接通過以下語法使用: {{expression|filter}} {{expression|filter1|filter2}} {{expression|filter1:param1,param2,...|filter2} 過濾器的種類有number,currency&…

計算機考試上傳照片教程,電腦照片傳到iPhone手機的詳細步驟【圖文】

蘋果自帶的iOS系統是不可以隨便和電腦進行數據交換的,必須使用iTunes軟件。許多用戶為此問題困擾,我們有什么可以把電腦照片傳到iPhone手機?下面我們就一起來看看把電腦照片傳到iphone設備的詳細步驟。具體方法如下:1,…

javaweb 導出文件名亂碼的問題解決方案

fileName new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalFileName null; if(StringUtils.contains(userAgent, "MSIE")){//IE瀏覽器 finalFileName URLEncoder.encode(fileName,"UTF8"); }else if(Str…

AVS 分像素運動估計優化算法

—249—AVS 分像素運動估計優化算法楊涵悅 1,張兆楊1,滕國偉2(1. 上海大學通信學院,上海 200072;2. 上海廣電(集團)有限公司中央研究院,上海 200233)摘要:針對AVS 分像素運動估計的問題,提出一種…

計算機系統結構sw指令集,自考02325計算機系統結構復習資料六

自考生網為考生收集整理了“自考02325計算機系統結構復習資料六“以供考生們在考試前用復習資料鞏固所學到的知識,得到更好地復習效果。注:由于各省教材每年都有更新、變動,自考復習資料并不一定出于同一自考教材版本,但考生們仍可…

Django REST framework 源碼中提供的默認配置

DEFAULTS 是默認配置,IMPORT_STRINGS 是要相對應導入的類 鍵 大寫大寫大寫 ########################### settings.py ########################## DEFAULTS {# Base API policiesDEFAULT_RENDERER_CLASSES: (rest_framework.renderers.JSONRenderer,rest_framew…

python 去掉空格_如何從Python DataFrame中去除空格在這個例子中

使用applymap到數據幀,applymap施加一拉每個單元格上的mbda函數。在lambda函數中拆分字符串(白色空格在其中被忽略)然后加入它。如果有一個int,那么你可以在lambda函數中使用if else。 from pandas import Series, DataFrame impo…

Mware HA實戰攻略之五VMwareHA測試驗收

【IT168 專稿】在上一篇"VMware HA實戰攻略之四VMwareHA安裝及配置"中(點擊),講述了VMwareHA的概念及創建過程,還講述了創建過程中要注意的一些事項。在本篇中,將要講述如何在群集節點之一的ESX主機上安裝虛…

AVS解碼器在DSP平臺上的優化

AVS( Audio Video Coding STandard)是由我國數字 音視頻標準工作組制定的具有自主知識產權的第二代音視頻壓縮準。AVS實行1 元專利費用的原則,相比其它音視頻編解碼標準具有編碼效率高、專利費用低、授權模式簡單等優勢。AVS 解碼器的結構復雜、運算量較大&#xff…

如何重做計算機系統軟件,電腦卡如何一鍵重做Win7旗艦版

電腦卡如何一鍵重做Win7旗艦版?小伙伴們在使用電腦的過程中系統會越來越卡,對于新手小白來說怎么重裝系統是一個比較煩惱的問題,不知道如何下手,從哪里開始,那么接下來就以云騎士裝機大師為例給小伙伴們講解一下電腦卡…

Django Rest framework Request

[Django Rest framework文檔翻譯]-Request REST framework的Request類擴展自標準的HttpRequest,增加了REST framework靈活的請求解析和請求驗證支持。 請求解析 REST framework的Request對象提供了靈活的請求解析,讓你可以像一般處理普通form數據一樣…

python去停用詞用nltk_【NLTK】安裝和使用NLTK分詞和去停詞

黃聰:PythonNLTK自然語言處理學習(一):環境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安裝NLTK可能出現的問題: 1. pip install ntlk 2. 如果遇到缺少stopwords報錯如下:&am…