本發(fā)明涉及圖像編解碼技術(shù)領(lǐng)域,特別是涉及去方塊濾波方法、去方塊濾波裝置和去方塊濾波系統(tǒng)。
背景技術(shù):
在視頻編碼標(biāo)準(zhǔn)中,例如h.264/avc(advancedvideocoding,高級(jí)視頻編碼)或者h(yuǎn)evc(highefficiencyvideocoding)中,編碼單元是以宏塊為單位的,這種按照宏塊的編碼方法會(huì)導(dǎo)致圖像重構(gòu)后具有方塊效應(yīng),會(huì)有損圖像的質(zhì)量和增大編碼碼率。通過去方塊效應(yīng)濾波可以去除這種影響,所以去方塊效應(yīng)濾波是視頻編碼中一個(gè)重要的部分。
傳統(tǒng)的去方塊濾波方法如圖1所示,濾波過程以宏塊為單位,每個(gè)宏塊包括1個(gè)16×16的亮度塊和2個(gè)8×8的色度塊,按照掃描順序從圖像左上角宏塊一直到右下角宏塊進(jìn)行濾波。圖1中每個(gè)方格代表一個(gè)4×4像素塊,需要濾波的邊界如圖中加粗線條所示,分為垂直邊界和水平邊界,邊界的濾波順序按照?qǐng)D中數(shù)字順序,即先從左到右進(jìn)行垂直邊界濾波,再從上往下進(jìn)行水平邊界的濾波。進(jìn)行垂直邊界濾波時(shí),需要邊界左邊像素(p3,p2,p1,p0)和邊界右邊像素(q0,q1,q2,q3)來完成濾波;進(jìn)行水平邊界濾波時(shí),需要邊界上邊4像素(p3,p2,p1,p0)和邊界下邊像素(q0,q1,q2,q3)來完成濾波;一條邊界濾波結(jié)束后最多可能改變邊界左右或上下共6個(gè)像素的值,也可能保留原始值,具體由濾波邊界的類型和邊界兩邊像素值決定。該傳統(tǒng)的去方塊濾波方法雖然可以去除方塊效應(yīng),但是需要浪費(fèi)大量的存儲(chǔ)空間來存儲(chǔ)濾波臨時(shí)數(shù)據(jù),因此存在硬件面積占用大的缺陷。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)上述硬件面積占用大的問題,提供一種有效減少硬件占用面積的去方塊濾波方法、裝置和系統(tǒng)。
一種去方塊濾波方法,包括步驟:
按照設(shè)定的邊界濾波順序確定當(dāng)前宏塊中待濾波的邊界;
若待濾波的邊界為垂直邊界,從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取所述垂直邊界左右兩側(cè)的像素?cái)?shù)據(jù),根據(jù)左右兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述垂直邊界進(jìn)行濾波,將所述垂直邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列;其中所述寄存器陣列預(yù)先存儲(chǔ)有當(dāng)前宏塊的左側(cè)宏塊的預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù),所述第一內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
若待濾波的邊界為水平邊界,從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取所述水平邊界上下兩側(cè)的像素?cái)?shù)據(jù),根據(jù)上下兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述水平邊界進(jìn)行濾波,將所述水平邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器;其中所述第二內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的上側(cè)宏塊的預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)。
上述去方塊濾波方法,采用對(duì)存儲(chǔ)器復(fù)用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進(jìn)行濾波,寄存器陣列既用于存儲(chǔ)當(dāng)前宏塊的左側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),第二內(nèi)部存儲(chǔ)器既用于存儲(chǔ)當(dāng)前宏塊的上側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),從而有效減少了硬件的占用面積。
在一個(gè)實(shí)施例中,所述當(dāng)前宏塊包括1個(gè)16×16的亮度塊;所述邊界濾波順序包括:按照第一邊界濾波順序依次對(duì)亮度塊的上半部分的邊界和下半部分的邊界進(jìn)行濾波;所述第一邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第1個(gè)水平邊界和下一行左側(cè)第1個(gè)水平邊界進(jìn)行濾波,再依次對(duì)第3列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第2個(gè)水平邊界和下一行左側(cè)第2個(gè)水平邊界進(jìn)行濾波,再依次對(duì)第4列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第3個(gè)水平邊界和下一行左側(cè)第3個(gè)水平邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第4個(gè)水平邊界和下一行左側(cè)第4個(gè)水平邊界進(jìn)行濾波。亮度塊采用該濾波順序進(jìn)行濾波,充分利用了各個(gè)4×4子塊間的數(shù)據(jù)依賴性,可以提高濾波的速度。
在一個(gè)實(shí)施例中,所述當(dāng)前宏塊還包括兩個(gè)8×8的色度塊;所述邊界濾波順序還包括:對(duì)亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對(duì)兩個(gè)色度塊的邊界進(jìn)行濾波;所述第二邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第1行左側(cè)的水平邊界和第2行左側(cè)的水平邊界進(jìn)行濾波,再依次對(duì)第1行右側(cè)的水平邊界和第2行右側(cè)的水平邊界進(jìn)行濾波。色度塊采用該濾波順序進(jìn)行濾波,充分利用了各個(gè)4×4子塊間的數(shù)據(jù)依賴性,可以提高濾波的速度。
在一個(gè)實(shí)施例中,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列之后,還包括步驟:若按照設(shè)定的邊界濾波順序確定存儲(chǔ)到所述寄存器陣列的臨時(shí)濾波數(shù)據(jù)下一次用于水平邊界濾波,則將所述臨時(shí)濾波數(shù)據(jù)進(jìn)行垂直方向轉(zhuǎn)置。使用寄存器陣列存儲(chǔ)垂直邊界濾波后臨時(shí)數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,能夠有效減少硬件占用面積以及提高濾波的速度。
在一個(gè)實(shí)施例中,若待濾波的邊界為亮度塊的水平邊界,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行或者第4行的水平邊界,將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器;若待濾波的邊界為第2行左側(cè)第4個(gè)水平邊界或者第3行左側(cè)第4個(gè)水平邊界,將水平邊界上側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列;若待濾波的邊界為第4行左側(cè)第4個(gè)水平邊界,將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列。
在一個(gè)實(shí)施例中,若待濾波的邊界為色度塊的水平邊界,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行的水平邊界,將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器;若待濾波的邊界為第2行右側(cè)的水平邊界,將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列。
在一個(gè)實(shí)施例中,所述寄存器陣列中的兩個(gè)寄存器陣列分時(shí)復(fù)用于亮度塊的邊界濾波和色度塊的邊界濾波。通過存儲(chǔ)器復(fù)用能夠有效減少硬件占用面積。
一種去方塊濾波裝置,包括:
濾波邊界確定模塊,用于按照設(shè)定的邊界濾波順序確定當(dāng)前宏塊中待濾波的邊界;
垂直邊界濾波模塊,用于在待濾波的邊界為垂直邊界時(shí),從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取所述垂直邊界左右兩側(cè)的像素?cái)?shù)據(jù),根據(jù)左右兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述垂直邊界進(jìn)行濾波,將所述垂直邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列;其中所述寄存器陣列預(yù)先存儲(chǔ)有當(dāng)前宏塊的左側(cè)宏塊的預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù),所述第一內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
水平邊界濾波模塊,用于在待濾波的邊界為水平邊界時(shí),從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取所述水平邊界上下兩側(cè)的像素?cái)?shù)據(jù),根據(jù)上下兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述水平邊界進(jìn)行濾波,將所述水平邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器;其中所述第二內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的上側(cè)宏塊的預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)。
上述去方塊濾波裝置,采用對(duì)存儲(chǔ)器復(fù)用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進(jìn)行濾波,寄存器陣列既用于存儲(chǔ)當(dāng)前宏塊的左側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),第二內(nèi)部存儲(chǔ)器既用于存儲(chǔ)當(dāng)前宏塊的上側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),從而有效減少了硬件的占用面積。
在一個(gè)實(shí)施例中,所述當(dāng)前宏塊包括1個(gè)16×16的亮度塊;所述邊界濾波順序包括:按照第一邊界濾波順序依次對(duì)亮度塊的上半部分的邊界和下半部分的邊界進(jìn)行濾波;所述第一邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第1個(gè)水平邊界和下一行左側(cè)第1個(gè)水平邊界進(jìn)行濾波,再依次對(duì)第3列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第2個(gè)水平邊界和下一行左側(cè)第2個(gè)水平邊界進(jìn)行濾波,再依次對(duì)第4列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第3個(gè)水平邊界和下一行左側(cè)第3個(gè)水平邊界進(jìn)行濾波,再依次對(duì)上一行左側(cè)第4個(gè)水平邊界和下一行左側(cè)第4個(gè)水平邊界進(jìn)行濾波。
在一個(gè)實(shí)施例中,所述當(dāng)前宏塊還包括兩個(gè)8×8的色度塊;所述邊界濾波順序還包括:對(duì)亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對(duì)兩個(gè)色度塊的邊界進(jìn)行濾波;所述第二邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界進(jìn)行濾波,再依次對(duì)第1行左側(cè)的水平邊界和第2行左側(cè)的水平邊界進(jìn)行濾波,再依次對(duì)第1行右側(cè)的水平邊界和第2行右側(cè)的水平邊界進(jìn)行濾波。
一種去方塊濾波系統(tǒng),包括:
寄存器陣列,用于存儲(chǔ)當(dāng)前宏塊左側(cè)預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù)以及當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù);
第一內(nèi)部存儲(chǔ)器,用于存儲(chǔ)當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
第二內(nèi)部存儲(chǔ)器,用于存儲(chǔ)當(dāng)前宏塊上側(cè)預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)以及當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù);
控制器,所述控制器包括存儲(chǔ)設(shè)備和處理器,其中所述存儲(chǔ)設(shè)備存儲(chǔ)有計(jì)算機(jī)程序,所述程序被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)上述任意一項(xiàng)所述方法的步驟。
上述去方塊濾波系統(tǒng),采用對(duì)存儲(chǔ)器復(fù)用的技術(shù)手段,即垂直邊界和水平邊界使用同一寄存器陣列進(jìn)行濾波,寄存器陣列既用于存儲(chǔ)當(dāng)前宏塊的左側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),第二內(nèi)部存儲(chǔ)器既用于存儲(chǔ)當(dāng)前宏塊的上側(cè)宏塊的部分像素?cái)?shù)據(jù),又用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù),從而有效減少了硬件的占用面積。
附圖說明
圖1為傳統(tǒng)技術(shù)中去方塊濾波方法的示意圖;
圖2為一實(shí)施例的去方塊濾波方法的流程示意圖;
圖3為一實(shí)施例的亮度塊濾波順序的示意圖;
圖4為一實(shí)施例的兩個(gè)色度塊濾波順序的示意圖;
圖5為一實(shí)施例的數(shù)據(jù)存儲(chǔ)的示意圖;
圖6為一實(shí)施例的去方塊濾波算法的流程示意圖;
圖7為一實(shí)施例的去方塊濾波裝置的結(jié)構(gòu)示意圖;
圖8為一實(shí)施例的去方塊濾波系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明所采取的技術(shù)手段及取得的效果,下面結(jié)合附圖及較佳實(shí)施例,對(duì)本發(fā)明的技術(shù)方案,進(jìn)行清楚和完整的描述。
如圖2所示,在一個(gè)實(shí)施例中,提供了一種去方塊濾波方法,包括步驟:
s110、按照設(shè)定的邊界濾波順序確定當(dāng)前宏塊中待濾波的邊界;
s120、若待濾波的邊界為垂直邊界,從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取所述垂直邊界左右兩側(cè)的像素?cái)?shù)據(jù),根據(jù)左右兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述垂直邊界進(jìn)行濾波,將所述垂直邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列;其中所述寄存器陣列預(yù)先存儲(chǔ)有當(dāng)前宏塊的左側(cè)宏塊的預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù),所述第一內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
s130、若待濾波的邊界為水平邊界,從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取所述水平邊界上下兩側(cè)的像素?cái)?shù)據(jù),根據(jù)上下兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述水平邊界進(jìn)行濾波,將所述水平邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器;其中所述第二內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的上側(cè)宏塊的預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)。
上述去方塊濾波方法,采用對(duì)存儲(chǔ)器復(fù)用的技術(shù)手段,從而在進(jìn)行濾波時(shí)根據(jù)從寄存器陣列、第一內(nèi)部存儲(chǔ)器或者第二內(nèi)部存儲(chǔ)器中讀取的數(shù)據(jù)進(jìn)行濾波,有效減少了硬件的占用面積。
邊界濾波順序?yàn)楦鱾€(gè)邊界先后進(jìn)行濾波的順序,即首先需要對(duì)哪一個(gè)邊界進(jìn)行濾波,在該邊界濾波結(jié)束后接著再對(duì)哪一個(gè)邊界進(jìn)行濾波。傳統(tǒng)技術(shù)中的濾波方法采用如圖1所示的邊界濾波順序,沒有充分利用各個(gè)4×4子塊間的數(shù)據(jù)依賴性,處理速度不夠理想,處理時(shí)間長(zhǎng),因此針對(duì)該缺陷,本發(fā)明提供一種新的邊界濾波順序,充分利用各個(gè)4×4子塊間的數(shù)據(jù)依賴性,按照該邊界濾波順序進(jìn)行去方塊效應(yīng)濾波,提高了濾波的速度,縮短了濾波處理時(shí)間。
如圖3所示,在一個(gè)實(shí)施例中,所述當(dāng)前宏塊包括1個(gè)16×16的亮度塊(y),即亮度塊包括16個(gè)子塊,每個(gè)子塊的像素點(diǎn)為16;所述邊界濾波順序包括:按照第一邊界濾波順序依次對(duì)亮度塊的上半部分的邊界(0至15)和下半部分的邊界(16至31)進(jìn)行濾波。所述第一邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界(如0和1)進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界(如2和3)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第1個(gè)水平邊界(如4)和下一行左側(cè)第1個(gè)水平邊界(如5)進(jìn)行濾波,再依次對(duì)第3列上下側(cè)的兩個(gè)垂直邊界(如6和7)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第2個(gè)水平邊界(8)和下一行左側(cè)第2個(gè)水平邊界(如9)進(jìn)行濾波,再依次對(duì)第4列上下側(cè)的兩個(gè)垂直邊界(如10和11)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第3個(gè)水平邊界(如12)和下一行左側(cè)第3個(gè)水平邊界(如13)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第4個(gè)水平邊界(如14)和下一行左側(cè)第4個(gè)水平邊界(如15)進(jìn)行濾波。需要說明的是,上述雖然以上半部分的邊界對(duì)第一邊界濾波順序進(jìn)行說明,但是第一邊界濾波順序同樣適用于下半部分的邊界,即亮度塊在進(jìn)行邊界濾波時(shí)按照?qǐng)D3所示的數(shù)字的大小順序進(jìn)行濾波,即0、1、2、……、15、16、……、31。
如圖4所示,在一個(gè)實(shí)施例中,所述當(dāng)前宏塊還包括兩個(gè)8×8的色度塊(u和v);所述邊界濾波順序還包括:對(duì)亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對(duì)兩個(gè)色度塊的邊界進(jìn)行濾波,即先進(jìn)行亮度塊的邊界濾波,在進(jìn)行兩個(gè)色度塊的邊界濾波,兩個(gè)色度塊各自的邊界濾波順序一樣,兩個(gè)色度塊進(jìn)行邊界濾波的順序可以根據(jù)實(shí)際需要進(jìn)行確定,例如可以先對(duì)u塊進(jìn)行濾波,在u塊濾波完成后,再對(duì)v塊進(jìn)行濾波。所述第二邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界(如32和33)進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界(如34和35)進(jìn)行濾波,再依次對(duì)第1行左側(cè)的水平邊界(如36)和第2行左側(cè)的水平邊界(如37)進(jìn)行濾波,再依次對(duì)第1行右側(cè)的水平邊界(如38)和第2行右側(cè)的水平邊界(如39)進(jìn)行濾波。
根據(jù)上述設(shè)定的邊界濾波順序即可以確定當(dāng)前宏塊中需要濾波的邊界,例如,當(dāng)前宏塊進(jìn)行第一次濾波,則待濾波的邊界為數(shù)字為0的垂直邊界,若已對(duì)數(shù)字為0的垂直邊界濾波完成,則待濾波的邊界為數(shù)值為1的垂直邊界等。確定待濾波的邊界后,就需要獲取邊界兩側(cè)的像素?cái)?shù)據(jù)。
對(duì)于待濾波邊界兩側(cè)相關(guān)的像素?cái)?shù)據(jù)的存儲(chǔ)方式,如圖1所示的傳統(tǒng)技術(shù)中的去方塊濾波方法需要浪費(fèi)大量的存儲(chǔ)空間來存儲(chǔ)濾波臨時(shí)數(shù)據(jù),硬件開銷大?,F(xiàn)有技術(shù)的一些其他去方塊濾波方法,雖然能比較好地利用好數(shù)據(jù)間的依賴性,但往往也需要使用較大的sram(staticrandomaccessmemory,靜態(tài)隨機(jī)存取存儲(chǔ)器)來存儲(chǔ)數(shù)據(jù),也會(huì)造成面積和功耗的增加。因此,針對(duì)該缺陷,本發(fā)明除了提供上述所述的邊界濾波順序外,還提供了一種存儲(chǔ)器復(fù)用的手段,從而可以有效減少硬件的面積,降低硬件開銷,更好滿足高清數(shù)字視頻實(shí)時(shí)編解碼的需要。
本發(fā)明提供三種類型的存儲(chǔ)器存儲(chǔ)像素?cái)?shù)據(jù),如圖5所示,包括:寄存器陣列(register)、第一內(nèi)部存儲(chǔ)器(rec_ram和c_rec_ram)和第二內(nèi)部存儲(chǔ)器(top_ram)。下面對(duì)三種類型的存儲(chǔ)器的功能進(jìn)行詳細(xì)介紹。
如圖5所示,寄存器陣列(如l0、l1、l2、l3等)的數(shù)量有多個(gè),每個(gè)寄存器陣列包括多個(gè)寄存器,每個(gè)寄存器可以設(shè)置為存儲(chǔ)一個(gè)像素點(diǎn)的數(shù)據(jù),那么每個(gè)寄存器陣列用于存儲(chǔ)一個(gè)子亮度塊或者一個(gè)子色度塊的所有像素點(diǎn)的數(shù)據(jù),子亮度塊為對(duì)亮度塊劃分后的每個(gè)子塊(如圖5中亮度塊的一個(gè)小方格),子色度塊為對(duì)色度塊劃分后的每個(gè)子塊(如圖5中色度塊的一個(gè)小方格)。為了減少硬件占用面積,寄存器陣列用于存儲(chǔ)當(dāng)前宏塊左側(cè)預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù)以及當(dāng)前宏塊中的臨時(shí)濾波數(shù)據(jù)(未完成濾波的像素?cái)?shù)據(jù)),可用于垂直濾波和水平濾波。另外,為了進(jìn)一步降低硬件開銷,在一個(gè)實(shí)施例中,所述寄存器陣列中的兩個(gè)寄存器陣列分時(shí)復(fù)用于亮度塊的邊界濾波和色度塊的邊界濾波。即在進(jìn)行亮度塊的邊界濾波時(shí)用到這兩個(gè)寄存器陣列,在進(jìn)行色度塊的邊界濾波時(shí)也用到這兩個(gè)寄存器陣列。
以圖5所示的16×16的亮度塊為例,該亮度塊包括16個(gè)子塊,每個(gè)子塊的像素點(diǎn)的數(shù)量為16,那么針對(duì)亮度塊,每個(gè)寄存器陣列可以設(shè)置有4×4個(gè)寄存器,使用6個(gè)4×4像素存儲(chǔ)的寄存器陣列(l0、l1、l2、l3、ru和rd)來完成16×16宏塊左邊4列的數(shù)據(jù)及當(dāng)前宏塊濾波中間結(jié)果的存儲(chǔ),其中兩個(gè)4×4的寄存器陣列ru和rd為亮度塊、色度塊濾波分時(shí)復(fù)用。濾波中間結(jié)果即為未完成濾波的像素?cái)?shù)據(jù)。
如圖5所示,第一內(nèi)部存儲(chǔ)器用于存儲(chǔ)當(dāng)前宏塊的原始像素?cái)?shù)據(jù),包括rec_ram和c_rec_ram,rec_ram用于存儲(chǔ)亮度塊的原始像素?cái)?shù)據(jù),c_rec_ram用于存儲(chǔ)色度塊的原始像素?cái)?shù)據(jù)。圖5僅示例出一個(gè)色度塊,另一個(gè)色度塊的形式相同。另外本發(fā)明并不對(duì)色度塊的大小進(jìn)行限定,兩個(gè)色度塊的大小依據(jù)其圖像的采樣格式而定,濾波順序與圖3所示的濾波順序類似。
第二內(nèi)部存儲(chǔ)器(top_ram)不僅用于存儲(chǔ)當(dāng)前宏塊上側(cè)預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù),還用于存儲(chǔ)當(dāng)前宏塊中的臨時(shí)濾波數(shù)據(jù)(未完成濾波的像素?cái)?shù)據(jù))。以如圖5所示亮度塊為例,top_ram包括t0、t1、t2和t3,t0、t1、t2和t3不僅用于存儲(chǔ)當(dāng)前宏塊上側(cè)4行的像素?cái)?shù)據(jù),還用于存儲(chǔ)當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù)??蛇x的,16×16宏塊內(nèi)第2行水平邊界濾波后的下面4×4子塊的臨時(shí)數(shù)據(jù)和當(dāng)前宏塊的頂部4行數(shù)據(jù)存儲(chǔ)在同一個(gè)單端口sram中,共享存儲(chǔ)空間。
如果待濾波的邊界為垂直邊界,則從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取左右兩側(cè)的像素?cái)?shù)據(jù),根據(jù)獲取的像素?cái)?shù)據(jù)對(duì)垂直邊界進(jìn)行濾波。如果待濾波的邊界為水平邊界,則從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取上下兩側(cè)的像素?cái)?shù)據(jù),根據(jù)獲取的像素?cái)?shù)據(jù)對(duì)水平邊界進(jìn)行濾波。濾波的方式有很多種,例如可以采用流水線的方式,如四級(jí)流水線方式等,對(duì)邊界進(jìn)行濾波。
濾波后的像素?cái)?shù)據(jù)需要回寫存儲(chǔ)器,下面結(jié)合垂直邊界濾波和水平邊界濾波兩種形式對(duì)像素?cái)?shù)據(jù)寫入存儲(chǔ)器的方式進(jìn)行簡(jiǎn)單介紹。
若是垂直邊界濾波,則將濾波最終結(jié)果數(shù)據(jù)(已完成濾波的像素?cái)?shù)據(jù))寫入外部存儲(chǔ)器,將臨時(shí)濾波數(shù)據(jù)(未完成濾波的像素?cái)?shù)據(jù))寫入寄存器陣列。在一個(gè)實(shí)施例中,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列之后,還包括步驟:若按照設(shè)定的邊界濾波順序確定存儲(chǔ)到所述寄存器陣列的臨時(shí)濾波數(shù)據(jù)下一次用于水平邊界濾波,則將所述臨時(shí)濾波數(shù)據(jù)進(jìn)行垂直方向轉(zhuǎn)置。垂直濾波和水平濾波使用同一數(shù)據(jù)通路進(jìn)行濾波,使用寄存器陣列存儲(chǔ)垂直邊界濾波后臨時(shí)數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,可以提高濾波的效率,降低硬件存儲(chǔ)面積。
若是水平邊界濾波,則將所述水平邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器。
以圖3和圖5為例,在一個(gè)實(shí)施例中,若待濾波的邊界為亮度塊的水平邊界,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行(5、9、13和15)或者第4行(21、25、29和31)的水平邊界,將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器(top_ram);若待濾波的邊界為第2行左側(cè)第4個(gè)水平邊界(15)或者第3行左側(cè)第4個(gè)水平邊界(30),將水平邊界上側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(l0或者l1);若待濾波的邊界為第4行左側(cè)第4個(gè)水平邊界(31),將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(l2和l3)。
以圖4和圖5為例,在另一個(gè)實(shí)施例中,若待濾波的邊界為色度塊的水平邊界,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行的水平邊界(37、39、45或者47),將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器(top_ram);若待濾波的邊界為第2行右側(cè)的水平邊界(39或者47),將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(c_l0和c_l1或者圖5中未示意出的另兩個(gè)寄存器陣列)。
為了更好的理解本發(fā)明,下面結(jié)合一個(gè)具體實(shí)施例進(jìn)行詳細(xì)介紹。
本發(fā)明所提供的具體實(shí)施例采用四級(jí)流水線的方式完成去方塊濾波,具體如下:
(1)第一級(jí):從存儲(chǔ)器取數(shù)
取數(shù)過程包括從重構(gòu)數(shù)據(jù)sram(即rec_ram和c_rec_ram)獲取當(dāng)前宏塊數(shù)據(jù),從寄存器陣列(register)中獲取當(dāng)前宏塊左邊4列數(shù)據(jù)及當(dāng)前宏塊內(nèi)部其他濾波臨時(shí)數(shù)據(jù);或者,從寄存器陣列(register)中獲取當(dāng)前宏塊內(nèi)部其他濾波臨時(shí)數(shù)據(jù),從宏塊頂部數(shù)據(jù)sram(即top_ram)獲取之前濾波臨時(shí)數(shù)據(jù),宏塊頂部數(shù)據(jù)sram存儲(chǔ)有當(dāng)前宏塊上邊4行數(shù)據(jù)及當(dāng)前宏塊內(nèi)部其他濾波臨時(shí)數(shù)據(jù)。
(2)第二級(jí):計(jì)算邊界強(qiáng)度bs、α、β、tc0參數(shù)和濾波判決條件
邊界強(qiáng)度bs(boundarystrength)表征需要濾波的程度,范圍為0~4。bs值為0,不進(jìn)行濾波;bs值為1~3,則進(jìn)行弱濾波;bs值為4,則進(jìn)行強(qiáng)濾波。bs值計(jì)算流程所述如下:如果邊界兩邊4×4子塊至少有一個(gè)為幀內(nèi)預(yù)測(cè)且邊界為宏塊的邊界,則bs值為4;如果邊界兩邊4×4子塊至少有一個(gè)為幀內(nèi)預(yù)測(cè)但是邊界不是宏塊的邊界(宏塊內(nèi)部邊界),則bs值為3;此后,如果邊界兩邊4×4子塊至少有一個(gè)有非0的殘差變換系數(shù),則bs值為2;除以上外,如果邊界兩邊4×4子塊的幀間預(yù)測(cè)參考幀不同,或者幀間預(yù)測(cè)矢量mv(motionvector)值相差不小于4,則bs為1。其它情況bs值為0。
參數(shù)α、β分別表示邊界兩側(cè)像素梯度閾值和邊界同一側(cè)像素梯度閾值,可以根據(jù)邊界兩邊宏塊量化參數(shù)qp進(jìn)行查表得到,參數(shù)tc0限定弱濾波器濾波后像素值范圍,由bs值和量化參數(shù)qp查表得到。
濾波判決條件有以下三個(gè):
①|(zhì)p0-q0|<α
②|p1-p0|<β
③|q1-q0|<β
以上三個(gè)條件都滿足且邊界bs值不為0時(shí)才進(jìn)行濾波操作。
(3)第三級(jí):根據(jù)相關(guān)濾波參數(shù)完成濾波計(jì)算
根據(jù)上述級(jí)別獲取的數(shù)據(jù),可以采用圖6所示的濾波算法,流水線方式下四個(gè)時(shí)鐘周期完成一條邊界的濾波計(jì)算。
(4)第四級(jí):濾波結(jié)果回寫存儲(chǔ)器
濾波后,對(duì)于濾波最終結(jié)果的數(shù)據(jù)直接寫到外部存儲(chǔ)器,對(duì)于其他濾波臨時(shí)數(shù)據(jù)則根據(jù)位置寫到寄存器陣列或者存儲(chǔ)宏塊頂部4行數(shù)據(jù)的單端口sram(top_ram)中。
本發(fā)明所提供的具體實(shí)施例采用流水線設(shè)計(jì)、所述的邊界濾波順序及對(duì)存儲(chǔ)器復(fù)用的手段,可以有效地減少硬件的面積以及提高濾波的速度。下面結(jié)合圖3至圖5對(duì)本發(fā)明具體實(shí)施例中的各邊界濾波過程進(jìn)行詳細(xì)說明。
圖3和圖4中各邊界上的數(shù)字表示濾波的邊界順序。以亮度塊左上角8×8子塊為例,其包括邊界0、1、2、3、4、5、6、7、8、9。邊界0濾波時(shí),左邊像素?cái)?shù)據(jù)從寄存器陣列l(wèi)0得到,右邊像素?cái)?shù)據(jù)從重構(gòu)數(shù)據(jù)存儲(chǔ)器rec_ram讀出,邊界0濾波操作完后,邊界左邊像素作為左邊宏塊濾波結(jié)果直接寫到外部存儲(chǔ)器,邊界0右邊的4×4像素信息作為濾波臨時(shí)結(jié)果存儲(chǔ)在寄存器陣列ru中。接下來濾波邊界1時(shí)和邊界0類似,左邊像素?cái)?shù)據(jù)從寄存器陣列l(wèi)1得到,右邊像素?cái)?shù)據(jù)從重構(gòu)數(shù)據(jù)存儲(chǔ)器rec_ram讀出,邊界1濾波結(jié)束后左邊濾波結(jié)果直接寫出外部存儲(chǔ)器,右邊4×4像素的濾波臨時(shí)數(shù)據(jù)存儲(chǔ)在寄存器陣列rd中。下面濾波邊界2和邊界3,濾波邊界2時(shí),左邊像素來自寄存器陣列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中像素也進(jìn)行垂直轉(zhuǎn)置。接下來分別濾波邊界4和邊界5。濾波邊界4時(shí),邊界上部4×4子塊t0數(shù)據(jù)從top_ram中讀取,下邊界待濾波的像素就是寄存器陣列ru垂直轉(zhuǎn)置后像素,邊界4濾波結(jié)束后,邊界上部濾波結(jié)果直接寫到外部存儲(chǔ)器,邊界下4×4像素更新到寄存器陣列ru中,作為濾波邊界5的上部數(shù)據(jù)。最后根據(jù)寄存器陣列ru中數(shù)據(jù)和寄存器陣列rd垂直轉(zhuǎn)置后數(shù)據(jù)完成邊界5的濾波,至此,宏塊第一個(gè)4×4子塊中的數(shù)據(jù)已經(jīng)濾波完畢,可以直接寫到外部存儲(chǔ)器,邊界5下的4×4像素存儲(chǔ)到top_ram中的t0中,等到濾波邊界20時(shí)再讀取出來進(jìn)行濾波操作。濾波邊界6、7時(shí),左邊數(shù)據(jù)分別為l0,l1,右邊數(shù)據(jù)來自rec_ram,濾波完成后邊界6、7左邊數(shù)據(jù)分別更新到ru、rd,右邊數(shù)據(jù)分別更新到l0、l1。邊界8、9濾波過程和邊界4、5類似。
接下來亮度塊的各邊界的濾波按照?qǐng)D3所示順序進(jìn)行以上類似的操作。需要說明的是,邊界15、30、31邊界濾波完成后,它們的上部4×4子塊數(shù)據(jù)需要分別更新到寄存器陣列l(wèi)0、l1、l2中,邊界31濾波完后,其下部4×4子塊數(shù)據(jù)更新到寄存器陣列l(wèi)3中,以給右邊宏塊濾波時(shí)使用。邊界21、25、29、31濾波完成后,它們的下部4×4子塊數(shù)據(jù)需要寫到存儲(chǔ)器top_ram,以給濾波下一行宏塊時(shí)使用。邊界20、24、28、30濾波時(shí)使用的上部數(shù)據(jù)直接從top_ram讀出。
圖4所示的兩個(gè)色度塊的邊界濾波過程和亮度塊類似,所用的寄存器陣列相應(yīng)減少,ru和rd寄存器陣列為亮度塊和色度塊濾波分時(shí)復(fù)用。以u(píng)色度塊為例,該色度塊所用的寄存器陣列為c_l0、c_l1、ru和rd,所用的第一內(nèi)部存儲(chǔ)器為c_rec_ram,所用的第二內(nèi)部存儲(chǔ)器為c_t0和c_t1,詳細(xì)濾波過程在此不予贅述。
基于同一發(fā)明構(gòu)思,本發(fā)明還提供了一種去方塊濾波裝置,下面結(jié)合附圖對(duì)本發(fā)明裝置的具體實(shí)施方式做詳細(xì)介紹。
如圖7所示,一種去方塊濾波裝置,包括:
濾波邊界確定模塊110,用于按照設(shè)定的邊界濾波順序確定當(dāng)前宏塊中待濾波的邊界;
垂直邊界濾波模塊120,用于在待濾波的邊界為垂直邊界時(shí),從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取所述垂直邊界左右兩側(cè)的像素?cái)?shù)據(jù),根據(jù)左右兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述垂直邊界進(jìn)行濾波,將所述垂直邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述垂直邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列;其中所述寄存器陣列預(yù)先存儲(chǔ)有當(dāng)前宏塊的左側(cè)宏塊的預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù),所述第一內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
水平邊界濾波模塊130,用于在待濾波的邊界為水平邊界時(shí),從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取所述水平邊界上下兩側(cè)的像素?cái)?shù)據(jù),根據(jù)上下兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述水平邊界進(jìn)行濾波,將所述水平邊界對(duì)應(yīng)的濾波最終結(jié)果數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器,將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器;其中所述第二內(nèi)部存儲(chǔ)器預(yù)先存儲(chǔ)有當(dāng)前宏塊的上側(cè)宏塊的預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)。
上述去方塊濾波裝置,采用對(duì)存儲(chǔ)器復(fù)用的技術(shù)手段,從而在進(jìn)行濾波時(shí)根據(jù)從寄存器陣列、第一內(nèi)部存儲(chǔ)器或者第二內(nèi)部存儲(chǔ)器中讀取的數(shù)據(jù)進(jìn)行濾波,有效減少了硬件的占用面積。
如圖3所示,在一個(gè)實(shí)施例中,所述當(dāng)前宏塊包括1個(gè)16×16的亮度塊(y),即亮度塊包括16個(gè)子塊,每個(gè)子塊的像素點(diǎn)為16;所述邊界濾波順序包括:按照第一邊界濾波順序依次對(duì)亮度塊的上半部分的邊界(0至15)和下半部分的邊界(16至31)進(jìn)行濾波。所述第一邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界(如0和1)進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界(如2和3)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第1個(gè)水平邊界(如4)和下一行左側(cè)第1個(gè)水平邊界(如5)進(jìn)行濾波,再依次對(duì)第3列上下側(cè)的兩個(gè)垂直邊界(如6和7)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第2個(gè)水平邊界(8)和下一行左側(cè)第2個(gè)水平邊界(如9)進(jìn)行濾波,再依次對(duì)第4列上下側(cè)的兩個(gè)垂直邊界(如10和11)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第3個(gè)水平邊界(如12)和下一行左側(cè)第3個(gè)水平邊界(如13)進(jìn)行濾波,再依次對(duì)上一行左側(cè)第4個(gè)水平邊界(如14)和下一行左側(cè)第4個(gè)水平邊界(如15)進(jìn)行濾波。需要說明的是,上述雖然以上半部分的邊界對(duì)第一邊界濾波順序進(jìn)行說明,但是第一邊界濾波順序同樣適用于下半部分的邊界,即亮度塊在進(jìn)行邊界濾波時(shí)按照?qǐng)D3所示的數(shù)字的大小順序進(jìn)行濾波,即0、1、2、……、15、16、……、31。
如圖4所示,在一個(gè)實(shí)施例中,所述當(dāng)前宏塊還包括兩個(gè)8×8的色度塊(u和v);所述邊界濾波順序還包括:對(duì)亮度塊的邊界濾波完成后,再按照第二邊界濾波順序依次對(duì)兩個(gè)色度塊的邊界進(jìn)行濾波,即先進(jìn)行亮度塊的邊界濾波,在進(jìn)行兩個(gè)色度塊的邊界濾波,兩個(gè)色度塊各自的邊界濾波順序一樣,兩個(gè)色度塊進(jìn)行邊界濾波的順序可以根據(jù)實(shí)際需要進(jìn)行確定,例如可以先對(duì)u塊進(jìn)行濾波,在u塊濾波完成后,再對(duì)v塊進(jìn)行濾波。所述第二邊界濾波順序?yàn)椋合纫来螌?duì)第1列上下側(cè)的兩個(gè)垂直邊界(如32和33)進(jìn)行濾波,再依次對(duì)第2列上下側(cè)的兩個(gè)垂直邊界(如34和35)進(jìn)行濾波,再依次對(duì)第1行左側(cè)的水平邊界(如36)和第2行左側(cè)的水平邊界(如37)進(jìn)行濾波,再依次對(duì)第1行右側(cè)的水平邊界(如38)和第2行右側(cè)的水平邊界(如39)進(jìn)行濾波。
濾波邊界確定模塊110根據(jù)上述設(shè)定的邊界濾波順序即可以確定當(dāng)前宏塊中需要濾波的邊界,例如,當(dāng)前宏塊進(jìn)行第一次濾波,則待濾波的邊界為數(shù)字為0的垂直邊界,若已對(duì)數(shù)字為0的垂直邊界濾波完成,則待濾波的邊界為數(shù)值為1的垂直邊界等。確定待濾波的邊界后,就需要獲取邊界兩側(cè)的像素?cái)?shù)據(jù)。
如果待濾波的邊界為垂直邊界,則垂直邊界濾波模塊120從寄存器陣列和第一內(nèi)部存儲(chǔ)器中獲取兩側(cè)的像素?cái)?shù)據(jù),根據(jù)獲取的像素?cái)?shù)據(jù)對(duì)垂直邊界進(jìn)行濾波。如果待濾波的邊界為水平邊界,則水平邊界濾波模塊130從寄存器陣列和第二內(nèi)部存儲(chǔ)器中獲取兩側(cè)的像素?cái)?shù)據(jù),根據(jù)獲取的像素?cái)?shù)據(jù)對(duì)水平邊界進(jìn)行濾波。濾波的方式有很多種,例如可以采用流水線的方式,如四級(jí)流水線方式等,對(duì)邊界進(jìn)行濾波。
垂直邊界濾波模塊120根據(jù)兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述垂直邊界進(jìn)行濾波之后,還將已完成濾波的像素?cái)?shù)據(jù)寫入外部存儲(chǔ)器,將未完成濾波的像素?cái)?shù)據(jù)寫入寄存器陣列。在一個(gè)實(shí)施例中,若按照設(shè)定的邊界濾波順序確定寫入寄存器陣列的像素?cái)?shù)據(jù)下一次用于水平邊界濾波,則垂直邊界濾波模塊120將寫入寄存器陣列的像素?cái)?shù)據(jù)進(jìn)行垂直方向轉(zhuǎn)置。垂直濾波和水平濾波使用同一數(shù)據(jù)通路進(jìn)行濾波,使用寄存器陣列存儲(chǔ)垂直邊界濾波后臨時(shí)數(shù)據(jù)并在所述濾波順序下提前完成水平濾波方向的轉(zhuǎn)置,可以提高濾波的效率,降低硬件存儲(chǔ)面積。
水平邊界濾波模塊130根據(jù)兩側(cè)的像素?cái)?shù)據(jù)對(duì)所述水平邊界進(jìn)行濾波之后,還將已完成濾波的像素?cái)?shù)據(jù)寫入外部存儲(chǔ)器,將未完成濾波的像素?cái)?shù)據(jù)寫入寄存器陣列或者第二內(nèi)部存儲(chǔ)器。
以圖3和圖5為例,在一個(gè)實(shí)施例中,若待濾波的邊界為亮度塊的水平邊界,水平邊界濾波模塊130將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行(5、9、13和15)或者第4行(21、25、29和31)的水平邊界,將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器(top_ram);若待濾波的邊界為第2行左側(cè)第4個(gè)水平邊界(15)或者第3行左側(cè)第4個(gè)水平邊界(30),將水平邊界上側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(l0或者l1);若待濾波的邊界為第4行左側(cè)第4個(gè)水平邊界(31),將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(l2和l3)。
以圖4和圖5為例,在另一個(gè)實(shí)施例中,若待濾波的邊界為色度塊的水平邊界,水平邊界濾波模塊130將所述水平邊界對(duì)應(yīng)的臨時(shí)濾波數(shù)據(jù)存儲(chǔ)到所述寄存器陣列或者所述第二內(nèi)部存儲(chǔ)器包括:若待濾波的邊界為第2行的水平邊界(37、39、45或者47),將水平邊界下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入第二內(nèi)部存儲(chǔ)器(top_ram);若待濾波的邊界為第2行右側(cè)的水平邊界(39或者47),將水平邊界上側(cè)和下側(cè)的臨時(shí)濾波數(shù)據(jù)寫入寄存器陣列(c_l0和c_l1或者圖5中未示意出的另兩個(gè)寄存器陣列)。
如圖8所示,本發(fā)明還提供一種去方塊濾波系統(tǒng),所述去方塊濾波系統(tǒng)包括:
寄存器陣列,用于存儲(chǔ)當(dāng)前宏塊左側(cè)預(yù)設(shè)列數(shù)的像素?cái)?shù)據(jù)以及當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù);
第一內(nèi)部存儲(chǔ)器,用于存儲(chǔ)當(dāng)前宏塊的原始像素?cái)?shù)據(jù);
第二內(nèi)部存儲(chǔ)器,用于存儲(chǔ)當(dāng)前宏塊上側(cè)預(yù)設(shè)行數(shù)的像素?cái)?shù)據(jù)以及當(dāng)前宏塊中未完成濾波的像素?cái)?shù)據(jù);
控制器,所述控制器包括存儲(chǔ)設(shè)備和處理器,其中所述存儲(chǔ)設(shè)備存儲(chǔ)有計(jì)算機(jī)程序,所述程序被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)上述任意一項(xiàng)所述方法的步驟。
上述去方塊濾波系統(tǒng)其它技術(shù)特征與上述去方塊濾波方法相同,在此不予贅述。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(read-onlymemory,rom)或隨機(jī)存儲(chǔ)記憶體(randomaccessmemory,ram)等。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。