關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于ADSP-BF533處理器的去方塊濾波器的實現及優化

        基于ADSP-BF533處理器的去方塊濾波器的實現及優化

        作者: 時間:2008-03-20 來源:網絡 收藏

          引言

          在已有的基于塊的視頻編解碼系統中,當碼率較低時都存在方塊效應,新的視頻編碼標準H.264中亦是如此。產生這種方塊效應的主要原因有兩個:一是由于對變換后的殘差系數進行的基于塊的整數變換后,以大的量化步長對變換系數進行量化會使得解碼后的重建圖像的方塊邊緣出現不連續;二是在運動補償中插值運算引起的誤差使得編解碼器反變換后的重建圖像會出現方塊效應。如果不進行處理,方塊效應還會隨著重構幀積累下去,從而嚴重地影響圖像的質量和壓縮效率。為了解決這一問題,H.264中的去方塊濾波技術采用較為復雜的自適應來有效地去除這種方塊效應。因此,如何在實時視頻解碼中優化去方塊濾波算法,降低,提高重建圖像質量,就成了H.264解碼的一個關鍵問題。

          1 H.264的去方塊濾波

          1.1 濾波原理

          大的量化步長會造成相對較大的量化誤差,這就可能將原來相鄰塊“接壤”處像素間灰度的連續化變成了“臺階”變化,主觀上就有”偽邊緣”的方塊效應。去方塊效應的方法就是在保持圖像總能量不變的條件下,把這些臺階狀的階躍重新復原成臺階很小或者近似連續的,同時還必須盡量減少對真實圖像邊緣的損傷。

          1.2 自適應濾波過程

          在H.264中,去方塊是按照16×16像素的宏塊為單位順序進行的,在宏塊中按照每個4×4之間的邊緣以先垂直后水平的順序進行,從而對整個重建圖像中的所有邊緣(圖像邊緣除外)進行濾波。具體的邊緣示意圖如圖1所示。對于16×16像素的亮度宏塊,共有4條垂直邊緣,4條水平邊緣,每條邊緣又分為16條像素邊緣。而對應8×8像素的色度宏塊有垂直邊緣和水平邊緣各2條,每條邊緣分為8條像素邊緣。像素邊緣是進行濾波的基本單元。

          

          

          1.2.1 在兩個層次上的自適應性

          H.264中的去方塊濾波所以有較好的濾波效果,是由于它在以下兩個層次上的自適應性。

          1) 濾波器在4×4級別的自適應性

          濾波是基于各個中的像素邊緣進行的,通過對每一條像素邊緣定義一個參數BS()來自適應地調節濾波的強弱和涉及的像素點。色度塊的像素與相應的亮度像素相同。假設P和Q為兩個相鄰的4×4子塊,其中的像素邊緣強度通過圖2的步驟獲得。BS的值越大,則對相應的邊緣兩側進行的濾波越強,這是根據產生方塊效應的原因來設定的,如采用幀內預測模式的子塊的方塊現象較明顯,則對該子塊中的對應邊緣設定較大的像素邊緣強度值來進行強濾波。

          

          

          2) 濾波器在像素點級別上的白適應性

          正確區分由于量化誤差、運動補償產生的虛假邊緣和圖像中的真實邊界才能得到好的濾波效果。通常,真實邊界兩側的像素梯度差值要比虛假邊界兩側的像素梯度差值大,因此,濾波器通過對邊緣兩側像素點的灰度值的梯度差值設定門限α、對同一側的相鄰像素點的灰度值的梯度差值設定門限β來進行真偽邊界的判定。α和β的值主要與量化步長有關,當量化步長大時,量化誤差也大,方塊效應就明顯,易產生虛假邊界,因此門限值隨之變大,放寬濾波條件。反之,量化步長小時門限值也變小,體現了自適應性。采樣點的設置見圖3。若條件都滿足,則進開始濾波。

          

          

          除了這兩種自適應性,還可以通過設置位于片級的系數LoopFilterAlphaC0Offset、LoopFilterBetaOffset來調整濾波

          的強度。例如當傳輸碼率較低時,方塊效應較明顯,接收端想要主觀質量相對較好的圖像,則編碼端可通過設置位于片頭信息中的濾波偏移量LoopFil-terAlphaC0Offset,LoopFilterBetaOffset為正值,以此增大α和β來加強濾波,通過去除方塊效應來提高圖像主觀質量。或者對于高分辨率的圖像,可以通過傳送負值偏移來減弱濾波,盡量保持圖像的細節。

          1.2.2 依據各像素邊緣BS值對相鄰的像素濾波

          若當前像素邊緣符合濾波條件,則根據其相應的BS值選取對應的濾波器進行濾波并且進行適當的剪切操作,以防止圖像的模糊。

          當BS值是1,2,3時,采用一個4抽頭的線性濾波器,對輸入的P1、P0、Q0、Q1進行濾波調整得到新的Q0、P0,如果內部有虛假邊界,則進一步調整Q1、P1的值。

          當BS值是4時,則對應的是采用幀內編碼模式的宏塊邊緣,應采用較強的濾波以達到增強圖像質量的目的。對于亮度分量,若條件(| P0~Q0 | ((α》2)+2))abs(P2-P0)成立,則選擇5拙頭濾波器對P0、P2進行濾波,使用較強的4抽頭濾波器對P1進行濾波;若條件不成立,則只使用較弱的3抽頭濾波器對P0進行濾波,而P1、P2的值保持不變。對于色度分量,若上述條件滿足,則對P0進行3抽頭濾波,若條件不滿足,則所有的像素值都不修改。對Q0、Q1、Q2的濾波操作與P0、P1、P2的濾波操作相同。

          2 BF533的特點和結構

          我們的H.264去方塊濾波是在ADI公司的Blackfin ADSP-BF533處理器上實現的。Blackfin系列DSP主要具有以下特點:

          a) 高度并行的計算單元。Blackfin系列DSP體系架構的核心是DAU(數據算術單元),包括2個16位的MAC(乘法累加器)、2個40位的(算術邏輯單元),1個40位單桶形的移位器,4個8位視頻。每個MAC能在單一時鐘周期內對4個獨立的數據操作數執行16位乘16位的乘法運算。40位的可累加2個40位的數字或者4個16位的數字。這種體系架構可靈活地進行8值、16位、32位的數據運算。

          b) 動態電源管理。處理器可以通過改變電壓和工作頻率,消耗比其他DSP更少的功耗。Blackfin系列DSP體系架構的允許電壓和頻率獨立調整,使得每一項任務的消耗能量最小,在性能和功耗間有較好的平衡,適合實時視頻編/解碼器的開發,特別是對功耗有嚴格要求的實時運動視頻處理。

          c) 高性能的地址產生器。具有2個DAG(數據地址產生器

          ),用于產生支持高級DSP濾波運算的地址的復合裝入或存儲單元。支持位倒序尋址和循環緩沖以及其他多種尋址方式,提高了編程的靈活性。

          d) 分層結構的內存。分層結構的內存縮短了內核對內存的訪問時間,以獲得最大的數據吞吐量、較少的延遲和縮短的處理空載時間。

          e) 特有的視頻操作指令。提供適合DCT(離散余弦變換)、霍夫曼編碼等視頻壓縮標準中常用的操作指令,這些視頻指令還消除了主處理器與一個獨立的視頻編解碼器之間的復雜和易混和通信問題。這些特點有助于為終端應用縮短產品上市時間,同時降低了系統的總體成本。

          我們使用的ADSP-BF533可以實現600 MHz的持續工作,具有:4 GB的統一尋址空間;80 kB SRAM的L1指令指令存儲器,其中16 kB可配置成4路的聯合Cache;2個32 kB SRAM的L1數據存儲器,其中一半可配置為Cache;集成豐富的外圍設備和接口。

          3 基于BF533的H.264去方塊濾波優化實現

          去方塊濾波器在Blackfin BF533優化實現主要分為系統級別的優化、算法級別的優化、匯編級別的優化3個級別。

          3.1 系統級別的優化

          打開DSP平臺中編譯器的優化選項并將優化速度設置為最快,打開Automatic Inlining開關(自動內聯開關)以及Interprocedural optimization開關(優化過程開關),通過以上的一些設置充分發揮Blackfin BF533的硬件性能。

          3.2 算法級別的優化

          將JM8.6參考模型中的去方塊濾波部分進行適當的系統修改,移植到原有的基于Blackfin BF533的H.264基本擋次的解碼器中,并通過圖像序列對其進行耗時分析。選用碼率為400 kbit/s左右的Paris.cif、Mobile.cif、Foreman.cif、Claire.cif序列,去方塊濾波所耗費的時鐘周期約為1 600 MHz~1 800 MHz,即使在經過系統優化后,仍然相當大,效率很低,對于Blackfin BF533處理器600 MHz的持續工作頻率是相當大的負擔。

          通過分析JM8.6中去方塊濾波程序,其效率低下的主要原因是:


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 株洲市| 澄迈县| 延长县| 辽源市| 正定县| 当雄县| 滕州市| 自治县| 铜山县| 即墨市| 那坡县| 彰化县| 青田县| 蓬莱市| 昌邑市| 莱阳市| 郴州市| 卫辉市| 平顶山市| 郧西县| 临清市| 寻乌县| 建瓯市| 长子县| 色达县| 桦甸市| 大埔区| 大冶市| 河北区| 博爱县| 莎车县| 竹溪县| 广平县| 金阳县| 景宁| 沁水县| 东明县| 封开县| 丰顺县| 大邑县| 广元市|