專利名稱:基于數(shù)字信號(hào)處理器的去塊濾波方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種基于DSP (Digital signal processor,凄t字4言號(hào)處理器)的去塊濾波方法。
背景技術(shù):
H.264是目前最為先進(jìn)的—見(jiàn)頻編碼標(biāo)準(zhǔn)之一 ,由ITU和ISO兩 大國(guó)際組織共同^^是出,已經(jīng)廣泛應(yīng)用在無(wú)線^L頻監(jiān)控、網(wǎng)絡(luò)流媒體 等到領(lǐng)域。為了去除由于量化和運(yùn)動(dòng)補(bǔ)償而在反變換后造成的圖像 塊效應(yīng),H.264標(biāo)準(zhǔn)引入了去塊效應(yīng)濾波器(De-Block Filter),以4
x 4塊為單位對(duì)塊的邊界進(jìn)4亍濾波,它能有效地改善一見(jiàn)頻圖<象質(zhì)量并 才是高編石馬器的壓縮歲文率。
在基于DSP的H.264編解碼器設(shè)計(jì)中,去塊濾波器是關(guān)鍵模塊 之一,其運(yùn)算量能輕易占到解碼器總運(yùn)算量的三分之一或編碼器總 運(yùn)算量的六分之一及以上。去塊濾波基于4x4塊進(jìn)行,需要大量的 數(shù)據(jù)讀寫操作,濾塊運(yùn)算比較復(fù)雜兼有很多判斷和跳轉(zhuǎn)操作, 一般
的實(shí)現(xiàn)方法中程序無(wú)法有效建立深度循環(huán)流水線,才及大的影響到了 DSP運(yùn)算性能的充分發(fā)揮。
下面簡(jiǎn)要介紹H.264的去塊濾塊過(guò)程
去塊濾波在宏塊的基礎(chǔ)上對(duì)其中每個(gè)4x4塊的進(jìn)行濾波,如圖 2中虛線所示,按先垂直后水平,先左后右、先上后下的順序,亮度塊中先濾垂直邊界從a到d,再濾水平邊界從e到h,色度塊從i 到1依次進(jìn)行。
去塊濾波器按照所述的濾波順序依次完成各個(gè)邊界的濾波計(jì) 算,最多會(huì)影響邊界兩側(cè)的三個(gè)像素點(diǎn),圖3顯示了垂直或水平邊 界兩側(cè)的四個(gè)^f象素點(diǎn),其中O0到07參與濾波過(guò)禾呈,Ol到06有 可能受到影響。濾波時(shí)根據(jù)每條邊界兩邊宏塊的量化因子、編碼模 式等參數(shù)計(jì)算出一個(gè)強(qiáng)度值(BS),介于0到4之間,濾波器根據(jù) 不同的強(qiáng)度值控制去塊效應(yīng)的程序,其中O表示不需要濾波,4表 示最強(qiáng)濾波模式。色度塊的強(qiáng)度值不需要單獨(dú)計(jì)算,與相應(yīng)的亮度 塊強(qiáng)度相同。
濾波強(qiáng)度和邊界兩側(cè)像素值的梯度影響共同濾波過(guò)程,只有在 下面兩個(gè)條4牛滿足后Ol、 02、 03和04、 05、 06才會(huì)^皮濾波。
BS〉0. (式1 )
|03-04|<a and |04-05|<|3 and |02-03|<p (式2 )
a和p值在標(biāo)準(zhǔn)中定義并取決于邊界兩側(cè)量化步長(zhǎng),隨著量化 步長(zhǎng)的增大而增大,a和p分別表示塊間和塊內(nèi)的門限,用來(lái)判斷 是圖像真實(shí)邊界還是塊效應(yīng)造成的邊界,對(duì)真實(shí)的邊界不進(jìn)行濾波 處理。
由于去塊濾波基于4x4塊進(jìn)行,需要大量的數(shù)據(jù)讀寫操作,濾 塊運(yùn)算比較復(fù)雜兼有很多判斷和跳轉(zhuǎn)操作, 一般的實(shí)現(xiàn)方法中程序 無(wú)法有效建立深度循環(huán)流水線,極大的影響到了 DSP運(yùn)算性能的充
分發(fā)揮。
發(fā)明內(nèi)容
鑒于以上所述的一個(gè)或多個(gè)問(wèn)題,本發(fā)明提出了一種基于DSP 的去塊濾波方法,可以節(jié)約運(yùn)4亍時(shí)間。
才艮據(jù)本發(fā)明,提出了一種基于數(shù)字信號(hào)處理器的去塊濾波方法, 其中,數(shù)字信號(hào)處理器包括并行指令,該方法包括以下步驟步驟 一,計(jì)算宏塊中垂直邊界的第一濾波強(qiáng)度和水平邊界的第二濾波強(qiáng) 度;步驟二,根據(jù)第一濾波強(qiáng)度和第二濾波強(qiáng)度來(lái)分別判斷是否需 要對(duì)垂直邊界進(jìn)行強(qiáng)濾波以及是否需要對(duì)水平邊界進(jìn)行強(qiáng)濾波;以 及步驟三,根據(jù)步驟二的判斷結(jié)果,利用并行指令對(duì)垂直邊界兩側(cè) 的多個(gè)邊界并行進(jìn)行濾波以及利用并行指令對(duì)水平邊界兩側(cè)的多個(gè) 邊界并行進(jìn)行濾波。
其中,步驟二包括在第一濾波強(qiáng)度等于第一預(yù)定值的情況下, 確定需要對(duì)垂直邊界進(jìn)行強(qiáng)濾波;在第一濾波強(qiáng)度小于第一預(yù)定值 的情況下,確定不需要對(duì)垂直邊界進(jìn)行強(qiáng)濾波;在第二濾波強(qiáng)度等 于第二預(yù)定值的情況下,確定需要對(duì)水平邊界進(jìn)行強(qiáng)濾波;以及在 第二濾波強(qiáng)度小于第二預(yù)定值的情況下,確定不需要對(duì)水平邊界進(jìn) 行強(qiáng)濾波。
其中,第一預(yù)定4直可以為4。第二預(yù)定^直可以為4。
其中,垂直邊界包括垂直亮度邊界和垂直色度邊界,以及水平 邊界包括水平亮度邊界和水平色度邊界。
其中,步驟三包括利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的 垂直邊界兩側(cè)的垂直亮度邊界和垂直色度邊界進(jìn)行濾波;利用并行 指令并行地對(duì)不需要進(jìn)行強(qiáng)濾波的垂直邊界兩側(cè)的垂直亮度邊界和 垂直色度邊界進(jìn)行濾波;利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的 水平邊界兩側(cè)的水平亮度邊界和水平色度邊界進(jìn)行濾波;以及利用并行指令并行地對(duì)不需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平亮度邊 界和水平色度邊界進(jìn)行濾波。
其中,數(shù)字信號(hào)處理器包括32比特的寄存器。
其中,利用并4亍指令并4亍地對(duì)需要進(jìn)4亍強(qiáng)濾波的垂直邊界兩側(cè) 的垂直亮度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取垂直亮度邊界兩 側(cè)對(duì)稱分布的兩行共16個(gè)亮度像素的第一亮度數(shù)據(jù),其中,宏塊包 括16亮度像素xl6亮度像素;將第一亮度數(shù)據(jù)分別放置在寄存器的 高16比特和低16比特以進(jìn)4亍并行計(jì)算;對(duì)第一亮度數(shù)據(jù)進(jìn)行并行 計(jì)算以獲得濾波后的第二亮度數(shù)據(jù);以及利用第二亮度數(shù)據(jù)置換第 一亮度數(shù)據(jù)。
利用并行指令并4于地對(duì)需要進(jìn)4于強(qiáng)濾波的垂直邊界兩側(cè)的垂直 色度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取垂直色度邊界兩側(cè)對(duì)稱 分布的兩行共8個(gè)色度像素的第一色度數(shù)據(jù),其中,宏塊包括8色 度像素x8色度像素;將第一色度數(shù)據(jù)分別放置在寄存器的高16比 特和低16比特以進(jìn)行并行計(jì)算;對(duì)第一色度數(shù)據(jù)進(jìn)行并行計(jì)算以獲 得濾波后的第二色度數(shù)據(jù);以及利用第二色度數(shù)據(jù)置換第 一 色度數(shù) 據(jù)。
利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平 亮度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取水平亮度邊界兩側(cè)對(duì)稱 分布的兩列共16個(gè)亮度像素的第三亮度數(shù)據(jù);將第三亮度數(shù)據(jù)分別 放置在寄存器的高16比特和低16比特以進(jìn)行并行計(jì)算;對(duì)第三亮 度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四亮度數(shù)據(jù);以及利用第四 亮度數(shù)據(jù)置換第三亮度數(shù)據(jù)。
利用并行指令并4于地對(duì)需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平 色度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取水平色度邊界兩側(cè)對(duì)稱分布的兩列共8個(gè)色度像素的第三色度數(shù)據(jù);將第三色度數(shù)據(jù)分別 放置在寄存器的高16比特和低16比特以進(jìn)行并行計(jì)算;對(duì)第三色 度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四色度數(shù)據(jù);以及利用第四 色度數(shù)據(jù)置換第三色度數(shù)據(jù)。
在本發(fā)明中,通過(guò)利用DSP的并行處理單元同時(shí)對(duì)多條邊界并 行進(jìn)行濾波,節(jié)約了運(yùn)行時(shí)間。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申 請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并 不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中
圖1是才艮據(jù)本發(fā)明實(shí)施例的基于DSP的去塊濾波方法的流程
圖2是濾波邊界和次序示意圖3是邊界兩側(cè)像素點(diǎn)示意圖4是濾波垂直邊界時(shí)的讀取和組合示意圖5是濾波水平邊界時(shí)的讀取和組合示意圖6去塊濾波模塊處理宏塊的流程圖;以及
圖7邊界濾波的處理流程圖,其中A為垂直邊界,B為水平邊
具體實(shí)施例方式
下面參考附圖,詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施方式
。
圖1是根據(jù)本發(fā)明實(shí)施例的基于DSP的去塊濾波方法的流程 圖。如圖1所示,根據(jù)本發(fā)明實(shí)施例的基于數(shù)字信號(hào)處理器的去塊 濾波方法包括以下步驟
步驟S102,計(jì)算宏塊中垂直邊界的第一濾波強(qiáng)度和水平邊界的 第二濾波強(qiáng)度;
步驟S104,根據(jù)第一濾波強(qiáng)度和第二濾波強(qiáng)度來(lái)分別判斷是否 需要對(duì)垂直邊界進(jìn)行強(qiáng)濾波以及是否需要對(duì)水平邊界進(jìn)行強(qiáng)濾波; 以及
步驟S106, 4艮據(jù)步驟S104的判斷結(jié)果,利用并4于指令對(duì)垂直 邊界兩側(cè)的多個(gè)邊界并行進(jìn)行濾波以及利用并行指令對(duì)水平邊界兩 側(cè)的多個(gè)邊界并4亍進(jìn)4亍濾波。
其中,數(shù)字信號(hào)處理器包括并行指令。
其中,步驟S104包括在第一濾波強(qiáng)度等于第一預(yù)定值的情況 下,確定需要對(duì)垂直邊界進(jìn)行強(qiáng)濾波;在第一濾波強(qiáng)度小于第一預(yù) 定^f直的情況下,確定不需要對(duì)垂直邊界進(jìn)4于強(qiáng)濾波;在第二濾波強(qiáng) 度等于第二預(yù)定值的情況下,確定需要對(duì)水平邊界進(jìn)行強(qiáng)濾波;以
及在第二濾波強(qiáng)度小于第二預(yù)定值的情況下,確定不需要對(duì)水平邊 界進(jìn)行強(qiáng)濾波。
其中,第一預(yù)定^直可以為4。第二預(yù)定^直可以為4。其中,垂直邊界包括垂直亮度邊界和垂直色度邊界,以及水平 邊界包括水平亮度邊界和水平色度邊界。
其中,步驟三包括利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的 垂直邊界兩側(cè)的垂直亮度邊界和垂直色度邊界進(jìn)行濾波;利用并行 指令并行地對(duì)不需要進(jìn)行強(qiáng)濾波的垂直邊界兩側(cè)的垂直亮度邊界和 垂直色度邊界進(jìn)行濾波;利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的 水平邊界兩側(cè)的水平亮度邊界和水平色度邊界進(jìn)行濾波;以及利用 并行指令并行地對(duì)不需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平亮度邊 界和水平色度邊界進(jìn)行濾波。
其中,數(shù)字信號(hào)處理器包括32比特的寄存器。
其中,利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的垂直邊界兩側(cè) 的垂直亮度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取垂直亮度邊界兩 側(cè)對(duì)稱分布的兩行共16個(gè)亮度像素的第一亮度數(shù)據(jù),其中,宏塊包 括16亮度像素xl6亮度像素;將第一亮度數(shù)據(jù)分別放置在寄存器的 高16比特和低16比特以進(jìn)行并行計(jì)算;對(duì)第一亮度數(shù)據(jù)進(jìn)行并行 計(jì)算以獲得濾波后的第二亮度數(shù)據(jù);以及利用第二亮度數(shù)據(jù)置換第 一亮度數(shù)據(jù)。
利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的垂直邊界兩側(cè)的垂直 色度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取垂直色度邊界兩側(cè)對(duì)稱 分布的兩行共8個(gè)色度像素的第一色度數(shù)據(jù),其中,宏塊包括8色 度像素x8色度像素;將第一色度數(shù)據(jù)分別放置在寄存器的高16比 特和低16比特以進(jìn)行并行計(jì)算;對(duì)第一色度數(shù)據(jù)進(jìn)行并行計(jì)算以獲 得濾波后的第二色度數(shù)據(jù);以及利用第二色度數(shù)據(jù)置換第 一 色度數(shù) 據(jù)。利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平
亮度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取水平亮度邊界兩側(cè)對(duì)稱 分布的兩列共16個(gè)亮度像素的第三亮度數(shù)據(jù);將第三亮度數(shù)據(jù)分別 ;故置在寄存器的高16比特和^f氐16比特以進(jìn)行并4于計(jì)算;對(duì)第三亮 度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四亮度數(shù)據(jù);以及利用第四 亮度數(shù)據(jù)置換第三亮度數(shù)據(jù)。
利用并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的水平邊界兩側(cè)的水平 色度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取水平色度邊界兩側(cè)對(duì)稱 分布的兩列共8個(gè)色度像素的第三色度數(shù)據(jù);將第三色度數(shù)據(jù)分別 放置在寄存器的高16比特和低16比特以進(jìn)行并行計(jì)算;對(duì)第三色 度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四色度數(shù)據(jù);以及利用第四 色度數(shù)據(jù)置換第三色度數(shù)據(jù)。
根據(jù)本發(fā)明的 一 個(gè)實(shí)例的去塊濾波器的才乘作方法包含以下步
驟
A. 計(jì)算宏塊中每條邊的濾波強(qiáng)度;
B. 如果宏塊的左垂直邊界BS-4,先處理該垂直亮度和色度邊 界。對(duì)于亮度塊一次性讀取邊界兩側(cè)各4字節(jié)的一個(gè)雙字H據(jù),連 續(xù)讀取相鄰2行,把兩個(gè)雙字?jǐn)?shù)據(jù)對(duì)應(yīng)字節(jié)分別置于8個(gè)32比特變 量的高^(guò)[氐16比特,1更于并^f亍計(jì)算,如圖4中所示。4吏用打包后的凝: 據(jù)并行計(jì)算每條邊界濾波時(shí)的判斷條件,這些條件指示該邊界是否 進(jìn)行濾波,濾波影響到的像素點(diǎn)和濾波時(shí)的濾波方法,計(jì)算出每個(gè)判 斷條件對(duì)應(yīng)一個(gè)32比特置換指示變量,置換變量中的高低16比特 分別指示該判斷條件在上下兩條邊界的真?zhèn)?;然后,?jì)算循環(huán)內(nèi)可 能更改的像素點(diǎn)的每一個(gè)更改值,緩存計(jì)算結(jié)果;最后使用置換變 量根據(jù)像素點(diǎn)的更改情況進(jìn)行置換,如果在濾波過(guò)程中做了更改, 則使用最新的計(jì)算結(jié)果,否則使用原像素,把處理的結(jié)果組裝成讀取時(shí)的雙字lt據(jù), 一次性寫入內(nèi)存。色度塊則一次性讀耳又邊界兩側(cè)
各2字節(jié)的一個(gè)單字?jǐn)?shù)據(jù),之后的處理過(guò)程與亮度塊類似。
C. 左垂直邊界BS=4時(shí)只處理其余的塊內(nèi)邊界,宏塊的左垂直 邊界BS-4時(shí)左垂直邊界和塊內(nèi)邊界一起進(jìn)行處理,。與步驟B中 的才喿4乍方法 NH以, 一;欠寸生讀耳又只又字凄史才居,^f旦只十p0、 q0禾口p7、 q7 (圖 4)不估文處理,時(shí)于相應(yīng)位置仍按雙字寫回。
D. 如果宏塊的上水平邊界BS二4,先處理該水平亮度和色度邊 界。對(duì)于亮度塊一次性讀取4字節(jié)的一個(gè)單字,連續(xù)讀取邊界上下 的相鄰8行數(shù)據(jù),使用打包后的數(shù)據(jù)并行計(jì)算每條邊界濾波時(shí)的判 斷條件,這些條件指示該邊界是否進(jìn)行濾波,濾波影響到的像素點(diǎn)和 濾波時(shí)的濾波方法,計(jì)算出每個(gè)判斷條件對(duì)應(yīng)一個(gè)32比特置換指示 變量,置換變量的每個(gè)字節(jié)分別指示該條件在左右四條邊界上的真 偽。然后把數(shù)據(jù)拆分成16個(gè)32比特變量,高低16比特分別放置兩 個(gè)字節(jié)數(shù)據(jù),如圖5中所示。計(jì)算循環(huán)內(nèi)可能更改的像素點(diǎn)的每一 個(gè)更改值,緩存計(jì)算結(jié)果。把同一像素點(diǎn)的更改值打包組裝,使用 置換變量對(duì)計(jì)算結(jié)果或原像素值進(jìn)行邏輯處理,如果在濾波過(guò)程中 估文了更改,則4吏用新的計(jì)算結(jié)果,否則^f吏用原^象素,完成后一次性 寫入內(nèi)存。色度塊則連續(xù)讀耳又邊界上下的相鄰4^f亍,之后的處理過(guò) 程與亮度塊類似。
E. 上水平邊界BS=4只處理其余的塊內(nèi)邊界,宏塊的上水平邊 界BS^4時(shí)上水平邊界和塊內(nèi)邊界一起進(jìn)行處理。與步驟D中的操 作方法相似,仍一次性讀取單字?jǐn)?shù)據(jù),但只連續(xù)讀取水平邊界上下 相鄰6行。
所述去塊濾波器操作方法中的半字為2字節(jié)16比特長(zhǎng)度,單字 為4字節(jié)32比特長(zhǎng)度,所述的雙字為8字節(jié)64比特長(zhǎng)度。所述去塊濾塊器操作方法中的濾波處理按雙半字指令并行進(jìn)行。其中,所
述宏塊為16 x 16 Y象素單位。
通過(guò)^^據(jù)本發(fā)明實(shí)施例的去塊濾波方法,可以大大4是高DSP做 去塊濾塊處理時(shí)的并行計(jì)算程度,去塊濾波模塊的運(yùn)行時(shí)間縮短了 近一半,并且隨碼率變動(dòng)的波動(dòng)纟艮少,增強(qiáng)了系統(tǒng)的實(shí)時(shí)性。本技 術(shù)方案適用于各種在DSP實(shí)現(xiàn)的H.264編解碼器。
在本發(fā)明的實(shí)施例中,充分利用內(nèi)存數(shù)據(jù)總線的寬度和DSP并 行計(jì)算能力,減少內(nèi)存訪問(wèn)次數(shù),并行同時(shí)進(jìn)行兩條或四條邊界的 濾波計(jì)算,并使用置換的方式替代因判斷造成的跳轉(zhuǎn)操作,增大了 循環(huán)時(shí)的流水線深度,最終較大程度的縮短了去塊濾波模塊的處理 時(shí)間,提高了程序的執(zhí)行效率。
在本發(fā)明的一個(gè)實(shí)施例中,采用的DSP為TI的DM642,主頻 600MHz,包含碼流輸入和-現(xiàn)頻輸出端口 。在該硬件平臺(tái)上使用線 性匯編實(shí)現(xiàn)一個(gè)實(shí)時(shí)的H.264解碼器,去塊濾波才莫塊以宏塊為處理 單元,按從上到下、從左到右的順序依次完成整幀圖像的去塊濾波 處理。圖6是一個(gè)宏塊的去塊濾塊處理流程圖,如圖6所示,處理 流程包含以下步驟
步驟S602,計(jì)算一個(gè)宏塊各個(gè)邊界的濾波強(qiáng)度,如果當(dāng)前宏塊 或相鄰左/上宏塊為幀內(nèi)編碼(intra)塊,對(duì)應(yīng)的宏塊垂直/水平邊界 置強(qiáng)濾波標(biāo)志,然后根據(jù)編碼模式、運(yùn)動(dòng)向量等參數(shù)繼續(xù)計(jì)算其余 邊界強(qiáng)度(如果當(dāng)前宏塊為幀內(nèi)編碼塊,該宏塊塊內(nèi)邊界強(qiáng)度都為 3)。
步驟S604,處理需要強(qiáng)濾波宏塊左垂直邊界。如圖7中所示, 使用LDNDW讀入相鄰兩行的雙字?jǐn)?shù)據(jù)S702;使用UNPKHU4、 PAKC2、 PACKH2等指令可以達(dá)到如圖4所示的組合效果,組合后同一變量在不同邊界的像素點(diǎn)值被置于一個(gè)32比特變量的高低16 比特,以《更并^f亍處理S704;判斷兩條邊界是否同時(shí)滿足濾波條件(文 中的式1和式2),因并行計(jì)算上下相鄰的兩條邊界的條件,也只有 在都不滿足濾波門限時(shí)才跳出該次濾波處理,這樣做可能會(huì)多做一 條無(wú)用的邊界濾波處理,但在實(shí)測(cè)時(shí)發(fā)現(xiàn)這種方式仍比分別判斷上 下兩條邊界是否滿足濾波門限的效率要高S706;計(jì)算循環(huán)內(nèi)判斷條 件,使用CMPLT2、 ABS2等指令并行計(jì)算出結(jié)果,使用XPND2 指令得到置換指示變量S708;計(jì)算該濾波循環(huán)內(nèi)待修改像素點(diǎn)所有 的可能的修改值,記錄結(jié)果S710;根據(jù)每個(gè)判斷條件可能影響的像 素,使用AND、 OR和ANDN等邏輯指令對(duì)原始像素和更改結(jié)果進(jìn) 行邏輯運(yùn)算,把未修改的像素點(diǎn)置換為原始像素值,多次修改的像 素點(diǎn)置換為最終的更改值S712;打包組合成讀入時(shí)的形態(tài),使用 STNDW指令寫入內(nèi)存S714。色度塊處理類似,只是讀入數(shù)據(jù)個(gè)數(shù) 和計(jì)算方法不同。
步驟S606,處理不需要強(qiáng)濾塊的宏塊和塊內(nèi)垂直邊界。處理與 步驟S604中相似,但使用不同的濾波方法,影響到的像素也較少。
步驟S608,處理需要強(qiáng)濾波的宏塊水平邊界。如圖7中所示, 使用LDW讀入相鄰兩行的單字?jǐn)?shù)據(jù)S722;因讀入的數(shù)據(jù)可以直接 進(jìn)行并行計(jì)算,使用ABS4, CMPLTU4等指令先判斷四條邊界是否 同時(shí)滿足濾波條件,只有都不滿足濾波條件(文中式1和式2)時(shí), 才進(jìn)行下一塊的處理S724;計(jì)算循環(huán)內(nèi)判斷條件,使用CMPLTU4、 SUBABS4等指令并行計(jì)算出結(jié)果,使用XPND4指令得到置換指示 變量S726;使用UNPKHU4和UNPKLU4指令即可以達(dá)到如圖5 所示的組合效果,組合后同一變量在相鄰兩條邊界的像素值被置于 一個(gè)32比特變量的高低16比特,以便并行處理S728;計(jì)算該濾波 循環(huán)內(nèi)待修改像素點(diǎn)所有的修改值,每個(gè)修改值按讀入時(shí)的形態(tài)打 包,記錄結(jié)果S730;把像素點(diǎn)的每個(gè)修改值打包重組為讀入時(shí)的形 態(tài)S732;根據(jù)每個(gè)判斷條件可能影響的像素,使用AND、 OR和ANDN等邏輯指令對(duì)原始像素和更改結(jié)果進(jìn)行邏輯,把未修改的像 素點(diǎn)置換為原始像素值,多次修改的像素點(diǎn)置換為最終的更改值, 打包組合成讀入時(shí)的形態(tài),使用STDW指令寫入內(nèi)存S734。色度 塊處理類似,只是讀入lt據(jù)個(gè)凄t和計(jì)算方法不同。步驟S610,處理不需要強(qiáng)濾塊的宏塊和塊內(nèi)水平邊界。處理與 步驟S608中相似,但使用不同的濾波方法,影響到的像素也較少。通過(guò)本發(fā)明,提出了一種基于DSP的去塊濾波方法,利用DSP 的并行處理單元同時(shí)對(duì)多條邊界并行進(jìn)行濾波,增大數(shù)字讀寫位寬, 減少數(shù)據(jù)的讀寫次數(shù),降低對(duì)內(nèi)存的訪問(wèn)頻率;另外以較小的代價(jià) 消除了因判斷造成的跳轉(zhuǎn)操作,可以使程序建立起深度流水線,充 分發(fā)揮了 DSP的并行運(yùn)算性能。使用本發(fā)明中提出的方法設(shè)計(jì)的去 塊濾波器,運(yùn)算時(shí)間能減少40%左右。使用本發(fā)明中提出的技術(shù)方案后,在解碼D1分辨率下的H.264 實(shí)時(shí)碼流時(shí),去塊濾波器的平均每幀的處理時(shí)間由14.4秒降低到6.7 秒、,降幅為53.4%。以上所述l又為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明, 對(duì)于本領(lǐng)域的才支術(shù)人員來(lái)"i兌,本發(fā)明可以有各種更改和變化。凡在 本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于數(shù)字信號(hào)處理器的去塊濾波方法,其特征在于,包括以下步驟步驟一,計(jì)算宏塊中垂直邊界的第一濾波強(qiáng)度和水平邊界的第二濾波強(qiáng)度;步驟二,根據(jù)所述第一濾波強(qiáng)度和所述第二濾波強(qiáng)度來(lái)分別判斷是否需要對(duì)所述垂直邊界進(jìn)行強(qiáng)濾波以及是否需要對(duì)所述水平邊界進(jìn)行強(qiáng)濾波;步驟三,根據(jù)所述步驟二的判斷結(jié)果,利用并行指令對(duì)所述垂直邊界兩側(cè)的多個(gè)邊界并行進(jìn)行濾波以及利用所述并行指令對(duì)所述水平邊界兩側(cè)的多個(gè)邊界并行進(jìn)行濾波。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟二包括在所述第一濾波強(qiáng)度等于第一預(yù)定值的情況下,確定需要 對(duì)所述垂直邊界進(jìn)行強(qiáng)濾波;在所述第一濾波強(qiáng)度小于所述第一預(yù)定值的情況下,確定 不需要對(duì)所述垂直邊界進(jìn)行強(qiáng)濾波;在所述第二濾波強(qiáng)度等于第二預(yù)定值的情況下,確定需要 對(duì)所述水平邊界進(jìn)行強(qiáng)濾波;以及在所述第二濾波強(qiáng)度小于所述第二預(yù)定值的情況下,確定 不需要對(duì)所述水平邊界進(jìn)行強(qiáng)濾波。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一預(yù)定值為 4。
4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第二預(yù)定值為 4。
5. 才艮據(jù)權(quán)利要求1所述的方法,其特征在于,所述垂直邊界包括 垂直亮度邊界和垂直色度邊界,以及所述水平邊界包括水平亮 度邊界和水平色度邊界。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟三包括利用所述并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的所述垂直 邊界兩側(cè)的所述垂直亮度邊界和所述垂直色度邊界進(jìn)行濾波;利用所述并行指令并行地對(duì)不需要進(jìn)行強(qiáng)濾波的所述垂 直邊界兩側(cè)的所述垂直亮度邊界和所述垂直色度邊界進(jìn)行濾 波;利用所述并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的所述水平 邊界兩側(cè)的所述水平亮度邊界和所述水平色度邊界進(jìn)行濾波; 以及利用所述并4亍指令并4亍地對(duì)不需要進(jìn)4亍強(qiáng)濾波的所述水 平邊界兩側(cè)的所述水平亮度邊界和所述水平色度邊界進(jìn)行濾 波。
7. 才艮據(jù)權(quán)利要求6所述的方法,其特征在于,所述數(shù)字信號(hào)處理 器包括32比特的寄存器。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,利用所述并行指令 并4亍地對(duì)需要進(jìn)4于強(qiáng)濾波的所述垂直邊界兩側(cè)的所述垂直亮 度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取所述垂直亮度邊界兩側(cè)對(duì)稱分布的兩行共16個(gè)亮度 像素的第一亮度數(shù)據(jù),其中,所述宏塊包括16亮度像素xl6 亮度像素;將所述第一亮度數(shù)據(jù)分別放置在所述寄存器的高16比特 和<氐16比特以進(jìn)4于并4于計(jì)算;對(duì)所述第 一 亮度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第二 亮度數(shù)據(jù);以及利用所述第二亮度數(shù)據(jù)置換所述第一亮度數(shù)據(jù)。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,利用所述并行指令 并4亍地對(duì)需要進(jìn)4亍強(qiáng)濾波的所述垂直邊界兩側(cè)的所述垂直色 度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取所述垂直色度邊界兩側(cè)對(duì)稱分布的兩行共8個(gè)色度 像素的第一色度數(shù)據(jù),其中,所述宏塊包括8色度像素x8色 度像素;將所述第一色度數(shù)據(jù)分別放置在所述寄存器的高16比特 和j氐16比特以進(jìn)4于并4于計(jì)算;對(duì)所述第 一 色度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第二 色度數(shù)據(jù);以及利用所述第二色度數(shù)據(jù)置換所述第 一 色度數(shù)據(jù)。
10. 才艮據(jù)權(quán)利要求9所述的方法,其特征在于,利用所述并行指令 行地對(duì)需要進(jìn)行強(qiáng)濾波的所述水平邊界兩側(cè)的所述水平亮度 邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取所述水平亮度邊界兩側(cè)對(duì)稱分布的兩列共16個(gè)亮度 像素的第三亮度數(shù)據(jù);將所述第三亮度數(shù)據(jù)分別放置在所述寄存器的高16比特 和^f氐16比特以進(jìn)4亍并4亍計(jì)算;對(duì)所述第三亮度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四 亮度數(shù)據(jù);以及利用所述第四亮度數(shù)據(jù)置換所述第三亮度數(shù)據(jù)。
11. 根據(jù)權(quán)利要求10所述的方法,其特征在于,利用所述并行指令并行地對(duì)需要進(jìn)行強(qiáng)濾波的所述水平邊界兩側(cè)的所述水平色度邊界進(jìn)行濾波的步驟進(jìn)一步包括讀取所述水平色度邊界兩側(cè)對(duì)稱分布的兩列共8個(gè)色度 像素的第三色度數(shù)據(jù);將所述第三色度數(shù)據(jù)分別放置在所述寄存器的高16比特 和低16比特以進(jìn)行并行計(jì)算;對(duì)所述第三色度數(shù)據(jù)進(jìn)行并行計(jì)算以獲得濾波后的第四 色度數(shù)據(jù);以及利用所述第四色度數(shù)據(jù)置換所述第三色度數(shù)據(jù)。
全文摘要
本發(fā)明提出了基于DSP的去塊濾波方法,包括步驟一,計(jì)算宏塊中垂直邊界的第一濾波強(qiáng)度和水平邊界的第二濾波強(qiáng)度;步驟二,根據(jù)第一濾波強(qiáng)度和第二濾波強(qiáng)度來(lái)分別判斷是否需要對(duì)垂直邊界進(jìn)行強(qiáng)濾波以及是否需要對(duì)水平邊界進(jìn)行強(qiáng)濾波;以及步驟三,根據(jù)步驟二的判斷結(jié)果,利用并行指令對(duì)垂直邊界兩側(cè)的多個(gè)邊界并行進(jìn)行濾波以及利用并行指令對(duì)水平邊界兩側(cè)的多個(gè)邊界并行進(jìn)行濾波。在本發(fā)明中,通過(guò)利用DSP的并行處理單元同時(shí)對(duì)多條邊界并行進(jìn)行濾波,節(jié)約了運(yùn)行時(shí)間。
文檔編號(hào)H04N7/26GK101321290SQ20081011678
公開(kāi)日2008年12月10日 申請(qǐng)日期2008年7月17日 優(yōu)先權(quán)日2008年7月17日
發(fā)明者剛 張 申請(qǐng)人:北京數(shù)碼視訊科技股份有限公司