説明

共通因数を用いる変換

データの変換を効率的に実行するための技術が、記載される。1つのデザインでは、装置は、少なくとも1つのデータ値の第1グループと少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行し、その定数は第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する。本装置は、さらに、少なくとも1つのデータ値の第2グループと少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行し、その定数は第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する。各有理数ダイアディック定数は、ダイアディック分母を有する有理数である。少なくとも1つのデータ値の第1グループと第2グループとは、異なるサイズを有する。第1及び複数の共通因数は、乗算のための論理演算と算術演算の数、結果の精度、等、に基づいて選択されることができる。

【発明の詳細な説明】
【関連文献】
【0001】
[米国特許法35§119による優先権の主張]
本出願は、米国特許仮出願番号第60/758,464号、名称“スケーリングされた離散余弦変換(DCT)及び逆離散余弦変換(IDCT)の効率的な乗算なしの実施形態(Efficient Multiplication-Free Implementations of Scaled Discrete Cosine Transform (DCT) and Inverse Discrete Cosine Transform (IDCT))”、2006年1月11日出願、に優先権を主張し、本出願の譲受人に譲渡され、そして本明細書中に引用によって取り込まれている。
【技術分野】
【0002】
本発明は、一般にデータの処理に係わり、そしてより詳しくはデータに変換を実行するための技術に関する。
【背景技術】
【0003】
変換は、一般に1つのドメインから別のドメインへとデータを転換させるために使用される。例えば、離散余弦変換(DCT:discrete cosine transform)は、空間ドメインから周波数ドメインへとデータを変換するために一般に使用され、そして逆離散余弦変換(IDCT:inverse discrete cosine transform)は、周波数ドメインから空間ドメインへとデータを変換するために一般に使用される。DCTは、画像又はビデオ・フレーム中の画像要素(ピクセル)を空間的に相関付けされていないブロックへの画像/ビデオ圧縮のために広く使用されている。結果としての変換係数は、一般的に互いにほとんど依存せず、それはこれらの係数を量子化及びエンコーディングのためにより適したものにする。DCTは、しかもエネルギー圧縮特性を示し、それはピクセルのブロックの大部分のエネルギーをわずかな(代表的に低次の)変換係数にだけマッピングする能力である。このエネルギー圧縮特性は、エンコーディング・アルゴリズムのデザインを単純化することができる。
【0004】
DCTとIDCTのような変換は、大量のデータに実行されることができる。これゆえ、可能な限り効率的に変換を実行することが望ましい。その上、コストと複雑性を低減するために、簡単なハードウェアを使用して変換のための計算を実行することが望ましい。
【0005】
それゆえ、データの変換を効率的に実行するための技術に対するこの分野における必要性がある。
【発明の開示】
【サマリー】
【0006】
データの変換を効率的に実行するための技術が、本明細書中に記述される。ある態様によれば、装置は、少なくとも1つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行する。本装置は、さらに、少なくとも1つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行する。各有理数ダイアディック定数は、ダイアディック分母を有する有理数である。少なくとも1つのデータ値の第1と第2グループとは、異なるサイズを有する。例えば、第1グループは、2つのデータ値を含むことができ、そして第2グループは、4つのデータ値を含むことができる。
【0007】
別の1つの態様によれば、装置は、少なくとも1つのデータ値と、共通因数によりスケーリングされた少なくとも1つの無理数定数を近似する少なくとも1つの有理数ダイアディック定数との乗算を実行する。その共通因数は、該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算のための論理演算と算術演算の数に基づいて選択される。論理演算と算術演算は、シフト演算、減算演算、及び加算演算を備えることができる。共通因数は、さらに結果の精度に基づいて選択されることができる。
【0008】
本発明の様々な態様及び特徴は、下記にさらに詳細に説明される。
【詳細な説明】
【0009】
本明細書中に記載される技術は、様々なタイプの変換、例えば、DCT、IDCT、離散フーリエ変換(DFT:discrete Fourier transform)、逆DFT(IDFT)、変調ラップ変換(MLT:modulated lapped transform)、逆MLT、変調複素ラップ変換(MCLT:modulated complex lapped transform)、逆MCLT、等、に対して使用されることができる。本技術は、同様に様々なアプリケーション、例えば、画像処理、ビデオ処理、オーディオ処理、通信、計算、データ・ネットワーキング、データ記憶、グラフィックス、等、に対して使用されることができる。一般に、本技術は、変換を使用する任意のアプリケーションに対して使用されることができる。明確さのために、本技術は、DCTとIDCTに対して以下に説明され、それは画像処理及びビデオ処理において普通に使用される。
【0010】
タイプIIの1次元(1D)N−点DCTと1D N−点IDCTは、次式のように定義されることができる:
【数1】

【0011】
x[n]は、1D空間ドメイン関数であり、そして
X[k]は、1D周波数ドメイン関数である。
【0012】
式(1)の1D DCTは、N個の空間ドメイン値x[0]からx[N−1]について演算し、そしてN個の変換係数X[0]からX[N−1]を生成する。式(2)の1D IDCTは、N個の変換係数について演算し、そしてN個の空間ドメイン値を生成する。タイプII DCTは、変換の1つのタイプであり、そして画像/ビデオ圧縮のために提案された複数のエネルギー圧縮変換の中で最も効率的な変換のうちの1つであると一般に信じられている。
【0013】
1D DCTは、下記に記述されるように、2つの2D DCTに対して使用されることができる。同様に、1D IDCTは、2D IDCTに対して使用されることができる。2D DCT/IDCTを1D DCT/IDCTのカスケードへと分解することにより、2D DCT/IDCTの効率は、1D DCT/IDCTの効率に依存する。一般に、1D DCTと1D IDCTは、任意のベクトル・サイズについて実行されることができ、そして2D DCTと2D IDCTは、任意のブロック・サイズについて実行されることができる。しかしながら、8×8DCTと8×8IDCTは、一般に画像及びビデオ処理に対して使用されることができる、そこでは、Nは8に等しい。例えば、8×8DCTと8×8IDCTは、様々な画像及びビデオ・コーディング規格、例えば、JPEG、MPEG−1、MPEG−2、MPEG−4(P.2)、H.261、H.263、等、における標準基礎単位ブロックとして使用される。
【0014】
1D DCTと1D IDCTは、それぞれ式(1)と(2)に示されるそれらの元々の形式で実施されることができる。しかしながら、計算上の複雑さの実質的な低減は、可能な限り少ない乗算と加算を結果としてもたらす因数分解(factorization)を見出すことにより実現されることができる。変換のための因数分解は、フロー・グラフにより表わされることができ、それはその変換のために実行されるべき明細な演算を指示する。
【0015】
図1は、8−点IDCTの一例の因数分解のフロー・グラフ100を示す。フロー・グラフ100では、各加算は、次のシンボルにより表わされ、
【数2】

【0016】
そして、各乗算は、四角により表わされる。各加算は、2つの入力値を合計する又は引き算し、そして出力値を与える。各乗算は、入力値と四角の内側に示される変換定数とを掛け算する。図1における因数分解は、次の定数の因数を用いる6の乗算を有する:
【数3】

【0017】
フロー・グラフ100は、8個のスケーリングされた変換係数A・X[0]からA・X[7]を受け取り、これらの係数に8−点IDCTを実行し、そして8個の出力サンプルx[0]からx[7]を生成する。AからAは、スケーリング因数であり、そして次式で与えられる:
【数4】

【0018】
フロー・グラフ100は、複数のバタフライ演算を含む。バタフライ演算は、2つの入力値を受け取り、そして2つの出力値を生成する、ここで、1つの出力値は、その2つの入力値の合計であり、そして他の出力値は、2つの入力値の差である。例えば、入力値A・X[0]とA・X[4]についてのバタフライ演算は、上の分岐に対して出力値A・X[0]+A・X[4]をそして下の分岐に対して出力値A・X[0]−A・X[4]を生成する。
【0019】
図2は、8−点DCTの一例の因数分解のフロー・グラフ200を示す。フロー・グラフ200は、8個の入力サンプルx[0]からx[7]を受け取り、これらの入力サンプルについて8−点DCTを実行し、そして8個のスケーリングされた変換係数8A・X[0]から8A・X[7]を生成する。スケーリング因数AからAは、上記で与えられる。図2のおける因数分解は、定数の定数1/Cπ/4、2C3π/8と2S3π/8を用いる6個の乗算を有する。
【0020】
図1と図2のIDCTとDCTに関するフロー・グラフは、類似しており、そして基本的に同じ定数の因数(1/2の違いを有する)による乗算を含む。そのような類似性は、集積回路上でのDCTとIDCTとの実行のために有利であり得る。特に、その類似性は、変換定数によるバタフライ及び乗算を実行するためのシリコンの面積すなわちダイ面積を節約することを可能にすることができ、それは正変換と逆変換の両者において使用される。
【0021】
図1に示される因数分解は、合計6の乗算と28の加算を結果としてもたらし、それらは式(2)の直接計算のために必要とされる乗算と加算の数よりも実質的に少ない。図2に示される因数分解も、同様に、合計6の乗算と28の加算を結果としてもたらし、それらは式(1)の直接計算のために必要とされる乗算と加算の数よりも実質的に少ない。図1の因数分解は、C3π/8とS3π/8を用いて2つの中間変数に平面回転を実行する。図2の因数分解は、2C3π/8と2S3π/8を用いて2つの中間変数に平面回転を実行する。平面回転は、サインとコサイン、例えば、図1におけるcos(3π/8)とsin(3π/8)、の両方を用いて中間変数を掛け算することによって実現される。平面回転のための乗算は、以下に説明される計算技術を使用して効率的に実行されることができる。
【0022】
図1と図2は、それぞれ8−点IDCTと8−点DCTの因数分解の例を示す。これらの因数分解は、スケーリングされたIDCTとスケーリングされたDTCに対してであり、ここで、“スケーリングされた”は、それぞれ既知のスケーリング因数AからAを用いる変換係数X[0]からX[7]のスケーリングを呼ぶ。他の因数分解は、同様に、クーリー・チューキー(Cooley-Tukey)DFTアルゴリズムのような他の公知の高速アルゴリズムへのマッピングを使用することにより、若しくは時間を削減する又は周波数を削減するような系統的な因数分解手順を適用することにより、導出されてきている。一般に、因数分解は、乗算の数を削減させるが、それらを無くさない。
【0023】
図1と図2の乗算は、異なる角度のサインとコサインを表している無理数定数を用い、それは8−点DCTとIDCTに関するπ/8の倍数である。無理数定数は、2つの整数の比ではない定数である。無理数定数を用いる乗算は、各無理数定数が有理数ダイアディック定数によって近似されるとき、固定小数点整数計算でさらに効率的に実行されることができる。有理数ダイアディック定数は、ダイアディック分母を有する有理数定数であり、そしてc/2の形式を有する、ここで、bとcは整数であり、そしてb>0である。整数変数と有理数ダイアディック定数との乗算は、下に記述されるように、論理演算と算術演算を用いて実現される。論理演算と算術演算の数は、計算が実行される方式、同様に有理数ダイアディック定数の値に依存する。
【0024】
ある態様では、共通因数は、変換のための演算の総数を削減するために、及び/又は変換結果の精度を向上させるために使用される。共通因数は、変換において1又はそれより多くの中間変数に適用される定数である。中間変数は、しかもデータ値、等とも呼ばれることがある。共通因数は、1又はそれより多くの変換定数で吸収されることができ、そして1又はそれより多くのスケーリング因数を変えることにより説明されることができる。共通因数は、1又はそれより多くの有理数ダイアディック定数により1又はそれより多くの(無理数)変換定数の近似を改善することができ、それは次に、演算の総数の削減及び/又は精度の向上を結果としてもたらすことができる。
【0025】
一般に、任意の個数の共通因数が、変換のために使用されることができ、そして各共通因数は、変換において任意の数の中間変数に適用されることができる。1つのデザインでは、複数の共通因数が、変換のために使用されることができ、そして異なるサイズの中間変数の複数のグループに適用される。別の1つのデザインでは、複数の共通因数が、同じサイズの中間変数の複数のグループに適用される。
【0026】
図3は、共通因数を用いる8−点IDCTのフロー・グラフ300を示す。フロー・グラフ300は、図1のフロー・グラフ100と同じ因数分解を使用する。しかしながら、フロー・グラフ300は、中間変数の2つのグループに対して2つの共通因数を使用する。
【0027】
第1共通因数Fは、2つの中間変数XとXの第1グループに適用される、それらは変換係数X[2]とX[6]に基づいて生成される。第1共通因数Fは、Xと掛け算され、変換定数Cπ/4で吸収され、そしてスケーリング因数AとAとを変更することにより説明される。第2共通因数Fは、4つの中間変数XからXの第2グループに適用され、それらは変換係数X[1]、X[3]、X[5]とX[7]に基づいて生成される。第2共通因数Fは、Xと掛け算され、変換定数Cπ/4、C3π/8とS3π/8で吸収され、そしてスケーリング因数A,A,AとAを変更することにより説明される。
【0028】
第1共通因数Fは、有理数ダイアディック定数αを用いて近似されることができ、それは積X・Fの近似値を求めるためにXと掛け算される。スケーリングされた変換因数F・Cπ/4は、有理数ダイアディック定数βを用いて近似されることができ、それは積X・F・Cπ/4の近似値を求めるためにXと掛け算されることができる。変更されたスケーリング因数A/Fは、変換係数X[2]に適用されることができる。変更されたスケーリング因数A/Fは、変換係数X[6]に適用されることができる。
【0029】
第2共通因数Fは、有理数ダイアディック定数αを用いて近似されることができ、それは積X・Fの近似値を求めるためにXと掛け算される。スケーリングされた変換因数F・Cπ/4は、有理数ダイアディック定数βを用いて近似されることができ、それは積X・F・Cπ/4の近似値を求めるためにXと掛け算されることができる。スケーリングされた変換因数F・C3π/8は、有理数ダイアディック定数γを用いて近似されることができ、そしてスケーリングされた変換因数F・S3π/8は、有理数ダイアディック定数δを用いて近似されることができる。有理数ダイアディック定数γは、積X・F・C3π/8の近似値を求めるためにXと掛け算されることができ、そして同様に、積X・F・C3π/8の近似値を求めるためにXと掛け算されることができる。有理数ダイアディック定数δは、積X・F・S3π/8の近似値を求めるためにXと掛け算されることができ、そして同様に、積X・F・S3π/8の近似値を求めるためにXと掛け算されることができる。変更されたスケーリング因数A/F,A/F,A/FとA/Fは、それぞれ変換係数X[1],X[3],X[5]とX[7]に適用されることができる。
【0030】
6つの有理数ダイアディック定数α、β、α、β、γとδは、6個の定数に対して定められることができ、次式の通りである:
【数5】

【0031】
図4は、共通因数を用いる8−点DCTのフロー・グラフ400を示す。フロー・グラフ400は、図2のフロー・グラフ200と同じ因数分解を使用する。しかしながら、フロー・グラフ400は、中間変数の2つのグループに対して2つの共通因数を使用する。
【0032】
第1共通因数Fは、2つの中間変数XとXの第1グループに適用され、それは変換係数X[2]とX[6]を生成するために使用される。第1共通因数Fは、Xと掛け算され、変換定数1/Cπ/4で吸収され、そしてスケーリング因数AとAを変更することにより説明される。第2共通因数Fは、4つの中間変数XからXの第2グループに適用され、それらは変換係数X[1]、X[3]、X[5]とX[7]を生成するために使用される。第2共通因数Fは、Xと掛け算され、変換定数1/Cπ/4、2C3π/8と2S3π/8で吸収され、そしてスケーリング因数A,A,AとAを変更することにより説明される。
【0033】
第1共通因数Fは、有理数ダイアディック定数αを用いて近似されることができ、それは積X・Fの近似値を求めるためにXと掛け算されることができる。スケーリングされた変換因数F・Cπ/4は、有理数ダイアディック定数βを用いて近似されることができ、それは積X・F・Cπ/4の近似値を求めるためにXと掛け算されることができる。変更されたスケーリング因数A/FとA/Fは、それぞれ、変換係数X[2]とX[6]に適用されることができる。
【0034】
第2共通因数Fは、有理数ダイアディック定数αを用いて近似されることができ、それは積X・Fの近似値を求めるためにXと掛け算される。スケーリングされた変換因数F・Cπ/4は、有理数ダイアディック定数βを用いて近似されることができ、それは積X・F・Cπ/4の近似値を求めるためにXと掛け算されることができる。スケーリングされた変換因数2F・C3π/8は、有理数ダイアディック定数γを用いて近似されることができ、そしてスケーリングされた変換因数2F・S3π/8は、有理数ダイアディック定数δを用いて近似されることができる。有理数ダイアディック定数γは、積2X・F・C3π/8の近似値を求めるためにXと掛け算されることができ、そして同様に、積2X・F・C3π/8の近似値を求めるためにXと掛け算されることができる。有理数ダイアディック定数δは、積2X・F・S3π/8の近似値を求めるためにXと掛け算されることができ、そして同様に、積2X・F・S3π/8の近似値を求めるためにXと掛け算されることができる。変更されたスケーリング因数A/F,A/F,A/FとA/Fは、それぞれ変換係数X[1],X[3],X[5]とX[7]に適用されることができる。
【0035】
6つの有理数ダイアディック定数α、β、α、β、γとδは、6個の定数に対して定められることができ、次式の通りである:
【数6】

【0036】
図3と図4は、それぞれ8−点IDCTと8−点DCTの特定の因数分解に対する共通因数の使用例を示す。共通因数は、DCTとIDCTの別の因数分解にそして同様に別のタイプの変換に対して使用されることができる。一般に、共通因数は、変換において少なくとも1つの中間変数のグループに適用されることができる。(複数の)中間変数のこのグループは、(例えば、図3に示されるような)入力値のグループから生成されることができる、又は(例えば、図4に示されるような)出力値のグループを生成するために使用されることができる。共通因数は、入力値又は出力値に適用されるスケーリング因数により説明されることができる。
【0037】
複数の共通因数は、中間変数の複数のグループに適用されることができ、そして各グループは、任意の数の中間変数を含むことができる。グループの選択は、変換の因数分解のような様々な要因に依存することがあり、そこでは、変換定数が変換の内部に位置する、等である。複数の共通因数は、(図3と図4には示されない)同じサイズ又は(図3と図4に示されるような)異なるサイズの中間変数の複数のグループに適用されることができる。例えば、3つの共通因数は、図3に示される因数分解に対して使用されることができ、中間変数XとXに適用される第1共通因数、中間変数X,X,XとXに適用される第2共通因数、そしてX[0]とX[4]から生成された2つの中間変数に適用される第3共通因数を有する。
【0038】
中間変数xと有理数ダイアディック定数uとの乗算は、固定小数点整数計算において様々な方式で実行されることができる。乗算は、論理演算(例えば、左シフト、右シフト、ビット反転、等)、算術演算(例えば、加算、減算、符号反転、等)、及び/又は他の演算を使用して実行されることができる。xとuとの乗算のために必要な論理演算と算術演算の数は、計算が実行される方法、及び有理数ダイアディック定数uの値に依存する。別の計算技術は、xとuとの同じ乗算のために異なる数の論理演算と算術演算を必要とすることがある。所与の計算技術は、xと別のuの値との乗算のために異なる数の論理演算と算術演算を必要とすることがある。
【0039】
共通因数は、例えば下記のような基準に基づいて中間変数のグループに対して選択されることができる:
・乗算を実行するための論理演算と算術演算の数、及び
・結果の精度。
【0040】
一般に、中間変数と有理数ダイアディック定数との乗算のための論理演算と算術演算の数を最小にすることは、望ましい。ある複数のハードウェア・プラットフォーム上では、算術演算(例えば、加算)は、論理演算よりもさらに複雑であることがあり、そのため算術演算の数を減少させることは、より重要であり得る。極端な場合には、計算上の複雑性は、論理演算を考慮せずに、算術演算の数だけに基づいて定量化されることがある。ある複数の別のハードウェア・プラットフォーム上では、論理演算(例えば、シフト)は、より費用がかかることがあり、論理演算の数を減少させること(例えば、シフト演算の数及び/又はシフトされるビットの総数を減少させること)が、より重要であり得る。一般に、論理演算と算術演算の加重平均数が使用されることができ、そこでは、加重は、論理演算と算術演算の相対的な複雑性を表すことができる。
【0041】
結果の精度は、下記の表6に与えられるもののような様々な測定基準に基づいて定量化されることができる。一般に、所定の精度に対して論理演算と算術演算の数(すなわち、計算上の複雑さ)を減少させることが望ましい。しかも、例えば、複数の追加の演算の犠牲を払って高い精度を達成するために、複雑性と精度とをトレード・オフすることが、望ましいことがある。
【0042】
図3と図4に示されたように、各共通因数に対して、乗算は、中間変数のグループと有理数ダイアディック定数のグループとについて実行されることができ、その有理数ダイアディック定数はその共通因数によりスケーリングされた(少なくとも1つの変換因数のための)少なくとも1つの無理数定数のグループを近似する。固定小数点整数計算での乗算は、様々な方法で実行されることができる。明確さのために、シフト演算と加算演算とを用いそして中間結果を使用して乗算を実行する計算技術が、下記に記述される。これらの計算技術は、DCTとIDCTのためのシフト演算と加算演算の総数を削減することができる。
【0043】
固定小数点整数計算における整数変数xと無理数定数μとの乗算は、有理数ダイアディック定数を用いて無理数定数を近似することによって実現されることができ、次式の通りである:
μ≒c/2 式(5)
ここで、μは、近似されようとしている無理数定数であり、c/2は、有理数ダイアディック定数であり、bとcは整数であり、そしてb>0である。
【0044】
整数変数xと有理数ダイアディック定数u=c/2が与えられると、整数値の積
y=(x・c)/2 式(6)
は、中間値の系列
,y,y,...,y, 式(7)
を使用して近似されることができ、ここで、y=0、y=xであり、そして全ての2≦i≦tの値に対して、yは次式として求められる:
=±y±y・2Si, j,k<iで、 式(8)
ここで、y・2Siは、|s|ビットだけ(定数sの符号に応じて)中間値yの左シフト又は右シフトのいずれかを意味する。
【0045】
式(8)では、yjは、y+y・2Si,y−y・2Si,又は−y+y・2Siに等しいことがある。系列の各中間値yは、その系列中の2つの前の中間値yとyに基づいて導出されることができ、ここで、y又はyのいずれかはゼロに等しいことがある。各中間値yは、1つのシフト及び/又は1つの加算で得られることがある。このシフトは、sがゼロに等しい場合には、必要とされない。加算は、もしy=y0=0であれば、必要とされない。乗算のための加算とシフトの総数は、その系列中の中間値の数、それはtである、と同様に各中間値に対して使用される数式の数、により決定される。有理数ダイアディック定数uによる乗算は、シフト演算と加算演算の系列へと本質的に展開される。その系列は、その系列中の最終値が所望の整数値である積になる、すなわち次式である:
≒y 式(9)。
【0046】
式(5)から式(9)に示されるように、整数変数xと無理数定数μとの乗算は、シフト演算と加算演算により生成される中間値の系列を用いて、そして中間結果(すなわち、前に生成された中間値)を使用して近似されることができ、演算の総数を減少させる。
【0047】
固定小数点整数計算において整数変数xと2つの無理数定数μ及びηとの乗算は、有理数ダイアディック定数を用いて無理数定数を近似することにより実現されることができ、次式の通りである:
μ≒c/2 そして η≒e/2, 式(10)
ここで、c/2とe/2は、2つの有理数ダイアディック定数であり、b、c、dとeは整数であり、b>0そしてd>0である。
【0048】
整数変数x及び有理数ダイアディック定数u=c/2とv=e/2が与えられると、2つの整数値にされた積
y=(x・c)/2 そして z=(x・e)/2 式(11)
は、中間値
,w,w,...,w, 式(12)
の系列を使用して近似されることができる、ここで、w=0、w=xであり、そして全ての2≦i≦tの値に対して、wは次式のように求められる:
=±w±w・2Si, j,k<iで、 式(13)
ここで、w・2Siは、wを|s|ビットだけ左シフト又は右シフトのいずれかを意味する。所望の整数値にされた積がステップmとnにおいて求められるように、その系列は定義され、次式の通りである:
≒y そして w≒z 式(14)
ここで、m,n≦tそしてm又はnのいずれかはtに等しい。
【0049】
式(10)から(14)に示されたように、整数変数xと無理数定数μ及びηとの乗算は、シフト演算と加算演算により生成される中間値の共通系列を用いてそして中間結果を使用して近似されることができて、演算の総数を減少させることができる。
【0050】
上に記述された計算では、ゼロの加算と減算及びゼロ・ビットのシフトのような自明な演算は、省略されることができる。次の単純化が行われることができる:
=±y±y・2Si ⇒ y=±y・2Si 式(15)
=±y±y・2 ⇒ y=±y±y 式(16)。
【0051】
式(15)では、“⇒”の左側の表式は、ゼロ(yにより記される)の加算又は減算を含み、そして“⇒”の右側の表式により示されるように、1つのシフトを用いて実行されることができる。式(16)では、“⇒”の左側の表式は、ゼロ・ビット(2により記される)のシフトを含み、そして“⇒”の右側の表式により示されるように、1つの加算を用いて実行されることができる。式(15)と(16)は、yの計算において式(8)に適用されることができ、同様にwの計算において式(13)に適用されることができる。
【0052】
図1から図4の乗算は、上に記述された計算技術を使用して効率的に実行されることができる。図1では、固定小数点整数計算での整数変数xと変換定数Cπ/4との乗算は、有理数ダイアディック定数を用いて定数Cπ/4を近似することにより実現されることができ、次式の通りである:
【数7】

【0053】
ここで、Cπ/4はCπ/4の8−ビット近似値である有理数ダイアディック定数である。
【0054】
定数Cπ/4による整数変数xの乗算は、次式のように表わされることができる:
y=(x・181)/256 式(18)。
【0055】
式(18)中の乗算は、下記の一連の演算を用いて実現されることができる:
=x, //1 式(19)
=y+(y>>2), //101
=y−(y>>2), //01011
=y+(y>>6), //010110101
“//”の右側の2進数値は、変数xと掛け算される中間定数である。
【0056】
望ましい積は、yに等しい、すなわち、y=yである。式(18)中の乗算は、3つの乗算と3つのシフトを用いて実行されることができ、3つの中間値y,yとyを生成する。
【0057】
図1では、固定小数点整数計算における整数変数xと変換定数C3π/8及びS3π/8との乗算は、有理数ダイアディック定数を用いて定数C3π/8とS3π/8を近似することにより実現されることができ、次の通りである:
【数8】

【0058】
ここで、C3π/8は、C3π/8の7−ビット近似である有理数ダイアディック定数であり、そして
3π/8は、S3π/8の9−ビット近似である有理数ダイアディック定数である。
【0059】
定数C3π/8及びS3π/8による整数変数xの乗算は、次のように表わされることができる:
y=(x・49)/128 そして z=(x・473)/512 式(22)。
【0060】
式(22)中の乗算は、下記の一連の演算を用いて実現されることができる:
=x, //1 式(23)
=w−(w>>2), //011
=w>>6, //0000001
=w+w, //0110001
=w−w, //0111111
=w>>1, //00110001
=w−(w>>4), //0111011
=w+(w>>9), //0111011001。
【0061】
望ましい積は、wとwに等しい、すなわち、w=yとw=zである。式(22)中の2つの乗算は、5つの加算と5つのシフトを用いて一緒に実行されることができ、7つの中間値wからwを生成する。ゼロの加算は、wとwの生成において省略される。ゼロのシフトは、wとwの生成において省略される。
【0062】
図1に示された8−点IDCTに関して、定数Cπ/4、C3π/8とS3π/8による乗算に関する上に記述した計算技術を使用して、8−ビット精度のための全体の複雑さは、28+3・2+5・2=44の加算と3・2+5・2=16のシフトとして与えられる。一般に、任意の所望の精度は、各変換定数の近似のために十分な数のビットを使用することにより実現されることができる。
【0063】
図2に示された8−点DCTに関して、無理数定数1/Cπ/4、C3π/8とS3π/8は、有理数ダイアディック定数を用いて近似されることができる。有理数ダイアディック定数を用いる乗算は、上に記述された計算技術を使用して実現されることができる。
【0064】
図3に示されたIDCTに関して、共通因数FとFの異なる値は、IDCTのための論理演算と算術演算の異なる総数に、そして出力サンプルx[0]からx[7]に対する異なるレベルの精度に結果としてなることがある。FとFの値の異なる組み合わせが、評価されることができる。値のそれぞれの組み合わせに対して、IDCTのための論理演算と算術演算の総数と出力サンプルの精度が、決定されることができる。
【0065】
の所与の値に対して、有理数ダイアディック定数αとβは、それぞれFとF・Cπ/4とに対して求められることができる。論理演算と算術演算の数は、次に、Xとαとの乗算及びXとβとの乗算に対して決定されることができる。Fの所与の値に対して、有理数ダイアディック定数α,β,γとδは、それぞれF,F・Cπ/4,F・C3π/8とF・S3π/8とに対して求められることができる。論理演算と算術演算の数は、次に、Xとαとの乗算、Xとβとの乗算、そしてXとγ及びδの両方との乗算に対して決定されることができる。Xとγ及びδとの乗算のための演算の数は、Xとγ及びδとの乗算のための演算の数に等しい。
【0066】
共通因数の評価と選択を容易にするために、論理演算と算術演算の数は、有理数ダイアディック定数の異なる可能な値との乗算のために事前に計算されることができる。事前に計算された論理演算と算術演算の数は、ルック−アップ・テーブル又はある別のデータ構造中に記憶されることができる。
【0067】
図5は、異なる有理数ダイアディック定数値を用いる乗算のための論理演算と算術演算の数を記憶するルック−アップ・テーブル500を示す。ルック−アップ・テーブル500は、横軸に第1有理数ダイアディック定数Cの異なる可能な値を、縦軸に第2有理数ダイアディック定数Cの異なる可能な値を有する2次元の表である。各有理数ダイアディック定数に対する異なる可能な値は、その定数に対して使用されるビット数に依存する。例えば、Cが13ビットで表わされる場合、その時にはCに対する8192の可能な値がある。各有理数ダイアディック定数に対する可能な値は、c,c,c,...,cとして表わされ、ここで、c=0、cは最小のゼロでない値であり、そしてcは最大値(例えば、13−ビットに対してc=8191)である。
【0068】
ルック−アップ・テーブル500のi番目の列とj番目の行の記載は、第1有理数ダイアディック定数Cに対するc及び第2有理数ダイアディック定数Cに対するcの両方と中間変数xとの複合乗算のための論理演算と算術演算の数を含む。ルック−アップ・テーブル500中の各記載の値は、その記載のためのcとcとを用いる複合乗算に対する中間値の異なる可能な系列を評価することによりそして最善の系列、例えば、最も少ない演算を有する系列、を選択することにより決定されることができる。(第2有理数ダイアディック定数Cに対してc=0を有する)ルック−アップ・テーブル500の第1行中の記載は、中間変数xと第1有理数ダイアディック定数Cだけとの乗算に対する演算の数を含む。ルック−アップ・テーブルが対称的であるので、(例えば、主対角線の上又は下の)表の半分の記載だけが、埋められることがある。その上、埋めるべき記載の数は、有理数ダイアディック定数CとCを用いて近似される無理数定数を考慮することによって削減されることができる。
【0069】
の所与の値に対して、有理数ダイアディック定数αとβは、決定されることができる。Xとαとの乗算及びXとβとの乗算のための論理演算と算術演算の数は、ルック−アップ・テーブル500の第1行の記載から容易に決定されることができ、そこでは、αとβはCに対応する。同様に、Fの所与の値に対して、有理数ダイアディック定数α,β,γとδは、決定されることができる。Xとαとの乗算及びXとβとの乗算のための論理演算と算術演算の数は、ルック−アップ・テーブル500の第1行の記載から容易に決定されることができ、そこでは、αとβはCに対応する。Xとγ及びδとの複合乗算のための論理演算と算術演算の数は、ルック−アップ・テーブル500中の適切な記載から決定されることができ、そこでは、γはCに対応することができ、そしてδはCに対応することができる、又はその逆である。
【0070】
とFとに対する値の可能な組み合わせのそれぞれに関して、表6中の精度測定基準は、異なるランダムな入力データを用いる十分な数の繰り返しに対して決定されることができる。悪い精度(例えば、不十分な測定基準)を結果としてもたらすFとFの値は、破棄されることができ、そして良い精度(例えば、十分な測定基準)を結果としてもたらすFとFの値は、維持されることができる。
【0071】
表1から表5は、図3のIDCTのための5つの固定小数点近似を示し、それらはアルゴリズムA,B,C,DとEとして示される。これらの近似は、2つのグループの定数に対するものであり、1つのグループはαとβとを含み、そして別の1つのグループはα,β,γとδとを含む。表1から表5のそれぞれに関して、各グループの共通因数は、第1列に与えられる。共通因数は、有理数ダイアディック定数近似の精度を向上させ、そしてIDCTに関するフロー・グラフ中の適切な複数のスケーリング因数と統合されることができる。元々の値(それは1又は無理数定数であり得る)は、第3列に与えられる。自身の共通因数によりスケーリングされた元々の値のそれぞれに対する有理数ダイアディック定数は、第4列に与えられる。整数変数xと1又はそれより多くの有理数ダイアディック定数との乗算に関する中間値の系列は、第5列に与えられる。各乗算のための加算演算とシフト演算の数は、それぞれ第6列と第7列に与えられる。IDCTのための加算演算の総数は、第6列の全ての加算演算、プラス、(X及びXのそれぞれとγ及びδの両方との乗算を考慮して)再び最後の記載、プラス、フロー・グラフ中の全てのバタフライのための28の加算演算、の合計に等しい。IDCTのためのシフト演算の総数は、最後の列の全てのシフト演算、プラス、再び最後の記載、の合計に等しい。
【0072】
表1は、アルゴリズムAの詳細を与え、それは2つのグループのそれぞれに対して1/1.0000442471の共通因数を使用する。
【表1】

【0073】
表2は、アルゴリズムBの詳細を与え、それは第1グループに対して1/1.0000442471の共通因数を、そして第2グループに対して1/1.02053722659の共通因数を使用する。
【表2】

【0074】
表3は、アルゴリズムCの詳細を与え、それは第1グループに対して1/0.88734890555の共通因数を、そして第2グループに対して1/1.02053722659の共通因数を使用する。
【表3】

【0075】
表4は、アルゴリズムDの詳細を与え、それは第1グループに対して1/0.88734890555の共通因数を、そして第2グループに対して1/0.89062054308の共通因数を使用する。
【表4】

【0076】
表5は、アルゴリズムEの詳細を与え、それは第1グループに対して1/0.88734890555の共通因数を、そして第2グループに対して1/1.22387468002の共通因数を使用する。
【表5】

【0077】
近似IDCTからの出力サンプルの精度は、IEEE規格1180−1190に規定された測定基準及び審議中のその置き換え案に基づいて定量化されることができる。この規格は、基準64−ビット浮動小数点DCTを、引き続いて乱数発生器からのデータを使用する近似IDCTを試験することを規定する。基準DCTは、入力ピクセルのブロックに対するランダムなデータを受け取り、そして変換係数を生成する。近似IDCTは、(適切に丸められた)変換係数を受け取り、そして再生されたピクセルのブロックを生成する。再生されたピクセルは、5つの測定基準を使用して入力ピクセルに対して比較され、それらの測定基準は、表6に与えられている。それに加えて、近似IDCTは、ゼロ変換係数を供給されたときに全てゼロを生成するために、そしてDCに近い反転挙動を例証するために必要とされる。上に与えられたAからEの全ての5つのアルゴリズムは、表6中の測定基準の全てに合格する。
【表6】

【0078】
図3に示された1D IDCTは、2D IDCTに対して使用されることができる。同様に、図4に示された1D DCTは、2D DCTに対して使用されることができる。
【0079】
図6は、スケーリングされそして分離できる方式で実行される2D IDCT600のデザインを示す。2D IDCT600は、入力スケーリング・ステージ612、列(又は行)に対する第1のスケーリングされた1D IDCTステージ614が続き、さらに行(又は列)に対する第2のスケーリングされた1D IDCTステージ616が続き、そして出力スケーリング・ステージ618で締め括る。入力スケーリング・ステージ612は、変換係数の8×8ブロックを受け取り、そして各変換係数を定数C=2により事前に掛け算することができる、又は各変換係数を左へPビットだけシフトすることができる、ここで、Pは確保された“仮数”ビットの数を表す。スケーリングの後で、2P−1の量は、DC変換係数に加算されることができ、出力サンプルの妥当な丸めを実現する。スケーリングの精度を向上させるために、S=P+Rビットは、整数へのスケーリング因数の変換の際に使用されることができ、そしてRビットの右シフトは、乗算の後で実行されることができる。Sは、ハードウェア・プラットフォーム上での実行を容易にすることが可能な任意の適切な値であり得て、例えば、Sは符号有り/符号なしの16−ビット乗数を用いるプラットフォームに対して15又は16であり得る。
【0080】
第1の1D IDCTステージ614は、スケーリングされた変換係数のブロックの各列に8−点IDCTを実行する。第2の1D IDCTステージ616は、第1の1D IDCTステージ614により生成された中間ブロックの各行に8−点IDCTを実行する。第1及び第2ステージに対する1D IDCTは、いずれかの内部的な事前のスケーリング又は事後のスケーリングを行うことなくそれらの入力データに直接演算することができる。行と列の両方が処理された後で、出力スケーリング・ステージ618は、第2の1D IDCTステージ616からの結果の量を右へPビットだけシフトすることができ、2D IDCTに対する出力サンプルを生成する。スケーリング因数と精度定数Pは、全体の2D IDCTが所望の幅のレジスタを使用して実行され得るように選択されることができる。
【0081】
2D DCTは、2D IDCTと類似の方法で実行されることができる。2D DCTは、(a)空間ドメイン・サンプルのブロックを事前に掛け算すること、(b)スケーリングされたサンプルのブロックの各列(又は各行)に1D DCTを実行して中間ブロックを生成すること、(c)中間ブロックの各行(又は各列)に1D DCTを実行すること、そして(d)第2の1D DCTステージの出力をスケーリングして2D DCTに対する変換係数のブロックを生成すること、により実行されることができる。
【0082】
明確化のために、上記の記述の多くは、8−点のスケーリングされたIDCT及び8−点のスケーリングされたDCTに対してである。本明細書中に記述される技術は、任意のタイプの変換に対して使用されることができ、例えば、DCT,IDCT,DFT,IDFT,MLT,逆MLT,MCLT,逆MCLT、等である。本技術は、図1から図4に与えられている複数の例の因数分解を用いる、変換の任意の因数分解に対しても同様に使用されることができる。共通因数のグループは、上に説明されたように、因数分解に基づいて選択されることができる。本技術は、図1から図4に与えられている例の8−点変換を用いる任意のサイズの変換に対しても同様に使用されることができる。本技術は、しかも、任意の共通因数選択基準、例えば、論理演算と算術演算の総数、算術演算の総数、結果の精度、等、とともに使用されることができる。
【0083】
変換のための演算の数は、乗算が実行される方式に依存することがある。上に説明された計算技術は、乗算を一連のシフト演算と加算演算へと展開し、演算の数を削減させるために中間結果を使用し、そして共通系列を使用する複数の定数を用いて複合乗算を実行する。乗算は、他の計算技術を用いて同様に実行されることができ、それは共通因数の選択に影響することがある。
【0084】
本明細書中に記述された共通因数を用いる変換は、ある種の利点を与えることができ、例えば下記のものである:
・スケーリングされた段階で統合された乗算のために乗算の複雑性を低下させること、
・JPEG,H.263,MPEG−1,MPEG−2,MPEG−4(P.2)、及び他の規格の実施の際に量子化を用いるスケーリングを統合する能力による可能な複雑性の低減、及び
・スケーリング因数により考慮されることが可能な共通因数を導入することによって乗算において使用される無理数定数に対する固定小数点近似の誤差を最小にするための/分散させるための能力による精度の向上。
【0085】
共通因数を用いる変換は、様々なアプリケーションに対して使用されることができ、例えば、画像及びビデオ処理、通信、計算、データ・ネットワーキング、データ記憶、グラフィックス、等である。ビデオ処理に対する変換の使用例が、以下に説明される。
【0086】
図7は、画像/ビデオ・エンコーディング及びデコーディング・システム700のブロック図を示す。エンコーディング・システム710において、DCTユニット720は、入力データ・ブロックを受け取り、そして変換係数ブロックを生成する。入力データ・ブロックは、ピクセルのN×Nブロック、ピクセル差異値(すなわち残差)のN×Nブロック、ソース信号、例えば、ビデオ信号、から生成されるある別のタイプのデータ、であり得る。ピクセル差異値は、ピクセルの2つのブロック間の差異値、ピクセルのあるブロックと予測されるピクセルのブロックとの間の差異値、等、であり得る。Nは、8に等しい又はある別の値であり得る。エンコーダ730は、DCTユニット720から変換係数ブロックを受け取り、その変換係数をエンコードし、そして圧縮されたデータを生成する。圧縮されたデータは、記憶ユニットに記憶されることができるそして/又は通信チャネル(クラウド740)を介して送られることができる。
【0087】
デコーディング・システム750において、デコーダ760は、記憶ユニット又は通信チャネル740から圧縮されたデータを受け取り、そして変換係数を再生する。IDCTユニット770は、その再生された変換係数を受け取り、そして出力データ・ブロックを生成する。出力データ・ブロックは、再生されたピクセルのN×Nブロック、再生されたピクセル差異値のN×Nブロック、等、であり得る。出力データ・ブロックは、DCTユニット720に与えられた入力データ・ブロックの推定値であり得て、そしてソース信号を再生するために使用されることができる。
【0088】
図8は、エンコーディング・システム800のブロック図を示し、それは図7のエンコーディング・システム710に対して使用されることができる。取り込みデバイス/メモリ810は、ソース信号を受け取ることができ、ディジタル・フォーマットに変換することができ、そして入力/生データを提供する。取り込みデバイス810は、ビデオ・カメラ、ディジタイザ、又はある別のデバイスであり得る。プロセッサ820は、生データを処理し、そして圧縮されたデータを生成する。プロセッサ820の内部で、生データは、DCTユニット820により変換され、ジグ−ザグ・スキャン・ユニット824によりスキャンされ、コンタイザ826により量子化され、エントロピ・エンコーダ828によりエンコードされ、そしてパケッタイザ830によりパケット化されることができる。DCTユニット822は、上に説明された技術にしたがって生データに2D DCTを実行することができる。ユニット822から830のそれぞれは、ハードウェア、ファームウェア及び/又はソフトウェアを与えられることができる。例えば、DCTユニット822は、専用ハードウェア、算術論理ユニット(ALU)に対する命令の集合、等、で与えられることができる。
【0089】
記憶ユニット840は、プロセッサ820からの圧縮されたデータを記憶することができる。送信機842は、圧縮されたデータを送信することができる。コントローラ/プロセッサ850は、エンコーディング・システム800中の様々なユニットの動作を制御する。メモリ852は、エンコーディング・システム800のためのデータとプログラム・コードを記憶する。1又はそれより多くのバス860は、エンコーディング・システム800内の様々なユニットを相互接続する。
【0090】
図9は、デコーディング・システム900のブロック図を示し、それは図7のデコーディング・システム750に対して使用されることができる。受信機910は、エンコーディング・システムからの圧縮されたデータを受信し、そして記憶ユニット912は、受信した圧縮データを記憶することができる。プロセッサ920は、圧縮されたデータを処理し、そして出力データを生成する。プロセッサ920内では、圧縮されたデータは、デ−パケッタイザによりデ−パケット化され、エントロピー・デコーダ924によりデコードされ、逆コンタイザ926により逆量子化され、逆ジグ−ザグ・スキャン・ユニット928により適正な順番に置かれ、そしてIDCTユニット930によって変換されることができる。IDCTユニット930は、上に説明された技術にしたがって再生された変換係数に2D IDCTを実行することができる。ユニット922から930のそれぞれは、ハードウェア、ファームウェア及び/又はソフトウェアを与えられることができる。例えば、IDCTユニット930は、専用ハードウェア、ALUに対する命令の集合、等、で与えられることができる。
【0091】
ディスプレイ・ユニット940は、プロセッサ920からの再生された画像とビデオを表示する。コントローラ/プロセッサ950は、デコーディング・システム900中の様々なユニットの動作を制御する。メモリ952は、デコーディング・システム900のためのデータとプログラム・コードを記憶する。1又はそれより多くのバス960は、デコーディング・システム900内の様々なユニットを相互接続する。
【0092】
プロセッサ820と920は、1又はそれより多くの用途特定集積回路(ASICs:application specific integrated circuits)、ディジタル信号プロセッサ(DSPs:digital signal processors)、及び/又はある複数の別のタイプのプロセッサを用いてそれぞれ与えられることができる。あるいは、プロセッサ820と920は、1又はそれより多くのランダム・アクセス・メモリ(random access memory)(RAM)、読み出し専用メモリ(read only memory)(ROM)、電気的書き込み可能ROM(EPROM:electrically programmable ROM)、電気的消去可能ROM(EEPROM:electrically erasable PROM)、磁気ディスク、光ディスク、及び/又は本技術において公知の他のタイプの揮発性及び不揮発性メモリでそれぞれ置き換えられることができる。
【0093】
本明細書中で記述された技術は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせで実行されることができる。例えば、データ値と定数値との乗算のための論理演算(例えば、シフト)と算術演算(例えば、加算)は、1又はそれより多くの論理回路、それは同様にユニット、モジュール、等とも呼ばれることができる、を用いて実行されることができる。論理回路は、論理ゲート回路、トランジスタ回路、及び/又は本技術において公知の他の回路を備えるハードウェア論理回路であり得る。論理回路は、同様に、機械読み取り可能なコードを備えるファームウェア及び/又はソフトウェア論理回路であり得る。
【0094】
1つのデザインでは、装置は、少なくとも1つのデータ値の第1グループと、少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行する第1論理回路を具備し、その有理数ダイアディック定数は第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する。該装置は、少なくとも1つのデータ値の第2グループと、少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行する第2論理回路をさらに具備し、その有理数ダイアディック定数は第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する。少なくとも1つのデータ値の該第1グループと第2グループとは、異なるサイズを有する。該第1論理回路と第2論理回路は、別々の論理回路、同じ共通論理回路、又は共用される論理回路であり得る。
【0095】
ファームウェア及び/又はソフトウェア実行に関して、データ値と定数値との乗算は、所望の論理演算と算術演算を実行する機械読み取り可能なコードを用いて実現されることができる。そのコードは、メモリ(例えば、図8のメモリ852又は図9のメモリ952)と配線で接続される又はメモリ中に記憶されることができ、そしてプロセッサ(例えば、プロセッサ850又は950)によって若しくはある別のハードウェア・ユニットによって実行されることができる。
【0096】
本明細書中に記述される技術は、様々なタイプの装置で実施されることができる。例えば、本技術は、異なるタイプのプロセッサ、異なるタイプの集積回路、異なるタイプの電子デバイス、異なるタイプの電子回路、等、で実施されることができる。
【0097】
情報及び信号が、様々な異なる技術及び技法のいずれかを使用して表わされることができることを、当業者は、理解するはずである。例えば、上記の記述の全体を通して参照されることができる、データ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場又は磁力粒子、光場又は光粒子、若しくはこれらの任意の組み合わせによって表わされることができる。
【0098】
開示に関連して記述された様々な例示的な論理ブロック、モジュール、回路及びアルゴリズムのステップが、電子ハードウェア、コンピュータ・ソフトウェア、又は両者の組み合わせとして与えられることができることを、当業者は、さらに認識するはずである。ハードウェアとソフトウェアのこの互換性を明確に説明するために、様々な例示的な複数の構成要素、ブロック、モジュール、回路、及びステップが、それらの機能性の面から一般的に上に説明されてきている。そのような機能性が、ハードウェア又はソフトウェアとして与えられるかどうかは、特定のアプリケーション及びシステム全体に課せられた設計の制約に依存する。知識のある者は、記述された機能性をそれぞれの特定のアプリケーションに対して違ったやり方で実行することができるが、そのような実行の判断は、開示された方法の範囲からの逸脱を生じさせるように解釈されるべきではない。
【0099】
開示に関連して述べられた、様々な例示的な論理ブロック、モジュール、及び回路は、汎用プロセッサ、DSP、ASIC、フィールド・プログラマブル・ゲートアレイ(FPGA:field programmable gate array)又は他のプログラマブル論理デバイス、ディスクリート・ゲート論理回路又はトランジスタ論理回路、ディスクリート・ハードウェア・コンポーネント、又は本明細書中に説明された機能を実行するために設計されたこれらのいずれかの組み合わせで、与えられる又は実行されることができる。汎用プロセッサは、マイクロプロセッサであり得るが、しかし代わりに、プロセッサは、いずれかの従来型のプロセッサ、コントローラ、マイクロコントローラ、又はステート・マシンであり得る。プロセッサは、演算デバイスの組み合わせとして与えられることができる、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサの組み合わせ、DSPコアとともに1又はそれより多くのマイクロプロセッサの組み合わせ、若しくはいずれかの別のそのような構成の組み合わせであり得る。
【0100】
1又はそれより多くの具体例の実施形態では、説明された機能は、ハードウェアで、ソフトウェアで、ファームウェアで、又はそれらの任意の組み合わせで実行されることができる。ソフトウェアで実行される場合、その機能は、コンピュータ読取り可能な媒体上に記憶されることができる、又はその上の1又はそれより多くの命令又はコードを介して送信されることができる。コンピュータ読取り可能な媒体は、1つの場所から別の場所へのコンピュータ・プログラムの搬送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体との両者を含む。記憶媒体は、コンピュータによりアクセスされることが可能である任意の利用可能な媒体であり得る。例として、そして限定するのではなく、そのようなコンピュータ読取り可能な媒体は、RAM、ROM,EEPROM,CD−ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気的な記憶デバイス、若しくは命令の形式で又はデータ構造の形式で所望のプログラミング・コードを搬送するため又は記憶するために使用されることが可能でありしかもコンピュータによりアクセスされることが可能であるいずれかの他の媒体、を具備することが可能である。しかも、任意の通信手段(connection)が、コンピュータ読取り可能な媒体と呼ばれる。例えば、ソフトウェアが、ウェブサイト、サーバ、又は他の遠隔ソースから、例えば、同軸ケーブル、光ファイバ・ケーブル、ツイスティッド・ペア(twisted pair)、ディジタル加入者回線(DSL:digital subscriber line)、又は赤外線、無線、又はマイクロ波のような無線技術を使用して送信される場合に、その同軸ケーブル、光ファイバ・ケーブル、ツイスティッド・ペア、DSL、又は赤外線、無線、又はマイクロ波のような無線技術は、媒体の定義に含まれる。本明細書中で使用されるように、ディスク(disk)とディスク(disc)は、コンパクト・ディスク(CD:compact disc)、レーザー・ディスク(disc)、光ディスク(disc)、ディジタル・バーサタイル・ディスク(DVD:digital versatile disc)、フロッピー(登録商標)ディスク(disk)、及びブルーレイ・ディスク(disc)を含み、ここで、ディスク(disk)は、通常磁気的にデータを再生する、ところがディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせは、同様に、コンピュータ読取り可能な媒体の範囲内に含まれるべきである。
【0101】
本開示のこれまでの説明は、当業者が、本開示を作成すること又は使用することを可能にするために提供される。本開示への様々な変形は、当業者に容易に明白にされるであろう、そして、ここで規定された一般的な原理は、本開示の精神又は範囲から逸脱することなく他の設計に適用されることがでる。それゆえ、本開示は、本明細書中に示された例に制限するように意図されるのではなく、本明細書中に開示された原理及び新奇な機能と整合する最も広い範囲に適用されるものである。
【図面の簡単な説明】
【0102】
【図1】8−点IDCTのフロー・グラフを示す。
【図2】8−点DCTのフロー・グラフを示す。
【図3】共通因数を用いる8−点IDCTのフロー・グラフを示す。
【図4】共通因数を用いる8−点DCTのフロー・グラフを示す。
【図5】異なる有理数ダイアディック定数値を用いる乗算のための演算の数を記憶するルック−アップ・テーブルを示す。
【図6】2次元(2D)IDCTのブロック図を示す。
【図7】画像/ビデオ・エンコーディング及びデコーディング・システムのブロック図を示す。
【図8】エンコーディング・システムのブロック図を示す。
【図9】デコーディング・システムのブロック図を示す。

【特許請求の範囲】
【請求項1】
少なくとも1つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行するための第1論理回路、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数である;及び
少なくとも1つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行するための第2論理回路、ここにおいて、少なくとも1つのデータ値の該第1グループと該第2グループとは異なるサイズを有する、
を具備する装置。
【請求項2】
少なくとも1つのデータ値の第3グループと、第3共通因数によりスケーリングされた少なくとも1つの無理数定数の第3グループを近似する少なくとも1つの有理数ダイアディック定数の第3グループとの乗算を実行するための第3論理回路、
をさらに具備する、請求項1の装置。
【請求項3】
少なくとも1つのデータ値の該第2グループは、少なくとも1つのデータ値の該第1グループのサイズの2倍である、請求項1の装置。
【請求項4】
少なくとも1つのデータ値の該第1グループは、2つのデータ値を備え、そして少なくとも1つのデータ値の該第2グループは、4つのデータ値を備える、請求項1の装置。
【請求項5】
少なくとも1つの無理数定数の該第1グループは、1つの無理数定数を備え、そして少なくとも1つの無理数定数の該第2グループは、3つの無理数定数を備える、請求項1の装置。
【請求項6】
該第1グループ中の該無理数定数の数は、該第1グループ中の該有理数ダイアディック定数の数よりも少ない、請求項1の装置。
【請求項7】
該第1論理回路は、該第1グループ中の第1データ値と、該第1共通因数を近似する第1有理数ダイアディック定数との乗算を実行し、そして該第1グループ中の第2データ値と、該第1共通因数によりスケーリングされた無理数定数を近似する第2有理数ダイアディック定数との乗算を実行する、請求項1の装置。
【請求項8】
少なくとも1つの無理数定数の該第2グループは、第1と第2無理数定数とを備える、ここにおいて、少なくとも1つの無理数定数の該第2グループは、該第2共通因数によりスケーリングされた該第1無理数定数を近似する第1有理数ダイアディック定数と該第2共通因数によりスケーリングされた該第2無理数定数を近似する第2有理数ダイアディック定数とを備える、請求項1の装置。
【請求項9】
該第2論理回路は、該第2グループ中のデータ値と該第1有理数ダイアディック定数との乗算を実行し、そして該データ値と該第2有理数ダイアディック定数との乗算を実行する、請求項8の装置。
【請求項10】
該第2論理回路は、中間値の1つの系列を使用して、該第2グループ中のデータ値と該第1及び第2有理数ダイアディック定数との乗算を実行する、請求項8の装置。
【請求項11】
該第1共通因数は、少なくとも1つのデータ値の該第1グループと少なくとも1つの有理数ダイアディック定数の該第1グループとの乗算のための論理演算と算術演算の数に基づいて選択される、ここにおいて、該第2共通因数は、少なくとも1つのデータ値の該第2グループと少なくとも1つの有理数ダイアディック定数の該第2グループとの乗算のための論理演算と算術演算の数に基づいて選択される、請求項1の装置。
【請求項12】
該論理演算と該算術演算は、シフト演算と加算演算を具備する、請求項11の装置。
【請求項13】
該第1及び第2共通因数は、該乗算からもたらされる結果に対する少なくとも1つの精度測定基準にさらに基づいて選択される、請求項11の装置。
【請求項14】
該第1共通因数は、少なくとも1つのデータ値の該第1グループと、該第1共通因数の異なる可能な値を用いて得られる少なくとも1つの有理数ダイアディック定数の該第1グループに対する異なる可能な値との乗算のための論理演算と算術演算の該数を決定することにより選択される、請求項1の装置。
【請求項15】
該第1グループ中のデータ値と該第1グループ中の有理数ダイアディック定数との乗算のために、該第1論理回路は、該データ値に基づいて中間値の系列を生成し、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有し、そして該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与える、請求項1の装置。
【請求項16】
該第1及び第2論理回路は、線形変換のための該乗算を実行する、請求項1の装置。
【請求項17】
該線形変換の結果を生成するために該第1及び第2論理回路の出力に基づいて少なくとも1つのバタフライ演算を実行するための第3論理回路をさらに具備する、請求項16の装置。
【請求項18】
該第1及び第2論理回路は、離散余弦変換(DCT)のための該乗算を実行する、請求項1の装置。
【請求項19】
該第1及び第2論理回路は、逆離散余弦変換(IDCT)のための該乗算を実行する、請求項1の装置。
【請求項20】
該第1及び第2論理回路は、8−点離散余弦変換(DCT)のための又は8−点逆離散余弦変換(IDCT)のための該乗算を実行する、請求項1の装置。
【請求項21】
2つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する2つの有理数ダイアディック定数の第1グループとの乗算を実行するための第1論理回路、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数である;及び
4つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する4つの有理数ダイアディック定数の第2グループとの乗算を実行するための第2論理回路、
を具備する装置。
【請求項22】
少なくとも1つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行すること、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数である;及び
少なくとも1つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行すること、ここにおいて、少なくとも1つのデータ値の該第1グループと該第2グループとは異なるサイズを有する、
を具備する方法。
【請求項23】
少なくとも1つのデータ値の第3グループと、第3共通因数によりスケーリングされた少なくとも1つの無理数定数の第3グループを近似する少なくとも1つの有理数ダイアディック定数の第3グループとの乗算を実行すること、
をさらに具備する、請求項22の方法。
【請求項24】
少なくとも1つのデータ値の該第1グループの乗算を該実行することは、該第1グループ中のデータ値と該第1グループ中の有理数ダイアディック定数との乗算のために、
該データ値に基づいて中間値の系列を生成すること、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有する、そして
該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与えること、を具備する、請求項22の方法。
【請求項25】
少なくとも1つのデータ値の該第2グループの乗算を該実行することは、該第2グループ中のデータ値と、中間値の1つの系列に基づく該第2グループ中の第1及び第2有理数ダイアディック定数との乗算を実行することを具備する、請求項22の方法。
【請求項26】
少なくとも1つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行するための手段、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数である;及び
少なくとも1つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行するための手段、ここにおいて、少なくとも1つのデータ値の該第1グループと該第2グループとは異なるサイズを有する、
を具備する装置。
【請求項27】
少なくとも1つのデータ値の第3グループと、第3共通因数によりスケーリングされた少なくとも1つの無理数定数の第3グループを近似する少なくとも1つの有理数ダイアディック定数の第3グループとの乗算を実行するための手段、
をさらに具備する、請求項26の装置。
【請求項28】
少なくとも1つのデータ値の該第1グループの乗算を該実行するための該手段は、該第1グループ中のデータ値と該第1グループ中の有理数ダイアディック定数との乗算のために、
該データ値に基づいて中間値の系列を生成するための手段、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有する、及び
該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与えるための手段、を具備する該手段である、請求項26の装置。
【請求項29】
少なくとも1つのデータ値の該第2グループの乗算を実行するための該手段は、該第2グループ中のデータ値と、中間値の1つの系列に基づく該第2グループ中の第1及び第2有理数ダイアディック定数との乗算を実行するための手段を具備する、請求項26の装置。
【請求項30】
少なくとも1つのデータ値を受け取るための第1論理回路;及び
該少なくとも1つのデータ値と、共通因数によりスケーリングされた少なくとも1つの無理数定数を近似する少なくとも1つの有理数ダイアディック定数との乗算を実行するための第2論理回路、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数であり、該共通因数は該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算のための論理演算と算術演算の数に基づいて選択される、
を具備する装置。
【請求項31】
該論理演算と該算術演算は、シフト演算と加算演算を具備する、請求項30の装置。
【請求項32】
該共通因数は、該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との該乗算からもたらされる結果に対する少なくとも1つの精度測定基準にさらに基づいて選択される、請求項30の装置。
【請求項33】
データ値と有理数ダイアディック定数との乗算のために、該第2論理回路は、該データ値に基づいて中間値の系列を生成し、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有し、そして該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与える、請求項30の装置。
【請求項34】
論理演算と算術演算の該数は、該乗算の少なくとも1つの出力値を生成するために中間結果を使用して、該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算を実行することにより決定される、請求項30の装置。
【請求項35】
少なくとも1つのデータ値を受け取ること;及び
該少なくとも1つのデータ値と、共通因数によりスケーリングされた少なくとも1つの無理数定数を近似する少なくとも1つの有理数ダイアディック定数との乗算を実行すること、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数であり、該共通因数は該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算のための論理演算と算術演算の数に基づいて選択される、
を具備する方法。
【請求項36】
該論理演算と該算術演算は、シフト演算と加算演算を具備する、請求項35の方法。
【請求項37】
該乗算を実行することは、データ値と有理数ダイアディック定数との乗算のために、
該データ値に基づいて中間値の系列を生成すること、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有する、そして
該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与えること、を具備する、請求項35の方法。
【請求項38】
少なくとも1つのデータ値を受け取るための手段;及び
該少なくとも1つのデータ値と、共通因数によりスケーリングされた少なくとも1つの無理数定数を近似する少なくとも1つの有理数ダイアディック定数との乗算を実行するための手段、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数であり、該共通因数は該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算のための論理演算と算術演算の数に基づいて選択される、
を具備する装置。
【請求項39】
該論理演算と該算術演算は、シフト演算と加算演算を具備する、請求項38の装置。
【請求項40】
乗算を実行するための該手段は、データ値と有理数ダイアディック定数との乗算のために、
該データ値に基づいて中間値の系列を生成するための手段、該系列中の少なくとも1つの別の中間値に基づいて生成される該系列中の少なくとも1つの中間値を有する、そして
該データ値と該有理数ダイアディック定数との該乗算の出力値として該系列中の1つの中間値を与えるための手段、
を具備する該手段である、請求項38の装置。
【請求項41】
コンピュータ読取り可能な媒体を具備するコンピュータ・プログラム製品であって、該コンピュータ読取り可能な媒体は:
少なくとも1つのデータ値を受け取るようにコンピュータを動作させるためのコード;及び
該少なくとも1つのデータ値と、共通因数によりスケーリングされた少なくとも1つの無理数定数を近似する少なくとも1つの有理数ダイアディック定数との乗算を実行するように該コンピュータを動作させるためのコード、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数であり、該共通因数は該少なくとも1つのデータ値と該少なくとも1つの有理数ダイアディック定数との乗算のための論理演算と算術演算の数に基づいて選択される、
を具備するコンピュータ読取り可能な媒体である、コンピュータ・プログラム製品。
【請求項42】
コンピュータ読取り可能な媒体を具備するコンピュータ・プログラム製品であって、該コンピュータ読取り可能な媒体は:
少なくとも1つのデータ値の第1グループと、第1共通因数によりスケーリングされた少なくとも1つの無理数定数の第1グループを近似する少なくとも1つの有理数ダイアディック定数の第1グループとの乗算を実行するようにコンピュータを動作させるためのコード、ここにおいて、各有理数ダイアディック定数はダイアディック分母を有する有理数である;及び
少なくとも1つのデータ値の第2グループと、第2共通因数によりスケーリングされた少なくとも1つの無理数定数の第2グループを近似する少なくとも1つの有理数ダイアディック定数の第2グループとの乗算を実行するように該コンピュータを動作させるためのコード、ここにおいて、少なくとも1つのデータ値の該第1グループと該第2グループとは異なるサイズを有する、
を具備するコンピュータ読取り可能な媒体である、コンピュータ・プログラム製品。
【請求項43】
少なくとも1つのデータ値の第3グループと、第3共通因数によりスケーリングされた少なくとも1つの無理数定数の第3グループを近似する少なくとも1つの有理数ダイアディック定数の第3グループとの乗算を実行するようにコンピュータを動作させるためのコード、
をさらに具備する、請求項22のコンピュータ読取り可能な媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2009−534721(P2009−534721A)
【公表日】平成21年9月24日(2009.9.24)
【国際特許分類】
【出願番号】特願2008−550522(P2008−550522)
【出願日】平成19年1月11日(2007.1.11)
【国際出願番号】PCT/US2007/060405
【国際公開番号】WO2007/082272
【国際公開日】平成19年7月19日(2007.7.19)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】