【文献】
Benjamin Bross,et al.,High efficiency video coding (HEVC) text specification draft 6,Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 8th Meeting:San Jose,CA,USA,1-10 February,2012,米国,JCTVC,2012年 4月 2日,JCTVC-H1003,P.28,P.67-70,URL,http://phenix.it-sudparis.eu/jct/index.php
【文献】
Junichi Tanaka,et al.,Quantization Matrix for HEVC,Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 5th Meeting:Geneva,CH,16-23 March,2011,米国,JCTVC,2011年 3月22日,JCTVC-E073,P.1-24,URL,http://phenix.it-sudparis.eu/jct/index.php
【文献】
Teruhiko Suzuki,et al.,Proposal to support quantization matrix in HEVC,Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting:Torino,IT,14-22 July,2011,米国,JCTVC,2011年 7月16日,JCTVC-F362,P.1-11,URL,http://phenix.it-sudparis.eu/jct/index.php
【文献】
Sung-Chang Lim,et al.,Non-CE4 Subtest 2: Improvement on quantization matrix signaling,Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 8th Meeting:San Jose,CA,USA,1-10 February,2012,米国,JCTVC,2012年 2月 9日,JCTVC-H0237,P.1-6,URL,http://phenix.it-sudparis.eu/jct/index.php
(58)【調査した分野】(Int.Cl.,DB名)
前記量子化行列が使われる変換係数ブロックの大きさが16×16の大きさ又は32×32の大きさの場合、前記量子化行列のDC値を示す情報を利用して前記量子化行列を復元することを特徴とする請求項1に記載の映像復号化方法。
前記量子化行列係数の差分値を示す情報は、現在量子化行列係数と前記現在量子化行列係数以前に復号化された以前量子化行列係数との間の差分値であり、前記量子化行列係数は、前記現在量子化行列係数に対する前記量子化行列係数の差分値に前記以前量子化行列係数を加えて導出されることを特徴とする請求項1に記載の映像復号化方法。
前記量子化行列が4×4の大きさの変換係数ブロックに使われる場合、前記量子化行列係数に対して4×4の大きさの対角スキャンを実行し、前記量子化行列が8×8、16×16及び32×32のうち一つの大きさを有する変換係数ブロックに使われる場合、前記量子化行列係数に対して8×8大きさの対角スキャンを実行することを特徴とする請求項1に記載の映像復号化方法。
【発明を実施するための形態】
【0025】
以下、図面を参照して本発明の実施形態に対して具体的に説明する。本明細書の実施例を説明するにあたって、関連した公知構成又は機能に対する具体的な説明が本明細書の要旨を不明にすると判断される場合には該当説明を省略することもできる。
【0026】
本明細書において、一構成要素が他の構成要素に“連結されている”又は“接続されている”と言及された場合、該当他の構成要素に直接的に連結されている、又は接続されていることを意味し、又は中間に他の構成要素が存在することを意味する。また、本明細書において、特定構成を“含む”と記述する内容は、該当構成以外の構成を排除するものではなく、追加的な構成が本発明の実施又は本発明の技術的思想の範囲に含まれることができることを意味する。
【0027】
第1、第2などの用語は、多様な構成の説明に使われることができるが、前記構成は、前記用語により限定されるものではない。前記用語は、一つの構成要素を他の構成要素から区別する目的として使われる。例えば、本発明の権利範囲を外れない限り、第1の構成は第2の構成と命名することができ、同様に、第2の構成も第1の構成と命名することができる。
【0028】
また、本発明の実施例に開示する構成部は、互いに異なる特徴的な機能を示すために独立的に図示されるものであり、各構成部が分離されたハードウェアや一つのソフトウェア構成単位に構成されることを意味しない。即ち、各構成部は、説明の便宜上、それぞれの構成部として羅列して含むものであり、各構成部のうち少なくとも2個の構成部が統合されて一つの構成部からなり、又は一つの構成部が複数個の構成部に分けられて機能を遂行することができる。各構成部の統合された実施例及び分離された実施例も本発明の本質から外れない限り本発明の権利範囲に含まれる。
【0029】
また、一部の構成要素は、本発明で本質的な機能を遂行する必須的構成要素ではなく、単に性能を向上させるための選択的構成要素である。本発明は、単に性能向上のために使われる構成要素を除いた本発明の本質具現に必須的な構成部のみを含んで具現されることができ、単に性能向上のために使われる選択的な構成要素を除いた必須的な構成要素のみを含む構造も本発明の権利範囲に含まれる。
【0030】
まず、説明の便宜及び発明の理解のために、本明細書で使われる用語に対して簡略に説明する。
【0031】
ユニット(unit)は、映像符号化及び復号化の単位を意味する。即ち、映像符号化/復号化において、符号化又は復号化単位とは、一つの映像を細分化されたユニットに分割して符号化又は復号化する時、その分割された単位を意味する。ブロック(block)、マクロブロック(Macro Block;MB)、符号化ユニット(Coding Unit;CU)、予測ユニット(Prediction Unit;PU)、変換ユニット(Transform Unit;TU)、符号化ブロック(Coding Block;CB)、予測ブロック(Prediction Block;PB)、変換ブロック(Transform Block;TB)などとも呼ばれる。また、一つのユニットは、大きさが小さい下位ユニットに分割されることができる。
【0032】
ブロック(block)は、サンプル(sample)のM×N配列を意味し、MとNは正の整数値を有する。また、ブロックは、一般的に2次元形態の配列を意味する。
【0033】
変換ユニット(Transform Unit;TU)は、変換、逆変換、量子化、逆量子化、変換係数符号化/復号化のように残余信号(residual signal)の符号化/復号化を実行する時の基本ユニットであり、一つの変換ユニットは、大きさが小さい複数の変換ユニットに分割されることができる。
【0034】
量子化行列(quantization matrix)は、映像の主観的画質又は客観的画質を向上させるために量子化又は逆量子化過程で利用する行列を意味する。量子化行列は、スケーリングリスト(scaling list)とも呼ばれる。
【0035】
基本行列(default matrix)は、符号化器/復号化器で予め定義されている所定の量子化行列を意味する。非基本行列(non−default matrix)は、符号化器/復号化器で予め定義されておらずに、ユーザによって送信/受信される量子化行列を意味する。
【0036】
量子化行列係数(quantization matrix coefficient)は、量子化行列内の各元素(element)を意味し、行列係数(matrix coefficient)とも呼ばれる。
【0037】
スキャン(scan)は、ブロック又は行列内の係数の順序を整列する方法を意味する。例えば、2次元配列を1次元配列の形態に整列することをスキャンといい、1次元配列を2次元配列の形態に整列することもスキャンという。
【0038】
スケーリング(scaling)は、変換係数レベルに因数をかける過程を意味し、その結果、変換係数を生成する。スケーリングは、逆量子化(dequantization)ともいう。
【0039】
変換係数(transform coefficient)は、変換を実行した後に生成された係数値を意味する。本明細書では、変換係数に量子化を適用した量子化された変換係数レベル(transform coefficient level)も変換係数と通称して使用する。
【0040】
ジグザグスキャン(zigzag scan)は、最低空間的周波数に該当する係数(量子化行列係数、変換係数レベル)から最高空間的周波数に該当する係数を順次に整列するための特定スキャン方法である。
【0041】
量子化媒介変数(quantization parameter)は、量子化及び逆量子化で変換係数レベルをスケーリングする時に使われる値を意味する。このとき、量子化媒介変数は、量子化ステップ大きさ(step size)にマッピングされた値である。
【0042】
パラメータセット(parameter set)は、ビットストリーム内の構造のうちヘッダ情報に該当し、シーケンスパラメータセット(sequence parameter set)、ピクチャパラメータセット(picture parameter set)、適応パラメータセット(adaptation paramete rset)などを通称する意味を有する。
【0043】
図1は、本発明が適用される映像符号化装置の一実施例に係る構成を示すブロック図である。
【0044】
図1を参照すると、映像符号化装置100は、動き予測部111、動き補償部112、イントラ予測部120、スイッチ115、減算器125、変換部130、量子化部140、エントロピー符号化部150、逆量子化部160、逆変換部170、加算器175、フィルタ部180及び参照ピクチャバッファ190を含む。
【0045】
映像符号化装置100は、入力映像に対してイントラ(intra)モード又はインター(inter)モードに符号化を実行することで、ビットストリームを出力することができる。イントラモードである場合、スイッチ115がイントラに切り替えられ、インターモードである場合、スイッチ115がインターに切り替えられることができる。イントラ予測は画面内予測を意味し、インター予測は画面間予測を意味する。映像符号化装置100は、入力映像の入力ブロックに対する予測ブロックを生成した後、入力ブロックと予測ブロックとの差分(residual)を符号化することができる。このとき、入力映像は、原映像(original picture)を意味する。
【0046】
イントラモードである場合、イントラ予測部120は、現在ブロック周辺の既に符号化/復号化されたブロックのピクセル値を利用して空間的予測を実行することで、予測ブロックを生成することができる。
【0047】
インターモードである場合、動き予測部111は、動き予測過程で参照ピクチャバッファ190に格納されている参照映像で入力ブロックと最もよくマッチされる領域を探して動きベクトルを求めることができる。動き補償部112は、動きベクトルを利用して動き補償を実行することによって予測ブロックを生成することができる。ここで、動きベクトルは、インター予測に使われる2次元ベクトルであり、現在符号化/復号化対象映像と参照映像との間のオフセットを示すことができる。
【0048】
減算器125は、入力ブロックと生成された予測ブロックとの差分により残差ブロック(residual block)を生成することができる。
【0049】
変換部130は、残差ブロックに対して変換(transform)を実行することで、変換係数(transform coefficient)を出力することができる。そして、量子化部140は、入力された変換係数を量子化パラメータ(quantization parameter、又は量子化媒介変数)によって量子化し、量子化された係数(quantized coefficient)を出力することができる。
【0050】
エントロピー符号化部150は、量子化部140で算出された値又は符号化過程で算出された符号化パラメータ値などに基づいてエントロピー符号化を実行することで、ビットストリーム(bitstream)を出力することができる。エントロピー符号化が適用される場合、高い発生確率を有するシンボル(symbol)に少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることによって、符号化対象シンボルに対するビット列の大きさが減少されることができる。したがって、エントロピー符号化を介して映像符号化の圧縮性能が高まることができる。エントロピー符号化部150は、エントロピー符号化のために、指数−ゴロム(Exponential−Golomb)、CAVLC(Context−Adaptive Variable Length Coding)、CABAC(Context−Adaptive Binary Arithmetic Coding)のような符号化方法を使用することができる。
【0051】
図1の実施例に係る映像符号化装置100は、インター予測符号化、即ち、画面間予測符号化を実行するため、現在符号化された映像は、参照映像として使われるために復号化されて格納される必要がある。したがって、量子化された係数は、逆量子化部160で逆量子化され、逆変換部170で逆変換される。逆量子化、逆変換された係数は、加算器175を介して予測ブロックと加えられて復元ブロックが生成される。
【0052】
復元ブロックは、フィルタ部180を経て、フィルタ部180は、デブロッキングフィルタ(deblocking filter)、SAO(Sample Adaptive Offset)、ALF(Adaptive Loop Filter)のうち少なくとも一つ以上を復元ブロック又は復元ピクチャに適用することができる。フィルタ部180は、適応的インループ(in−loop)フィルタとも呼ばれる。デブロッキングフィルタは、ブロック間の境界に発生したブロック歪曲を除去することができる。SAOは、コーディングエラーを補償するために、ピクセル値に適正オフセット(offset)値を加えることができる。ALFは、復元された映像と原映像を比較した値に基づいてフィルタリングを実行することができる。フィルタ部180を経た復元ブロックは、参照ピクチャバッファ190に格納されることができる。
【0053】
図2は、本発明が適用される映像復号化装置の一実施例に係る構成を示すブロック図である。
【0054】
図2を参照すると、映像復号化装置200は、エントロピー復号化部210、逆量子化部220、逆変換部230、イントラ予測部240、動き補償部250、加算器255、フィルタ部260及び参照ピクチャバッファ270を含む。
【0055】
映像復号化装置200は、符号化器から出力されたビットストリームの入力を受けてイントラモード又はインターモードに復号化を実行することで、再構成された映像、即ち、復元映像を出力することができる。イントラモードである場合、スイッチがイントラに切り替えられ、インターモードである場合、スイッチがインターに切り替えられることができる。
【0056】
映像復号化装置200は、入力されたビットストリームから復元された残差ブロック(reconstructed residual block)を得て、予測ブロックを生成した後、復元された残差ブロックと予測ブロックを加えて再構成されたブロック、即ち、復元ブロックを生成することができる。
【0057】
エントロピー復号化部210は、入力されたビットストリームを確率分布によってエントロピー復号化し、量子化された係数(quantized coefficient)形態のシンボルを含むシンボルを生成することができる。
【0058】
エントロピー復号化方法が適用される場合、高い発生確率を有するシンボルに少ない数のビットが割り当てられ、低い発生確率を有するシンボルに多い数のビットが割り当てられてシンボルが表現されることによって、各シンボルに対するビット列の大きさが減少されることができる。
【0059】
量子化された係数は、逆量子化部220で逆量子化され、逆変換部230で逆変換され、量子化された係数が逆量子化/逆変換された結果、復元された残差ブロックが生成されることができる。
【0060】
イントラモードである場合、イントラ予測部240は、現在ブロック周辺の既に復号化されたブロックのピクセル値を利用して空間的予測を実行することで、予測ブロックを生成することができる。インターモードである場合、動き補償部250は、動きベクトル及び参照ピクチャバッファ270に格納されている参照映像を利用して動き補償を実行することによって予測ブロックを生成することができる。
【0061】
残差ブロックと予測ブロックは、加算器255を介して加えられ、加えられたブロックは、フィルタ部260を経ることができる。フィルタ部260は、デブロッキングフィルタ、SAO、ALFのうち少なくとも一つ以上を復元ブロック又は復元ピクチャに適用することができる。フィルタ部260は、再構成された映像、即ち、復元映像を出力することができる。復元映像は、参照ピクチャバッファ270に格納されてインター予測に使われることができる。
【0062】
図3は、一つのユニットが複数の下位ユニットに分割される実施例を概略的に示す概念図である。
【0063】
ブロック分割情報には、ユニットの深さ(depth)に対する情報が含まれることができる。深さ情報は、ユニットが分割される回数及び/又は程度を示すことができる。
【0064】
一つのユニットは、ツリー構造(tree structure)に基づいて深さ情報(depth)を有して階層的に分割されることができる。それぞれの分割された下位ユニットは、深さ情報を有することができる。このとき、深さ情報は、ユニットが分割された回数及び/又は程度を示すため、下位ユニットの大きさに対する情報を含むこともできる。
【0065】
図3の310を参照すると、最も上位ノードは、ルートノード(root node)と呼ばれることができ、最も小さい深さ値を有することができる。このとき、最も上位ノードは、レベル0の深さを有することができ、分割されない最初のユニットを示すことができる。
【0066】
レベル1の深さを有する下位ノードは、最初のユニットが一回分割されたユニットを示すことができ、レベル2の深さを有する下位ノードは、最初のユニットが二回分割されたユニットを示すことができる。例えば、
図3の320において、ノードaに対応するユニットaは、最初のユニットから一回分割されたユニットであり、レベル1の深さを有することができる。
【0067】
レベル3のリーフノード(leaf node)は、最初のユニットが三回分割されたユニットを示すことができる。例えば、
図3の320において、ノードdに対応するユニットdは、最初のユニットから三回分割されたユニットであり、レベル3の深さを有することができる。したがって、最も下位ノードであるレベル3のリーフノードは、最も深い深さを有することができる。
【0068】
一方、映像の主観的又は客観的画質を向上させるために、符号化器では、量子化(quantization)過程で空間的周波数(spatial frequency)別に異なる値を利用して変換係数を量子化する時、量子化行列(quantization matrix)を使用し、復号化器では、逆量子化(dequantization)過程で空間的周波数別に異なる値を利用して変換係数を逆量子化する時、量子化行列を使用する。
【0069】
量子化及び逆量子化の過程で、符号化器と復号化器では、予め定義された基本行列(default matrix)を量子化行列として使用することもでき、又は、符号化器でユーザが定義した量子化行列を使用することもできる。ユーザが定義した量子化行列は、非基本行列(non−default matrix)とも呼ばれる。このとき、符号化器では、量子化行列(非基本行列)をビットストリーム(bitstream)に符号化して復号化器に送信することができる。
【0070】
以下、本発明では、量子化行列係数をスキャンする方法及び装置に対して説明する。
【0071】
図4は、本発明の実施例に係る量子化行列の符号化方法を概略的に示す流れ図である。
図4の方法は、前述した
図1の映像符号化装置で実行されることができる。
【0072】
図4を参照すると、符号化装置は、量子化行列(quantization matrix)を構成することができる(S410)。即ち、符号化装置は、量子化/逆量子化の過程で変換係数ブロック(又は、変換ブロック)に使われる量子化行列を構成することができる。
【0073】
例えば、符号化器及び復号化器で予め定義された基本(default)行列を利用して量子化/逆量子化の過程に必要な量子化行列を構成することができる。または、ユーザが符号化器に入力した非基本(non−default)行列を利用して量子化/逆量子化の過程に必要な量子化行列を構成することもできる。
【0074】
このとき、符号化装置は、変換係数ブロックの予測モード(画面内予測モード又は画面間予測モード等)、色成分(輝度成分又は色差成分等)、ブロック大きさ(4×4、8×8、16×16、32×32、16×4、4×16、32×8、8×32等)によって互いに異なる量子化行列を使用するように量子化行列を構成することができる。前記構成された量子化行列は、多様な量子化行列を含むことができる。
【0075】
16×16及び32×32大きさを有する変換係数ブロックに使われる量子化行列は、量子化/逆量子化の際、16×16と32×32大きさの量子化行列として使われるが、8×8大きさの量子化行列で表現して符号化されることができる。
【0076】
例えば、符号化器から16×16又は32×32大きさの量子化行列が入力された場合、量子化/逆量子化の際、前記入力された16×16又は32×32大きさの量子化行列を利用し、サブサンプリング(subsampling)又はダウンサンプリング(downsampling)等を介して前記入力された16×16又は32×32大きさの量子化行列を8×8大きさの量子化行列で構成して符号化することができる。または、符号化器から8×8大きさの量子化行列が入力された場合、量子化/逆量子化の際、前記入力された8×8大きさの量子化行列をアップサンプリング(upsampling)又は補間(interpolation)等を介して16×16又は32×32大きさの量子化行列で構成して利用することができ、前記入力された8×8大きさの量子化行列を符号化することができる。
【0077】
表1は、前述した変換係数ブロックの予測モード、色成分、ブロック大きさによって使われることができる量子化行列の一例を示す。
【0079】
符号化装置は、量子化行列の存在有無に対する情報を符号化することができる(S420)。例えば、符号化装置は、量子化行列の存在有無を示す情報をパラメータセット(parameter set)に符号化することができる。このとき、パラメータセットは、適応パラメータセット(adaptation parameter set)である。
【0080】
表2は、量子化行列の存在有無に対する情報を符号化するためのパラメータセットの構文要素を示す一例である。
【0082】
表2を参照すると、ビットストリーム内の量子化行列の存在有無を示す情報は、フラグを利用してパラメータセットに符号化されることができる。例えば、量子化行列の存在有無を指示するフラグは、scaling_list_present_flagで示される。もし、量子化行列が存在しない場合、例えば、全ての量子化行列を基本行列に決定した場合、scaling_list_present_flagの値を0に設定して符号化することができ、符号化された量子化行列が存在する場合、scaling_list_present_flagの値を1に設定して符号化することができる。
【0083】
表2において、sizeIDの値は、変換係数ブロックの大きさ又は量子化行列の大きさを意味し、matrixIDの値は、予測モード(prediction mode)及び色成分(color component)による量子化行列の種類を意味する。
【0084】
一例として、表3は、量子化行列の大きさによるsizeID値を示し、表4は、予測モード及び色成分によるmatrixID値を示す。
【0087】
表2では、量子化行列の存在有無に対する情報を示すフラグとしてscaling_list_present_flagを利用したが、これは一つの例示に過ぎず、前記フラグの名称は変更可能である。例えば、sps_scaling_list_data_present_flagなどを利用して量子化行列の存在有無に対する情報を指示することもできる。
【0088】
符号化装置は、量子化行列の予測方法に対する情報を符号化することができる(S430)。例えば、符号化装置は、量子化行列の予測方法の種類に対して決定し、決定された量子化行列の予測方法に対する情報をパラメータセットに符号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0089】
前記表2を参照すると、量子化行列の予測方法に対する情報は、フラグを利用してパラメータセットに符号化することができる。例えば、量子化行列の予測方法を指示するフラグは、scaling_list_pred_mode_flagで示される。このとき、量子化行列内の係数を予測符号化するために、量子化行列をスキャンしてDPCM(Differential Pulse Code Modulation)と指数−ゴロム(Exponential−Golomb)コードを使用することに決定した場合、scaling_list_pred_mode_flagの値を1に設定して符号化することができる。または、量子化行列間予測のために、参照量子化行列と符号化対象量子化行列が同じ値を有するように決定した場合、scaling_list_pred_mode_flagの値を0に設定して符号化することができる。ここで、参照量子化行列と符号化対象量子化行列が同じ値を有するというのは、参照量子化行列の係数値を符号化対象量子化行列の係数値に複写する量子化行列予測方法である。
【0090】
表2では、量子化行列の予測方法に対する情報を示すフラグとしてscaling_list_pred_mode_flagを利用したが、これは一つの例示に過ぎず、前記フラグの名称は変更可能である。
【0091】
符号化装置は、量子化行列の予測方法に対する情報に基づいて量子化行列間予測のために、量子化行列識別子を符号化し、又は量子化行列内の係数を予測符号化することができる(S440)。
【0092】
一例として、量子化行列の予測方法が、量子化行列間予測のために、参照量子化行列と同じ係数値を有するように符号化対象量子化行列を決定した場合(例えば、scaling_list_pred_mode_flag=0)の場合、符号化対象量子化行列の参照量子化行列識別子をパラメータセットに符号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0093】
前記表2を参照すると、符号化対象量子化行列の参照量子化行列識別子を指示するscaling_list_pred_matrix_id_deltaを利用してパラメータセットに符号化することができる。このとき、符号化対象量子化行列を指示するmatrixIDと参照量子化行列を指示するRefMatrixIDを利用して量子化行列識別子(scaling_list_pred_matrix_id_delta)を決定することができる。例えば、数式1のように量子化行列識別子(scaling_list_pred_matrix_id_delta)を決定することができる。
【0095】
符号化対象量子化行列の係数値を参照量子化行列の係数値と同一に決定する方法は、RefMatrixIDが指示する参照量子化行列を符号化対象量子化行列の参照量子化行列に決定し、参照量子化行列の係数値を符号化対象量子化行列の係数値に複写する量子化行列予測方法である。
【0096】
他の例として、量子化行列の予測方法が、量子化行列間予測のために、参照量子化行列又は基本行列と同じ係数値を有するように符号化対象量子化行列を決定した場合(例えば、scaling_list_pred_mode_flag=0)の場合、符号化対象量子化行列の参照量子化行列識別子と基本行列使用可否を指示する情報をパラメータセットに符号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0097】
前記表2を参照すると、符号化対象量子化行列の係数値を参照量子化行列の係数値と同じ値に決定した場合、又は符号化対象量子化行列の係数値を基本行列の係数値と同じ値に決定した場合、符号化対象量子化行列の参照量子化行列識別子を指示するscaling_list_pred_matrix_id_deltaを利用してパラメータセットに符号化することができる。このとき、符号化対象量子化行列を指示するmatrixIDと参照量子化行列及び基本行列を指示するRefMatrixIDを利用して量子化行列識別子(scaling_list_pred_matrix_id_delta)を決定することができる。例えば、数式2のように量子化行列識別子(scaling_list_pred_matrix_id_delta)を決定することができる。
【0099】
符号化対象量子化行列の係数値を符号化器及び復号化器で予め決められた基本行列の係数値と同じ値に決定した場合、RefMatrixID値とmatrixID値を同じにし、scaling_list_pred_matrix_id_delta値を0に符号化することができる。このとき、基本行列は、sizeIDとmatrixIDが指示する基本行列を意味する。
【0100】
符号化対象量子化行列の係数値を参照量子化行列の係数値と同じ値に決定した場合、scaling_list_pred_matrix_id_delta値を0でない値に符号化することによって、RefMatrixID値とmatrixID値が同じでないようにする。
【0101】
他の例として、量子化行列の予測方法が、量子化行列内の係数を予測符号化するために、量子化行列をスキャンしてDPCMと指数−ゴロムコードを使用することに決定した場合(例えば、scaling_list_pred_mode_flag=1)の場合、量子化行列内で以前に符号化された量子化行列係数値と現在符号化対象量子化行列係数値との間の差分値をパラメータセットに符号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0102】
表5は、量子化行列内の係数を予測符号化するためのパラメータセットの構文要素を示す一例である。
【0104】
表5を参照すると、符号化対象量子化行列の大きさが16×16(sizeID=2)又は32×32(sizeID=3)の場合、DC行列係数値を示すscaling_list_dc_coef_minus8をパラメータセットに符号化することができる。scaling_list_dc_coef_minus8の値は、8ビットで表現することができる−7〜247の値に限定されることができ、−7〜247の値に符号を有する指数−ゴロムコード(Signed Exponental−Golomb code)を利用して符号化することができる。
【0105】
または、量子化行列内で以前に符号化された量子化行列係数値と現在符号化対象量子化行列係数値との間の差分値を示すscaling_list_delta_coefをパラメータセットに符号化することができる。例えば、基本行列を使用する場合、scaling_list_delta_coefを1個の値のみ符号化することができる。または、4×4大きさの量子化行列を符号化する場合、4×4大きさの量子化行列内の係数の個数である総16個の値をscaling_list_delta_coefを利用して符号化することができる。または、8×8大きさ以上の変換係数ブロックに使用する量子化行列を符号化する場合、8×8大きさの量子化行列内の係数の個数である総64個の値をscaling_list_delta_coefを利用して符号化することができる。量子化行列内の係数間の差分値(scaling_list_delta_coef)を利用して量子化行列係数を予測符号化する方法は、
図5乃至
図13を参照して詳細に後述する。
【0106】
一方、scaling_list_dc_coef_minus8又はnextCoefの計算に使われるscaling_list_delta_coefを利用して基本行列使用可否を符号化することができる。例えば、scaling_list_dc_coef_minus8の値を−8に符号化して基本行列を使用することを復号化器に指示することができる。または、1番目のnextCoef値が0になるようにscaling_list_delta_coefを符号化して基本行列を使用することを復号化器に指示することもできる。
【0107】
図5は、本発明の実施例に係る量子化行列係数を予測符号化する方法を概略的に示す流れ図である。
図5の方法は、前述した
図1の映像符号化装置で実行されることができる。また、
図5の方法は、前述した
図4のステップS440において、量子化行列内の係数間の差分値(scaling_list_delta_coef)に基づいて量子化行列係数を予測して符号化する過程である。
【0108】
図5を参照すると、符号化装置は、量子化行列係数をスキャンする(S510)。即ち、符号化装置は、2次元量子化行列内の係数を1次元形態の係数配列に整列するためのスキャンを実行する。
【0109】
図6乃至
図13は、量子化行列係数スキャン方法の実施例を示す。
【0110】
図6は、本発明の実施例によって4×4及び8×8大きさの量子化行列に適用されることができる対角スキャン(diagonal scan)の一例を示す。
【0111】
図6に示すように、4×4及び8×8大きさの2次元量子化行列内の係数を対角スキャンを使用して1次元形態の係数配列に整列することができる。このとき、対角スキャン方向は、
図6のように左下方から右上方であってもよい。または、右上方から左下方であってもよい。スキャン方向が左下方から右上方の場合、右上方スキャン(up−right scan、又はアップライトスキャン)と呼ばれる。または、スキャン方向が右上方から左下方の場合、左下方スキャン(down−left scan、又はダウンレフトスキャン)と呼ばれる。
図6に示す対角スキャンは、右上方スキャンの例を示している。
【0112】
図7は、本発明の実施例によって4×4及び8×8大きさの量子化行列に適用されることができる水平スキャン(horizontal scan)の一例を示す。
【0113】
図7に示すように、4×4及び8×8大きさの2次元量子化行列内の係数を水平スキャンを使用して1次元形態の係数配列に整列することができる。水平スキャンは、2次元量子化行列内の各行に対して最初の行から最後の行まで順次にスキャンし、各行内では左から右へ係数をスキャンする方式である。
【0114】
図8は、本発明の実施例によって4×4及び8×8大きさの量子化行列に適用されることができる垂直スキャン(vertical scan)の一例を示す。
【0115】
図8に示すように、4×4及び8×8大きさの2次元量子化行列内の係数を垂直スキャンを使用して1次元形態の係数配列に整列することができる。垂直スキャンは、2次元量子化行列内の各列に対して最初の列から最後の列まで順次にスキャンし、各列内では上から下へ係数をスキャンする方式である。
【0116】
図9は、本発明の実施例によって8×8大きさの量子化行列に適用されることができるブロックベースの対角スキャン(block−based diagonal scan)の一例を示す。
【0117】
図9に示すように、8×8大きさの2次元量子化行列内の係数を4×4大きさのブロックベースの対角スキャンを使用して1次元形態の係数配列に整列することができる。このとき、各4×4大きさのブロック内の係数に対して対角スキャンを実行し、また、各4×4大きさのブロック間にも対角スキャン方向を適用することができる。
【0118】
対角スキャン方向は、
図9のように左下方から右上方であってもよい。または、右上方から左下方であってもよい。
図9に示すブロックベースの対角スキャンは、4×4大きさのブロック単位に右上方スキャン(up−right scan)する方法の例を示している。
【0119】
図10は、本発明の実施例によって8×8大きさの量子化行列に適用されることができるブロックベースの水平スキャン(block−based horizontal scan)の一例を示す。
【0120】
図10に示すように、8×8大きさの2次元量子化行列内の係数を4×4大きさのブロックベースの水平スキャンを使用して1次元形態の係数配列に整列することができる。このとき、各4×4大きさのブロック内の係数に対して水平スキャンを実行し、また、各4×4大きさのブロック間にも水平スキャン方向を適用することができる。
【0121】
図11は、本発明の実施例によって8×8大きさの量子化行列に適用されることができるブロックベースの垂直スキャン(block−based vertical scan)の一例を示す。
【0122】
図11に示すように、8×8大きさの2次元量子化行列内の係数を4×4大きさのブロックベースの垂直スキャンを使用して1次元形態の係数配列に整列することができる。このとき、各4×4大きさのブロック内の係数に対して垂直スキャンを実行し、また、各4×4大きさのブロック間にも垂直スキャン方向を適用することができる。
【0123】
図12は、本発明の実施例によって8×8大きさの量子化行列に適用されることができるブロックベースの水平スキャン(block−based horizontal scan)の他の例を示す。
【0124】
図12に示すように、8×8大きさの2次元量子化行列内の係数を8×2大きさのブロックベースの水平スキャンを使用して1次元形態の係数配列に整列することができる。このとき、各8×2大きさのブロック内の係数に対して水平スキャンを実行し、また、各8×2大きさのブロック間にも水平スキャン方向を適用することができる。
【0125】
図13は、本発明の実施例によって8×8大きさの量子化行列に適用されることができるブロックベースの垂直スキャン(block−based vertical scan)の他の例を示す。
【0126】
図13に示すように、8×8大きさの2次元量子化行列内の係数を2×8大きさのブロックベースの垂直スキャンを使用して1次元形態の係数配列に整列することができる。このとき、2×8大きさのブロック内の係数に対して垂直スキャンを実行し、また、各2×8大きさのブロック間にも垂直スキャン方向を適用することができる。
【0127】
一方、ブロック(block)は、特定ブロック大きさから分割された下位ブロック(sub block、又は副ブロック又はサブブロック)であってもよい。もし、前述したブロックベースのスキャンが使われる場合、特定ブロック大きさ内のサブブロック間にも対角スキャン、垂直スキャン、水平スキャンなどのようなスキャン方式を利用してサブブロックをスキャンすることができる。例えば、
図9のようにブロックベースの対角スキャンが使われる場合、8×8大きさのブロックを4個の4×4大きさのサブブロックに分割した後、4×4大きさのサブブロック間に対角スキャンを利用してスキャンし、各4×4大きさのサブブロック内の係数も対角スキャンを利用してスキャンすることができる。
【0128】
前述した
図6乃至
図13の(a)に示すスキャン方法は、4×4変換係数ブロックのための4×4大きさの量子化行列に使われることができ、
図6乃至
図13の(b)に示すスキャン方法は、8×8/16×16/32×32変換係数ブロックのための8×8大きさ以上の量子化行列に使われることができる。前述した
図6乃至
図13に示すスキャン方法は、最大8×8大きさの量子化行列に対して適用されたが、8×8より大きい大きさの量子化行列に対しても同一に適用されることができる。また、前述した
図6乃至
図13に示すスキャン方法は、正方形(square)形態の量子化行列だけでなく、非正方形(non−square)形態の量子化行列にも適用されることができる。
【0129】
また、
図5を参照すると、符号化装置は、スキャンされた量子化行列係数に基づいて量子化行列係数間の差分値(例えば、scaling_list_delta_coef)を生成する(S520)。即ち、符号化装置は、前述したスキャン方法によって1次元形態の係数配列内で現在量子化行列係数と以前量子化行列係数との間の差分値(例えば、scaling_list_delta_coef)を生成する。このとき、前記差分値は、DPCMを利用して計算された値である。
【0130】
現在量子化行列係数は、1次元形態の係数配列上で現在符号化対象量子化行列係数であってもよく、以前量子化行列係数は、1次元形態の係数配列上で現在量子化行列係数の直前配列順序に位置する係数であってもよい。また、1次元形態の係数配列内の最初の係数は、予測対象になる以前量子化行列係数がないため、所定の定数値を利用して差分値を生成することができる。所定の定数値は、例えば、1〜255の値であり、特に、8又は16である。
【0131】
符号化装置は、現在量子化行列係数と以前量子化行列係数との間の差分値(例えば、scaling_list_delta_coef)を符号化する(S530)。
【0132】
例えば、符号化装置は、前記差分値(例えば、scaling_list_delta_coef)を指数−ゴロムコードに符号化することができる。前記差分値(例えば、scaling_list_delta_coef)が符号(sign)情報を有する場合、前記差分値(例えば、scaling_list_delta_coef)は、符号を有する指数−ゴロムコードに符号化されることができる。このとき、前記差分値(例えば、scaling_list_delta_coef)は、−128〜127の値に限定されることができ、−128〜127の値に符号化されることができる。
【0133】
図14は、本発明の実施例に係る量子化行列の復号化方法を概略的に示す流れ図である。
図14の方法は、前述した
図2の映像復号化装置で実行されることができる。
【0134】
図14を参照すると、復号化装置は、量子化行列の存在有無に対する情報を復号化することができる(S1410)。例えば、復号化装置は、量子化行列の存在有無を示す情報をパラメータセットで復号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0135】
一例として、復号化装置は、符号化器から送信されたビットストリーム内の量子化行列の存在有無を示すフラグ(例えば、表2に示すscaling_list_present_flag)をパラメータセットで復号化することができる。もし、scaling_list_present_flag値が0の場合、量子化行列が存在しないことを意味し、scaling_list_present_flag値が1の場合、符号化された量子化行列が存在することを意味する。このとき、量子化行列が存在しない場合(scaling_list_present_flag=0)、全ての量子化行列を基本行列に決定することができる。
【0136】
復号化装置は、量子化行列の予測方法に対する情報を復号化することができる(S1420)。例えば、復号化装置は、量子化行列の予測方法に対する情報をパラメータセットで復号化し、量子化行列の予測方法の種類に対して決定することができる。このとき、パラメータセットは、適応パラメータセットである。
【0137】
一例として、復号化装置は、符号化器から送信された量子化行列予測方法に対する情報を示すフラグ(例えば、表2に示すscaling_list_pred_mode_flag)をパラメータセットで復号化することができる。もし、scaling_list_pred_mode_flag値が1の場合、量子化行列内の係数を予測するために、量子化行列係数を指数−ゴロムコード、逆DPCM(inverse DPCM)、スキャンを利用して復号化することができる。scaling_list_pred_mode_flag値が0の場合、量子化行列間予測のために、復号化対象量子化行列係数値を参照量子化行列係数値と同じ値を有するように決定し、又は復号化対象量子化行列係数値を基本行列係数値と同じ値を有するように決定することができる。このとき、量子化行列間の係数値が同じであるというのは、特定量子化行列係数値を復号化対象量子化行列係数値に複写する量子化行列予測方法である。
【0138】
復号化装置は、量子化行列の予測方法に対する情報に基づいて量子化行列間予測のために、量子化行列識別子を復号化し、又は量子化行列内の係数を予測復号化することができる(S1430)。
【0139】
一例として、量子化行列の予測方法が量子化行列間予測のために、参照量子化行列と同じ係数値を有するように復号化対象量子化行列を決定した場合(例えば、scaling_list_pred_mode_flag=0)の場合、復号化対象量子化行列の参照量子化行列識別子をパラメータセットで復号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0140】
前記表2の構文要素の例のように、復号化対象量子化行列の参照量子化行列識別子を指示する情報(scaling_list_pred_matrix_id_delta)をパラメータセットで復号化することができる。このとき、参照量子化行列識別子を指示するscaling_list_pred_matrix_id_deltaと復号化対象量子化行列を指示するmatrixIDを利用し、復号化対象量子化行列の参照量子化行列(RefMatrixID)を決定することができる。例えば、数式3のように参照量子化行列(RefMatrixID)を決定することができる。
【0142】
前記数式3のような方法により決定されたRefMatrixIDが指示する量子化行列を復号化対象量子化行列の参照量子化行列に決定し、復号化対象量子化行列係数値を参照量子化行列係数値と同一に設定することができる。復号化対象量子化行列係数値を参照量子化行列係数値と同一に設定することは、RefMatrixIDが指示する参照量子化行列係数値を復号化対象量子化行列係数値に複写する量子化行列予測方法である。
【0143】
他の例として、量子化行列の予測方法が量子化行列間予測のために、参照量子化行列又は基本行列と同じ係数値を有するように復号化対象量子化行列を決定した場合(例えば、scaling_list_pred_mode_flag=0)の場合、復号化対象量子化行列の参照量子化行列識別子と基本行列使用可否を指示する情報をパラメータセットで復号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0144】
前記表2の構文要素の例のように、復号化対象量子化行列の参照量子化行列識別子と基本行列使用可否を指示する情報(scaling_list_pred_matrix_id_delta)をパラメータセットで復号化することができる。このとき、参照量子化行列識別子を指示するscaling_list_pred_matrix_id_deltaと復号化対象量子化行列を指示するmatrixIDを利用し、復号化対象量子化行列の参照量子化行列(RefMatrixID)を決定することができる。例えば、数式4のように参照量子化行列(RefMatrixID)を決定することができる。
【0146】
RefMatrixID値がmatrixID値と同じ場合、復号化対象量子化行列係数値は、符号化器及び復号化器で予め決められた基本行列係数値と同一に決定される。このとき、基本行列は、sizeIDとmatrixIDが指示する基本行列を意味する。そして、scaling_list_pred_matrix_id_delta値が0の場合、RefMatrixID値とmatrixID値は同じであることを意味する。
【0147】
RefMatrixID値がmatrixID値と同じでない場合、RefMatrixIDが指示する量子化行列を復号化対象量子化行列の参照量子化行列に決定し、復号化対象量子化行列係数値を参照量子化行列係数値と同一に設定する。復号化対象量子化行列係数値を参照量子化行列係数値と同一に設定することは、RefMatrixIDが指示する参照量子化行列係数値を復号化対象量子化行列係数値に複写する量子化行列予測方法である。
【0148】
他の例として、量子化行列の予測方法が量子化行列内の係数を予測復号化するために、指数−ゴロムコード、逆DPCM、スキャンを利用することに決定した場合(例えば、scaling_list_pred_mode_flag=1)の場合、量子化行列内で以前に復号化された量子化行列係数値と現在復号化対象量子化行列係数値との間の差分値をパラメータセットで復号化することができる。このとき、パラメータセットは、適応パラメータセットである。
【0149】
前記表5の構文要素の例のように、復号化対象量子化行列の大きさが16×16(sizeID=2)又は32×32(sizeID=3)の場合、DC行列係数値を示す情報(scaling_list_dc_coef_minus8)をパラメータセットで復号化することができる。scaling_list_dc_coef_minus8の値は、8ビットで表現することができる−7〜247の値に限定されることができ、符号を有する指数−ゴロムコードを利用して−7〜247の値に復号化することができる。このとき、DC行列係数値は、次(scaling_list_dc_coef_minus8+8)の値に計算され、前記計算された値は、1〜255の値である。
【0150】
または、前記表5の構文要素の例のように、量子化行列内で以前に復号化された量子化行列係数値と現在復号化対象量子化行列係数値との間の差分値を示す情報(scaling_list_delta_coef)をパラメータセットで復号化することができる。例えば、基本行列を使用する場合、scaling_list_delta_coefが1個のみ復号化されることができる。または、4×4大きさの量子化行列を復号化する場合、scaling_list_delta_coefは、4×4大きさの量子化行列内の係数の個数である総16個の値が復号化されることができる。または、8×8大きさ以上の変換係数ブロックに使用する量子化行列を復号化する場合、scaling_list_delta_coefは、8×8大きさの量子化行列内の係数の個数である総64個の値が復号化されることができる。量子化行列内の係数間の差分値(scaling_list_delta_coef)を利用して量子化行列係数を予測復号化する方法は、
図17を参照して詳細に後述する。
【0151】
一方、scaling_list_dc_coef_minus8又はnextCoefの計算に使われるscaling_list_delta_coefを利用して基本行列使用可否を決定することができる。例えば、scaling_list_dc_coef_minus8の値が−8に復号化されると、復号化対象量子化行列を基本行列に決定することができ、scaling_list_delta_coefを復号化して計算された1番目のnextCoef値が0の場合、復号化対象量子化行列を基本行列に決定することができる。
【0152】
復号化装置は、量子化行列を復元することができる(S1440)。このとき、復号化装置は、アップサンプリング、補間、DC行列係数代替、又はサブサンプリングなどを利用して2次元量子化行列に復元することもできる。
【0153】
一例として、4×4、8×8、16×16、32×32などの正方形変換係数ブロックに使われる量子化行列の場合、整列された2次元量子化行列をそのまま量子化/逆量子化時に使用し、又は整列された2次元量子化行列をアップサンプリングして復元した後、量子化/逆量子化時に使用することができる。
【0154】
4×4大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、整列された2次元4×4大きさの量子化行列(QM)をそのまま利用することができる。これは数式5のように示すことができる。
【0156】
8×8大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、整列された2次元8×8大きさの量子化行列(QM)をそのまま利用することができる。これは数式6のように示すことができる。
【0158】
16×16大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、整列された2次元8×8大きさの量子化行列(QM)をアップサンプリングすることで、16×16大きさの量子化行列に復元されることができる。このとき、量子化行列(RQM)内のDC位置、即ち、(0,0)位置に存在する量子化行列係数は、DC行列係数値である(scaling_list_dc_coef_minus8+8)の値に代替されることができる。これは数式7のように示すことができる。
【0160】
32×32大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、整列された2次元8×8大きさの量子化行列(QM)をアップサンプリングすることで、32×32大きさの量子化行列に復元されることができる。このとき、量子化行列(RQM)内のDC位置、即ち、(0,0)位置に存在する量子化行列係数は、DC行列係数値である(scaling_list_dc_coef_minus8+8)の値に代替されることができる。これは数式8のように示すことができる。
【0162】
量子化行列をアップサンプリングする方法は、
図15に示すように実行されることができる。例えば、
図15に示すように、8×8大きさの量子化行列を16×16大きさの量子化行列にアップサンプリングする場合、16×16大きさの量子化行列内でアップサンプリングされなければならない位置の係数は、最も近い隣接係数から複写されることができる。もちろん、8×8大きさの量子化行列を利用して32×32大きさの量子化行列にアップサンプリングする場合に対しても
図15のような方法を同一に適用することができる。
【0163】
このとき、前記のように最も近い隣接係数から複写するアップサンプリング方法は、最近接隣接補間法(nearest neighbor interpolation)又は0次補間(zeroth order interpolation)方法と呼ばれる。
【0164】
他の例として、16×4、4×16、32×8、8×32などの非正方形変換係数ブロックに使われる量子化行列の場合、整列された2次元量子化行列をサブサンプリング(又は、ダウンサンプリング)して復元した後、量子化/逆量子化時に使用することができる。
【0165】
16×4大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、16×16大きさの量子化行列(QM)をサブサンプリングして16×4大きさの量子化行列に復元されることができる。
【0166】
ここで、量子化行列をサブサンプリングする方法は、
図16に示すように実行されることができる。例えば、
図16の(a)に示すように、16×16大きさの量子化行列を16×4大きさの量子化行列にサブサンプリングする場合、16×16大きさの復元された量子化行列をy位置、即ち、行方向(垂直方向)に対してサブサンプリングを実行することで、16×4大きさの量子化行列を誘導することができる。
【0167】
このような16×16大きさの量子化行列をサブサンプリングして16×4大きさの量子化行列に復元する過程は、数式9のように示すことができる。
【0169】
4×16大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、16×16大きさの量子化行列(QM)をサブサンプリングして4×16大きさの量子化行列に復元されることができる。
【0170】
ここで、量子化行列をサブサンプリングする方法は、
図16に示すように実行されることができる。例えば、
図16の(b)に示すように、16×16大きさの量子化行列を4×16大きさの量子化行列にサブサンプリングする場合、16×16大きさの復元された量子化行列をx位置、即ち、列方向(水平方向)に対してサブサンプリングを実行することで、4×16大きさの量子化行列を誘導することができる。
【0171】
このような16×16大きさの量子化行列をサブサンプリングして4×16大きさの量子化行列に復元する過程は、数式10のように示すことができる。
【0173】
32×8大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、32×32大きさの量子化行列(QM)をサブサンプリングして32×8大きさの量子化行列に復元されることができる。このとき、
図16の(a)に示すような方式により、32×32大きさの復元された量子化行列をy位置、即ち、行方向(垂直方向)に対してサブサンプリングを実行することで、32×8大きさの量子化行列を誘導することができる。
【0174】
このような32×32大きさの量子化行列をサブサンプリングして32×8大きさの量子化行列に復元する過程は、数式11のように示すことができる。
【0176】
8×32大きさの変換係数ブロックの逆量子化時に使われる量子化行列(RQM)は、32×32大きさの量子化行列(QM)をサブサンプリングして8×32大きさの量子化行列に復元されることができる。このとき、
図16の(b)に示すような方式により、32×32大きさの復元された量子化行列をx位置、即ち、列方向(水平方向)に対してサブサンプリングを実行することで、8×32大きさの量子化行列を誘導することができる。
【0177】
このような32×32大きさの量子化行列をサブサンプリングして8×32大きさの量子化行列に復元する過程は、数式12のように示すことができる。
【0179】
一方、基本行列に対してもアップサンプリング又はサブサンプリングを実行して量子化/逆量子化時に使用することができる。例えば、8×8大きさの基本行列をアップサンプリングすることで、16×16又は32×32大きさの量子化行列に復元されることができる。
【0180】
16×16大きさの変換係数ブロックの逆量子化時に使われる基本行列(RQM)は、
図15に示すような方式により、8×8大きさの基本行列(DQM)をアップサンプリングすることで、16×16大きさの量子化行列に復元されることができる。これは数式13のように示すことができる。
【0182】
32×32大きさの変換係数ブロックの逆量子化時に使われる基本行列(RQM)は、
図15に示すような方式により、8×8大きさの基本行列(DQM)をアップサンプリングすることで、32×32大きさの量子化行列に復元されることができる。これは数式14のように示すことができる。
【0184】
前記のように、8×8大きさの基本行列に対してアップサンプリングを実行することによって16×16又は32×32大きさの量子化行列に復元する場合、符号化器及び復号化器に基本行列を格納するために必要なメモリ空間を節約することができる。即ち、16×16及び/又は32×32大きさの基本行列を格納する代わりに8×8大きさの基本行列をメモリに格納するため、符号化器及び復号化器の格納空間を節約することができる。
【0185】
前記数式5乃至数式14において、xは、2次元量子化行列内の係数のx座標を示す値であり、yは、2次元量子化行列内の係数のy座標を示す値である。
【0186】
図17は、本発明の実施例に係る量子化行列係数を予測復号化する方法を概略的に示す流れ図である。
図17の方法は、前述した
図2の映像復号化装置で実行されることができる。また、
図17の方法は、前述した
図14のステップS1430において、量子化行列内の係数間の差分値(scaling_list_delta_coef)に基づいて量子化行列係数を予測して復号化する過程である。
【0187】
図17を参照すると、復号化装置は、量子化行列係数の差分値(例えば、scaling_list_delta_coef)を復号化する(S1710)。
【0188】
例えば、復号化装置は、量子化行列係数の差分値(例えば、scaling_list_delta_coef)を指数−ゴロムコードを利用して復号化することができる。
【0189】
前記差分値(例えば、scaling_list_delta_coef)は、−128〜127の限定された値である。このとき、前記差分値(例えば、scaling_list_delta_coef)は、符号(sign)情報を有するため、符号を有する指数−ゴロムコードを利用して−128〜127の値に復号化されることができる。
【0190】
復号化装置は、復号化された前記差分値(例えば、scaling_list_delta_coef)に基づいて量子化行列係数を生成する(S1720)。
【0191】
このとき、復号化された前記差分値(例えば、scaling_list_delta_coef)は、復号化された順序通りに1次元形態の係数配列又は2次元形態の行列に格納されることができる。したがって、復号化装置は、1次元形態の係数配列又は2次元形態の行列内で現在量子化行列係数の復号化された差分値(例えば、scaling_list_delta_coef)と以前量子化行列係数を加えて量子化行列係数を復元することができる。このとき、復元された量子化行列係数は、逆DPCMを利用して計算された値である。
【0192】
現在量子化行列係数は、復元される1次元形態の量子化配列又は2次元行列内で現在復号化対象量子化行列係数であり、以前量子化行列係数は、復元される1次元形態の量子化配列又は2次元行列内で現在量子化行列係数の直前配列順序又は行列順序に位置する係数であり、復元された値を有することができる。
【0193】
また、量子化行列の1番目の係数は、予測対象になる以前量子化行列係数がないため、所定の定数値を利用して復元されることができる。所定の定数値は、例えば、1〜255の値であり、特に、8又は16である。したがって、復元された量子化行列係数は、1〜255の値である。
【0194】
例えば、表5のように、復号化装置は、復号化された差分値(例えば、scaling_list_delta_coef)と以前量子化行列係数を加えて現在量子化行列係数であるnextCoef又はscalingList[i]を復元することができる。ここで、iは、1次元形態の量子化配列内で位置(順序)を指示するためのインデックス値である。
【0195】
復号化装置は、復元された量子化行列係数をスキャンして量子化行列に整列する(S1730)。
【0196】
例えば、前述した
図6乃至
図13に示すような対角スキャン、水平スキャン、垂直スキャン、ブロックベースの対角スキャン、ブロックベースの水平スキャン、ブロックベースの垂直スキャンなどを使用することができる。前記スキャン方法に対しては
図6乃至
図13を参照して詳述したため、詳細な説明は省略する。ここで、復号化装置では、符号化装置の量子化行列スキャンと反対に、復元された量子化行列係数をスキャンして2次元量子化行列に整列することができる。このとき、復元された量子化行列係数は、1次元配列に存在する状態で2次元量子化行列に整列されることがきる。
【0197】
一例として、復号化装置では、符号化装置でからシグナリングされたスキャン方法を利用して量子化行列係数をスキャンすることができる。このとき、符号化装置では、前述した
図6乃至
図13に示すようなスキャン方法のうち一つを利用して量子化行列係数をスキャンした後、この情報をシグナリングすることができる。または、復号化装置では、所定の条件によって量子化行列係数のスキャン方法を決定することもできる。
【0198】
一方、前述した本発明の実施例に係る量子化行列の復号化過程では、ジグザグスキャンの初期化過程がなくなることができる。
【0199】
例えば、8×8、16×16、32×32大きさの変換係数ブロックに使われることができる符号化器と復号化器で予め定義された8×8大きさの基本行列に、前述した本発明の一実施例に係るブロックベースの対角スキャン方法を適用すると、表6のような配列索引によって量子化行列係数が再整列されることができる。表6は、変換係数ブロックの大きさ、予測モード、色成分による8×8大きさの基本行列の係数値を示す。
【0201】
表6を参照すると、iは、スキャン順序を示し、ScalingList[sizeID][matrixID][i]は、sizeID、matrixID、iが指示する基本行列係数を示す。sizeIDは、前述した表3のように変換係数ブロックの大きさ又は量子化行列の大きさを指示する値であり、matrixIDは、前述した表4のように予測モード及び色成分による量子化行列識別子を指示する値である。
【0202】
以下、本発明の一実施例に係るブロックベースの対角スキャンを適用する場合、ScalingList[sizeID][matrixID][i]を利用して4×4、8×8、16×16、32×32大きさの量子化行列を復元する方法に対して説明する。このとき、復元された量子化行列は、ScalingFactor[sizeId][MatrixID][x][y]で表すことができ、sizeIDとMatrixIDによるScalingFactorの配列を意味する。
【0203】
4×4大きさの量子化行列の元素ScalingFactor[0][MatrixID][0][]は、数式15のように誘導されることができる。
【0205】
ここで、x=DiagScan[i][0]であり、y=DiagScan[i][1]である。このとき、DiagScan[][]は、前述した
図9の(a)に示すような対角スキャン方法であり、右上方対角スキャニング配列初期化過程(Up−right diagonal scanning array initialization process)にブロック幅(blkWidth)値として4とブロック高さ(blkHeight)値として4を入力して生成された配列である。
【0206】
8×8大きさの量子化行列の元素ScalingFactor[1][MatrixID][0][]は、数式16のように誘導されることができる。
【0208】
ここで、x=DiagScan[i][0]であり、y=DiagScan[i][1]である。このとき、DiagScan[][]は、前述した
図9の(b)に示すようなブロックベースの対角スキャン方法であり、右上方対角スキャニング配列初期化過程(Up−right diagonal scanning array initialization process)にブロック幅(blkWidth)値として8とブロック高さ(blkHeight)値として8を入力して生成された配列である。
【0209】
16×16大きさの量子化行列の元素ScalingFactor[2][MatrixID][0][]は、数式17のように誘導されることができる。そして、16×16大きさの量子化行列内の(0,0)位置に存在する量子化行列の元素は、数式18のように誘導されることができる。
【0211】
ここで、x=DiagScan[i][0]であり、y=DiagScan[i][1]である。このとき、DiagScan[][]は、前述した
図9の(b)に示すようなブロックベースの対角スキャン方法であり、右上方対角スキャニング配列初期化過程(Up−right diagonal scanning array initialization process)にブロック幅(blkWidth)値として8とブロック高さ(blkHeight)値として8を入力して生成された配列である。
【0213】
32×32大きさの量子化行列の元素ScalingFactor[3][MatrixID][0][]は、数式19のように誘導されることができる。そして、32×32大きさの量子化行列内の(0,0)位置に存在する量子化行列の元素は、数式20のように誘導されることができる。
【0215】
ここで、x=DiagScan[i][0]であり、y=DiagScan[i][1]である。このとき、DiagScan[][]は、前述した
図9の(b)に示すようなブロックベースの対角スキャン方法であり、右上方対角スキャニング配列初期化過程(Up−right diagonal scanning array initialization process)にブロック幅(blkWidth)値として8とブロック高さ(blkHeight)値として8を入力して生成された配列である。
【0217】
前述した右上方対角スキャニング配列初期化過程(Up−right diagonal scanning array initialization process)は、下記のように実行されることができる。
【0218】
ここで、入力は、ブロック幅(blkWidth)とブロック高さ(blkHeight)である。出力は、配列DiagScan[sPos][sComp]である。配列索引sPosは、0〜(blkWidthSize*blkHeightSize)−1の値であり、スキャン位置を示す。例えば、配列索引sCompが0の場合、水平成分を示し、配列索引sCompが1の場合、垂直成分を示す。ブロック幅(blkWidth)とブロック高さ(blkHeight)の値によって、配列DiagScan[sPos][sComp]は、下記のように誘導されることができる。
【0219】
ブロック幅(blkWidth)が8より小さく、且つブロック高さ(blkHeight)が8より小さい場合、表7のように右上方対角スキャニング配列初期化過程が実行されて配列DiagScan[sPos][sComp]が誘導されることができる。そうでない場合(ブロック幅(blkWidth)が4より大きい、又はブロック高さ(blkHeight)が4より大きい場合)、表8のように右上方対角スキャニング配列初期化過程が実行されて配列DiagScan[sPos][sComp]が誘導されることができる。
【0222】
以上、本発明の一実施例に係るブロックベースの対角スキャンを適用する場合、4×4、8×8、16×16、32×32大きさの量子化行列を復元する方法に対して説明したが、本発明は、ブロックベースの対角スキャンにのみ限定されるものではなく、前述した
図6乃至
図13に示すような対角スキャン、水平スキャン、垂直スキャン、ブロックベースの対角スキャン、ブロックベースの水平スキャン、ブロックベースの垂直スキャンなどを使用して4×4、8×8、16×16、32×32大きさの量子化行列を復元することができる。また、このような方法により復元された量子化行列は、符号化器で量子化/逆量子化時に使われ、復号化器で逆量子化時に使われる。
【0223】
前述した実施例によると、符号化器において、量子化の際、変換係数に量子化行列を使用して変換係数レベルを生成し、復号化器において、逆量子化の際、変換係数レベルに量子化行列を使用して変換係数を生成する。しかし、本発明では変換係数と変換係数レベルを両方とも変換係数と通称して表現した。
【0224】
前述した実施例において、方法は、一連のステップ又はブロックで流れ図に基づいて説明されているが、本発明は、ステップの順序に限定されるものではなく、あるステップは、前述と異なるステップと、異なる順序に又は同時に発生することができる。また、当該技術分野において通常の知識を有する者であれば、流れ図に示すステップが排他的でなく、他のステップが含まれている、又は流れ図の一つ又はそれ以上のステップが本発明の範囲に影響を及ぼさずに削除可能であることを理解することができる。
【0225】
以上の説明は、本発明の技術思想を例示的に説明したものに過ぎず、本発明が属する技術分野において通常の知識を有する者であれば、本発明の本質的な特性から外れない範囲内で多様な修正及び変形が可能である。したがって、本発明に開示された実施例は、本発明の技術思想を限定するためのものではなく、説明するためのものであり、このような実施例によって本発明の技術思想の範囲が限定されるものではない。本発明の保護範囲は、特許請求の範囲によって解釈されなければならず、それらと同等な範囲内にある全ての技術思想は、本発明の権利範囲に含まれると解釈されなければならない。