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