基于不對稱劃分模式的高效視頻編碼加法樹并行實現方法
【技術領域】
[0001] 本發明設及數字視頻編解碼技術領域,特別是高效視頻編碼化igh Efficiency Video Coding,簡稱肥VC)中的整像素運動估計方法。
【背景技術】
[0002] 運動估計是視頻編碼和視頻處理中廣泛使用的技術。運動估計的基本思想是由于 活動圖像鄰近帖中的景物存在一定的相關性,因此可W將圖形中的每一帖分成互不重疊的 塊,并且認為塊中所有像素的位移量都相同。然后設法捜出每一個塊在鄰近帖中的位置,并 且得出兩者在空間位置的相對偏移量,得到的相對偏移量就是通常所說的運動矢量,得到 運動矢量的過程就被稱為運動估計。
[0003] 隨著視頻質量不斷提高H. 264已經不能滿足壓縮要求,因此2013年1月26號皿VC正 式成為國際上最新的視頻壓縮標準。但是運動估計傳統的SAD運算體系結構通常會采用和 最大編碼塊像素相同的運算陣列來進行運算,例如針對H. 264的運動估計架構,宏塊大小為 16 X 16像素,因此進行運動估計的SAD運算單元陣列為256個運算單元。而對于肥VC而言,最 大編碼塊尺寸為64 X 64像素,如若采用相同或者類似的設計架構,則需要4096個運算單元, 僅在SAD運算運一部分,其面積是H.264的架構的16倍,從而硬件面積大大增加。
[0004] 因此研究并設計能夠支持皿VC視頻編碼標準的整數運動估計的SAD加法樹結構, 并不是套用原有的架構,而是要重新設計其架構。該架構可W滿足64X64塊的SAD計算,并 且沒有增加硬件面積。
【發明內容】
[0005] 本發明所要解決的技術問題是提供一種基于不對稱劃分模式的高效視頻編碼加 法樹并行實現方法,W提升SAD值的計算效率。
[0006] 為實現上述目的,本發明所采用的技術方法如下:
[0007] 基于不對稱劃分模式的高效視頻編碼加法樹并行實現方法,根據像素塊之間的數 據相關性,在鄰接互連的二維處理元陣列上,通過使用18*17個處理元完成64 X 64亮度塊S 十屯種分塊模式的SAD值計算的并行處理,其中處理元即PE包括:
[000引步驟1加法樹模塊(2)經由緩存區1 (2)和緩存區2 (2)從外存加載64 X 64亮度塊 (3),并且W4X4大小的像素塊按照(5)的存儲方式(自上到下、從左到右)存放到PE陣列中, 每個處理元即PE存放一個4 X 4大小的亮度塊,該方法具體包括:
[0009]首先將64X64的亮度塊,分成大小為32X64的兩部分(7),分別通過緩存區1和緩 存區巧日載到處理元陣列中。
[0010]步驟巧喊樹模塊經由緩存區1和緩存區2從夕陸中讀取64 X 64參考塊(4 ),并且W 4X4大小的像素塊按照(6)的存儲方式(自上到下、從左到右),存放到PE陣列中,每個處理 元(PE)存放一個4 X 4大小的參考塊,該方法具體包括:
[0011]首先將64X64的參考塊,分成大小為32X64的兩部分(7),分別通過緩存區1和緩 存區巧日載到處理元陣列中。
[0012]步驟3處理元陣列(2)中的各個PE,在獲取的亮度塊和參考塊的基礎上,根據公式 (1)同時計算4 X 4分塊模式SAD值(SAD4 X 4),計算完成后存放到亮度塊和參考塊對應的PE 中,一共256個SAD4 X 4值,該方法具體包括:
[0014]其中fk(m,n)為當前帖中當前塊的亮度值,fk-i(m+i,n+j)為參考帖中偏移位置為 Q,j)參考塊的亮度值。
[001引a大小為4 X 4的亮度塊和4 X 4的參考塊,按照(9)存儲到PE中,C0-C15表示亮度塊, d0-dl5表示參考塊。
[0016] b CO與do做差值并取絕對值、Cl與dl做差值并取絕對值,依次類推直到cl5與dl5 做差值并取絕對值。
[0017] C將步驟b得到的16個值求和,得到4 X 4分塊模式的SAD值SAD4 X 4。
[0018] d 256個處理元同時執行上述操作,得到256個SAD4X4的值,并且存儲到亮度塊和 參考塊對應的PE中。
[0019] 步驟4在步驟3計算得到的SAD4X4的基礎上進行剩下的S十六種分塊模式的SAD 值的計算,并且選擇存儲該SAD值PE的位置。根據該SAD值是否后續被使用采取如圖8所示的 方式選取存儲PE的位置,如果該SAD值后續被使用則優先選取PE陣列中右下方的PE來存儲 該值,反之則選取左上方的PE來存儲該值。具體執行原則如下:如圖10所示每一個字符對應 一個4 X 4塊的SAD值,故整體可W得到16 X 16塊的SAD值。首先求8 X 4塊的SAD值,即分塊模 式AB、CD、EF、GH、IJ、KL、MN、OP的SAD值,然后為它們分別選取存取位置,WAB、EF為例說明, 在求8 X 8分塊模式A肥F的SAD值時,我們需要使用AB和EF的SAD值SAD8 X 4,由此判定它們的 值在后續會被使用,故將它們分別存儲到右邊的處理元B和F中,當求分塊模式ABEF的SAD值 時,B中的SAD8 X 4傳遞到F中,F中的兩個SAD值求和得到8 X 8塊的SAD值,W此類推其他分塊 模式的SAD值采用上述方式選擇存儲位置,數值往一個方向集中,有利于數值的合并。
[0020] a( 10)中每個字符代表一個存儲SAD4 X 4值的處理元,4 X 4個處理元表示一個簇, 處理元陣列可W被劃分成16個簇(11),每個數字代表一個簇。
[0021 ] b每個簇計算得到十四種分塊模式的SAD值,它們分別是8 X4、4X8、8X8、16X8、8 X16、12X16L、4X16L、12X16R、4X16R、16X12U、16X4U、16X12D、16X4D、16X16,計算 完成后分別存儲到簇內的對應PE中,PE的選取規則如圖8所示,即根據后續是否被使用選取 SAD值的存儲位置,上述SAD值均通過4 X 4分塊模式的SAD值合并得到。
[0022] C 16個簇同時執行b操作;
[0023] 將16個簇al)W2X2大小,劃分成4個組,第一組(00、01、04、05),第二組(02、03、 06、07),第^組(08、09、12、13),第四組(10、11、14、15)。
[0024] 每個組可W計算得到U種分塊模式的SAD值,如圖12所示W第一組00、01、04、05為 例,通過數據交互,可W得到的SAD值分別是32 X16、16X32、24X3^、8X32L、24X32R、8X 32R、32X24U、32X8U、32X24D、32X8D、32X32,計算完成后分別存儲到組內對應的陽中, PE的選取規則如圖8所示,即根據后續是否被使用選取SAD值的存儲位置,上述SAD值均通過 4 X 4-16 X 16分塊模式的SAD值合并得到。
[0025] f四個組同時執行上述操作;
[00%] g將16個簇看做一個類(13)。
[0027] h該類可W計算得到11種SAD值,它們分別是64 X 32、32 X 64、48 X 6化、16 X 6化、48 X64R、16X64R、64X48U、64X16U、64X48D、64X16D、64X64,計算完成后分別存儲到類內 對應的PE中,陽的選取規則如圖8所示,即根據后續是否被使用選取SAD值的存儲位置,上述 SAD值均通過16 X 16-32 X 32分塊模式的SAD值合并得到。
[002引本發明的有益效果如下:
[0029] 采用二維處理元陣列結構,對亮度塊分割模式的SAD值計算并行處理,有效的提升 了運動估計運算效率。通過采用根據該SAD值后續是否被使用選取存儲該SAD值的處理元的 方法,加快加法樹的計算速度,提高計算效率。
[0030] 通過采用單PE存儲4X4像素塊的方式,相對于傳統的像素塊的存儲方式(單PE存 儲單像素),處理單元使用的數量縮減至原來的1/16。
[0031] 相對于加法樹串行結構的實現方法,該并行結構速度提高了近92倍。
[0032] 步驟4所述的=十六種分塊模式SAD值的計算均通過4 X 4分塊模式的SAD值合并得 到的,可W減少過多的計算過程,提高計算效率。
【附圖說明】
[0033] 附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,用來解釋本發 明,并不構成對本發明的限制。
[0034] 在附圖中:
[0035] 圖1為本發明提供的PE鄰接互連示意圖;
[0036] 圖2為本發明提供的加法樹陣列和緩存區分布示意圖;
[0037] 圖3為本發明提供的亮度塊像素分布圖;
[0038] 圖4為本發明提供的參考塊像素分布圖;
[0039] 圖5為本發明提供的亮度塊在PE陣列中的存儲分布圖;
[0040] 圖6為本發明提供的參考塊在PE陣列中的存儲分布圖;
[0041] 圖7為本發明提供的利用雙緩存區將圖像數據從外存讀入PE陣列的示意圖
[0042] 圖8為本發明提供的SAD值數據流向圖
[0043] 圖9為本發明提供的亮度塊和參考塊在單個PE中的存儲分布圖
[0044] 圖10為本發明提供的SAD4 X 4在單個簇中的存儲分布圖
[0045] 圖11為本發明提供的PE組在PE陣列中的分布圖;
[0046] 圖12為本發明提供的單個PE組在PE陣列具體分布圖;
[0047] 圖13為本發明提供的PE類在PE陣列中的分布圖;
【具體實施方式】
[0048] W下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并 非用于限定本發明的范圍。
[0049] W下實施例提供了一種基于二維陣列處理元的全新高效的包含非對稱分割模式 的加法樹實現方法,
[0050] 圖I是PE鄰接互連示意圖,加法樹是在該二維鄰接互連PE陣列上實現的;
[0051] 圖2是加法樹陣列和緩存區分布示意圖,灰色部分是緩存區模塊(最左邊一列是緩 存區1,最右邊一列是緩存區2,最下邊一行是緩存區3),中間16 X 16個PE是加法樹模塊,一 共采用了18X17個陽;
[0052] 步驟一將64X64亮度塊通過緩存區1和緩存區2讀入加法樹模塊,【具體實施方式】如 下:
[0053] 圖3是亮度塊像素分布圖,將亮度塊像素劃分成兩個32X64的像素塊,如圖7所示, 緩存區1根據地址讀取左側的像素塊,緩存區2根據地址讀取右側的像素塊,兩個緩存區并 行執行,從而提高了傳遞效率。
[0054] 通過緩存區傳遞數據,像素塊按照圖5所示的方式存儲到PE陣列,每個PE存儲4X4 大小的像素塊,按照從左到右、從上到下的順序依次存儲。
[0055] 步驟二將64 X 64參考塊通過緩存區1和緩存區2讀入加法樹模塊,【具體實施方式】如 下:
[0056] 圖4是參考塊像素分布圖,將參考塊數據劃分成兩個32X64的像素塊,如圖7所示, 緩存區1根據地址讀取左側的像素塊,緩存區2根據地址讀取右側的像素塊,兩個緩存區并 行執行,從而提高了傳遞效率。
[0057] 通過緩存區傳遞數據,像素塊按照圖6所示的方式存儲到PE陣列,每個PE存儲4X4 大小的像素塊,按照從左到右、從上到下的順序依次存儲。
[0058] 步驟S處理元陣列(2)中的各個PE,在獲取的亮度塊和參考塊的基礎上,根據公式 (1)