(57)【要約】  ビデオ信号復号化装置は、予め設定された一つ以上の条件を満足すれば、ビデオ信号のビットストリームからコーディングユニットの２次変換に関するシンタックス要素をパージングし、前記パージングされたシンタックス要素に基づいて、前記コーディングユニットに含まれる変換ブロックに前記２次変換が適用されるのか否かを確認し、前記変換ブロックに前記２次変換が適用されれば、前記変換ブロックを構成する一つ以上のサブブロックのうち一つである第１サブブロックの一つ以上の係数に基づく２次逆変換を行って、前記第１サブブロックに対する一つ以上の逆変換係数を獲得し、前記一つ以上の逆変換係数に基づく１次逆変換を行って、前記変換ブロックに対する残差サンプルを獲得するプロセッサを含むことを特徴とする。
2021531669.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ信号復号化装置において、
プロセッサを含み、
前記プロセッサは、
予め設定された一つ以上の条件を満足すれば、ビデオ信号のビットストリーム（ｂｉｔｓｔｒｅａｍ）からコーディングユニットの２次変換に関するシンタックス要素をパージング（ｐａｒｓｉｎｇ）し、
前記パージングされたシンタックス要素に基づいて、前記コーディングユニットに含まれる変換ブロックに前記２次変換が適用されるのか否かを確認し、
前記変換ブロックに前記２次変換が適用されれば、前記変換ブロックを構成する一つ以上のサブブロックのうち一つである第１サブブロックの一つ以上の係数に基づく２次逆変換を行って、前記第１サブブロックに対する一つ以上の逆変換係数を獲得し、
前記一つ以上の逆変係数換に基づく１次逆変換を行って、前記変換ブロックに対する残差サンプルを獲得するが、
前記２次変換は、低帯域非−分離変換（Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙ  Ｎｏｎ−Ｓｅｐａｒａｂｌｅ  Ｔｒａｎｓｆｏｒｍ、ＬＦＮＳＴ）であり、
前記変換ブロックは垂直変換及び水平変換にそれぞれ分離されて行うことができる（ｓｅｐａｒａｂｌｅ）１次変換が適用されたブロックであり、
前記予め設定された一つ以上の条件のうち第１条件は、前記第１サブブロックの前記一つ以上の係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とするビデオ信号復号化装置。
【請求項２】
前記シンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含むことを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項３】
前記第１係数は予め設定されたスキャン順による最後の有効係数（ｌａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｅｆｆｉｃｉｅｎｔ）であり、
前記有効係数は０ではない（ｎｏｎ−ｚｅｒｏ）係数であることを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項４】
前記第１サブブロックは予め設定されたスキャン順による最初のサブブロックであることを特徴とする請求項１に記載の復号化装置。
【請求項５】
前記予め設定された一つ以上の条件のうち第２条件は、前記変換ブロックの幅（Ｗｉｄｔｈ）及び高さ（Ｈｅｉｇｈｔ）は４ピクセル以上であることを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項６】
前記予め設定された臨界値は０であることを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項７】
前記予め設定されたスキャン順は、右上側対角（ｕｐ−ｒｉｇｈｔ  ｄｉａｇｏｎａｌ）スキャン順ことを特徴とする請求項３に記載のビデオ信号復号化装置。
【請求項８】
前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ（ｆｌａｇ）値が特定値ではない場合であり、
変換スキップフラッグの値が特定値を有すれば、前記変換スキップフラッグは前記変換ブロックに前記１次変換及び前記２次変換が適用されないことを指示することを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項９】
前記予め設定された一つ以上の条件のうち第４条件は、前記第１サブブロックの前記一つ以上の係数のうち少なくとも一つの係数は０ではなく、
前記少なくとも一つの係数は、予め設定されたスキャン順による最初の位置を除いたところに存在する場合であることを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項１０】
前記コーディングユニットは複数のコーディングブロックで構成され、
前記複数のコーディングブロックそれぞれに対応する変換ブロックのうち少なくともいずれか一つでも前記予め設定された一つ以上の条件を満足すれば、前記２次変換に関するシンタックス要素はパージングされることを特徴とする請求項１に記載のビデオ信号復号化装置。
【請求項１１】
ビデオ信号符号化装置において、
プロセッサを含み、
前記プロセッサは、
コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行って、前記ブロックに対する複数個の１次変換係数を獲得し、
前記複数個の１次変換係数のうち一つ以上の係数に基づく２次変換を行って、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得し、
前記一つ以上の２次変換係数に対する情報、及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化してビットストリームを獲得するが、
前記２次変換は低帯域非−分離変換（ＬＦＮＳＴ）であり、
前記１次変換は垂直変換及び水平変換にそれぞれ分離されて行われることができ、
前記コーディングユニットの２次変換に関するシンタックス要素は、予め設定された一つ以上の条件を満足すれば符号化され、及び
前記予め設定された一つ以上の条件のうち第１条件は、前記一つ以上の２次変換係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とするビデオ信号符号化装置。
【請求項１２】
前記シンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含むことを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１３】
前記第１係数は予め設定されたスキャン順による最後の有効係数であり、
前記有効係数は０ではない係数であることを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１４】
前記第１サブブロックは予め設定されたスキャン順による最初のサブブロックであることを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１５】
前記予め設定された一つ以上の条件のうち第２条件は、１次変換ブロックの幅及び高さは４ピクセル以上であることを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１６】
前記予め設定された臨界値は０であることを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１７】
前記予め設定されたスキャン順は、右上側対角スキャン順ことを特徴とする請求項１３に記載のビデオ信号符号化装置。
【請求項１８】
前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ値が特定値ではない場合であり、
変換スキップフラッグの値が特定値を有すれば、前記変換スキップフラッグは前記ブロックに前記１次変換及び前記２次変換が適用されないことを指示することを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項１９】
前記予め設定された一つ以上の条件のうち第４条件は、
前記一つ以上の２次変換係数のうち少なくとも一つの係数は０ではなく、
前記少なくとも一つの係数は、予め設定されたスキャン順による最初の位置を除いたところに存在する場合であることを特徴とする請求項１１に記載のビデオ信号符号化装置。
【請求項２０】
ビットストリームを貯蔵するは非−一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ読取可能媒体（ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）において、
前記ビットストリームは、
コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行って、前記ブロックに対する複数個の１次変換係数を獲得するステップと、
前記複数個の１次変換係数のうち一つ以上の係数に基づく２次変換を行って、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得するステップと、
前記一つ以上の２次変換係数に対する情報、及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化するステップと、を含む符号化方法を介して符号化され、
前記２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）であり、
前記１次変換は垂直変換及び水平変換にそれぞれ分離されて行われることができ、
前記２次変換に関するシンタックス要素は、予め設定された一つ以上の条件を満足すれば符号化され、及び
前記予め設定された一つ以上の条件のうち第１条件は、前記一つ以上の２次変換係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とするコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はビデオ信号処理方法及び装置に関し、より詳しくは、ビデオ信号をエンコーディングするかデコーディングするビデオ信号処理方法及び装置に関する。
【背景技術】
【０００２】
圧縮符号化とは、デジタル化した情報を通信回線を介して伝送するか、貯蔵媒体に適合した形態に貯蔵するための一連の信号処理技術を意味する。圧縮符号化の対象としては音声、映像、文字などの対象が存在するが、特に映像を対象とする圧縮符号化を行う技術をビデオ映像圧縮と称する。ビデオ信号に対する圧縮符号化は、空間的な相関関係、時間的な相関関係、確率的な相関関係などを考慮して剰余情報を除去することで行われる。しかし、最近の多様なメディア及びデータ伝送媒体の発展によって、より高効率のビデオ信号処理方法及び装置が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、ビデオ信号のコーディング効率を上げることにある。
【０００４】
本発明は、２次変換を介したコーディング効率を上げるための目的を有する。
【課題を解決するための手段】
【０００５】
本明細書は、２次変換を利用するビデオ信号処理方法を提供する。
【０００６】
詳しくは、ビデオ信号復号化装置において、プロセッサを含み、前記プロセッサは、予め設定された一つ以上の条件を満足すれば、ビデオ信号のビットストリーム（ｂｉｔｓｔｒｅａｍ）からコーディングユニットの２次変換に関するシンタックス要素をパージング（ｐａｒｓｉｎｇ）し、前記パージングされたシンタックス要素に基づいて、前記コーディングユニットに含まれる変換ブロックに前記２次変換が適用されるのか否かを確認し、前記変換ブロックに前記２次変換が適用されれば、前記変換ブロックを構成する一つ以上のサブブロックのうち一つである第１サブブロックの一つ以上の係数に基づく２次逆変換を行って、前記第１サブブロックに対する一つ以上の逆変換係数を獲得し、前記一つ以上の逆変係数換に基づく１次逆変換を行って、前記変換ブロックに対する残差サンプルを獲得するが、前記２次変換は、低帯域非−分離変換（Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙ  Ｎｏｎ−Ｓｅｐａｒａｂｌｅ  Ｔｒａｎｓｆｏｒｍ、ＬＦＮＳＴ）であり、前記変換ブロックは垂直変換及び水平変換にそれぞれ分離されて行うことができる（ｓｅｐａｒａｂｌｅ）１次変換が適用されたブロックであり、前記予め設定された一つ以上の条件のうち第１条件は、前記第１サブブロックの前記一つ以上の係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とする。
【０００７】
また、本明細書において、前記シンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含むことを特徴とする。
【０００８】
また、本明細書において、前記第１係数は予め設定されたスキャン順による最後の有効係数（ｌａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｅｆｆｉｃｉｅｎｔ）であり、前記有効係数は０ではない（ｎｏｎ−ｚｅｒｏ）係数であることを特徴とする。
【０００９】
また、本明細書において、前記第１サブブロックは予め設定されたスキャン順による最初のサブブロックであることを特徴とする。
【００１０】
また、本明細書において、前記予め設定された一つ以上の条件のうち第２条件は、前記変換ブロックの幅（Ｗｉｄｔｈ）及び高さ（Ｈｅｉｇｈｔ）は４ピクセル以上であることを特徴とする。
【００１１】
また、本明細書において、前記予め設定された臨界値は０であることを特徴とする。
【００１２】
また、本明細書において、前記予め設定されたスキャン順は、右上側対角（ｕｐ−ｒｉｇｈｔ  ｄｉａｇｏｎａｌ）スキャン順であることを特徴とする。
【００１３】
また、本明細書において、前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ（ｆｌａｇ）値が特定値ではない場合であり、前記変換スキップフラッグ値が前記特定値を有すれば、前記変換スキップフラッグは前記変換ブロックに前記１次変換及び前記２次変換が適用されないことを支持することを特徴とする。
【００１４】
また、本明細書において、前記予め設定された一つ以上の条件のうち第４条件は、前記第１サブブロックの前記一つ以上の係数のうち少なくとも一つの係数は０ではなく、前記少なくとも一つ以上の係数は予め設定されたスキャン順による最初の位置を除いたところに存在する場合であることを特徴とする。
【００１５】
また、本明細書において、前記コーディングユニットは封数のコーディングブロックで構成され、前記複数のコーディングブロックそれぞれに対応する変換ブロックのうち少なくともいずれか一つでも前記予め設定された一つ以上の条件を満足すれば、前記２次変換に関するシンタックス要素がパージングされることを特徴とする。
【００１６】
また、本明細書において、ビデオ信号復号化装置において、プロセッサを含み、前記プロセッサは、コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行って前記ブロックに対する複数個の１次変換係数を獲得し、前記複数個の１次変換のうちいずれか一つ以上の係数に基づく２次変換を行って、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得し、前記一つ以上の２次変換係数に関する情報、及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化してビットストリームを獲得するが、前記２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）であり、前記１次変換は垂直変換及び水平変換にそれぞれ分離されて行うことができ、前記コーディングユニットの２次変換に関するシンタックス要素は、予め設定された一つ以上の条件を満足すれば符号化され、及び前記予め設定された一つ以上の条件のうち第１条件は、前記一つ以上の２次変換係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とする。
【００１７】
また、本明細書において、前記シンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含むことを特徴とする。
【００１８】
また、本明細書において、前記第１係数は予め設定されたスキャン順による最後の有効係数であり、前記有効係数は０ではない係数であることを特徴とする。
【００１９】
また、本明細書において、前記第１サブブロックは予め設定されたスキャン順による最初のサブブロックであることを特徴とする。
【００２０】
また、本明細書において、前記予め設定された一つ以上の条件のうち第２条件は、前記１次変換ブロックの幅及び高さは４ピクセル以上であることを特徴とする。
【００２１】
また、本明細書において、前記予め設定された臨界値は０であることを特徴とする。
【００２２】
また、本明細書において、前記予め設定されたスキャン順は、右上側対角スキャン順であることを特徴とする。
【００２３】
また、本明細書において、前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ値が特定値ではない場合であり、前記変換スキップフラッグ値が前記特定値を有すれば、前記変換スキップフラッグは前記ブロックに前記１次変換及び前記２次変換が適用されないことを支持することを特徴とする。
【００２４】
また、本明細書において、前記予め設定された一つ以上の条件のうち第４条件は、前記一つ以上の２次変換係数のうち少なくとも一つの係数は０ではなく、前記一つ以上の係数は予め設定されたスキャン順による最初の位置を除いたところに存在する場合であることを特徴とする。
【００２５】
また、本明細書において、ビットストリームを貯蔵する非−一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ読取可能媒体（ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）において、前記ビットストリームは、コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行って前記ブロックに対する複数個の１次変換係数を獲得スルステップと、前記複数個の１次変換のうちいずれか一つ以上の係数に基づく２次変換を行って、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得するステップと、前記一つ以上の２次変換係数に関する情報、及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化するステップと、を含む符号化方法を介して符号化されるが、前記２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）であり、前記１次変換は垂直変換及び水平変換にそれぞれ分離されて行うことができ、前記２次変換に関するシンタックス要素は、予め設定された一つ以上の条件を満足すれば符号化され、及び前記予め設定された一つ以上の条件のうち第１条件は、前記一つ以上の２次変換係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合であることを特徴とする。
【発明の効果】
【００２６】
本発明の一実施例は、２次変換を利用するビデオ信号処理方法及びそのための装置を提供する。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施例によるビデオ信号エンコーディング装置の概略的なブロック図である。
【図２】本発明の一実施例によるビデオ信号デコーディング装置の概略的なブロック図である。
【図３】ピクチャ内でコーディングツリーユニットがコーディングユニットに分割される実施例を示す図である。
【図４】クォードツリー及びマルチ−タイプツリーの分割をシグナリングする方法の一実施例を示す図である。
【図５】本発明の実施例によるイントラ予測方法をより詳しく示す図である。
【図６】本発明の実施例によるイントラ予測方法をより詳しく示す図である。
【図７】エンコーダがレジデュアル信号を変換する方法を詳しく示す図である。
【図８】エンコーダ及びデコーダが変換係数を逆変換してレジデュアル信号を獲得する方法を詳しく示す図である。
【図９】１次変換で使用可能な複数の変換カーネルに対する基底関数を示す図である。
【図１０】本発明の一実施例による２次変換を行う復号化器で残差信号を復元する過程を示すブロック図である。
【図１１】本発明の一実施例による２次変換を行う復号化器で残差信号を復元する過程をブロックレベルで示す図である。
【図１２】本発明の一実施例による減少されたサンプル数を移用する２次変換を適用する方法を示す図である。
【図１３】本発明の一実施例による右上側対角スキャン順の決定方法を示す図である。
【図１４】本発明の一実施例による右上側対角スキャン順をブロックサイズによって示す図である。
【図１５】コーディングユニットレベルで２次変換を指示する方法を示す図である。
【図１６】本発明の一実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【図１７】本発明の一実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【図１８】本発明の一実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【図１９】本発明の一実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【図２０】本発明の他の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【図２１】本発明の他の実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【図２２】本発明の他の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【図２３】本発明の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【図２４】本発明の他の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【図２５】本発明の一実施例によるコーディングユニットシンタックスを示す図である。
【図２６】本発明の他の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【図２７】本発明の実施例によるスキャン順上の最後の有効係数の位置に関するシンタックス構造を示す図である。
【図２８】本発明の他の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【図２９】本発明の実施例によるビデオ信号処理方法を示す順序図である。
【発明を実施するための形態】
【００２８】
本明細書で使用される用語は本発明における機能を考慮しながらできるだけ現在広く使用されている一般的な用語を選択したが、これは当分野に携わる技術者の意図、慣例または新たな技術の出現などによって異なり得る。また、特定の場合は出願人が任意に選定した用語もあるが、この場合、該当の発明を実施する形態の部分においてその意味を記載する。よって、本明細書で使用される用語は、単なる用語の名称ではなく、その用語の有する実質的な意味と本明細書全般にわたる内容に基づいて解釈すべきであることを明らかにする。
【００２９】
本明細書において、一部用語は以下のように解釈される。コーディングは、場合によってはエンコーディングまたはデコーディングに解釈される。本明細書において、ビデオ信号のエンコーディング（符号化）を行ってビデオ信号のビットストリームを生成する装置はエンコーディング装置またはエンコーダと称され、ビデオ信号ビットストリームのデコーディング（復号化）を行ってビデオ信号を復元する装置はデコーディング装置またはデコーダと称される。また、本明細書において、ビデオ信号処理装置はエンコーダ及びデコーダをいずれも含む概念の用語として使用される。情報（ｉｎｆｏｒｍａｔｉｏｎ）は値（ｖａｌｕｅｓ）、パラメータ（ｐａｒａｍｅｔｅｒ）、係数（ｃｏｅｆｆｉｃｉｅｎｔｓ）、成分（ｅｌｅｍｅｎｔｓ）などをいずれも含む用語であって、場合によっては意味が異なるように解釈されることがあるため、本発明はこれに限らない。「ユニット」は映像処理の基本単位またはピクチャの特定位置を指す意味で使用され、輝度（ｌｕｍａ）成分と色差（ｃｈｒｏｍａ）成分のうち少なくとも一つを含むイメージ領域を指す。また、「ブロック」は輝度成分及び色差成分（つまり、Ｃｂ及びＣｒ）のうち特定成分を含むイメージ領域を指す。但し、実施例によって「ユニット」、「ブロック」、「パーティション」、及び「領域」などの用語は互いに混合して使用されてもよい。また、本明細書において、ユニットはコーディングユニット、予測ユニット、変換ユニットをいずれも含む概念として使用される。ピクチャはフィールドまたはフレームを指し、実施例によって前記用語は互いに混用して使用される。
【００３０】
図１は、本発明の一実施例によるビデオ信号エンコーディング装置１００の概略的なブロック図である。図１を参照すると、本明細書のエンコーディング装置１００は、変換部１１０、量子化部１１５、逆量子化部１２０、逆変換部１２５、フィルタリング部１３０、予測部１５０、及びエントロピーコーディング部１６０を含む。
【００３１】
変換部１１０は、入力されたビデオ信号と予測部１５０で生成された予測信号の差であるレジデュアル信号を変換して変換系数値を獲得する。例えば、離散コサイン変換（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ、ＤＣＴ）、離散サイン変換（Ｄｉｓｃｒｅｔｅ  Ｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ、ＤＳＴ）、またはウェーブレット変換（Ｗａｖｅｌｅｔ  Ｔｒａｎｓｆｏｒｍ）などが使用される。離散コサイン変換及び離散サイン変換は、入力されたピクチャ信号をブロックの形態に分けて変換を行うようになる。変換において、変換領域内の値の分布と特性によってコーディング効率が異なり得る。量子化部１１５は、変換部１１０内で出力された変換係数の値を量子化する。
【００３２】
コーディング効率を上げるために、ピクチャ信号をそのままコーディングするのではなく、予測部１５０を介して予めコーディングされた領域を利用してピクチャを予測し、予測されたピクチャに原本ピクチャと予測ピクチャの間のレジデュアル値を足して復元ピクチャを獲得する方法が使用される。エンコーダとデコーダでミスマッチが発生しないように、エンコーダで予測を行う際にはデコーダでも使用可能な情報を使用すべきである。そのために、エンコーダでは符号化した現在ブロックを更に復元する過程を行う。逆量子化部１２０では変換係数値を逆量子化し、逆変換部１２５では逆量子化された変換系数値を利用してレジデュアル値を復元する。一方、フィルタリング部１３０は、復元されたピクチャの品質改善及び符号化効率の向上のためのフィルタリング演算を行う。例えば、デブロッキングフィルタ、サンプル適応的オフセット（Ｓａｍｐｌｅ  Ａｄｐａｔｉｖｅ  Ｏｆｆｓｅｔ、ＳＡＯ）、及び適応的ループフィルタなどが含まれてもよい。フィルタリングを経たピクチャは、出力されるか参照ピクチャとして利用するために復号ピクチャバッファ（Ｄｅｃｏｄｅｄ  Ｐｉｃｔｕｒｅ  Ｂｕｆｆｅｒ、ＤＰＢ）１５６に貯蔵される。
【００３３】
コーディング効率を上げるために、ピクチャ信号をそのままコーディングするのではなく、予測部１５０を介して予めコーディングされた領域を利用してピクチャを予測し、予測されたピクチャに原ピクチャと予測ピクチャの間のレジデュアル値を足して復元ピクチャを獲得する方法が使用される。イントラ予測部１５２では現在ピクチャ内でイントラ予測を行い、インター予測部１５４では復号ピクチャバッファ１５６に貯蔵された参照バッファを利用して現在ピクチャを予測する。イントラ予測部１５２は、現在ピクチャ内の復元された領域からイントラ予測を行い、イントラ符号化情報をエントロピーコーディング部１６０に伝達する。インター予測部１５４は、再度モーション推定部１５４ａ及びモーション補償部１５４ｂを含んで構成される。モーション推定部１５４ａでは、復元された特定領域を参照して現在領域のモーションベクトル値を獲得する。モーション推定部１５４ａでは、参照領域の位置情報（参照フレーム、モーションベクトルなど）などをエントロピーコーディンググ１６０に伝達してビットストリームに含まれるようにする。モーション推定部１５４ａから伝達されたモーションベクトル値を利用して、モーション補償部１５４ｂではインターモーション補償を行う。
【００３４】
予測部１５０は、イントラ予測部１５２とインター予測部１５４を含む。イントラ予測部１５２は現在ピクチャ内でイントラ（ｉｎｔｒａ）予測を行い、インター予測部１５４は復号ピクチャバッファ１５６に貯蔵された参照バッファを利用して現在ピクチャを予測するインター（ｉｎｔｅｒ）予測を行う。イントラ予測部１５２は、現在ピクチャ内の復元されたサンプルからイントラ予測を行い、イントラ符号化情報をエントロピーコーディング部１６０に伝達する。イントラ符号化情報は、イントラ予測モード、ＭＰＭ（Ｍｏｓｔ  Ｐｒｏｂａｂｌｅ  Ｍｏｄｅ）フラッグ、ＭＰＭインデックスのうち少なくとも一つを含む。イントラ符号化情報は参照サンプルに関する情報を含む。インター予測部１５４は、モーション推定部１５４ａ及びモーション補償部１５４ｂを含んで構成される。モーション推定部１５４ａは、復元された参照信号ピクチャの特定領域を参照して現在領域のモーションベクトル値を獲得する。モーション推定部１５４ａは、参照領域に対するモーション情報セット（参照ピクチャインデックス、モーションベクトル情報）をエントロピーコーディング部１６０に伝達する。モーション補償部１５４ｂは、モーション補償部１５４ａから伝達されたモーションベクトル値を利用してモーション補償を行う。インター予測部１５４は、参照領域に対するモーション情報を含むインター符号化情報をエントロピーコーディング部１６０に伝達する。
【００３５】
更なる実施例によって、予測部１５０はイントラブロックコピー（ｂｌｏｃｋ  ｃｏｐｙ、ＢＣ）予測部（図示せず）を含む。イントラＢＣ予測部は、現在ピクチャ内の復元されたサンプルからイントラＢＣ予測を行い、イントラＢＣ符号化情報をエントロピーコーディング部１６０に伝達する。イントラＢＣ予測部は、現在ピクチャ内の特定領域を参照して現在領域の予測に利用される参照領域を示すブロックベクトル値を獲得する。イントラＢＣ予測部は、獲得されたブロックベクトル値を利用してイントラＢＣ予測を行う。イントラＢＣ予測部は、イントラＢＣ符号化情報をエントロピーコーディング部１６０に伝達する。イントラＢＣ予測部はブロックベクトル情報を含む。
【００３６】
上述したピクチャ予測が行われれば、変換部１１０は原本ピクチャと予測ピクチャの間のレジデュアル値を変換して変換係数値を獲得する。この際、変換はピクチャ内で特定ブロック単位で行われるが、特定ブロックのサイズは予め設定された範囲内で可変する。量子化部１１５は、変換部１１０で生成された変換係数の値を量子化してエントロピーコーディング部１６０に伝達する。
【００３７】
エントロピーコーディング部１６０は、量子化された変換係数を示す情報、イントラ符号化情報、及びインター符号化情報などをエントロピーコーディングしてビデオ信号ビットストリームを生成する。エントロピーコーディング部１６０では、可変長コーディング（Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｅｉｎｇ、ＶＬＣ）方式と算術コーディング（ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｉｎｇ）方式などが使用される。可変長コーディング（ＶＬＣ）方式は入力されるシンボルを連続したコードワードにへ難するが、コードワードの長さは可変的である。例えば、よく発生するシンボルは短いコードワードで、よく発生しないシンボルは長いコードワードで表現する。可変長コーディング方式として、コンテキスト基盤適応型可変長コーディング（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ、ＣＡＶＬＣ）方式が使用される。算術コーディングは連続したデータシンボルを一つの素数に変換するが、算術コーディングは各シンボルを表現するために必要な最適の素数ビットを得る。算術コーディングとして、コンテキスト基盤適合型算術符号化（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ、ＣＡＢＡＣ）方式が使用される。例えば、エントロピーコーディング部１６０は量子化された変換係数を示す情報を二進化する。また、エントロピーコーディング部１６０は、二進化された情報を算術コーディングしてビットストリームを生成する。
【００３８】
前記生成されたビットストリームは、ＮＡＬ（Ｎｅｔｗｏｒｋ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）ユニットを基本単位にカプセル化される。ＮＡＬユニットは、符号化された整数個のコーディングツリーユニット（ｃｏｄｉｎｇ  ｔｒｅｅ  ｕｎｉｔ）を含む。ビデオデコーダでビットストリームを復号化するためには、まずビットストリームをＮＡＬユニット単位に分離した後、分離されたそれぞれのＮＡＬユニットを復号化すべきである。一方、ビデオ信号ビットストリームの復号化のために必要な情報は、ピクチャパラメータセット（Ｐｉｃｔｕｒｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ、ＰＰＳ）、シーケンスパラメータセット（Ｓｅｑｕｅｎｃｅ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ、ＳＰＳ）、ビデオパラメータセット（Ｖｉｄｅｏ  Ｐａｒａｍｅｔｅｒ  Ｓｅｔ、ＶＰＳ）などのような上位レベルセットのＲＢＳＰ（Ｒａｗ  Ｂｙｔｅ  Ｓｅｑｕｅｎｃｅ  Ｐａｙｌｏａｄ）を介して伝送される。
【００３９】
一方、図１のブロック図は本発明の一実施例によるエンコーディング装置１００を示し、分離して示したブロックはエンコーディング装置１００のエレメントを論理的に区別して示している。よって、上述したエンコーディング装置１００のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施例によると、上述したエンコーディング装置１００のの各エレメントの動作はプロセッサ（図示せず）によって行われる。
【００４０】
図２は、本発明の実施例によるビデオ信号デコーディング装置の２００概略的なブロック図である。図２を参照すると、本明細書のデコーディング装置２００は、エントロピーデコーディング部２１０、逆量子化部２２０、逆変換部２２５、フィルタリング部２３０、及び予測部２５０を含む。
【００４１】
エントロピーデコーディング部２１０は、ビデオ信号ビットストリームをエントロピーコーディングし、各領域に対する変換係数情報、イントラ符号化情報、インター符号化情報などを抽出する。例えば、エントロピーデコーディング部２１０はビデオ信号ビットストリームから特定領域の変換係数情報に対する二進化コードを獲得する。また、エントロピーデコーディング部２１０は二進化コードを逆二進化して量子化された変換係数を獲得する。逆量子化部２２０は量子化された変換係数を逆量子化し、逆変換部２２５は逆量子化された変換系数を利用してレジデュアル値を復元する。ビデオ信号処理装置２００は、逆変換部２２５から獲得されたレジデュアル値を予測部２５０から獲得された予測値と合算して元の画素値を復元する。
【００４２】
一方、フィルタリング部２３０は、ピクチャに対するフィルタリングを行って画質を向上させる。ここには、ブロック歪曲現象を減少させるためのデブロッキングフィルタ及び／またはピクチャ全体の歪曲を除去するための適応的ループフィルタなどが含まれる。フィルタリングを経たピクチャは出力されるか、次のピクチャに対する参照ピクチャとして利用するために復号ピクチャバッファ（ＤＰＢ）２５６に貯蔵される。
【００４３】
予測部２５０は、イントラ予測部２５２とインター予測部２５４を含む。予測部２５０は、上述したエントロピーデコーディング部２１０を介して復号化された符号化タイプ、各領域に対する変換係数、イントラ／インター符号化情報などを活用して予測ピクチャを生成する。復号化が行われる現在ブロックを復元するために、現在ブロックが含まれた現在ピクチャまたは他のピクチャが復号された領域が利用される。復元に現在ピクチャのみを利用する、つまり、イントラ予測またはイントラＢＣ予測を行うピクチャ（または、タイル／スライス）をイントラピクチャまたはＩピクチャ（または、タイル／スライス）、イントラ予測、インター予測、及びイントラＢＣ予測をいずれも行うピクチャ（または、タイル／スライス）をインターピクチャ（または、タイル／スライス）という。インターピクチャ（または、タイル／スライス）のうち各ブロックのサンプル値を予測するために最大一つのモーションベクトル及び参照ピクチャインデックスを利用するピクチャ（または、タイル／スライス）を予測ピクチャ（ｐｒｅｄｉｃｔｉｖｅ  ｐｉｃｔｕｒｅ）またはＰピクチャ（または、タイル／スライス）と言い、最大２つのモーションベクトル及び参照ピクチャインデックスを利用するピクチャ（または、タイル／スライス）を双予測ピクチャ（Ｂｉ−ｐｒｅｄｉｃｔｉｖｅ  ｐｉｃｔｕｒｅ）またはＢピクチャ（または、タイル／スライス）という。つまり、Ｐピクチャ（または、タイル／スライス）は各ブロックを予測するために最大一つのモーション情報セットを利用し、Ｂピクチャ（または、タイル／スライス）は各ブロックを予測するために最大２つのモーション情報セットを利用する。ここで、モーション情報セットは一つ以上のモーションベクトルと一つの参照ピクチャインデックスを含む。
【００４４】
イントラ予測部２５２は、イントラ符号化情報及び現在ピクチャ内の復元されたサンプルを利用して予測ブロックを生成する。上述したように、イントラ符号化情報は、イントラ予測モード、ＭＰＭ（ＭＯＳＴ  Ｐｒｏｂａｂｌｅ  Ｍｏｄｅ）フラッグ、ＭＰＭインデックスのうち少なくとも一つを含む。イントラ予測部２５２は、現在ブロックの左側及び／または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。本開示において、復元されたサンプル、参照サンプル、及び現在ブロックのサンプルはピクセルを示す。また、サンプル値（ｓａｍｐｌｅ  ｖａｌｕｅ）はピクセル値を示す。
【００４５】
一実施例において、参照サンプルは現在ブロックの周辺ブロックに含まれたサンプルである。例えば、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び／または上側境界に隣接したサンプルである。また、参照サンプルは現在ブロックの周辺ブロックのサンプルのうち、現在ブロックの左側境界から予め設定された距離以内のライン上に位置するサンプル及び／または現在ブロックの上側境界から予め設定された距離以内のライン上に位置するサンプルである。この際、現在ブロックの周辺ブロックは、現在ブロックに隣接した左側（Ｌ）ブロック、上側（Ａ）ブロック、下左側（Ｂｅｌｏｗ  Ｌｅｆｔ、ＢＬ）ブロック、右上側（Ａｂｏｖｅ  Ｒｉｇｈｔ、ＡＲ）ブロック、または左上側（Ａｂｏｖｅ  Ｌｅｆｔ、ＡＬ）ブロックのうち少なくとも一つを含む。
【００４６】
インター予測部２５４は、復号ピクチャバッファ２５６に貯蔵された参照ピクチャ及びインター符号化情報を利用して予測ブロックを生成する。インター符号化情報は、参照ブロックに対する現在ブロックのモーション情報セット（参照ピクチャインデックス、モーションベクトルなど）を含む。インター予測には、Ｌ０予測、Ｌ１予測、及び双予測（Ｂｉ−ｐｒｅｄｉｃｔｉｏｎ）がある。Ｌ０予測はＬ０ピクチャリストに含まれた一つの参照ピクチャを利用した予測であり、Ｌ１予測はＬ１ピクチャリストに含まれた一つの参照ピクチャを利用した予測を意味する。そのためには、１セットのモーション情報（例えば、モーションベクトル及び参照ピクチャインデックス）が必要である。双予測方式では最大２つの参照領域を利用するが、この２つの参照領域は同じ参照ピクチャに存在してもよく、互いに異なるピクチャにそれぞれ存在してもよい。つまり、双予測方式では最大２セットのモーション情報（例えば、モーションベクトル及び参照ピクチャインデックス）が利用されるが、２つのモーションベクトルが同じ参照ピクチャインデックスに対応してもよく、互いに異なる参照ピクチャインデックスに対応してもよい。この際、参照ピクチャは時間的に現在ピクチャの以前や以降のいずれにも表示（または出力）される。一実施例によって、双予測方式では、使用される２つの参照領域はＬ０ピクチャリスト及びＬ１ピクチャリストそれぞれから選択された領域である。
【００４７】
インター予測部２５４は、モーションベクトル及び参照ピクチャインデックスを利用して現在の参照ブロックを獲得する。前記参照ブロックは、参照ピクチャインデックスに対応する参照ピクチャ内に存在する。また、モーションベクトルによって特定されたブロックのサンプル値またはこれの補間（ｉｎｔｅｒｐｏｌａｔｉｏｎ）された値が現在ブロックの予測子（ｐｒｅｄｉｃｔｏｒ）として利用される。サブペル（ｓｕｂ−ｐｅｌ）単位のピクセル正確度を有するモーション予測のために、例えば、輝度信号に対して８−タブ補間フィルタが、色差信号に対して４−タブ補間フィルタが使用される。但し、サブペル単位のモーション予測のための補間フィルタはこれに限らない。このように、インター予測部２５４は、以前復元されたピクチャから現在ユニットのテクスチャを予測するモーション補償（ｍｏｔｉｏｎ  ｃｏｍｐｅｎｓａｔｉｏｎ）を行う。この際、インター予測部はモーション情報セットを利用する。
【００４８】
更なる実施例によって、予測部２５０はイントＢＣ予測部（図示せず）を含む。イントラＢＣ予測部は、現在ピクチャ内の復元されたサンプルを含む特定領域を参照して現在領域を復元する。イントラＢＣ予測部は、エントロピーデコーディング部２１０から現在領域に対するイントラＢＣ符号化情報を獲得する。イントラＢＣ予測部は、現在ピクチャ内の特定領域を指示する現在領域のブロックベクトル値を獲得する。イントラＢＣ予測部は、獲得されたブロックベクトル値を利用してイントラＢＣ予測を行う。イントラＢＣ予測部はブロックベクトル情報を含む。
【００４９】
前記イントラ予測部２５２またはインター予測部２５４から出力された予測値、及び逆変換部２２５から出力されたレジデュアル値を足して復元されたビデオピクチャが生成される。つまり、ビデオ信号デコーディング装置２００は、予測部２５０から生成された予測ブロックと逆変換部２２５から獲得されたレジデュアル値を利用して現在ブロックを復元する。
【００５０】
一方、図２のブロック図は本発明の一実施例によるデコーディング装置２００を示し、分離して示したブロックはデコーディング装置２００のエレメントを論理的に区別して示している。よって、上述したデコーディング装置２００のエレメントは、ディバイスの設計に応じて一つのチップまたは複数のチップに取り付けられる。一実施例によると、上述したデコーディング装置２００のの各エレメントの動作はプロセッサ（図示せず）によって行われる。
【００５１】
図３は、ピクチャ内でコーディングツリーユニット（Ｃｏｄｉｎｇ  Ｔｒｅｅ  Ｕｎｉｔ、ＣＴＵ）がコーディングユニット（Ｃｏｄｉｎｇ  Ｕｎｉｔｓ、ＣＵｓ）に分割される実施例を示している。ビデオ信号のコーディング過程において、ピクチャはコーディングツリーユニット（ＣＴＵ）のシーケンスに分割される。コーディングツリーユニットは、輝度サンプルのＮＸＮブロックと、それに対応する色差サンプルの２つのブロックからなる。コーディングツリーユニットは、複数のコーディングユニットに分割される。コーディングツリーユニットは分割されずにリーフノードになってもよい。この場合、コーディングツリーユニット自体がコーディングユニットになり得る。コーディングユニットは上述したビデオ信号の処理過程、つまり、イントラ／インター予測、変換、量子化及び／またはエントロピーコーディングなどの過程でピクチャを処理するための基本単位を指す。一つのピクチャ内において、コーディングユニットのサイズ及び模様は一定ではない。コーディングユニットは正方形または長方形の模様を有する。長方形コーディングユニット（または、長方形ブロック）は垂直コーディングユニット（または、垂直ブロック）と水平コーディングユニット（または、水平ブロック）を含む。本明細書において、垂直ブロックは高さが幅より大きいブロックであり、水平ブロックは幅が高さより大きいブロックである。また、本明細書において、正方形ではない（ｎｏｎ−ｓｑｕａｒｅ）ブロックは長方形ブロックを指すが、本発明はこれに限らない。
【００５２】
図３を参照すると、コーディングツリーユニットは、まずクォードツリー（Ｑｕａｄ  Ｔｒｅｅ、ＱＴ）構造に分割される。つまり、クォードツリー構造において、２Ｎ×２Ｎのサイズを有する一つのノードはＮ×Ｎのサイズを有する４つのノードに分割される。本明細書において、クォードツリーは４進（ｑｕａｔｅｒｎａｒｙ）ツリーとも称される。クォードツリー分割は再帰的に行われ、全てのノードが同じ深さに分割される必要はない。
【００５３】
一方、上述したクォードツリーのリーフノード（ｌｅａｆ  ｎｏｄｅ）は、マルチ−タイプツリー（Ｍｕｌｔｉ−Ｔｙｐｅ  Ｔｒｅｅ、ＭＴＴ）構造に更に分割される。本発明の実施例によると、マルチタイプツリー構造では一つのノードが水平または垂直分割の２進（ｂｉｎａｒｙ、バイナリー）または３進（ｔｅｒｎａｒｙ、ターナリー）ツリー構造に分割される。つまり、マルチ−タイプツリー構造には、垂直バイナリー分割、水平バイナリー分割、垂直ターナリー分割、及び水平ターナリー分割の４つの分割構造が存在する。本発明の実施例によると、前記各ツリー構造において、ノードの幅及び高さはいずれも２の累乗値を有する。例えば、バイナリーツリー（ｂｉｎａｒｙ  Ｔｒｅｅ、ＢＴ）構造において、２Ｎ×２Ｎのサイズのノードは垂直バイナリー分割によって２つのＮ×２Ｎノードに分割され、水平バイナリー分割によって２つの２Ｎ×Ｎノードに分割される。また、ターナリーツリー（Ｔｅｒｎａｒｙ  Ｔｒｅｅ、ＴＴ）構造において、２Ｎ×２Ｎのサイズのノードは垂直ターナリー分割によって（Ｎ／２）×２Ｎ、Ｎ×２Ｎ及び（Ｎ／２）×２Ｎのノードに分割され、水平ターナリー分割によって２Ｎ×（Ｎ／２）、２Ｎ×Ｎ及び２Ｎ×（Ｎ／２）のノードに分割される。このようなマルチ−タイプツリー分割は再帰的に行われる。
【００５４】
マルチ−タイプツリーのリーフノードはコーディングユニットになり得る。コーディングユニットが最大変換長に比べ大きくなければ、該当コーディングユニットはそれ以上分割されずに予測及び／または変換の単位として使用されることができる。一実施例として、現在コーディングユニットの幅または高さが最大変換長さより大きければ、現在コーディングユニットは分割に関する明示的シグナリングなしに複数の変換ユニットに分割される。一方、上述したクォードツリー及びマルチ−タイプツリーにおいて、次のパラメータのうち少なくとも一つが事前に定義されるか、ＰＰＳ、ＳＰＳ、ＶＰＳなどのような上位レベルセットのＲＢＳＰを介して伝送される。１）ＣＴＵサイズ：クォードツリーのルートノード（ｒｏｏｔ  ｎｏｄｅ）のサイズ、２）最小ＱＴサイズ（ＭｉｎＱｔＳｉｚｅ）：許容された最小ＱＴリーフノードのサイズ、３）最大ＢＴサイズ（ＭａｘＢｔＳｉｚｅ）：許容された最大ＢＴルートノードのサイズ、４）最大ＴＴサイズ（ＭａｘＴｔＳｉｚｅ）：許容された最大ＴＴルートノードのサイズ、５）最大ＭＴＴ深さ（ＭａｘＭｔｔＤｅｐｔｈ）：ＱＴのリーフノードからのＭＴＴ分割の最大許容深さ、６）最小ＢＴサイズ（ＭｉｎＢｔＳｉｚｅ）：許容された最小ＢＴリーフノードのサイズ、７）最小ＴＴサイズ：許容された最小ＴＴリーフノードのサイズ。
【００５５】
図４は、クォードツリー及びマルチ−タイプツリーの分割をシグナリングする方法の一実施例を示す図である。状住したクォードツリー及びマルチ−タイプツリーの分割をシグナリングするために、予め設定されたフラッグが使用される。図４を参照すると、ノードの分割可否を指示するフラッグ「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」、クォードツリーノードの分割可否を指示するフラッグ「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」、マルチ−タイプツリーノードの分割方向を指示するフラッグ「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｖｅｒｔｉｃａｌ＿ｆｌａｇ」、またはマルチ−タイプツリーノードの分割模様を指示するフラッグ「ｍｔｔ＿ｓｐｌｉｔ＿ｂｉｎａｒｙｃｕ＿ｆｌａｇ」のうち少なくとも一つが使用される。
【００５６】
本発明の実施例によると、現在ノードの分割可否を指示するフラッグである「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」が先にシグナリングされる。「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」の値が０であれば現在ノードが分割されないことを示し、現在ノードはコーディングユニットになる。現在ノードがコーディングツリーユニットであれば、コーディングツリーユニットは分割されない一つのコーディングユニットを含む。現在ノードがクォードツリーノード「ＱＴ  ｎｏｄｅ」であれば、現在ノードはクォードツリーノードのリーフノード「ＱＴ  ｌｅａｆ  ｎｏｄｅ」であって、コーディングユニットになる。現在ノードがマルチ−タイプツリーノード「ＭＴＴ  ｎｏｄｅ」であれば、現在ノードはマルチ−タイプツリーのリーフノード「ＭＴＴ  ｌｅａｆ  ｎｏｄｅ」であって、コーディングユニットになる。
【００５７】
「ｓｐｌｉｔ＿ｃｕ＿ｆｌａｇ」の値が１であれば、現在ノードは「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」の値に応じてクォードツリーまたはマルチ−タイプツリーのノードに分割される。コーディングツリーユニットはクォードツリーのルートノードであり、クォードツリー構造に優先分割される。クォードツリー構造ではそれぞれのノード「ＱＴ  ｎｏｄｅ」別に「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」がシグナリングされる。「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」の値が１であれば、該当ノードは４つの正方形ノードに分割され、「ｑｔ＿ｓｐｌｉｔ＿ｆｌａｇ」の値が０であれば、該当ノードはクォードツリーのリーフノード「ＱＴ  ｌｅａｆ  ｎｏｄｅ」となり、該当ノードはマルチ−タイプノードに分割される。本発明の実施例によると、現在ノードの種類に応じてクォードツリー分割は制限され得る。現在ノードがコーディングツリーユニット（クォードツリーのルートノード）またはクォードツリーノードであればクォードツリー分割が許容され、現在ノードがマルチ−タイプツリーユニットであればクォードツリー分割は許容されない。それぞれのクォードツリーリーフノード「ＱＴ  ｌｅａｆ  ｎｏｄｅ」は、マルチ−タイプツリー構造に更に分割される。上述したように、「ｓｐｌｉｔ＿ｑｔ＿ｆｌａｇ」が０であれば、現在ノードはマルチ−タイプノードに分割される。分割方向及び分割模様を指示するために、「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｖｅｒｔｉｃａｌ＿ｆｌａｇ」及び「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｂｉｎａｒｙ＿ｆｌａｇ」がシグナリングされる。「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｖｅｒｔｉｃａｌ＿ｆｌａｇ」の値が１であればノード「ＭＴＴ  ｎｏｄｅ」の垂直分割が指示され、「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｖｅｒｔｉｃａｌ＿ｆｌａｇ」の値が０であればノード「ＭＴＴ  ｎｏｄｅ」の水平分割が指示される。また、「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｂｉｎａｒｙ＿ｆｌａｇ」の値が１であればノード「ＭＴＴ  ｎｏｄｅ」は２つの長方形ノードに分割され、「ｍｔｔ＿ｓｐｌｉｔ＿ｃｕ＿ｂｉｎａｒｙ＿ｆｌａｇ」の値が０であればノード「ＭＴＴ  ｎｏｄｅ」は３つの長方形ノードに分割される。
【００５８】
コーディングのためのピクチャ予測（モーション補償）はそれ以上分けられないコーディングユニット（つまり、コーディングユニットツリーのリーフノード）を対象に行われる。このような予測を行う基本単位を、以下では予測ユニット（ｐｒｅｄｉｃｔｉｏｎ  ｕｎｉｔ）または予測ブロック（ｐｒｅｄｉｃｔｉｏｎ  ｂｌｏｃｋ）という。
【００５９】
以下、本明細書で使用されるユニットという用語は、予測を行う基本単位である前記予測ユニットを代替する用語として使用される。但し、本発明はこれに限らず、より広い意味では、前記コーディングユニットを含む概念として理解される。
【００６０】
図５及び図６は、本発明の実施例によるイントラ予測方法をより詳しく示す図である。上述したように、イントラ予測部は、現在ブロックの左側及び／または上側に位置する復元されたサンプルを参照サンプルとして利用して、現在ブロックのサンプル値を予測する。
【００６１】
まず、図５はイントラ予測モードで現在ブロックを予測するために使用される参照サンプルの一実施例を示す。一実施例によると、参照サンプルは現在ブロックの左側境界に隣接したサンプル及び／または上側境界に隣接したサンプルである。図５に示したように、現在ブロックのサイズがＷ×Ｈで現在ブロックに隣接した単一参照ライン（ｌｉｎｅ）のサンプルがイントラ予測に使用されれば、現在ブロックの左側及び／または上側に位置した最大２Ｗ＋２Ｈ＋１個の周辺サンプルを使用して参照サンプルが設定される。
【００６２】
また、参照サンプルとして使用される少なくとも一部のサンプルがまだ復元されていなければ、イントラ予測部は参照サンプルパッディング過程を行って参照サンプルを獲得する。また、イントラ予測部は、イントラ予測の誤差を減らすために参照サンプルフィルタリング過程を行う。つまり、周辺サンプル及び／または参照サンプルパッディング過程によって獲得された参照サンプルにフィルタリングを行って、フィルタリングされた参照サンプルを獲得する。イントラ予測部は、このように獲得された参照サンプルを利用して現在ブロックのサンプルを予測する。イントラ予測部は、フィルタリングされていない参照サンプル、またはフィルタリングされた参照サンプルを利用して現在ブロックのサンプルを予測する。本開示において、周辺サンプルは少なくとも一つの参照ライン上のサンプルを含む。例えば、周辺サンプルは現在ブロックの境界に隣接したライン上の隣接サンプルを含んでもよい。
【００６３】
次に、図６はイントラ予測に使用される予測モードの一実施例を示す図である。イントラ予測のために、イントラ予測方向を指示するイントラ予測モード情報がシグナリングされる。イントラ予測モードは、イントラ予測モードセットを構成する複数のイントラ予測モードのうちいずれか一つを指示する。現在ブロックがイントラ予測ブロックであれば、デコーダはビットストリームから現在ブロックのイントラ予測モード情報を受信する。デコーダのイントラ予測部は、抽出されたイントラ予測モード情報に基づいて現在ブロックに対するイントラ予測を行う。
【００６４】
本発明の実施例によると、イントラ予測モードセットは、イントラ予測に使用される全てのイントラ予測モード（例えば、総６７個のイントラ予測モード）を含む。より詳しくは、イントラ予測モードセットは、平面モード、ＤＣモード、及び複数の（例えば、６５個の）角度モード（つまり、方向モード）を含む。それぞれのイントラ予測モードは、予め設定されたインデックス（つまり、イントラ予測モードインデックス）を介して指示される。例えば、図６に示したように、イントラ予測モードインデックス０は平面（ｐｌａｎａｒ）モードを指示し、イントラ予測モードインデックス１はＤＣモードを指示する。また、イントラ予測モードインデックス２乃至６６は、互いに異なる角度モードをそれぞれ指示する。角度モードは、予め設定された角度範囲以内の互いに異なる角度をそれぞれ指示する。例えば、角度モードは時計回りに４５度から−１３５度の間の角度範囲（つまり、第１角度範囲）以内の角度を指示する。前記角度モードは１２持方向を基準に定義される。この際、イントラ予測モードインデックス２は水平対角（Ｈｏｒｉｚｏｎｔａｌ  Ｄｉａｇｏｎａｌ、ＨＤＩＡ）モードを指示し、イントラ予測モードインデックス１８は水平（Ｈｏｒｉｚｏｎｔａｌ、ＨＯＲ）モードを指示し、イントラ予測モードインデックス３４は対角（Ｄｉａｇｏｎａｌ、ＤＩＡ）モードを指示し、イントラ予測モードインデックス５０は水直（Ｖｅｒｔｉｃａｌ、ＶＥＲ）モードを指示し、イントラ予測モードインデックス６６は垂直対角（Ｖｅｒｔｉｃａｌ  Ｄｉａｇｏｎａｌ、ＶＤＩＡ）モードを指示する。
【００６５】
一方、予め設定された角度範囲は現在ブロックの模様に応じて互いに異なるように設定される。例えば、現在ブロックが長方形ブロックであれば、時計回りに４５度を超過するか−１３５度未満の角度を指示する広角モードが更に使用される。現在ブロックが水平ブロックであれば、角度モードは時計回りに（４５＋ｏｆｆｓｅｔ１）度から（−１３５＋ｏｆｆｓｅｔ１）度の間の角度範囲（つまり、第２角度範囲）以内の角度を指示する。この際、第１角度範囲を逸脱する角度モード６７乃至７６が更に使用される。また、現在ブロックが水直ブロックであれば、角度モードは時計回りに（４５−ｏｆｆｓｅｔ２）度から（−１３５−ｏｆｆｓｅｔ２）度の間の角度範囲（つまり、第３角度範囲）以内の角度を指示する。この際、第１角度範囲を逸脱する角度モード−１０乃至−１が更に使用される。本発明の実施例によると、ｏｆｆｓｅｔ１及びｏｆｆｓｅｔ２の値は、長方形ブロックの幅と高さとの間の割合によって互いに異なるように決定される。また、ｏｆｆｓｅｔ１及びｏｆｆｓｅｔ２は正数である。
【００６６】
本発明の更なる実施例によると、イントラ予測モードセットを構成する複数の角度モードは、基本角度モードと拡張角度モードを含む。この際、拡張角度モードは基本角度モードに基づいて決定される。
【００６７】
一実施例によると、基本角度モードは従来のＨＥＶＣ（Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）標準のイントラ予測で使用される角度に対応するモードであり、拡張角度モードは次世代ビデオコーデック標準のイントラ予測で新たに追加される角度に対応するモードである。より詳しくは、基本角度モードはイントラ予測モード｛２、４、６、…、６６｝のうちいずれか一つに対応する角度モードであり、拡張角度モードはイントラ予測モード｛３、５、６、…、６５｝のうちいずれか一つに対応する角度モードである。つまり、拡張角度モードは、第１角度範囲内での基本角度モードの間の角度モードである。よって、拡張角度モードが指示する角度はは基本角度モードが指示する角度に基づいて決定される。
【００６８】
他の実施例によると、基本角度モードは予め設定された第１角度範囲以内の角度に対応するモードであり、拡張角度モードは前記第１角度範囲を逸脱する広角モードである。つまり、基本角度モードはイントラ予測モード｛２、３、４、…、６６｝のうちいずれか一つに対応する角度モードであり、拡張角度モードはイントラ予測モード｛−１０、−９、…、−１｝及び｛６７、６８、…、７６｝のうちいずれか一つに対応する角度モードである。拡張角度モードが指示する角度は、対応する基本角度モードが指示する角度の反対側の角度と決定される。よって、拡張角度モードが指示する角度はは基本角度モードが指示する角度に基づいて決定される。一方、拡張角度モードの個数はこれに限らず、現在ブロックのサイズ及び／または模様によって更なる拡張角度が定義される。例えば、拡張角度モードはイントラ予測モード｛−１４、−１３、…、−１｝及び｛６７、６８、…、８０｝のうちいずれか一つに対応する角度モードで定義されてもよい。一方、イントラ予測モードセットに含まれるイントラ予測モードの総個数は、上述した基本角度モードと拡張角度モードの構成によって可変する。
【００６９】
前記実施例において、拡張角度モードの間の間隔は、対応する基本角度モードの間の間隔に基づいて設定される。例えば、拡張角度モード｛３、５、７、…、６５｝の間の間隔は、対応する基本角度モード｛２、４、６、…、６６｝の間の間隔に基づいて決定される。また、拡張角度モード｛−１０、−９、…、−１｝の間の間隔は、対応する反対側の基本角度モード｛５６、５７、…、６５｝の間の間隔に基づいて決定され、拡張角度モード｛６７、６８、…、７６｝の間の間隔は、対応する反対側の基本角度モード｛３、４、…、１２｝の間の間隔に基づいて決定される。拡張角度モードの間の角度間隔は、対応する基本角度モードの間の角度間隔と同じように設定される。また、イントラ予測モードセットにおいて、拡張角度モードの個数は基本角度モードの個数以下に設定される。
【００７０】
本発明の実施例によると、拡張角度モードは基本角度モードに基づいてシグナリングされる。例えば、広角モード（つまり、拡張角度モード）は第１角度範囲以内の少なくとも一つの角度モード（つまり、基本角度モード）を代替する。代替される基本角度モードは、広角モードの反対側に対応する角度モードである。つまり、代替される基本角度モードは広角モードが指示する角度の反対方向の角度に対応するか、または前記反対方向の角度から予め設定されたオフセットインデックスだけ差がある角度に対応する角度モードである。本発明の実施例によると、予め設定されたオフセットインデックスは１である。代替される基本角度モードに対応するイントラ予測モードインデックスは、広角モードに更にマッピングされて該当広角モードをシグナリングする。例えば、広角モード｛−１０、−９、…−１｝はイントラ予測モードインデックス｛５７、５８、…、６６｝によってそれぞれシグナリングされ、広角モード｛６７、６８、…７６｝はイントラ予測モードインデックス｛２、３、…、１１｝によってそれぞれシグナリングされる。このように基本角度モードのためのイントラ予測モードインデックスが拡張角度モードをシグナリングするようにすることで、各ブロックのイントラ予測に使用される角度モードの構成が互いに異なっても、同じセットのイントラ予測モードインデックスがイントラ予測モードのシグナリングに使用されることができる。よって、イントラ予測モードの構成変化によるシグナリングオーバーヘッドが最小化される。
【００７１】
一方、拡張角度モードの使用可否は、現在ブロックの模様及びサイズのうち少なくとも一つに基づいて決定される。一実施例によると、現在ブロックのサイズが予め設定されたサイズより大きければ、拡張角度モードが現在ブロックのイントラ予測のために使用され、そうでなければ基本角度モードのみ現在ブロックのイントラ予測のために使用される。他の実施例によると、現在ブロックが正方形ではないブロックであれば、拡張角度モードが現在ブロックのイントラ予測のために使用され、現在ブロックが正方形であれば、基本角度モードのみ現在ブロックのイントラ予測のために使用される。
【００７２】
一方、コーディング効率を上げるために、上述したレジデュアル信号をそのままコーデックするのではなく、レジデュアル信号を変換して獲得された変換係数値を量子化し、量子化された変換係数をコーデックする方法が使用される。上述したように、変換部はレジデュアル信号を変換して変換係数値を獲得する。この際、特定ブロックのレジデュアル信号は現在ブロックの全領域に分散されている可能性がある。それによって、レジデュアル信号に対する周波数領域変換を介して低周波領域にエネルギーを集中させ、コーディング効率を上げることができる。以下では、レジデュアル信号が変換または逆変換される方法について詳しく説明する。
【００７３】
図７は、エンコーダがレジデュアル信号を変換する方法を詳しく示す図である。上述したように、空間領域のレジデュアル信号は周波数領域に変換される。エンコーダは、獲得されたレジデュアル信号を変換して変換係数を獲得する。まず、エンコーダは現在ブロックに対するレジデュアル信号を含む少なくとも一つのレジデュアルブロックを獲得する。レジデュアルブロックは、現在ブロックまたは現在ブロックから分割されたブロックのうちいずれか一つである。本開示において、レジデュアルブロックは、現在ブロックのレジデュアルサンプルを含むレジデュアルアレイ（ａｒｒａｙ）またはレジデュアルマトリックス（ｍａｔｒｉｘ）と称される。また、本開示において、レジデュアルブロックは、変換ユニットまたは変換ブロックのサイズと同じサイズのブロックを示す。
【００７４】
次に、エンコーダは変換カーネルを使用してレジデュアルブロックを変換する。レジデュアルブロックに対する変換に使用される変換カーネルは、垂直変換及び水平変換の分離可能な特性を有する変換カーネルである。この場合、レジデュアルブロックに対する変換は垂直変換及び水平変換に分離されて行われる。例えば、エンコーダはレジデュアルブロックの垂直方向に変換カーネルを適用して垂直変換を行う。また、エンコーダはレジデュアルブロックの水平方向に変換カーネルを適用して水平変換を行う。本開示において、変換カーネルは、変換マトリックス、変換アレイ、変換関数、変換のようにレジデュアル信号の変換に使用されるパラメータセットを称する用語として使用される。一実施例によって、変換カーネルは複数の使用可能なカーネルのうちいずれか一つである。また、垂直変換及び水平変換それぞれに対して互いに異なる変換タイプに基づく変換カーネルが使用されてもよい。
【００７５】
エンコーダは、レジデュアルブロックから変換された変換ブロックを量子化部に伝達して量子化する。この場合、変換ブロックは複数の変換係数を含む。詳しくは、変換ブロックは２次元配列された複数の変換係数からなる。変換ブロックのサイズは、レジデュアルブロックと同じく現在ブロックまたは現在ブロックから分割されたブロックのうちいずれか一つと同じである。量子化部に伝達された変換係数は、量子化された値で表現される。
【００７６】
また、エンコーダは変換係数が量子化される前に更なる変換を行う。図７に示したように、上述した変換方法は１次変換（ｐｒｉｍａｒｙ  ｔｒａｎｓｆｏｒｍ）と称され、更なる変換は２次変換（ｓｅｃｏｎｄａｒｙ  ｔｒａｎｓｆｏｒｍ）と称される。２次変換はレジデュアルブロックごとに選択的である。一実施例によって、エンコーダは、１次変換のみで低周波領域にエネルギーを集中させることが難しい領域に対して２次変換を行い、コーディング効率を上げることができる。例えば、レジデュアル値がレジデュアルブロックの水平または垂直方向以外の方向で大きく表されるブロックに対して２次変換が追加されてもよい。イントラ予測されたブロックのレジデュアル値は、インター予測されたブロックのレジデュアル値に比べ水平または垂直方向以外の方向に変化する確率が高い。それによって、エンコーダは、イントラ予測されたブロックのレジデュアル信号に対して２次変換を更に行う。また、エンコーダは、インター予測されたブロックのレジデュアル信号に対して２次変換を省略してもよい。
【００７７】
他の例として、現在ブロックまたはレジデュアルブロックのサイズに応じて、２次変換を行うか否かが決定される。また、現在ブロックまたはレジデュアルブロックのサイズに応じてサイズが互いに異なる変換カーネルが使用される。例えば、幅または高さのうち短辺の長さが第１予め設定された長さと同じであるか大きいブロックに対しては８×８  ２次変換が適用される。また、幅または高さのうち短辺の長さが第２予め設定された長さと同じであるか大きくて、第１予め設定された長さより小さいブロックに対しては４×４  ２次変換が適用される。この際、第１予め設定された長さは第２予め設定された長さより大きい値であってもよいが、本開示はこれに限らない。また、２次変換は１次変換とは異なって、垂直変換及び水平変換に分離されて行われなくてもよい。このような２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）と称される。
【００７８】
また、特定領域のビデオ信号の場合、急激な明るさの変化のため周波数変換を行っても高周波帯域エネルギーが減らない。それによって、量子化による圧縮性能が低下する恐れがある。また、レジデュアル値が稀に存在する領域に対して変換を行う場合、エンコーディング及びデコーディング時間が無駄に増加する恐れがある。それによって、特定領域のレジデュアル信号に対する変換は省略されてもよい。特定領域のレジデュアル信号に対する変換を行うか否かは、特定領域の変換に関するシンタックス要素によって決定される。例えば、前記シンタックス要素は変換スキップ情報（ｔｒａｎｓｆｏｒｍ  ｓｋｉｐ  ｉｎｆｏｒｍａｔｉｏｎ）を含む。変換スキップ情報は、変換スキップフラッグ（ｔｒａｎｓｆｏｒｍ  ｓｋｉｐ  ｆｌａｇ）である。レジデュアルブロックに対する変換スキップ情報が変換スキップを示せば、該当レジデュアルブロックに対する変換が行われない。この場合、エンコーダは、該当領域の変換が行われていないレジデュアル信号を直ちに量子化する。図７を参照して説明したエンコーダの動作は、図１の変換部を介して行われる。
【００７９】
上述した変換に関するシンタックス要素は、ビデオ信号ビットストリームからパージングされた情報である。デコーダは、ビデオ信号ビットストリームをエントロピーデコーディングし、変換に関するシンタックス要素を獲得する。また、エンコーダは、変換に関するシンタックス要素をエントロピーコーディングしてビデオ信号ビットストリームを生成する。
【００８０】
図８は、エンコーダ及びデコーダが変換係数を逆変換してレジデュアル信号を獲得する方法を詳しく示す図である。以下、説明の便宜上、エンコーダ及びデコーダそれぞれの逆変換部を介して逆変換動作が行われると説明する。逆変換部は、逆量子化された変換係数を逆変換してレジデュアル信号を獲得する。まず、逆変換部は、特定領域の変換に関するシンタックス要素から該当領域に対する逆変換が行われるのかを検出する。一実施例によって、特定の変換ブロックに対する変換に関するシンタックス要素が変換スキップを示せば、該当変換ブロックに対する変換が省略される。この場合、変換ブロックに対して１次逆変換及び２次逆変換がいずれも省略される。また、逆量子化された変換係数は、レジデュアル信号として使用される。例えば、デコーダは逆量子化された変換係数をレジデュアル信号として使用して現在ブロックを復元する。上述した１次逆変換は１次変換に対する逆変換を示し、逆１次変換（ｉｎｖｅｒｓｅ  ｐｒｉｍａｒｙ  ｔｒａｎｓｆｏｒｍ）と称される。２次逆変換は２次変換に対する逆変換を示し、逆２次変換（ｉｎｖｅｒｓｅ  ｓｅｃｏｎｄａｒｙ  ｔｒａｎｓｆｏｒｍ）またはｉｎｖｅｒｓｅ  ＬＦＮＳＴと称される。本発明において、１次（逆）変換は第１（逆）変換と称され、２次（逆）変換は第２（逆）変換と称される。
【００８１】
他の実施例によって、特定の変換ブロックに対する変換に関するシンタックス要素が変換スキップを示さない可能性がある。この場合、逆変換部は２次変換に対し２次逆変換を行うのか否かを決定する。例えば、変換ブロックがイントラ予測されたブロックの変換ブロックであれば、変換ブロックに対する２次逆変換が行われる。また、変換ブロックに対するイントラ予測モードに基づいて、該当変換ブロックに使用される２次変換カーネルが決定される。他の例として、変換ブロックのサイズに応じて２次逆変換を行うのか否かが決定されてもよい。２次逆変換は、逆量子化過程の後、１次逆変換が行われる前に行われる。
【００８２】
逆変換部は、逆量子化された変換係数または２次逆変換された変換係数に対する１次逆変換を行う。１次逆変換の場合、１次変換と同じく、垂直変換及び水平変換に分離されて行われる。例えば、逆変換部は変換ブロックに対する垂直逆変換及び水平逆変換を行ってレジデュアルブロックを獲得する。逆変換部は、変換ブロックの変換に使用された変換カーネルに基づいて変換ブロックを逆変換する。例えば、エンコーダは、複数の使用可能な変換カーネルのうち現在変換ブロックに適用されている変換カーネルを指示する情報を明示的または目次的にシグナリングする。デコーダは、シグナリングされた変換カーネルを示す情報を利用し、複数の使用可能な変換カーネルのうち変換ブロックの逆変換に使用される変換カーネルを選択する。逆変換部は、逆変換係数に対する逆変換を介して獲得されたレジデュアル信号を利用して現在ブロックを復元する。
【００８３】
一方、ピクチャのレジデュアル信号の分布は領域別に異なり得る。例えば、特定領域内のレジデュアル信号は、予測方法によって値の分布が異なり得る。複数の互いに異なる変換領域に対して同じ変換カーネルを使用して変換を行う場合、変換領域内の値の分布と特性に応じて変換領域別にコーディング効率が異なり得る。それによって、複数の使用可能な変換カーネルのうち特定の変換ブロックの変換に使用される変換カーネルを適応的に選択すれば、コーディング効率が更に向上される。つまり、エンコーダ及びデコーダは、ビデオ信号の変換において、基本変換カーネル以外の変換カーネルを更に使用することができるように設定される。変換カーネルを適応的に選択する方法は、適応的多重コア変換（ａｄａｐｔｉｖｅ  ｍｕｌｔｉｐｌｅ  ｃｏｒｅ  ｔｒａｎｓｆｏｒｍ、ＡＴＭ）、または多重変換選択（ｍｕｌｔｉｐｌｅ  ｔｒａｎｓｆｏｒｍ  ｓｅｌｅｃｔｉｏｎ、ＭＴＳ）と称される。本開示では、説明の便宜上、変換及び逆変換を合わせて変換と称する。また、変換カーネル及び逆変換カーネルを合わせて変換カーネルと称する。
【００８４】
原本信号と画面間予測または画面内予測を介して生成し生成た予測信号の差の信号である残差（レジデュアル）信号は、ピクセルドメインの全領域にエネルギーが分散されている炒め、残差信号のピクセル値自体が符号化されれば圧縮効率が下がる問題が発生する。よって、ピクセルドメインの残差信号を変換符号化を介して周波数ドメインの低周波領域にエネルギーを集中させる過程が必要である。
【００８５】
ＨＥＶＣ（ｈｉｇｈ  ｅｆｆｉｃｉｅｎｃｙ  ｖｉｄｅｏ  ｃｏｄｉｎｇ）標準では、信号がピクセルドメインに均一に分布する場合（隣り合うピクセル値が類似する場合）に効率的なＤＣＴ−II（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｓｎｆｏｒｍ  ｔｙｐｅ−II）を殆ど使用し、画面内の予測された４×４ブロックにのみＤＳＴ−VII（ｄｉｓｃｒｅｔｅ  ｓｉｎｅ  ｔｒａｓｎｆｏｒｍ  ｔｙｐｅ−VII）を限定的に使用して、ピクセルドメインの残差信号を周波数領域に変換している。ＤＣＴ−II変換は、画面間予測を介して生成した残差信号（ピクセルドメインでエネルギーが均一に分布する場合）に適合している。しかし、画面内予測を介して生成した残差信号の場合、現在符号化ユニット周辺の復元された参照サンプルを使用して予測する画面内予測の特性上、参照サンプルと遠くなるほど残差信号のエネルギーが増加する傾向を示す。よって、残差信号を周波数領域に変換するためにＤＣＴ−II変換のみを使用する場合、高い符号化効率を達成することができない。
【００８６】
ＡＭＴは、予測方法に応じて多数個の予め設定されたカーネルのうち適応的に変換カーネルを選択する変換技法である。どの予測方法が使用されたのかによって、残差信号のピクセルドメインにおけるパターン（水平方向への信号特性、垂直方向への信号特性）が異なるため、単純にＤＣＴ−IIのみが残差信号の変換のために使用されたときより高い符号化効率が期待される。本発明において、ＡＭＴはその名称に限らず、ＭＴＳ（ｍｕｌｔｉｐｌｅ  ｔｒａｎｓｆｏｒｍ  ｓｅｌｅｃｔｉｏｎ）と称されてもよい。
【００８７】
図９は、１次変換で使用可能な複数の変換カーネルに対する基底関数を示す図である。
【００８８】
詳しくは、図９はＡＭＴで使用する変換カーネルの基底関数を示す図であって、ＡＭＴに適用されるＤＣＴ−II、ＤＣＴ−V（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ  ｔｙｐｅ−V）、ＤＣＴ−VIII（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ  ｔｙｐｅ−VIII）、ＤＳＴ−I（ｄｉｓｃｒｅｔｅ  ｓｉｎｅ  ｔｒａｎｓｆｏｒｍ  ｔｙｐｅ−I）、ＤＳＴ−VIIカーネルの数式を示す。
【００８９】
ＤＣＴとＤＳＴはそれぞれコサイン、サインの関数で表されるが、サンプル数Ｎに対する変換カーネルの基底関数をＴｉ（ｊ）で表す場合、インデックスｉは周波数ドメインにおけるインデックスを示し、インデックスｊは基底関数内のインデックスを示す。つまり、ｉが小さくなるほど低周波基底関数を示し、ｉが大きいほど高周波基底関数を示す。基底関数Ｔｉ（ｊ）は２次元行列で表せばi番目行のｊ番目の要素を示すが、図９に示した変換カーネルはいずれも分離可能な特性を有するため、残差信号Ｘに対して水平方向と垂直方向にそれぞれ変換を行うことができる。つまり、残差信号ブロックをＸとし、変換カーネル行列をＴとすれば、残差信号Ｘに対する変換はＴＸＴ’に表される。この際、Ｔ’は変換カーネル行列Ｔの転置（ｔｒａｎｓｐｏｓｅ）行列を意味する。
【００９０】
図９に示した基底関数によって定義される変換マトリックス値は、整数形態ではなく素数形態である。素数形態の値はビデオエンコーディング装置及びデコーディング装置にハードウェア的に具現されることが難しい可能性がある。よって、素数形態の値を含む原型（ｏｒｉｇｉｎａｌ）変換カーネルから整数近似化された変換カーネルがビデオ信号のエンコーディング及びデコーディングで使用される。整数形態の値を含む近似化された変換カーネルは、原型変換カーネルに対するスケーリング及びラウンディングを介して生成される。近似化された変換カーネルが含む整数値は、予め設定された個数のビットで表現可能な範囲内の値である。予め設定された個数のビットは８−ｂｉｔまたは１０−ｂｉｔである。近似化によってＤＣＴとＤＳＴの正規直交（ｏｒｔｈｏｇｏｎａｌ）性質が維持されない可能性がある。しかし、それによる符号化効率の損失が大きくないため、変換カーネルを整数形態に近似化させることがハードウェア的具現の側面で有利である。
【００９１】
図７乃至図８で説明した１次変換領域及び逆１次変換の場合、分離可能な変換カーネルに対し２次元行列で表して垂直方向と水平方向にそれぞれ変換を行うことであるため、２次元行列積演算が２回行われると考えられる。これは多くの演算量を伴うため、具現の観点で問題となり得る。よって、具現の観点でＤＣＴ−IIのようにバタフライ構造（ｂｕｔｔｅｒｆｌｙ  ｓｔｒｕｃｔｕｒｅ）またはハーフバタフライ構造（ｈａｌｆ  ｂｕｔｔｅｒｆｌｙ  ｓｔｒｕｃｔｕｒｅ）と、ハーフマトリックス乗算器（ｈｌａｆ  ｍａｔｒｉｘ  ｍｕｔｉｐｌｉｅｒ）の組み合わせ構造を使用して演算量を減らすことができるのか、または該当変換カーネルを具現の複雑度が低い変換カーネルに分解することができるのか（複雑度が低い行列の積で該当チャネルを表すことができるのか）が重要なイシューになり得る。そして、変換カーネルの要素（変換カーネルの行列要素）は演算のためにメモリに貯蔵されているべきであるため、カーネル行列を貯蔵するためのメモリ容量も具現の際に考慮すべきである。このような観点から、ＤＳＴ−VIIとＤＣＴ−VIIIの具現の複雑度は高い方であるため、ＤＳＴ−VII、ＤＣＴ−VIIIと類似した特性を示しながら具現の複雑度が低い変換はＤＳＴ−VIIとＤＣＴ−VIIIを代替することができる。
【００９２】
ＤＳＴ−IV（ｄｉｓｃｒｅｔｅ  ｓｉｎｅ  ｔｒａｎｓｆｏｒｍ  ｔｙｐｅ−IV）とＤＣＴ−IV（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ  ｔｙｐｅ−IV）は、それぞれＤＳＴ−VII、ＤＣＴ−VIIIを代替し得る候補と考えられる。サンプル数２Ｎに対するＤＣＴ−IIカーネルはサンプル数Ｎに対するＤＣＴ−IVカーネルを含んでおり、サンプル数Ｎに対するＤＳＴ−IVカーネルはサンプル数Ｎに対するＤＣＴ−IVカーネルから簡単な演算である符号反転と該当基底関数を逆順に整列することで具現することができるため、サンプル数２Ｎに対するＤＣＴ−IIから簡単にサンプル数Ｎに対するＤＳＴ−IVとＤＣＴ−IVを誘導することができる。
【００９３】
原本信号と予測信号との差である残差信号は予測方法によって信号のエネルギー分布が変わる特性を示すため、ＡＭＴまたはＭＴＳのように予測方法によって変換カーネルを適応的に選択すれば、符号化効率を上げることができる。また、図７乃至図８で説明したように、１次変換及び逆１次変換（１次変換に相応する逆変換）以外に追加の変換である２次変換及び逆２次変換（２次変換に相応する逆変換）を行って符号化効率を上げることができる。このような２次変換は、特に残差信号の水平及び垂直方向ではない方向に強いエネルギーが存在する可能性が高い画面内予測済み残差信号ブロックに対して、エネルギー圧縮（ｅｎｅｒｇｙ  ｃｏｍｐａｃｔｉｏｎ）を向上させる。上述したように、このような２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）と称される。そして、前記１次変換はコア変換（ｃｏｒｅ  ｔｒａｎｓｆｏｒｍ）と称される。
【００９４】
図１０は、本発明の一実施例による２次変換を行う復号化器で残差信号を復元する過程を示すブロック図である。まず、エントロピーコーダはビットストリームから残差信号に関するシンタックス要素をパージングし、逆二進化（ｄｅ−ｂｉｎａｒｉｚａｔｉｏｎ）を介して量子化係数が獲得される。デコーダは復元された量子化係数に逆量子化を行って変換係数を獲得し、変換係数に逆変換を行って残差信号ブロックを復元する。逆変換は変換省略（ｔｒａｎｓｆｏｒｍ  ｓｋｉｐ、ＴＳ）が適用されないブロックに適用される。逆変換は復号化器で２次逆変換、１次逆変換の順に行われる。この際、２次逆変換は省略されてもよい。画面間予測済みブロックには２次逆変換が行われずに省略されてもよい。または、ブロックサイズの条件に応じて２次逆変換が省略されてもよい。復元された残差信号には量子化誤差が含まれており、２次変換は残差信号のエネルギー分布を変化させることで、１次変換のみを行った際より量子化誤差を減らすことができる。
【００９５】
図１１は、本発明の一実施例による２次変換を行う復号化器で残差信号を復元する過程をブロックレベルで示す図である。残差信号の復元は変換変換ユニット（ｔｒａｎｓｆｏｒｍ  ｕｎｉｔ、ＴＵ）またはＴＵ内のサブ−ブロック単位で行われる。図１１は２次変換が適用される残差信号ブロックの復元過程を示しており、逆量子化された変換係数ブロックに対して２次逆変換が先に行われる。デコーダは、ＴＵ内のＷ×Ｈ（Ｗ：幅、水平サンプルの数、Ｈ：高さ、垂直サンプルの数）個の全てのサンプルに対して２次逆変換を行ってもよいが、複雑度を考慮して最も影響力が高い低周波領域である左−上端Ｗ’×Ｈ’サイズのサブ−ブロックに対してのみ２次逆変換を行ってもよい。この際、Ｗ’はＷと同じであるか小さい。Ｈ’はＨと同じであるか小さい。左上端サブ−ブロックサイズであるＷ’×Ｈ’はＴＵサイズに応じて異なるように設定される。例えば、ｍｉｎ（Ｗ，Ｈ）＝４であれば、Ｗ’とＨ’はいずれも４に設定される。ｍｉｎ（Ｗ，Ｈ）＞＝８であれば、Ｗ’とＨ’はいずれも８に設定される。ｍｉｎ（ｘ，ｙ）は、ｘがｙと同じであるか小さい場合ｘを返還し、ｘがｙより同じであればｙを返還する演算を示す。デコーダは２次逆変換を行った後、ＴＵ内の左−上端Ｗ’×Ｈ’サイズのサブ−ブロック変換係数を獲得し、全体のＷ×Ｈサイズの変換係数ブロックに対して１次逆変換を行って、残差信号ブロックを復元する。
【００９６】
２次変換の活性化または適用可能可否は、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、ピクチャヘッダ、スライスヘッダ、タイルグループヘッダなど、上位レベルシンタックス（Ｈｉｇｈ  Ｌｅｖｅｌ  Ｓｙｎｔａｘ、ＨＬＳ）ＲＢＳＰのうち少なくともいずれか一つに１−ｂｉｔフラッグの形態で含まれて指示される。更に、２次変換が適用可能であれば、ＨＬＳ  ＲＢＳＰのうち少なくともいずれか一つに１−ｂｉｔフラッグの形態で２次変換で考慮する左上端サブ−ブロックのサイズが指示されてもよい。例えば、４×４、８×８サイズのサブ−ブロックを考慮する２次変換に８×８サイズのサブ−ブロックが使用可能であるのかは、ＨＬＳ  ＲＢＳＰのうち少なくともいずれか一つに１−ｂｉｔフラッグで指示される。
【００９７】
２次変換の活性化または適用可能可否が上位レベル（例えば、ＨＬＳ）で指示されれば、２次変換が提要されるのか否かは符号化ユニット（ｃｏｄｉｎｇ  ｕｎｉｔ、ＣＵ）レベルで１−ｂｉｔフラッグで指示される。また、現在ブロックに２次変換が適用されれば、符号化ユニットレベルで２次変換に使用される変換カーネルを示すインデックスが指示される。デコーダは、予測モードによって予め設定された変換カーネルセット内で該当インデックスが指示する変換カーネルを使用し、２次変換が適用されるブロックに２次逆変換を行う。変換カーネル示すインデックスは、切り捨てられた単項（ｔｒｕｎｃａｔｅ  ｕｎａｒｙ）、または固定長二進化方法を使用して二進化される。ＣＵレベルで２次変換が適用されるのか否かを示す１−ｂｉｔフラッグと２次変換に使用される変換カーネルを指示するインデックスは一つのシンタックス要素を使用して指示されてもよく、本発明ではそれをｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］またはｌｆｎｓｔ＿ｉｄｘと称するが、本発明はこれに限らない。一実施例として、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］の最初のビットは、ＣＵレベルで２次変換の適用可否を示す。そして、残りのビットは２次変換に使用された変換カーネルを指示するインデックスを示す。つまり、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は、２次変換（ＬＦＮＳＴ）の適用可否、及び２次変換が適用される場合に使用される変換カーネルを指示するインデックスを示す。このようなｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は、コンテキスト（ｃｏｎｔｅｘｔ）によって適応的に符号化するＣＡＢＡＣ（ｃｏｎｔｅｘｔ−ｂａｓｅｄ  ａｄａｐｔｉｖｅ  ｂｉｎａｒｙ  ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｉｎｇ）、ＣＡＶＬＣ（ｃｏｎｔｅｘｔ−ｂａｓｅｄ  ａｄａｐｔｉｖｅ  ｖａｒｉａｂｌｅ  ｌｅｎｇｔｈ  ｃｏｄｉｎｇ）などのエントロピーコーダを介して符号化される。現在ＣＵに対してＣＵサイズより小さい多数のＴＵに分割されれば２次変換は適用されず、２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はシグナリングなしに０と設定される。例えば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が０であれば２次変換が適用されないことを示す。それに対し、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が０より大きければ２次変換が適用されることを示し、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］に基づいて２次変換に使用された変換カーネルが選択される。
【００９８】
上述したように、コーディングツリーユニット、クォードツリーのリーフノード、マルチ−タイプツリーのリーフノードはコーディングユニットになり得る。コーディングユニットが最大変換長に比べ大きくなければ、該当コーディングユニットはそれ以上分割されずに予測及び／または変換の単位として使用される。一実施例として、現在コーディングユニットの幅または高さが最大変換長さより大きければ、現在コーディングユニットは分割に関する明示的シグナリングなしに複数の変換ユニットに分割される。コーディングユニットのサイズが最大変換サイズより大きければ、シグナリングなしに複数個の変換ブロックに分割される。この場合、２次変換を適用したら性能が低下し複雑度が増加するため、２次変換が適用される最大コーディングブロック（またはコーディングブロックの最大サイズ）は制限的である。最大コーディングブロックのサイズは、最大変換サイズと同じである。または、最大コーディングブロックのサイズは、予め設定されたコーディングブロックのサイズと定義される。一実施例として、予め設定された値は６４、３２、１６であってもよいが、本発明はこれに限らない。この際、予め設定された値（または最大変換サイズ）と比較される値は、長辺の長さまたはサンプルの個数と定義される。
【００９９】
一方、１次変換で使用されるＤＣＴ−II、ＤＳＴ−VII、ＤＣＴ−VIII基底関数に基づく変換カーネルは分離可能な特性を有する。よって、Ｎ×Ｎサイズの残差ブロック内のサンプルに対して垂直／水平方向の２回の変換が行われ、変換カーネルのサイズはＮ×Ｎである。それに対し、２次変換の場合、変換カーネルが分離不可能な（ｎｏｎ−ｓｅｐａｒａｂｌｅ）特性を有する。よって、２次変換で考慮されるサンプル数がｎ×ｎであれば、１回の変換が行われる。この際、変換カーネルのサイズは（ｎ＾２）×（ｎ＾２）である。例えば、左−上端４×４係数ブロックに２次変換を行う場合、１６×１６サイズの変換カーネルが適用される。そして、左−上端８×８係数ブロックに２次変換を行う場合、６４×６４サイズの変換カーネルが適用される。６４×６４サイズの変換カーネルは多量の積演算を伴うため、エンコーダとデコーダに大きな負担となり得る。よって、２次変換で考慮されるサンプル数が減る場合、演算量と変換カーネルの貯蔵に必要なメモリを減らすことができる。
【０１００】
図１２は、本発明の一実施例による減少されたサンプル数を移用する２次変換を適用する方法を示す図である。本発明の一実施例によると、２次変換は２次変換カーネル行列と１次変換された係数ベクトルの積で表され、１次変換された係数を他の空間にマッピングと解釈される。この際、２次変換される係数の個数を減らせば、つまり、２次変換カーネルを構成する基底ベクトルの数を減らせば、２次変換で必要な演算量と変換カーネルの貯蔵に必要なメモリ容量を減らすことができる。例えば、左−上端８×８係数ブロックに２次変換を行う際、２次変換される係数の個数を１６個に減らせば、１６（行）×６４（列）サイズ（または１６（行）×４８（列）サイズ）の２次変換カーネルが適用される。エンコーダの変換部は、変換カーネルマトリックスを構成するそれぞれの行ベクトルと１次変換された係数ベクトルの内積（ｉｎｎｅｒ  ｐｒｏｄｕｃｔ）を介して２次変換された係数ベクトルを獲得する。エンコーダ及びデコーダの逆変換部は、変換カーネルマトリックスを構成するそれぞれの列ベクトルと２次変換された係数ベクトルの内積を介して１次変換された係数ベクトルを獲得する。
【０１０１】
図１２を参照すると、エンコーダは、まず残差信号ブロックに対して１次変換（ｆｏｒｗａｒｄ  ｐｒｉｍａｒｙ  ｔｒａｎｓｆｏｒｍ）を行って１次変換された係数ブロックを得る。１次変換された係数ブロックのサイズをＭ×Ｎとすれば、ｍｉｎ（Ｍ，Ｎ）の値が４であるイントラ予測されたブロックに対し、１次変換された係数ブロックの左−上端４×４サンプルに４×４  ２次変換（ｆｏｒｗａｒｄ  ｓｅｃｏｎｄａｒｙ  ｔｒａｎｓｆｏｒｍ）が行われる。ｍｉｎ（Ｍ，Ｎ）の値が８以上のイントラ予測されたブロックに対しは、１次変換された係数ブロックの左−上端８×８サンプルに８×８  ２次変換が行われる。８×８  ２次変換の場合、多量の演算量とメモリを伴うため、８×８サンプルのうち一部のみが活用されてもよい。一実施例において、符号化効率を上げるために、ｍｉｎ（Ｍ，Ｎ）の値が４で、ＭまたはＮが８より大きい長方形ブロックに対して（例えば、４×１６、１６×４サイズの長方形ブロック）、１次変換された係数ブロック内の２つの左−上端４×４サブブロックにそれぞれ４×４  ２次変換が行われてもよい。
【０１０２】
２次変換は２次変換カーネル行列と入力ベクトルの積で計算されるため、まず、エンコーダは１次変換された係数ブロックの左−上端サブブロック内の係数をベクトルの形態に構成する。ベクトルで構成する方法は、イントラ予測モードに依存的である。例えば、イントラ予測モードが前記図６で示したイントラ予測モードのうち３４番角度モード以下であれば、エンコーダは１次変換された係数ブロックの左−上端サブブロックを水平方向にスキャンして係数をベクトルに構成する。１次変換された係数ブロックの左−上端ｎ×ｎブロックのｉ番目の行、ｊ番目の列の元素をｘ（ｉ、ｊ）と表すと、ベクトル化された係数は、［Ｘ（０，０）、Ｘ（０，１）、…、Ｘ（０，ｎ−１）、Ｘ（１，０）、Ｘ（１，１）、…、Ｘ（１，ｎ−１）、…、Ｘ（ｎ−１，０）、Ｘ（ｎ−１，１）、…、Ｘ（ｎ−１，ｎ−１）］で表される。それに対し、イントラ予測モードが３４番角度モードより大きければ、１次変換された係数ブロックの左−上端サブブロックを垂直方向にスキャンして係数をベクトルに構成する。ベクトル化された係数は、［Ｘ（０，０）、Ｘ（１，０）、…、Ｘ（ｎ−１，０）、Ｘ（０，１）、Ｘ（１，１）、…、Ｘ（ｎ−１，１）、…、Ｘ（０，ｎ−１）、Ｘ（１，ｎ−１）、…、Ｘ（ｎ−１，ｎ−１）］で表される。演算量を減らすために、８×８  ２次変換で８×８サンプルのうち一部のみを活用する場合、上述したベクトル構成方法においてｉ＞３でｊ＞３である係数ｘ＿ｉｊは含まれなくてもよい。この場合、４×４  ２次変換では１６個の１次変換された係数が２次変換の入力となり得る。８×８  ２次変換では４８個の１次変換された係数が２次変換の入力となり得る。
【０１０３】
エンコーダは、ベクトル化された１次変換係数ブロックの左−上端サブブロックサンプルと２次変換カーネルマトリックスの積を介して２次変換された係数を獲得する。２次変換に適用される２次変換カーネルは、変換ユニットまたは変換ブロックのサイズ、イントラモード、及び変換カーネルを指示するシンタックス要素に応じて決定される。上述したように、２次変換される係数の個数が減ると、演算量と変換カーネルの貯蔵に必要なメモリを減らすことができる。よって、現在変換ブロックのサイズに応じて２次変換される係数の個数が決定される。例えば、エンコーダは、４×４ブロックの場合、長さ１６のベクトルと８（行）×１６（列）変換カーネルマトリックスの積を介して長さが８の係数ベクトルを獲得する。８（行）×１６（列）変換カーネルマトリックスは、１６（行）×１６（列）変換カーネルマトリックスを構成する最初の基底ベクトルから８番目の基底ベクトルに基づいて獲得される。エンコーダは、４×ＮまたはＭ×４ブロック（ＮとＭは８以上）の場合、長さ１６のベクトルと１６（行）×１６（列）変換カーネルマトリックスの積を介して長さが１６の係数ベクトルを獲得する。エンコーダは、８×８ブロックの場合、長さ４８のベクトルと８（行）×４８（列）変換カーネルマトリックスの積を介して長さが８の係数ベクトルを獲得する。８（行）×４８（列）変換カーネルマトリックスは、１６（行）×４８（列）変換カーネルマトリックスを構成する最初の基底ベクトルから８番目の基底ベクトルに基づいて獲得される。エンコーダは、８×８を除いたＭ×Ｎブロック（ＭとＮは８以上）の場合、長さ４８のベクトルと１６（行）×４８（列）変換カーネルマトリックスの積を介して長さが１６の係数ベクトルを獲得する。
【０１０４】
本発明の一実施例によると、２次変換された係数はベクトルの形態であるため、２次元形態のデータで表される。予め設定されたスキャン順によって、２次変換された係数は左−上端係数サブ−ブロックに構成される。一実施例において、予め設定されたスキャン順は右上側対角スキャン順である。本発明はこれに限らず、右上側対角スキャン順は後述する図１３、図１４で説明する方法に基づいて決定される。
【０１０５】
また、本発明の一実施例によると、２次変換された係数を含む全体変換変換ユニットの変換係数は量子化（ｑｕａｎｔｉｚａｔｉｏｎ）の後、ビットストリームに含まれて伝送される。ビットストリームは２次変換に関するシンタックス要素を含む。詳しくは、ビットストリームは、現在ブロックに２次変換が適用されるのか否かに関する情報、及び前記現在ブロックに適用される変換カーネルを指示する情報を含む。
【０１０６】
デコーダは、まずビットストリームから量子化された変換係数をパージングし、逆−量子化（ｄｅ−ｑｕａｎｔｉｚａｔｉｏｎ）を介して変換係数を獲得する。逆−量子化はスケーリング（ｓｃａｌｉｎｇ）と称される。デコーダは、２次変換に関するシンタックス要素に基づいて現在ブロックに２次逆変換が行われるのかを決定する。現在変換ユニットまたは変換ブロックに２次逆変換が適用されれば、変換ユニットまたは変換ブロックのサイズに応じて８個または１６個の変換係数が２次逆変換の入力になり得る。２次逆変換の入力となる係数の個数は、エンコーダの２次変換で出力される係数の個数と一致する。例えば、変換ユニットまたは変換ブロックのサイズが４×４または８×８であれば、８個の変換係数が２次逆変換の入力となり、そうでなければ、１６個の変換係数が２次逆変換の入力となる。変換ユニットのサイズがＭ×Ｎであれば、ｍｉｎ（Ｍ，Ｎ）の値が４であるイントラ予測済みブロックに対し、変換係数ブロックの左−上端４×４サブブロックの１６個または８個の係数に４×４  ２次逆変換が行われる。ｍｉｎ（Ｍ，Ｎ）が８以上のイントラ予測済みブロックに対しは、変換係数ブロックの左−上端４×４サブブロックの１６個または８個の係数に８×８  ２次変換が行われる。一実施例において、符号化効率を上げるために、ｍｉｎ（Ｍ，Ｎ）が４で、ＭまたはＮが８より大きければ（例えば、４×１６、１６×４サイズの長方形ブロック）、係数ブロック内の２つの左−上端４×４サブブロックにそれぞれ４×４  ２次逆変換が行われてもよい。
【０１０７】
本発明の一実施例によると、２次逆変換は２次逆変換カーネル行列と入力ベクトルの積で計算されるため、デコーダは、先に入力される逆−量子化された変換係数ブロックを予め設定されたスキャン順によってベクトルの形態に構成する。一実施例によると、予め設定されたスキャン順は右上側対角スキャン順であるが、本発明はこれに限らず、右上側対角スキャン順は後述する図１３、図１４で説明する方法に基づいて決定される。
【０１０８】
また、本発明の一実施例によると、デコーダは、ベクトル化された変換係数と２次逆変換カーネルマトリックスの積を介して１次変換された係数を獲得する。この際、２次逆変換カーネルは、変換ユニットまたは変換ブロックのサイズ、イントラモード及び変換カーネルを指示するシンタックス要素に応じて決定される。２次逆変換カーネル行列は２次変換カーネル行列の転置行列である。具現の複雑度を考慮して、カーネル行列の元素は１０−ｂｉｔまたは８−ｂｉｔの正確度で表される整数である。現在変換ブロックのサイズに基づいて、２次逆変換の出力となるベクトルの長さが決定される。例えば、４×４ブロックの場合、長さ８のベクトルと８（行）×１６（列）変換カーネルマトリックスの積を介して長さ１６の係数ベクトルが獲得される。８（行）×１６（列）変換カーネルマトリックスは、１６（行）×１６（列）変換カーネルマトリックスを構成する最初の基底ベクトルから８番目の基底ベクトルに基づいて獲得される。４×ＮまたはＭ×Ｎブロック（ＮとＭは８以上）の場合、長さ１６のベクトルと１６（行）×１６（列）変換カーネルマトリックスの積を介して長さが１６の係数ベクトルが獲得される。８×８ブロックの場合、長さ８のベクトルと８（行）×４８（列）変換カーネルマトリックスの積を介して長さが４８の係数ベクトルを獲得する。８（行）×４８（列）変換カーネルマトリックスは、１６（行）×４８（列）変換カーネルマトリックスを構成する最初の基底ベクトルから８番目の基底ベクトルに基づいて獲得される。８×８を除いたＭ×Ｎブロック（ＭとＮは８以上）の場合、長さ１６のベクトルと１６（行）×４８（列）変換カーネルマトリックスの積を介して長さが４８の係数ベクトルを獲得する。
【０１０９】
一実施例において、２次逆変換を介して獲得した１次変換係数はベクトルの形態であるため、デコーダはこれを更に２次元形態のデータに表すことができるが、これはイントラモードに依存的である。この際、エンコーダで適用したイントラモードに基づくマッピング関係が同じく適用される。上述したように、イントラ予測モードが３４番角度モード以下であれば、デコーダは２次逆変換された係数ベクトルを水平方向にスキャンし、２次元形態の変換係数アレイを獲得する。デコーダは、イントラ予測モードが３４番角度モードより大きければ、２次逆変換された係数ベクトルを垂直方向にスキャンし、２次元形態の変換係数アレイを獲得する。デコーダは、２次逆変換を行って獲得した変換係数を含む全ての変換ユニットまたは変換ブロックサイズの変換係数ブロックに対して１次逆変換を行い、残差信号を獲得する。
【０１１０】
図１２では示していないが、変化または逆変換の後、変換カーネルによって増加するスケールを補正するために、変換または逆変換を適用するに当たって、ビットシフト演算を利用したスケーリング過程が含まれてもよい。
【０１１１】
図１３は、本発明の一実施例による右上側対角スキャン順の決定方法を示す図である。本発明の一実施例によると、エンコーディングまたはデコーディングの際、スキャン順を初期化する過程が行われる。ブロックサイズに応じてスキャン順情報を含む配列の初期化が行われる。詳しくは、ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ、ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔの組み合わせてに対し、１＜＜ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ、１＜＜ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔを入力とする図１３に示した右上側対角スキャン順の配列初期化過程が呼び出される（または行われる）。右上側対角スキャン順の配列初期化過程の出力は、ＤｉａｇＳｃａｎＯｒｄｅｒ［ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ］［ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔ］に割り当てられる。ここで、ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ及びｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔは、それぞれブロックの幅及び高さに対して底が２のログをとった値を示す変数であり、［０，４］範囲の値である。
【０１１２】
図１３に示した右上側対角スキャン順の配列初期化過程を介し、エンコーダ／デコーダは、入力されたブロックの幅であるｂｌｋＷｉｄｔｈ、ブロックの高さであるｂｌｋＨｅｉｇｈｔに対して配列ｄｉａｇＳｃａｎ［ｓＰｏｓ］［ｓＣｏｍｐ］を出力する。配列のインデックスであるｓＰｏｓはスキャンポジション（スキャンインデックス）を示し、［０，ｂｌｋＷｉｄｔｈ＊ｂｌｋＨｅｉｇｈｔ−１］の範囲の値である。配列のインデックスであるｓＣｏｍｐが０であればｓＰｏｓは水平コンポーネント（ｘ）を示し、ｓＣｏｍｐが１であればｓＰｏｓは垂直コンポーネント（ｙ）を示す。図１３に示したアルゴリズムは、右上側対角スキャン順によってスキャンポジションｓＰｏｓの際の２次元座標上のｘ座標値、ｙ座標値が、それぞれｄｉａｇＳｃａｎ［ｓＰｏｓ］［０］、ｄｉａｇＳｃａｎ［ｓＰｏｓ］［１］に割り当てられると解釈される。つまり、ＤｉａｇＳｃａｎＯｒｄｅｒ［ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ］［ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔ］［ｓＰｏｓ］［ｓＣｏｍｐ］配列（またはアレイ）に貯蔵された値は、ブロックの幅と高さがそれぞれ１＜＜ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ、１＜＜ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔであるブロックの右上側対角スキャン順において、ｓＰｏｓスキャン位置（スキャンインデックス）の際のｓＣｏｍｐに当たる座長値を意味する。
【０１１３】
図１４は、本発明の一実施例による右上側対角スキャン順をブロックサイズによって示す図である。図１４（ａ）を参照すると、ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈとｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔがいずれも２であれば、４×４サイズのブロックを意味する。図１４（ｂ）を参照すると、ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈとｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔがいずれも３であれば、８×８サイズのブロックを意味する。図１４において、灰色のシェード領域に表された数字はスキャン位置（スキャンインデックス）ｓＰｏｓを示す。ｓＰｏｓ位置におけるｘ座標値、ｙ座標値がそれぞれＤｉａｇＳｃａｎＯｒｄｅｒ［ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ］［ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔ］［ｓＰｏｓ］［０］、ＤｉａｇＳｃａｎＯｒｄｅｒ［ｌｏｇ２ＢｌｏｃｋＷｉｄｔｈ］［ｌｏｇ２ＢｌｏｃｋＨｅｉｇｈｔ］［ｓＰｏｓ］［１］に割り当てられる。
【０１１４】
エンコーダ／デコーダは、上述したスキャン順に基づいて変換係数情報をコーディングする。本発明では右上側スキャン方法が使用される場合に基づく実施例を主に説明するが、本発明はこれに限らず、これ以外の公知の他のスキャン方法に対しても適用することができる。
【０１１５】
以下、２次変換に関するデコーディング過程を詳しく説明する。説明の便宜上、２次変換に関する過程についてデコーダを主に説明するが、以下で説明する実施例は実質的に同じ方法でエンコーダに適用される。
【０１１６】
図１５は、コーディングユニットレベルで２次変換を指示する方法を示す図である。２次変換はコーディングユニットレベルで指示され、２２次変換に関するシンタックス要素がｃｏｄｉｎｇ＿ｕｎｉｔシンタックス構造に含まれる。ｃｏｄｉｎｇ＿ｕｎｉｔシンタックス構造はコーディングユニットに関するシンタックス要素を含む。この際、ピクチャの左−上端ルマサンプルを基準に現在ブロックの左−上端ルマサンプルの座標である（ｘ０，ｙ０）ブロックの幅であるｃｂＷｉｄｔｈ、ブロックの高さであるｃｂＨｅｉｇｈｔ、及び符号化ツリーの種類を示す変数であるｔｒｅｅＴｙｐｅがｃｏｄｉｎｇ＿ｕｎｉｔシンタックス構造の入力である。ルマとクロマの間には相関関係が存在するため、ルマとクロマを同じ符号化構造で符号化すると効率的な映像圧縮が可能になる。また、符号化効率を上げるために、ルマとクロマは互いに異なる符号化構造で符号化されてもよい。変数ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであれば、ルマとクロマが同じ符号化ツリー構造で符号化されていることを意味し、コーディングユニットはルマコーディングブロックとカラーフォーマットに応じてクロマコーディングブロックを含む。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡであれば、ルマとクロマが互いに異なる符号化ツリーで符号化されていることを意味し、現在処理されているツリーがルマに対するツリーであることを示す。この際、コーディングユニットはルマコーディングブロックのみを含む。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば、ルマとクロマが互いに異なる符号化ツリーで符号化されていることを意味し、現在処理されているツリーがクロマに対するツリーであることを示す。この際、コーディングユニットはカラーフォーマットによってクロマコーディングブロックを含む。
【０１１７】
ｃｏｄｉｎｇ＿ｕｎｉｔシンタックス構造では現在コーディングユニットに対する予測方法が指示され、変数ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］は現在ブロックに対する予測方法を示す。ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］がＭＯＤＥ＿ＩＮＴＲＡであれば、現在ブロックにイントラ予測方法が適用されていることを示し、ＭＯＤＥ＿ＩＮＴＥＲであれば、現在ブロックにインター予測方法が適用されていることを示す。また、ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］がＭＯＤＥ＿ＩＢＣであれば、現在ピクチャの復元が完了された領域から参照ブロックを生成して予測を行うＩＢＣ（Ｉｎｔｒａ  Ｂｌｏｃｋ  Ｃｏｐｙ）予測が現在ブロックに適用されていることを示す。変数ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］の値に応じて、予測方法に関するシンタックス要素の処理が行われる。例えば、変数ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］がイントラ予測を示せば、デコーダはイントラ予測モード、参照ラインインデックス、ＩＳＰ（Ｉｎｔｒａ  Ｓｕｂ−Ｐａｒｔｉｔｉｏｎｓ）予測に関する情報を含むシンタックス要素をパージングするか、予め設定された方法によってイントラ予測モードに関する変数を設定する。
【０１１８】
予測方法に関するシンタックス要素を処理した後、残差信号に関するシンタックス要素の処理が行われる。ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅ（）シンタックス構造は変換ツリー（ｔｒａｎｓｆｏｒｍ  ｔｒｅｅ）に対するシンタックス構造であって、変換ツリーはコーディングユニットと同じサイズをルートノードとしてルートノードより小さいサイズのノードに分割され、変換ツリーのリーフノードは変換ユニットになる。ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造は変換ツリーの分割に関する情報を含む。
【０１１９】
イントラ予測方法のうち一つとして、ＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）予測がある。ＰＣＭ予測が現在コーディングユニットの予測に使用されれば変換と量子化が行われないため、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造が存在しない。つまり、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造が存在しないため、デコーダは、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造に対する動作を行わない。ＰＣＭ予測は、現在コーディングユニットにイントラ予測が指示される場合、ｐｃｍ＿ｆｌａｇ［ｘ０］［ｙ０］で指示される。つまり、ｐｃｍ＿ｆｌａｇ［ｘ０］［ｙ０］が１であれば、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造に対するデコーダの動作は行われない。一方、現在コーディングユニットに対してｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造が存在するのか否かは１−ｂｉｔフラッグで指示され、これを本発明ではｃｕ＿ｃｂｆと称するが、これに限らない。デコーダはｃｕ＿ｃｂｆパージングするか、ｃｕ＿ｃｂｆがパーシングされなければ、予め設定された方法によってｃｕ＿ｃｂｆを設定する。ｃｕ＿ｃｂｆが１であれば、デコーダはｔｒａｓｎｆｏｒｍ＿ｔｒｅｅシンタックス構造に対する動作を行う。現在コーディングユニットの予測にインター予測またはＩＢＣ予測が使用されれば、現在コーディングユニットの予測にマージ予測も使用可能である。マージ予測が使用されるのか否かは、ｍｅｒｇｅ＿ｆｌａｇ［ｘ０］［ｙ０］で指示される。現在ブロックにマージ予測が使用されると指示されれば（ｍｅｒｇｅ＿ｆｌａｇ［ｘ０］［ｙ０］＝＝１）ｃｕ＿ｃｂｆはパージングされず、予め設定された方法によってｃｕ＿ｃｂｆの値が決定される。予め設定された方法は、スキップモードを指示するｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］に基づく方法である。例えば、ｃｕ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が１であればｃｕ＿ｃｂｆは０と推論（ｉｎｆｅｒ）され、そうでなければｃｕ＿ｃｂｆは１と推論される。ｃｕ＿ｃｂｆが１であれば、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅシンタックス構造の処理が行われ、０ではない量子化係数（ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｅｆｆｉｃｉｅｎｔ）の個数を測定するためのカウンタ値は０と初期化される。
【０１２０】
ｎｕｍＳｉｇＣｏｅｆｆ変数は現在コーディングユニットの変換ユニット内に存在する０ではない量子化係数の個数を示す変数を意味し、ｎｕｍＳｉｇＣｏｅｆｆの値によって２次変換に関するシンタックス要素の処理が異なり得る。
【０１２１】
ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ変数は現在コーディングユニットが含む変換ユニット内の特定位置上に存在する０ではない量子化係数の個数を示す変数を意味し、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆの値によって２次変換に関するシンタックス要素の処理が異なり得る。
【０１２２】
ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅにおいて、変換ツリーが分割され、変換ツリーのリーフノードは変換ユニットである。ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅはリーフノードである変換ユニットに関するシンタックス構造であるｔｒａｓｎｆｏｒｍ＿ｕｎｉｔシンタックス構造を含む。ｔｒａｓｎｆｏｒｍ＿ｕｎｉｔは変換ユニットに関するシンタックス要素を処理し、該当変換ユニットが０ではない係数を一つ以上含めば、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を含む。ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造は、量子化された変換係数に関するシンタックス構造、及びそれに関する処理を含む。現在処理されるツリーのタイプに応じて変換ユニットを構成する変換ブロックが異なり得る。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであれば、現在変換ユニットはルマ変換ブロック及びカラーフォーマットに応じてクロマ変換ブロックを含む。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡであれば、現在変換ユニットはルマ変換ブロックを含む。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば、現在変換ユニットはクロマ変換ブロックを含む。ｔｒａｓｎｆｏｒｍ＿ｕｎｉｔシンタックス構造は、ｔｒｅｅＴｙｐｅに応じて、現在変換ユニットが含む変換ブロックに対し変換ブロックが０ではない係数を一つ以上含むのかを指示する情報であるＣＢＦ（ｃｏｄｅｄ  ｂｌｏｃｋ  ｆｌａｇ）情報を含む。前記ＣＢＦ情報は、カラー成分別に指示される情報である。例えば、現在変換ユニットのルマ変換ブロックに対するＣＢＦの値がルマ変換ブロックが０ではない係数を一つ以上含まないことを示せば、ルマ変換ブロックの係数はいずれも０であるため、ルマ変換ブロックに対するｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造は処理されない。他の例として、現在変換ユニットのクロマＣｂ変換ブロックに対するＣＢＦの値がクロマＣｂ変換ブロックが０ではない係数を一つ以上含むことを示せば、現在変換ユニットのＣｂ変換ブロックに対するｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造は存在する。
【０１２３】
現在ブロックに２次変換が適用されのか否かは、ＣＵレベルで指示される。２次変換が適用されれば、更に２次変換に使用される変換カーネルを示すインデックスが指示されてもよい。図11で説明したように、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素を使用して、現在ブロックに２次変換が適用されるのか否かが指示される。ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］の最初のビットは、現在コーディングユニットに２次変換の適用されるのか否かを示す。ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］の最初のビットが０であれば、つまり、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が０であれば、現在ブロックに２次変換が適用されていないことを示す。それに対し、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］の最初のビットが１であれば、つまり、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が０より大きければ（ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］＞０）、現在ブロックに２次変換が適用されていることを示す。この際、２次変換に使用された変換カーネルを指示するために追加のビットが使用され、追加のビットを介して２次変換カーネルを指示するインデックスがシグナリングされる。
【０１２４】
ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素は、後述する条件を満足すればパージングされる。それに対し、後述する条件が満足されなければ、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は現在コーディングユニットに存在せず、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は０に設定される。
【０１２５】
言い換えれば、後述するｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素パージング条件を含む第１実施例乃至第４実施例で説明する条件が満足されれば、エンコーダは、現在コーディングユニットに対するｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素を含むビットストリームを生成する。それに対し、後述する条件が満足されなければ、エンコーダが生成するビットストリームには現在コーディングユニットに対するｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素が含まれず、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は０に設定される。このようなビットストリームを受信したデコーダは、後述する条件に基づいてｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１２６】
ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素のパージング条件
【０１２７】
i）Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４
【０１２８】
まず、第１条件はブロックのサイズに関し、ブロックの幅及び高さがそれぞれ４ピクセル以上であれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１２９】
詳しくは、デコーダは２次変換を適用可能なブロックサイズ条件を検査する。変数ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣはカラーフォーマットによって設定されるものであって、それぞれピクチャのルマ成分の幅、高さ対比のクロマ成分の幅、高さの比を示す。例えば、４：２：０カラーフォーマット映像は、ルマサンプル４個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも２に設定される。他の例として、４：４：4カラーフォーマット映像は、ルマサンプル１個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも１に設定される。現在ブロックの水平方向のサンプル数であるｌｆｎＷｉｄｔｈ、垂直方向のサンプル数であるｌｆｎＨｅｉｇｈｔは、ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣに基づいて設定される。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであればコーディングユニットはクロマ成分のみを含むため、クロマコーディングブロックの水平方向のサンプル数はルマコーディングブロックの幅であるｃｂｗｉｄｔｈをＳｕｂＷｉｄｔｈＣで割った値と同じである。同じく、クロマコーディングブロックの垂直方向のサンプル数は、ルマコーディングブロックの高さであるｃｂＨｅｉｇｈｔをＳｕｂＨｅｉｇｈｔＣで割った値と同じである。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであるかＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡであれば、コーディングユニットはルマ成分を含むため、ｌｆｎＷｉｄｔｈ、ｌｆｎＨｅｉｇｈｔはそれぞれｃｂｗｉｄｔｈ、ｃｂＨｅｉｇｈｔに設定される。２２次変換を適用可能なブロックの最小条件は４×４であるため、Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４を満足すれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０１３０】
ii）ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇ＝＝１
【０１３１】
第２条件は２次変換の活性化または適用可能可否を指示するフラッグ値に関し、２次変換の活性化または適用可能可否を指示するフラッグ（ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇ）の値が１に設定されれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１３２】
詳しくは、２次変換は上位レベルシンタックスＲＢＳＰで指示される。ＳＰＳ、ＰＰＳ、ＶＰＳ、タイルグループヘッダ、スライスヘッダのうち少なくとも一つに２次変換の活性化及び適用可能可否を指示する１−ｂｉｔサイズを有するフラッグが含まれる。ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが１であれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素がコーディングユニットシンタックス内に存在することを示す。ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが０であれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素がコーディングユニットシンタックス内に存在しないことを示す。
【０１３３】
iii）ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］＝＝ＭＯＤＥ＿ＩＮＴＲＡ
【０１３４】
第３条件は予測モードに関し、２次変換はイントラ予測されたブロックにのみ適用される。よって、現在ブロックがイントラ予測されたブロックであれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１３５】
iv）ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ＝＝ＩＳＰ＿ＮＯ＿ＳＰＬＩＴ
【０１３６】
第４条件はＩＳＰ予測方式が適用されるのか否かに関し、現在ブロックにＩＳＰが適用されていなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１３７】
詳しくは、図１１を参照して説明したように、現在ＣＵに対してＣＵサイズより小さい多数の変換ユニットに分割される場合、分割された変換ユニットには２次変換はが適用されない。この際、２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。現在ＣＵに対して変換ツリーよりＣＵサイズが小さい多数の変換ユニットに分割される場合、ＩＳＰ予測が現在コーディングユニットに適用される場合を含む。ＩＳＰ予測方法は、現在コーディングユニットにイントラ予測が適用される場合、予め設定された分割方法によって変換ツリーをＣＵサイズより小さい多数の変換ユニットに分割する予測方法である。コーディングユニットレベルでＩＳＰ予測モードが指示され、それに基づいて変数ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅが設定される。この際、ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅがＩＳＰ＿ＮＯ＿ＳＰＬＩＴであれば、現在ブロックにＩＳＰが適用されないことを示す。２次変換はコーディングユニットレベルで指示されるが、実際の２次変換は変換ユニットレベルで適用される。よって、変換ツリーが多数の変換ユニットに分割されたら、分割された全ての変換ユニットに同じ２次変換カーネルが適用されることは非効率である。また、変換ユニットレベルで予測サンプルを生成するイントラ予測の特性上、変換ツリーを分割して多数の変換ユニットに分割したときが分割しなかったときより予測の正確度が上がる。よって、変換ツリーが多数の変換ユニットに分割されたら、分割された多数の変換ユニットに２次変換が適用されなくても、残差信号のエネルギーが効率的に圧縮される可能性が高い。また、現在ＣＵのサイズがルマ最大変換ブロックのサイズ（ＭａｘＴｂＳｉｚｅＹ）より大きければ（つまり、ｃｂＷｉｄｔｈ＞ＭａｘＴｂＳｉｚｅＹ｜｜ｃｂＨｅｉｇｈｔ＞ＭａｘＴｂＳｉｚｅＹ）、変換ツリーはＣＵサイズより小さい多数の変換ユニットに分割される。図１５には示していないが、この現在ＣＵのサイズがルマ最大変換ブロックサイズ（ＭａｘＴｂＳｉｚｅＹ）より大きい場合も２次変換は適用されない。よって、第４条件は、ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ＝＝ＩＳＰ＿ＮＯ＿ＳＰＬＩＴ＆＆ｃｂＷｉｄｔｈ＜＝ＭａｘＴｂＳｉｚｅＹ＆＆ｃｂＨｅｉｇｈｔ＜＝ＭａｘＴｂＳｉｚｅで表されてもよい。この際、ＭａｘＴｂＳｉｚｅＹは２の冪乗の形態に表現される自然数である。ＭａｘＴｂＳｉｚｅＹはＳＰＳ、ＰＰＳ、スライスヘッダ、タイルグループヘッダなどの上位レベルシンタックスＲＢＳＰに含まれて指示されるか、エンコーダとデコーダが予め設定された同じ値を使用してもよい。例えば、予め設定された値は６４（２＾６）であってもよい。
【０１３８】
v）！ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］
【０１３９】
第５条件はイントラ予測方法に関し、現在コーディングユニットの予測にＭＩＰ（Ｍａｔｒｉｘ  ｂａｓｅｄ  Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ）が適用されなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１４０】
詳しくは、イントラ予測の一方法としてＭＩＰが使用されるが、ＭＩＰの適用可否はコーディングユニットレベルでｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］で指示される。ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が１であれば、ＭＩＰが現在コーディングユニットの予測に適用されることを示し、現在ブロックの周辺の復元されたサンプルと予め設定された行列の積で予測が行われる。ＭＩＰが適用されれば、方向性または無方向性の予測を行う一般的なイントラ予測とは異なる残差信号の性質を示すため、ＭＩＰが適用される際には変換ブロックに２次変換が適用されなくてもよい。
【０１４１】
vi）ｎｕｍＳｉｇＣｏｅｆｆ＞（（ｔｒｅｅＴｙｐｅ＝＝ＳＩＧＮＬＥ＿ＴＲＥＥ）？２：１）
【０１４２】
第６条件はｔｒｅｅＴｙｐｅ及び係数に関する。
【０１４３】
詳しくは、ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであれば、変数ｎｕｍＳｉｇＣｏｅｆｆの値が２より大きければ現在ブロックに２次変換が適用され、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０１４４】
ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡまたはＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡである場合、変数ｎｕｍＳｉｇＣｏｅｆｆの値が１より大きければ現在ブロックに２次変換が適用され、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。この際、ｎｕｍＳｉｇＣｏｅｆｆは現在コーディングユニット内に存在する有効係数の個数を示す変数を意味する。ｎｕｍＳｉｇＣｏｅｆｆが臨界値より小さければ、現在ブロックに２次変換が適用されても効率的な符号化が行われない恐れがある。有効係数の個数が少なければ、係数コーディング（ｃｏｅｆｆｉｃｉｅｎｔ  ｃｏｄｉｎｇ）に必要なビット対比のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をシグナリングするオーバーヘッドが相対的に大きいためである。この際、有効係数は０ではない係数を意味する。以下、本発明で述べる有効係数は、上述したように０ではない係数を意味する。
【０１４５】
vii）ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ＝＝０
【０１４６】
第７条件は特定位置に存在する有効係数に関する。
【０１４７】
詳しくは、現在ブロックに２次変換が適用されれば、デコーダで量子化された変換係数は特定位置で常に０である。よって、特定位置で０ではない（量子化）係数が存在すれば現在ブロックに２次変換が適用されていないということであるため、特定位置における有効係数の個数に応じてｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング可否が決定される。例えば、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０でなければ、特定位置に有効係数が存在することを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。それに対し、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０であれば、特定位置に有効係数が存在しないことを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０１４８】
図１６は、本発明の一実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【０１４９】
ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造は量子化係数に関するシンタックス構造であり、ｘ０、ｙ０、ｌｏｇ２ＴｂＷｉｄｔｈ、ｌｏｇ２ＴｂＨｅｉｇｈｔを入力として受ける。この際、ｘ０、ｙ０は変換ブロックの左−上端座標である（ｘ０，ｙ０）を意味し、ｌｏｇ２ＴｂＷｉｄｔｈは変換ブロックの幅に底が２のログをとった値であり、ｌｏｇ２ＴｂＨｅｉｇｈｔは変換ブロックの高さに底２のログをとった値を意味する。変換ブロック内の個数はサブブロック単位でコーディングされ、それぞれのサブブロック内の係数の値はｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇを含む様々なシンタックス要素に基づいて決定される。この際、サブブロック単位の係数は係数グループ（Ｃｏｅｆｆｉｃｉｅｎｔ  Ｇｒｏｕｐ、ＣＧ）と表現されてもよい。ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］は、現在ブロック内の（ｘＣ，ｙＣ）位置の係数値が０であるのか否かを示す。ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］が１であれば、該当位置の係数値が０ではない値であることを示し、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］が０であれば、該当位置の係数値が０であることを示す。ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇではスキャン順上最後の有効係数（ｌａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｅｆｆｉｃｉｅｎｔ）のｘ座標値、ｙ座標値が指示される。スキャン順上最後の有効係数のｘ座標値、ｙ座標値に基づいて、スキャン順上最後の有効係数を含むサブブロックのインデックス（ｌａｓｔＳｕｂＢｌｏｃｋ）が決定される。前記サブブロックのインデックスもスキャン順に基づいてインデクシングされる。前記スキャン順は、図１３で説明した右上側対角スキャン順である。サブブロック単位の係数コーディングにおいて、係数位置（座標値）を示すインデックスｘＣ、ｙＣは、サブブロックの左−上端座標（ｘＳ＜＜ｌｏｇ２ＳｂＷ、ｙＳ＜＜ｌｏｇ２ＳｂＨ）、右上側対角スキャン順（ＤｉａｇＳｃａｎＯｒｄｅｒ）に基づいて決定される。この際、ｘＳ、ｙＳはそれぞれ水平方向へのインデックス、垂直方向へのインデックスを示す。ｌｏｇ２ＳｂＷ、ｌｏｇ２ＳｂＨは、それぞれサブブロックの幅と高さに底が２のログをとった値である。
【０１５０】
ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］の値が１で（つまり、（ｘＣ，ｙＣ）位置の個数が０ではない場合）、現在ブロックに変換スキップが適用されなければ（つまり、！ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］）、ｎｕｍＳｉｇＣｏｅｆｆがカウントされる（ｃｏｕｎｔｉｎｇ）。変換スキップが適用される際には２次変換が適用されない可能性があるため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージングに活用されるｎｕｍＳｉｇＣｏｅｆｆは変換スキップが適用されないブロックの有効係数の個数をカウントする。
【０１５１】
また、図１５で説明したように、変換ブロックに２次変換が適用されれば、変換ブロック内の特定領域では有効係数が存在しない。よって、特定領域内に存在する有効係数の個数（ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ）をｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆカウンタ（ｃｏｕｎｔｅｒ）がカウントし、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０でなければｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされない。詳しくは、変換ブロックに２次変換が適用されたら、有効係数が存在することができない領域は変換ブロックのサイズによって決定される。
【０１５２】
例えば、２次変換が適用されるためには、変換ブロックのサイズが４×４である場合（つまり、ｌｏｇ２ＴｂＷｉｄｔｈ＝＝２＆＆ｌｏｇ２ＴｂＨｅｉｇｈｔ＝＝２）、変換ブロック内でスキャン順上インデックス［０，７］領域と［８，１５］領域を区分し、［０，７］領域には有効係数が存在し、［８，１５］領域には有効係数が存在することができない。前記４×４変換ブロックは、一つのサブブロックを含む。よって、変換ブロックのサイズが４×４の場合、スキャン位置が８以上で、サブブロックのインデックスが０であれば（つまり、ｎ＞＝８＆＆ｉ＝＝０）、有効係数の個数がカウントされる。この際、スキャン順は右上側対角スキャン順である。
【０１５３】
他の例として、２次変換が適用されるためには、変換ブロックのサイズが８×８である場合（つまり、ｌｏｇ２ＴｂＷｉｄｔｈ＝＝３＆＆ｌｏｇ２ＴｂＨｅｉｇｈｔ＝＝３）、変換ブロック内で最初のサブブロック内にのみ有効係数が存在し、残りのサブブロック（例えば、２番目、３番目のサブブロック）には有効係数が存在することができない。前記最初のサブブロック内でもスキャン順上インデックス［０，７］領域では有効係数がが存在するが、インデックス［８，１５］領域では有効係数が存在することができない。よって、変換ブロックのサイズが８×８である場合、最初のサブブロックでスキャン位置が８以上であるか（つまり、ｎ＞＝８＆＆ｉ＝＝０）、スキャン位置が最初のサブブロックを除いた残りのサブブロックに存在すれば（例えば、２番目、３番目のサブブロックに存在、ｉ＝＝１｜｜ｉ＝＝２）、有効係数の個数がカウントされる。
【０１５４】
最後に、変換ブロックのサイズが８×８より大きい場合、変換ブロック内で最初のサブブロッ内にのみ有効係数が存在し、残りのサブブロック（例えば、２番目、３番目のサブブロック）には有効係数が存在することができない。よって、サブブロックが２番目または３番目であれば（つまり、ｉ＝＝１｜｜ｉ＝＝２）、有効係数の個数がカウントされる。ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆカウンタは、ｎｕｍＳｉｇＣｏｅｆｆカウンタと同じく、ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］が１で、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０である場合にのみ有効係数の個数をカウントする。この際、サブブロックは図１３で説明した右上側対角スキャン順によってインデクシングされる。
【０１５５】
言い換えれば、有効係数が存在することができない領域（特定領域）に０ではない係数が存在すれば２次変換が行われていないことを意味するため、特定領域に０ではない係数が存在するのか否かを確認するために有効係数がカウントされるのである。
【０１５６】
図１７は、本発明の一実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【０１５７】
図１５及び図１６説明したように、２次変換が適用されるのか否かは、コーディングユニットレベルでｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素で指示され、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパーシングされるためには２つの有効係数カウンタ（ｓｉｇｎｉｆｉｃａｎｔ  ｃｏｅｆｆｉｃｉｅｎｔ  ｃｏｕｎｔｅｒ、つまり、ｎｕｍＳｉｇＣｏｅｆｆカウンタ、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆカウンタ）が必要である。特に、ｎｕｍＳｉｇＣｏｅｆｆの場合、ｎｕｍＳｉｇＣｏｅｆｆカウンタがコーディングユニットの全体領域内に存在する有効係数の個数をカウントすべきであるため、係数コーディングの処理率（ｔｈｒｏｕｇｈｐｕｔ）が低下する恐れがある。よって、カウンタの個数を減らすか、カウンタを使用しない方法が必要である。
【０１５８】
図１７に示した２次変換指示方法は、ｎｕｍＳｉｇＣｏｅｆｆとは関係なくｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする方法である。言い換えれば、図１５で説明した条件のうち、i）、ii）、iii）、iv）、v）がいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。また、ｎｕｍＳｉｇＣｏｅｆｆの値は参照されないため、図１６で説明したｎｕｍＳｉｇＣｏｅｆｆカウンタの動作は行われない。
【０１５９】
以下、本明細書では、スキャン順上最後の有効係数の位置情報に基づいて、２次変換を指示する方法について説明する。有効係数の個数が少ないときと同じく、スキャン順上最後の有効係数の位置（スキャンインデックス）が小さければ、２次変換による符号化効率性が低い。よって、カウンタを使用せずに、スキャン順上最後の有効係数の位置情報に基づいて２次変換を効率的に指示する必要がある。
【０１６０】
(第１実施例)
【０１６１】
図１８は、本発明の一実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【０１６２】
図１８は、ｎｕｍＳｉｇＣｏｅｆｆカウンタの代わりに、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで獲得するスキャン順上最後の有効係数の位置情報を利用してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする方法を示す図である。
【０１６３】
図１８によると、ｎｕｍＳｉｇＣｏｅｆｆカウンタは使用されないためｎｕｍＳｉｇＣｏｅｆｆ値は初期化される必要がなく、スキャン順上最後の有効係数の位置情報の位置に関する変数であるｌｆｎＬａｓｔＳｃａｎＰｏｓが１に初期化される。ｌｆｎＬａｓｔＳｃａｎＰｏｓの値が１であれば、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値より小さいか、ブロック内の変換係数がいずれも０であることを示す。それに対し、ｌｆｎＬａｓｔＳｃａｎＰｏｓの値が０であればブロック内に有効係数が一つ以上存在し、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上であることを示す。よって、ｌｆｎＬａｓｔＳｃａｎＰｏｓの値が１であればｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされず、ｌｆｎＬａｓｔＳｃａｎＰｏｓの値が０であればｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。加えて、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は、ｌｆｎＬａｓｔＳｃａｎＰｏｓの値が０で、図１５で説明した条件i）、ii）、iii）、iv）、v）、vii）がいずれも満足されれば（いずれも真であれば）パージングされてもよい。
【０１６４】
言い換えれば、現在ブロック内に有効係数が一つ以上存在し、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上であれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。この際、後述するように臨界値は０以上の整数である。例えば、臨界値が１と仮定すると、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上ということは、有効係数がブロックの左上端以外の位置に存在するという意味である。つまり、有効係数が現在ブロックに存在しないか、現在ブロックの左上端にのみ存在する場合を除いた残りの場合、つまり、現在ブロックの左上端を除いた位置に有効係数が存在する場合にのみｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。現在ブロックの左上端を除いた位置に有効係数が存在するという意味は、「ＬｆｎｓｔＤＣｏｎｌｙ＝＝０」で表されてもよい。本発明で説明するブロックの左上端は、垂直座標の値が（０，０）であることを意味してもよく、予め設定されたスキャン順（例えば、右上側対角順）による最初の位置を意味してもよく、またはＤＣと称されてもよい。
【０１６５】
図１９は、本発明の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【０１６６】
図１９は上述した図１８によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示し、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇではスキャン順上最後の有効係数のｘ座標、ｙ座標に関するシンタックス要素がパーシングされ、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸ、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹ変数が設定される。ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸはスキャン順上最後の有効係数のｘ座標を示し、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹはスキャン順上最後の有効係数のｙ座標を示す。ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸ、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹに基づいて、スキャン順上最後の有効係数のスキャンインデックスであるＬａｓｔＳｃａｎＰｏｓ変数と最後の有効係数を含むサブブロックのインデックス（ｌａｓｔＳｕｂＢｌｏｃｋ）が決定される。この際、図１６で説明したように、現在ブロックに２次変換が適用される場合、最初のサブブロックにのみ有効係数が存在する。言い換えれば、有効係数が最初のサブブロックにのみ存在すれば、２次変換が適用されるということである。
【０１６７】
例えば、図１４（ａ）の４×４サイズのブロックにおいて、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸが２でＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹが３であれば、ＬａｓｔＳｃａｎＰｏｓは１３に決定される。４×４サイズのブロックは一つのサブブロックで構成されるため、最後の有効係数を含むサブブロックのインデックス（ｌａｓｔＳｕｂＢｌｏｃｋ）は０に決定される。他の例として、図１４（ｂ）の８×８サイズのブロックは、４×４サイズのサブブロックに分けられる。詳しくは、図１４（ｂ）において、ｘ座標０乃至３及びｙ座標０乃至３に当たる４×４ブロックは最初のサブブロックに、ｘ座標０乃至３及びｙ座標４乃至３７に当たる４×４ブロックは２番目のサブブロックに、ｘ座標４乃至７及びｙ座標０乃至３４に当たる４×４ブロックは３番目のサブブロックに、ｘ座標４乃至７及びｙ座標４乃至３７に当たる４×４ブロックは４番目のサブブロックに設定される。この際、最初のサブブロックはインデックス０、２番目のサブブロックはインデックス１、３番目のサブブロックはインデックス２、４番目のサブブロックはインデックス３にインデクシングされる。サブブロックは、図１３で説明した右上側対角スキャン順によってインデクシングされる。この際、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸが２でＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹが３であれば、ｌａｓｔＳｃａｎＰｏｓは１３に決定される。ｌａｓｔＳｃａｎＰｏｓは１３であるため、ｌａｓｔＳｃａｎＰｏｓ１３を含むサブブロックは最初のサブブロック（つまり、サブブロックインデックス０）であり、最後の有効係数を含むサブブロックのインデックス（ｌａｓｔＳｕｂＢｌｏｃｋ）は０に決定される。
【０１６８】
上述したｌａｓｔＳｃａｎＰｏｓに基づいて、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが決定される。詳しくは、変換ブロックの幅及び高さが４以上で、変換ブロックに変換スキップが適用されなければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式１のように設定される。言い換えれば、ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２で、ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２で、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式１のように設定される。この際、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、現在変換ブロックに変換スキップが適用されない場合を意味する。詳しくは、本明細書で説明するフラッグｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］は、変換ブロックに１次変換及び２次変換が適用されるのか否かを指示する。例えば、前記ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］の値が１であれば、変換ブロックに１次変換及び２次変換が適用されないことを示し（つまり、変換スキップが適用される）、前記ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］の値が０であれば、変換ブロックに１次変換及び２次変換が適用されることを示す（つまり、変換スキップが適用されない）。
【０１６９】
【数１】
2021531669.tif 000003
【０１７０】
上述したように、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓの初期化値は１に設定される。
【０１７１】
数式１において、ｃＩｄｘは現在変換ブロックのカラー成分を意味する変数を示す。例えば、ｃＩｄｘが０であれば、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで処理される変換ブロックがルマＹ成分であることを示す。ｃＩｄｘが１であれば、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで処理される変換ブロックがクロマＣｂ成分であることを示し、ｃＩｄｘが２であれば、処理される変換ブロックがクロマＣｒ成分であることを示す。ｌａｓｔＳｃａｎＰｏｓに対する臨界値であるｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］は、カラー成分に応じて異なる値に設定される。
【０１７２】
数式１によると、直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが１でｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］より小さければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１にアップデートされる。それに対し、直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが０であるか、ｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０にアップデートされる。言い換えれば、コーディングユニットが含む全ての変換ブロックのｌａｓｔＳｃａｎＰｏｓが臨界値より小さいか、全ての変換ブロックの個数がいずれも０であればｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１に決定され、図１８のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］パージング条件によって、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０に設定される。ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパーシングされずに０に設定されるとは、現在ブロックに２次変換が適用されないことを示す。それに対し、コーディングユニットが含む変換ブロックのうちいずれか一つでもＬａｓｔＳｃａｎＰｏｓが臨界値以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０に決定され、図１５で説明した条件i）、ii）、iii）、iv）、v）、vii）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。
【０１７３】
数式１のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］は予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。また、全てのカラー成分に対して同じ臨界値が使用されてもよい。この場合、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式２のように設定される。本明細書で説明するコーディングユニットは複数のコーディングブロックで構成され、それぞれのコーディングブロックに対応する変換ブロックが存在する。変換ブロックは輝度、色差成分を有する変換ブロックである。詳しくは、Ｙ変換ブロック、Ｃｂ変換ブロック、Ｃｒ変換ブロックである。この際、本明細書で説明するｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングするのか否かは、前記それぞれのコーディングブロックに対応する変換ブロックごとに判断される。つまり、Ｙ変換ブロック、Ｃｂ変換ブロック、Ｃｒ変換ブロックのうちいずれか一つの変換ブロックでも本明細書で説明する条件を満足すれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０１７４】
【数２】
2021531669.tif 000004
【０１７５】
ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈは予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。例えば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈは1であってもよい。つまり、ｌａｓｔＳｃａｎＰｏｓが１以上であればｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０にアップデートされ、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。この際、臨界値（ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ）は整数値であるため、ｌａｓｔＳｃａｎＰｏｓが１以上であればｌａｓｔＳｃａｎＰｏｓが０より大きい場合と同じ意味である。本発明の一例示として臨界値が１である場合について説明したが、本発明はこれに限らない。
【０１７６】
言い換えれば、ｌａｓｔＳｃａｎＰｏｓに基づいてｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング可否が決定される。詳しくは、上述したように２次変換が適用されされば、スキャン順上最後の有効係数は変換ブロックの最初のサブブロックにのみ存在する。よって、スキャン順上最後の有効係数を含む（ｌａｓｔＳｃａｎＰｏｓが示すインデックスが位置する）サブブロックのインデックス（ｌａｓｔＳｕｂＢｌｏｃｋ）は０で、変換ブロックの幅が４以上で（ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２）、変換ブロックの高さが４以上で（ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２）、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０で（変換スキップが適用されない）、ＬａｓｔＳｃａｎＰｏｓが０より大きければ（ＬａｓｔＳｃａｎＰｏｓが１以上であれば）、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。これを数式で表すと、下記数式３のように表される。
【０１７７】
【数３】
2021531669.tif 000005
【０１７８】
一方、上述した第１実施例ではｎｕｍＳｉｇＣｏｅｆｆカウンタをｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージングに利用しないため、有効係数の個数（ｎｕｍＳｉｇＣｏｅｆｆ）はカウントされない。
【０１７９】
(第２実施例)
【０１８０】
図２０は、本発明の他の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【０１８１】
図２０は、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇは図１９に更にｔｒｅｅＴｙｐｅ変数を入力され、ｔｒｅｅＴｙｐｅによってＬａｓｔＳｃａｎＰｏｓに対する臨界値を設定する方法を示す図である。
【０１８２】
変換ブロックの幅及び高さが４以上で、変換ブロックに変換スキップが適用されなければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式４のように設定される。言い換えれば、ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２で、ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２で、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式４のように設定される。この際、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、現在変換ブロックに変換スキップが適用されない場合を意味する。
【０１８３】
【数４】
2021531669.tif 000006
【０１８４】
数式４において、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈはｌａｓｔＳｃａｎＰｏｓに対する臨界値を意味し、ｔｒｅｅＴｙｐｅによって値が設定される。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥ、ＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡ、ＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈはそれぞれｖａｌ１、ｖａｌ２、ｖａｌ３に設定される。直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが1で、ｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈより小さければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１にアップデートされる。それに対し、直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが０であるか、ｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０にアップデートされる。
【０１８５】
数式４は、結果的に、コーディングユニットが含む全ての変換ブロックのｌａｓｔＳｃａｎＰｏｓが臨界値より小さいか、全ての変換ブロックの個数がいずれも０であればｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１に決定され、図１８のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］パージング条件によって、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０に設定される。これは、現在ブロックに２次変換が適用されないことを示す。一方、コーディングユニットが含む変換ブロックのうちいずれか一つでもＬａｓｔＳｃａｎＰｏｓが臨界値以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０に決定され、図１５で説明したi）、ii）、iii）、iv）、v）、vii）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。
【０１８６】
ｖａｌ１、ｖａｌ２、ｖａｌ３、は予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであればルマ、クロマ成分をいずれも含むため、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈの値であるｖａｌ１はｖａｌ２とｖａｌ３の和で表現されてもよい。
【０１８７】
第２実施例ではｎｕｍＳｉｇＣｏｅｆｆカウンタをｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージングに利用しないため、有効係数の個数（ｎｕｍＳｉｇＣｏｅｆｆ）はカウントされない。
【０１８８】
(第３実施例)
【０１８９】
図２１は、本発明の他の実施例によるコーディングユニットレベルで２次変換を指示する方法を示す図である。
【０１９０】
図２１によると、ｎｕｍＳｉｇＣｏｅｆｆカウンタの代わりに、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで獲得されるスキャン順上最後の有効係数の位置情報を活用してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。
【０１９１】
ｎｕｍＳｉｇＣｏｅｆｆカウンタが使用されないためｎｕｍＳｉｇＣｏｅｆｆは初期化される必要がなく、スキャン順上最後の有効係数の位置情報の位置に関する変数であるｌｆｎＬａｓｔＳｃａｎＰｏｓは０に初期化される。図２１のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓ変数は、コーディングユニットが含む変換ブロックのｌａｓｔＳｃａｎＰｏｓを足した値である。この際、ｌｆｎＬａｓｔＳｃａｎＰｏｓが臨界値より大きく、図１５で説明した条件i）、ii）、iii）、iv）、v）、vii）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。それに対し、ｌｆｎＬａｓｔＳｃａｎＰｏｓが臨界値以下であれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。これは、２次変換が適用されないことを示す。
【０１９２】
臨界値はｔｒｅｅＴｙｐｅによって設定される。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥ、ＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡ、ＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば、臨界値はそれぞれＴｈ１、Ｔｈ２、Ｔｈ３に設定される。Ｔｈ１、Ｔｈ２、Ｔｈ３は予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであればルマ、クロマ成分をいずれも含むため、臨界値であるＴｈ１はＴｈ２とＴｈ３の和で表現されてもよい。
【０１９３】
図２２は、本発明の他の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【０１９４】
図２２は上述した図２１によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示しており、変換ブロックの幅及び高さが４以上で、変換ブロックに変換スキップが適用されなければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式５のように設定される。言い換えれば、ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２で、ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２で、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式5のように設定される。この際、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、現在変換ブロックに変換スキップが適用されない場合を意味する。
【０１９５】
【数５】
2021531669.tif 000007
【０１９６】
前記数式５において、ｌｆｎＬａｓｔＳｃａｎＰｏｓはコーディングユニットが含む変換ブロックのｌａｓｔＳｃａｎＰｏｓを全て足した値であって、図２１で説明したように、ｌｆｎＬａｓｔＳｃａｎＰｏｓと臨界値を比較してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング可否が決定される。
【０１９７】
第３実施例ではｎｕｍＳｉｇＣｏｅｆｆカウンタをｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージングに利用しないため、有効係数の個数（ｎｕｍＳｉｇＣｏｅｆｆ）はカウントされない。
【０１９８】
一方、コーディングユニットは、コーディングユニットと同じサイズをルートノードとして変換ツリーによって分割される変換ユニットを含む。この際、変換ユニットはそれぞれのカラー成分に対する変換ブロックを含む。２次変換がコーディングユニットレベルで指示されれば、コーディングユニットが含む全ての変換ブロックに対してレジデュアルコーディングが行われた後、係数情報に基づいてｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパーシングされる。他の実施例として、２次変換は変換ユニットレベルで指示されてもよい。２次変換が変換ユニットレベルで指示されれば、コーディングユニットが含むそれぞれの変換ユニットはそれぞれ異なるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をを使用する。よって、エンコーダはそれぞれの変換ユニットに最適のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］を探すことができ、符号化効率を更に向上させることができる。また、２次変換がコーディングユニットレベルで指示され、コーディングユニットが４個の変換ユニットを含めば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をがパーシングされるためには４個の変換ユニットが含む全ての変換ブロックに対するレジデュアルコーディングが処理されるべきである。つまり、デコーダが最初の変換ユニットに対してレジデュアルコーディングを介した変換係数を獲得しても、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］値を獲得することができなかったため、デコーダは最初の変換ユニットに対する逆変換を行うことができない。これはデコーダのバッファサイズを増加させるだけでなく、デコーダにおける過度な遅延時間を引き起こす恐れがある。
【０１９９】
図１８乃至図２２で説明した第１実施例乃至第３実施例は、２次変換が変換ユニットレベルで指示される場合にも適用可能である。２次変換がコーディングユニットレベルで指示されれば、第１実施例乃至第３実施例によってコーディングユニットが含む変換ブロックのスキャン順上最後の有効係数の位置に基づいて、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージング可否が決定される。また、２次変換が変換ユニットレベルで指示されれば、第１実施例乃至第３実施例によって変換ユニットが含む変換ブロックのスキャン順上最後の有効係数の位置に基づいて、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージング可否が決定される。
【０２００】
以下、本明細書において、２次変換が変換ユニットレベルで指示される具体的な方法について説明する。
【０２０１】
図２３は、本発明の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【０２０２】
図１２によると、ｎｕｍＳｉｇＣｏｅｆｆカウンタの代わりに、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで獲得されるスキャン順上最後の有効係数の位置情報を利用してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。
【０２０３】
まず、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇを行う前にスキャン順上最後の有効係数の位置に関する変数であるｌｆｎＬａｓｔＳｃａｎＰｏｓは１に初期化される。ｌｆｎＬａｓｔＳｃａｎＰｏｓの変数が１であれば、変換ユニットが含む全ての変換ブロックに対してスキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値より小さいか、ブロック内の変換係数がいずれも０であることを示す。ｌｆｎＬａｓｔＳｃａｎＰｏｓの変数が０であれば、変換ユニットが含む一つ以上の変換ブロックに対してブロック内に有効係数が一つ以上存在し、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上であることを示す。上述した第１実施例によると、変換ブロックのスキャン順上最後の有効係数の位置に基づいて設定されるｌｆｎＬａｓｔＳｃａｎＰｏｓが０で、後述する条件i）、ii）、iii）、iv）、v）、vi）がいずれも満足されれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２０４】
ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素のパージング条件
【０２０５】
i）Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４
【０２０６】
まず、第１条件は、ブロックのサイズに関するものであり、ブロックの幅及び高さがそれぞれ４ピクセル以上であれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２０７】
詳しくは、デコーダは２次変換を適用可能なブロックサイズ条件を検査する。変数ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣはカラーフォーマットによって設定されるものであって、それぞれピクチャのルマ成分の幅、高さ対比のクロマ成分の幅、高さの比を示す。例えば、４：２：０カラーフォーマット映像は、ルマサンプル４個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも２に設定される。他の例として、４：４：4カラーフォーマット映像は、ルマサンプル１個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも１に設定される。現在ブロックの水平方向のサンプル数であるｌｆｎＷｉｄｔｈ、垂直方向のサンプル数であるｌｆｎＨｅｉｇｈｔは、ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣに基づいて設定される。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば変換ユニットはクロマ成分のみを含むため、クロマ変換ブロックの水平方向のサンプル数はルマ変換ブロックの幅であるｔｂｗｉｄｔｈをＳｕｂＷｉｄｔｈＣで割った値と同じである。同じく、クロマ変換ブロックの垂直方向のサンプル数は、ルマ変換ブロックの高さであるｔｂＨｅｉｇｈｔをＳｕｂＨｅｉｇｈｔＣで割った値と同じである。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであるかＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡであれば、変換ユニットはルマ成分を含むため、ｌｆｎＷｉｄｔｈ、ｌｆｎＨｅｉｇｈｔはそれぞれｔｂｗｉｄｔｈ、ｔｂＨｅｉｇｈｔに設定される。２次変換を適用可能なブロックの最小条件は４×４であるため、Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４を満足すれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０２０８】
ii）ｓｐｓ＿ｌｆｎ＿ｅｎａｂｌｅｄ＿ｆｌａｇ＝＝１
【０２０９】
第２条件は２次変換の活性化または適用可能可否を指示するフラッグ値に関し、２次変換の活性化または適用可能可否を指示するフラッグ（ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇ）の値が１に設定されれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２１０】
詳しくは、２次変換は上位レベルシンタックスＲＢＳＰで指示される。ＳＰＳ、ＰＰＳ、ＶＰＳ、タイルグループヘッダ、スライスヘッダのうち少なくとも一つに２次変換の活性化及び適用可能可否を指示する１−ｂｉｔサイズを有するフラッグが含まれる。ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが１であれば、変換ユニットシンタックス内にｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素が存在することを示す。ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが０であれば、変換ユニットシンタックス内にｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素が存在しないことを示す。
【０２１１】
iii）ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］＝＝ＭＯＤＥ＿ＩＮＴＲＡ
【０２１２】
第３条件は予測モードに関し、２次変換はイントラ予測されたブロックにのみ適用される。よって、現在ブロックがイントラ予測されたブロックであれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２１３】
iv）ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ＝＝ＩＳＰ＿ＮＯ＿ＳＰＬＩＴ
【０２１４】
第４条件はＩＳＰ予測方式が適用されるのか否かに関し、現在ブロックにＩＳＰが適用されていなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２１５】
詳しくは、図１１を参照して説明したように、現在ＣＵに対してＣＵサイズより小さい多数の変換ユニットに分割される場合、分割された変換ユニットには２次変換はが適用されない。この際、２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。現在ＣＵに対して変換ツリーよりＣＵサイズが小さい多数の変換ユニットに分割される場合、ＩＳＰ予測が現在コーディングユニットに適用される場合を含む。ＩＳＰ予測方法は、現在コーディングユニットにイントラ予測が適用される場合、予め設定された分割方法によって変換ツリーをＣＵサイズより小さい多数の変換ユニットに分割する予測方法である。コーディングユニットレベルでＩＳＰ予測モードが指示され、それに基づいて変数ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ変数が設定される。この際、ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅがＩＳＰ＿ＮＯ＿ＳＰＬＩＴであれば、現在ブロックにＩＳＰが適用されないことを示す。変換ユニットレベルで予測サンプルを生成するイントラ予測の特性上、変換ツリーを分割して多数の変換ユニットに分割されたときが分割しなかったときより予測の正確度が上がる。よって、分割された多数の変換ユニットに２次変換が適用されなくても、残差信号のエネルギーが効率的に圧縮される可能性が高い。
【０２１６】
v）！ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］
【０２１７】
第５条件はイントラ予測方法に関し、現在コーディングユニットにＭＩＰ（Ｍａｔｒｉｘ  ｂａｓｅｄ  Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ）が適用されなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２１８】
詳しくは、イントラ予測の一方法都市てＭＩＰが使用されるが、ＭＩＰの適用可否はコーディングユニットレベルでｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］で指示される。ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が１であれば、ＭＩＰが現在コーディングユニットの予測に適用されることを示し、現在ブロックの周辺の復元されたサンプルと予め設定された行列の積で予測が行われる。ＭＩＰが適用されれば、方向性または無方向性の予測を行う一般的なイントラ予測とは異なる残差信号の性質を示すため、ＭＩＰが適用される際には変換ブロックに２次変換が適用されなくてもよい。
【０２１９】
vi）ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ＝＝０
【０２２０】
第６条件は特定位置に存在する有効係数に関する。
【０２２１】
詳しくは、現在ブロックに２次変換が適用されれば、デコーダで量子化された変換係数は特定位置で常に０である。よって、特定位置で０ではない量子化係数が存在すれば２次変換が適用されていないということであるため、特定位置における有効係数の個数に応じてｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。例えば、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０でなければ、特定位置に有効係数が存在することを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。それに対し、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０であれば、特定位置に有効係数が存在しないことを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０２２２】
上述した第１実施例に基づいて現在ブロックに２次変換が適用されるのか否かが変換ユニットレベルで指示されれば、図１９で説明したｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ方法に従う。図１９で説明したｌｆｎＬａｓｔＳｃａｎＰｏｓを決定する数式１によって変換ユニットが含む全ての変換ブロックのｌａｓｔＳｃａｎＰｏｓが臨界値より小さいか全ての変換ブロックの個数が０であれば、ｌｆｎＬａｓｔＳｃａｎＰｏｓは１に決定され、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。これは、現在ブロックに２次変換が適用されないことを示す。それに対し、変換ユニットが含む変換ブロックのうちいずれか一つでもＬａｓｔＳｃａｎＰｏｓが臨界値以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０に決定され、図２３で説明した条件i）、ii）、iii）、iv）、v）、vi）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして、現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。
【０２２３】
上述した第２実施例に基づいて２次変換が適用されるのか否かが変換ユニットレベルで指示されれば、図２３で説明する変換ユニットシンタックス構造が適用され、図２０で説明したｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ方法が使用される。図２０で説明したｌｆｎＬａｓｔＳｃａｎＰｏｓを決定する数式４によって変換ユニットが含む全ての変換ブロックのｌａｓｔＳｃａｎＰｏｓが臨界値より小さいか全ての変換ブロックの個数が０であれば、ｌｆｎＬａｓｔＳｃａｎＰｏｓは１に決定され、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。これは、現在ブロックに２次変換が適用されないことを示す。一方、変換ユニットが含む変換ブロックのうち一つでもＬａｓｔＳｃａｎＰｏｓが臨界値以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０に決定され、図２３で説明した条件i）、ii）、iii）、iv）、v）、vi）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダは、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。
【０２２４】
図２４は、本発明の他の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【０２２５】
上述した第３実施例によると、ｎｕｍＳｉｇＣｏｅｆｆカウンタの代わりに、ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇで獲得するスキャン順上最後の有効係数の位置情報を活用してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。
【０２２６】
ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇを行う前にスキャン順上最後の有効係数の位置に関する変数であるｌｆｎＬａｓｔＳｃａｎＰｏｓは０に初期化される。変数ｌｆｎＬａｓｔＳｃａｎＰｏｓは、変換ユニットが含む変換ブロックのｌａｓｔＳｃａｎＰｏｓを足した値である。この際、ｌｆｎＬａｓｔＳｃａｎＰｏｓが臨界値より大きく、図２３で説明した条件i）、ii）、iii）、iv）、v）、vii）をいずれも満足すれば（いずれも真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。それに対し、ｌｆｎＬａｓｔＳｃａｎＰｏｓが臨界値以下であれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。これは、２次変換が適用されないことを示す。
【０２２７】
臨界値はｔｒｅｅＴｙｐｅによって設定される。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥ、ＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡ、ＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば、臨界値はそれぞれＴｈ１、Ｔｈ２、Ｔｈ３に設定される。Ｔｈ１、Ｔｈ２、Ｔｈ３は予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであればルマ、クロマ成分をいずれも含むため、臨界値であるＴｈ１はＴｈ２とＴｈ３の和で表現されてもよい。
【０２２８】
上述した第３実施例に基づいてに２次変換が適用されるのか否かが変換ユニットレベルで指示されれば、図２２で説明したｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ方法が使用される。図２２で説明したｌｆｎＬａｓｔＳｃａｎＰｏｓはを決定する数式５によって、変数ｌｆｎＬａｓｔＳｃａｎＰｏｓは変換ユニットが含む変換ブロックのｌａｓｔＳｃａｎＰｏｓを全て足した値に設定される。そして、ｌｆｎＬａｓｔＳｃａｎＰｏｓと臨界値を比較して、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング可否が決定される。
【０２２９】
一方、変換ユニットレベルで２次変換が指示されれば、コーディングユニットが含む変換ユニットの間には相関関係が高い可能性がある。これは、予測の方法がコーディングユニットレベルで決定されるためである。よって、コーディングユニットが含む最初の変換ユニットでのみｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がシグナリングされ、シグナリングされたｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は残りの変換ユニットと共有される。つまり、変換ユニットのインデックスを示すｓｕｂＴｕＩｎｄｅｘが０である場合にのみ、上述した第１実施例乃至第３実施例を使用してｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされてもよい。ｓｕｂＴｕＩｎｄｅｘが０より大きければ、それに当たる変換ユニットはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングせず、共有される最初の変換ユニットのｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］の値を利用する。
【０２３０】
一方、有効係数をカウントするためにカウンタが使用されるが、デコーダがｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングするのか否かは、変換ブロックの左−上端サブブロック内に存在する有効係数のみを考慮して決定される。これは演算量を減少させるためである。
【０２３１】
一方、２次変換が変換ユニットレベルで指示されれば、コーディングユニットレベルで指示される場合よりデコーダの遅延時間は減少されるが、他の遅延時間が発生する可能性がある。例えば、２次変換が変換ユニットレベルで指示されても、ルマ変換係数、Ｃｂ変換係数、Ｃｒ変換係数のコーディングが全て完了されてから２次変換が指示される。よって、ルマ変換係数のコーディング（処理）が全て完了されても、Ｃｂ変換係数、Ｃｒ変換係数のコーディング（処理）が完了されてからルマ変換係数に対する逆変換処理が行われる。これはデコーダの他の遅延時間をもたらす。
【０２３２】
以下、本明細書では、デコーダの遅延時間を最小化することができる２次変換の指示方法について説明する。
【０２３３】
(第４実施例)
【０２３４】
デコーダの遅延時間を最小化することができる２次変換の指示方法の一例として、２次変換は変換ユニットレベルで指示されるが、ルマ変換係数をコーデックする前に２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする方法がある。よって、デコーダは、Ｃｂ変換係数及びＣｒ変換係数を待たず、ルマ変換係数のコーディングが完了された後、直ちにルマ変換係数に対する逆変換プロセスを行うことができる。同じく、デコーダはＣｂ変換係数のコーディングが完了された後、Ｃｒ変換係数のコーディングを待たずに直ちにＣｂ変換係数に対する逆変換プロセスを行うことができる。このような２次変換の指示方法はデコーダの遅延時間を最小化して、パイプライン問題を解決することができる。
【０２３５】
図２５は、本発明の一実施例によるコーディングユニットシンタックスを示す図である。
【０２３６】
図２５を見ると、２次変換は変換ユニットレベルで指示されるため、２次変換に関するシンタックスであるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はコーディングユニットレベルでパージングされず、ｔｒａｎｓｆｏｒｍ＿ｔｒｅｅによって分割される変換ユニットレベルでパージングされる。
【０２３７】
図２６は、本発明の他の実施例による変換ユニットレベルで２次変換を指示する方法を示す図である。
【０２３８】
図２６を見ると、２次変換の指示方法は変換ユニットレベルで指示され、ルマ及びクロマ変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の前に２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が先にパージングされる。例えば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が変換係数を獲得する前にパージングされれば、それぞれのカラー成分であるＹ、Ｃｂ、Ｃｒに対する係数コーディングが完了されたら、直ちにＹ、Ｃｂ、Ｃｒ変換係数に対する逆変換が処理される。例えば、Ｙ成分に対する変換係数コーディングが完了されたら、直ちにルマ（Ｙ）変換係数に対する逆変換が行われる。同じく、Ｃｂ成分に対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了されたら、直ちにＣｂ変換係数に対する逆変換が行われ、Ｃｒ成分に対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了されたら、直ちにＣｒ変換係数に対する逆変換が行われる。
【０２３９】
ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がＹ、Ｃｂ、Ｃｒに対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の後にパージングされれば、Ｙに対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了されても、Ｃｂ、Ｃｒに対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了・処理されなければ、Ｙ変換係数に対する逆変換は遂行／処理されない。よって、Ｙに対応する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了されても、他の成分（Ｃｂ、Ｃｒ）の変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了されるまでデコーダはＹ変換係数に対する逆変換を行うことができず、不必要な遅延時間が発生するという問題があった。しかし、上述したようにｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］が変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）前に先にパージングされれば、カラー成分（Ｙ、Ｃｂ、Ｃｒ）それぞれに対する変換係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が完了された後、直ちにカラー成分それぞれの変換係数に対する逆変換が行われるため、デコーダの遅延時間が最小化される効果がある。
【０２４０】
ｔｒａｎｓｆｏｒｍ＿ｕｎｉｔ（）シンタックス構造では、ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］、ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］、ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］などがパージングされる。
【０２４１】
詳しくは、ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］は、現在ルマ変換ブロックが０ではない変換係数を一つ以上含むのか否かを示す要素である。ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］が１であれば、現在ルマ変換ブロックが０ではない変換係数を一つ以上含むことを示す。ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］が０であれば、現在ルマ変換ブロックの変換係数がいずれも０であることを示す。ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］は、現在クロマＣｂ変換ブロックが０ではない変換係数を一つ以上含むのか否かを示す要素である。ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］が１であれば、現在クロマＣｂ変換ブロックが０ではない変換係数を一つ以上含むことを示す。ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］が０であれば、現在クロマＣｂ変換ブロックの変換係数がいずれも０であることを示す。ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］は、現在クロマＣｒ変換ブロックが０ではない変換係数を一つ以上含むのか否かを示す要素である。ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］が１であれば、現在クロマＣｒ変換ブロックが０ではない変換係数を一つ以上含むことを示す。ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］が０であれば、現在クロマＣｒ変換ブロックの変換係数がいずれも０であることを示す。ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］は、変換スキップに関するシンタックス要素である。ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が1であれば、現在ルマ変換ブロックに逆変換が適用されないことを示す。ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、現在ルマ変換ブロックに逆変換が適用されるのか否かは他のシンタックス要素によって決定されることを示す。
【０２４２】
図２６による２次変換の指示方法の一実施例として、０ではない変換係数の個数に基づくのではなく、スキャン順上最後の有効係数の位置に基づいて２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパーシングされる。
【０２４３】
まず、ｌｆｎＬａｓｔＳｃａｎＰｏｓ変数は１に初期化されて設定される。変数ｌｆｎＬａｓｔＳｃａｎＰｏｓは、図２３で説明したように、現在変換ユニットが含む変換ブロックのスキャン順上最後の有効係数の位置情報を示す。詳しくは、ｌｆｎＬａｓｔＳｃａｎＰｏｓが１であれば、変換ユニットが含む全ての変換ブロックに対してスキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値より小さいか、ブロック内の変換係数がいずれも０であることを示す。ｌｆｎＬａｓｔＳｃａｎＰｏｓが０であれば、変換ユニットが含む一つ以上の変換ブロックに対してブロック内に有効係数が一つ以上存在し、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上であることを示す。
【０２４４】
次に、変数ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆは０に初期化されて設定される。変換ブロックに２次変換が適用されれば、スキャン順上最後の有効係数が存在することができない。よって、変数ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆは特定位置に有効係数が存在するのかを示し、それに基づいて２次変換が適用されるのか否かが確認される。例えば、変換ブロックに２次変換が適用されれば、最大１６個の有効係数のみが許容されると仮定する。４×４、８×８サイズの変換ブロックには、スキャン順上インデックス［０，７］領域に有効係数が存在し得る（最大８個の０ではない変換係数を許容）。一方、４×４、８×８以外のサイズを有する変換ブロックには、スキャン順上インデックス［０，１５］領域に有効係数が存在し得る（最大１６個の０ではない変換係数を許容）。よって、スキャン順上最後の有効係数の位置（スキャンインデックス）が上述した有効係数が存在し得る領域以外に存在すれば、デコーダは、現在変換ブロックに２次変換が適用されないことを自ずと認識することができる。
【０２４５】
スキャン順上最後の有効係数の位置（スキャンインデックス）に基づいて、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の前に２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング可否が決定される。よって、デコーダは係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の前に、スキャン順上最後の有効係数の位置に関する情報を処理する。
【０２４６】
詳しくは、現在ルマ変換ブロックが０ではない有効係数を一つ以上含み（ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］＝＝１）、現在ルマ変換ブロックに変換スキップが適用されなければ（ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］＝＝０）、ルマのスキャン順上最後の有効係数の位置に関するシンタックス構造であるｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓが処理される。
【０２４７】
ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］の値が０であれば（ｔｕ＿ｃｂｆ＿ｌｕｍａ［ｘ０］［ｙ０］＝＝０）、該当変換ブロックの全ての係数が０であることを示すため、これは係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が行われないことを示す。よって、スキャン順上最後の有効係数の位置情報に関する処理は行われる必要がない。
【０２４８】
ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が１であれば、現在ルマ変換ブロックに逆変換が適用されないことを示す。よって、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）は、スキャン順上最後の有効係数の位置情報に基づかずに行われる。
【０２４９】
現在クロマＣｂ変換ブロックが有効係数を一つ以上含めば（ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］＝＝１）、現在クロマＣｂ変換ブロックのスキャン順上０ではない最後の係数の位置に関すシンタックス構造であるｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓが処理される。ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓシンタックス構造は、変換ブロックの左−上端座標である（ｘ０，ｙ０）と、変換ブロックの幅に底が２のｌｏｇ演算をとった値、変換ブロックの高さに底が２のｌｏｇ演算をとった値、及び変換ブロックがどのカラー成分であるのかを示す変数であるｃＩｄｘを入力として受ける。例えば、ｃＩｄｘが０であればルマＹ変換ブロックを示し、ｃＩｄｘが１であればクロマＣｂ変換ブロックを示し、ｃＩｄｘが２であればクロマＣｒ変換ブロックを示す。ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］の値が０であれば（ｔｕ＿ｃｂｆ＿ｃｂ［ｘ０］［ｙ０］＝＝０）、該当変換ブロックの全ての係数が０であることを示す。これは係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が行われないことを意味するため、スキャン順上０ではない最後の係数の位置情報に対する処理は行われる必要がない。
【０２５０】
一方、現在ルマＣｒ変換ブロックが有効係数を一つ以上含めば（ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］＝＝１）、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓを処理する前にクロマＣｂとＣｒを一つの残差信号で表すのか否かを指示するシンタックス要素であるｔｕ＿ｊｏｉｎｔ＿ｃｂｃｒ＿ｒｅｓｉｄｕａｌ［ｘ０］［ｙ０］がパーシングされる。例えば、ｔｕ＿ｊｏｉｎｔ＿ｃｂｃｒ＿ｒｅｓｉｄｕａｌ［ｘ０］［ｙ０］１であればＣｒに対する係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）は処理されず、Ｃｒに対する残差信号はＣｂの復元された残差信号から誘導される。それに対し、ｔｕ＿ｊｏｉｎｔ＿ｃｂｃｒ＿ｒｅｓｉｄｕａｌ［ｘ０］［ｙ０］が０であれば、ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］の値によってＣｒに対する係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が行われる。現在クロマＣｒ変換ブロックが有効係数を一つ以上含めば（ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］＝＝１）、クロマＣｒのスキャン順上最後の有効係数の位置に関すシンタックス構造であるｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓが処理される。ｔｕ＿ｃｂｆ＿ｃｂｒ［ｘ０］［ｙ０］の値が０であれば（ｔｕ＿ｃｂｆ＿ｃｒ［ｘ０］［ｙ０］＝＝０）、クロマＣｒ変換ブロックの全ての係数が０であることを示す。これは係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が行われないことを意味するため、スキャン順上０ではない最後の係数の位置情報に対する処理は行われる必要がない。
【０２５１】
それぞれのカラー成分に対するｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓの処理が行われることでそれぞれのカラー成分に対するスキャン順上最後の有効係数の位置（スキャンインデックス）が獲得され、それに基づいてｌｆｎＬａｓｔＳｃａｎＰｏｓ及びｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ値がアップデートされる。
【０２５２】
そして、後述する条件i）、ii）、iii）、iv）、v）、vi）、vii）をいずれも満足すれば（いずれも真であれば）、デコーダは係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の前にｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２５３】
係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）前のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素のパージング条件
【０２５４】
i）Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４
【０２５５】
まず、第１条件は、ブロックのサイズに関するものであり、ブロックの幅及び高さがそれぞれ４ピクセル以上であれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２５６】
詳しくは、デコーダは２次変換を適用可能なブロックサイズ条件を検査する。変数ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣはカラーフォーマットによって設定されるものであって、それぞれピクチャのルマ成分の幅、高さ対比のクロマ成分の幅、高さの比を示す。例えば、４：２：０カラーフォーマット映像は、ルマサンプル４個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも２に設定される。他の例として、４：４：4カラーフォーマット映像は、ルマサンプル１個当たりそれに相当するクロマサンプル１個を含む構造であるため、ＳｕｂＷｉｄｔｈＣとＳｕｂＨｅｉｇｈｔＣはいずれも１に設定される。現在ブロックの水平方向のサンプル数であるｌｆｎＷｉｄｔｈ、垂直方向のサンプル数であるｌｆｎＨｅｉｇｈｔは、ＳｕｂＷｉｄｔｈＣ、ＳｕｂＨｅｉｇｈｔＣに基づいて設定される。ｔｒｅｅＴｙｐｅがＤＵＡＬ＿ＴＲＥＥ＿ＣＨＲＯＭＡであれば変換ユニットはクロマ成分のみを含むため、クロマ変換ブロックの水平方向のサンプル数はルマ変換ブロックの幅であるｔｂｗｉｄｔｈをＳｕｂＷｉｄｔｈＣで割った値と同じである。同じく、クロマ変換ブロックの垂直方向のサンプル数は、ルマ変換ブロックの高さであるｔｂＨｅｉｇｈｔをＳｕｂＨｅｉｇｈｔＣで割った値と同じである。ｔｒｅｅＴｙｐｅがＳＩＮＧＬＥ＿ＴＲＥＥであるかＤＵＡＬ＿ＴＲＥＥ＿ＬＵＭＡであれば、変換ユニットはルマ成分を含むため、ｌｆｎＷｉｄｔｈ、ｌｆｎＨｅｉｇｈｔはそれぞれｔｂｗｉｄｔｈ、ｔｂＨｅｉｇｈｔに設定される。２次変換を適用可能なブロックの最小条件は４×４であるため、Ｍｉｎ（ｌｆｎＷｉｄｔｈ，ｌｆｎＨｅｉｇｈｔ）＞＝４を満足すれば、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０２５７】
ii）ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇ＝＝１
【０２５８】
第２条件は２次変換の活性化または適用可能可否を指示するフラッグ値に関し、２次変換の活性化または適用可能可否を指示するフラッグ（ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇ）の値が１に設定されれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２５９】
詳しくは、２次変換は上位レベルシンタックスＲＢＳＰで指示される。ＳＰＳ、ＰＰＳ、ＶＰＳ、タイルグループヘッダ、スライスヘッダのうち少なくとも一つに２次変換の活性化及び適用可能可否を指示する１−ｂｉｔサイズを有するフラッグが含まれる。ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが１であれば、変換ユニットシンタックス内にｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素が存在することを示し、ｓｐｓ＿ｌｆｎｓｔ＿ｅｎａｂｌｅｄ＿ｆｌａｇが０であれば、変換ユニットシンタックス内にｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素が存在しないことを示す。
【０２６０】
iii）ＣｕＰｒｅｄＭｏｄｅ［ｘ０］［ｙ０］＝＝ＭＯＤＥ＿ＩＮＴＲＡ
【０２６１】
第３条件は予測モードに関し、２次変換はイントラ予測されたブロックにのみ適用される。よって、現在ブロックがイントラ予測されたブロックであれば、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。
【０２６２】
iv）ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ＝＝ＩＳＰ＿ＮＯ＿ＳＰＬＩＴ
【０２６３】
第４条件はＩＳＰ予測方式が適用されるのか否かに関し、現在ブロックにＩＳＰが適用されていなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２６４】
詳しくは、図１１を参照して説明したように、現在ＣＵに対してＣＵサイズより小さい多数の変換ユニットに分割される場合、分割された変換ユニットには２次変換はが適用されない。この際、２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。現在ＣＵに対して変換ツリーよりＣＵサイズが小さい多数の変換ユニットに分割される場合、ＩＳＰ予測が現在コーディングユニットに適用される場合を含む。ＩＳＰ予測方法は、現在コーディングユニットにイントラ予測が適用される場合、予め設定された分割方法によって変換ツリーをＣＵサイズより小さい多数の変換ユニットに分割する予測方法である。コーディングユニットレベルでＩＳＰ予測モードが指示され、それに基づいて変数ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅ変数が設定される。ＩｎｔｒａＳｕｂＰａｒｔｉｔｉｏｎｓＳｐｌｉｔＴｙｐｅがＩＳＰ＿ＮＯ＿ＳＰＬＩＴであれば、現在ブロックにＩＳＰが適用されないことを示す。変換ユニットレベルで予測サンプルを生成するイントラ予測の特性上、変換ツリーを分割して多数の変換ユニットに分割されたときが分割しなかったときより予測の正確度が上がる。よって、分割された多数の変換ユニットに２次変換が適用されなくても、残差信号のエネルギーが効率的に圧縮される可能性が高い。
【０２６５】
v）！ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］
【０２６６】
第５条件はイントラ予測方法に関し、現在コーディングユニットにＭＩＰ（Ｍａｔｒｉｘ  ｂａｓｅｄ  Ｉｎｔｒａ  Ｐｒｅｄｉｃｔｉｏｎ）が適用されなければ、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］シンタックス要素をパージングする。
【０２６７】
詳しくは、イントラ予測の一方法都市てＭＩＰが使用されるが、ＭＩＰの適用可否はコーディングユニットレベルでｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］で指示される。ｉｎｔｒａ＿ｍｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が１であれば、ＭＩＰが現在コーディングユニットの予測に適用されることを示し、現在ブロックの周辺の復元されたサンプルと予め設定された行列の積で予測が行われる。ＭＩＰが適用されれば、方向性または無方向性の予測を行う一般的なイントラ予測とは異なる残差信号の性質を示すため、ＭＩＰが適用される際には変換ブロックに２次変換が適用されなくてもよい。
【０２６８】
vi）ｌｆｎＬａｓｔＳｃａｎＰｏｓ＝＝０
第６条件は、変換ブロックのスキャン順上最後の有効係数に関する。
【０２６９】
詳しくは、現在変換ユニットが含む変換ブロックのスキャン順上最後の有効係数の位置情報（スキャンインデックス）が予め設定された臨界値より小さければ、２次変換で得られる符号化効率の利得が少ない恐れがある。よって、このような場合、エンコーダは変換ブロックに２次変換を適用しない可能性が高く（ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］は０）、よって、エンコーダがｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をシグナリングすることはオーバーヘッドが大きいと考えられる。よって、変換ユニットが含む変換ブロックのうち少なくとも一つの変換ブロックに対して、スキャン順上最後の有効係数の位置（スキャンインデックス）が予め設定された臨界値以上である場合にのみ、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。
【０２７０】
言い換えれば、上述したように臨界値は０以上の整数である。例えば、臨界値が１と仮定すると、スキャン順上最後の有効係数の位置（スキャンインデックス）が臨界値以上ということは、有効係数がブロックの左上端（スキャンインデックス０、ＤＣ）以外の位置に存在するという意味である。この際、変換ブロックのスキャン順上最後の有効係数の位置が臨界値以上であるということは、「ｌｆｎＬａｓｔＳｃａｎＰｏｓ＝＝」で表されてもよい。
【０２７１】
vii）ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ＝＝０
【０２７２】
第７条件は、特定位置に存在する有効係数に関する。
【０２７３】
詳しくは、現在ブロックに２次変換が適用されれば、スキャン位置上の特定位置では有効係数が存在することができない。つまり、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ変数は、特定位置に０ではない変換係数が存在するのか否かを示す。例えば、現在ブロックに２次変換が適用されれば、最大１６個の有効係数のみが許容されると仮定する。４×４、８×８サイズの変換ブロックには、スキャン順上インデックス［０，７］領域に有効係数が存在し得る（最大８個の０ではない変換係数を許容）。一方、４×４、８×８以外のサイズを有する変換ブロックには、スキャン順上インデックス［０，１５］領域に有効係数が存在し得る（最大１６個の０ではない変換係数を許容）。よって、スキャン順上最後の有効係数の位置（スキャンインデックス）が上述した有効係数が存在し得る領域以外に存在すれば、デコーダは、現在ブロックに２次変換が適用されないことを自ずと認識することができる。よって、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ＞０であれば、現在ブロックに２次変換が適用されないということであるため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。
【０２７４】
言い換えれば、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０でなければ、特定位置に有効係数が存在することを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。それに対し、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆが０であれば、特定位置に有効係数が存在しないことを意味するため、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされる。
【０２７５】
上述した条件i）乃至vii）がいずれも真であればｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされ、そうではければｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０と設定される。
【０２７６】
図２７は、本発明の実施例によるスキャン順上の最後の有効係数の位置に関するシンタックス構造を示す図である。
【０２７７】
図２７を見ると、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓシンタックス構造はそれぞれのカラー成分Ｙ、Ｃｂ、Ｃｒ変換ブロックに対するスキャン順上最後の有効係数の位置情報を含むシンタックス構造を意味する。そして、ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓシンタックス構造は、変換ブロックの左−上端座標である（ｘ０，ｙ０）と、変換ブロックの幅に底が２のｌｏｇをとったｌｏｇ２ＴｂＷｉｄｔｈ、変換ブロックの高さに底が２のｌｏｇをとったｌｏｇ２ＴｂＨｅｉｇｈｔ、及び変換ブロックがどのカラー成分を示すｃＩｄｘを入力として受ける。ｃＩｄｘが０であればルマ変換ブロックを、ｃＩｄｘが１であればクロマＣｂ変換ブロックを、ｃＩｄｘが２であればクロマＣｒ変換ブロックを示す。
【０２７８】
ｌａｓｔ＿ｓｉｇｎｉｆｉｃａｎｔ＿ｐｏｓシンタックス構造では、スキャン順上最後の有効係数の位置情報に関するシンタックス要素がパーシングされる。詳しくは、スキャン順上最後の有効係数のｘ座標値、ｙ座標値に関するシンタックス要素がパーシングされる。この際、それぞれの座標値は、プレフィックス（ｐｒｅｆｉｘ）情報とサフィックス（ｓｕｆｆｉｘ）情報に分割されて指示される。デコーダは、ｘ座標に対するプレフィックス情報とサフィックス情報に基づいて、スキャン順上最後の有効係数のｘ座標であるＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸ変数を設定する。同じく、デコーダは、ｙ座標に対するプレフィックス情報とサフィックス情報に基づいて、スキャン順上最後の有効係数のｙ座標であるＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹ変数を設定する。デコーダは、図２７に示したように、ｄｏ｛｝ｗｈｉｌｅ（）構造でＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸ、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹ、ＤｉａｇＳｃａｎＯｒｄｅｒに基づいて、スキャン順上最後の有効係数のスキャンインデックスえあるｌａｓｔＳｃａｎＰｏｓを設定する。また、デコーダはｌａｓｔＳｃａｎＰｏｓに基づいて、２次変換に関するシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］のパージング条件に活用される変数であるｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆとｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓをアップデートする。
【０２７９】
現在ブロックに２次変換が適用されれば、スキャン位置上の特定位置では有効係数が存在することができない。ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ変数は、このような位置で０ではない変換係数が存在するのかを示す。例えば、現在ブロックに２次変換が適用されれば、最大１６個の有効係数のみが許容されると仮定する。４×４、８×８サイズの変換ブロックには、スキャン順上インデックス［０，７］領域に有効係数が存在し得る（最大８個の０ではない変換係数を許容）。一方、４×４、８×８以外のサイズを有する変換ブロックには、スキャン順上インデックス［０，１５］領域に有効係数が存在し得る（最大１６個の０ではない変換係数を許容）。よって、スキャン順上最後の有効係数の位置（スキャンインデックス）が上述した有効係数が存在し得る領域以外に存在すれば、デコーダは、現在ブロックに２次変換が適用されないことを自ずと認識することができる。２次変換を適用可能なブロックの最小サイズは４×４で、変換スキップが適用されれば（ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］＝＝１）、２次変換が適用されない。よって、変換ブロックの幅が４以上で（ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２）、変換ブロックの高さが４以上で（ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２）、変換スキップが適用されない（ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］＝＝０）変換ブロックに対して、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆがアップデートされる。２次変換を適用されれば、４×４、８×８サイズの変換ブロックに対してはスキャン順上インデックス［０，７］領域でのみ０ではない変換係数が存在し得る。よって、変換ブロックが４×４、８×８で、（（ｌｏｇ２ＴｂＷｉｄｔｈ＝＝２｜｜ｌｏｇ２ＴｂＨｅｉｇｈｔ＝＝３）＆＆（ｌｏｇ２ＴｂＷｉｄｔｈ＝＝ｌｏｇ２ＴｂＨｅｉｇｈｔ））、ｌａｓｔＳｃａｎＰｏｓが７より大きければ（ｌａｓｔＳｃａｎＰｏｓ＞７）、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆは１増加する。２次変換を適用可能な４×４、８×８サイズを除いた変換ブロックに対して、はスキャン順上インデックス［０，１５］領域でのみ０ではない変換係数が存在し得る。よって、ｌａｓｔＳｃａｎＰｏｓが１５より大きければ（ｌａｓｔＳｃａｎＰｏｓ＞１５）、ｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆは１増加する。
【０２８０】
デコーダは、ｌａｓｔＳｃａｎＰｏｓに基づいてｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓを決定する。詳しくは、変換ブロックの幅及び高さが４以上で、変換ブロックに変換スキップが適用されなければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式６のように設定される。言い換えれば、ｌｏｇ２ＴｂＷｉｄｔｈ＞＝２で、ｌｏｇ２ＴｂＨｅｉｇｈｔ＞＝２で、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式１のように設定される。この際、ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ［ｘ０］［ｙ０］が０であれば、現在変換ブロックに変換スキップが適用されない場合を意味する。
【０２８１】
【数６】
2021531669.tif 000008
【０２８２】
上述したように、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓの初期化値は１に設定される。
【０２８３】
数式６において、ｃＩｄｘは、上述したように現在変換ブロックのカラー成分を意味する変数を示す。
【０２８４】
数式６によると、直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが１でｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］より小さければ、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１にアップデートされる。それに対し、直線のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓが０であるか、ｌａｓｔＳｃａｎＰｏｓがｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０にアップデートされる。
【０２８５】
言い換えれば、変換ユニットが含む全ての変換ブロックのｌａｓｔＳｃａｎＰｏｓが臨界値より小さいか、全ての変換ブロックの個数がいずれも０であればｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは１に決定され、図２６のｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］パージング条件によって、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］はパージングされずに０に設定される。これは、現在ブロックに２次変換が適用されないことを示す。それに対し、変換ユニットが含む変換ブロックのうちいずれか一つでもＬａｓｔＳｃａｎＰｏｓが臨界値以上であれば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０に決定され、図２６で説明した条件i）、ii）、iii）、iv）、v）、vii）をいずれも満足すれば（真であれば）、デコーダはｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングする。デコーダは、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］をパージングして現在ブロックに２次変換が適用されるか否かを確認し、現在ブロックに２次変換が適用されれば、２次変換に使用される変換カーネルを確認／決定する。
【０２８６】
数式６のｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ［ｃＩｄｘ］は予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。また、全てのカラー成分が同じ臨界値を使用してもよい。この場合、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは下記数式７のように設定される。
【０２８７】
【数７】
2021531669.tif 000009
【０２８８】
ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈは予め設定された０以上の整数値であって、エンコーダとデコーダがいずれも同じ値を使用する。例えば、ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈは1であってもよい。つまり、ｌａｓｔＳｃａｎＰｏｓが１以上であればｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓは０にアップデートされ、ｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］がパージングされる。この際、臨界値（ｌｆｎｓｔＬａｓｔＳｃａｎＰｏｓＴｈ）は整数値であるため、ｌａｓｔＳｃａｎＰｏｓが１以上であればｌａｓｔＳｃａｎＰｏｓが０より大きい場合と同じ意味である。図２７では全てのカラー成分が同じ臨界値である１の場合について説明したが、本発明はこれに限らない。
【０２８９】
図２８は、本発明の実施例によるｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇシンタックス構造を示す図である。
【０２９０】
図２８を見ると、スキャン順上最後の有効係数の位置情報は、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の目に指示される。よって、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）のシンタックス構造は、スキャン順上最後の有効係数の位置情報に関するシンタックス構造を含まなくてもよい。例えば、スキャン順上最後の有効係数の位置情報は、スキャン順上最後の有効係数のｘ座標に対するプレフィックス、サフィックス、ｙ座標に対するプレフィックス、サフィックスである。図２８による係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）シンタックス構造を調べると、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）の前に決定されたスキャン順上最後の有効係数のｘ座標、ｙ座標であるＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＸ、ＬａｓｔＳｉｇｎｉｆｉｃａｎｔＣｏｅｆｆＹに基づいて係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）が行われる。
【０２９１】
第４実施例による２次変換の指示方法は、ｎｕｍＳｉｇＣｏｅｆｆカウンタを使用しない。よって、（ｘＣ，ｙＣ）位置の係数が有効係数であっても（ｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇ［ｘＣ］［ｙＣ］＝＝１）、ｎｕｍＳｉｇＣｏｅｆｆはアップデートされない。言い換えれば、第４実施例による２次変換の指示方法は、有効係数に対するカウンタを使用しない方法である。また、第４実施例による２次変換の指示方法によると、ｌａｓｔＳｃａｎＰｏｓに基づいてｎｕｍＺｅｒｏＯｕｔＳｉｇＣｏｅｆｆ変数が設定されるため、係数コーディング（ｒｅｓｉｄｕａｌ＿ｃｏｄｉｎｇ）でｓｉｇ＿ｃｏｅｆｆ＿ｆｌａｇに基づくカウンタは使用されなくてもよい。
【０２９２】
図２９は、本発明の実施例によるビデオ信号処理方法を示す順序図である。
【０２９３】
以下では、図１５乃至図２８を介して説明した実施例に基づくビデオ信号処理方法及び装置について説明する。
【０２９４】
ビデオ信号復号化装置は、図２９で説明したビデオ信号処理方法を行うプロセッサを含む。
【０２９５】
まず、前記プロセッサは、コーディングユニットの２次変換に関するシンタックス要素が含まれたビットストリームを受信する。
【０２９６】
前記プロセッサは、予め設定された一つ以上の条件が満足されたのか否かを確認し、前記予め設定された一つ以上の条件が満足されれば、前記コーディングユニットの２次変換に関するシンタックス要素をパージングするＳ２９１０、Ｓ２９２０。一方、プロセッサは、予め設定された一つ以上の条件が満足されなければ、前記コーディングユニットの２次変換に関するシンタックス要素をパージングしないＳ２９３０。この際、２次変換に関するシンタックス要素の値は０に設定される。
【０２９７】
図２９で説明するコーディングユニットの２次変換に関するシンタックス要素は、図５乃至図２８で説明した現在コーディングユニットに含まれる変換ブロック２次変換が適用されるのか否かを示すシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］である。
【０２９８】
前記プロセッサはＳ２９２０ステップを介してコーディングユニットの２次変換に関するシンタックス要素をパージングし、パージングされたシンタックス要素に基づいて、前記コーディングユニットに含まれる変換ブロックに前記２次変換が適用されるのか否かを確認するＳ２９４０。
【０２９９】
この際、前記変換ブロックに前記２次変換が適用されていれば、プロセッサは前記変換ブロックを構成する一つ以上のサブブロックのうち一つである第１サブブロックの一つ以上の係数に基づく２次逆変換を行い、前記第１サブブロックに対する一つ以上の逆変換係数を確認するＳ２９５０。
【０３００】
そして、前記プロセッサはＳ２９５０ステップで獲得した前記一つ以上の逆変換係数に基づく１次逆変換を行い、前記変換ブロックに対する残差サンプルを確認するＳ２９６０。
【０３０１】
前記２次変換は、低帯域非−分離変換（ＬＦＮＳＴ）である。そして、前記変換ブロックは、垂直変換及び水平変換にそれぞれ分離されて行われる１次変換が適用されたブロックである。この際、前記１次逆変換は前記１次変換に対する逆変換であり、前記２次逆変換は前記２次変換に対する逆変換を意味する。
【０３０２】
前記コーディングユニットの２次変換に関するシンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含む。
【０３０３】
前記第１サブブロックは予め設定されたスキャン順による最初のサブブロックであるが、この際、前記第１サブブロックのインデックスは０である。
【０３０４】
前記予め設定された一つ以上の条件のうち第１条件は、前記第１サブブロックの前記一つ以上の係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合である。この際、前記第１係数は予め設定されたスキャン順による最後の有効係数であり、前記有効係数は０ではない係数を意味する。前記予め設定された臨界値は０である。前記予め設定されたスキャン順は、図１３、１４で説明した右上側対角スキャン順である。
【０３０５】
前記予め設定された一つ以上の条件のうち第２条件は、前記変換ブロックの幅及び高さは４ピクセル以上である。
【０３０６】
前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ値が特定値ではない場合である。この際、変換スキップフラッグの値が特定値を有すれば、前記変換スキップフラッグは前記変換ブロックに前記１次変換及び前記２次変換が適用されないことを指示する。
【０３０７】
前記予め設定された一つ以上の条件のうち第４条件は、前記第１サブブロックの前記一つ以上の係数のうち少なくとも一つの係数は０ではなく、前記少なくとも一つ以上の係数は予め設定されたスキャン順による最初の位置を除いたところに存在する場合である。この際、前記予め設定されたスキャン順による最初の位置は、上述したように水平、垂直座標の値が（０，０）である位置を意味するか、予め設定されたスキャン順（例えば、右上側対角順）による最初の位置を意味する。
【０３０８】
また、前記コーディングユニットは複数のコーディングブロックで構成される。この際、前記複数のコーディングブロックそれぞれに対応する変換ブロックのうち少なくともいずれか一つでも前記予め設定された一つ以上の条件を満足すれば、前記２次変換に関するシンタックス要素がパージングされる。
【０３０９】
一方、２次変換に関するシンタックス要素がパーシングされないか０に設定される場合Ｓ２９３０、またはＳ２９４０ステップで前記コーディングユニットに含まれる変換ブロックに前記２次変換が適用されないと確認される場合、プロセッサは、前記変換ブロックの一つ以上の係数に基づく１次逆変換を行って、前記変換ブロックに対する残差サンプルを獲得するＳ２９７０。
【０３１０】
この際、上述した１次逆変換、２次逆変換はそれぞれ１次変換、２次変換に対する逆変換である。
【０３１１】
図２９で説明したビデオ信号復号化装置で行われるビデオ信号処理方法、またはそれと類似した方法がビデオ信号符号化装置で行われる。
【０３１２】
ビデオ信号符号化装置は、ビデオ信号を符号化するプロセッサを含む。
【０３１３】
この際、前記プロセッサは、コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行い、前記ブロックに対する複数の１次変換係数を獲得する。前記複数個の１次変換係数のうち一つ以上の係数に基づく２次変換を行い、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得する。前記一つ以上の２次変換係数に対する情報、及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化してビットストリームを獲得する。
【０３１４】
前記２次変換は低帯域非−分離変換（ＬＦＮＳＴ）であり、前記１次変換は水平変換及び垂直変換にそれぞれ分離されて行われてもよい。
【０３１５】
また、前記２次変換に関するシンタックス要素は、予め設定された一つ以上の条件を満足すれば符号化される。前記２次変換に関するシンタックス要素は、前記コーディングユニットに前記２次変換が適用されるのか否かを指示する情報と、前記２次変換に使用される変換カーネルを指示する情報と、を含む。この際、前記２次変換に関するシンタックス要素は、図１５乃至図２８で説明したシンタックス要素であるｌｆｎｓｔ＿ｉｄｘ［ｘ０］［ｙ０］である。
【０３１６】
前記第１サブブロックは、予め設定されたスキャン順による最初のサブブロックである。この際、前記第１サブブロックのインデックスは０である。
【０３１７】
前記予め設定された一つ以上の条件のうち第１条件は、前記一つ以上の２次変換係数のうち第１係数の位置を示すインデックス値が予め設定された臨界値より大きい場合である。この際、前記第１係数は予め設定されたスキャン順による最後の有効係数であり、前記有効係数は０ではない係数を意味する。前記予め設定された臨界値は０である。前記予め設定されたスキャン順は、図１３、１４で説明した右上側対角スキャン順である。
【０３１８】
前記予め設定された一つ以上の条件のうち第２条件は、前記１次変換ブロックの幅及び高さは４ピクセル以上である。
【０３１９】
前記予め設定された一つ以上の条件のうち第３条件は、前記ビットストリームに含まれた変換スキップフラッグ値が特定値ではない場合である。この際、変換スキップフラッグの値が特定値を有すれば、前記変換スキップフラッグは前記ブロックに前記１次変換及び前記２次変換が適用されないことを指示する。
【０３２０】
前記予め設定された一つ以上の条件のうち第４条件は、前記一つ以上の２次変換係数のうち少なくとも一つの係数は０ではなく、前記一つ以上の係数は予め設定されたスキャン順による最初の位置を除いたところに存在する場合である。この際、前記予め設定されたスキャン順による最初の位置は、上述したように水平、垂直座標の値が（０，０）である位置を意味するか、予め設定されたスキャン順（例えば、右上側対角順）による最初の位置を意味する。
【０３２１】
また、前記コーディングユニットは複数のコーディングブロックで構成される。この際、前記複数のコーディングブロックそれぞれに対応するコーディングユニットに含まれる（変換）ブロックのうち少なくともいずれか一つでも前記予め設定された一つ以上の条件を満足すれば、前記２次変換に関するシンタックス要素が符号化される。
【０３２２】
また、ビデオ信号符号化装置は、図２９で説明したビデオ信号処理方法を行うビデオ信号復号化プロセッサを含んでもよい。
【０３２３】
上述したように、ビットストリームには図１５乃至図２９で説明したコーディングユニットの２次変換に関するシンタックス要素が含まれる。この際、前記ビットストリームは非−一時的コンピュータ読取可能媒体に貯蔵される。一方、ビデオ信号符号化装置は、上述した予め設定された一つ以上の条件が満足されなければ、２次変換に関するシンタックス要素を前記ビットストリームに含まないか、２次変換に関するシンタックス要素を０に設定する。ビットストリームは、図２９を介して説明したビデオ信号復号化装置によって復号化されるか、上述したビデオ信号符号化装置によって符号化される。
【０３２４】
このようなビットストリームを符号化する方法は、例えば、コーディングユニットに含まれるブロックの残差サンプルに対する１次変換を行って前記ブロックに対する複数個の１次変換係数を獲得し、前記複数個の１次変換係数のうち一つ以上の係数に基づく２次変換を行って、前記ブロックを構成するサブブロックのうち一つである第１サブブロックに対する一つ以上の２次変換係数を獲得し、及び前記一つ以上の２次変換係数に対する情報及び前記コーディングユニットの２次変換に関するシンタックス要素を符号化する過程を含む符号化方法である。
【０３２５】
本明細書で説明する係数を獲得するということは、係数に関するピクセル／ブロックを獲得するという意味であり、残差サンプルを獲得するということは、残差サンプルに関する残差信号／ピクセル／ブロックを獲得するという意味である。
【０３２６】
上述した本発明の実施例は多様な手段を介して具現される。例えば、本発明の実施例は、ハードウェア、ファームウェア（ｆｉｒｍｗａｒｅ）、ソフトフェアまたはそれらの組み合わせによって具現される。
【０３２７】
ハードウェアによる具現の場合、本発明の実施例による方法は、一つまたはそれ以上のＡＳＩＣｓ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、ＤＳＰｓ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒｓ）、ＤＳＤＰｓ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｄｅｖｉｃｅｓ）、ＰＤＬｓ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅｓ）、ＦＰＧＡｓ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサなどによって具現される。
【０３２８】
ファームフェアやソフトウェアによる具現の場合、本発明の実施例による方法は、上述した機能または動作を行うモジュール、手順または関数などの形態で具現される。ソフトウェアコードは、メモリに貯蔵されてプロセッサによって具現される。前記メモリはプロセッサの内部または外部に位置し、既に公知の多様な手段によってプロセッサとデータを交換する。
【０３２９】
一部の実施例はコンピュータによって実行されるプログラムモジュールのようなコンピュータで実行可能な命令語を含む記録媒体の形態にも具現される。コンピュータで判読可能な媒体は、コンピュータでアクセスされ得る任意の利用可能な媒体であり、揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。また、コンピュータ読取可能媒体は貯蔵媒体及び通信媒体をいずれも含む。コンピュータ貯蔵媒体は、コンピュータ判読可能な命令語、データ構造、プログラムモジュール、またはその他のデータのような情報の貯蔵のための任意の方法または技術で具現された揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。通信媒体は、典型的にコンピュータ読取可能な命令語、データ構造、またはプログラムモジュールのような変調されたデータ信号のその他のデータ、またはその他の伝送メカニズムを含み、任意の情報伝達媒体を含む。
【０３３０】
上述した本発明の説明は例示のためのものであって、本発明が属する技術分野における通常の知識を有する者は、本発明の技術的思想や必須的特徴を変更せずも他の具体的な形態に容易に変更可能であることを理解できるはずである。よって、上述した実施例は全ての面で例示的なものであり、限定的なものではないと理解すべきである。例えば、単一型として説明されている各構成要素は分散されて実施されてもよく、同じく分散されていると説明されている構成要素も結合された形態で実施されてもよい。
【０３３１】
本発明の範囲は、上述した詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、そしてその均等概念から導き出される全ての変更または変形された形態が本発明の範囲に含まれると解釈すべきである。
【符号の説明】
【０３３２】
110  変換部
115  量子化部
120  逆量子化部
125  逆変換部
130  フィルタリング部
150  予測部
152  イントラ予測部
154  インター予測部
154a  モーション推定部
154b  モーション補償部
160  エントロピーコーディング部
210  エントロピーデコーディング部
220  逆量子化部
225  逆変換部
230  フィルタリング部
250  予測部
252  イントラ予測部
254  インター予測部
【図１】
2021531669.tif 000010
【図２】
2021531669.tif 000011
【図３】
2021531669.tif 000012
【図４】
2021531669.tif 000013
【図５】
2021531669.tif 000014
【図６】
2021531669.tif 000015
【図７】
2021531669.tif 000016
【図８】
2021531669.tif 000017
【図９】
2021531669.tif 000018
【図１０】
2021531669.tif 000019
【図１１】
2021531669.tif 000020
【図１２】
2021531669.tif 000021
【図１３】
2021531669.tif 000022
【図１４（ａ）】
2021531669.tif 000023
【図１４（ｂ）】
2021531669.tif 000024
【図１５】
2021531669.tif 000025
【図１６】
2021531669.tif 000026
【図１７】
2021531669.tif 000027
【図１８】
2021531669.tif 000028
【図１９】
2021531669.tif 000029
【図２０】
2021531669.tif 000030
【図２１】
2021531669.tif 000031
【図２２】
2021531669.tif 000032
【図２３】
2021531669.tif 000033
【図２４】
2021531669.tif 000034
【図２５】
2021531669.tif 000035
【図２６】
2021531669.tif 000036
【図２７】
2021531669.tif 000037
【図２８】
2021531669.tif 000038
【図２９】
2021531669.tif 000039
【国際調査報告】
2021531669.tif 000040
2021531669.tif 000041
2021531669.tif 000042
2021531669.tif 000043