JP2010505154A - 逆離散コサイン変換計算における誤差低減 - Google Patents

逆離散コサイン変換計算における誤差低減 Download PDF

Info

Publication number
JP2010505154A
JP2010505154A JP2009518495A JP2009518495A JP2010505154A JP 2010505154 A JP2010505154 A JP 2010505154A JP 2009518495 A JP2009518495 A JP 2009518495A JP 2009518495 A JP2009518495 A JP 2009518495A JP 2010505154 A JP2010505154 A JP 2010505154A
Authority
JP
Japan
Prior art keywords
coefficients
matrix
coefficient
module
equal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009518495A
Other languages
English (en)
Other versions
JP5086343B2 (ja
Inventor
ガルダドリ、ハリナス
レズニク、ユリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38624012&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2010505154(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010505154A publication Critical patent/JP2010505154A/ja
Application granted granted Critical
Publication of JP5086343B2 publication Critical patent/JP5086343B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Discrete Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

固定小数点を用いる離散コサイン変換の計算における丸め誤差を低減するための技術について説明する。これらの技術に従って、離散コサイン変換において、縮尺された係数の行列は係数の行列の係数に縮尺因数を乗算することにより、計算される。次に、中点バイアス値および補足バイアス値が縮尺された係数の行列のDC係数に加算される。次に、逆離散コサイン変換が求めた縮尺された係数の行列に適用される。次に、求めた行列中の値が画素成分値の行列を導出するために右シフトされる。ここに説明したように、補足バイアス値をDC係数へ加算することはこの右シフトに起因する丸め誤差を減少させる。その結果、これらの技術を用いて復元されたディジタルメディアファイルの最終版は、ディジタルメディアファイルの原版により良く類似しているかもしれない。
【選択図】 図6

Description

本出願は、2006年6月26日出願の米国仮出願番号60/816,697、2006年8月30日出願の米国仮出願番号60/841,362、2006年9月25日出願の米国仮出願番号60/847,194、2006年10月16日出願の米国仮出願番号60/829,669、2006年12月11日出願の米国仮出願番号60/869,530の利益を主張する。これらの内容は全体としてここに参照として組み込まれる。
本開示はコンピュータグラフィックスおよびマルチメディアに関する。特にグラフィックス、画像、およびビデオ情報の圧縮に関する。
多くの既存の画像およびビデオ符号化標準は、高分解能の画像およびビデオが比較的コンパクトなファイルまたはデータストリームとして蓄積または伝送されることができるように圧縮技術を採用している。そのような符号化標準はJoint Photographic Experts Group(JPEG)、Moving Pictures Experts Group(MPEG)-1、MPEG-2、MPEG-4第2部、H261、H263、および他の画像またはビデオ符号化標準を含む。
これらの多くの標準に従って、ビデオフレームは「空間」符号化を用いて圧縮される。これらのフレームは原フレーム(すなわちi-フレーム)であるかもしれないし、または動き補償を用いる時間符号化処理で生成される残差フレームであるかもしれない。空間符号化において、フレームは等しい大きさの画素ブロックに分割される。例えば、非圧縮フレームは8×8の画素ブロックのセットに分割されるかもしれない。各画像ブロックについて、画素成分は画素成分値の複数の行列に分解される。例えば、各画素ブロックはY画素成分値の行列、U画素成分値の行列、およびV画素成分値の行列に分解されるかもしれない。この実施例において、Y画素成分値は輝度値を示し、UおよびV画素成分値はクロミナンス値を表す。
さらに、空間符号化において、符号化されるフレーム内の画素成分値の各行列に順離散コサイン変換(FDCT)が適用される。理想的な1次元FDCTは
Figure 2010505154
で定義される。ここで、sはN個の原値アレイ、tは変換されたN個の値のアレイであり、係数cは1≦k≦N−1について
Figure 2010505154
で与えられる。
理想的な2次元FDCTは
Figure 2010505154
で定義される。ここで、sはN個の原値のアレイ、tはN個の変換された値のアレイであり、c(i,j)は1次元の場合と同様に定義されたc(k)を用いてc(i , j) = c(i) c(j)で与えられる。
係数の行列は、画素成分値のブロックがFDCTを用いて変換される際に作成される。次に、この係数行列は量子化され、例えばハフマン符号または算術符号を用いて符号化されるかもしれない。ビデオビットストリームは、この処理を非圧縮ビデオフレーム系列内の一連のビデオフレーム内のすべての画素成分値のブロックに実行した結果を組み合わせた結果を表す。
非圧縮ビデオフレームはこの処理の逆を行うことによりビデオビットストリームから導出されるかもしれない。特に、ビットストリーム内の各係数行列が復元され、その復元された値は変換された係数行列を導出するために逆量子化される。次に、画素成分値の行列を導出するために変換された係数の各行列に、逆離散コサイン変換(「IDCT」)が適用される。理想的な1次元IDCTは
Figure 2010505154
により定義される。ここで、sはN個の原値のアレイ、tはN個の変換された値のアレイであり、係数cは1≦k≦N−1について
Figure 2010505154
で与えられる。理想的な2次元IDCTは
Figure 2010505154
により定義される。得られた画素成分値行列は、次に、複数の画素ブロックに再構成され、これらの画素ブロックは復号されたフレームを形成するために再構成される。復号されたフレームがi-フレームである場合、そのフレームは完全に復号されている。しかし、非圧縮フレームが予測または双予測フレームである場合、復号されたフレームは単に復号された残差フレームである。完全なフレームは、復号されたフレームに関係する動きベクトルを用いて再構築されたフレームを構築し、その再構築されたフレームを復号された残差フレームに加えることにより生成される。
理想的な状況の下では、画素成分値のブロックの符号化のためのFDCTを、または復号のためにIDCTを用いることによる情報の損失はない。従って、これらの理想的な状況の下では、ビデオフレームの復号版はビデオフレームの原版と同一である。しかし、FDCTおよびIDCTの計算は実数およびかなり多くの乗算を用いることを伴うため、FDCTまたはIDCTを計算することは計算上困難であるかもしれない。このため、FDCTおよびIDCTで用いられる実数はしばしば精度に限度のある数を用いて近似される。実数値を表すのに精度に限界のある数を用いることが原因となって丸め誤差が生ずる。さらに、量子化および逆量子化が付加的誤差に寄与するかもしれない。
圧縮および復元処理における誤差は原非圧縮フレームと最終的な非圧縮フレームの間に著しい違いをもたらすかもしれない。例えば、最終的な非圧縮フレームにおける色が原非圧縮フレームにおける色と異なるかもしれない。さらに、IDCTの符号器の実施とIDCTの復号器の実施の間の不整合に帰因する誤差が予測フレームのシーケンスの符号化および復号化において累積するかもしれない。これらの累積誤差は一般に「IDCTドリフト」と呼ばれる。
固定小数点を用いる離散コサイン変換の計算における丸め誤差を低減するための技術について説明する。これらの技術に従って、縮尺された係数行列は係数行列の係数に縮尺因数を乗算することにより、計算される。次に、中点バイアス値および補足バイアス値が縮尺された係数行列のDC係数に加算される。次に、逆離散コサイン変換が求めた縮尺された係数行列に適用される。次に、求めた行列中の値が画素成分値行列を導出するために右シフトされる。ここに説明するように、補足バイアス値をDC係数へ加算することはこの右シフトに起因する丸め誤差を減少させる。その結果、これらの技術を用いて復元されたディジタルメディアファイルの最終版はディジタルメディアファイルの原版により良く類似しているかもしれない。
一態様において、1つの方法はソース係数行列の係数へ1つ以上のバイアス値を加算することによりバイアスされた係数行列を生成することを含む。また、本方法は、固定小数点演算を用いてそのバイアスされた係数行列に1次元変換を繰り返し適用することにより、変換された係数行列を生成することを含む。さらに、本方法はその変換された係数行列内の係数を右シフトすることにより出力係数行列を生成することを含む。その出力係数行列内の係数はソース係数行列を理想的な逆離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。また、本方法はメディアプレゼンテーションユニットに出力値の行列に基づいて可聴または可視信号を出力させることを含む。バイアス値を係数に加算することは正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、変換された係数行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、デバイスはソース係数行列の1つの係数に1つ以上のバイアス値を加算することによりバイアスされた係数の行列を生成する係数バイアスモジュールを含む。また、本デバイスは、固定小数点演算を用いてそのバイアスされた係数行列に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する、逆変換モジュールを含む。さらに、本デバイスはその変換された係数行列内の係数を右シフトすることにより出力係数の行列を生成する、右シフトモジュールを含む。その出力係数行列内の係数はソース係数行列を理想的な逆離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。また、本デバイスはメディアプレゼンテーションユニットに出力係数行列に基づいて可聴または可視信号を出力させるプレゼンテーションドライバを含む。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、変換された係数行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、デバイスは、ソース係数行列の1つの係数に1つ以上のバイアス値を付加することにより、バイアスされた係数の行列を生成するための手段を含む。また、本デバイスは、固定小数点演算を用いてバイアスされた係数の行列に1次元変換を繰り返し適用することにより、変換された係数の行列を生成するための手段を含む。さらに、本デバイスは、その変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成するための手段を含む。その出力係数の行列内の係数はソース係数の行列を理想的な逆離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。また、本デバイスはメディアプレゼンテーションユニットに出力値の行列に基づいて可聴または可視信号を出力させるための手段を含む。バイアス値を係数へ加算することは正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、本発明は命令を含む計算機可読媒体に関する。実行時に、本命令は、ソース係数の行列の1つの係数に1つ以上のバイアス値を付加することによりバイアスされた係数の行列をプロセッサに生成させる。本命令は、固定小数点演算を用いてそのバイアスされた係数の行列に1次元変換を繰り返し適用することにより、変換された係数の行列をプロセッサに生成させる。さらに、その変換された係数の行列内の係数を右シフトすることにより出力係数の行列をプロセッサに生成させる。その出力係数の行列内の係数は、ソース係数の行列を理想的な逆離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。また、本命令はメディアプレゼンテーションユニットに、出力値の行列に基づいて可聴または可視信号を出力させる。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、方法は、ソース係数の行列内の各係数を左シフトすることにより、調整された係数の行列を生成することを含む。また、本方法は、固定小数点演算を用いてその調整された係数の行列に1次元変換を繰り返し適用することにより、変換された係数の行列を生成することを含む。さらに、本方法は、その変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成することを含む。さらに、本方法は、その縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成することを含む。また、本方法は、そのバイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成することを含む。ソース係数の行列はメディアデータを表す。その出力係数の行列内の係数は、ソース係数の行列を理想的な順離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、バイアスされた係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、デバイスは、ソース係数の行列内の各係数を左シフトすることにより調整された係数の行列を生成する左シフトモジュールを含む。また、本デバイスは、固定小数点演算を用いてその調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する順変換モジュールを含む。さらに、本デバイスは、その変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成する縮尺モジュールを含む。さらに、本デバイスは、その縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成するバイアスモジュールを含む。また、本デバイスは、そのバイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成する右シフトモジュールを含む。ソース係数の行列はメディアデータを表す。その出力係数の行列内の係数は、ソース係数の行列を理想的な順離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、バイアスされた係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、デバイスは、ソース係数の行列内の各係数を左シフトすることにより調整された係数の行列を生成するための手段を含む。また、本デバイスは、固定小数点演算を用いてその調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成するための手段を含む。さらに、本デバイスは、その変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成するための手段を含む。さらに、本デバイスは、その縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成するための手段を含む。また、本デバイスは、そのバイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成するための手段を含む。ソース係数の行列はメディアデータを表す。その出力係数の行列内の係数は、ソース係数の行列を理想的な順離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、バイアスされた係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
別の態様において、計算機可読媒体は命令を含む。本命令は、ソース係数の行列内の各係数を左シフトすることにより、調整された係数の行列をプログラム可能プロセッサに生成させる。本命令は、固定小数点演算を用いてその調整された係数の行列に1次元変換を繰り返し適用することにより、変換された係数の行列をプロセッサに生成させる。さらに、本命令は、その変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列をプロセッサに生成させる。さらに、本命令は、その縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列をプロセッサに生成させる。また、本命令は、そのバイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列をプロセッサに生成させる。ソース係数の行列はメディアデータを表す。その出力係数の行列内の係数は、ソース係数の行列を理想的な順離散コサイン変換を用いて変換することにより作成されるであろう値の近似値である。バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、バイアスされた係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
いくつかの場合、計算機可読媒体は、製造者に販売されおよび/またはデバイス内で用いられるかもしれない計算機プログラム製品の1部を形成するかもしれない。計算機プログラム製品は計算機可読媒体を含むかもしれない。また、いくつかの場合、パッケージ部材を含むかもしれない。
本発明のメディアファイルを符号化しおよび復号する代表的デバイスを示すブロック図。 本発明の符号化モジュールの代表的詳細を示すブロック図。 本発明の復号モジュールの代表的詳細を示すブロック図。 本発明の符号化モジュールの代表的動作を示すフローチャート。 本発明の復号モジュールの代表的動作を示すフローチャート。 本発明の逆離散コサイン変換(「IDCT」)モジュールの代表的詳細を示すブロック図。 本発明のIDCTモジュールの代表的動作を示すフローチャート。 本発明の順離散コサイン変換(「FDCT」)モジュールの代表的詳細を示すブロック図。 本発明のFDCTモジュールの代表的動作を示すフローチャート。 本発明の第1の代表的1次元変換を示すダイヤグラム。 本発明の第2の代表的1次元変換を示すダイヤグラム。 本発明のIDCTモジュールで用いられる代表的な縮尺された1次元変換を示すダイヤグラム。
以下の添付図面および説明において、1つ以上の例の詳細が記述される。本発明の他の特徴、目的、利点は説明と図面とから、および特許請求の範囲から明らかになるだろう。
図1は、メディアファイルを符号化しおよび復号する代表的デバイスを示すブロック図である。デバイス2はパーソナルコンピュータ、移動無線電話、サーバ、ネットワーク機器、車載計算機、ビデオゲームプラットホーム、携帯用ビデオゲームデバイス、計算機ワークステーション、計算機売店、ディジタルサイネージ、メインフレーム計算機、テレビセットトップボックス、ネットワーク電話、携帯情報端末、ビデオゲームプラットホーム、移動メディアプレーヤ、ホームメディアプレーヤ、ディジタルビデオプロジェクタ、個人用メディアプレーヤ(例えば、iPod)、または別の形式の電子デバイス、を含むかもしれない。
デバイス2はメディアデータを生成するためのメディアソース4を含むかもしれない。メディアソース4は画像データを取得するためにディジタルビデオまたは静止画像カメラを含むかもしれない。メディアソース4はデバイス2に組み込まれるかもしれないし、周辺デバイスとしてデバイス2に付加されるかもしれない。また、メディアソース4はオーディオデータを記録するためにマイクロホンを含むかもしれない。メディアソース4はメディアデータをプロセッサ6に出力するかもしれない。プロセッサ6はディジタル信号プロセッサ(「DSP」)、マイクロプロセッサ、または他の形式の集積回路であるかもしれない。
プロセッサ6がメディアソース4からメディアデータを入力すると、符号化モジュール8はメディアデータを符号化するかもしれない。符号化モジュール8はプロセッサ6で実行されるソフトウェアを含むかもしれない。代替的に、符号化モジュール8はプロセッサ6内にメディアデータを符号化する専用ハードウェアを含むかもしれない。さらに別の代替手段において、符号化モジュール8はメディアデータを符号化するソフトウェアとハードウェアの任意の組み合わせを含むかもしれない。
符号化モジュール8はメディア保管庫10に符号化されたメディアデータを格納するかもしれない。メディア保管庫10はフラッシュメモリー、ランダムアクセスメモリー、ハードディスクドライブ、または他の形式の揮発性もしくは不揮発性のデータ格納ユニットを含むかもしれない。
復号モジュール12はメディア保管庫10から符号化されたメディアデータを検索するかもしれない。復号モジュール12はプロセッサ6により実行されるソフトウェアを含むかもしれない。代替的に、復号モジュール12はプロセッサ6内に符号化されたメディアデータ復号する専用ハードウェアを含むかもしれない。さらに別の代替手段において、復号モジュール12は符号化されたメディアデータを協調して復号するソフトウェアとハードウェアの組み合わせを含むかもしれない。
デバイス2のプレゼンテーションドライバ13はメディアプレゼンテーションユニット14に復号モジュール12で復号されたメディアデータを提示させる。例えば、メディアプレゼンテーションユニット14は画像またはビデオメディアデータを表示する計算機モニタを含むかもしれない。別の例において、メディアプレゼンテーションユニット14はオーディオメディアデータを提示するオーディオ出力デバイス(例えば、スピーカ)を含むかもしれない。メディアプレゼンテーションユニット14はデバイス2に組み込まれるかもしれないし、周辺デバイスとして有線または無線リンクを介してデバイス2に接続されるかもしれない。プレゼンテーションドライバ13はデバイスドライバもしくは他のソフトウェア、ハードウェアもしくはファームウェアユニット、またはメディアプレゼンテーションユニット14にメディアデータを提示させる他のメカニズムを含むかもしれない。
また、デバイス2はネットワークインターフェース16を含むかもしれない。ネットワークインターフェース16は有線または無線リンクを介するデバイス2と計算機ネットワーク間の通信を容易にするかもしれない。例えば、ネットワークインターフェース16はデバイス2と移動電話ネットワーク間の通信を容易にするかもしれない。デバイス2はネットワークインターフェース16を介してメディアファイルを受信するかもしれない。例えば、デバイス2は写真、ビデオクリップ、ストリーミングビデオ(例えば、テレビ、テレビ会議、映画)、オーディオクリップ(例えば、呼び出し音、歌、MP3ファイル)をネットワークインターフェース16を通じて受信するかもしれない。ネットワークインターフェース16がメディアファイルまたはビデオビットストリームを受信すると、ネットワークインターフェース16はそのメディアファイルまたはビデオビットストリームをメディア保管庫10に格納するかもしれない。
ビデオ信号はピクチャのシーケンスとして記述されるかもしれない。これはフレーム(ピクチャ全体)、またはフィールド(例えばフレームの奇数または偶数ラインのいずれかを含むピクチャ)を含む。さらに、各フレームもしくはフィールドは2つ以上のスライス、またはフレームもしくはフィールドの下位部分を含むかもしれない。用語「フレーム」はここに用いられると、単独であっても他の用語との組み合わせであっても、ピクチャ、フレーム、フィールド、またはそれらのスライスを指すかもしれない。
符号化モジュール8が一連のビデオフレームを符号化する場合、符号化モジュール8はビデオフレームのいくつかを選択して「i-フレーム」とすることから始めるかもしれない。例えば、符号化モジュール8は、8番目毎のフレームをi-フレームとして選択するかもしれない。i-フレームは、他のフレームを参照しないフレームである。i-フレームを選択した後に、符号化モジュール8は、i-フレームを符号化するために「空間符号化」を用いる。さらに、符号化モジュール8は、残りのフレームを符号化するために「時間符号化」を用いるかもしれない。
フレームを符号化するための空間符号化を用いるために、符号化モジュール8はフレームデータを複数画素の複数ブロックに分割するかもしれない。例えば、符号化モジュール8はフレームデータを幅8画素、高さ8画素の画素ブロックに分割するかもしれない(すなわち各ブロックは64画素を含む)。次に、符号化モジュール8は各画素ブロック内の画素の画素成分値を別々の画素成分値行列に分離するかもしれない。画素の画素成分値は、その画素の見え方を特徴づける値である。例えば、各画素はY画素成分値、Cr画素成分値、およびCb画素成分値を特定するかもしれない。Y画素成分値は画素の輝度を表し、Cr画素成分値は画素の赤のクロミナンスを表し、Cb画素成分値は画素の青のクロミナンスを表す。本例において、符号化モジュール8が画素ブロックの画素成分値を分離すると、符号化モジュール8はY画素成分値行列、Cr画素成分値行列、およびCb画素成分値行列を得るかもしれない。
画素成分値を複数の画素成分値行列に分離した後に、符号化モジュール8は画素成分値行列の各々に対する変換された係数の行列を生成する。符号化モジュール8は、最初に画素成分値行列内の画素成分値を左シフトすることにより、調整された係数の行列を生成することにより、画素成分値行列に対する変換された係数の行列を生成するかもしれない。次に、符号化モジュール8は、固定小数点演算を用いてその調整された係数行列に1次元変換を繰り返し適用する。これにより係数行列を生成する。いくつかの実施において、次に、符号化モジュール8はその変換された係数行列を1組の縮尺因数に従って縮尺することにより、変換された係数の行列を生成するかもしれない。これらの縮尺因数の各々は整数値である。縮尺因数は、1次元変換内の因数が簡単な有理数を用いて近似されるかもしれないような方法で選択されている。縮尺を用いない実施において、変換を適用することにより生成された係数行列は変換された係数行列である。
変換された係数行列における各係数は、理想的2次元順離散コサイン変換(「FDCT」)を符号化された係数行列に適用することより作成さたであろう値の行列内の対応する値を近似する。理想的な1次元FDCTは
Figure 2010505154
で定義される。ここで、sはN個の原値のアレイ、tはN個の変換された値のアレイであり、係数cは、1≦k≦N−1に対して
Figure 2010505154
で与えられる。理想的な2次元FDCTは、
Figure 2010505154
で定義される、ここで、sはN個の原値のアレイ、tはN個の変換された値のアレイであり、c(i,j)は1次元の場合に定義されたc(k)を用いてc(i , j) = c(i) c(j)で与えられる。
変換された係数行列を導出した後に、符号化モジュール8は、変換された係数行列内の係数を量子化することにより量子化係数の行列を生成する。変換された係数の量子化は、変換された係数行列内の高い周波数の係数に関係する情報量を低下させるかもしれない。量子化係数行列を生成した後に、符号化モジュール8はエントロピー符号化方式を量子化係数行列に適用するかもしれない。例えば、符号化モジュール8はハフマン符号化方式を係数行列内の量子化係数に適用するかもしれない。符号化モジュール8が量子化係数行列の各々にエントロピー符号化方式を適用すると、符号化モジュール8はビデオビットストリームの1部として符号化された行列を出力するかもしれない。
時間符号化を用いてフレームを符号化するために、符号化モジュール8はフレームを複数の「マクロブロック」に分割するかもしれない。用いられる符号化標準に従って、これらのマクロブロックは固定または可変サイズであるかもしれないし、オーバラップまたは非オーバラップしているかもしれない。例えば、各マクロブロックは16×16の画素ブロックであるかもしれない。フレーム内の各マクロブロックに対して、符号化モジュール8は1つ以上の基準フレーム内のソースマクロブロックを特定することを試みるかもしれない。符号化標準に従って、基準フレームは、i-フレーム、予測フレーム、または双予測フレームであるかもしれない。符号化モジュール8が基準フレーム内のソースマクロブロックを特定できる場合、符号化モジュール8はそのマクロブロックについての動きベクトルを記録する。動きベクトルは、特定されたソースマクロブロックに対するそのマクロブロックの水平方向の移動量を示すx値、および特定されたソースマクロブロックに対するそのマクロブロックの垂直方向の移動量を示すy値を含む。符号化モジュール8が基準フレーム内のソースマクロブロックを特定できない場合、符号化モジュール8は、そのマクロブロックについての動きベクトルを記録するようには要求されないかもしれない。次に、符号化モジュール8は「再構築された」フレームを生成する。その再構築されたフレームは、現フレームに対する記録された動きベクトルに従ってマクロブロックを基準フレームから動かした結果となるだろうフレームを含む。再構築されたフレームを生成した後に、符号化モジュール8は、再構築されたフレームの各画素の画素成分値を現フレームの対応する画素の対応する画素成分値から減算し、「残差」フレームを得る。次に、符号化モジュール8は現フレームのマクロブロックに対する動きベクトルを圧縮するためにエントロピー符号化方式を用いるかもしれない。さらに、符号化モジュール8は残差フレームを圧縮するために上述した空間符号化技術を用いる。
復号モジュール12は符号化モジュール8に類似ではあるが逆の処理を実行するかもしれない。例えば、空間復号処理を実行するために、復号モジュール12はエントロピー復号方式を符号化されたビデオビットストリームの量子化係数の符号化された各行列に適用するかもしれない。次に、復号モジュール12は各量子化係数行列の係数を逆量子化し、それにより各量子化係数行列に対する逆量子化された係数の行列を生成するかもしれない。各量子化係数行列に対して、復号モジュール12は量子化係数行列を縮尺することにより、縮尺された係数の行列を生成する。
縮尺された係数行列を生成した後に、復号モジュール12は中点バイアス値および補足バイアス値を行列のDC係数に加算することによりバイアスされた係数の行列を生成する。行列のDC係数は行列内の他の係数の平均値に等しい係数である。DC係数は通常、行列の左上隅の係数である。以下に詳述するように、復号モジュール12が行列の各行および列に逆離散コサイン変換分解を適用して作成した値を右シフトする場合、DC係数へのバイアス値の加算は、丸め誤差を減少させるかもしれない。これらの丸め誤差は、以下の事実、すなわち、これらの右シフトが計算上より高価な除算操作の置き換えであり、さらに固定小数点演算における右シフトが常に除算操作と同じ結果を生むというわけではないという事実に起因しているかもしれない。
復号モジュール12がバイアスされた係数行列を生成した後に、復号モジュール12は、バイアスされた係数行列に対する変換された係数の行列を生成するために固定小数点演算を用いる。復号モジュール12はバイアスされた係数行列に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する。例えば、復号モジュール12はバイアスされた係数行列の各行ベクトルに1次元変換を適用することにより、中間的係数の行列を生成するかもしれない。この例においては、復号モジュール12は、次に中間的係数行列の各列ベクトルに1次元変換を適用することにより、変換された係数の行列を生成するかもしれない。
復号モジュール12は、この1次元変換を一連の「バタフライ構造演算」を用いて適用するかもしれない。一般に、「バタフライ構造演算」は以下の演算のことを言う。すなわち、第1の中間値が第1の入力値に第1の定数を乗算することにより作成され、第2の中間値が第1の入力値に第2の定数を乗算することにより作成され、第3の中間値が第2の入力値に第1の定数を乗算することにより作成され、第4の中間値が第2の入力値に第2の定数を乗算することにより作成され、第1の出力値が第1の中間値と第3の中間値を加算することにより作成され、第2の出力値が第2の中間値と負号をつけた第4の中間値を加算することにより作成される演算である。バタフライ動作において、定数は1を含む任意の有理数または無理数であるかもしれない。例示的バタフライ構造演算は図10、11、および12の例に示す変換において示される。
数を表すために有限な利用可能なビット数を有するシステムにおいて、バタフライ構造演算中に無理定数の乗算を実行することは実用的ではないかもしれない。それ故、復号モジュール12は無理定数を近似する有理分数を値に乗算することにより無理定数による乗算を近似するかもしれない。値に有理分数を効率的に乗算するために、復号モジュール12はその値に有理分数の分子を乗算し、次に得られた値を有理分数の分母のlogだけ右シフトするかもしれない。上述したように、固定小数点演算における右シフト操作が対応する除算操作に等しい結果を常に生み出すというわけではないため、右シフト操作は丸め誤差を生ずる。
以下に詳述するように、復号モジュール12は、丸め誤差を抑圧するためにいくつかの有理分数の負の分子を用いるかもしれない。負の分子を用いることは、値を右シフトする前に中点バイアス値を加えるという必要性を回避するかもしれない。中点バイアス値を加えると言うことが逆離散コサイン変換の適用に不要な複雑さを付加するかもしれない故、このことは有利であるかもしれない。
復号モジュール12が変換された係数行列を生成した場合、復号モジュール12は変換された係数行列内の各係数を、変換を適用することにより加えられたビット数と、逆量子化係数行列の係数を縮尺することにより加えられたビット数との和に等しい桁数だけ右シフトすることにより調整された係数の行列を生成する。次に、復号モジュール12は、その調整された係数行列内の係数をクリッピングすることにより、クリッピングされた係数の行列を生成するかもしれない。調整された係数行列内の係数のクリッピングは、係数が画素成分値のための許容範囲内になるように、調整された係数を変更する。したがって、クリッピングされた係数行列は、画素成分値行列として特性化されるかもしれない。
画素成分値行列を生成した後に、復号モジュール12は、画素成分値行列と、画素ブロックに対する他の画素成分値を格納する複数の行列とを結合することにより画素ブロックを生成するかもしれない。次に、復号モジュール12は、その画素ブロックの画素をビデオフレーム内に結合するかもしれない。
予測フレームを復号するために、復号モジュール12は予測フレームに対する残差画像の量子化係数行列を復号するために上述した空間復号技術を用いるかもしれない。さらに、復号モジュール12は予測フレームの動きベクトルを復号するためにエントロピー復号方式を用いるかもしれない。次に、復号モジュール12は動きベクトルに従って予測フレームの基準フレームのマクロブロックを「動かす」ことにより、再構築されたフレームを生成するかもしれない。再構築されたフレームを生成した後に、復号モジュール12は復号された残差フレームの各画素の画素成分値を、再構築されたフレームの対応する画素の対応する画素成分値に加算する。この加算の結果は再構築された予測フレームである。
この開示で説明する技術はいくつかの利点を提供するかもしれない。例えば、離散コサイン変換および逆離散コサイン変換の計算における丸め誤差の減少は、画像データにおいては目に見える誤差を抑圧し、オーディオデータにおいては聞きとれる誤差を抑圧するかもしれない。さらに、これらの技術が固定小数点計算に適用されるかもしれない故、これらの技術は移動電話、携帯情報端末、個人メディアプレーヤのようなより小型の、複雑さの小さいデバイスに適用されるかもしれない。特に、これらの技術は全内容が参照としてここに組み込まれる米国電気電子技術者学会(IEEE)標準1180により指定された精度要求を満たしながら、仮数部分にごく限られたビット数(例えば3ビット)を有する固定小数点数を用いて適用されるかもしれない。さらに、これらの技術は国際標準化機構(ISO)/MECの動画像専門家グループ(MPEG)−1、MPEG−2、MPEG−4第2部のメディアフォーマットに加えて国際電気通信連合標準化部門(ITU−T)勧告H.261、H.263、H.264、T.81(JPEG)を含むフォーマットに適用されるかもしれない。
図2は符号化モジュール8の代表的詳細を示すブロック図である。符号化モジュール8は複数の「モジュール」のセットを含むかもしれない。これらのモジュールは符号化モジュール8のソフトウェア命令のサブセットを含むかもしれない。代替的に、これらのモジュールは専用ハードウェアを含むかもしれない。別の代替手段において、これらのモジュールは、ソフトウェア命令および専用ハードウェアを含むかもしれない。
図2の例に示すように、符号化モジュール8は、符号化モジュール8が1つのビデオフレームをi-フレーム、予測フレーム、または双予測フレームとして処理するどうかを制御するフレーム制御モジュール20を含む。例えば、符号化モジュール8がビデオフレームを入力すると、フレーム制御モジュール20は、そのビデオフレームに関係するビットストリームフラグがそのフレームがi-フレーム、予測フレーム、または双予測フレームのいずれを示すかを判定するかもしれない。フレーム制御モジュール20が、ビットストリームフラグがフレームがi-フレームであることを示すと判定する場合、フレーム制御モジュール20はそのビデオフレームが直ちにそのフレームに対して空間符号化を実行する1組のモジュールで処理されるようにするかもしれない。他方、フレーム制御モジュール20が、フレームが予測フレームまたは双予測フレームであると判定する場合、フレーム制御モジュール20はそのビデオフレームが時間符号化を実行する1組のモジュールで処理されるようにするかもしれない。
符号化モジュール8はビデオフレームに空間符号化を適用するための一連のモジュールを含む。これらのモジュールはブロックスプリッタモジュール22、成分抽出モジュール24、順変換モジュール26、量子化モジュール28、およびエントロピー符号化モジュール30を含む。ブロックスプリッタモジュール22はメディアソース4、ネットワークインターフェース16、または別のソースから符号化されていないビデオフレームを入力するかもしれない。ブロックスプリッタモジュール22が符号化されていないビデオフレームを入力すると、ブロックスプリッタモジュール22は、そのフレームを複数の画素ブロックに分解するかもしれない。ブロックスプリッタモジュール22は成分抽出モジュール24に画素ブロックを出力するかもしれない。
成分抽出モジュール24が画素ブロックを入力すると、成分抽出モジュール24は各画素の画素成分値を異なる色形式に変換するかもしれない。例えば、成分抽出モジュール24は各画素を赤-緑-青(RGB)の色形式からYCrCbの色形式へ変換するかもしれない。ブロック内の画素を異なる色形式に変換した後に、成分抽出モジュール24はブロック内の画素の画素成分値を画素成分値行列に分解するかもしれにない。例えば、成分抽出モジュール24は1つの画素ブロックからY値の行列、Cr値の行列、およびCb値の行列を抽出するかもしれない。Y値は画素の輝度を特定し、Cr値は画素の赤のクロミナンスを特定し、およびCb値は画素の青のクロミナンスを特定する。成分抽出モジュール24が画素成分値行列を抽出し終わると、成分抽出モジュール24は行列の各々を順変換モジュール26に別々に出力するかもしれない。
順変換モジュール26が画素成分値行列を入力すると、順変換モジュール26は変換された係数の行列を生成する。縮尺された係数のこの行列内の各係数は、画素成分値行列を変換する理想的な順離散コサイン変換を用いて作成されるであろう係数を近似する。
順変換モジュール26は1次元変換を画素成分値行列に適用するために固定小数点演算を用いる。固定小数点演算を用いることはいくつかの状況において有利であるかもしれない。例えば、移動電話などの、より小型のデバイスは浮動小数点演算を実行するために必要な浮動小数点ユニットを含まないかもしれない。順変換モジュール26は画素成分値の各々を左シフトすることにより縮尺された係数の行列を生成する処理を開始するかもしれない。例えば、順変換モジュール26は、1次元変換を適用したとき順変換モジュール26が用いる数の固定小数点表現の精度のビット数(すなわち仮数ビット数)と、変換を適用することにより得た変換された係数を縮尺することにより除去された精度のビット数との和だけ、画素成分値の各々を左シフトすることにより、調整された係数の行列を生成するかもしれない。画素成分値の各々を左シフトした後に、順変換モジュール26は調整された係数行列の行ベクトルの各々に変換を実行するかもしれない。調整された係数行列の行ベクトルの各々に離散コサイン変換を実行することにより中間係数の行列が生成される。次に、順変換モジュール26は中間係数行列の列ベクトルの各々に変換を実行するかもしれない。中間係数行列の列ベクトルの各々に変換を実行することにより変換された係数行列が得られる。
変換された係数行列を生成した後に、順変換モジュール26は、変換された係数行列内の異なる部分における変換された係数を異なる縮尺因数で縮尺する。後述するように、復号モジュール12は逆変換の適用において、これらの縮尺因数の逆数を用いるかもしれない。順変換モジュール26が変換された係数を縮尺因数に従って縮尺し終わると、順変換モジュール26は得られた縮尺された係数行列を量子化モジュール28に出力するかもしれない。
量子化モジュール28が順変換モジュール26から係数行列を入力すると、量子化モジュール28は縮尺された係数を量子化するかもしれない。量子化モジュール28は、採用している符号化標準に依存して種々の方法で縮尺された係数を量子化するかもしれない。例えば、MPEG−4第2部の標準に従って、量子化モジュール28はi-フレームに対する縮尺された係数行列内の係数を量子化するために次の量子化行列を用いるかもしれない。
Figure 2010505154
さらに、この例において、量子化モジュール28は予測フレームまたは双予測フレームに対する縮尺された係数行列内の係数を量子化するために次の量子化行列を用いるかもしれない。
Figure 2010505154
量子化モジュール28が量子化された係数行列を生成した後に、エントロピー符号化モジュール30は1つのエントロピー符号化方式を用いて量子化された係数行列を圧縮するかもしれない。エントロピー符号化方式を用いて量子化された係数行列を圧縮するために、エントロピー符号化モジュール30は係数のジグザグパターンをたどることにより量子化された係数を1つのベクトルに構成するかもしれない。言い換えれば、エントロピー符号化モジュール30は量子化された係数の2次元行列内のすべての量子化された係数を、予測できる量子化された係数の1次元ベクトルに配列するかもしれない。次に、エントロピー符号化モジュール30は、ハフマン符号化または算術符号化のようなエントロピー符号化方式を量子化された係数のベクトルに適用するかもしれない。
符号化モジュール8はビデオフレームの時間符号化を実行するための1つ以上のモジュールも含む。図2の例に示すように、符号化モジュール8は動き推定モジュール32、再構築フレーム生成モジュール34、および残差生成モジュール36を含む。動き推定モジュール32は現ビデオフレーム内の各マクロブロックに対する基準画像内のソースマクロブロックを特定することを試みる。動き推定モジュール32は現フレーム内のマクロブロックに対するソースマクロブロックを、そのマクロブロックに類似した画素を含む基準画像内の複数マクロブロックを探索することにより特定することを試みるかもしれない。動き推定モジュール32は現フレームのマクロブロックに対するソースマクロブロックを特定するために異なる符号化標準に従って異なるサイズの領域を探索するかもしれない。例えば、動き推定モジュール32は探索領域の中心に現マクロブロックがある幅32画素、高さ32画素領域内のソースマクロブロックを探索するかもしれない。動き推定モジュール32が現フレーム内のマクロブロックに対するソースマクロブロックを特定すると、動き推定モジュール32は現フレーム内のマクロブロックに対する動きベクトルを計算する。現フレーム内のマクロブロックに対する動きベクトルは特定されたソースマクロブロックと現フレームのマクロブロックの間の水平位置の差を示すx値を指定する。動き推定モジュール32が動きベクトルを計算し終わるかまたは現フレーム内の各マクロブロックに対するソースマクロブロックを特定できなかった場合、動き推定モジュール32は現フレームに対する計算された動きベクトルを再構築フレーム生成モジュール34へ出力するかもしれない。
再構築フレーム生成モジュール34は再構築されたフレームを生成するために動きベクトルおよび基準フレームを用いるかもしれない。再構築フレーム生成モジュール34は現フレーム内の各マクロブロックに対する動きベクトルを基準フレーム内のソースマクロブロックに適用することにより再構築されたフレームを生成するかもしれない。実際には、再構築フレーム生成モジュール34は、基準フレームのマクロブロックが、現フレームの対応する動きベクトルにより示される位置へ「動かされた」フレームを作る。残差フレーム生成モジュール36は再構築されたフレーム内の画素成分値を現フレーム内の対応する画素成分値から減算することにより残差フレームを生成するかもしれない。一般に、残差フレームは再構築されたフレームまたは現フレームのいずれかより少ない情報を含む。残差フレーム生成モジュール36が残差フレームを生成した後に、残差フレーム生成モジュール36は残差フレームの空間符号化を開始するために残差フレームをブロックスプリッタモジュール22へ出力する。さらに、動き推定モジュール32は動きベクトルを圧縮するために現フレームに対する動きベクトルをエントロピー符号化モジュール30へ出力する。残差フレームが空間符号化され、エントロピー符号化モジュール30が動きベクトルを符号化し終わった後に、ストリーム出力モジュール38は、ビデオビットストリームの部分として空間符号化された残差フレームおよび符号化された動きベクトルをフォーマットするかもしれない。
図3は、復号モジュール12の代表的詳細を示すブロック図である。復号モジュール12はエントロピー復号モジュール44、逆量子化モジュール46、逆変換モジュール48、画素再構築モジュール50、フレームバッファ51、ブロック結合器モジュール52、フレーム制御モジュール53、基準フレーム格納モジュール54、再構築フレーム生成モジュール56、および予測フレーム生成モジュール58を含むかもしれない。これらのモジュールのいくつかまたはすべては復号モジュール12のソフトウェア命令のサブセットを含むかもしれない。代替的に、これらのモジュールのいくつかまたはすべては専用ハードウェアまたはファームウェアを含むかもしれない。別の代替手段において、これらのモジュールは、ソフトウェア命令および専用ハードウェアまたはファームウェアを含むかもしれない。
復号モジュール12がビデオフレームを含むビットストリームを入力すると、エントロピー復号モジュール44はエントロピー復号方式をビデオフレーム内の量子化された係数行列に適用するかもしれない。ビットストリームはビットストリームの量子化係数行列にどのエントロピー復号方式を適用するかをエントロピー復号モジュール44に示す値を含むかもしれない。さらに、エントロピー復号モジュール44はビデオフレームの動きベクトルを復号するために同じまたは異なるエントロピー復号方式を適用するかもしれない。
エントロピー復号モジュール44がビデオファイル内の量子化係数行列にエントロピー復号方式を適用した後に、逆量子化モジュール46は量子化された係数行列の各々内の係数を逆量子化するかもしれない。符号化標準に依存して、逆量子化モジュール46は種々の方法で係数を逆量子化するかもしれない。例えば、MPEG−4第2部標準に従って、逆量子化モジュール46は上で2つの異なる方法において、一覧表にした2つの量子化行列を用いるかもしれない。第1には、逆量子化モジュール46は、H.263形式の逆量子化を実行するためにこれらの量子化行列を用いるかもしれない。H.263形式の逆量子化において、逆量子化モジュール46は量子化された値QF[v][u]から、再構築された係数F″[v][u]を以下のように求める。
Figure 2010505154
F″[v][u]: F″[v][u] = Sign(QF[v][u]) × |F″[v][u]|
これはquantiser_scaleとのただ1回の乗算を含む。第2には、逆量子化モジュール46は、MPEG1/2形式の逆量子化を実行するためにこれらの量子化行列を用いるかもしれない。MPEG1/2形式の逆量子化において、逆量子化モジュール46は追加の重みづけ行列W[w][v][u]を用いる。ここでwはどの重みづけ行列が用いられようとしているかを示す。
Figure 2010505154
逆変換モジュール48が逆量子化された係数行列を入力すると、逆変換モジュール48は画素成分行列を生成する。以下で詳細に説明するように、逆変換モジュール48は、逆量子化された係数行列内の各係数を最初に縮尺し、行列のDC係数にバイアス値を加算し、一連の1次元離散コサイン変換を適用し、得られた値を右シフトし、右シフトされた値をクリッピングし、次にクリッピングされた値を出力することにより、画素成分値行列を生成する。
逆変換モジュール48が画素成分値行列を出力した後に、画素再構築モジュール50は画素成分値行列と、ビデオフレーム内の対応する位置に関連する画素成分値行列とを結合することにより、画素の行列を生成するかもしれない。例えば、画素再構築モジュール50は逆変換モジュール48からY画素成分値行列、Cb画素成分値行列、およびCr画素成分値行列を入力するかもしれない。これらの3つの行列の各々は単一の8×8の画素ブロックに対する画素成分を含むかもしれない。画素の各々はY画素成分値、Cb画素成分値、およびCr画素成分値を含むかもしれない。画素の行列を生成した後に、画素再構築モジュール50は画素ブロックをブロック結合器モジュール52へ出力するかもしれない。
ブロック結合器モジュール52が画素ブロックを入力する場合、ブロック結合器モジュール52はブロック結合器モジュール52がビデオフレーム内の画素ブロックのいくつかまたはすべてを入力するまで、画素ブロックをバッファリングするかもしれない。画素の1つ以上のブロックを入力後に、ブロック結合器モジュール52は画素ブロックをビデオフレーム内に結合し、そのビデオフレームをフレームバッファ51へ出力する。ビデオフレームはメディアプレゼンテーションユニット14で表示されるまでフレームバッファ51に格納されるかもしれない。さらに、ブロック結合器モジュール52はビデオフレームをフレーム格納モジュール54へ出力する。フレーム格納モジュール54内のビデオフレームは予測および双予測フレームの再構築のための基準フレームとして用いられるかもしれない。さらに、フレーム格納モジュール54内のビデオフレームは予測および双予測フレームの再構築において用いられる残差フレームであるかもしれない。
予測フレームまたは双予測フレームを再構築するために、復号モジュール12は再構築フレーム生成モジュール56を含む。再構築フレーム生成モジュール56はエントロピー復号モジュール44から復号された動きベクトルを入力する。さらに、再構築フレーム生成モジュール56は現フレームの基準フレームをフレーム格納モジュール54から検索する。次に、再構築フレーム生成モジュール56は複数マクロブロックを基準フレーム内のそれらの位置から動きベクトルで示された位置へ「動かす」。再構築されたフレームはこのようにマクロブロックを動かしたことの結果である。再構築フレーム生成モジュール56が再構築されたフレームを生成した後に、再構築フレーム生成モジュール56は再構築されたフレームを予測フレーム生成モジュール58へ出力する。
予測フレーム生成モジュール58が一時的フレームを入力すると、予測フレーム生成モジュール58は現フレームに対する残差フレームをフレーム格納モジュール54から検索するかもしれない。残差フレームの検索後、予測フレーム生成モジュール58は残差フレームおよび再構築されたフレームの各画素の対応する色成分を加算するかもしれない。再構築されたビデオフレームはこの加算の結果である。次に、予測フレーム生成モジュール58はこの再構築されたフレームをメディアプレゼンテーションユニット14の最終的表示のためにフレームバッファ51へ出力する。
図4は符号化モジュール8の代表的動作を示すフローチャートである。図4に説明される操作は連続した形で説明されるが、この操作はパイプライン方式で実行されるかもしれないことに注意するべきである。
最初に、符号化モジュール8は未符号化ビデオフレームのシーケンスを入力する(60)。例えば、符号化モジュール8は画素のセットの形で未符号化ビデオフレームのシーケンスをメディアソース4から入力するかもしれない。符号化モジュール8が未符号化フレームのシーケンスを入力すると、符号化モジュール8内のフレーム制御モジュール20は未符号化フレームのシーケンス内の現フレームがi-フレームとして、または予測もしくは双予測フレームとして符号化されるべきかを判定するかもしれない(62)。
フレーム制御モジュール20が現フレームがi-フレームとして符号化されるべきであると判定する場合、符号化モジュール8内のブロックスプリッタモジュール22は現フレームを複数画素のブロックに分割するかもしれない(64)。例えば、符号化モジュール8は現フレームを2×2、4×4、または8×8の画素ブロックに分割するかもしれない。
現フレームを複数の画素ブロックに分割した後に、成分抽出モジュール24は、画素ブロックの各々内の画素成分値を分離するかもしれない(66)。その結果、画素の各ブロックに対して画素成分値の3つのブロックがあるかもしれない。すなわち、画素の輝度を表すY値のブロック、画素の青のクロミナンスを表すCb値のブロック、および画素の赤のクロミナンスを表すCr値のブロックである。
次に、符号化モジュール8内の順変換モジュール26は画素成分値行列の各々に対して縮尺された係数の行列を生成するかもしれない。(68)。これらの縮尺された係数行列内の係数は、画素成分値行列のそれぞれに理想的2次元順離散コサイン変換を用いて作成されるであろう値の近似値である。
順変換モジュール26が、画素成分の行列の各々に対する縮尺された係数行列を生成した後に、符号化モジュール8内の量子化モジュール28は縮尺された係数行列の各々内の係数を量子化するかもしれない(70)。量子化モジュール28が各縮尺された係数行列内の係数を量子化すると、エントロピー符号化モジュール30は量子化された係数行列の各々にエントロピー符号化処理を実行するかもしれない(72)。例えば、符号化モジュール8は量子化された係数行列の各々にハフマン符号化方式または算術符号化方式を適用するかもしれない。エントロピー符号化処理はデータをさらに圧縮した。しかし、エントロピー符号化処理は情報の消失を生じない。各量子化された係数行列にエントロピー符号化処理を実行した後に、符号化モジュール8内のストリーム出力モジュール38は、ビデオフレームのシーケンスに対するビットストリームに量子化された係数の符号化された行列を加えるかもしれない(74)。ストリーム出力モジュール38が符号化された行列をビットストリームに加えた後に、フレーム制御モジュール20は現フレームがフレームのシーケンスの最後のビデオフレームであったかどうかを判定するかもしれない(76)。現フレームがフレームのシーケンスの最後のフレームである場合(76の「はい」)、符号化モジュール8はフレームのシーケンスの符号化を完了している(78)。他方、現フレームがフレームのシーケンスの最後のフレームでない場合(76の「いいえ」)、符号化モジュール8はループを戻り、新しい現フレームがi-フレームとして符号化されるべきかを判定するかもしれない(62)。
現フレームがi-フレームとして符号化されるべきでない場合(62の「いいえ」)、符号化モジュール8内の動き推定モジュール32は現フレームを1組のマクロブロックに分割するかもしれない(80)。次に、動き推定モジュール32は現フレーム内のマクロブロックの各々に対する1つ以上の基準フレーム内のソースマクロブロックを特定することを試みるかもしれない(82)。次に、動き推定モジュール32は動き推定モジュール32がソースマクロブロックを特定することができた現フレームにおけるマクロブロックの各々に対する動きベクトルを計算するかもしれない(84)。動き推定モジュール32が動きベクトルを計算した後に、再構築フレーム生成モジュール34はその動きベクトルを用いて基準フレーム内の特定されたマクロブロックを、動きベクトルにより示された位置へ「動かす」ことにより、再構築されたフレームを生成する(86)。次に、残差フレーム生成モジュール36は、再構築されたフレーム内の画素成分値を現フレーム内の対応する画素成分値から減算することにより現フレームに対する残差フレームを生成するかもしれない(88)。残差フレーム生成モジュール36が残差フレームを生成した後に、エントロピー符号化モジュール30は現フレームに対する動きベクトルを符号化するためにエントロピー符号化方式を用いるかもしれない(90)。さらに、ステップ(66)から(74)を残差フレームに適用することにより残差フレームに空間符号化が適用されるかもしれない。
図5は復号モジュール12の代表的動作を示すフローチャートである。図5に説明した操作は連続した形で説明したが、この操作はパイプライン方式で実行されるかもしれないことに注意するべきである。
最初に、復号モジュール12は、符号化されたビデオフレームを入力する(100)。符号化されたビデオフレームを入力した後に、復号モジュール12内のエントロピー復号モジュール44は符号化されたフレーム内のデータブロックにエントロピー復号処理を実行するかもしれない(102)。エントロピー復号モジュール44はフレームを符号化するために用いられたエントロピー符号化処理と同様なエントロピー復号処理を実行するかもしれない。例えば、符号化モジュール8がフレームを符号化するためにハフマン符号化を用いる場合、エントロピー復号モジュール44はフレームを復号するためにハフマン復号を用いる。フレーム内の各データブロックにエントロピー復号処理を適用した結果として、エントロピー復号モジュール44は1組の量子化された係数行列を作成している。
次に、復号モジュール12内の逆量子化モジュール46は量子化された係数行列の各々内の係数を逆量子化するかもしれない(104)。量子化された係数行列内の各係数を逆量子化した後に、復号モジュール12内の逆変換モジュール48は画素成分値行列を生成する(106)。画素成分値行列の1つにおける画素成分値は、量子化された係数行列の1つを理想的2次元逆離散コサイン変換を用いて変換することにより作成されるであろう対応する値の近似値である。
逆変換モジュール48が係数行列の各々に対する画素成分値行列を計算し終わると、復号モジュール12内の画素再構築モジュール50は画素ブロックを作るために画素成分値の適切な複数の行列を結合するかもしれない(108)。例えば、復号モジュール12は、YCrCb画素のブロックを作るためにY値のブロックを関連するCr値のブロックおよび関連するCb値のブロックと結合するかもしれない。画素再構築モジュール50が画素ブロックを作り終わった後に、ブロック結合器モジュール52は画素ブロックをビデオフレームに再結合するかもしれない(110)。
次に、復号モジュール12内のフレーム制御モジュール53は現フレームがi-フレームであるかどうかを判定する(112)。現フレームがi-フレームである場合(112の「はい」)、ブロック結合器モジュール52はそのビデオフレームをフレームバッファ51へ出力するかもしれない(114)。他方、現フレームがi-フレームではない(すなわち、現フレームは予測または双予測フレームである)場合(112の「いいえ」)、エントロピー復号モジュール44は、現フレームの動きベクトルを復号するためにエントロピー復号方式を用いる(116)。次に、再構築フレーム生成モジュール56は、再構築されたフレームを生成するために、復号された動きベクトルおよびフレーム格納モジュール54内の1つ以上の基準フレームを用いる(118)。次に、再構築されたフレームを生成するために、予測フレーム生成モジュール58は再構築されたフレームおよびブロック結合器モジュール52により生成されたフレームを用いるかもしれない(120)。
図6は、逆変換モジュール48の代表的詳細を示すブロック図である。図6の例に示すように、逆変換モジュール48は入力モジュール140を含むかもしれない。入力モジュール140は逆量子化モジュール46から係数行列を入力するかもしれない。例えば、入力モジュール140は係数行列を格納するデバイス2のメモリーモジュール内の位置を示すポインタを入力するかもしれない。代替的に、入力モジュール140は係数行列を格納する内部データ構造を含むかもしれない。
入力モジュール140が逆量子化された係数行列を入力すると、入力モジュール140は逆変換モジュール48内の縮尺モジュール142へ係数行列を出力するかもしれない。縮尺モジュール142は逆量子化された係数行列内の各係数を縮尺することにより縮尺された係数の行列を生成する。縮尺モジュール142は、数の固定小数点表現を表すために逆変換モジュール146で用いられる仮数ビット数だけ各係数を左シフトすることにより、逆量子化された係数行列内の係数を縮尺するかもしれない。仮数ビットは、小数点の左側にあるビット(すなわち、数の小数部分)である。このように縮尺モジュール142は逆量子化された係数行列内の係数の表現を、適切な数の仮数ビットを有する固定小数点表現に効果的に変換する。例えば、逆変換モジュール146が3仮数ビットを含む固定小数点数を用いる場合、縮尺モジュール142は逆量子化された係数行列内の係数の各々を3桁だけ左シフトすることにより縮尺された係数の行列を生成する。
縮尺モジュール142が縮尺された係数行列を生成した後に、係数バイアスモジュール144は中点バイアス値および補足バイアス値を縮尺された係数行列のDC係数に加算することによりバイアスされた係数の行列を生成するかもしれない。上述したように、行列のDC係数は通常、行列の左上隅の係数である。一般に、DC係数は行列内の他の係数の平均値を表す。
補足バイアス値は正の誤差および負の誤差を平均して大きさを等しくさせ、かつ平均して0に関して対称にさせる値である。例えば、補足バイアス値は、DC係数が負でない時0に等しく、DC係数が負の時−1となる符号適応バイアス値であるかもしれない。16ビットプロセッサにおいて符号適応バイアス値をDC係数に加えるために、係数バイアスモジュール144は次式を用いるかもしれない。
DC_coefficient = DC_coefficient + (1 << (P + 2)) + (DC_coefficient >> 15) (1)
(1)式において、(1<<(P+2))の項が中点バイアスを与えるために加えられている。Pは逆ベクトル変換モジュール146により実行される変換で用いられる固定小数点仮数ビットの数(すなわち小数点の右側のビット)を表す定数である。右シフトモジュール148がすべての係数を(P+3)だけ右シフトするかもしれないため、数2がPに加えられている。ここで数「3」は逆離散コサイン変換を実行することにより加えられる精度のビットからきている。この点を詳述すると、数xが1を(P+2)だけ左シフトして生成される場合、および数zがxを(P+3)だけ右シフトして生成される場合、z=1/2である。(別の表現では、2P+2/2P+3=2/2=1/2)。このように、DC係数に(1 << (P + 2))を加えることはDC係数に(1 << (P + 3)) / 2を加えることと等価である。
(1)式において、(DC_coefficient >> 15)の項は16ビットのDC係数を15桁だけ右シフトする。残りの1ビットはDC係数の符号を示す。例えば、DC係数が0b1111 1100 0011 0101であると仮定する。この例において、符号拡張を用いて、DC係数を15桁だけ右にシフトすることにより、0b1111 1111 1111 1111(十進法で−1)の値が得られる。同様に、DC係数が0b0111 1111 1111 1111である場合、DC係数の15桁だけ右にシフトすることにより、0b0000 0000 0000 0000(十進法で0)の値が得られる。
別の例において、補足バイアス値はディザリングバイアス値であるかもしれない。ディザリングバイアス値は−1または0に等しい値である。16ビットのプロセッサのDC係数に符号ディザリングバイアス値を加算するために、IDCTモジュール34は次式を用いるかもしれない。
DC_coefficient = DC_coefficient + (1 << (P + 2)) + dither(-1 | 0)) (2)
(2)式において、PはDC係数の仮数ビット数を示す。(1 << (P + 2))の項は中点バイアスを加える。dither(-1 | 0)の項は、IDCTモジュール34が擬似ランダムベースで−1または0を選択することを示す。
また、係数バイアスモジュール144は中点バイアス値および補足バイアス値を縮尺された係数行列内のAC係数の各々に加えるかもしれない。行列のAC係数は行列内のDC係数以外のすべての係数である。中点バイアス値および縮尺されたバイアス値をAC係数の各々に加算することはさらに丸め誤差を抑圧するかもしれない。
係数バイアスモジュール144が、バイアスされた係数行列を生成した後に、逆ベクトル変換モジュール146は、固定小数点演算を用いてバイアスされた係数行列に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する。例えば、逆ベクトル変換モジュール146は、固定小数点演算を用いてバイアスされた係数行列内の係数の各行ベクトルに1次元変換を適用することにより、中間値の行列を生成するかもしれない。次に、逆ベクトル変換モジュール146は、固定小数点演算を用いて中間値行列内の係数の各列ベクトルに1次元変換を適用することにより、変換された係数行列を計算するかもしれない。代表的な1次元変換を後述の図10および図11示す。
逆ベクトル変換モジュール146が変換された係数行列を生成した後に、右シフトモジュール148は、変換された係数行列内の係数の各々を、変換の適用中および縮尺中に加えられたビット数に等しい桁数だけ右シフトすることにより、調整された係数の行列を生成するかもしれない。例えば、変換を適用することにより追加の3ビットが生じ、係数を縮尺することがさらに3ビットを追加する場合、右シフトモジュール148は係数の各々を6(3+3)桁だけ右シフトするかもしれない。
右シフトモジュール148は係数の各々を2で除算する代わりとしてこの右シフトを実行するかもしれない。ここでbは逆ベクトル変換モジュール146により加えられた追加ビット数と、縮尺中に縮尺モジュール142により係数の仮数部分に加えられたビット数との和に等しい。ソース画像データと結果の画像データの間の差はxn / 2bとxn >> bとの差に帰因して発生する。ここでxは位置nにおける行列内の係数である。これらの差のいくつかは固定小数点演算の有限な精度においては、すべてのxに対して(xn >> b)が(xn / 2b )に等しいとは言えない、という事実に起因する丸め誤差のために発生するかもしれない。例えば、符号化モジュール8は、16ビットの固定小数点数およびx=63(2進法で0000 0000 0011 1111)とb=6を用いるかもしれない。この例において、0000 0000 0011 1111を右へ6桁シフトすると、0000 0000 0000 0000の2進値となる。したがって、63>>6=0。1方、63/2=63/64=0.984375。0と0.984の差はソース画像と結果の画像間に目に見える差を生じるかもしれない。
バイアス値をDC係数に加算することは丸め誤差による差を低減させる。例えば、係数バイアスモジュール144は中点バイアス値cをxに加えるかもしれない。中点バイアス値cは2/2=2(b−1)に等しいかもしれない。例えば、b=6の場合、cは2/2 =64/2=32。この例において、x=63の場合、63+32=95(0b0000 0000 0101 1111)。6桁だけ右シフトされた95=1(2進法で0b0000 0000 0000 0001)。中点バイアス値を加算した後に作成された値1は中点バイアス値を加算しないで生成された値0よりも、正しい値0.984375により近い。
また、中点バイアス値cの加算に加えて、係数バイアスモジュール144は、補足バイアス値をDC係数に加算するかもしれない。例えば、係数バイアスモジュール144は符号適応バイアス値d(x)を加えるかもしれない。符号適応バイアス値d(x)はxが負の時は−1、それ以外では0であるかもしれない。符号適応バイアス値d(x)の加算は、符号適応バイアス値d(x)がない時の値よりもより良い近似の値を生じるかもしれない。例えば、符号適応バイアス値d(x)がないとき、関数(xn + c) >> bは0に関して対称ではない。例えば、x=32、b=6およびc=32の場合、(xn + c) >> b = 1である。しかし、x=−32、b=6およびc=32の場合、(xn + c) >> b = 0である。0に関する対称性の欠如は連続して予測ビデオフレームを計算すると、累進的により大きな誤差を生じるかもしれない。さらに、xn >> bとxn / 2bの間の差はxが0よりも小さいときよりxが0より大きいときの方が大きい。このことも誤差をうむ。
符号適応バイアス値d(x)はこれらの問題を除去するかもしれない。例えば、x=32、b=6、c=32と仮定すると、d(x)=0である。したがって、(xn + c + d(xn)) >> b = 1。次に、x=−32、b=6、c=32と仮定すると、d(x)=−1である。したがって、(xn + c + d(xn)) >> b = -1。この例は、関数(xn + c + d(xn)) >> bが0に関して対称となり、xが0より小さいときよりもxが0より大きいときの方が関数値が大きいという差を生じない。
代替的実施において、係数バイアスモジュール144は、符号適応バイアス値dの加算の代わりにディザリングバイアス値eを加算するかもしれない。係数バイアスモジュール144がディザリングバイアス値eをDC係数に加算すると、係数バイアスモジュール144は、擬似ランダムベースで値0または値−1のいずれかを選択してeの値とするかもしれない。ディザリングバイアス値eの値を選択するために、係数バイアスモジュール144は、以下の命令を含むかもしれない。
#define IB1 1
#define IB2 2
#define IB5 16
#define IB18 131072
#define MASK (IB1+IB2+IB5)
static unsigned long iseed = 0xAAAAAAAA;
int ditherBit( ) {
if (iseed & IB18) {
iseed = ((iseed ^ MASK)<< 1) | IB1;
return 1;
} else {
iseed <<= 1;
return 0;
}
}
多くのビデオ符号化標準はピクチャ群(「GOP」)として知られているものを用いる。GOPはi-フレーム並びにGOP内のそのi-フレームおよび/または他の予測もしくは双予測フレームを参照する1組の予測フレームおよび/または双予測フレームを含む。例えば、1つのメディアファイルは1組の係数行列を用いて符号化されるi-フレームを含むかもしれない。ビデオシーケンスを作成するために、復号モジュール12はこのi-フレームに基づいて予測フレームを作成するかもしれない。i-フレームの復号に起因する誤差は、i-フレームに基づく予測フレームに反映される。さらに、予測フレームの復号に起因する誤差は、次の予測フレームに組み入れられる。フレームの復号に起因する誤差が0に関して対称でない、またはより大きい正もしくは負の大きさを有する方向に向かう場合、これらの誤差は連続する予測フレーム内の画素成分値の値を急速に減少または増加させるかもしれない。例えば、誤差がより大きい正の誤差を有する方向に向かう場合、これらの誤差は連続する予測フレームで累算され、その結果画素成分値は正しい画素成分値より大きくなるかもしれない。結果として、GOP内の連続する予測フレーム中の画素は不適切に色または輝度を変えるかもしれない。これはドリフト誤差として知られている。非常に厳しいドリフト誤差を避けるために、限られた数のフレームしかi-フレームから生成できない。限られた数の仮数ビット(例えば、3仮数ビット)を有する固定小数点数を用いて変換を実行する場合の誤差の大きさは、丸めに起因して、より高い精度を有する数を用いて変換を実行する場合よりもより大きいかもしれない。従って、限られた数の仮数ビットを有する固定小数点数を用いて変換を実行する場合、ドリフト誤差は特に問題となるかもしれない。
擬似ランダムベースでディザリングバイアス値eの値を選択するということは、各予測フレームがより大きい正の大きさを有する誤差、またはより大きい負の大きさを有する誤差を、均等な可能性で有することを意味する。したがって、ピクチャ群内において、正の誤差および負の誤差は大きさが等しく、かつ0に関して対称になる方向に向かう。正の誤差および負の誤差が平均して0に関して対称であり、また正の誤差および負の誤差が平均して大きさが等しい故、それらの誤差は、おそらく後続の予測フレームに伝搬されたり、拡大されたりしない。これはおそらく正の大きさの誤差が別のフレームの負の大きさの誤差を相殺するからであり、逆もまた同様である。したがって、ディザリングバイアス値は誤差を0に関して対称にする方向に向かい、かつ正の誤差と負の誤差を大きさにおいて等しくする方向に向かう故、おそらくGOP全体を通じてより小さい誤差となる。このため、GOP内により多くのピクチャが含まれることが可能となる。GOPにより多くのピクチャが含まれ得る故、ビデオシーケンス全体はより優れた圧縮率を有するかもしれない。同様に、符号適応バイアス値を加算することは各フレーム内において大きさが等しく、0に関して対称になる方向に向かう誤差を生じる。その結果、これらの誤差は後続の予測フレームに伝搬されたり、拡大されたりしない。
右シフトモジュール148が係数を右シフトした後に、クリッピングモジュール150は係数を画素成分値の最大許容範囲に制限するために係数を「クリップ」するかもしれない。例えば、典型的なJPEG画像において、色成分値は−256から255に及ぶかもしれない。係数行列が270に等しい係数を含むことになった場合、クリッピングモジュール150はこの係数を255まで減少させることにより、この係数を最大の許容範囲に制限する。クリッピングモジュール150が、係数のクリッピングを終了した後には、これらの係数は画素成分値を表すかもしれない。クリッピングモジュール150が行列内の係数のクリッピングを終了すると、クリッピングモジュール150はクリッピングされた係数行列を出力モジュール152に出力する。
出力モジュール152が(画素成分値になっている)係数の行列を入力すると、出力モジュール152は画素再構築モジュール50へ画素成分値行列を出力するかもしれない。
図7は、逆変換モジュール48の代表的動作を示すフローチャートである。最初に、入力モジュール140は逆量子化された係数行列を入力する(170)。入力モジュール140が逆量子化された係数行列を入力すると、縮尺モジュール142は逆量子化された係数行列内の各値を縮尺し、それにより縮尺された係数の行列を生成するかもしれない(172)。例えば、縮尺モジュール142は逆量子化された係数行列内の各係数に、縮尺因数の行列内の対応する位置にある値を乗算する操作を実行するかもしれない。
縮尺モジュール142が縮尺された係数行列を生成した後に、係数バイアスモジュール144は、中点バイアス値および補足バイアス値を、縮尺された係数行列のDC係数に加算し、それによりバイアスされた係数の行列を生成するかもしれない(174)。係数バイアスモジュール144が行列のDC係数にバイアス値を加算した後に、逆ベクトル変換モジュール146は行カウンタが最大行カウンタより小さいかどうかを判定するかもしれない(176)。最初に、行カウンタは0に設定されるかもしれない。最大行カウンタは係数行列における行の数と等しい固定の値であるかもしれない。例えば、係数行列が8個の行を含む場合、最大行カウンタは8に等しい。
行カウンタが最大行カウンタより少ない場合(176の「はい」)、逆ベクトル変換モジュール146は、固定小数点演算を用いて、行カウンタにより示される係数行列の行ベクトルに1次元変換を適用するかもしれない(178)。逆ベクトル変換モジュール146が係数行列の行ベクトルに変換を適用すると、逆ベクトル変換モジュール146は係数の行ベクトルにおける原係数を中間係数のベクトルで置き換えるかもしれない。逆ベクトル変換モジュール146が係数行列の行ベクトルに変換を適用した後に、逆ベクトル変換モジュール146は、行カウンタを進めるかもしれない(180)。次に、逆ベクトル変換モジュール146はループを戻り、行カウンタが最大行カウンタより小さいかどうかを再度判定するかもしれない(176)。
行カウンタが最大行カウンタより小さくない(すなわち、大きいまたは等しい)場合(176の「いいえ」)、逆ベクトル変換モジュール146は、列カウンタが最大列カウンタより小さいかどうかを判定するかもしれない(182)。最初に、列カウンタは0に設定されるかもしれない。最大列カウンタは係数行列における列の数と等しい固定の値であるかもしれない。例えば、係数行列が8個の列を含む場合、最大列カウンタは8に等しい。
列カウンタが最大列カウンタより小さい場合(182の「はい」)、逆ベクトル変換モジュール146は、列カウンタにより示される中間係数行列の列ベクトルに1次元変換を適用するかもしれない(184)。逆変換モジュール48が中間係数行列の列ベクトルに変換を適用すると、逆変換モジュール48は列ベクトルにおける中間係数を変換された係数のベクトルで置き換える。
逆ベクトル変換モジュール146が係数行列の列ベクトルに変換を適用した後に、逆ベクトル変換モジュール146は、列カウンタを進めるかもしれない(186)。次に、逆ベクトル変換モジュール146はループを戻り、列カウンタが最大列カウンタより小さいかどうかを再度判定するかもしれない(182)。
列カウンタが最大列カウンタより小さくない(すなわち、大きいまたは等しい)場合(182の「いいえ」)、右シフトモジュール148は行列内の変換された係数の各々を右シフトするかもしれない(188)。右シフトモジュール148が係数を右シフトする場合、右シフトモジュール148は係数をある桁数だけ右にシフトするかもしれない。行列内の第2の中間係数の各々を右シフトした結果は調整された値の行列である。右シフトモジュール148が変換された係数の各々を右シフトした後に、クリピングモジュール150は、調整された係数が画素成分値に対する適切な範囲内にあることを確実にするために調整された係数をクリッピングするかもしれない(190)。例えば、クリッピングモジュール150は調整された係数が−256から255の範囲にあることを確実にするために調整された係数をクリッピングするかもしれない。クリッピングモジュール150が調整された係数のクリッピングを終了すると、出力モジュール152は得られた画素成分値行列を出力するかもしれない(192)。
図8は順変換モジュール26の代表的詳細を示すブロック図である。図8の例に示すように、順変換モジュール26はコンポーネント抽出モジュール24から画素成分値行列を入力する入力モジュール210を含む。入力モジュール210が画素成分値行列を入力すると、入力モジュール210は左シフトモジュール212へ画素成分値行列を出力するかもしれない。左シフトモジュール212は画素成分値行列内のすべての画素成分値を、ベクトル順変換モジュール214が順変換の実行中に用いる値に用いられる仮数ビットの数から順変換の実行により除去された仮数ビットの数を減算した数だけ左シフトするかもしれない。例えば、順変換の実行中に10仮数ビットが値に用いられ、3仮数ビットが順離散コサイン変換を実行することにより取り除かれる場合、左シフトモジュール212は画素成分値を7桁だけ左へシフトするかもしれない。別の例において、順変換の実行中に3仮数ビットが値に用いられ、3仮数ビットが順離散コサイン変換を実行することにより取り除かれる場合、左シフトモジュール212は画素成分値を0桁だけ左へシフトするかもしれない。
左シフトモジュール212が画素成分値をシフトした後に、ベクトル順変換モジュール214は、中間値行列を作成するために画素成分値行列内の各列ベクトルに順変換を適用するかもしれない。次に、ベクトル順変換モジュール214は、変換された係数行列を作成するために中間値行列内の各行ベクトルに順変換を適用するかもしれない。ベクトル順変換モジュール214が順変換をベクトルに適用する場合、ベクトル順変換モジュール214は後述の図12に記載される順変換を適用するかもしれない。後述の図12に記載される変換は図11に記載される変換の逆であることに注意のこと。
ベクトル順変換モジュール214が変換された係数行列を作成した後に、縮尺モジュール216は変換された係数行列内の各変換された係数に縮尺因数を適用するかもしれない。縮尺モジュール216は逆変換モジュール48内で縮尺モジュール142により用いられた縮尺因数の逆数を適用するかもしれない。例えば、1つ以上の値が変換効率を高めるために変換から抽出された場合、これらの値は縮尺因数行列の基底になるかもしれない。変換された係数行列内の係数は係数にこれらの値を乗算することにより補正されるかもしれない。
丸め誤差を減少するために、順変換モジュール26内の係数バイアスモジュール218は、中点バイアス値および補足バイアス値を縮尺された係数行列内の係数に加算するかもしれない。符号適応バイアス値またはディザリングバイアス値を変換された係数行列内の係数に加算することは、逆変換モジュール48内の係数バイアスモジュール144が符号適応バイアス値またはディザリングバイアス値を加算する時と同様な効果を有する。すなわち、バイアス値を係数へ加算することは、正の誤差と負の誤差の大きさを平均して等しくさせ、かつ0に関して平均して対称にさせる。これらの誤差は、縮尺された係数行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、縮尺された係数行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す。
係数バイアスモジュール218がバイアスされた係数行列を生成した後に、順変換モジュール26内の右シフトモジュール220はバイアスされた係数行列内の係数を右シフトすることにより出力係数の行列を生成するかもしれない。右シフトモジュール220はバイアスされた係数行列内の各係数を、バイアスされた係数行列の係数における仮数ビットの数と、変換を実行することにより係数に加えられたビット数との和だけ右シフトするかもしれない。
次式は、係数バイアスモジュール218が符号適応バイアス値を加算した場合の、縮尺モジュール216、係数バイアスモジュール218、および右シフトモジュール220が変換された係数行列に及ぼす効果の要点を示す。
F[v][u] = (F′[v][u] * S[v][u] + (1 << (P + Q) - ((F′[v][u] >= 0) ? 0 : 1) ) >> (P+Q)
ここでv=0..7、u=0..7、S[v][u]は縮尺因数行列内のエントリーであり、Fは縮尺された係数行列であり、F′は変換された係数行列であり、Pは変換された係数行列内の係数における仮数ビットの数を表し、Qは変換を適用することにより変換された係数行列内の係数に加えられたビット数を表す。
次式は、係数バイアスモジュール218がディザリングバイアス値を加算した場合の、縮尺モジュール216、係数バイアスモジュール218、および右シフトモジュール220が変換された係数の行列に及ぼす効果の要点を示す。
F[v][u] = (F′[v][u] * S[v][u] + (1 << 19) - (dither(0 : 1) ) >> 20
ここでv=0..7、u=0..7、S[v][u]は縮尺因数行列内のエントリーであり、Fは縮尺された係数行列であり、F′は変換された係数行列である。
縮尺モジュール216が縮尺された係数行列を生成した後に、出力モジュール222は量子化モジュール28へ係数行列を出力するかもしれない。
図9は順変換モジュール26の代表的動作を示すフローチャートである。最初に、入力モジュール210は画素成分値行列を入力する(230)。入力モジュール140が画素成分値行列を入力すると、左シフトモジュール212は画素成分値行列内の各値を左シフトすることにより調整された係数の行列を生成するかもしれない(232)。例えば、左シフトモジュール212はすべての係数を10桁だけ左へシフトするかもしれない。この例において、左シフトモジュール212がすべての係数を左へ10桁だけシフトするかもしれれないのは、ベクトル順変換モジュール214が数が小数部分に10ビットを用いて符号化される固定小数点演算を用いるかもしれないからである。したがって、係数を10桁だけ左にシフトすることにより、左シフトモジュール212は効果的に画素成分値を10仮数ビットを有する固定小数点数に変換する。
調整された値の行列内の各画素成分値を左シフトした後に、ベクトル順変換モジュール214は、列カウンタが最大列カウンタより小さいかどうかを判定するかもしれない(234)。最初に、列カウンタが0に設定されるかもしれない。最大列カウンタは調整された係数行列における列の数と等しい固定の値であるかもしれない。例えば、調整された係数行列が8個の列を含む場合、最大列カウンタは8に等しい。
列カウンタが最大列カウンタより小さい場合(234の「はい」)、ベクトル順変換モジュール214は列カウンタにより示される列ベクトルに関して1次元順変換を計算するかもしれない(236)。ベクトル順変換モジュール214が調整された係数行列の列ベクトルに関して順変換を計算すると、ベクトル順変換モジュール214は列ベクトルにおける調整された原係数を中間係数で置き換える。ベクトル順変換モジュール214が調整された係数行列の列ベクトルに関して順変換を計算した後に、ベクトル順変換モジュール214は、列カウンタを進めるかもしれない(238)。次に、ベクトル順変換モジュール214はループを戻り、列カウンタが最大列カウンタより小さいかどうかを再度判定するかもしれない(234)。
列カウンタが最大列カウンタより小さくない(すなわち、大きいまたは等しい)場合(234の「いいえ」)、ベクトル順変換モジュール214は、行カウンタが最大行カウンタより小さいかどうかを判定するかもしれない(240)。最初に、行カウンタが0に設定されるかもしれない。最大行カウンタは係数行列における行の数と等しい固定の値であるかもしれない。例えば、係数行列が8個の行を含む場合、最大行カウンタは8に等しい。
行カウンタが最大行カウンタより小さい場合(240の「はい」)、ベクトル順変換モジュール214は行カウンタにより示される行ベクトルに関して1次元離散コサイン変換を計算するかもしれない(242)。ベクトル順変換モジュール214が行列の行ベクトルに関して既に順変換を計算している故、係数行列は、中間係数を含んでいる。ベクトル順変換モジュール214が中間係数の行ベクトルに関して順変換を計算すると、ベクトル順変換モジュール214は列ベクトルにおける中間係数を変換された係数で置き換える。
ベクトル順変換モジュール214が係数行列の行ベクトルに関して離散コサイン変換を計算した後に、ベクトル順変換モジュール214は、行カウンタを進めるかもしれない(244)。次に、ベクトル順変換モジュール214はループを戻り、行カウンタが最大行カウンタより小さいかどうかを再度判定するかもしれない(240)。
行カウンタが最大行カウンタより小さくない(すなわち、大きいまたは等しい)場合(240の「いいえ」)、縮尺モジュール216は変換された係数行列内の変換された係数の各々を縮尺するかもしれない(246)。縮尺モジュール216が縮尺された係数行列を生成した後に、係数バイアスモジュール218は、1つ以上のバイアス値を縮尺された係数行列内の係数に加算することによりバイアスされた係数の行列を生成するかもしれない(248)。例えば、係数バイアスモジュール218は、中点バイアス値および符号適応またはディザリング補足バイアス値を縮尺された係数行列内の各係数に加算するかもしれない。次に、右シフトモジュール220はバイアスされた係数行列内の各係数を右シフトするかもしれない(250)。右シフトモジュール220は、各係数を係数の各々における仮数ビット数と、変換を適用することにより係数に加えられたビット数との和だけ右シフトすることにより、調整された係数の行列を生成するかもしれない。右シフトモジュール220が調整された係数行列を生成した後に、出力モジュール222は得られた調整された係数行列を出力するかもしれない(252)。
図10は第1の代表的1次元変換260を示すダイヤグラムである。図10の例に示すように、変換260は入力値としてX乃至Xを取り込むかもしれない。値X乃至Xは入力係数行列の1つの行または列の係数を表すかもしれない。変換260は値x乃至xを出力するかもしれない。値X乃至Xが入力係数行列の係数の行における値である場合、値x乃至xは中間値の行を表すかもしれない。値X乃至Xが係数の列における値である場合、値x乃至xはシフトされた画素成分値の列を表すかもしれない。図10の例に示すように、円で囲った記号「+」は加算操作を示し、円で囲った記号「×」は乗算操作を示す。文字/数の組み合わせはある値に乗算する値を示す。例えば、線X上で「A1」記号が円で囲った記号「×」の上に位置する。これは、X上の値に値A1を乗算することを示す。
変換260は1組の「バタフライ構造演算」を含む。「バタフライ構造演算」は、第1の中間値を作るために第1の入力値xに第1の因数Cを乗算し、第2の中間値を作るために第2の入力値yに第2の因数Sを乗算し、さらに第1の中間値と第2の中間値を加算することにより第1の出力値uが計算される、ソフトウェアまたはハードウェア構造であるかもしれない。このより複雑な「バタフライ構造演算」において、第3の中間値を作るために第2の入力値yに第1の因数を乗算し、第4の中間値を作るために第1の入力値xに第2の因数Sを乗算し、さらに第3の中間値を第4の中間値から減算することにより第2の出力値vが計算されるかもしれない。次式に「バタフライ構造演算」の数学的結果を要約する。
u = x * C + y * S
v = x * S - y * C
バタフライ構造演算264は変換260で用いられる1つのバタフライ構造演算を示す。バタフライ構造演算は、第1の入力値から第2の入力値へ、および第2の入力値から第1の入力値への値が交差していることから、バタフライ構造演算が2つの羽を有しているように見えるという事実に由来してこの名前を有している。
変換260で用いられるように、第1の因数Cおよび第2の因数Sは、無理数であるかもしれない。例えば、Cは
Figure 2010505154
に等しく、Sは
Figure 2010505154
に等しいかもしれない。逆ベクトル変換モジュール146が16ビットレジスタにおいて固定小数点演算を用いるかもしれない故、およびCおよびSがしばしば無理数の値である故、入力値xおよびyにCおよびSを乗算することは計算上面倒であるかもしれない。このため、逆ベクトル変換モジュール146はCおよびSに有理数の近似値を用いるかもしれない。これらの整数近似は(C′/2)および(S′/2)の形をしているかもしれない。ここでC′およびS′はCおよびSの「整数化」版であり、jおよびkは整数である。例えば、
Figure 2010505154
とする。本例において、2217/212=0.541259766であり
Figure 2010505154
である故、逆ベクトル変換モジュール146は
Figure 2010505154
を近似するために、整数値C′=2217およびj=12を用いるかもしれない。本例において、0.5411961は0.541259766とほぼ等しいことは明らかである。その結果、
u = x * C + y * S、
v = x* S - y * C
の形式の計算は、
u′ = x * (C′ / 2j) + y * (S′ / 2k)、
v′ = x * (S′ / 2k) - y*(C′ / 2j)
の形式の計算で置き換えられるかもしれない。これらの計算をさらに簡単にするために、2および2による除算はjおよびk桁のビットの右シフト操作で置き換えられるかもしれない。これは「>>」記号を用いて
u″ = ((x * C′) >> j) + ((y * S′) >> k)、
v″ = ((x * S′) >> k) - ((y * C′) >> j)
と表される。.
しかし、上でバイアス値をDC係数に加算することに関して検討したように、除算演算をビットの右シフトで置き換えることはu′とu″およびv′とv″間の差につながるかもしれない。これらの計算の項に中点バイアス値を加算することはu′とu″間の差およびv′とv″間の差を減少させるかもしれない。中点バイアス値が加えられると、計算は以下の形を取るかもしれない。
u′″ = ((x * C′ + (1 << (j - 1))) >> j) + ((y * S′ + (1 << (k - 1))) >> k)、
v′″ = ((x * S′ + (1 << (k - 1))) >> k) - ((y * C′ + (1 << (j - 1))) >> j)
中点バイアス値の加算の結果、uとu′″の差およびvとv′″の差よりも小さいuとu″の差およびvとv″の差が得られるかもしれないが、中点バイアス値の加算はバタフライ構造演算に計算量を付加するかもしれない。さらに、16ビットレジスタでの固定小数点演算を用いた場合、中点バイアス値の加算はu′″およびv′″の計算を非実用的にするかもしれない。中点バイアス値の加算がu′″およびv′″の計算を非実用的にするかもしれないのは、中点バイアス値の加算が右シフトの前に起こり、その結果レジスタのオーバフローにつながるかもしれないからである。
v = x * S − y * Cとv″ = ((x * S′) >> k) - ((y * C′) >> j)間の平均的差は約0である。言い換えれば、すべての値xおよびyに対するすべての値(v″−v)の平均値は約0に等しい。さらに、v = x * S − y * Cとv′″ = ((x * S′ + (1 << (k - 1))) >> k) - ((y * C′ + (1 << (j - 1))) >> j)間の平均差も約0である。これはv″とv′″は常にほぼ等しい故である。v″とv′″が常にほぼ等しいのは、jがkに等しいとき中点バイアス値が以下の減算により相殺されるためである。
v′″ = ((x * C′ + m) >> j) - ((y * S′ + m) >> k) ≒
(x * C′ + m) / 2j - ((y * S′ + m) / 2k =
(x * C′) / 2j + (m / 2j) - (y * S′) / 2k - (m / 2k) =
(x * C′) / 2j - (y * S′) / 2k
v″ = ((x * C′) >> j) - ((y * S′) >> k)
ここで、mは中点バイアス値を表す。この例が示すように、(m/2)を(m/2)から減算することは、jがkに等しいときには中点バイアス値mを相殺する。vとv″間の平均的差はほぼ0である故、逆ベクトル変換モジュール146は、v′″の代わりにv″を計算することにより生成される値に正または負のバイアスを系統的に発生させない。また、v″とv′″はほぼ等しい故、逆ベクトル変換モジュール146はv′″の代わりにv″を用いるかもしれない。
u = x * C + y * Sとu′″ = ((x * C′ + (1 << (j - 1))) >> j) + ((y * S′ + (1 << (k - 1))) >> k)間の平均的差も約0である。同時に、u = x * C + y * Sとu″ = ((x * C′) >> j) + ((y * S′) >> k)間の差はほぼ0ではない。むしろ、uとu″間の平均的差は約−1/2である。従って、u″とu′″ほぼ等しいとはならない。u″とu′″がほぼ等しいとはならないのは、jがkに等しい場合でも中点バイアス値が相殺されないためである。
u′″ = ((x * C′ + m) >>j) + ((y * S′ + m) >> k) ≒
((x * C′ + m) / 2j) + ((y * S′ + m) / 2k) =
((x * C′) / 2j) + (m / 2j) + ((y * S′) / 2k) + (m / 2k) =
((x * C′) / 2j) + ((y * S′) / 2k) + (m / 2j) + (m / 2k) ≠
u″ = ((x * C′) >> j) + ((y * S′) >> k)
u″がu′″とほぼ等しくならない故、u″はu′″の代わりに用いられないかもしれない。u′″の代わりにu″を用いようとするとuとの顕著な違いを生じるかもしれない。
中点バイアス値を計算毎に加えることに伴う複雑さおよびオーバフローの問題を回避するために、u′″およびu″の代わりに次式が用いられるかもしれない。
u″″ = ((x * C′) >> j) - ((y * -S′) >> k)
u″″ は、u″″においてS′の負のバージョンが用いられ ((y * -S') >> k)が減算されていること以外、u″に等しい。u″″はu′″のように中点バイアス値を加えない。しかしu′″とは異なり、u″″とu間の差は0を中心とする。u″″とu間の差が0を中心とする故、丸め誤差は後続のバタフライ構造演算の適用を通じて拡大されない。このため、逆ベクトル変換モジュール146はバタフライ構造演算においてuを計算するためにu″″を用いるかもしれない。このため、jがkに等しい場合、変換260を適用するために逆ベクトル変換モジュール146で用いられるバタフライ構造演算は、以下の形式を有するかもしれない。
u″″ = ((x * C′) >> j) - ((y * -S′) >> k)
v′″ = ((x * S′) >> k) - ((y * C′) >> j)
したがって、この形式のバタフライ構造演算で生成される結果と無限精度の演算を用いて同等なバタフライ構造演算で生成されるであろう結果の間の差は、約0を中心とし、1以下の正または負の大きさを有する。
代替的に、jがkに等しい場合、逆ベクトル変換モジュール146は右シフトをバタフライ構造演算の終了前までやらないでおくバタフライ構造演算を用いかもしれない。
u′ = x * (C′ / 2) + y * (S′ / 2k);
((x * C′) / 2k) + ((y * S′) / 2k) =
((x * C′) + (y * S′)) / 2k
u* = ((x * C′) + (y * S′) + (1 << (k - 1))) >> k;
v′ = x * (S′ / 2k) − y * (C′ / 2j) =
((x * S′) / 2k) - ((y * C′) / 2k) =
((x * S′) / 2k) + ((-1)(y * C′) / 2k) =
((x * S′) / 2k) + ((y * -C′) / 2k) =
((x * S′) + (y * -C′)) / 2k
v* = ((x * S′) + (y * -C′) + (1 << (k - 1))) >> k
右シフトをバタフライ構造演算の終了前までやらないでおくことはバタフライ構造演算を実行するために必要なシフト操作の総数を減少させ、精度を向上させるかもしれない。さらに、ほとんどの最近の16ビット単一命令複数データ(「SIMD」)プロセッサおよびディジタル信号プロセッサで利用可能な4ウェイ積和演算命令がuおよびvを効率的に計算するために用いられるかもしれない。
乗算操作は加算、減算およびビットのシフト操作に比べて計算的に高価であるかもしれない。このため、乗算と同じ効果を有する一連の加算、減算およびビットのシフト操作を用いることはより簡易であるかもしれない。例えば、C′=2217と仮定する。この例において、r=x*C′は以下のステップで置き換えられるかもしれない。
x2 = (x << 3) − x;
x3 = x + (x2 << 6);
x4 = x3 - x2;
r = x3 + (x4 << 2)
この例において、x2、x3、およびx4は中間的値である。これを例示するために、x=1の例を考察する。
7 = (1 << 3) - 1;
449 = 1 + (7 << 6);
442 = 449 - 7;
2217 = 449 + (442 << 2);
2217 = (1 * 2217) = (x * 2217,ここでx = 1)
この例において、1*2217=2217であり、x=1の時この連続操作により作成される値は2217である。
次表に、逆ベクトル変換モジュール146が定数A1、A2、B1、B2、C1、C2、D1、およびD2に用いるかもしれない整数値近似の例示的セットをまとめて示す。
Figure 2010505154
表1において「整数値」列の値は212=4096で除したとき「原値」列の値を近似する。例えば、2217/4096=0.541259766と
Figure 2010505154
同様に、5352/4096=1.30664062と
Figure 2010505154
「積を計算するためのアルゴリズム」列内の式は逆ベクトル変換モジュール146が、対応する整数値による乗算操作に代わって用いるかもしれない方法をまとめて示す。
図11は、第2の代表的アルゴリズム270を示すダイヤグラムである。図10におけると同様に、値X、X、X、X、X、X、X、およびXは入力係数を表し、値x、x、x、x、x、x、x、およびxは出力値を表す。円で囲った記号「+」の後の線に関係づけられた値は、その円に向かう矢印に関係づけられた複数の値の加算結果である。円で囲った記号「×」の後の線に関係づけられた値は、その円の横に位置する係数と円を通り抜ける線に関係づけられた値との乗算結果である。矢印の横の記号「−」はその矢印に関係づけられた値の符号反転を表す。例えば、値「10」が「−」記号の前の矢印に関係づけられる場合、値「−10」が「−」記号の後の矢印に関係づけられる。さらに、負にした係数および減算を用いて丸め誤差を減少させるための上述した技術はアルゴリズム270で用いられるかもしれないことに注意すべきである。
変換270において、
Figure 2010505154
の値は有理分数を用いて近似されるかもしれない。例えば、下の表2に記載された整数近似値を用いてα、β、γ、δ、ε、およびζの値が近似されるかもしれない。
Figure 2010505154
表2において、「整数近似」列の値は「原値」列の値の整数化版を表す。例えば、
Figure 2010505154
と8867/16384=0.54119873046875。表2の「積計算用アルゴリズム」列内の式は逆ベクトル変換モジュール146が「整数近似」列内の値による乗算操作に代わって用いるかもしれないアルゴリズムを表す。
図12は、ベクトル順変換モジュール214により用いられるかもしれない代表的変換280を示すフローチャートである。図12において、値X、X、X、X、X、X、X、およびXは出力係数を表し、値x、x、x、x、x、x、x、およびxは入力値を表す。さらに、負にした係数および減算を用いて丸め誤差を減少させるための上述した技術は変換280で用いられるかもしれないことに注意すべきである。
図12の例において、
Figure 2010505154
の値は有理分数を用いて近似されるかもしれない。例えば、表2に記載された整数近似値を用いてα、β、γ、δ、ε、およびζの値が近似されるかもしれない。
ここに説明した技術はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施されるかもしれない。モジュールまたは部品として説明したいかなる特徴も、1つの集積化された論理デバイス内で共に、または個別であるが相互運用可能なデバイスとして別々に実施されるかもしれない。ソフトウェアで実施される場合、本技術は、実行されると上述した方法の1つ以上を実行する命令を含む計算機可読媒体により少なくとも部分的に実現されるかもしれない。計算機可読媒体は計算機プログラム製品の部分を形成するかもしれない。これはパッケージ部材を含むかもしれない。計算機可読媒体は、シンクロナスダイナミックランダムアクセスメモリー(SDRAM)のようなランダムアクセスメモリー(RAM)、読み出し専用メモリー(ROM)、不揮発性ランダムアクセスメモリー(NVRAM)、電気的消去書き込み可能な読み出し専用メモリー(EEPROM)、フラッシュメモリー、磁気または光学的データ格納媒体、等を含むかもしれない。本技術は、付加的または代替的に、命令またはデータ構造の形でコードを搬送または伝達し、かつ計算機によりアクセスされ読み込まれおよび/または実行されうる計算機可読通信媒体により、少なくとも部分的に実現されるかもしれない。
コードは1つ以上のプロセッサ、例えば1つ以上のディジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向IC(ASIC)、プログラマブル論理アレイ(FPGA)、または他の同等な集積化もしくは個別論理回路により実行されるかもれない。従って、用語「プロセッサ」は、ここで用いられると、上記の構造のいずれか、またはここに説明した技術の実施に適した任意の他の構造を指すかもしれない。さらに、いくつかの態様において、ここに説明した機能は、符号化および復号のために構成された専用ソフトウェアモジュールもしくはハードウェアモジュール内に提供されるか、または1体化したビデオ符号器-復号器(コーデック)に組み込まれるかもしれない。本発明の種々の実施例について説明した。これらのおよび他の実施例は特許請求の範囲内にある。

Claims (84)

  1. ソース係数の行列の1つの係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成することと、
    前記バイアスされた係数の行列内の係数に固定小数点演算を用いて1次元変換を繰り返し適用することにより、変換された係数の行列を生成することと、
    前記変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成することであって、
    前記出力係数の行列内の係数が、理想的な逆離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値である、出力係数の行列を生成することと、
    メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させることとを含む方法であって、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す、方法。
  2. 出力係数の行列内の係数が、画素成分値であり、
    方法が、前記画素成分値を含む画素のブロックを構築することをさらに含む、請求項1に記載の方法。
  3. メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させることが、メディアプレゼンテーションユニットに画素のブロックを表示させることを含む、請求項2に記載の方法。
  4. 方法が、
    画素のブロックを他の画素のブロックと結合することにより第1のビデオフレームを生成することと、
    第1のビデオフレームを基準ビデオフレームとして用いる1つ以上の後続ビデオフレームを生成するために時間復号を用いることとをさらに含む請求項2に記載の方法。
  5. 係数が、ソース係数の行列のDC係数である、請求項1に記載の方法。
  6. 方法が、係数に中点バイアス値を加算することをさらに含み、
    前記中点バイアス値が、2P-1に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項1に記載の方法。
  7. 第1の大きさが2Pに等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項1に記載の方法。
  8. バイアスされた係数の行列を生成することが、係数に補足バイアス値を加算することを含み、
    前記補足バイアス値が、係数が負の場合は−1に等しく、係数が負でない場合は0に等しい、請求項1に記載の方法。
  9. 方法が、擬似ランダムベースで−1または0のいずれかに等しい値を選択することをさらに含み、
    バイアスされた係数の行列を生成することが、係数に前記選択された値を加算することを含む、請求項1に記載の方法。
  10. 方法が、
    量子化された係数の行列を逆量子化することにより、逆量子化された係数の行列を生成することと、
    逆量子化された係数の行列内の係数を、変換された係数の行列を生成する間に用いられる固定小数点数の仮数ビット数だけ左シフトすることによりソース係数の行列を生成することとをさらに含む請求項1に記載の方法。
  11. 仮数ビットの数が3であり、
    ソース係数の行列を与えると、出力係数の行列が、米国電気電子技術者学会(IEEE)1180標準の精度要求を満たす、請求項10に記載の方法。
  12. 変換された係数の行列を生成することが、バイアスされた係数の行列に乗算または除算操作を行うことなく変換を繰り返し適用するために固定小数点演算を用いることを含む、請求項1に記載の方法。
  13. 変換された係数の行列を生成する間に用いられる固定小数点数が、16ビットの固定小数点数である、請求項1に記載の方法。
  14. 変換された係数の行列を生成することが、
    固定小数点演算を用いてバイアスされた係数の行列の各行ベクトルに一連のバタフライ構造演算を適用することにより、中間係数の行列を生成することと、
    固定小数点演算を用いて前記中間係数の行列の各列ベクトルに前記一連のバタフライ構造演算を適用することにより、変換された係数の行列を生成することとを含む、請求項1に記載の方法。
  15. バタフライ構造演算のいずれかを実行することが、形式
    u = ((x * C′) + (y * S′) + (1 << (k - 1))) >> k
    v = ((x * S′) + (y * -C′) + (1 << (k - 1))) >> k
    のバタフライ構造演算を実行することを含み、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、
    請求項14に記載の方法。
  16. バタフライ構造演算の1つにより生成された結果と、無限の精度の演算を用いる等価なバタフライ構造演算により生成される結果と間の差が、約0を中心とし、1以下の正または負の大きさを有する、請求項14に記載の方法。
  17. バタフライ構造演算のいずれかを実行することが、形式
    u = ((x * C) >> k) - ( (y * -S) >> k)
    v = ((x * S) >> k) - ( (y * C) >> k)
    のバタフライ構造演算を実行することを含み、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、
    請求項16に記載の方法。
  18. ソース係数の行列の1つの係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成する係数バイアスモジュールと、
    固定小数点演算を用いて前記バイアスされた係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する逆変換モジュールと、
    前記変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成する右シフトモジュールであって、
    前記出力係数の行列内の係数が、理想的な逆離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値である、右シフトモジュールと、
    メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させるプレゼンテーションドライバ、とを含む無線通信デバイスであって、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す、無線通信デバイス。
  19. ソース係数の行列の1つの係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成する係数バイアスモジュールと、
    固定小数点演算を用いて前記バイアスされた係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する逆変換モジュールと、
    前記変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成する右シフトモジュールであって、
    前記出力係数の行列内の係数が、理想的な逆離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値である、右シフトモジュールと、
    メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させるプレゼンテーションドライバ、とを含むデバイスであって、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す、デバイス。
  20. 出力係数の行列内の係数が、画素成分値であり、
    デバイスが、前記画素成分値を含む画素のブロックを構築する画素再構築モジュールをさらに含む、請求項19に記載のデバイス。
  21. プレゼンテーションドライバが、メディアプレゼンテーションユニットに画素のブロックを表示させる、請求項20に記載のデバイス。
  22. デバイスが、
    画素のブロックを他の画素のブロックと結合することにより第1のビデオフレームを生成するブロック結合器モジュールと、
    第1のビデオフレームを基準ビデオフレームとして用いる1つ以上の後続ビデオフレームを生成する予測フレーム生成モジュール、とをさらに含む請求項20に記載のデバイス。
  23. 係数がソース係数の行列のDC係数である、請求項19に記載のデバイス。
  24. 係数バイアスモジュールが、係数に中点バイアス値を加算することによりバイアスされた係数の行列を生成し、
    前記中点バイアス値が、2P−1に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求上19に記載のデバイス。
  25. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項19に記載のデバイス。
  26. 係数バイアスモジュールが、係数が負の場合は−1に等しく、係数が負でない場合は0に等しい補足バイアス値を加算することにより、バイアスされた係数の行列を生成する、請求項19に記載のデバイス。
  27. 係数バイアスモジュールが、擬似ランダムベースで−1または0のいずれかに等しい値を選択し、係数に前記選択された値を補足バイアス値として加算することにより、バイアスされた係数の行列を生成する、請求項19に記載のデバイス。
  28. デバイスが、
    逆量子化された係数の行列を逆量子化することにより、逆量子化された係数の行列を生成する逆量子化モジュールと、
    逆量子化された係数の行列内の係数を、変換された係数の行列を生成する間に用いられる固定小数点数の仮数ビット数だけ左シフトすることによりソース係数の行列を生成する縮尺モジュールとをさらに含む、請求項19に記載のデバイス。
  29. 仮数ビットの数が3であり、
    ソース係数の行列を与えると、出力係数の行列が、米国電気電子技術者学会(IEEE)1180標準の精度要求を満たす、請求項28に記載のデバイス。
  30. 逆変換モジュールが、バイアスされた係数の行列内の係数に1次元変換を繰り返し適用するために固定小数点演算を用いる場合、16ビットの固定小数点数を用いる、請求項19に記載のデバイス。
  31. 逆変換モジュールが、固定小数点演算を用いて縮尺された係数の行列の各行ベクトルに一連のバタフライ構造演算を適用して中間係数の行列を作成し、固定小数点演算を用いて前記中間係数の行列の各列ベクトルに前記一連のバタフライ構造演算を適用して変換された係数の行列を作成する、請求項19に記載の装置。
  32. バタフライ構造演算が、形式
    u = ((x * C′) + (y * S′) + (1 << (k - 1))) >> k
    v = ((x * S′) + (y * -C′) + (1 << (k - 1))) >> k
    の演算であり、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、
    請求項31に記載のデバイス。
  33. バタフライ構造演算の1つにより生成された結果と、無限の精度の演算を用いる等価なバタフライ構造演算により生成される結果と間の差が、約0を中心とし、1以下の正または負の大きさを有する、請求項31に記載のデバイス。
  34. バタフライ構造演算が、形式
    u = ((x * C) >> k) - ((y * -S) >> k)
    v = ((x * S) >> k) - ((y * C) >> k)
    の演算であり、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり
    C、S、およびkが整数である、
    請求項33に記載のデバイス。
  35. ソース係数の行列の1つの係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成するための手段と、
    固定小数点演算を用いて前記バイアスされた係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成するための手段と、
    前記変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成するための手段であって、
    前記出力係数の行列内の係数が、理想的な逆離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値である手段と、
    メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させるための手段、とを含むデバイスであって、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す、デバイス。
  36. 出力係数の行列内の係数が、画素成分値であり、
    デバイスが、前記画素成分値を含む画素のブロックを構築するための手段をさらに含む、
    請求項35に記載のデバイス。
  37. メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させるための手段が、メディアプレゼンテーションユニットに画素のブロックを表示させるための手段を含む、請求項36に記載のデバイス。
  38. 画素のブロックを他の画素のブロックと結合することにより第1のビデオフレームを生成するための手段と、
    第1のビデオフレームを基準ビデオフレームとして用いる1つ以上の後続ビデオフレームを生成するために時間復号を用いるための手段とをさらに含む、請求項36に記載のデバイス。
  39. 係数が、ソース係数の行列のDC係数である、請求項35に記載のデバイス。
  40. バイアスされた係数の行列を生成するための手段が、係数に中点バイアス値を加算するための手段を含み、
    前記中点バイアス値が、2P−1に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項35に記載のデバイス。
  41. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項40に記載のデバイス。
  42. バイアスされた係数の行列を生成するための手段が、係数に補足バイアス値を加算するための手段を含み、
    前記補足バイアス値は係数が負の場合は−1に等しく、係数が負でない場合は0に等しい、請求項35に記載のデバイス。
  43. 擬似ランダムベースで−1または0のいずれかに等しい値を選択することを含み、
    バイアスされた係数の行列を生成するための手段が、係数に前記選択された値を加算するための手段を含む、請求項35に記載のデバイス。
  44. デバイスが、
    量子化された係数の行列を逆量子化することにより、逆量子化された係数の行列を生成するための手段と、
    逆量子化された係数の行列内の係数を、変換された係数の行列を生成する間に用いられる固定小数点数の仮数ビット数だけ左シフトすることによりソース係数の行列を生成するための手段とをさらに含む、請求項35に記載のデバイス。
  45. 仮数ビットの数が3であり、
    ソース係数の行列を与えると、出力係数の行列が、米国電気電子技術者学会(IEEE)1180標準の精度要求を満たす、請求項44に記載のデバイス。
  46. 変換された係数の行列を生成するための手段が、固定小数点演算を用いてバイアスされた係数の行列に乗算または除算操作を行うことなく変換を繰り返し適用するための手段を含む、請求項35に記載のデバイス。
  47. 変換された係数の行列を生成するための手段が、固定小数点演算を用いてバイアスされた係数の行列内の係数に1次元変換を繰り返し適用する場合、16ビットの固定小数点数を用いる、請求項35に記載のデバイス。
  48. 変換された係数の行列を生成するための手段が、
    固定小数点演算を用いてバイアスされた係数の行列の各行ベクトルに一連のバタフライ構造演算を適用することにより、中間係数の行列を生成するための手段と、
    固定小数点演算を用いて前記中間係数の行列の各列ベクトルに前記一連のバタフライ構造演算を適用することにより、変換された係数の行列を生成するための手段とを含む、請求項35に記載の装置。
  49. バタフライ構造演算のいずれかを実行するための手段が、形式
    u = ((x * C′) + (y * S′) + (1 << (k - 1))) >> k
    v = ((x * S′) + (y * -C′) + (1 << (k - 1))) >> k
    のバタフライ構造演算を実行するための手段を含み、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、
    請求項48に記載のデバイス。
  50. バタフライ構造演算の1つにより生成された結果と、無限の精度の演算を用いる等価なバタフライ構造演算により生成される結果と間の差が、約0を中心とし、1以下の正または負の大きさを有する、請求項48に記載のデバイス。
  51. バタフライ構造演算のいずれかを実行するための手段が、形式
    u = ((x * C) >> k) - ((y * -S) >> k)
    v = ((x * S) >> k) - ((y * C) >> k)
    のバタフライ構造演算を実行するための手段を含み、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、
    請求項50に記載のデバイス。
  52. 命令が実行されると、プロセッサに、
    ソース係数の行列の1つの係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成させ、
    固定小数点演算を用いて前記バイアスされた係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成させ、
    前記変換された係数の行列内の係数を右シフトすることにより出力係数の行列を生成させ、
    前記出力係数の行列内の係数が、理想的な逆離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値であり、および
    メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させ、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、変換された係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトした結果と、変換された係数の行列内の係数を精度を考慮せず2を底とし第1の大きさを指数とするべき乗で除算した結果との差を表す、命令を含む計算機可読媒体。
  53. 出力係数の行列内の係数が、画素成分値であり、
    命令が、さらにプロセッサに画素成分値を含む画素のブロックを構築させる、請求項52に記載の計算機可読媒体。
  54. 命令が、メディアプレゼンテーションユニットに画素のブロックを表示させることをプロセッサにさせることにより、メディアプレゼンテーションユニットに出力値の行列に基づき可聴または可視信号を出力させることをプロセッサにさせる、請求項53に記載の計算機可読媒体。
  55. 命令が、さらにプロセッサに
    画素ブロックを他の画素ブロックと結合することにより、第1のビデオフレームを生成させ、
    第1のビデオフレームを基準ビデオフレームとして用いる1つ以上の後続ビデオフレームを生成するために時間復号を用いさせる、請求項53に記載の計算機可読媒体。
  56. 係数がソース係数の行列のDC係数である、請求項52に記載の計算機可読媒体。
  57. 命令がさらにプロセッサに中点バイアス値を係数に加算させ、
    前記中点バイアス値が、2P−1に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項52に記載の計算機可読媒体。
  58. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項52に記載の計算機可読媒体。
  59. 命令がさらにプロセッサにバイアスされた係数の行列を生成させ、プロセッサに補足バイアス値を係数に加算させ、
    前記補足バイアス値が、係数が負の場合は−1に等しく、係数が負でない場合には0に等しい、請求項52に記載の計算機可読媒体。
  60. 命令が、さらにプロセッサに擬似ランダムベースで−1または0のいずれかに等しい値を選択させ、および
    プロセッサにバイアスされた係数の行列を生成させる命令が、プロセッサに前記選択された値を係数に加算させる、請求項52に記載の計算機可読媒体。
  61. 命令が、さらにプロセッサに、
    量子化された係数の行列を逆量子化することにより、逆量子化された係数の行列を生成させ、および
    前記逆量子化された係数の行列内の係数を、変換された係数の行列を生成する間に用いられる固定小数点数の仮数ビット数だけ左シフトすることによりソース係数の行列を生成させる、請求項52に記載の計算機可読媒体。
  62. 仮数ビットの数が3であり、
    ソース係数の行列を与えると、出力係数の行列が、米国電気電子技術者学会(IEEE)1180標準の精度要求を満たす、請求項61に記載の計算機可読媒体。
  63. 命令が、バイアスされた係数の行列内の係数に乗算または除算操作を行うことなく繰り返し変換をプロセッサに適用させることにより、変換された係数の行列をプロセッサに生成させる、請求項52に記載の計算機可読媒体。
  64. 命令が、バイアスされた係数の行列内の係数に1次元変換を繰り返し適用するために固定小数点演算をプロセッサに用いさせる場合、命令が16ビットの固定小数点数をプロセッサに用いさせる、請求項52に記載の計算機可読媒体。
  65. 命令が、プロセッサに、
    固定小数点演算を用いてバイアスされた係数の行列の各行ベクトルに一連のバタフライ構造演算を適用することにより、中間係数の行列を生成させ、および
    固定小数点演算を用いて前記中間係数の行列の各列ベクトルに前記一連のバタフライ構造演算を適用することにより、変換された係数の行列を生成させることにより、
    変換された係数の行列をプロセッサに生成させる、請求項52に記載の計算機可読媒体。
  66. 命令が、プロセッサに、
    u = ((x * C′) + (y * S′) + (1 << (k - 1))) >> k
    v = ((x * S′) + (y * -C′) + (1 << (k - 1))) >> k
    の形式であって、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、形式
    のバタフライ構造演算を実行させることにより、プロセッサに任意のバタフライ構造演算を実行させる、請求項65に記載の計算機可読媒体。
  67. バタフライ構造演算の1つにより生成された結果と、無限の精度の演算を用いる等価なバタフライ構造演算により生成されるであろう結果と間の差が、約0を中心とし、1以下の正または負の大きさを有する、請求項65に記載の計算機可読媒体。
  68. 命令が、プロセッサに、
    u = ((x * C) >> k) - ((y * -S) >> k)
    v = ((x * S) >> k) - ((y * C) >> k)
    の形式であって、
    u、v、x、およびyが固定小数点数であり、
    xおよびyが入力値並びにuおよびvが出力値であり、
    C、S、およびkが整数である、形式のバタフライ構造演算を実行させることにより、プロセッサにバタフライ構造演算のいずれかを実行させる、請求項67に記載の計算機可読媒体。
  69. ソース係数の行列内の各係数を左シフトすることにより、調整された係数の行列を生成することと、
    固定小数点演算を用いて前記調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成することと、
    前記変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成することと、
    前記縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成することと、
    前記バイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成することとを含む方法であって、
    前記ソース係数の行列が、メディアデータを表し、
    前記出力係数の行列内の係数が、理想的な順離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値であり、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトして生じた値と、バイアスされた係数の行列内の係数を精度を考慮せず第1の大きさの2のべき乗で除して生じた値との差を表す、方法。
  70. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項69に記載の方法。
  71. バイアスされた係数の行列を生成することが、補足バイアス値を縮尺された係数の行列内の1つ以上に加算することを含み、
    前記補足バイアス値が、係数が負の場合には−1に等しく、係数が負でない場合には、0に等しい、請求項69に記載の方法。
  72. 方法が、擬似ランダムベースで−1または0のいずれかに等しい値を選択することをさらに含み、
    バイアスされた係数の行列を生成することが、縮尺された係数の行列内の1つ以上の係数に前記選択された値を加算することを含む、請求項69に記載の方法。
  73. ソース係数の行列内の各係数を左シフトすることにより調整された係数の行列を生成する左シフトモジュールと、
    固定小数点演算を用いて前記調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成する順変換モジュールと、
    前記変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成する縮尺モジュールと、
    前記縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成する係数バイアスモジュールと、
    前記バイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成する右シフトモジュールとを含むデバイスであって、
    前記ソース係数の行列が、メディアデータを表し、
    前記出力係数の行列内の係数が、理想的な順離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値であり、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称にさせ、
    これらの誤差が、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトして生じた値と、バイアスされた係数の行列内の係数を精度を考慮せず第1の大きさの2のべき乗で除して生じた値との差を表す、デバイス。
  74. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項73に記載のデバイス。
  75. 係数バイアスモジュールが、縮尺された係数の行列内の1つ以上の係数に補足バイアス値を加算することによりバイアスされた係数の行列を生成し、
    前記補足バイアス値が、係数が負の場合には−1に等しく、係数が負でない場合には、0に等しい、請求項73に記載のデバイス。
  76. 係数バイアスモジュールが、擬似ランダムベースで−1または0のいずれかに等しい値を選択し、前記選択された値を縮尺された係数の行列内の1つ以上の係数に加算する、請求項73に記載のデバイス。
  77. ソース係数の行列内の各係数を左シフトすることにより調整された係数の行列を生成するための手段と、
    固定小数点演算を用いて前記調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成するための手段と、
    前記変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成するための手段と、
    前記縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成するための手段と、
    前記バイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより出力係数の行列を生成するための手段とを含むデバイスであって、
    前記ソース係数の行列が、メディアデータを表し、
    前記出力係数の行列内の係数が、理想的な順離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値であり、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトして生じた値と、バイアスされた係数の行列内の係数を精度を考慮せず第1の大きさの2のべき乗で除して生じた値との差を表す、デバイス。
  78. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項77に記載のデバイス。
  79. バイアスされた係数の行列を生成するための手段が、縮尺された係数の行列内の1つ以上の係数に補足バイアス値を加算することにより、バイアスされた係数の行列を生成し、
    前記補足バイアス値が、係数が負の場合には−1に等しく、係数が負でない場合には、0に等しい、請求項77に記載のデバイス。
  80. バイアスされた係数の行列を生成するための手段が、擬似ランダムベースで−1または0のいずれかに等しい値を選択し、前記選択された値を縮尺された係数の行列内の1つ以上の係数に加算する、請求項77に記載のデバイス。
  81. 命令がプログラマブルプロセッサに
    ソース係数の行列内の各係数を左シフトすることにより、調整された係数の行列を生成させ、
    固定小数点演算を用いて前記調整された係数の行列内の係数に1次元変換を繰り返し適用することにより、変換された係数の行列を生成させ、
    前記変換された係数の行列内の各係数を縮尺することにより、縮尺された係数の行列を生成させ、
    前記縮尺された係数の行列内の1つ以上の係数に1つ以上のバイアス値を加算することにより、バイアスされた係数の行列を生成させ、および
    前記バイアスされた係数の行列内の係数を第1の大きさだけ右シフトすることにより、出力係数の行列を生成させる、命令を含む計算機可読媒体であって、
    前記ソース係数の行列が、メディアデータを表し、
    前記出力係数の行列内の係数が、理想的な順離散コサイン変換を用いてソース係数の行列を変換することにより作成される値の近似値であり、
    係数へのバイアス値の加算が、正の誤差および負の誤差を平均して大きさが等しく、かつ平均して0に関して対称であるようにさせ、
    これらの誤差が、バイアスされた係数の行列内の係数の限られた精度の固定小数点表現を第1の大きさだけ右シフトして生じた値と、バイアスされた係数の行列内の係数を精度を考慮せず第1の大きさの2のべき乗で除して生じた値との差を表す、計算機可読媒体。
  82. 第1の大きさが2に等しく、前記Pが変換に用いられる固定小数点数における仮数ビット数と、変換を適用することにより変換された係数の行列内の係数に加えられたビット数との和に等しい、請求項81に記載の計算機可読媒体。
  83. 命令が、プロセッサに、縮尺された係数の行列内の1つ以上の係数に補足バイアスを加算させることにより、プロセッサにバイアスされた係数の行列を生成させ、
    前記補足バイアス値が、係数が負の場合には−1に等しく、係数が負でない場合には、0に等しい、請求項81に記載の計算機可読媒体。
  84. 命令が、プロセッサに、
    擬似ランダムベースで、−1または0のいずれかに等しい値を選択させ、
    縮尺された係数の行列内の1つ以上の係数へ前記選択された値を加算させる
    ことにより、バイアスされた係数の行列をプロセッサに生成させる、請求項81に記載の計算機可読媒体。
JP2009518495A 2006-06-26 2007-06-25 逆離散コサイン変換計算における誤差低減 Expired - Fee Related JP5086343B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US81669706P 2006-06-26 2006-06-26
US60/816,697 2006-06-26
US84136206P 2006-08-30 2006-08-30
US60/841,362 2006-08-30
US84719406P 2006-09-25 2006-09-25
US60/847,194 2006-09-25
US82966906P 2006-10-16 2006-10-16
US60/829,669 2006-10-16
US86953006P 2006-12-11 2006-12-11
US60/869,530 2006-12-11
PCT/US2007/072039 WO2008002881A2 (en) 2006-06-26 2007-06-25 Reduction of errors during computation of inverse discrete cosine transform

Publications (2)

Publication Number Publication Date
JP2010505154A true JP2010505154A (ja) 2010-02-18
JP5086343B2 JP5086343B2 (ja) 2012-11-28

Family

ID=38624012

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2009518495A Expired - Fee Related JP5086343B2 (ja) 2006-06-26 2007-06-25 逆離散コサイン変換計算における誤差低減
JP2009518500A Expired - Fee Related JP5269782B2 (ja) 2006-06-26 2007-06-26 逆離散コサイン変換の計算中の誤差の低減
JP2013048219A Expired - Fee Related JP5661836B2 (ja) 2006-06-26 2013-03-11 逆離散コサイン変換の計算中の誤差の低減

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2009518500A Expired - Fee Related JP5269782B2 (ja) 2006-06-26 2007-06-26 逆離散コサイン変換の計算中の誤差の低減
JP2013048219A Expired - Fee Related JP5661836B2 (ja) 2006-06-26 2013-03-11 逆離散コサイン変換の計算中の誤差の低減

Country Status (10)

Country Link
US (2) US8606023B2 (ja)
EP (2) EP2035958A2 (ja)
JP (3) JP5086343B2 (ja)
KR (2) KR101013344B1 (ja)
CN (2) CN102007489B (ja)
BR (1) BRPI0712984A2 (ja)
CA (2) CA2653692C (ja)
IN (1) IN2014MN01239A (ja)
TW (2) TWI373255B (ja)
WO (2) WO2008002881A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013534795A (ja) * 2010-07-15 2013-09-05 クゥアルコム・インコーポレイテッド ビデオ符号化における固定小数点変換のための可変局所ビット深度増加
JP2015109585A (ja) * 2013-12-05 2015-06-11 Nttエレクトロニクス株式会社 デジタル符号化装置
JP2016535490A (ja) * 2013-10-28 2016-11-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated 適応インター色成分残差予測
JP2023504726A (ja) * 2019-12-06 2023-02-06 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ モード-グローバル設定によるマトリックスベースのイントラ予測

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8606023B2 (en) * 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US8699810B2 (en) * 2006-06-26 2014-04-15 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8300698B2 (en) * 2006-10-23 2012-10-30 Qualcomm Incorporated Signalling of maximum dynamic range of inverse discrete cosine transform
US8819095B2 (en) 2007-08-28 2014-08-26 Qualcomm Incorporated Fast computation of products by dyadic fractions with sign-symmetric rounding errors
US8731062B2 (en) * 2008-02-05 2014-05-20 Ntt Docomo, Inc. Noise and/or flicker reduction in video sequences using spatial and temporal processing
US9378751B2 (en) * 2008-06-19 2016-06-28 Broadcom Corporation Method and system for digital gain processing in a hardware audio CODEC for audio transmission
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
NO332205B1 (no) * 2008-12-30 2012-07-30 Cisco Systems Int Sarl Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
EP2559248A2 (en) * 2010-04-12 2013-02-20 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
WO2012044076A2 (ko) 2010-09-28 2012-04-05 삼성전자 주식회사 비디오의 부호화 방법 및 장치, 복호화 방법 및 장치
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
US9807395B2 (en) 2011-01-18 2017-10-31 Dolby International Ab Video decoder with reduced dynamic range transform with inverse transform shifting memory
US20120183048A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with multiple clipping
US20120183047A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with inverse transform clipping
US20120183045A1 (en) * 2011-01-18 2012-07-19 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform including clipping
AU2016219700B2 (en) * 2011-01-18 2018-06-28 Dolby International Ab Video decoder with reduced dynamic range transform with inverse transform shifting memory
KR20120098499A (ko) * 2011-02-25 2012-09-05 삼성전자주식회사 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치
US9326001B2 (en) * 2011-03-22 2016-04-26 International Business Machines Corporation Scalable image distribution in virtualized server environments
TWI502970B (zh) * 2011-06-30 2015-10-01 Samsung Electronics Co Ltd 以對固定點轉換之位元深度控制做視訊編碼之方法與裝置以及以對固定點轉換之位元深度控制做視訊解碼之方法與裝置
WO2013086724A1 (en) 2011-12-15 2013-06-20 Mediatek Singapore Pte. Ltd. Method of clippling transformed coefficients before de-quantization
CN103959780B (zh) * 2011-12-15 2017-10-13 寰发股份有限公司 量化电平截取装置及方法
EP2805492B1 (en) * 2012-01-19 2018-11-14 VID SCALE, Inc. System and method of video coding quantization and dynamic range control
US9131210B2 (en) * 2012-03-16 2015-09-08 Texas Instruments Incorporated Low-complexity two-dimensional (2D) separable transform design with transpose buffer management
JP6168452B2 (ja) 2012-05-25 2017-07-26 サン パテント トラスト 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、および動画像符号化復号装置
WO2013175736A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
CA3217710A1 (en) 2012-05-25 2013-11-28 Sun Patent Trust Image encoding and decoding using context adaptive binary arithmetic coding with a bypass mode
BR122023000800B1 (pt) 2012-06-04 2023-09-26 Sun Patent Trust Método e aparelho de codificação de imagem em movimento, e método e aparelho de decodificação de imagem em movimento
KR20130137951A (ko) * 2012-06-08 2013-12-18 한국전자통신연구원 초고해상도 영상 코덱을 위한 역변환 방법
US8806489B2 (en) 2012-07-05 2014-08-12 International Business Machines Corporation Virtual machine image distribution network
US9432696B2 (en) 2014-03-17 2016-08-30 Qualcomm Incorporated Systems and methods for low complexity forward transforms using zeroed-out coefficients
US9516345B2 (en) * 2014-03-17 2016-12-06 Qualcomm Incorporated Systems and methods for low complexity forward transforms using mesh-based calculations
US10057587B2 (en) * 2015-01-31 2018-08-21 Qualcomm Incorporated Coding escape pixels for palette mode coding
KR101644039B1 (ko) * 2015-06-11 2016-07-29 에스케이텔레콤 주식회사 고정소수점 연산 방법 및 고정소수점 연산 장치
JP2020098986A (ja) * 2018-12-17 2020-06-25 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法及びプログラム
EP3849089A1 (en) * 2020-01-09 2021-07-14 Microsoft Technology Licensing, LLC Encoding for data recovery in storage systems

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3120605A (en) * 1959-09-02 1964-02-04 Technion Res & Dev Foundation General purpose transistorized function generator
US3982112A (en) * 1974-12-23 1976-09-21 General Electric Company Recursive numerical processor
ES2119932T3 (es) * 1989-01-27 1998-10-16 Dolby Lab Licensing Corp Formateo de señal codificada para codificador y descodificador de sistema de audio de alta calidad.
US5129015A (en) 1990-04-19 1992-07-07 Ricoh Company Ltd. Apparatus and method for compressing still images without multiplication
DE9016732U1 (de) 1990-12-11 1992-04-09 Robert Bosch Gmbh, 70469 Stuttgart Elektrisches Gerät, insbesondere Schalt- und Steuergerät für Kraftfahrzeuge
US5122875A (en) 1991-02-27 1992-06-16 General Electric Company An HDTV compression system
RU2096955C1 (ru) 1991-03-01 1997-11-27 Е.И.Дюпон Де Немур Энд Компани Вододиспергируемая гранулированная пестицидная композиция, получаемая методом экструзии, и способ ее получения
JPH0530470A (ja) * 1991-07-19 1993-02-05 Sony Corp デイジタルビデオ信号の記録および/または再生方法
US5285402A (en) 1991-11-22 1994-02-08 Intel Corporation Multiplyless discrete cosine transform
US5539836A (en) 1991-12-20 1996-07-23 Alaris Inc. Method and apparatus for the realization of two-dimensional discrete cosine transform for an 8*8 image fragment
TW224553B (en) 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
WO1994023534A1 (en) * 1993-03-31 1994-10-13 Sony Corporation Signal processor
JP2816295B2 (ja) * 1993-05-21 1998-10-27 鐘紡株式会社 離散コサイン変換方法および離散コサイン変換回路
RU2122295C1 (ru) 1994-04-29 1998-11-20 Виктор Павлович Дворкович Способ покадрового сжатия изображений
US6549666B1 (en) 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US5701263A (en) 1995-08-28 1997-12-23 Hyundai Electronics America Inverse discrete cosine transform processor for VLSI implementation
US6026183A (en) 1995-10-27 2000-02-15 Texas Instruments Incorporated Content-based video compression
JP3302870B2 (ja) * 1995-12-11 2002-07-15 三菱電機株式会社 センサのバイアス誤差推定装置
US5825927A (en) 1996-01-16 1998-10-20 Hitachi America, Ltd. Methods and apparatus for encoding video data in a manner that is well suited for decoding by regular or downconverting decoders
US5754456A (en) 1996-03-05 1998-05-19 Intel Corporation Computer system performing an inverse cosine transfer function for use with multimedia information
US6020838A (en) 1996-12-23 2000-02-01 National Instruments Corporation System and method for generating a sigma-delta correction circuit using matrix calculation of linearity error correction coefficients
US6636637B1 (en) 1997-01-31 2003-10-21 Siemens Aktiengesellschaft Method and arrangement for coding and decoding a digitized image
TW376628B (en) 1997-05-06 1999-12-11 Holtek Semiconductor Inc Method of accelerating JPEG quantization calculation in image compression
US6134270A (en) 1997-06-13 2000-10-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
JP3524747B2 (ja) 1998-01-30 2004-05-10 三洋電機株式会社 離散コサイン変換回路
US6587590B1 (en) 1998-02-02 2003-07-01 The Trustees Of The University Of Pennsylvania Method and system for computing 8×8 DCT/IDCT and a VLSI implementation
TW395135B (en) 1998-03-03 2000-06-21 Nat Science Council A high throughput and regular architecture of 2-D 8x8 DCT/IDCT using direct form
US6539058B1 (en) * 1998-04-13 2003-03-25 Hitachi America, Ltd. Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
US6310919B1 (en) 1998-05-07 2001-10-30 Sarnoff Corporation Method and apparatus for adaptively scaling motion vector information in an information stream decoder
US6792149B1 (en) 1998-05-07 2004-09-14 Sarnoff Corporation Method and apparatus for resizing an image frame including field-mode encoding
KR20000013653A (ko) 1998-08-12 2000-03-06 이종하 정/역 최적화 정수형 여현변환장치 및 그 방법
EP0990992A3 (de) 1998-09-28 2002-02-13 Siemens Aktiengesellschaft Diskreter/invers-diskreter Cosinus-Transformationsvorrichtung und Anordnung
GB2347038A (en) 1999-02-18 2000-08-23 Nokia Mobile Phones Ltd A video codec using re-transmission
US6167092A (en) 1999-08-12 2000-12-26 Packetvideo Corporation Method and device for variable complexity decoding of motion-compensated block-based compressed digital video
US6529634B1 (en) 1999-11-08 2003-03-04 Qualcomm, Inc. Contrast sensitive variance based adaptive block size DCT image compression
KR100683380B1 (ko) 2000-02-21 2007-02-15 주식회사 팬택앤큐리텔 영상 압축 부호화를 위한 변환 및 역변환 방법 및 장치
JP2001318910A (ja) 2000-02-29 2001-11-16 Sony Corp 逆離散コサイン変換装置
DE10116204A1 (de) 2000-08-12 2002-02-21 Bosch Gmbh Robert Verfahren zur ganzzahligen Approximation von Transformationskoeffizienten sowie Coder und Decoder
KR100357689B1 (ko) 2000-11-13 2002-10-19 삼성전자 주식회사 일관된 화질을 가지는 실시간 가변 비트율 엠펙 비디오전송 시스템
US6859815B2 (en) 2000-12-19 2005-02-22 Koninklijke Philips Electronics N.V. Approximate inverse discrete cosine transform for scalable computation complexity video and still image decoding
US6799192B1 (en) 2001-01-09 2004-09-28 Apple Computer, Inc. Method and apparatus for inverse discrete cosine transform
US6873655B2 (en) 2001-01-09 2005-03-29 Thomson Licensing A.A. Codec system and method for spatially scalable video data
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
JP2002374531A (ja) 2001-06-15 2002-12-26 Victor Co Of Japan Ltd 復号装置
US7082450B2 (en) 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6909753B2 (en) 2001-12-05 2005-06-21 Koninklijke Philips Electronics, N.V. Combined MPEG-4 FGS and modulation algorithm for wireless video transmission
US7007055B2 (en) 2002-03-12 2006-02-28 Intel Corporation Method of performing NxM Discrete Cosine Transform
US20030215011A1 (en) 2002-05-17 2003-11-20 General Instrument Corporation Method and apparatus for transcoding compressed video bitstreams
US7379956B2 (en) 2002-07-14 2008-05-27 Apple Inc. Encoding and decoding data arrays
KR100376060B1 (en) 2002-10-25 2003-03-17 Humax Co Ltd Method and system for re-setting image size using inverse discrete cosine transform
US7792891B2 (en) 2002-12-11 2010-09-07 Nvidia Corporation Forward discrete cosine transform engine
CN1326397C (zh) * 2003-06-02 2007-07-11 杭州高特信息技术有限公司 一种dct快速变换结构
TWI224931B (en) 2003-07-04 2004-12-01 Mediatek Inc Scalable system for inverse discrete cosine transform and method thereof
TWI257054B (en) 2003-09-03 2006-06-21 Mediatek Inc Rapid and low cost of inverse discrete cosine transform system and method thereof
WO2005032117A2 (en) 2003-09-24 2005-04-07 Texas Instruments Incorporated 8x8 transform and quantization
GB0323038D0 (en) 2003-10-02 2003-11-05 Koninkl Philips Electronics Nv Method and apparatus for improved inverse transform calculation
JP3951036B2 (ja) 2003-11-27 2007-08-01 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的小数点方式、動的小数点演算方法、並びに2次元逆離散コサイン変換方法及びその装置
US20050196055A1 (en) 2004-03-04 2005-09-08 Sheng Zhong Method and system for codifying signals that ensure high fidelity reconstruction
US7730116B2 (en) 2004-12-14 2010-06-01 Stmicroelectronics, Inc. Method and system for fast implementation of an approximation of a discrete cosine transform
US8699810B2 (en) 2006-06-26 2014-04-15 Qualcomm Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
US8606023B2 (en) 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US8300698B2 (en) 2006-10-23 2012-10-30 Qualcomm Incorporated Signalling of maximum dynamic range of inverse discrete cosine transform

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013534795A (ja) * 2010-07-15 2013-09-05 クゥアルコム・インコーポレイテッド ビデオ符号化における固定小数点変換のための可変局所ビット深度増加
JP2016535490A (ja) * 2013-10-28 2016-11-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated 適応インター色成分残差予測
JP2020191659A (ja) * 2013-10-28 2020-11-26 クゥアルコム・インコーポレイテッドQualcomm Incorporated 適応インター色成分残差予測
JP2015109585A (ja) * 2013-12-05 2015-06-11 Nttエレクトロニクス株式会社 デジタル符号化装置
JP2023504726A (ja) * 2019-12-06 2023-02-06 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ モード-グローバル設定によるマトリックスベースのイントラ予測
JP7479471B2 (ja) 2019-12-06 2024-05-08 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ モード-グローバル設定によるマトリックスベースのイントラ予測

Also Published As

Publication number Publication date
IN2014MN01239A (ja) 2015-07-03
BRPI0712984A2 (pt) 2012-04-03
JP5661836B2 (ja) 2015-01-28
KR20090016732A (ko) 2009-02-17
KR101013344B1 (ko) 2011-02-14
WO2008002897A2 (en) 2008-01-03
CA2653693A1 (en) 2008-01-03
CN102016829A (zh) 2011-04-13
US8606023B2 (en) 2013-12-10
CN102007489A (zh) 2011-04-06
EP2035959A2 (en) 2009-03-18
CN102007489B (zh) 2014-04-23
WO2008002897A3 (en) 2011-01-06
KR100982156B1 (ko) 2010-09-14
CA2653692C (en) 2013-07-30
JP2010501911A (ja) 2010-01-21
CA2653693C (en) 2013-07-23
TWI373255B (en) 2012-09-21
EP2035958A2 (en) 2009-03-18
US8385424B2 (en) 2013-02-26
TW200814738A (en) 2008-03-16
TWI382767B (zh) 2013-01-11
CN102016829B (zh) 2015-10-14
WO2008002881A2 (en) 2008-01-03
US20070299897A1 (en) 2007-12-27
US20070297504A1 (en) 2007-12-27
JP2013211011A (ja) 2013-10-10
WO2008002881A3 (en) 2011-01-06
JP5269782B2 (ja) 2013-08-21
EP2035959B1 (en) 2020-06-17
CA2653692A1 (en) 2008-01-03
KR20090027670A (ko) 2009-03-17
JP5086343B2 (ja) 2012-11-28
TW200814792A (en) 2008-03-16

Similar Documents

Publication Publication Date Title
JP5086343B2 (ja) 逆離散コサイン変換計算における誤差低減
KR100963458B1 (ko) 순이산 및 역이산 코사인 변환의 효율적인 고정 소수점 근사
US8756482B2 (en) Efficient encoding/decoding of a sequence of data frames
RU2439682C2 (ru) Уменьшение ошибок во время вычисления обратного дискретного косинусного преобразования
JP5129248B2 (ja) 順方向および逆離散コサイン変換の効率的な固定小数点近似
RU2496139C2 (ru) Эффективные аппроксимации с фиксированной запятой прямого и обратного дискретных косинусных преобразований

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120509

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120516

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120614

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120621

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120711

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120906

R150 Certificate of patent or registration of utility model

Ref document number: 5086343

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees