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