一種用于整數運動估計的參考塊像素更新并行實現方法
【專利摘要】一種用于整數運動估計的參考塊像素更新并行實現方法涉及數字視頻編解碼技術領域。本發明采用二維處理元陣列結構,對參考塊像素更新并行處理,有效的提升了運動估計運算效率。通過采用根據即將處理的參考塊和當前處理完成的參考塊的相對位置選取不同的緩存區更新數據的方法,加快了參考塊像素的更新速度,提高了像素更新的靈活性。通過采用單處理元存儲4×4像素塊的方式,相對于傳統的像素塊的存儲方式(單處理元存儲單像素),處理單元使用的數量縮減至原來的1/16。
【專利說明】
一種用于整數運動估計的參考塊像素更新并行實現方法
技術領域
[0001]本發明屬于數字視頻編解碼技術領域,涉及視頻壓縮的整像素運動估計方法。
【背景技術】
[0002]運動估計是視頻編碼和視頻處理中廣泛使用的技術。運動估計的基本思想是由于活動圖像鄰近幀中的景物存在一定的相關性,因此可以將圖形中的每一幀分成互不重疊的塊,并且認為塊中所有像素的位移量都相同。然后設法搜出每一個塊在鄰近幀中的位置,并且得出兩者在空間位置的相對偏移量,得到的相對偏移量就是通常所說的運動矢量,得到運動矢量的過程就被稱為運動估計。
[0003]隨著視頻質量不斷提高H.264已經不能滿足壓縮要求,因此2013年I月26號HEVC正式成為國際上最新的視頻壓縮標準。但是運動估計傳統的宏塊大小是16*16,所以更新參考塊的數據量相對較小;現在HEVC中LCU大小是64*64,更新參考塊的數據量變大,對帶寬提出更高的要求,舊的體系架構相對不太適合。
[0004]因此研究并設計能夠支持HEVC視頻編碼標準的整數運動估計的參考塊像素更新模塊體系結構,并不是套用原有的架構,而是要重新設計其架構。該架構可以滿足能夠滿足LCU參考塊更新要求,并且沒有增加帶寬。
【發明內容】
[0005]本發明實例提供一種使用306個PE(Processing Element,處理元)構成的整數運動估計中參考塊更新模塊并行架構;
為實現上述目的,本發明所采用的技術方法如下:
一種用于整數運動估計的參考塊像素更新并行實現方法,基于鄰接互連的二維處理元陣列結構,其特征在于,包括以下步驟:
步驟I加法樹模塊利用緩存區I和緩存區2從外存加載64*64大小的參考塊,該參考塊位于搜索窗的左上角,并且以4*4大小的像素塊按照自上到下、從左到右的存儲方式,存放到PE陣列中,每個處理元存放一個4*4大小的參考塊,加法樹模塊進行像素數據處理;
步驟二:加法樹模塊像素數據處理完成后,根據下一個將要處理的參考塊和當前處理完成的參考塊的數據相關性,選擇緩存區加載搜索窗中的像素數據;
步驟三:在步驟二得到的像素數據的基礎上,根據下一個將要處理的參考塊和當前處理完成的參考塊的數據相關性在加法樹模塊完成64*64大小的參考塊的數據更新;
步驟四:重復步驟二和步驟三,直到搜索窗加載完成;
如權利要求1所述的方法,其特征在于,步驟二中根據即將處理參考塊和當前處理完成的參考塊的相對位置選取不同的緩存區更新數據,具體的:如果即將處理的參考塊位于當前處理完成的參考塊的左側,則通過緩存區I從外存讀取和當前處理完成的參考塊相鄰的左側的一列像素數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;如果即將處理的參考塊位于當前處理完成的參考塊的右側,則通過緩存區2從外存讀取和當前處理完成的參考塊相鄰的右側的一列數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;如果即將處理的參考塊位于當前處理完成的參考塊的下方,則通過緩存區3從外存讀取和當前處理完成的參考塊相鄰的下方的一行數據,每個處理元存放4個像素,按照從左到右的順序,依次存儲;
步驟三的特征在于:加法樹模塊通過緩存區獲取即將處理的參考塊的像素數據,根據當前處理完成的參考塊和即將處理的參考塊的位置關系,重構參考塊數據,具體的:
a.如果即將處理的參考塊位于當前處理完成的參考塊的左側,即由緩存區I加載參考塊像素到加法樹模塊;
a 1.緩存區I中的各個處理元把內存中的4個像素即Xl、x2、x3、x4,依次發送給右側相鄰的處理元;
a2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最右側一列,S卩d4、d8、d12、dl6,依次發送給右側相鄰的處理元,并且同時接收左側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
a3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第3列像素,作為重構4*4參考塊的第4列像素,把當前4*4參考塊的第2列像素,作為重構4*4參考塊的第3列像素,把當前4*4參考塊的第I列像素,作為重構4*4參考塊的第2列像素,把步驟a2接收的4個像素值作為重構4*4參考塊的第I列的像素;a4.下一個參考塊的重構完成;
b.如果即將處理的參考塊位于當前處理完成的參考塊的右側,即由緩存區2加載參考塊像素到加法樹模塊;
b1.緩存區2中的各個處理元把內存中的4個像素即Xl、x2、x3、x4,依次發送給左側相鄰的處理元;
b2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最左側一列,SPdl、d5、d9、dl3,依次發送給左側相鄰的處理元,并且同時接收右側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
b3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2列像素,作為重構4*4參考塊的第I列像素,把當前4*4參考塊的第3列像素,作為重構4*4參考塊的第2列像素,把當前4*4參考塊的第4列像素,作為重構4*4參考塊的第3列像素,把步驟b2接收的4個像素值作為重構4*4參考塊的第4列的像素;b4.下一個參考塊的重構完成;
c.如果即將處理的參考塊位于當前處理完成的參考塊的下方,即由緩存區3加載參考塊像素到加法樹模塊;
c 1.緩存區3中的各個處理元把內存中的4個像素即X1、x2、x3、x4,依次發送給上方相鄰的處理元;
c2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最上方一行,S卩d1、d2、d3、d4,依次發送給上方相鄰的處理元,并且同時接收下方處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
c3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2行像素,作為重構4*4參考塊的第I行像素,把當前4*4參考塊的第3行像素,作為重構4*4參考塊的第2行像素,把當前4*4參考塊的第4行像素,作為重構4*4參考塊的第3行像素,把步驟c2接收的4個像素值作為重構4*4參考塊的第4行的像素;c4.下一個參考塊的重構完成;
本發明的有益效果如下:
采用二維處理元陣列結構,通過使用3個緩存區,更新參考塊像素數據,降低了帶寬;通過采用單PE存儲4*4像素塊的方式,相對于傳統的像素塊的存儲方式(單PE存儲單像素),處理單元使用的數量縮減至原來的1/16。
[0006]通過使用參考塊重構方法重構參考塊,提高了數據復用率至98.4%。
【附圖說明】
[0007]附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,用來解釋本發明,并不構成對本發明的限制。
[0008]在附圖中:
圖1為本發明提供的參考塊更新數據流程圖;
圖2為本發明提供的PE鄰接互連示意圖;
圖3為本發明提供的加法樹陣列和緩存區分布示意圖;
圖4為本發明提供的搜索窗示意圖;
圖5為本發明提供的搜索窗左上角參考塊示意圖;
圖6為下一個參考塊在當前參考塊左側的示意圖;
圖7為緩存區I加載參考塊數據示意圖;
圖8為下一個參考塊在當前參考塊右側的示意圖;
圖9為緩存區2加載參考塊數據示意圖;
圖10為下一個參考塊在當前參考塊下方的示意圖;
圖11為緩存區3加載參考塊數據示意圖;
圖12為緩存區I和加法樹模塊數據交互;
圖13為緩存區I加載數據完成后加法樹模塊單個處理元重構參考塊;
圖14為緩存區2和加法樹模塊數據交互;
圖15為緩存區2加載數據完成后加法樹模塊單個處理元重構參考塊;
圖16為緩存區3和加法樹模塊數據交互;
圖17為緩存區3加載數據完成后加法樹模塊單個處理元重構參考塊。
【具體實施方式】
[0009]以下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并非用于限定本發明的范圍。
[0010]以下實施例一種用于整數運動估計的參考塊像素更新并行實現方法,基于鄰接互連的二維處理元陣列結構,其特征在于,包括以下步驟:
圖2是PE鄰接互連示意圖,參考塊像素更新是在該二維鄰接互連PE陣列上實現的;
圖3是加法樹陣列和緩存區分布示意圖,灰色部分是緩存區模塊(最左邊一列是緩存區I,最右邊一列是緩存區2,最下邊一行是緩存區3),中間16*16個PE是加法樹模塊。一共米用了18*17個PE;
圖4是和當前塊匹配的大小是[-8,8)的搜索窗;
圖5是參考塊存儲不意圖,大小為64*64的參考塊,存儲到加法樹單兀;
步驟一:加法樹模塊利用緩存區I和緩存區2從外存加載64*64大小的參考塊,該參考塊位于搜索窗的左上角,并且以4*4大小的像素塊,按照自上到下、從左到右的存儲方式,存放到處理元陣列中,每個處理元存放一個4*4大小的參考塊,加法樹模塊進行像素數據處理;步驟二:加法樹模塊像素數據處理完成后,根據下一個將要處理的參考塊和當前處理完成的參考塊的數據相關性,采用蛇形掃描的方式更新參考塊數據,根據兩個參考塊的位置關系選擇緩存區加載搜索窗中的像素數據;
步驟二的特征在于:采用蛇形掃描的方式更新參考塊數據,即根據將要處理的參考塊和當前處理完成的參考塊之間的數據相關性,將要處理的參考塊可以通過當前處理完成的參考塊更新一行或者一列像素數據得到。具體的,根據這兩個參考塊的相對位置選取不同的緩存區更新數據:
圖6所示,即將處理的參考塊位于當前處理完成的參考塊的左側,當前處理完成的參考塊更新一列像素值,可以重構成下一個參考塊;
圖7所示左側的一列像素被讀入緩存區1,并且按照從上到下的順序存儲;
如果即將處理的參考塊位于當前處理完成的參考塊的左側,則通過緩存區I從外存讀取和當前處理完成的參考塊相鄰的左側的一列像素數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;
圖8所示,即將處理的參考塊位于當前處理完成的參考塊右側,當前處理完成的參考塊更新一列像素值,可以重構成下一個參考塊;
圖9所示右側的一列像素被讀入緩存區2,并且按照從上到下的順序存儲;
如果即將處理的參考塊位于當前處理完成的參考塊的右側,則通過緩存區2從外存讀取和當前處理完成的參考塊相鄰的右側的一列像素數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;
圖1O所示,即將處理的參考塊位于當前處理完成的參考塊的下方,當前參考塊更新一行像素值,可以重構成下一個參考塊;
圖11所示下方的一行像素被讀入緩存區3,并且按照從左到右的順序存儲;
如果即將處理的參考塊位于當前處理完成的參考塊的下方,則通過緩存區3從外存讀取和當前處理完成的參考塊相鄰的下方的一行數據,每個處理元存放4個像素,按照從左到右的順序,依次存儲;
步驟三:在步驟二得到的像素數據的基礎上,當前處理完成的參考塊和即將處理的參考塊的位置關系在加法樹模塊完成64*64大小的參考塊的數據更新;
步驟三的特征在于:加法樹模塊通過緩存區獲取即將處理的參考塊的像素數據,根據處理完成的參考塊和即將處理的參考塊的位置關系,重構參考塊數據,具體的:
a.如果下一個參考塊位于當前參考塊的左側,S卩由緩存區I加載參考塊像素到加法樹模塊;
a 1.緩存區I中的各個處理元把內存中的4個像素即Xl、x2、x3、x4,依次發送給右側相鄰的處理元; 如圖7所示最左側是緩存區1,把數據xl、x2、x3、x4,依次發送給右邊相鄰的處理元;a2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最右側一列,S卩d4、d8、d12、dl6,依次發送給右側相鄰的處理元,并且同時接收左側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
加法樹模塊中每一行處理元的執行操作如圖12所示,最左邊的處理元接收緩存區I中的處理元發送的4個像素值,并且把它們保存到內存中,即D1、D2、D3、D4,并且發送4*4像素塊的最右側一列((14、(18、(112、(116);其他的處理元把內存中的4*4像素塊的最右側一列((14、d8、dl2、dl6),依次發送給右側相鄰的處理元,并且接收左側相鄰處理元發送的像素值,最后把它們保存到內存中,_1、D2、D3、D4;
a3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第3列像素,作為重構4*4參考塊的第4列像素,把當前4*4參考塊的第2列像素,作為重構4*4參考塊的第3列像素,把當前4*4參考塊的第I列像素,作為重構4*4參考塊的第2列像素,把步驟a2接收的4個像素值作為重構4*4參考塊的第I列的像素;
如圖13所示,4*4參考塊重構,具體的,把當前4*4參考塊的第4列刪除,把處理元中當前4*4參考塊的第3列像素〔(13、(17、(111、(115),作為重構4*4參考塊的第4列像素((14、(18、(112、dl6),把處理元中當前4*4參考塊的第2列像素(d2、d6、dl0、dl4),作為重構4*4參考塊的第3列像素〔(13、(17、(111、(115),把當前4*4參考塊的第1列像素((11、(15、(19、(113),作為重構4*4參考塊的第2列像素((12、(16、(110、(114),把接收的四個像素(01、02、03、04)作為重構4*4參考塊的第一列(dl、d5、d9、dl3);
a4.下一個參考塊的重構完成;
b.如果即將處理的參考塊位于當前處理完成的參考塊的右側,即由緩存區2加載參考塊像素到加法樹模塊;
b1.緩存區2中的各個處理元把內存中的4個像素即Xl、x2、x3、x4,依次發送給左側相鄰的處理元;
如圖9所示最右側是緩存區2,把數據xl、x2、x3、x4,依次發送給左邊相鄰的處理元;b2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最左側一列,S卩d1、d5、d9、dl3,依次發送給左側相鄰的處理元,并且同時接收右側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
加法樹模塊中每一行處理元的執行操作如圖15所示,最右邊的處理元接收緩存區2中的處理元發送的4個像素值,并且把它們保存到內存中即Dl、D2、D3、D4,,并且發送4*4像素塊的最左側一列((11、(15、(19、(113);其他的處理元把內存中的4*4像素塊的最左側一列((11、(15、(19、(113),依次發送給左側相鄰的處理元,并且接收右側相鄰處理元發送的像素值((11、d5、d9、d13),最后把它們保存到內存中,即D1、D2、D3、D4;
b3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2列像素,作為重構4*4參考塊的第I列像素,把當前4*4參考塊的第3列像素,作為重構4*4參考塊的第2列像素,把當前4*4參考塊的第4列像素,作為重構4*4參考塊的第3列像素,把步驟b2接收的4個像素值作為重構4*4參考塊的第4列的像素;
如圖15所示,4*4參考塊重構,具體的,把當前4*4參考塊的第I列刪除,把處理元中當前4*4參考塊的第2列像素〔(12、(16、(110、(114),作為重構4*4參考塊的第1列像素((11、(15、(19、(113),把處理元中當前4*4參考塊的第3列像素((13、(17、(111、(115),作為重構4*4參考塊的第2列像素〔(12、(16、(110、(114),把當前4*4參考塊的第4列像素((14、(18、(112、(116),作為重構4*4參考塊的第3列像素((13、(17、(111、(115),把接收的四個像素(01、02、03、04)作為重構4*4參考塊的第 4 列(d4、d8、dl2、dl6);
b4.下一個參考塊的重構完成;
c.如果即將處理的參考塊位于當前處理完成的參考塊的下方,即由緩存區3加載參考塊像素到加法樹模塊;
c 1.緩存區3中的各個處理元把內存中的4個像素即X1、x2、x3、x4,依次發送給上方相鄰的處理元;
如圖11所示最下方是緩存區3,把數據xl、x2、x3、x4,依次發送給上邊相鄰的處理元;c2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最上方一行,S卩d1、d2、d3、d4,依次發送給上方相鄰的處理元,并且同時接收下方處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4;
加法樹模塊中每一列處理元的執行操作如圖16所示,最下邊的處理元接收緩存區3中的處理元發送的4個像素值,并且把它們保存到內存中,即D1、D2、D3、D4,并且發送4*4像素塊的最上方一行((11、(12、(13、(14);其他的處理元把內存中的4*4像素塊的最上方一行((11、(12、(13、(14),依次發送給上方相鄰的處理元,并且接收下方相鄰處理元發送的像素值((11、d2、d3、d4),最后把它們保存到內存中,即D1、D2、D3、D4;
c3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2行像素,作為重構4*4參考塊的第I行像素,把當前4*4參考塊的第3行像素,作為重構4*4參考塊的第2行像素,把當前4*4參考塊的第4行像素,作為重構4*4參考塊的第3行像素,把步驟c2接收的4個像素值作為重構4*4參考塊的第4行的像素;
如圖17所示,4*4參考塊重構,具體的,把當前4*4參考塊的第I行刪除,把處理元中當前4*4參考塊的第2行像素〔(15、(16、(17、(18),作為重構4*4參考塊的第1行像素((11、(12、(13、(14),把處理元中當前4*4參考塊的第3行像素((19、(110、(111、(112),作為重構4*4參考塊的第2行像素((15、(16、(17、(18),把當前4*4參考塊的第4行像素((113、(114、(115、(116),作為重構4*4參考塊的第3行像素((19、(110、(111、(112),把接收的四個像素(01、02、03、04)作為重構4*4參考塊的第4行((113、(114、(115、(116);
c4.下一個參考塊的重構完成;
步驟四:重復步驟二和步驟三,直到搜索窗加載完成;
以搜索窗大小是[-8,8)為例說明具體步驟如下:
al當y=7,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a2當y=6,x = 7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a3當y=6,_8=〈X〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a4當y=5,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據; a5當y=5,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a6當y=4,x = 7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a7當y=4,_8=〈X〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a8當y=3,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a9當y=3,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
alO當y=2,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;all當y=2,-8=〈x〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al2當y=l,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al3當y=l,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al4當y=0,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;al5當y=0,_8=〈X〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al6當y=_l,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al7當y=-l,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al8當y=_2,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
al9當y=-2,-8=〈x〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a20當y=_3,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a21當y=-3,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據
a22當y=_4,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a23當y=-4,_8=〈χ〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a24當y=_5,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a25當y=-5,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a26當y=_6,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a27當y=-6,-8=〈x〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a28當y=_7,x = _8時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a29當y=-7,-8〈x〈8時,緩存區2讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a30當y=_8,x=7時,緩存區3讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據;
a31當y=-8,-8=〈x〈7時,緩存區I讀取搜索窗數據,并且傳遞給加法樹模塊更新參考塊數據。
【主權項】
1.一種用于整數運動估計的參考塊像素更新并行實現方法,基于鄰接互連的二維處理元陣列結構,其特征在于,包括以下步驟: 步驟一:加法樹模塊利用緩存區I和緩存區2從外存加載64*64大小的參考塊,該參考塊位于搜索窗的左上角,并且以4*4大小的像素塊,按照自上到下、從左到右的存儲方式,存放到處理元陣列中,每個處理元存放一個4*4大小的參考塊,加法樹模塊進行像素數據處理; 步驟二:加法樹模塊像素數據處理完成后,根據下一個將要處理的參考塊和當前處理完成的參考塊的數據相關性,采用蛇形掃描的方式更新參考塊數據,根據兩個參考塊的位置關系選擇緩存區加載搜索窗中的像素數據; 步驟三:在步驟二得到的像素數據的基礎上,根據下一個將要處理的參考塊和當前處理完成的參考塊的數據相關性在加法樹模塊完成64*64大小的參考塊的數據更新; 步驟四:重復步驟二和步驟三,直到搜索窗加載完成。2.如權利要求1所述的方法,其特征在于,步驟二中根據即將處理參考塊和當前處理完成的參考塊的相對位置選取不同的緩存區更新數據,具體的:如果即將處理的參考塊位于當前處理完成的參考塊的左側,則通過緩存區I從外存讀取和當前處理完成的參考塊相鄰的左側的一列像素數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;如果即將處理的參考塊位于當前處理完成的參考塊的右側,則通過緩存區2從外存讀取和當前處理完成的參考塊相鄰的右側的一列數據,每個處理元存放4個像素,按照從上到下的順序,依次存儲;如果即將處理的參考塊位于當前處理完成的參考塊的下方,則通過緩存區3從外存讀取和當前處理完成的參考塊相鄰的下方的一行數據,每個處理元存放4個像素,按照從左到右的順序,依次存儲。3.如權利要求1所述的方法,其特征在于,步驟三中加法樹模塊通過緩存區獲取即將處理的參考塊的像素數據,根據當前處理完成的參考塊和即將處理的參考塊的位置關系,重構參考塊數據,具體的: a.如果即將處理的參考塊位于當前處理完成的參考塊的左側,即由緩存區I加載參考塊像素到加法樹模塊; al.緩存區I中的各個處理元把內存中的4個像素即Xl、x2、x3、x4,依次發送給右側相鄰的處理元; a2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最右側一列,8卩d4、d8、dl2、dl6,依次發送給右側相鄰的處理元,并且同時接收左側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4; a3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第3列像素,作為重構4*4參考塊的第4列像素,把當前4*4參考塊的第2列像素,作為重構4*4參考塊的第3列像素,把當前4*4參考塊的第I列像素,作為重構4*4參考塊的第2列像素,把步驟a2接收的4個像素值作為重構4*4參考塊的第I列的像素; a4.下一個參考塊的重構完成; b.如果即將處理的參考塊位于當前處理完成的參考塊的右側,即由緩存區2加載參考塊像素到加法樹模塊; bl.緩存區2中的各個處理元把內存中的4個像素即xl、x2、x3、x4,依次發送給左側相鄰的處理元; b2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最左側一列,即dl、d5、d9、dl3,依次發送給左側相鄰的處理元,并且同時接收右側處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4; b3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2列像素,作為重構4*4參考塊的第I列像素,把當前4*4參考塊的第3列像素,作為重構4*4參考塊的第2列像素,把當前4*4參考塊的第4列像素,作為重構4*4參考塊的第3列像素,把步驟b2接收的4個像素值作為重構4*4參考塊的第4列的像素;b4.下一個參考塊的重構完成; c.如果即將處理的參考塊位于當前處理完成的參考塊的下方,即由緩存區3加載參考塊像素到加法樹模塊; Cl.緩存區3中的各個處理元把內存中的4個像素即xl、x2、x3、x4,依次發送給上方相鄰的處理元; c2.加法樹模塊中的各個處理元,把內存中的4*4像素塊的最上方一行,SPdl、d2、d3、d4,依次發送給上方相鄰的處理元,并且同時接收下方處理元發送的4個像素值,把它們保存到內存中,即D1、D2、D3、D4; c3.加法樹模塊中的各個處理元,重構4*4參考塊,具體的,把各個處理元中當前4*4參考塊的第2行像素,作為重構4*4參考塊的第I行像素,把當前4*4參考塊的第3行像素,作為重構4*4參考塊的第2行像素,把當前4*4參考塊的第4行像素,作為重構4*4參考塊的第3行像素,把步驟c2接收的4個像素值作為重構4*4參考塊的第4行的像素;c4.下一個參考塊的重構完成。
【文檔編號】H04N19/527GK105847828SQ201610062398
【公開日】2016年8月10日
【申請日】2016年1月29日
【發明人】鄧軍勇, 崔繼興, 謝曉燕, 張新, 蘆守鵬
【申請人】西安郵電大學