(57)【特許請求の範囲】
【請求項１】
整数表現された４つの入力データを、周波数空間上の、整数で表される１つのＤＣ変換係数と３つのＡＣ変換係数に変換し、出力するデータ変換装置であって、
４つの入力データをすべて加算した加算結果の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、整数化したＤＣ変換係数を生成するＤＣ変換係数生成部と、
前記４つの整数の入力データから２つのデータの和を３つ生成する加算データ生成部と、
該３つの加算データそれぞれと、前記ＤＣ変換係数生成部で得られたＤＣ変換係数とを加減算して、３つの整数のＡＣ変換係数を生成するＡＣ変換係数生成部とを備え、
前記ＤＣ変換係数生成部で生成されたＤＣ変換係数、及び、前記ＡＣ変換係数生成部で生成された３つのＡＣ変換係数を、ロスレスアダマール変換結果として出力することを特徴とするデータ変換装置。
【請求項２】
整数表現された４つの入力データを、周波数空間上の、整数で表される１つのＤＣ変換係数と３つのＡＣ変換係数に変換し、出力するデータ変換装置であって、
４つの入力データをすべて加算した加算結果の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、整数化したＤＣ変換係数を生成するＤＣ変換係数生成部と、
前記４つの入力データ中の１つの入力データと、該入力データを除く他の３つの入力データの和との間の差分値の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、中間データを生成する中間データ生成部と、
該中間データを、前記他の３つの入力データそれぞれに加減算して、３つの整数のＡＣ変換係数を生成するＡＣ変換係数生成部とを備え、
前記ＤＣ変換係数生成部で生成されたＤＣ変換係数、及び、前記ＡＣ変換係数生成部で生成された３つのＡＣ変換係数を、ロスレスアダマール変換結果として出力することを特徴とするデータ変換装置。
【請求項３】
整数表現された４つの入力データを、周波数空間上の、整数で表される１つのＤＣ変換係数と３つのＡＣ変換係数に変換し、出力するデータ変換装置の制御方法であって、
ＤＣ変換係数生成部が、４つの入力データをすべて加算した加算結果の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、整数化したＤＣ変換係数を生成するＤＣ変換係数生成工程と、
加算データ生成部が、前記４つの整数の入力データから２つのデータの和を３つ生成する加算データ生成工程と、
ＡＣ変換係数生成部が、該３つの加算データそれぞれと、前記ＤＣ変換係数生成工程で得られたＤＣ変換係数とを加減算して、３つの整数のＡＣ変換係数を生成するＡＣ変換係数生成工程とを備え、
前記ＤＣ変換係数生成工程で生成されたＤＣ変換係数、及び、前記ＡＣ変換係数生成工程で生成された３つのＡＣ変換係数を、ロスレスアダマール変換結果として出力することを特徴とするデータ変換装置の制御方法。
【請求項４】
整数表現された４つの入力データを、周波数空間上の、整数で表される１つのＤＣ変換係数と３つのＡＣ変換係数に変換し、出力するデータ変換装置の制御方法であって、
ＤＣ変換係数生成部が、４つの入力データをすべて加算した加算結果の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、整数化したＤＣ変換係数を生成するＤＣ変換係数生成工程と、
中間データ生成部が、前記４つの入力データ中の１つの入力データと、該入力データを除く他の３つの入力データの和との間の差分値の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、中間データを生成する中間データ生成工程と、
ＡＣ変換係数生成部が、前記中間データを、前記他の３つの入力データそれぞれに加減算して、３つの整数のＡＣ変換係数を生成するＡＣ変換係数生成工程とを備え、
前記ＤＣ変換係数生成工程で生成されたＤＣ変換係数、及び、前記ＡＣ変換係数生成工程で生成された３つのＡＣ変換係数を、ロスレスアダマール変換結果として出力することを特徴とするデータ変換装置の制御方法。
【請求項５】
コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項１又は２に記載のデータ変換装置として機能させることを特徴とするコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、整数データを可逆アダマール変換し、変換結果を出力するデータ変換技術に関するものである。
【背景技術】
【０００２】
画像、特に多値画像は非常に多くの情報を含んでおり、蓄積のためには膨大なメモリを必要とし、伝送には多くの時間を要するという問題がある。このため画像の蓄積、伝送に際しては、画像の持つ冗長性を除く処理、或いは画質の劣化が視覚的に認識し難い程度で画像の内容を変更することによって、そのデータ量を削減する高能率符号化が用いられる。
【０００３】
例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＥＰＧでは、画像データをブロックごと（８×８画素）に離散コサイン変換（ＤＣＴ）して、ＤＣＴ変換係数を得る。そして、そのＤＣＴ変換係数を各々量子化し、さらにエントロピー符号化するという処理手順を経ることで、画像データを圧縮している。このＤＣＴを利用する圧縮技術として、ＪＰＥＧ以外にも、Ｈ２６１，ＭＰＥＧ−１／２／４等が知られている。
【０００４】
このＤＣＴ変換の一部の処理として、あるいは、画像データを変換する処理としてアダマール変換がある。アダマール変換は変換行列の要素が１又は−１のみから成る直交変換で、加算と減算のみで実現できるもっともシンプルな直交変換である。
【０００５】
２点アダマール変換の変換行列Ｈ2は、以下の数式（１）ように定義される。
【０００６】
【数１】
0005004987.tif 000002
【０００７】
一般的なＮ（＝２n）点アダマール変換行列ＨNは、Ｎ／２点アダマール変換行列ＨN/2と上記２点アダマール変換行列Ｈ2との間のクロネッカー積で再帰的に定義することができる。
【０００８】
【数２】
0005004987.tif 000003
【０００９】
例えば、上記定義から、４点アダマール変換行列は次のようになる。
【００１０】
【数３】
0005004987.tif 000004
【００１１】
この変換行列はナチュラル型と呼ばれるもので、基底ベクトルがシーケンシの順番に並んでいない。基底ベクトルの置換を繰り返して、２行目の基底ベクトルを４行目に移動し、元の３、４行目の基底ベクトルをそれぞれ１つ上の行に移動すると、基底ベクトルの順序がシーケンシ順序の変換行列ＷＨ4となる。
【００１２】
【数４】
0005004987.tif 000005
【００１３】
上記変換行列はウォルシュ型あるいはウォルシュアダマール変換行列と呼ばれている。アダマール変換は可逆な直交変換であることが知られており、上記ナチュラル型、ウォルシュ型のいずれも可逆な変換が可能である上、変換行列が対称行列になっている。
【００１４】
ナチュラル型のアダマール変換行列Ｈ4の基底ベクトルを置換して得られる対称行列は、ウォルシュ型以外にも存在する。対角成分が＋１といった特徴を持つ次に示す変換行列Ｔ4である。
【００１５】
【数５】
0005004987.tif 000006
【００１６】
本発明では、この型のアダマール変換を用いる例を説明する。
【００１７】
先に説明したように、アダマール変換は可逆変換であると一般的に言われている。しかしながら、これはあくまで数学的に可逆であるという意味である。すなわち、変換時および逆変換において演算誤差が発生しないことを前提としており、そのためのデータ形式として固定小数点あるいは浮動小数点で演算を行なう必要がある。また、変換処理後の有効桁数をすべて保持する必要もある。
【００１８】
しかし、変換符号化、特に可逆の変換符号化に用いるアダマール変換では、変換処理後に有効桁数を少しでも減らしたい。具体的には、整数の入力のデータを変換処理して発生する小数点以下のデータは、明らかに入力データより増加した桁数（情報）と捉えることができるので、この小数点以下のデータを無くしたい。ところが、この小数点以下のデータを単純に丸め処理してしまうと可逆性は損なわれてしまう。例えば、
１２３、  ７８、  ８４、  ５６
の４つのデータを（５）式の変換行列でアダマール変換を行なうと、その変換結果は次のようになる。
１７０．５、  ３０．５、  ３６．５、  ８．５
これらを単純に小数点以下を四捨五入して整数化すると
１７１、  ３１、  ３７、  ９
となる。ここで、式（５）で示される変換行列は、転置行列である点に注意されたい。すなわち、上記整数化した結果を、再度、式（５）で変換することは、逆変換することと等価となり、その逆変換結果は、次のようになる。
１２４、  ７８、  ８４、  ５６
この結果を見ると、先頭データの“１２３”が、変換、そして、その逆変換により“１２４”になってしまう。つまり、整数化したデータを出力するアダマール変換は可逆性を保証できないことを意味する。
【００１９】
以下では、整数化したデータを出力するアダマール変換を整数型アダマール変換と呼び、可逆変換が可能な整数型アダマール変換を整数型可逆アダマール変換あるいはロスレスアダマール変換と呼ぶことにする。
【００２０】
ロスレス４点アダマール変換を実現する先行技術は２つに大別できる。１つはＬａｄｄｅｒ  Ｎｅｔｗｏｒｋ（梯子演算）を用いるものである。そして、もう１つは、線形アダマール変換の後に、或る規則の丸め処理を行うものである。
【００２１】
前者は非特許文献１に、後者は特許文献１に開示されている。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特開２００３−２５８６４５号
【非特許文献】
【００２３】
【非特許文献１】福間慎治、大山公一、岩橋政宏、神林紀、“ロスレスアダマール変換を応用したロスレス８点高速離散コサイン変換”、信学技報、ＩＥ９９−６５、ｐｐ．３７−４４、１９９９年１０月
【発明の概要】
【発明が解決しようとする課題】
【００２４】
非特許文献１では、該ロスレス変換を実現するために、４点アダマール変換行列を三角行列に分解して、それを梯子演算に置き換えるといった複雑な手順で実現している。図９がその構成の例である。図示のように、その回路構成は複雑であり、演算の内容も直感的に分かり難い。このため、ソフトウェアやハードウェアに実装する時にミスがあっても発見しにくい上に、演算処理量が少ないというわけでもない。
【００２５】
一方、後者の特許文献１に開示されている方法は、線形アダマール変換した小数点データの変換係数に対し、奇数個のデータの小数点以下を切り上げ処理し、他の奇数個のデータの小数点以下を切り捨て処理するものである。この特許文献１は、丸め処理の仕方を特徴としているのみであって、線形アダマール変換の演算を減らす工夫、丸め処理に要する処理量を減らす工夫などは成されていない。
【００２６】
このように、既存のロスレス４点アダマール変換は、可逆性に重点が置かれていたため、冗長な処理が行われており、変換処理を高速に行うには不向きであった。本発明はまさにかかる点を改善するものである。
【課題を解決するための手段】
【００２７】
かかる課題を解決するため、例えば本発明のデータ変換装置は以下の構成を備える。すなわち、
整数表現された４つの入力データを、周波数空間上の、整数で表される１つのＤＣ変換係数と３つのＡＣ変換係数に変換し、出力するデータ変換装置であって、
４つの入力データをすべて加算した加算結果の１／２の値に対し、小数点以下の切り上げ、もしくは、切り捨ての丸め処理のいずれかを適用して、整数化したＤＣ変換係数を生成するＤＣ変換係数生成部と、
前記４つの整数の入力データから２つのデータの和を３つ生成する加算データ生成部と、
該３つの加算データそれぞれと、前記ＤＣ変換係数生成部で得られたＤＣ変換係数とを加減算して、３つの整数のＡＣ変換係数を生成するＡＣ変換係数生成部とを備え、
前記ＤＣ変換係数生成部で生成されたＤＣ変換係数、及び、前記ＡＣ変換係数生成部で生成された３つのＡＣ変換係数を、ロスレスアダマール変換結果として出力することを特徴とする。
【発明の効果】
【００２８】
本発明によれば、ロスレスアダマール変換係数の生成において、ＤＣ変換係数の生成とＡＣ変換係数の生成とを分け、ＤＣ変換係数を先に生成し、該ＤＣ変換係数をＡＣ変換係数の生成に利用することにより、加減演算の回数を最小にすると共に、小数点データを整数化する丸め処理の回数を削減することが可能になる。また、コンピュータプログラムにより実現する場合には、マイクロプロセッサが有するＳＩＭＤ命令の制約下において、レジスタ保持データのコピー回数を削減することも可能になる。この結果、ロスレスアダマール変換処理におけるトータルの処理ステップ数や、ロスレスアダマール変換処理装置における回路規模の削減を図ることができる。
【図面の簡単な説明】
【００２９】
【図１】第１の実施形態におけるロスレス４点アダマール変換を行なうデータ処理装置の回路構成図である。
【図２Ａ】第１の実施形態の変形例におけるデータ処理装置の回路構成図である。
【図２Ｂ】図２Ａと等価なデータ処理装置の回路構成図である。
【図３】第２実施形態におけるデータ処理装置の回路構成図である。
【図４】第３の実施形態の変形例におけるデータ処理装置の回路構成図である。
【図５】第１の実施形態におけるロスレス４点アダマール変換をコンピュータプログラムで実行する場合の処理ステップを示す図である。
【図６】第２の実施形態におけるロスレス４点アダマール変換をコンピュータプログラムで実行する場合の処理ステップを示す図である。
【図７】第３の実施形態におけるロスレス４点アダマール変換をコンピュータプログラムで実行する場合の処理ステップを示す図である。
【図８】第２の実施形態の変形例におけるデータ処理装置の回路構成図である。
【図９】従来のロスレス４点アダマール変換装置の構成を示す図である。
【図１０】従来のロスレス４点アダマール変換方法の処理ステップを示す図である。
【図１１】第４の実施形態におけるデータ処理装置の回路構成図である。
【図１２】第４の実施形態の変形例におけるデータ処理装置の回路構成図である。
【図１３】第４の実施形態の変形例におけるデータ処理装置の回路構成図である。
【図１４】実施形態で説明する変換装置の可逆性を説明するための図である。
【発明を実施するための形態】
【００３０】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００３１】
［第１の実施形態］
本発明の第１実施形態におけるデータ変換装置の回路構成を図１に示す。同図において、１０１乃至１０４は、整数表現された４つの入力データＤ０，Ｄ１，Ｄ２，Ｄ３を入力するための端子である。１０６は該４つのデータを合算する４入力の合算器である。１０８は合算器１０６の合算結果（加算結果）を１ビット右シフトするシフタである。１１１は中間データを生成するための減算器である。１１２乃至１１４は、生成された中間データを、入力データ中のＤ１、Ｄ２、Ｄ３それぞれに加算する加算器である。そして、１２１乃至１２４はロスレスアダマール変換した結果（整数データＹ０、Ｙ１、Ｙ２、Ｙ３））を出力する端子である。なお、減算器１１１、加算器１１２乃至１１４はいずれも整数演算を行なうものである。
【００３２】
詳細は以下の説明から明らかになるが、参照番号５００は、入力した４つのデータから周波数空間上のＤＣ変換係数生成部として機能する。また、参照番号５０１は、１つの入力データとＤＣ変換係数の差分値を算出し、それを中間データとして出力する中間データ生成部として機能し、参照番号５０２が周波数空間上のＡＣ変換係数生成部として機能する。
【００３３】
次に、図１の構成の演算内容について説明する。
【００３４】
合算器１０６は入力端子１０１〜１０４から入力される４つのデータＤ０，Ｄ１，Ｄ２，Ｄ３の全てを加算し合い（合計を演算し）、その合計値（＝Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）をシフタ１０８に出力する。
【００３５】
本実施形態では、複数ビットで構成されるデータＸを右方向（下位方向）にｍビット分だけシフトすることを、“Ｘ＞＞ｍ”と表現する。シフタ１０８は、合算器１０６で算出した合計値を１ビット右シフトした整数値を求める。すなわち、シフタ１０８は“（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）＞＞１”を演算し、その演算結果の整数値を、ロスレスのＤＣ変換係数を表わす出力データＹ０として端子１２１から出力する。
Ｙ０＝（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）＞＞１    …（６）
ここで、端子１２１から出力されるＤＣ変換係数（出力データＹ０）は、小数点以下の値が切り捨てられていることになることに注意されたい。すなわち、出力データＹ０であるＤＣ変換係数には、最大で“−０．５”の丸め誤差が重畳することになる。
【００３６】
一方、減算器１１１は、入力端子１０１に入力されたデータＤ０から、シフタ１０８からの値（データＹ０）を減じ、その結果を中間データとして生成する。生成された中間データは第１の加算器１１２、第２の加算器１１３、及び、第３の加算器１１４それぞれに供給される。
【００３７】
先に説明したように、算出したＤＣ変換係数には、最大“−０．５”の丸め誤差が重畳している。減算器１１１は、この丸め誤差を含んだＤＣ変換係を、入力データＤ０から減じるわけであるから、減算器１１１が算出する中間データには、最大で、正負の符号が反転した“＋０．５”の丸め誤差が重畳することになる。このような重畳誤差が発生する丸め処理は、この場合、切り上げ処理しかない。すなわち、減算器１１１が算出する中間データの値をＭとしたとき、その処理は切り上げ処理結果と等価の値となり、次式で示される値となる。
Ｍ＝Ｄ０−｛（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）＞＞１｝
＝（Ｄ０−Ｄ１−Ｄ２−Ｄ３＋１）＞＞１
ここで、括弧の中の“＋１”は中間データの値Ｍが切り上げデータであることを示している。
【００３８】
第１乃至第３の加算器（参照符号１１２乃至１１４）は、上記のようにして算出された中間データを、入力データＤ１，Ｄ２，Ｄ３の各々に加算し、それぞれの加算結果をＡＣ変換係数を示す出力データＹ１、２、Ｙ３として端子１２２〜１２４から出力する。
【００３９】
当然、前記中間データに重畳する最大＋０．５の丸め誤差は、前記第１乃至第３の加算器を通して各データに重畳される。すなわち、端子１２２〜１２４から出力されるＡＣ変換係数を示す出力データＹ１、Ｙ２、Ｙ３には、最大で“＋０．５”の丸め誤差が重畳していることになり、これらＡＣ変換係数も切り上げ処理されたものと等価である。
【００４０】
つまり、ＡＣ変換係数を示す出力データＹ１乃至Ｙ３は次のように表わすことができる。
Ｙ１＝｛（Ｄ０−Ｄ１−Ｄ２−Ｄ３＋１）＞＞１｝＋Ｄ１
＝  （Ｄ０＋Ｄ１−Ｄ２−Ｄ３＋１）＞＞１
Ｙ２＝｛（Ｄ０−Ｄ１−Ｄ２−Ｄ３＋１）＞＞１｝＋Ｄ２
＝  （Ｄ０−Ｄ１＋Ｄ２−Ｄ３＋１）＞＞１
Ｙ３＝｛（Ｄ０−Ｄ１−Ｄ２−Ｄ３＋１）＞＞１｝＋Ｄ３
＝  （Ｄ０−Ｄ１−Ｄ２＋Ｄ３＋１）＞＞１        …（７）
上記式（６）及び式（７）の出力結果は、先に示した式（５）に示したアダマール変換行列Ｔ4による、ロスレスアダマール変換結果に対応していることが理解できよう。すなわち、実施形態では、切り捨て処理された変換係数の数が奇数個（１個）で、切り上げ処理された変換係数の数も奇数個（３個）なので、この構成で得られるアダマール変換係数はロスレス変換係数になっている。
【００４１】
なおかつ、ＤＣ変換係数だけが他の変換係数と異なる丸め処理になっているため、同一の丸め処理で逆変換が可能である。すなわち、図１の構成で逆変換することも可能である。
【００４２】
以上説明したように、本第１の実施形態におけるデータ変換装置は、ロスレス４点アダマール変換装置として機能することになる。
【００４３】
図２Ａに示す構成は、図１の構成における合算器１０６とシフタ１０８との間に、合算器１０６の合算結果に“１”を加算する＋１回路１３１を設けた変形例である。この結果、＋１回路１３１は、入力データの合計値に“１”を加算し、その結果をシフタ１０８に出力する。これにより、出力データＹ０で表わされるＤＣ変換係数は小数点以下を切り上げた値になる。逆に、他の３つのＡＣ変換係数（出力データＹ０乃至Ｙ３）は、小数点以下が切り捨て処理された値となる。図１の場合と同様、図２Ａの構成で得られるアダマール変換係数もロスレス変換係数であり、同じ構成で逆変換もできる。
【００４４】
また、図２Ａと等価な構成を図２Ｂに示す。図２Ｂにおける中間データを生成する減算器２１１の減算入力が図２Ａの減算器１１１と異なる。すなわち、図２Ｂの減算器２１１は、シフタ１０８からの出力値から、入力データＤ０を減算し、その結果を中間データとして出力する。従って、図２Ｂの減算器２１１の出力である中間データの正負の符号は、図２Ａの減算器１１１とは逆となる。よって、図２Ｂにおける減算器２１２乃至２１４は、図２Ａの加算器１１２乃至１１４に適用するべく、入力データＤ１，Ｄ２，Ｄ３それぞれから中間データを減算して、それら減算結果を整数のＡＣ変換係数として出力する。
【００４５】
以上説明してきたロスレスアダマール変換装置に係る処理を、マイクロプロセッサ（ＣＰＵ）で行う場合、複数ブロックからのデータを並列に処理するための機構を組み込むことで、高速な変換処理が可能である。
【００４６】
これは、６４ビット又は１２８ビット長のマイクロプロセッサ内部のレジスタを４分割あるいは８分割して、８または１６ビットデータを並列に処理するためのＳＩＭＤ（Single Instruction stream Multiple Data stream）型命令で行うことが可能である。ＳＩＭＤ型命令そのものは、近年のＣＰＵでは普通に組み込まれているものである。
【００４７】
一般に、ＳＩＭＤ型命令は２オペランド形式であり、ソースレジスタとデスティネーションレジスタ間の演算結果がデスティネーションレジスタに格納される。
【００４８】
その条件の元で、図２Ａの構成に対応するソフト処理の評価すると、図５に示す手順となる。図示において、左側がステップを示し、右側がオペレーションを示している。図５に示すように、この一連の処理は１０ステップで実現できる。代入文を減らすために、入力データＤ０をレジスタｔにコピーし（ステップ１）、該入力データＤ０を格納していたレジスタでＤＣ変換係数を演算している。前記中間データはレジスタｔ上に生成している。なお、図５において、Ｄ０＋＝Ｄ１は、Ｄ０←Ｄ０＋Ｄ１を表わしており、Ｄ０とＤ１の加算結果で、Ｄ０を保持していたレジスタを更新することを示している。同様に、“Ｄ０＞＞＝１”は、Ｄ０を保持するレジスタの１ビット右シフト（最上位には０が格納される）を示している。
【００４９】
以上説明したように、本第１の実施形態におけるデータ変換装置は、ロスレス４点アダマール変換装置として機能することが理解できよう。
【００５０】
因に、比較のため、図９の構成に対応するソフト処理の処理手順を示すと図１０のようになる。図１０に示すように、一連の処理は最低でも１３ステップを要する上に、変換データを一部置換する必要がある。また、この１３ステップに該置換は含まれていない。
【００５１】
従来技術では、丸め処理を２つもしくは４つのデータに対して行う必要があったが、本実施形態の処理では１つのデータで済み、データの加減算回数も７回と少なく、データコピー回数も１回しかない。すなわち、図５に示す処理手順は、丸め、加減算、コピー処理のすべて項目において、図９と比較して、更に少ない回数でロスレスアダマール変換処理を行なうことが可能であることを示している。
【００５２】
なお、上記第１の実施形態において、例えば図１の構成では、シフタ１０８が１ビット右シフトすることで、合算結果の小数点以下を切り捨てる１／２処理を行なったが、これに限定されるものではない。例えば、シフタ１０８の代わりに、小数点以下を有効した１／２演算器、及び、この１／２演算器の結果の小数点以下を切り上げる丸め処理部を設けても良い。この場合、１／２演算器は合算器１０６からの合算結果の１／２を演算し、小数点以下を含む値を丸め処理部に出力する。丸め処理部は、１／２演算器からの値に“０．５”を加算した後に小数点以下を切り捨てて整数化し、その結果を減算器１１１に出力すれば良い。
【００５３】
［第２の実施形態］
第２実施形態におけるデータ変換装置の回路構成を図３に示す。この図３の構成はハードウェアで処理する際の遅延時間の削減が図れる点で意味がある。同図において、３０１は４つの入力データ中の３つのデータＤ１，Ｄ２，Ｄ３を合算する３入力の合算器、３０２は後段の小数点以下の切り上げ（丸め処理）を行なうために“１”を加える＋１加算器である。３０３は＋１加算器３０２からの合算結果に、入力データＤ０を加算する加算器である。３０５は、＋１加算器３０２からの合算結果から、入力データＤ０を減算する第１の減算器である。３０７は、加算器３０３からの出力値を１ビット右シフトし、ＤＣ変換係数を表わす出力データＹ０を生成する第１のシフタである。３０９は、減算器３０５からの出力値を１ビット右シフトし、そのビットシフト結果を中間データとして生成する第２のシフタである。３１２乃至３１４は、第２のシフタ３０９で生成された中間データを、３つの入力データＤ１，Ｄ２，Ｄ３各々から減算する第２、第３、第４の減算器である。データ入力端子および出力端子は、図２Ａの構成と同じである。
【００５４】
図２Ａの構成では、データ入力から出力データＹ１，Ｙ２，Ｙ３を得るまでの演算の段数は４段である（出力データＹ０は３段）。１段目は合算器１０６での演算、２段目は＋１加算器１３１での演算、３段目は減算器１１１での演算、４段目は加算器１１２乃至１１４での演算である。
【００５５】
ハードウェアで１ビット右シフト処理を行なう場合、単にデータの信号の配線を１ビット（１本）ずらすだけで良いので、基本的に演算にかかる時間は無視できる。
【００５６】
図３の構成も、入力端子から出力データＹ１，Ｙ２，Ｙ３を得るまでの演算の段数は図２Ａと同じ４段である。但し、１段目の演算で用いる合算器の入力数が、４から３個に減少しているため、その分、演算によるゲート遅延時間を削減できる。
【００５７】
一方、図３と等価の処理をソフトウェア処理で行なう場合、図６のリストに示すように、ビットシフト演算とデータコピーが各々１回増え、１２ステップで処理することができる。
【００５８】
［第２の実施形態の変形］
上記の図３の構成を図８の構成に変形しても構わない。図８と図３との大きな違いは、図３における第２乃至第４の減算器（参照符号３１２乃至３１４）を全て加算器８０２乃至８０４に置き換えた点と、以下の（１）、（２）の変更である。
（１）図３の減算器３０５は、＋１加算器３０２の出力値から、入力データＤ０を減じたが、図８の減算器３０５は、入力データＤ０から、加算器３０１の出力値を減じる。つまり、図８の減算器３０５の出力値は、図３の減算器３０５の出力値の正負の符号が反転する。
（２）ＤＣ変換係数とＡＣ変換係数の丸め処理が異なるようにするため、一方が切り捨て処理なら他方は切り上げ処理にする。このため、図８の構成では、ＤＣ変換係数が切り上げ、ＡＣ変換係数が切り捨て処理になるようにする。すなわち、加算器３０３と第１シフタ３０７との間に＋１加算器８０１を配置する。
【００５９】
上記変更（１）（２）を加えることにより、出力データＹ０乃至Ｙ３はロスレスアダマール変換係数となる。
【００６０】
［第３の実施形態］
第３実施形態におけるデータ変換装置の回路構成を図４に示す。同図において、４０１は４つの入力データの内、２つのデータＤ１，Ｄ２を加算する第１の加算器、４０２〜４０４は入力データＤ１，Ｄ２，Ｄ３各々に入力データＤ０を加算する第２乃至第４の加算器である。つまり、これら加算器４０２乃至４０４が、４つの整数の入力データから２つのデータの和を３つ生成する加算データ生成部として機能する。
【００６１】
４０５は第１の加算器４０１の出力値に“１”を加算する＋１加算器である。４０７は＋１加算器４０５の加算結果に第４の加算器４０４の出力値を加算する第５の加算器である。４０９は加算器４０７の加算結果を１ビット右シフトするシフタである。そして、４１２乃至４１４は、第２乃至第４の加算器４０２乃至４０４の出力値の各々からシフタ４０９からの出力値を減算する第１乃至第３の減算器である。データ入力および出力端子は、図１の構成と同じである。
【００６２】
図４の構成も、入力端子から出力データＹ１、Ｙ２，Ｙ３を得るまでの演算の段数は同じ４段である。すなわち、１段目が第１乃至第４の加算器４０１乃至４０４による演算、２段目が＋１加算器４０５による演算、３段目が第５の加算器４０７による演算、そして、４段目が第１乃至第３の減算器４１２乃至４１３による演算である。１段目の演算を行なう第１乃至第４の加算器は、それぞれ２入力で済むため、さらに遅延時間が削減できる。
【００６３】
従って、１段目の第１乃至第４の加算器４０１乃至４０４が第１の加算処理部５０５として機能し、２段目の＋１加算器４０５が第２の加算処理部５０６として機能する。そして、３段目の加算器４０７及びシフタ４０９が、ＤＣ変換係数生成部５０１として機能し、４段目の減算器４１２乃至４１４がＡＣ変換係数生成部５０２として機能することになる。
【００６４】
ソフトウェア処理では、図７のリストに示すように、１２ステップで処理することができる。第２の実施形態である図６のリストに対し、加減算が１回増えているが、ビットシフト演算が１回減り、同じ１２ステップで処理できる。
【００６５】
［第４の実施形態］
第４実施形態におけるデータ変換装置の回路構成を図１１に示す。同図において、１００２乃至１００４は、２つの入力データの和を計算する加算器である。加算器１００２は、第１の入力データＤ０を第２の入力データＤ１に加算し、その結果を第１の中間データとして出力する。加算器１００３は、第２の入力データＤ１を第３の入力データＤ２に加算し、その結果を第２の中間データとして出力する。そして、加算器１００４は、第２の入力データＤ１を第４の入力データＤ３に加算し、その結果を第３の中間データとして出力する。つまり、これら加算器１００２乃至１００４が、４つの整数の入力データから２つのデータの和を３つ生成する加算データ生成部として機能する。
【００６６】
１０１２乃至１０１４は、加算器１００２〜１００４の出力（第１乃至第３の中間データ）と整数化したＤＣ変換係数との間の減算を行う減算器である。１０１０は、外部からの制御信号により、“１”または“０”を加算する＋１加算器である。その他の構成要素は、図１と同じであるため、同一の番号を付し、説明を省略する。なお、減算器１０１２は、加算器１００２からの第１の中間データから、シフタ１０８からの値を減じ、その結果を第１のＡＣ変換係数として出力する。これに対し、減算器１０１３及び１０１４は、シフタ１０８からの値から、加算器１００３、１００４からの第２，第３の中間データを減じ、その結果を第２，第３のＡＣ変換係数として出力する点に注意されたい。このようにして、第１乃至第３のＡＣ変換係数が得られる。
【００６７】
本第４の実施形態の特徴は、３つのＡＣ変換係数の内、２つのＡＣ変換係数（データＹ２、Ｙ３）を、整数化したＤＣ変換係数（シフタ１０８の出力値）から、２つのデータの和を減算することによって生成する点にある。
【００６８】
これにより、３つのＡＣ変換係数の内、１つのＡＣ変換係数、すなわち端子１２２から出力するＡＣ変換係数を示すデータＹ１だけ、丸め処理の内容が他の３つの変換係数と異なっている。
【００６９】
すなわち、＋１加算器１０１０において、合算器１０６からの値に“１”を加算するようにした場合、出力データＹ０、Ｙ２、Ｙ３は、小数点以下切り上げの丸め処理を行なった結果となり、出力端子１２２からの出力データＹ１のＡＣ変換係数のみが、小数点以下が切り捨ての丸め処理になる。
【００７０】
一方、＋１加算器１０１０で加算する値を“０”に変えると、今度は出力端子１２２からの出力データＹ１で表わされるＡＣ変換係数のみが、小数点以下の切り上げの丸め処理結果となり、他の３つの変換係数はいずれも小数点以下の切り捨て処理結果となる。
【００７１】
いずれの場合も、奇数個のデータを切り上げ処理し、残りの奇数個のデータを切り捨て処理しているため、変換結果は可逆性を有するロスレス変換係数になる。
【００７２】
＋１加算器１０１０において、“１”を加算してロスレス変換した場合、逆変換の時に該加算器で“０”を加算し、逆に、“０”を加算してロスレス変換した場合、逆変換の時に“１”を加算すれば、元のデータを完全に復元できる。
【００７３】
＜第４の実施形態の変形＞
第４実施形態の変形例を図１２と図１３に示す。構成要素としては、図１１と基本的に同じであるため、一方の入力先が異なる加算器１００２〜１００４についても、図１１と同じ番号を付して用いている。
【００７４】
図１２、図１３と図１１との差は、丸め処理が１つだけ異なるＡＣ変換係数に違いがある点である。
【００７５】
図１１では、丸め処理が１つだけ異なるＡＣ変換係数は端子１２２から出力する変換結果であったが、図１２では出力端子１２３、図１３では出力端子１２４から出力するＡＣ変換係数がそれに対応する。
【００７６】
各々、＋１加算器１０１０において、“１”を加算してロスレス変換した場合、逆変換の時に該加算器で“０”を加算し、逆に、“０”を加算してロスレス変換した場合、逆変換の時に“１”を加算すれば、元のデータを完全に復元できる。
【００７７】
図１２、図１３の構成が、図１１の単なる入力の入れ替えによる変形であるのは容易に理解できる。すなわち、図１１における４つの入力データの並びを上から下に向かう順に｛Ｄ０，Ｄ１，Ｄ２，Ｄ３｝と表現すると、図１２のそれは｛Ｄ０，Ｄ２，Ｄ１，Ｄ３｝又は｛Ｄ０，Ｄ２，Ｄ３，Ｄ１｝の順に入力した場合に対応する。また、図１３の構成は｛Ｄ０，Ｄ３，Ｄ１，Ｄ２｝又は｛Ｄ０，Ｄ３，Ｄ２，Ｄ１｝の４つのデータを入力した場合に対応する。
【００７８】
なお、本実施形態で説明した各種ロスレスアダマール変換装置の可逆性は、先に示した特許文献１における丸め処理との同一性を根拠にしているが、本実施形態に基づく変換・逆変換装置の一構成において、変換の可逆性を比較的容易に示すことができる。
【００７９】
その構成を図１４に示し、変換の可逆性を簡単に説明する。説明の都合上、図１４は同一構成の順変換装置１４０１と逆変換装置１４０２を縦属接続しており、各変換装置内部の構成要素を区別するため、逆変換装置側の構成要素には参照番号の後に文字“ｒ”を付している。
【００８０】
図１４における逆変換装置１４０２の４つ出力端子１４１１乃至１４１４に出力される出力データが、順変換装置１４０１への４つの入力端子１０１乃至１０４に入力されるデータＤ０，Ｄ１，Ｄ２，Ｄ３と同じになることを説明して、変換の可逆性を示す。
【００８１】
順変換装置１４０１及び逆変換装置１４０２の構成は、次に述べる２つの解釈が可能である。
【００８２】
１つ目の解釈は、前記図４に示した構成から＋１回路を取り除き、ＤＣ変換係数を計算するための２つの加算器４０１，４０７を１つの加算器１０６にまとめた構成である。
【００８３】
２つ目の解釈は、前記図１に示した構成において、入力データＤ０からＤＣ変換係数を減算した結果を３つの入力データＤ１，Ｄ２，Ｄ３各々に加算する演算を、該３つの入力データ各々へ入力データＤ０を加算してＤＣ変換係数を減算するようにした構成である。
【００８４】
逆変換装置１４０２の４つの出力データが、順変換装置１４０１への４つの入力データＤ０，Ｄ１，Ｄ２，Ｄ３と同じになることを示すために、順変換装置１４０１内の破線１４０５上の内部データＥ０，Ｅ１，Ｅ２，Ｅ３に着目する。
【００８５】
まず、順変換装置１４０１内でＥ１，Ｅ２，Ｅ３の各データからＥ０が減算される。このＥ０は逆変換装置１４０２内の加算器４０２ｒ乃至４０５ｒで前記減算結果にそれぞれ加算される。このため、逆変換装置１４０２内の３つの加算器４０２ｒ、４０３ｒ、４０４ｒの出力は各々、Ｅ１，Ｅ２，Ｅ３に戻ることが容易に分かる。
【００８６】
次に、順変換装置１４０１への３つの入力データＤ１，Ｄ２，Ｄ３に別の入力データＤ０を加算した結果が前記内部データＥ０，Ｅ１，Ｅ２，Ｅ３である。よって、前記逆変換装置１４０２内の加算器４０２ｒ乃至４０４ｒの出力データであるＥ１，Ｅ２，Ｅ３各々からＤ０を減算できれば、Ｄ１，Ｄ２，Ｄ３に戻せ、それを逆変換結果として出力することができる。
【００８７】
したがって、逆変換装置１４０２内の３つの減算器４１２ｒ、４１３ｒ、４１４ｒから共通に減算するデータＧ０がＤ０であることを示せれば、Ｄ１，Ｄ２，Ｄ３データの可逆性が示せることになる。
【００８８】
そもそもデータＧ０は端子１４１１からＤ０として出力するべきデータであるため、変換と逆変換装置の処理工程を厳密にトレースすれば、データＧ０がＤ０なるであろうことは容易に想像できる。もちろん、そうなることを厳密に示す。
【００８９】
以下では、Ｇ０のビットシフト前の内部データであるＦ０を、まず逆変換装置の入力データの和で表し、その式を変形して、Ｆ０を入力データＤ０，Ｄ１，Ｄ２，Ｄ３のみで表現し直し、その後に、Ｇ０＝Ｄ０になることを示す。
Ｆ０＝Ｅ０＋（Ｅ１−Ｅ０）＋（Ｅ２−Ｅ０）＋（Ｅ３−Ｅ０）
＝Ｅ１＋Ｅ２＋Ｅ３−２＊Ｅ０
＝（Ｄ１＋Ｄ０）＋（Ｄ２＋Ｄ０）＋（Ｄ３＋Ｄ０）−２＊Ｅ０
＝３＊Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３−２＊Ｅ０
＝３＊Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３−２＊（（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）＞＞１）
さて、１ビット右シフトして、その結果を２倍すると、シフト前の値が奇数なら−１され、偶数なら値は変化しない。よって、上記括弧内の値は−１または＋０されることになる。これを−０．５±０．５と表現すると、Ｆ０は次のようになる。
Ｆ０＝３＊Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３−（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３−０．５±０．５）
＝２＊Ｄ０＋０．５±０．５
この結果を用いることによって、以下に示すように、Ｇ０＝Ｄ０になる。
Ｇ０＝Ｆ０＞＞１
＝（２＊Ｄ０＋０．５±０．５）＞＞１
括弧内の０．５±０．５は整数のＬＳＢ（最下位ビット）を表し、１ビット右シフトによって切り捨てられる。よって、
Ｇ０＝Ｄ０
になる。すなわち、前記順変換装置１４０１と逆変換装置１４０２の可逆性を示せたことになる。
【００９０】
先に示した非特許文献１に記載されているように、ロスレスアダマール変換を用いると、効率よくロスレスＤＣＴ変換を行うことができる。本発明のロスレスアダマール変換を用いれば、さらに効率のよくロスレスＤＣＴ変換を行うことが可能である。
【００９１】
該ロスレスＤＣＴの変換係数を量子化してエントロピー符号化すれば、ＪＰＥＧと互換性のある符号化を行うことができ、量子化しないで符号化すれば、ロスレス符号化することが可能である。
【００９２】
量子化しないで符号化した場合は、復号時、エントロピー復号後にロスレスの逆変換を行えば、元の画像データを完全に復元することができる。ロスレスの逆変換を行わず、一般のＤＣＴ逆変換処理を施すと、元のデータに近い画像データに復元できる。
【００９３】
本発明において、入力データは一貫して整数としてきたが、該入力データは固定小数点データでもよいことは、明白である。つまり、小数点以下がｎビットを有する入力データを本発明に基づいてロスレス変換した場合、ロスレス変換係数も、小数点以下ｎビットを有するデータとなる。
【００９４】
小数点の位置は、データの解釈の問題であり、入出力データ間で同じように小数点を移動させれば、どこに小数点があっても構わないことも明らかである。
【００９５】
また、上記実施形態の記載からもわかるように、各実施形態における装置と等価の処理をコンピュータプログラムでもって実現しても構わないから、本願発明は当然そのようなコンピュータプログラムをもその範疇とする。また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されており、それをコンピュータ読取り装置（ＣＤ−ＲＯＭドライブ）にセットし、システムにコピーもしくはインストールすることで実行可能になる。それ故、本発明はかかるコンピュータプログラムをもその範疇とすることも明らかである。
【図１】
0005004987.tif 000007
【図２Ａ】
0005004987.tif 000008
【図２Ｂ】
0005004987.tif 000009
【図３】
0005004987.tif 000010
【図４】
0005004987.tif 000011
【図５】
0005004987.tif 000012
【図６】
0005004987.tif 000013
【図７】
0005004987.tif 000014
【図８】
0005004987.tif 000015
【図９】
0005004987.tif 000016
【図１０】
0005004987.tif 000017
【図１１】
0005004987.tif 000018
【図１２】
0005004987.tif 000019
【図１３】
0005004987.tif 000020
【図１４】
0005004987.tif 000021