亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

去方塊濾波方法、裝置和系統(tǒng)與流程

文檔序號:11389090閱讀:314來源:國知局
去方塊濾波方法、裝置和系統(tǒng)與流程

本發(fā)明涉及圖像編解碼技術(shù)領(lǐng)域,特別是涉及去方塊濾波方法、去方塊濾波裝置和去方塊濾波系統(tǒng)。



背景技術(shù):

在視頻編碼標準中,例如h.264/avc(advancedvideocoding,高級視頻編碼)或者hevc(highefficiencyvideocoding)中,編碼單元是以宏塊為單位的,這種按照宏塊的編碼方法會導致圖像重構(gòu)后具有方塊效應,會有損圖像的質(zhì)量和增大編碼碼率。通過去方塊效應濾波可以去除這種影響,所以去方塊效應濾波是視頻編碼中一個重要的部分。

傳統(tǒng)的去方塊濾波方法如圖1所示,濾波過程以宏塊為單位,每個宏塊包括1個16×16的亮度塊和2個8×8的色度塊,按照掃描順序從圖像左上角宏塊一直到右下角宏塊進行濾波。圖1中每個方格代表一個4×4像素塊,需要濾波的邊界如圖中加粗線條所示,分為垂直邊界和水平邊界,邊界的濾波順序按照圖中數(shù)字順序,即先從左到右進行垂直邊界濾波,再從上往下進行水平邊界的濾波。進行垂直邊界濾波時,需要邊界左邊像素(p3,p2,p1,p0)和邊界右邊像素(q0,q1,q2,q3)來完成濾波;進行水平邊界濾波時,需要邊界上邊4像素(p3,p2,p1,p0)和邊界下邊像素(q0,q1,q2,q3)來完成濾波;一條邊界濾波結(jié)束后最多可能改變邊界左右或上下共6個像素的值,也可能保留原始值,具體由濾波邊界的類型和邊界兩邊像素值決定。該傳統(tǒng)的去方塊濾波方法雖然可以去除方塊效應,但是需要浪費大量的存儲空間來存儲濾波臨時數(shù)據(jù),因此存在硬件面積占用大的缺陷。



技術(shù)實現(xiàn)要素:

基于此,有必要針對上述硬件面積占用大的問題,提供一種有效減少硬件占用面積的去方塊濾波方法、裝置和系統(tǒng)。

一種去方塊濾波方法,包括步驟:

按照設(shè)定的邊界濾波順序確定當前宏塊中待濾波的邊界;

若待濾波的邊界為垂直邊界,從寄存器陣列和第一內(nèi)部存儲器中獲取所述垂直邊界左右兩側(cè)的像素數(shù)據(jù),根據(jù)左右兩側(cè)的像素數(shù)據(jù)對所述垂直邊界進行濾波,將所述垂直邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列;其中所述寄存器陣列預先存儲有當前宏塊的左側(cè)宏塊的預設(shè)列數(shù)的像素數(shù)據(jù),所述第一內(nèi)部存儲器預先存儲有當前宏塊的原始像素數(shù)據(jù);

若待濾波的邊界為水平邊界,從寄存器陣列和第二內(nèi)部存儲器中獲取所述水平邊界上下兩側(cè)的像素數(shù)據(jù),根據(jù)上下兩側(cè)的像素數(shù)據(jù)對所述水平邊界進行濾波,將所述水平邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器;其中所述第二內(nèi)部存儲器預先存儲有當前宏塊的上側(cè)宏塊的預設(shè)行數(shù)的像素數(shù)據(jù)。

上述去方塊濾波方法,采用對存儲器復用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進行濾波,寄存器陣列既用于存儲當前宏塊的左側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),第二內(nèi)部存儲器既用于存儲當前宏塊的上側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),從而有效減少了硬件的占用面積。

在一個實施例中,所述當前宏塊包括1個16×16的亮度塊;所述邊界濾波順序包括:按照第一邊界濾波順序依次對亮度塊的上半部分的邊界和下半部分的邊界進行濾波;所述第一邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第1個水平邊界和下一行左側(cè)第1個水平邊界進行濾波,再依次對第3列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第2個水平邊界和下一行左側(cè)第2個水平邊界進行濾波,再依次對第4列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第3個水平邊界和下一行左側(cè)第3個水平邊界進行濾波,再依次對上一行左側(cè)第4個水平邊界和下一行左側(cè)第4個水平邊界進行濾波。亮度塊采用該濾波順序進行濾波,充分利用了各個4×4子塊間的數(shù)據(jù)依賴性,可以提高濾波的速度。

在一個實施例中,所述當前宏塊還包括兩個8×8的色度塊;所述邊界濾波順序還包括:對亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對兩個色度塊的邊界進行濾波;所述第二邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界進行濾波,再依次對第1行左側(cè)的水平邊界和第2行左側(cè)的水平邊界進行濾波,再依次對第1行右側(cè)的水平邊界和第2行右側(cè)的水平邊界進行濾波。色度塊采用該濾波順序進行濾波,充分利用了各個4×4子塊間的數(shù)據(jù)依賴性,可以提高濾波的速度。

在一個實施例中,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列之后,還包括步驟:若按照設(shè)定的邊界濾波順序確定存儲到所述寄存器陣列的臨時濾波數(shù)據(jù)下一次用于水平邊界濾波,則將所述臨時濾波數(shù)據(jù)進行垂直方向轉(zhuǎn)置。使用寄存器陣列存儲垂直邊界濾波后臨時數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,能夠有效減少硬件占用面積以及提高濾波的速度。

在一個實施例中,若待濾波的邊界為亮度塊的水平邊界,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行或者第4行的水平邊界,將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器;若待濾波的邊界為第2行左側(cè)第4個水平邊界或者第3行左側(cè)第4個水平邊界,將水平邊界上側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列;若待濾波的邊界為第4行左側(cè)第4個水平邊界,將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列。

在一個實施例中,若待濾波的邊界為色度塊的水平邊界,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行的水平邊界,將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器;若待濾波的邊界為第2行右側(cè)的水平邊界,將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列。

在一個實施例中,所述寄存器陣列中的兩個寄存器陣列分時復用于亮度塊的邊界濾波和色度塊的邊界濾波。通過存儲器復用能夠有效減少硬件占用面積。

一種去方塊濾波裝置,包括:

濾波邊界確定模塊,用于按照設(shè)定的邊界濾波順序確定當前宏塊中待濾波的邊界;

垂直邊界濾波模塊,用于在待濾波的邊界為垂直邊界時,從寄存器陣列和第一內(nèi)部存儲器中獲取所述垂直邊界左右兩側(cè)的像素數(shù)據(jù),根據(jù)左右兩側(cè)的像素數(shù)據(jù)對所述垂直邊界進行濾波,將所述垂直邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列;其中所述寄存器陣列預先存儲有當前宏塊的左側(cè)宏塊的預設(shè)列數(shù)的像素數(shù)據(jù),所述第一內(nèi)部存儲器預先存儲有當前宏塊的原始像素數(shù)據(jù);

水平邊界濾波模塊,用于在待濾波的邊界為水平邊界時,從寄存器陣列和第二內(nèi)部存儲器中獲取所述水平邊界上下兩側(cè)的像素數(shù)據(jù),根據(jù)上下兩側(cè)的像素數(shù)據(jù)對所述水平邊界進行濾波,將所述水平邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器;其中所述第二內(nèi)部存儲器預先存儲有當前宏塊的上側(cè)宏塊的預設(shè)行數(shù)的像素數(shù)據(jù)。

上述去方塊濾波裝置,采用對存儲器復用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進行濾波,寄存器陣列既用于存儲當前宏塊的左側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),第二內(nèi)部存儲器既用于存儲當前宏塊的上側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),從而有效減少了硬件的占用面積。

在一個實施例中,所述當前宏塊包括1個16×16的亮度塊;所述邊界濾波順序包括:按照第一邊界濾波順序依次對亮度塊的上半部分的邊界和下半部分的邊界進行濾波;所述第一邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第1個水平邊界和下一行左側(cè)第1個水平邊界進行濾波,再依次對第3列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第2個水平邊界和下一行左側(cè)第2個水平邊界進行濾波,再依次對第4列上下側(cè)的兩個垂直邊界進行濾波,再依次對上一行左側(cè)第3個水平邊界和下一行左側(cè)第3個水平邊界進行濾波,再依次對上一行左側(cè)第4個水平邊界和下一行左側(cè)第4個水平邊界進行濾波。

在一個實施例中,所述當前宏塊還包括兩個8×8的色度塊;所述邊界濾波順序還包括:對亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對兩個色度塊的邊界進行濾波;所述第二邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界進行濾波,再依次對第1行左側(cè)的水平邊界和第2行左側(cè)的水平邊界進行濾波,再依次對第1行右側(cè)的水平邊界和第2行右側(cè)的水平邊界進行濾波。

一種去方塊濾波系統(tǒng),包括:

寄存器陣列,用于存儲當前宏塊左側(cè)預設(shè)列數(shù)的像素數(shù)據(jù)以及當前宏塊中未完成濾波的像素數(shù)據(jù);

第一內(nèi)部存儲器,用于存儲當前宏塊的原始像素數(shù)據(jù);

第二內(nèi)部存儲器,用于存儲當前宏塊上側(cè)預設(shè)行數(shù)的像素數(shù)據(jù)以及當前宏塊中未完成濾波的像素數(shù)據(jù);

控制器,所述控制器包括存儲設(shè)備和處理器,其中所述存儲設(shè)備存儲有計算機程序,所述程序被處理器執(zhí)行時能夠?qū)崿F(xiàn)上述任意一項所述方法的步驟。

上述去方塊濾波系統(tǒng),采用對存儲器復用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進行濾波,寄存器陣列既用于存儲當前宏塊的左側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),第二內(nèi)部存儲器既用于存儲當前宏塊的上側(cè)宏塊的部分像素數(shù)據(jù),又用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù),從而有效減少了硬件的占用面積。

附圖說明

圖1為傳統(tǒng)技術(shù)中去方塊濾波方法的示意圖;

圖2為一實施例的去方塊濾波方法的流程示意圖;

圖3為一實施例的亮度塊濾波順序的示意圖;

圖4為一實施例的兩個色度塊濾波順序的示意圖;

圖5為一實施例的數(shù)據(jù)存儲的示意圖;

圖6為一實施例的去方塊濾波算法的流程示意圖;

圖7為一實施例的去方塊濾波裝置的結(jié)構(gòu)示意圖;

圖8為一實施例的去方塊濾波系統(tǒng)的結(jié)構(gòu)示意圖。

具體實施方式

為更進一步闡述本發(fā)明所采取的技術(shù)手段及取得的效果,下面結(jié)合附圖及較佳實施例,對本發(fā)明的技術(shù)方案,進行清楚和完整的描述。

如圖2所示,在一個實施例中,提供了一種去方塊濾波方法,包括步驟:

s110、按照設(shè)定的邊界濾波順序確定當前宏塊中待濾波的邊界;

s120、若待濾波的邊界為垂直邊界,從寄存器陣列和第一內(nèi)部存儲器中獲取所述垂直邊界左右兩側(cè)的像素數(shù)據(jù),根據(jù)左右兩側(cè)的像素數(shù)據(jù)對所述垂直邊界進行濾波,將所述垂直邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列;其中所述寄存器陣列預先存儲有當前宏塊的左側(cè)宏塊的預設(shè)列數(shù)的像素數(shù)據(jù),所述第一內(nèi)部存儲器預先存儲有當前宏塊的原始像素數(shù)據(jù);

s130、若待濾波的邊界為水平邊界,從寄存器陣列和第二內(nèi)部存儲器中獲取所述水平邊界上下兩側(cè)的像素數(shù)據(jù),根據(jù)上下兩側(cè)的像素數(shù)據(jù)對所述水平邊界進行濾波,將所述水平邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器;其中所述第二內(nèi)部存儲器預先存儲有當前宏塊的上側(cè)宏塊的預設(shè)行數(shù)的像素數(shù)據(jù)。

上述去方塊濾波方法,采用對存儲器復用的技術(shù)手段,從而在進行濾波時根據(jù)從寄存器陣列、第一內(nèi)部存儲器或者第二內(nèi)部存儲器中讀取的數(shù)據(jù)進行濾波,有效減少了硬件的占用面積。

邊界濾波順序為各個邊界先后進行濾波的順序,即首先需要對哪一個邊界進行濾波,在該邊界濾波結(jié)束后接著再對哪一個邊界進行濾波。傳統(tǒng)技術(shù)中的濾波方法采用如圖1所示的邊界濾波順序,沒有充分利用各個4×4子塊間的數(shù)據(jù)依賴性,處理速度不夠理想,處理時間長,因此針對該缺陷,本發(fā)明提供一種新的邊界濾波順序,充分利用各個4×4子塊間的數(shù)據(jù)依賴性,按照該邊界濾波順序進行去方塊效應濾波,提高了濾波的速度,縮短了濾波處理時間。

如圖3所示,在一個實施例中,所述當前宏塊包括1個16×16的亮度塊(y),即亮度塊包括16個子塊,每個子塊的像素點為16;所述邊界濾波順序包括:按照第一邊界濾波順序依次對亮度塊的上半部分的邊界(0至15)和下半部分的邊界(16至31)進行濾波。所述第一邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界(如0和1)進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界(如2和3)進行濾波,再依次對上一行左側(cè)第1個水平邊界(如4)和下一行左側(cè)第1個水平邊界(如5)進行濾波,再依次對第3列上下側(cè)的兩個垂直邊界(如6和7)進行濾波,再依次對上一行左側(cè)第2個水平邊界(8)和下一行左側(cè)第2個水平邊界(如9)進行濾波,再依次對第4列上下側(cè)的兩個垂直邊界(如10和11)進行濾波,再依次對上一行左側(cè)第3個水平邊界(如12)和下一行左側(cè)第3個水平邊界(如13)進行濾波,再依次對上一行左側(cè)第4個水平邊界(如14)和下一行左側(cè)第4個水平邊界(如15)進行濾波。需要說明的是,上述雖然以上半部分的邊界對第一邊界濾波順序進行說明,但是第一邊界濾波順序同樣適用于下半部分的邊界,即亮度塊在進行邊界濾波時按照圖3所示的數(shù)字的大小順序進行濾波,即0、1、2、……、15、16、……、31。

如圖4所示,在一個實施例中,所述當前宏塊還包括兩個8×8的色度塊(u和v);所述邊界濾波順序還包括:對亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對兩個色度塊的邊界進行濾波,即先進行亮度塊的邊界濾波,在進行兩個色度塊的邊界濾波,兩個色度塊各自的邊界濾波順序一樣,兩個色度塊進行邊界濾波的順序可以根據(jù)實際需要進行確定,例如可以先對u塊進行濾波,在u塊濾波完成后,再對v塊進行濾波。所述第二邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界(如32和33)進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界(如34和35)進行濾波,再依次對第1行左側(cè)的水平邊界(如36)和第2行左側(cè)的水平邊界(如37)進行濾波,再依次對第1行右側(cè)的水平邊界(如38)和第2行右側(cè)的水平邊界(如39)進行濾波。

根據(jù)上述設(shè)定的邊界濾波順序即可以確定當前宏塊中需要濾波的邊界,例如,當前宏塊進行第一次濾波,則待濾波的邊界為數(shù)字為0的垂直邊界,若已對數(shù)字為0的垂直邊界濾波完成,則待濾波的邊界為數(shù)值為1的垂直邊界等。確定待濾波的邊界后,就需要獲取邊界兩側(cè)的像素數(shù)據(jù)。

對于待濾波邊界兩側(cè)相關(guān)的像素數(shù)據(jù)的存儲方式,如圖1所示的傳統(tǒng)技術(shù)中的去方塊濾波方法需要浪費大量的存儲空間來存儲濾波臨時數(shù)據(jù),硬件開銷大。現(xiàn)有技術(shù)的一些其他去方塊濾波方法,雖然能比較好地利用好數(shù)據(jù)間的依賴性,但往往也需要使用較大的sram(staticrandomaccessmemory,靜態(tài)隨機存取存儲器)來存儲數(shù)據(jù),也會造成面積和功耗的增加。因此,針對該缺陷,本發(fā)明除了提供上述所述的邊界濾波順序外,還提供了一種存儲器復用的手段,從而可以有效減少硬件的面積,降低硬件開銷,更好滿足高清數(shù)字視頻實時編解碼的需要。

本發(fā)明提供三種類型的存儲器存儲像素數(shù)據(jù),如圖5所示,包括:寄存器陣列(register)、第一內(nèi)部存儲器(rec_ram和c_rec_ram)和第二內(nèi)部存儲器(top_ram)。下面對三種類型的存儲器的功能進行詳細介紹。

如圖5所示,寄存器陣列(如l0、l1、l2、l3等)的數(shù)量有多個,每個寄存器陣列包括多個寄存器,每個寄存器可以設(shè)置為存儲一個像素點的數(shù)據(jù),那么每個寄存器陣列用于存儲一個子亮度塊或者一個子色度塊的所有像素點的數(shù)據(jù),子亮度塊為對亮度塊劃分后的每個子塊(如圖5中亮度塊的一個小方格),子色度塊為對色度塊劃分后的每個子塊(如圖5中色度塊的一個小方格)。為了減少硬件占用面積,寄存器陣列用于存儲當前宏塊左側(cè)預設(shè)列數(shù)的像素數(shù)據(jù)以及當前宏塊中的臨時濾波數(shù)據(jù)(未完成濾波的像素數(shù)據(jù)),可用于垂直濾波和水平濾波。另外,為了進一步降低硬件開銷,在一個實施例中,所述寄存器陣列中的兩個寄存器陣列分時復用于亮度塊的邊界濾波和色度塊的邊界濾波。即在進行亮度塊的邊界濾波時用到這兩個寄存器陣列,在進行色度塊的邊界濾波時也用到這兩個寄存器陣列。

以圖5所示的16×16的亮度塊為例,該亮度塊包括16個子塊,每個子塊的像素點的數(shù)量為16,那么針對亮度塊,每個寄存器陣列可以設(shè)置有4×4個寄存器,使用6個4×4像素存儲的寄存器陣列(l0、l1、l2、l3、ru和rd)來完成16×16宏塊左邊4列的數(shù)據(jù)及當前宏塊濾波中間結(jié)果的存儲,其中兩個4×4的寄存器陣列ru和rd為亮度塊、色度塊濾波分時復用。濾波中間結(jié)果即為未完成濾波的像素數(shù)據(jù)。

如圖5所示,第一內(nèi)部存儲器用于存儲當前宏塊的原始像素數(shù)據(jù),包括rec_ram和c_rec_ram,rec_ram用于存儲亮度塊的原始像素數(shù)據(jù),c_rec_ram用于存儲色度塊的原始像素數(shù)據(jù)。圖5僅示例出一個色度塊,另一個色度塊的形式相同。另外本發(fā)明并不對色度塊的大小進行限定,兩個色度塊的大小依據(jù)其圖像的采樣格式而定,濾波順序與圖3所示的濾波順序類似。

第二內(nèi)部存儲器(top_ram)不僅用于存儲當前宏塊上側(cè)預設(shè)行數(shù)的像素數(shù)據(jù),還用于存儲當前宏塊中的臨時濾波數(shù)據(jù)(未完成濾波的像素數(shù)據(jù))。以如圖5所示亮度塊為例,top_ram包括t0、t1、t2和t3,t0、t1、t2和t3不僅用于存儲當前宏塊上側(cè)4行的像素數(shù)據(jù),還用于存儲當前宏塊中未完成濾波的像素數(shù)據(jù)??蛇x的,16×16宏塊內(nèi)第2行水平邊界濾波后的下面4×4子塊的臨時數(shù)據(jù)和當前宏塊的頂部4行數(shù)據(jù)存儲在同一個單端口sram中,共享存儲空間。

如果待濾波的邊界為垂直邊界,則從寄存器陣列和第一內(nèi)部存儲器中獲取左右兩側(cè)的像素數(shù)據(jù),根據(jù)獲取的像素數(shù)據(jù)對垂直邊界進行濾波。如果待濾波的邊界為水平邊界,則從寄存器陣列和第二內(nèi)部存儲器中獲取上下兩側(cè)的像素數(shù)據(jù),根據(jù)獲取的像素數(shù)據(jù)對水平邊界進行濾波。濾波的方式有很多種,例如可以采用流水線的方式,如四級流水線方式等,對邊界進行濾波。

濾波后的像素數(shù)據(jù)需要回寫存儲器,下面結(jié)合垂直邊界濾波和水平邊界濾波兩種形式對像素數(shù)據(jù)寫入存儲器的方式進行簡單介紹。

若是垂直邊界濾波,則將濾波最終結(jié)果數(shù)據(jù)(已完成濾波的像素數(shù)據(jù))寫入外部存儲器,將臨時濾波數(shù)據(jù)(未完成濾波的像素數(shù)據(jù))寫入寄存器陣列。在一個實施例中,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列之后,還包括步驟:若按照設(shè)定的邊界濾波順序確定存儲到所述寄存器陣列的臨時濾波數(shù)據(jù)下一次用于水平邊界濾波,則將所述臨時濾波數(shù)據(jù)進行垂直方向轉(zhuǎn)置。垂直濾波和水平濾波使用同一數(shù)據(jù)通路進行濾波,使用寄存器陣列存儲垂直邊界濾波后臨時數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,可以提高濾波的效率,降低硬件存儲面積。

若是水平邊界濾波,則將所述水平邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器。

以圖3和圖5為例,在一個實施例中,若待濾波的邊界為亮度塊的水平邊界,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行(5、9、13和15)或者第4行(21、25、29和31)的水平邊界,將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器(top_ram);若待濾波的邊界為第2行左側(cè)第4個水平邊界(15)或者第3行左側(cè)第4個水平邊界(30),將水平邊界上側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(l0或者l1);若待濾波的邊界為第4行左側(cè)第4個水平邊界(31),將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(l2和l3)。

以圖4和圖5為例,在另一個實施例中,若待濾波的邊界為色度塊的水平邊界,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行的水平邊界(37、39、45或者47),將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器(top_ram);若待濾波的邊界為第2行右側(cè)的水平邊界(39或者47),將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(c_l0和c_l1或者圖5中未示意出的另兩個寄存器陣列)。

為了更好的理解本發(fā)明,下面結(jié)合一個具體實施例進行詳細介紹。

本發(fā)明所提供的具體實施例采用四級流水線的方式完成去方塊濾波,具體如下:

(1)第一級:從存儲器取數(shù)

取數(shù)過程包括從重構(gòu)數(shù)據(jù)sram(即rec_ram和c_rec_ram)獲取當前宏塊數(shù)據(jù),從寄存器陣列(register)中獲取當前宏塊左邊4列數(shù)據(jù)及當前宏塊內(nèi)部其他濾波臨時數(shù)據(jù);或者,從寄存器陣列(register)中獲取當前宏塊內(nèi)部其他濾波臨時數(shù)據(jù),從宏塊頂部數(shù)據(jù)sram(即top_ram)獲取之前濾波臨時數(shù)據(jù),宏塊頂部數(shù)據(jù)sram存儲有當前宏塊上邊4行數(shù)據(jù)及當前宏塊內(nèi)部其他濾波臨時數(shù)據(jù)。

(2)第二級:計算邊界強度bs、α、β、tc0參數(shù)和濾波判決條件

邊界強度bs(boundarystrength)表征需要濾波的程度,范圍為0~4。bs值為0,不進行濾波;bs值為1~3,則進行弱濾波;bs值為4,則進行強濾波。bs值計算流程所述如下:如果邊界兩邊4×4子塊至少有一個為幀內(nèi)預測且邊界為宏塊的邊界,則bs值為4;如果邊界兩邊4×4子塊至少有一個為幀內(nèi)預測但是邊界不是宏塊的邊界(宏塊內(nèi)部邊界),則bs值為3;此后,如果邊界兩邊4×4子塊至少有一個有非0的殘差變換系數(shù),則bs值為2;除以上外,如果邊界兩邊4×4子塊的幀間預測參考幀不同,或者幀間預測矢量mv(motionvector)值相差不小于4,則bs為1。其它情況bs值為0。

參數(shù)α、β分別表示邊界兩側(cè)像素梯度閾值和邊界同一側(cè)像素梯度閾值,可以根據(jù)邊界兩邊宏塊量化參數(shù)qp進行查表得到,參數(shù)tc0限定弱濾波器濾波后像素值范圍,由bs值和量化參數(shù)qp查表得到。

濾波判決條件有以下三個:

①|(zhì)p0-q0|<α

②|p1-p0|<β

③|q1-q0|<β

以上三個條件都滿足且邊界bs值不為0時才進行濾波操作。

(3)第三級:根據(jù)相關(guān)濾波參數(shù)完成濾波計算

根據(jù)上述級別獲取的數(shù)據(jù),可以采用圖6所示的濾波算法,流水線方式下四個時鐘周期完成一條邊界的濾波計算。

(4)第四級:濾波結(jié)果回寫存儲器

濾波后,對于濾波最終結(jié)果的數(shù)據(jù)直接寫到外部存儲器,對于其他濾波臨時數(shù)據(jù)則根據(jù)位置寫到寄存器陣列或者存儲宏塊頂部4行數(shù)據(jù)的單端口sram(top_ram)中。

本發(fā)明所提供的具體實施例采用流水線設(shè)計、所述的邊界濾波順序及對存儲器復用的手段,可以有效地減少硬件的面積以及提高濾波的速度。下面結(jié)合圖3至圖5對本發(fā)明具體實施例中的各邊界濾波過程進行詳細說明。

圖3和圖4中各邊界上的數(shù)字表示濾波的邊界順序。以亮度塊左上角8×8子塊為例,其包括邊界0、1、2、3、4、5、6、7、8、9。邊界0濾波時,左邊像素數(shù)據(jù)從寄存器陣列l(wèi)0得到,右邊像素數(shù)據(jù)從重構(gòu)數(shù)據(jù)存儲器rec_ram讀出,邊界0濾波操作完后,邊界左邊像素作為左邊宏塊濾波結(jié)果直接寫到外部存儲器,邊界0右邊的4×4像素信息作為濾波臨時結(jié)果存儲在寄存器陣列ru中。接下來濾波邊界1時和邊界0類似,左邊像素數(shù)據(jù)從寄存器陣列l(wèi)1得到,右邊像素數(shù)據(jù)從重構(gòu)數(shù)據(jù)存儲器rec_ram讀出,邊界1濾波結(jié)束后左邊濾波結(jié)果直接寫出外部存儲器,右邊4×4像素的濾波臨時數(shù)據(jù)存儲在寄存器陣列rd中。下面濾波邊界2和邊界3,濾波邊界2時,左邊像素來自寄存器陣列ru,右邊數(shù)據(jù)從rec_ram讀出,邊界2濾波完成后,左邊4×4像素更新到寄存器陣列ru中并完成垂直方向轉(zhuǎn)置,右邊4×4像素更新到寄存器陣列l(wèi)0中。同理,邊界3濾波后的左右兩邊的數(shù)據(jù)分別更新在寄存器陣列rd和寄存器陣列l(wèi)1中,寄存器陣列rd中像素也進行垂直轉(zhuǎn)置。接下來分別濾波邊界4和邊界5。濾波邊界4時,邊界上部4×4子塊t0數(shù)據(jù)從top_ram中讀取,下邊界待濾波的像素就是寄存器陣列ru垂直轉(zhuǎn)置后像素,邊界4濾波結(jié)束后,邊界上部濾波結(jié)果直接寫到外部存儲器,邊界下4×4像素更新到寄存器陣列ru中,作為濾波邊界5的上部數(shù)據(jù)。最后根據(jù)寄存器陣列ru中數(shù)據(jù)和寄存器陣列rd垂直轉(zhuǎn)置后數(shù)據(jù)完成邊界5的濾波,至此,宏塊第一個4×4子塊中的數(shù)據(jù)已經(jīng)濾波完畢,可以直接寫到外部存儲器,邊界5下的4×4像素存儲到top_ram中的t0中,等到濾波邊界20時再讀取出來進行濾波操作。濾波邊界6、7時,左邊數(shù)據(jù)分別為l0,l1,右邊數(shù)據(jù)來自rec_ram,濾波完成后邊界6、7左邊數(shù)據(jù)分別更新到ru、rd,右邊數(shù)據(jù)分別更新到l0、l1。邊界8、9濾波過程和邊界4、5類似。

接下來亮度塊的各邊界的濾波按照圖3所示順序進行以上類似的操作。需要說明的是,邊界15、30、31邊界濾波完成后,它們的上部4×4子塊數(shù)據(jù)需要分別更新到寄存器陣列l(wèi)0、l1、l2中,邊界31濾波完后,其下部4×4子塊數(shù)據(jù)更新到寄存器陣列l(wèi)3中,以給右邊宏塊濾波時使用。邊界21、25、29、31濾波完成后,它們的下部4×4子塊數(shù)據(jù)需要寫到存儲器top_ram,以給濾波下一行宏塊時使用。邊界20、24、28、30濾波時使用的上部數(shù)據(jù)直接從top_ram讀出。

圖4所示的兩個色度塊的邊界濾波過程和亮度塊類似,所用的寄存器陣列相應減少,ru和rd寄存器陣列為亮度塊和色度塊濾波分時復用。以u色度塊為例,該色度塊所用的寄存器陣列為c_l0、c_l1、ru和rd,所用的第一內(nèi)部存儲器為c_rec_ram,所用的第二內(nèi)部存儲器為c_t0和c_t1,詳細濾波過程在此不予贅述。

基于同一發(fā)明構(gòu)思,本發(fā)明還提供了一種去方塊濾波裝置,下面結(jié)合附圖對本發(fā)明裝置的具體實施方式做詳細介紹。

如圖7所示,一種去方塊濾波裝置,包括:

濾波邊界確定模塊110,用于按照設(shè)定的邊界濾波順序確定當前宏塊中待濾波的邊界;

垂直邊界濾波模塊120,用于在待濾波的邊界為垂直邊界時,從寄存器陣列和第一內(nèi)部存儲器中獲取所述垂直邊界左右兩側(cè)的像素數(shù)據(jù),根據(jù)左右兩側(cè)的像素數(shù)據(jù)對所述垂直邊界進行濾波,將所述垂直邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述垂直邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列;其中所述寄存器陣列預先存儲有當前宏塊的左側(cè)宏塊的預設(shè)列數(shù)的像素數(shù)據(jù),所述第一內(nèi)部存儲器預先存儲有當前宏塊的原始像素數(shù)據(jù);

水平邊界濾波模塊130,用于在待濾波的邊界為水平邊界時,從寄存器陣列和第二內(nèi)部存儲器中獲取所述水平邊界上下兩側(cè)的像素數(shù)據(jù),根據(jù)上下兩側(cè)的像素數(shù)據(jù)對所述水平邊界進行濾波,將所述水平邊界對應的濾波最終結(jié)果數(shù)據(jù)存儲到外部存儲器,將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器;其中所述第二內(nèi)部存儲器預先存儲有當前宏塊的上側(cè)宏塊的預設(shè)行數(shù)的像素數(shù)據(jù)。

上述去方塊濾波裝置,采用對存儲器復用的技術(shù)手段,從而在進行濾波時根據(jù)從寄存器陣列、第一內(nèi)部存儲器或者第二內(nèi)部存儲器中讀取的數(shù)據(jù)進行濾波,有效減少了硬件的占用面積。

如圖3所示,在一個實施例中,所述當前宏塊包括1個16×16的亮度塊(y),即亮度塊包括16個子塊,每個子塊的像素點為16;所述邊界濾波順序包括:按照第一邊界濾波順序依次對亮度塊的上半部分的邊界(0至15)和下半部分的邊界(16至31)進行濾波。所述第一邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界(如0和1)進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界(如2和3)進行濾波,再依次對上一行左側(cè)第1個水平邊界(如4)和下一行左側(cè)第1個水平邊界(如5)進行濾波,再依次對第3列上下側(cè)的兩個垂直邊界(如6和7)進行濾波,再依次對上一行左側(cè)第2個水平邊界(8)和下一行左側(cè)第2個水平邊界(如9)進行濾波,再依次對第4列上下側(cè)的兩個垂直邊界(如10和11)進行濾波,再依次對上一行左側(cè)第3個水平邊界(如12)和下一行左側(cè)第3個水平邊界(如13)進行濾波,再依次對上一行左側(cè)第4個水平邊界(如14)和下一行左側(cè)第4個水平邊界(如15)進行濾波。需要說明的是,上述雖然以上半部分的邊界對第一邊界濾波順序進行說明,但是第一邊界濾波順序同樣適用于下半部分的邊界,即亮度塊在進行邊界濾波時按照圖3所示的數(shù)字的大小順序進行濾波,即0、1、2、……、15、16、……、31。

如圖4所示,在一個實施例中,所述當前宏塊還包括兩個8×8的色度塊(u和v);所述邊界濾波順序還包括:對亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對兩個色度塊的邊界進行濾波,即先進行亮度塊的邊界濾波,在進行兩個色度塊的邊界濾波,兩個色度塊各自的邊界濾波順序一樣,兩個色度塊進行邊界濾波的順序可以根據(jù)實際需要進行確定,例如可以先對u塊進行濾波,在u塊濾波完成后,再對v塊進行濾波。所述第二邊界濾波順序為:先依次對第1列上下側(cè)的兩個垂直邊界(如32和33)進行濾波,再依次對第2列上下側(cè)的兩個垂直邊界(如34和35)進行濾波,再依次對第1行左側(cè)的水平邊界(如36)和第2行左側(cè)的水平邊界(如37)進行濾波,再依次對第1行右側(cè)的水平邊界(如38)和第2行右側(cè)的水平邊界(如39)進行濾波。

濾波邊界確定模塊110根據(jù)上述設(shè)定的邊界濾波順序即可以確定當前宏塊中需要濾波的邊界,例如,當前宏塊進行第一次濾波,則待濾波的邊界為數(shù)字為0的垂直邊界,若已對數(shù)字為0的垂直邊界濾波完成,則待濾波的邊界為數(shù)值為1的垂直邊界等。確定待濾波的邊界后,就需要獲取邊界兩側(cè)的像素數(shù)據(jù)。

如果待濾波的邊界為垂直邊界,則垂直邊界濾波模塊120從寄存器陣列和第一內(nèi)部存儲器中獲取兩側(cè)的像素數(shù)據(jù),根據(jù)獲取的像素數(shù)據(jù)對垂直邊界進行濾波。如果待濾波的邊界為水平邊界,則水平邊界濾波模塊130從寄存器陣列和第二內(nèi)部存儲器中獲取兩側(cè)的像素數(shù)據(jù),根據(jù)獲取的像素數(shù)據(jù)對水平邊界進行濾波。濾波的方式有很多種,例如可以采用流水線的方式,如四級流水線方式等,對邊界進行濾波。

垂直邊界濾波模塊120根據(jù)兩側(cè)的像素數(shù)據(jù)對所述垂直邊界進行濾波之后,還將已完成濾波的像素數(shù)據(jù)寫入外部存儲器,將未完成濾波的像素數(shù)據(jù)寫入寄存器陣列。在一個實施例中,若按照設(shè)定的邊界濾波順序確定寫入寄存器陣列的像素數(shù)據(jù)下一次用于水平邊界濾波,則垂直邊界濾波模塊120將寫入寄存器陣列的像素數(shù)據(jù)進行垂直方向轉(zhuǎn)置。垂直濾波和水平濾波使用同一數(shù)據(jù)通路進行濾波,使用寄存器陣列存儲垂直邊界濾波后臨時數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,可以提高濾波的效率,降低硬件存儲面積。

水平邊界濾波模塊130根據(jù)兩側(cè)的像素數(shù)據(jù)對所述水平邊界進行濾波之后,還將已完成濾波的像素數(shù)據(jù)寫入外部存儲器,將未完成濾波的像素數(shù)據(jù)寫入寄存器陣列或者第二內(nèi)部存儲器。

以圖3和圖5為例,在一個實施例中,若待濾波的邊界為亮度塊的水平邊界,水平邊界濾波模塊130將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行(5、9、13和15)或者第4行(21、25、29和31)的水平邊界,將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器(top_ram);若待濾波的邊界為第2行左側(cè)第4個水平邊界(15)或者第3行左側(cè)第4個水平邊界(30),將水平邊界上側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(l0或者l1);若待濾波的邊界為第4行左側(cè)第4個水平邊界(31),將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(l2和l3)。

以圖4和圖5為例,在另一個實施例中,若待濾波的邊界為色度塊的水平邊界,水平邊界濾波模塊130將所述水平邊界對應的臨時濾波數(shù)據(jù)存儲到所述寄存器陣列或者所述第二內(nèi)部存儲器包括:若待濾波的邊界為第2行的水平邊界(37、39、45或者47),將水平邊界下側(cè)的臨時濾波數(shù)據(jù)寫入第二內(nèi)部存儲器(top_ram);若待濾波的邊界為第2行右側(cè)的水平邊界(39或者47),將水平邊界上側(cè)和下側(cè)的臨時濾波數(shù)據(jù)寫入寄存器陣列(c_l0和c_l1或者圖5中未示意出的另兩個寄存器陣列)。

如圖8所示,本發(fā)明還提供一種去方塊濾波系統(tǒng),所述去方塊濾波系統(tǒng)包括:

寄存器陣列,用于存儲當前宏塊左側(cè)預設(shè)列數(shù)的像素數(shù)據(jù)以及當前宏塊中未完成濾波的像素數(shù)據(jù);

第一內(nèi)部存儲器,用于存儲當前宏塊的原始像素數(shù)據(jù);

第二內(nèi)部存儲器,用于存儲當前宏塊上側(cè)預設(shè)行數(shù)的像素數(shù)據(jù)以及當前宏塊中未完成濾波的像素數(shù)據(jù);

控制器,所述控制器包括存儲設(shè)備和處理器,其中所述存儲設(shè)備存儲有計算機程序,所述程序被處理器執(zhí)行時能夠?qū)崿F(xiàn)上述任意一項所述方法的步驟。

上述去方塊濾波系統(tǒng)其它技術(shù)特征與上述去方塊濾波方法相同,在此不予贅述。

本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。

以上所述實施例的各技術(shù)特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術(shù)特征所有可能的組合都進行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應當認為是本說明書記載的范圍。

以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權(quán)利要求為準。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1