專利名稱:用于對圖像編碼的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圖像處理設(shè)備和方法,更具體而言,涉及用于減少圖像的殘余信號(hào)量并對殘余信號(hào)進(jìn)行熵編碼的設(shè)備。
背景技術(shù):
為了有效率地在低數(shù)據(jù)速率下傳輸活動(dòng)圖畫信號(hào)同時(shí)保持高的圖像質(zhì)量,已經(jīng)提出了各種數(shù)字活動(dòng)圖畫壓縮技術(shù)。這些活動(dòng)圖畫壓縮技術(shù)包括H. 261、活動(dòng)圖畫專家組 (MPEG) -2/H. 262、H. 263、MPEG-4、高級(jí)視頻編碼(AVC) /H. 264等。壓縮技術(shù)包括離散余弦變換(DCT)方案、運(yùn)動(dòng)補(bǔ)償(MC)方案、量化方案、熵編碼方案等。
為了進(jìn)行圖像編碼,將每幅圖畫劃分成多個(gè)切片,將每個(gè)切片劃分成預(yù)定大小的多個(gè)編碼塊。由于高清晰度(HD)等級(jí)或更高級(jí)別的圖像具有很多平坦區(qū)域,所以可以通過用大于宏塊(MB)的編碼塊對圖像編碼來改善圖像壓縮。
因此,在編碼單元的大小增大時(shí),需要新的預(yù)測技術(shù),并需要在變換編碼、熵編碼、 幀內(nèi)預(yù)測和幀間預(yù)測中的改變,以提高圖像壓縮比而不增加圖像壓縮的復(fù)雜性
發(fā)明內(nèi)容
技術(shù)問題
本發(fā)明涉及一種對活動(dòng)圖像編碼的設(shè)備,更具體而言,涉及一種對預(yù)定大小或更大的活動(dòng)圖像的已變換殘余信號(hào)進(jìn)行有效編碼的設(shè)備。
技術(shù)方案
本發(fā)明的一個(gè)方面提供了一種為活動(dòng)圖畫進(jìn)行編碼的設(shè)備,包括編碼模式判決器,被配置成將輸入圖像劃分成編碼單元并確定所述編碼單元的預(yù)測模式和所述編碼單元的預(yù)測編碼塊的大??;變換/量化單元,被配置成對所述預(yù)測編碼塊和通過幀內(nèi)預(yù)測或幀間預(yù)測產(chǎn)生的預(yù)測塊之間的殘余塊進(jìn)行變換和量化;逆量化/變換單元,被配置成將所量化的變換塊逆量化和逆變換到頻域中;去塊濾波器,被配置成向從所述逆量化/變換解碼單元接收到的圖像數(shù)據(jù)應(yīng)用去塊濾波過程;預(yù)測塊發(fā)生器,被配置成產(chǎn)生所述預(yù)測編碼塊; 以及熵編碼器,被配置成對來自變換編碼/量化單元的量化變換系數(shù)進(jìn)行編碼,其中,在變換塊的大小等于或大于預(yù)定大小時(shí),所述熵編碼器將量化變換系數(shù)劃分成多個(gè)子集,并對所述每個(gè)子集的非零量化變換系數(shù)進(jìn)行掃描和熵編碼。
有益效果
本發(fā)明能夠通過減少要進(jìn)行編碼塊的殘余信號(hào)量來提高編碼效率。而且,通過在熵編碼期間有效地掃描不為O的量化變換系數(shù),使熵編碼所需的比特?cái)?shù)量最小化,從而可以提高編碼效率。
圖1示出了根據(jù)本發(fā)明示范性實(shí)施例的塊劃分結(jié)構(gòu)。
圖2示出了根據(jù)本發(fā)明的確定編碼模式的方法。
圖3示出了根據(jù)本發(fā)明的用于對活動(dòng)圖畫進(jìn)行編碼的設(shè)備。
圖4到6是示出了根據(jù)本發(fā)明的自適應(yīng)塊劃分方法的示意圖。
圖7是示出了對殘余信號(hào)進(jìn)行編碼的方法的示意圖。
具體實(shí)施方式
在下文中,將參考附圖詳細(xì)描述本發(fā)明的各實(shí)施例。不過,本發(fā)明不限于下文公開的示范性實(shí)施例,而是可以通過各種方式實(shí)施。因此,本發(fā)明很多其他修改和變化都是可能的,要理解的是,在所公開的概念范圍之內(nèi),可以通過與具體所述不同的方式實(shí)踐本發(fā)明。
為了進(jìn)行圖像編碼,將每幅圖畫劃分成多個(gè)切片,將每個(gè)切片劃分成預(yù)定大小的多個(gè)編碼單元。由于高清晰度(HD)等級(jí)或更高級(jí)別的圖像具有很多平坦區(qū)域,所以可以通過用大于16X16大小的宏塊(MB)的編碼單元對圖像進(jìn)行編碼來改善圖像壓縮比。
根據(jù)本發(fā)明的編碼單元可以是大小為32X32的塊或大小為64X64的塊或大小為 16X16的MB。而且,大小 為8X8或更小的塊可以是編碼單元。為了方便起見,將最大的編碼單元稱為超級(jí)宏塊(SMB)??梢愿鶕?jù)表示最小編碼單元的大小的信息和深度信息來確定 SMB的大小。深度信息表示SMB的大小和最小編碼單元大小之間的差異。
于是,用于對圖像序列的所有圖畫進(jìn)行編碼的編碼單元可以是SMB或SMB的子塊。 可以默認(rèn)或在序列報(bào)頭中指定編碼單元的允許大小。當(dāng)在序列報(bào)頭中指定編碼單元的允許大小時(shí),根據(jù)最小編碼單元的大小和深度信息指定編碼單元的允許大小。
將每幅圖畫或切片劃分成多個(gè)SMB單元。每個(gè)SMB或SMB的子塊可以是幀內(nèi)編碼或中貞間編碼和解碼的。
為了使得編碼單元(即SMB或SMB的子塊)能夠被正確地解碼,編碼器應(yīng)當(dāng)向比特流中添加關(guān)于編碼單元的預(yù)測編碼塊的大小信息和表示編碼單元已經(jīng)以幀內(nèi)預(yù)測模式或幀間預(yù)測模式進(jìn)行了編碼的預(yù)測模式信息。為此,應(yīng)當(dāng)在編碼單元的比特流中包括預(yù)測模式信息和表示預(yù)測編碼塊大小的信息。預(yù)測模式根據(jù)切片的類型而改變。
當(dāng)切片類型是幀內(nèi)(I)時(shí),切片中的所有預(yù)測編碼塊都是幀內(nèi)預(yù)測的,并且可以根據(jù)預(yù)測編碼塊的大小確定預(yù)測編碼塊的預(yù)測類型。不過,在切片類型是單向預(yù)測(P)或雙向預(yù)測(B)時(shí),可以根據(jù)預(yù)測模式信息和預(yù)測編碼塊的大小來確定預(yù)測編碼塊的預(yù)測類型。 于是,優(yōu)選基于切片類型、預(yù)測模式信息和表示預(yù)測編碼塊大小的信息來產(chǎn)生預(yù)測編碼塊的預(yù)測類型,并將所產(chǎn)生的預(yù)測類型插入編碼單元的報(bào)頭中。
當(dāng)預(yù)測編碼塊是幀內(nèi)編碼時(shí),需要向解碼器傳送用于幀內(nèi)預(yù)測的幀內(nèi)預(yù)測模式信息以及預(yù)測類型。
當(dāng)預(yù)測編碼塊是幀間編碼時(shí),通過單向預(yù)測和雙向預(yù)測的任一種對預(yù)測編碼塊進(jìn)行編碼。在單向預(yù)測的情形中,比特流應(yīng)當(dāng)包括關(guān)于參考圖畫的信息和用于預(yù)測的運(yùn)動(dòng)矢量以及用于單向預(yù)測的預(yù)測編碼塊的預(yù)測類型。在雙向預(yù)測的情形中,預(yù)測編碼塊的報(bào)頭應(yīng)當(dāng)包括關(guān)于兩個(gè)參考圖畫的信息和用于雙向預(yù)測的運(yùn)動(dòng)矢量信息以及用于雙向預(yù)測的塊的預(yù)測類型。運(yùn)動(dòng)矢量信息可以包括表示殘余運(yùn)動(dòng)矢量和運(yùn)動(dòng)矢量預(yù)測器的信息。
圖1示出了層次劃分結(jié)構(gòu),表示根據(jù)本發(fā)明示范性實(shí)施例用于64X64大小的SMB 的允許預(yù)測編碼塊。
在將SMB用作編碼單元時(shí),優(yōu)選具有如圖1所示的四個(gè)子塊劃分步驟,但塊的劃分不限于四個(gè)子塊劃分步驟。在有四個(gè)子塊劃分步驟時(shí),可以定義總共13個(gè)預(yù)測性塊類型 (64X64、64X32、32X64、32X32、32X 16、16X32、16X 16、16X8、8X 16、8X8、8X4、4X8 和 4X4)。
在這里,對于大小比MB更大的幀間預(yù)測編碼塊,可能沒有要傳送的數(shù)據(jù)。于是,優(yōu)選在預(yù)測編碼塊的大小為64 X 64時(shí)新增加MB64_SKIP模式,在預(yù)測編碼塊的大小為32 X 32 時(shí),增加MB32_SKIP模式。為了向解碼器傳送模式信息,可以使用MB64_SKIP_flag或MB32_ SKIP_flag。在這些標(biāo)志(flag)的值是I時(shí),沒有對應(yīng)預(yù)測編碼塊的傳送數(shù)據(jù)。
同時(shí),在多個(gè)連續(xù)SMB未編碼時(shí),可以僅在第一個(gè)SMB中插入MB64_SKIP_f lag,可以在后續(xù)SMB中省略。在這種情況下,可以向切片或第一個(gè)SMB添加連續(xù)跳過的SMB的數(shù)量。具體而言,在多個(gè)連續(xù)的SMB未編碼時(shí),將第一個(gè)SMB的SMB_SKIP_flag設(shè)置為1,也可以共同地應(yīng)用到幾個(gè)連續(xù)SMB。在這種情況下,可以向切片添加與未被連續(xù)編碼的SMB的數(shù)量(例如SMB_SKIP_number)對應(yīng)的信息。
在編碼單元的大小為32X32時(shí),除了現(xiàn)有的大小為16X 16、16X8、8X 16、8X8、 8X4、4X8或4X4的塊之外,還可以將大小為32X 32、32X 16或16X 32的塊用作預(yù)測編碼塊。
在幀間預(yù)測模式中,編碼單元的預(yù)測類型(Mb32_type)可以在預(yù)測類型為O時(shí)表示32X32分割,在預(yù)測類型為I時(shí)表示32 X 16分割,在預(yù)測類型為2時(shí)表示16X32分割, 在預(yù)測類型為3時(shí)表示16 X 16分割。
在將編碼單元?jiǎng)澐殖伤膫€(gè)子編碼單元時(shí),對所述四個(gè)子編碼單元進(jìn)行編碼并按照光柵掃描次序傳送。在這種情況下,可以針對每個(gè)編碼單元傳送量化參數(shù),并且在將同一量化參數(shù)應(yīng)用于所有子編碼單元時(shí),可以僅在超級(jí)編碼單元的報(bào)頭中傳送一次。不過,當(dāng)需要在子編碼單元中改變量化參數(shù)時(shí),可以僅傳送與上層編碼單元或同一層級(jí)的前面編碼單元的量化參數(shù)不同的值。
可以利用四叉樹方法劃分每個(gè)子編碼單元,也可以利用四叉樹方法傳送經(jīng)編碼后的塊圖案(cbp)和殘余系數(shù)。在使用I比特cbp時(shí),cbp的值I可以表示編碼單元具有至少一個(gè)不為O的系數(shù),cbp的值O可以表示所有系數(shù)都是O。
圖2示出了根據(jù)本發(fā)明的在SMB大小為64X64時(shí)確定編碼模式的方法。
如圖2所示,在SMB是64X 64塊時(shí),編碼器判斷是否能夠跳過64X 64塊,并在能夠跳過64X64塊時(shí)將跳過(SKIP)模式確定為編碼模式。此時(shí),應(yīng)當(dāng)向解碼器傳送mb64_ skip_flag。在64X64塊有要進(jìn)行編碼的數(shù)據(jù)但未劃分成32 X 32塊時(shí),在SMB報(bào)頭中插入 SMB的編碼大小(該編碼大小是64X64、64X32和32X64之一)以及關(guān)于SMB是幀內(nèi)編碼還是幀間編碼的信息,并且利用經(jīng)編碼的數(shù)據(jù)產(chǎn)生SMB數(shù)據(jù)塊。
當(dāng)在64X64塊有要進(jìn)行編碼的數(shù)據(jù)且被劃分成32X32塊時(shí),同樣判斷在對應(yīng)的 32X32塊中是否有要進(jìn)行編碼的數(shù)據(jù)。當(dāng)在對應(yīng)的32X32塊中沒有要進(jìn)行編碼的數(shù)據(jù)時(shí), 將SKIP模式確定為32X32塊模式,將mb32_skip_flag傳送到解碼器。
不過,當(dāng)32X32塊有要進(jìn)行編碼的數(shù)據(jù)但未被劃分成16 X 16塊時(shí),在32 X 32塊的報(bào)頭中插入32X32塊的編碼大小(該編碼大小是32X32、32X16和16 X 32之一)以及關(guān)于32X32塊是幀內(nèi)編碼還是幀間編碼的信息,并且利用經(jīng)編碼的數(shù)據(jù)產(chǎn)生數(shù)據(jù)塊。
當(dāng)32X32塊有要進(jìn)行編碼的數(shù)據(jù)且被劃分成16X 16塊時(shí),判斷在對應(yīng)的16X 16 塊中是否有要進(jìn)行編碼的數(shù)據(jù)。當(dāng)在對應(yīng)的16X16塊中沒有要進(jìn)行編碼的數(shù)據(jù)時(shí),將SKIP 模式確定為16X 16塊模式,并且將mbl6_skip_flag傳送到解碼器。另一方面,當(dāng)在對應(yīng)的 16X16塊中有要進(jìn)行編碼的數(shù)據(jù)時(shí),在16X16塊的報(bào)頭中插入16X16塊的編碼大小(該編碼大小是16X16、16X8和8X16之一)以及關(guān)于16X 16塊是幀內(nèi)編碼還是幀間編碼的信息,并且利用經(jīng)編碼的數(shù)據(jù)產(chǎn)生數(shù)據(jù)塊。
在使用具有這樣不同大小的塊時(shí),塊大小信息可以根據(jù)每個(gè)序列層次、圖畫層次、 切片層次、SMB或SMB的子編碼單元而改變。
圖3示出了根據(jù)本發(fā)明的用于對活動(dòng)圖畫進(jìn)行編碼的設(shè)備。
參考圖3,根據(jù)本發(fā)明的對活動(dòng)圖畫進(jìn)行編碼的設(shè)備包括編碼模式判決器110、變換/量化單元120、熵編碼器130、幀內(nèi)預(yù)測器140、運(yùn)動(dòng)補(bǔ)償器150、運(yùn)動(dòng)估算器155、逆量化 /變換單元160、去塊濾波器170、圖畫存儲(chǔ)器180、加法器和減法器。
編碼模式判決器110分析輸入的視頻信號(hào)以將圖畫劃分成編碼單元,并針對每個(gè)編碼單元確定預(yù)測編碼塊的大小和預(yù)測模式。而且,編碼模式判決器110向減法器發(fā)送與所確定大小對應(yīng)的預(yù)測編碼塊。
變換/量化單元120確定變換塊的大小以變換從減法器接收到的殘余信號(hào)。變換塊的大小可以等于或小于預(yù)測編碼塊的大小,但可以在幀間模式中進(jìn)行不同設(shè)置。換言之, 在幀間模式中,變換塊的大小可以大于預(yù)測編碼塊的大小。在這種情況下,變換/量化單元 120從減法器接收多個(gè)殘余塊并產(chǎn)生由多個(gè)殘余塊構(gòu)成的一個(gè)變換塊。變換塊的大小等于或小于編碼單元的大小。變換/量化單元120對變換塊執(zhí)行二 維(2D)離散余弦變換(DCT) 以產(chǎn)生變換系數(shù)。DCT可以是整數(shù)DCT。
而且,變換/量化單元120確定用于量化變換系數(shù)的量化步長大小,利用根據(jù)所確定的量化步長和編碼模式而確定的量化矩陣來量化變換系數(shù)。
逆量化/變換單元160對變換編碼/量化單元120所量化的量化系數(shù)進(jìn)行逆量化和逆變換,由此從變換到頻域中的殘余塊來恢復(fù)空間域中的殘余塊。
去塊濾波器170從逆量化/變換單元160接收經(jīng)過逆量化和逆變換的圖像數(shù)據(jù)并執(zhí)行濾波過程以消除塊效應(yīng)(blocking effect)。可以將去塊濾波過程應(yīng)用于預(yù)測編碼塊間和變換塊之間的邊界。邊界是具有預(yù)定大小或更大的網(wǎng)格邊緣,預(yù)定大小可以是8X8。 去塊濾波過程包括確定要進(jìn)行濾波的邊界的步驟,確定要應(yīng)用于該邊界的邊界濾波強(qiáng)度的步驟,判斷是否應(yīng)用去塊濾波器的步驟,以及在確定要應(yīng)用去塊濾波器時(shí)選擇要應(yīng)用于該邊界的濾波器的步驟。
根據(jù)i)邊界濾波強(qiáng)度是否大于O以及ii)表示P塊和Q塊的邊界像素之間差異的值是否小于根據(jù)量化參數(shù)確定的第一參考值,判斷是否應(yīng)用去塊濾波器。
可以有兩個(gè)或更多濾波器。當(dāng)與塊邊界相鄰的兩個(gè)像素之間的差異的絕對值等于或大于第二參考值時(shí),選擇弱濾波器。第二參考值是通過量化參數(shù)和邊界濾波強(qiáng)度確定的。
圖畫存儲(chǔ)器180從去塊濾波器170接收已濾波的圖像并在圖畫單元中存儲(chǔ)該圖像。圖畫可以是幀的圖像或場的圖像。圖畫存儲(chǔ)器180具有能夠存儲(chǔ)多個(gè)圖畫的緩存(未示出)。
運(yùn)動(dòng)估算器155利用圖畫存儲(chǔ)器180中存儲(chǔ)的至少一個(gè)參考圖畫進(jìn)行運(yùn)動(dòng)估計(jì),并輸出表不參考圖畫的參考圖畫索引和運(yùn)動(dòng)矢量。
運(yùn)動(dòng)補(bǔ)償器150根據(jù)從運(yùn)動(dòng)估算器155輸入的參考圖畫索引和運(yùn)動(dòng)矢量,從存儲(chǔ)在圖畫存儲(chǔ)器180中的多個(gè)參考圖畫中的用于運(yùn)動(dòng)估計(jì)的參考圖畫中提取與要進(jìn)行編碼的塊相對應(yīng)的預(yù)測塊,并輸出所提取的預(yù)測塊。
幀內(nèi)預(yù)測器140在同一圖畫中利用重構(gòu)的像素值執(zhí)行幀內(nèi)預(yù)測。幀內(nèi)預(yù)測器140 接收要預(yù)測編碼的當(dāng)前塊,根據(jù)當(dāng)前塊的大小選擇預(yù)定數(shù)量的幀內(nèi)預(yù)測模式中的一種并執(zhí)行幀內(nèi)預(yù)測。
熵編碼器130對變換/量化單元120所量化的量化系數(shù)、由運(yùn)動(dòng)估算器155產(chǎn)生的運(yùn)動(dòng)信息等進(jìn)行熵編碼。通過預(yù)定的掃描方法將所量化的變換系數(shù)轉(zhuǎn)換成一維(ID)量化變換信息并進(jìn)行熵編碼。
下面將參考圖3描述幀內(nèi)預(yù)測過程。
首先,幀內(nèi)預(yù)測器140從編碼模式判決器110接收關(guān)于要進(jìn)行編碼的編碼塊的位置和大小信息。
接下來,幀內(nèi)預(yù)測器140從圖畫存儲(chǔ)器180接收有效的參考像素,用于確定當(dāng)前預(yù)測編碼塊的幀內(nèi)預(yù)測模式。參考像素已經(jīng)被編碼并恢復(fù),并與當(dāng)前預(yù)測編碼塊(下文稱為當(dāng)前塊)相鄰。在當(dāng)前塊位于當(dāng) 前圖畫的上邊界時(shí),不定義與當(dāng)前塊上側(cè)相鄰的像素。在當(dāng)前塊位于當(dāng)前圖畫的左邊界時(shí),不定義與當(dāng)前塊左側(cè)相鄰的像素。而且,在當(dāng)前塊位于切片上邊界或左邊界時(shí),不定義與上側(cè)或左側(cè)相鄰的像素。
在沒有與當(dāng)前塊左側(cè)或上側(cè)相鄰的像素或沒有如上所述先前已經(jīng)進(jìn)行編碼并恢復(fù)的像素時(shí),可以僅利用有效像素確定當(dāng)前塊的幀內(nèi)預(yù)測模式。
不過,可以利用與當(dāng)前塊相鄰的像素或可用像素產(chǎn)生無效參考像素。例如,在上側(cè)塊的像素?zé)o效時(shí),可以利用左側(cè)的一個(gè)或多個(gè)可用參考像素產(chǎn)生上側(cè)的像素。
同時(shí),即使在當(dāng)前塊的上側(cè)或左側(cè)有像素時(shí),也可以根據(jù)像素所屬的塊的編碼模式將像素確定為無效像素。例如,在與當(dāng)前塊上側(cè)相鄰的像素所屬的塊已經(jīng)被幀間編碼并恢復(fù),可以將所述像素確定為無效像素。在這種情況下,可以利用具有幀內(nèi)模式的塊的參考像素產(chǎn)生參考像素。
接下來,幀內(nèi)預(yù)測器140利用參考像素確定當(dāng)前塊的幀內(nèi)預(yù)測模式。幀內(nèi)預(yù)測模式的數(shù)量取決于塊的大小。
根據(jù)塊的大小,允許33、16或2個(gè)方向性模式和至少一個(gè)非方向性模式。非方向性模式可以是直流(DC)模式或平面模式。
可以將不同數(shù)量的幀內(nèi)預(yù)測模式分配給具有相同大小的塊。為了表明允許不同數(shù)量的幀內(nèi)預(yù)測模式,可以在序列報(bào)頭、圖畫報(bào)頭、切片報(bào)頭和編碼單元報(bào)頭中的至少一個(gè)中插入表示幀內(nèi)預(yù)測模式數(shù)量的信息。優(yōu)選在序列報(bào)頭或圖畫報(bào)頭中插入所述信息。
接下來,在確定當(dāng)前塊的幀內(nèi)預(yù)測模式時(shí),產(chǎn)生當(dāng)前塊的預(yù)測塊?;诋?dāng)前塊的幀內(nèi)預(yù)測模式,利用包括所產(chǎn)生像素的參考像素或利用參考像素的線性組合產(chǎn)生預(yù)測塊。例如,在特定方向的方向性模式中,可以利用當(dāng)前塊上側(cè)和當(dāng)前塊左側(cè)的參考像素產(chǎn)生預(yù)測模式。
用于產(chǎn)生預(yù)測塊的有效參考像素可以是經(jīng)濾波的參考像素。應(yīng)用于有效參考像素的濾波器數(shù)量可以是多個(gè)。而且,可以根據(jù)當(dāng)前塊的大小和幀內(nèi)預(yù)測模式自適應(yīng)地應(yīng)用多個(gè)濾波器。
接下來,由變換/量化單元120和熵編碼器130對利用當(dāng)前塊和幀內(nèi)預(yù)測器140 產(chǎn)生的預(yù)測塊獲得的殘余塊進(jìn)行編碼。
同時(shí),單獨(dú)對當(dāng)前塊的幀內(nèi)預(yù)測模式進(jìn)行編碼??梢杂蓭瑑?nèi)預(yù)測器140、單獨(dú)的幀內(nèi)預(yù)測模式編碼器(未示出)或熵編碼器130對幀內(nèi)預(yù)測模式進(jìn)行編碼。
利用當(dāng)前塊的上側(cè)塊和左側(cè)塊的幀內(nèi)預(yù)測模式對當(dāng)前塊的幀內(nèi)預(yù)測模式進(jìn)行編碼。
首先,得到當(dāng)前塊的左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式。當(dāng)上側(cè)塊的數(shù)量是多個(gè)時(shí), 將最左邊的上側(cè)塊或具有最低模式數(shù)量的塊設(shè)置為當(dāng)前塊的上側(cè)塊。而且,當(dāng)左側(cè)塊的數(shù)量是多個(gè)時(shí),將最上邊的左側(cè)塊或具有最低模式數(shù)量的塊設(shè)置為當(dāng)前塊的左側(cè)塊。在上側(cè)塊或左側(cè)塊不是以幀內(nèi)預(yù)測模式進(jìn)行編碼時(shí),可以將DC模式(模式數(shù)2)設(shè)置為上側(cè)塊或左側(cè)塊的幀內(nèi)預(yù)測模式。
接下來,在上側(cè)塊或左側(cè)塊的幀內(nèi)預(yù)測模式數(shù)量等于或大于當(dāng)前塊的允許幀內(nèi)預(yù)測模式的數(shù)量時(shí),將上側(cè)塊或左側(cè)塊的幀內(nèi)預(yù)測模式轉(zhuǎn)換成當(dāng)前塊允許的幀內(nèi)預(yù)測模式之O
接下來,在當(dāng)前塊的幀內(nèi)預(yù)測模式等于左側(cè)塊的幀內(nèi)預(yù)測模式和上側(cè)塊的幀內(nèi)預(yù)測模式之一時(shí),傳送表示當(dāng)前塊的幀內(nèi)預(yù)測模式等于左側(cè)塊的幀內(nèi)預(yù)測模式和上側(cè)塊的幀內(nèi)預(yù)測模式之一的標(biāo)志以及表示上側(cè)塊和左側(cè)塊的幀內(nèi)預(yù)測模式之一的標(biāo)志。在這種情況下,在當(dāng)前塊的左側(cè)塊和上側(cè)塊具有相同幀內(nèi)預(yù)測模式時(shí),可以僅傳送表示當(dāng)前塊的幀內(nèi)預(yù)測模式等于左側(cè)塊的幀內(nèi)預(yù)測模式和上側(cè)塊的幀內(nèi)預(yù)測模式之一的標(biāo)志。類似地,在上側(cè)塊和左側(cè)塊的幀內(nèi)預(yù)測模式中僅有一個(gè)有效且等于當(dāng)前塊的幀內(nèi)預(yù)測模式時(shí),可以僅傳送表示當(dāng)前塊的幀內(nèi)預(yù)測模式等于左側(cè)塊的幀內(nèi)預(yù)測模式和上側(cè)塊的幀內(nèi)預(yù)測模式中之一的標(biāo)志。
不過,在當(dāng)前塊的幀內(nèi)預(yù)測模式與左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式不同時(shí),判斷當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量是否小于左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式。
在判定當(dāng)前塊的左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式數(shù)量都大于當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量時(shí),將當(dāng)前塊的幀內(nèi)預(yù)測模式確定為最終幀內(nèi)預(yù)測模式。不過,在當(dāng)前塊的左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式數(shù)量中僅有一個(gè)不大于當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量時(shí),將具有從當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量減I得到的模式數(shù)的幀內(nèi)預(yù)測模式確定為當(dāng)前塊的最終幀內(nèi)預(yù)測模式。而且,在當(dāng)前塊的左側(cè)塊和上側(cè)塊的幀內(nèi)預(yù)測模式數(shù)量中的任一個(gè)都不大于當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量時(shí),將具有從當(dāng)前塊的幀內(nèi)預(yù)測模式數(shù)量減2得到的模式數(shù)的幀內(nèi)預(yù)測模式確定為當(dāng)前塊的最終幀內(nèi)預(yù)測模式。
接下來,對當(dāng)前塊的最終幀內(nèi)預(yù)測模式進(jìn)行編碼。根據(jù)當(dāng)前塊的上側(cè)塊是否與當(dāng)前塊的左側(cè)塊具有相同幀內(nèi)預(yù)測模式,利用不同的編碼表,對當(dāng)前塊的最終幀內(nèi)預(yù)測模式進(jìn)行編碼。當(dāng)前塊的上側(cè)塊或左 側(cè)塊的幀內(nèi)預(yù)測模式可以是修改的幀內(nèi)預(yù)測模式。換言之, 當(dāng)前塊的上側(cè)塊或左側(cè)塊的幀內(nèi)預(yù)測模式可以是通過表格修改的,該表格用于將上側(cè)塊和左側(cè)塊可允許的幀內(nèi)預(yù)測模式映射到預(yù)定數(shù)量的幀內(nèi)預(yù)測模式。預(yù)定數(shù)量可以是9或3。
下文將描述圖3的熵編碼器130的量化變換系數(shù)編碼過程。
利用語境自適應(yīng)可變長度編碼(CAVLC)或語境自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)對量化的變換系數(shù)進(jìn)行熵編碼。在變換塊的大小變大時(shí),有很大可能性將需要掃描大量比特并對不為O的系數(shù)進(jìn)行熵編碼。于是,優(yōu)選引入新的掃描方法,用于針對大小等于或大于預(yù)定大小的變換塊減少比特?cái)?shù)量。
首先,判斷是否將量化的變換系數(shù)劃分成多個(gè)子集。這取決于變換塊的大小。換言之,在變換塊的大小等于或大于預(yù)定大小時(shí),將量化的變換系數(shù)劃分成多個(gè)子集。預(yù)定大小可以是8X8或16X16。多個(gè)子集由一個(gè)主要子集和一個(gè)或多個(gè)殘余子集構(gòu)成。主要子集位于包括DC系數(shù)的左上側(cè),一個(gè)或多個(gè)殘余子集覆蓋除主要子集覆蓋區(qū)域之外的區(qū)域。
接下來,在變換塊的大小等于或大于預(yù)定大小時(shí),將量化的變換系數(shù)劃分成主要子集和一個(gè)或多個(gè)殘余子集,并對每個(gè)子集中包括的量化變換系數(shù)進(jìn)行掃描和編碼??梢岳枚鄠€(gè)掃描模式之一來掃描子集中的量化變換系數(shù)。可以根據(jù)子集中量化變換系數(shù)的非零像素的分布來選擇要編碼的比特?cái)?shù)量變?yōu)樽钚〉膾呙枘J?。多個(gè)掃描模式可以包括鋸齒形掃描、垂直掃描和水平掃描。而且,可以包括活動(dòng)圖畫專家組(MPEG) -4的垂直掃描或水平掃描。在針對每個(gè)子集傳送掃描模式時(shí),需要大量比特。因此,可以向多個(gè)子集應(yīng)用一種掃描模式。
同時(shí),可以根據(jù)預(yù)測模式和幀內(nèi)預(yù)測方向自適應(yīng)地選擇掃描模式。例如,在幀間預(yù)測模式中,可以僅應(yīng)用一種預(yù)定掃描模式(例如鋸齒形掃描)或多種掃描模式之一。在前一種情況下,不需要向解碼器傳送掃描模式信息,但在后一種情況下,需要向解碼器傳送掃描模式信息。在幀內(nèi)預(yù)測模式中,可以根據(jù)幀內(nèi)預(yù)測方向選擇掃描模式。例如,可以在垂直幀內(nèi)預(yù)測模式中應(yīng)用水平掃描,可以在水平幀內(nèi)預(yù)測模式中應(yīng)用垂直掃描,可以在DC模式中應(yīng)用鋸齒形掃描。
要應(yīng)用于主要子集的掃描模式和一個(gè)或多個(gè)殘余子集可以是預(yù)定模式。預(yù)定模式可以是鋸齒形掃描。除了鋸齒形掃描之外,可以向子集應(yīng)用水平掃描或垂直掃描。也可以根據(jù)預(yù)測模式和幀內(nèi)預(yù)測方向自適應(yīng)地確定應(yīng)用于子集的掃描模式。換言之,在幀間預(yù)測模式中,可以向子集應(yīng)用預(yù)定的掃描模式。在幀內(nèi)預(yù)測中,可以向子集應(yīng)用幀內(nèi)預(yù)測方向所選擇的掃描模式。
沿相反方向掃描子集中的量化變換系數(shù)可以是有效的。換言之,可以根據(jù)掃描模式沿相反方向從子集的最后非零系數(shù)掃描量化的變換系數(shù)。同樣地,沿相反方向從包括變換塊的最后非零系數(shù)的子集向主要子集掃描多個(gè)子集。
同時(shí),為了解碼器進(jìn)行正確熵解碼,編碼器對能夠表示變換塊中最后非零系數(shù)的位置的信息和能夠表示每個(gè)子集中最后非零系數(shù)位置的信息進(jìn)行編碼并向解碼器傳送編碼的信息。該信息可以表示每個(gè)子集中最后非零系數(shù)的位置。而且,該信息可以是地圖信息,由表示每個(gè)變換系數(shù)是否為O的標(biāo)志以及表示非零系數(shù)是否是變換塊中最后非零系數(shù)的標(biāo)志構(gòu)成。用于產(chǎn)生地圖信息的掃描模式可以與子集中的掃描模式相同。
在另一個(gè)范例中,為了掃描變換塊的量化變換系數(shù),可以利用交織方法重新布置變換塊的量化變換系數(shù),并轉(zhuǎn)換成多個(gè)子塊,可以對每個(gè)子塊進(jìn)行掃描和編碼。
同時(shí),在圖像具有特定方向的邊界并使用等價(jià)預(yù)測模式時(shí),為運(yùn)動(dòng)邊界部分的類似數(shù)據(jù)使用不同子塊,并且可能發(fā)生不必要的開銷。在這種情況下,可能更有效的是根據(jù)圖像的邊界部分形狀沿特定方向劃分編碼單元并對每個(gè)所劃分的區(qū)域執(zhí)行運(yùn)動(dòng)估計(jì)。
參考圖4到6,將描述一種考慮圖像特性以方向自適應(yīng)方式來劃分塊的方法。在圖4、5和6中,將描述32X 32的編碼單元作為范例。不過,編碼單元的大小不限于32X 32,也可以將該方法應(yīng)用于64X64塊或16X16塊。
在最簡單自適應(yīng)模式的一個(gè)范例中,通過直線將編碼單元分成兩個(gè)塊,以便提取局部拓?fù)渖项A(yù)測區(qū)域的統(tǒng)計(jì)學(xué)相關(guān)性。換言之,將圖像的邊界部分匹配到直線并進(jìn)行劃分。
如圖所示,在存在橫貫32X32塊的圖像的邊界時(shí),應(yīng)當(dāng)將橫貫圖像的邊界部分劃分成小塊,以根據(jù)常規(guī)圖像劃分方法有效率地壓縮圖像。
于是,如圖4中所示,應(yīng)當(dāng)將一個(gè)32X32塊劃分成至少10個(gè)塊并編碼。因此,應(yīng)當(dāng)將10個(gè)運(yùn)動(dòng)矢量與表示圖像劃分的信息一起傳送到解碼器,從而需要除圖像信息之外的更多額外信息。
同時(shí),如圖5或6所示,在有橫貫32X32塊的圖像的邊界時(shí),可以通過將圖像邊界與表示圖像邊界的至少一條直線進(jìn)行匹配來顯著減少要傳送到解碼器的額外信息的條數(shù)。
例如,在將橫貫32X32塊的圖像的邊界匹配到圖5所示的兩條直線時(shí),將32X32 塊劃分成四個(gè)16X 16塊,并且可以獲得將第一和第四16X 16塊各自匹配到塊邊界的直線。 在這種情況下,需要六個(gè)劃分區(qū)域,并且可以將要傳送到解碼器的運(yùn)動(dòng)矢量減少到六個(gè)。
同樣地,在將橫貫塊的邊界匹配到圖6所示的一條直線時(shí),將32X32塊劃分成兩個(gè)塊,僅需要向解碼器傳送一條塊模式信息和兩個(gè)運(yùn)動(dòng)矢量。
同時(shí),在利用直線劃分塊時(shí),應(yīng)當(dāng)額外向解碼器傳送所用直線的信息。下文將描述要傳送的直線信息。
可以利用各種方法傳送要傳送的直線信息。
第一范例是利用相對于預(yù)定位置的距離和角度來表達(dá)直線的信息。在這種情況下,預(yù)定位置可以是塊左上角或中心的像素。所述距離可以是整數(shù)或量化值。所述角度可以是O到180,也可以是量化值。
第二范例是向解碼器傳送橫貫塊的直線兩端的位置值??梢詫⒃撐恢弥当磉_(dá)為表示從左上角開始沿順時(shí)針方向繞塊的邊界行進(jìn),同時(shí)所述兩端距離塊的左上角處的像素有多遠(yuǎn)的值。在這種情況下,可以將任一端表達(dá)為順時(shí)針方向繞邊界行進(jìn)時(shí)距離像素的位置, 可以將另一端表達(dá)為逆時(shí)針方向繞邊界行進(jìn)時(shí)距離像素的位置,從而可以表示直線信息。 在這種情況下,可以利用少量的比特表達(dá)關(guān)于接近更多不同形狀的直線信息。
在有已經(jīng)被方向自適應(yīng)地劃分并被編碼的相鄰塊時(shí),有效的做法是傳送當(dāng)前塊的直線信息與從相鄰塊中選擇的一個(gè)塊的直線信息之間的差異信息。更優(yōu)選地是利用沿與當(dāng)前塊相同方向劃分的塊的方向信息對差異信息進(jìn)行編碼??梢詫㈥P(guān)于當(dāng)前塊的直線信息或差異信息表達(dá)為一個(gè)對應(yīng)的索引,其可以是可變長度編碼并傳送的。
同時(shí),可以根據(jù)預(yù)測編碼塊的大小確定是否應(yīng)用方向自適應(yīng)劃分法。由于應(yīng)用于過小編碼塊的方向自適應(yīng)劃分法可能增大要傳送的信息量和復(fù)雜性,優(yōu)選不應(yīng)用該方法。
如圖7所示,可以僅向限于預(yù)定數(shù)量的特定方向應(yīng)用根據(jù)圖像的邊界部分的形狀來劃分預(yù)測編碼塊的方法。例如,可以將劃分塊的方法限于四個(gè)方向,即水平方向、垂直方向、向上對角線方向和向下對角線方向,或兩個(gè)方向,即水平方向和垂直方向。沿特定方向劃分塊的情形的數(shù)量可以隨著預(yù)測編碼塊大小而變化。例如,可以利用七種方法沿特定方向(例如水平方向)劃分大小為32X32的預(yù)測編碼塊,可以利用三種方法劃分大小為 16X16的預(yù)測編碼塊。而且,不論預(yù)測編碼塊大小如何,都可以利用相同數(shù)量的方法劃分預(yù)測編碼塊。
根據(jù)色度,也可以將預(yù)測編碼塊劃分成相同的分割,也可以將以下所有方法應(yīng)用于該劃分。具有各自劃分區(qū)域的預(yù)測編碼塊應(yīng)當(dāng)在報(bào)頭中包括表示存在劃分塊的標(biāo)志、表示如何完成劃分的信息以及根據(jù)各自劃分區(qū)域指稱的經(jīng)編碼的參考圖畫索引。
當(dāng)一個(gè)塊是方向自適應(yīng)地預(yù)測的時(shí),應(yīng)當(dāng)在兩個(gè)已劃分區(qū)域的每個(gè)上進(jìn)行運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償。于是,應(yīng)當(dāng)從每個(gè)被劃分區(qū)域得出運(yùn)動(dòng)矢量,并且應(yīng)當(dāng)?shù)贸霾γ總€(gè)被劃分區(qū)域與基于該運(yùn)動(dòng)矢量獲得的參考區(qū)域之間的殘余信號(hào)進(jìn)行編碼。
可以利用以下方法的任一種對殘余信號(hào)進(jìn)行編碼。
首先,可以從一個(gè)預(yù)測編碼塊所劃分的兩個(gè)區(qū)域中的每個(gè)得出殘余信號(hào),然后可以添加所述兩個(gè)殘余信號(hào)以形成一個(gè)塊的殘余信號(hào)并進(jìn)行變換編碼。在這種情況下,在沿邊界劃分的各自區(qū)域中的殘余信號(hào)的總體分布之間非??赡艽嬖诓町?,從而優(yōu)選向邊界應(yīng)用濾波器。
在另一種方法中,可以通過向每個(gè)被劃分區(qū)域應(yīng)用形狀自適應(yīng)變換來進(jìn)行編碼。 如圖7中所示,在將一個(gè)塊劃分成兩個(gè)區(qū)域時(shí),按照原樣對左上塊進(jìn)行水平ID變換,然后進(jìn)行垂直ID變換,對右下塊如圖所示地進(jìn)行重新布置或旋轉(zhuǎn)180度,并進(jìn)行ID變換,然后進(jìn)行垂直ID變換。在這種情況下,可以將根據(jù)各自劃分區(qū)獨(dú)立進(jìn)行編碼的殘余系數(shù)傳送到解碼器或者可以對其進(jìn)行組合并傳送。
在又一種方法中,可以根據(jù)各自的被劃分區(qū)域進(jìn)行補(bǔ)白(padding)以產(chǎn)生塊并對塊進(jìn)行編碼。換言之,在對當(dāng)前劃分區(qū)域進(jìn)行編碼時(shí),為構(gòu)成該塊的其他劃分區(qū)域補(bǔ)上當(dāng)前劃分區(qū)域的值,以構(gòu)成一個(gè)塊,然后進(jìn)行2D變換編碼。補(bǔ)白可以是水平補(bǔ)白(從已定義區(qū)域水平地拷貝未定義區(qū)域)和垂直補(bǔ)白(從已定義區(qū)域垂直拷貝未定義區(qū)域)。在這種情況下, 優(yōu)選執(zhí)行水平補(bǔ)白,然后進(jìn)行垂直補(bǔ)白。而且,可以通過所定義像素的線性組合填補(bǔ)與一個(gè)或多個(gè)所定義像素相鄰的未定義像素。而且,可以根據(jù)劃分方向給出方向性,使得可以首先執(zhí)行水平補(bǔ)白和垂直補(bǔ)白的任一種。
接下來將描述運(yùn)動(dòng)矢量估計(jì)。
當(dāng)利用直線將一個(gè)塊劃分成兩個(gè)區(qū)域時(shí),利用已經(jīng)編碼的運(yùn)動(dòng)矢量對每個(gè)劃分區(qū)域的運(yùn)動(dòng)矢量進(jìn)行差異編碼。
在第一種方法中,被劃分區(qū)域的第一區(qū)域可以選擇相鄰塊的運(yùn)動(dòng)矢量之一作為運(yùn)動(dòng)矢量預(yù)測器,第二區(qū)域可以選擇除第一區(qū)域之外的相鄰塊的運(yùn)動(dòng)矢量之一作為運(yùn)動(dòng)矢量預(yù)測器。
在第二種方法中,被劃分區(qū)域的第一區(qū)域可以選擇相鄰塊的運(yùn)動(dòng)矢量之一作為運(yùn)動(dòng)矢量預(yù)測器,第二區(qū)域可以選擇第一區(qū)域的運(yùn)動(dòng)矢量作為運(yùn)動(dòng)矢量預(yù)測器。
在第三種方法中,在與當(dāng)前塊相鄰的塊中有方向自適應(yīng)地劃分的塊時(shí),考慮到所劃分塊的方向性,將方向自適應(yīng)地劃分的塊的運(yùn)動(dòng)矢量用作參考運(yùn)動(dòng)矢量。于是,在有多個(gè)方向自適應(yīng)地劃分的塊時(shí),可以將預(yù)定序列中的運(yùn)動(dòng)矢量或具有類似劃分方向的塊的運(yùn)動(dòng)矢量用作參考運(yùn)動(dòng)矢量。
在第四種方法中,被劃分區(qū)域的第一區(qū)域可以將與第一區(qū)域相鄰的一個(gè)塊的運(yùn)動(dòng)矢量設(shè)置為第一區(qū)域的運(yùn)動(dòng)矢量預(yù)測器,第二區(qū)域可以選擇與第二區(qū)域相鄰的塊的運(yùn)動(dòng)矢量以及處于先前圖畫中同一位置的塊或劃分區(qū)域的運(yùn)動(dòng)矢量中的任一個(gè)作為運(yùn)動(dòng)矢量預(yù)測器,并對差異運(yùn)動(dòng)矢量進(jìn)行編碼。
在這里,使用一條直線進(jìn)行塊劃分。不過,也可以利用由至少兩條直線構(gòu)成的信息將一個(gè)塊劃分成至少兩個(gè)劃分區(qū)域,并可以如上所述執(zhí)行所劃分區(qū)域的編碼。
盡管已經(jīng)參考其某些示范性實(shí)施例示出并描述了本發(fā)明, 但本領(lǐng)域的技術(shù)人員將理解,可以在其中做出各種形式和細(xì)節(jié)的改變而不脫離如所附權(quán)利要求界定的本發(fā)明精神和范圍。
權(quán)利要求
1.一種用于對活動(dòng)圖畫進(jìn)行編碼的設(shè)備,包括 編碼模式判決器,被配置成將輸入圖像劃分成編碼單元并確定所述編碼單元的預(yù)測模式和所述編碼單元的預(yù)測編碼塊的大小; 變換/量化單元,被配置成對所述預(yù)測編碼塊和通過幀內(nèi)預(yù)測或幀間預(yù)測產(chǎn)生的預(yù)測塊之間的殘余塊進(jìn)行變換和量化; 逆量化/變換單元,被配置成將所量化的變換塊逆量化和逆變換到頻域中; 去塊濾波器,被配置成向從所述逆量化/變換解碼單元接收到的圖像數(shù)據(jù)應(yīng)用去塊濾波過程; 預(yù)測塊發(fā)生器,被配置成產(chǎn)生所述預(yù)測編碼塊;以及 熵編碼器,被配置成對來自變換編碼/量化單元的量化變換系數(shù)進(jìn)行編碼, 其中,在變換塊的大小等于或大于預(yù)定大小時(shí),所述熵編碼器將量化變換系數(shù)劃分成多個(gè)子集,并對所述每個(gè)子集的非零量化變換系數(shù)進(jìn)行掃描和熵編碼。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中,根據(jù)多種掃描模式中的一種沿相反方向掃描所述非零量化變換系數(shù)。
3.根據(jù)權(quán)利要求1所述的設(shè)備,其中,用于掃描所述非零量化變換系數(shù)的掃描模式與用于掃描所述子集的掃描模式相同。
4.根據(jù)權(quán)利要求1所述的設(shè)備,其中,根據(jù)幀內(nèi)預(yù)測模式選擇用于掃描所述非零量化變換系數(shù)的掃描模式。
5.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述熵編碼器對所述變換塊中最后非零系數(shù)的位置和用于識(shí)別每個(gè)子集中的所述非零系數(shù)的信息進(jìn)行編碼。
全文摘要
公開了一種活動(dòng)圖畫編碼設(shè)備,用于提高活動(dòng)圖畫信號(hào)的壓縮比,同時(shí)保持高的圖像質(zhì)量。為了使殘余塊所需的比特?cái)?shù)量最小化,根據(jù)變換塊的大小將量化的變換系數(shù)自適應(yīng)地分成多個(gè)子集,對每個(gè)子集的非零量化變換系數(shù)進(jìn)行掃描和編碼。而且,利用通過過濾當(dāng)前塊的參考像素獲得的參考像素來確定當(dāng)前塊的幀內(nèi)預(yù)測模式。因此,可以使當(dāng)前塊的殘余塊所需的數(shù)據(jù)量最小化。
文檔編號(hào)H04N7/32GK103004197SQ201180031338
公開日2013年3月27日 申請日期2011年4月22日 優(yōu)先權(quán)日2010年4月23日
發(fā)明者吳秀美 申請人:吳秀美