(57)【要約】　　　（修正有）【課題】変換係数の精度を高めたアダマール変換処理方法及びその装置の提供。【解決手段】４つの４点アダマール変換処理部でそれぞれ入力信号に対してアダマール変換行列による変換処理を行い出力される４つの変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する丸め処理部と、４つの４点アダマール変換処理部を用いて、入力信号のうち奇数個がそれと同数のロスレス４点アダマール変換処理部の出力を切り上げ処理したもの、残りの奇数個は他の残りのロスレス４点アダマール変換処理部の出力を切り捨て処理した信号を各４点アダマール変換処理部に入力して変換処理を行い、出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する丸め処理部を有する。【選択図】　図５
2004038451.tif 000002
【特許請求の範囲】
【請求項１】
各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換工程と、
前記第１変換工程により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理工程と、
前記アダマール変換処理ユニットの数と同数のアダマール変換処理ユニットを用いて、前記第１変換工程の後段において、前記第１丸め処理工程で、入力信号のうち奇数個が、それと同数のアダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他の残りのアダマール変換処理ユニットの出力を前記切り捨て処理した信号を各アダマール変換処理ユニットに入力して、各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第２変換工程と、
前記第２変換工程により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理工程と、
を有することを特徴とするアダマール変換処理方法。
【請求項２】
４つの４点アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換工程と、
前記第１変換工程により各４点アダマール変換処理ユニットから出力される４つの変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理工程と、
４つの４点アダマール変換処理ユニットを用いて、前記第１変換工程の後段において、前記第１丸め処理工程で、入力信号のうち奇数個が４点アダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他のロスレス４点アダマール変換処理ユニットの出力を前記切り捨て処理した信号を各４点アダマール変換処理ユニットに入力して、４つの４点アダマール変換処理ユニットのそれぞれにおいて、入力信号に対して４点アダマール変換行列による変換処理を行う第２変換工程と、
前記第２変換工程により各４点アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理工程と、
を有することを特徴とするアダマール変換処理方法。
【請求項３】
複数のアダマール変換処理ユニットを具備し、各処理ユニットにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換手段と、
前記第１変換手段により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理手段と、
前記複数のアダマール変換処理ユニットの数と同数のアダマール変換処理ユニットを具備し、前記第１変換手段の後段において、前記第１丸め処理手段で、入力信号のうち奇数個が、それと同数のアダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他の残りのアダマール変換処理ユニットの出力を前記切り捨て処理した信号を各アダマール変換処理ユニットに入力して、各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第２変換手段と、
前記第２変換手段により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理手段と、
を有することを特徴とするアダマール変換処理装置。
【請求項４】
４つの４点アダマール変換処理ユニットを具備し、各処理ユニットにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換手段と、
前記第１変換手段により各４点アダマール変換処理ユニットから出力される４つの変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理手段と、
４つの４点アダマール変換処理ユニットを用いて、前記第１変換手段の後段において、前記第１丸め処理手段で、入力信号のうち奇数個が４点アダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他の４点アダマール変換処理ユニットの出力を前記切り捨て処理した信号を各４点アダマール変換処理ユニットに入力して、４つの４点アダマール変換処理ユニットのそれぞれにおいて、入力信号に対して４点アダマール変換行列による変換処理を行う第２変換手段と、
前記第２変換手段により各４点アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理手段と、
を有することを特徴とするアダマール変換処理装置。
【請求項５】
４×４のブロックデータを水平方向と垂直方向に２次元的に処理するアダマール変換処理装置であって、
入力データを４個単位でアダマール変換処理する第１変換部と、
ブロックデータの列番号或いは行番号に基づいて丸め処理用の加算データを生成する第１デコーダと、
前記第１変換部の出力に前記第１デコーダからの前記加算データを加算する第１加算部と、
前記第１加算部の出力の最下位の１ビットを切り捨てる第１切り捨て部と、
前記第１変換部と前記第１デコーダと前記第１加算部と前記第１切り捨て部とで処理したデータを転置するためのバッファと、
前記バッファの出力を入力し４個単位でアダマール変換処理する第２変換部と、
ブロックデータの列番号或いは行番号に基づいて丸め処理用の加算データを生成する第２デコーダと、
前記第２変換部の出力に前記第２デコーダからの前記加算データ出力を加算する第２加算部と、
前記第２加算部の出力の最下位の１ビットを切り捨てる第２切り捨て部と、
を有することを特徴とするアダマール変換処理装置。
【請求項６】
前記第１及び第２デコーダは、０または０．５の４つのデータを出力することを特徴とする請求項５に記載のアダマール変換処理装置。
【請求項７】
前記第１及び第２デコーダは、対応する変換部が出力するデータの最下位ビットを受け取り、前記最下位ビットが１の時は０．５または−０．５の４つのデータを、前記最下位ビットが０の時は４つとも０を出力することを特徴とする請求項５に記載のアダマール変換処理装置。
【請求項８】
前段のアダマール変換処理と後段のその他の変換処理とを有する１次元離散コサイン変換処理を２段階適用して２次元処理する際に、各部の処理順序を変えて、前記前段のアダマール変換をまとめて２次元処理した後に、前記後段の変換処理をまとめて２段階処理することを特徴とする２次元ＤＣＴ変換処理方法。
【請求項９】
前段のロスレスアダマール変換部と後段のその他のロスレス変換部とを具備する１次元離散コサイン変換を２段用いて２次元処理する際に、各部の処理順序を変えて、前記前段のアダマール変換部をまとめて２次元処理した後に、前記後段のロスレス変換処理をまとめて２段階処理するようにしたことを特徴とする２次元ＤＣＴ変換処理方法。
【請求項１０】
請求項１，２，８，９のいずれか１項に記載のアダマール変換処理方法を実行することを特徴とするプログラム。
【請求項１１】
請求項１０に記載のアダマール変換処理方法を実行するプログラムを記憶したことを特徴とする、コンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、整数データを出力する可逆変換が可能なアダマール変換処理方法及びその装置に関するものである。
【０００２】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積或いは伝送する際には、そのデータ量が問題となる。このため画像の蓄積或いは伝送に際しては、その多値画像の持つ冗長性を除いたり、或いは画質の劣化が視覚的に認識し難い程度で、その多値画像の内容を変更することによって符号化して、そのデータ量を削減する高能率符号化が用いられる。例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＰＥＧでは、画像データをブロックごと（８画素×８画素）に離散コサイン変換（ＤＣＴ）してＤＣＴ係数に変換した後に、各ＤＣＴ係数をそれぞれ量子化し、更に、その量子化した値をエントロピー符号化することにより画像データを圧縮している。このＤＣＴを利用した圧縮技術には、このＪＰＥＧ以外に、Ｈ２６１，ＭＰＥＧ１／２／４等がある。
【０００３】
このＤＣＴ変換に関連する処理として、或いは画像データ変換する処理としてアダマール変換がある。このアダマール変換は、変換行列の要素が「１」又は「−１」のみからなる直交変換で、加算と減算のみで実現できる最もシンプルな直交変換である。
【０００４】
このアダマール変換のうち、２点アダマール変換の変換行列Ｈ２は、以下のように定義される。
【０００５】
【数１】
2004038451.tif 000003
【０００６】
一般的なＮ（＝２ｎ）点アダマール変換行列ＨＮは、（Ｎ／２）点アダマール変換行列ＨＮ／２と上記２点アダマール変換行列Ｈ２との間のクロネッカー積で再帰的に定義することができる。
【０００７】
【数２】
2004038451.tif 000004
【０００８】
上記定義から４点アダマール変換行列を求めると、
【０００９】
【数３】
2004038451.tif 000005
となる。この４点アダマール変換行列はナチュラル型と呼ばれるもので、基底ベクトルがシーケンシの順番に並んでいない。そこで、基底ベクトルの置換を繰り返して２行目の基底ベクトルを４行目に移動すると、基底ベクトルの順序がシーケンシ順序の変換行列ＷＨ４となる。
【００１０】
【数４】
2004038451.tif 000006
【００１１】
この変換行列ＷＨ４は、ウォルシュ型或いはウォルシュアダマール変換行列と呼ばれている。アダマール変換は可逆な直交変換であることが知られており、上記ナチュラル型、ウォルシュ型のいずれも可逆な変換が可能である上、変換行列が対称行列になっている。
【００１２】
前述したように、アダマール変換は可逆変換であると一般的に言われているが、これは数学的に可逆であるということである。即ち、変換時及び逆変換において演算誤差が発生しないことを前提としており、そのためのデータ形式として固定小数点或いは浮動小数点で演算を行なう必要がある。そして変換処理後の有効桁数を全て保持する必要がある。
【００１３】
しかし、圧縮符号化を前提としたアダマール変換では、変換処理後に有効桁数を少しでも減らしたいという要望がある。具体的には、整数入力のデータを変換処理して発生する小数点以下のデータは、明らかに入力データより増加した桁数（情報）と捉えることができるので、この小数点以下のデータを無くすことはデータ圧縮のためには不可欠である。ところが、この小数点以下のデータを単純に丸め処理してしまうと可逆性は損なわれてしまう。例えば、
１２３，　７８，　８４，　５６
の４つのデータを（４）式の変換行列でアダマール変換すると以下のようになる。
【００１４】
１７０．５（＝（１２３＋７８＋８４＋５６）／２），　３０．５（＝（１２３＋７８−８４−５６）／２），　８．５（＝（１２３−７８−８４＋５６）／２９，　３６．５（＝（１２３−７８＋８４−５６）／２）
これらのそれぞれを単純に四捨五入して整数化すると、
１７１　３１，　９，　３７
となり、これを逆変換（逆変換で用いる行列は変換行列の転置行列であり、これは変換行列と同じである）すると、
１２４，　７８，　８４，　５６
となる。このように先頭データの「１２３」が、上述のアダマール変換及びその逆変換により「１２４」になってしまっている。このように、整数化したデータを出力するアダマール変換では可逆性を保証できない。以下では、整数化したデータを出力するアダマール変換を整数型アダマール変換と呼び、可逆変換が可能な整数型アダマール変換を整数型可逆アダマール変換或いはロスレスアダマール変換と呼ぶことにする。
【００１５】
従来、ロスレス４点アダマール変換は、以下のように実現していた。
▲１▼４点アダマール変換行列Ｈ４を、対角要素が「１」となる三角行列の積に分解する。
▲２▼元の変換行列に行の入れ替え操作Ｑを加える。
▲３▼上記▲１▼▲２▼から、ＱＨ４を以下の行列積の形に分解する。
【００１６】
【数５】
2004038451.tif 000007
▲４▼この変換をシグナルフローで表現する（図１のように表わされる）。
▲５▼このシグナルフロー中の乗算処理で発生する小数点以下のデータを丸めて整数化する。
【００１７】
以上の▲１▼〜▲５▼により実現する。以下に若干の補足説明を加える。
【００１８】
図１のシグナルフローにおいて、可逆変換処理を実現する上でよく用いられる梯子型ネットワーク（Ｌａｄｄｅｒ　Ｎｅｔｗｏｒｋ）構成になっている。このＬａｄｄｅｒ　Ｎｅｔｗｏｒｋにおいて、小数点以下のデータが発生する乗算器１００，１０１の出力側に整数化を図るための丸め処理（図２の２００，２０１）を導入することで、整数型データを出力する変換処理の可逆化が（可逆変換処理の分野では）一般的な手法として用いられている。
【００１９】
尚、ここで、変換処理と逆変換処理の間で対応する乗算出力の丸め処理が同一であれば、丸め処理２００，２０１の内容はなんでもよい。
【００２０】
図１のシグナルフローに丸め処理を導入して可逆化した（可逆変換を可能にした）シグナルフローを図２に示す。これが、整数型可逆４点アダマール変換を実現する従来の演算方法であった。
【００２１】
【発明が解決しようとする課題】
このようなロスレス整数型可逆４点アダマール変換を用いて、それを多段接続することによって、ロスレス１６点アダマール変換を構成できる。しかし、各変換出力の誤差（数学的な変換とロスレス変換との差）の平均値や平均二乗誤差にばらつきが発生し、精度の良い変換係数と精度の悪い変換係数とができてしまう。
【００２２】
また、従来のロスレス２次元ＤＣＴ（離散コサイン変換）は、ロスレスでない従来型の２次元ＤＣＴを基準とした時の変換時の誤差が大きかった。
【００２３】
本発明は上記従来例に鑑みてなされたもので、ロスレスアダマール変換処理によって発生する平均誤差が理論上ゼロになるように丸め処理の内容を定めることにより変換係数の精度を高めたアダマール変換処理方法及びその装置を提供することを目的とする。
【００２４】
【課題を解決するための手段】
上記目的を達成するために本発明のアダマール変換処理方法は以下のような工程を備える。即ち、
各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換工程と、
前記第１変換工程により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理工程と、
前記アダマール変換処理ユニットの数と同数のアダマール変換処理ユニットを用いて、前記第１変換工程の後段において、前記第１丸め処理工程で、入力信号のうち奇数個が、それと同数のアダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他の残りのアダマール変換処理ユニットの出力を前記切り捨て処理した信号を各アダマール変換処理ユニットに入力して、各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第２変換工程と、
前記第２変換工程により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理工程と、
を有することを特徴とする。
【００２５】
上記目的を達成するために本発明のアダマール変換処理装置は以下のような構成を備える。即ち、
複数のアダマール変換処理ユニットを具備し、各処理ユニットにおいて、入力信号に対してアダマール変換行列による変換処理を行う第１変換手段と、
前記第１変換手段により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第１丸め処理手段と、
前記複数のアダマール変換処理ユニットの数と同数のアダマール変換処理ユニットを具備し、前記第１変換手段の後段において、前記第１丸め処理手段で、入力信号のうち奇数個が、それと同数のアダマール変換処理ユニットの出力を前記切り上げ処理したもの、残りの奇数個は他の残りのアダマール変換処理ユニットの出力を前記切り捨て処理した信号を各アダマール変換処理ユニットに入力して、各アダマール変換処理ユニットのそれぞれにおいて、入力信号に対してアダマール変換行列による変換処理を行う第２変換手段と、
前記第２変換手段により各アダマール変換処理ユニットから出力される変換データの内、奇数個のデータの各最下位ビットを切り上げ処理し、残りの奇数個のデータの各最下位ビットを切り捨て処理して整数化する第２丸め処理手段と、
を有することを特徴とする。
【００２６】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００２７】
＜実施の形態１＞
図３は、従来のロスレス１６点アダマール変換の構成を示す図である。
【００２８】
図３に示すように、ロスレス１６点アダマール変換処理部３００〜３０７を多段に８個接続している。ここでは１６個の入力データ（ｄ０〜ｄ１５）を４つずつに分け、それぞれをロスレス４点アダマール変換した後に、同じレベルの変換係数を４つ集めて、再度ロスレス４点アダマール変換を行なうと、ロスレス１６点アダマール変換となる。
【００２９】
ここで、このロスレス４点アダマール変換部３００〜３０７に、図２に示す構成のアダマール変換部を採用することができる。
【００３０】
この８種類のそれぞれの丸め処理を簡単に説明すると、４つの出力の内、奇数個を切り上げ、残りの奇数個を切り捨て処理するものである。
【００３１】
図４は、これら８種類のロスレス４点アダマール変換部３００〜３０７のそれそれにおける処理を説明する図である。ここでは前段の４点アダマール変換部３００〜３０７のそれぞれで上述の（３）式又は（４）式のアダマール変換行列による変換処理を行ない、後段の４００〜４０７で丸め処理を行なう。ここでは丸め処理の内容を簡潔に「＋」と「−」で示しているが、ここで「＋」は切り上げ、「−」は切り捨てを意味する。なお、本発明で言う切り上げ・切り捨てとは、絶対値表現ではなく２の補数表現上での切り上げ・切り捨て処理のことを言う。例えば、−７．５の補数表現は１１１１１０００．１となり、この小数部を切り上げると１１１１１００１（−７）となり、切り捨てると１１１１１０００（−８）となる。
【００３２】
逆変換も一種のロスレス変換である。何故なら、逆変換後のデータを又再変換すると逆変換前のデータになるからである。よって、図４に示した８種類は逆変換の全種類でもある。但し、アダマール変換行列の種類（ナチュラル型・ウォルシュ型）によって、変換と逆変換の対応が異なる。
【００３３】
ナチュラル型では、変換と逆変換の関係は以下のようになる。
（ａ）→（ａ）　　（ｂ）→（ｇ）　　（ｃ）→（ｆ）　　（ｄ）→（ｈ）
（ｅ）→（ｅ）　　（ｆ）→（ｃ）　　（ｇ）→（ｂ）　　（ｈ）→（ｄ）
ウォルシュ型では、変換と逆変換の関係は下記のようになる。
（ａ）→（ａ）　　（ｂ）→（ｆ）　　（ｃ）→（ｈ）　　（ｄ）→（ｇ）
（ｅ）→（ｅ）　　（ｆ）→（ｂ）　　（ｇ）→（ｄ）　　（ｈ）→（ｃ）
これ以降、特に断わらない限り、ウォルシュ型の変換行列を使用した場合で説明する。
【００３４】
図４の８種類の丸め処理のいずれを図３に用いても、ロスレス１６点アダマール変換であることに変わりは無い。その組み合せは８８個もの種類が存在する。そこで、次の課題を課す。
（Ａ１）　各変換係数の平均誤差がゼロになるようにする。
【００３５】
但し、入力データとして相関の無い乱数を仮定する。この課題（Ａ１）を満足するロスレス１６点アダマール変換は以下の条件（Ｂ１）、（Ｂ２）に基づけば構成できる。
（Ｂ１）　２段目（後段）の各アダマール変換部３０４〜３０７に入力する４つの中間データは、奇数個が切り上げ処理し、残りの奇数個が切り捨て処理したものになるように１段目の丸め処理を決める。この時の１段目の丸め処理は当然前記８種類の丸め処理の１つとなるようにする。
（Ｂ２）　２段目の各アダマール変換部３０４〜３０７は、４つの入力データが同一のアダマール変換から来たものとして捉え、逆変換となるよう丸め処理の種類を決定する。
【００３６】
１段目の４つのアダマール変換部３００〜３０３の内、３つまでは自由に丸め処理を決められるが、残りの１つは条件（Ｂ１）を満たそうとすると一意に決まってしまう。このように、条件（Ｂ１）を満たす構成は簡単に得られ、その種類は、５１２（＝８３）種類となる。
【００３７】
図５は、本発明の実施の形態１に係るロスレス１６点アダマール変換の構成を示すブロック図である。尚、図５における４点アダマール変換部５０１〜５０４、５２１〜５２４は図３及び図４の４点アダマール変換部３００〜３０７と同じ構成である。
【００３８】
図５において、丸め処理５１１〜５１４，５３１〜５３４における「＋」は切り上げを示し、「−」は切り捨て処理を示している。この例では全８種類のうち７種類の丸め演算を使用している。このように構成した場合、どの出力の平均誤差も「０」になるだけでなく、誤差の分布まで同じになるため、平均二乗誤差も同じになる。以下では、誤差の分布を通して平均誤差が「０」になる理由について説明する。
【００３９】
図５における２段目のアダマール変換部５２１〜５２４のそれぞれの４つの入力（中間データ）は、同一のアダマール変換部から入力されたものではないため相関が無い。例えば、アダマール変換部５２１の入力データにおける重畳誤差は、（０，０，０，０）〜（＋０．５，−０．５，−０．５，−０．５）の全１６通りが各々等しい確立で発生する。図５において、中間データ５４０は切り上げ処理されたデータであるが、１／２の確立で切り上げによる誤差（＋０．５）が発生し、１／２の確率で、その変換結果が整数の誤差の無いデータとなる。他の３つの中間データ５４１〜５４３は、その丸め処理が切り捨てであるだけで、１／２の確立で切り捨てによる誤差（−０．５）が発生し、１／２の確率で、その変換結果が整数の誤差の無いデータとなる点は同じである。
【００４０】
この重畳誤差と（４）式の変換行列の第１行との内積に係数（１／２）を掛けた値は、最小「−０．７５」から「０．２５」刻みで最大「０．２５」まで分布する。更に詳しくみてみると、「−０．７５」，「−０．５」，「−０．２５」，「０」，「＋０．２５」という値が、各々確立「１／１６」，「１／４」，「３／８」，「１／４」，「１／１６」で分布する。この分布を示したのが図６（ａ）である。これに、２段目のアダマール変換部５２１による変換処理後の丸め処理５３１で「＋０．５」が付加されると、誤差の分布は図６（ｂ）のようになる。
【００４１】
図５の２段目のアダマール変換部５２１による変換処理後の丸め処理５３１で「＋０．５」が付加される確立は、最下位ビットが「１」になる確立であり、これは「１／２」である。
【００４２】
図６（ａ）と図６（ｂ）に示す分布がそれぞれ「１／２」の確立で発生する場合、全体の誤差分布は図６（ｃ）のようになる。また、この分布の平均二乗誤差は「０．１２５」である。
【００４３】
また（４）式の変換行列の第２，第３，第４行との内積に「１／２」を掛けた値は、上記分布とは対称に「−０．２５」から「０．７５」の間で「０．２５」刻みで分布する。２段目のアダマール変換部の後の丸め処理で付加される値も「−０．５」と対称であるため、全体の誤差分布も対称となり、結局、同じ分布になる。他の３つのアダマール変換の入力データは、重畳誤差の分布が少し異なるが、同様に計算すると同じ誤差の分布となり、平均誤差は「０」、平均二乗誤差は「０．１２５」となる。結局、図５の全ての出力ｙ０〜ｙ１５において、平均誤差は「０」、平均二乗誤差は「０．１２５」となる。
【００４４】
参考に、上記条件（Ｂ１）を満たさない構成を図７に示し、その平均誤差と平均二乗誤差がどうなるかを説明する。
【００４５】
図７では、２段目のアダマール変換部５２１の４つの入力データは全て切り上げ処理されたデータが入力されているためその重畳誤差は、（０，０，０，０）〜（＋０．５，＋０．５，＋０．５，＋０．５）と＋方向に偏っている。そのため、上記（４）式の変換行列の第１行との内積に係数（１／２）を掛けた値は図８（ａ）のような分布を示す。この後、丸め処理７１１で更に「＋０．５」を付加すると、誤差の分布は図８（ｂ）のようになり、全体の誤差分布は図８（ｃ）のようになる。よって、出力ｙ０の平均誤差は「０．７５」、平均二乗誤差は「０．６８７５」となる。しかし、誤差の分布の仕方は図６（ｃ）と同じなので、その分散は「０．１２５」である。ここで平均二乗誤差は、｛（平均誤差）２＋分散｝なので、平均誤差が「０」でない分だけ平均二乗誤差が大きくなってしまう。
【００４６】
図７では、出力ｙ０〜ｙ１５のうちのどの出力に重畳する誤差もその分布の仕方は同じであり、その分散は「０．１２５」である。このように出力によって平均誤差が異なり、それに応じて平均二乗誤差も変わってくる。全ての出力を平均誤差と平均二乗誤差で分類すると、下記の３つのグループに分けられる。
【００４７】
平均誤差＝０．７５、　　平均二乗誤差＝０．６８７５　：ｙ０
平均誤差＝０．２５、　　平均二乗誤差＝０．１８７５　：ｙ７，ｙ８，ｙ１５
平均誤差＝−０．２５、　平均二乗誤差＝０．１８７５　：その他
上述した条件（Ｂ１）を満たさずにロスレス１６点アダマール変換を構成すると、一例として上記のような誤差が重畳するわけである。
【００４８】
本実施の形態に係るロスレス１６点アダマール変換をソフトウェア処理により実現するのは容易である。各々の実数型のアダマール変換部を、固定小数点演算或いは浮動小数点演算で実現し、丸め処理で切り上げを行なうところは、「０．５」を加算してからｆｌｏｏｒ関数を求め、切り捨てを行なうところは、何も加算せずにｆｌｏｏｒ関数を求めることで、図５の構成と同等の演算をソフトウェア処理で実現できる。
【００４９】
＜実施の形態２＞
上記実施の形態１で実現したロスレス１６点アダマール変換において、入力データを４×４の行列に規則的に並べると、４×４の２次元データに対するロスレス２次元アダマール変換になる。２次元的に処理する構成を示す前に、その準備として数学的な表記が下記（６）式のように簡潔になることを示す。
【００５０】
【数６】
2004038451.tif 000008
【００５１】
この（６）式において、「＋」と「−」の要素から成る１つ目（一番左）と５つ目（一番右）の行列は、いずれも丸め処理の内容を表わす。ここで、各記号の意味は図４における「＋」と「−」と同じである。左から２つ目と３つ目の行列間の演算をした後、係数１／２を掛けて、最初の行列で定義される丸め処理を行ない、その後４つ目の行列との間で演算を行ない、係数１／２を掛けた後、最後の行列の丸め処理を行なう。非線形演算では演算の順序が変わると特性が変わるので、この場合、一番左の行列の丸め演算を先に行なわないと、平均誤差が「０」にならない。
【００５２】
但し、この（６）式の変換は一例であって、平均誤差が「０」になるものは、全部で５１２種類あることは既に述べた。それらの違いは、丸め処理の内容を表わす一番左と一番右の行列の違いのみである。よって、その２つの行列を表記すれば、ロスレス４×４の２次元アダマール変換（ロスレス１６点アダマール変換）を規定することができる。
【００５３】
一方、このロスレス１６点アダマール変換を２次元的に処理する構成は図９のようになる。ここではデータを４つずつ垂直方向に処理して、その結果を転置後、水平方向に処理するものである。処理の順序は逆でもよい。
【００５４】
図９は、本発明の実施の形態２に係るロスレス２次元アダマール変換の構成を示す図である。
【００５５】
図９において、９０１，９１１は、前述の（３）式又は（４）式の変換行列に基づいてアダマール変換処理をするアダマール変換部である。９０３，９１３はデコーダで、処理する２次元データの列番号または行番号に基づき、切り上げ処理用の加算データを生成する。９０５，９１５は加算部で、切り上げ用の加算処理を行なう。９０７，９１７は小数部を切り捨てる切り捨て部、９０９はバッファで、４×４の２次元データを一時的に格納し、その転置（並び替え）を行なうのに使用される。
【００５６】
尚、ここで小数部を切り捨てる切り捨て部９０７，９１７は、処理の概念上設けたもので、実体は小数部の信号線をそこで断線して整数部のみを出力することで実現できる。
【００５７】
まず、１列目の４つのデータを並列にアダマール変換部９０１へ入力する。ここでは、前述の（３）式又は（４）式の変換行列に従って変換処理を行なう。ここでは、変換行列によって逆変換側の丸め処理が変わってくるので、（４）式のウォルシュアダマール変換行列を用いることとする。このアダマール変換部９０１で変換処理されたデータは、１ビットの小数部を持つデータとなり、加算部９０５に送られる。
【００５８】
一方、デコーダ９０３は、入力される列番号情報に基づいて、切り上げ処理用の加算データを生成して加算部９０５に供給する。即ち、列番号１，２，３，４に対して、各加算データ（１，０，０，０），（０，１，０，０），（０，０，１，０），（０，０，０，１）を生成して加算部９０５へ送る。これら加算データは、前述の（６）式における一番左の行列の列ベクトルに対応しており、「＋」を「１」に、「−」を「０」に置き換えたものである。
【００５９】
この切り上げ用の加算データは、加算部９０５にて変換データの小数部に加算される。よって、加算データの重みを「０．５」として加算することになる。そして次の切り捨て部９０７にて小数部を切り捨てることにより丸め処理が完結する。ここで、変換データの小数部が「０」である場合、加算部９０５と切り捨て部９０７で行なわれる丸め処理は、該変換データに何の影響も与えないが、該変換データの小数部が「１」である場合には、「０．５」を加算した変換データは切り上げられ、その他のデータは切り捨て処理されることになる。
【００６０】
また、処理対象の４つのデータの列番号が変わると、それに対応して、上述したように切り上げ処理用の加算データも変わり、列番号毎に丸め処理が変化する。こうしてロスレスアダマール変換処理されたデータはバッファ９０９に保存される。このバッファ９０９は、４×４データの転置を行なうだけの小規模なものであるため、例えばレジスタを用いて容易に構成できる。
【００６１】
４つの列（列番号４）データのロスレス変換処理が終了したら、バッファ９０９で転置して行データとして出力する。この行データは、４点アダマール変換部９１１、デコーダ９１３、加算部９１５及び切り捨て部９１７を用いて、ロスレスアダマール変換される。デコーダ９１３は、（６）式における一番右の行列の行ベクトルに対応する加算データを出力する。これにより、ロスレス２次元アダマール変換後の各変換データの平均誤差は「０」となり、平均二乗誤差は「０．１２５」になる。
【００６２】
＜変形例＞
これら２つのデコーダ９０３，９１３は、対応するアダマール変換部９０１，９１１が出力する４つのデータの最下位ビット（４つとも同じである）の値に基づいて出力を変える構成も考えられる。即ち、デコーダ９０３，９１３は最下位ビットを受け取り、その最下位ビットが「０」の時は４つとも「０」の加算データを出力し、最下位ビットが「１」の時は「０．５」又は「−０．５」を出力する。言い方を変えると、このデコーダ９０３，９１３は、最下位ビット（Ｌ）を受け取り、（０．５×Ｌ）又は（−０．５×Ｌ）を出力するとも言える。このようなデコーダ９０３，９１３の出力でも前述の丸め処理と同じ処理を行なうことができる。
【００６３】
＜実施の形態３＞
この実施の形態３は、前述の実施の形態２で説明した４×４のロスレス２次元アダマール変換を用いたロスレス２次元ＤＣＴ（離散コサイン変換）である。このロスレスＤＣＴを最初に実現したのは、下記の文献１である。（文献１）小松邦紀、瀬崎薫：「可逆的離散コサイン変換とその画像情報圧縮への応用」、信学技報ＩＥ９７−８３，ｐ．１−６，Ｎｏｖ．１９９７
この文献１では、アダマール変換を使っていないため、乗算の回数が大変多いことが指摘されている。上記（３）式及び（４）式の変換行列を見て分かるように、４点アダマール変換では、加減算とビットシフトのみで実現でき乗算を必要としない。ロスレス変換にすると丸め処理が増えるが、本願発明人の演算法を用いれば、切り上げ処理に対応して加算を行なうだけである。
【００６４】
またロスレス４点アダマール変換を使ったロスレスＤＣＴが、下記の文献２で提案されている。但し、ここで使っているロスレス４点アダマール変換は、前述の図２の構成である。（文献２）福間慎治、大山公一、岩橋政宏、神林紀嘉：「ロスレスアダマール変換を応用したロスレス８点高速離散コサイン変換」、信学技報ＩＥ９９−６５，ｐ．１−６，Ｄｅｃ．１９９９
図１０は、この文献２のロスレスＤＣＴの構成を示すブロック図である。
【００６５】
図において、１００１，１００３，１００５は、ロスレス４点アダマール変換部で、他の２入力２出力の各ブロックは、２次元ベクトルを平面上で回転する処理を行う回転ユニットである。この回転ユニットは、文献２にも記載されているように、Ｌａｄｄｅｒ　Ｎｅｔｗｏｒｋ化することで、ロスレス回転ユニットとなる。全てのユニットがロスレス（可逆）化されれば、全体としてもロスレス（可逆）となり、ロスレスＤＣＴ処理が可能になる。但し、この構成は一次元の変換のみを示している。
【００６６】
２次元ＤＣＴを行なう場合、図１１に示すように、１次元のＤＣＴを水平方向と垂直方向に分けて処理するのが一般的である。
【００６７】
図１１は、従来のロスレス２次元ＤＣＴの構成を示すブロック図である。
【００６８】
この演算順序では、ロスレス２次元アダマール変換を演算することができない。何故なら、水平アダマール変換と垂直アダマール変換処理が離れているからである。そのため平均誤差をゼロ化した意味がほとんどない。図１１の２次元ＤＣＴの演算順序において、水平方向の後段の処理と垂直方向のロスレスアダマール変換処理を入れ替え、図１２に示す順序で処理することにより、完結した２次元アダマール変換を行うことが可能となり、ここにロスレス２次元アダマール変換を使った新たなロスレス２次元ＤＣＴが実現できる。
【００６９】
図１２は、本発明の実施の形態３に係るロスレス２次元ＤＣＴの構成を示す図である。
【００７０】
図１１と図１２はソフトウェアで行なう処理を処理順に並べたもので、フローチャート形式にはなっていないが、限りなくフローチャートに近いため、各々の図に対応するフローチャートを示すことは省略する。
【００７１】
尚、図１０に示した構成でも図１２に示す順序で処理することができるが、図１３に示す構成でも図１２の順序で処理することができる。
【００７２】
図１３は、図１２のロスレス２次元ＤＣＴに有効な１次元ＤＣＴの構成を示す図である。図１３において、前段の２つのロスレス４点アダマール変換処理部によるロスレスアダマール変換処理は、前述の文献２の技術をそのまま採用したもので、後段のロスレス変換処理は、文献１に記載の技術を少し変形して構成したものである。図１２の順序で処理した場合の効果が大変高いものである。以下に述べる変換精度の評価では、図１３の構成を用いている。
【００７３】
ロスレスＤＣＴの変換精度は、互換性という点で問題となる。即ち、ロスレスＤＣＴを用いて圧縮した符号を、従来のロッシーＤＣＴを用いるデコーダで復号処理した場合に、圧縮による信号の劣化以外にＤＣＴのミスマッチによる信号劣化が発生するからである。しかも、後者の信号劣化は、圧縮率が低い高画質圧縮ほど支配的になる。
【００７４】
図１４は、本実施の形態に係るロスレス２次元ＤＣＴの逆変換精度を示す図である。ここでは参考のために、上記文献１，２のロスレス２次元ＤＣＴの精度も比較して示している。尚、この図１４に示す精度は、ＩＴＵ−Ｔ　Ｈ．２６１規格書におけるＤＣＴの逆変換精度の仕様に基づいて計算したものである。
【００７５】
図１４から明らかなように、本実施の形態に係るロスレス２次元ＤＣＴは、上記文献の方法に較べて、平均二乗誤差の全画素平均と画素間の最大値が極めて近い値となっている。これは、平均二乗誤差の画素間のばらつきが少なく、全ての画素がほぼ一様に劣化することを意味している。本実施の形態における平均二乗誤差の全画素平均は、文献１，２と比較して「２／３」〜「１／２」程度に減少しているだけだが、平均二乗誤差の最大値は、これら文献に比べて「１／３」〜「１／３．７」以下に減少している。更に、平均誤差についても、同様な傾向がある。即ち、本実施の形態では、文献１に較べて全画素平均では２倍以上になっているが、最大値は逆に６割程度に減少している。
【００７６】
このように本実施の形態によれば、全画素の平均誤差を除く他の全て項目で精度の向上が図れた。
【００７７】
なお本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７８】
また本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００７９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００８０】
以上説明したように本実施の形態によれば、ロスレス１６点アダマール変換を、４×２段のロスレス４点アダマール変換を用いて構成する際に、２段目の各アダマール変換に入力する４つの中間データが、奇数個は切り上げられ、残りの奇数個は切り捨てられたものになるよう１段目の丸め処理を決め、２段目の各アダマール変換は４つの入力データが同一のアダマール変換から来たものとして捉え、それを逆変換するように丸め処理の種類を決定する。
【００８１】
これにより、ロスレス変換後の各変換係数の平均誤差を「０」にすることが可能となった。また、各変換係数の平均誤差が「０」となる４×４データに対するロスレス２次元アダマール変換を実現できた。
【００８２】
更には、ロスレス２次元ＤＣＴの演算過程で、前記４×４のロスレス２次元アダマール変換を行なうことにより、該ロスレス２次元ＤＣＴの変換精度を従来方式より上げることができた。
【００８３】
また、２次元処理のロスレス変換装置では、処理対象２次元データの行番号もしくは列番号に基づいて丸め処理が変更できる構成にすることにより変換精度を上げることができる。
【００８４】
更には、ロスレス２次元ＤＣＴの演算過程で、ロスレス２次元アダマール変換を行なうことにより、変換精度のよいロスレス２次元ＤＣＴを実現できる。
【００８５】
【発明の効果】
以上説明したように本発明によれば、ロスレスアダマール変換処理によって発生する誤差が理論上ゼロになるように丸め処理の内容を定めることにより変換係数の精度を高めることができる。
【図面の簡単な説明】
【図１】従来の４×４の整数型可逆アダマール変換処理を実現する基礎となるシグナルフローを示す図である。
【図２】従来の４×４の整数型可逆アダマール変換処理のシグナルフローを示す図である。
【図３】従来のロスレス１６点アダマール変換の構成を示すブロック図である。
【図４】本願発明者が既に提案した８種類のロスレス４点アダマール変換を説明する図である。
【図５】本発明の実施の形態１に係るロスレス１６点アダマール変換の構成を示すブロック図である。
【図６】本実施の形態１に係るロスレス１６点アダマール変換処理における変換誤差の分布を説明する図である。
【図７】本実施の形態に係る図５のロスレス１６点アダマール変換との対比のために、変換時の平均誤差が０にならない構成の一例を説明する図である。
【図８】図７の構成における変換誤差の分布を説明する図である。
【図９】本発明の実施の形態２に係るロスレス２次元アダマール変換の構成を示すブロック図である。
【図１０】文献２に記載されたロスレスＤＣＴの構成を説明する図である。
【図１１】従来のロスレス２次元ＤＣＴの構成を示すブロック図である。
【図１２】本発明の実施の形態３に係るロスレス２次元ＤＣＴの構成を示すブロック図である。
【図１３】本発明の実施の形態３に係るロスレス２次元ＤＣＴに有効な１次元ＤＣＴの構成を示す図である。
【図１４】ロスレス２次元ＤＣＴの逆変換精度を比較して示す図である。
【図１】
2004038451.tif 000009
【図２】
2004038451.tif 000010
【図３】
2004038451.tif 000011
【図４】
2004038451.tif 000012
【図５】
2004038451.tif 000013
【図６】
2004038451.tif 000014
【図７】
2004038451.tif 000015
【図８】
2004038451.tif 000016
【図９】
2004038451.tif 000017
【図１０】
2004038451.tif 000018
【図１１】
2004038451.tif 000019
【図１２】
2004038451.tif 000020
【図１３】
2004038451.tif 000021
【図１４】
2004038451.tif 000022