專利名稱:并行流水去塊效應濾波器vlsi結構設計方法
技術領域:
本發明屬于視頻編解碼領域,具體是一種基于H. 264的去塊效應濾波器VLSI結構 設計方法。
背景技術:
隨著互聯網應用的飛速發展,多媒體技術已經廣泛應用于通訊、娛樂、醫療和軍事 等諸多領域。多媒體信息中,視頻信息是人類最有效和最重要的信息傳遞形式。由于視頻 信息數據量極大,在通信中占用大量的帶寬,存儲時占用大量的存儲資源,其與現有的有限 資源之間的矛盾催生了視頻壓縮技術。目前最有效的壓縮標準是H.264/AVC。H. 264采用 了很多新技術,包括環路去塊效應濾波,以解決在高壓縮比的情況下視頻出現的方塊效應。 方塊效應是指解碼后的視頻圖像中出現虛假的方塊邊界,它會嚴重的影響到人們的主觀視 覺體驗,這是基于塊的編碼系統存在的缺陷之一。采用去塊濾波技術是H. 264編碼標準在相對碼率較低的編碼環境下仍然具有較 好的主觀視覺效果的重要原因。它可以平滑圖像中的虛假邊界,改善塊效應帶來的視覺不 適,提高視頻的主觀視覺效果。據統計,去塊濾波可以在相同的PSNR基礎上,降低視頻碼流 5-10%。但是,這種視頻質量的提升和碼率的降低是以增加運算復雜度的代價換取的。在 硬件實現中,即使經過濾波算法的優化,去除其中的乘法器,去塊效應濾波也輕易的消耗了 整個H. 264解碼器1/3的運算資源。高效實時的去塊效應濾波器設計成為H. 264解碼器設 計中的重點。
發明內容
根據上述背景技術中的存在的不足,本發明的目的在于,提供高效實時的去塊效 應濾波器,以對高清和超高清視頻進行實時解碼。為了實現上述任務,本發明采用的技術解決方案是視頻幀被劃分為宏塊單元,去塊效應濾波以宏塊為基本濾波操作單位,在一個宏 塊內以4x4像素點陣為單位劃分子塊,這些子塊邊界就是去塊效應濾波將要處理的對象;—個宏塊需要濾波的子邊界為48條,每條子邊界對應濾波操作的輸入為邊界兩 側4x4子塊像素,邊界濾波器兩個輸入端口的位寬均為32bit,對應為4像素,宏塊數據以4 像素一行(32bit)為組織形式進入兩個FIFO (First InFirst Out)緩存,兩個FIFO分別向 兩個邊界濾波器提供輸入;根據并行濾波次序,邊界濾波器依次濾波所有子邊界,邊界濾波器為五級流水線 實現,包含讀數據、門限計算、預濾波、濾波和寫數據五個步驟;濾波計算公式如下,其中p0 p3、q0 q3表示待濾波的像素值,x0 x3、y0 y4表示第一級計算結果;XO X3、YO Y3表示第二級的計算結果;p0' p2'、q0' q2'、p0"、q0"表示濾波后的像素結果;bs為濾波強度;強濾波(Bs= 4) 標準濾波(Bs = 1,2,3)
p0'=(X0+X2) >> 3delta = clip (_cl,cl, (Yl+x3+l) >> 3)
Pl'=XO > > 2p0' = clip (0,255,p0+delta)
p2'=(X0+X1) >>3q0' = clip (0,255,qO—delta)
p0"=YO > > 2pi' = pl+clip(-c0, cO, XO >> 2)
q0'=(X2+Y3) >> 3ql' = ql+clip(-c0, cO, Y3 >> 2)
ql'=Y3 > > 2
q2'=(Y2+Y3) >> 3
qO"=X3 > > 2
算子
x0 =p0+q0+l
XO =xO+xl
xl =p2+pl+l(bs = 4)
Xl =yl << 1
xl =2*p2-4*pl(bs ! = 4)
X2 =x0+x3
x2 =q2+ql+l(bs = 4)
X3 =x3+y4
x2 =2*q2_4*ql(bs ! = 4)
YO =x3+y3
x3 =pl+ql+1(bs = 4)
Yl =yO << 2+3
x3 =plql(bs ! = 4)
Y2 =y2 << 1
y0 =q0-p0
Y3 =x0+x2
yl =p3+p2+l
y2 =q3+q2+l
y3 =pl+p0+l
y4 =ql+q0+l
輸出子塊若已經完成四條邊界濾波,不再參與之后的濾波運算則回寫外存
暫存入片內存儲以備復用,每個子塊在完成左、右、上、下四條邊界濾波前將再次進入邊界 濾波器,中間結果暫存至中間結果寄存器組,每個宏塊的最右一列子塊和最底部一行子塊 將會以左鄰參考數據和上鄰參考數據的形式參與相鄰宏塊的濾波運算,因此這兩部分數據 濾波完成之后將寫入片內存儲以備復用;進入片內存儲器的子塊在某些情況下需要轉置行列順序當這個子塊的下一次濾 波操作是水平邊界濾波,即數據是以列為組織形式進入邊界濾波器時,子塊需要轉置,轉置 延時四個周期。本發明成功的實現了以上高效并行的去塊效應濾波器VLSI結構,可用于H. 264視 頻編解碼器的硬件實現。
本發明提供了高效并行流水的去塊效應濾波器VLSI結構設計方法,可以實時地 地消除高清和超高清視頻解碼中的塊效應,從而獲得較高的視頻質量,適應高清和超高清 視頻應用的發展。
圖1是高效并行的去塊效應濾波器VLSI結構示意2是高效并行的去塊效應濾波器的五級流水線結構示意3是高效并行的去塊效應濾波器的存儲組織示意4是高效并行的去塊效應濾波器的的左鄰存儲更新示意5是高效并行的去塊效應濾波器的上鄰存儲更新示意6是高效并行的去塊效應濾波器的兩個FIFO緩存一個宏塊的示意7是高效并行的去塊效應濾波器優化的混合濾波次序圖8是高效并行的去塊效應濾波器的子邊界濾波次序的編號示意9是高效并行的去塊效應濾波器的宏塊濾波過程時序10是高效并行的去塊效應濾波器的亮度分量分兩部分濾波的示意11是高效并行的去塊效應濾波器的優化的輸出次序圖12是復用后的濾波計算過程圖13是復用的濾波計算結構下面結合附圖對本發明的內容作進一步詳細說明。
具體實施例方式圖1所示第一實施例中給出了高效并行的去塊效應濾波器VLSI結構,源視頻序列 以宏塊為單位通過外部總線緩存至兩個FIFO,FIFO中的數據以一行/列四像素為組織形式 進入邊界濾波器,根據H. 264標準定義的濾波算法進行更新,之后經過片內回路,或暫存片 內存儲,或完成濾波輸出外部總線。圖2所示第二實施例中給出了濾波算法被劃分為五級流水線讀數據,門限計算, 預濾波,濾波,寫數據。流水線技術將復雜的組合邏輯截斷,能夠獲得較好的最高工作頻率, 以提升系統的吞吐量。圖3所示第三實施例中給出了優化的存儲策略,包含當前宏塊存儲,上鄰存儲和 左鄰存儲。圖4所示第四實施例中給出了宏塊濾波與宏塊濾波間數據復用技術,開辟片上 存儲暫存當前宏塊左邊界濾波所需要的左宏塊最右一列4X4子塊,共計4X4X8像素 (32bitX32)大小。當前宏塊濾波完成后會更新最右一列4X4子塊到左鄰存儲。圖5所示第五實施例中給出了上鄰存儲設計方法,開辟片上存儲暫存當前宏 塊行所有宏塊上邊界濾波所需要的上宏塊底部一列4X4子塊,共計4X2XFW像素 (32bitX2XN)大小,FW(Frame Width)為以像素為單位的圖像寬。當前宏塊濾波完成后會 更新底部一列4X4子塊到上鄰存儲的相應位置。圖6所示第一實施例中給出了雙FIFO的設計方法,以減少帶寬需求。采用兩個 32X48bit FIFO緩存當前宏塊源數據。采用兩個半宏塊容量FIFO的目的在于應對雙濾波器對當前宏塊數據請求峰值位寬倍增的情況當雙濾波器同時請求當前宏塊數據時將使得 輸入接口位寬需求倍增為64bit,但是另一些時刻卻又沒有任何數據請求,綜合看來,峰值 和無請求的情況持平。因此,雙FIFO可以有效的平衡外存數據請求,削峰填谷,充分利用 32bit的總線帶寬,而對系統內的雙濾波器又可以滿足64bit的數據請求。和兩個FIFO協 同工作的有一個FIFO控制單元(FIFO Ctrl)。它根據FIFO的空滿信號產生FIFO讀寫使 能;根據FIFO的尾指針產生外存讀地址信號。圖7所示第七實施例中給出了高效并行的去塊效應濾波器優化的混合濾波次序, 兩個濾波器和并行流水的進行濾波。圖8所示第八實施例中給出了高效并行的去塊效應濾波器的子邊界濾波次序的 編號,根據此編號,可以實現無縫并行流水的去塊效應濾波。圖9所示第九實施例中給出了高效并行的去塊效應濾波器的宏塊濾波過程時序。 作為環路濾波器的形式加入,輸入是重建圖像。濾波時序如圖9所示,P0、QO和PI、Ql分 別表示兩個邊界濾波器(濾波器0和濾波器1)的P、Q兩個輸入端,Output表示輸出接口, Top和Left分別代表上鄰存儲和左鄰存儲的輸入時序。下面針對一些典型的子邊界對濾波 過程加以說明子邊界0被濾波器0濾波,P端輸入來自左鄰存儲(L0),4像素,32位;Q端輸入來 自當前宏塊存儲FIFO 0 (BO),4像素,32位。五拍之后,濾波器開始輸出結果,P端輸出數據 LO不會參與之后的濾波運算,因此可以立即回寫外存;Q端輸出BO將在濾波子邊界2時作 為P端輸入,因此緩存至轉置寄存器BufO。子邊界1和子邊界2同時濾波。子邊界1濾波同子邊界0相似,P端輸出Ll回寫 外存,Q端輸出B4緩存至Buf2。子邊界2濾波時,P端輸入來自BufO,Q端輸入來自當前宏 塊存儲FIFO 0(B1)。完成濾波后,P端輸出因為要參與水平子邊界6的濾波運算,轉置后暫 存至BufO。子邊界3、4、5均可以類此完成。當子邊界6濾波時,P端輸入來自上鄰存儲T0,一列4像素,32位;Q端輸入來自 BufO中轉置之后的B0,一列四像素,32位。完成濾波后,TO不再參與之后的濾波運算,將在 轉置之后回寫外存,Q端輸出BO將作為子邊界7的輸入,此時暫存BufO。子邊界7濾波之后,BO不再參與之后的運算,回寫外存。B4完成左、上、右的濾波, 作為宏塊亮度分量下半部分的上鄰數據,寫入上鄰存儲,B5、B6、B7也作此安排,如圖9Top 行濾波次序為6 10之間的部分所示。這其實是采取將亮度分量一分為二的策略,如圖10 所示,宏塊亮度分量下半部分濾波時,當前宏塊數據Β4 Β7作為上鄰數據被引用。可以看 到,上下兩個部分在數據請求和運算規則上有一致性,因此亮度分量濾波控制的最小單位 從16X16減少到現在的8X16,簡化了實現。這種設計可以提高上鄰存儲的使用效率,在一 定程度上代替中間數據寄存器工作,減少寄存器的個數。子邊界15濾波之后,Β3不再參與運算,寫入左鄰存儲。如圖9 Left行濾波次序 11對應的時鐘所示。同理,B7、BlU B15分別在濾波次序18 20對應的時鐘內寫入左鄰存儲。子邊界17濾波完成之后,L3不再參與當前宏塊的濾波運算,作為左下方宏塊的上 鄰數據暫存至上鄰存儲,偏移地址取決于當前宏塊在此宏塊行的水平位置。同理B12 B14 均寫入上鄰存儲,以作為下一宏塊行的上鄰參考數據。
此外,色度的濾波方式大體等同于亮度,不再贅述。據此規則分析,BufO Buf6緩存中間數據,并提供轉置功能,以作為其他子邊界 濾波的輸入,同時在必要的時候緩存輸出數據,以解決輸出總線的擁堵。το、τι主要用于轉 置輸出上鄰和左鄰數據。圖10所示第十實施例中給出了高效并行的去塊效應濾波器的亮度分量分兩部分 濾波的順序,可以滿足雙濾波器對數據濾波依賴性的需求。圖11所示第十一實施例中給出了雙濾波器的一個宏塊內數據輸出到存儲等次 序。左斜陰影子塊寫入上鄰存儲,右斜陰影子塊寫入左鄰存儲,白色子塊完成濾波運算寫入 外存。數字代表以濾波次序排序的輸出次序,如數字4代表當次序4對應的子邊界濾波開 始進入寫存儲步驟時,向外存寫這個子塊。而25、26不在濾波次序內的編號說明在濾波完 成之后,仍需要有額外的時鐘來處理數據的輸出。圖12所示第十二實施例中給出具體的濾波計算流程。上方列出強、弱濾波的最終 計算公式,下方給出公式中需要的計算因子,這些計算因子由輸入的像素值計算而來。圖13所示第十三實施例中給出具體的濾波計算結構。數據從左向右分級計算,將 復用部分先計算出來,再通過對這些公共部分各種組合計算完成濾波。本發明提供了一種面向高清和超高清的實時去塊效應濾波器VLSI結構設計方 法。可以實現超高清視頻的實時解碼,滿足實時媒體處理器的要求,具體包括1)通過“并行技術”,提高去塊效應濾波器的處理速度;2)采用“五級流水線技術”,提高去塊效應濾波器的吞吐量;3)通過“復用技術”,降低對片外存儲的訪問;4)通過“優化的混合濾波次序技術”,避免流水線沖突,提升流水線的性能;并降 低對片上存儲的需求;5)通過“優化的存儲技術”,降低了對外存的帶寬要求。6)通過“優化的濾波計算方法”,加法器的使用降低到23個,減少了硬件損耗。所述的“并行技術”是指,源視頻序列以宏塊為單位通過外部總線緩存至兩個 FIFO, FIFO中的數據以一行/列四像素為組織形式進入邊界濾波器,根據H. 264標準定義 的濾波算法進行更新,之后經過片內回路,或暫存片內存儲,或完成濾波輸出外存。所述的“五級流水線技術”是指,將復雜的濾波算法劃分為三級流水線,加上讀寫 數據兩級流水線,一共五級。采用兩個基于五級流水線的邊界濾波器并行處理無數據依賴 關系的待濾波數據。所述的“復用技術”是指,利用中間數據重復引用的特點,開辟片上存儲暫存濾波 的中間數據以備后續的濾波操作復用,減少對外存的訪問次數。所述的“優化的混合濾波次序技術”是指,保證濾波數據依賴關系的前提下優化設 計濾波次序以實現數據流的優化,避免數據沖突;并且通過數據流的優化使得盡早輸出中 間結果,可以減少對片上存儲的需求。所述的“優化的存儲技術”是指,存儲組織分為上鄰存儲,左鄰存儲,當前存儲和中 間寄存器組四種。當前存儲采用兩個FIFO對應緩存兩個邊界濾波器的輸入請求數據,并通 過一個信號量互斥的將兩個FIFO連接到外部總線上,使得它們充分利用總線資源,降低對 外部總線帶寬的需求;上鄰和左鄰存儲暫存宏塊濾波間可復用的邊緣數據;中間寄存器組暫存宏塊濾波過程中的中間結果。 本發明完成對宏塊的濾波工作過程如下源視頻序列以宏塊為單位通過外部總線 緩存至兩個FIFO,FIFO中的數據以一行/列四像素為組織形式進入邊界濾波器,根據H. 264 標準定義的濾波算法進行更新,之后經過片內回路,或暫存片內存儲,或完成濾波輸出外部 總線。
權利要求
并行流水去塊效應濾波器VLSI結構設計方法,其特征在于,包括下列步驟視頻幀被劃分為宏塊單元,去塊效應濾波以宏塊為基本濾波操作單位,在一個宏塊內以4x4像素點陣為單位劃分子塊,這些子塊邊界就是去塊效應濾波將要處理的對象;一個宏塊需要濾波的子邊界為48條,每條子邊界對應濾波操作的輸入為邊界兩側4x4子塊像素,邊界濾波器兩個輸入端口的位寬均為32bit,對應為4像素,宏塊數據以4像素一行32bit為組織形式進入兩個FIFO(First In FirstOut)緩存,兩個FIFO分別向兩個邊界濾波器提供輸入;根據并行濾波次序,邊界濾波器依次濾波所有子邊界,邊界濾波器為五級流水線實現,包含讀數據、門限計算、預濾波、濾波和寫數據五個步驟;濾波計算公式如下,其中p0~p3、q0~q3表示待濾波的像素值,x0~x3、y0~y4表示第一級計算結果;X0~X3、Y0~Y3表示第二級的計算結果;p0′~p2′、q0′~q2′、p0″、q0″表示濾波后的像素結果;bs為濾波強度;強濾波(Bs=4) 標準濾波(Bs=1,2,3)p0′=(X0+X2)>>3 delta=clip(-c1,c1,(Y1+x3+1)>>3)p1′=X0>>2 p0′=clip(0,255,p0+delta)p2′=(X0+X1)>>3 q0′=clip(0,255,q0-delta)p0″=Y0>>2 p1′=p1+clip(-c0,c0,X0>>2)q0′=(X2+Y3)>>3 q1′=q1+clip(-c0,c0,Y3>>2)q1′=Y3>>2q2′=(Y2+Y3)>>3q0″=X3>>2算子x0=p0+q0+1X0=x0+x1x1=p2+p1+1(bs=4)X1=y1<<1x1=2*p2-4*p1(bs!=4)X2=x0+x3x2=q2+q1+1(bs=4)X3=x3+y4x2=2*q2-4*q1(bs!=4)Y0=x3+y3x3=p1+q1+1(bs=4)Y1=y0<<2+3x3=p1q1(bs!=4)Y2=y2<<1y0=q0-p0Y3=x0+x2y1=p3+p2+1y2=q3+q2+1y3=p1+p0+1y4=q1+q0+1輸出子塊若已經完成四條邊界濾波,不再參與之后的濾波運算則回寫外存,否則暫存入片內存儲以備復用,每個子塊在完成左、右、上、下四條邊界濾波前將再次進入邊界濾波器,中間結果暫存至中間結果寄存器組,每個宏塊的最右一列子塊和最底部一行子塊將會以左鄰參考數據和上鄰參考數據的形式參與相鄰宏塊的濾波運算,因此這兩部分數據濾波完成之后將寫入片內存儲以備復用;進入片內存儲器的子塊在某些情況下需要轉置行列順序當這個子塊的下一次濾波操作是水平邊界濾波,即數據是以列為組織形式進入邊界濾波器時,子塊需要轉置,轉置延時四個周期。
全文摘要
本發明公開了一種面向超高清的實時去塊效應濾波器VLSI結構設計方法。采用基于五級流水線的邊界濾波器;優化的混合濾波次序和數據輸出以避免流水線停滯等待,提高了流水線的性能;采用并行雙邊界濾波器結構,相比單濾波器設計增加了近一倍的吞吐量;優化存儲策略和緩存機制,開辟片上存儲暫存濾波中間結果以復用,降低了對外存的帶寬要求;優化濾波次序,減少對中間存儲的需求。
文檔編號H04N7/26GK101883285SQ20101021857
公開日2010年11月10日 申請日期2010年7月6日 優先權日2010年7月6日
發明者付強, 蘭旭光, 李興玉, 賈淑妍, 鄭南寧 申請人:西安交通大學