(57)【特許請求の範囲】
【請求項１】
入力データにおける偶数系列の入力Ｘｅ及び奇数系列の入力Ｘｏを取得する取得手段と、
前記偶数系列Ｘｅを用いて前記奇数系列Ｘｏを演算処理することにより、奇数系列の出力Ｘ’ｏを出力する第１演算手段と、
前記出力Ｘ’ｏを用いて前記偶数系列Ｘｅを演算処理することにより、偶数系列の出力Ｘ’ｅを出力する第２演算手段と、
前記出力Ｘ’ｏの小数部データに演算を施して、前記出力Ｘ’ｅに加算することにより、偶数系列の出力Ｘ”ｅを出力する小数部演算手段と、
前記出力Ｘ”ｅ及び奇数系列出力Ｘ’oを整数化する丸め処理手段と
を有することを特徴とするフィルタ処理装置。
【請求項２】
入力データにおける偶数系列の入力Ｘｅ及び奇数系列の入力Ｘｏを取得する取得ステップと、
前記偶数系列Ｘｅを用いて前記奇数系列Ｘｏを演算処理することにより、奇数系列の出力Ｘ’ｏを出力する第１演算ステップと、
前記出力Ｘ’ｏを用いて前記偶数系列Ｘｅを演算処理することにより、偶数系列の出力Ｘ’ｅを出力する第２演算ステップと、
前記出力Ｘ’ｏの小数部データに演算を施して、前記出力Ｘ’ｅに加算することにより、偶数系列の出力Ｘ”ｅを出力する小数部演算ステップと、
前記出力Ｘ”ｅ及び奇数系列出力Ｘ’ｏを整数化する丸め処理ステップとを有することを特徴とするフィルタ処理方法。
【請求項３】
可逆変換が可能な実数型のフィルタ演算を行なうため、Ｌｉｆｔｉｎｇ演算を用いるフィルタ演算処理手段と、
該演算結果を整数化するための丸め処理手段と
を有し、可逆変換可能な整数型のフィルタ演算処理を実現することを特徴とするフィルタ処理装置。
【請求項４】
前記演算結果を整数化するための丸め処理手段において、該演算結果の一部のビット情報に基づいて補正データを生成することを特徴とする請求項第３項に記載のフィルタ処理装置。
【請求項５】
前記演算結果の一部のビット情報は小数点以下のビット情報であることを特徴とする請求項第４項記載のフィルタ処理装置。
【請求項６】
前記演算結果を整数化するための丸め処理手段において、入力データの一部のビット情報に基づいて補正データを生成することを特徴とする請求項３に記載のフィルタ処理装置。
【請求項７】
可逆変換可能な整数型のフィルタ処理を施されたデータを、実数型のフィルタ演算処理を行なうフィルタ演算処理手段と、該演算結果を整数化するための丸め処理手段とを用いて、元のデータを復元する逆フィルタ処理装置。
【請求項８】
前記実数型のフィルタ演算を行なうフィルタ演算処理手段において、畳み込み演算を用いることを特徴とする請求項第７項記載の逆フィルタ処理装置。
【請求項９】
前記実数型のフィルタ演算を行なうフィルタ演算処理手段において、Ｌｉｆｔｉｎｇ演算を用いることを特徴とする請求項第７項記載の逆フィルタ処理装置。
【請求項１０】
前記演算結果を整数化するための丸め処理手段において、該演算結果の一部のビット情報に基づいて補正データを生成することを特徴とする請求項第７項乃至第９項のいずれか１項に記載の逆フィルタ処理装置。
【請求項１１】
前記演算結果の一部のビット情報は小数点以下のビット情報であることを特徴とする請求項第１０項記載の逆フィルタ処理装置。
【請求項１２】
前記演算結果を整数化するための丸め処理手段において、入力データの一部のビット情報に基づいて補正データを生成することを特徴とする請求項第７項乃至第９項のいずれか１項に記載の逆フィルタ処理装置。
【請求項１３】
可逆変換が可能な実数型あるいは固定小数点型のフィルタ演算を行なうため、Ｌｉｆｔｉｎｇ演算を用いるフィルタ演算処理ステップと、
該演算結果を整数化するための丸め処理ステップと
を用いて、可逆変換可能な整数型のフィルタ演算を実現することを特徴とするフィルタ処理方法。
【請求項１４】
前記演算結果を整数化するための丸め処理ステップにおいて、該演算結果の一部のビット情報に基づいて補正データを生成することを特徴とする請求項第１３項に記載のフィルタ処理方法。
【請求項１５】
前記演算結果の一部のビット情報は小数点以下のビット情報であることを特徴とする請求項第１４項記載のフィルタ処理方法。
【請求項１６】
前記演算結果を整数化するための丸め処理ステップにおいて、入力データの一部のビット情報に基づいて補正データを生成することを特徴とする請求項第１３項に記載のフィルタ処理方法。
【請求項１７】
可逆変換可能な整数型のフィルタ処理を施されたデータを、実数型或いは固定小数点型のフィルタ演算を行なうフィルタ演算処理ステップと、該演算結果を整数化するための丸め処理ステップとを用いて、元のデータを復元する逆フィルタ処理方法。
【請求項１８】
前記実数型或いは固定小数点型のフィルタ演算を行なうフィルタ演算処理ステップにおいて、畳み込み演算を用いることを特徴とする請求項第１７項記載の逆フィルタ処理方法。
【請求項１９】
前記実数型或いは固定小数点型のフィルタ演算を行なうフィルタ演算処理ステップにおいて、Ｌｉｆｔｉｎｇ演算を用いることを特徴とする請求項第１７項記載の逆フィルタ処理方法。
【請求項２０】
前記演算結果を整数化するための丸め処理ステップにおいて、該演算結果の一部のビット情報に基づいて補正データを生成することを特徴とする請求項第１７項乃至第１９項のいずれか１項に記載の逆フィルタ処理方法。
【請求項２１】
前記演算結果の一部のビット情報は小数点以下のビット情報であることを特徴とする請求項第２０項記載の逆フィルタ処理方法。
【請求項２２】
前記演算結果を整数化するための丸め処理ステップにおいて、入力データの一部のビット情報に基づいて補正データを生成することを特徴とする請求項第１７項乃至第１９項のいずれか１項に記載の逆フィルタ処理方法。
【請求項２３】
空間的に隣接し、整数で表現されるデータＤ１、Ｄ２、Ｄ３、…、Ｄｎ、…を入力し、
実数係数をｐ、ｑとした場合に、
Ｘ2n＝Ｄ2n＋ｐ×（Ｄ2n-1＋Ｄ2n+1）
Ｙ2n+1＝Ｄ2n+1＋ｑ×（Ｘ2n＋Ｘ2n+2）
として算出し、得られた成分データＸ、Ｙを出力する画像データ用のフィルタ処理装置であって、
前記Ｘ2n及びＹ2n+1を可逆的に実数演算する実数演算手段と、
該実数演算手段の２つの演算結果に対して、それぞれ整数化し出力する整数化演算手段とを備え、
該整数化演算手段による整数化は、前記ｐ×（Ｄ2n-1＋Ｄ2n+1）及び前記ｑ×（Ｘ2n＋Ｘ2n+2）の丸め演算として作用することを特徴とするフィルタ処理装置。
【請求項２４】
入力されるデータは画素データであって、ウェーブレット変換用の５×３フィルタとして用いることを特徴とする請求項第２３項に記載のフィルタ処理装置。
【請求項２５】
請求項第２４項に記載のウェーブレット変換用フィルタを用いて、入力された画像データを変換する変換手段と、
変換して得られたデータを量子化する量子化手段と、
量子化されたデータを符号化する符号化手段を備える
ことを特徴とする画像符号化装置。
【請求項２６】
空間的に隣接し、整数で表現されるデータＤ１、Ｄ２、Ｄ３、…、Ｄｎ、…を入力し、
実数係数をｐ、ｑとした場合に、
Ｘ2n＝Ｄ2n＋ｐ×（Ｄ2n-1＋Ｄ2n+1）
Ｙ2n+1＝Ｄ2n+1＋ｑ×（Ｘ2n＋Ｘ2n+2）
として算出し、得られた成分データＸ、Ｙを出力する画像データ用のフィルタ処理方法であって、
前記Ｘ2n及びＹ2n+1を可逆的に実数演算する実数演算工程と、
該実数演算工程の２つの演算結果に対して、それぞれ整数化し、出力する整数化演算工程とを備え、
該整数化演算工程による整数化は、前記ｐ×（Ｄ2n-1＋Ｄ2n+1）及び前記ｑ×（Ｘ2n＋Ｘ2n+2）の丸め演算として作用することを特徴とするフィルタ処理方法。
【請求項２７】
入力されるデータは画素データであって、ウェーブレット変換用の５×３フィルタとして作用することを特徴とする請求項第２６項に記載のフィルタ処理方法。
【請求項２８】
空間的に隣接し、整数で表現されるデータＤ１、Ｄ２、Ｄ３、…、Ｄｎ、…を入力し、
実数係数をｐ、ｑとした場合に、
Ｘ2n＝Ｄ2n＋ｐ×（Ｄ2n-1＋Ｄ2n+1）
Ｙ2n+1＝Ｄ2n+1＋ｑ×（Ｘ2n＋Ｘ2n+2）
として算出し、得られた成分データＸ、Ｙを出力する画像データのためのフィルタ処理用のコンピュータプログラムであって、
前記Ｘ2n及びＹ2n+1を可逆的に実数演算する実数演算工程のプログラムコードと、
該実数演算工程の２つの演算結果に対して、それぞれ整数化し出力する整数化演算工程のプログラムとを備え、
該整数化演算工程による整数化は、前記ｐ×（Ｄ2n-1＋Ｄ2n+1）及び前記ｑ×（Ｘ2n＋Ｘ2n+2）の丸め演算として作用することを特徴とするコンピュータプログラム。
【請求項２９】
請求項第２８項に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はフィルタ処理装置及びその制御方法に関するものである。
【０００２】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を除く、或いは画質の劣化が視覚的に認識し難い程度で画像の内容を変更することによってデータ量を削減する高能率符号化が用いられる。
【０００３】
例えば、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＥＰＧでは、画像データをブロックごと（８画素×８画素）に離散コサイン変換（ＤＣＴ）でＤＣＴ係数に変換した後に、各係数を各々量子化し、さらにエントロピー符号化することにより画像データを圧縮している。ブロックごとにＤＣＴ、量子化を行なっているので、復号画像の各ブロックの境界で、所謂ブロック歪みが見える場合がある。
【０００４】
一方、新しい静止画像の国際標準符号化方式としてＪＰＥＧ２０００が検討されているが、ＪＰＥＧ２０００では、量子化の前に行う前処理の１つとして、ウェーブレット変換が提案されている。ウェーブレット変換は、現行ＪＰＥＧのようにブロック単位で処理を行うのではなく、入力データを連続的に処理するので、復号画像の劣化が視覚的に見えにくいといった特徴がある。
【０００５】
ＪＰＥＧ２０００で用いられる離散ウェーブレット変換は、画像データを低域周波数成分と高域周波数成分とに分けるフィルタ処理として位置付けられる。通常、フィルタ処理は、フィルタ係数と画像データとのコンボリューション（畳み込み）演算によって行なわれるが、ＪＰＥＧ２０００で用いられる下記の離散ウェーブレット変換は、前記畳み込み演算の他に、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅによる方法が適用できる。
・Daubecheis ９／７  Ｆｉｌｔｅｒ  （以下、９×７フィルタと称す）
・    〃     ５／３  Ｆｉｌｔｅｒ  （以下、５×３フィルタと称す）
以下、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅについて説明する。
【０００６】
＜Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅの説明＞
図１に順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅ、 図２に逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅの基本構成を示す。図の中のｐ, ｕはＬｉｆｔｉｎｇ係数と呼ばれるもので、図３に、５×３フィルタのフィルタ係数を、図４に該５×３フィルタのＬｉｆｔｉｎｇ係数を示す。
【０００７】
図４に示すＬｉｆｔｉｎｇ係数
ｐ＝（−１，−１）／２
ｕ＝（  １，  １）／４
を元に、以下、図１の動作について説明する。
【０００８】
Ｘは入力画像データであり、同図に示すように、Ｘ０, Ｘ１, Ｘ２, Ｘ３, Ｘ４, Ｘ５ ...の順に入力される。入力画像の先頭から、偶数系列の画素データと奇数系列の画素データとに分類される。
【０００９】
奇数系列の画素データ（Ｘ１，Ｘ３，Ｘ５，Ｘ７．．．）は、間引きユニット１０５にて入力画像データを先頭から１つおきに間引いて（ダウンサンプリングして）生成する。
【００１０】
偶数系列の画素データ（Ｘ０，Ｘ２，Ｘ４，Ｘ６．．．）は、遅延ユニット１０１にて画像データを１画素遅延させ、その後、間引きユニット１０３にて１画素遅延後の画像データを１つおきに間引いて（ダウンサンプリングして）生成する。
【００１１】
２つの間引きユニットは同じタイミングで動作しているため、前記遅延ユニット１０１で１画素遅延させたデータと、遅延させない入力画像データを各々間引くことによって、間引き位相の異なる前記２つの系列の画素データが生成できるわけである。
【００１２】
乗算器１０７にて、偶数系列の画素データに、Ｌｉｆｔｉｎｇ係数ｐを乗算し、乗算結果を加算器１０９にて、奇数系列の画素データに加算して、高域側の変換係数Ｘ'ｏ（Ｘ'１，Ｘ'３，Ｘ'５，Ｘ'７．．．）を演算する。
【００１３】
Ｌｉｆｔｉｎｇ係数の乗算と該乗算結果の加算処理は、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅにおいて１つの単位となる処理で、これをＬｉｆｔｉｎｇ演算ステップと言う。
【００１４】
Ｌｉｆｔｉｎｇ係数ｐは２つの成分を持つベクトルデータであり、連続する２つの偶数系列の画素データに、各成分（係数値）を乗算し、２つの乗算結果の和がＬｉｆｔｉｎｇ係数ｐの乗算結果となる。
【００１５】
乗算器１１１におけるＬｉｆｔｉｎｇ係数ｕの乗算も同様に行なう。乗算対象は演算したばかりの高域側の変換係数Ｘ'ｏである。該乗算結果を、加算器１１３にて偶数系列の画素データに加算して、低域側の変換係数Ｘ'ｅ（Ｘ'０，Ｘ'２，Ｘ'４，Ｘ'８．．．）を求める。
【００１６】
上述した処理を具体的に式で示すと、
（高域側の変換係数）：
Ｘ'２ｎ＋１＝Ｘ２ｎ＋１＋（−Ｘ２ｎ−Ｘ２ｎ＋２）／２      （１）
（低域側の変換係数）：
Ｘ'２ｎ  ＝Ｘ２ｎ  ＋（Ｘ'２ｎ−１＋Ｘ'２ｎ＋１）／４      （２）
となる。
【００１７】
上記の処理は水平方向に１回、垂直方向に１回の併せて２回行うことを１セットとし、低域成分についてこれを数セット繰り返すことで離散ウェーブレット変換が行われる。この後は、量子化、エントロピー符号化を行い、最終的に符号化された画像データを生成することになる。一方、復号化する側では、この処理を逆に行うことで、元の画像に復元することになる。
【００１８】
ここで、符号化側からび復号化側への一連の処理を想定すると、次の様になる。なお、説明を簡単にするため、量子化、エントロピー符号化は省略する。また、入力画像データをＤ、離散ウェーブレット変換をＤＷＴ、その逆変換をＩＤＷＴとする。
【００１９】
Ｄ→ＤＷＴ→ＩＤＷＴ→Ｄ
このように元の画像Ｄを復元できることを意味する。すなわち、上記の変換過程は、数学的に見た場合に可逆であると言える。しかしながら、回路、或いはソフトウェアでこれを実装する場合、「可逆」にはなりずらい。理由は次の通りである。
【００２０】
元の画像データは一般的に整数値であるが、上記のフィルタ処理を１回行なうと浮動小数点型のデータになり、小数部が例えば３ビット発生する。２次元フィルタ処理では、先に説明したように、水平方向に１回と垂直方向に１回の合わせて２回、上記フィルタ処理を行なうので、途中で小数部の丸め処理を行なわなければ、最終的に６ビットの小数部が発生する。さらに、該フィルタ処理を再帰的に何度も行なえば、それに比例して小数部は増加する。
【００２１】
６ビット以上もあるような小数部をそのままにしておくと、データ量が増えてしまうので、通常は、丸め処理をして整数化をした後に保存する。画像データ圧縮時には、整数化、或いは量子化を行ない、フィルタ処理した後のデータをさらに削減する。
【００２２】
フィルタ処理した結果を、丸め処理したり量子化したりすると、情報を失うことになるので、逆方向のフィルタ処理（復号化する側での処理になる）をしても、元の画像データと同じデータに戻ることはない。したがって、回路やソフトウェアとして実装した場合には、「可逆」にはならない。
【００２３】
以上が順方向のフィルタ処理であるが、次に逆方向の処理について簡単に説明する。
【００２４】
図２に示す、逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅにおける処理も順方向の処理と似た処理を行なう。処理内容を式で示すと、
（偶数系列の画素）：
Ｘ２ｎ  ＝Ｘ２ｎ−（Ｘ'２ｎ−１＋Ｘ'２ｎ＋１）／４        （３）
（奇数系列の画素）：
Ｘ２ｎ＋１＝Ｘ’２ｎ＋１−（−Ｘ２ｎ−Ｘ２ｎ＋２）／２      （４）
となる。順方向の処理と異なるのは、以下の３点である。
・２回のＬｉｆｔｉｎｇ演算ステップで使用するＬｉｆｔｉｎｇ係数の順序を逆にする。
・Ｌｉｆｔｉｎｇ係数を乗算した結果を加算ではなく減算する。
・間引きユニットの替わりに、ゼロ挿入ユニットをＬｉｆｔｉｎｇ演算後に使用する。
【００２５】
図２におけるユニット２０９と２１３が上記減算を行なう減算器であり、ユニット２０３と２０５がゼロ挿入ユニットである。
【００２６】
あとは、位相合わせのために、遅延ユニット２０１にてゼロ挿入された奇数系列の画素データを１画素分遅延させる。この結果、ゼロでない有効な画素データが偶数系列側と奇数系列側から交互に得られるようになる。それを１系列に合成することにより、元の画像データを順方向フィルタ処理と逆方向フィルタ処理したデータを得ることができる。
【００２７】
フィルタのタップ数が変われば、Ｌｉｆｔｉｎｇ係数、Ｌｉｆｔｉｎｇ演算ステップの回数が変わってくる。例えば、前記９×７フィルタでは、Ｌｉｆｔｉｎｇ演算ステップの回数が４回になる。
【００２８】
Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いると、積和演算が畳み込み演算処理に比べて少ない回数で実現できるため、インプリメントが効率化される上、さらに、後述する整数型の可逆変換が可能になる。
【００２９】
＜可逆変換の説明＞
先に説明したように、数学的可逆であっても、実装した場合には可逆（以下、実装可逆という）になるとは限らない。以下、より詳しく説明する。
【００３０】
広義の可逆変換とは順方向にフィルタ処理（変換処理）した変換係数データを、逆方向にフィルタ処理すると完全に元のデータに戻すことができる変換である。可逆変換のこの性質を可逆性、或いは可逆的と言う。数学的に可逆変換と言われるものがこの範疇に入る。具体的には、ＤＣＴ変換等のように変換行列が正規直交行列で表わされるようなものや、上記Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅで演算されるフィルタ等がある。広義の可逆変換では、実数演算時の誤差が大きい場合、繰り返し処理で誤差が累積することにより、逆変換しても元に戻らないことがある。そのため演算ビット長に配慮する必要がある。その意味と以下に説明する整数型と対比するため、広義の可逆変換を以下では実数型の可逆変換と言う。
【００３１】
実数型の可逆変換は、可逆性を保つために保持しなければならない総データ量（データ数×ビット長）が増える。変換を再帰的に何度も行なう場合、該データ量は元データの何倍にも増える。よって、データの圧縮が目的で変換処理をする場合、可逆性を犠牲にして、非可逆の圧縮を行なうのが一般的である。画像データ（静止画、動画）圧縮に用いられるＪＰＥＧ，Ｈ２６１，ＭＰＥＧ１／２／４等はその代表である。
【００３２】
それに対して、整数型の可逆変換は、フィルタ処理後のデータが入力データと同じ整数（入力が固定小数点データなら出力も同じ固定小数点データというケースもある）でありながら、逆変換処理で元のデータに戻る変換処理である。該可逆変換は、上記実数型の可逆変換結果を単純に丸め処理して整数化すれば実現できると言ったものでは無く、後述するように各Ｌｉｆｔｉｎｇ演算ステップにおいて、整数化のための丸め処理を行なうことによって実現できる。これを狭義の可逆変換と言い、これ以降、単に可逆変換（可逆フィルタ）と言えば、狭義の可逆変換、すなわち、整数型の可逆変換のことをさす。
【００３３】
ある変換が可逆的であることを示すには、順方向の可逆変換とそれに対応する逆方向の可逆変換を対で示す必要がある。
【００３４】
Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いて可逆フィルタ処理を実現するには、前述したように各Ｌｉｆｔｉｎｇ演算ステップにおいて丸め処理を行なうわけだが、さらに詳しく言うと、各Ｌｉｆｔｉｎｇ演算ステップにおいて、Ｌｉｆｔｉｎｇ係数乗算後の結果を加減算する前に丸め処理を行なう、ということである。
【００３５】
以下では、可逆変換可能な５×３フィルタ（以下、可逆５×３フィルタと言う）を例にとり、可逆性について説明する。そのために、順方向可逆変換の後、直ちに逆方向可逆変換を行なう処理系を図５に示す。
【００３６】
同図において、５０１、５０３，５０５、５０７は入力データを超えない最大の整数値を取り出すｆｌｏｏｒ関数演算ユニット、５０２と５０４はＬｉｆｔｉｎｇ係数を乗算したデータに０．５を加算する加算ユニットである。その他のユニットは、前記図１及び図２で用いていた同一番号ユニットとまったく同じである。同図における加算器と減算器には、整数データのみしか入力されず、出力も当然整数データとなる。このようなＬｉｆｔｉｎｇ演算を整数型Ｌｉｆｔｉｎｇ演算と言い、可逆変換を実現するために用いられる。
【００３７】
図５の左側から入力した画像データ（整数値）を、順方向フィルタ処理部５４０で処理し、次に逆方向フィルタ処理部５５０で処理した結果が、元の入力とまったく同じになることを説明することによって、該フィルタ処理（変換処理）が可逆的であることを示す。
【００３８】
まず、図５における４つの加算器と減算器の入力は全て整数値であり、その出力も整数値にであることに注目してもらいたい。
【００３９】
説明の方針として、以下の性質（ａ）（ｂ）が成り立つことを説明した後、性質（ｃ）を用いて、フィルタ処理前後の偶数画素系列・奇数画素系列がそれぞれ等しいことを示す。
（ａ）順方向フィルタ処理部５４０内のｆｌｏｏｒ関数演算ユニット５０３の出力と、逆方向フィルタ処理部５５０内のｆｌｏｏｒ関数演算ユニット５０５の出力とが等しい。
（ｂ）順方向フィルタ処理部５４０内のｆｌｏｏｒ関数演算ユニット５０１の出力と、逆方向フィルタ処理部５５０内のｆｌｏｏｒ関数演算ユニット５０７の出力とが等しい。
（ｃ）加算した値と同じ値を減算すれば、加算前の元の値に戻る。
【００４０】
乗算器１１１と２１１は同じＬｉｆｔｉｎｇ係数ｕを乗算するものであり、乗算対象となるデータ系列も同じ高域側の変換係数Ｘ'ｏである。よって、該２つの乗算器の出力は等しい。該出力をそれぞれ加算ユニット５０２、５０４において０．５を加算し、ｆｌｏｏｒ関数演算ユニット５０３、５０５を経由して得られる結果も当然等しくなる。これで性質（ａ）が成り立つことが言える。これに性質（ｃ）を利用すると、加算器１１３に入力される偶数画素系列Ｘｅと減算器２１３から出力される偶数画素系列も等しいことが言える。
【００４１】
次に、乗算器１０７と２０７も同じＬｉｆｔｉｎｇ係数ｐを乗算するものであり、乗算対象となるデータ系列も上述の偶数画素系列Ｘｅである。よって、該２つの乗算器の出力も等しいことが言える。該出力をそれぞれ同じ機能のｆｌｏｏｒ関数演算ユニット５０１、５０７で処理した結果も当然等しくなる。これで性質（ｂ）も成り立つことが言えた。これに性質（ｃ）を利用すると、加算器１０９に入力される奇数画素系列Ｘｏと減算器２０９から出力される奇数画素系列も等しいことが言える。よって、図５に示す順方向フィルタ処理部５４０と逆方向フィルタ処理部５５０は、それぞれ可逆的であると言える。
【００４２】
順方向フィルタ処理部５４０の出力は、整数値であるため整数化のための丸め処理は不要であり、該整数値の出力を直接、逆方向フィルタ処理部５５０に入力することが出来る。データ圧縮時に用いる量子化処理で量子化ステップを“１”に設定すれば、該量子化処理で情報が欠損しないので、可逆の圧縮を行なうことができる。一方、量子化ステップを“１”より大きく設定すれば、情報の欠損が生じるので、圧縮率は高くなるが可逆では無くなる。
【００４３】
上述したように、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いることにより、可逆変換が可能になる。ここで、フィルタの種類とそれを実現する演算手法との関係を整理すると以下のようになる。
・インパルス応答が有限なフィルタ処理は畳み込み演算で実現可能
・一部のフィルタ処理はＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅで実現可能（一部は不可）
・Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅで実現できる実数型のフィルタは可逆変換可能・上記実数型の可逆フィルタにおいてＬｉｆｔｉｎｇ演算を整数型にすることで、整数型の可逆フィルタ処理を実現することが可能
よって、ほとんどのフィルタ処理は畳み込み演算で実現できるのに、整数型の可逆フィルタ処理は畳み込み演算を用いては実現できない。これでは、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅでは実現できない（畳み込み演算でしか実現できない）フィルタ処理と整数型の可逆フィルタ処理の両機能が必要な場合、別々の処理部（回路）で実現しなければならない。
【００４４】
また、整数型の可逆フィルタ処理を行なう際には、整数型のＬｉｆｔｉｎｇ演算を行なう必要があるため、実数型のフィルタ処理を同時に行なうことが出来ず、整数型と実数型の両方のフィルタ処理結果を同時に得ることも出来ない。
【００４５】
【発明が解決しようとする課題】
以上の如く、これまでは可逆フィルタ処理を畳み込み演算で実現することができなかったので、畳み込み演算でしか実現できないフィルタ処理と可逆フィルタ処理の両機能が必要な場合、別々の処理部（回路）で実現しなければならず、フィルタ処理装置の規模が大きくなり、安価なコストでフィルタ処理装置を構成することができない、と言った問題があった。
【００４６】
また、整数型の可逆フィルタ処理と実数型のフィルタ処理を同時に行なうことが出来ず、整数型と実数型の両方のフィルタ処理結果を同時に得ることが出来ず、例えばこれらを備えるチップを製造するには、２種類のフィルタを実装しなければならなかった。
【００４７】
本発明はかかる問題点に鑑みなされたものであり、特に、ＪＰＥＧ２０００におけるウェーブレット変換等に適用でき、可逆性を有しながらも畳み込み演算により実現しうるフィルタ演算装置及び方法、並びにコンピュータプログラム及び記憶媒体を提供しようとするものである。
【００４８】
【課題を解決するための手段】
この課題を解決するため、例えば本発明のフィルタ処理装置は以下の構成を備える。すなわち、
入力データにおける偶数系列の入力Ｘｅ及び奇数系列の入力Ｘｏを取得する取得手段と、
前記偶数系列Ｘｅを用いて前記奇数系列Ｘｏを演算処理することにより、奇数系列の出力Ｘ’ｏを出力する第１演算手段と、
前記出力Ｘ’ｏを用いて前記偶数系列Ｘｅを演算処理することにより、偶数系列の出力Ｘ’ｅを出力する第２演算手段と、
前記出力Ｘ’ｏの小数部データに演算を施して、前記出力Ｘ’ｅに加算することにより、偶数系列の出力Ｘ”ｅを出力する小数部演算手段と、
前記出力Ｘ”ｅ及び奇数系列出力Ｘ’oを整数化する丸め処理手段とを有する。
【００４９】
また、本発明のフィルタ処理方法は、
入力データにおける偶数系列の入力Ｘｅ及び奇数系列の入力Ｘｏを取得する取得ステップと、
前記偶数系列Ｘｅを用いて前記奇数系列Ｘｏを演算処理することにより、奇数系列の出力Ｘ’ｏを出力する第１演算ステップと、
前記出力Ｘ’ｏを用いて前記偶数系列Ｘｅを演算処理することにより、偶数系列の出力Ｘ’ｅを出力する第２演算ステップと、
前記出力Ｘ’ｏの小数部データに演算を施して、前記出力Ｘ’ｅに加算することにより、偶数系列の出力Ｘ”ｅを出力する小数部演算ステップと、
前記出力Ｘ”ｅ及び奇数系列出力Ｘ’ｏを整数化する丸め処理ステップとを有する。
【００５２】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を説明するが、先ず、基本部分について説明する。
【００５３】
先ず、本発明の基礎概念について説明する。
【００５４】
図２７は、整数型Ｌｉｆｔｉｎｇ演算部の符号化側及び復号化側の概念図（整数化Ｌｉｆｔｉｎｇ）である。なお、ここでは説明を簡単にするため、図示では量子化ステップを“１”とし（量子化が存在しない場合と等価）、エントロピー符号化及び復号化にかかる構成については省略して示している。
【００５５】
図示において、Ｘ2n、Ｘ2n+1は多値画像（例えば８ビットの整数値の画素データ）である。入力される水平方向の画素データをＸ0,Ｘ1,Ｘ2,Ｘ3,Ｘ4…と表現したとき、Ｘ2nはＸ0,Ｘ2,Ｘ4…と偶数番目の画素データを示し、この順序で入力されるものである。また、Ｘ2n+1はＸ1,Ｘ3,Ｘ5…と奇数番目の画素データを示し、やはりこの順序で入力されるものである。かかる入力はダウンサンプリング処理で生成される。
【００５６】
さて、図示の符号化側の出力θｂに着目してみる。このθｂの或る値θｂnは、次のようにして演算されたものと等価となる。
【００５７】
θｂn＝θ'ｂ＋整数化（ｋ0×(θa2n-1＋θa2n+1））
ここで、注目したいのは、θ'bも同様の丸め演算によって算出されたものであるので整数になっている点である。すなわち、図示のようにＬｉｇｈｔｉｎｇ係数が何でもあっても、その後に丸め演算（整数化）を施すことによって、値は整数として保持されることになる。
【００５８】
一方、復号化側では、符号化側における処理とちょうど逆順に処理することになる。ここで、復号化側におけるθ''bに着目すると、このθ''bは、Lifting演算Ｋ’によって算出された値をθbから減じた値である。しかるに、このLifting演算Ｋ’は、符号化側のLifting演算Ｋと全く同様に、共通のθａに対する演算値を有する。すなわち、加算したものを減算しているだけであるので、符号化側でのθ'bと、復号化側でのθ''bとは完全に等しいことがわかる。これはLifting演算係数ｋ2が如何なるものであっても成立することが理解できよう。
【００５９】
上記では、θｂについて説明したが、θａについても全く同様なことが言える。より細かくは、１つのLifting演算によって生成された出力データ（整数）は、必ず可逆にすることができる。以上が整数型Ｌｉｆｔｉｎｇ演算によるフィルタの構成である。
【００６０】
次に、整数型Lifting演算のモデルとして、図２８（ａ）のよう構成について考察してみる。図示では、２つのLighting演算部（２段のLifting演算部）で構成される例を示している。ここでは入力される信号（データ）系列をＸe、Ｘoとし、２つの演算結果により出力される信号（データ）系列をＸ'e、Ｘ'oと表現する。言うまでもないが、これら信号系列Ｘe、Ｘo、Ｘ'e及びＸ'oの各データは整数である。
【００６１】
また、Lifting演算係数ｐ、ｕであるが、ＪＰＥＧ２０００におけるフィルタタイプとして５×３フィルタを例にして説明する。よって、Lifting演算係数ｐは−（ｐ0，ｐ1）＝−（１／２、１／２）、演算係数ｕは（ｕ0，ｕ1）＝（１／４、１／４）であるとして説明する。
【００６２】
さて、同図（ａ）であるが、その意味するところを式で示すと次の通りである。すなわち、
Ｘ'on＝Ｘon−ｆｌｏｏｒ（p0・Ｘen-1+ｐ1・Ｘen+1）
Ｘ'en＝Ｘen＋ｆｌｏｏｒ（ｕ0・Ｘ'on-1＋ｕ1・Ｘ'on+1＋0.5）
ここで、floor(x)はｘを越えない最大整数を返す関数（もしくは回路）である。
【００６３】
さて、図２８（ｂ）は同図（ａ）の等価な回路構成である。図示でｃｅｉｌｉｎｇ（ｘ）とは、ｘを越える最小整数を返す関数（もしくは回路）である。等価である理由は次の通りである。
【００６４】
先ず、演算器１の出力について考察する。
【００６５】
同図（ａ）におけるＸ'oは、ＸｅにLifting演算係数ｐによる乗算結果に対してｆｌｏｏｒ演算した結果を、入力されるデータＸo（整数であることに注目されたい）から減じることを示しているわけであるから、ｆｌｏｏｒ演算は、データＸoから減じる値を小さくする方向に作用していることになる。換言すれば、この場合のｆｌｏｏｒ演算は、その減算結果（演算器１の出力）を大きくするように作用していることに他ならない。
【００６６】
したがって、同図（ｂ）におけるｃｅｉｌｉｎｇ演算（及びその位置）によって、その演算内容は同図（ａ）と等価となる。
【００６７】
なお、上記の点は、同図（ａ）と同図（ｂ）の関係が、
整数−floor(実数)＝ceiling(整数−実数）
となっていると言えば、より分かりやすい。
【００６８】
次に、図２８（ａ）の演算器２の出力について考察する。演算器２における演算内容を簡単に表現すると次の通りである。
整数＋ｆｌｏｏｒ（実数＋０．５）
これは、次のように表現できるものである。
ｆｌｏｏｒ（（整数＋実数）＋０．５）
図２８（ｂ）はまさにこれを表している。
【００６９】
以上の通りであるから、図２８（ａ）と同図（ｂ）とは等価な回路構成であることがわかる。
【００７０】
次に、図２８（ｂ）におけるｃｅｉｌｉｎｇを実装する場合について考察する。
【００７１】
ｃｅｉｌｉｎｇは小数点以下を切り上げるものであるが、この場合小数点以下の情報は小数点第１位の１ビットしかなく、該１ビットは演算器１からの出力の最下位ビットである。よって、該最下位の１ビットを演算器１の出力値に加算すれば良い。或いは、それを最下位ビットを除く値（上位乃整数）に足しても同じ結果を得ることができる。
【００７２】
これを表現したのが同図（ｃ）である。すなわち、同図（ｃ）は同図（ｂ）、さらには同図（ａ）と等価となる。
【００７３】
更に、同図（ｃ）の演算係数ｕについて考察すると、分配法則に則って、同図（ｄ）のように変更できることがわかる。
【００７４】
同図（ｄ）に着目すると、破線左側は実数演算処理、すなわち、実数型Lifting演算そのものであり、破線右側では整数化処理を行っていることになる。すなわち、同図（ｄ）の構成にすることで、整数型Lifting演算を用いないで済み、実数型Lifting演算（丸め無し演算）と整数化演算で実現できることになる。
【００７５】
図２８（ｄ）の構成をまとめると次の様になる。なお、実数型Lifting演算部における出力値（一時的な出力値）を図示の如くＸet、Ｘotと表現する。
【００７６】
先ず、実数型Lifting演算部では、次のような処理を行っていることになる。すなわち、
Ｘot2n+1＝Ｘo−（Ｘe2n＋Ｘ2n+1）×１／２
Ｘet2n＝Ｘe2n＋（Ｘot2n-1＋Ｘot2n+1）×１／４
上記式は、図２８（ａ）の基本構成における整数化（floor）を除いた実数型Lifting演算に他ならない。そして後続する整数化演算での処理は、上記式の演算結果を整数化するものであるが、分かりやすく説明するのであれば、上記算出結果に対して、あたかもそれぞれの式の右辺第２項の「（Ｘe2n＋Ｘ2n+1）×１／２」及び「（Ｘot2n-1＋Ｘot2n+1）×１／４」を整数化させたものと等価になるように補正していることに他ならない。
【００７７】
図２８（ｄ）に示すように実数型Lifting演算は畳み込み演算で実現（実装）でき、その後に整数化演算を行えば良いので、非常に簡単な構成で実現できることになる。
【００７８】
上記例では２段の整数型Lifting演算を、２段の実数型Lifting演算と後続する整数化演算に分ける例を示した。例えば４段の整数型Lifting演算は図２９に示すように表現できるが、同図を見ると、２つの２段の整数型Lifting演算Ａ，Ｂを数珠つなぎ（カスケード接続）にしたものとも考えられるので、それぞれについて上記の構成に分離させることができるのは明らかである。また、６段、８段についても同様である。
【００７９】
また、復号化側でも整数型Lifting演算についても、同様の思想で実数型Lifting演算と整数化演算に分けることができるのは容易に理解でるであろうし、それが４段、６段、…となっていても同様である。以下、本実施形態における具体的な例を説明する。
【００８０】
＜第１の実施形態＞
本発明の第１の実施形態では、可逆変換が可能な実数型のフィルタ演算を畳み込み演算で行なう。
【００８１】
前記５×３フィルタを畳み込み演算で実現するハード構成は、図７のようになる。この図７の構成は、５×３フィルタが出力する高域変換係数と低域変換係数とを交互に出力するものであるため、構成が少し複雑になる。そこで、高域変換係数のみを演算する構成を図６（ａ）に、低域変換係数のみを演算する構成を図６（ｂ）に示し、それについて説明した後に図７の構成について説明する。
【００８２】
図６（ａ）、（ｂ）の構成は、図３に示すフィルタ係数から容易に構成できる公知の技術内容であるため、簡単に説明する。
【００８３】
同図において、６０１はフィルタ処理するためのデータを並列に５つ取り出すためのシフトレジスタ、６０３、６１３、６１５、６１７、６３３は加算器、６０５、６２３、６２５、６２７は係数を乗算する乗算器（係数が２のべき乗なので実際はビットシフトのみで実現できる）、そして、６０７、６３５は、減算器である。
【００８４】
シフトレジスタ６０１への入力は８ビットの整数データ（画素データ）とする。
【００８５】
図６（ａ）では、シフトレジスタから出力される５つのデータの内、３つのみを用いて高域変換係数を演算する。フィルタ係数が−１／２である２つのデータを、まず加算器６０３で加算して、それから乗算器６０５にて１／２を乗算し減算器６０７に入力する。一方、フィルタ係数が１の中央のデータは直接減算器６０７に入力する。該構成によりフィルタ係数[−１／２，１，−１／２]のフィルタ演算が実現される。
【００８６】
図６（ｂ）では、シフトレジスタから出力される５つのデータすべてを演算に用いる。フィルタ係数が３／４である中央のデータは、乗算器６２３にて１／２を乗算した結果と加算器６１５を経由して乗算器６２５にて１／４を乗算した結果を加算器６３３で加算することにより、３／４の乗算を実現している。フィルタ係数が１／４である２つのデータは、加算器６１３で加算し、加算器７１５をとおって前記乗算器６２５にて１／４を乗算している。フィルタ係数が−１／８である２つのデータは、加算器６１７にて加算して、乗算器６２７にて係数１／８を乗算した後、減算器６３５に入力している。以上の演算により、フィルタ係数[−１／８，１／４，３／４，１／４，−１／８]のフィルタ演算が実現される。上記演算後の出力データは、正のレンジが広がる上に、負の値になることがあるため、符号１ビットと符号を除く整数部１ビットが増えると供に小数点以下に３ビットの情報が付く。
【００８７】
図７の構成は図６（ａ）と（ｂ）を統合して、１サイクル毎に交互に高域変換係数と低域変換係数を出力するようにしたものである。よって、図７を構成するユニットは基本的に図６（ａ）（ｂ）の構成ユニットと同じであり、一部が共用され、一部が追加される。追加されるユニットは、セレクタ７１１と７１３であり、共用されるユニットは、加算器６０３と６１３、減算器６０７と６３５であり、加算器６１３と減算器６３５を用いている。
【００８８】
セレクタ７１１と７１３には、画像データの入力用のクロック（２分周することで論理highとlowを偶数、奇数画素データに割り当てることができる）がそれぞれ供給され、各々Ｈ側の端子に切り換わると高域変換係数が出力され、Ｌ側の端子に切り換わると低域変換係数が出力される。出力データの形式は、符号＋整数部１０ビット、小数部３ビットである。
【００８９】
可逆変換可能な実数型のフィルタ演算を行なう１つの形態である上記構成から得られるデータに対し、図９に示す補正データ生成部と整数化丸め部とで、可逆変換可能な整数型のフィルタ処理結果に変換することで、図２８（ｄ）と等価回路が構成できる。
【００９０】
前記図７の説明と同様、図９の説明も高域変換係数の処理と低域変換係数の処理に分けて説明する。図８（ａ）が高域変換係数の処理を表わし、（ｂ）が低域変換係数の処理を表わす。
【００９１】
図８では、符号＋整数部１０ビット、小数部３ビットの３つのデータを並列に３つ取り出すためのシフトレジスタ８０１を用いる。図８（ａ）に示す高域変換係数の処理は、シフトレジスタ８０１から出力される３つデータの中央が高域変換係数（実数値）になるタイミングで行なう。
【００９２】
該中央のデータのみに対して、８０３の加算ユニットにて０．５を加算し、８０５のｆｌｏｏｒ関数演算ユニットにて該加算結果を超えない最大の整数値を求め出力する。この出力は整数化された高域変換係数である。
【００９３】
図８（ｂ）に示す低域変換係数の処理は、シフトレジスタ８０１から出力される３つデータの中央が低域変換係数（実数値）になるタイミングで行なう。
【００９４】
低域変換係数の両側の高域変換係数各々から小数点第１位のビットのみを取り出し、それを加算器８１３にて正の値として加算する。結果は、整数部１ビットと小数部１ビットの正の数である。該結果に係数１／４を乗算器８１５にて乗算し、小数点第２位と第３位のデータに変換する。このデータは補正データとして加算器８１７にて、低域変換係数（実数値）に加算する。該加算結果に、加算ユニット８１９にて０．５を加算し、ｆｌｏｏｒ関数演算ユニット８２１にて該加算結果を超えない最大の整数値を求め出力する。これが整数化された低域変換係数である。
【００９５】
図９の構成は、図８（ａ）と（ｂ）の機能を統合したものであって、１サイクル毎に交互に整数値の高域変換係数と低域変換係数を出力するようにしたものである。よって、図９を構成するユニットは基本的に図８（ａ）（ｂ）の構成ユニットと同じであり、一部が共用され、一部が追加される。共用されるユニットは、加算ユニット８０３と８１９、ｆｌｏｏｒ関数演算ユニット８０５と８２１であり、追加されるユニットは、ゲートユニット８３１である。低域変換係数出力時には前記補正データを有効にし、高域変換係数出力時には前記補正データをマスクして無効化するように制御する。
【００９６】
以上説明したように、可逆変換が可能な実数型のフィルタ演算処理部（図７）と、該演算結果から補正データを生成し、該補正データを加算後、整数化のための丸め処理を行なう処理部（図９）とによって、整数型Lifting演算を用いずに、可逆変換が可能な整数型のフィルタ演算処理装置を構成することができる。
【００９７】
上記構成で、可逆変換可能なフィルタ処理ができる理由は、次の第２の実施形態で明らかになる。
【００９８】
＜第２の実施形態＞
第２の実施形態では、Ｌｉｆｔｉｎｇ  Ｓｃｈｅｍｅを用いて、可逆変換が可能な実数型のフィルタ演算を行なう。本実施形態では、前記第１の実施形態を含めた可逆性の説明をするため、図５に示した順方向フィルタ処理部５４０から出発し、構成を少しずつ変形して、本実施形態の構成法を導き出す。なお、一部図２８の説明と重複するが、改めて説明することとする。
【００９９】
図５の順方向フィルタ処理部５４０から遅延ユニットと間引きユニットを除き、Ｌｉｆｔｉｎｇ演算部のみを残した構成を図１０（ａ）に示す。図１０（ａ）からｆｌｏｏｒ関数演算ユニット５０１、５０３と加算ユニット５０２を、それぞれ減算器１０９、加算器１１３の入力側から出力側に移動すると、図１０（ｂ）のようになる。同図において、１００１は、入力データに等しいかそれ以上の最小の整数値を出力するｃｅｉｌｉｎｇ関数演算ユニットである。
【０１００】
図１０（ａ）から図１０（ｂ）への変換に際し、以下の関係式を利用する。
Ｎ＋ｆｌｏｏｒ（Ｒ＋０．５）＝ｆｌｏｏｒ（Ｎ＋Ｒ＋０．５）    （５）
Ｎ−ｆｌｏｏｒ（Ｒ）＝ｃｅｉｌｉｎｇ（Ｎ−Ｒ）                （６）
上記式においてＮは整数値、Ｒは実数値である。（５）（６）式の関係は、最初に説明した内容から容易に理解できよう。
【０１０１】
Ｌｉｆｔｉｎｇ係数ｐの要素は−１／２であるため、上記（５）式における実際の実数値は、小数点以下が１ビットしかない。よって、ｃｅｌｉｎｇ関数演算ユニットに入力されるデータは整数値か、整数値＋０．５のいずれかである。入力データが整数値の場合には該入力データがそのまま出力データとなり、入力データが整数値＋０．５の場合には該入力データに０．５を加算した値が出力データとなる。どちらの場合も、入力データの小数点第１位のビットのみを、該入力データに加算して得られる結果と同じである。
【０１０２】
そこで、図１０（ｂ）は、図１０（ｃ）のように変形できる。図１０（ｃ）において１００３は、減算器１０９の出力データに、該データの最下位ビット（以下、ＬＳＢと称す）である小数点第１位のビットのみを加算する１ビット加算器である。乗算器１１１は、該加算結果に対してＬｉｆｔｉｎｇ係数を乗算するので、ここに四則演算に関する分配則を適用して、図１０（ｃ）を図１１（ａ）のように変形することができる。
【０１０３】
分配法則を適用することにより、新たな乗算器１１０３と加算器１１０５が必要となる。これら乗算器と加算器は、減算器１０９の出力データのＬＳＢデータのみに対してＬｉｆｔｉｎｇ演算を行なうものである。この図１１（ａ）において、実数型のＬｉｆｔｉｎｇ演算部と、整数化のためのその他の演算に分離できた。破線１１０１の左側が実数型のＬｉｆｔｉｎｇ演算部で、右側が整数化のための演算部である。実数型のＬｉｆｔｉｎｇ演算結果は同図の減算器１０９と加算器１１３から出力される。図１１（ａ）は第２の実施形態の１つの構成である。
【０１０４】
前記実数型のＬｉｆｔｉｎｇ演算部を、前記畳み込み演算処理部並びに変換係数を高域変換係数と低域変換係数とに分ける変換係数分離部に置き換えても、図１０（ａ）と同じ機能を実現できる。図１１（ａ）のままでは、前記第１の実施形態との関係が不明確である。そこで図１１（ａ）を図１１（ｂ）に変形する。
【０１０５】
１１０２は５０２と同じ０．５を加算する加算ユニット、１１０３は５０３と同じｆｌｏｏｒ関数演算ユニットである。小数点第２位以下の情報がない実数値の場合、実数値の小数点第１位のビットを該実数に加算するということは、該実数値に０．５を加算してｆｌｏｏｒ関数を求めることと等価である。よって、このように変形できる。
【０１０６】
図１１（ｂ）の構成は、実数型の可逆フィルタ処理を行なう第１のＬｉｆｔｉｎｇ演算部（破線の左側）と、該演算結果の一部のビットデータのみをＬｉｆｔｉｎｇ演算処理する第２のＬｉｆｔｉｎｇ演算とから成ると考えることが出来る。
【０１０７】
図１１（ｂ）の破線の左側の機能は、前記第１の実施形態における図７の機能と同じで、実数型の５×３フィルタの演算を行なう。高域変換係数と低域変換係数を分けて出力するか、１サイクル毎に交互に出力するかの違いはあるが、出力する演算結果は同じである。
【０１０８】
図１１（ｂ）の破線の右側の機能は、前記第１の実施形態における図９の機能と同じで、２つの高域変換係数（実数値）の小数点第１位のビットを１／４倍して低域変換係数に加算した後、該低域変換係数と高域変換係数それぞれに０．５を加算してｆｌｏｏｒ関数を求め出力する。
【０１０９】
この図１１（ｂ）の構成は、整数型の可逆フィルタ処理が可能な図１０（ａ）を等価に変形したものであるから、図１１（ｂ）の構成で整数型の可逆フィルタ処理が可能なのは言うまでもない。また、第１の実施形態における２つの処理部（図７、図９）によって実現される機能は、この図１１（ｂ）の機能と同じであるため、第１の実施形態で整数型の可逆フィルタ処理が可能であることが示せた。
【０１１０】
＜図９の変形例＞
第１の実施形態における２つの処理部（図７、図９）の機能が、図１１（ｂ）の機能と同じであることが言えたので、図９をさらに簡易な構成に変形することが出来る。
【０１１１】
図９における加算ユニット８１９の入力データは、図１１（ｂ）における２つの加算ユニット５０２と１１０２の両方の入力データを多重化したものである。加算ユニット１１０２の入力データは、Ｌｉｆｔｉｎｇ係数ｐ＝（−１／２、−１／２）であることから、小数点以下は１ビットしかないことが容易に分かる。
【０１１２】
しかし、加算ユニット５０２の方は、図１１（ｂ）の構成を見る限り、小数点以下に３ビットの情報を持つデータが入力されてくると考えられる。図９の構成を見ても同様である（小数点以下１ビットの実数データに１／４を掛けると小数点以下３ビットの実数データになるため）。
【０１１３】
ところで、図１１（ｂ）は、図１０（ｂ）と等価であり、加算ユニット５０２に入力されるデータは、どちらの図でも同じである。その図１０（ｂ）では、整数値に１／４を掛けたデータと他の整数値の和が、該加算ユニット５０２に入力されるので、小数点以下２ビットのデータとなる。
【０１１４】
よって、図１１（ｂ）の加算ユニット５０２に入力されるデータの小数点第３位のビットはいつも“０”である。この小数点第３位のビットを“１”に変えても演算結果にはまったく影響は無い。なぜなら、ｆｌｏｏｒ関数演算ユニット５０３によって、必ず切り捨てられるからである。よって、加算ユニット５０２の前段の加算器１１０５において１／８を自由に加算することが許される。
【０１１５】
そこで、高域変換係数の小数点第１位のビットに対するＬｉｆｔｉｎｇ係数を（１／４，１／４）から（１／４，１／２）あるいは（１／２，１／４）に変更することを考えてみる。この場合問題になるのは、係数１／２に対応する小数点データが“１”になった時である。本来の計算結果１／２（小数第１位の値）×１／４（係数）＝１／８が１／２×１／２＝１／４となって、結果が１／８大きくなる。これは１／８を加算したことと同じである。
【０１１６】
整理すると、係数１／２に対応する小数点データが“０”の時は、係数変更前と同じ計算結果となり、係数１／２に対応する小数点データが“１”の時は、係数変更前の計算結果に１／８を加算した結果となる。この１／８は前述した自由に加算することが許される値であるので、結局、上記Ｌｉｆｔｉｎｇ係数の変更は問題無いことが分かる。
【０１１７】
これにより、図９は、図１２のように変更することが可能となる。
【０１１８】
シフトレジスタ８０１から出力される３つデータの中央が低域変換係数の時に、左右から出力される高域変換係数の小数点第１位のビットの一方を１／２倍し、もう一方を１／４倍する。それぞれ重みが異なり、前者は小数点第２位、後者は小数点第３位のビットデータとなるので、加算器を用いずとも前記２つのビットを並べるだけで加算したことになる。この２ビットの信号をゲートユニット８３１に入力し、低域変換係数出力時には該入力信号を有効にし、高域変換係数出力時にはマスクして無効化する。このゲートユニットの出力に、図９の加算ユニット８０３で加算していた０．５を小数点第１位のビットとして付加して３ビットにした後、加算器８１７に入力して、シフトレジスタ８０１の中央から出力される低域変換係数（実数値）に加算する。そして、ｆｌｏｏｒ関数演算ユニットにて整数に変換し出力する。この構成で図９と同じ出力結果が得られる。
【０１１９】
＜第３の実施形態＞
第３の実施形態では、前記第２の実施形態と対をなす逆変換側の構成を示す。第２の実施形態と同様、図５における逆方向フィルタ処理部５５０から遅延ユニットとゼロ挿入ユニットを除き、Ｌｉｆｔｉｎｇ演算部のみを残した構成を図１３（ａ）に示す。図１３（ａ）からｆｌｏｏｒ関数演算ユニット５０５、５０７と加算ユニット５０４を、それぞれ減算器２１３、加算器２０９の入力側から出力側に移動すると、図１３（ｂ）のようになる。同図において、１３０１は、減算器２１３の出力から０．５を減算する減算ユニット、１３０３は、ｃｅｌｉｎｇ関数演算ユニットである。
【０１２０】
図１３（ａ）から図１３（ｂ）への変換に際し、以下の関係式を利用する。
Ｎ−ｆｌｏｏｒ（Ｒ＋0.5）＝ｃｅｉｌｉｎｇ（（Ｎ−Ｒ）−0.5）    （７）
Ｎ＋ｆｌｏｏｒ（Ｒ）＝ｆｌｏｏｒ（Ｎ＋Ｒ）                      （８）
上記式においてＮは整数値、Ｒは実数値である。（７）（８）式の関係は、どちらも自明の関係にあることはこれまでの説明から明らかであろう。
【０１２１】
Ｌｉｆｔｉｎｇ係数ｐの要素は１／４であるため、上記（７）式における実数値とは、小数点以下が２ビットの実数である。よって、減算器２１３から出力されるデータを２進表示の小数部と整数値で表わすと、整数値＋０．００2、整数値＋０．０１2、整数値＋０．１０2、整数値＋０．１１2  のいずれかである。それぞれの出力に対して、減算ユニット１３０１の出力、ｃｅｌｉｎｇ関数演算ユニット１３０３の出力の小数部がどのように変化するかを小数部２桁のみ以下に示す。
小数部    演算ユニット出力  ｃｅｌｉｎｇ関数出力
００    →    １０    →    ００  （±０．００）
０１    →    １１    →    ００  （−０．０１）
１０    →    ００    →    ００  （−０．１０）
１１    →    ０１    →    ００  （＋０．０１）
上記かっこ内の値は、減算ユニットとｃｅｌｉｎｇ関数演算ユニットを通すことによって増減する値を２進表現したものである。
【０１２２】
該増減値は、減算器２１３から出力されるデータの小数部２ビットの２の補数を求めその上位ビットをサインビットに拡張することで得られる。各ビットパターンに対してどうなるかを以下に示す。
００  →  ００（２の補数）  →  ０００  （±０．００）
０１  →  １１（２の補数）  →  １１１  （−０．０１）
１０  →  １０（２の補数）  →  １１０  （−０．１０）
１１  →  ０１（２の補数）  →  ００１  （＋０．０１）
サインビット拡張した３ビットデータの最上位をサインビット、下位２ビットを小数部のデータとして解釈するとかっこ内に示す値と一致する。
【０１２３】
よって、図１３（ｂ）における減算ユニット１３０１とｃｅｉｌｉｎｇ関数演算ユニット１３０３によって変化する数値（上記増減値）は、２の補数演算とサインビット付加処理よって生成することが可能であり、減算器２１３の出力に該生成値を加算することにより、図１３（ｂ）におけるｃｅｉｌｉｎｇ関数演算ユニットの出力値と同じ値と得ることが可能である。その構成を図１３（ｃ）に示す。
【０１２４】
同図において、１３１１は減算器２１３から出力される実数値の小数点以下２ビットを入力とし、該２ビットの２の補数を演算する補数演算ユニット、１３１３は該補数演算ユニットから出力される２ビットデータの上位ビットをサインビットとして付加するサインビット付加ユニット、１３１５は前記サインビット付加ユニットの出力を減算器２１３の出力値に加算する加算器である。
【０１２５】
このような変換をする理由は、１段目の整数型のＬｉｆｔｉｎｇ演算を、実数型のＬｉｆｔｉｎｇ演算と補正値の演算とに分解するためである。そして、次のＬｉｆｔｉｎｇ演算との間に四則演算に関する分配則を適用して図１４（ａ）のように変形する。
【０１２６】
この図１４（ａ）において、実数型のＬｉｆｔｉｎｇ演算部と、整数化のための演算に分離できた。同図における破線１４０１の左側が実数型のＬｉｆｔｉｎｇ演算部になり、右側が整数化のための演算部になる。実数型のＬｉｆｔｉｎｇ演算結果は同図の減算器２１３と加算器２０９から出力される。
【０１２７】
図１４（ａ）は第３の実施形態の構成の１つである。実数型のＬｉｆｔｉｎｇ演算部は、畳み込み演算を用いたフィルタ演算部に置き換えることが可能である。
【０１２８】
ここで、図１４（ａ）の加算器１３１５の出力を、同じ出力値である図１３（ｂ）のｃｅｉｌｉｎｇ関数演算ユニットの出力に戻って考える。小数点以下２ビットの実数値から０．５を減算してそのｃｅｉｌｉｎｇ関数を求めるということは、該実数値に０．２５を加算してｆｌｏｏｒ関数を求めるのと等価である。どちらも小数部が０．７５の時のみ整数部の値が１つ増加するが、小数部が０．００，０．２５，０．５０の場合は整数部の値が変わらない。
【０１２９】
よって、図１４（ａ）を図１４（ｂ）のように変形することができる。図１４（ｂ）において、１４１１は、０．２５を加算する加算ユニット、１３１３はｆｌｏｏｒ関数演算ユニットである。図１４（ａ）ではＬｉｆｔｉｎｇ演算構成とは言えなかった整数化演算部を、図１４（ｂ）のように変形することによって、Ｌｉｆｔｉｎｇ演算構成の整数化演算部にすることができた。これも本実施形態の１つの構成である。
【０１３０】
また、整数化演算部Ｌｉｆｔｉｎｇ演算の歩数演算ユニット１３１１とサインビット付加ユニット１３１３を、小数点以下２ビットのデータを入力とするデコーダ１４２１に置き換えた図１４（ｃ）の構成も考えられる。該デコーダの変換機能は補数演算ユニット１３１１とサインビット付加ユニット１３１３によるデータ変換機能と同一であるのが基本であるが、以下に説明するように、必ずしも同一である必要は無い。
【０１３１】
前記図１２の構成で説明したように、整数化演算部のＬｉｆｔｉｎｇ演算加算器１４０５には余分に加算しても無視される値があるため、図１４（ｃ）のデコーダの出力も若干の自由度がある。具体的には、２段目のＬｉｆｔｉｎｇ係数が（１／２、１／２）であるため、０．３７５を余分に加算してもｆｌｏｏｒ関数演算時に切り捨てられて無視される。この任意に加算が許される値を利用して、例えば一例として下記のような入力と出力のデコーダを使うことができる。
・入力（２ビット）    ・出力  １０進表示（２進補数表示の小数データ）
００                        ＋０．２５（０．０１）
０１                        −０．２５（１．１１）
１０                        −０．２５（１．１１）
１１                        ＋０．２５（０．０１）
上記出力は、前述の補数ユニットとサインビット付加ユニットを用いて求められる値に対して、“００”入力と“１０”入力時に０．２５（１０進表示）を加算したものである。上記デコーダは出力値が２種類しかなく、入力２ビットの排他的論理和演算の結果に依存するのみなので極めてシンプルなデコーダにすることができる。
【０１３２】
＜第４の実施形態＞
第４の実施形態は、前記第１の実施形態に対応する逆変換フィルタ演算部の構成を示す。逆変換フィルタのフィルタ係数は図３に示してある。Ｇ０係数のフィルタ構成は図１５（ａ）に示す構成となり、Ｇ１係数のフィルタ構成は図１５（ｂ）に示す構成となる。図１５（ａ）（ｂ）２つのフィルタ機能を１サイクル毎に切り替えて実現するフィルタ構成は図１６のようになる。これらのフィルタ構成は、対応するフィルタ構成である図６（ａ）（ｂ）、図７とフィルタ係数が異なるだけで、動作はまったく同じなので、説明は省略する。
【０１３３】
図１６の構成で実数演算した逆変換フィルタ結果は、図１７に示す整数化演算部にて整数化する。
【０１３４】
図１７において、１７０１は、図１６の実数型の逆変換フィルタ処理したデータを並列に３つ取り出すためのシフトレジスタ、１７０３、１７０５は小数点以下２ビットのデータから補正データの一部を生成するデコーダ、１７０７は上記２つのデコーダ出力を加算する加算器、１７０９は上記加算器の出力にＬｉｆｔｉｎｇ係数を乗算する乗算器である。また、１７１１は処理するフィルタ係数がＧ０の時に右側を選択し、Ｇ１の時に左側を選択するセレクタ、１７１３は実数型の逆変換フィルタ処理したデータに補正データを加算する加算器、１７１５はｆｌｏｏｒ関数演算ユニットである。
【０１３５】
前記フィルタ係数Ｇ０に対応する演算の時には、セレクタ１７１１にて４ビットデータ０．０１０（十進表示では０．２５）を選択して、加算器１７１３にてシフトレジスタ１７０１の中央出力データに加算する。
【０１３６】
前記フィルタ係数Ｇ１に対応する演算の時には、シフトレジスタ１７０１の両端出力データの各々の小数点以下２ビットのデータをデコーダ１７０３，１７０５に入力し、サインビット付きの小数点以下２ビットデータ０．０１か１．１１を各々のデコーダから出力する。これを加算器１７０７にて足し合わせた後、乗算器１７０９にてＬｉｆｔｉｎｇ係数１／２を乗算し、セレクタ１７１１にて選択して、加算器１７１３にてシフトレジスタ１７０１の中央の出力データに加算する。
【０１３７】
この構成は、Ｌｉｆｔｉｎｇ演算形式の図１４（ｃ）の整数化演算部を畳み込み演算形式に変形したものであり、機能的に図１４（ｃ）と同じである。よって、図１４（ｃ）が持つ、逆変換としての可逆性を当然もっており、図１７から出力される整数値は元のデータと完全に一致する。
【０１３８】
＜第５の実施形態＞
上記第１〜第４の実施形態では、実数型の可逆フィルタ演算を行なった後、それを整数化することで、整数型の可逆フィルタ演算を行なっていたが、第５の実施形態では、実数型の可逆フィルタ演算を経ないで、直接、整数型の可逆フィルタ演算を行なう。
【０１３９】
言い方を変えると、第１〜第４の実施形態では実数型の可逆フィルタを前段に配し、該フィルタ出力を整数型の可逆フィルタに変換する変換部を後段に配した縦続接続の構成であった。それに対し、第５の実施形態では実数型の可逆フィルタの演算と並行して整数化のための補正データを生成する並列処理型の構成となる。
【０１４０】
本実施形態の構成を図１８と図１９に示す。図１８は順方向変換のフィルタ構成で、図１９は逆方向変換のフィルタ構成である。
【０１４１】
図１８の構成は、ある関係を利用して前記図１２の構成を図７に合体したものである。ある関係とは、“高域変換係数の小数点第１位のビットは該変換係数位置の両側の入力データ（整数）のＬＳＢ間の排他的論理和に等しい”である。この関係は、５×３フィルタの高域変換係数の定義式から明らかである。図１８における１８０１と１８０３は、前記ＬＳＢ間の排他的論理和を演算する論理演算ユニットである。
【０１４２】
これにより、前記補正データ（実数型の可逆フィルタ演算結果を整数化するために加算するデータ）を入力データから直接演算することが出来るので、前記第１の実施形態のように（シフトレジスタを２個使用した）２段構成にすることなく、図１８のように１段で構成できる。
【０１４３】
補正データの小数点第２位と第３位の演算方法は他にもある。シフトレジスタ６０１の両端のデータのＬＳＢ間で排他的論理和演算した結果を小数点第３位とし、該２つのＬＳＢのどちらか一方とシフトレジスタ６０１の中央のデータのＬＳＢ間で排他的論理和演算し、該演算結果が"１"かつ前記小数点第３位が"０"の時に小数点第２位を"１"にする論理回路を設ける構成でもよい。この構成による補正データは余分な値を加算しないので、図１８の補正データとは少し異なる。さらなる変形も考えられるが、これ以上は省略する。ようするに補正データの生成方法だけに着目しても、何通りもの方法があるということである。
【０１４４】
本構成においても、減算器６３５の出力を取り出すことで、実数型の可逆フィルタ演算結果を得ることができる。
【０１４５】
図１９の構成は、図１６の構成に図１７の構成を合体したものである。ここでは、Ｇ１フィルタ処理時に図１７のデコーダに入力する２ビットの小数点データ２組を演算するため、２ビット加算器１９０３と１９０５を用いる。
【０１４６】
Ｇ０フィルタ処理位置の小数点以下２ビットのデータは、該Ｇ０フィルタ処理位置の両側２サンプル、すなわち、Ｇ１フィルタ処理位置データ２つの下位２ビットから演算できる。具体的には、該２つの下位２ビットデータを加算して、キャリーを出力を除いた下位２ビット出力の２の補数が、前記Ｇ０フィルタ処理位置の小数点以下２ビットのデータとなる。この２ビットのデータは、先の図１４（ａ）（ｂ）（ｃ）によるとさらに２の補数に変換されるので、また元の値に戻ることになる。よって、加算器１９０３と１９０５出力の下位２ビットは、前記図１４（ａ）（ｂ）（ｃ）において２の補数変換した値と同じになる。該下位２ビットと補正値（１０進表示）の間には、以下の関係がある。
・下位２ビット        ・補正値                ・下記修正後
００          →      ±０．００      →      ＋０．２５
０１          →      ＋０．２５      →      ＋０．２５
１０          →      −０．５０      →      −０．２５
１１          →      −０．２５      →      −０．２５
ここで、前記任意に加算できる値の範囲で補正値を修正する。具体的には、下位２ビットが“００”と“１０”の場合に、それぞれ０．２５をプラスする。そうすると、下位２ビットの上位ビットのみによって、修正後の補正値を決定できることになる。具体的には、下位２ビットの上位ビットの値が"０"の時の補正値を＋０．２５とし、"１"の時の補正値を−０．２５とする。
【０１４７】
よって、加算器１９０３、１９０５から出力するデータからキャリーとＬＳＢを除いた、ＬＳＢから２番目のビットのみをデコーダ１９０１に入力するだけでよい。この他に処理するフィルタの種類（Ｇ０／Ｇ１）を表わす制御信号を入力すれば、該３ビットのデータから合算補正データをデコードして生成することができる。
【０１４８】
フィルタの種類を表わす制御信号とＬＳＢから２番目のビット×２個から生成する合算補正データを以下に示す。
・Ｇ０／Ｇ１    ・ＬＳＢから２番目のビット×２      ・合算補正データ
Ｇ０            任意                                ＋０．２５
Ｇ１            ００                                ＋０．２５
Ｇ１            ０１                                ±０．００
Ｇ１            １０                                ±０．００
Ｇ１            １１                                −０．２５
上記補正データは、デコーダ後段のＬｉｆｔｉｎｇ係数乗算用の乗算器を省略するため、Ｌｉｆｔｉｎｇ係数込み（１／２乗算済み）の補正データとした。例えばフィルタの種類がＧ１で、ＬＳＢから２番目のビットが２つとも"０"の場合、２つの補正値はそれぞれ＋０．２５となり、それを足し合わせて１／２倍した値は＋０．２５となる。該合算補正データを、実数演算したフィルタ処理結果である減算器１５３５の出力に加算した後、小数点以下を取り除いたｆｌｏｏｒ関数値を出力すれば、変換前の元のデータが復元される。
【０１４９】
以上で説明したフィルタ処理装置、逆フィルタ処理装置における各処理の内容は、コンピュータ上のソフトウェア処理でも実現できるものである。以下にソフトウェア処理で実現する場合について説明する。
【０１５０】
＜第６の実施形態＞
前記第１〜第５の実施形態はハードウェアによるフィルタ処理装置に関するものであった。これ以降は、フィルタ処理をソフトウェアで実装する例を説明する。
【０１５１】
従来は、整数型の可逆フィルタ演算処理を実現するには、整数型のＬｉｆｔｉｎｇ演算を用いる必要があった。本発明では、整数型のＬｉｆｔｉｎｇ演算を用いずに、固定小数点型のフィルタ演算処理と整数化丸め演算処理とを用いて、整数型の可逆フィルタ処理を実現するものである。
【０１５２】
図２０に示すフローチャートは、固定小数点型のフィルタ演算処理として畳み込み演算を用いたもので、各ステップで処理対象となるデータをすべて一括処理する場合のフローチャートである。処理するデータは、Ｘ0，Ｘ1，，，ＸM-2，ＸM-1のＭ個（偶数）のデータとする。
【０１５３】
同図において、ステップ２００１にてパディング処理を行なう。パディング処理とは、データが無い（定義されていない）Ｘ-2、Ｘ-1、ＸM、ＸM+1といったデータにあるデータを代入する処理である。
【０１５４】
一般的に行なわれる方法では、全データの両端のデータを単純にコピーしてデータの拡張を行なうことにより、演算上必要な座標位置のデータを生成する。少し工夫した方法として、データの両端の境界部でデータを折り返しコピー（鏡像）する方法もある。
【０１５５】
次のステップ２００３では、偶数系列のデータに対応する低域変換係数を図３に示すフィルタ係数Ｈ０を用いて固定小数点演算する。この演算におけるＬＳＢの重みは０．１２５となる。ステップ２００５では、奇数系列のデータとｎ＝−１に対応する高域変換係数を同じく図３に示すフィルタ係数Ｈ１を用いて固定小数点演算する。この演算におけるＬＳＢの重みは０．５となる。
【０１５６】
ステップ２００７において、上記演算した高域変換係数のＬＳＢデータのみを取り出し、ステップ２００９において、該ＬＳＢデータを補正データとして加算すると共に０．５を加算して３ビット右シフトする。該シフト処理は、小数点を右端に移動して固定小数点を整数化するものである。
【０１５７】
ステップ２０１１において、固定小数点の高域変換係数に０．５を加算した後、１ビット右シフトして整数化を行なう。以上の計算で得られた整数の低域変換係数と高域変換係数は、整数型の可逆フィルタ処理した結果となる。
【０１５８】
＜第７の実施形態＞
図２０は、各ステップで処理対象となるデータをすべて一括処理する場合のフローチャートであったが、各ステップでの処理を式１つの演算のみにして、ステップ２００３〜２０１１をループ状に何度も繰り返し処理することで全データを処理するようにした場合は、図２１に示すフローチャートになる。
【０１５９】
同図において、ステップ２１０１は、前記図２０におけるステップ２００１と同じパディング処理を行なう。ステップ２１０３は初期設定処理でｎ＝０に設定する。ステップ２１０５にて、１つ目の低域変換係数を演算するのに必要な２つのＬＳＢデータの一方をあらかじめ計算しておく。
【０１６０】
ステップ２１０７、２１０９、２１１１、２１１３，２１１５，２１１７、２１１９からなるループ処理をｎ＝０からｎ＝Ｍ／２−１まで行なう。ステップ２１０７は低域変換係数の固定小数点演算、ステップ２１０９は高域変換係数の固定小数点演算、ステップ２１１１は高域変換係数のＬＳＢデータの取り出し、ステップ２１１３は固定小数点の低域変換係数を整数化、ステップ２１１５は固定小数点の高域域変換係数を整数化、するものである。
【０１６１】
ステップ２１１７にて全データの変換が終了したかどうかをｎの値から判定して、終了していなければ、ステップ２１１９にてｎの値を１つ大きくして、上記演算処理を繰り返し行なう。ステップ２１１７にて全データの変換が終了したと判定されれば、変換処理は終了（ステップ２１２１）する。
【０１６２】
＜第８の実施形態＞
図２２に示すフローチャートは、前記図２１における固定小数点型の畳み込み演算フィルタ処理を、固定小数点型のＬｉｆｔｉｎｇ演算フィルタ処理に置き換えたものである。よって、前記図２１における大部分の処理ステップをそのまま引き継ぎ、ステップ２１０７のみをＬｉｆｔｉｎｇ演算に対応する処理に置き換える。
【０１６３】
新たなステップ２２０１はＬｉｆｔｉｎｇ演算に基づいて低域変換係数を固定小数点演算するもので、ステップ２１０９で演算する固定小数点の高域変換係数を利用するため、ステップ２２０１はステップ２１０９の後で処理を行なう。その他は前記図２１と同じなので説明を省略する。
【０１６４】
前記図２０における固定小数点型の畳み込み演算フィルタ処理を、固定小数点型のＬｉｆｔｉｎｇ演算フィルタ処理に置き換えたものは容易に類推できる。以下では、ループ処理のみについて各種処理のフローチャートを示す。
【０１６５】
＜第９の実施形態＞
固定小数点型の畳み込み演算フィルタ処理を行ない、入力データの一部のビット情報に基づいて補正データを生成する場合のフローチャートを図２３に示す。このフローチャートの処理は前記図１８に対応するが若干の相違がある。その相違とは、図１８における２つの排他的論理和ユニットから出力する信号に乗算する係数を、本フローチャートでは同じ係数値（１／８）にそろえたということである。
【０１６６】
ハードウェアでは、乗算係数を変えることによりビットの重みが異なると加算演算が不要になるというメリットがあるが、ソフト処理ではかえって処理が増加することになるので、本来の乗算係数である１／８を用いる。
【０１６７】
本フローチャートも大枠は図２１のフローチャートと同じである。図２１から変更となる演算ステップは、ステップ２１０５、２１１１，２１１３の３つであり、該３つのステップをそれぞれ、ステップ２３０１、２３０３、２３０５に置き換える。
【０１６８】
ステップ２３０１では、補正データの演算に必要な偶数系列データのＬＳＢをあらかじめ２つ取り出しておく。ステップ２３０３で該ＬＳＢデータをさらに１つ取り出し、ステップ２３０５で、計３つのＬＳＢデータを用いてビット間の排他的論理和演算を行なって補正データを演算し、固定小数点の低域変換係数に加算する。補正データの演算に用いる３つのＬＳＢデータの内、２つのＬＳＢデータは次の処理ループでも使用する。その他の処理は図２１と同じである。
【０１６９】
＜第１０の実施形態＞
上述した順方向の可逆フィルタ処理に対して、それぞれ逆フィルタ処理が存在する。図２１に対応する逆フィルタ処理のフローチャートを図２４に示す。
【０１７０】
同図において、ステップ２４０１のパディング処理では、未定義の変換係数Ｈ-1、ＬM、ＨM+1に他の変換係数を代入する。ステップ２４０３ではテーブル設定を行なう。このテーブルは、前記第４の実施形態（図１７）におけるデコーダに対応する機能をソフトウェアで実現するものである。Ｌｉｆｔｉｎｇ演算係数をあらかじめ乗算し、固定小数点演算の小数点位置を考慮した値をテーブルに格納しておく。
【０１７１】
ステップ２４０５にて、最初の奇数系列サンプルを演算するのに必要な２つのＬＳＢ側２ビットデータ（ＬＳＢＴ）の一方をあらかじめ計算しておく。前記計算の途中演算結果を用いて、ステップ２４０７にてＸ0のみを先行して計算する。
【０１７２】
ステップ２４１１、２４１３、２４１５、２４１７、２４１９、２１１７、２１１９からなるループ処理をｎ＝０からｎ＝Ｍ／２−１まで行なう。ステップ２４１１は奇数系列サンプルの固定小数点演算、ステップ２４１３は偶数系列サンプルの固定小数点演算、ステップ２４１５は偶数系列サンプルのＬＳＢ２ビットデータの取り出し、ステップ２４１７はテーブルを用いて固定小数点の奇数系列サンプルデータを整数化、ステップ２４１９は固定小数点の偶数系列サンプルデータを整数化、するものである。
【０１７３】
＜第１１の実施形態＞
図２５に示すフローチャートは、前記図２４における固定小数点型の畳み込み演算フィルタ処理を、固定小数点型のＬｉｆｔｉｎｇ演算フィルタ処理に置き換えたものである。よって、前記図２４における大部分の処理ステップをそのまま引き継ぎ、ステップ２４１１のみをＬｉｆｔｉｎｇ演算に対応する処理に置き換える。
【０１７４】
新たなステップ２５０１はＬｉｆｔｉｎｇ演算に基づいて奇数系列サンプルデータを固定小数点演算するもので、ステップ２４１３で演算する固定小数点の偶数系列サンプルデータを利用するため、ステップ２５０１はステップ２４１３の後で処理を行なう。その他は前記図２４と同じなので説明を省略する。
【０１７５】
＜第１２の実施形態＞
固定小数点型の畳み込み演算フィルタ処理を行ない、変換係数入力データの一部のビット情報に基づいて補正データを生成する場合のフローチャートを図２６に示す。このフローチャートの処理は前記図１９に対応するが若干の相違がある。その相違とは、図１９における２つの加算器１９０３、１９０５から出力する２つの信号を１つのデコーダに入力しているが、本フローチャートではテーブルで２つの信号を独立に変換するということである。
【０１７６】
ハードウェアでは、ビットの連結処理は配線のみで実現できるが、ソフト処理ではビットの重み（位置）をずらして論理和ビット演算を行なう必要があるため、各々の２ビットデータからテーブルを参照するようにした。
【０１７７】
また、本実施形態におけるテーブルの内容は、前記第１０、第１１の実施形態におけるテーブルの内容とも少し異なり、添え字が補数の関係にある。
【０１７８】
本フローチャートも大枠は図２４のフローチャートと同じである。図２４から変更となる演算ステップは、ステップ２４０５とステップ２４１５のみであり、該ステップがステップ２６０１とステップ２６０３に置き換わる。ステップ２６０１及び２６０３では、補正データの演算に必要な２ビットデータを、入力データ中の２つの高域変換係数あるいはパディング処理した高域変換係数を加算して下位２ビットを論理積ビット演算で取り出す。
【０１７９】
第６〜１２の実施形態において、正確に演算内容を理解されるように、浮動小数点演算を用いず、固定小数点演算で記述したが、これらの固定小数点演算は浮動店小数演算に置き換えることが可能であることは容易に想像がつく。一般的に浮動小数点演算で心配されるのは、１０進の小数で表わされたデータを２進数表示に変換する際に発生する変換誤差と、演算の繰り返しによる前記誤差の蓄積である。上記実施形態においては、そのような変換誤差は発生しないので、固定小数点演算と同じ結果を得ることが出来る。
【０１８０】
以上で説明した各種フィルタ処理装置とフィルタ処理方式は、１次元データに対する処理であったが、該処理を２次元の画像データに対して、水平方向と垂直方向に２回処理することにより、２次元フィルタ処理を行なうフィルタ処理装置及びフィルタ処理方式も当然本発明の範疇に属するものである。
【０１８１】
以上説明したように本実施形態によれば、可逆変換が可能な実数型のフィルタ演算を行なうフィルタ処理手段と、補正データを生成する手段と、整数化する丸め手段とを有することにより、整数型の可逆フィルタ処理装置を実現することが可能になると共に、実数型のフィルタ演算結果と整数型の可逆フィルタ演算結果を同時に得ることが可能となった。
【０１８２】
また、可逆変換が可能な実数型のフィルタ演算を行なうフィルタ処理工程と、補正データを生成する工程と、整数化を行なう丸め処理工程とを有することにより、整数型の可逆フィルタ処理方法を実現することが可能になると共に、実数型のフィルタ演算結果と整数型の可逆フィルタ演算結果を同時に得ることが可能となった。
【０１８３】
更に、可逆変換が可能な実数型のフィルタ演算を行なう第１のＬｉｆｔｉｎｇ演算手段と、該演算手段から出力される実数データを整数データに変換する第２のＬｉｆｔｉｎｇ演算手段とを有することにより、整数型の可逆フィルタ処理装置を実現することが可能になると共に、実数型のフィルタ演算結果と整数型の可逆フィルタ演算結果を同時に得ることが可能となった。
【０１８４】
可逆変換が可能な実数型のフィルタ演算を行なう第１のＬｉｆｔｉｎｇ演算工程と、該演算工程により得られる実数データを整数データに変換する第２のＬｉｆｔｉｎｇ演算工程とを有することにより、整数型の可逆フィルタ処理方法を実現することが可能になると共に、実数型のフィルタ演算結果と整数型の可逆フィルタ演算結果を同時に得ることが可能となった。
【０１８５】
なお、上記実施形態での説明から明らかなように、本発明はパーソナルコンピュータ等の汎用の情報処理装置で実行するコンピュータプログラムとしても実装できる。また、コンピュータプログラムを装置に組み込むには、フロッピーディスクやＣＤＲＯＭ等のコンピュータ可読記憶媒体をセットし、装置内（ハードディスク等）にコピーもしくはインストールすることで実現できるものであるから、本発明はかかるコンピュータ可読記憶媒体をもその範疇とするものである。
【０１８６】
【発明の効果】
以上説明したように本発明によれば、ＪＰＥＧ２０００におけるウェーブレット変換等に適用でき、可逆性を有しながらも畳み込み演算により実装することが可能になる。
【図面の簡単な説明】
【図１】順方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを表現した図である。
【図２】逆方向のＬｉｆｔｉｎｇ  Ｓｃｈｅｍｅを表現した図である。
【図３】５×３フィルタの係数を示す図である。
【図４】５×３フィルタのＬｉｆｔｉｎｇ係数を示す図である。
【図５】可逆の順方向フィルタ処理部と逆方向フィルタ処理部の構成を示す図である。
【図６】畳み込み演算で高域変換係数を演算する構成と低域変換係数を演算する構成を示す図である。
【図７】畳み込み演算で高域変換係数と低域変換係数を選択的に演算する構成を示す図である。
【図８】固定小数点演算された高域変換係数を整数化する構成と低域変換係数を整数化処理する構成を示す図である。
【図９】本発明の第１の実施形態の構成を示した図である。
【図１０】整数型可逆５×３フィルタのＬｉｆｔｉｎｇ演算部の構成と該構成の等価な変形例を示した図である。
【図１１】本発明の第２の実施形態の構成と変形例を示した図である。
【図１２】本発明の第１の実施形態の変形例を示した図である。
【図１３】整数型可逆５×３フィルタの逆変換フィルタのＬｉｆｔｉｎｇ演算部の構成と該構成の等価な変形例を示した図である。
【図１４】本発明の第３の実施形態の構成と変形例を示した図である。
【図１５】低域変換係数の逆フィルタ演算を行なう構成と、高域変換係数の逆フィルタ演算を行なう構成を示す図である。
【図１６】低域変換係数と高域変換係数の逆フィルタ演算を交互に行なう構成を示す図である。
【図１７】本発明の第４の実施形態の構成を示した図である。
【図１８】本発明の第５の実施形態の１つの構成を示した図である。
【図１９】本発明の第５の実施形態のもう１つの構成を示した図である。
【図２０】本発明の第６の実施形態であるフローチャートを示した図である。
【図２１】本発明の第７の実施形態であるフローチャートを示した図である。
【図２２】本発明の第８の実施形態であるフローチャートを示した図である。
【図２３】本発明の第９の実施形態であるフローチャートを示した図である。
【図２４】本発明の第１０の実施形態であるフローチャートを示した図である。
【図２５】本発明の第１１の実施形態であるフローチャートを示した図である。
【図２６】本発明の第１２の実施形態であるフローチャートを示した図である。
【図２７】整数型Lifting演算のブロック図である。
【図２８】図２７の整数型Lifting演算を、本発明の構成に導くための遷移図である。
【図２９】４段Liftingの構成を示す図である。
【図３０】実施形態における画像符号化装置と復号化装置のブロック構成図である。
【図１】
0003796432.tif 000002
【図２】
0003796432.tif 000003
【図３】
0003796432.tif 000004
【図４】
0003796432.tif 000005
【図５】
0003796432.tif 000006
【図６】
0003796432.tif 000007
【図７】
0003796432.tif 000008
【図８】
0003796432.tif 000009
【図９】
0003796432.tif 000010
【図１０】
0003796432.tif 000011
【図１１】
0003796432.tif 000012
【図１２】
0003796432.tif 000013
【図１３】
0003796432.tif 000014
【図１４】
0003796432.tif 000015
【図１５】
0003796432.tif 000016
【図１６】
0003796432.tif 000017
【図１７】
0003796432.tif 000018
【図１８】
0003796432.tif 000019
【図１９】
0003796432.tif 000020
【図２０】
0003796432.tif 000021
【図２１】
0003796432.tif 000022
【図２２】
0003796432.tif 000023
【図２３】
0003796432.tif 000024
【図２４】
0003796432.tif 000025
【図２５】
0003796432.tif 000026
【図２６】
0003796432.tif 000027
【図２７】
0003796432.tif 000028
【図２８】
0003796432.tif 000029
【図２９】
0003796432.tif 000030
【図３０】
0003796432.tif 000031