用于編碼和解碼圖像的方法、編碼和解碼設備以及相應的計算機程序的制作方法
【專利摘要】本發明涉及一種用于對被劃分為多個分區的至少一個圖像進行編碼的方法,所述方法實現下列步驟:基于至少一個已經被編碼然后被解碼的參考分區來預測(C2)當前分區的數據,生成已預測分區;通過將與當前分區相關的數據與已預測分區進行比較來確定(C6)殘留數據的集合,所述殘留數據分別與要經歷熵編碼的各個數字數據項關聯。在用于產生包含所述編碼信息的信號的步驟之前,實現下列步驟:根據所述殘留數據的所述預定集合來確定(C71)包含能被調整的殘留數據的子集;計算(C8)表示所述預定子集的殘留數據的函數的值;將所述已計算值與至少一個所述數字數據項的值進行比較(C9);基于所述比較的結果調整(C10)或不調整所述子集中的至少一個殘留數據項;以及在調整的情況下,對所述至少一個已調整的殘留數據項進行熵編碼(C20)。
【專利說明】用于編碼和解碼圖像的方法、編碼和解碼設備以及相應的計算機程序
【技術領域】
[0001]本發明主要涉及圖像處理的領域,且更具體地涉及數字圖像和數字圖像的序列的編碼和解碼。
[0002]由此,本發明尤其可用于由目前的視頻編碼器(MPEG、H.264等)或未來的視頻編碼器(ITU-T/VCEG0L 265)或 ISO/MPEG(HEVC))實現的視頻編碼。
【背景技術】
[0003]目前的視頻編碼器(MPEG、H.264等)等使用視頻序列的分塊表示。圖像被分為宏塊,每個宏塊本身被分為多個塊,并且每個塊通過圖像內或圖像間預測來編碼。于是,某些圖像通過空間預測(幀內預測)來編碼,而其它圖像借助于本領域技術人員已知的運動補償通過相對于一個或多個編碼-解碼參考圖像的時間預測(幀間預測)進行編碼。
[0004]對于每個塊,存在與由預測所減掉的原始塊相對應的、還被稱為預測殘留的已編碼的殘留塊。殘留塊通過離散余弦變換(DCT)類型的變換來變換,然后使用例如標量類型的量化來量化。在量化步驟結束時得到系數,所述系數中一些是正的而其它的是負的。然后以通常為之字形的讀順序(和JPEG標準一樣)來掃描系數,由此可利用高頻中的大量零系數。在上述掃描結束時,得到系數的一維列表,其可被稱為“量化殘留”。然后通過熵編碼來對該列表的系數進行編碼。
[0005]熵編碼(例如算術編碼或霍夫曼編碼類型)以如下方式執行:
[0006]-信息項被熵編碼,以表示列表中的最后的非零系數的位置,
[0007]-針對位于最后的非零系數之前的每個系數,信息項被熵編碼以表示系數是否為零,
[0008]-針對之前所表示的每個非零系數,信息項被熵編碼以表示系數是否等于1,
[0009]-針對不為零且不等于I的并且位于最后的非零系數之前的每個系數,幅度信息項(系數的絕對值,其值被減少2)被熵編碼,
[0010]-針對每個非零系數,分配給該系數的符號由“O”(用于+符號)或“I”(用于-符號)編碼。
[0011]根據例如H.264技術,在宏塊被分為多個塊時,與每個塊對應的數據信號被發送給解碼器。該信號包括:
[0012]-在上述列表中包含的量化殘留,
[0013]-表示所使用的編碼模式的信息項,特別是:
[0014].預測模式(幀內預測、幀間預測、默認預測,其進行沒有信息項被發送到解碼器的預測(被稱為“跳過));
[0015].指定預測類型的信息(方向、參考圖像等);
[0016].分區類型;
[0017].變換類型,例如 4X4DCT、8X8DCT 等;[0018]?運動信息,如果有必要的話;
[0019].等等。
[0020]逐個圖像以及針對每個圖像逐個宏塊地執行解碼。針對宏塊的每個分區,讀取流的相應元素。執行塊的系數的反量化和逆變換,以生成已解碼的預測殘留。然后,計算該分區的預測并通過將預測加到被解碼的預測殘留來重構該分區。
[0021]由此,如H.264標準所實現的,通過競爭實現的幀內編碼或幀間編碼依賴于將例如上述那些編碼信息項之類的各個編碼信息項與選擇最佳模式的目標進行競爭,該最佳模式即能根據預定的性能標準例如本領域技術人員眾所周知的比率失真成本來使所討論分區的編碼最優化。
[0022]表示被選中編碼模式的信息項被包含在由編碼器發送到解碼器的數據信號中。解碼器由此能夠識別在編碼器上被選中的編碼模式,然后能夠根據該模式應用預測。
[0023]文檔"Data Hiding of Mot1n Informat1n in Chroma and Luma Samples forVideo Compress1n", J.-M.Thiesse, J.Jung and M.Antonini, Internat1nal workshop onmultimedia signal processing, 2011介紹了一種在視頻壓縮期間實現的數據隱藏的方法。
[0024]更具體而言,在至少一個競爭指數從要被發送的多個競爭指數中發出時,建議避免在要被發送到解碼器的信號中包含所述至少一個競爭指數。這樣的指數例如是指數MVComp,其表示用于標識運動矢量預測器的信息項,該預測器用于在幀間預測模式下預測的塊。能夠取值O或I的這樣的指數未被直接包含在已編碼的數據項的信號中,而是通過量化殘留的系數之和的 奇偶校驗來傳輸。在量化殘留的奇偶性和指數MVComp之間建立關聯。通過實例,量化殘留的偶數值與值為O的指數MVComp關聯,而量化殘留的奇數值與值為I的指數MVComp關聯。會出現兩種情形。在第一種情形中,如果量化殘留的奇偶性已經對應于所期望發送的指數MVComp的奇偶性,則以傳統方式對量化殘留編碼。在第二種情形中,如果量化殘留的奇偶性與所期望發送的指數MVComp的奇偶性不同,則調整量化殘留從而使其奇偶性與指數MVComp的奇偶性相同。該調整包含將量化殘留的一個或多個系數增加或減少奇數值(例如+1、-1、+3、_3、+5、-5等),并且僅保留使預定標準最優化的調整,在該情形中,所述預定標準為前述比率失真成本。
[0025]在解碼器上,不從信號讀取指數MVComp。通過傳統地確定殘留來簡單地滿足解碼器。如果該殘留的值是偶數,則指數MVComp被設置為O。如果該殘留的值是奇數,指數MVComp被設置為I。
[0026]根據剛才介紹的技術,不會總是以最優的方式選擇已調整的系數,從而所應用的調整給要發送到解碼器的信號帶來了干擾。這樣的干擾對于視頻壓縮的效率必然有害。
【發明內容】
[0027]本發明的一個目標是糾正上述現有技術中的缺陷。
[0028]為此,本發明的目標涉及一種用于對被劃分為多個分區的至少一個圖像進行編碼的方法,該方法實現下列步驟:
[0029]-根據至少一個已經被編碼然后被解碼的參考分區來預測當前分區的數據項,生成已預測分區;
[0030]-通過將與所述當前分區相關的數據項與所述已預測分區進行比較來確定殘留數據項的集合,所述殘留數據項分別與要經歷熵編碼的各個數字信息項關聯。
[0031]-生成包含所述已編碼的信息項的信號。
[0032]根據本發明的方法值得注意的是,它在所述信號生成步驟之前實現下列步驟:
[0033]-根據所述已確定的殘留數據項的集合來確定包含適于被調整的殘留數據項的子集,
[0034]-計算表示所述已確定子集的殘留數據項的函數的值,
[0035]-將所述已計算的值與至少一個數字信息項的值進行比較,
[0036]-取決于比較的結果,調整或不調整所述子集中的至少一個殘留數據項,
[0037]-在調整的情況下,對所述至少一個已調整的殘留數據項進行熵編碼。
[0038]這樣的布置能在殘留數據項的縮減集合上應用數據隱藏技術,在該集合中殘留數據項適于被調整。
[0039]根據本發明,表達“殘留數據項適合被調整”被理解為表示對其應用調整不會帶來編碼器和解碼器之間的去同步化的數據項。
[0040]于是,根據本發明,可以比前述現有技術更可靠地選擇要經歷調整的殘留數據項,由此在解碼器上可獲得圖像重構的更好質量。
[0041]此外,對減少數量的殘留數據項進行調整可能性能加速編碼。
[0042]在特定的實施例中,只有在滿足依賴于適于被調整的所述殘留數據項的預定標準時,才會執行在所述用于確定所述殘留數據項的所述子集的步驟之后的所述步驟。
[0043]這樣的布置還使得編碼器能以合理的方式來判斷它是否能應用數據隱藏技術。這樣的判斷步驟具有僅應用于適合被調整的殘留數據項的縮減集合的優勢。由此確保了能比之前引用的現有技術更適合地應用數據隱藏技術,特別是針對更好選擇的殘留數據項的數量,就此確定一旦這些數據項被調整,則這樣的調整所產生的信號干擾不會對解碼器上的圖像重構的質量帶來負面影響。
[0044]在另一特定實施例中,預定的判斷標準依賴于適合被調整的殘留數據項的數量和預定數量之間的比較結果。
[0045]這樣的布置能改善算術編碼器的壓縮性能同時有效降低了信令成本。特別地,該布置能準確地檢測殘留數據項的數量,由此合理地應用數據隱藏技術,而該數據隱藏技術不會引起要發送到解碼器的信號的高干擾級別。
[0046]在又一特定實施例中,如果在比較步驟中考慮多個數字信息項,則該比較步驟需要將表示確定子集的殘留數據項的函數所計算的值與表示多個數字信息項的函數的值進行比較。
[0047]該布置能優化算術編碼器的壓縮性能,同時優化信令成本的降低,因為它能在要發送到解碼器的信號中隱藏若干個數字信息項。
[0048]在又一特定實施例中,至少一個數字信息項對應于殘留數據項的符號。
[0049]該符號是要隱藏的特別相關的信息項,因為正或負符號出現的概率是相同的。這樣,假設需要用一比特來對符號編碼,則由此可能通過隱藏該信息來精簡要發送到解碼器的信號中的一個比特,由此顯著降低信令成本。當根據本發明可隱藏多個符號且由此隱藏多個比特時,該成本的降低將會更多。
[0050]相關聯地,本發明還涉及一種用于對被劃分為多個分區的至少一個圖像進行編碼的設備,該設備包括:
[0051]-根據至少一個已經被編碼然后被解碼的參考分區來預測當前分區的數據項生成已預測分區的裝置,
[0052]-確定適于將與當前分區相關的數據項與已預測分區進行比較的殘留數據項的集合的裝置,該殘留數據項分別與要經歷熵編碼的各個數字信息項相關聯,
[0053]-用于生成包含所述已編碼的信息項的信號的裝置。
[0054]這樣的編碼設備值得注意的是,它在所述生成裝置之前包括處理裝置,該處理裝置能夠:
[0055]-根據所述已確定的殘留數據項的集合來確定包含適于被調整的殘留數據項的子集,
[0056]-計算表示所述已確定子集的殘留數據項的函數的值,
[0057]-將所述已計算的值與至少一個所述數字信息項的值進行比較,
[0058]-取決于比較的結果,調整或不調整所述已確定子集中的至少一個殘留數據項,
[0059]以及在通過所述處理裝置來調整的情況下,對所述至少一個已調整的殘留數據項進行熵編碼的裝置。
[0060]相應地,本發明涉及一種用于對表示之前已被編碼的劃分為多個分區的至少一個圖像的數據信號進行解碼的方法,包括通過所述信號的數據項的熵解碼來獲取與和至少一個之前已被編碼的分區相關的殘留數據項關聯的數字信息項的步驟,
[0061]該解碼方法值得注意的是,它包括下列步驟:
[0062]-根據所述殘留數據項來確定包含在之前的編碼期間能被調整的殘留數據項的子集,
[0063]-計算表示所述已確定子集的殘留數據項的函數的值,
[0064]-根據所述已計算的值來獲取與通過熵解碼而獲得的那些值所不同的至少一個數字信息項的值。
[0065]在特定的實施例中,只有在滿足依賴于能被調整的殘留數據項的預定標準時,才會實現在所述用于確定殘留數據項的子集的步驟之后的所述步驟。
[0066]在另一特定的實施例中,預定判斷標準依賴于能被調整的殘留數據項的數量和預定數量之間的比較結果。
[0067]在又一特定實施例中,根據所述已計算的值來獲取與多個數字信息項分別關聯的多個值,所述多個數字信息項與通過熵解碼所獲取的數字信息項不同。
[0068]在又一特定實施例中,至少一個數字信息項對應于殘留數據項的符號。
[0069]相關地,本發明還涉及一種用于對表示之前已被編碼的劃分為多個分區的至少一個圖像的數據信號進行解碼的裝置,包括用于通過所述信號的數據項的熵解碼來獲取與和至少一個之前被編碼的分區相關的殘留數據項關聯的數字信息項的裝置,
[0070]該解碼設備值得注意的是,它包括處理裝置,其能夠:
[0071]-根據所述殘留數據項來確定包含在之前的編碼期間能被調整的殘留數據項的子集,
[0072]-計算表示所述已確定的子集的殘留數據項的函數的值,
[0073]-根據所述已計算值來獲取與通過熵解碼所獲取的那些數字信息項所不同的至少一個數字信息項的值。
[0074]本發明還涉及一種包含指令的計算機程序,在計算機上執行該程序時,該指令用于執行以上編碼或解碼方法的步驟。
[0075]該程序可以使用任何編程語言并且可以是源代碼、目標代碼或介于源代碼與目標代碼之間的代碼的形式,例如部分編譯的形式或任何其它期望的形式。
[0076]本發明的又一主題是記錄介質,其可被計算機讀取并包含如上所述的計算程序的指令。
[0077]該記錄介質可以是能夠存儲程序的任意實體或設備。例如,該介質可以包括諸如ROM之類的存儲介質,例如CD-ROM或微電子電路R0M,或者磁記錄介質,例如軟盤或硬盤。
[0078]另一方面,該記錄介質可以是諸如電信號或光信號之類的可傳輸介質,其可以經電纜或光纜通過無線電或通過其它方式來傳遞。根據本發明的程序可以特別地通過因特網類型的網絡來下載。
[0079]或者,該記錄介質可以是其中包含有程序的集成電路,該電路適于執行所討論的方法或適于在該方法執行時使用。
[0080]上述編碼設備、解碼方法、解碼設備和計算機程序至少表現出與根據本發明的編碼方法所提供的優勢相同的優勢。
【專利附圖】
【附圖說明】
[0081]通過閱讀參考附圖來描述兩個優選的實施例,其它特征和優點將變得明顯,在附圖中:
[0082]-圖1表示根據本發明的編碼方法的主要步驟,
[0083]-圖2表示根據本發明的編碼設備的實施例,
[0084]-圖3表示根據本發明的解碼方法的主要步驟,
[0085]-圖4表示根據本發明的解碼設備的實施例。
【具體實施方式】
[0086]現在將描述本發明的實施例,其中,根據本發明的編碼方法被用于根據二進制流來對圖像序列進行編碼,該二進制流與通過根據H.264/MPEG-4AVC標準來編碼而獲得的二進制流接近。在該實施例中,根據本發明的編碼方法例如以軟件或硬件形式通過對初始符合H.264/MPEG-4AVC標準的編碼器的調整來實現。根據本發明的編碼方法以圖1所示的包含步驟Cl到C40的算法的形式來表示。
[0087]根據本發明的實施例,根據本發明的編碼方法在圖2所示的實施例中的編碼設備或編碼器CO中實現。
[0088]根據本發明,如圖2所示,在實際的編碼步驟之前,以預定順序將待編碼的圖像序列中的圖像IE劃分為多個(Z個)分區氏』2、…、…、Bz。
[0089]值得注意的是,在本發明的意義上,術語“分區”表示編碼單元。該后一術語特別用于正在起草的HEVC/H.265標準,例如用在下列互聯網地址可訪問的文檔中:
[0090]//Dhenix.1nt-evry.fr/ict/doc end user/current document, php ? id=3286[0091]特別地,這種編碼單元將矩形或正方形的像素集合或表現出其它幾何形狀的像素集合分組到一起,所述矩形或正方形的像素集合被稱為塊、宏塊。
[0092]在圖2所示的實例中,所示分區是具有正方形形狀并且全部具有相同尺寸的塊。根據圖像的尺寸,該尺寸不一定是塊尺寸的倍數,最左邊的塊以及最底部的塊可以不是正方形。在替代的實施例中,塊例如可以是矩形尺寸和/或可以不互相對齊。
[0093]每個塊或每個宏塊本身可以進一步被分為子塊,子塊自己可以再細分。
[0094]這樣的劃分是通過圖2所示的分區模塊PCO來執行的,該分區模塊PCO使用例如像這樣的分區模塊所眾所周知的分區算法。
[0095]在所述劃分步驟之后,對所述圖像IE的每個當前分區Bi (其中i是大于等于I且小于等于Z的整數)進行編碼 。
[0096]在圖2所示的實例中,對當前圖像IE的塊B1到Bz中的每個塊相繼實施這樣的編碼。例如根據諸如本領域技術人員眾所周知的光柵掃描之類的掃描來對塊進行編碼。
[0097]根據本發明的編碼在如圖2所示的編碼器CO的編碼軟件模塊MC_C0中實現。
[0098]在圖1所示的步驟Cl中,圖2的編碼模塊MC_C0選擇當前圖像IE的要被編碼的第一塊B1作為當前塊Bit5如圖2所示,第一塊B1是圖像IE左邊的第一塊。
[0099]在圖1所示的步驟C2中,通過已知的幀內預測技術和/或幀間預測技術來實現當前塊B1的預測編碼,在此期間針對至少一個之前被編碼和解碼的塊來對塊B1的預測編碼進行預測。該預測通過圖2所示的預測軟件模塊PRED_C0來實現。
[0100]毋庸贅述,H.264標準中所建議的其它幀內預測模式是可能的。
[0101]當前塊B1還可經過幀間模式的預測編碼,在此期間針對來自之前被編碼和解碼的圖像的塊來預測當前塊。當然可以想到其它類型的預測。在可能用于當前塊的預測中,根據本領域眾所周知的比率失真標準來選擇最優預測。
[0102]上述預測編碼步驟對與當前塊B1近似的已預測的塊Bp1進行構造。與該預測編碼相關的信息項將被包含在要被發送到解碼器的信號中。該信息項尤其包括預測的類型(幀內預測或幀間預測),并且如果必要的話,包括幀內預測模式、塊或宏塊(如果宏塊已被細分)的分區類型、在幀間預測模式中使用的參考圖像索引和位移矢量。這些信息項被編碼器CO壓縮。
[0103]在圖1所示的下一步驟C3中,預測模塊PRED_C0將與當前塊&相關的數據項與已預測的塊Bp1的數據項進行比較。更具體而言,在該步驟中,傳統上從當前塊B1減去已預測的塊Bp1以產生殘留塊Br115
[0104]在圖1所示的下一步驟C4中,根據傳統的直接變換操作例如DCT型離散余弦變換來變換殘留塊Br1,以產生已變換的塊Bt115該操作由如圖2所示的變換軟件模塊MT_C0來執行。
[0105]在圖1所示的下一步驟C5中,根據傳統的量化操作例如標量量化來量化已變換的塊Bt115然后得到已量化的系數的塊Bq115該步驟通過如圖2所示的量化軟件模塊MQ_C0來執行。
[0106]在圖1所示的下一步驟C6中,以預定順序來掃描塊Bq1的已量化的系數。在所示實例中,這是傳統的之字形掃描。該步驟由如圖2所示的讀取軟件模塊ML_C0來執行。在步驟C6結束時,得到系數的一維列表E1 = ( ε 1,ε 2,…,ε L),更一般地被稱為“量化殘留”,其中L是大于或等于I的整數。列表E1中的每個系數與要經歷熵編碼的不同數字信息項關聯。下面通過實例來描述這樣的數字信息項。
[0107]假設在所示實例中,L = 16并且列表E1包括下列16個系數= (O, +9,_7,O, O,+1, O, -1, +2, O, O, +1, O, O, O, O)。
[0108]在該特定情形下:
[0109]-針對位于列表E1中的最后的非零系數之前的每個系數,數字信息項例如比特將被熵編碼,以表示系數是否是零。如果系數是零,則它例如是將被編碼的值為O的比特,而如果系數不是零,則它是將被編碼的值為I的比特。
[0110]-針對每個非零系數+9,-7,+1,-1,+2,+1,數字信息項例如比特要被熵編碼,以表示系數的絕對值是否等于1:如果它等于1,則它例如是將被編碼的值為I的比特,而如果它不等于1,則它是將被編碼的值為O的比特。
[0111]-針對每個非零系數,并且其絕對值不等于I且位于最后的非零系數之前,例如值為+9,-7,+2的系數,幅度信息項(其系數的絕對值減去了值2)被熵編碼;
[0112]-針對每個非零系數,分配給它的符號被數字信息項編碼,所述數字信息項例如被設置為“O”的比特(用于+符號)或被設置為“I”的比特(用于-符號)。
[0113]參考圖1,現在將描述根據本發明的特定編碼步驟。
[0114]根據本發明,決定避免對至少一個上述信息項進行熵編碼。由于之前描述中解釋的原因,在優選實施例中,決定不對列表E1中的所述系數中的一個的至少一個符號進行熵編碼。
[0115]通過替代的實例,尤其可以確定對所述列表E1中的第一個非零系數的幅度的二進制表示的最低有效比特進行熵編碼。
[0116]為此,在圖1所示的步驟C7中,選擇在之后的熵編碼步驟中隱藏的符號的數量。該步驟由圖2所示的處理軟件模塊MTR_C0來執行。
[0117]在優選實施例中,要隱藏的符號的數量是I個或O個。額外地,根據所述優選實施例,要被隱藏的是第一個非零系數的符號。在所示實例中,因此隱藏的是系數ε2 = +9的符號。
[0118]在替代的實施例中,要隱藏的符號的數量是O、1、2、3或更多。
[0119]根據步驟C7的優選實施例,在圖1所示的第一子步驟C71中,根據所述列表E1來確定包含適合被調整的系數的子列表SE1, ε ’ 1,ε ’ 2,…,ε ’ Μ,其中M〈L。在以下描述中該系數將被稱為可調整系數。
[0120]根據本發明,如果其量化值的調整不會引起解碼器的去同步化,一旦該調整的系數被解碼器處理,則系數是可調整的。于是,處理模塊MTR_C0被初始配置為不調整:
[0121]-位于第一非零系數之前的零系數或多個零系數,從而解碼器不會影響在所述零系數或所述多個零系數處隱藏的符號的值,
[0122]-并且由于計算復雜度的原因,位于最后的非零系數之后的零系數或多個零系數。
[0123]在所實例中,在子步驟C7結束時,得到的子列表SE1由此是SE1 =(9, -7, O, O, 1,0,-1,2,0,0, I)。因此,得到11個可調整的系數。 [0124]在圖1所示的下一子步驟C72中,處理模塊MTR_C0將可調整的系數的數量與預定閾值TSIG進行比較。在優選實施例中,TSIG具有值4。[0125]如果可調整系數的數量小于閾值TSIG,則在圖1所示的步驟C20中,對列表E1中的系數進行傳統熵編碼,例如由在圖2中的標記CE_C0所表示的CABAC編碼器來執行。為此,列表E1中的每個非零系數的符號被熵編碼。
[0126]如果可調整系數的數量大于閾值TSIG,則在圖1所示的步驟CS中,處理模塊MTR_CO計算函數f的值,其表示子列表SE1中的系數。
[0127]在要發送到解碼器的信號中僅要隱藏一個符號的優選實施例中,函數f是子列表SE1中的系數之和的奇偶校驗。
[0128]在圖1所示的步驟C9中,根據在編碼器CO中事先定義的規則,處理模塊MTR_C0檢查要隱藏的符號的值的奇偶性是否對應于子列表SE1中的系數之和的奇偶性。
[0129]在所建議實例中,所述規則是:正符號與值等于零的比特相關聯,而負符號與值等于I的比特相關聯。
[0130]根據在根據本發明的編碼器CO中采用的規則,如果符號為正,其對應于值為零的編碼比特,并且如果子列表SE1中的系數之和是偶數,則對上述列表E1中除了系數ε 2的符號以外的系數進行熵編碼。
[0131]仍然根據在根據本發明的編碼器CO中采用的規則,如果符號為負,其對應于值為I的編碼比特,并且如果子列表SE1中的系數之和為奇數,則也對上述列表E1中除了系數ε 2的符號以外的系數進行熵編碼的步驟C20。
[0132]根據在根據本發明的編碼器CO中采用的規則,如果符號為正,其對應于值為零的編碼比特,并且如果子列表SE1的系數之和是奇數,則在圖1所示的步驟ClO中,子列表SE1中的至少一個可調整的系數被調整。
[0133]仍然根據在根據本發明的編碼器CO中采用的規則,如果符號為負,其對應于值為I的編碼比特,并且如果子列表SE1中的系數之和是奇數,則也在步驟ClO中,子列表SE1中的至少一個可調整的系數被調整。
[0134]該調整操作由圖2中的處理模塊MTR_C0執行。
[0135]在其中SE1 = (+9,-7,O, O, +1,O, -1, +2,O, O, +1)的示例性實施例中,系數的總和f
等于5且因此是奇數。為了使解碼器能夠重構被分配給第一非零系數ε2 = +9的正符號而不用編碼器CO將該系數發送到解碼器,必須將總和的奇偶性變成偶數。因此,在所述步驟ClO中,處理模塊MTR_C0測試子列表SE1中的系數的各種調整,所有的目標都是改變系數之和的奇偶性。在優選實施例中,+1或-1被加到每個可調整的系數并從被執行的那些調整中選擇調整。
[0136]在優選實施例中,這樣的選擇形成根據性能標準的最優預測,該性能標準例如是本領域技術人員眾所周知的比率失真標準。該標準由下列等式(I)來表示:
[0137](I) J = D+λ R
[0138]其中D表示原始宏塊和重構宏塊之間的失真,R表示編碼信息項的比特的編碼成本,R表示編碼信息項的比特的編碼成本,并且λ表示拉格朗日倍數,其值在編碼之前被固定。
[0139]在所建議的實例中,根據上述比率失真標準帶來最優預測的調整是將值I加到子列表SE1中的第二系數_7。
[0140]在步驟ClO結束時,因此得到已調整的子列表SEm1 =(+9, -6,O, O, +1, O, ~1, +2, O, O, +1)。
[0141]值得注意的是,在該步驟中,特定的調整是被禁止的。于是,在第一非零系數ε2具有值+1的情形中,不可能將該系數加上-1,因為它將變成零,并且然后該系數會丟失列表E1中的第一非零系數的特征。解碼器然后將已解碼的符號(通過對系數之和的奇偶性進行計算)歸屬于另一系數,且然后將會出現解碼錯誤。
[0142]在圖1所示的步驟Cll中,處理模塊MTR_C0對列表E1中進行相應的調整。然后得到下一已調整的列表 Em1 = (O, +9,-6,O, O, +1,O, -1, +2,O, O, +1,O, O, O, O)。
[0143]然后進行對上述列表Em1中除了系數ε 2的符號以外的系數的熵編碼的步驟C20,在所建議的例子中系數9為+符號,該符號被隱藏在系數之和的奇偶校驗中。
[0144]值得注意的是,列表E1或已調整的列表Em1中的系數的幅度的集合在除了如上解釋的未被編碼的第一非零系數ε 2的符號以外的符號的集合之前被編碼。
[0145]在圖1所示的下一步驟C30中,圖2中的編碼模塊MC_C0測試已編碼的當前塊是否是圖像IE中的最后一塊。
[0146]如果當前塊是圖像IE中的最后一塊,則在圖1所示的步驟C40中,編碼方法結束。
[0147]如果不是該情形下,選擇下一塊Bi,然后根據前述光柵掃描的順序通過重復步驟Cl到C20來對KiSZ的塊Bi進行編碼。
[0148]一旦實現所有塊B1到匕的熵編碼,則構造以二進制形式來表示所述已編碼的塊的 信號F。
[0149]二進制信號F的構造在如圖2所示的流構造軟件模塊CF中實現。
[0150]然后通過通信網絡(未示出)將流F發送到遠端。該遠端包括解碼器,將在下文描述中進一步詳細描述該解碼器。
[0151]現在將主要參考圖1來描述本發明的另一實施例。
[0152]該另一實施例與前一個實施例的區別僅在于所要隱藏的符號的數量為O或N,其中N是大于等于2的整數。
[0153]為此,前述比較子步驟C72被圖1中的虛線表示的子步驟C72a替換,在子步驟C72a中,將可調整的系數的數量與若干個預定閾值0〈TSIG_1〈TSIG_2〈TSIG_3…進行比較,通過這種方式,如果可調整的系數的數量在TSIG_N與TSIG_N+1之間,則N個符號要被隱藏。
[0154]如果可調整系數的數量小于第一閾值TSIG_1,則在上述步驟C20中,對列表E1中的系數進行傳統熵編碼。為此,列表E1中的每個非零系數的符號被熵編碼。
[0155]如果可調整系數的數量在閾值TSIG_N與TSIG_N+1之間,則在圖1所示的步驟C8中,處理模塊MTR_C0計算函數f的值,其表示子列表E1中的系數。
[0156]在該另一實施例中,由于在解碼器上決定隱藏N個符號,函數f是子列表SE1中的系數之和的模2N的余數。假設在所建議的實例中N = 2,則要隱藏的兩個符號分別是前兩個非零系數即ε 2和ε 3的前兩個符號。
[0157]在圖1所示的下一步驟C9中,處理模塊MTR_C0驗證N個符號的配置即2N個可能的配置是否對應于子列表SE1中的系數之和的模2N的余數的值。
[0158]在所建議的N = 2的實例中,存在22 = 4個不同的符號配置。
[0159]這四個配置符合編碼器CO的規則,該規則例如以如下方式確定:[0160]-等于零的余數對應于兩個連續的正符號:+,+;
[0161]-等于I的余數對應于連續的正符號和負符號:+,-;
[0162]-等于2的余數對應于連續的負符號和正符號:_,+;
[0163]-等于3的余數對應于兩個連續的負符號:_,_。
[0164]如果N個符號的配置對應于子列表SE1中的系數之和的模2N的余數的值,則對上述列表E1中除了系數ε2和系數ε 3的符號以外的系數進行熵編碼的步驟C20,所述符號被隱藏在系數之和的模2Ν的奇偶校驗中。
[0165]如果不是該情形,則進行用于對子列表SE1中的至少一個可調整的系數進行調整的步驟C10。該調整由圖2中的處理模塊MTR_C0以如下這樣的方式執行:子列表SE1中的可調整的系數之和的模2N的余數達到要隱藏的兩個符號中的每個符號的值。
[0166]在前述步驟Cll中,處理模塊MTR_C0對列表El進行相應的調整。由此得到已調整的列表E Hl1。
[0167]然后進行對上述列表Em1中除了系數ε 2的符號和系數ε 3的符號以外的系數的熵編碼的步驟C20,該符號被隱藏在系數之和的模2ν的奇偶校驗中。
[0168]解碼部分的詳細描述
[0169]現在將描述根據本發明的解碼方法的實施例,其中,解碼方法以軟件或硬件形式通過對初始符合H.264/MPEG-4AVC標準的解碼器的調整來實現。
[0170]根據本發明的解碼方法以圖3所示的包含步驟Dl到D12的算法的形式來表示。
[0171]根據本發明的實施例,根據本發明的解碼方法在如圖4所示的解碼設備或解碼器DO中實現。
[0172]在圖3中未示出的預備步驟中,在接收到的數據信號F中,識別之前已由編碼器CO編碼的分區B1到Βζ。在優選實施例中,所示分區是具有正方形形狀并且全部具有相同尺寸的塊。根據圖像的尺寸,該尺寸不一定是塊尺寸的倍數,最左邊的塊以及最底部的塊可以不是正方形。在替代的實施例中,塊例如可以是矩形尺寸和/或可以不互相對齊。
[0173]每個塊或每個宏塊本身可以進一步被分為子塊,子塊自己可以再細分。
[0174]該識別由如圖4所示的流分析軟件模塊EX_D0來執行。
[0175]在圖3所示的步驟Dl中,圖4中的模塊EX_D0選擇要解碼的第一塊B1作為當前塊B”該選擇例如包括在第一塊B1的數據項開始時在信號F中放置讀指針。
[0176]然后對選中的已編碼的塊中每個塊進行解碼。
[0177]在圖3所示的實例中,對已編碼的塊的B1到Bz中的每個塊相繼實施這樣的解碼。例如根據本領域技術人員眾所周知的光柵掃描來對塊進行解碼。
[0178]根據本發明的解碼在如圖4所示的解碼器DO的解碼軟件模塊MD_D0中實現。
[0179]在圖3所示的步驟D2中,首先對已選擇的第一當前塊B1進行熵解碼。該操作由圖4所示的例如CABAC類型的熵解碼模塊DE_D0來執行。在該步驟中,模塊DE_D0對與列表E1或已調整的列表Em1中每個被編碼的系數的幅度相對應的數字信息項執行熵解碼。在該階段,只有列表E1或已調整的列表Em1中的系數的符號未被解碼。
[0180]在圖3所示的步驟D3中,確定在之前的熵編碼步驟C20中可能已被隱藏的符號的數量。該步驟D3由如圖4所示的處理軟件模塊MTR_D0來執行。步驟D3類似于前述用于確定要被隱藏的符號的數量的步驟C7。[0181]在優選實施例中,隱藏符號的數量是I或O。此外,根據所述優選實施例,被隱藏的是第一非零系數的符號。因此在所示實例中,它需要系數ε2 =+9的正符號。
[0182]在替代實施例中,隱藏符號的數量是O、1、2、3或更多。
[0183]根據步驟D3的優選實施例,在圖3所示的第一子步驟D31中,根據所述列表E1或根據已調整的列表Em1來確定包含可能在編碼時已被調整的系數ε ’ 1,ε ’ 2,…,ε ’ M的子列表,其中M〈L。
[0184]該確定由與前述編碼步驟C7相同的方式來執行。
[0185]和前述處理模塊MTR_C0類似,處理模塊MTR_D0被初始配置以不調整:
[0186]-位于第一非零系數之前的零系數或多個零系數,
[0187]-以及由于計算復雜的原因,位于最后的非零系數之后的零系數或多個零系數。
[0188]在所示實例中,在子步驟D31結束時,存在子列表SEm1從而SEm1 =(9, -6, O, O, 1,0,-1,2,0,0, I)。因此,得到可能已被調整的11個系數。
[0189]在圖3所示的下一子步驟D32中,處理模塊MTR_D0將可能已被調整的系數的數量與預定閾值TSIG進行比較。在優選實施例中,TSIG具有值4。
[0190]如果可能已被調整的系數數量小于閾值TSIG,則在圖3所示的步驟D4中,對列表E1中的系數的所有符號進行傳統熵解碼。該解碼由圖4中的標記DE_D0表示的CABAC解碼器來執行。為此,列表E1中的每個非零系數的符號被熵解碼。
[0191]如果可能已被調整的系數的數量大于閾值TSIG,則在所述步驟D4中,對列表Em1中的系數的除了第一非零系數ε 2的符號以外的所有符號進行傳統熵解碼。
[0192]在圖3所示的步驟D5中,處理模塊MTR_D0計算表示子列表SEm1的系數的函數f的值,以確定所計算的值是偶數還是奇數。
[0193]在信號F中隱藏一個符號的優選實施例中,函數f是子列表SEm1中的系數之和的奇偶校驗。
[0194]根據在編碼器CO上使用的與解碼器DO上相同的規則,子列表SEm1中的系數之和的偶數值表示已調整的列表Em1中的第一非零系數的符號是正的,而子列表SEm1中的系數之和的奇數值表示已調整的列表Em1中的第一非零系數的符號是負的。
[0195]在SEm1 = (+9,_6,O, O, +1,O, -1, +2,O, O, +1)的示例性實施例中,系數的總和等于6,且因此是偶數。于是,在步驟D5結束時,處理模塊MTR_D0由此推斷第一非零系數ε2的隱藏符號是正的。
[0196]在圖3所示的步驟D6中,并且借助于在步驟D2、D4和D5中所有重構的數字信息項,以預定的順序來重構塊Bq1的量化系數。在所示實例中,這是相對于前述編碼步驟C6中所執行的之字形掃描相反的之字形掃描。該步驟由如圖4所示的讀取軟件模塊ML_D0執行。更具體而言,模塊ML_D0使用所述相反的之字形的掃描順序來包含塊Bq1 (二維)中的列表E1 (—維)的系數。
[0197]在圖3所示的步驟D7中,根據傳統的反量化操作來對已量化的殘留塊Bq1進行反量化,該操作是與前述編碼步驟C5中執行的量化相反的操作,以生成已解碼的反量化塊BDq10該步驟由如圖4所示的反量化軟件模塊MDQ_D0來執行。
[0198] 在圖3所示的步驟D8中,對反量化塊BDq1進行逆變換,所述逆變換是與編碼時的前述步驟C4中執行的直接變換相反的操作。然后得到已解碼的殘留塊BDiv該操作由如圖4所示的逆變換軟件模塊MTI_DO來執行。
[0199]在圖3所示的步驟D9中,對當前塊B1進行預測解碼。這樣的預測解碼傳統上在針對至少一個之前已解碼的塊來預測塊B1的過程中通過已知的幀內和/或幀間預測技術來執行。該操作由如圖4所示的預測解碼模塊PRED_D0來實現。
[0200]毋庸贅述,如H.264標準所建議的其它幀內預測模式是可能的。
[0201]在該步驟中,使用前述步驟中的解碼語義元素來執行預測解碼,且尤其包括預測類型(幀間預測或幀內預測),并且如果必要的話,包括幀內預測模式、塊或宏塊(如果宏塊已被細分)的分區類型、在幀間預測模式中使用的參考圖像索引以及運動矢量。
[0202]上述預測解碼步驟構造已預測的塊Bp1。
[0203]在圖3所示的步驟DlO中,通過將已解碼的殘留塊BDr1加到已預測的塊Bp1來構造已解碼的塊BD115該操作由圖4所示的重構軟件模塊MR_D0來執行。
[0204]在圖3所示的步驟Dll中,解碼模塊MD_D0測試已解碼的當前塊是否是信號F中識別的最后的塊。
[0205]如果當前塊是信號F中最后的塊,則在圖3所示的步驟D12中,解碼方法結束。
[0206]如果不是該情形下,則選擇下一塊Bi,根據前述光柵掃描的順序通過重復步驟Dl到DlO來對I < i < Z的塊Bi進行解碼。
[0207]現在將主要參考圖3來描述本發明的另一實施例。
[0208]該另一實施例與前一個實施例的區別僅在于所隱藏的系數的數量為O或N,其中N是大于等于2的整數。
[0209]為此,前述比較子步驟D32被圖3中的虛線所示的子步驟D32a替換,在子步驟D32a中,將可能已被調整的系數的數量與若干個預定的閾值0〈TSIG_1〈TSIG_2〈TSIG_3...進行比較,通過這種方式,如果所述系數的數量在TSIG_N與TSIG_N+1之間,則N個信號已被隱藏。
[0210]如果所述系數的數量小于第一閾值TSIG_1,則在前述步驟D4中,對列表E1中的系數的所有符號進行傳統熵解碼。為此,列表E1中的每個非零系數的符號被熵解碼。
[0211]如果所述系數的數量在閾值TSIG_N與 TSIN_N+1之間,則在前述步驟D4中,對列表E1中的系數的除了所述調整列表Em1中的第一非零系數的N個各個符號以外的所有符號進行傳統熵解碼,所述N個符號被隱藏。
[0212]在該另一實施例中,處理模塊MTR_D0在步驟D5中計算函數f的值,其是子列表SEm1中的系數之和的模2N的余數。假設在所建議的實例中N = 2。
[0213]處理模塊MTR_D0由此根據在解碼時所使用的規則來推斷被分別分配給兩個第一非零系數ε 2和ε 3中的每個非零系數的兩個隱藏符號的配置。
[0214]一旦這兩個符號已被重構,則執行上述步驟D6到D12。
[0215]毋庸贅述,本文所描述的實施例僅通過指示的方式給出而不是要限制,并且本領域技術人員可以容易地實現多種調整而不偏離本發明的范圍。
[0216]于是例如,根據關于圖1所示的簡化實施例,編碼器CO可被配置為隱藏至少N’個預定符號,其中,N’ > 1,而不是0、1或N個預定符號。在該情形下,比較步驟C72或C72a將被移除。通過相應的方式,根據關于圖3所示的簡化實施例,解碼器DO將被配置為重構N’個預定符號而不是0、1或N個預定符號。在該情形下,比較步驟D32或D32a將被移除。[0217]此外,在編碼步驟C72和解碼步驟D32中應用的判斷標準可被另一類型的標準替換。為此,代替將可調整的系數的數量或可能已被調整的系數的數量與閾值進行比較,處理模塊MTR_C0或MTR_D0可以分別應用判斷標準,所述判斷標準是可調整或可能已被調整的系數的幅度之和的函數,或者可調整或可能已被調整的系數中存在的零的數量的函數。
【權利要求】
1.一種用于對被劃分為多個分區的至少一個圖像進行編碼的方法,所述方法實現下列步驟: -根據至少一個已經被編碼然后被解碼的參考分區來預測(C2)當前分區的數據項,生成已預測分區; -通過將與所述當前分區相關的數據項與所述已預測分區進行比較來確定(C3)殘留數據項的集合,所述殘留數據項分別與要經歷熵編碼的各個數字信息項關聯, -生成包含所述已編碼的信息項的信號,所述編碼方法的特征在于,在所述信號生成步驟之前,實現下列步驟: -根據所述已確定的殘留數據項的集合來確定(C71)包含適于被調整的殘留數據項的子集, -計算(CS)表示所述已確定的子集的殘留數據項的函數的值, -將所述已計算的值與至少一個所述數字信息項的值進行比較, -取決于所述比較的結果,調整(ClO)或不調整所述子集中的至少一個殘留數據項, -在調整的情況下,對所述至少一個已調整的殘留數據項進行熵編碼(C20)。
2.如權利要求1所述的編碼方法,其中,只有在滿足依賴于適合被調整的所述殘留數據項的預定標準時,才會執行在所述用于確定所述殘留數據項的所述子集的步驟之后的所述步驟。
3.如權利要求2所述的編碼方法,所述預定判斷標準依賴于在適合被調整的殘留數據項的數量與預定數量(TSIG)之間的比較結果。
4.如權利要求1所述的編碼方法,其中,如果在所述比較步驟中考慮多個數字信息項,則該比較步驟需要將表示所述已確定的子集的殘留數據項的函數的計算值與表示所述多個數字信息項的函數的值進行比較。
5.如權利要求1所述的編碼方法,所述至少一個數字信息項對應于殘留數據項的符號。
6.一種用于對被劃分為多個分區的至少一個圖像進行編碼的設備(CO),所述設備包括: -根據至少一個已經被編碼然后被解碼的參考分區來預測當前分區的數據項生成已預測分區的裝置(PRED_CO), -確定適于將與當前分區相關的數據項與已預測分區進行比較的殘留數據項的集合的裝置(MT_CO、MQ_CO、ML_CO),所述殘留數據項分別與要經歷熵編碼的各個數字信息項相關聯, -用于生成包含所述已編碼的信息的信號的裝置(CF), 所述編碼設備的特征在于,在所述生成裝置之前包括處理裝置(MTR_CO),該處理裝置能夠: -根據所述已確定的殘留數據項的集合來確定包含適于被調整的殘留數據項的子集, -計算表示所述已確定子集的殘留數據項的函數的值, -將所述已計算的值與至少一個所述數字信息項的值進行比較, -根據所述比較的結果,調整或不調整所述已確定子集中的至少一個殘留數據項; 以及在通過所述處理裝置來調整的情況下,對所述至少一個已調整的殘留數據項進行熵編碼的裝置(CE_CO)。
7.一種用于對表示之前已被編碼的劃分為多個分區的至少一個圖像的數據信號(F)進行解碼的方法,包括通過所述信號的數據項的熵解碼來獲取(D2)與和至少一個之前已被編碼的分區相關的殘留數據項關聯的數字信息項的步驟, 所述解碼方法的特征在于,它包括下列步驟: -根據所述殘留數據項來確定包含在之前的編碼期間能被調整的殘留數據項的子集(D31), -計算表示所述已確定子集的殘留數據項的函數的值(D5), -根據所述已計算的值來獲取與通過熵解碼而獲得的那些值所不同的至少一個數字信息項的值。
8.如權利要求7所述的解碼方法,只有在滿足依賴于能被調整的殘留數據項的預定標準時,才會實現在所述用于確定殘留數據項的子集的步驟之后的所述步驟。
9.如權利要求8所述的解碼方法,所述預定判斷標準依賴于在能被調整的殘留數據項的數量和預定數量之間的比較結果。
10.如權利要求7所述的解碼方法,其中,根據所述已計算的值來獲取與多個數字信息項分別關聯的多個值,所述多個數字信息項與通過熵解碼所獲取的數字信息項不同。
11.如權利要求7所述的解碼方法,所述至少一個數字信息項對應于殘留數據項的符號。
12.一種用于對表示之前已被編碼的劃分為多個分區的至少一個圖像的數據信號進行解碼的裝置(DO),包括用于通過所述信號的數據項的熵解碼來獲取與和至少一個之前被編碼的分區相關的殘留數據項相關聯的數字信息項的裝置(DE_D0), 所述解碼設備的特征在于,它包括處理裝置(MTR_D0),其能夠: -根據所述殘留數據項來確定包含在之前的編碼期間能被調整的殘留數據項的子集, -計算表示所述已確定子集的殘留數據項的函數的值, -根據所述已計算值來獲取與通過熵解碼所獲取的那些數字信息項所不同的至少一個數字信息項的值。
13.一種包含指令的計算機程序,當如權利要求1到5中任一項所述的編碼方法在計算機上執行時,所述指令用
14.一種包含指令的計算機程序,當如權利要求7到11中任一項所述的解碼方法在計算機上執行時,所述指令用于實現所述解碼方法。
【文檔編號】H04N19/463GK104041038SQ201280066211
【公開日】2014年9月10日 申請日期:2012年11月6日 優先權日:2011年11月7日
【發明者】F.亨利, G.克萊爾 申請人:奧林奇公司