(57)【要約】【課題】可逆ロスレス（損失のない）離散コサイン変換（ＤＣＴ）ベースの圧縮を提供する。【解決手段】  第１の複数の回転手段３４０、該第１の複数の回転手段の出力の第１の組と接続され、かつ、Ｂの回転手段を含む第２の複数の回転手段を有する４点パラメタライズド変換手段３２０、該第１の複数の回転手段の出力の第２の組と接続され、Ａの回転手段とＣの回転手段を含む補助マトリックス手段３３０を具備し、該第１の複数の回転手段、該４点パラメタライズド変換手段及び該補助マトリックス手段は可逆ブロックベース変換として働くようにする。【選択図】図５
2006094490.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数の回転手段、
該第１の複数の回転手段の出力の第１の組と接続され、かつ、Ｂの回転手段を含む第２の複数の回転手段を有する４点パラメタライズド変換手段、及び
該第１の複数の回転手段の出力の第２の組と接続され、Ａの回転手段とＣの回転手段を含む補助マトリックス手段を具備し、
該第１の複数の回転手段、該４点パラメタライズド変換手段及び該補助マトリックス手段は可逆ブロックベース変換として働くことを特徴とするブロックベース変換の圧縮器。
【請求項２】
入力手段と、変換入力値の変換出力値へのマッピングを有するルックアップテーブルを含む少なくとも１つの変換手段を有する可逆ＤＣＴ手段とを具備し、該マッピングは、丸めが入力を同じ変換値にマップするところの第１のグループからの入力を、丸めに利用されなかったであろう変換出力へマップすることを特徴とする圧縮器。
【請求項３】
丸めオフセットのためのルックアップテーブルを作成するための方法であって、
初期丸めを用いて入力値の変換出力値への第１のマッピングを生成するステップ、
及び、
該第１のマッピンにおける衝突の各行に対し（ただし、衝突は入力の同じ変換出力値へのマッピングである）、
該初期丸めで用いられないであろう変換出力値を提供するために必要とされ、それぞれが該初期丸めに用いられないであろう変換出力値からなるエキストラを、それぞれ含む行の数を求めるステップ、
各衝突に対し１つのエキストラを提供するために部分エキストラ行が必要なときに、ある行内の均等に間隔をおいたある個数のエキストラを選択するステップ、
エキストラを列順にソートするステップ、
該ルックアップテーブル内で使用するための第２のマッピングを生成するためエキストラを衝突に列順に割り当てるステップ、
を含むことを特徴とするルックアップテーブル作成方法。
【請求項４】
丸めオフセットのためのルックアップテーブルを作成するための方法であって、
複数の入力の同じ変換出力値へのマッピングが存在する各衝突に対して、
初期丸めで使用されないであろう変換出力値が存在する各エキストラに対し、所定の基準に基づき他のエキストラとの交換を割り出すステップ、及び該交換を実行するステップ、
を含むことを特徴とするルックアップテーブル作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮及び伸長システムの分野に係り、特に、可逆ロスレス（損失のない）離散コサイン変換（ＤＣＴ）ベースの圧縮技術に関する。
【背景技術】
【０００２】
離散コサイン変換（ＤＣＴ）は、ロッシー（損失のある）画像圧縮に一般的に使われる無理変換である。ＤＣＴは一般にロッシー画像圧縮で使用される。ＤＣＴは、ＪＰＥＧ標準、ＭＰＥＧ標準及び米国の次世代ＨＤＴＶの多くのモードに用いられる。これら各種標準に関する解説については、ＩＳＯ標準文書ISO／IEC 10918(JPEG)，11172(MPEG1)，13818(MPEG2)、及び、Ｗilliam  Ｂ．Ｐennebaker  and  Ｊoan  Ｌ．Ｍitchell，”JPEG  Ｓtill  Ｉmage  Ｄata  Ｃompression  Ｓtandard,”１９９３を参照されたい。ＤＣＴの基底ベクトルは無理値を持つ。理論上、整数入力の結果として無理変換係数が得られる。したがって、そのような変換を厳密に行うには無限の精度が要求される。変換係数は、圧縮に使うためには、有限の表現へ丸められねばならない。
【０００３】
大抵の変換手段では、係数の整数への丸めは、あらゆる整数入力に対して異なった出力が得られることを保証するものではない。よって、逆ＤＣＴで入力を厳密に再構成することは不可能である。量子化無しの順ＤＣＴ変換と逆ＤＣＴ変換による誤差は系統誤差と呼ばれる。この系統誤差が、差分又は誤差画像を生じさせないロスレス圧縮におけるＤＣＴの利用の妨げとなっている。
【０００４】
実際的なＤＣＴ実行手段では、変換基底ベクトルも丸められる。ある変換実行手段と理想的な変換実行手段（すなわち高精度浮動小数点の実行手段）との間の差はミスマッチと呼ばれる。データの相互交換のためには低ミスマッチが要求される。ミスマッチ量と、速度、コスト、その他の要求される特性の間にはトレードオフの関係があるといってよい。
【０００５】
本明細書においてAllenのパラメタライズド（パラメータがつけられた）変換（ＡＰＴ）と呼ぶパラメタライズド変換は、ＤＣＴ又はＤＣＴに任意的に近い無理変換を実施できる高速変換の仲間である。ＡＰＴは一般化Chen変換（ＧＣＴ）とも呼ばれる。ＡＰＴの詳細については、Ｊ．Ａllen,”Ｇeneralized  Ｃhen  Ｔransform：Ａ  Ｆast  Ｔransform  for  Ｉmage  Ｃompression,”Ｊournal  of  Ｅlectronic  Ｉmaging，vol.3(4)，Ｏctober  １９９４，pgs.３４１−３４７、Ｊ.Ａllen,”Ａn  Ａpproach  to  Ｆast  Ｔransform  Ｃoding  in  Ｓoftware,”Ｓignal  Ｐrocessing  Ｉmage  Ｃommunication，Vol.8，pp.３−１，１９９６、及び、米国特許第5,129,015号を参照されたい。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、可逆のブロックベース変換、例えば可逆ＤＣＴなどと、それを使用する圧縮器を提供することである。本発明のもう一つの目的は、可逆ＤＣＴに使用するための丸めオフセット用ルックアップテーブルの生成方法を提供することである。その他の本発明の目的は以下の説明から明らかになろう。
【課題を解決するための手段】
【０００７】
以下に列挙した構成の圧縮器及びルックアップテーブル作成方法などが本発明に含まれる。
【０００８】
（１）第１の複数の回転手段；
該第１の複数の回転手段の出力の第１の組と接続され、かつ、Ｂの回転手段を含む第２の複数の回転手段を有する４点パラメタライズド変換手段；及び
該第１の複数の回転手段の出力の第２の組と接続され、Ａの回転手段とＣの回転手段を含む補助マトリックスからなり；
該第１の複数の回転手段、該４点パラメタライズド変換手段及び該補助マトリックス手段は可逆ブロックベース変換として働くブロックベース変換圧縮器。
【０００９】
（２）Ｂの回転手段が12,5変換手段からなる（１）の圧縮器。
（３）第１の複数の回転手段が２点回転手段からなる（１）の圧縮器。
（４）補助マトリックスが、
該第１の複数の回転手段の第１の２つの出力と接続された２つの入力を有する第１の２点回転手段；
該第１の２点回転手段の各出力と接続された乗算器のペア；
該乗算器のペアの出力と該第１の複数の回転手段の第２の出力を受け取るように接続された２点回転手段の第１のペア、及び
該２点回転手段の第１のペアの出力を受け取るように接続された前記Ｃの回転手段及び前記Ａの回転手段からなる（１）の圧縮器。
【００１０】
（５）入力手段；及び、変換入力値の変換出力値へのマッピングを有するルックアップテーブルを含む少なくとも１つの変換を有する可逆ＤＣＴ手段を具備し、該マッピングは、丸めが入力を同じ変換値にマップするところの第１のグループからの入力を、丸めに利用されなかったであろう変換出力へマップする圧縮器。
（６）少なくとも１つの変換が１以上の行列式を持つ（５）の圧縮器。
（７）丸めオフセットのためのルックアップテーブルを作成するための方法であって：
初期丸めを用いて入力値の変換出力値への第１のマッピングを生成するステップ；及び
該第１のマッピンにおける衝突の各行に対し（ただし、衝突は入力の同じ変換出力値へのマッピングである）、
該初期丸めで用いられないであろう変換出力値を提供するために必要とされ、それぞれが該初期丸めに用いられないであろう変換出力値からなるエキストラを、それぞれ含む行の数を求めるステップ、各衝突に対し１つのエキストラを提供するために部分エキストラ行が必要なときに、ある行内の均等に間隔をおいたある個数のエキストラを選択するステップ、
エキストラを列順にソートするステップ、
該ルックアップテーブル内で使用するための第２のマッピングを生成するためエキストラを衝突に列順に割り当てるステップ、
を含む方法。
【００１１】
（８）入力値と変換出力値のペアを交換するステップをさらに含む（７）の方法。
（９）入力値と変換出力値のトリプレットを回転させるステップをさらに含む（８）の方法。
【００１２】
（１０）丸めオフセットのためのルックアップテーブルを作成するための方法であって：
複数の入力の同じ変換出力値へのマッピングが存在する各衝突に対して、
初期丸めで使用されないであろう変換出力値が存在する各エキストラに対し、所定の基準に基づき他のエキストラとの交換を割り出すステップ、及び該交換を実行するステップ、
を含む方法。
（１１）所定の基準が二乗誤差であり、二乗誤差が減少する交換が割り出される（１０）の方法。
【発明の効果】
【００１３】
本発明によれば、ＤＣＴベースの圧縮をロスレスにもロッシーにもできる新規な可逆変換と、それを用いた圧縮器／伸長器を実現でき、画像データ等の圧縮／伸長に関し多大な効果を得られるものである。
【発明を実施するための最良の形態】
【００１４】
本発明によれば、可逆のブロックベース変換、例えば可逆ＤＣＴなどが提供される。本発明のＤＣＴは、ロスレス圧縮／伸長システムに使用可能なＤＣＴベースの圧縮器／伸長器に導入し得る。本発明によれば、系統誤差がなく、かつミスマッチがない（又は低い）ＤＣＴ変換も提供される。可逆の離散コサイン変換（ＤＣＴ）は、あるシステムの圧縮器の一部かもしれない。このシステムは、ロスレス伸長用の可逆の逆ＤＣＴを用いる伸長器、又はロッシー伸長用の逆ＤＣＴを用いる在来の伸長器を含むかもしれない。一実施例では、圧縮器は、多重回転（例えば２点（２×２）整数回転）、４点パラメタライズド変換、及び補助マトリックスを有するＤＣＴ圧縮器を含む。この４点変換はＢの回転からなるが、補助マトリックスはＡの回転とＣの回転からなる。本発明によれば、可逆ＤＣＴに使用するための丸めオフセット用ルックアップテーブルの生成方法も提供される。
【００１５】
以下、本発明の実施の形態を説明する。以下の詳細な説明において、本発明を完全に理解できるようにするため、変換の種類、係数サイズ等々の様々な具体例が示される。しかし、当業者には、そのような具体例によらずに本発明を実施し得ることが明白になろう。他方、本発明をいたずらに難解にしないため、周知の構造及びデバイスはブロック図の形式で表し、詳しくは示さない。
【００１６】
以下の詳細説明のかなりの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現によって与えられる。このようなアルゴリズム記述及び表現は、データ処理技術分野の当業者によって、その研究の内容を他の当業者に対し最も効率的に伝えるために用いられる手段である。あるアルゴリズムがあり、それが概して、希望する結果に至る自己矛盾のないステップ系列だと考えられるとしよう。これらのステップは、物理量の物理的処理を必要とするものである。必ずという訳ではないが、これらの物理量は記憶、転送、結合、比較、その他処理が可能な電気的または磁気的信号の形をとるのが普通である。これらの信号をビット、値、要素、記号、文字、用語、数値等で表わすのが、主に慣用上の理由から、時に都合がよいことが分かっている。
【００１７】
しかしながら、このような用語や同様の用語は、適切な物理量と関係付けられるべきであり、また、これら物理量につけた便宜上のラベルに過ぎないということに留意すべきである。以下の説明から明らかなように、特に断わらない限り、「処理」「演算」「計算」「判定」「表示」等々の用語を用いて論じることは、コンピュータシステムのレジスタ及びメモリの内部の物理的（電子的）な量として表現されたデータを処理して、コンピュータシステムのメモリまたはレジスタ、同様の情報記憶装置、情報伝送装置あるいは表示装置の内部の同様に物理量として表現された他のデータへ変換する、コンピュータシステムあるいは同様の電子演算装置の作用及びプロセスを指すものである。このようなコンピュータは一般に、データを処理するために１つ又はそれ以上のプロセッサを使用し、それらプロセッサは１つ又はそれ以上のバスを介し１つ又はそれ以上のメモリと接続される。
【００１８】
本発明はまた、本明細書に述べる操作を実行するための装置にも関係する。この装置は、要求される目的に専用に作られてもよいし、あるいは、汎用コンピュータを内蔵プログラムにより選択的に駆動または再構成したものでもよい。そのようなプログラムは、それに限定されないが、コンピュータのシステムバスにそれぞれ接続されたフロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード又は光カード、あるいは電子的命令の格納に適したその他の媒体のようなコンピュータの読み出し可能な記憶媒体に格納してよい。本明細書に提示されるアルゴリズム及び表示は、本質的に、どのような特定のコンピュータ、その他装置とも関わりがない。様々な汎用マシンを本明細書に述べたところに従ったプログラムと一緒に利用してよいが、必要とされる方法のステップの実行のためのより特化した装置を作るほうが好都合であるかもしれない。これら多様なマシンに要求される構造は以下の説明より明らかになろう。さらに、いかなる特定のプログラミング言語とも関連付けることなく本発明を説明する。本明細書において述べるように、本発明の教えるところを実現するために多様なプログラミング言語を使用し得ることが理解されよう。
【００１９】
＜概要＞
本発明は、ＤＣＴベースの圧縮をロッシーにもロスレスにもできる可逆変換を提供する。可逆変換は、その圧縮結果からオリジナルを再構成可能で整数演算によって実施される効率変換である。可逆変換の一例は、ＡＰＴを拡張したものである。
【００２０】
本発明の可逆変換は、係数の最下位ビットに冗長性がない点で、効率（もしくは略効率）変換である。すなわち、本発明の変換は、（他の方法では系統誤差を排除するために用いられるであろう）多ビットの精度を必要としない点で効率がよい。効率の良さは、差分画像のある非可逆変換を用いるよりも優れたロスレス圧縮に通じる。可逆ＡＰＴ実行手段を構成するいくつかの方法について後述する。可逆ＡＰＴは、ビデオオーサリングシステムなどに多くのアプリケーションがある。
【００２１】
変換係数は任意の精度に丸められてよいが、本発明は変換係数を整数に丸める。整数への丸めよりも粗く丸めることは、情報を消去するので、一種の量子化である。整数への丸めよりも細かく丸めると、変換係数の最下位ビットに冗長度が持ち込まれ圧縮の妨げになる。
【００２２】
本発明は、系統誤差のないＤＣＴ変換を提供する。系統誤差がないため、その変換は可逆変換つまりロスレス変換である。これらの可逆変換はロスレス圧縮に利用可能である。
【００２３】
本発明は、ミスマッチの低い可逆ＤＣＴ変換を提供する。±１の量子化係数ミスマッチのための最小量子化マトリックスが与えられる。この最小以上の量子化が用いられると、得られる係数を任意の逆ＤＣＴで使用可能である。
【００２４】
本発明は、ハードウェア又はソフトウェア、あるいはその組合せによって実施してよい。
【００２５】
＜システムの概要＞
本発明の可逆ＤＣＴは、入力された元のデータを正確に獲得するための可逆の逆ＤＣＴを含むロスレスシステムにも、従来の（可逆でない）逆ＤＣＴを含むロッシーシステムにも使用し得る。従来のＤＣＴも可逆ＤＣＴの出力を扱うことができる。可逆ＤＣＴの真のＤＣＴとのミスマッチは十分に低く、普通のＤＣＴと同じ結果を正確に得られるからである。すなわち、従来のＤＣＴ復号化器を有するＭＰＥＧ又はＪＰＥＧ復号化器を、本発明の可逆ＤＣＴと一緒に用いることができる。
【００２６】
図１はロスレス及びロッシーＤＣＴベース圧縮／伸長システムの一実施例のブロック図である。なお、本発明をＤＣＴベースのシステムによって説明することがあるが、他のブロックベースの変換にも本発明を適用できることに注意されたい。
【００２７】
図１において、入力データ（例えば入力画像）は本発明の可逆ＤＣＴベース圧縮器１０１によって圧縮される。入力画像１００は、メモリから取り込まれ、あるいは通信路から受信されるであろう。なお、そのメモリも通信路も本発明を煩雑にしないため図示されていない。入力画像は、カメラ、デジタイザ、スキャナ、フレームグラバー（grabber)、その他の周知の装置又は類似装置によって生成されるであろう。この圧縮の結果は複数の係数であり、通信路又は記憶装置へ出力される。なお、ＤＣＴベース圧縮器の後又はその前で別の種類の圧縮がなされてもよい。
【００２８】
ロスレス圧縮の場合には、原データを正確に再構成するため、量子化されない係数に対し可逆の逆ＤＣＴ（ＩＤＣＴ）を有する伸長器１０２が使用される。ロッシー圧縮の場合には、変換係数を量子化してから、任意の逆ＤＣＴ（ＩＤＣＴ）を使用する伸長器１０３によって伸長してよい。前述のように、このロッシー伸長器は、ＪＰＥＧ又はＭＰＥＧ準拠の復号化器のような従来システムで構わない。
【００２９】
一実施例では、ＤＣＴ圧縮器は画素成分をＤＣＴ変換に取り込み、このＤＣＴ変換の出力がジグザグ順序付けされることにより周波数係数が生成される。そして、この係数は一般にロスレス・エントロピー符号化される。同様に、逆ＤＣＴ伸長器では、周波数係数はロスレス・エントロピー復号化されてからジグザグ逆順序付けブロックに入力され、次にＩＤＣＴ変換に入力されて画素成分が復元される。
【００３０】
圧縮器１０１は通信路又は記憶装置１０４を介して伸長器１０２，１０３に接続されるように表されている。それらは物理的には全く相互接続されていなくてもよい。すなわち、その圧縮器を使ってデータを圧縮して記憶し、全く独立した伸長システムが、その圧縮情報又はそのコピーをアクセスしてもよい。
【００３１】
図２は、本発明の圧縮器の一実施例のブロック図を示す。図２において、当該圧縮器は入力データの色空間変換又はサブサンプリングを行う色空間／サブサンプリングブロック１２１を有する。このブロック１２１はオプショナルなブロックであり、圧縮器によっては含まれないかもしれない。一実施例では、ブロック１２１によって実行される色空間変換は可逆である。
【００３２】
色空間／サブサンプリングブロック１２１の出力は可逆ＤＣＴ１２２に接続される。可逆ＤＣＴ１２２より出力される変換値はジグザク順序付けブロック１２３の入力へ接続され、同ブロック１２３は周知のジグザグ順序付けを行う。なお、このジグザグ順序付けブロック１２３もオプショナルである。ジグザグ順序付けブロック１２３の出力はランレングスブロック１２４に接続され、同ブロックは０のランレングスを検出する。ランレングスブロック１２４の出力はハフマン（Huffman）コーダ１２５の入力に接続され、ハフマン符号化が行われる。ハフマン符号化ブロック（ハフマンコーダ）１２４の出力はシグナリング(signaling)ブロック１２６の入力に接続され、同ブロックは復号化器が符号化データを効率的に復号化できるようにするため、使用された量子化又は符号化オプションのタイプを復号化器に通知するための信号を発生する。
【００３３】
希望するならば、スケールファクタを用いる量子化１２７を、可逆ＤＣＴブロック１２２の後又はジグザグ順序付けブロック１２３の前に適用してもよい。このようなスケールファクタを用いる量子化については、より詳しく後述する。
【００３４】
図３は、本発明の圧縮器の他の実施例のブロック図である。図３において、色空間／サブサンプリングブロック１２１は可逆ＤＣＴ１２２に接続される。可逆ＤＣＴ１２２の出力はオプショナルな、スケールファクタを用いる量子化ブロック１２７に接続される。スケールファクタを用いる量子化ブロック１２７の出力は文脈モデル１３３の入力に接続される。文脈モデル１３３はデータに対する文脈を発生する。この文脈は確率予測マシン（ＰＥＭ）１３４へ送られる。ＰＥＭ１３４は、受け取った文脈に基づいて、データの確率予測値を発生する。これらの確率予測値はビットストリーム・ジェネレータ（ＢＧ）１３５へ出力され、同ジェネレータは文脈モデル１３３からの文脈とＰＥＭ１３４からの確率予測値に基づいて、出力ビットストリームを生成する。ビットストリーム・ジェネレータ１３５の出力はシグナリングブロック１２６に接続される。
【００３５】
図４は、ビデオオーサリングシステムへの本発明の応用例のブロック図である。図４において、１つ以上の入力装置、例えばカメラ２０１がビデオ画像を撮影又は取得する。撮影中に、ビデオ画像はカメラ２０１に接続されたロスレス圧縮器２０２によってロスレス圧縮される。これによって、一実施例では、帯域幅とメモリの約２分の１の節約が可能であり、しかも劣化を生じない。すなわち、歪みがない。ビデオの最終的な目標圧縮率は一般的に１００：１のロッシー圧縮であるが、最初のロスレス圧縮は、画質向上、デジタルエフェクト及び高画質のＩ−フレームとなるフレームのための情報を保存する（ビデオ圧縮の場合）。Ｉ−フレームはビデオ圧縮分野で周知であり、ＭＰＥＧやＨＤＴＶのような圧縮標準に従って静止画像と同様に圧縮される。
【００３６】
圧縮器２０２の出力は抽出ブロック２０３に接続される。編集のため、量子化ＤＣＴ係数が抽出ブロック２０３によって抽出され、（必要なら変換符号化され(transcoded)）、そして抽出ブロック２０３に接続されたモーションＪＰＥＧ伸長器２０４へ送られる。抽出ブロック２０３は、どのフレームが必要とされるか決定し、及び／又は、各係数のある一定数のビットだけを選択することによって動作するかもしれない。例えば、後記の図３１は捨てるビット数（換言すれば、どのビットを保存するか）を示している。他の実施例では、抽出ブロック２０３は、一部のブロックだけを選択することによって画像のクリッピングを行うかもしれない。
【００３７】
モーションＪＰＥＧ伸長器２０４は、安価な装置か任意の従来の装置でよい。圧縮データは既にＤＣＴ変換ドメインにあるから、様々なカットを試みたり様々な量子化で試すために必要な計算が減少する。このように、この実施例によれば、あまり多くの追加処理をせずに、情報をリアルタイムのビデオとして観察することができる。
【００３８】
編集者がどの情報を保存するか（例えば、どのフレームを最終バージョンに残すか）決定した後、原データを復元するためにロスレス伸長器、例えば伸長器２０５を用いることができる。なお、データは、編集後のデータだけを格納しているか、元の入力データの全部又は一部を格納している記憶装置から取り出されるだろう。後者の場合、伸長のための適切な情報をアクセスするために何らかのロジック又は処理が必要となろう。このような処理／ロジックは当業者にとって周知であろう。
【００３９】
圧縮歪みが誇張される可能性がなければ、必要に応じ、原データの画質向上もしくは前処理のための画質向上メカニズム２０６を伸長器２０５に接続してもよい。かかる画質向上もしくは前処理の例として、画像の部分拡大、スローモーションを行うためのフレーム間内挿、尖鋭化、ノイズ除去等々がある。このような画質向上メカニズムは当該技術分野では周知である。
【００４０】
任意の画質向上処理の後で、ＭＰＥＧ圧縮器２０７が動き補償を含む完全なＭＰＥＧ圧縮を行って最終的な圧縮データを生成する。このＭＰＥＧ圧縮器２０７は当該技術分野では周知である。
【００４１】
可逆ＤＣＴは、どのようなロスレス圧縮のアプリケーションに使用してもよいが、従来のロッシーＤＣＴベースシステムと一緒に使用する場合に最も効果的である。従来システムとの互換性が問題でなければ、他の統合型ロッシー／ロスレス圧縮システム、例えば可逆ウェーブレットによる圧縮システムが使用されても構わないだろう。
【００４２】
本発明は、任意のブロックベース変換又は２点回転に分解可能な任意の非重複変換へ拡張し得る。例えば、本発明はＤＦＴ／一元ＤＦＴ、コサイン、サイン、Ｈadamard、Ｓlant、Ｋarhunen-Ｌoeve、高速ＫＣ、シヌソイド変換、ＳＶＤ変換、重複直交変換（ＬＯＴ）等々の変換と共に使用し得る。Ｊain，Ａnil  Ｋ.，”Ｆundamentals  of  Ｄigital  Ｐrocessing，”Ｐrentice-Ｈall，Ｉnc．１９８９,pgs．132-138を参照されたい。これらの例と後述の例が与えられれば、他の変換の実現は当業者には明白であろう。
【００４３】
＜ＡＰＴによる高速ＤＣＴ分解＞
Ａllenのパラメタライズド変換（ＡＰＴ）は、公式には一般化Chen変換（ＧＣＴ）と呼ばれるが、ＤＣＴと、他の関連変換のファミリーを”整数回転”の縦続（cascade)に変形する。一実施例では、各回転は、その行列式の絶対値が１の変換からなる。本発明は、ＤＣＴを多数の可逆成分に伸長することによって可逆ＤＣＴを得る。このＤＣＴは、個々のパーツが可逆であるから可逆である。
【００４４】
図５は、１Ｄ８点順ＡＰＴのブロック図を示す。ＡＰＴ変換の大部分は、回転角度の逆正接によってラベル付けされた２点回転からなる。（これらの回転は、”時計回り”で行列式が−１であるものとして示されている。）
図５において、８点変換は、４つの４５゜(arctan=1)初期回転３４０、４点ＡＰＴ３２０、”補助マトリックス”３３０に分けることができる。補助マトリックス３３０は、２つの乗算と複数の２点回転を含む。
【００４５】
このように、順ＡＰＴ変換を構成する３組の回転がある。まず、１組の２点（２×２）回転３０１〜３０４は入力ステージとなる。回転３０１〜３０４のそれぞれの出力は、２点回転３０５〜３０８からなる４点ＡＰＴブロック３２０の入力に接続され、また、２点回転３０９，３１２〜３１５と乗算器３１０，３１１からなる補助マトリックス３３０に接続される。
【００４６】
詳しくは、回転３０１は２つの入力データサンプルに対応する入力０，７を受け取り、回転３０５の入力に対する出力と、回転３１２の入力に対する出力を生成する。回転３０２は入力データサンプル１，６を受け取るように接続され、２つの出力、すなわち回転３０６の入力に対する出力と、回転３０９の入力に対する出力とを与える。回転３０３は入力データサンプル２，５を受け取るように接続されて２つの出力を生成し、その一方の出力は回転３０６の他方の入力に接続され、他方の出力は回転３０９の他方の入力に接続される。回転３０４は入力データサンプル３，４を受け取るように接続されて２つの出力を生成し、その一方の出力は回転３０５の他方の入力に接続され、他方の出力は回転３１３の他方の入力に接続される。
【００４７】
回転３０５は２つの出力を生成するが、その一方の出力は回転３０７の入力に接続され、他方の出力は回転３０８の入力に接続される。回転３０６は２つの出力を生成し、その一方の出力は回転３０７の他方の入力に接続され、他方の出力は回転３０８の他方の入力に接続される。これらの入力に応答して、回転３０７は０出力と４出力を生成し、回転３０８は２出力と６出力を生成する。
【００４８】
補助マトリックス３３０に関しては、回転３０９は、Ｒ乗算ブロック３１０，３１１に接続される２つの出力を生成する。Ｒ乗算ブロック３１０の出力は回転３１２の他方の入力に接続され、Ｒ乗算ブロック３１１の出力は回転３１３の他方の入力に接続される。回転３１２は、その入力に応答して、回転３１４，３１５に接続される２つの出力を生成する。同様に、回転３１３は、その入力に応答して、回転３１４，３１５の入力に接続される２つの出力を生成する。これらの出力に応答して、回転３１４，３１５は１出力及び７出力と３出力及び５出力をそれぞれ生成する。Ａ，Ｂ，Ｃ回転について以下に詳述する。一実施例では、回転３０１〜３０４のそれぞれはＳ変換かもしれない。しかし、その場合、ミスマッチに苦しむかもしれない。
【００４９】
図５に示す補助マトリックスはＣhen形式のものである。Ｊ.Ａllen  in，”Ｇeneralized  Ｃhen  Ｔransform  for  Ｉmage  Ｃompression,”Ｊounal  of  Ｅlectronic  Ｉmaging，Vol.3(4)，Ｏctober  １９９４，pgs．３４１−３４７に述べられているＨeinとＡllen，Ｊ．Ａllenによる補助マトリックスの代案を図７に示す。図７において、当該補助マトリックスは（ある角度の）６つの回転からなる。回転角度が４５゜（すなわちarctan=1）の１対の回転がそれぞれ２つの入力を受け取って２つの出力を生成するように接続される。回転４０１，４０２のそれぞれの出力の一方は回転４０３の入力に接続され、回転４０１，４０２の他方の２つの出力は回転４０４の入力に接続される。これらの入力に応答して、回転４０３，４０４は２つの出力を生成する。回転４０３，４０４はＢ回転からなる。回転４０３，４０４のそれぞれの出力の一方は回転４０５の入力に接続され、回転４０３，４０４のそれぞの他方の出力は回転４０６の入力に接続される。回転４０５，４０６はそれぞれＡ回転、Ｂ回転からなる。回転４０５，４０６はそれぞれ２つの出力１，７と５，３を生成する。
【００５０】
一実施例では、回転は２点（２×２）回転である。各回転は２点変換もしくはフィルタからなるかもしれない。
【００５１】
出力はＤＣＴにマッチするようスケーリングされる。すなわち、本発明が生成する出力は、浮動小数点ＤＣＴによれば得られるであろう出力とマッチするように変化させるためのスケールファクタを用いる必要がある。ロッシー圧縮／伸長の場合、スケールファクタは量子化ファクタと組み合わせられてよい。各出力用のスケールファクタは、各２点回転のための各スケールファクタの積から決定することができる。図５に示した形式の２点回転マトリックスの場合、各回転の両方の出力のためのスケールファクタは次式によって与えられる。
【００５２】
【数１】
2006094490.tif 000003
【００５３】
【数２】
2006094490.tif 000004
【００５４】
【数３】
2006094490.tif 000005
【００５５】
分離可能な２次元（２Ｄ）６４点ＤＣＴ（ＡＰＴ）は、８つの１Ｄ８点ＤＣＴ（ＡＰＴ）、１つの転置、及び、別の８つの１Ｄ，８点ＤＣＴ（ＡＰＴ）によって実現できる。
【００５６】
図６は、同じスケールファクタを有するＡＰＴの中間値を示す。図６において、各網掛け線は同じスケールファクタを持つ入力を示す。同一のスケールファクタを用いることは２点変換の除数を拘束する。例えば、殆どの１の回転（３０９以外の全ての回転）は両方の出力に対し同じスケールファクタを持つ必要がないので、Ｓ変換のような不平衡変換を用いてよい。これに対して、１の回転とＲによる乗算（３０９）の縦続は、出力に関し入力と同じスケールファクタを持たなければならない。
【００５７】
図６において、回転３０７に対する２つの入力は同一のスケールファクタを有する。回転３０８に対する２つの入力は同一のスケールファクタを有する。回転３１４に対する２つの入力は同一のスケールファクタを有し、回転３１５に対する２つの入力は同一のスケールファクタを有する。回転３０５と回転３０６の入力は同じスケールファクタを有する。このことは、回転３０５の場合に、回転３０１，３０４それぞれからの上側の枝を拘束することになろう。回転３１２，３１３に関しては、それらの入力が同じスケールファクタを有するだけではなく、回転３０１，３０４それぞれからの下側の枝が全て同一のスケールファクタを有する。回転３０１，３０４から出る下側の枝のスケールファクタは回転３０２，３０３から出る下側の枝のスケールファクタと同じであるから、補助マトリックスに対する全ての入力のスケールファクタが同一である。２つの出力のスケールファクタの積が膨張量である。したがって、効率をよくするには、両方のスケールファクタの積を理想的には１にして膨張を防がなければならない。一実施例では、可逆にするため、両方のスケールファクタが１である。他の実施例では、スケールファクタは僅かに異なってもよい。例えば、両方のスケールファクタを０．９９にしてよい。
【００５８】
図１９は、３つの異なった実施例のためのＡＰＴパラメータの値を示す。最初のパラメータの組はＤＣＴとなる無理数である。圧縮のためのＤＣＴ実行手段（ＡＰＴその他）は、これらの無理値を使用できない。現実のＤＣＴ実行手段はすべて無理パラメータを近似する（その近似値は非常に正確な高精度浮動小数点近似値であるが）。ＡＰＴは小さな整数による有理近似値を使うため、扱いやすい可逆実行手段となる。
【００５９】
図１９は、単純さとミスマッチとの兼ね合いを図る３組のＡＰＴパラメータを示す。ＡＰＴ１は簡単で圧縮用に好適である。他の例であるＡＰＴ２とＡＰＴ３は、より精密な無理変換の近似である。ＡＰＴ３はＣＣＩＴＴ  Ｒec．Ｈ．２６１（ＩＥＥＥ規格1180-1990）精度試験を満足する。
【００６０】
可逆変換において、ＡＰＴパラメータの選び方がミスマッチの唯一の原因ではない。可逆の効率変換では、変換の各ステップにおいて注意深い（可逆の）整数への丸めを行う必要がある。これらの丸め処理もミスマッチの原因となる。浮動小数点の実行手段と同じ結果をもたらす方法は効率可逆のものであるはずがないので、多少のミスマッチは避けがたい。通常、丸めに起因するミスマッチはパラメータの選び方に起因するミスマッチより大きいから、ＡＰＴ１パラメータは良好な一つの選択である。しかし、本発明の手法は他のパラメータに適用してもよい。
【００６１】
なお、これらのＡＰＴパラメータを、他の可逆又は不可逆の変換が得られるように調整してもよい。
【００６２】
＜可逆ＤＣＴ実行手段＞
本発明において、ＡＰＴの構成要素中の各２点回転は可逆とされる。各２点回転を可逆にすれば、各ステップを逆にしてよいのでＡＰＴ全体が可逆になる。効率のほかに、２つの性質、すなわちスケールファクタが平衡していること、内部の丸めがないことが望ましい。
【００６３】
２点変換が”平衡”スケールファクタを持つのは、両方の出力のスケールファクタが同一であるときである。変換が効率変換（又は略効率変換）となるために、その行列式は±１（又は、ほぼ±１）である。行列式が±１にされると、２つの出力のスケールファクタの積は１である。両方のスケールファクタが１であることが望ましい。別の実施例では、一方のスケールファクタが他方のスケールファクタの逆数である。この場合、一方のスケールファクタは１より大きい。かくして、行列式が±１になる。１を超えるスケールファクタは量子化の原因となり、結果としてミスマッチを生じさせる。
【００６４】
なお、前出の式中のスケールファクタは、効率変換でないＡＰＴのためのものであるから、それらの積は１ではない。両方のスケールファクタを１未満にすると、低ミスマッチを見込むのに適した丸めとなるが、そのようなシステムは可逆効率変換ではない。
【００６５】
各ステップでの丸めは可逆性を与える。”内部丸めのない”２点回転とは、各ステップの出力で最大でも２つの丸め操作しか行われないことを意味する。ステップ内部に付加的な丸め操作がある実行手段もある。例えば、後述のラダーフィルタ手段である。余分な丸めはミスマッチを増加させる。
【００６６】
ＤＣＴは、ロッシー圧縮に用いられるときには、順変換と逆変換の両方に同じ変換を使用できるようにユニタリである。しかし、本発明では、可逆実行手段の場合、逆変換は丸めを逆転させる。したがって、逆変換は、図６に示したデータフローとは逆のデータフローを持ち、それぞれの順方向の２点変換と乗算は対応した逆変換で置き換えられる。
【００６７】
＜内部丸めもルックアップテーブルも用いない可逆実行手段＞
本発明は、一実施例において、内部丸めもルックアップテーブルも必要としない２点回転及び乗算の可逆実行手段を提供する。これらは、このタイプの効率平衡２点回転を持つパラメータにとって重要な構成要素である。平衡変換でない又は略効率変換にすぎない、いくつかの２点変換を以下に説明する。ラダーフィルタとルックアップフィルタの代案が提供される。
【００６８】
しばしば、オフセットの選び方によって達成される可逆性が支配される。何故あるオフセットだけで可逆変換となるかについて以下に説明する。
【００６９】
”１”：1,1-変換，S-T変換−不平衡
一実施例において、”１”ブロックは次の変換によって実現される。ただし、ａとｂは順変換の入力であり、ｘとｙは順変換の出力である。
【００７０】
【数４】
2006094490.tif 000006
【００７１】
一実施例では、スケールファクタはそれぞれ√２と１／√２である。
【００７２】
”Ａ”：5,1-変換−不平衡
次に示すものは”Ａ”回転の一実施例である。
【００７３】
【数５】
2006094490.tif 000007
【００７４】
ただし、回復される最下位ビットは次式で与えられる（すなわち、切り捨てられたビット）：
δ≡(5y-13)  mod  26
本実施例では、スケールファクタはそれぞれ√26と１／√26である。
【００７５】
”Ａ”：5,1-変換−平衡，非効率
次に示すものはＡ回転の別の実施例である。
【００７６】
【数６】
2006094490.tif 000008
【００７７】
この変換の行列式は26/25=1.04である。したがって、その冗長度はlog21.04＝0.06ビットである。これは非効率変換ではあるが、ロスレス圧縮に使用できるほど効率変換に近い。平衡であるので、平衡効率変換より、ロッシー圧縮の目的に有益である。
一実施例では、スケールファクタは両方とも５／√26  である。
【００７８】
”Ａ”：60,11-変換−平衡，効率
”Ａ”回転の他の実施例は次の通りである。
【００７９】
【数７】
2006094490.tif 000009
【００８０】
この変換は平衡・効率変換である。この変換は11，60，61を使うが、これはピタゴラスのトリプレットa，b，cで、ｂ＋１＝ｃ  かつ  ａ2＝２ｂ＋１である。しかし、結果の60／11≒5.4545は７π／16≒5.0273のあまりよい近似値ではない。ここでは、平衡、効率であることと計算の容易さのため、ＤＣＴへの近似度は犠牲にされている。
この場合、スケールファクタは共に１である。
【００８１】
”Ｂ”：12,5-変換
次に示すものは”Ｂ”回転の一実施例である。
【００８２】
【数８】
2006094490.tif 000010
【００８３】
これは平衡・効率変換である。数値5，12，13 は、ピタゴラスのトリプレットa，b，c で、ｂ＋１＝ｃかつａ2＝２ｂ＋１である。これは非常に良好な４点ＡＰＴ（ＤＣＴ）である。
スケールファクタは共に１である。
【００８４】
なお、オフセットは可逆性にとって非常に重要である。上式の順変換の両方のオフセットとして＋６を選ぶと可逆変換になるが、他のオフセットでは可逆変換とはならない。例えば、下式におけるようにオフセットが両方とも０であると、入力ａ＝０，ｂ＝０と入力ａ＝１，ｂ＝０に対する結果は共にｘ＝０，ｙ＝０である。
【００８５】
【数９】
2006094490.tif 000011
【００８６】
この結果から、オフセットの選び方で可逆性を制御できることが明らかである。
【００８７】
両方のオフセットが＋５である別の例を下に示す。この場合、入力ａ＝４，ｂ＝０と入力ａ＝４，ｂ＝１に対する結果は共にｘ＝４，ｙ＝１である。
【００８８】
【数１０】
2006094490.tif 000012
【００８９】
殆どのオフセットのペアで、可逆変換とはならない。オフセット（0...12)の可能な１６９個のペアの中で、可逆性が得られるのは、0,10；1,5；2,0；3,8；4,3；5,11；6,6；7,1；8,9；9,4；10,12；11,7の１３個のペアだけである。
【００９０】
”Ｃ”：3,2-変換−不平衡
”Ｃ”回転の一実施例は次の通りである。
【００９１】
【数１１】
2006094490.tif 000013
【００９２】
これは効率変換である。この場合、スケールファクタは√13と１／√13である。
【００９３】
”Ｃ”：3,2-変換−和の増加が不平衡
和の増加が不平衡であっても効率変換である、”Ｃ”回転の他の実施例は次のとおりである。
【００９４】
【数１２】
2006094490.tif 000014
【００９５】
この場合、スケールファクタはそれぞれ１√13と√13である。
不平衡変換においては、和をそれより大きい除数で除算するのが好都合である。これは係数サイズの最小の増加につながる。しかし、和はより視覚的に適切な係数につながる。差に対し大きな除数を使って、より大きな和の増加を許容すると、視覚的により適切な係数でのミスマッチが低くなる。
【００９６】
”Ｃ”：4,3-係数−平衡
平衡変換である、”Ｃ”回転の他の実施例は次の通りである。
【００９７】
【数１３】
2006094490.tif 000015
【００９８】
この変換は平衡・効率変換である。数値の組３，４，５はピタゴラスのトリプレットａ，ｂ，ｃで、ｂ＋１＝ｃかつａ2＝２ｂ＋１である。しかし、４／３≒1.3333は、tan  5π／16≒1.4966  に対するあまり良い近似値ではない。スケールファクタは共に１である。
【００９９】
乗数”Ｒ”：√2
一実施例では、乗法因子に√2の整数近似値を用いる。Ｒ因子は補助マトリックスを正規化する。
【０１００】
【数１４】
2006094490.tif 000016
【０１０１】
＜ＤＣＴ以外の変換＞
図８は、８点Ｈadamard変換を示す。図８において、回転５０１〜５１２は、tan(π／4)=1の２点回転からなる。回転５０１は、入力データサンプル０，７を受け取って回転５０５，５０７への出力を生成するように接続される。回転５０２は、入力データサンプル１，６を受け取って回転５０６，５０８への出力を発生するように接続される。回転５０３は入力データサンプル２，５を受け取って回転５０６，５０８への出力を生成するように接続され、また、回転５０４は入力データサンプル３，４を受け取って回転５０５，５０８に対する出力を生成するように接続される。
【０１０２】
回転５０５は、その入力に応答し、回転５０９，５１０に対する出力を生成する。回転５０６も、その入力に応答してと回転５０９，５１０に対する出力を生成する。回転５０９はその入力に応答して出力サンプル０，４を生成し、また、回転５１０はその入力に応答して出力サンプル２，６を生成する。
【０１０３】
回転５０７は回転５１１，５１２に対する出力を生成する。回転５０８も回転５１１，５１２に対する出力を生成する。これらの入力に応答し、回転５０５は出力サンプル１，５を生成し、回転５１２は出力サンプル３，７を生成する。
【０１０４】
図９は８点Ｈarr変換を示す。図９において、当該Ｈarr変換は、それぞれtan(π／4)＝１の２点回転である回転５２０〜５２６からなる。回転５２０は入力データサンプル０，１を受け取って、出力データサンプル４と回転５２４への出力を生成するように接続される。回転５２１は入力データサンプル２，３を受け取って、回転５２４への出力と出力データサンプル５を生成するように接続される。回転５２２は入力データサンプル４，５を受け取って回転５２５への出力と出力データサンプル６を生成するように接続される。回転５２３は入力データサンプル６，７を受け取って回転５２５への出力と出力データサンプル７を生成するように接続される。回転５２４は、その入力に応答して出力データサンプル２と回転５２６への出力を生成する。回転５２５は回転５２５への出力と出力データサンプル３を生成する。回転５２６は、その入力に応答してサンプル０，１を出力する。
【０１０５】
図１０は４点サイン変換の一実施例を示す。図１０において、当該サイン変換は回転５３１〜５３４からなる。回転５３１，５３２はtan(π／4)＝１の２点回転からなり、回転５３３，５３４はＤの回転からなる。なお、Ｄはtan(0.1762π)として示されている。
【０１０６】
回転５３１は入力データサンプル０，３を受け取って回転５３３，５３４への出力を生成するように接続され、回転５３２は入力データサンプル２，１を受け取って回転５３３，５３４に対する出力を生成するように接続される。それらの各入力に応答し、回転５３３は出力データサンプル１，２を生成し、回転５３４は出力サンプル３，１を出力する。
【０１０７】
図１１は、４点Ｓlant（傾斜)変換の一実施例を示す。図１１において、当該Ｓlant変換は回転５４０〜５４３からなる。回転５４０〜５４２はtan(π／4)＝１の２点回転からなり、回転５４３はtan(0.1024π)の２点回転からなる。回転５４０は入力データサンプル０，３を受け取って回転５４２，５４３への出力を生成するように接続され、回転５４１は入力データサンプル２，１を受け取って回転５４２，５４３への出力を生成するように接続される。回転５４２は入力に応答して出力データサンプル０，２を生成し、回転５４３は入力に応答して出力データサンプル３，１を生成する。以上に述べた例から、当業者は他の変換も実現できるであろう。
【０１０８】
＜ラダーフィルタによる効率・可逆２点回転＞
ラダーフィルタを使って、どのような２点回転も可逆・効率・平衡形で実現できる。ラダーフィルタは両方のスケールファクタが１に等しい。下記の式は行列式が１の（反時計回り）回転のためのラダーフィルタ分解である。
【０１０９】
【数１５】
2006094490.tif 000017
【０１１０】
可逆かつ有効であるために、図１２及び図１３に示すように、各乗算の後に整数への丸めが続く。可逆であるために、無理数による乗算が順変換と逆変換において同様に行われる。
【０１１１】
図１２に、入力６１０，６１１を持つラダーフィルタ手段が示されている。入力６１１は乗算器６０２に接続され、この乗算器６０２は(cosθ-1)／sinθを入力６１０に掛ける。この乗算の結果はブロック６０３で最近整数に丸められる。この丸めの結果は加算器６０４によって入力６１１と加算される。加算器６０４の出力は乗算器６０６に接続され、sinθと乗算される。この結果はブロック６０５で整数に丸められる。丸めの結果は加算器６０１によって入力６１０と加算される。加算器６０１の出力は当該ラダーフィルタの一方の出力６１２である。加算器６０１の出力は乗算器６０７にも入力され、(cosθ-1)／sinθと乗算される。この乗算の結果はブロック６０８で整数に丸められる。丸めの結果は、加算器６０９によって、加算器６０４の出力と加算される。加算器６０９の出力は当該ラダーフィルタの他方の出力６１３である。
【０１１２】
図１３において、２つの入力７０１，７０２が当該ラダーフィルタに入力する。入力７０１は乗算器７０３に入力されて(cosθ-1)／sinθと乗算される。この乗算の結果はブロック７０４で整数に丸められる。この丸めの結果は、減算器７０５によって入力７０２から減算される。減算器７０５の出力は乗算器７０６の入力に接続され、sinθと乗算される。この乗算の結果はブロック７０７で整数に丸められる。丸め結果は減算器７０８によって入力７０１より減算される。減算器７０８の出力は当該ラダーフィルタの一方の出力７１２である。
【０１１３】
減算器７０８の出力は乗算器７０９の入力にも接続され、(cosθ-1)／sinθと乗算される。この乗算の結果はブロック７１０で整数に丸められる。この丸めの結果は減算器７１１によって減算器７０５の出力から減算される。減算器７１１の出力は当該ラダーフィルタの他方の出力である。
【０１１４】
３つの丸め操作の影響と無理乗算の実行精度の影響によりミスマッチ誤差が生じる。しばしば、ラダーフィルタ手段は他の手段よりも大きなミスマッチ誤差がある。
【０１１５】
ＤＣＴ全体を２×２回転に分解しないで、もっと大きなラダーフィルタを作成できる。例えば、下に示すような３つのマトリックスに分解することにより、４点ＤＣＴをラダーフィルタとして実現できる。
【０１１６】
【数１６】
2006094490.tif 000018
【０１１７】
これらマトリックスは以下の定数を含んでいる。
【０１１８】
【数１７】
2006094490.tif 000019
【０１１９】
このように、本発明は、新規な４点可逆変換を提供するとともに、４点（４×４）回転のための効率・可逆２×２分解を行う。
【０１２０】
なお、以上の説明中の変換には２点ＤＣＴ、４点ＡＰＴ、８点非自明なマトリックスが含まれていたが、本発明は例えば１６×１６など他のサイズへ拡張されてもよい。
【０１２１】
＜効率・可逆２点回転のためのルックアップテーブル＞
ラダーフィルタを使用して、任意の２点回転のための効率・可逆手段を作ることができる。本発明は、丸めを改善した効率・可逆変換を作るための、ルックアップテーブルをベースにした丸め制御方法及び装置を提供する。改良された丸めはミスマッチ誤差を減らす。平衡変換を作成でき、また、ある変換が平衡のときには両方のスケールファクタが１である。
【０１２２】
行列式が１以上の変換の場合、入力値の変換値への１対１又は１対多のマッピングが可能である。可逆変換にとっては、１対１のマッピングだけが重要である。行列式が１より少し大きい変換の場合、少数の可能な変換値を未使用としてよく、また、マッピングは１対１として扱ってよい。
【０１２３】
丸めオフセットを固定的に選択したのでは可逆にすることができない２点整数回転がある。例えば、次式を考える。これは、図１９にＡＰＴパラメータＲとして示された近似値による４５゜回転である。
【０１２４】
【数１８】
2006094490.tif 000020
【０１２５】
これは、丸めオフセットが定数の場合には可逆でない。しかし、丸めオフセットが入力の関数であれば、その関数を可逆にできる。すなわち、丸めが入力の関数として変化する。さらに、この場合、丸めオフセットは、入力の和及び差のモジュロ１８１（＝除数）剰余の関数にすぎない。この関数の一例について図２０と関連させて以下に説明する。したがって、181×181＝32761個の丸めオフセットのペアしかない。
一実施例では、上式のモジュロ部は除かれる。
【０１２６】
図１４は、４５゜回転のための入力値の出力変換値へのマッピング部分を表している。上記等式は次のように表すことができる。
【０１２７】
【数１９】
2006094490.tif 000021
【０１２８】
入力の和と差がそれぞれｓとｄである（ｓ＝ａ＋ｂ，ｄ＝ａ−ｂ）。なお、差と和のパリティは同じである、すなわち両方が偶数であるか両方が奇数である。網掛けされた四角は、発生し得ない値のペア（そのパリティが同一でないから）を示す。網掛けされていない値のペアだけが実際に発生する。ｓとｄを√2で割って普通の整数への丸めを行った値も示されている。太線は同じs／√2とd／√2を持つ値のペアをグループ化している。網掛けされていない四角を１つ有する全ての太線領域については既にマッピングは１対１である。網掛けされていない四角を２つ有する領域は、”衝突”又は”孔”が生じる問題があることを示しており、この領域においては、普通の丸めは２つの可能な入力を同じ変換値にマップし、それら両方の入力が同じ答えを与えてしまうことになる。１つの網掛けされた四角だけの領域は”エキストラ(extra）”、すなわち普通の丸めに利用されない変換出力値を意味している。矢印は、適切な丸めによって、衝突であるところの入力に対するエキストラの出力値を用いマッピングを１対１にできるようにする方法を示している。
【０１２９】
例えば、ｓ入力とｄ入力が２と２である場合、その出力は１，１にはならず、０，２となろう（矢印８０１を参照）。逆変換を行う時には、ルックアップテーブルの０，２のためのエントリーは、出力１，１を指すであろう。行列式≧１の条件は、各衝突に対し少なくと１つのエキストラが存在することを保証する。衝突が近傍のエキストラによって表現されるならば、丸めによるミスマッチは減少し、おそらく最小化されるだろう。
【０１３０】
図１５は、近似値1／√2≒29／41＝0.7073を用いる４５゜回転の場合の衝突（"ｏ"）とエキストラ（"＋"）を示す。（可能性のあるもの全部を１ページに表示できるように、分母として、１８１に代え、より小さな４１が使われている。分母が１８１の場合の対応図は同様である。）
本例では、行列式は非常に１に近く（1.0006である）、エキストラの個数は衝突の個数と等しい。
ペアを持たない衝突又はエキストラの個数は変換の膨張を表す。
【０１３１】
図２０は、近似値1／√2≒5／7＝0.7143を用いる５゜変換のためのマッピングの例を示す。
これはあまり正確ではなく、また、その分母は全ての可能な入力ペア（和、差）が１ページに列挙可能になるような小さな値である。各ペア毎に二乗誤差の和が列挙されている。なお、両方の入力が０の時以外は、最良の整数への丸めが用いられたとしても多少の誤差がある。ペアの最近整数への丸めの平均ＲＭＳＥは1／√2≒0.289である。近似値5/7では２５個の可能な入力ペア中、４個の衝突がある。この近似値では、これらの４個の衝突がＲＭＳＥを0.6529に増加させる。”丸めオフセット”欄は、ルックアップテーブルの出力である。順変換の場合には”和、差入力”欄が入力であり、逆変換の場合には”可逆性のための整数出力”欄が入力である。
【０１３２】
図１９に示した近似値128／181はかなり正確である。分子の１２８は２のベキ乗で、計算に都合がよい。行列式は1.0002（log21.0002＝0.0003ビット）で、これは非常に効率に近い。適切なルックアップテーブルによれば、平均ＲＭＳＥは0.4434であり、ピーク誤差は1.92である。
【０１３３】
＜順計算＞
2×2ＤＣＴのための回転の完全な順計算は次のようになされる。ここでは、近似値1/√2≒128/181を用いる。まず、順変換を計算するため、入力ａ，ｂの和と差が下式により計算される。
和(sum)＝ａ＋ｂ
差(difference)＝ａ−ｂ
【０１３４】
次に、下式により和と差が１８１で割り算され、剰余が保存される。（なお、実行手段によっては、除算の高速化のため128/181≒181/256が用いられることがある。）
ｓｓ＝和／181
ｄｄ＝差／181
ｓ＝和  mod  181
ｄ＝差  mod  181
【０１３５】
ルックアップテーブルは、モジュロ181値ｓ，ｄのペアが同じパリティを持つ（ｓ，ｄが共に偶数であるか共に奇数である）と仮定する。ｓｓとｄｄが同じパリティを持たないとにきは、その一方のモジュロ値のパリティが変更される。この変更は、値が0...180の範囲内に納まるようになされる。下の擬似コードにおいて、”＾”は排他的ＯＲを意味する。このステップは奇数の分母の場合に必要とされ、偶数の分母の場合には必要でない。
【０１３６】
擬似コードは以下のとおりである：
if（ssが奇数かつddが偶数）又は（ssが偶数かつddが奇数）
if（ｄ==180）
ｓ'＝ｓ＾１
else
ｄ'＝ｄ＾１
【０１３７】
1／2の平方根とｓ，ｄの積は、128／181（又は181／256）又はルックアップテーブルを使って決定できる。丸めオフセットはルックアップテーブル内に見つかるであろう。一実施例では、丸めオフセットは−１...１であるので、ルックアップテーブルのデータ幅を２ビットにできる。ｓｓとｄｄで表された入力の平方根はそれぞれ128ssと128ddであり、これらはシフトで実行してよい。
ｘ＝sqrt(1／2)＊s'＋LUT_f[s',d']＋128＊ss
ｙ＝sqrt(1／2)＊d'＋LUT_g[s',d']＋128＊dd
【０１３８】
これは次の等式のためのものである：
【０１３９】
【数２０】
2006094490.tif 000022
【０１４０】
また、ルックアップテーブルがｓ（又はｄ）の平方根と丸めオフセットを返してもよい。一実施例では、そのようなルックアップテーブルは７ビットのデータ幅を持つ。
ｘ＝LUT_sqrt1／2_f[s',d']＋128＊ss
ｙ＝LUT_sqrt1／2_g[s',d']＋128＊dd
【０１４１】
ｓとｄの値は０から180まで変化するが、全てのペアが発生するわけではない。ｆとｇが次元(10)の配列の場合に、１Ｄルックアップテーブルをs+181*dで指標付けすると、メモリロケーションのほぼ半分が無駄になるであろう。181は奇数であるから、s'／2+181＊d'／2を使うと境界条件をうまく処理できない。次の指標付け方法を用いることができる。
指標＝s'／2＋d'＊90＋(d+1)／2
【０１４２】
図１８は本発明による回転の一実施例のブロック図である。図１８において、入力ａ，ｂは加算器１２０１によって加算されて和（ｓ）が得られ、また入力ａ，ｂは減算器１２０１に入力されて差ａ−ｂ（ｄ）が求められる。和（ｓ）は除算器１２０３に入力され１２８で除算される。除算器１２０３の剰余出力はパリティ訂正ブロック１２０５の入力に接続され、また、商出力は乗算器１２０６に接続される。減算器１２０２の差出力は除算器１２０４に入力され、除算器１２０４はそれを181で除算し、剰余をパリティ訂正ブロック１２０５の他方の入力へ出力し、また商を乗算器１２０７の入力へ出力する。パリティ訂正ブロック１２０５は前述のパリティ訂正を行ってｓ'とｄ'を出力し、このｓ'とｄ'はルックアップテーブル(LUT)１２０８と乗算器１２０９，１２１０へそれぞれ接続される。
【０１４３】
乗算器１２０６は除算器１２０３より出力されたｓｓに１２８を乗算し、その結果を加算器１２１１へ出力する。乗算器１２０７は除算器１２０４の出力ｄｄに１２８を乗算し、その結果を加算器１２１２へ出力する。乗算器１２０９は、ｓ'に１／２の平方根を乗算して結果を加算器１２１１へ出力し、また、乗算器１２１０はｄ'に１／２の平方根を乗算し結果を加算器１２１２へ出力する。
【０１４４】
ＬＵＴ１２０８は前述のｆとｇを生成し、それらを加算器１２１１，１２１２へそれぞれ出力する。加算器１２１１はその入力を加算して回転のｘ出力を発生し、他方、加算器１２１２はその入力を加算してｙ出力を生成する。
【０１４５】
＜逆計算＞
一実施例では、完全な逆計算をするために、近似値1/√2≒128/181が用いられる。
【０１４６】
まず、下式により、入力ｘ，ｙが１２８によって除算され、その剰余が保存される。
ss＝ｘ／128
dd＝ｙ／128
ｉ＝ｘ  mod  128
ｊ＝ｙ  mod  128
【０１４７】
次に、モジュロ128値は２の平方根と乗算され、そして丸めオフセットが減算される。（これは１つのＬＵＴに併合可能である。）ｉとｊは０から127までの値であるから、複雑な指標付け方法を必要とせずに、ルックアップテーブルのエントリーの全て（又は使用されないエキストラがあるときには殆ど）を使用できる。
ｓ＝sqrt(2)＊ｉ−LUT_f_inverse[i,j]
ｄ＝sqrt(2)＊ｊ−LUT_g_inverse[i,j]
【０１４８】
その後、奇数分母に関しｓｓパリティがｄｄパリティと同じでない場合に対する補正が、一実施例では次の擬似コードに従って行われる：
if(ssが奇数かつddが偶数)又は(ssが偶数かつddが奇数）
if(d==180)
ｓ'＝ｓ＾１
else
ｄ'＝ｄ＾１
【０１４９】
次式に従って和と差が計算される：
和＝ｓ'＋181＊ss
差＝ｄ'＋181＊dd
【０１５０】
最後に、次式に従って、和と差が再び元の値に変換される：
ａ＝和／２＋(差+1)／２
ｂ＝和／２−差／２
【０１５１】
この逆計算は、図１８に示したものと同様の方法で実行してよいが、その方向は逆になる。そのような実行手段は、当業者にとって図１８を検討すれば明白であろう。
【０１５２】
＜丸めオフセットのためのテーブルルックアップの作成＞
全ての孔に対しエキストラが割り当てられる。ルックアップテーブルが非常に小さい場合には、最適マッピングを探すために全数探索を使用してよい。大きなルックアップテーブルに対しては、それを逐次改良するために利用可能ないくつかの手法がある。
【０１５３】
第１の手法は、エキストラを衝突へ決定論的に割り当てる方法である。一実施例では、エキストラ数は衝突数を下回らない。エキストラは、飛び飛びの衝突に割り当てられる。この手法は高速であり、またプロセスを両端で折り返すことができる。また、この手法によれば、ルックアップテーブルを進行中に生成し得るので、ルックアップテーブルを送る必要がなくなる。
【０１５４】
各衝突行に対し
カレント衝突行中の全ての衝突のためエキストラを用意するのに必要となるエキストラ行数を決定する、
１つのエキストラ行の一部が必要とされるならば、該行内の適当数のエキストラを均等間隔で選択する、
そのエキストラ全てを列順に処理されるようにソートする、
エキストラを列順に衝突へ割り当てる。
【０１５５】
発生間隔はエキストラに対する衝突の相対的個数に基づいて決まる。衝突数をエキストラ数で除算することにより、指標因数が生成される。それぞれについて最も近い整数に丸めることにより、使用すべき衝突を示す整数の集合を得る。
【０１５６】
説明のため、図１５に示した衝突とエキストラのパターンを考える。１４４個の衝突が１２行×８個のパターンで存在する。１４４個のエキストラが８行×９個と９行×８個のパターンで存在する。初めの３行の衝突についての割り当ては以下のとおりである。その他の衝突行も同様にして割り当てられる。
【０１５７】
第１行の１２個の衝突
列3,7,13,17,21,27,31に８個のエキストラがある第１エキストラ行を用いる第２エキストラ行の９個のエキストラ中の４個のエキストラを用いる、列4,14,24,34のエキストラを用いる
割り当て（エキストラ行，エキストラ列→衝突列）は、1,3→2;2,4→6;
1,7→8;1,13→12;2,14→16;1,17→18;1,21→22;2,24→26;1,27→30;
1,31→32;2,34→36;1,37→40  である
第２行の１２個の衝突
第２エキストラ行の９個のエキストラ中から残りの５個のエキストラを用い、列0,10,28,38のエキストラを用いる
第３エキストラ行の８個のエキストラ中の７個のエキストラを用いる、列3,7,13,17,21,27,31のエキストラを用いる
割り当て（エキストラ行，エキストラ列→衝突列）は、2,0→2;3,3→6;
3,7→8;2,10→12;3,13→16;3,17→18;2,20→22;3,21→26;3,27→30;
2,28→32;3,31→36;2,38→40  である
第３行の１２個の衝突
第３エキストラ行の８個のエキストラ中の残りの１個のエキストラを用いる、列３７のエキストラを用いる
第４エキストラ行の列0,4,10,14,20,24,28,34,38の９個のエキストラを用いる
第５エキストラ行の８個のエキストラ中の２個のエキストラを用いる、列3,21のエキストラを用いる
割り当て（エキストラ行，エキストラ列→衝突列）は、4,0→2;5,3→6;
4,4→8;4,10→12;4,14→16;4,20→18;5,21→22;4,24→26;4,28→30;
4,34→32;3,37→36;4,39→40
【０１５８】
初めのマッピングが与えられれば、傾斜降下法（ミスマッチが減少するならエキストラ／衝突割り当てを交換）又は類似の最適化法（例えば模擬アニーリングなど）によってマッピングを改善することができる。もう一つの最適化法が、Ｂ.Ｋerninghan，Ｌin，Ａn  Ｅfficient  Ｈeuristic  Ｐrocedure  for  Ｐartitioning  Ｇraphics，Ｂell  Ｓyst．Ｔech．Ｊ.，pp.291-307,1970に記載されている。最適化は、衝突とエキストラだけを考慮して行われても、全ての入力値及び出力値を考慮して行われてもよい。最適化は、入力及び出力のペアを交換(swap)することによって行われても、入力及び出力のトリプレットを回転することによって行われてもよい。一実施例では、二乗誤差を減少させる交換又は回転が、それ以上の改善が不可能になるまで行われる。
【０１５９】
下記の擬似コードは、高水準の最適化法の一実施例である。これは改善手順を説明するものである。この方法は、ペア（前の割り当て）の交換を考慮に入れている。未割り当てのエキストラを割り当て済みの衝突−エキストラのペアと交換することを考慮に入れている。誤差が変わらない、すなわち誤差の方向だけが問題である交換も考慮にいれている。誤差を変化させない交換は、将来の交換が誤差を改善させる場合に行われる、すなわち３つのペアに関する三重の交換又は回転の一部である。
【０１６０】
for  各衝突
現在の割り当ての二乗誤差を計算する
do
for  各エキストラ
エキストラペア交換を"未交換"（例えば-1）に初期化する
エキストラ三重交換を"未交換"（例えば-1）に初期化する
交換獲得を０に初期化する
for  K＝先頭交換候補エキストラ（例えば０）to  最終交換候補エキストラ
（例えばエキストラ数-1）
エキストラ[k]のより良い割り当てを探索する
if  より良い割り当てが見つかる
交換を実行する
while  より良い割り当てが見つかる。
【０１６１】
角度ｑの回転の場合、二乗誤差を計算するため以下の手順を用いてよい。
XCを第１の衝突座標とする
YCを第２の衝突座標とする
XEを第１のエキストラ座標とする
YEを第２のエキストラ座標とする
SIN＝sinｑとする
COS＝cosｑとする
二乗誤差＝(COS*XC-round(COS*XE))^2+(COS*YC-round(COS*YE))^2
【０１６２】
前記”エキストラ[k]のより良い割り当てを探索する”ルーチンの一実施例の擬似コードは以下のとおりである：
最良交換のための二乗誤差の最良改善を０に初期化する
エキストラ[k]とエキストラ[n，n>k]の間で最良ペア交換を探索する
if  最良ペア交換は交換しないときと同じ二乗誤差を有する
エキストラ[k]，エキストラ[n]，エキストラ[m，m>n又はn>m>k]の間で最良三重交
換を探索する
if  エキストラ[n]又はエキストラ[k]又はエキストラ[m]は交換のマークが付けら
れている
最良三重交換を無視する
if  最良交換は二乗誤差を減少させる
if  エキストラ[n]はペア交換のマークが付いている
エキストラに”未交換”のエキストラ[n]と交換するマークを
付ける
if  エキストラ[n]は三重交換のマークが付いているエキストラに
”未交換”のエキストラ[n]と交換するマークを付ける
if  エキストラ[k]に三重交換のマークが付いているエキストラに
”未交換”のエキストラ[k]と交換するマークを付ける
if  三重交換が最良交換でありかつエキストラ[m]に三重交換のマー
クが付いている
エキストラに”未交換”のエキストラ[n]と交換するマークを
つける
if  ペア交換が最良交換である
エキストラ[n]にエキストラ[k]と交換するマークを付けるエキス
トラ[k]にエキストラ[n]と交換するマークを付ける
else
エキストラ[n]に三重交換するマークを付ける
エキストラ[k]に三重交換するマークを付ける
エキストラ[m]にエキストラ[n]及びエキストラ[k]と三重交換
するマークを付ける
【０１６３】
前記”最良ペア交換を探索する”ルーチンの一実施例のための擬似コードは以下のとおりである：
for  各エキストラ[n]
交換誤差＝エキストラ[n]，衝突[k]の二乗誤差＋エキストラ[k],衝突[n]の二乗誤差を
計算する
現在誤差＝エキストラ[n]，エキストラ[k]の現在の割り当ての二乗誤差の和を
計算する
本改善＝現在誤差−交換誤差
if  （本改善＞＝０）かつ（本改善＞＝最良改善）
最良改善＝本改善
これまでに見つかった最良交換はｎである
【０１６４】
前記”最良三重交換を探索する”ルーチンの一実施例のための擬似コードは以下のとおりである：
for  各エキストラ[n]
交換誤差＝エキストラ[m],衝突[k]の二乗誤差＋エキストラ[n],衝突[m]の二乗誤差
＋エキストラ[k],衝突[n]の二乗誤差  を計算する
現在誤差＝現在誤差−交換誤差を  計算する
if  （本改善＞＝０）かつ（本改善＞＝最良改善）
最良改善＝本改善
これまでに見つかった最良交換はｎである
【０１６５】
前記”交換を実行する”ルーチンの一実施例のための擬似コードは以下のとおりである：
for  各エキストラ[k]
if  エキストラ[k]にマークが付けられている
ｎ＝エキストラ[k]と交換すべきエキストラ
if  ｎ＜ｋ
エキストラ[n]とエキストラ[k]を交換する
現在の割り当ての二乗誤差を計算する
【０１６６】
＜略平衡ＤＣＴ実行手段＞
ルックアップテーブルをベースとした丸めは、低ミスマッチの任意の２点回転を実現可能である。本発明は、ルックアップテーブル手法（又は他の手法）によって効率かつ略平衡で可逆的に実行可能な変換を生成できる。
【０１６７】
平衡効率変換となるのは、その行列式が完全平方な時である。略平衡変換は、変換マトリックス内の全ての値にある定数を乗算することによって作られる。その定数は、行列式を２つの極めて近い因数に因数分解できるように選ばれる。図２１は略平衡変換のいくつかの例を示す。
【０１６８】
図２１のＬＣＭ欄には、分子の共通因数を消去後の分母の最小公倍数が記されている。この変換を実行するりら、ＬＣＭ2のサイズのルックアップテーブルで十分である。大きな値は、ＬＣＤで除算されて商と剰余に分けられる。図２１中の変換に必要とされるルックアップテーブルは全て大きすぎ、具体例を容易には理解できない。一例として、乗数２を持つ２，１略平衡変換を以下に説明する。
【０１６９】
【数２１】
2006094490.tif 000023
【０１７０】
２つの除数は５と４で、これは平衡比１.２５を持つ。この例は１０2＝１００のテーブルサイズしか必要とせず、テーブルは単純な構造を持つ。
【０１７１】
図２２は、その変換のためのルックアップテーブルである。四角形以外はすべて下式によって決定されてる。四角形はエキストラに割り当てられた衝突を指している。
【０１７２】
【数２２】
2006094490.tif 000024
【０１７３】
図１６は、ａとｂが０....10の範囲内のときに上式より発生するｘ，ｙのペアをプロットしたものである。丸印と矢印は衝突のエキストラへのマッピングを示す。
【０１７４】
＜８×８変換＞
前述の様々な基本要素を各種の８×８可逆ＡＰＴに使用してよく、そのいくつかを図２３に示す。図５に示した補助マトリックスのＣhen分解が用いられるが、例外的にＨeinのラベルが付けられたＡＰＴは図７に示した補助マトリックスを使用する。”効率”と”効率Ｈein”は、内部丸めもルックアップテーブルもない前述の逆実行手段の基本単位を使用するが、例外的に補助マトリックス内の"１"と"Ｒ"はルックアップテーブルを使って処理される。もう一つのＡＰＴは、ラダーフィルタ基本単位を使用する。”略効率”ＡＰＴは平衡に近く良好なロッシー性能につながる。”略効率”ＡＰＴは、行列式が１.０４である（log210.4＝0.06ビットの冗長度）。
【０１７５】
一実施例では、有限状態マシン（ＦＳＭ）エントロピーコーダ及び自明な文脈モデルが、図３に示すような様々な変換によってロスレスの符号化及び復号化を行う。ＦＳＭコーダの一例が米国特許第5,272,478号、同第5,363,099号及び同第5,475,388号に示されており、これら各米国特許は引用により本明細書に組み込まれる。
【０１７６】
図２４は、１Ｄ８点効率可逆ＡＰＴの場合の係数のサイズの増加（ビット数）を示す。
この変換では、例えば、入力が８ビットのときに、合計６４ビットの入力は１８ビット分増加し、結果として８２ビットの出力となる。２Ｄ8×8変換の場合の増加は、１Ｄ結果を水平方向と垂直方向に適用することにより求めることができる。
【０１７７】
図２５は、１Ｄ８点”略効率”可逆ＡＰＴの場合の係数のサイズの増加を示す。この変換では例えば、入力が８ビットのときに、合計６４ビットの入力は２１ビット分増加し、結果として８５ビットの出力となる（すべてのビットの増加を合計した場合）。また、例えば、水平係数２と垂直係数３について１Ｄ結果が水平方向と垂直方向に適用される場合、さらに１０ビット（２＋８＝１０）増加する。良好な圧縮結果が得られるのは冗長な最下位ビットがないからである；すなわち、増加分は大部分が圧縮しやすい上位のビットである。
【０１７８】
ＡＰＴは、可逆であるためには、浮動小数点ＤＣＴと違う係数を出力しなければならので、多少のミスマッチは避けられない。しかし、可逆ＡＰＴは量子化しなければロスレスである。このロスレス性は、可逆ＡＰＴの逆変換に系統誤差がないことを見込んでいる。(？The  lossless  feature  allows  for  no  systemic  error  is  the  inverse  transform  is  the  inverse  reversible  APT.)アプリケーションのため必要な場合には、可逆ＡＰＴ係数を元の画素に逆変換した後、精密なＤＣＴ係数が必要とされるなら浮動小数点ＤＣＴによって、順変換してもよい。
【０１７９】
図２６乃至図２８は、様々な8×8ＡＰＴのための最小量子化マトリックスを示す。最小量子化マトリックスは、それを適用しても真のＤＣＴ係数と±１しか違わない可逆ＡＰＴ係数が得られる程度以上の量子化を提供する。最小量子化値が小さいほど、変換のミスマッチが少なくなる。ＤＣ量子化特性値(quantizer)は左上コーナーに示され、ＡＣ量子化特性値は標準的なＤＣＴ順（ジグザグ順でない）に配列されている。”8×8”効率可逆ＡＰＴとラダーフィルタＡＰＴは共に、ＤＣ係数とそれに近い係数のために比較的大きな最小量子化特性値を持つ。したがって、これら変換は、低圧縮率／高品質のときにＤＣＴを良く近似するにすぎない。”略効率”ＡＰＴは一般にもっと小さな最小値を持ち、またＤＣとその近傍については非常に小さな最小値を持つ。このＡＰＴは典型的なＪＰＥＧ圧縮率のときにＤＣＴを良く近似する。
【０１８０】
”略効率”ＡＰＴは、”Ｃ”ＡＰＴパラメータを用いて生成された係数において最大のミスマッチ（最高の最小量子化特性値）を持つ。ルックアップテーブル・ベースの”Ｃ”２点回転は、もっとミスマッチを減少させるであろう。
【０１８１】
いくつかの変換のための最小量子化マトリックスの構造を、ＡＰＴスケールファクタ・マトリックスの構造によって説明する。ラダーフィルタ手段は例外であり、そのスケールファクタ・マトリックス中の値はすべて１である。図２９と図３０は、8×8効率可逆ＡＰＴと”略効率”ＡＰＴのためのスケールファクタを示す。（１を超える）大きなスケールファクタは大きな最小量子化値をもたらす。
【０１８２】
＜ロッシー・コーディング＞
可逆ＡＰＴを用いるロッシー・コーディングは、まず可逆ＡＰＴを用いてロスレス符号化を行う。その復号化はロッシーであり、ＪＰＥＧ復号化器のような従来のＤＣＴベース伸長器を使用してよい。
【０１８３】
可逆ＡＰＴ係数は、ＪＰＥＧなどのロッシー圧縮システムで普通のＡＰＴ係数と同様な方法で使用し得る。ＪＰＥＧ量子化マトリックスが選ばれる。各量子化特性値が対応したＡＰＴスケールファクタによって除算されることにより、新たな量子化特性値・スケールファクタ結合値が得られる。ＡＰＴと量子化特性値・スケールファクタ結合値は、ＪＰＥＧにおけるＤＣＴと量子化の代わりとして用いられる。どのような量子化マトリックスを用いてもよい。ただし、スケールファクタが量子化特性値より大きいと、ミスマッチが生じる。
【０１８４】
他の実施例では、量子化の除算／乗算は、所要ビットを選択するシフト操作で置き換えられる。これは計算コストを減らし、また、多くのビットを選択するほど高い品質を得ることができ、全ビットが選択された時にロスレスとなる、埋め込みもしくは多重使用システムを可能にする。量子化特性値は、対応したスケールファクタで除算された時に２のベキ乗（又はほぼ２のベキ乗）となるような値に選ばれる。
【０１８５】
ＪＰＥＧには連続近似と呼ばれるプログレッシブ・モードがある。（このモードは、あまりよく知られておらず、ＪＰＥＧのベースライン・シーケンシャル・モードほどは利用されていない。）
特定のＪＰＥＧ量子化に帰着する桁揃え（alignment）スキームを選ぶことができる。これを使用することにより、スペクトル選択を用いなくてもベースライン・シーケンシャル・データに非常に近いものにし得る、連続近似の最初のステージのための符号化データを生成することができる。連続近似は、残存データがビットプレーン別に埋め込み法で符号化されることを許す。プログレッシブＪＰＥＧもスペクトル選択を有する。スペクトル選択は、指定された係数のビットプレーンだけが符号化されることを許す。既に十分に説明した係数に対して、あるビットプレーンにおいてどの係数がビットを有するのか指定するためにスペクトル選択を用いることができる。最初のステージに対し大きな量子化値が用いられると、係数の全て（又は殆ど）はビットプレーン符号化されることになろう。
【０１８６】
ＪＰＥＧのプログレッシブモードを使用したくないならば、様々な忠実度のシーケンシャル・ロスレスＪＰＥＧコードストリームを生成するため変換符号化（transcoding)を用いることができる。必ずしもＪＰＥＧ互換でなくてよいが、何らかの方法でＡＰＴ係数をロスレス符号化することができる。ストリームを生成するため、ロスレス復号化が実行され、所要の量子化が除算又はシフト操作によって行われる。量子化された係数を、次に、ＪＰＥＧコンパチブルの方法で符号化することができる。変換符号化中にＤＣＴが必要とされないので、可逆ＡＰＴを利用しないロスレス・コーディング方法に比べ、計算量が節減される。
【０１８７】
図３１は、”略効率”8×8可逆ＡＰＴを利用する場合の各ＡＰＴ係数の右シフトすべきビットの例を示す。これは量子化／スケールファクタ２n に対応する（ただし、ｎは右シフトすべきビット数である）。図３２は図３１のシフトを実現する等価なＪＰＥＧ量子化マトリックスである。図３２は、ＪＰＥＧで一般的に使用されている精神物理学的に重みづけされた輝度量子化テーブルと似ている。
【０１８８】
図３３と図３４は、”略効率”8×8可逆ＡＰＴを使用する場合に均一量子化に近づけるためシフトすべきビットと対応した量子化特性値を示す。
均一量子化は、平均二乗誤差（ＭＳＥ）距離による最良のレート／歪みを与える。
【０１８９】
＜実装上の問題点＞
可逆ＡＰＴは、各ステップでスケーリングと丸めが行われるため、普通のＡＰＴに比べ計算コストが高い。この弱点を一部補うため、可逆ＡＰＴのためのレジスタ幅が減らされる。レジスタ幅が小さいことと計算に使用されるパラメータが簡単であることは、実装を容易にする。ソフトウェアの場合、乗除算演算をルックアップテーブルで置き換えることができる。ハードウェアの場合、専用の低コストのＮ乗算回路及び１／Ｎ除算回路を用いることができる。
【０１９０】
例えば、後記しかつ図１７に示す２つのルックアップテーブルによる”Ｂ”２点回転の一部の実装を考える。ハードウェアの場合、この２つのルックアップテーブルを専用ロジックによって置き換えてもよい。
【０１９１】
【数２３】
2006094490.tif 000025
【０１９２】
図１７において、ＬＵＴ１１０１，１１０２は以下のように動作する：
【０１９３】
【数２４】
2006094490.tif 000026
【０１９４】
これは次の結果を生じる：
ｘ＝ｄ１＋ｄ２      （ｒ１＋ｒ２＜１３のとき）
ｘ＝ｄ１＋ｄ２＋１  （ｒ１＋ｒ２≧１３のとき）
【０１９５】
統合されたロッシー・ロスレス圧縮のための可逆変換は、最も一般的な符号化画像のための変換である離散コサイン変換（ＤＣＴ）を包含するように拡張される。可逆のＡｌｌｅｎのパラメタライズド変換（ＡＰＴ）は、それぞれが可逆的に実行される”整数回転”の縦続としてＤＣＴを実行する。可逆ＡＰＴ変換のエントロピーは、可逆ウェーブレット係数のエントロピーと同様であることが分かっている。浮動小数点ＤＣＴに対し”略平衡”可逆ＡＰＴのミスマッチは十分に低いため、従来のＪＰＥＧ復号化器をロッシー伸長のために使用できる。
【０１９６】
以上の説明を読めば当業者には本発明の多くの変形及び修正が明白となるであろうから、説明のために図示、説明された特定の実施例は限定することを意図したものでは決してないものと理解されるべきである。
【図面の簡単な説明】
【０１９７】
【図１】ロスレス・ロッシーＤＣＴベース圧縮／伸長システムの一実施例のブロック図である。
【図２】本発明の圧縮器の一実施例のブロック図である。
【図３】本発明の圧縮器の他の実施例のブロック図である。
【図４】ビデオオーサリングシステムの一実施例のブロック図である。
【図５】１次元（１Ｄ）８点パラメタライズド順変換の一実施例のブロック図を示す。
【図６】同じスケールファクタを有する、パラメタライズド変換における中間値を示す。
【図７】図５の補助マトリックスのＨein形を示す。
【図８】本発明による８点Ｈadmard変換の一実施例のブロック図である。
【図９】本発明による８点Ｈaar変換の一実施例のブロック図である。
【図１０】本発明による４点サイン変換の一実施例のブロック図である。
【図１１】本発明による４点Ｓlant（傾斜）変換の一実施例のブロック図である。
【図１２】２点回転の順ラダーフィルタの一実施例を示す。
【図１３】２点回転の逆ラダーフィルタの一実施例を示す。
【図１４】４５゜回転のためのマッピングの一部を示す。
【図１５】４５゜回転のためのエキストラ("+")と衝突("o")を示す。
【図１６】２，１略平衡変換における衝突とエキストラのプロットである。
【図１７】"Ｂ"２点回転の一部であるルックアップテーブルの一実施例を示す。
【図１８】本発明による回転の一実施例のブロック図である。
【図１９】ＡＰＴパラメータを示す。
【図２０】５゜回転のためのマッピング例を示す。
【図２１】略平衡変換の例を示す。
【図２２】２，１略平衡変換のためのルックアップテーブルを示す。
【図２３】８×８可逆ＡＰＴを生成するための基本単位を示す。
【図２４】８点効率可逆ＡＰＴの係数サイズ増加を示す。
【図２５】８点”略効率”可逆ＡＰＴの係数サイズ増加を示す。
【図２６】８×８効率可逆ＡＰＴのための最小量子化マトリックスを示す。
【図２７】ラダーフィルタを使用する８×８効率可逆ＡＰＴのための最小量子化マトリックスを示す。
【図２８】８×８”略効率”可逆ＡＰＴのための最小量子化マトリックスを示す。
【図２９】８×８効率可逆ＡＰＴのためのスケールファクタを示す。
【図３０】８×８”略効率”可逆ＡＰＴのためのスケールファクタを示す。
【図３１】”精神視覚”シフトベース量子化のため右シフトするビットを示す。
【図３２】”精神視覚”シフトのための量子化マトリックスを示す。
【図３３】”正規化”シフトベース量子化のため右シフトするビットを示す。
【図３４】”正規化”シフトの量子化マトリックスを示す。
【符号の説明】
【０１９８】
１０１  可逆ＤＣＴを用いる圧縮器
１０２  可逆ＩＤＣＴを用いる伸長器
１０３  任意のＩＤＣＴを用いる伸長器器
１０４  通信路又は記憶装置
１２１  色空間／サブサンプリングブロック
１２２  可逆ＤＣＴ
１２３  ジグザグ順序付けブロック
１２４  ランレングスブロック
１２５  ハフマンコーダ
１２６  シグナリングブロック
１２７  量子化ブロック
１３３  文脈モデル
１３４  確率予測マシン
１３５  ビットストリームジェネレータ
２０１  カメラ
２０２  ロスレス圧縮器
２０３  抽出ブロック
２０４  モーションＪＰＥＧ伸長器
２０５  ロスレス伸長器
２０６  画質向上ブロック
２０７  ＭＰＥＧ圧縮器
３０１〜３０９  回転
３１０，３１１  乗算
３１２〜３１５  回転
３２０  ４点ＡＰＴ
３３０  補助マトリックス
３４０  ４５゜初期回転
４０１〜４０６  回転
５０１〜５１２  回転
５２０〜５２６  回転
５３１〜５３４  回転
５４０〜５４３  回転
６０２，６０６，６０７  乗算器
６０３，６０５，６０８  丸めブロック
６０４，６０９  加算器
７０３，７０７，７０９  乗算器
７０４，７０７，７０９  丸めブロック
７０５，７０８，７１１  減算器
１１０１，１１０２  ルックアップテーブル（ＬＵＴ）
１２０１，１２１１，１２１２  加算器
１２０２  減算器
１２０３，１２０４  除算器
１２０５  パリティ訂正ブロック
１２０６，１２０７  乗算器
１２０８  ルックアップテーブル（ＬＵＴ）
１２０９，１２１０  乗算器
【図１】
2006094490.tif 000027
【図２】
2006094490.tif 000028
【図３】
2006094490.tif 000029
【図４】
2006094490.tif 000030
【図５】
2006094490.tif 000031
【図６】
2006094490.tif 000032
【図７】
2006094490.tif 000033
【図８】
2006094490.tif 000034
【図９】
2006094490.tif 000035
【図１０】
2006094490.tif 000036
【図１１】
2006094490.tif 000037
【図１２】
2006094490.tif 000038
【図１３】
2006094490.tif 000039
【図１４】
2006094490.tif 000040
【図１５】
2006094490.tif 000041
【図１６】
2006094490.tif 000042
【図１７】
2006094490.tif 000043
【図１８】
2006094490.tif 000044
【図１９】
2006094490.tif 000045
【図２０】
2006094490.tif 000046
【図２１】
2006094490.tif 000047
【図２２】
2006094490.tif 000048
【図２３】
2006094490.tif 000049
【図２４】
2006094490.tif 000050
【図２５】
2006094490.tif 000051
【図２６】
2006094490.tif 000052
【図２７】
2006094490.tif 000053
【図２８】
2006094490.tif 000054
【図２９】
2006094490.tif 000055
【図３０】
2006094490.tif 000056
【図３１】
2006094490.tif 000057
【図３２】
2006094490.tif 000058
【図３３】
2006094490.tif 000059
【図３４】
2006094490.tif 000060