專利名稱:流水線化解塊濾波器的制作方法
技術(shù)領(lǐng)域:
本公開內(nèi)容涉及視頻編碼器和解碼器(一起稱為“編解碼器”),尤其涉及具有解塊濾波器的視頻編解碼器。提供了用于消除分塊痕跡(artifact)的流水線化濾波方法和設(shè)備。
背景技術(shù):
通常以位流的形式處理和傳輸視頻數(shù)據(jù)。視頻編碼器通常應(yīng)用諸如離散余弦變換(“DCT”)之類的塊變換編碼,以壓縮原始數(shù)據(jù)。相應(yīng)的視頻解碼器通常諸如通過應(yīng)用離散余弦反變換(“IDCT”)、對經(jīng)過塊變換編碼的位流數(shù)據(jù)進行解碼,以解壓縮該塊。
數(shù)字視頻壓縮技術(shù)能夠?qū)⒆匀坏囊曨l圖像變換為壓縮圖像而沒有顯著的質(zhì)量損失。已經(jīng)開發(fā)了許多視頻壓縮標(biāo)準(zhǔn),包括H.261、H.263、MPEG-1、MPEG-2、以及MPEG-4。與先前的壓縮標(biāo)準(zhǔn)相比,所提出的ITU-T建議H.264|ISO/IEC14496-10AVC視頻壓縮標(biāo)準(zhǔn)(“H.264/AVC”)在相同的編碼質(zhì)量下提供了編碼效率的顯著改善。例如,H.264/AVC的典型應(yīng)用可以是諸如與視頻蜂窩式電話一起使用的、需要高壓縮比的無線點播視頻。
解塊濾波器經(jīng)常與基于塊的數(shù)字視頻壓縮系統(tǒng)一起使用。解塊濾波器可以在壓縮環(huán)內(nèi)部應(yīng)用,其中濾波器在編碼器和解碼器處應(yīng)用??蛇x地,解塊濾波器可以僅僅在解碼器處、在壓縮環(huán)之后應(yīng)用。典型的解塊濾波器通過在完成了塊變換編碼(例如,DCT)和量化的塊的邊緣過渡(transition)上應(yīng)用低通濾波器而工作。解塊濾波器可以減少在解壓縮的視頻中被稱為“塊效應(yīng)(blockiness)”的負面視覺影響,但是通常需要視頻編碼器和/或解碼器處的大量計算復(fù)雜度。
為了實現(xiàn)幾乎類似于原有輸入圖像的輸出圖像,濾波操作用于通過解塊濾波器消除分塊痕跡。分塊痕跡一般在H.264/AVC之前的壓縮標(biāo)準(zhǔn)中沒有那么嚴重,這是因為對于剩余值編碼,DCT和量化步長(step)以8×8像素單元操作,所以對于這樣的現(xiàn)有標(biāo)準(zhǔn),解塊濾波器的采用一般是可選的。在H.264/AVC標(biāo)準(zhǔn)中,DCT和量化使用4×4像素單元,其生成多得多的分塊痕跡。因此,高效的解塊濾波器對于滿足H.264/AVC建議的編解碼器來說顯著更加重要。
發(fā)明內(nèi)容
現(xiàn)有技術(shù)的這些及其它缺陷和缺點由用于流水線化解塊濾波器的設(shè)備和方法解決。示例流水線化解塊濾波器具有濾波引擎、與該濾波引擎進行信號通信的多個寄存器,與該濾波引擎進行信號通信的流水線控制單元,以及與該流水線控制單元進行信號通信的有限狀態(tài)機。
對采用塊變換處理過的像素數(shù)據(jù)塊進行濾波以減少分塊痕跡的示例方法包括對塊的第一邊緣進行濾波,以及在對第一邊緣進行濾波之后不多于三個邊緣,對該塊的第三邊緣進行濾波,其中第三邊緣垂直于第一邊緣。通過下面結(jié)合附圖閱讀的對示例實施例的描述,將會理解本公開內(nèi)容。
本公開內(nèi)容依據(jù)以下的示例附圖給出了用于流水線化解塊濾波器的設(shè)備和方法,其中用類似的參考符號表示類似的元件,其中圖1示出了用于具有環(huán)內(nèi)解塊濾波器的示例編碼器的示意框圖;圖2示出了用于具有環(huán)內(nèi)解塊濾波器、并且與圖1中的編碼器一起使用的示例解碼器的示意框圖;圖3示出了用于具有后處理解塊濾波器的示例解碼器的示意框圖;圖4示出了用于具有環(huán)內(nèi)解塊濾波器的示例編解碼器的示意框圖,其中該編解碼器遵循H.264/AVC;圖5示出了用于依據(jù)H.264/AVC的基本濾波順序的示意數(shù)據(jù)圖;圖6示出了滿足H.264/AVC的要求并且依據(jù)本公開內(nèi)容的示例實施例的濾波順序的示意數(shù)據(jù)圖;圖7示出了依據(jù)本公開內(nèi)容的示例實施例的解塊濾波器的示意框圖;圖8示出了依據(jù)本公開內(nèi)容的示例實施例的流水線架構(gòu)的示意時序圖;圖9示出了依據(jù)本公開內(nèi)容的示例實施例的濾波器電路的示意框圖;圖10示出了依據(jù)本公開內(nèi)容的示例實施例的濾波器和相關(guān)聯(lián)的塊的示意框圖;
圖11示出了依據(jù)本公開內(nèi)容的示例實施例的流水線架構(gòu)塊的部分示意時序圖;以及圖12示出了依據(jù)本公開內(nèi)容的示例實施例的有序濾波方法的示意流程圖。
具體實施例方式
本公開內(nèi)容提供了適用于包括高速移動應(yīng)用在內(nèi)的、使用H.264/AVC的視頻處理中的解塊濾波器。本公開內(nèi)容的實施例提供了具有較高速度和/或較低硬件復(fù)雜度的流水線化解塊濾波器。
例如,可以使用解塊方法,以便試圖減少通過預(yù)測和量化處理而創(chuàng)建的分塊痕跡??梢栽趶漠?dāng)前畫面中處理和生成參考之前或之后實現(xiàn)該解塊處理。
如圖1所示,在總體上以標(biāo)號100表示具有環(huán)內(nèi)解塊濾波器的示例編碼器。編碼器100包括視頻輸入端子112,其信號通信地連接到求和塊114的正輸入端。求和塊114接著又連接到功能塊116,該功能塊用于實現(xiàn)整數(shù)變換以提供系數(shù)。塊116連接到熵編碼塊118,該熵編碼塊118用于實現(xiàn)熵編碼以提供輸出位流。塊116還在縮放和逆變換塊122處連接到環(huán)內(nèi)部分120。塊122連接到求和塊124,該求和塊124接著又連接到幀內(nèi)預(yù)測塊126。幀內(nèi)預(yù)測塊126可開關(guān)地連接到開關(guān)127,該開關(guān)127接著又連接到求和塊124的第二輸入端和求和塊114的逆輸入端。
求和塊124的輸出連接到條件解塊濾波器140。解塊濾波器140連接到幀存儲器128。幀存儲器128連接到運動補償塊130,該運動補償塊130連接到開關(guān)127的第二備選(alternative)輸入。視頻輸入端子112還連接到運動估計塊119以提供運動矢量。解塊濾波器140連接到運動估計塊119的第二輸入端。運動估計塊119的輸出連接到運動補償塊130以及熵編碼塊118的第二輸入端。視頻輸入端子112還連接到編碼器控制塊160。編碼器控制塊160連接到每個塊116、118、119、122、126、130、和140的控制輸入端,以便提供控制信號來控制編碼器100的操作。
轉(zhuǎn)向圖2,在總體上以標(biāo)號200表示具有環(huán)內(nèi)解塊濾波器的示例解碼器。解碼器200包括用于接收輸入位流的熵解碼塊210。解碼塊210在縮放和逆變換塊222處連接到環(huán)內(nèi)部分220,以便提供系數(shù)。塊222連接到求和塊224,該求和塊224接著又連接到幀內(nèi)預(yù)測塊226。幀內(nèi)預(yù)測塊226可開關(guān)地連接到開關(guān)227,該開關(guān)227接著又連接到求和塊224的第二輸入端和求和塊214的逆輸入端。求和塊224的輸出連接到用于提供輸出圖像的條件解塊濾波器240。
解塊濾波器240連接到幀存儲器228。幀存儲器228連接到運動補償塊230,該運動補償塊230連接到開關(guān)227的第二備選輸入。熵編碼塊210還連接到運動補償塊230的第二輸入端,以便提供運動矢量。熵解碼塊210還連接到解碼器控制塊262,以便提供控制。解碼器控制塊262連接到每個塊222、226、230、和240的控制輸入端,用于傳遞控制信號以及控制解碼器200的操作。
現(xiàn)在轉(zhuǎn)向圖3,在總體上以標(biāo)號300表示具有后處理解塊濾波器的示例解碼器。解碼器300包括用于接收輸入位流的熵解碼塊310。解碼塊310在縮放和逆變換塊322處連接到環(huán)內(nèi)部分320,以便提供系數(shù)。塊322連接到求和塊324,該求和塊324接著又連接到幀內(nèi)預(yù)測塊326。幀內(nèi)預(yù)測塊326可開關(guān)地連接到開關(guān)327,該開關(guān)327接著又連接到求和塊324的第二輸入端和求和塊314的逆輸入端。
求和塊324的輸出連接到用于提供輸出圖像的條件解塊濾波器340。求和塊324還連接到幀存儲器328。幀存儲器328連接到運動補償塊330,該運動補償塊330連接到開關(guān)327的第二備選輸入。熵編碼塊310還連接到運動補償塊330的第二輸入端,以便提供運動矢量。熵解碼塊310還連接到解碼器控制塊362,以便提供控制。解碼器控制塊362連接到每個塊322、326、330、和340的控制輸入端,用于傳遞控制信號以及控制解碼器300的操作。
如圖4所示,在總體上以標(biāo)號400表示具有環(huán)內(nèi)解塊濾波器的示例編碼器。編碼器400包括視頻輸入端子412,該視頻輸入端子412用于接收具有多個宏塊的輸入視頻圖像。端子412信號通信地連接到求和塊414的正輸入端。求和塊414接著連接到功能塊416,該功能塊416用于接收剩余值、實現(xiàn)離散余弦變換(DCT)、并且量化(Q)系數(shù)。塊416連接到熵編碼塊418,該熵編碼塊418用于實現(xiàn)熵或者可變長度編碼(VLC)以提供輸出位流。
塊416還連接到逆量化(IQ)和離散余弦反變換(IDCT)塊422。塊422連接到求和塊424。求和塊424的輸出連接到解塊濾波器440。解塊濾波器440連接到用于提供輸出視頻圖像的幀存儲器428。幀存儲器428連接到預(yù)測模塊429的第一輸入端,以便向預(yù)測模塊429提供參考幀,其中該預(yù)測模塊429包括運動補償塊430和內(nèi)部預(yù)測塊426。幀存儲器428還連接到運動估計塊419的第一輸入端,以便向運動估計塊419提供參考幀。
視頻輸入端子412還連接到用來提供運動矢量的運動估計塊419的第二輸入端。運動估計塊419的輸出連接到預(yù)測模塊429的第二輸入端,該預(yù)測模塊429連接到運動補償塊430。運動估計塊419的輸出還連接到熵編碼塊418的第二輸入端。與幀內(nèi)預(yù)測塊426連接的預(yù)測模塊429的輸出連接到求和塊424的第二輸入端和求和塊414的逆輸入端,用于向這些求和塊提供預(yù)測值。
在圖4的編碼器400的操作中,例如,輸入圖像或者幀被分成幾個宏塊,其中每個宏塊為16×16像素,而且每個宏塊(MB)按次序輸入到H.264/AVC系統(tǒng)。預(yù)測模塊429調(diào)查(investigate)作為先前濾波的幀之一的參考幀的所有宏塊,并且將最類似于所輸入的MB的一個MB作為預(yù)測值輸出。因此,預(yù)測值具有最類似于當(dāng)前MB的像素值。剩余值是在當(dāng)前MB和預(yù)測值之間的像素值差值。通過對剩余值執(zhí)行DCT和量化操作而產(chǎn)生系數(shù)。與剩余值相比,系數(shù)具有大大減少的數(shù)據(jù)大小。
可以通過如在塊418中的熵編碼將系數(shù)編碼到輸出位流中。輸出位流可以被存儲或者傳輸?shù)狡渌到y(tǒng)。此外,系數(shù)可以通過IQ和DCT操作而被轉(zhuǎn)換為剩余值。將剩余值加到預(yù)測值中,并且將其轉(zhuǎn)換成重建(recon)數(shù)據(jù)。recon_data具有由宏塊(16×16像素)或者塊(4×4像素)的邊界產(chǎn)生的分塊痕跡或者塊效應(yīng)(blockiness)。
轉(zhuǎn)向圖5,在總體上以標(biāo)號500表示依據(jù)H.264/AVC的濾波順序。順序500包括垂直邊緣510的水平濾波和水平邊緣520的垂直濾波。H.264/AVC要求將濾波應(yīng)用于圖像的所有宏塊。分別地以4×16像素和16×4像素在宏塊(MB)的列和行的基礎(chǔ)上執(zhí)行濾波,其中宏塊為16×16像素而且每個塊是4×4像素。依據(jù)H.264規(guī)范的解塊濾波順序如下所述。對于亮度,如510所示從左側(cè)邊緣開始對4個垂直邊緣進行濾波,這被稱為水平濾波。接著如520所示,從頂端邊緣開始以同樣方式對4個水平邊緣進行濾波,其被稱作垂直濾波。相同的次序應(yīng)用于色度。因此,分別為Cb和Cr濾波了2個垂直邊緣510和2個水平邊緣520。
因為頻繁的存儲器存取,解塊濾波一般是耗時的處理。為了對垂直邊緣2進行濾波,從緩沖存儲器中存取左邊(先前)和右邊(當(dāng)前)列數(shù)據(jù)。因此,每個邊緣使用4×16像素數(shù)據(jù)的兩次存取。依據(jù)H.264/AVC標(biāo)準(zhǔn),在水平濾波(亮度(luma)步驟1、2、3和4)完成之后,開始垂直濾波(亮度步驟5、6、7和8)。為了執(zhí)行垂直濾波,必須使用先前從水平濾波步驟中存取的數(shù)據(jù)。存儲在16×16像素的宏塊中所有的4×4像素塊。因此,濾波邏輯尺寸和濾波時間都將增加。
對于當(dāng)前的示例,宏塊中的解塊濾波時間應(yīng)該在500個時鐘周期之內(nèi),以便欣賞(appreciate)高清晰度圖像。為了實現(xiàn)這個速率,可以并行執(zhí)行亮度(luma)和色度濾波以及時完成濾波。不幸的是,需要用于亮度和色度二者的濾波電路,以便并行執(zhí)行亮度和色度濾波,因此顯著地增加了濾波電路的尺寸。
現(xiàn)在轉(zhuǎn)向圖6,在總體上以標(biāo)號600表示本公開內(nèi)容的流水線濾波次序。次序600包括亮度或者黃色濾波次序610、藍色色度濾波次序610和紅色色度濾波次序630。亮度濾波次序610包括用于亮度塊A到P的亮度濾波步驟1到32。藍色色度濾波次序包括用于藍色色度塊Q到T的藍色色度濾波步驟33到40,而紅色色度濾波次序包括用于紅色色度塊U到X的紅色色度濾波步驟41到48。
這里,在MB的所劃分的塊的基礎(chǔ)(例如,4×4像素)上,而不是在MB的行或者列的基礎(chǔ)(例如,用于亮度的4×16或者用于色度的4×8)上執(zhí)行解塊濾波。每個邊緣(例如,用于亮度的4×16像素或者用于色度的4×8像素)以在此公開的濾波次序分成幾段(例如,用于亮度的4段,用于色度的2段)。這個次序符合在H.264/AVC規(guī)范中規(guī)定的從左到右和從上到下的順序。
由于以塊(4×4像素)為基礎(chǔ)而不是以行(4×16)或者列(16×4)為基礎(chǔ)執(zhí)行濾波操作,減少了一次所使用的存儲器存取。另外,因為通過在此公開的濾波次序有利地利用了相鄰塊之間的數(shù)據(jù)相關(guān)性,所以還減少了訪問頻率。
在濾波次序600的操作中,以連續(xù)的次序濾波塊(4×4像素)的左邊、右邊和頂端邊緣。例如,在塊F的情況下,以該次序?qū)吘?0、12和13進行濾波。另外,將塊的底端邊緣(例如,塊F的邊緣21)存儲在緩沖器中,然后作為下面塊的頂端邊緣(例如,邊緣21是塊J的頂端邊緣)進行濾波。
塊F的邊緣的濾波處理如下首先,使用在塊E的邊緣濾波期間來自塊E和F的像素值對左邊邊緣10進行濾波;將E像素的新值更新到用于對塊E的上邊緣11進行濾波的左邊寄存器;以及將F像素的新值更新到右邊寄存器。其次,從當(dāng)前緩沖器中將塊G的像素值發(fā)送到用于濾波的引擎。第三,通過該引擎使用塊F和G執(zhí)行有關(guān)右邊邊緣12的濾波操作。將F塊的新像素值更新到左邊寄存器,并且將G塊的新像素值更新到右邊寄存器。第四,從頂端緩沖器中將塊B的像素值加載到上面寄存器中。第五,通過該引擎使用塊B和F執(zhí)行有關(guān)頂端邊緣13的濾波操作。將B的新像素值更新到上面寄存器并且將F的新像素值更新到左邊寄存器。第六,將在塊J的邊緣濾波期間對底端邊緣21進行濾波。
因此,不需要存儲先前參考的像素值或者從存儲器中存取它們,這是因為在新像素值的計算之后不久就發(fā)生寄存器的更新,而不需要存儲它們或者從存儲器中取回它們。依據(jù)存儲器存取頻率的降低和以塊為基礎(chǔ)的更小濾波單元的使用,濾波邏輯是簡單的,而且減少了濾波時間。應(yīng)當(dāng)理解,為亮度、紅色色度和藍色色度獨立定義次序。也就是說,亮度濾波可以居于紅色和藍色色度濾波之前、之后、或者之間,同時紅色色度濾波可以居于藍色色度濾波、亮度濾波、或者兩者之前或之后。因此,除了示例的4∶1∶1Y/Cb/Cr格式之外,在此公開的塊濾波次序可以應(yīng)用于各種其它塊格式。
如圖7所示,在總體上以標(biāo)號700表示依據(jù)本公開內(nèi)容的示例實施例的解塊濾波器。解塊濾波器700包括用于存儲當(dāng)前宏塊(MB)的重建數(shù)據(jù)的緩沖器或者當(dāng)前存儲器710。緩沖器710信號通信地連接到濾波單元712,用于向該濾波單元提供當(dāng)前數(shù)據(jù)和MB開始信號。單元712包括引擎714、寄存器塊716和有限狀態(tài)機(FSM)718。濾波單元712的FSM 718信號通信地與當(dāng)前數(shù)據(jù)控制器720連接,用于向該控制器720提供FSM狀態(tài)和計數(shù)??刂破?20接著信號通信地連接到當(dāng)前存儲器710,用于向該存儲器提供存儲器或者SRAM控制。當(dāng)作為預(yù)測值加上剩余值的重建數(shù)據(jù)被存儲在當(dāng)前存儲器710中時執(zhí)行濾波。
濾波單元712信號通信地與BS(濾波邊界強度)生成器722連接,用于向該狀態(tài)生成器提供狀態(tài)、計數(shù)、和標(biāo)志。生成器722接著信號通信地與QP(相鄰塊的量化參數(shù))存儲器724連接。生成器722還信號通信地與濾波單元712連接,用于向該濾波單元提供參數(shù)。濾波單元712還信號通信地與相鄰控制器726連接,用于向該相鄰控制器提供來自FSM 718的狀態(tài)和計數(shù)值??刂破?26信號通信地與用于存儲相鄰4×4塊的相鄰存儲器或者緩沖器728連接。相鄰緩沖器728從控制器726接收存儲器或者靜態(tài)隨機存取存儲器(SRAM)控制。緩沖器728信號通信地與濾波單元712連接,向濾波單元712供給第一相鄰數(shù)據(jù),并且從該濾波單元接收第二相鄰數(shù)據(jù)。
生成器722還信號通信地與相鄰控制器726、頂端控制器730和直接存儲器存取(DMA)控制器734連接,用于向這些控制器提供參數(shù)。濾波單元712還信號通信地與頂端控制器730連接,用于向該頂端控制器提供狀態(tài)和計數(shù),并且濾波單元712信號通信地與DMA控制器734連接、用于向該DMA控制器提供狀態(tài)、計數(shù)和色度標(biāo)志。頂端控制器730接著信號通信地與頂端存儲器732連接,用于向該頂端存儲器提供SRAM控制。頂端存儲器信號通信地與濾波單元712連接,用于提供第一頂端數(shù)據(jù)并且從濾波單元接收第二頂端數(shù)據(jù),其中該頂端數(shù)據(jù)用于垂直濾波。DMA控制器734信號通信地與DMA存儲器736連接,用于向DMA存儲器提供SRAM控制。濾波單元712還信號通信地與存儲器736連接,用于向該DMA存儲器提供已濾波的數(shù)據(jù)。頂端存儲器732和DMA存儲器736中的每個都信號通信地與切換單元738連接,該切換單元738接著信號通信地與DMA總線接口740連接,用于向DMA總線提供已濾波的數(shù)據(jù)。因此,已濾波的數(shù)據(jù)通過DMA總線接口740被傳輸?shù)紻MA。
轉(zhuǎn)向圖8,在總體上以標(biāo)號800表示示例流水線化解塊濾波器架構(gòu)。流水線架構(gòu)可以與高效的濾波次序組合以進一步減少濾波時間。解塊濾波器被分級地流水線化為4×4塊級801和4×1像素級802。
4×4塊流水線級801響應(yīng)于圖7中的FSM 718。流水線架構(gòu)800包括第一塊預(yù)取和查找步驟810,通過該步驟,從圖7的相鄰緩沖器728中將相鄰數(shù)據(jù)預(yù)取到寄存器中,從當(dāng)前緩沖器710中讀取當(dāng)前數(shù)據(jù),以及通過生成像素值來查找BS濾波參數(shù)。第一塊濾波和存儲步驟812與第一塊預(yù)取和查找步驟810重疊。第一塊濾波和存儲812執(zhí)行濾波、更新寄存器并且將結(jié)果存儲到緩沖存儲器中。在第一塊預(yù)取和查找步驟810完成之后,執(zhí)行第二塊預(yù)取和查找步驟814,諸如此類執(zhí)行用于剩余塊的815。在第一塊濾波和存儲步驟812完成之后,執(zhí)行第二塊濾波和存儲步驟816,諸如此類執(zhí)行用于剩余塊的818。第二塊預(yù)取和查找步驟814與第一塊濾波和存儲步驟812和第二塊濾波和存儲步驟816都重疊。
4×1像素邊緣流水線級802響應(yīng)于圖7的引擎714。像素邊緣流水線級802包括用于預(yù)取第一4×4塊的第一4×1像素列的第一4×1像素預(yù)取步驟820,用于在步驟820之后查找第一塊的第一列的阿爾法、貝它和tc0參數(shù)的第一4×1查找步驟822,以及在步驟822之后濾波和存儲第一4×4塊的第一4×1列的第一4×1濾波和存儲步驟824。像素邊緣流水線級802還包括與步驟822重疊的第二4×1像素預(yù)取步驟830,與步驟824重疊的第二4×1查找步驟832,以及跟隨步驟832的第二4×1濾波和存儲步驟834。此外,像素級802包括與步驟832重疊的第三4×1像素預(yù)取步驟840,與步驟834重疊的第三4×1查找步驟842,以及跟隨步驟842的第三4×1濾波和存儲步驟844;以及與步驟842重疊的第四4×1像素預(yù)取步驟850,與步驟844重疊的第四4×1查找步驟852,以及跟隨步驟852的第四4×1濾波和存儲步驟854。
4×1像素級802的預(yù)取步驟820,然后查找步驟822和預(yù)取步驟830全都在4×4塊級801的第二預(yù)取步驟814期間執(zhí)行。濾波和存儲步驟824、查找步驟832和預(yù)取步驟840跟隨查找步驟822和預(yù)取步驟830,所有這些步驟以流水線方式在塊級801的第二濾波步驟816期間執(zhí)行。
在操作中,因為4×1像素級的預(yù)取、查找參數(shù)以及濾波和存儲步驟以流水線方式在4×4塊級的濾波步驟期間執(zhí)行,所以顯著地減少了濾波時間。流水線化解塊濾波器和新的濾波次序大大地減少了濾波時間。例如,可以在亮度濾波之后執(zhí)行色度濾波。因此,僅僅需要一個濾波電路以便最小化硬件尺寸。
在濾波之后,將新的像素值更新到相應(yīng)的寄存器。返回參見圖6,通過邊緣2、3、5...、等舉例說明主要的情況。這里,將當(dāng)前(上面)寄存器的新像素值更新到當(dāng)前(上面)寄存器,并且將相鄰寄存器的新像素值更新到相鄰寄存器。
要在垂直濾波之后水平濾波的邊緣,諸如邊緣4、6、12...、等,被有所不同地計算。在圓圈邊緣號4的情況下,例如,將當(dāng)前寄存器,也就是塊B的新像素值更新到相鄰寄存器。在這時候,直接從當(dāng)前存儲器中加載塊C像素值。在緊鄰在邊緣3濾波之后的邊緣4濾波之前,相鄰寄存器存儲塊A的像素值。因此,以這種方式計算32個邊緣中的8個邊緣(即邊緣4、6、12、14、20、22、28和30)。
現(xiàn)在轉(zhuǎn)向圖9,在總體上以標(biāo)號900表示濾波器電路。濾波電路900包括有限狀態(tài)機(FSM)910,其信號通信地與引擎912連接。FSM 910接收MB開始信號(MB_start)并且提供色度標(biāo)志(Chroma_Flag)、FSM計數(shù)(inFSM_cnt)、行計數(shù)(line_cnt)和FSM狀態(tài)(FSM_state)信號。FSM還信號通信地與輸入開關(guān)或者多路復(fù)用器914的控制輸入端連接,該輸入開關(guān)或者多路復(fù)用器914接收第一相鄰數(shù)據(jù)(neigh_data1)、第一頂端數(shù)據(jù)(top_data1)或者當(dāng)前數(shù)據(jù)(current_data),并且一次提供這些類型的數(shù)據(jù)中的一個到寄存器916。寄存器916接著信號通信地與輸出開關(guān)918連接,用于提供第二相鄰數(shù)據(jù)(neig_data2)、第二頂端數(shù)據(jù)(top_data2)或者已濾波的數(shù)據(jù)(已濾波的數(shù)據(jù))。引擎912具有用于接收BS和參數(shù)信號的輸入端,用于從寄存器916接收當(dāng)前相鄰像素和當(dāng)前像素(p和q)輸入的輸入端,以及用于向寄存器916提供更新的相鄰像素和像素(p’和q’)輸出的輸出端。這里,MB_START和MB_END是分別表示1個MB濾波開始和結(jié)束的標(biāo)志,其中FSM910的輸出具有MB_END。Chroma_Flag是用于表示亮度或者色度的標(biāo)志。FSM_state是FSM的輸出并且是用于表示當(dāng)前4×4塊在16×16MB中的水平位置。inFSM_cnt是用于表示塊中的4×1像素流水線級是否完成的信號。line_cnt是用于表示塊在MB中的垂直位置的信號。neig_data1是用于當(dāng)前MB水平濾波的4×1像素相鄰數(shù)據(jù)。neig_data2是存儲在緩沖器中、用于下一個MB水平濾波的4×1像素數(shù)據(jù)。top_data1是用于當(dāng)前塊的垂直濾波的4×4頂端數(shù)據(jù)。top_data2是存儲在緩沖器中、用于下一個塊垂直濾波的4×4像素數(shù)據(jù)。curr_data是當(dāng)前4×1像素數(shù)據(jù)。filtered_data是完成了濾波的4×1像素數(shù)據(jù)。p和p’分別是濾波之前和之后的相鄰4×1像素。q和q’分別是濾波之前和之后的當(dāng)前4×1像素。寄存器組成寄存器陣列。引擎依據(jù)FSM的狀態(tài)執(zhí)行濾波操作。
如圖10所示,在總體上以標(biāo)號1000表示具有其它塊的濾波器電路。電路1000包括引擎1012,該引擎1012用于從多路復(fù)用器(MUX)1010接收當(dāng)前相鄰像素(p)和從MUX1011接收當(dāng)前像素(q)。引擎1012信號通信地與MUX1013和MUX1014中的每個連接。MUX1013接著信號通信地與4×4塊寄存器隊列2 1016連接,該塊寄存器隊列2 1016信號通信地與MUX1018連接。MUX1018向相鄰存儲器(NEIG_MEM)1020提供相鄰數(shù)據(jù)(neig_data2),該相鄰存儲器1020接著向MUX1010提供其它相鄰數(shù)據(jù)(neig_data1)。4×4塊寄存器隊列2 1016還信號通信地與頂端存儲器(TOP_MEM)1022連接,該頂端存儲器1022信號通信地與MUX1024連接。MUX1024接著信號通信地與4×4塊寄存器隊列1 1026連接。隊列1026信號通信地與MUX1028連接,MUX1028信號通信地與總線接口(BUS_IF)1030連接,以向該接口提供已濾波的數(shù)據(jù),其中該接口信號通信地與DMA存儲器連接,以便提供解塊輸出(DEBLOCK_OUT)。
電路1000還包括用于接收重建數(shù)據(jù)(RECON_DATA)的一對當(dāng)前存儲器(CURR_MEM)1032。每個當(dāng)前存儲器1032信號通信地與MUX1034連接,該MUX1034接著信號通信地與MUX1011連接,用于向MUX1011提供當(dāng)前數(shù)據(jù)(curr_data)。當(dāng)前存儲器1032還信號通信地與FSM1036連接,以便向FSM 4×4塊流水線架構(gòu)1036提供開始信號(MB_START)。FSM1036信號通信地與控制器1038連接,以便向該控制器1038提供信號FSM_state、line_count和Chroma_flag,以及從控制器1038接收用于4×1像素流水線的輸入信號inFSM_count??刂破?038信號通信地與每個MUX1010、1011、1014、1018、1024、1028和1034的控制輸入端連接,用于響應(yīng)于FSM_state、line_count、Chroma_Flag和inFSM_count信號控制MUX。
在操作中,當(dāng)recon_data被存儲在CURR_MEM中并且濾波開始時生成MB_START信號。FSM從4×1流水線控制器接收控制信號inFSM_cnt,以檢查4×1像素流水線級是否完成。因為亮度和色度共享濾波引擎,所以使用Chroma_Flag信號。由引擎濾波的數(shù)據(jù)通過BUS_IF傳輸?shù)酱鎯ζ骰蛘逥MA。
轉(zhuǎn)向圖11,在總體上以標(biāo)號1100表示用于流水線架構(gòu)的時序圖。時序圖1100示出了分別用于信號HCLK、MB_start、line_cnt、FSM、inFSM_cnt、Filtering_ON、BS、ALPHA/BETA/TC0、p、q、filterSampleFlag、filtered_p和filtered_q的相對時序。
時序圖1100還示出了4×4塊流水線級,其包括針對第一塊預(yù)取和查找BS的步驟1110;針對第一塊執(zhí)行濾波并存儲濾波結(jié)果的步驟1112;針對第一塊查找阿爾法、貝它和tc0參數(shù)的步驟1114,其中步驟1114與步驟1110和1112重疊;針對第二塊預(yù)取和查找BS的步驟1120;針對第二塊執(zhí)行濾波并存儲濾波結(jié)果的步驟1122;針對第二塊查找阿爾法、貝它和tc0參數(shù)的步驟1124,其中步驟1124與步驟1120和1122重疊;針對第三塊預(yù)取并查找BS的步驟1130;針對第三塊執(zhí)行濾波并存儲濾波結(jié)果的步驟1132;針對第三塊查找阿爾法、貝它和tc0參數(shù)的步驟1134,其中步驟1134與步驟1130和1132重疊。
另外,針對第二塊的步驟1120與針對第一塊的步驟1112和1114重疊,針對第二塊的步驟1124與針對第一塊的步驟1112重疊,并且針對第三塊的步驟1130與針對第二塊的塊1122重疊?,F(xiàn)在轉(zhuǎn)向圖12,在總體上以標(biāo)號1200表示依據(jù)本發(fā)明的塊濾波次序的濾波方法。宏塊被組織成亮度部分1202、第一色度部分1204和第二色度部分1206,其中每個部分具有從在m=0處的左邊邊緣開始的垂直邊緣,而且每個部分具有從n=0處的頂端邊緣開始的水平邊緣。
方法1200包括初始化色度=否、m=0和n=0的開始塊1210。開始塊1210將控制傳到功能塊1212,其對m=0的MB的垂直4×4塊邊緣進行濾波。塊1212將控制傳到功能塊1214,其對m=1的MB的垂直4×4塊邊緣進行濾波。塊1214將控制傳到功能塊1216。塊1216對m=0的MB的水平4×4塊邊緣進行濾波,并且將控制傳到判斷點1217。
判斷點1217確定塊是否為色度塊,并且如果是,則將控制傳到功能塊1218。如果塊不是色度塊,則將控制傳到功能塊1220。塊1220對m=2的MB的垂直4×4塊邊緣進行濾波,并且將控制傳到功能塊1218。功能塊1218對m=1的MB的第二水平邊緣進行濾波,并且將控制傳到判斷點1222。
判斷點1222確定塊是否為色度塊,并且如果是,則將控制傳到判斷塊1224。判斷點1224確定這是否為MB中的末尾塊,并且如果是,則將控制傳到結(jié)束塊1226。如果否,則判斷點1224將控制傳到判斷點1225。
判斷點1225確定是否n=1。如果n=1,則將其重置為n=0。如果n不等于1,則將n增1。在判斷點1225之后,控制傳到功能塊1212。另一方面,如果判斷點1222確定當(dāng)前塊不是色度塊,則其將控制傳到功能塊1228。功能塊1228對m=3的MB的垂直4×4塊邊緣進行濾波,并且將控制傳到功能塊1230。功能塊1230對m=2的MB的第三水平邊緣進行濾波,并且將控制傳到功能塊1232。功能塊1232接著對m=3的MB的第四水平邊緣進行濾波,并且將控制傳到判斷點1234。
判斷點1234確定是否n=3。如果n=3,則將n重置為n=0,并且設(shè)置色度=是。如果n不等于3,則將n增1。在判斷點1234之后,控制傳到功能塊1212。
相關(guān)技術(shù)的普通技術(shù)人員基于此處的教導(dǎo)可以容易地弄清本公開內(nèi)容的這些及其它特征和優(yōu)點。例如,應(yīng)當(dāng)理解,本公開內(nèi)容的教導(dǎo)可以擴展到并行執(zhí)行亮度和色度濾波的實施例,以進一步減少濾波時間。此外,亮度濾波可以居于紅色和藍色色度濾波之前、之后或之間,同時紅色色度濾波可以居于藍色色度濾波、亮度濾波、或者兩者之前或之后。除了示例的4∶1∶1Y/Cb/Cr格式之外,在此公開的塊濾波次序還可以應(yīng)用于各種其它塊格式。雖然已經(jīng)公開了依據(jù)H.264/AVC、優(yōu)化的宏塊邊緣濾波次序,但是應(yīng)當(dāng)理解,交替(intersperse)垂直與水平邊緣濾波的每個塊的一般濾波次序可以應(yīng)用于各種其它類型和格式的數(shù)據(jù)。
應(yīng)當(dāng)理解,可以以硬件、軟件、固件、專用處理器、或者它們的組合的各種形式實現(xiàn)本公開內(nèi)容的教導(dǎo)。此外,軟件優(yōu)選地實現(xiàn)為有形地包含在程序存儲設(shè)備中的應(yīng)用程序。應(yīng)用程序可以上載到包括任何適合架構(gòu)的機器中,或者由該機器執(zhí)行。優(yōu)選地,該機器在具有諸如一個或多個中央處理單元(“CPU”)、隨機存取存儲器(“RAM”)、和輸入/輸出(“I/O”)接口的硬件的計算機平臺上實現(xiàn)。計算機平臺還可以包括操作系統(tǒng)和微指令代碼。此處描述的各種處理和功能可以是微指令碼的一部分或者應(yīng)用程序的一部分,或者是它們的任意組合,它們可以由CPU執(zhí)行。此外,各種其它外圍單元可以連接到諸如額外的數(shù)據(jù)存儲單元和顯示單元之類的計算機平臺。在系統(tǒng)部件或者處理功能塊之間的實際連接可以取決于對實施例進行編程的方式而有所不同。
雖然此處已經(jīng)參考附圖描述了說明性實施例,但是應(yīng)當(dāng)理解,本發(fā)明不局限于那些確切實施例,并且本領(lǐng)域的普通技術(shù)人員可以在其中實施各種其它改變和修改,而不背離本發(fā)明的范圍或者精神。所有這樣的改變和修改意欲包括在如權(quán)利要求書所闡述的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種對采用塊變換處理過的像素數(shù)據(jù)塊進行濾波以減少分塊痕跡的方法,該方法包括對塊的第一邊緣進行濾波;以及在對第一邊緣進行濾波之后不多于三個邊緣,對該塊的第三邊緣進行濾波,其中第三邊緣垂直于第一邊緣。
2.如權(quán)利要求1所述的方法,其中,第一邊緣是塊的左邊邊緣,并且第三邊緣是塊的頂端邊緣。
3.如權(quán)利要求1所述的方法,還包括在對第一邊緣進行濾波之后不多于兩個邊緣,對該塊的第二邊緣進行濾波,其中第二邊緣平行于第一邊緣。
4.如權(quán)利要求3所述的方法,其中,第二邊緣是塊的右邊邊緣。
5.如權(quán)利要求1所述的方法,其中,塊包括4×4像素數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,其中,塊是組成宏塊的16個塊之一。
7.如權(quán)利要求6所述的方法,其中,從左至右、從頂端行到底部行一次一行順序地對宏塊中的塊進行濾波。
8.如權(quán)利要求1所述的方法,其中,像素數(shù)據(jù)塊包括多個行、列或者像素矢量,該方法還包括預(yù)取相鄰塊像素數(shù)據(jù)到第一寄存器陣列;預(yù)取當(dāng)前塊像素數(shù)據(jù)到第二寄存器陣列;以及響應(yīng)于預(yù)取的相鄰像素數(shù)據(jù)和預(yù)取的當(dāng)前像素數(shù)據(jù),查找當(dāng)前邊緣的邊界強度。
9.如權(quán)利要求8所述的方法,還包括預(yù)取上面塊像素數(shù)據(jù)到第三寄存器陣列。
10.如權(quán)利要求8所述的方法,還包括從第一寄存器陣列預(yù)取相鄰像素數(shù)據(jù)矢量到濾波引擎;從第二寄存器陣列預(yù)取當(dāng)前像素數(shù)據(jù)矢量到濾波引擎;依據(jù)當(dāng)前塊的邊界強度,查找用于相鄰和當(dāng)前矢量的濾波器參數(shù);依據(jù)該濾波器參數(shù)對相鄰和當(dāng)前矢量進行濾波;將已濾波的相鄰矢量更新到第一寄存器陣列;以及將已濾波的當(dāng)前矢量更新到第二寄存器陣列。
11.如權(quán)利要求8所述的方法,還包括從第一寄存器陣列預(yù)取相鄰像素數(shù)據(jù)矢量到濾波引擎;從第二寄存器陣列預(yù)取當(dāng)前像素數(shù)據(jù)矢量到濾波引擎;依據(jù)當(dāng)前塊的邊界強度,查找用于相鄰和當(dāng)前矢量的濾波器參數(shù);依據(jù)該濾波器參數(shù)對相鄰和當(dāng)前矢量進行濾波;將已濾波的相鄰矢量存儲到存儲器;以及將已濾波的當(dāng)前矢量更新到第二寄存器陣列。
12.如權(quán)利要求10所述的方法,還包括依據(jù)更新的第二寄存器陣列更新第一寄存器陣列;將更新的第一寄存器陣列存儲到存儲器;以及在將更新的第一寄存器陣列存儲到存儲器的期間,將另一個像素數(shù)據(jù)塊預(yù)取到第二寄存器陣列。
13.如權(quán)利要求10所述的方法,還包括在查找用于第一相鄰矢量的濾波器參數(shù)期間,從第一寄存器陣列預(yù)取第二相鄰像素數(shù)據(jù)矢量到濾波引擎;在查找用于第一當(dāng)前矢量的濾波器參數(shù)期間,從第二寄存器陣列預(yù)取第二當(dāng)前像素數(shù)據(jù)矢量到濾波引擎;在對第一相鄰和第一當(dāng)前矢量進行濾波期間,依據(jù)當(dāng)前塊的邊界強度查找用于第二相鄰和第二當(dāng)前矢量的濾波器參數(shù);依據(jù)該濾波器參數(shù)對第二相鄰和第二當(dāng)前矢量進行濾波;將第二已濾波的相鄰矢量更新到第一寄存器陣列;以及將第二已濾波的當(dāng)前矢量更新到第二寄存器陣列。
14.如權(quán)利要求12所述的方法,該方法還包括對第二像素數(shù)據(jù)塊進行塊流水線處理。
15.如權(quán)利要求14所述的方法,塊流水線處理包括預(yù)取第二塊像素數(shù)據(jù)到第一寄存器陣列期間;以及查找塊的邊界強度。
16.如權(quán)利要求15所述的方法,塊流水線處理還包括在查找用于第一像素矢量的濾波器參數(shù)期間,從塊中預(yù)取第二像素矢量;以及在對第一像素矢量進行濾波以及存儲第一像素矢量中的至少一個的期間,查找用于第二像素矢量的濾波器參數(shù)。
17.如權(quán)利要求15所述的方法,矢量流水線濾波還包括在查找用于前一像素矢量的濾波器參數(shù)期間,從塊中預(yù)取另一個像素矢量;以及在對前一像素矢量進行濾波以及存儲前一像素矢量中的至少一個的期間,查找用于該另一個像素矢量的濾波器參數(shù)。
18.如權(quán)利要求1所述的方法,其中像素數(shù)據(jù)塊包括具有多個像素的行、列或者矢量,該方法還包括對多個像素進行像素流水線濾波。
19.如權(quán)利要求18所述的方法,像素流水線濾波包括從該多個像素中預(yù)取第一像素;查找用于第一像素的濾波器參數(shù);對第一像素進行濾波;存儲第一像素;在查找用于第一像素的濾波器參數(shù)期間,從該多個像素中預(yù)取第二像素;以及在對第一像素進行濾波以及存儲第一像素中的至少一個的期間,查找用于第二像素的濾波器參數(shù)。
20.如權(quán)利要求19所述的方法,像素流水線濾波還包括在查找用于前一像素的濾波器參數(shù)期間,從該多個像素中預(yù)取另一個像素;以及在對前一像素進行濾波以及存儲該前一像素中的至少一個的期間,查找用于該另一個像素的濾波器參數(shù)。
21.一種流水線化解塊濾波器,用于對采用塊變換處理過的像素數(shù)據(jù)塊進行濾波,以減少分塊痕跡,該濾波器包括濾波引擎;與該濾波引擎進行信號通信的多個寄存器;與該濾波引擎進行信號通信的流水線控制單元;以及與該流水線控制單元進行信號通信的有限狀態(tài)機。
22.如權(quán)利要求21所述的流水線化解塊濾波器,結(jié)合用于將像素數(shù)據(jù)編碼為多個塊變換系數(shù)的編碼器,其中,該濾波器被布置為響應(yīng)于這些塊變換系數(shù),對重建的像素數(shù)據(jù)的塊過渡進行濾波。
23.如權(quán)利要求21所述的流水線化解塊濾波器,結(jié)合用于對編碼的塊變換系數(shù)進行解碼以提供重建的像素數(shù)據(jù)的解碼器,其中,該濾波器被布置為對重建的像素數(shù)據(jù)的塊過渡進行濾波。
24.如權(quán)利要求21所述的流水線化解塊濾波器,其中,有限狀態(tài)機被布置為控制流水線化解塊濾波器的塊流水線級。
25.如權(quán)利要求21所述的流水線化解塊濾波器,其中,該引擎被布置為控制流水線化解塊濾波器的像素矢量流水線級。
26.如權(quán)利要求21所述的流水線化解塊濾波器,其中該有限狀態(tài)機被布置為控制流水線化解塊濾波器的塊流水線級;該引擎被布置為控制流水線化解塊濾波器的像素矢量流水線級;以及該濾波器被布置為通過對塊的第一邊緣進行濾波,并且在對第一邊緣進行濾波之后不多于三個邊緣,對該塊的第三邊緣進行濾波,從而對像素數(shù)據(jù)塊進行濾波,其中第三邊緣垂直于第一邊緣。
27.一種可由機器讀取的程序存儲設(shè)備,有形地包含具有多條指令的程序,該程序可由機器執(zhí)行,以執(zhí)行用于對采用塊變換處理過的像素數(shù)據(jù)塊進行濾波的程序步驟,該程序步驟包括對塊的第一邊緣進行濾波;以及在對第一邊緣進行濾波之后不多于三個邊緣,對該塊的第三邊緣進行濾波,其中第三邊緣垂直于第一邊緣。
28.如權(quán)利要求27所述的程序存儲設(shè)備,該程序步驟還包括在對第一邊緣進行濾波之后不多于兩個邊緣,對該塊的第二邊緣進行濾波,其中第二邊緣平行于第一邊緣。
29.如權(quán)利要求27所述的程序存儲設(shè)備,其中,像素數(shù)據(jù)塊包括多個行、列或者像素矢量,該程序步驟還包括預(yù)取相鄰塊像素數(shù)據(jù);預(yù)取當(dāng)前塊像素數(shù)據(jù);以及響應(yīng)于預(yù)取的相鄰像素數(shù)據(jù)和預(yù)取的當(dāng)前像素數(shù)據(jù),查找當(dāng)前邊緣的邊界強度。
全文摘要
一種用于流水線化解塊的設(shè)備和方法包括濾波器,其具有濾波引擎、與該濾波引擎進行信號通信的多個寄存器、與該濾波引擎進行信號通信的流水線控制單元、以及與該流水線控制單元進行信號通信的有限狀態(tài)機;以及一種對采用塊變換處理過的像素數(shù)據(jù)塊進行濾波以減少分塊痕跡的方法包括對塊的第一邊緣進行濾波,以及在對第一邊緣進行濾波之后不多于三個邊緣,對該塊的第三邊緣進行濾波,其中第三邊緣垂直于第一邊緣。
文檔編號H04N7/26GK1794814SQ20051012971
公開日2006年6月28日 申請日期2005年12月1日 優(yōu)先權(quán)日2004年12月1日
發(fā)明者金胤京, 姜桯善 申請人:三星電子株式會社