(57)【要約】      （修正有）【課題】少ない演算処理で、あるいは小さい回路規模でロスレス直交変換処理を実行できるデータ変換処理方法を提供する。【解決手段】Ｘ３にＸ２を加算し（１３０３）、Ｘ０からＸ１を減算し（１３０２）、その加算結果と減算結果との差を表すデータを１ビット右シフトして整数化した中間データを生成する（１３０１）。この中間データとＸ２との間で加減演算し（１３０６）、中間データとＸ１との間で加減演算し（１３０５）、これら加減演算の演算結果（１３０５）と、加算して演算結果（１３０３）との間で加減演算し（１３０８）、加減演算の演算結果（１３０６）と減算結果（１３０２）との間で加減演算する（１３０７）。そして演算結果（１３０６）をＹ１、演算結果（１３０５）をＹ２、演算結果（１３０８）をＹ３、演算結果（１３０７）をＹ０として出力する。【選択図】図１３
2008167419.tif 000002
【特許請求の範囲】
【請求項１】
４つの整数データ（Ｘ0、Ｘ1、Ｘ2、Ｘ3）を入力とし、４つのデータ（Ｙ0、Ｙ1、Ｙ2、Ｙ3）に直交変換するデータ変換処理装置であって、
前記Ｘ3に前記Ｘ2を加算する加算手段と、
前記Ｘ0から前記Ｘ1を減算する減算手段と、
前記加算手段から得られる結果と前記減算手段から得られる結果との差を表すデータを、１ビットだけ右にシフトして整数化したデータを生成する生成手段と、
前記整数化したデータと前記Ｘ2との間で加減算する第１の加減算手段と、
前記整数化したデータと前記Ｘ1との間で加減算する第２の加減算手段と、
前記第２の加減算手段の出力と、前記加算手段の出力との間で加減算する第３の加減算手段と、
前記第１の加減算手段の出力と、前記減算手段の出力との間で加減算する第４の加減算手段とを有し、
前記第１の加減算手段の演算の結果をＹ1、前記第２の加減算手段の演算の結果をＹ2、前記第３の加減算手段の演算の結果をＹ3、前記第４の加減算手段の演算の結果をＹ0として出力することを特徴とするデータ変換処理装置。
【請求項２】
前記生成手段は、
前記差を表すデータを２で割った時に発生する小数点以下の１ビットの値を切り上げた整数値又は切り捨てた整数値のいずれか、もしくは、前記差を表すデータを１ビットだけ右にシフトした整数値又は１を加算した後に１ビットだけ右にシフトした整数値のいずれかを生成することを特徴とする請求項１に記載のデータ変換処理装置。
【請求項３】
４つの整数データ（Ｘ0、Ｘ1、Ｘ2、Ｘ3）を入力とし、４つのデータ（Ｙ0、Ｙ1、Ｙ2、Ｙ3）に直交変換するデータ変換処理装置のデータ変換処理方法であって、
前記Ｘ3に前記Ｘ2を加算する加算工程と、
前記Ｘ0から前記Ｘ1を減算する減算工程と、
前記加算工程で得られる結果と前記減算工程で得られる結果との差を表すデータを、１ビットだけ右にシフトして整数化したデータを生成する生成工程と、
前記整数化したデータと前記Ｘ2との間で加減算する第１の加減算工程と、
前記整数化したデータと前記Ｘ1との間で加減算する第２の加減算工程と、
前記第２の加減算工程の演算の結果と、前記加算工程の演算の結果との間で加減算する第３の加減算工程と、
前記第１の加減算工程の演算の結果と、前記減算工程の演算の結果との間で加減算する第４の加減算工程とを有し、
前記第１の加減算工程の演算の結果をＹ1、前記第２の加減算工程の演算の結果をＹ2、前記第３の加減算工程の演算の結果をＹ3、前記第４の加減算工程の演算の結果をＹ0として出力することを特徴とするデータ変換処理方法。
【請求項４】
前記生成工程は、
前記差を表すデータを２で割った時に発生する小数点以下の１ビットの値を切り上げた整数値又は切り捨てた整数値のいずれか、もしくは、前記差を表すデータを１ビットだけ右にシフトした整数値又は１を加算した後に１ビットだけ右にシフトした整数値のいずれかを生成することを特徴とする請求項３に記載のデータ変換処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば整数データを出力する可逆変換が可能なロスレス４点直交変換処理を実行するデータ変換処理装置及びその方法に関する。
【背景技術】
【０００２】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積或いは伝送する際には、その膨大なデータ量が問題になる。このため画像の蓄積或いは伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像の劣化を許容することによって、その画像データの量を削減する高能率符号化が用いられる。例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＥＰＧでは、画像データをブロック（８画素×８画素）毎に離散コサイン変換（ＤＣＴ）してＤＣＴ係数に変換した後に、各ＤＣＴ係数を量子化し、更に、その量子化した結果をエントロピー符号化することにより画像データを圧縮している。このＤＣＴを利用した圧縮技術にはＪＰＥＧ以外にも、Ｈ２６１，ＭＰＥＧ１／２／４等がある。
【０００３】
ＪＰＥＧにおいて、圧縮・伸長後の画像が元の画像と完全に一致するようロスレス符号化モードが規格化されたが、当時はロスレス変換技術が十分研究されておらず、ＤＣＴを用いてロスレス変換を実現することができなかった。そのため、ＤＣＴを用いたブロック変換符号化とは異なる技術で、ある画素単位の予測符号化という方法でロスレス符号化を実現していた。
【０００４】
その後、ロスレス符号化専用の標準符号化技術（ＪＰＥＧ−ＬＳ）が規格化されたが、更に後に規格化されたＪＰＥＧ２０００では、ウェーブレット変換を用いることにより、ロスレス変換と劣化を伴う通常圧縮（ロッシー変換）の両方を実現することが可能となった。
【０００５】
近年、ＤＣＴにおいてもロスレス変換の研究が進み、現在広く普及しているＤＣＴベースのＪＰＥＧでロスレス圧縮を実現しようとする試みがなされている。ＪＰＥＧで用いられるＤＣＴは８点ＤＣＴである。この８点ＤＣＴは、図１に示すように、８点ＤＣＴは４つの２点変換、４点ＤＣＴ及び４点直交変換とに分解できる。４点ＤＣＴと４点変換は更に細かい２点変換に分解できるが、ここでは４点ＤＣＴに着目する。
【０００６】
４点ＤＣＴは、図２に示すように４つの２点変換２０１〜２０４に分解できる。ロスレス変換を実現するには、分解した各２点変換をロスレス変換にすればよい。２点変換のロスレス変換は、非特許文献１に紹介されているラダー回路網と整数化（丸め）という手法で実現できる。
【０００７】
２点変換行列を行列式の値が「１」になるように、入力又は出力データを入れ替えると２点変換は回転変換となる。２点回転変換が２次元のせん断変換３回で実現できることは幾何学の分野ではよく知られている。２次元のせん断変換における２×２変換行列は、２つの対角要素が共に「１」で、２つの非対角要素の１つが「０」、もう１つが傾斜角に対応するパラメータである。
【０００８】
このせん断変換をシグナルフローで表わすと、１回のせん断変換は乗算処理と加算処理からなる１段の梯子演算に置き換えられる。よって、２点回転変換は、図３に示すように３段の梯子演算で実現できる。図３において、各梯子演算における乗算処理後の値を丸め処理して整数化することにより容易にロスレス変換にすることができる。よって、ロスレス変換における梯子演算では、乗算処理部３１１，３２１，３３１、丸め処理部３１３，３２３，３３３、加算処理部３１５，３２５，３３５（減算処理の場合もある）の３つの処理からなる。回転角がθであるときの乗算係数は、乗算処理部３１１，３２１，３３１の順にそれぞれ、ＴＡＮ（θ／２）、−ＳＩＮ（θ）、ＴＡＮ（θ／２）である。
【０００９】
そして梯子演算の１段ごとに乗算結果を整数化するための丸め処理を行なうことにより、乗算結果が整数でない限り必ず丸め誤差が発生し、各梯子演算で発生する誤差は出力データに含まれる。
【００１０】
従来、４つの２点回転変換処理からなる４点直交変換のロスレス変換は、図４のように構成されていた。
【００１１】
図４において、４０１〜４０４は各々２点回転変換で、それぞれは図３に示すように３段の梯子演算で構成されている。このロスレス４点直交変換全体でみると１２段の梯子演算があり、同じく１２回の丸め処理（Ｒで示す）が行なわれる。当然のように、丸め処理の回数に比例して丸め誤差が増える。
【００１２】
一方、非特許文献１では、４点直交変換を４次元のせん断変換５回に分割して、ロスレス変換を実現している。ｎ次元の１回のせん断変換は（ｎ−１）個の梯子演算に対応するので、４点直交変換では（４−１）×５＝１５個の梯子演算が必要になる。この数はそのまま乗算処理の回数になる。しかし、せん断変換の性質上、丸め処理を大幅に減らすことができる。多次元のせん断変換では、梯子演算の梯子の先（加算対象となるデータ）が１つのデータに集中するので、それらのデータを合算してから丸め処理を行なうことができ、せん断変換１回につき１回の丸め処理で済ますことができる。よって、非特許文献１の４点直交変換では、合計５回の丸め処理で済む。
【００１３】
ロスレス変換ではない変換、即ち、線形変換の結果を基準とすると、上記ロスレス変換したデータには、丸め処理の回数に比例して丸め誤差が重畳して変換精度が悪くなる。
【００１４】
ロスレス変換後にエントロピー符号化を行って生成した符号化データを復号する際、必ず、そのロスレス変換に対応した逆ロスレス変換を行なうという状況しかありえない場合には何ら問題はない。しかし例えば、ロスレスＤＣＴを用いてＪＰＥＧ符号化した符号化データを、通常のＪＰＥＧデコーダで復号するといった状況が考えられる。その際、ロスレスＤＣＴの変換精度の違いが、復号した画像信号との差となって表れ画質に影響を与える。これは、ロスレス変換が線形変換に近ければ近い方が良いことを示す典型的な例である。
【００１５】
その他、ロスレス符号化とロッシー符号化とで同じ種類の変換を用いる場合、ロスレス変換が必要となる。そしてロッシー符号化時の符号化効率を考慮すると、該ロスレス変換が線形変換に近ければ近い方が良いといった技術的な背景がある。
【非特許文献１】小松邦紀、瀬崎薫、「可逆的離散コサイン変換とその画像情報圧縮への応用」、信学技報、ＩＥ９７−８３，ｐｐ．１〜６、１９９７年１１月
【発明の開示】
【発明が解決しようとする課題】
【００１６】
これまでのロスレス４点直交変換の処理方法では、乗算処理が１２回或いは１５回と多く必要であった。乗算回数が少ない方を選べば丸め処理の回数が１２回になり、丸め処理が５回で済む方を選べば乗算回数が１５回になる。
【００１７】
また乗算係数が特殊（ａ＝１）で、乗算を必要としないロスレス４点アダマール変換処理においても、バタフライ演算を用いた場合には８回の加減算処理と２回以上の丸め処理が必要である。これでは演算回数が増えて処理速度が遅くなったりハードウェア規模が大きくなるという問題がある。
【００１８】
本発明は上記従来例に鑑みてなされたもので、本発明の特徴は、少ない演算処理で、或は小さい回路規模でロスレス直交変換処理を実行できるデータ変換処理装置及びその方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明の一態様に係るデータ変換処理装置は以下のような構成を備える。即ち、
４つの整数データ（Ｘ0、Ｘ1、Ｘ2、Ｘ3）を入力とし、４つのデータ（Ｙ0、Ｙ1、Ｙ2、Ｙ3）に直交変換するデータ変換処理装置であって、前記Ｘ3に前記Ｘ2を加算する加算手段と、前記Ｘ0から前記Ｘ1を減算する減算手段と、前記加算手段から得られる結果と前記減算手段から得られる結果との差を表すデータを、１ビットだけ右にシフトして整数化したデータを生成する生成手段と、前記整数化したデータと前記Ｘ2との間で加減算する第１の加減算手段と、前記整数化したデータと前記Ｘ1との間で加減算する第２の加減算手段と、前記第２の加減算手段の出力と、前記加算手段の出力との間で加減算する第３の加減算手段と、前記第１の加減算手段の出力と、前記減算手段の出力との間で加減算する第４の加減算手段とを有し、前記第１の加減算手段の演算の結果をＹ1、前記第２の加減算手段の演算の結果をＹ2、前記第３の加減算手段の演算の結果をＹ3、前記第４の加減算手段の演算の結果をＹ0として出力することを特徴とする。
【００２０】
また本発明の一態様に係るデータ変換処理方法は以下のような工程を備える。即ち、
４つの整数データ（Ｘ0、Ｘ1、Ｘ2、Ｘ3）を入力とし、４つのデータ（Ｙ0、Ｙ1、Ｙ2、Ｙ3）に直交変換するデータ変換処理装置のデータ変換処理方法であって、前記Ｘ3に前記Ｘ2を加算する加算工程と、前記Ｘ0から前記Ｘ1を減算する減算工程と、前記加算工程で得られる結果と前記減算工程で得られる結果との差を表すデータを、１ビットだけ右にシフトして整数化したデータを生成する生成工程と、前記整数化したデータと前記Ｘ2との間で加減算する第１の加減算工程と、前記整数化したデータと前記Ｘ1との間で加減算する第２の加減算工程と、前記第２の加減算工程の演算の結果と、前記加算工程の演算の結果との間で加減算する第３の加減算工程と、前記第１の加減算工程の演算の結果と、前記減算工程の演算の結果との間で加減算する第４の加減算工程とを有し、前記第１の加減算工程の演算の結果をＹ1、前記第２の加減算工程の演算の結果をＹ2、前記第３の加減算工程の演算の結果をＹ3、前記第４の加減算工程の演算の結果をＹ0として出力することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、少ない演算処理でロスレス直交変換処理やロスレスアダマール変換処理を実行できるという効果がある。
【００２２】
また本発明によれば、小さい回路規模でロスレス直交変換処理やロスレスアダマール変換処理を実行できる。
【発明を実施するための最良の形態】
【００２３】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００２４】
［実施の形態１］
上記従来技術で説明したように、前述の非特許文献１において、ロスレス２点変換を実現するための構成が図３に示されている。図３の簡単な説明は従来技術のところでも述べたが、ここでは本実施の形態への展開を考慮して回転角を（−２θ）として再度説明する。
【００２５】
回転角を（−２θ）とした場合、１段目の梯子演算部の乗算部３１１において、一方のデータ（Ｘ1）に（−ＴＡＮ（θ））を乗算した後、この乗算で発生した小数点以下のデータを整数化するための丸め処理を丸め処理部３１３にて行ない、この丸め処理した結果を加算部３１５により、もう一方のデータ（Ｘ0）に加算する。
【００２６】
２段目の梯子演算部における乗算係数をＳＩＮ（２θ）、３段目の梯子演算部における乗算係数を（−ＴＡＮ（θ））にして、２段目、３段目の梯子演算部においても同様の処理を行なう。他の文献等を見ても、２点ロスレス変換を梯子演算で構成した例は、このような３段のものしか示されていない。
【００２７】
ここで、２段目の梯子演算の乗算部３２１の乗算係数を半分（ＳＩＮ（２θ）／２）にして２段に置き換えた構成を図５（Ａ）に示す。丸め処理を無視すれば、図５（Ａ）の構成の処理内容は次のように解釈できる。
【００２８】
変換処理による回転角度を（−２θ）とすると、前段２段の梯子演算５０１で（−θ）回転して、後段の２段の梯子演算５０２で（−θ）回転し、全体で（−２θ）回転する。ここでは前段２段の梯子演算５０１と後段２段の梯子演算５０２の回転角は同じだが、前段２段の梯子演算５０１による回転変換では変換データが正規化されておらず、回転角（−θ）に依存したスケーリング係数（ＣＯＳ（θ））が２つの変換データに重み付けされている。このスケーリング係数は、梯子演算５０１の上側出力では１／ＣＯＳ（θ）で、下側出力ではＣＯＳ（θ）である。そして後段２段の梯子演算５０２では、上述の重み付けされた非正規化データを回転処理しながら、逆の重み付けをして、最終的に正規化した回転変換データを生成する。
【００２９】
従来は、図４の回転処理の内容をここまで分解しても何も得るものが無かった。そればかりか、逆に乗算や丸め処理が増えてしまい、このような構成は無駄が多くて価値のないものであった。ところが、本願発明人はこの分解によって、新しい見方とそれに基づいた新たなロスレス４点変換の構成を見い出した。その構成では、図５（Ａ）の構成を基本的な構成要素として用いる。また後述する実施の形態３も図５（Ａ）の構成なくしては考えられない。よって、図５（Ａ）の構成そのものに発明性があると考え、本発明の実施の形態１とする。
【００３０】
［実施の形態１の変形例］
図５（Ａ）（Ｂ）及び図６（Ａ）（Ｂ）は、本発明の実施の形態１に係るロスレス４点直交変換を説明するブロック図である。
【００３１】
図５（Ａ）の構成に対して、更に図５（Ｂ）及び図６（Ａ），（Ｂ）に示すような変形例が考えられる。
【００３２】
図５（Ｂ）は、図５（Ａ）の梯子演算における乗算係数の正負を反転すると共に、梯子演算の梯子の向きを、図５（Ａ）に対して全て反転したものである。従って図５（Ｂ）の機能は、図５（Ａ）と全く同じである。
【００３３】
図６（Ａ）は、図５（Ａ）と梯子演算の向きを同じにし、梯子演算における乗算係数の正負を図５（Ａ）に対して反転させたものである。
【００３４】
図６（Ｂ）は、図５（Ａ）の梯子演算における乗算係数を同じにし、梯子演算の梯子の向きを全て図５（Ａ）に対して反転させたもので、言い換えると、図５（Ｂ）の乗算係数の正負を反転したものである。図６（Ｂ）の機能は図６（Ａ）と全く同じである。
【００３５】
次に、上記変形例に対する補足説明を行う。
【００３６】
回転処理における回転方向を反転するには２つの方法があり、１つは梯子演算における乗算係数の正負を反転する方法、もう１つは梯子演算の梯子の向きを反転する方法である。このうち前者を図５（Ａ）に適用したものが図６（Ａ）、後者を図５（Ａ）に適用したものが図６（Ｂ）、両方を図５（Ａ）に適用したものが図５（Ｂ）である。図５（Ｂ）のように両方を適用すると、回転方向が反転の反転で元に戻るため、図５（Ｂ）の回転方向は図５（Ａ）と同じになる。
【００３７】
図５（Ａ）と図５（Ｂ）は機能的には同一であるが、内部データの重み付けが異なる。既に説明したように、図５（Ａ）のロスレス変換５０１の出力データには、スケーリング係数１／ＣＯＳ（θ）とＣＯＳ（θ）がそれぞれ重み付けされている。それに対し、図５（Ｂ）のロスレス変換５０３の出力データには、前記スケーリング係数のそれぞれの逆数であるＣＯＳ（θ）と１／ＣＯＳ（θ）がそれぞれ重み付けされている。そして図５（Ｂ）のロスレス変換５０４は、これに対応した回転と正規化を行なうようになっている。これが図５（Ａ）と図５（Ｂ）の構成上の違いである。
【００３８】
同様に図６（Ａ）と図６（Ｂ）も機能的には同一であるが、上述したように内部データの重み付けが逆数の関係になっている。
【００３９】
図５（Ａ），（Ｂ）及び図６（Ａ），（Ｂ）はフローチャートの形式で示されていないが、左の梯子演算から順番に演算するだけで容易にロスレス直交変換がソフトウェアで実現できるし、ハードウェア化も容易である。
【００４０】
一般的に、論文等においても、ＤＣＴや直交変換等の処理をフローチャートで表現することは少なく、図１〜図６に示したシグナルフロー形式で表現されることが多い。それは、この表現形式がソフトウェアでの実現とハードウェアでの実装の両方に対応できるからである。よって、以下に示す図もすべてシグナルフロー形式とする。
【００４１】
［実施の形態２］
本発明の実施の形態２では、前述の実施の形態１の基本構成を組み合わせた４点直交変換方法と変換装置について説明する。まず、実施の形態２の基本形を図７に示す。同図において係数ａ＝ＴＡＮ（θ）である。
【００４２】
図７は、本発明の実施の形態２に係るロスレス４点直交変換を説明するブロック図である。
【００４３】
図７の構成は、前述の実施の形態１で説明した図５（Ａ）と図５（Ｂ）とを用いて、（正規化データ入力、正規化データ出力の）正規４点直交変換のロスレス変換を行なうものである。各基本構成における回転角は２θとする。
【００４４】
４つの入力データは、ロスレス変換５０１，５０３にてロスレス変換され、重み付きの中間データが生成される。この中間データは上から順に、１／ＣＯＳ（θ）、ＣＯＳ（θ），ＣＯＳ（θ），１／ＣＯＳ（θ）という重み付けがなされている。ここで同じ重みを持つ２番目と３番目のデータを入れ替えて、次のロスレス変換５０２，５０４に入力することにより、その重みを取り除くと共にロスレス回転変換を行なう。
【００４５】
ここで丸め処理を無視した時、即ち、線形変換としてみたときの変換処理結果は、上から順に、以下のような結果となる。
［数１］
Ｙ0＝（Ｘ0−ａＸ1−ａＸ2＋ａ2Ｘ3）／（１＋ａ2）
Ｙ1＝（ａＸ0−ａ2Ｘ1＋Ｘ2−ａＸ3）／（１＋ａ2）
Ｙ2＝（ａＸ0＋Ｘ1−ａ2Ｘ2−ａＸ3）／（１＋ａ2）
Ｙ3＝（ａ2Ｘ0＋ａＸ1＋ａＸ2＋Ｘ3）／（１＋ａ2）
入力データに対する乗算係数をベクトルとしてみると、４つの変換式に対応する４つのベクトルは全て互いに直交している（内積が「０」になる）ことが分かる。また、ベクトルの絶対値も「１」になっているので、４点正規直交変換が実現できている。
【００４６】
従来の方式では、４つの回転処理からなる４点正規直交変換は、４つの回転処理の回転角が同じ場合でも、各々の回転処理を３段の梯子演算に置き換えて、計１２個の梯子演算で実現する方法しかなかったが、本実施の形態では、８段の梯子演算で実現できる。
【００４７】
従来のロスレス変換においては、各々の梯子演算に丸め処理が入るので、従来は１２回の丸め処理が必要であったものが、本実施の形態２によれば、図７に示すように８回の丸め処理で済み、線形変換に対する変換誤差を減らすことができる。
【００４８】
［実施の形態２の変形例１］
使用する２つのロスレス２点変換は図５（Ａ）と図６（Ａ）の組み合せであってもよい。図６（Ａ）の回転方向は図５（Ａ）の逆方向になので、これに対応して図６（Ａ）側に入力する２つのデータを交換する。この構成を図８に示す。
【００４９】
図８は、本発明の実施の形態２の変形例１に係るロスレス４点直交変換を説明するブロック図である。
【００５０】
この変形例が意味することは、回転方向が逆方向のもの２つからでもロスレス４点直交変換を構成できるということである。
【００５１】
図８の構成から得られる４点直交変換の変換式を以下に示す。但し、丸め処理は無視して、線形変換として見た時の変換式である。上述した図７の変換式（数１）と較べると３つ目と４つ目の式が入れ替わっていることが分かる。これは入力データの交換と回転処理の方向が逆になっているのに対応している。
［数２］
Ｙ0＝（Ｘ0−ａＸ1−ａＸ2＋ａ2Ｘ3）／（１＋ａ2）
Ｙ1＝（ａＸ0−ａ2Ｘ1＋Ｘ2−ａＸ3）／（１＋ａ2）
Ｙ2＝（ａ2Ｘ0＋ａＸ1＋ａＸ2＋Ｘ3）／（１＋ａ2）
Ｙ3＝（ａＸ0＋Ｘ1−ａ2Ｘ2−ａＸ3）／（１＋ａ2）
［実施の形態２の変形例２］
更に図７の構成を図９の構成に変形すると、丸め処理の回数を少なくでき、更に変換誤差を減らすことが出来る。
【００５２】
図９は、本発明の実施の形態２の変形例２に係るロスレス４点直交変換を説明するブロック図である。
【００５３】
図９では、図７におけるロスレス変換５０１の２段目の梯子演算の丸め処理とロスレス変換５０４の１段目の梯子演算の丸め処理を一体化する。即ち、両者の乗算結果を加算した後、まとめて１回丸め処理をして、その結果を加算対象となるデータに加算してもロスレス性は保たれる。
【００５４】
また図７の変換部５０３の２段目の梯子演算の丸め処理と変換部５０２の１段目の梯子演算の丸め処理も同様に、１つの丸め処理で一体化できる。
【００５５】
次に、このように一体化した丸め処理を梯子演算における３つめの処理である加算処理の後に移動する。こうして移動した丸め処理部を８０１，８０３で示している。このような移動が可能なのは、round（）を丸め関数、Ｒを実数、Ｎを整数とした時に以下の関係が成り立つからである。
［数３］
round（Ｒ）＋Ｎ＝round（Ｒ＋Ｎ）
ここで左辺は、移動前の丸め処理、右辺が移動後の丸め処理に対応している。この数式（３）は、実数に整数を加算してから丸め処理しても、実数を丸め処理した後、その丸め処理した整数を加算しても同じ結果になることを示している。この実数は、図９の新たな丸め処理部８０１，８０３より手前の梯子演算２段及び３段の各乗算結果の和に対応する。尚、本発明の実施の形態に係る丸め処理としては、最も一般的な四捨五入でもよいし、切り捨て或いは切り上げ処理でもよい。
【００５６】
［実施の形態２の変形例３］
図７の構成は図１０の構成のようにも変形できる。
【００５７】
図１０は、本発明の実施の形態２の変形例３に係るロスレス４点直交変換を説明するブロック図である。
【００５８】
図１０は、図７の構成における乗算係数｛ａ／（１＋ａ×ａ）｝の乗算を共通化したもので、当業者がみれば容易に分かる変形である。９０１は共通化した乗算処理部である。９０３は減算処理で、乗算を共通化するためにデータを一本化している。９０５は丸め処理部で、乗算処理部９０１の乗算結果を整数化している。９０７と９０９は加算処理部で、それぞれ整数化したデータを別のデータに加算している。その他の処理部はこれまでに出てきているものである。
【００５９】
この図１０の構成の特徴は、ロスレス２点直交変換２個分の演算規模よりも、このロスレス４点直交変換の演算規模の方が小さいということである（減算処理が１つ増えているが、それよりも複雑な演算である乗算が１つ減っている。ハードウェアではこの差は大きい）。
【００６０】
但し、図１０のように変形してしまうと、梯子演算のみで全て処理しているとはいえなくなってしまう。しかし、梯子演算を次のように拡張することで、図１０の構成も全て梯子演算で処理していると解釈することができる。
【００６１】
通常の梯子演算は、１入力１出力形式であるが、図１０の９０１，９０３，９０５，９０７，９０９を含む構成を２入力２出力形式の梯子演算と考える。これを更に一般化すると、ｎ入力ｍ出力の梯子演算も考えられる。但し、乗算処理部の数は１つに限定する。また、１つの乗算処理部に対して複数入力のデータを一本化するための加減算処理部が、拡張梯子演算には必要となる。
【００６２】
このような拡張梯子演算を導入することによって、図１０の構成は、１入力１出力形式の梯子演算４つと２入力２出力形式の梯子演算１つから構成されていると言うことができる。
【００６３】
図１０の構成から丸め処理を取り除くと、線形の４点直交変換を少ない演算量で実現することができる。その構成は図１０から５つの丸め処理部を取り除いただけである。その構成を図１１に示す。
【００６４】
この図１１の構成は図１０に似ているので、この変形例に含めているが、ロスレス変換よりも汎用性のある線形直交変換の高速演算法として有効である。さらに図１１の構成は図１８のように変形でき、梯子演算の乗算処理は最終的に４つまで減らすことができる。この図１８の構成においても注意深く丸め処理を導入すれば、ロスレス変換が可能であることは言うまでもない。尚、図１８において、１８０１は係数ａを乗算する乗算器、１８０３は加算器、１８０５は減算器である。
【００６５】
［実施の形態２の変形例４］
更に図７において、ａ＝ＴＡＮ（θ）＝１の時、図７に示す４点直交変換はロスレス４点アダマール変換となる。
【００６６】
通常、アダマール変換を行なう際は、入力データを並び替えるのが一般的である（例えば、Ｘ0とＸ3の間でバタフライ演算を行なう）が、ここでは、入力データの並び替えは行なわず、その代わりに出力データの並び替えを行なった。
【００６７】
図７でａ＝１にして、出力の並び替えを行なった構成を図１２に示す。
【００６８】
図１２は、本発明の実施の形態２の変形例４に係るロスレス４点直交変換を説明するブロック図である。
【００６９】
梯子演算における乗算係数が整数値の場合、小数点以下の値は「０」のままなので丸め処理は不要となり、その分、丸め処理が少なくなる。また、乗算係数（１／２）はビットシフトのみで実現できる処理なので、乗算器も不要となる。
【００７０】
図１２の構成は当然のことながら、前述の変形例２（図９）、変形例３（図１０）のように変形できる。図１０のように変形した場合の構成は重要な意味があるので、その構成を図１３に示す。
【００７１】
図１３は、図１０でａ＝１とした場合のロスレス４点直交変換を説明するブロック図である。
【００７２】
図１３の構成をみると、ビットシフト（１／２）１３００と１回の丸め処理１３０１と、７回の加減算処理１３０２〜１３０８で演算できる。この演算量は、線形のアダマール変換では高速演算として当たり前のように用いられるバタフライ演算で実現した時の演算量（加減算８回）よりも少ない。
【００７３】
一方、ロスレス４点アダマール変換の構成は、下記の文献２に示されている。この文献２では、該ロスレス変換を実現するために、４点アダマール行列を三角行列に分解して、それを梯子演算に置き換えるといった複雑な手順で実現しているが、その構成は、本実施の形態２の変形例４から得られた図１２の構成より加算処理が１つ多く、８回の加減算処理を要している。本実施の形態２を用いた場合、一般化したロスレス４点直交変換の特殊解として得られる上に、僅かな変形で加減算器の数が最小となる構成が得られる。
【００７４】
（文献２）福間慎治、大山公一、岩橋政宏、神林紀、「ロスレスアダマール変換を応用したロスレス８点高速離散コサイン変換」、信学技報、ＩＥ９９−６５、ｐｐ．３７−４４、１９９９年１０月
［実施の形態２の適用例］
図２に示す４点ＤＣＴ演算では、（３π／８）の回転処理が必要である。この回転角（３π／８）は、変換空間の軸の交換や正負反転などの操作により、（π／８）の回転処理に変えることもできるが、ここでは（３π／８）の回転処理のまま扱う。この４点ＤＣＴを２次元化して、水平方向処理と垂直方向の処理の一部の順序を交換すると、途中の処理として局所的に以下のような演算が現われる。
【００７５】
【数４】
2008167419.tif 000003
【００７６】
この数式（４）において、Ｘ11，Ｘ12，Ｘ21，Ｘ22は演算途中のデータであり、このデータの左側の変換行列を水平方向処理に対応付けると、このデータの右側の変換行列は垂直方向処理に対応する。どちらの変換行列も（３π／８）の回転処理を表わす。線形変換ではどちらの変換処理から先に行なってもよい（この時点ではまだロスレス化のための丸め処理が入っていないのでロスレス変換ではなく、線形変換である）が、ここでは左側の変換行列から先に処理を行なうものとする。
【００７７】
この変換処理を細かく見ていくと、（Ｘ11，Ｘ21），（Ｘ12，Ｘ22）という２個２組のデータに対して各々に（３π／８）の回転処理を行なった後、この変換結果の転置、即ち、一部のデータを交換して再度（３π／８）の回転処理を行なうものである。この処理をロスレス変換として実現するのが、前述の図５〜図９に示す構成において、θ＝３π／８とした場合である。
【００７８】
［実施の形態３］
実施の形態３では、前述の実施の形態１で説明した図５（Ａ）と（Ｂ）、それに、データ切り替え部を用いて、２点直交変換と４点直交変換の切り替えが可能な直交変換処理を提供する。この構成を図１４に示す。
【００７９】
図１４は、本発明の実施の形態３に係るロスレス４点直交変換を説明するブロック図である。
【００８０】
この構成で新たに登場する構成要素は、データ切り替え部１２０１である。不図示の制御信号に基づいて、このデータ切り替え部１２０１によりデータの流れを切り替えればロスレス４点直交変換となり、データを切り替えなければ２組のロスレス２点直交変換となる。
【００８１】
［実施の形態３の変形例］
前述の実施の形態２では、図７に示す構成を図１０に示す構成まで簡略化できたが、この実施の形態３では２種類の機能を実現するため、そこまで簡略化することはできない。しかし、図１５に示す構成に変形することができる。
【００８２】
図１５は、本発明の実施の形態３の変形例に係るロスレス４点直交変換を説明するブロック図である。
【００８３】
この図１５では、図１４における係数｛ａ／（１＋ａ×ａ）｝を乗算する乗算器と、係数｛−ａ／（１＋ａ×ａ）｝を乗算する乗算器とそれぞれ１つにまとめることにより、乗算の回数をロスレス２点直交変換２個分と同じ数である６回に減らしている。
【００８４】
［実施の形態４］
実施の形態４では、これまで説明した梯子演算を適用した場合のロスレス２次元ＤＣＴ変換部により変換して得られたＤＣＴ係数を量子化及びハフマン符号化して画像データ等を符号化する場合で説明する。
【００８５】
一般的に２次元ＤＣＴと言えば、ＪＰＥＧなどで用いられている８×８のブロックサイズが使用されるが、ここでは４×４のロスレス２次元ＤＣＴ変換の場合で示す。４×４の２次元ＤＣＴを８×８の２次元ＤＣＴへ拡張するのは、公知の技術で対応できる。
【００８６】
４点ＤＣＴの変換行列Ｍｄｃｔを次のように表わし、
【００８７】
【数５】
2008167419.tif 000004
【００８８】
元の４×４データを、ｄ00，ｄ01，ｄ02，...，ｄ32，ｄ33で表わすと、４×４の２次元ＤＣＴは以下のように数式で表現される。
【００８９】
【数６】
2008167419.tif 000005
【００９０】
上式において、ｘ00，ｘ01，ｘ02，...，ｘ32，ｘ33は、元のデータを２次元アダマール変換したデータを示している。丸め処理を入れてロスレス化を図ったロスレス２次元アダマール変換には、特願２００２−１９３２９８に記載の変換方法を用いることができる。
【００９１】
ロスレス２次元アダマール変換後のデータに対して、水平方向のロスレス回転変換と垂直方向のロスレス回転変換を行うと、ロスレス２次元ＤＣＴ変換となる。水平方向のロスレス回転変換は、ｘ01とｘ03，ｘ11とｘ13，ｘ21とｘ23，ｘ31とｘ33の４組のデータに対して行い、垂直方向のロスレス回転変換は、水平変換の結果である、ｘ10とｘ30，ｘ11とｘ31，ｘ12とｘ32，ｘ13とｘ33の４組のデータに対して行う。
【００９２】
図１６は、本発明の実施の形態４に係る４×４ロスレス２次元ＤＣＴ変換を説明するブロック図である。
【００９３】
図１６において、ｘ01とｘ03，ｘ21とｘ23の２組のデータに対しては水平方向のみのロスレス回転変換１６０１，１６０２、ｘ10とｘ30，ｘ12とｘ32の２組のデータに対しては垂直方向のみのロスレス回転変換１６０３，１６０４を行い、ｘ11とｘ13，ｘ31，ｘ33の１組のデータに対しては、水平方向と垂直方向のロスレス２次元回転変換１６０５を行っている。
【００９４】
水平方向又は垂直方向のみのロスレス回転変換１６０１〜１６０４のそれぞれは、図３に示す従来の３段の梯子演算で行い、ロスレス２次元回転変換１６０５は、図９又は図１０に示す構成の梯子演算で行うことで実現できる。回転変換を一切行わない他のデータｘ00とｘ02，ｘ20，ｘ22は、ロスレス２次元アダマール変換係数がそのままロスレス２次元ＤＣＴ変換係数となる。
【００９５】
図１７は、本発明の実施の形態４に係るロスレス符号化が可能な符号化処理を説明するブロック図である。
【００９６】
図１６に示すロスレス２次元ＤＣＴ変換処理１７０１を最初に行い、その後、量子化処理１７０２、ハフマン符号化処理１７０３を行うことにより符号化データが得られる。ここで量子化ステップが全て「１」の時にロスレス符号化を行うことができる。即ち、図１６のロスレス２次元ＤＣＴ変換１６０５とロスレス逆変換の関係にあるロスレス２次元逆ＤＣＴ変換を復号処理で行えば、量子化ステップが全て「１」の時に、元のデータを完全に復号できる。
【００９７】
よって、符号化処理時の量子化ステップの設定により、ロスレス符号化から非ロスレスで劣化のある高圧縮符号化まで連続的に圧縮及び伸張画像の画質を制御できる。
【００９８】
［他の実施の形態］
本発明の目的は前述したように、実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００９９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
【０１００】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含む。
【０１０１】
以上説明したように本実施の形態によれば、少ない演算処理で変換精度の良い、ロスレス４点直交変換処理方法および装置を提供できるようになった。具体的には、最適化した構成で５回の乗算と５回の丸め処理でロスレス４点直交変換を実現できる。
【０１０２】
また従来は、１２回の乗算と１２回の丸め処理、又は１５回の乗算と５回の丸め処理を要していたのに対して、変換精度がほぼ同じもの（丸め処理回数が同じもの）と較べても乗算回数を１／３に減らすことができた。
【図面の簡単な説明】
【０１０３】
【図１】一般的な８点ＤＣＴの１つの演算方法を説明するブロック図である。
【図２】一般的な４点ＤＣＴの１つの演算方法を説明するブロック図である。
【図３】従来のロスレス２点直交回転変換処理部の構成を示すブロック図である。
【図４】従来のロスレス４点直交変換処理部の構成を示すブロック図である。
【図５】本発明の実施の形態１に係るロスレス４点直交変換を説明するブロック図である。
【図６】本発明の実施の形態１に係るロスレス４点直交変換を説明するブロック図である。
【図７】本発明の実施の形態２に係るロスレス４点直交変換を説明するブロック図である。
【図８】本発明の実施の形態２の変形例１に係るロスレス４点直交変換を説明するブロック図である。
【図９】本発明の実施の形態２の変形例２に係るロスレス４点直交変換を説明するブロック図である。
【図１０】本発明の実施の形態２の変形例３に係るロスレス４点直交変換を説明するブロック図である。
【図１１】実施の形態２の変形例３から丸め処理部を取り除いた構成で高速線形４点直交変換処理を実現する構成を示す図である。
【図１２】本発明の実施の形態２の変形例４に係るロスレス４点直交変換を説明するブロック図である。
【図１３】本発明の実施の形態２の変形例５に係るロスレス４点直交変換（ロスレスアダマール変換）を説明するブロック図である。
【図１４】本発明の実施の形態３に係るロスレス４点直交変換を説明するブロック図である。
【図１５】本発明の実施の形態３の変形例に係るロスレス４点直交変換を説明するブロック図である。
【図１６】本発明の実施の形態４に係る４×４ロスレス２次元ＤＣＴ変換を説明するブロック図である。
【図１７】本発明の実施の形態４に係るロスレス符号化が可能な符号化処理を説明するブロック図である。
【図１８】実施の形態２の変形例３から丸め処理部を取り除いた構成に変更を加えて線形４点直交変換処理を実現する構成を示す図である。
【図１】
2008167419.tif 000006
【図２】
2008167419.tif 000007
【図３】
2008167419.tif 000008
【図４】
2008167419.tif 000009
【図５】
2008167419.tif 000010
【図６】
2008167419.tif 000011
【図７】
2008167419.tif 000012
【図８】
2008167419.tif 000013
【図９】
2008167419.tif 000014
【図１０】
2008167419.tif 000015
【図１１】
2008167419.tif 000016
【図１２】
2008167419.tif 000017
【図１３】
2008167419.tif 000018
【図１４】
2008167419.tif 000019
【図１５】
2008167419.tif 000020
【図１６】
2008167419.tif 000021
【図１７】
2008167419.tif 000022
【図１８】
2008167419.tif 000023