專利名稱:用于通過使用轉動變換來對圖像編碼和解碼的方法和設備的制作方法
技術領域:
示例性實施例涉及一種用于對圖像編碼和解碼的方法和設備,更具體地講,涉及一種用于對通過將圖像從像素域變換到頻域產生的系數進行編碼和解碼的方法和設備。
背景技術:
在用于對圖像編碼和解碼的現有技術的方法和設備中,像素域的圖像被變換到頻域并且隨后被編碼以對圖像進行壓縮。離散余弦變換(DCT)是用于對音頻/視頻(AV)數據進行壓縮的現有技術。近年來,已經為找出 更有效的壓縮方法做出了許多嘗試。在音頻編碼中,在二維數據中,參數編碼比DCT執行得更好,Karhunen Loeve變換(KLT)具有最小比特大小而具有大開銷大小。
發明內容
解決方案一個或更多示例性實施例提供了一種用于對圖像編碼和解碼的方法和設備、以及記錄有用于執行所述方法的計算機程序的計算機可讀記錄介質。有益效果根據示例性實施例,可基于高壓縮率的數學對頻率系數矩陣進行強健地編碼,因此可大大地提高總圖像壓縮率。
通過結合附圖對其示例性實施例進行詳細描述,以上和其他特征將變得更加清楚,其中圖I是根據示例性實施例的用于對圖像編碼的設備的框圖;圖2是根據示例性實施例的用于對圖像解碼的設備的框圖;圖3示出根據示例性實施例的分層編碼單元;圖4是根據示例性實施例的基于編碼單元的圖像編碼器的框圖;圖5是根據示例性實施例的基于編碼單元的圖像解碼器的框圖;圖6示出根據示例性實施例的最大編碼單元、子編碼單元和預測單元;圖7示出根據示例性實施例的編碼單元和變換單元;圖8A至8D示出根據示例性實施例的編碼單元、預測單元和變換單元的分割形狀;圖9是根據另一示例性實施例的用于對圖像編碼的設備的框圖;圖10是根據示例性實施例的圖9中示出的變換器的框圖;圖IlA至IlC是根據示例性實施例的用于描述轉動變換(ROT)的示圖;圖12A至121示出根據示例性實施例的ROT矩陣;圖13A至13B示出根據示例性實施例的反ROT語法;
圖14示出根據示例性實施例的歐拉角(Euler angles);圖15示出根據示例性實施例的偽隨機點;圖16是根據另一實施例的用于對圖像解碼的設備的框圖;圖17是根據示例性實施例的反變換器的框圖;圖18是根據示例性實施例的對圖像編碼的方法的流程圖;圖19是根據示例性實施例的對圖像解碼的方法的流程圖;
圖20A和20B示出根據另一示例性實施例的ROT矩陣;圖21A和21B示出根據另一示例性實施例的反ROT語法。本發明的最佳實施方式根據示例性實施例的一方面,提供了一種對圖像進行編碼的方法,所述方法包括通過對當前塊執行離散余弦變換(DCT)來產生第一頻率系數矩陣;基于當前塊是否被幀內預測來確定角度參數;通過基于確定的角度參數在第一頻率系數矩陣的行和列中的至少一個之間執行部分轉換來產生第二頻率系數矩陣;對第二頻率系數矩陣進行量化;對關于角度參數的信息以及第二頻率系數矩陣進行熵編碼,其中,角度參數指示第一頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。確定角度參數的步驟可包括基于當前塊的幀內預測方向來確定角度參數。基于當前塊的幀內預測方向來確定角度參數的步驟可包括基于當前塊的幀內預測方向從多個矩陣中選擇用于在行之間執行部分轉換的第一矩陣并且選擇用于在列之間執行部分轉換的第二矩陣。產生第二頻率系數矩陣的步驟可包括將第一頻率系數矩陣的左側乘以選擇的第一矩陣,并將第一頻率系數矩陣的右側乘以選擇的第二矩陣。角度參數可以是用于歐拉角的參數。根據另一示例性實施例的一方面,提供了一種對圖像解碼的方法,所述方法包括對關于角度參數的信息以及第二頻率系數矩陣進行熵解碼;基于熵解碼的關于角度參數的信息以及當前塊是否被幀內預測來確定角度參數;對熵解碼的第二頻率系數矩陣進行反量化;通過基于確定的角度參數在第二頻率系數矩陣的行和列中的至少一個之間執行部分轉換來以產生第一頻率系數矩陣;通過對第一頻率系數矩陣執行DCT來恢復當前塊,其中,角度參數指示在第二頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。根據另一示例性實施例的一方面,提供了一種用于對圖像編碼的設備,所述設備包括變換器,通過對當前塊執行DCT來產生第一頻率系數矩陣,并且通過基于根據當前塊是否被幀內預測確定的角度參數在第一頻率系數矩陣的行和列中的至少一個之間執行部分轉換,來產生第二頻率系數矩陣;量化器,對第二頻率系數矩陣進行量化;熵編碼器,對關于角度參數的信息以及第二頻率系數矩陣進行熵編碼,其中,角度參數指示在第一頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。根據另一示例性實施例的一方面,提供了一種用于對圖像解碼的設備,所述設備包括熵解碼器,對關于預定角度參數的信息以及第二頻率系數矩陣進行熵解碼;反量化器,對熵解碼的第二頻率系數矩陣進行反量化;反變換器,通過基于根據熵解碼的關于角度參數的信息以及當前塊是否被幀內預測確定的角度參數在第二頻率系數矩陣的行和列中的至少一個之間執行部分轉換,來產生第一頻率系數矩陣,并且通過對第一頻率系數矩陣執行DCT來恢復當前塊,其中,角度參數指示在第二頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。根據另一示例性實施例的一方面,提供了一種其上實現有用于執行對圖像編碼的方法以及對圖像解碼的方法中的至少一個的計算機程序的計算機可讀記錄介質。
具體實施例方式下文中,將參照附圖來對一個或更多示例性實施例進行更加充分地描述。當諸如“…中的至少一個”的表達在一列元素后面時,該表達修飾整列元素,而不修飾該列中的個別元素。在本說明書中,“圖像”可表示視 頻的靜止圖像或運動圖像(即,視頻本身)。圖I是根據示例性實施例的用于對圖像編碼的設備100的框圖。參照圖1,用于對圖像編碼的設備100包括最大編碼單元分割器110、編碼深度確定器120、圖像數據編碼器130和編碼信息編碼器140。最大編碼單元分割器110可基于作為最大大小的編碼單元的最大編碼單元來分割當前幀或像條。也就是,最大單元分割器110可將當前幀或像條分割為至少一個最大編碼單元。根據示例性實施例,可使用最大編碼單元和深度來表示編碼單元。如上所述,最大編碼單元指示當前幀的多個編碼單元中的具有最大大小的編碼單元,深度指示分層地減小編碼單元的程度。隨著深度的增加,編碼單元可從最大編碼單元減小到最小編碼單元,其中,最大編碼單元的深度被定義為最小深度,最小編碼單元的深度被定義為最大深度。由于隨著深度的增加,編碼單元的大小從最大編碼單元減小,因此第k深度的子編碼單元可包括第(k+n)深度的多個子編碼單元(k和n是等于或大于I的整數)。根據將被編碼的幀的大小的增加,以更大編碼單元對圖像編碼可引起更高的圖像壓縮率。然而,如果更大的編碼單元固定,則通過反映連續改變的圖像特性的圖像可能不會被有效地編碼。例如,當諸如海洋或天空的平滑區域被編碼時,編碼單元越大,壓縮率可提高得越大。然而,當諸如人或建筑物的復雜區域被編碼時,編碼單元越小,壓縮率可提高得越大。因此,根據示例性實施例,針對每個幀或像條設置不同的最大圖像編碼單元和不同的最大深度。由于最大深度表示編碼單元可減小的最大次數,可根據最大深度來可變地設置包括在最大圖像編碼單元中的每個最小編碼單元的大小。可針對每個幀或像條或針對每個最大編碼單元來不同地確定最大深度。編碼深度確定器120確定最大編碼單元的分割形狀。可基于率失真(RD)成本的計算來確定分割形狀。確定的最大編碼單元的分割形狀被提供給編碼信息編碼器140,并且根據最大編碼單元的圖像數據被提供給圖像數據編碼器130。最大編碼單元可根據不同深度被分割為具有不同大小的多個子編碼單元,并且包括在最大編碼單元中的具有不同大小的多個子編碼單元可基于具有不同大小的多個處理單元被預測或頻率變換。換句話說,用于對圖像編碼的設備100可基于具有各種大小和各種形狀的多個處理單元來執行用于圖像編碼的多個處理操作。為了對圖像數據編碼,諸如預測、變換和熵編碼中的至少一個的處理操作被執行,其中,具有相同大小或不同大小的處理單元可用于每個操作。
例如,用于對圖像編碼的設備100可選擇與編碼單元不同的處理單元來預測編碼單元。當編碼單元的大小是2NX2N(其中,N是正整數)時,用于預測的處理單元可以是2NX2N、2NXN、NX2N和NXN。換句話說,可基于具有編碼單元的高度和寬度中的至少一個被二等分的形狀的處理單元來執行運動預測。下文中,作為預測的基礎的處理單元被定義為“預測單元”。預測模式可以是幀內模式、 幀間模式和跳過模式中的至少一個,可僅對具有特定大小或形狀的預測單元執行特定預測模式。例如,可僅對形狀為正方形大小為2NX2N和NXN的預測單元執行幀內模式。此外,可僅對大小為2NX2N的預測單元執行跳過模式。如果多個預測單元存在于編碼單元中,則在針對每個預測單元執行預測之后,可選擇具有最小編碼誤差的預測模式。可選擇地,用于對圖像編碼的設備100可基于具有與編碼單元不同大小的處理單元來對圖像數據執行變換。對于編碼單元中的變換,可基于具有等于或小于編碼單元的大小的大小的處理單元來執行所述變換。下文中,作為變換的基礎的處理單元被定義為“變換單元”。變換可以是離散余弦變換(DCT)或Karhunen Loeve變換(KLT)或任何其他固定點空間變換。編碼深度確定器120可基于拉格朗日乘數(Lagrangian multiplier)使用RD最優化來確定包括在最大編碼單元中的子編碼單元。換句話說,編碼深度確定器120可確定從最大編碼單元分割的多個子編碼單元具有哪種形狀,其中,多個子編碼單元根據它們的深度具有不同大小。圖像數據編碼器130通過基于由編碼深度確定器120確定的分割形狀對最大編碼單元編碼來輸出比特流。編碼信息編碼器140對關于由編碼深度編碼器120確定的最大編碼單元的編碼模式的信息進行編碼。換句話說,編碼信息編碼器140通過對關于最大編碼單元的分割形狀的信息、關于最大深度的信息以及關于每個深度的子編碼單元的編碼模式的信息進行編碼,來輸出比特流。關于子編碼單元的編碼模式的信息可包括關于子編碼單元的預測單元的信息、關于每個預測單元的預測模式的信息以及關于子編碼單元的變換單元的信息。關于最大編碼單元的分割形狀的信息可以是這樣的信息,例如指示每個編碼單元是否被分割的標志信息。例如,當最大編碼單元被分割和編碼時,指示最大編碼單元是否被分割的信息被編碼。另外,當從最大編碼單元分割的子編碼單元被分割和編碼時,指示子編碼單元是否被分割的信息被編碼。由于對于每個最大編碼單元存在具有不同大小的多個子編碼單元并且必須針對每個子編碼單元確定關于編碼模式的信息,因此可針對一個最大編碼單元來確定關于至少一個編碼模式的信息。用于對圖像編碼的設備100可通過根據深度的增加將最大編碼單元的高度和寬度二等分來產生子編碼單元。也就是,當第k深度的編碼單元的大小是2NX2N時,第(k+1)深度的編碼單元的大小是NXN。因此,用于對圖像編碼的設備100可考慮圖像特性基于最大編碼單元的大小和最大深度來確定每個最大編碼單元的最佳分割形狀。通過考慮圖像特性可變地調整最大編碼單元的大小并且通過將最大編碼單元分割為不同深度的子編碼單元來對圖像編碼,具有各種分辨率的圖像可被更加有效地編碼。圖2是根據示例性實施例的用于對圖像解碼的設備200的框圖。參照圖2,用于對圖像解碼的設備200包括圖像數據獲取單元210、編碼信息提取器220以及圖像數據解碼器230。圖像數據獲取單元210通過解析由用于對圖像解碼的設備200接收的比特流根據最大編碼單元來獲取圖像數據, 并將圖像數據輸出到圖像數據解碼器230。圖像數據獲取單元210可從當前幀或像條的頭提取關于當前幀或像條的最大編碼單元的信息。換句話說,圖像數據獲取單元210以最大編碼單元來分割比特流,從而圖像數據解碼器230可根據最大編碼單元來對圖像數據解碼。編碼信息提取器220通過解析由用于對圖像解碼的設備200接收的比特流,從當前幀的頭提取關于最大編碼單元、最大深度、最大編碼單元的分割形狀、子編碼單元的編碼模式的信息。關于分割形狀的信息以及關于編碼模式的信息被提供給圖像數據解碼器230。關于最大編碼單元的分割形狀的信息可包括關于根據深度具有不同大小并且包括在最大編碼單元中的子編碼單元的信息,并且可以是指示每個編碼單元是否被分割的信息(諸如,標志信息)。關于編碼模式的信息可包括關于根據子編碼單元的預測單元的信息、關于預測模式的信息以及關于變換單元的信息。圖像數據解碼器230通過基于由編碼信息提取器220提取的信息對每個最大編碼單元的圖像數據解碼來恢復當前幀。圖像數據解碼器230可基于關于最大編碼單元的分割形狀的信息來對包括在最大編碼單元中的子編碼單元解碼。解碼處理可包括預測處理(包含幀內預測和運動補償)以及反變換處理。圖像數據解碼器230可基于關于預測單元的信息和關于預測模式的信息來執行幀內預測或幀間預測以對預測單元進行預測。圖像數據解碼器230還可基于關于子編碼單元的變換單元的信息來對每個子編碼單元執行反變換。圖3示出根據示例性實施例的分層編碼單元。參照圖3,分層編碼單元可包括寬度X高度是64X64、32X32、16X16、8X8和4X4的編碼單元。除了這些具有完全正方形形狀的編碼單元之外,也可存在寬度X高度是64X32、32X64、32X16、16X32、16X8、8X16、8X4、4X8 的編碼單元。參照圖3,對于分辨率為1920 X 1080的圖像數據310,最大編碼單元的大小被設置為64 X 64,最大深度被設置為2。對于分辨率為1920X1080的圖像數據320,最大編碼單元的大小被設置為64X64,最大深度被設置為3。對于分辨率為352X288的圖像數據330,最大編碼單元的大小被設置為16X16,最大深度被設置為2。當分辨率高或者數據量大時,編碼單元的最大大小可相對大以增加壓縮率并且精確地反映圖像特性。因此,對于具有比圖像數據330更高分辨率的圖像數據310和320,64X 64可被選擇作為最大編碼單元的大小。最大深度指示在分層編碼單元中的層的總數。由于圖像數據310的最大深度是2,因此圖像數據310的編碼單元315可根據深度的增加包括長軸大小為64的最大編碼單元以及長軸大小為32和16的子編碼單元。另一方面,由于圖像數據330的最大深度是1,因此圖像數據330的編碼單元335可根據深度的增加包括長軸大小16的最大編碼單元以及長軸大小8和4的子編碼單元。然而,由于圖像數據320的最大深度是3,因此圖像數據320的編碼單元325可根據深度的增加包括長軸大小64的最大編碼單元以及長軸大小32、16、8和4的子編碼單元。由于基于隨著深度的增加而更小的子編碼單元來對圖像編碼,因此,示例性實施例適合于對包括更微小的場景的圖像編碼。
圖4是根據示例性實施例的基于編碼單元的圖像編碼器400的框圖。幀內預測單元410在當前幀405中對幀內模式的預測單元執行幀內預測,運動估計器420和運動補償器425使用當前幀405和參考幀495對幀間模式的預測單元執行幀間預測和運動補償。基于從幀內預測單元410、運動估計器420和運動補償器425輸出的預測單元產生殘差值,并且產生的殘差值通過經過變換器430和量化器440被輸出為量化的變換系數。量化的變換系數通過反量化器460和反變換器470被恢復為殘差值,并且恢復的殘差值通過去塊單元480和環路濾波單元490被后處理并且被輸出為參考幀495。量化的變換系數可通過熵編碼器被輸出為比特流455。為了基于根據示例性實施例的編碼方法執行編碼,圖像編碼器400的元件(即,幀內預測單元410、運動估計器420、運動補償器425、變換器430、量化器440、熵編碼器450、反量化器460、反變換器470、去塊單元480和環路濾波單元490)基于最大編碼單元、根據深度的子編碼單元、預測單元和變換單元來執行圖像編碼處理。圖5是根據示例性實施例的基于編碼單元的圖像解碼器500的框圖。參照圖5,比特流505經過解析器510,從而將被解碼的編碼圖像數據和解碼所需的編碼信息被解析。編碼圖像數據通過熵解碼器520和反量化器530被輸出為反量化的數據,并且反量化的數據通過反變換器540被恢復為殘差值。通過將殘差值添加到幀內預測單元550的幀內預測結果或者運動補償器560的運動補償結果,殘差值根據編碼單元被恢復。恢復的編碼單元通過去塊單元570和環路濾波單元580被用于接下來的編碼單元或下一幀的預測。為了基于根據示例性實施例的解碼方法執行解碼,圖像解碼器500的元件(即,解析器510、熵解碼器520、反量化器530、反變換器540、幀內預測器550、運動補償器560、去塊單元570和環路濾波單元580)基于最大編碼單元、根據深度的子編碼單元、預測單元和變換單元來執行圖像解碼處理。具體地講,幀內預測單元550和運動補償器560通過考慮最大編碼單元和深度來確定子編碼單元中的預測單元和預測模式,并且反變換器540通過考慮變換單元的大小來執行反變換。圖6示出根據示例性實施例的最大編碼單元、子編碼單元和預測單元。圖I中示出的用于對圖像編碼的設備100和圖2中示出的用于圖像解碼的設備200考慮圖像特性使用多個分層編碼單元來執行編碼和解碼。最大編碼單元和最大深度可根據圖像特性被自適應地設置或根據用戶的需求被可變地設置。在圖6中,分層編碼單元結構600具有高度和寬度為64以及最大深度為4的最大編碼單元610。深度沿著分層編碼單元結構600的縱軸增加,并且隨著深度增加,子編碼單元620至650的高度和寬度減小。最大編碼單元610和子編碼單元620至650的預測單元沿分層編碼單元結構600的橫軸被顯示。最大編碼單元610的深度為0,且編碼單元的大小(即,寬度和高度)為64X64。深度沿縱軸增加,并且存在大小為32X32且深度為I的子編碼單元620、大小為16X16且深度為2的子編碼單元630、大小為8X8且深度為3的子編碼單元640以及大小為4X4且深度為4的子編碼單元650。大小為4X4且深度為4的子編碼單元650是最小編碼單元,并且最小編碼單元可被分割為多個預測單元 ,每個預測單元小于最小編碼單元。參照圖6,預測單元的示例根據每個深度沿橫軸被顯示。也就是,深度為0的最大編碼單元610的預測單元可以是大小等于編碼單元610(即,64X64)的預測單元、或大小為64X32的預測單元612、大小為32X64的預測單元614、或大小為32X32的預測單元616 (即,具有小于大小為64X64的編碼單元610的大小)。深度為I且大小為32X32的編碼單元620的預測單元可以是大小等于編碼單元620(即,32X32)的預測單元、或大小為32X16的預測單元622、大小為16X32的預測單元624、或大小為16 X 16的預測單元626 (即,具有小于大小為32 X 32的編碼單元620的大小)。深度為2且大小為16X16的編碼單元630的預測單元可以是大小等于編碼單元630 (即,16X16)的預測單元、或大小為16X8的預測單元632、大小為8X16的預測單元634、或大小為8X8的預測單元636 (即,具有小于大小為16 X 16的編碼單元630的大小)。深度為3且大小為8X8的編碼單元640的預測單元可以是大小等于編碼單元640(即,8X8)的預測單元、或大小為8X4的預測單元642、大小為4X8的預測單元644、或大小為4X4的預測單元646 (即,具有小于大小為8X8的編碼單元640的大小)。最后,深度為4且大小為4X4的編碼單元650是最小編碼單元和最大深度的編碼單元,并且編碼單元650的預測單元可以是大小為4X4的預測單元650、具有大小4X2的預測單元652、具有大小2X4的預測單元654、或大小2X2的預測單元656。圖7示出根據示例性實施例的編碼單元和變換單元。圖I中示出的用于對圖像編碼的設備100和圖2中示出的用于對圖像解碼的設備200對于最大編碼單元本身或者從最大編碼單元分割的等于或小于最大編碼單元的子編碼單元執行編碼和解碼。在編碼和解碼處理中,用于變換的變換單元的大小被選擇為不長于相應編碼單元的大小。例如,參照圖7,在當前編碼單元710的大小為64X64時,可使用大小為32X32的變換單元720來執行變換。圖8A至8D示出根據示例性實施例的編碼單元、預測單元和變換單元的分割形狀。圖8A和8B示出根據示例性實施例的編碼單元和預測單元。圖8A顯示由圖I中示出的用于對圖像編碼的設備100選擇的分割形狀,以對最大編碼單元810編碼。用于對圖像編碼的設備100將最大編碼單元810分割為各種形狀,執行編碼,并通過基于R-D成本將各種分割形狀的編碼結果彼此進行比較來選擇最佳分割形狀。當最大編碼單元810按原樣被編碼為最佳時,如圖8A至8D所示,無需分割最大編碼單元810,最大編碼單元810可被編碼。參照圖8B,通過將深度為0的最大編碼單元810分割為深度等于或大于I的多個子編碼單元來對最大編碼單元810編碼。也就是,最大編碼單元810被分割為深度為I的4個編碼單元,并且深度為I的所有的子編碼單元或部分子編碼單元被分割為深度為2的多個子編碼單元。深度為I的子編碼單元中的位于右上側的子編碼單元和位于左下側的子編碼單元被分為深度等于或大于2的多個子編碼單元。深度等于或大于2的部分子編碼單元可被分割為深度等于或大于3的多個子編碼單元。圖SB顯示用于最大編碼單元810的預測單元的分割形狀。
參照圖8B,用于最大編碼單元810的預測單元860可與最大編碼單元810不同地被分割。換句話說,用于每個子編碼單元的預測單元可小于相應子編碼單元。例如,用于深度為I的子編碼單元中的位于右下側的子編碼單元854的預測單元可小于子編碼單元854。此外,用于深度為2的子編碼單元814、816、818、828、850和852中的一些子編碼單元814、816、850和852的預測單元可分別小于子編碼單元814、816、850和852。此外,用于深度為3的子編碼單元822、832和848的預測單元可分別小于子編碼單元822、832和848。預測單元可具有各子編碼單元在高度或寬度的方向上被二等分的形狀或具有各子編碼單元在高度和寬度的方向上被四等分的形狀。圖8C和8D示出根據示例性實施例的預測單元和變換單元。圖8C顯示圖8B中顯示的用于最大編碼單元810的預測單元的分割形狀,圖8D顯示最大編碼單元810的變換單元的分割形狀。參照圖8D,變換單元870的分割形狀可與預測單元860被不同地設置。例如,即使用于深度為I的編碼單元854的預測單元選擇具有編碼單元854的高度被二等分的形狀,變換單元也可選擇具有與編碼單元854相等的大小。同樣,即使用于深度為2的編碼單元814和850的預測單元選擇具有編碼單元814和850的每一個的高度被二等分的形狀,變換單元也可選擇具有與編碼單元814和850的每一個的原始大小相同的大小。變換單元可選擇具有小于預測單元的大小。例如,當用于深度為2的編碼單元852的預測單元選擇具有編碼單元852的寬度被二等分的形狀時,變換單元可選擇具有編碼單元852在高度和寬度的方向上被四等分的形狀,該形狀具有小于預測單元的形狀的大小。圖9是根據另一示例性實施例的用于對圖像編碼的設備900的框圖。圖9中示出的用于對圖像編碼的設備900可以是包括在圖I中示出的用于對圖像編碼的設備100中或包括在圖4中示出的圖像編碼器400中用于執行以下圖像編碼處理的模塊。參照圖9,用于對圖像編碼的設備900包括變換器910、量化器920和熵編碼器930。變換器910接收當前塊并將當前塊變換到頻域。變換到頻域可以是DCT或KLT或任何其他固定點空間變換,并且接收的當前塊可以是殘差塊。另外,當前塊可以是以上關于圖7或8D描述的變換單元。作為變換的結果,像素域的當前塊被變換到頻域的系數。可通過對像素域的當前塊執行DCT或KLT或任何其他固定點空間變換來產生變換系數矩陣。此外,變換器910執行后處理以對DCT系數矩陣的行和列中的至少一個進行部分轉換。現在將參照圖10對變換器910的操作進行詳細描述。圖10是根據示例性實施例的圖9中示出的變換器910的框圖。
參照圖10,變換器910包括變換執行器1010、角度參數確定器1020和轉動變換(ROT)執行器 IO3O。變換執行器1010通過變換像素域的當前塊來產生頻域的第一頻率系數矩陣。如上所述,DCT或KLT或任何其他固定點空間變換可被執行以便產生包括DCT系數或KLT系數或任何其他固定點空間變換系數的第一頻率系數矩陣。角度參數確定器1020確定指示ROT的程度的角度參數,也就是,行和列中的至少一個之間的部分轉換。角度參數的確定對應于選擇多個ROT矩陣之一。第一頻率系數矩陣是基于多個ROT矩陣(每個ROT矩陣對應于“ ROTjndex ”)變換的轉動(這將在稍后描述),可基于編碼結果選擇對應于最佳角度 參數的ROT矩陣。可基于率失真(RD)成本的計算來確定角度參數。換句話說,基于RD成本來比較基于ROT重復執行編碼多次獲得的結果,從而選擇一個ROT矩陣,這將稍后參照圖21A和21B進行描述。此外,當角度參數確定器1020確定ROT矩陣時,可基于當前塊是否為幀內預測的塊以及幀內預測方向來選擇對應于不同角度的“R0T_index”的ROT矩陣,這將參照圖12A至121進行稍后描述。ROT執行器1030根據本示例性實施例接收從變換執行器1010產生的第一頻率系數矩陣并且執行ROT來產生第二頻率系數。基于從角度參數確定器1020確定的ROT矩陣來執行R0T,因此第一頻率系數矩陣的行和列中的至少一個被部分轉換,從而產生第二頻率系數矩陣。將參照圖IlA至IlC對ROT進行更加充分地描述。圖IlA至IlC是根據示例性實施例的用于描述ROT的示圖。在圖IlA至IlC中,描述了第一頻率系數矩陣的行和列的轉換。ROT執行器1030部分地轉換第一頻率系數矩陣的行和列中的至少一個。在本示例性實施例中,行或列的部分轉換包括通過使用特定函數(諸如,正弦曲線函數)來部分轉換兩行或列的值,而不是一對一對應地無條件地轉換兩行或列的值。例如,可根據如等式I中表示的參數“a”的值來定義兩行A和B的轉換。等式I行A(新)=cos (a) X 行 A(舊)_sin(a) X 行 B(舊)行B(新)=sin (a) X 行 A(舊)-cos(a) X 行 B(舊)參照等式1,參數“a”作為角度操作。等式I的“a”僅是角度參數的示例,并且在本示例性實施例中,指示在DCT矩陣的行和列之間部分轉換的程度的參數被定義為角度參數。如果參數“a”的值是0°,則不執行轉換。另外,如果參數“a”的值是90°,則完全轉換行。另外,如果參數“a”的值大于90°并且小于180°,則轉換行并改變元素值的符號。如果參數“a”的值是180°,則不轉換行而改變包括在行中的元素的符號。在本示例性實施例中,以如在行之間部分轉換相同的方式來執行列之間的部分轉換。圖IlA示出根據示例性實施例的對4X4頻率系數矩陣執行ROT的情況。參照圖11A,三個角度參數a p a 2、a 3用于頻率系數矩陣的行之間的部分轉換,三個角度參數a 4、a 5> a 6用于列之間的部分轉換。圖IlB示出根據示例性實施例的對8X8頻率系數矩陣執行ROT的情況。在圖IlB的情況中,a i、a 2、a 3、a 4、a 5、a 6用于行之間的部分轉換,a 7、a 8、a 9、a 10、a n、a 12用于列之間的部分轉換。圖IlC示出根據示例性實施例的對具有等于或大于16X16的大小的頻率系數矩陣執行ROT的情況。如以上關于圖IlA和IlB的描述,隨著頻率系數矩陣的大小增加,角度參數的數量增加。為了對圖IlA的4X4頻率系數矩陣執行R0T,六個角度參數是必需的,并且為了對圖IlB的8X8頻率系數矩陣執行R0T,十二個角度參數是必需的。盡管以通過對第一頻率系數矩陣執行R OT產生第二頻率系數矩陣的方式提高了壓縮率,并且如果角度參數的數量增加從而開銷增加,則數據的總量沒有減小。因此,預定大小,例如當對具有等于或大于16X 16的大小的第一頻率系數矩陣執行ROT時,系數采樣被使用。換句話說,如圖IlC所示,ROT執行器1030選擇僅包括第一頻率系數矩陣1110的一些系數的采樣的頻率系數矩陣1120,并且隨后對選擇的頻率系數矩陣1120執行R0T。不對第一頻率系數矩陣1110的剩余部分1130執行R0T。為了實現對具有大小較大的頻率系數矩陣的ROT的充分效果,需要包括在頻率系數矩陣1120中的系數對圖像數據的壓縮有效果。因此,ROT執行器1030僅選擇具有低頻分量并且可具有除了 0之外的值的系數,并且對系數執行R0T。通常,頻率系數(諸如DCT)包括在頻率系數矩陣的左上角的關于低頻分量的系數。因此,如圖IlC所示,ROT執行器1030僅選擇位于第一頻率系數矩陣1110的左上角的系數,并且隨后執行R0T。在圖IIC中,ROT執行器1030以如關于圖IlB的ROT的相同方式對具有大小8X8的頻率系數矩陣1120執行R0T。如關于圖IlA至IlC所述,基于角度參數來執行第一頻率系數矩陣的行和列中的至少一個之間的部分轉換。然而,通過實驗驗證了特定角度參數根據當前塊是否是幀內預測的塊以及幀內預測方向具有高壓縮率。當根據幀內預測或幀間預測來預測當前塊時,可通過應用每個不同角度參數,ROT的效率增加。當根據幀內預測來預測當前塊時,可通過根據幀內預測方向應用每個不同角度參數,ROT的效率增加。因此,ROT執行器1030可基于當前塊是否是幀內預測的塊以及幀內預測方向通過將由等式3表示的每個不同ROT矩陣相乘來對第一頻率系數矩陣執行R0T。參照對圖IlA的4X4頻率系數矩陣的R0T,根據三個角度參數a ” a 2、a3的應用順序獲得不同的結果。也就是,三個角度參數不是彼此獨立。作為對首先應用角度參數a :并且隨后應用角度參數a 2的情況執行ROT的結果產生的第二頻率系數矩陣,與作為對首先應用角度參數a 2并且隨后應用角度參數a i的情況執行ROT的結果產生的第二頻率系數矩陣不同。這將參照圖14進行詳細描述。圖14是根據另一示例性實施例的歐拉角的示圖。參照圖14,可以理解,矩陣的行之間或矩陣的列之間的轉換可與三維(3D)空間中的坐標軸的轉動類似。也就是,三行或三列分別對應于3D坐標的X軸、Y軸和Z軸。關于3D空間中的坐標軸的轉動,根據哪個軸首先轉動來獲得不同的結果。因此,已經存在對在3D空間中顯示坐標軸的轉動的許多嘗試,并且所述許多嘗試中的代表性嘗試是歐拉角。
在圖14中,a角、@角、Y角指示歐拉角。在圖14中,X軸、Y軸和Z軸指示轉動之前的坐標軸,X’軸、Y’軸和V軸指示轉動之后的坐標軸。N軸是X-Y平面和X’ -Y’平面之間的交叉點。這里,N軸被稱為“節點的線”。角a指示繞Z軸轉動的X軸和N軸之間的角。P角指示繞N軸轉動的Z軸和Z’軸之間的角。Y角指示繞Z’軸轉動的N軸和X’軸之間的角。通過等式2給出根 據歐拉角的坐標軸的轉動。等式2
^ cos / sin Y 0s' CI 0 0 ( cos a sin r 0、-sin ^ cos 7 0 0 cos /3 sin P -sin or cos a 0
、0 0 \y -sinp cosv 0 0 1,」第一矩陣指示繞Z’軸轉動。第二矩陣指示繞N軸轉動。第三矩陣指示繞Z軸轉動。在一個或更多示例性實施例中,矩陣的行之間的轉換或矩陣的列之間的轉換可使用歐拉角被指示為坐標軸的轉動。參照回圖9和圖10,當變換器910的ROT執行器1030對第一頻率系數矩陣執行ROT時產生的第二頻率系數矩陣被輸入到量化器920。量化器920根據預定量化步長來量化包括在第二頻率系數矩陣中的系數,并且熵編碼器930對量化的第二頻率系數矩陣進行熵編碼。根據上下文自適應二進制算術編碼(CABAC)方法或上下文自適應可變長度編碼(CAVLC)方法來執行熵編碼。如果第一頻率系數矩陣具有大大小并且因此對僅包括一些采樣的系數的矩陣1120執行R0T,則包括執行ROT的選擇的矩陣1120以及不執行ROT的剩余部分1130的整個第一頻率系數矩陣1110可被量化和熵編碼。另外,熵編碼器930對關于在變換器910中用于ROT的角度參數的信息進行熵編碼。關于角度參數的信息可以是圖12A至121的“R0T_index”或圖20A和2IB的“idx”。如稍后將參照圖12A至121進行描述,根據當前塊是否根據幀內預測被預測以及幀內預測方向通過使用對應于每個不同范圍中的“R0T_index”的ROT矩陣,來對當前塊執行R0T。因此,當關于角度參數的信息(也就是,“R0T_index”)被熵編碼時,整個范圍中的“R0T_index”可不被編碼。在圖12A至121中,在第一范圍(例如,0至8的范圍)中的“R0T_index”可僅被熵編碼。在解碼中,被熵編碼的“ ROTjndex ”被解碼并且當前塊在第一方向上被幀內預測,預定值(例如,9)被添加到解碼的“R0T_index”,并且可通過使用對應于第二范圍(例如,9至17的范圍)中的“R0T_index”的ROT矩陣來對當前塊執行反R0T。類似地,當在第二方向上對當前塊進行幀內預測時,預定值(例如,18)被添加到解碼的“R0T_index”,并且可通過使用對應于第三范圍(例如,18至26的范圍)中的“R0T_index”的ROT矩陣來對當前塊執行反R0T。用于對圖像編碼的設備900可有效地確定用于執行如下所述的ROT的角度參數候選。為了有效地執行壓縮,對圖像編碼的設備900需要搜索最佳角度參數。然而,這是對參數具有強非平滑依賴性的多參數問題。為了解決此問題,使用蒙特卡羅(Monte Carlo)方法。這里,Lehmer的隨機序列數可用于在蒙特卡羅方法產生隨機點。取代存儲或發送用作參數的角度參數,僅指示序列號的一個整數可被存儲或發送。這里,序列號可以是“idx”或“ROT_index”。因此,可減小用于向解碼器通知用于ROT的角度參數的開銷。也就是,將被考慮以確定最佳角度參數的組合的內容被陳述如下I、空間變換系數矩陣的可逆變換2、用于更有效編碼的能量的重新布置3、通過使用Lehmer的隨機序 列數添加的信息的最小化參照回圖IlA至11C,通過第一頻率系數矩陣的轉動被修改的部分涂有黑色,并且沒有被修改的部分涂有白色。在圖IlA的4X4頻率系數矩陣中,根據行之間以及列之間的轉換,在十五個系數的修改中包括六個角度參數。在圖IlB的8 X 8頻率系數矩陣中,在六十個系數中包括十二個角度參數。參照圖11A,根據示例性實施例,對于行之間的轉換需要三個角度參數,對于列之間的轉換還需要三個角度參數。因此,關于4X4塊,需要六個角度參數。參照回圖11B,根據示例性實施例,對于行之間的轉換需要六個角度參數,對于列之間的轉換還需要六個角度參數。因此,關于8X8塊,需要十二個角度參數。用于對圖像編碼的設備900可根據以下操作執行ROT 步驟I-正交變換族參數化(Orthogonal transform family parameterization)步驟2-蒙特卡羅方法步驟3-Lehmer的隨機數步驟4-用于最佳角度參數的范圍定位步驟5-準最佳基盡管通過ROT提高了圖像的壓縮率,但是如果添加了太多的參數,則視頻信號的傳輸可實現比壓縮更好的結果。換句話說,存在壓縮率與附加參數的開銷之間的折衷。例如,盡管4X4頻率系數矩陣中的圖像信號被壓縮為接近0的大小,但是如果壓縮需要十六個附加參數,則可能不需要執行R0T。在這點上,將十六個像素值發送給解碼器可能更有效。因此,圖像信號的壓縮以及增加的開銷的最小化兩者都重要。對此,ROT執行器1030在根據以下操作最小化開銷的同時搜索最佳角度參數。操作I-正交變換族參數化為了根據示例性實施例選擇用于當前數據的最佳變換,需要基調整。基的轉動被選作基變形。因此,一組轉動角度唯一地描述基變形。引入的轉動角度通過3D空間中的歐拉角描述實體的轉動的相同方式來描述基變形。該相似性解釋了此算法的名稱。為了修改該基,該基的轉動被主要選擇。在一個或更多示例性實施例中,通過使用角度參數來執行該基的轉動。這里,通過使用角度參數執行的該基的轉動被使用。角度參數可以是歐拉角。然而,角度參數不限于歐拉角,因此可包括可指示在矩陣的行之間以及列之間的一個或更多值的部分轉換的級別的其他角。下文中,現在將描述包括使用歐拉角的示例。該轉動被限定為通過第一頻率系數矩陣D的左乘法RhOTizmtal和右乘法RVCTtiMl的等式3。
等式3D — Rhorizontal XDX RverticaI(D’指示被轉動變換的第二頻率系數矩陣。)矩陣Rtaizmtal執行第一頻率系數矩陣D的行之間的轉換。矩陣R_tic;al執行第一頻率系數矩陣D的列之間的轉換。根據角度參數來確定ROT矩陣 ,并且通過等式4給出4X4塊中的矩陣Rteizmtal和Rratical的示例。如參照圖IlA所述,三個角度參數ai、%和03被用于行之間的部分轉換,三個角度參數a4、a 5和a 6被用于列之間的部分轉換。等式4
(R, Rw Rn 0)
It, R” Il1 0R—隊爲凡)=D D n
R15 R16 R'1 0
、0 0 0 Iy
% R1 R2 0、
R, R4 Ri 0RvenwcAa4,a a6) =
R6 K1 Ki 0 v 0 0 0 ljR0 = cos a 4cos a 6_sin a 4cos a 5sin a 6R1 = -sin a 4cos a 6_cos a 4cos a 5sin a 6R2 = sin a 5sin a 6R3 = cos a 4sin a 6+sin a 4cos a 5cos a 6R4 = -sin a 4sin a 6+cos a 4cos a 5cos a 6R5 = -sin a 5cos a 6R6 = sin a 4sin a 5R7 = cos a 4sin a 5R8 = cos a 5R9 = cos a ^os a 3_sin a ^os a 2sin a 3R10 = -sin a ^os a 3_cos a ^os a 2sin a 3R11 = sin a 2sin a 3R12 = cos a ^in a 3+sin a ^os a 2cos a 3R13 = -sin a ^in a 3+cos a ^os a 2cos a 3R14 = -sin a 2cos a 3R15 = sin a ^in a 2R16 = cos a ^in a 2R17 = cos a 2在等式4中,a” a2、a3、a4、a5、a 6指示歐拉角。因此,關于4X4頻率系數矩陣,歐拉角通過一組六個參數a p a2.......和%描
述十五個頻率系數的修改。關于8X8頻率系數矩陣,十二個歐拉角apCiy......和a12
描述了六十個頻率系數的修改。當對8X8頻率系數矩陣執行ROT時,等式3的Rtaizcmtal和Rvertical
可被定義為等式5。等式權利要求
1.一種對圖像進行編碼的方法,所述方法包括 對當前塊執行離散余弦變換DCT以產生第一頻率系數矩陣; 基于當前塊是否被幀內預測來確定角度參數; 基于確定的角度參數在第一頻率系數矩陣的行和列中的至少一個之間執行部分轉換,以產生第二頻率系數矩陣; 對第二頻率系數矩陣進行量化; 對第二頻率系數矩陣和關于角度參數的信息進行熵編碼, 其中,角度參數指示第一頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。
2.如權利要求I所述的方法,其中,確定角度參數的步驟包括基于當前塊的幀內預測方向來確定角度參數。
3.如權利要求2所述的方法,其中,基于當前塊的幀內預測方向來確定角度參數的步驟包括基于當前塊的幀內預測方向從多個矩陣中選擇用于在行之間執行部分轉換的第一矩陣并且選擇用于在列之間執行部分轉換的第二矩陣。
4.如權利要求3所述的方法,其中,產生第二頻率系數矩陣的步驟包括將第一頻率系數矩陣的左側乘以選擇的第一矩陣,并將第一頻率系數矩陣的右側乘以選擇的第二矩陣。
5.如權利要求I所述的方法,其中,角度參數是用于歐拉角的參數。
6.一種對圖像解碼的方法,所述方法包括 對第二頻率系數矩陣以及關于角度參數的信息進行熵解碼; 基于熵解碼的關于角度參數的信息以及當前塊是否被幀內預測來確定角度參數; 對熵解碼的第二頻率系數矩陣進行反量化; 基于確定的角度參數在第二頻率系數矩陣的行和列中的至少一個之間執行部分轉換,以產生第一頻率系數矩陣; 對第一頻率系數矩陣執行離散余弦變換DCT以恢復當前塊, 其中,預定角度參數指示在第二頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。
7.如權利要求6所述的方法,其中,確定角度參數的步驟包括基于當前塊的幀內預測方向來確定角度參數。
8.如權利要求7所述的方法,其中,基于當前塊的幀內預測方向來確定角度參數的步驟包括基于當前塊的幀內預測方向從多個矩陣中選擇用于在行之間執行部分轉換的第一矩陣,并且選擇用于在列之間執行部分轉換的第二矩陣。
9.如權利要求8所述的方法,其中,產生第二頻率系數矩陣的步驟包括將第二頻率系數矩陣的左側與選擇的第一矩陣相乘,并將第二頻率系數矩陣的右側與選擇的第二矩陣相乘。
10.如權利要求6所述的方法,其中,角度參數是用于歐拉角的參數。
11.一種用于對圖像編碼的設備,所述設備包括 變換器,對當前塊執行離散余弦變換DCT,以產生第一頻率系數矩陣,并且基于根據當前塊是否被幀內預測確定的角度參數在第一頻率系數矩陣的行和列中的至少一個之間執行部分轉換,以產生第二頻率系數矩陣;量化器,對第二頻率系數矩陣進行量化; 熵編碼器,對第二頻率系數矩陣以及關于角度參數的信息進行熵編碼, 其中,角度參數指示在第一頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。
12.一種用于對圖像解碼的設備,所述設備包括 熵解碼器,對第二頻率系數矩陣以及關于角度參數的信息進行熵解碼; 反量化器,對熵解碼的第二頻率系數矩陣進行反量化; 反變換器,基于角度參數在第二頻率系數矩陣的行和列中的至少一個之間執行部分轉換,以產生第一頻率系數矩陣,并且對第一頻率系數矩陣執行離散余弦變換DCT以恢復當前塊,所述角度參數根據熵解碼的關于角度參數的信息以及當前塊是否被幀內預測被確定, 其中,角度參數指示在第一頻率系數矩陣的行和列中的至少一個之間的部分轉換的程度。
13.如權利要求12所述的設備,其中,反變換器基于當前塊的幀內預測方向確定角度參數。
14.如權利要求13所述的設備,其中,反變換器基于當前塊的幀內預測方向從多個矩陣中選擇用于在行之間執行部分轉換的第一矩陣,并且選擇用于在列之間執行部分轉換的第二矩陣。
15.一種其上實現有用于執行權利要求I至權利要求10之一的方法的計算機程序的計算機可讀記錄介質。
全文摘要
公開了一種對圖像編碼和解碼的方法和設備。該圖像編碼方法包括通過對當前塊執行空間變換(例如,離散余弦變換(DCT))來產生第一頻率系數矩陣;基于當前塊被幀內預測還是幀間預測來確定角度參數;通過基于確定的角度參數在第一頻率系數矩陣的行和列中的至少一個之間執行部分轉換來產生第二頻率系數矩陣;對第二頻率系數矩陣以及關于角度參數的信息進行編碼。
文檔編號H04N7/50GK102754438SQ201080063499
公開日2012年10月24日 申請日期2010年12月9日 優先權日2009年12月9日
發明者亞歷山大·阿爾辛, 艾琳娜·阿爾辛娜, 范迪姆·謝廖金 申請人:三星電子株式會社