技術領域
本發明涉及圖像編碼裝置、圖像編碼方法和程序以及圖像解碼裝置、圖像解碼方法和程序。特別地,本發明涉及與圖像編碼中的圖像質量參數的計算和代碼的插入有關的圖像質量參數編碼方法和解碼方法。
背景技術:
作為運動圖像的壓縮記錄方法,以下稱為H.264的H.264/運動圖片專家組(MPEG)-4先進視頻編碼(AVC)已經是已知的。H.264被廣泛用于一段(one segment)數字地面廣播和其它的應用中。H.264的特征是:除了常規的編碼方案以外,還通過以4×4像素為單位使用整數變換,提供多個內部預測能力(參見ISO/IEC 14496-10:2004Information technology--Coding of audio-visual objects--Part 10:Advanced Video Coding,ITU-T H.264Advanced video coding for generic audiovisual services)。
以MPEG-2和H.264為代表的使用正交變換和量化(quantization)的編碼方案對預定的塊圖像執行正交變換和量化,以產生量化系數數據。對于圖像質量控制,通過使用稱為量化參數的圖像質量控制參數執行量化。具體地,使用小量化參數值的量化造成提高的圖像質量,但是具有大量的代碼。具有大量化參數值的量化以減少的代碼量造成低的圖像質量。根據目標代碼量選擇最佳的量化參數值用于編碼。這種控制被稱為比率(rate)控制。已討論了各種比率控制方法,包括TM5。在量化之后,量化系數數據經受可變長度編碼,以產生編碼的系數數據。
量化參數也被編碼以產生量化參數代碼。例如,H.264使用用于將目標塊前的塊量化的量化參數與用于將目標塊量化的量化參數之間的差值。該差值被稱為量化參數Δ(QP_DELTA)。計算的QP_DELTA通過Golomb編碼或算術編碼被編碼成QP_DELTA代碼。例如,即使差值為0,利用Golomb編碼的QP_DELTA代碼編解碼器(codec)也產生一位的代碼。由此產生的編碼的系數數據和量化參數代碼被傳送到解碼器。解碼器將編碼的系數數據和量化參數代碼解碼,以產生量化系數數據和量化參數。解碼器然后通過使用量化參數對量化系數數據執行逆(inverse)量化和逆正交變換,由此產生解碼的圖像。
在MPEG-2和H.264中單個處理單位被稱為宏塊(macroblock)。宏塊是以格子(lattice)圖案將圖像分割成的16×16像素的格子塊。就像素而言,在MPEG-2中將被正交變換的塊具有8×8像素的尺寸,并且H.264具有8×8像素或4×4像素的尺寸。即,單個的宏塊包含多個正交變換塊。MPEG-2和H.264可以以宏塊為單位對量化參數進行控制(比率控制)。包含于同一宏塊中的正交變換塊用相同的量化參數被量化。根據H.264的改進技術,以格子圖案將圖像分割成稱為最大編碼樹塊(LCTB)的格子塊。LCTB具有64×64像素的尺寸。LCTB通過使用區域四叉樹結構被分割成稱為編碼樹塊(CTB)的更小尺寸的塊。為了搜索或者輸入/輸出樹結構數據,需要規定掃描次序。CTB包含稱為變換單位(TU)的正交變換塊。TU也可通過使用區域四叉樹結構被分割成更小的尺寸。各單位具有分割標記。分割標記為真(true)的塊被構建為包含高度和寬度的尺寸為1/2的四個分割塊。分割標記為假(false)的塊不包含分割塊,而包含塊上的實際數據。換句話說,只有未分割的TU包含圖像塊上的系數數據。LCTB(格子塊)包含不同正交變換尺寸的多個分級(hierarchically)構建塊。可通過各種方法確定是否分割塊。在日本專利申請公開No.2005-191706中討論了確定方法中的一種,其包括使用Lagrange乘子(multiplier)以計算塊成本(cost)并選擇較低成本的塊分割方法。
假定圖像編碼方法包含以按照格子圖案將圖像分割成的格子塊為單位將圖像編碼。如果格子塊的尺寸大并且以格子塊為單位執行圖像質量控制,那么不同的圖像質量的塊之間的邊界可能變得引人注意。
不管圖像質量參數是否改變,圖像質量參數都被編碼和傳送。如果將格子塊再分(subdivide)成更小的單位以用于圖像質量控制,那么存在由圖像質量參數代碼導致的開銷(overhead)的問題。
技術實現要素:
本發明針對使得能夠以適當的塊為單位進行圖像質量控制并且可使得塊邊界較小以產生邊界較不引人注意的圖像的圖像編碼裝置。
根據本發明的一個方面,圖像編碼裝置被配置為將圖像分割成多個尺寸的分割塊、并且在以分割塊為單位根據參數值控制圖像質量的同時對圖像執行編碼,所述圖像編碼裝置包括:被配置為獲取要被編碼的目標塊的塊尺寸的單元;被配置為獲取用于控制參數值的最小塊尺寸的單元;被配置為獲取目標塊的分割狀態的單元;被配置為獲取參數值的單元;被配置為根據目標塊的分割狀態確定目標塊是否被分割的單元;被配置為確定目標塊的塊尺寸是否大于或等于最小塊尺寸的單元;被配置為確定目標塊的塊尺寸是否等于最小塊尺寸的單元;以及被配置為將獲取的參數值編碼的單元。
根據本發明的示例性實施例,可以以適當的塊為單位控制圖像質量并使得塊邊界較小以產生邊界較不引人注意的圖像。由于不需要將圖像質量控制參數代碼插入所有的正交變換的塊中,因此量化參數代碼的量將不會超出所需地增加。
從參照附圖對示例性實施例的以下詳細描述,本發明的進一步的特征和方面將變得明顯。
附圖說明
并入說明書中并構成其一部分的附圖示出本發明的示例性實施例、特征和方面,并與描述一起用于解釋本發明的原理。
圖1是示出根據本發明的第一示例性實施例的圖像質量參數的編碼方法的流程圖。
圖2是示出根據本發明的第二示例性實施例的圖像質量參數的解碼方法的流程圖。
圖3是示出根據本發明的第三示例性實施例的圖像質量參數的編碼方法的流程圖。
圖4是示出根據本發明的第四示例性實施例的圖像質量參數的解碼方法的流程圖。
圖5是示出根據本發明的第五示例性實施例的圖像質量參數的編碼方法的流程圖。
圖6是示出根據本發明的第六示例性實施例的圖像質量參數的解碼方法的流程圖。
圖7是示出分割的格子塊的例子的示圖。
圖8A是示出格子塊的分割和分割標記的例子的示圖。
圖8B是示出格子塊的分割和分割標記的例子的示圖。
圖8C是示出格子塊的分割和分割標記的例子的示圖。
圖8D是示出格子塊的分割和分割標記的例子的示圖。
圖9是示出用于執行根據本發明示例性實施例的編碼方法和解碼方法的硬件配置的例子的示圖。
圖10是示出用于執行根據本發明示例性實施例的編碼方法的硬件配置的例子的示圖。
圖11是示出用于執行根據本發明示例性實施例的解碼方法的硬件配置的例子的示圖。
圖12A是示出對分割塊的圖像質量控制的例子的示圖。
圖12B是示出對分割塊的圖像質量控制的例子的示圖。
圖12C是示出對分割塊的圖像質量控制的例子的示圖。
圖13是示出對幀的編碼處理方法的流程圖。
圖14是示出對幀的解碼處理方法的流程圖。
圖15是示出編碼的幀的數據結構的示圖。
圖16是示出格子塊上的編碼數據的數據結構的示圖。
圖17是示出分割塊的編碼方法的細節的流程圖。
圖18是示出分割塊的解碼方法的細節的流程圖。
圖19是示出根據第一示例性實施例的圖像質量參數的計算方法的流程圖。
圖20是示出將被伴隨有量化參數的分割塊的示圖。
圖21A是示出簡檔(profile)、級別(level)和圖像質量控制最小塊尺寸之間的關系的示圖。
圖21B是示出簡檔、級別和圖像質量控制最小塊尺寸之間的關系的示圖。
圖22是示出用于計算圖像質量控制最小塊尺寸的過程的流程圖。
圖23A是示出序列(sequence)的編碼數據的結構的示圖。
圖23B是示出序列的編碼數據的結構的示圖。
圖24是示出根據本發明的第七示例性實施例的圖像編碼方法的流程圖。
圖25是示出根據本發明的第八示例性實施例的圖像解碼方法的流程圖。
具體實施方式
以下將參照附圖詳細描述本發明的各種示例性實施例、特征和方面。
參照圖1、圖9、圖13、圖17和圖19描述根據本發明的第一示例性實施例的分割塊的編碼方法。
圖9示出用于執行包含根據本示例性實施例的編碼方法的編碼程序的配置。編碼程序被記錄于硬盤裝置(以下,簡寫為HDD)903上。編碼程序在起動時被加載到隨機存取存儲器(RAM)902中。中央處理單元(CPU)901執行下面將描述的步驟以執行圖像編碼處理。在本示例性實施例中,輸入的圖像數據被存儲于HDD 903中并且從HDD 903被讀取。輸出的數據被記錄于HDD 903上。
將描述以上配置的編碼操作。圖13是示出用于將整個幀編碼的過程的流程圖。本示例性實施例涉及畫面各以格子圖案被分割成64×64像素的格子塊并以格子塊為單位被依次處理的情況。畫面內的格子塊以光柵(raster)掃描次序被處理。應當注意,格子塊尺寸不限于64。
在步驟S1301中,CPU 901設定圖像質量控制最小塊尺寸。在步驟S1302中,CPU 901將圖像質量控制最小塊尺寸編碼。在步驟S1303中,CPU 901將幀標題(header)信息編碼。在步驟S1304中,CPU 901將畫面左上的第一格子塊設為目標格子塊。在步驟S1305中,CPU 901對目標格子塊執行預測處理,以產生殘差(residual)數據。在步驟S1306中,CPU 901對目標格子塊執行用于將殘差數據編碼的過程。在步驟S1307中,CPU 901確定幀中的所有格子塊是否都被處理。在步驟S1308中,CPU 901將下一格子塊設為目標格子塊。
以下將描述所述步驟的過程。在步驟S1301中,CPU 901設定稱為圖像質量控制最小塊尺寸的參數。本示例性實施例的描述將假定通過用于將正交變換系數量化的量化參數控制圖像質量。圖像質量控制最小塊尺寸是16×16像素,使得圖像質量控制最小塊尺寸信息具有的值為16。但是,該值不限于16。程序開發人員可在程序中嵌入固定值。用戶可經由程序的用戶界面規定值。程序自身可計算并設定最佳值。程序可取決于輸入圖像計算最佳值。例如,如果輸入圖像比640×480像素大,那么程序可將圖像質量控制最小塊尺寸設為如16那樣大的值。如果分辨率低于或等于640×480像素,那么程序可將圖像質量控制最小塊尺寸設為如8那樣小的值。
在步驟S1302中,CPU 901將在步驟S1301中設定的圖像質量控制最小塊尺寸編碼,以產生圖像質量控制最小塊尺寸代碼。例如,CPU 901可提供將圖像質量控制最小塊尺寸信息64表達為“0”、并且類似地將32、16和8分別表達為“1”、“2”和“3”的指數(index)。然后,CPU 901可產生代表該指數的固定長度代碼。
在步驟S1303中,CPU 901產生幀標題信息并將其編碼。CPU 901包含在步驟S1302中產生的圖像質量控制最小塊尺寸代碼作為幀標題信息的一部分。注意,雖然本示例性實施例涉及在幀標題中包含圖像質量控制最小塊尺寸代碼的情況,但是這不是限制性的。圖像質量控制最小塊尺寸代碼可包含于最高分級級別的序列、圖片、片(slice)或塊中。
在步驟S1304中,CPU 901將畫面左上的格子塊設為要被處理的第一目標格子塊。
在步驟S1305中,CPU 901通過使用幀內預測和運動補償預測產生預測的圖像,并且從目標格子塊的像素產生殘差數據。幀內預測包含通過參照目標格子塊的附近產生預測的圖像。運動補償預測包含通過參照其它幀中的像素產生預測的圖像。例子包括在前面提到的H.264編碼方案中采用的內部預測和運動補償預測。CPU 901將產生的幀內預測模式和/或運動矢量編碼,并且將得到的結果作為格子塊標題信息代碼輸出到輸出緩沖器。
在步驟S1306中,CPU 901對目標格子塊執行將結合圖17描述的用于將塊中的殘差數據編碼的過程。將在下面詳細描述圖17。
在步驟S1307中,CPU 901確定幀中的所有格子塊是否都被處理。如果所有的格子塊都被處理(在步驟S1307中為是),那么CPU 901結束對整個幀的編碼處理。如果不是所有的格子塊都已被處理(在步驟S1307中為否),那么CPU 901執行步驟S1308。
在步驟S1308中,CPU 901以光柵掃描次序將下一格子塊設為目標格子塊,并且返回到步驟S1305。
圖17是步驟S1306的詳細的流程圖。在步驟S1306中,CPU 901將不同尺寸的多個分級構建的正交變換塊編碼,以產生包含圖像質量控制參數代碼的編碼數據。具體而言,CPU 901基于圖像質量控制最小塊尺寸、塊尺寸數據和塊上的殘差數據執行塊分割、正交變換和量化。流程圖還示出用于將分割塊編碼以產生塊分割標記代碼、編碼的系數數據、以及與圖像質量參數的更新有關的QP_DELTA代碼的處理。本示例性實施例使用用于分級構建的區域四叉樹結構。最高分級級別處的塊是64×64像素的格子塊。隨著級別通過分割處理下降,可處理32×32像素、16×16像素、以及如8×8像素那樣小的塊。基于區域四叉樹的塊分割結構可通過嵌入流中的塊分割標記被傳送到解碼器側。
在步驟S1700中,CPU 901計算目標塊被分割時和不被分割時的成本。在步驟S1701中,CPU 901確定是否分割目標塊。在步驟S1702中,CPU 901將設為假的塊分割標記編碼并輸出得到的結果。在步驟S1703中,CPU 901執行用于計算圖像質量參數的過程。在步驟S1704中,CPU 901執行正交變換、量化和可變長度編碼。在步驟S1705中,CPU 901執行用于將圖像質量參數編碼的過程。在步驟S1706中,CPU 901將編碼的數據分類(sort),并且將得到的結果輸出到輸出緩沖器。在步驟S1707中,CPU 901將設為真的塊分割標記編碼并且輸出得到的結果。在步驟S1708中,CPU 901執行用于計算圖像質量參數的過程。在步驟S1709中,CPU 901執行用于將圖像質量參數編碼的過程。在步驟S1710中,CPU 901處理包含的分割塊。
以下將描述所述步驟的過程。在步驟S1700中,CPU 901計算塊被分割時和不被分割時的成本。可通過使用上述的Lagrange乘子計算成本,以及圖像特性、統計和預測的代碼長度。
在步驟S1701中,CPU 901比較在步驟S1700中計算的具有和沒有分割的成本。如果具有塊分割的成本比沒有塊分割的成本低(在步驟S1701中為是),那么CPU 901確定比較為真。如果不是(在步驟S1701中為否),那么CPU 901確定比較為假。如果步驟S1701中的確定結果為假(在步驟S1701中為否),那么CPU 901執行步驟S1702至S1706。如果步驟S1701中的確定結果為真(在步驟S1701中為是),那么CPU 901執行步驟S1707至S1710。
將首先描述沒有塊分割成本較低的情況。在步驟1702中,CPU 901將設為假的塊分割標記編碼。CPU 901通常分配和編碼一位的值0,但不限于此。
在步驟S1703中,CPU 901執行圖19所示的圖像質量參數計算過程以計算圖像質量參數。將在下面詳細描述圖19。
在步驟S1704中,CPU 901對殘差數據執行正交變換、量化和可變長度編碼,以產生編碼的系數數據。通過離散余弦變換(DCT)實施正交變換。通過使用在步驟S1703中計算的圖像質量參數執行量化。如果不通過將在下面描述的圖19所示的圖像質量參數計算過程計算新的圖像質量參數,那么CPU 901通過使用與用于前面的量化的圖像質量參數值相同的圖像質量參數值執行量化。對于可變長度編碼,CPU 901可使用Huffman編碼和算術編碼。可通過使用與前面提到的H.264的方法類似的方法實現這樣的編碼技術。
在步驟S1705中,CPU 901執行圖像質量參數編碼過程。將在下面參照圖1詳細描述圖像質量參數編碼過程。
在步驟S1706中,CPU 901將塊分割標記代碼、QP_DELTA代碼和編碼的系數數據分類,并且將得到的結果依次輸出到輸出緩沖器。如果不存在要輸出的編碼數據,那么CPU 901僅分類和輸出現有的編碼數據。圖16示出代碼次序的例子。
現在,將描述具有塊分割成本較低的情況。在步驟S1707中,CPU 901將設為真的塊分割標記編碼。CPU 901通常分配和編碼一位的值1,但不限于此。
在步驟S1708中,CPU 901執行將在下面描述的圖19所示的圖像質量參數計算過程,由此計算圖像質量參數。
在步驟S1709中,CPU 901如步驟S1705中那樣執行圖像質量參數編碼過程。將在下面參照圖1詳細描述圖像質量參數編碼過程。
在步驟S1710中,CPU 901對包含的所有分割塊、即包含于在分級上隨后的級別中的四個分割塊(左上、右上、左下和右下)遞歸地執行本過程。每個分割塊在高度和寬度方面都具有原目標塊的1/2的尺寸。目標塊尺寸在一次次的分割之后減小。遞歸處理可被執行直到如8×8像素那樣小的塊尺寸。通過這種遞歸處理,格子塊被順次分割成區域四叉樹結構。例如,假定如圖7所示的那樣分割格子塊。用于指示塊分割的有無的分割標記在相應的塊被分割時將由1表示,并且在不被分割時將由0表示。然后,如圖8A、圖8B、圖8C和圖8D所示的那樣表達各分割塊上的分割標記。圖8A、圖8B、圖8C和圖8D分別示出64×64像素、32×32像素、16×16像素和8×8像素的級別和塊。數值表示分割標記。“-”表示不需要標記。帶括號的數值表示結構次序。在本示例性實施例中,就塊而言,結構次序指的是左上、右上、左下和右下的次序。就級別而言,結構次序指的是區域四叉樹結構的掃描的向前次序。以結構次序存儲分割標記代碼、QP_DELTA代碼和編碼的系數數據的組。不對8×8像素的塊設定分割標記,因為這樣的塊將不被進一步分割。具有分割標記1的塊自身不包含系數數據,因為這樣的塊被再分成包含系數數據的更小尺寸的分割塊。如將在下面描述的圖16所示,流具有數據結構,使得以結構次序布置關于各分割塊的編碼信息。關于每一個分割塊的編碼信息包含關于該分割塊的分割標記代碼、QP_DELTA代碼、和/或系數數據的組。
圖1是在步驟S1705和S1709中執行的圖像質量參數編碼過程的詳細流程圖。在步驟S101中,CPU 901獲取目標塊尺寸。在步驟S102中,CPU 901獲取圖像質量控制最小塊尺寸。在步驟S103中,CPU 901獲取塊的分割狀態。在步驟S104中,CPU 901確定目標塊是否被分割。在步驟S105中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。在步驟S106中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。在步驟S107中,CPU 901獲取圖像質量參數。在步驟S108中,CPU 901將圖像質量參數編碼。
以下將描述所述步驟的過程。在步驟S101中,CPU 901獲取目標塊尺寸。緊接在從圖17的過程調用本過程之后,要被處理的目標塊是格子塊自身。目標塊尺寸的值由此是64。隨著區域四叉樹結構的級別隨后由于遞歸調用而下降時,尺寸值變為32、16和8。
在步驟S102中,CPU 901獲取從外面設定的圖像質量控制最小塊尺寸。在本示例性實施例中,圖像質量控制最小塊尺寸的值為16。用于編碼的目標塊是否被分割已在圖17的步驟S1700和S1701中被確定。在步驟S103中,CPU 901獲取指示分割確定結果的分割狀態信息。
在步驟S104中,CPU 901參照獲取的目標塊的分割狀態,并且確定目標塊是否被分割。如果目標塊被分割(在步驟S104中為是),那么CPU 901執行步驟S106。如果目標塊不被分割(在步驟S104中為否),那么CPU 901執行步驟S105。
在步驟S105中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為大于或等于(在步驟S105中為是),那么CPU 901執行步驟S107和隨后的步驟。如果不是(在步驟S105為否),那么CPU 901結束圖像質量參數編碼處理。
在步驟S106中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為等于圖像質量控制最小塊尺寸(在步驟S106中為是),那么CPU 901執行步驟S107和S108。如果不是(在步驟S108中為否),那么CPU 901結束圖像質量參數編碼處理。
在步驟S107中,CPU 901獲取圖像質量參數。圖像質量參數是在圖17的步驟S1703或S1708中確定的一個。在步驟S108中,CPU 901將圖像質量參數編碼。在本示例性實施例中,CPU 901確定用于將前面的塊編碼的圖像質量參數與在步驟S107中獲取的圖像質量參數之間的差值作為QP_DELTA值。CPU 901通過Golomb編碼將確定的QP_DELTA值編碼為作為圖像質量參數代碼的QP_DELTA代碼。在本示例性實施例中,QP_DELTA通過Golomb編碼被編碼。但是,這不是限制性的。QP_DELTA可通過算術編碼或其它的可變長度編碼被編碼。圖像質量參數被用于計算下一QP_DELTA值。
圖19是在步驟S1703和S1708中執行的圖像質量參數計算過程的詳細流程圖。
在步驟S1901中,CPU 901獲取目標塊尺寸。在步驟S1902中,CPU 901獲取圖像質量控制最小塊尺寸。在步驟S1903中,CPU 901獲取塊的分割狀態。在步驟S1904中,CPU 901確定目標塊是否被分割。在步驟S1905中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。在步驟S1906中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。在步驟S1907中,CPU 901計算圖像質量參數。
以下將描述所述步驟的過程。在步驟S1901中,CPU 901獲取目標塊尺寸。緊接在從圖17的過程調用本過程之后,要被處理的目標塊是格子塊自身。目標塊尺寸的值由此是64。隨著區域四叉樹結構的級別隨后由于遞歸調用而下降,尺寸值變為32、16和8。
在步驟S1902中,CPU 901獲取從外面設定的圖像質量控制最小塊尺寸。在本示例性實施例中,圖像質量控制最小塊尺寸的值是16。
用于編碼的目標塊是否被分割已在圖17的步驟S1700和S1701中被確定。在步驟S1903中,CPU 901獲取指示分割確定結果的分割狀態信息。
在步驟S1904中,CPU 901參照獲取的目標塊的分割狀態,并且確定目標塊是否被分割。如果目標塊被分割(在步驟S1904中為是),那么CPU 901執行步驟S1906。如果目標塊不被分割(在步驟S1904中為否),那么CPU 901執行步驟S1905。
在步驟S1905中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為大于或等于(在步驟S1905中為是),那么CPU 901執行步驟S1907。如果不是(在步驟S1905中為否),那么CPU 901結束圖像質量參數計算處理。
在步驟S1906中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為等于圖像質量控制最小塊尺寸(在步驟S1906中為是),那么CPU 901執行步驟S1907。如果不是(在步驟S1906中為否),那么CPU 901結束圖像質量參數計算處理。
在步驟S1907中,CPU 901執行比率控制處理,以計算用于將目標塊編碼的圖像質量參數。例如,如TM5那樣,CPU 901預測目標塊的代碼量,并且計算最佳量化參數。如果目標塊被分割,那么包含的所有分割塊經受比率控制。用同一圖像質量參數將包含的分割塊編碼。
根據本示例性實施例的編碼方法被用于輸出具有圖15和圖16所示的數據結構的數據。參照圖15,幀標題信息包含在圖13的步驟S1303中嵌入的圖像質量控制最小塊尺寸的代碼。幀內的所有格子塊處于該代碼的控制下。參照圖16,格子塊或64×64像素的塊上的分割標記被隨后級別中的32×32像素的左上塊上的分割標記跟隨。如果32×32像素的塊不被分割,那么該塊的圖像質量參數代碼或QP_DELTA代碼跟隨,伴隨有關于32×32像素的殘差的系數數據的代碼。跟隨下來的是32×32像素的右上塊上的分割標記。如前所述,如果32×32像素的塊被分割成16×16像素的塊,那么分割標記跟隨以指示分割狀態。如果塊不被進一步分割,那么QP_DELTA代碼和系數數據代碼跟隨。圖像質量控制最小塊尺寸為16。如果塊被分割成小于16×16像素的塊,那么分割標記和系數數據代碼跟隨,而沒有添加到更小的塊的QP_DELTA代碼。
如上所述,將目標塊尺寸與圖像質量控制最小塊尺寸相比較,并且,取決于比較結果控制是否將QP_DELTA值編碼。提供這種機制使得能夠實現以按格子圖案將圖像分割成的塊為單位的圖像質量控制。與以格子塊為單位嵌入QP_DELTA代碼的常規情況(圖12A)相比,可以以更細微的單位執行圖像質量控制(圖12C)。這可使不同的圖像質量的塊之間的邊界變窄,并使得圖像質量的差異較不引人注意。在另一常規的情況下,以正交變換塊為單位執行圖像質量控制并嵌入QP_DELTA代碼(圖12B)。與這種情況不同,由于可以選擇圖像質量控制的單位并且不需要在每個正交變換塊中嵌入QP_DELTA代碼,因此,代碼量將不超出所需地增加。只有當與插入圖像質量參數的條件相同的條件成立時,才執行圖像質量參數計算過程。由此還防止圖像質量參數的計算超出所需地增加。
在本示例性實施例中,塊被定義為正方形的塊。將理解,塊可以是長方形的,諸如8×4像素。雖然通過使用遞歸處理掃描區域四叉樹結構,但是,可使用環路(loop)結構以實現掃描。
如圖10所示,可通過包括諸如正交變換器1003、量化器1004和可變長度編碼器1005的專用硬件的配置,執行根據本示例性實施例的編碼方法。CPU 1001將不執行正交變換、量化和可變長度編碼步驟,而是使得前述的單元執行處理的各部分。在其它的方面,過程與圖17所示的過程相同。
本示例性實施例涉及在HDD 903上記錄編碼數據的情況。但是,這不是限制性的。可在硬盤裝置903以外的記錄介質上記錄編碼數據。將理解,編碼數據可經由通信接口905被傳送到通信電路。外部記錄裝置可在便攜介質上與記錄編碼數據連接。
本示例性實施例還涉及在硬盤裝置903上記錄軟件應用的情況。但是,這不是限制性的。軟件應用可記錄于諸如只讀存儲器(ROM)的硬件上。將理解,軟件應用可記錄于諸如存儲卡和盤的便攜介質上。
本示例性實施例還涉及分割次數被編碼以產生指示圖像質量控制最小塊的尺寸的代碼的情況。但是,這不是限制性的。由于最大塊尺寸是格子塊的尺寸,因此,圖像質量控制最小塊的尺寸可由6位固定長度代碼表達。圖像質量控制最小塊不限于正方形配置。可分別地提供用于水平和垂直配置的圖像質量控制最小塊。例如,水平或垂直鄰接的塊可被分組在一起,并且,可以塊組為單位控制圖像質量參數。在這種情況下,可分別地對于水平和垂直配置有效地設定圖像質量控制最小塊的尺寸。
將參照圖2、圖9、圖14和圖18描述根據本發明的第二示例性實施例的圖像解碼方法。
圖9示出用于執行包含根據本示例性實施例的解碼方法的解碼程序的配置。記錄程序記錄于HDD 903上。解碼程序被加載到RAM 902中,并且,CPU 901執行將在下面描述的用于解碼處理的過程的步驟。從HDD 903讀取輸入的編碼數據。解碼圖像經由設置在視頻RAM(VRAM)904中的圖像輸出緩沖器被輸出到顯示器。CPU 901逐個塊地執行解碼處理。每個塊被解碼,以產生該塊的解碼圖像,該解碼圖像在被輸出到圖像輸出緩沖器時被復制到幀中的適當位置。當完成對如單個幀那樣多的塊的解碼處理時,圖像的幀被輸出到輸出緩沖器。將假定輸入的編碼數據是在第一示例性實施例中產生的編碼數據而給出以下描述。
圖14示出用于解碼輸入的編碼數據的過程。格子塊以光柵掃描次序被解碼。在步驟S1401中,CPU 901解碼并獲取幀標題信息。本示例性實施例涉及幀標題信息包含圖像質量控制最小塊尺寸的情況。但是,這不是限制性的。根據預定的數據格式,可從最高分級級別的序列、圖片、片或塊上的標題信息獲取圖像質量控制最小塊尺寸。在步驟S1402中,CPU 901解碼并獲取圖像質量控制最小塊尺寸。在步驟S1403中,CPU 901進行設置,使得編碼數據的解碼結果首先存儲于第一目標格子塊中。在步驟S1404中,CPU 901解碼目標格子塊的預測模式,并根據預測模式產生預測的圖像。在步驟S1405中,CPU 901對目標格子塊執行分割塊解碼過程。在步驟S1406中,CPU 901將目標格子塊的預測圖像數據和殘差數據相加(add),并且將得到的結果輸出到圖像輸出緩沖器。在步驟S1407中,CPU 901確定幀中的所有格子塊是否都被處理。在步驟S1408中,CPU 901將下一格子塊設為目標格子塊。
下面將描述所述步驟的過程。在步驟S1401中,CPU 901從就序列、圖片、幀、片和分級結構而言最上位(highest order)的塊的標題信息獲取稱為圖像質量控制最小塊尺寸的參數。
在步驟S1402中,CPU 901解碼并獲取圖像質量控制最小塊尺寸。根據第一示例性實施例,圖像質量控制最小塊尺寸被編碼為指數。圖像質量控制最小塊尺寸是16。在步驟S1403中,CPU 901將畫面左上的格子塊設為目標格子塊。
在步驟S1404中,CPU 901解碼目標格子塊的編碼數據。CPU 901由此解碼在第一示例性實施例中產生的幀內預測模式和/或運動矢量。對于內部編碼,CPU 901基于解碼的幀內預測模式,參照相鄰的解碼像素,并且產生預測的圖像數據。對于交互(inter)編碼,CPU 901基于運動矢量執行運動補償以產生預測的圖像數據。
在步驟S1405中,CPU 901對格子塊執行將在下面結合圖18描述的分割塊解碼過程。由于分割塊的解碼被分級構建,因此,CPU 901解碼塊上的分割標記,并在執行解碼的同時確定分割塊的狀態。CPU 901由此產生圖像質量參數和關于預測的殘差數據。
在步驟S1406中,CPU 901將步驟S1404中產生的預測圖像數據和步驟S1405中產生的殘差數據相加,以產生目標格子塊的解碼圖像。CPU 901將解碼的圖像輸出到圖像輸出緩沖器。
在步驟S1407中,CPU 901確定是否幀中的所有格子塊都被處理以解碼。例如,CPU 901計數解碼的格子塊的數量。如果不是所有的格子塊都被處理以解碼(在步驟S1407中為否),那么CPU 901前進到步驟S1408。如果所有的格子塊都被解碼(在步驟S1407中為是),那么CPU 901結束幀的解碼處理。
在步驟S1408中,CPU 901將以光柵掃描次序下一個到來的解碼的結果設為下一目標格子塊。
圖18是步驟S1405的詳細流程圖,示出用于解碼不同尺寸的多個分級構建的正交變換塊的過程。具體而言,圖18示出用于基于塊分割標記代碼和QP_DELTA代碼對可變長度編碼系數數據執行可變長度解碼、逆正交變換和逆量化以產生殘差數據的過程。本示例性實施例使用用于分級構建的區域四叉樹結構。最高級別處的塊(要被處理的第一目標塊)是64×64像素的格子塊。
在步驟S1801中,CPU 901解碼目標塊的塊分割標記。在步驟S1802中,CPU 901執行圖像質量參數解碼過程。在步驟S1803中,CPU 901確定用于解碼的目標塊是否被分割。在步驟S1804中,CPU 901執行可變長度解碼、逆量化和逆正交變換。在步驟S1805中,CPU 901對包含的分割塊遞歸地執行解碼處理。
下面將描述所述步驟的過程。在步驟S1801中,CPU 901解碼諸如圖16所示的塊分割標記的塊分割標記,以獲取關于目標塊是否被再分的信息。根據四叉樹分級結構執行解碼。CPU 901可由此獲取塊的分割狀態。
在步驟S1802中,CPU 901執行將在下面結合圖2描述的圖像質量參數解碼過程。CPU 901由此解碼在用于解碼目標塊的逆量化中使用的圖像質量參數。
在步驟S1803中,CPU 901參照解碼的塊分割標記以確定目標塊是否被分割。如果目標塊被確定為不被分割(在步驟S1803中為否),那么CPU 901執行步驟S1804。如果目標塊被確定為被分割(在步驟S1803中為是),那么CPU 901執行步驟S1805。
在步驟S1804中,CPU 901對目標塊的編碼系數數據執行可變長度解碼、逆量化和逆正交變換,由此產生殘差數據。對于可變長度解碼,CPU 901根據在第一示例性實施例中使用的編碼方案執行解碼。CPU 901由此獲取包含于塊中的量化系數數據。對于逆量化,CPU 901使用在步驟S1802中解碼的圖像質量參數。如果在S1802中新的圖像質量參數不被解碼,那么CPU 901通過簡單地使用先前解碼的圖像質量參數執行逆量化。CPU 901對從逆量化得到的系數數據執行逆正交變換,由此產生殘差數據。
在步驟S1805中,只要解碼的塊分割標記指示在分級上隨后的級別的存在,CPU 901就遞歸地執行步驟S1801至S1805中的處理。CPU 901由此恢復(restore)殘差數據,直到達到最小分割塊尺寸。
現在,將參照圖2詳細描述意在用于解碼圖像質量參數的步驟S1802。
圖2示出用于解碼不同尺寸的多個分級構建的正交變換塊的圖像質量參數的過程。在步驟S201中,CPU 901獲取目標塊尺寸。在步驟S202中,CPU 901獲取圖像質量控制最小塊尺寸。在步驟S203中,CPU 901獲取塊的分割狀態。在步驟S204中,CPU 901確定目標塊是否被分割。在步驟S205中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。在步驟S206中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。在步驟S207中,CPU 901解碼圖像質量參數。
下面將描述所述步驟的過程。在步驟S201中,CPU 901獲取目標塊尺寸。緊接在從圖18的過程調用本過程之后,要被處理的目標塊是格子塊自身。目標塊尺寸的值由此是64。隨著分割標記隨后被解碼,尺寸值相應地變為32、16和8。
在步驟S202中,CPU 901獲取圖像質量控制最小塊尺寸。在本示例性實施例中,CPU 901獲取在圖14的步驟S1402中解碼的圖像質量控制最小塊尺寸。在步驟S203中,CPU 901獲取塊的分割狀態。在本示例性實施例中,CPU 901獲取在圖18的步驟S1801中解碼的塊分割標記。
在步驟S204中,CPU 901確定塊分割標記的值。通過使用與在第一示例性實施例中描述的代碼分配相同的代碼分配,具有值“0”的塊分割標記指示塊不被分割。具有值“1”的塊分割標記指示塊被分割。如果塊分割標記的值是“0”(在步驟S204中為否),那么CPU 901執行步驟S205。如果該值是“1”(在步驟S204中為是),那么CPU 901執行步驟S206。
在步驟S205中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸大于或等于圖像質量控制最小塊尺寸(在步驟S205中為是),那么CPU 901執行步驟S207。如果不是(在步驟S205中為否),那么CPU 901結束處理。
在步驟S206中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。如果目標塊尺寸等于圖像質量控制最小塊尺寸(在步驟S206中為是),那么CPU 901執行步驟S207。如果不是(在步驟S206中為否),那么CPU 901結束處理。
在步驟S207中,CPU 901解碼圖像質量參數代碼。在本示例性實施例中,CPU 901通過Golomb解碼將QP_DELTA代碼解碼成QP_DELTA值。在本示例性實施例中,QP_DELTA通過Golomb解碼被解碼。但是,這不是限制性的。可取決于預定的數據格式通過算術解碼或其它的可變長度解碼將QP_DELTA解碼。CPU 901然后將QP_DELTA值加到用于將前面的塊編碼的圖像質量參數上,由此產生圖像質量參數。
在本示例性實施例中,取決于與用于比較其中圖像質量參數被編碼的目標塊尺寸與圖像質量控制最小塊尺寸的條件相同的條件,控制是否將圖像質量參數解碼。這使得能夠解碼由在第一示例性實施例中描述的編碼方法產生的流。
如圖11所示,可通過包括諸如逆正交變換器1103、逆量化器1104和可變長度解碼器1105的專用硬件的配置,而不是圖9所示的配置,執行根據本示例性實施例的解碼方法。CPU 1101將不執行逆正交變換、逆量化和可變長度解碼步驟,而是使得前述的單元執行處理的各部分。在其它的方面,該過程與圖18所示的過程相同。
本示例性實施例涉及在硬盤裝置903上記錄編碼數據的情況。但是,這不是限制性的。可經由通信接口1006從通信電路接收編碼數據。外部記錄裝置可與來自便攜介質的輸入編碼數據連接。
本示例性實施例還涉及在硬盤裝置903上記錄軟件應用的情況。但是,這不是限制性的。可在諸如只讀存儲器(ROM)的硬件上記錄軟件應用。將理解,軟件應用可記錄于諸如存儲卡和盤的便攜介質上。
將參照圖3描述根據本發明的第三示例性實施例的圖像質量參數的編碼方法。除非另外規定,否則,用于執行編碼方法的配置和步驟的操作與第一示例性實施例中相同。在本示例性實施例中,包含目標塊并具有與圖像質量控制最小塊尺寸相同的尺寸的塊將被定義為圖像質量控制最小塊。指示是否在圖像質量控制最小塊中編碼圖像質量參數的信息將被定義為圖像質量參數編碼狀態信息。圖像質量參數編碼狀態信息等同于指示圖像質量控制最小塊中的第一分割塊的圖像質量參數是否被編碼的信息。
圖3示出用于將圖像質量參數編碼的過程。圖3是要在圖17的步驟S1705和S1709中執行的圖像質量參數編碼過程的詳細流程圖。執行該過程,而不是圖1所示的圖像質量參數編碼過程。在步驟S301中,CPU 901獲取圖像質量參數編碼狀態信息。在步驟S302中,CPU 901參照圖像質量參數編碼狀態信息,并且確定圖像質量參數是否已在圖像質量控制最小塊中被編碼。
下面將描述所述步驟的過程。在步驟S104中,如同第一示例性實施例那樣,CPU 901參照獲取的目標塊的分割狀態,即,目標塊是否通過四叉樹被進一步分割。如果目標塊被確定為被分割(在步驟S104中為是),那么與第一示例性實施例不同,CPU 901結束處理。如果目標塊被確定為不被分割(在步驟S104中為否),那么,如同第一示例性實施例那樣,CPU 901執行步驟S105。
在步驟S105中,如同第一示例性實施例那樣,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為大于或等于(在步驟S105中為是),那么,如同第一示例性實施例那樣,CPU 901執行步驟S107和S108。如果不是(在步驟S105中為否),那么CPU 901執行步驟S301和S302的處理。
在步驟S301中,CPU 901獲取圖像質量參數編碼狀態信息。在本示例性實施例中,圖像質量控制最小塊尺寸為16。如果目標塊是8×8像素的左上塊,那么因而斷定CPU 901獲取圖像質量參數不被編碼的信息。如果目標塊是8×8像素的右上塊、左下塊或右下塊,那么圖像質量參數已在8×8像素的左上塊中被編碼。在這種情況下,CPU 901獲取圖像質量參數被編碼的信息。
在步驟S302中,CPU 901參照圖像質量參數編碼狀態信息,并且確定圖像質量參數是否已在圖像質量控制最小塊中被編碼。如果圖像質量參數被確定為尚未被編碼(在步驟S302中為否),那么CPU 901執行步驟S107和S108。如果圖像質量參數被確定為已被編碼(在步驟S302中為是),那么CPU 901結束圖像質量參數編碼處理。
將描述本示例性實施例與第一示例性實施例之間的差異。在第一示例性實施例中,如果“目標塊被分割并且目標塊尺寸等于圖像質量控制最小塊尺寸”,那么嵌入QP_DELTA代碼作為伴隨目標塊(分割塊的組)的數據。在本示例性實施例中,如果“目標塊被分割并且目標塊尺寸等于圖像質量控制最小塊尺寸”,那么QP_DELTA代碼被加到作為目標塊中的第一塊的左上塊上。在本示例性實施例中,圖像質量控制最小塊尺寸是16。假定如圖20所示的那樣分割的塊構成流。在這種情況下,緊挨在與帶陰影的塊No.0、1、7、5、6、8、9、13、14和15對應的可變長度編碼系數數據之前插入QP_DELTA代碼。換句話說,QP_DELTA代碼伴隨16×16像素或更大的塊。如果16×16像素的塊被分割,那么QP_DELTA代碼伴隨8×8像素的左上塊,即16×16像素的塊的第一再分塊。
因此,本示例性實施例可提供與第一示例性實施例相同的效果,而過程和數據結構具有不同的概念。在另一可能的配置中,除非量化系數具有非零值,否則圖像質量參數不被編碼。如果目標塊中的左上塊不包含非零值的量化系數,那么圖像質量參數被附于其中量化系數具有非零值的在結構上隨后的第一分割塊。在本示例性實施例的步驟S301中,CPU 901根據用于編碼的目標塊的尺寸和位置計算并獲取圖像質量參數編碼狀態信息。但是,這不是限制性的。例如,可以提供指示是否在圖像質量控制最小塊尺寸內將圖像質量參數編碼的標記。每當分割圖像質量控制最小塊的處理被執行時,標記被復位,并且,每當圖像質量參數被編碼時,標記被設定。為了獲取圖像質量參數編碼狀態信息,CPU 901參照該標記。如果該標記被復位,那么CPU 901獲取圖像質量參數不被編碼的信息。如果該標記被設定,那么CPU 901獲取圖像質量參數被編碼的信息。
將參照圖4描述根據本發明的第四示例性實施例的圖像質量參數的解碼方法。除非另外規定,否則,用于執行解碼方法的配置和步驟的操作與第二示例性實施例中相同。在本示例性實施例中,包含目標塊并具有與圖像質量控制最小塊尺寸相同的尺寸的塊將被定義為圖像質量控制最小塊。指示是否在圖像質量控制最小塊中解碼圖像質量參數的信息將被定義為圖像質量參數解碼狀態信息。
圖4示出用于將圖像質量參數解碼的過程。圖4是要在圖18的步驟S1802中執行的圖像質量參數解碼過程的詳細流程圖。執行該過程而不是圖2所示的圖像質量參數解碼過程。在步驟S401中,CPU 901獲取圖像質量參數解碼狀態信息。在步驟S402中,CPU 901參照圖像質量參數解碼狀態信息,并且確定圖像質量參數是否已在圖像質量控制最小塊中被解碼。
下面將描述所述步驟的過程。在步驟S204中,CPU 901確定塊分割標記的值。如果塊分割標記的值是指示塊不被分割的“0”(在步驟S204中為否),那么,如同第二示例性實施例那樣,CPU 901執行步驟S205。如果塊分割標記的值是指示塊被分割的“1”(在步驟S204中為是),那么,與第二示例性實施例不同,CPU 901結束圖像質量參數解碼處理。
在步驟S205中,如同第二示例性實施例那樣,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸被確定為大于或等于(在步驟S205中為是),那么,CPU 901前進到步驟S207。在步驟S207中,如同第二示例性實施例那樣,CPU 901將圖像質量參數解碼。如果不是(在步驟S205中為否),那么CPU 901執行步驟S401和S402。
在步驟S401中,CPU 901獲取圖像質量參數解碼狀態信息。在本示例性實施例中,圖像質量控制最小塊尺寸為16。如果目標塊是8×8像素的左上塊,那么因而斷定CPU 901獲取圖像質量參數不被解碼的信息。如果目標塊是8×8像素的右上塊、左下塊或右下塊,那么圖像質量參數已在8×8像素的左上塊中被解碼。在這種情況下,CPU 901獲取圖像質量參數被解碼的信息。
在步驟S402中,CPU 901參照圖像質量參數解碼狀態信息,并且確定圖像質量參數是否已在圖像質量控制最小塊中被解碼。如果圖像質量參數尚未被解碼(在步驟S402中為否),那么CPU 901執行步驟S207。如果圖像質量參數已被解碼(在步驟S402中為是),那么CPU 901結束圖像質量參數解碼處理。
在本示例性實施例中,基于用于比較在其處圖像質量參數被編碼的目標塊尺寸與圖像質量控制最小塊尺寸的條件、以及用于確定圖像質量參數是否已在圖像質量控制最小塊中被解碼的確定條件,控制是否實際上將圖像質量參數解碼。這種模式使得能夠解碼由在第三示例性實施例中描述的編碼方法產生的流。編碼方法可采用使得除非量化系數具有非零值否則圖像質量參數不被編碼的配置。在這種情況下,解碼方法可采用類似的配置。如果目標塊中的左上塊不包含非零值的量化系數,那么在其中量化系數具有非零值的在結構上隨后的第一分割塊中將圖像質量參數解碼。
在根據本示例性實施例的圖4的步驟S401中,CPU 901根據用于解碼的目標塊的尺寸和位置計算并獲取圖像質量參數解碼狀態信息。但是,這不是限制性的。例如,可提供指示是否在圖像質量控制最小塊尺寸內將圖像質量參數解碼的標記。每當分割圖像質量控制最小塊的處理被執行時,該標記被復位,并且,每當圖像質量參數被解碼時,該標記被設定。為了獲取圖像質量參數解碼狀態信息,CPU 901參照該標記。如果該標記被復位,那么CPU 901獲取圖像質量參數不被解碼的信息。如果該標記被設定,那么CPU 901獲取圖像質量參數被解碼的信息。
將參照圖5描述用于將塊中的殘差數據編碼的過程。該過程與根據本發明的第五示例性實施例的圖像質量參數的編碼方法有關。除非另外規定,否則,用于執行編碼方法的配置和步驟的操作與第一示例性實施例中相同。
圖5示出用于將圖像質量參數編碼并將殘差數據編碼的過程。該過程實現圖17和圖1所示的處理。從圖13的步驟S1306調用該過程。在步驟S501中,CPU 901獲取目標塊尺寸。在步驟S502中,CPU 901獲取圖像質量控制最小塊尺寸。在步驟S503中,CPU 901分別計算目標塊被分割時和不被分割時的成本。在步驟S504中,CPU 901確定是否分割目標塊。在步驟S505中,CPU 901輸出設為假的塊分割標記。在步驟S506中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。在步驟S507中,CPU 901計算圖像質量參數。在步驟S508中,CPU 901執行用于將圖像質量參數編碼的過程。在步驟S509中,CPU 901執行預測并且執行正交變換、量化和可變長度編碼。在步驟S510中,CPU 901輸出設為真的塊分割標記。在步驟S511中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。在步驟S512中,CPU 901計算圖像質量參數。在步驟S513中,CPU 901將圖像質量參數編碼。在步驟S514中,CPU 901處理包含的分割塊。
下面將具體描述處理過程。在步驟S501中,CPU 901獲取目標塊尺寸。緊接在從圖13的過程調用本過程之后,要被處理的目標塊是格子塊自身。在本示例性實施例中,目標塊尺寸的值是64,但不限于它。隨著區域四叉樹結構的級別隨后由于遞歸調用而下降,尺寸值變為32、16和8。注意,級別數不限于此。
在步驟S502中,CPU 901獲取從外面設定的圖像質量控制最小塊尺寸。在本示例性實施例中,圖像質量控制最小塊尺寸的值是16,但不限于它。
在步驟S503中,CPU 901分別計算塊被分割時和不被分割時的成本。通過使用上述的Lagrange乘子計算成本,以及圖像特性、統計和預測的代碼長度。
在步驟S504中,CPU 901比較在步驟S503中計算的具有分割和不具有分割的成本。如果具有塊分割的成本比沒有塊分割的成本低(在步驟S504中為是),那么CPU 901執行步驟S510至S514。如果不是(在步驟S504中為否),那么CPU 901執行步驟S505至S509。
在步驟S505中,CPU 901輸出設為假的塊分割標記。在步驟S506中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸大于或等于(在步驟S506中為是),那么CPU 901執行步驟S507至S509。如果不是(在步驟S506中為否),那么CPU 901執行步驟S509,而不執行步驟S507和S508。
在步驟S507中,CPU 901對目標塊執行比率控制,以計算圖像質量參數。在步驟S508中,CPU 901將在步驟S507中計算的圖像質量參數編碼。在本示例性實施例中,CPU 901確定在前面的塊中使用的圖像質量參數與在步驟S507中計算的圖像質量參數之間的差值作為QP_DELTA值。CPU 901通過Golomb編碼將確定的QP_DELTA值編碼為作為圖像質量參數代碼的QP_DELTA代碼。
在步驟S509中,CPU 901對殘差數據執行正交變換、量化和可變長度編碼,以產生編碼的系數數據。CPU 901通過使用在步驟S507中計算的圖像質量參數執行量化。如果在步驟S506中目標塊尺寸被確定為小于圖像質量控制最小塊尺寸(在步驟S506中為否),那么CPU 901使用與用于前面的量化的圖像質量參數相同的圖像質量參數。
在步驟S510中,CPU 901將設為真的塊分割標記編碼。在步驟S511中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。如果目標塊尺寸等于圖像質量控制最小塊尺寸(在步驟S511中為是),那么CPU 901執行步驟S512至S514。如果不是(在步驟S511中為否),那么CPU 901執行步驟S514,而不執行步驟S512和S513。
在步驟S512中,CPU 901執行比率控制處理,以計算用于將目標塊編碼的圖像質量參數。包含的所有分割塊經受比率控制。包含的分割塊用同一圖像質量參數被編碼。
在步驟S513中,CPU 901執行與步驟S508中相同的操作,以將在步驟S512中計算的圖像質量參數編碼。在步驟S514中,CPU 901對在分級上隨后的級別中包含的四個分割塊(左上、右上、左下和右下)遞歸地執行本過程。每個分割塊在高度和寬度方面都具有原目標塊的1/2的尺寸。目標塊尺寸在一次次的分割之后減小。這種遞歸處理可被執行直至如8×8像素那樣小的塊尺寸。通過遞歸處理,如圖16所示,各分割塊上的分割標記代碼、QP_DELTA代碼和系數數據按結構次序作為流被輸出。
如上所述,比率控制處理和圖像質量參數編碼處理可相互一體化。即使這種配置也使得能夠如同在第三示例性實施例中描述的圖像質量參數的編碼方法那樣以較細微的單位實現圖像質量控制。
將參照圖6描述根據本發明的第六示例性實施例的圖像質量參數的解碼方法。
圖6示出圖像質量參數的解碼過程。該過程適用于圖14的步驟S1405。在步驟S601中,CPU 901獲取用于解碼的目標塊的尺寸。在步驟S602中,CPU 901獲取圖像質量控制最小塊尺寸。在步驟S603中,CPU 901將塊分割標記解碼。在步驟S604中,CPU 901確定用于解碼的目標塊是否被分割。在步驟S605中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。在步驟S606中,CPU 901將圖像質量參數解碼。在步驟S607中,CPU 901執行可變長度解碼、逆量化和逆正交變換。在步驟S608中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。在步驟S609中,CPU 901將圖像質量參數解碼。在步驟S610中,CPU 901以包含的分割塊為對象遞歸地調用本過程以用于解碼。
下面將具體描述所述步驟的過程。在步驟S601中,CPU 901獲取用于解碼的目標塊的尺寸。緊接在從圖14的過程調用本過程之后,要被處理的目標塊是格子塊自身。在本示例性實施例中,格子塊具有尺寸值64,但不限于它。隨著區域四叉樹結構的級別隨后由于遞歸調用而下降,尺寸值變為32、16和8。注意,級別數不限于此。
在步驟S602中,CPU 901獲取圖像質量控制最小塊尺寸。在本示例性實施例中,CPU 901獲取嵌入在幀標題信息中的圖像質量控制最小塊尺寸。
在步驟S603中,CPU 901獲取塊的分割狀態。在本示例性實施例中,CPU 901參照在圖18的步驟S1801中解碼的塊分割標記的值。
在步驟S604中,CPU 901確定塊分割標記的值是真還是假。如果為假(在步驟S604中為否),那么CPU 901執行步驟S605至S607。如果為真(在步驟S604中為是),那么CPU 901執行步驟S608至S610。
在步驟S605中,CPU 901確定目標塊尺寸是否大于或等于圖像質量控制最小塊尺寸。如果目標塊尺寸大于或等于圖像質量控制最小塊尺寸(在步驟S605中為是),那么CPU 901執行步驟S606和S607。如果不是(在步驟S605中為否),那么CPU 901執行步驟S607,而不執行步驟S606。
在步驟S606中,CPU 901將圖像質量參數代碼解碼。在本示例性實施例中,CPU 901通過Golomb解碼將QP_DELTA代碼解碼成QP_DELTA值。CPU 901然后將QP_DELTA值加到在前面的逆量化中使用的圖像質量參數上,由此產生圖像質量參數。
在步驟S607中,CPU 901執行可變長度解碼、逆量化和逆正交變換。對于逆量化,CPU 901使用在步驟S606中解碼的圖像質量參數。如果目標塊尺寸小于圖像質量控制最小塊尺寸(在步驟S608中為否),那么CPU 901使用用于將前面的目標塊逆量化的圖像質量參數。隨后,CPU 901結束目標塊的解碼。
在步驟S608中,CPU 901確定目標塊尺寸是否等于圖像質量控制最小塊尺寸。如果目標塊尺寸等于圖像質量控制最小塊尺寸(在步驟S608中為是),那么CPU 901執行步驟S609。如果不是(在步驟S608中為否),那么CPU 901前進到步驟S610,而不執行步驟S609。
在步驟S609中,CPU 901如步驟S606中那樣將圖像質量參數代碼解碼。在步驟S610中,CPU 901對在分級上隨后的級別中包含的四個分割塊(左上、右上、左下和右下)遞歸地執行本過程。每個分割塊在高度和寬度方面都具有原目標塊的1/2的尺寸。目標塊尺寸在一次次的分割之后減小。通過這種遞歸處理,如圖16所示,CPU 901按區域四叉樹結構的次序將每個分割塊上的分割標記代碼、QP_DELTA代碼和系數數據解碼。
如上所述,用于掃描區域四叉樹結構的遞歸處理和圖像質量參數解碼處理可相互一體化。即使這種配置也可將通過根據第一示例性實施例或第五示例性實施例的編碼方法編碼的流解碼。
本發明的第七示例性實施例涉及分割塊編碼方法。通過使用圖9所示的配置實現根據本示例性實施例的分割塊編碼方法。
在編碼之前,CPU 901設定簡檔和級別。簡檔描述要在本示例性實施例中產生的流的特性。級別是取決于解碼器的處理性能所允許的參數組。由于處理性能主要取決于圖像尺寸,因此,對于各圖像尺寸定義級別。但是,級別定義的單位不限于圖像尺寸。例如,可根據要被處理的格子塊的數量設定級別,因為處理性能取決于該數量。在本示例性實施例中,圖像質量控制最小塊尺寸被設定為每個級別中的最小值。圖21A和圖21B示出定義由簡檔并且由級別限定的圖像質量控制最小塊尺寸的表。
本示例性實施例涉及簡檔包含僅使用基本工具(tool)的基線簡檔和使用其它工具的主簡檔的情況。但是,簡檔不限于此。
圖21A示出表示基線簡檔中的圖像質量控制最小塊尺寸的極限和級別的表。圖21B示出表示主簡檔中的圖像質量控制最小塊尺寸的極限和級別的表。
在本示例性實施例中,級別通過包含于幀中的格子塊(64×64像素)的最大數量被分類。具體而言,級別1意在用于諸如640×480像素的相對小的圖像。級別2意在用于1920×1080像素的中等尺寸的圖像。級別3意在用于4096×2160像素的大圖像。應當注意,級別數和級別分類不限制本發明的要旨。
將描述圖21A所示的基線簡檔。級別1示出圖像質量控制最小塊尺寸的最小值是8,并且可在8至64的范圍中設定圖像質量控制最小塊尺寸。級別2示出圖像質量控制最小塊尺寸的最小值是16,并且可在16至64的范圍中設定圖像質量控制最小塊尺寸。級別3示出圖像質量控制最小塊尺寸的最小值是32,并且可在32至64的范圍中設定圖像質量控制最小塊尺寸。圖21B所示的主簡檔示出:不管級別如何,圖像質量控制最小塊尺寸都被控制在8至64的范圍內。
CPU 901取決于諸如工具和存儲器容量的編碼方法或裝置的條件、并且/或者考慮解碼方法或裝置的條件,確定簡檔和級別。但是,確定簡檔和級別的方法不被特別限制。未示出的用戶可設定簡檔和級別。確定的簡檔和級別可被編碼,被包含于描述關于整個運動圖像的信息的序列標題中,并且從通信接口905被輸出。這種簡檔和級別可記錄于HDD 903上。
接下來,將描述用于將幀編碼的過程。在圖13的步驟S1301中,如同第一示例性實施例那樣,CPU 901首先設定圖像質量控制最小塊尺寸的參數。圖22是示出圖像質量控制最小塊尺寸的計算方法的流程圖。在步驟S2201中,CPU 901確定簡檔類型。如果簡檔類型是基線簡檔(步驟S2202中為基線簡檔),那么CPU 901執行步驟S2204和隨后的步驟。如果簡檔類型是主簡檔(步驟S2202中為主簡檔),那么CPU 901執行步驟S2203。
首先將描述主簡檔的情況。在步驟S2203中,CPU 901將圖像質量控制最小塊尺寸設為8。CPU 901然后結束處理。
接下來,將描述基線簡檔的情況。在步驟S2204中,CPU 901獲取級別值。在本示例性實施例中,根據輸入的圖像尺寸計算級別值。級別值指示可將輸入的圖像尺寸的流解碼的最小級別。
在步驟S2205中,CPU 901確定級別值是否為1。如果確定為真(在步驟S2205中為是),那么CPU 901執行步驟S2206。如果確定為假(在步驟S2205中為否),那么CPU 901執行步驟S2207。在步驟S2206中,CPU 901將圖像質量控制最小塊尺寸設為8。在步驟S2207中,CPU 901確定級別值是否為2。如果確定為真(在步驟S2207中為是),那么CPU 901執行步驟S2208。如果確定為假(在步驟S2207中為否),那么CPU 901執行步驟S2209。在步驟S2208中,CPU 901將圖像質量控制最小塊尺寸設為16。在步驟S2209中,CPU 901將圖像質量控制最小塊尺寸設為32。
然后,CPU 901返回到圖13所示的處理。在步驟S1302中,如同第一示例性實施例那樣,CPU 901將圖像質量控制最小塊尺寸編碼。在步驟S1303中,CPU 901產生包含編碼數據的幀標題信息。圖23A示出產生的位流。序列標題包含關于簡檔和級別的編碼數據,跟隨有指示圖像尺寸的代碼。每條幀數據中的幀標題包含圖像質量控制最小塊尺寸代碼,尺寸設定大于或等于在圖21A中定義的圖像質量控制最小塊尺寸的最小值。
圖24是示出整個過程的流程圖。在步驟S2401中,CPU 901輸入要被編碼的圖像的尺寸。在步驟S2402中,CPU 901選擇簡檔。CPU 901還根據圖21A或21B選擇級別。在步驟S2403中,CPU 901根據選擇的級別獲取圖像質量控制最小塊尺寸的最小值。在步驟S2404中,CPU 901將選擇的簡檔和級別編碼。在步驟S2405中,CPU 901產生包含關于簡檔和級別的編碼數據的序列標題。在步驟S2406中,CPU 901以幀為單位執行編碼。每個幀中的圖像質量控制最小塊的可能尺寸大于或等于前述的圖像質量控制最小塊尺寸的最小值。在步驟S2407中,CPU 901確定是否所有的幀都被編碼。如果不是所有的幀都被編碼(在步驟S2407中為否),那么CPU 901前進到步驟S2406以將下一幀編碼。如果所有的幀都被編碼(在步驟S2407中為是),那么CPU 901結束編碼處理。
提供簡檔和級別并限制圖像質量控制最小塊尺寸使得能夠取決于圖像尺寸確定圖像質量控制最小塊尺寸。因此,可以在省略較小的塊中的操作的同時將圖像編碼,而不導致圖像質量的降低。這允許設計用于所意圖的裝置的最佳電路并設計用于抑制一定功耗的配置。例如,可對于移動通信使用基線簡檔,使得可鑒于電池運行時間對編碼操作施加嚴格的負載限制。可對于無電池固定裝置使用主簡檔,由此,對操作負載施加較寬松的限制。就軟件而言,可省略用于執行比圖像質量控制最小塊尺寸小的塊中的量化控制的操作時間,以用于加速。
將理解,如同本示例性實施例的基于簡檔和級別的編碼方法可被應用于第三和第五示例性實施例。
圖21A和圖21B所示的對于各級別確定的圖像質量控制最小塊尺寸的最小值可總是被用于各級別中。在這種情況下,要包含于每個幀中的圖像質量控制最小塊尺寸代碼可被省略。圖23B示出這種位流。圖23B所示的位流與圖23A所示的位流的不同在于,幀標題不包含圖像質量控制最小塊尺寸代碼。序列中的圖像質量控制最小塊尺寸被固定于針對簡檔和級別限定的圖像質量控制最小塊尺寸的最小值。這提供了去除冗余代碼以提高編碼效率的效果。
用于存儲比圖像質量控制最小塊尺寸小的量化矩陣的存儲器容量和用于更新這種量化矩陣的處理也可被省略。
本發明的第八示例性實施例涉及用于解碼在第七示例性實施例中產生的位流的圖像解碼方法。通過使用圖9所示的配置實現根據本示例性實施例的圖像解碼方法。
在將幀解碼之前,CPU 901輸入并解碼序列標題。CPU 901根據圖23A將與簡檔和級別有關的代碼解碼。CPU 901還將圖像寬度代碼和圖像高度代碼解碼。如果解碼的簡檔是基線簡檔,那么CPU 901參照圖21A的表。CPU 901進一步選擇和確定與級別對應的圖像質量控制最小塊尺寸的最小值。如果解碼的簡檔是主簡檔,那么CPU 901參照圖21B的表,并且將圖像質量控制最小塊尺寸的最小值設為8。
在該時間點,CPU 901保留RAM 902上的其它必要的存儲器和緩沖器。例如,對于級別2中的基線簡檔,將不在8×8像素的塊尺寸中執行圖像質量控制。在這種情況下,用于以8×8和4×4像素塊為單位存儲圖像質量參數的存儲器區域可被省略。
CPU 901根據已在第二示例性實施例中描述的圖14的流程圖將幀解碼。在步驟S1402中,CPU 901將包含于幀標題中的圖像質量控制最小塊尺寸解碼。在步驟S1405中,CPU 901以格子塊為目標塊執行分級解碼。在第二示例性實施例中描述的圖18的步驟S1805中,CPU 901根據分級級別執行遞歸處理,由此將圖像質量控制參數解碼,直至圖像質量控制最小塊尺寸的塊。
圖25是示出整個過程的流程圖。在步驟S2501中,CPU 901輸入序列標題。在步驟S2502中,CPU 901將關于簡檔和級別的編碼數據解碼,由此獲取簡檔和級別。在步驟S2503中,CPU 901根據選擇的級別獲取圖像質量控制最小塊尺寸的最小值。在步驟S2504中,CPU 901以幀為單位執行解碼。這確保每個幀中的圖像質量控制最小塊的可能尺寸大于或等于前述的圖像質量控制最小塊尺寸的最小值。在步驟S2505中,CPU 901確定是否所有的幀都被解碼。如果不是所有的幀都被解碼(在步驟S2505中為否),那么CPU 901前進到步驟S2504以將下一幀解碼。如果所有的幀都被解碼(在步驟S2505中為是),那么CPU 901結束解碼處理。
提供簡檔和級別并限制圖像質量控制最小塊尺寸使得能夠取決于圖像尺寸確定圖像質量控制最小塊尺寸。因此,可以在省略較小的塊中的操作的同時將圖像解碼,而不導致圖像質量的降低。確定圖像質量控制最小塊尺寸可減少遞歸處理的次數,由此,可抑制用于以格子塊為單位執行解碼的時間變動。
因此,可以設計用于所意圖的裝置的最佳電路,并設計用于抑制一定功耗的配置。例如,可對于移動通信使用基線簡檔,使得可鑒于電池運行時間對編碼操作施加嚴格的負載限制。可對于無電池固定裝置使用主簡檔,由此,對操作負載施加較寬松的限制。就軟件而言,可省略用于執行比圖像質量控制最小塊尺寸小的塊中的量化控制的操作時間,以用于加速。
將理解,CPU 901可根據圖23B將與簡檔和級別有關的代碼解碼。如前述描述中那樣,CPU 901輸入和解碼序列標題。根據得到的簡檔和級別,CPU 901如上面描述的那樣確定圖像質量控制最小塊尺寸。當將幀解碼時,CPU 901跳過步驟S1402,并使用圖像質量控制最小塊尺寸。
根據簡檔和級別唯一地確定圖像質量控制最小塊尺寸使得在沒有每個幀標題中的圖像質量控制最小塊尺寸代碼的情況下圖像解碼變為可能。
CPU 901可比較解碼的圖像質量控制最小塊尺寸與由簡檔和級別確定的圖像質量控制最小塊尺寸。如果后者比前者大,那么CPU 901可檢測位流的錯誤。
雖然已參照示例性實施例描述了本發明,但要理解的是,本發明不限于公開的示例性實施例。以下的權利要求的范圍要被賦予最寬的解釋,以包含所有的修改、等同的結構和功能。
本申請要求2011年1月13日提交的日本專利申請No.2011-004648的優先權,在這里通過引用并入其全部內容。