(57)【特許請求の範囲】
【請求項１】
ビデオの符号化方法において、
所定サイズのブロックの周波数変換に利用される変換行列に基づいて、高速変換行列を生成するステップと、
前記高速変換行列を利用して、前記所定サイズのブロックを変換して、変換ブロックを生成するステップと、
前記周波数変換に利用される変換行列と、前記高速変換行列との差値を補正するために、前記変換ブロックに対するスケーリングを行うステップと、を含むことを特徴とするビデオ符号化方法。
【請求項２】
前記高速変換行列を生成するステップは、
前記周波数変換に利用される変換行列の元素のうち、三角関数に基づいた値を、分母が２の累乗である有理数に置換して、前記高速変換行列を生成することを特徴とする請求項１に記載のビデオ符号化方法。
【請求項３】
前記高速変換行列を生成するステップは、
前記周波数変換に利用される変換行列の元素それぞれに所定の定数を乗じた値を四捨五入して、前記高速変換行列を生成することを特徴とする請求項１に記載のビデオ符号化方法。
【請求項４】
前記変換ブロックはＮ×Ｎ変換ブロックであり、
前記スケーリングを行うステップは、
前記Ｎ×Ｎ変換ブロックと、所定のスケーリング行列とのベクトル積演算を利用したり、前記Ｎ×Ｎ変換ブロックに所定のスケーリング定数を乗じて行われることを特徴とする請求項１に記載のビデオ符号化方法。
【請求項５】
前記スケーリング行列及びスケーリング定数は、量子化パラメータに基づいて決定されることを特徴とする請求項４に記載のビデオ符号化方法。
【請求項６】
前記量子化パラメータをＱＰとする時、前記ＱＰが０ないし５であるそれぞれの場合に対応する６個のスケーリング行列及びスケーリング定数が設定され、（ＱＰ  ｍｏｄ  ６）値によって、前記６個のスケーリング行列及びスケーリング定数のうち一つが選択されることを特徴とする請求項５に記載のビデオ符号化方法。
【請求項７】
前記スケーリング行列は、
所定サイズのＭ×Ｍ（Ｍは、整数）のブロックのみに対して、前記量子化パラメータＱＰを基準として、６個のスケーリング行列（ＭＦ）を設定し、前記所定サイズのブロックより小さいか、または大きいＮ×Ｎブロックに対するスケーリング行列としては、前記Ｍ×Ｍブロックに対して設定されたスケーリング行列の各元素を（Ｍ／Ｎ）倍したスケーリング行列を利用することを特徴とする請求項４に記載のビデオ符号化方法。
【請求項８】
ビデオの復号化方法において、
所定サイズの量子化された変換ブロックを受信するステップと、
前記量子化された変換ブロックの周波数逆変換に利用される逆変換行列と、前記逆変換行列に基づいて生成される高速逆変換行列との差値を補正するために、前記変換ブロックに対するデスケーリングを行うステップと、
前記高速逆変換行列を利用して、前記デスケーリングされた変換ブロックを逆変換して、逆変換ブロックを生成するステップと、
を含むことを特徴とするビデオ復号化方法。
【請求項９】
前記高速逆変換行列を生成するステップは、
指標に利用されるＮ×Ｎ逆変換行列の元素のうち、三角関数に基づいた値を、分母が２の累乗である有理数に置換して、前記高速逆変換行列を生成することを特徴とする請求項８に記載のビデオ復号化方法。
【請求項１０】
前記高速逆変換行列を生成するステップは、
指標に利用されるＮ×Ｎ逆変換行列の元素それぞれに２＾ｎ（ｎは、整数）を乗じた値を四捨五入して、前記高速逆変換行列を生成することを特徴とする請求項８に記載のビデオ復号化方法。
【請求項１１】
前記デスケーリングを行うステップは、
前記量子化されたＮ×Ｎ変換ブロックと、所定のデスケーリング行列とのベクトル積演算を利用したり、前記Ｎ×Ｎ逆変換ブロックに所定のデスケーリング定数を乗じて行われることを特徴とする請求項８に記載のビデオ復号化方法。
【請求項１２】
前記デスケーリング行列及びデスケーリング定数は、量子化パラメータに基づいて決定されることを特徴とする請求項１１に記載のビデオ復号化方法。
【請求項１３】
前記デスケーリング行列及びデスケーリング定数は、
前記量子化パラメータをＱＰとする時、前記ＱＰが０ないし５であるそれぞれの場合に対応する６個のデスケーリング行列及びデスケーリング定数が設定され、（ＱＰ  ｍｏｄ  ６）値によって、前記６個のデスケーリング行列及びデスケーリング定数のうち一つが選択されることを特徴とする請求項１２に記載のビデオ復号化方法。
【請求項１４】
前記デスケーリング行列は、
所定サイズのＭ×Ｍのブロックのみに対して、前記量子化パラメータＱＰを基準として、６個のデスケーリング行列を設定し、前記所定サイズのブロックより小さいか、または大きいＮ×Ｎブロックに対するデスケーリング行列としては、前記Ｍ×Ｍブロックに対して設定されたデスケーリング行列の各元素を（Ｍ／Ｎ）倍したデスケーリング行列を利用することを特徴とする請求項１３に記載のビデオ復号化方法。
【請求項１５】
前記デスケーリング定数は、
ｉ＝（ＱＰ  ｍｏｄ  ６）とする時、デスケーリング定数ＤＱＭａｔｉは、ＤＱＭａｔ０＝４０，ＤＱＭａｔ１＝４５，ＤＱＭａｔ２＝５１，ＤＱＭａｔ３＝５７，ＤＱＭａｔ４＝６４，ＤＱＭａｔ５＝７２であることを特徴とする請求項１３に記載のビデオ復号化方法。
【請求項１６】
ビデオの復号化方法において、
所定サイズの量子化された変換ブロックを受信するステップと、
量子化パラメータに基づき前記量子化された変換ブロックに含まれた変換係数の逆量子化に利用されるデスケーリング定数を決定するステップと、
前記決定されたデスケーリング定数を利用して、前記量子化された変換ブロックに含まれた変換係数をデスケーリングするステップと、
前記デスケーリングされた変換ブロックに対する逆変換を行うステップと、
を含むことを特徴とするビデオ復号化方法。
【請求項１７】
前記デスケーリング定数は、
前記量子化パラメータをＱＰとする時、前記ＱＰが０〜５であるそれぞれの場合に対応する６つのデスケーリング定数が設定され、i=(QP  mod  6)であるとする時、デスケーリング定数(DQMati)はDQMat0=40、DQMat1=45、DQMat2=51、DQMat3=57、DQMat4=64;DQMat5=72であることを特徴とする
請求項１６に記載のビデオ復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオの符号化、復号化方法及びその装置に係り、特に大きいサイズのブロックを変換する方法及びその装置、並びに大きいサイズの変換ブロックを逆変換する方法及びその装置に関する。
【背景技術】
【０００２】
Ｈ．２６４及びＭＰＥＧ−４のような現在の国際ビデオコーディング標準において、ビデオ信号は、シーケンス、フレーム、スライス、マクロブロック及びブロックに階層的に分割され、ブロックは、最小処理ユニットとなる。エンコーディングの側面において、イントラ・フレームまたはインター・フレームの予測を通じて、ブロックの予測残留エラーが獲得され、ブロック変換は、エネルギーが小数の係数に集中するように実行され、量子化、スキャニング、ランレングスコーディング(Run  Length  Coding)及びエントロピーコーディングを通じて、イメージデータは圧縮され、コーディングされたビットストリームとして記録される。デコーディングの側面において、処理手続きは逆になる。まず、エントロピーコーディングのブロック変換係数が、ビートストリームから抽出される。次いで、逆量子化及び逆変換を通じて、ブロックの予測残留エラーは再構成され、予測情報は、ブロックのビデオデータを再構成するために使われる。エンコーディング・デコーディング処理手続きにおいて、変換モジュールは、ビデオ圧縮のベースであり、変換性能は、コーデックの一般的な性能に直接的に影響を与える。
【０００３】
離散コサイン変換(Discrete  Cosine  Transform:  DCT)は、ＭＰＥＧ−１及びＨ．２６１のような初期のビデオコーディング標準で採択された。１９７４年ＤＣＴが提案された後、ＤＣＴは、イメージ及びビデオコーディング分野で広く使われた。変換ドメイン内のイメージ要素の相関性を除去し、高効率のイメージ圧縮のためのベースを設けるので、ＤＣＴの変換性能は、全ての次善変換(sub-optimal  transform)のうち優秀である。しかし、ＤＣＴ行列は、浮動小数点数で表現されるので、大量の浮動小数点計算によって、多くのシステム資源が消耗される。変換効率を改善する一方、大きいサイズのブロックに対する変換を行うために、新たなＤＣＴアルゴリズムの必要性が高くなった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、大きいサイズのブロックに対する高速周波数変換を可能にするビデオ符号化方法及びその装置、並びにビデオ復号化方法及びその装置を提供することである。また、本発明が解決しようとする他の課題は、高速周波数変換を利用する時に発生する変換誤差を、量子化過程または逆量子化過程で、スケーリングまたはデスケーリング過程を通じて補償するビデオ符号化方法及びその装置、並びにビデオ復号化方法及びその装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態によれば、変換ブロックに対するスケーリングを行うことによって、高速変換行列を利用した結果の誤差を減少させる。
【発明の効果】
【０００６】
本発明によれば、大きいサイズのブロックに対する変換及び逆変換時に、浮動小数点演算ではない整数に基づいた演算過程を通じて、複雑度を低減させ、演算速度を速める映像の変換及び逆変換方法を提供することができる。
【０００７】
また、本発明によれば、量子化過程または逆量子化過程で、スケーリング及びデスケーリングを行うことによって、浮動小数点演算に基づいた変換過程との誤差値を補償することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態によるビデオ符号化装置を示すブロック図である。
【図２】本発明の一実施形態による４ポイント、８ポイント、１６ポイント、３２ポイントＤＣＴのフローグラフである。
【図３】本発明の一実施形態によるスケーリング行列を生成する方法を示すフローチャートである。
【図４Ａ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図４Ｂ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図４Ｃ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図４Ｄ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図４Ｅ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図４Ｆ】本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ａ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ｂ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ｃ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ｄ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ｅ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図５Ｆ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す図面である。
【図６Ａ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図６Ｂ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図６Ｃ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図６Ｄ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図６Ｅ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図６Ｆ】本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ａ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ｂ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ｃ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ｄ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ｅ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図７Ｆ】本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す図面である。
【図８】本発明の他の実施形態による３２ポイントＤＣＴのフローグラフである。
【図９】図８の３２ポイントＤＣＴを構成するバタフライ構造の演算過程を示す参照図である。
【図１０】本発明の一実施形態によるビデオ符号化方法を示すフローチャートである。
【図１１】本発明の一実施形態によるビデオ復号化装置を示すブロック図である。
【図１２】本発明の一実施形態によるビデオ復号化方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
前述した課題を解決するための本発明の一実施形態によるビデオ符号化方法は、所定サイズのブロックの周波数変換に利用される変換行列に基づいて、高速変換行列を生成するステップと、前記高速変換行列を利用して、前記所定サイズのブロックを変換して、変換ブロックを生成するステップと、前記周波数変換に利用される変換行列と、前記高速変換行列との差値を補正するために、前記変換ブロックに対するスケーリングを行うステップと、を含むことを特徴とする。
【００１０】
本発明の一実施形態によるビデオ符号化装置は、所定サイズのブロックの周波数変換に利用される変換行列に基づいて、高速変換行列を生成し、前記高速変換行列を利用して、前記所定サイズのブロックを変換して、変換ブロックを生成する変換部と、前記周波数変換に利用される変換行列と、前記高速変換行列との差値を補正するために、前記変換ブロックに対するスケーリングを行う量子化部と、を備えることを特徴とする。
【００１１】
本発明の一実施形態によるビデオ復号化方法は、所定サイズの量子化された変換ブロックを受信するステップと、前記量子化された変換ブロックの周波数逆変換に利用される逆変換行列と、前記逆変換行列に基づいて生成される高速逆変換行列との差値を補正するために、前記変換ブロックに対するデスケーリングを行うステップと、前記高速逆変換行列を利用して、前記デスケーリングされた変換ブロックを逆変換して、逆変換ブロックを生成するステップと、を含むことを特徴とする。
【００１２】
本発明の一実施形態によるビデオ復号化装置は、所定サイズの量子化された変換ブロックの周波数逆変換に利用される逆変換行列と、前記逆変換行列に基づいて生成される高速逆変換行列との差値を補正するために、前記変換ブロックに対するデスケーリングを行う逆量子化部と、前記高速逆変換行列を利用して、前記デスケーリングされた変換ブロックを逆変換して、逆変換ブロックを生成する逆変換部と、を備えることを特徴とする。
【００１３】
以下、添付された図面を参照して、本発明の望ましい実施形態について具体的に説明する。
【００１４】
図１は、本発明の一実施形態によるビデオ符号化装置を示すブロック図である。図１を参照すれば、本発明の一実施形態によるビデオ符号化装置１００は、予測部１１０、減算部１１５、変換部１２０、量子化部１３０及びエントロピー符号化部１４０を備える。
【００１５】
予測部１１０は、入力映像を所定サイズのブロックに分割し、分割された各ブロックに対して、インター予測またはイントラ予測を通じて、予測ブロックを生成する。具体的に、予測部１１０は、以前に符号化された後で復元された参照ピクチャーの所定の探索範囲内で、現在ブロックと類似した領域を指す動きベクトルを生成する動き予測及び補償過程を通じて、予測ブロックを生成するインター予測、及び現在ブロックに隣接した周辺ブロックのデータを利用して、予測ブロックを生成するイントラ予測を行う。
【００１６】
減算部１１５は、現在ブロックの予測ブロックを、原映像データから減算したレジデュアルを生成する。
【００１７】
変換部１２０は、レジデュアルを周波数領域に変換する。特に、本発明の実施形態では、既存の４×４、８×８の相対的に小さいサイズに対して定義された離散コサイン変換(Discrete  Cosine  Transform:  DCT)行列を拡張して、１６×１６以上の大きいサイズのブロックにも適用される新たなＤＣＴ方式を提供する。後述するように、本発明の一実施形態による変換部１２０は、既存のＤＣＴに利用される変換行列の元素を、有理数値に置換することによって生成された高速変換行列を利用して、浮動小数点演算ではない整数に基づいた加算、減算及びシフト演算によりＤＣＴを行うことによって、演算の複雑度を低減させる一方、演算速度を速める。また、本発明の他の実施形態による変換部１２０は、既存のＤＣＴに利用される変換行列の元素に２の累乗を乗じた後で四捨五入した元素から構成された高速変換行列を利用して、ＤＣＴを行うことによって、全体的な演算複雑度を低減させる。
【００１８】
量子化部１３０は、変換されたレジデュアルを量子化する。特に、本発明の一実施形態による量子化部１３０は、変換部１２０で高速変換行列を利用した変換結果と、実際の浮動小数点演算に基づいたＤＣＴ行列を利用した変換結果との誤差値を減少させるために、所定のスケーリングを行う。具体的なスケーリング及び量子化過程については後述する。
【００１９】
エントロピー符号化部１４０は、量子化された映像データに対して可変長符号化を行って、ビットストリームを生成する。
【００２０】
以下、図１の変換部１２０で行われる変換過程について具体的に説明する。変換部１２０は、Ｎ×Ｎ（Ｎは、整数）入力ブロックに対して、列方向変換及び行方向変換を行って、Ｎ×Ｎ変換ブロックを生成する。Ｎ×Ｎ入力ブロックをＩｎｐｕｔ、行方向のＤＣＴ行列をＴｒａｎｓｆｏｒｍ＿ｈｏｒ、列方向のＤＣＴ行列をＴｒａｎｓｆｏｒｍ＿ｖｅｒ、変換結果値をＯｕｔｐｕｔとすれば、変換部１２０は、次の数式；Ｏｕｔｐｕｔ＝Ｔｒａｎｓｆｏｒｍ＿ｈｏｒ×Ｉｎｐｕｔ×Ｔｒａｎｓｆｏｒｍ＿ｖｅｒのような行列演算を行って、変換結果値Ｏｕｔｐｕｔを出力する。ここで、最初の行列乗算Ｔｒａｎｓｆｏｒｍ＿ｈｏｒ×Ｉｎｐｕｔは、Ｎ×Ｎ入力ブロックＩｎｐｕｔである各行に対して、一次元水平方向ＤＣＴを行うことに該当し、Ｔｒａｎｓｆｏｒｍ＿ｈｏｒ×ＩｎｐｕｔにＴｒａｎｓｆｏｒｍ＿ｖｅｒを乗じることは、一次元垂直方向ＤＣＴを行うことに該当する。行方向のＤＣＴ行列Ｔｒａｎｓｆｏｒｍ＿ｈｏｒと、列方向のＤＣＴ行列Ｔｒａｎｓｆｏｒｍ＿ｖｅｒは、互いに二項行列関係である。本発明を説明するにあたって、Ｎ×Ｎ入力ブロックに対する周波数変換及び周波数逆変換を行うＮ×Ｎサイズの変換行列及び逆変換行列を中心に説明するが、本発明による思想は、任意のａ×ｂ（ａ，ｂは、整数）サイズの周波数変換行列及び周波数逆変換行列を利用する場合にも適用されることを、当業者ならば理解できるであろう。
【００２１】
垂直変換行列の（ｉ，ｋ）番目（ｉ，ｋは、整数）に位置した元素をＡｉｋとすれば、Ｎ×Ｎ入力ブロックの変換のための垂直変換行列の（ｉ，ｋ）番目の元素Ａｉｋは、下記の数式（１）のように定義される。
【００２２】
【数１】
0005620587.tif 000002
垂直変換行列と水平変換行列は、互いに二項関係にあるので、水平変換行列の（ｉ，ｋ）番目の元素Ｂｉｋは、垂直変換行列と同様に、コサイン関数を利用した値として表現される。本発明の一実施形態による変換部１２０は、ＤＣＴに利用される変換行列の元素を、有理数値に置換することによって生成された高速変換行列を利用して、加算、減算及びシフト演算によりＤＣＴを行う。また、本発明の他の実施形態による変換部１２０は、ＤＣＴに利用される変換行列の元素に２の累乗を乗じた後で四捨五入した元素から構成された高速変換行列を利用して、ＤＣＴを行う。
【００２３】
図２は、本発明の一実施形態による４ポイント、８ポイント、１６ポイント、３２ポイントＤＣＴのフローグラフである。図２を参照すれば、ｆ０ないしｆ３１は、一次元ＤＣＴの入力値を表すと共に、一次元逆ＤＣＴの出力値となる。Ｆ０ないしＦ３１は、一次元ＤＣＴの出力値を表すと共に、一次元逆ＤＣＴの入力値となる。ＤＣＴ時に、データ処理方向は、左側から右側であり、逆ＤＣＴ時に、データ処理方向は、右側から左側である。点で交差する二本のラインは、二つの数の加算を表す。各ライン上の値は、当該係数による乗算を表す。ｃθは、ｃｏｓθ、ｓθは、ｓｉｎθを表し、‘−’は、否定を表す。点線で表示された２１０は、４ポイント一次元ＤＣＴのフローグラフ、点線で表示された２２０は、８ポイント一次元ＤＣＴのフローグラフ、点線で表示された２３０は、１６ポイント一次元ＤＣＴのフローグラフ、点線で表示された２４０は、３２ポイント一次元ＤＣＴのフローグラフを示す。
【００２４】
フローグラフ２００に示したＤＣＴの短所は、ｃθ及びｓθがθの値によって無理数となるため、演算複雑度が増加するというものである。かかるＤＣＴ過程は、ハードウェアで具現する時に複雑度を増加させる。したがって、本発明の一実施形態による変換部１２０は、ＤＣＴに利用される元素の三角関数値を、有理数値に置換することによって、本来のＤＣＴ行列と類似した高速変換行列を生成する。また、本発明の他の実施形態による変換部１２０は、ＤＣＴに利用される元素に所定の定数、例えば、２＾ｎを乗じた後で四捨五入することによって、高速変換行列を生成する。
【００２５】
具体的に、図２を参照すれば、Ｎが１６である場合、すなわち、１６×１６サイズの入力ブロックに対する一次元ＤＣＴの実行時に、フローグラフ２３０によって、入力ブロックの１６個の行単位及び１６個の列単位別に一次元ＤＣＴが行われる。１６個の入力値をｆ＝［ｆ０，ｆ１，ｆ２，…，ｆ１４，ｆ１５］Ｔ、変換結果値をＦ＝［Ｆ０，Ｆ１，Ｆ２，…，Ｆ１４，Ｆ１５］Ｔ、フローグラフ２３０による入力値に対する変換過程を表した変換行列をＯｒｉｇｉｎａｌ＿Ａとすれば、一次元ＤＣＴは、Ｆ＝Ｏｒｉｇｉｎａｌ＿Ａｘｆで表現される。
【００２６】
前述したように、ｃｏｓθ及びｓｉｎθは、θの値によって無理数となるため、本発明の一実施形態による変換部１２０は、変換行列Ｏｒｉｇｉｎａｌ＿Ａの元素に含まれたｃｏｓθ及びｓｉｎθを有理数値に置換する。具体的に、変換部１２０は、Ｎ＝１６の場合、ｃｏｓ０はａ０に、ｃｏｓ（π×（１／２）／１６）はａ１に、ｃｏｓ（π×（２／２）／１６）はａ２に、ｃｏｓ（π×（３／２）／１６）はａ３に、ｃｏｓ（π×（４／２）／１６）はａ４に、ｃｏｓ（π×（５／２）／１６）はａ５に、ｃｏｓ（π×（６／２）／１６）はａ６に、ｃｏｓ（π×（７／２）／１６）はａ７に、ｃｏｓ（π×（８／２）／１６）はａ８に、ｃｏｓ（π×（９／２）／１６）はａ９に、ｃｏｓ（π×（１０／２）／１６）はａ１０に、ｃｏｓ（π×（１１／２）／１６）はａ１１に、ｃｏｓ（π×（１２／２）／１６）はａ１２に、ｃｏｓ（π×（１３／２）／１６）はａ１３に、ｃｏｓ（π×（１４／２）／１６）はａ１４に、ｃｏｓ（π×（１５／２）／１６）はａ１５に置換する。ｓｉｎθ成分は、ｓｉｎθ＝ｃｏｓ（９０−θ）のような関係を利用して、同様に変数ａｉに置換される。ここで、変数ａｉは、有理数であり、かつ分母は、シフト演算が可能な２の累乗の値を有することが望ましい。このように、変数ａｉが２の累乗形態の有理数である制限条件を設定する理由は、分母が２の累乗形態である場合、ライトシフト演算（＞＞）を利用して、変換過程時に必要な除算などを代替できるためである。
【００２７】
一例として、Ｎが１６である場合、１６個の変数ａｉは、次の値；ａ１＝６３／６４，ａ２＝６２／６４，ａ３＝６１／６４，ａ４＝５９／６４，ａ５＝５６／６４，ａ６＝５３／６４，ａ７＝４９／６４，ａ８＝４５／６４，ａ９＝４０／６４，ａ１０＝３５／６４，ａ１１＝３０／６４，ａ１２＝２４／６４，ａ１３＝１８／６４，ａ１４＝１２／６４及びａ１５＝６／６４を有する。
【００２８】
Ｎが１６である場合、すなわち、１６×１６入力ブロックに対して、置換された１６×１６変換行列Ａを利用した一次元ＤＣＴを行うステップは、Ｘｉ（ｉは、０から１５までの整数）が変換される入力値、Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉが中間値、Ｙｉが変換された結果値を表すとする時、次の演算過程のように表現される。
【００２９】
{
/stage  0
B0  =  X0  +  X15;B15  =  X0  -  X15;B1  =  X1  +  X14;B14  =  X1  -  X14;B2  =  X2  +  X13;B13  =  X2  -  X13;B3  =  X3  +  X12;B12  =  X3  -  X12;B4  =  X4  +  X11;B11  =  X4  -  X11;B5  =  X5  +  X10;B10  =  X5  -  X10;B6  =  X6  +  X9;B9  =  X6  -  X9;B7  =  X7  +  X8;B8  =  X7  -  X8;
/stage  1
C0  =  B0  +  B7;C7  =  B0  -  B7;C1  =  B1  +  B6;C6  =  B1  -  B6;C2  =  B2  +  B5;C5  =  B2  -  B5;C3  =  B3  +  B4;C4  =  B3  -  B4;C10  =  (  45  *  (  B13  -  B10  )  )  >>  6;C13  =  (  45  *  (  B13  +  B10  )  )  >>  6;C11  =  (  45  *  (  B12  -  B11  )  )  >>  6;C12  =  (  45  *  (  B12  +  B11  )  )  >>  6;
/stage  2
D0  =  C0  +  C3;D3  =  C0  -  C3;D8  =  B8  +  C11;D11  =  B8  -  C11;D12  =  B15  -  C12;D15  =  B15  +  C12;D1  =  C1  +  C2;D2  =  C1  -  C2;D9  =  B9  +  C10;D10  =  B9  -  C10;D13  =  B14  -  C13;D14  =  B14  +  C13;D5  =  (  45  *  (  C6  -  C5  )  )  >>  6;D6  =  (  45  *  (  C6  +  C5  )  )  >>  6;
/stage  3
Y0  =  (  45  *  (  D0  +  D1  )  )  >>  6;Y8  =  (  45  *  (  D0  -  D1  )  )  >>  6;Y4  =  (  59  *  D3  +  24  *  D2  )  >>  6;Y12  =  (  24  *  D3  -  59  *  D2  )  >>  6;E4  =  C4  +  D5;E5  =  C4  -  D5;E6  =  C7  -  D6;E7  =  C7  +  D6;E9  =  (  24  *  D14  -  59  *  D9  )  >>  6;E10  =  (-59  *  D13  -  24  *  D10  )  >>  6;E13  =  (  24  *  D13  -  59  *  D10  )  >>  6;E14  =  (  59  *  D14  +  24  *  D9  )  >>  6;
/stage  4
Y2  =  (  12  *  E4  +  62  *  E7  )  >>  6;Y10  =  (  53  *  E5  +  35  *  E6  )  >>  6;Y6  =  (  53  *  E6  -  35  *  E5  )  >>  6;Y14  =  (  12  *  E7  -  62  *  E4  )  >>  6;F8  =  D8  +  E9;F9  =  D8  -  E9;F10  =  D11  -  E10;F11  =  D11  +  E10;F12  =  D12  +  E13;F13  =  D12  -  E13;F14  =  D15  -  E14;F15  =  D15  +  E14;
/stage  5
Y1  =  (  6  *  F8  +  63  *  F15  )  >>  6;Y9  =  (  49  *  F9  +  40  *  F14  )  >>  6;Y5  =  (  30  *  F10  +  56  *  F13  )  >>  6;Y13  =  (  61  *  F11  +  18  *  F12  )  >>  6;Y3  =  (  61  *  F12  -  18  *  F11  )  >>  6;Y11  =  (  30  *  F13  -  56  *  F10  )  >>  6;Y7  =  (  49  *  F14  -  40  *  F9  )  >>  6;Y15  =  (  6  *  F15  -  63  *  F8  )  >>  6;
}
他の例として、Ｎが３２である場合も、前述したＮが１６である場合と同様に、３２×３２サイズのブロックの一次元ＤＣＴに利用される３２×３２変換行列Ｏｒｉｇｉｎａｌ＿Ａを構成する元素を、３２個の変数ａｉ（ｉは、０から３１までの整数）に基づいた値に置換して、高速変換行列Ａを生成する。再び図２を参照すれば、Ｎが３２である場合、すなわち、３２×３２サイズの入力ブロックに対する一次元ＤＣＴの実行時に、フローグラフ２４０によって、入力ブロックの３２個の行単位及び３２個の列単位別に一次元ＤＣＴが行われる。３２個の入力値をｆ＝［ｆ０，ｆ１，ｆ２，…，ｆ３０，ｆ３１］Ｔ、変換結果値をＦ＝［Ｆ０，Ｆ１，Ｆ２，…，Ｆ３０，Ｆ３１］Ｔ、フローグラフ２４０による入力値に対する変換過程を表した変換行列をＯｒｉｇｉｎａｌ＿Ａとすれば、一次元ＤＣＴは、Ｆ＝Ｏｒｉｇｉｎａｌ＿Ａｘｆで表現される。本発明の一実施形態による変換部１２０は、３２×３２変換行列Ｏｒｉｇｉｎａｌ＿Ａを構成する元素の成分ｃｏｓ（π×（ｉ／２）／３２）（ｉは、０から３１までの整数）を、有理数である３２個の変数ａｉに置換して、高速変換行列Ａを生成する。
【００３０】
Ｎが３２である場合、３２個の変数ａｉは、次の値；ａ１＝２５５／２５６，ａ２＝２５４／２５６，ａ３＝２５３／２５６，ａ４＝２５１／２５６，ａ５＝２４８／２５６，ａ６＝２４４／２５６，ａ７＝２４１／２５６，ａ８＝２３６／２５６，ａ９＝２３１／２５６，ａ１０＝２２５／２５６，ａ１１＝２１９／２５６，ａ１２＝２１２／２５６，ａ１３＝２０５／２５６，ａ１４＝１９７／２５６，ａ１５＝１８９／２５６，ａ１６＝１８１／２５６，ａ１７＝１７１／２５６，ａ１８＝１６２／２５６，ａ１９＝１５２／２５６，ａ２０＝１４２／２５６，ａ２１＝１３１／２５６，ａ２２＝１２０／２５６，ａ２３＝１０９／２５６，ａ２４＝９７／２５６，ａ２５＝８６／２５６，ａ２６＝７４／２５６，ａ２７＝６２／２５６，ａ２８＝４９／２５６，ａ２９＝３７／２５６，ａ３０＝２５／２５６及びａ３１＝１２／２５６を有する。
【００３１】
Ｎが３２である場合、すなわち、３２×３２入力ブロックに対して、高速変換行列Ａを利用した一次元ＤＣＴを行うステップは、Ｘｉ（ｉは、０から３１までの整数）が変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉが中間値、Ｙｉが変換された結果値を表すとする時、次の演算過程のように表現される。
【００３２】
{
/stage  0
A0  =  X0  +  X31;A31  =  X0  -  X31;A1  =  X1  +  X30;A30  =  X1  -  X30;A2  =  X2  +  X29;A29  =  X2  -  X29;A3  =  X3  +  X28;A28  =  X3  -  X28;A4  =  X4  +  X27;A27  =  X4  -  X27;A5  =  X5  +  X26;A26  =  X5  -  X26;A6  =  X6  +  X25;A25  =  X6  -  X25;A7  =  X7  +  X24;A24  =  X7  -  X24;A8  =  X8  +  X23;A23  =  X8  -  X23;A9  =  X9  +  X22;A22  =  X9  -  X22;A10  =  X10  +  X21;A21  =  X10  -  X21;A11  =  X11  +  X20;A20  =  X11  -  X20;A12  =  X12  +  X19;A19  =  X12  -  X19;A13  =  X13  +  X18;A18  =  X13  -  X18;A14  =  X14  +  X17;A17  =  X14  -  X17;A15  =  X15  +  X16;A16  =  X15  -  X16;
/stage  1
B0  =  A0  +  A15;B15  =  A0  -  A15;B1  =  A1  +  A14;B14  =  A1  -  A14;B2  =  A2  +  A13;B13  =  A2  -  A13;B3  =  A3  +  A12;B12  =  A3  -  A12;B4  =  A4  +  A11;B11  =  A4  -  A11;B5  =  A5  +  A10;B10  =  A5  -  A10;B6  =  A6  +  A9;B9  =  A6  -  A9;B7  =  A7  +  A8;B8  =  A7  -  A8;B20  =  (  181*(  A27  -  A20  )  )  >>  8;B27  =  (  181*(  A27  +  A20  )  )  >>  8;B21  =  (  181*(  A26  -  A21  )  )  >>  8;B26  =  (  181*(  A26  +  A21  )  )  >>  8;B22  =  (  181*(  A25  -  A22  )  )  >>  8;B25  =  (  181*(  A25  +  A22  )  )  >>  8;B23  =  (  181*(  A24  -  A23  )  )  >>  8;B24  =  (  181*(  A24  +  A23  )  )  >>  8;
/stage  2
C0  =  B0  +  B7;C7  =  B0  -  B7;C1  =  B1  +  B6;C6  =  B1  -  B6;C2  =  B2  +  B5;C5  =  B2  -  B5;C3  =  B3  +  B4;C4  =  B3  -  B4;C10  =  (  181*(  B13  -  B10  )  )  >>  8;C13  =  (  181*(  B13  +  B10  )  )  >>  8;C11  =  (  181*(  B12  -  B11  )  )  >>  8;C12  =  (  181*(  B12  +  B11  )  )  >>  8;C16  =  A16  +  B23;C23  =  A16  -  B23;C24  =  A31  -  B24;C31  =  A31  +  B24;C17  =  A17  +  B22;C22  =  A17  -  B22;C25  =  A30  -  B25;C30  =  A30  +  B25;C18  =  A18  +  B21;C21  =  A18  -  B21;C26  =  A29  -  B26;C29  =  A29  +  B26;C19  =  A19  +  B20;C20  =  A19  -  B20;C27  =  A28  -  B27;C28  =  A28  +  B27;
/stage  3
D0  =  C0  +  C3;D3  =  C0  -  C3;D8  =  B8  +  C11;D11  =  B8  -  C11;D12  =  B15  -  C12;D15  =  B15  +  C12;D1  =  C1  +  C2;D2  =  C1  -  C2;D9  =  B9  +  C10;D10  =  B9  -  C10;D13  =  B14  -  C13;D14  =  B14  +  C13;D5  =  (  181*(  C6  -  C5  )  )  >>  8;D6  =  (  181*(  C6  +  C5  )  )  >>  8;D18  =  (  97*C29  -  236*C18  )  >>  8;D20  =  (  -  236*C27  -  97*C20  )  >>  8;D26  =  (-  236*C21  +  97*C26  )  >>  8;D28  =  (  97*C19  +  236*C28  )  >>  8;D19  =  (  97*C28  -  236*C19  )  >>  8;D21  =  (-  236*C26  -  97*C21  )  >>  8;D27  =  (-  236*C20  +  97*C27  )  >>  8;D29  =  (  97*C18  +  236*C29  )  >>  8;
/stage  4
Y0  =  (  181*(  D0  +  D1  )  )  >>  8;Y16  =  (  181*(  D0  -  D1  )  )  >>  8;Y8  =  (  236*D3  +  97*D2  )  >>  8;Y24  =  (  97*D3  -  236*D2  )  >>  8;E4  =  C4  +  D5;E5  =  C4  -  D5;E6  =  C7  -  D6;E7  =  C7  +  D6;E9  =  (  97*D14  -  236*D9  )  >>  8;E10  =(-236*D13  -  97*D10)  >>  8;E13  =  (97*D13  -  236*D10  )  >>  8;E14  =  (  236*D14  +  97*D9  )  >>  8;E16  =  C16  +  D19;E19  =  C16  -  D19;E20  =  C23  -  D20;E23  =  C23  +  D20;E24  =  C24  +  D27;E27  =  C24  -  D27;E28  =  C31  -  D28;E31  =  C31  +  D28;E17  =  C17  +  D18;E18  =  C17  -  D18;E21  =  C22  -  D21;E22  =  C22  +  D21;E25  =  C25  +  D26;E26  =  C25  -  D26;E29  =  C30  -  D29;E30  =  C30  +  D29;
/stage  5
Y4  =  (  49*E4  +  251*E7  )  >>  8;Y20  =  (  212*E5  +  142*E6  )  >>  8;Y12  =  (  212*E6  -  142*E5  )  >>  8;Y28  =  (  49*E7  -  251*E4  )  >>  8;F8  =  D8  +  E9;F9  =  D8  -  E9;F10  =  D11  -  E10;F11  =  D11  +  E10;F12  =  D12  +  E13;F13  =  D12  -  E13;F14  =  D15  -  E14;F15  =  D15  +  E14;F17  =  (  49*E30  -  251*E17  )  >>  8;F18  =  (  -  251*E29  -  49*E18  )  >>  8;F21  =  (  212*E26  -  142*E21  )  >>  8;F22  =  (  -  142*E25  -  212*E22  )  >>  8;F25  =  (  212*E25  -  142*E22  )  >>  8;F26  =  (  142*E26  +  212*E21  )  >>  8;F29  =  (  49*E29  -  251*E18  )  >>  8;F30  =  (  251*E30  +  49*E17  )  >>  8;
/stage  6
Y2  =  (  25*F8  +  254*F15  )  >>  8;Y18  =  (  197*F9  +  162*F14  )  >>  8;Y10  =  (  120*F10  +  225*F13  )  >>  8;Y26  =  (  244*F11  +  74*F12  )  >>  8;Y6  =  (  244*F12  -  74*F11  )  >>  8;Y22  =  (  120*F13  -  225*F10  )  >>  8;Y14  =  (  197*F14  -  162*F9  )  >>  8;Y30  =  (  25*F15  -  254*F8  )  >>  8;G16  =  E16  +  F17;G17  =  E16  -  F17;G18  =  E19  -  F18;G19  =  E19  +  F18;G20  =  E20  +  F21;G21  =  E20  -  F21;G22  =  E23  -  F22;G23  =  E23  +  F22;G24  =  E24  +  F25;G25  =  E24  -  F25;G26  =  E27  -  F26;G27  =  E27  +  F26;G28  =  E28  +  F29;G29  =  E28  -  F29;G30  =  E31  -  F30;G31  =  E31  +  F30;
/stage  7
Y1  =  (  12*G16  +  255*G31  )  >>  8;Y17  =  (  189*G17  +  171*G30  )  >>  8;Y9  =  (  109*G18  +  231*G29  )  >>  8;Y25  =  (  241*G19  +  86*G28  )  >>  8;Y5  =  (  62*G20  +  248*G27  )  >>  8;Y21  =  (  219*G21  +  131*G26  )  >>  8;Y13  =  (  152*G22  +  205*G25  )  >>  8;Y29  =  (  253*G23  +  37*G24  )  >>  8;Y3  =  (  253*G24  -  37*G23  )  >>  8;Y19  =  (  152*G25  -  205*G22  )  >>  8;Y11  =  (  219*G26  -  131*G21  )  >>  8;Y27  =  (  62*G27  -  248*G20  )  >>  8;Y7  =  (  241*G28  -  86*G19  )  >>  8;Y23  =  (  109*G29  -  231*G18  )  >>  8;Y15  =  (  189*G30  -  171*G17  )  >>  8;Y31  =  (  12*G31  -  255*G16  )  >>  8;
}
前述したように、本発明の他の実施形態による変換部１２０は、ＤＣＴに利用される元素に２＾ｎを乗じた後で四捨五入することによって、高速変換行列を生成する。具体的に、一次元ＤＣＴに利用される変換行列Ｏｒｉｇｉｎａｌ＿Ａを構成する元素に２＾ｎ（ｎは、整数）を乗じた後で四捨五入する次の数式；Ａ＝ｒｏｕｎｄ（Ｏｒｉｇｉｎａｌ＿Ａ＊２＾ｎ）によって、ＤＣＴ行列Ｏｒｉｇｉｎａｌ＿Ａの元素の値を変換して、高速変換行列Ａを生成する。
【００３３】
一方、本発明の実施形態による変換部１２０は、本来のＮ×Ｎ変換行列Ｏｒｉｇｉｎａｌ＿Ａの代わりに、高速変換行列Ａを利用して変換を行うので、本来のＮ×Ｎ変換行列Ｏｒｉｇｉｎａｌ＿Ａによる結果値と、置換された変換行列Ａによる結果値との間には、誤差が発生する。したがって、本発明の一実施形態によれば、量子化ステップで、変換ブロックに対するスケーリングを行うことによって、かかる誤差を最小化する。
【００３４】
図３は、本発明の一実施形態によるスケーリング行列を生成する方法を示すフローチャートである。図３を参照すれば、ステップ３１０で、各ｉ番目の行の元素がＳｉ（ｉは、１からＮまでの整数）の値を有するＮ×Ｎサイズの中間行列Ｓの各元素と、Ｎ×Ｎサイズの高速変換行列Ａの同一位置の元素とをそれぞれ乗じた値
【００３５】
【数２】
0005620587.tif 000003
と、本来のＮ×Ｎ変換行列Ｏｒｉｇｉｎａｌ＿Ａとの差である変換誤差行列
【００３６】
【数３】
0005620587.tif 000004
を獲得する。
【００３７】
【数４】
0005620587.tif 000005
は、元素単位乗算(element-by-element  multiplication,  element-wise  multiplication)を表すものであって、行列の同一位置の元素が乗じられる。
【００３８】
例えば、１６×１６サイズの中間行列Ｓは、下記の通りである。
【００３９】
【数５】
0005620587.tif 000006
ステップ３２０で、変換誤差行列
【００４０】
【数６】
0005620587.tif 000007
の対角成分を除いた残りの元素の自乗和を最小にするＳｉ値を獲得する。Ｓｉ値は、多様な最適化アルゴリズムを利用して決定される。一例として、Ｓ１の初期値を（１／４＊２＾（１／２））とし、Nelder-Mead  Sipmlex方法のような最適化アルゴリズムを適用して、Ｓｉ値を決定する。
【００４１】
ステップ３３０で、獲得されたＳｉ値を適用したＮ×Ｎサイズの中間行列Ｓの各元素と、中間行列Ｓの転置行列ＳＴの同一位置の元素とをそれぞれ乗じた行列
【００４２】
【数７】
0005620587.tif 000008
に基づいて、スケーリング行列を生成する。
【００４３】
中間行列Ｓの各元素と、中間行列の転置行列ＳＴの同一位置の元素とを乗じた行列
【００４４】
【数８】
0005620587.tif 000009
とすれば、スケーリング行列ＭＦは、次の数式；ＭＦ＝ＰＦ＊２＾ｍ／Ｑｓｔｅｐのように計算される。ここで、Ｑｓｔｅｐは、量子化ステップ、ｍは、正の整数である。
【００４５】
図４Ａないし図４Ｆは、本発明の一実施形態によって、１６×１６ブロックの変換時に利用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す。図４では、スケーリング行列の計算時に、ｍ＝１０の場合である。
【００４６】
図４Ａないし図４Ｆに示したようなスケーリング行列ＭＦは、全ての量子化ステップに対して定義される必要なしに、最初の６ステップのＱｓｔｅｐ値である０．６２５，０．６８７５，０．８１２５，０．８７５，１，１．２５に対して定義される。なぜならば、量子化パラメータＱＰが６増加すれば、量子化ステップＱｓｔｅｐが２倍に増加するため、スケーリング行列ＭＦは、最初の６ステップのＱｓｔｅｐ値に対して定義され、残りのＱＰによるスケーリング行列ＭＦは、（ＱＰ  ｍｏｄ  ６）値によって選択される。また、図４Ａないし図４Ｆに示したスケーリング行列ＭＦは、一実施形態に過ぎず、図示したスケーリング行列ＭＦの各元素は、±１，±２の範囲内で調節される。
【００４７】
かかるスケーリング行列ＭＦは、３２×３２ブロックに対しても、前述した１６×１６ブロックに対するスケーリング行列を求める過程と類似した過程を通じて獲得される。図５Ａないし図５Ｆは、かかる過程を通じて獲得された３２×３２ブロックに適用される量子化パラメータＱＰによるスケーリング行列ＭＦの例を示す。また、図５Ａないし図５Ｆに示したスケーリング行列ＭＦは、一実施形態に過ぎず、図示したスケーリング行列ＭＦの各元素は、±１，±２の範囲内で調節される。一方、本発明の一実施形態によれば、ブロックサイズごとに別途のスケーリング行列ＭＦを適用するものではなく、所定サイズのブロックのみに対して、量子化パラメータＱＰを基準として、６個のスケーリング行列ＭＦを設定した後、所定サイズのブロックより小さいか、または大きいブロックのスケーリング行列は、所定サイズのブロックとのサイズ割合によって、所定サイズのブロックに対して設定されたスケーリング行列の元素を増加または減少させたスケーリング行列ＭＦを利用する。すなわち、Ｍ×Ｍブロックに対して、量子化パラメータによって、６個のスケーリング行列ＭＦを設定した後、Ｎ×Ｎブロックに対するスケーリング行列としては、Ｍ×Ｍブロックに対して設定されたスケーリング行列の各元素を（Ｍ／Ｎ）倍したスケーリング行列を利用する。例えば、３２×３２ブロックに対して、スケーリング行列ＭＦを設定した場合、２×２、４×４、８×８、１６×１６ブロックは、３２×３２ブロックに対して設定されたスケーリング行列ＭＦの各元素を１６倍、８倍、４倍及び２倍増加させたスケーリング行列を利用する。同様に、３２×３２ブロックに対して、スケーリング行列ＭＦを設定した場合、６４×６４、１２８×１２８ブロックは、３２×３２ブロックに対して設定されたスケーリング行列ＭＦの各元素を（１／２）倍及び（１／４）倍減少させたスケーリング行列を利用する。このように、所定サイズのブロックのみに対して、スケーリング行列を設定し、他のサイズのブロックの場合、サイズ割合によって増加または減少したスケーリング行列を利用する場合、ブロックサイズによるスケーリング行列の元素値間の割合ほど、量子化または逆量子化を行って、本来の値に復元する。前述したように、所定サイズのブロックのみに対して、スケーリング行列を設定し、他のサイズのブロックの場合、サイズ割合によって増加または減少したスケーリング行列を利用する場合、スケーリング行列ＭＦの保存のためのメモリを減少させることができるので、効率的である。
【００４８】
前述したように、量子化部１３０は、変換部１２０で高速変換行列Ａを利用した変換結果値と、実際の浮動小数点演算に基づいたＤＣＴ行列Ｏｒｉｇｉｎａｌ＿Ａを利用した変換結果値との誤差値を減少させるために、スケーリング行列ＭＦまたは所定のスケーリング定数を適用して、変換ブロックに対するスケーリングを行う。具体的に、量子化部１３０は、スケーリング行列ＭＦ及びシフト演算を適用して、Ｎ×Ｎサイズのブロックを変換した変換ブロックに対するスケーリング及び量子化を同時に行う。量子化は、スケーリング行列ＭＦと、Ｎ×Ｎサイズのブロックを変換した変換ブロックとを乗じた値に、所定のオフセットを加えた値を、次の数式；ｑ＝ｆｌｏｏｒ（ＱＰ／６）＋ｍのｑビットほど、ビットシフト演算することによって行われる。Ｚｉｊを量子化された係数値、Ｗｉｊを変換係数、ｆをオフセットとすれば、
【００４９】
【数９】
0005620587.tif 000010
であり、
【００５０】
【数１０】
0005620587.tif 000011
である。ここで、‘．ＭＦ’は、行列の同一位置の元素を乗じるベクトル積演算を意味する。前述したように、ベクトル積演算は、
【００５１】
【数１１】
0005620587.tif 000012
のように表現されもする。
【００５２】
一方、逆量子化ステップでは、逆ＤＣＴに利用される本来のＮ×Ｎ逆変換行列Ｏｒｉｇｉｎａｌ＿Ａ−１と、Ｎ×Ｎ高速逆変換行列Ａ−１との逆変換結果の差値を補正するためのデスケーリング行列及びシフト演算を適用して、逆量子化を行う。
【００５３】
本発明の一実施形態によれば、デスケーリング行列Ｖは、前述したスケーリング行列ＭＦの生成時にも利用される中間行列Ｓの各元素と、中間行列の転置行列ＳＴの同一位置の元素とをそれぞれ乗じた行列
【００５４】
【数１２】
0005620587.tif 000013
であるＰＦに基づいて生成される。具体的に、量子化ステップをＱｓｔｅｐ、中間行列Ｓの各元素と、中間行列の転置行列ＳＴの同一位置の元素とをそれぞれ乗じた行列をＰＦ、ｎは正の整数とする時、デスケーリング行列Ｖは、次の数式；Ｖ＝Ｑｓｔｅｐ＊ＰＦ＊２＾ｎを通じて獲得される。
【００５５】
デスケーリング行列Ｖが決定されれば、デスケーリング及び逆量子化過程は、デスケーリング行列Ｖと、量子化された変換係数とを乗じた値に対して、ｆｌｏｏｒ（ＱＰ／６）（ｆｌｏｏｒ［ｘ］は、ｘより小さいか、または同じ最大整数、ＱＰは、量子化パラメータ）ビットほど、ビットシフト演算を通じて行われる。すなわち、Ｚｉｊを量子化された係数値、Ｗｉｊを変換係数とすれば、次の数式；Ｗｉｊ＝（Ｚｉｊ）．Ｖ＜＜ｆｌｏｏｒ（ＱＰ／６）を通じて、量子化された係数Ｚｉｊを逆量子化したＷｉｊを獲得する。‘．Ｖ’は、行列の同一位置の元素を乗じるベクトル積演算を意味する。前述したように、ベクトル積演算は、
【００５６】
【数１３】
0005620587.tif 000014
のように表現されもする。
【００５７】
図６Ａないし図６Ｆは、本発明の一実施形態によって、１６×１６ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖを示す。図６Ａないし図６Ｆでは、デスケーリング行列の計算時に、ｍ＝１０の場合を表す。デスケーリング行列Ｖも、図４のスケーリング行列のように、全ての量子化ステップに対して定義される必要なしに、最初の６ステップのＱｓｔｅｐ値である０．６２５，０．６８７５，０．８１２５，０．８７５，１，１．２５に対して定義される。残りのＱＰによるデスケーリング行列Ｖは、（ＱＰ  ｍｏｄ  ６）値によって選択される。また、図６Ａないし図６Ｆに示したデスケーリング行列Ｖは、一実施形態に過ぎず、図示したデスケーリング行列Ｖの各元素は、±１，±２の範囲内で調節される。
【００５８】
同様に、３２×３２入力ブロックに適用される量子化パラメータによるデスケーリング行列Ｖも、前述した１６×１６ブロックに適用されるデスケーリング行列Ｖの生成過程と類似した過程を通じて獲得される。図７Ａないし図７Ｆは、本発明の一実施形態によって、３２×３２ブロックに適用される量子化パラメータＱＰによるデスケーリング行列Ｖの例を示す。また、図７Ａないし図７Ｆに示したデスケーリング行列Ｖは、一実施形態に過ぎず、図示したデスケーリング行列Ｖの各元素は、±１，±２の範囲内で調節される。一方、本発明の一実施形態によれば、ブロックサイズごとに別途のデスケーリング行列Ｖを適用するものではなく、所定サイズのブロックのみに対して、量子化パラメータＱＰを基準として、６個のデスケーリング行列Ｖを設定した後、所定サイズのブロックより小さいか、または大きいブロックのデスケーリング行列は、所定サイズのブロックとのサイズ割合によって、所定サイズのブロックに対して設定されたデスケーリング行列の元素を増加または減少させたデスケーリング行列Ｖを利用する。すなわち、Ｍ×Ｍブロックに対して、量子化パラメータによって、６個のデスケーリング行列Ｖを設定した後、Ｎ×Ｎブロックに対するデスケーリング行列としては、Ｍ×Ｍブロックに対して設定されたデスケーリング行列の各元素を（Ｍ／Ｎ）倍したデスケーリング行列を利用する。例えば、３２×３２ブロックに対して、デスケーリング行列Ｖを設定した場合、２×２、４×４、８×８、１６×１６ブロックは、３２×３２ブロックに対して設定されたデスケーリング行列Ｖの各元素を１６倍、８倍、４倍及び２倍増加させたデスケーリング行列を利用する。同様に、３２×３２ブロックに対して、デスケーリング行列Ｖを設定した場合、６４×６４、１２８×１２８ブロックは、３２×３２ブロックに対して設定されたデスケーリング行列ＭＦの各元素を（１／２）倍及び（１／４）倍減少させたデスケーリング行列を利用する。このように、所定サイズのブロックのみに対して、デスケーリング行列を設定し、他のサイズのブロックの場合、サイズ割合によって増加または減少したデスケーリング行列を利用する場合、ブロックサイズによるデスケーリング行列の元素値間の割合ほど、量子化または逆量子化を行って、本来の値に復元する。前述したように、所定サイズのブロックのみに対して、デスケーリング行列を設定し、他のサイズのブロックの場合、サイズ割合によって増加または減少したデスケーリング行列を利用する場合、デスケーリング行列Ｖの保存のためのメモリを減少させることができるので、効率的である。
【００５９】
図８は、本発明の他の実施形態による３２ポイントＤＣＴのフローグラフである。図８において、ｘ０ないしｘ３１は、入力値、ｙ０ないしｙ３１は、ＤＣＴの出力値を表す。変換時に、データ処理方向は、左側から右側であり、逆変換時に、データ処理方向は、右側から左側である。点で交差する二本のラインは、二つの数の加算を表す。‘−’は、否定を表す。各ライン上の値Ｒ（θ）は、図９に示したようなバタフライ構造に基づいた演算過程を表す。
【００６０】
図９は、図８の３２ポイントＤＣＴを構成するバタフライ構造の演算過程を示す参照図である。図９を参照すれば、バタフライ構造の演算は、入力値［Ｘ１，Ｘ２］に対して、次の数式；
【００６１】
【数１４】
0005620587.tif 000015
のような演算を通じて、出力値［Ｙ１，Ｙ２］を出力するものである。
【００６２】
図８のフローグラフによってＤＣＴを行う場合、Ｒ（θ）によってｃｏｓθ及びｓｉｎθが利用される。前述した図２のフローグラフを利用した変換過程と同様に、変換部１２０は、θ値によるｃｏｓθ及びｓｉｎθ値を、分母が２の累乗である有理数を利用して代替した高速変換行列Ａ、または図８のフローグラフによるＤＣＴの各元素に２＾ｎを乗じた後で四捨五入して生成された高速変換行列Ａを利用して、加算、減算及びシフト演算のみを行って、入力ブロックに対するＤＣＴを行う。
【００６３】
具体的に、３２×３２入力ブロックに対して、高速変換行列Ａを利用した一次元ＤＣＴを行うステップは、Ｘｉ（ｉは、０から３１までの整数）が変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉが中間値、Ｙｉが変換された結果値を表すとする時、次の演算過程のように表現される。
【００６４】
{
/stage  0
A0    =  X0  +  X15;A1    =  X1  +  X14;  A2    =  X2  +  X13;A3    =  X3  +  X12;A4    =  X4  +  X11;A5    =  X5  +  X10;A6    =  X6  +  X9;A7    =  X7  +  X8;A8    =  X7  -  X8;A9    =  X6  -  X9;A10  =  X5  -  X10;A11  =  X4  -  X11;A12  =  X3  -  X12;A13  =  X2  -  X13;A14  =  X1  -  X14;A15  =  X0  -  X15;
/stage  1
B0  =  A0  +  A7;B7  =  A0  -  A7;B1  =  A1  +  A6;B6  =  A1  -  A6;B2  =  A2  +  A5;B5  =  A2  -  A5;B3  =  A3  +  A4;B4  =  A3  -  A4;
B8  =  (49*A8  +  40*A15)  >>  6;B15  =  (-40*A8  +  49*A15)  >>  6;B9  =  (30*A9  -  56*A14)  >>  6;B14  =  (56*A9  +  30*A14)  >>  6;B10  =  (61*A10  +  18*A13)  >>  6;B13  =  (-18*A10  +  61*A13)  >>  6;B11  =  (6*A11  -  63*A12)  >>  6;B12  =  (63*A11  +  6*A12)  >>  6;
/stage  2
C0  =  B0  +  B3;C3  =  B0  -  B3;C1  =  B1  +  B2;C2  =  B1  -  B2;
C4  =  (6*B4  +  31*B7,  5);C7  =  (-31*B4  +  6*B7,  5);C5  =  (35*B5  +  53*B6)  >>  6;C6  =  (-53*B5  +  35*B6)  >>  6;
C8  =  B8  +  B11;C11  =  B8  -  B11;C9  =  B9  +  B10;C10  =  B9  -  B10;
C12  =  B12  +  B15;C15  =  B12  -  B15;C13  =  B13  +  B14;C14  =  B13  -  B14;
/stage  3
D0  =  (45*(C0  +  C1))  >>  6;D1  =  (45*(-C0  +  C1))  >>  6;
D2  =  (24*C2  +  59*C3)  >>  6;D3  =  (-59*C2  +  24*C3)  >>  6;
D4  =  C4  +  C5;D5  =  C4  -  C5;D6  =  -C6  +  C7;D7  =  C6  +  C7;  
D8    =  C8    +  C14;D14  =  C8    -  C14;D9    =  C9    +  C15;D15  =  C9    -  C15;D10  =  C10  +  C11;  D11  =  C10  -  C11;D12  =  C12  +  C13;D13  =  C12  -  C13;
/stage  4
E5  =  (45*(D5  +  D7))  >>  6;E7  =  (45*(-D5  +  D7))  >>  6;
E8  =  (24*D8  -  59*D9)  >>  6;E9  =  (59*D8  +  24*D9)  >>  6;
E11  =  (45*(D11  +  D12))  >>  6;E12  =  (45*(-D11  +  D12))  >>  6;
E14  =  (24*D14  -  59*D15)  >>  6;E15  =  (59*D14  +  24*D15)  >>  6;
/stage  5
Y0  =  D0;Y8  =  -D1;Y4  =  D2;Y12  =  D3;Y2  =  D4;Y6  =  E5;Y14  =  D6;Y10  =  -E7;Y3  =  E8;Y13  =  E9;Y9  =  D10;Y15  =  E11;Y1  =  E12;Y7  =  D13;Y11  =  -E14;Y5  =  E15;
}
一方、本発明の他の実施形態による量子化部１３０は、変換ブロックに所定のスケーリング定数を乗じて、スケーリングを行う。具体的に、量子化部１３０は、スケーリング定数ＱＭａｔ及びシフト演算を適用して、Ｎ×Ｎ変換ブロックに対するスケーリング及び量子化を同時に行う。量子化及びスケーリングは、スケーリング定数ＱＭａｔと、Ｎ×Ｎ変換ブロックとを乗じた値に、所定のオフセットを加えた値を、次の数式；ｑ＝ｆｌｏｏｒ（ＱＰ／６）＋ｍのｑビットほど、ビットシフト演算することによって行われる。Ｚｉｊを量子化された係数値、Ｗｉｊを変換係数、ｆをオフセットとすれば、
【００６５】
【数１５】
0005620587.tif 000016
であり、
【００６６】
【数１６】
0005620587.tif 000017
である。
【００６７】
スケーリング定数ＱＭａｔは、量子化パラメータＱＰに基づいて選択され、スケーリング定数ＱＭａｔは、全ての量子化ステップに対して定義される必要なしに、最初の６ステップのＱｓｔｅｐ値である０．６２５，０．６８７５，０．８１２５，０．８７５，１，１．２５に対して定義される。前述したように、量子化パラメータＱＰが６増加すれば、量子化ステップＱｓｔｅｐが２倍に増加するので、スケーリング定数ＱＭａｔは、最初の６ステップのＱｓｔｅｐ値に対して定義され、残りのＱＰによるスケーリング定数ＱＭａｔは、（ＱＰ  ｍｏｄ  ６）値によって選択される。
【００６８】
一例として、ｉ＝（ＱＰ  ｍｏｄ  ６）と仮定する場合、前述した図２または図８のフローグラフによって、ＤＣＴされた１６×１６変換ブロックのスケーリングのためのスケーリング定数ＱＭａｔｉは、下記のように定義される。
【００６９】
ＱＭａｔ０＝８１，ＱＭａｔ１＝８９，ＱＭａｔ２＝１０５，ＱＭａｔ３＝１１３，ＱＭａｔ４＝１２９；ＱＭａｔ５＝１４６
スケーリング定数ＱＭａｔｉは、前記の例に限定されず、±１，±２の範囲内で調節される。すなわち、前述した例に限定されず、スケーリング定数ＱＭａｔｉは、ＱＭａｔｉ±１，ＱＭａｔｉ±２の範囲内で調節される。
【００７０】
また、前述した図２または図８のフローグラフによって、ＤＣＴされた３２×３２変換ブロックのスケーリングのためのスケーリング定数ＱＭａｔｉは、下記のように定義される。
【００７１】
ＱＭａｔ０＝４０，ＱＭａｔ１＝４４，ＱＭａｔ２＝５２，ＱＭａｔ３＝５６，ＱＭａｔ４＝６４；ＱＭａｔ５＝７２
スケーリング定数Ｑｍａｔｉは、前記の例に限定されず、±１，±２の範囲内で調節される。すなわち、前述した例に限定されず、スケーリング定数ＱＭａｔｉは、ＱＭａｔｉ±１，ＱＭａｔｉ±２の範囲内で調節される。一例として、ＱＭａｔ０＝４０，ＱＭａｔ１＝４５，ＱＭａｔ２＝５１，ＱＭａｔ３＝５７，ＱＭａｔ４＝６４；ＱＭａｔ５＝７２が、スケーリング定数Ｑｍａｔｉとして利用される。
【００７２】
一方、逆量子化ステップでは、逆ＤＣＴに利用される本来のＮ×Ｎ逆変換行列Ｏｒｉｇｉｎａｌ＿Ａ−１と、Ｎ×Ｎ高速変換行列Ａの逆行列であるＮ×Ｎ高速逆変換行列Ａ−１との差値を補正するためのデスケーリング定数及びシフト演算を適用して、逆量子化を行う。
【００７３】
本発明の他の実施形態によれば、デスケーリング定数ＤＱＭａｔは、量子化パラメータＱＰによって決定される。デスケーリング定数ＤＱＭａｔが決定されれば、逆量子化及びデスケーリングは、デスケーリング定数ＤＱＭａｔと、量子化された変換係数とを乗じた値に対して、ｆｌｏｏｒ（ＱＰ／６）（ｆｌｏｏｒ［ｘ］は、ｘより小さいか、または同じ最大整数、ＱＰは、量子化パラメータ）ビットほど、ビートシフト演算を通じて行われる。すなわち、Ｚｉｊを量子化された変換係数値、Ｗｉｊを変換係数とすれば、次の数式；Ｗｉｊ＝（Ｚｉｊ）＊ＤＱＭａｔ＜＜ｆｌｏｏｒ（ＱＰ／６）を通じて、量子化された係数Ｚｉｊをデスケーリング及び逆量子化したＷｉｊを獲得する。
【００７４】
また、デスケーリング定数ＤＱＭａｔは、全ての量子化ステップに対して定義される必要なしに、最初の６ステップのＱｓｔｅｐ値である０．６２５，０．６８７５，０．８１２５，０．８７５，１，１．２５に対して定義される。なぜならば、量子化パラメータＱＰが６増加すれば、量子化ステップＱｓｔｅｐが２倍に増加するので、デスケーリング定数ＤＱＭａｔは、最初の６ステップのＱｓｔｅｐ値に対して定義され、残りのＱＰによるデスケーリング定数ＤＱＭａｔは、（ＱＰ  ｍｏｄ  ６）値によって選択される。
【００７５】
一例として、ｉ＝（ＱＰ  ｍｏｄ  ６）と仮定する場合、前述した図２または図８のフローグラフによって、ＤＣＴされた１６×１６変換ブロックのデスケーリングのためのスケーリング定数ＤＱＭａｔｉは、下記のように定義される。
【００７６】
ＤＱＭａｔ０＝８１，ＤＱＭａｔ１＝８９，ＤＱＭａｔ２＝１０５，ＤＱＭａｔ３＝１１３，ＤＱＭａｔ４＝１２９；ＤＱＭａｔ５＝１４６
デスケーリング定数ＤＱｍａｔｉは、前記の例に限定されず、±１，±２の範囲内で調節される。すなわち、前述した例に限定されず、デスケーリング定数ＤＱＭａｔｉは、ＤＱＭａｔｉ±１，ＤＱＭａｔｉ±２の範囲内で調節される。
【００７７】
また、前述した図２または図８のフローグラフによって、ＤＣＴされた３２×３２変換ブロックのデスケーリングのためのデスケーリング定数ＤＱＭａｔｉは、下記のように定義される。
【００７８】
ＤＱＭａｔ０＝４０，ＤＱＭａｔ１＝４４，ＤＱＭａｔ２＝５２，ＤＱＭａｔ３＝５６，ＤＱＭａｔ４＝６４；ＤＱＭａｔ５＝７２
デスケーリング定数ＤＱｍａｔｉは、前記の例に限定されず、±１，±２の範囲内で調節される。すなわち、前述した例に限定されず、デスケーリング定数ＤＱＭａｔｉは、ＤＱＭａｔｉ±１，ＤＱＭａｔｉ±２の範囲内で調節される。一例として、ＤＱＭａｔ０＝４０，ＤＱＭａｔ１＝４５，ＤＱＭａｔ２＝５１，ＤＱＭａｔ３＝５７，ＤＱＭａｔ４＝６４；ＱＭａｔ５＝７２が、デスケーリング定数ＤＱＭａｔｉとして利用される。
【００７９】
図１０は、本発明の一実施形態によるビデオ符号化方法を示すフローチャートである。図１０を参照すれば、ステップ１０１０で、変換部１２０は、Ｎ×Ｎ（Ｎは、整数）サイズのブロックの一次元ＤＣＴに利用されるＮ×Ｎ変換行列に基づいて、高速変換行列を生成する。前述したように、変換部１２０は、ＤＣＴに利用される変換行列の元素を、有理数値に置換したり、ＤＣＴに利用される変換行列の元素に２の累乗を乗じた後で四捨五入した元素から構成された高速変換行列を利用して、高速変換行列を生成する。
【００８０】
ステップ１０２０で、変換部１２０は、高速変換行列を利用して、Ｎ×Ｎサイズのブロックを変換して、Ｎ×Ｎ変換ブロックを生成する。
ステップ１０３０で、量子化部１３０は、一次元ＤＣＴに利用されるＮ×Ｎ変換行列と、高速変換行列との差値を補正するために、Ｎ×Ｎ変換ブロックに対するスケーリングを行う。前述したように、量子化部１３０は、変換部１２０で高速変換行列Ａを利用した変換結果値と、実際の浮動小数点演算に基づいたＤＣＴ行列Ｏｒｉｇｉｎａｌ＿Ａを利用した変換結果値との誤差値を減少させるために、量子化パラメータＱＰによって決定されるスケーリング行列ＭＦまたはスケーリング定数ＱＭａｔを適用して、変換ブロックに対するスケーリングを行う。
【００８１】
図１１は、本発明の一実施形態によるビデオ復号化装置を示すブロック図である。図１１を参照すれば、本発明の一実施形態によるビデオ復号化装置１１００は、エントロピー復号化部１１１０、逆量子化部１１２０、逆変換部１１３０及び予測部１１４０を備える。
【００８２】
エントロピー復号化部１１１０は、入力ビットストリームから、復号化される現在ブロックの予測モード情報、参照ピクチャー情報及びレジデュアル情報を抽出する。
【００８３】
逆量子化部１１２０は、エントロピー復号化部１１０でエントロピー復号化された量子化された変換係数を逆量子化する。特に、本発明の一実施形態による逆量子化部１１２０は、量子化されたＮ×Ｎ変換ブロックの一次元逆ＤＣＴに利用されるＮ×Ｎ逆変換行列と、Ｎ×Ｎ逆変換行列に基づいて生成される高速逆変換行列との差値を補正するために、Ｎ×Ｎ変換ブロックに対するデスケーリングを行う。
【００８４】
逆変換部１１３０は、逆量子化された変換係数を逆変換する。逆変換の結果、ブロック単位に対するレジデュアル値が復元される。逆変換過程は、本発明の多様な実施形態を通じて獲得されたＮ×Ｎ高速変換行列Ａの逆行列Ａ−１を利用したＮポイント逆ＤＣＴを通じて行われる。逆変換部１１３０は、逆ＤＣＴに利用される逆変換行列の元素を、有理数値に置換したり、逆ＤＣＴに利用される逆変換行列の元素に２の累乗を乗じた後で四捨五入した元素を利用して生成された高速逆変換行列を利用して、逆ＤＣＴを行う。
【００８５】
前述した図２のフローグラフによって、変換された１６×１６変換ブロックの逆ＤＣＴ過程は、Ｘｉ（ｉは、０から１５までの整数）が入力値、Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉが中間値、Ｙｉが逆変換結果値を表すとする時、次の演算過程のように表現される。
【００８６】
{
/stage  0
F8  =  (  6*X1  -  63*X15  )  >>  6;F9  =  (  49*X9  -  40*X7  )  >>  6;F10  =  (  30*X5  -  56*X11  )  >>  6;F11  =  (  61*X13  -  18*X3  )  >>  6;F12  =  (  61*X3  +  18*X13  )  >>  6;F13  =  (  30*X11  +  56*X5  )  >>  6;F14  =  (  49*X7  +  40*X9  )  >>  6;F15  =  (  6*X15  +  63*X1  )  >>  6;
/stage  1
E4  =  (  12*X2  -  62*X14  )  >>  6;E5  =  (  53*X10  -  35*X6  )  >>  6;E6  =  (  53*X6  +  35*X10  )  >>  6;E7  =  (  12*X14  +  62*X2  )  >>  6;E8  =  F8  +  F9;E9  =  F8  -  F9;E10  =  F11  -  F10;E11  =  F11  +  F10;E12  =  F12  +  F13;E13  =  F12  -  F13;E14  =  F15  -  F14;E15  =  F15  +  F14;
/stage  2
D0  =  (  45*(  X0  +  X8  )  )  >>  6;D1  =  (  45*(  X0  -  X8  )  )  >>  6;D2  =  (  24*X4  -  59*X12  )  >>  6;D3  =  (  59*X4  +  24*X12  )  >>  6;D4  =  E4  +  E5;D5  =  E4  -  E5;D6  =  E7  -  E6;D7  =  E7  +  E6;D9  =  (  24*E14  -  59*E9  )  >>  6;D10  =  (    -  59*E13  -  24*E10  )  >>  6;D13  =  (  24*E13  -  59*E10  )  >>  6;D14  =  (  59*E14  +  24*E9  )  >>  6;
/stage  3
C0  =  D0  +  D3;C3  =  D0  -  D3;C8  =  E8  +  E11;C11  =  E8  -  E11;C12  =  E15  -  E12;C15  =  E15  +  E12;C1  =  D1  +  D2;C2  =  D1  -  D2;C9  =  D9  +  D10;C10  =  D9  -  D10;C13  =  D14  -  D13;C14  =  D14  +  D13;C5  =  (  45*(  D6  -  D5  )  )  >>  6;C6  =  (  45*(  D6  +  D5  )  )  >>  6;
/stage  4
B0  =  C0  +  D7;B7  =  C0  -  D7;B1  =  C1  +  C6;B6  =  C1  -  C6;B2  =  C2  +  C5;B5  =  C2  -  C5;B3  =  C3  +  D4;B4  =  C3  -  D4;B10  =  (  45*(  C13  -  C10  )  )  >>  6;B13  =  (  45*(  C13  +  C10  )  )  >>  6;B11  =  (  45*(  C12  -  C11  )  )  >>  6;B12  =  (  45*(  C12  +  C11  )  )  >>  6;
/stage  5
Y0  =  B0  +  C15;Y15  =  B0  -  C15;Y1  =  B1  +  C14;Y14  =  B1  -  C14;Y2  =  B2  +  B13;Y13  =  B2  -  B13;Y3  =  B3  +  B12;Y12  =  B3  -  B12;Y4  =  B4  +  B11;Y11  =  B4  -  B11;Y5  =  B5  +  B10;Y10  =  B5  -  B10;Y6  =  B6  +  C9;Y9  =  B6  -  C9;Y7  =  B7  +  C8;Y8  =  B7  -  C8;
}
また、前述した図２のフローグラフによって、変換された３２×３２変換ブロックの逆ＤＣＴ過程は、Ｘｉ（ｉは、０から３１までの整数）が入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉが中間値、Ｙｉが逆変換結果値を表すとする時、次の演算過程のように表現される。
【００８７】
{
/stage  0
G16  =  (  12*X1  -  255*X31)  >>  8;G17  =  (  189*X17  -  171*X15)  >>  8;G18  =  (  109*X9  -  231*X23)  >>  8;G19  =  (  241*X25  -  86*X7)  >>  8;G20  =  (  62*X5  -  248*X27)  >>  8;G21  =  (  219*X21  -  131*X11)  >>  8;G22  =  (  152*X13  -  205*X19)  >>  8;G23  =  (  253*X29  -  37*X3)  >>  8;G24  =  (  253*X3  +  37*X29)  >>  8;G25  =  (  152*X19  +  205*X13)  >>  8;G26  =  (  219*X11  +  131*X21)  >>  8;G27  =  (  62*X27  +  248*X5)  >>  8;G28  =  (  241*X7  +  86*X25)  >>  8;G29  =  (  109*X23  +  231*X9)  >>  8;G30  =  (  189*X15  +  171*X17)  >>  8;G31  =  (  12*X31  +  255*X1)  >>  8;
/stage  1
F8  =  (  25*X2  -  254*X30)  >>  8;F9  =  (  197*X18  -  162*X14)  >>  8;F10  =  (  120*X10  -  225*X22)  >>  8;F11  =  (  244*X26  -  74*X6)  >>  8;F12  =  (  244*X6  +  74*X26)  >>  8;F13  =  (  120*X22  +  225*X10)  >>  8;F14  =  (  197*X14  +  162*X18)  >>  8;F15  =  (  25*X30  +  254*X2)  >>  8;F16  =  G16  +  G17;F17  =  G16  -  G17;F18  =  G19  -  G18;F19  =  G19  +  G18;F20  =  G20  +  G21;F21  =  G20  -  G21;F22  =  G23  -  G22;F23  =  G23  +  G22;F24  =  G24  +  G25;F25  =  G24  -  G25;F26  =  G27  -  G26;F27  =  G27  +  G26;F28  =  G28  +  G29;F29  =  G28  -  G29;F30  =  G31  -  G30;F31  =  G31  +  G30;
/stage  2
E4  =  (  49*X4  -  251*X28)  >>  8;E5  =  (  212*X20  -  142*X12)  >>  8;E6  =  (  212*X12  +  142*X20)  >>  8;E7  =  (  49*X28  +  251*X4)  >>  8;E8  =  F8  +  F9;E9  =  F8  -  F9;E10  =  F11  -  F10;E11  =  F11  +  F10;E12  =  F12  +  F13;E13  =  F12  -  F13;E14  =  F15  -  F14;E15  =  F15  +  F14;E17  =  (  49*F30  -  251*F17)  >>  8;E18  =  (  -  251*F29  -  49*F18)  >>  8;E21  =  (  212*F26  -  142*F21)  >>  8;E22  =  (  -  142*F25  -  212*F22)  >>  8;E25  =  (  212*F25  -  142*F22)  >>  8;E26  =  (  142*F26  +  212*F21)  >>  8;E29  =  (  49*F29  -  251*F18)  >>  8;E30  =  (  251*F30  +  49*F17)  >>  8;
/stage  3
D0  =  (  181*(  X0  +  X16  ))  >>  8;D1  =  (  181*(  X0  -  X16  ))  >>  8;D2  =  (  97*X8  -  236*X24)  >>  8;D3  =  (  236*X8  +  97*X24)  >>  8;D4  =  E4  +  E5;D5  =  E4  -  E5;D6  =  E7  -  E6;D7  =  E7  +  E6;D9  =  (  97*E14  -  236*E9)  >>  8;D10  =  (-236*E13  -  97*E10)  >>  8;D13  =  (  97*E13  -  236*E10)  >>  8;D14  =  (236*E14  +  97*E9)  >>  8;D16  =  F16  +  F19;D19  =  F16  -  F19;D20  =  F23  -  F20;D23  =  F23  +  F20;D24  =  F24  +  F27;D27  =  F24  -  F27;D28  =  F31  -  F28;D31  =  F31  +  F28;D17  =  E17  +  E18;D18  =  E17  -  E18;D21  =  E22  -  E21;D22  =  E22  +  E21;D25  =  E25  +  E26;D26  =  E25  -  E26;D29  =  E30  -  E29;D30  =  E30  +  E29;
/stage  4
C0  =  D0  +  D3;C3  =  D0  -  D3;C8  =  E8  +  E11;C11  =  E8  -  E11;C12  =  E15  -  E12;C15  =  E15  +  E12;C1  =  D1  +  D2;C2  =  D1  -  D2;C9  =  D9  +  D10;C10  =  D9  -  D10;C13  =  D14  -  D13;C14  =  D14  +  D13;C5  =  (  181*(  D6  -  D5  ))  >>  8;C6  =  (  181*(  D6  +  D5  ))  >>  8;C18  =  (  97*D29  -  236*D18)  >>  8;C20  =  (-  236*D27  -  97*D20)  >>  8;C26  =  (-  236*D21  +  97*D26)  >>  8;C28  =  (  97*D19  +  236*D28)  >>  8;C19  =  (  97*D28  -  236*D19)  >>  8;C21  =  (-  236*D26  -  97*D21)  >>  8;C27  =  (-  236*D20  +  97*D27)  >>  8;C29  =  (  97*D18  +  236*D29)  >>  8;
/stage  5
B0  =  C0  +  D7;B7  =  C0  -  D7;B1  =  C1  +  C6;B6  =  C1  -  C6;B2  =  C2  +  C5;B5  =  C2  -  C5;B3  =  C3  +  D4;B4  =  C3  -  D4;B10  =  (  181*(  C13  -  C10  ))  >>  8;B13  =  (  181*(  C13  +  C10  ))  >>  8;B11  =  (  181*(  C12  -  C11  ))  >>  8;B12  =  (  181*(  C12  +  C11  ))  >>  8;B16  =  D16  +  D23;B23  =  D16  -  D23;B24  =  D31  -  D24;B31  =  D31  +  D24;B17  =  D17  +  D22;B22  =  D17  -  D22;B25  =  D30  -  D25;B30  =  D30  +  D25;B18  =  C18  +  C21;B21  =  C18  -  C21;B26  =  C29  -  C26;B29  =  C29  +  C26;B19  =  C19  +  C20;B20  =  C19  -  C20;B27  =  C28  -  C27;B28  =  C28  +  C27;
/stage  6
A0  =  B0  +  C15;A15  =  B0  -  C15;A1  =  B1  +  C14;A14  =  B1  -  C14;A2  =  B2  +  B13;A13  =  B2  -  B13;A3  =  B3  +  B12;A12  =  B3  -  B12;A4  =  B4  +  B11;A11  =  B4  -  B11;A5  =  B5  +  B10;A10  =  B5  -  B10;A6  =  B6  +  C9;A9  =  B6  -  C9;A7  =  B7  +  C8;A8  =  B7  -  C8;A20  =  (  181*(  B27  -  B20  ))  >>  8;A27  =  (  181*(  B27  +  B20  ))  >>  8;A21  =  (  181*(  B26  -  B21  ))  >>  8;A26  =  (  181*(  B26  +  B21  ))  >>  8;A22  =  (  181*(  B25  -  B22  ))  >>  8;A25  =  (  181*(  B25  +  B22  ))  >>  8;A23  =  (  181*(  B24  -  B23  ))  >>  8;A24  =  (  181*(  B24  +  B23  ))  >>  8;
/stage  7
Y0  =  A0  +  B31;Y31  =  A0  -  B31;Y1  =  A1  +  B30;Y30  =  A1  -  B30;Y2  =  A2  +  B29;Y29  =  A2  -  B29;Y3  =  A3  +  B28;Y28  =  A3  -  B28;Y4  =  A4  +  A27;Y27  =  A4  -  A27;Y5  =  A5  +  A26;Y26  =  A5  -  A26;Y6  =  A6  +  A25;Y25  =  A6  -  A25;Y7  =  A7  +  A24;Y24  =  A7  -  A24;Y8  =  A8  +  A23;Y23  =  A8  -  A23;Y9  =  A9  +  A22;Y22  =  A9  -  A22;Y10  =  A10  +  A21;Y21  =  A10  -  A21;Y11  =  A11  +  A20;Y20  =  A11  -  A20;Y12  =  A12  +  B19;Y19  =  A12  -  B19;Y13  =  A13  +  B18;Y18  =  A13  -  B18;Y14  =  A14  +  B17;Y17  =  A14  -  B17;Y15  =  A15  +  B16;Y16  =  A15  -  B16;
}
また、前述した図８のフローグラフによって、変換された１６×１６変換ブロックの逆ＤＣＴ過程は、Ｘｉ（ｉは、０から１５までの整数）が入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉが中間値、Ｙｉが逆変換結果値を表すとする時、次の演算過程のように表現される。
【００８８】
{
/stage  0
D0  =  X0;D1  =  -X8;D2  =  X4;D3  =  X12;D4  =  X2;E5  =  X6  ;D6  =  X14;E7  =  -X10;E8  =  X3;E9  =  X13;D10  =  X9;E11  =  X15;E12  =  X1;D13  =  X7;E14  =  -X11;E15  =  X5;
/stage  1
D5  =  (45*(E5  -  E7))  >>  6;D7  =  (45*(E5  +  E7))  >>  6;
D8  =  (24*E8  +  59*E9)  >>  6;D9  =  (-59*E8  +  24*E9)  >>  6;
D11  =  (45*(E11  -  E12))  >>  6;D12  =  (45*(E11  +  E12))  >>  6;
D14  =  (24*E14  +  59*E15)  >>  6;D15  =  (-59*E14  +  24*E15)  >>  6;
/stage  2
C0  =  (45*(D0  -  D1))  >>  6;C1  =  (45*(D0  +  D1))  >>  6;
C2  =  (24*D2  -  59*D3)  >>  6;C3  =  (59*D2  +  24*D3)  >>  6;
C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =  -D6  +  D7;C7  =  D6  +  D7;  
C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D10  +  D11;  C11  =  D10  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;
/stage  3
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;
B4  =  (6*C4  -  31*C7,  5);B7  =  (31*C4  +  6*C7,  5);B5  =  (35*C5  -  53*C6)  >>  6;B6  =  (53*C5  +  35*C6)  >>  6;
B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;
B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;
/stage  4
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;
A8  =  (49*B8  -  40*B15)  >>  6;A15  =  (40*B8  +  49*B15)  >>  6;A9  =  (30*B9  +  56*B14)  >>  6;A14  =  (-56*B9  +  30*B14)  >>  6;A10  =  (61*B10  -  18*B13)  >>  6;A13  =  (18*B10  +  61*B13)  >>  6;A11  =  (6*B11  +  63*B12)  >>  6;A12  =  (-63*B11  +  6*B12)  >>  6;
/stage  5
Y0    =  A0  +  A15;Y1    =  A1  +  A14;Y2    =  A2  +  A13;Y3    =  A3  +  A12;Y4    =  A4  +  A11;Y5    =  A5  +  A10;Y6    =  A6  +  A9;Y7    =  A7  +  A8;Y8    =  A7  -  A8;Y9    =  A6  -  A9;Y10  =  A5  -  A10;Y11  =  A4  -  A11;Y12  =  A3  -  A12;Y13  =  A2  -  A13;Y14  =  A1  -  A14;Y15  =  A0  -  A15;
}
また、前述した図８のフローグラフによって、変換された３２×３２変換ブロックの逆ＤＣＴ過程は、Ｘｉ（ｉは、０から３１までの整数）が入力値、Ｚｉ，Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉが中間値、Ｙｉが逆変換結果値を表すとする時、次の演算過程のように表現される。
【００８９】
{
/stage  0
D0=  X0;E24  =  X1;E12  =  X2;F16  =  -X3;D4  =  X4;    F31  =  X5;    E8  =  X6;  E26  =  -X7;D2  =  X8;      E21  =  X9;    E15  =  X10;    F29  =  X11;E5  =  X12;    F18  =  -X13;      D13  =  X14;      D22  =  X15;D1  =  -X16;      D25  =  X17;    D10  =  X18;  F19  =  -X19;E7  =  -X20;  F28  =  -X21  ;    E14  =  -X22;    E20  =  -X23;D3  =  X24;  E27  =  -X25;    E9  =  X26;  F30  =  -X27;D6  =  X28;  F17  =  -X29  ;    E11  =  X30;    E23  =  -X31;
/stage  1
E16  =  (251*F16  +  49*F17)  >>  8;E17  =  (-49*F16  +  251*F17)  >>  8;E18  =  (212*F18  +  142*F19)  >>  8;E19  =  (-142*F18  +  212*F19)  >>  8;
E28  =  (212*F28  +  142*F29)  >>  8;E29  =  (-142*F28  +  212*F29)  >>  8;E30  =  (251*F30  +  49*F31)  >>  8;E31  =  (-49*F30  +  251*F31)  >>  8;
/stage  2
D5  =  (181*(E5  -  E7))  >>  8;D7  =  (181*(E5  +  E7))  >>  8;
D8  =  (97*E8  +  236*E9)  >>  8;D9  =  (-236*E8  +  97*E9)  >>  8;
D11  =  (181*(E11  -  E12))  >>  8;D12  =  (181*(E11  +  E12))  >>  8;
D14  =  (97*E14  +  236*E15)  >>  8;D15  =  (-236*E14  +  97*E15)  >>  8;
D16  =  E16  +  E18;C18  =  E16  -  E18;C17  =  E17  +  E19;D19  =  E17  -  E19;
D20  =  (236*E20  -  97*E21)  >>  8;D21  =  (97*E20  +  236*E21)  >>  8;D23  =  (181*(E23  -  E24))  >>  8;D24  =  (181*(E23  +  E24))  >>  8;D26  =  (236*E26  -  97*E27)  >>  8;D27  =  (97*E26  +  236*E27)  >>  8;D28  =  -  E28  +  E30;C30  =  E28  +  E30;C29  =  -  E29  +  E31;D31  =  E29  +  E31;
/stage  3
C0  =  (181*(D0  -  D1))  >>  8;C1  =  (181*(D0  +  D1))  >>  8;
C2  =  (97*D2  -  236*D3)  >>  8;C3  =  (236*D2  +  97*D3)  >>  8;
C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =  -D6  +  D7;  C7  =  D6  +  D7;    
C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D10  +  D11;  C11  =  D10  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;  
C16  =  (181*(D16  -  D19))  >>  8;C19  =  (181*(D16  +  D19))  >>  8;C20  =  D20  +  D26;C26  =  D20  -  D26;C21  =  D21  +  D27;C27  =  D21  -  D27;C22  =  D22  +  D23;C23  =  D22  -  D23;C24  =  D24  +  D25;C25  =  D24  -  D25;C28  =  (181*(D28  -  D31))  >>  8;C31  =  (181*(D28  +  D31))  >>  8;
/stage  4
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;
B4  =  (49*C4  -  251*C7)  >>  8;B7  =  (251*C4  +  49*C7)  >>  8;B5  =  (142*C5  -  212*C6)  >>  8;B6  =  (212*C5  +  142*C6)  >>  8;
B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;
B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;
B16  =  C16  +  C28;B28  =  C16  -  C28;B17  =  C17  +  C29;B29  =  C17  -  C29;B18  =  C18  +  C30;B30  =  C18  -  C30;B19  =  C19  +  C31;B31  =  C19  -  C31;
B20  =  C20  +  C23;B23  =  C20  -  C23;B21  =  C21  +  C22;B22  =  C21  -  C22;
B24  =  C24  +  C27;B27  =  C24  -  C27;B25  =  C25  +  C26;B26  =  C25  -  C26;
/stage  5
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;
A8  =  (197*B8  -  162*B15)  >>  8;A15  =  (162*B8  +  197*B15)  >>  8;A9  =  (120*B9  +  225*B14)  >>  8;A14  =  (-225*B9  +  120*B14)  >>  8;A10  =  (244*B10  -  74*B13)  >>  8;A13  =  (74*B10  +  244*B13)  >>  8;A11  =  (25*B11  +  254*B12)  >>  8;A12  =  (-254*B11  +  25*B12)  >>  8;
A16  =  B16  +  B23;A23  =  B16  -  B23;A17  =  B17  +  B22;A22  =  B17  -  B22;A18  =  B18  +  B21;A21  =  B18  -  B21;A19  =  B19  +  B20;A20  =  B19  -  B20;
A24  =  B24  +  B31;A31  =  B24  -  B31;A25  =  B25  +  B30;A30  =  B25  -  B30;A26  =  B26  +  B29;A29  =  B26  -  B29;A27  =  B27  +  B28;A28  =  B27  -  B28;
/stage  6
Z0    =  A0  +  A15;Z1    =  A1  +  A14;Z2    =  A2  +  A13;Z3    =  A3  +  A12;Z4    =  A4  +  A11;Z5    =  A5  +  A10;Z6    =  A6  +  A9;Z7    =  A7  +  A8;Z8    =  A7  -  A8;Z9    =  A6  -  A9;Z10  =  A5  -  A10;Z11  =  A4  -  A11;Z12  =  A3  -  A12;Z13  =  A2  -  A13;Z14  =  A1  -  A14;Z15  =  A0  -  A15;
Z16  =  (171*A16  +  189*A31)  >>  8;Z31  =  (-189*A16  +  171*A31)  >>  8;Z17  =  (205*A17  -  152*A30)  >>  8;Z30  =  (152*A17  +  205*A30)  >>  8;Z18  =  (131*A18  +  219*A29)  >>  8;Z29  =  (-219*A18  +  131*A29)  >>  8;Z19  =  (231*A19  -  109*A28)  >>  8;Z28  =  (109*A19  +  231*A28)  >>  8;Z20  =  (86*A20  +  241*A27)  >>  8;Z27  =  (-241*A20  +  86*A27)  >>  8;Z21  =  (248*A21  -  62*A26)  >>  8;Z26  =  (62*A21  +  248*A26)  >>  8;Z22  =  (37*A22  +  253*A25)  >>  8;Z25  =  (-253*A22  +  37*A25)  >>  8;Z23  =  (255*A23  -  12*A24)  >>  8;Z24  =  (12*A23  +  255*A24)  >>  8;
/stage  7
Y0  =  Z0  +  Z31;Y31  =  Z0  -  Z31;Y1  =  Z1  +  Z30;Y30  =  Z1  -  Z30;Y2  =  Z2  +  Z29;Y29  =  Z2  -  Z29;Y3  =  Z3  +  Z28;Y28  =  Z3  -  Z28;Y4  =  Z4  +  Z27;Y27  =  Z4  -  Z27;Y5  =  Z5  +  Z26;Y26  =  Z5  -  Z26;Y6  =  Z6  +  Z25;Y25  =  Z6  -  Z25;Y7  =  Z7  +  Z24;Y24  =  Z7  -  Z24;Y8  =  Z8  +  Z23;Y23  =  Z8  -  Z23;Y9  =  Z9  +  Z22;Y22  =  Z9  -  Z22;Y10  =  Z10  +  Z21;Y21  =  Z10  -  Z21;Y11  =  Z11  +  Z20;Y20  =  Z11  -  Z20;Y12  =  Z12  +  Z19;Y19  =  Z12  -  Z19;Y13  =  Z13  +  Z18;Y18  =  Z13  -  Z18;Y14  =  Z14  +  Z17;Y17  =  Z14  -  Z17;Y15  =  Z15  +  Z16;Y16  =  Z15  -  Z16;
}
図１２は、本発明の一実施形態によるビデオ復号化方法を示すフローチャートである。図１２を参照すれば、ステップ１２１０で、逆量子化部１１２０は、Ｎ×Ｎサイズの量子化された変換ブロックを受信し、ステップ１２２０で、量子化されたＮ×Ｎ変換ブロックの一次元逆ＤＣＴに利用されるＮ×Ｎ逆変換行列と、Ｎ×Ｎ逆変換行列に基づいて生成された高速逆変換行列との差値を補正するために、Ｎ×Ｎ変換ブロックに対するデスケーリングを行う。前述したように、デスケーリングは、逆量子化過程と同時に行われ、量子化パラメータＱＰによって決定されるデスケーリング行列Ｖまたはデスケーリング定数ＤＱＭａｔを適用して、量子化された変換係数に対するデスケーリングを行う。
【００９０】
ステップ１２３０で、逆変換部１１３０は、高速逆変換行列を利用して、デスケーリングされたＮ×Ｎ変換ブロックを逆変換して、Ｎ×Ｎ逆変換ブロックを生成する。前述したように、高速逆変換行列は、本発明の多様な実施形態を通じて獲得されたＮ×Ｎ高速変換行列Ａの逆行列Ａ−１であって、逆ＤＣＴに利用される逆変換行列の元素を、有理数値に置換したり、逆ＤＣＴに利用される逆変換行列の元素に２の累乗を乗じた後で四捨五入した元素を利用して生成された高速逆変換行列を利用して、逆ＤＣＴを行う。
【００９１】
以上のように、本発明は、たとえ限定された実施形態及び図面により説明されたとしても、本発明が前記の実施形態に限定されるものではなく、これは、当業者ならば、かかる記載から多様な修正及び変形が可能であろう。したがって、本発明の思想は、特許請求の範囲によってのみ把握されねばならず、これと均等または等価的な変形は、いずれも本発明の思想の範疇に属するといえる。また、本発明によるシステムは、コンピュータで読み取り可能な記録媒体に、コンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムにより読み取られるデータが保存される全ての種類の記録装置を含む。記録媒体の例としては、ＲＯＭ(Read  Only  Memory)、ＲＡＭ(Random  Access  Memory)、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードが保存されて実行される。
【図１】
0005620587.tif 000018
【図２】
0005620587.tif 000019
【図３】
0005620587.tif 000020
【図４ａ】
0005620587.tif 000021
【図４ｂ】
0005620587.tif 000022
【図４ｃ】
0005620587.tif 000023
【図４ｄ】
0005620587.tif 000024
【図４ｅ】
0005620587.tif 000025
【図４ｆ】
0005620587.tif 000026
【図５ａ】
0005620587.tif 000027
【図５ｂ】
0005620587.tif 000028
【図５ｃ】
0005620587.tif 000029
【図５ｄ】
0005620587.tif 000030
【図５ｅ】
0005620587.tif 000031
【図５ｆ】
0005620587.tif 000032
【図６ａ】
0005620587.tif 000033
【図６ｂ】
0005620587.tif 000034
【図６ｃ】
0005620587.tif 000035
【図６ｄ】
0005620587.tif 000036
【図６ｅ】
0005620587.tif 000037
【図６ｆ】
0005620587.tif 000038
【図７ａ】
0005620587.tif 000039
【図７ｂ】
0005620587.tif 000040
【図７ｃ】
0005620587.tif 000041
【図７ｄ】
0005620587.tif 000042
【図７ｅ】
0005620587.tif 000043
【図７ｆ】
0005620587.tif 000044
【図８】
0005620587.tif 000045
【図９】
0005620587.tif 000046
【図１０】
0005620587.tif 000047
【図１１】
0005620587.tif 000048
【図１２】
0005620587.tif 000049