一種h.264二維并行后處理去塊濾波器硬件實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種H.264二維并行后處理去塊濾波器硬件實現(xiàn)方法,可以實現(xiàn)水平邊界與垂直邊界二維并行執(zhí)行濾波運算,大大提高了濾波器的整理運算速度,提高了整個濾波系統(tǒng)的處理速度和數(shù)據(jù)吞吐量,使得單個16×16宏塊濾波處理只需118個時鐘周期,滿足實時處理的要求,同時合理利用各個塊之間數(shù)據(jù)相關(guān)性調(diào)整濾波順序,加入數(shù)據(jù)暫存器對中間數(shù)據(jù)進行暫存,減少了對中間數(shù)據(jù)的存儲、對外部存儲器的重復(fù)讀寫和芯片的電路規(guī)模。
【專利說明】一種H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)字視頻【技術(shù)領(lǐng)域】的H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,用來消除H.246編碼視訊中塊效應(yīng)的后處理濾波方法,具體是一種應(yīng)用于H.264標準中后處理的去塊效應(yīng)濾波方法及其硬件實現(xiàn)。
【背景技術(shù)】
[0002]H.264作為主流的視頻壓縮編碼標準之一,由Joint Video Team(JVT)開發(fā)的視頻編碼標準。H.264標準中,都是將視頻定界框內(nèi)的像素分成16X16的宏,并對各宏塊塊中每個4X4的塊進行形狀編碼、運動估計/運動補償和變換編碼等,由于H.264/AVC標準是基于塊的壓縮編碼,故會產(chǎn)生方塊效應(yīng)。基于塊的幀內(nèi)和幀間預(yù)測的殘差DCT變換,變換系數(shù)量化和反量化過程都會帶有誤差,會造成圖像塊邊界的不連續(xù);基于塊的運動補償。運動補償預(yù)測的參考幀來自于前面不同位置或者不同類型的幀,故運動補償塊的匹配不可能絕對的準確,預(yù)測塊邊界會出現(xiàn)不連續(xù)情況。塊效應(yīng)已經(jīng)成為塊變換壓縮算法中對圖像質(zhì)量造成影響最突出的問題之一。隨著多媒體技術(shù)應(yīng)用范圍的不斷擴大,圖像通信的重要作用日益明顯,對于大多數(shù)視頻編碼最終圖像的接受者,主觀質(zhì)量顯得格外重要。
[0003]針對這一問題標準中提出了在解碼的結(jié)果圖像上使用后處理去塊效應(yīng)濾波器消除塊效應(yīng)。如圖1所示為后處理濾波在整個解碼器中的位置。如圖3所示在標準中,規(guī)定了后處理濾波的宏塊邊界。在濾波運算時是先取得圖像塊邊界上的8個像素點對應(yīng)的象素值p3、p2、p1、p0和q0、ql、q2、q3,如圖2所示,然后將這8個象素值輸入到去塊效應(yīng)濾波器,最后濾波輸出為p3 ’、p2 ’、P I’、p0 ’和q0 ’、ql’、q2 ’、q3 ’,用輸出的8個象素值對應(yīng)地代替原位置的象素值并用于輸出顯示,至此濾波完成,平滑圖像中的塊邊緣,消除了塊效應(yīng)。
[0004]H.264/AVC標準中引入了去塊濾波器是基于4X4塊進行濾波運算且每個塊的四個邊界都需要進行濾波,故數(shù)據(jù)的運算量大,其運算量大概占到了解碼器計算總量的1/3 ;同時濾波器的基本濾波順序如圖3所示:先從上向下對塊的水平邊界進行垂直濾波,然后從左向右進行垂直邊界的水平濾波,這種濾波順序要頻繁的對外部存儲器讀寫像素值數(shù)據(jù),消耗了大量的硬件資源,且濾波速度不高,在實時解碼上難以滿住要求,這些都是我們亟需解決的瓶頸問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明是為避免上述現(xiàn)有技術(shù)所存在的不足之處,提供一種運算中數(shù)據(jù)訪問量小、硬件資源消耗小、濾波速率快的H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,以便能夠達到去除視頻中塊效應(yīng),達到高清視頻的要求。
[0006]本發(fā)明為解決技術(shù)問題采用如下技術(shù)方案:
[0007]本發(fā)明一種H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,其特點是:根據(jù)
H.264標準對每幀的視頻數(shù)據(jù)以宏塊為濾波單元進行濾波,每個待濾波宏塊包含24個4X 4的塊,依次是排布成4行4列的16個亮度塊Y、排布成2行2列的4個色度塊Cr和排布成2行2列的4個色度塊Cb ;在所述24個4X4的塊中,亮度塊Y按從左至右、從上至下的順序依次標記為B1-B16,色度塊Cr按從左至右、從上至下的順序依次標記為B17-B20,色度塊Cb按從左至右、從上至下的順序依次標記為B21-B24 ;亮度塊Y的左邊邊界塊從上至下依次標記為L1-L4,色度塊Cr的左邊邊界塊從上至下依次標記為L5和L6,色度塊Cb的左邊邊界塊從上至下依次標記為L7和L8 ;亮度塊Y的上邊邊界塊從左至右依次標記為T1-T4,色度塊Cr的上邊邊界塊從左至右依次標記為T5和T6,色度塊Cb的上邊邊界塊從左至右依次標記為T7和T8 ;按照從左到右、從上到下的順序,每一待濾波宏塊的垂直邊界依次標記為垂直邊界1-垂直邊界24、水平邊界依次標記為水平邊界4-水平邊界27 ;左邊邊界塊L1-L8的數(shù)據(jù)存儲于左邊塊存儲器中,上邊邊界塊T1-T8的數(shù)據(jù)存儲在上邊塊存儲器中、B1-B24的數(shù)據(jù)存儲在當前宏塊存儲器中;
[0008]所述去塊濾波器對于待濾波宏塊的濾波方法是按如下步驟進行:
[0009]步驟1,利用LI的數(shù)據(jù)和BI的數(shù)據(jù)完成垂直邊界I的濾波計算,分別獲得LI濾波數(shù)據(jù)和BI第一中間數(shù)據(jù),將LI濾波數(shù)據(jù)寫入外部存儲器;
[0010]步驟2,利用所述BI第一中間數(shù)據(jù)和B2的數(shù)據(jù)完成垂直邊界2的濾波計算,分別獲得BI第二中間數(shù)據(jù)和B2第一中間數(shù)據(jù);
[0011]步驟3,利用所述B2第一中間數(shù)據(jù)和B3的數(shù)據(jù)完成垂直邊界3的濾波計算,分別獲得B2第二中間數(shù)據(jù)和B3第一中間數(shù)據(jù);
[0012]步驟4,利用所述B3第一中間數(shù)據(jù)和B4的數(shù)據(jù)完成垂直邊界4的濾波計算,分別獲得B3第二中間數(shù)據(jù)和B4第一中間數(shù)據(jù);并利用Tl的數(shù)據(jù)和BI第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界4的濾波計算,獲得BI第三中間數(shù)據(jù);
[0013]步驟5,利用L2的數(shù)據(jù)和B5的數(shù)據(jù)完成垂直邊界5的濾波計算,獲得L2濾波數(shù)據(jù)和B5第一中間數(shù)據(jù),將L2濾波數(shù)據(jù)寫入外部存儲器;并利用T2的數(shù)據(jù)和B2第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)進行水平邊界5的濾波計算,獲得B2第三中間數(shù)據(jù);
[0014]步驟6,利用所述B5第一中間數(shù)據(jù)和B6的數(shù)據(jù)完成垂直邊界6的濾波計算,分別獲得B5第二中間數(shù)據(jù)和B6第一中間數(shù)據(jù);并利用T3的數(shù)據(jù)和B3第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界6的濾波計算,獲得B3第三中間數(shù)據(jù);
[0015]步驟7,利用所述B6第一中間數(shù)據(jù)和B7的數(shù)據(jù)完成垂直邊界7的濾波計算,分別獲得B6第二中間數(shù)據(jù)和B7第一中間數(shù)據(jù);并利用T4的數(shù)據(jù)和B4第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界7的濾波計算,獲得B4第二中間數(shù)據(jù);
[0016]步驟8,利用所述B7第一中間數(shù)據(jù)和B8的數(shù)據(jù)完成垂直邊界8的濾波計算,分別獲得B7第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù);并利用BI第三中間數(shù)據(jù)和B5第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界8的濾波計算,獲得BI濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B5第三中間數(shù)據(jù);
[0017]步驟9,利用L3的數(shù)據(jù)和B9的數(shù)據(jù)完成垂直邊界9的濾波計算,獲得L3濾波數(shù)據(jù)和B9第一中間數(shù)據(jù),將L3濾波數(shù)據(jù)寫入外部存儲器;并利用B2第三中間數(shù)據(jù)和B6第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界9的濾波計算,獲得B2濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B6第三中間數(shù)據(jù);
[0018]步驟10,利用所述B9第一中間數(shù)據(jù)和BlO的數(shù)據(jù)完成垂直邊界10的濾波計算,分別獲得B9第二中間數(shù)據(jù)和BlO第一中間數(shù)據(jù);并利用B3第三中間數(shù)據(jù)和B7第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界10的濾波計算,獲得B3濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B7第三中間數(shù)據(jù);
[0019]步驟11,利用所述BlO第一中間數(shù)據(jù)和Bll的數(shù)據(jù)完成垂直邊界11的濾波計算,分別獲得BlO第二中間數(shù)據(jù)和Bll第一中間數(shù)據(jù);并利用B4第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界10的濾波計算,獲得B4濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B8第二中間數(shù)據(jù);
[0020]步驟12,利用所述Bll第一中間數(shù)據(jù)和B12的數(shù)據(jù)完成垂直邊界12的濾波計算,分別獲得Bll第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù);并利用B5第三中間數(shù)據(jù)和B9第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界12的濾波計算,獲得B5濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B9第三中間數(shù)據(jù);
[0021]步驟13,利用L4的數(shù)據(jù)和B13的數(shù)據(jù)完成垂直邊界13的濾波計算,獲得L4濾波數(shù)據(jù)和B13第一中間數(shù)據(jù),將L4濾波數(shù)據(jù)寫入外部存儲器;并利用B6第三中間數(shù)據(jù)和BlO第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界13的濾波計算,獲得B6濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得BlO第三中間數(shù)據(jù);
[0022]步驟14,利用所述B13第一中間數(shù)據(jù)和B14的數(shù)據(jù)完成垂直邊界14的濾波計算,分別獲得B13第二中間數(shù)據(jù)和B14第一中間數(shù)據(jù);并利用B7第三中間數(shù)據(jù)和Bll第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界14的濾波計算,獲得B7濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得Bll第三中間數(shù)據(jù);
[0023]步驟15,利用所述B14第一中間數(shù)據(jù)和B15的數(shù)據(jù)完成垂直邊界15的濾波計算,分別獲得B14第二中間數(shù)據(jù)和B15第一中間數(shù)據(jù);并利用B8第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界15的濾波計算,獲得B8濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B12第二中間數(shù)據(jù);
[0024]步驟16,利用所述B15第一中間數(shù)據(jù)和B16的數(shù)據(jù)完成垂直邊界16的濾波計算,分別獲得B15第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù);并利用B9第三中間數(shù)據(jù)和B13第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界16的濾波計算,獲得B9濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B13濾波數(shù)據(jù);
[0025]步驟17,利用L5的數(shù)據(jù)和B17的數(shù)據(jù)完成垂直邊界17的濾波計算,獲得L5濾波數(shù)據(jù)和B17第一中間數(shù)據(jù),將L5濾波數(shù)據(jù)寫入外部存儲器;并利用BlO第三中間數(shù)據(jù)和B14第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界17的濾波計算,獲得BlO濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B14濾波數(shù)據(jù);
[0026]步驟18,利用所述B17第一中間數(shù)據(jù)和B18的數(shù)據(jù)完成垂直邊界18的濾波計算,分別獲得B17第二中間數(shù)據(jù)和B18第一中間數(shù)據(jù);并利用Bll第三中間數(shù)據(jù)和B15第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界18的濾波計算,獲得Bll濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B15濾波數(shù)據(jù);
[0027]步驟19,利用L6的數(shù)據(jù)和B19的數(shù)據(jù)完成垂直邊界19的濾波計算,獲得L6濾波數(shù)據(jù)和B19第一中間數(shù)據(jù),將L6濾波數(shù)據(jù)寫入外部存儲器;并利用B12第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界19的濾波計算,獲得B12濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B16濾波數(shù)據(jù);
[0028]步驟20,利用所述B19第一中間數(shù)據(jù)和B20的數(shù)據(jù)完成垂直邊界20的濾波計算,分別獲得B19第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù);并利用T5的數(shù)據(jù)和B17第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界20的濾波計算,獲得B17第三中間數(shù)據(jù);
[0029]步驟21,利用L7的數(shù)據(jù)和B21的數(shù)據(jù)完成垂直邊界21的濾波計算,分別獲得L7濾波數(shù)據(jù)和B21第一中間數(shù)據(jù),將L7濾波數(shù)據(jù)寫入外部存儲器;并利用T6的數(shù)據(jù)和B18第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界21的濾波計算,獲得B18第二中間數(shù)據(jù);
[0030]步驟22,利用所述B21第一中間數(shù)據(jù)和B22的數(shù)據(jù)完成垂直邊界22的濾波計算,分別獲得B21第二中間數(shù)據(jù)和B22第一中間數(shù)據(jù);并利用B17第三中間數(shù)據(jù)和B19第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界22的濾波計算,獲得B17濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B19濾波數(shù)據(jù);
[0031]步驟23,利用L8的數(shù)據(jù)和B23的數(shù)據(jù)完成垂直邊界23的濾波計算,分別獲得L8濾波數(shù)據(jù)和B23第一中間數(shù)據(jù),將L8濾波數(shù)據(jù)寫入外部存儲器;并利用B18第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界23的濾波計算,獲得B18濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B20濾波數(shù)據(jù);
[0032]步驟24,利用所述B23第一中間數(shù)據(jù)和B24的數(shù)據(jù)完成垂直邊界24的濾波計算,分別獲得B23第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù);并利用T7的數(shù)據(jù)和B21第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界24的濾波計算,獲得B21第三中間數(shù)據(jù);
[0033]步驟25,利用T8的數(shù)據(jù)和B22第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界24的濾波計算,獲得B22第二中間數(shù)據(jù);
[0034]步驟26,利用所述B21第三中間數(shù)據(jù)和B23第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界26的濾波計算,獲得B21濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部寄存器,以及獲得B23濾波數(shù)據(jù);
[0035]步驟27,利用所述B22第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界27的濾波計算,獲得B22濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部寄存器,以及獲得B24濾波數(shù)據(jù);
[0036]完成上述27步操作后,使用B4濾波數(shù)據(jù)、B8濾波數(shù)據(jù)、B12濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換左邊塊存儲器中L1、L2、L3及L4位置處的數(shù)據(jù);使用B13濾波數(shù)據(jù)、B14濾波數(shù)據(jù)、B15濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換上邊塊存儲器中Tl、T2、T3及T4位置處的數(shù)據(jù);使用B18濾波數(shù)據(jù)、B20濾波數(shù)據(jù)、B22濾波數(shù)據(jù)及B24濾波數(shù)據(jù)分別替換左邊塊存儲器中L5、L6、L7及L8位置處的數(shù)據(jù);使用B19濾波數(shù)據(jù)、B20濾波數(shù)據(jù)、B23濾波數(shù)據(jù)及B24濾波數(shù)據(jù)分別替換上左邊塊存儲器中T5、T6、T7及T8位置處的數(shù)據(jù);以完成數(shù)據(jù)替換的LI至L8作為下一待濾波宏塊的左邊邊界塊,以完成數(shù)據(jù)替換的Tl至T8作為下一待濾波宏塊的上邊邊界塊。
[0037]本發(fā)明H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,其特點也在于:所述硬件實現(xiàn)方法的電路結(jié)構(gòu)包括左邊塊存儲器、上邊塊存儲器、當前宏塊存儲器、暫存器、轉(zhuǎn)置器單元及濾波計算單元;
[0038]所述左邊塊存儲器由單口 RAM組成,用于存儲左邊邊界塊L1-L8的數(shù)據(jù);
[0039]所述上邊塊存儲器由單口 RAM組成,用于存儲上邊邊界塊T1-T8的數(shù)據(jù);
[0040]所述當前宏塊存儲器由單口 RAM組成,用于存儲待濾波宏塊中B1-B24的數(shù)據(jù);
[0041]所述暫存器用于暫存數(shù)據(jù),暫存周期數(shù)為四個周期;
[0042]所述轉(zhuǎn)置器用于對數(shù)據(jù)塊進行轉(zhuǎn)置,轉(zhuǎn)置一個數(shù)據(jù)塊需要四個周期;
[0043]所述濾波計算單元包括用于對水平邊界進行濾波的水平邊界濾波器和用于對垂直邊界進行濾波的垂直邊界濾波器,所述水平邊界濾波器和垂直邊界濾波器通過四個周期的濾波計算得到濾波結(jié)果。
[0044]與已有技術(shù)相比,本發(fā)明有益效果體現(xiàn)在:
[0045]1、本發(fā)明方法中采用了水平邊界和垂直邊界的并行濾波,濾波的運算效率高,能夠滿足實時處理的要求;且需要的濾波周期數(shù)較少,單個宏塊的濾波總周期數(shù)為118個時鐘周期;
[0046]2、本發(fā)明方法中采用暫存器作為中間數(shù)據(jù)存儲器,緩存大量的中間數(shù)據(jù)計算結(jié)果,減少了外部存儲器的存儲,大大緩解了對外部存儲器訪問帶寬的要求;
[0047]3、本發(fā)明方法中所采用的暫存器、轉(zhuǎn)置器及水平邊界濾波器和垂直邊界濾波器皆采用4級流水,使得這個濾波電路能進行流水濾波計算。
【專利附圖】
【附圖說明】
[0048]圖1:標準中后處理濾波器在解碼器中的位置示意圖;
[0049]圖2:標準中宏塊數(shù)據(jù)組織形式Y(jié)分量像素值的數(shù)據(jù)組織形式示意圖;
[0050]圖3:標準中規(guī)定宏塊的數(shù)據(jù)組織形式以及基本濾波順序示意圖;
[0051]圖4:本發(fā)明中的濾波順序示意圖;
[0052]圖5:本發(fā)明硬件實現(xiàn)方法的電路結(jié)構(gòu)的示意圖;
[0053]圖6:本發(fā)明中濾波計算單元的結(jié)構(gòu)示意圖;
[0054]圖7:本發(fā)明中轉(zhuǎn)置器的結(jié)構(gòu)示意圖;
[0055]圖8:本發(fā)明暫存器I的結(jié)構(gòu)示意圖;
[0056]圖9:本發(fā)明暫存器2的結(jié)構(gòu)示意圖。
【具體實施方式】
[0057]下面結(jié)合附圖對本發(fā)明的實施實例作詳細說明和具體操作過程的解說,但本發(fā)明保護的范圍不限于下述實施實例。
[0058]本實施例H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法是:如圖4所示,根據(jù)
H.264標準對每幀的視頻數(shù)據(jù)以宏塊為濾波單元進行濾波,每個待濾波宏塊包含24個4X 4的塊,依次是排布成4行4列的16個亮度塊Y、排布成2行2列的4個色度塊Cr和排布成2行2列的4個色度塊Cb ;在所述24個4X4的塊中,亮度塊Y按從左至右、從上至下的順序依次標記為B1-B16,色度塊Cr按從左至右、從上至下的順序依次標記為B17-B20,色度塊Cb按從左至右、從上至下的順序依次標記為B21-B24 ;亮度塊Y的左邊邊界塊從上至下依次標記為L1-L4,色度塊Cr的左邊邊界塊從上至下依次標記為L5和L6,色度塊Cb的左邊邊界塊從上至下依次標記為L7和L8 ;亮度塊Y的上邊邊界塊從左至右依次標記為T1-T4,色度塊Cr的上邊邊界塊從左至右依次標記為T5和T6,色度塊Cb的上邊邊界塊從左至右依次標記為T7和T8 ;按照從左到右、從上到下的順序,每一待濾波宏塊的垂直邊界依次標記為垂直邊界1-垂直邊界24、水平邊界依次標記為水平邊界4-水平邊界27 ;左邊邊界塊L1-L8的數(shù)據(jù)存儲于左邊塊存儲器中,上邊邊界塊T1-T8的數(shù)據(jù)存儲在上邊塊存儲器中、B1-B24的數(shù)據(jù)存儲在當前宏塊存儲器中;(從左到右、從上到下的順序是指對于同一行按從左到右的順序,完成上一行后再按照從上到下的順序進行下一行)[0059]如圖5所示,硬件實現(xiàn)方法的電路結(jié)構(gòu)包括左邊塊存儲器、上邊塊存儲器、當前宏塊存儲器、暫存器、轉(zhuǎn)置器單元及濾波計算單元;
[0060]左邊塊存儲器由單口 RAM組成,用于存儲左邊邊界塊L1-L8的數(shù)據(jù);
[0061]上邊塊存儲器由單口 RAM組成,用于存儲上邊邊界塊T1-T8的數(shù)據(jù);
[0062]當前宏塊存儲器由單口 RAM組成,用于存儲待濾波宏塊中B1-B24的數(shù)據(jù);
[0063]暫存器用于暫存數(shù)據(jù),暫存周期數(shù)為四個周期;暫存器包括暫存器I和暫存器2,其結(jié)構(gòu)分別如圖8和圖9所示,暫存器I可以對數(shù)據(jù)像素值進行四個周期的暫存,由4X4個寄存器構(gòu)成,每個方格存儲一個Sbits的像素值,在進行垂直邊界濾波時使用;暫存器2調(diào)用了三個暫存器I模塊,可以實現(xiàn)對數(shù)據(jù)像素值進行四個周期或十二個周期的暫存,在進行水平邊界濾波時使用。
[0064]轉(zhuǎn)置器單元的結(jié)構(gòu)如圖7所示,由4X4個寄存器構(gòu)成,每個方格存儲一個8bits的像素值,寄存器組有A_in,B_in, A_out, B_out四個端口,通過在輸入和輸出加入MUX單元對輸入和輸出端口進行選擇,從而實現(xiàn)像素值數(shù)據(jù)的轉(zhuǎn)置。
[0065]濾波計算單元包括用于對水平邊界進行濾波的水平邊界濾波器和用于對垂直邊界進行濾波的垂直邊界濾波器,水平邊界濾波器和垂直邊界濾波器通過四個周期的濾波計算得到濾波結(jié)果。如圖6所示為水平邊界濾波器和垂直邊界濾波器的結(jié)構(gòu)示意,可以看出它是一個四級流水實現(xiàn)八像素值的1-D濾波計算單元。(pO, pi, p2, p3)和(q0, ql, q2, q3)是待濾波的像素值,(PO’,ρ 1',p2’,p3’)和(qO’,ql’,q2’,q3’)是經(jīng)濾波處理后的像素值。
[0066]去塊濾波器對于待濾波宏塊的濾波方法是按如下步驟進行:
[0067]步驟1,L1的數(shù)據(jù)和BI的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界I的濾波計算,完成后分別獲得LI濾波數(shù)據(jù)和BI第一中間數(shù)據(jù),將LI濾波數(shù)據(jù)寫入外部存儲器中,BI第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直邊界濾波;
[0068]步驟2,BI第一中間數(shù)據(jù)和B2的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界2的濾波計算,完成后分別獲得BI第二中間數(shù)據(jù)和B2第一中間數(shù)據(jù);B1第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B2第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直邊界濾波;
[0069]步驟3,B2第一中間數(shù)據(jù)和B3的數(shù)據(jù)分別進入垂直邊界濾器的P端口和Q端口進行垂直邊界3的濾波計算,完成后分別獲得B2第二中間數(shù)據(jù)和B3第一中間數(shù)據(jù);B2第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B3第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直邊界濾波;
[0070]步驟4,由于水平邊界濾波器開始獲得有效的待濾波像素值,從這步開始垂直邊界的濾波和水平邊界的濾波同時進行。B3第一中間數(shù)據(jù)和B4的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界4的濾波計算,完成后分別獲得B3第二中間數(shù)據(jù)和B4第一中間數(shù)據(jù),B3第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B4是宏塊的最右邊塊,不需要再次垂直濾波,B4第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,Tl的數(shù)據(jù)和BI第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界4的濾波計算,完成后獲得BI第三中間數(shù)據(jù)和Tl濾波數(shù)據(jù),其中BI第三中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波,而Tl濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2轉(zhuǎn)置后寫回外部存儲器;[0071]步驟5,L2的數(shù)據(jù)和B5的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界5的濾波計算,完成后分別獲得L2濾波數(shù)據(jù)和B5第一中間數(shù)據(jù),將L2濾波數(shù)據(jù)寫入外部存儲器,將B5第一中間數(shù)據(jù)寫回到垂直邊界濾波器中準備再次進行垂直濾波;同時,T2的數(shù)據(jù)和B2第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界5濾波計算,完成后分別獲得T2濾波數(shù)據(jù)和B2第三中間數(shù)據(jù),將T2濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置后寫回到外部存儲器中,將B2第三中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波。需注意的是步驟4中的B4的第一中間數(shù)據(jù)在這步中一直寄存于暫存器I中;
[0072]步驟6,B5第一中間數(shù)據(jù)和B6的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口完成垂直邊界6的濾波計算,完成后分別獲得B5第二中間數(shù)據(jù)和B6第一中間數(shù)據(jù),B5第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中轉(zhuǎn)置,將B6第一中間數(shù)據(jù)寫回到垂直邊界濾波器中準備再次進行垂直濾波;同時,T3的數(shù)據(jù)和B3第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界6濾波計算,完成后分別或者T3濾波數(shù)據(jù)和B3第三中間數(shù)據(jù),將T3濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置后寫回到外部存儲器中,將B3第三中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波。在此步中B4的第一中間數(shù)據(jù)進入轉(zhuǎn)置器I中完成轉(zhuǎn)置;
[0073]步驟7,B6第一中間數(shù)據(jù)和B7的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界7濾波計算,完成后分別獲得B6第二中間數(shù)據(jù)和B7第一中間數(shù)據(jù),B6第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B7第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波。同時,T4的數(shù)據(jù)和B4第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界7濾波計算,完成后分別獲得B4第二中間數(shù)據(jù)和T4的濾波數(shù)據(jù),T4的濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置后寫回到外部存儲器中,B4第二中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波;
[0074]步驟8,B7第一中間數(shù)據(jù)和B8的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界8濾波計算,完成后分別獲得B7第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù),B7第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B8是宏塊的最右邊塊,不需要再次進行垂直濾波,B8第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,從暫存器2中得到BI第三中間數(shù)據(jù)和B5第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界8濾波計算,完成后獲得BI濾波數(shù)據(jù)和B5第三中間數(shù)據(jù),注意到BI塊的四個邊界濾波全部完成,故BI濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B5第三中間數(shù)據(jù)進入暫存器2進行暫存;
[0075]步驟9,L3的數(shù)據(jù)和B9的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界9濾波計算,完成后分別獲得L3濾波數(shù)據(jù)和B9第一中間數(shù)據(jù),L3濾波數(shù)據(jù)寫入外部存儲器,B9第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B2第三中間數(shù)據(jù)和B6第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界9濾波計算,完成后分別或者獲得B2濾波數(shù)據(jù)和B6第三中間數(shù)據(jù),B2濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器I轉(zhuǎn)置后寫入外部存儲器中,B6第三中間數(shù)據(jù)進入暫存器2中進行暫存。在此過程中B8第一中間數(shù)據(jù)一直暫存于暫存器I中;
[0076]步驟10,B9第一中間數(shù)據(jù)和BlO的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界10濾波計算,完成后分別獲得B9第二中間數(shù)據(jù)和BlO第一中間數(shù)據(jù),B9第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,BlO第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B3第三中間數(shù)據(jù)和B7第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界10濾波計算,完成后分別獲得B3濾波數(shù)據(jù)B7第三中間數(shù)據(jù),B3濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器I轉(zhuǎn)置后寫入外部存儲器,B7第三中間數(shù)據(jù)進入暫存器2中進行暫存,在此過程中塊B8的第一中間數(shù)據(jù)進入轉(zhuǎn)置器I中完成轉(zhuǎn)置;
[0077]步驟11,BlO第一中間數(shù)據(jù)和Bll的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界11濾波計算,完成后分別獲得BlO第二中間數(shù)據(jù)和Bll第一中間數(shù)據(jù),BlO第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,Bll第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B4第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界11濾波計算,完成后獲得B4濾波數(shù)據(jù)和B8第二中間數(shù)據(jù),B4濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2轉(zhuǎn)置后寫入外部寄存器中,B8第二中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波;
[0078]步驟12,B11第一中間數(shù)據(jù)和B12的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界12的濾波計算,完成后分別獲得Bll第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù),Bll第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B12是宏塊的最右邊塊,不需要再次進行垂直濾波,B12第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,從暫存器2中得到的B5第三中間數(shù)據(jù)和B9第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界12的濾波計算,完成后分別獲得B5濾波數(shù)據(jù)和B9第三中間數(shù)據(jù),,注意到B5塊的四個邊界濾波全部完成,故B5濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B9第三中間數(shù)據(jù)進入暫存器2進行暫存;
[0079]步驟13,L4的數(shù)據(jù)和B13的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界13的濾波計算,完成后分別獲得L4濾波數(shù)據(jù)和B13第一中間數(shù)據(jù),L4濾波數(shù)據(jù)寫入外部存儲器,B13第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B6第三中間數(shù)據(jù)和BlO第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界13的濾波計算,完成后分別獲得B6濾波數(shù)據(jù)和BlO第三中間數(shù)據(jù),B6濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器I轉(zhuǎn)置后寫入外部存儲器中,BlO第三中間數(shù)據(jù)進入暫存器2中進行暫存,在此過程中B12第一中間數(shù)據(jù)一直暫存于暫存器I中;
[0080]步驟14,利B13第一中間數(shù)據(jù)和B14的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界14的濾波計算,完成后分別獲得B13第二中間數(shù)據(jù)和B14第一中間數(shù)據(jù),B13第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B14第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B7第三中間數(shù)據(jù)和Bll第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界14的濾波計算,完成后獲得B7濾波數(shù)據(jù)和Bll第三中間數(shù)據(jù),B7濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器I轉(zhuǎn)置后寫入外部存儲器,BI I第三中間數(shù)據(jù)入暫存器2中進行暫存,在此過程中塊B12的第一中間數(shù)據(jù)進入轉(zhuǎn)置器I中完成轉(zhuǎn)置;
[0081]步驟15,B14第一中間數(shù)據(jù)和B15的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界15的濾波計算,完成后分別獲得B14第二中間數(shù)據(jù)和B15第一中間數(shù)據(jù),B14第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B15第一中間數(shù)據(jù)到垂直邊界濾波器中準備再次進行垂直濾波;同時,B8第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界15的濾波計算,完成后分別獲得B8濾波數(shù)據(jù)和B12第二中間數(shù)據(jù),B8濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2轉(zhuǎn)置后寫入外部寄存器中,B12第二中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波;[0082]步驟16,B15第一中間數(shù)據(jù)和B16的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界16的濾波計算,完成后分別獲得B15第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù),B15第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B16是宏塊的最右邊塊,不需要再次進行垂直濾波,B16第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,從暫存器2中得到的B9第三中間數(shù)據(jù)和B13第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界16的濾波計算,完成后分別獲得B9濾波數(shù)據(jù)和B13濾波數(shù)據(jù),注意到B9塊的四個邊界濾波全部完成,故B9濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B13濾波數(shù)據(jù)進入暫存器2進行暫存;
[0083]步驟17,L5的數(shù)據(jù)和B17的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界17的濾波計算,完成后分別獲得L5濾波數(shù)據(jù)和B17第一中間數(shù)據(jù),將L5濾波數(shù)據(jù)寫入外部存儲器中,B17第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直邊界濾波;同時,BlO第三中間數(shù)據(jù)和B14第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界17的濾波計算,完成后分別獲得BlO濾波數(shù)據(jù)和B14濾波數(shù)據(jù),注意到BlO塊的四個邊界濾波全部完成,故BlO濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B14濾波數(shù)據(jù)進入暫存器2進行暫存;
[0084]步驟18,B17第一中間數(shù)據(jù)和B18的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界18的濾波計算,完成后分別獲得B17第二中間數(shù)據(jù)和B18第一中間數(shù)據(jù),B17第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B18是宏塊的最右邊塊,不需要再次垂直濾波,B18第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,Bll第三中間數(shù)據(jù)和B15第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界18的濾波計算,完成后分別獲得Bll濾波數(shù)據(jù)和B15濾波數(shù)據(jù),注意到Bll塊的四個邊界濾波全部完成,故Bll濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B15濾波數(shù)據(jù)進入暫存器2進行暫存;
[0085]步驟19,L6的數(shù)據(jù)和B19的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界19的濾波計算,完成后分別獲得L6濾波數(shù)據(jù)和B19第一中間數(shù)據(jù),將L6濾波數(shù)據(jù)寫入外部存儲器,B19第一中間數(shù)據(jù)寫回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B12第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界19的濾波計算,完成后分別獲得B12濾波數(shù)據(jù)和B16濾波數(shù)據(jù),注意到B12塊的四個邊界濾波全部完成,故B12濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B16濾波數(shù)據(jù)進入暫存器2進行暫存;
[0086]步驟20,B19第一中間數(shù)據(jù)和B20的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界20的濾波計算,完成后分別獲得B19第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù),B15第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B20是宏塊的最右邊塊,不需要再次進行垂直濾波,B20第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,T5的數(shù)據(jù)和B17第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界20的濾波計算,完成后分別獲得B17第三中間數(shù)據(jù)和T5的濾波數(shù)據(jù),其中B17第三中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波,T5濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2轉(zhuǎn)置后寫回外部存儲器;
[0087]步驟21,L7的數(shù)據(jù)和B21的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界21的濾波計算,完成后分別獲得L7濾波數(shù)據(jù)和B21第一中間數(shù)據(jù),將L7濾波數(shù)據(jù)寫入外部存儲器,B21第一中間數(shù)據(jù)回到垂直邊界濾波器中準備再次進行垂直邊界濾波;同時,T6的數(shù)據(jù)和B18第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)別進入水平邊界濾波器的P端口和Q端口進行水平邊界21的濾波計算,完成后分別獲得B18第二中間數(shù)據(jù)和T6的濾波數(shù)據(jù),T6的濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置后寫回到外部存儲器中,B18第二中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波;
[0088]步驟22,B21第一中間數(shù)據(jù)和B22的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界22的濾波計算,完成后分別獲得B21第二中間數(shù)據(jù)和B22第一中間數(shù)據(jù),B21第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B22是宏塊的最右邊塊,不需要再次垂直濾波,B22第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,從暫存器2中得到的B17第三中間數(shù)據(jù)和B19第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界22的濾波計算,完成后獲得B17濾波數(shù)據(jù)和B19濾波數(shù)據(jù),注意到B17塊的邊界濾波全部完成,故B17濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B19濾波數(shù)據(jù)進入暫存器2進行暫存;
[0089]步驟23,L8的數(shù)據(jù)和B23的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界23的濾波計算,完成后分別獲得L8濾波數(shù)據(jù)和B23第一中間數(shù)據(jù),將L8濾波數(shù)據(jù)寫入外部存儲器,B23第一中間數(shù)據(jù)寫回到垂直邊界濾波器中準備再次進行垂直濾波;同時,B18第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界23的濾波計算,完成后分別獲得B18濾波數(shù)據(jù)和B20濾波數(shù)據(jù),注意到B18塊的邊界濾波全部完成,故B18濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B20濾波數(shù)據(jù)進入暫存器2進行暫存;
[0090]步驟24,B23第一中間數(shù)據(jù)和B24的數(shù)據(jù)分別進入垂直邊界濾波器的P端口和Q端口進行垂直邊界24的濾波計算,完成后分別獲得B23第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù),B23第二中間數(shù)據(jù)進入轉(zhuǎn)置器I中,B24是宏塊的最右邊塊,不需要再次進行垂直濾波,B24第一中間數(shù)據(jù)進入暫存器I中進行暫存;同時,T7的數(shù)據(jù)和B21第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界濾波器的P端口和Q端口進行水平邊界24的濾波計算,完成后分別獲得B21第三中間數(shù)據(jù)和T7的濾波數(shù)據(jù),其中B21第三中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波,T7濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2轉(zhuǎn)置后寫回外部存儲器;
[0091]步驟25,T8的數(shù)據(jù)和B22第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)別進入水平邊界濾波器的P端口和Q端口進行水平邊界24的濾波計算,完成后分別獲得B22第二中間數(shù)據(jù)和T8的濾波數(shù)據(jù),T8的濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置后寫回到外部存儲器中,B22第二中間數(shù)據(jù)進入暫存器2中暫存準備再次進行水平濾波;
[0092]步驟26,B21第三中間數(shù)據(jù)和B23第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)分別進入水平邊界的P端口和Q端口進行水平邊界26的濾波計算,完成后分別獲得B21濾波數(shù)據(jù)和B23濾波數(shù)據(jù),注意到B21塊的邊界濾波全部完成,故B21濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B23濾波數(shù)據(jù)進入暫存器2進行暫存;
[0093]步驟27,B22第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)進入水平邊界的P端口和Q端口進行水平邊界27的濾波計算,完成后分別獲得B22濾波數(shù)據(jù)和B24濾波數(shù)據(jù),注意到B22塊的邊界濾波全部完成,故B22濾波數(shù)據(jù)經(jīng)轉(zhuǎn)置器2后寫入外部存儲器中,B24濾波數(shù)據(jù)進入暫存器2進行暫存;
[0094]完成上述27步操作后,使用B4濾波數(shù)據(jù)、B8濾波數(shù)據(jù)、B12濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換左邊塊存儲器中L1、L2、L3及L4位置處的數(shù)據(jù);使用B13濾波數(shù)據(jù)、B14濾波數(shù)據(jù)、B15濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換上邊塊存儲器中Tl、T2、T3及T4位置處的數(shù)據(jù);使用B18濾波數(shù)據(jù)、B20濾波數(shù)據(jù)、B22濾波數(shù)據(jù)及B24濾波數(shù)據(jù)分別替換左邊塊存儲器中L5、L6、L7及L8位置處的數(shù)據(jù);使用B19濾波數(shù)據(jù)、B20濾波數(shù)據(jù)、B23濾波數(shù)據(jù)及B24濾波數(shù)據(jù)分別替換上左邊塊存儲器中T5、T6、T7及T8位置處的數(shù)據(jù);以完成數(shù)據(jù)替換的LI至L8作為下一待濾波宏塊的左邊邊界塊,以完成數(shù)據(jù)替換的Tl至T8作為下一待濾波宏塊的上邊邊界塊。
[0095]當亮度和色度分量的濾波處理完成后,就完成了本發(fā)明中的去塊濾波器的作用,本發(fā)明利用后處理去塊效應(yīng)濾波各個4X4塊的數(shù)據(jù)之間的相關(guān)性,擴展濾波邊界,調(diào)整濾波順序,并加入了暫存器和數(shù)據(jù)裝置寄存器,實現(xiàn)了水平邊界和垂直邊界的濾波運算的并行執(zhí)行,有效地提高了濾波器的速度和性能。
[0096]統(tǒng)計各個步驟的時鐘周期數(shù),單個宏塊完成濾波總共需要用去27次邊界濾波,每次邊界濾波為4個時鐘周期,同時完成濾波后的像素值寫入存儲器要花去8個時鐘周期,濾波計算單元參數(shù)準備需要2個時鐘周期,因此單個宏塊完成濾波共需要27X4+8+2=118個時鐘周期。
【權(quán)利要求】
1.一種H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,其特征是:根據(jù)H.264標準對每幀的視頻數(shù)據(jù)以宏塊為濾波單元進行濾波,每個待濾波宏塊包含24個4X 4的塊,依次是排布成4行4列的16個亮度塊Y、排布成2行2列的4個色度塊Cr和排布成2行2列的4個色度塊Cb ;在所述24個4X4的塊中,亮度塊Y按從左至右、從上至下的順序依次標記為B1-B16,色度塊Cr按從左至右、從上至下的順序依次標記為B17-B20,色度塊Cb按從左至右、從上至下的順序依次標記為B21-B24 ;亮度塊Y的左邊邊界塊從上至下依次標記為L1-L4,色度塊Cr的左邊邊界塊從上至下依次標記為L5和L6,色度塊Cb的左邊邊界塊從上至下依次標記為L7和L8 ;亮度塊Y的上邊邊界塊從左至右依次標記為T1-T4,色度塊Cr的上邊邊界塊從左至右依次標記為T5和T6,色度塊Cb的上邊邊界塊從左至右依次標記為T7和T8 ;按照從左到右、從上到下的順序,每一待濾波宏塊的垂直邊界依次標記為垂直邊界1-垂直邊界24、水平邊界依次標記為水平邊界4-水平邊界27 ;左邊邊界塊L1-L8的數(shù)據(jù)存儲于左邊塊存儲器中,上邊邊界塊T1-T8的數(shù)據(jù)存儲在上邊塊存儲器中、B1-B24的數(shù)據(jù)存儲在當前宏塊存儲器中; 所述去塊濾波器對于待濾波宏塊的濾波方法是按如下步驟進行: 步驟1,利用LI的數(shù)據(jù)和BI的數(shù)據(jù)完成垂直邊界I的濾波計算,分別獲得LI濾波數(shù)據(jù)和BI第一中間數(shù)據(jù),將LI濾波數(shù)據(jù)寫入外部存儲器; 步驟2,利用所述BI第一中間數(shù)據(jù)和B2的數(shù)據(jù)完成垂直邊界2的濾波計算,分別獲得BI第二中間數(shù)據(jù)和B2第一中間數(shù)據(jù); 步驟3,利用所述B2第一中間數(shù)據(jù)和B3的數(shù)據(jù)完成垂直邊界3的濾波計算,分別獲得B2第二中間數(shù)據(jù)和B3第一中間數(shù)據(jù); 步驟4,利用所述B3第一中間數(shù)據(jù)和B4的數(shù)據(jù)完成垂直邊界4的濾波計算,分別獲得B3第二中間數(shù)據(jù)和B4第一中間數(shù)據(jù);并利用Tl的數(shù)據(jù)和BI第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界4的濾波計算,獲`得BI第三中間數(shù)據(jù); 步驟5,利用L2的數(shù)據(jù)和B5的數(shù)據(jù)完成垂直邊界5的濾波計算,獲得L2濾波數(shù)據(jù)和B5第一中間數(shù)據(jù),將L2濾波數(shù)據(jù)寫入外部存儲器;并利用T2的數(shù)據(jù)和B2第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)進行水平邊界5的濾波計算,獲得B2第三中間數(shù)據(jù); 步驟6,利用所述B5第一中間數(shù)據(jù)和B6的數(shù)據(jù)完成垂直邊界6的濾波計算,分別獲得B5第二中間數(shù)據(jù)和B6第一中間數(shù)據(jù);并利用T3的數(shù)據(jù)和B3第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界6的濾波計算,獲得B3第三中間數(shù)據(jù); 步驟7,利用所述B6第一中間數(shù)據(jù)和B7的數(shù)據(jù)完成垂直邊界7的濾波計算,分別獲得B6第二中間數(shù)據(jù)和B7第一中間數(shù)據(jù);并利用T4的數(shù)據(jù)和B4第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界7的濾波計算,獲得B4第二中間數(shù)據(jù); 步驟8,利用所述B7第一中間數(shù)據(jù)和B8的數(shù)據(jù)完成垂直邊界8的濾波計算,分別獲得B7第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù);并利用BI第三中間數(shù)據(jù)和B5第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界8的濾波計算,獲得BI濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B5第三中間數(shù)據(jù); 步驟9,利用L3的數(shù)據(jù)和B9的數(shù)據(jù)完成垂直邊界9的濾波計算,獲得L3濾波數(shù)據(jù)和B9第一中間數(shù)據(jù),將L3濾波數(shù)據(jù)寫入外部存儲器;并利用B2第三中間數(shù)據(jù)和B6第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界9的濾波計算,獲得B2濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B6第三中間數(shù)據(jù); 步驟10,利用所述B9第一中間數(shù)據(jù)和BlO的數(shù)據(jù)完成垂直邊界10的濾波計算,分別獲得B9第二中間數(shù)據(jù)和BlO第一中間數(shù)據(jù);并利用B3第三中間數(shù)據(jù)和B7第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界10的濾波計算,獲得B3濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B7第三中間數(shù)據(jù); 步驟11,利用所述BlO第一中間數(shù)據(jù)和Bll的數(shù)據(jù)完成垂直邊界11的濾波計算,分別獲得BlO第二中間數(shù)據(jù)和Bll第一中間數(shù)據(jù);并利用B4第二中間數(shù)據(jù)和B8第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界11的濾波計算,獲得B4濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B8第二中間數(shù)據(jù); 步驟12,利用所述Bll第一中間數(shù)據(jù)和B12的數(shù)據(jù)完成垂直邊界12的濾波計算,分別獲得Bll第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù);并利用B5第三中間數(shù)據(jù)和B9第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界12的濾波計算,獲得B5濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B9第三中間數(shù)據(jù); 步驟13,利用L4的數(shù)據(jù)和B13的數(shù)據(jù)完成垂直邊界13的濾波計算,獲得L4濾波數(shù)據(jù)和B13第一中間數(shù)據(jù),將L4濾波數(shù)據(jù)寫入外部存儲器;并利用B6第三中間數(shù)據(jù)和BlO第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界13的濾波計算,獲得B6濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得BlO第三中間數(shù)據(jù); 步驟14,利用所述B13第一中間數(shù)據(jù)和B14的數(shù)據(jù)完成垂直邊界14的濾波計算,分別獲得B13第二中間數(shù)據(jù)和B14第一中間數(shù)據(jù);并利用B7第三中間數(shù)據(jù)和Bll第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界14的濾波計算,獲得B7濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得Bll第三中間數(shù)據(jù); 步驟15,利用所述B14第一中間數(shù)據(jù)和B15的數(shù)據(jù)完成垂直邊界15的濾波計算,分別獲得B14第二中間數(shù)據(jù)和B15第一中間數(shù)據(jù);并利用B8第二中間數(shù)據(jù)和B12第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界15的濾波計`算,獲得B8濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B12第二中間數(shù)據(jù); 步驟16,利用所述B15第一中間數(shù)據(jù)和B16的數(shù)據(jù)完成垂直邊界16的濾波計算,分別獲得B15第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù);并利用B9第三中間數(shù)據(jù)和B13第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界16的濾波計算,獲得B9濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B13濾波數(shù)據(jù); 步驟17,利用L5的數(shù)據(jù)和B17的數(shù)據(jù)完成垂直邊界17的濾波計算,獲得L5濾波數(shù)據(jù)和B17第一中間數(shù)據(jù),將L5濾波數(shù)據(jù)寫入外部存儲器;并利用BlO第三中間數(shù)據(jù)和B14第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界17的濾波計算,獲得BlO濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B14濾波數(shù)據(jù); 步驟18,利用所述B17第一中間數(shù)據(jù)和B18的數(shù)據(jù)完成垂直邊界18的濾波計算,分別獲得B17第二中間數(shù)據(jù)和B18第一中間數(shù)據(jù);并利用Bll第三中間數(shù)據(jù)和B15第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界18的濾波計算,獲得Bll濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B15濾波數(shù)據(jù); 步驟19,利用L6的數(shù)據(jù)和B19的數(shù)據(jù)完成垂直邊界19的濾波計算,獲得L6濾波數(shù)據(jù)和B19第一中間數(shù)據(jù),將L6濾波數(shù)據(jù)寫入外部存儲器;并利用B12第二中間數(shù)據(jù)和B16第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界19的濾波計算,獲得B12濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B16濾波數(shù)據(jù); 步驟20,利用所述B19第一中間數(shù)據(jù)和B20的數(shù)據(jù)完成垂直邊界20的濾波計算,分別獲得B19第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù);并利用T5的數(shù)據(jù)和B17第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界20的濾波計算,獲得B17第三中間數(shù)據(jù); 步驟21,利用L7的數(shù)據(jù)和B21的數(shù)據(jù)完成垂直邊界21的濾波計算,分別獲得L7濾波數(shù)據(jù)和B21第一中間數(shù)據(jù),將L7濾波數(shù)據(jù)寫入外部存儲器;并利用T6的數(shù)據(jù)和B18第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界21的濾波計算,獲得B18第二中間數(shù)據(jù); 步驟22,利用所述B21第一中間數(shù)據(jù)和B22的數(shù)據(jù)完成垂直邊界22的濾波計算,分別獲得B21第二中間數(shù)據(jù)和B22第一中間數(shù)據(jù);并利用B17第三中間數(shù)據(jù)和B19第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界22的濾波計算,獲得B17濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B19濾波數(shù)據(jù); 步驟23,利用L8的數(shù)據(jù)和B23的數(shù)據(jù)完成垂直邊界23的濾波計算,分別獲得L8濾波數(shù)據(jù)和B23第一中間數(shù)據(jù),將L8濾波數(shù)據(jù)寫入外部存儲器;并利用B18第二中間數(shù)據(jù)和B20第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界23的濾波計算,獲得B18濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部存儲器,以及獲得B20濾波數(shù)據(jù); 步驟24,利用所述B23第一中間數(shù)據(jù)和B24的數(shù)據(jù)完成垂直邊界24的濾波計算,分別獲得B23第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù);并利用T7的數(shù)據(jù)和B21第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界24的濾波計算,獲得B21第三中間數(shù)據(jù); 步驟25,利用T8的數(shù)據(jù)和B22第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界24的濾波計算,獲得B22第二中間數(shù)據(jù); 步驟26,利用所述B21第三中間數(shù)據(jù)和B23第二中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界26的濾波計算,獲得B21濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部寄存器,以及獲得B23濾波數(shù)據(jù); 步驟27,利用所述B22第二中間數(shù)據(jù)和B24第一中間數(shù)據(jù)的轉(zhuǎn)置數(shù)據(jù)完成水平邊界27的濾波計算,獲得B22濾波數(shù)據(jù)轉(zhuǎn)置后寫入外部寄存器,以及獲得B24濾波數(shù)據(jù); 完成上述27步操作后,使用B4濾波數(shù)據(jù)、B8濾波數(shù)據(jù)、B12濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換左邊塊存儲器中L1、L2、L3及L4位置處的數(shù)據(jù);使用B13濾波數(shù)據(jù)、B14濾波數(shù)據(jù)、B15濾波數(shù)據(jù)及B16濾波數(shù)據(jù)分別替換上邊塊存儲器中T1、T2、T3及Τ4位置處的數(shù)據(jù);使用Β18濾波數(shù)據(jù)、Β20濾波數(shù)據(jù)、Β22濾波數(shù)據(jù)及Β24濾波數(shù)據(jù)分別替換左邊塊存儲器中L5、L6、L7及L8位置處的數(shù)據(jù);使用B19濾波數(shù)據(jù)、B20濾波數(shù)據(jù)、B23濾波數(shù)據(jù)及B24濾波數(shù)據(jù)分別替換上左邊塊存儲器中T5、T6、T7及T8位置處的數(shù)據(jù);以完成數(shù)據(jù)替換的LI至L8作為下一待濾波宏塊的左邊邊界塊,以完成數(shù)據(jù)替換的Tl至T8作為下一待濾波宏塊的上邊邊界塊。
2.根據(jù)權(quán)利要求1所述的H.264 二維并行后處理去塊濾波器硬件實現(xiàn)方法,其特征是:所述硬件實現(xiàn)方法的電路結(jié)構(gòu)包括左邊塊存儲器、上邊塊存儲器、當前宏塊存儲器、暫存器、轉(zhuǎn)置器單元及濾波計算單元; 所述左邊塊存儲器由單口 RAM組成,用于存儲左邊邊界塊L1-L8的數(shù)據(jù); 所述上邊塊存儲器由單口 RAM組成,用于存儲上邊邊界塊T1-T8的數(shù)據(jù); 所述當前宏塊存儲器由單口 RAM組成,用于存儲待濾波宏塊中B1-B24的數(shù)據(jù);所述暫存器用于暫存數(shù)據(jù),暫存周期數(shù)為四個周期; 所述轉(zhuǎn)置器用于對數(shù)據(jù)塊進行轉(zhuǎn)置,轉(zhuǎn)置一個數(shù)據(jù)塊需要四個周期; 所述濾波計算單元包括用于對水平邊界進行濾波的水平邊界濾波器和用于對垂直邊界進行濾波的垂直邊界濾波器,所述水平邊界濾波器和垂直邊界濾波器通過四個周期的濾波計算得到濾波結(jié)果。
【文檔編號】H04N19/86GK103731674SQ201410022905
【公開日】2014年4月16日 申請日期:2014年1月17日 優(yōu)先權(quán)日:2014年1月17日
【發(fā)明者】張多利, 杜高明, 宋宇鯤, 胡永春, 賈靖華 申請人:合肥工業(yè)大學