(57)【要約】【課題】  １次元直交変換を用いてｎ×ｎ要素の２次元入力データを直交変換／逆直交変換する際に、ダイナミックレンジの小さな係数には、より多くのビットを小数部に割り当て、従来よりも演算精度を高くする。【解決手段】  ｎ×ｎの入力画素データ１００に対して、行方向と列方向のどちらの方向に１次元直交変換を行なっているかを表すラウンドと１次元直交変換が入力データの何行目（又は何列目）を処理しているかを表すカウントとをカウンタ１０２に保持し、１次元離散コサイン変換器１０３がカウンタ１０２のラウンド及びカウントの値に応じて適応的に演算を変えて１次元直交変換を行なう。【選択図】      図１
2005149099.tif 000002
【特許請求の範囲】
【請求項１】
１次元直交変換を用いてｎ×ｎ要素の２次元入力データを直交変換する直交変換器であって、
ｎ×ｎ要素の２次元入力データに対して１次元直交変換処理を行なう際に、該処理対象を表す情報を保持する保持手段と、
前記保持手段に保持された情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元直交変換処理を行なう１次元直交変換手段と、
を有することを特徴とする直交変換器。
【請求項２】
前記処理対象を表す情報は、前記ｎ×ｎ要素の２次元入力データに対して行方向と列方向のどちらの方向に１次元直交変換処理を行なっているかを表すラウンドの値と、１次元直交変換処理が前記ｎ×ｎ要素の２次元入力データの何行目又は何列目を処理しているかを表すカウントの値であることを特徴とする請求項１に記載の直交変換器。
【請求項３】
前記１次元直交変換手段は、前記ラウンド及びカウントの値に基づき、前記１次元直交変換処理におけるシフト演算と丸め演算とを適応的に変えることを特徴とする請求項２に記載の直交変換器。
【請求項４】
１次元逆直交変換を用いてｎ×ｎ要素の２次元入力データを逆直交変換する逆直交変換器であって、
ｎ×ｎ要素の２次元入力データに対して１次元逆直交変換処理を行なう際に、該処理対象を表す情報を保持する保持手段と、
前記保持手段に保持された情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元逆直交変換処理を行なう１次元逆直交変換手段と、
を有することを特徴とする逆直交変換器。
【請求項５】
前記処理対象を表す情報は、前記ｎ×ｎ要素の２次元入力データに対して行方向と列方向のどちらの方向に１次元逆直交変換処理を行なっているかを表すラウンドの値と、１次元逆直交変換処理が前記ｎ×ｎ要素の２次元入力データの何行目又は何列目を処理しているかを表すカウントの値であることを特徴とする請求項４に記載の逆直交変換器。
【請求項６】
前記１次元逆直交変換手段は、前記ラウンド及びカウントの値に基づき、前記１次元逆直交変換処理におけるシフト演算と丸め演算とを適応的に変えることを特徴とする請求項５に記載の逆直交変換器。
【請求項７】
１次元直交変換を用いてｎ×ｎ要素の２次元入力データを直交変換する直交変換方法であって、
ｎ×ｎ要素の２次元入力データに対して１次元直交変換処理を行なう際に、該処理対象を表す情報を保持する工程と、
前記保持する工程で保持した情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元直交変換処理を行なう工程と、
を有することを特徴とする直交変換方法。
【請求項８】
１次元逆直交変換を用いてｎ×ｎ要素の２次元入力データを逆直交変換する逆直交変換方法であって、
ｎ×ｎ要素の２次元入力データに対して１次元逆直交変換処理を行なう際に、該処理対象を表す情報を保持する工程と、
前記保持する工程で保持した情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元逆直交変換処理を行なう工程と、
を有することを特徴とする逆直交変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを圧縮するために使用される直交変換器、圧縮された画像データを伸張するために使用される直交変換器に関する。
【背景技術】
【０００２】
多値の画像を示すカラー画像データを符号化する方式として、例えばＪＰＥＧ（Joint Photographic Experts Group）という符号化方式が標準化されている。この方式の基本的な構成を図７に示す。この例では、直交変換器として離散コサイン変換器を用いた場合を示している。
【０００３】
図７は、符号化器及び復号化器の構成の一例を示す図である。図７に示すように、符号化器は、離散コサイン変換器３０１と、量子化器３０２と、エントロピー符号化器３０３とから構成されている。
【０００４】
図７に示す構成において、原画像Ｘ３００はｎ×ｎ画素のブロックに分割された後に、離散コサイン変換器３０１に入力され、離散コサイン変換器３０１が離散コサイン変換（以下、ＤＣＴ）を行なう。離散コサイン変換器３０１の出力Ｙは量子化器３０２で量子化される。
【０００５】
量子化器３０２の出力Ｚは、エントロピー符号化器３０３に入力されて符号化される。エントロピー符号化器３０３で符号化されたデータは、伝送路又は記録媒体３０４を介して復号器に入力される。
【０００６】
一方、復号器は、エントロピー復号器３０５と、逆量子化器３０６と、逆離散コサイン変換器３０７とから構成されている。
【０００７】
伝送路又は記録媒体３０４を介して復号器に入力された符号化データは、エントロピー復号器３０５で復号される。その出力Ｚ’は逆量子化器３０６で逆量子化される。逆量子化器３０６の出力Ｙ’は逆離散コサイン変換器３０７に入力され、逆離散コサイン変換器３０７が逆離散コサイン変換（以下、ＩＤＣＴ）を行なう。そして、逆離散コサイン変換器３０７から結果である再構成画像Ｘ’が出力される。
【０００８】
ここで、８×８画素のブロックを入力するＤＣＴは、一般に以下の式（１）、式（２）によって表される。これらの式に従いｘijからｙklを求めるＤＣＴは２次元離散コサイン変換（以下、２Ｄ−ＤＣＴ）と呼ばれる。
【０００９】
【数１】
2005149099.tif 000003
【００１０】
但し、
【００１１】
【数２】
2005149099.tif 000004
【００１２】
である。
また、式（１）は１次元離散コサイン変換（以下、１Ｄ−ＤＣＴ）を用いて以下の２つの式（３）、式（４）で表現することができる。
【００１３】
【数３】
2005149099.tif 000005
【００１４】
このＤＣＴをハードウェアで処理しなければならないＪＰＥＧ（画像圧縮符号化処理）の適用例として、例えば複写機やディジタルカメラ等がある。またＤＣＴをハードウェアで実現する場合、２Ｄ−ＤＣＴを利用すると、その回路は複雑になって回路規模も大きくなる。
一方、１Ｄ−ＤＣＴの回路は、２Ｄ−ＤＣＴの回路よりも回路構成が簡単になり、回路規模も小さくなる。また、１Ｄ−ＤＣＴには乗算回数の少ない高速なアルゴリズムが存在するため、１Ｄ−ＤＣＴを利用したＤＣＴを行なうことが多い。このような１Ｄ−ＤＣＴを利用したＤＣＴの例が特許文献１に記載されている。
【００１５】
図８は、１Ｄ−ＤＣＴを利用した離散コサイン変換器の一例を示す図である。この離散コサイン変換器は、ＭＵＸ１０１と、カウンタ（Counter）１０２と、１次元離散コサイン変換器１０３と、記憶装置１０４とから構成されている。ここで、カウンタ１０２は、１次元離散コサイン変換器１０３で、行方向と列方向のどちらの処理が行なわれているかを表すラウンド（Round）と、１次元離散コサイン変換器１０３の処理対象が何行目又は何列目であるかを保持するカウント（Count）とから構成されている。
【００１６】
この離散コサイン変換器を用いて入力画素データ１００をＤＣＴ係数１０５に変換する処理は大略以下のようになる。
【００１７】
まず、離散コサイン変換器にはｎ×ｎ画素の入力画素データ１００が入力される。そして、ＭＵＸ１０１がカウンタ１０２のラウンドの値に応じて出力するデータを選択する。例えば、ラウンドが“０”の時には入力画素データ１００を選択し、ラウンドが“１”の時には記憶装置１０４に保存している計算結果を選択する。
【００１８】
次に、１次元離散コサイン変換器１０３は、ＭＵＸ１０１で選択されたデータに対して１Ｄ−ＤＣＴを行なう。そして、カウンタ１０２のラウンドが“０”の時には、その結果を記憶装置１０４に一時保存する。また、ラウンドが“１”の時には、ＤＣＴ係数１０５を離散コサイン変換器の出力とする。
【００１９】
このように、１Ｄ−ＤＣＴを利用した離散コサイン変換器では、式（４）の計算結果を記憶装置１０４に保存することが必要となり、この記憶装置にはＲＡＭ（Random Access Memory）が使用されることが多い。そのため、式（４）の計算結果ｚilは全て同じビット数で表現されているほうが望ましい。
【００２０】
また、式（３）の計算と式（４）の計算には、同じ１次元離散コサイン変換器１０３を使用するため、式（３）の計算結果ｙuvと式（４）の計算結果ｚilは同じビット数で表現する必要がある。
【００２１】
つまり、式（３）の計算結果と式（４）の計算結果とを全て同じビット数で表現すると都合がよい。これらの計算結果を表現するためのビット数は、ハードウェアリソース等の制限の範囲内で自由に決定することができる。
【００２２】
但し、計算結果の整数部に割り当てるビット数は、ＤＣＴ係数の中で最もダイナミックレンジの大きな係数に合わせる必要がある。そして、小数部に残りのビットを割り当てることで、ＤＣＴの演算中のデータを表現している。
【００２３】
一方、ＩＤＣＴについてもＤＣＴと同様であり、ＩＤＣＴは１次元逆離散コサイン変換（以下、１Ｄ−ＩＤＣＴ）を利用し、１Ｄ−ＩＤＣＴの計算結果は全て同じビット数で表現すると都合が良い。尚、これらの計算結果を表現するためのビット数は、ハードウェアリソース等の制限の範囲内で自由に決定することができる。
【００２４】
但し、計算結果の整数部に割り当てるビット数は、ＤＣＴ係数の中で最もダイナミックレンジの大きな係数に合わせる必要がある。そして、小数部に残りのビットを割り当てることで、ＩＤＣＴの演算中のデータを表現している。
【００２５】
また、ＪＰＥＧを適用したディジタルカメラでは、ユーザが画質をある程度選択できるようになっており、ユーザが選択した画質に適する量子化値が量子化器３０２に設定される。そして、画像データを超高画質で圧縮したい場合には、量子化器３０２に量子化値として全て“１”が設定されることが考えられる。
【００２６】
このような場合に、離散コサイン変換器３０１と逆離散コサイン変換器３０７とで演算精度が異なると問題となる。つまり、離散コサイン変換器３０１と逆離散コサイン変換器３０７での誤差は、その演算中に扱う必要がある無理数を有限ビット数で表現するために発生する。
【００２７】
従来、１Ｄ−ＤＣＴを利用してＤＣＴを行なう場合、ＤＣＴ係数の整数部に割り当てるビット数は、最もダイナミックレンジの大きな係数に合わせる必要があった。そのため、ダイナミックレンジの小さな係数では整数部の上位数ビットが“０”となり、その係数の精度は十分ではないことがある。従って、この係数が原因となりＤＣＴの演算精度が低くなるという問題があった。
【００２８】
また同様に、１Ｄ−ＩＤＣＴを利用してＩＤＣＴを行なう場合も、ダイナミックレンジの小さな係数の精度が原因となりＩＤＣＴの演算精度が低くなるという問題があった。
【００２９】
上述のＤＣＴとＩＤＣＴの演算誤差を小さくするためには、その演算中のデータが十分な精度の小数部をもっている必要があるが、演算中のデータをＩＥＥＥ等で標準化されている浮動小数点形式で表現するとなると、回路規模が増大することになり、あまり現実的ではない。
【特許文献１】特開２００１-７８１９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００３０】
上述したように、１次元直交変換を利用して直交変換を行なう場合、整数部に割り当てるビット数は、最もダイナミックレンジの大きな係数に合わせる必要がある。そのため、ダイナミックレンジの小さな係数では整数部の上位数ビットが“０”となり、その係数の精度は十分ではないことがある。従って、この係数が原因となり直交変換の演算精度が低くなるという問題がある。
【００３１】
また同様に、１次元逆直交変換を利用して逆直交変換を行なう場合にも、ダイナミックレンジの小さな係数の精度が原因となり逆直交変換の演算精度が低くなるという問題がある。
【００３２】
本発明は、上記問題点を解決するためになされたもので、回路規模を大幅に増大させることなく、従来よりも演算精度の高い直交変換器及び逆直交変換器を提供することを目的とする。
【課題を解決するための手段】
【００３３】
本発明は、１次元直交変換を用いてｎ×ｎ要素の２次元入力データを直交変換する直交変換器であって、ｎ×ｎ要素の２次元入力データに対して１次元直交変換処理を行なう際に、該処理対象を表す情報を保持する保持手段と、前記保持手段に保持された情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元直交変換処理を行なう１次元直交変換手段とを有することを特徴とする。
【００３４】
また、本発明は、１次元逆直交変換を用いてｎ×ｎ要素の２次元入力データを逆直交変換する逆直交変換器であって、ｎ×ｎ要素の２次元入力データに対して１次元逆直交変換処理を行なう際に、該処理対象を表す情報を保持する保持手段と、前記保持手段に保持された情報に基づき、ダイナミックレンジの小さな直交変換係数の小数部により多くのビットを割り当てる様に、適応的に演算を変えて１次元逆直交変換処理を行なう１次元逆直交変換手段とを有することを特徴とする。
【発明の効果】
【００３５】
本発明によれば、１次元直交変換を用いてｎ×ｎ要素の２次元入力データを直交変換／逆直交変換する際に、ダイナミックレンジの小さな係数には、より多くのビットを小数部に割り当てることができ、従来よりも演算精度を高くすることができる。
【発明を実施するための最良の形態】
【００３６】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【実施例１】
【００３７】
実施例１における直交変換器として離散コサイン変換器を例に挙げ、図１、図２、図３を用いて離散コサイン変換器の構成及び処理について説明する。
【００３８】
図１は、実施例１による離散コサイン変換器の一例を示す図である。図２は、実施例１による離散コサイン変換器の処理手順を示すフローチャートである。また、図３は実施例１による離散コサイン変換器の構成要素である１次元離散コサイン変換器のデータフローの一例を示す図である。尚、従来手法の説明で用いた図８と同じ構成要素については同じ符号を付けている。
【００３９】
図１に示すように、離散コサイン変換器は、ＭＵＸ１０１と、カウンタ１０２と、１次元離散コサイン変換器１０３と、記憶装置１０４とで構成されている。ここで、カウンタ１０２は、１次元離散コサイン変換器１０３で、行方向と列方向のどちらの処理が行なわれているかを表すラウンドと、１次元離散コサイン変換器１０３の処理対象が何行目又は何列目であるかを保持するカウントとから構成されている。
【００４０】
上述の離散コサイン変換器を用いて、入力画素データ１００にＤＣＴを適用してＤＣＴ係数１０５に変換する処理手順を図２に沿って説明する。
【００４１】
まず、離散コサイン変換器にｎ×ｎ画素の入力画素データ１００が入力される。すると、ステップＳ１００で、カウンタ１０２のラウンドの値を“０”に初期化し、ステップＳ１０１で、カウンタ１０２のカウントの値を“０”に初期化する。
【００４２】
次に、ＭＵＸ１０１がカウンタ１０２のラウンドの値に応じて、出力するデータを選択する。ここで、ラウンドの値が“０”の時には入力画素データ１００を選択し、ラウンドの値が“１”の時には記憶装置１０４に一時保存しているデータを選択する。
【００４３】
次に、ステップＳ１０２で、１次元離散コサイン変換器１０３は、カウンタ１０２からラウンドの値とカウントの値を入力する。詳しい説明は後述するが、これらの値によって適応的に演算を変えるものである。そして、１次元離散コサイン変換器１０３は、ＭＵＸ１０１で選択されたデータに対して１Ｄ−ＤＣＴを行なう。次に、カウンタ１０２のラウンドの値が“０”の時にはその結果を記憶装置１０４に保存し、ラウンドの値が“１”の時にはＤＣＴ係数１０５を出力する。
【００４４】
上述したステップＳ１０２での１次元離散コサイン変換器１０３の処理が終了すると、ステップＳ１０３へ進み、カウンタ１０２のカウントの値をインクリメントする。そして、ステップＳ１０４において、カウンタ１０２のカウントの値が画素数ｎと等しいか否かを判定する。ここで、カウントの値がｎと等しくない、即ち全ての画素を処理していない場合にはステップＳ１０２に戻り、上述した処理を繰り返す。
【００４５】
また、上述のステップＳ１０４で、カウントの値がｎと等しい、即ち全ての画素を処理した場合にはステップＳ１０５へ進み、カウンタ１０２のラウンドの値をインクリメントする。そして、ステップＳ１０６において、ラウンドの値が“２”と等しいか否かを判定する。ここで、ラウンドの値が“２”と等しくない、即ちＤＣＴ係数１０５を出力していない場合にはステップＳ１０１に戻り、上述した処理を繰り返す。また、ラウンドの値が“２”と等しい、即ちＤＣＴ係数１０５を出力した場合には、この離散コサイン変換器の処理を終了する。
【００４６】
次に、１次元離散コサイン変換器１０３の処理の一例を図３に示すデータフローを用いて説明する。
【００４７】
１次元離散コサイン変換器１０３は、１ラウンド目（ラウンドの値が“０”の時）にはｎ×ｎ画素の入力画素データ１００を１行づつ処理し、また２ラウンド目（ラウンドの値が“１”の時）には記憶装置１０４に保存されたｎ×ｎデータを１列づつ処理する。尚、以下の説明では、ｎ＝８であるとし、ｎ×ｎ画素の入力画素データ１００の各画素はそれぞれ８ビットの整数値で表現されているものと仮定する。
【００４８】
図３中で、ｘi （ｉ＝０，１，…，７）が入力であり、ｙi （ｉ＝０，１，…，７）が出力である。ここで、ｙi はそれぞれ１５ビットで表現するものと仮定する。また、αi （ｉ＝０，１，…，５）は小数値であり、実施例１では１ビットの整数部と１２ビットの小数部とで構成されるものとする。
【００４９】
１ラウンド目の入力ｘi をデータフローに従って処理すると、加算によって整数部を表現するために必要なビット数は１ビット増える。また、αi によって小数部に必要なビット数が決まる。そのため、出力ｙi を表現するために必要なビット数は表１の（ａ）欄のようになる。
【００５０】
【表１】
2005149099.tif 000006
【００５１】
表１中では、ｙi の整数部のビット数をＩ（ｙi ）、小数部のビット数をＦ（ｙi）で表している。しかし、ｙi はそれぞれ１５ビットで表現するものと仮定しているので、ｙi に割り当てることのできるビット数は表１の（ｂ）欄のようになる。
そのため、出力の最終段でシフト演算と丸めを行ない、ｙi の総ビット数が１５ビットとなるように処理する。例えば、ｉ＝０のときには左に４ビットシフトを行なう。また、ｉ＝１のときには右に８ビットシフトして丸めを行ない、更に右に１ビットシフトしてｙi の総ビット数が１５ビットになるように処理する。
【００５２】
このようなシフト演算のシフト数は処理対象となっている行によって必要なシフト数が異なる。また、２ラウンド目でのシフト演算のシフト数とも異なるため、カウンタ１０２から入力されるラウンドの値とカウントの値とに応じて適応的にシフト数を変えなければならない。
【００５３】
１ラウンド目の出力ｙi の表現形式は各行とも表１のようになるため、記憶装置１０４に保存するｎ×ｎ要素のデータの表現形式は以下の表２のようになる。但し、表２では、Ｉ（ｙi ）・Ｆ（ｙi）の形式で表している。
【００５４】
【表２】
2005149099.tif 000007
【００５５】
次に、２ラウンド目には記憶装置１０４に保存されたｎ×ｎ要素のデータが処理の対象となり、このラウンドではｎ×ｎ要素のデータを１列づつ処理する。入力ｘi をデータフローに従って処理すると、出力ｙi を表現するために必要なビット数が決まる。ここで、出力ｙi は１５ビットで表現すると仮定しているため、１ラウンド目と同様に、シフト演算と丸めによってｙi の総ビット数が１５ビットとなるようにする。
このようなシフト演算のシフト数は処理対象となっている列によって必要なシフト数が異なる。また、１ラウンド目でのシフト演算のシフト数とも異なるため、カウンタ１０２から入力されるラウンドの値とカウントの値とに応じて適応的にシフト数を変えなければならない。
【００５６】
上述したようにして、２ラウンド目の処理が終了し、求まったＤＣＴ係数１０５の表現形式は表３のようになる。
【００５７】
【表３】
2005149099.tif 000008
【００５８】
従来手法の直交変換器（離散コサイン変換器）であれば、直交変換係数（ＤＣＴ係数）の整数部に割り当てられるビット数はどの係数についても同じであり、これは最もダイナミックレンジの大きな係数を表現するために必要なビット数であった。つまり、記憶装置１０４に保持されるデータの表現形式は全て整数部１２ビット、小数部３ビットであり、直交変換係数（ＤＣＴ係数１０５）の表現形式は全て整数部１５ビット、小数部０ビットであった。そのため、ダイナミックレンジの小さな係数の小数部に割り当てるビット数が少なくなり、直交変換（ＤＣＴ）の演算精度が低くなっていた。
これに対して、実施例１による直交変換器（離散コサイン変換器）では、上述のように直交変換係数（ＤＣＴ係数）の整数部はどの係数についても最小限のビット数で表すことができるため、ダイナミックレンジの小さな係数には、より多くのビットを小数部に割り当てることができ、直交変換（ＤＣＴ）の演算精度を高くすることができる。
【実施例２】
【００５９】
実施例２における逆直交変換器として逆離散コサイン変換器を例に挙げ、図４、図５、図６を用いて逆離散コサイン変換器の構成及び処理について説明する。
【００６０】
図４は、実施例２による逆離散コサイン変換器の一例を示す図である。図５は、実施例２による逆離散コサイン変換器の処理手順を示すフローチャートである。また、図６は実施例２による逆離散コサイン変換器の構成要素である１次元逆離散コサイン変換器のデータフローの一例を示す図である。尚、実施例１の説明で用いた図１〜図３と同じ構成要素については同じ符号を付けている。
【００６１】
図４に示すように、逆離散コサイン変換器は、ＭＵＸ１０１と、カウンタ１０２と、１次元逆離散コサイン変換器２０３と、記憶装置１０４とで構成されている。ここで、カウンタ１０２は、１次元逆離散コサイン変換器２０３で、行方向と列方向のどちらの処理が行なわれているかを表すラウンドと、１次元逆離散コサイン変換器２０３の処理対象が何行目又は何列目であるかを保持するカウントとから構成されている。
【００６２】
上述の逆離散コサイン変換器を用いて、ＤＣＴ係数２００にＩＤＣＴを適用して再構成画素データ２０５に変換する処理手順を図５に沿って説明する。
【００６３】
まず、逆離散コサイン変換器にｎ×ｎ要素のＤＣＴ係数２００が入力される。すると、ステップＳ２００で、カウンタ１０２のラウンドの値を“０”に初期化し、ステップＳ２０１でカウンタ１０２のカウントの値を“０”に初期化する。
【００６４】
次に、ＭＵＸ１０１がカウンタ１０２のラウンドの値に応じて、出力するデータを選択する。ここで、ラウンドの値が“０”の時にはＤＣＴ係数２００を選択し、ラウンドの値が“１”の時には記憶装置１０４に一時保存しているデータを選択する。
【００６５】
次に、ステップＳ２０２で、１次元逆離散コサイン変換器２０３は、カウンタ１０２からラウンドの値とカウントの値を入力する。詳しい説明は後述するが、これらの値によって適応的に演算を変えるものである。そして、１次元逆離散コサイン変換器２０３は、ＭＵＸ１０１で選択されたデータに対して１Ｄ−ＩＤＣＴを行なう。次に、カウンタ１０２のラウンドの値が“０”の時にはその結果を記憶装置１０４に保存し、ラウンドの値が“１”の時には再構成画素データ２０５を出力する。
【００６６】
上述したステップＳ２０２での１次元逆離散コサイン変換器２０３の処理が終了すると、ステップＳ２０３へ進み、カウンタ１０２のカウントの値をインクリメントする。そして、ステップＳ２０４において、カウンタ１０２のカウントの値が要素数ｎと等しいか否かを判定する。ここで、カウントの値がｎと等しくない、即ち全ての要素を処理していない場合にはステップＳ２０２に戻り、上述した処理を繰り返す。
【００６７】
また、上述のステップＳ２０４で、カウントの値がｎと等しい、即ち全ての要素を処理した場合にはステップＳ２０５へ進み、カウンタ１０２のラウンドの値をインクリメントする。そして、ステップＳ２０６において、ラウンドの値が“２”と等しいか否かを判定する。ここで、ラウンドの値が“２”と等しくない、即ち再構成画素データ２０５を出力していない場合にはステップＳ２０１に戻り、上述した処理を繰り返す。また、ラウンドの値が“２”と等しい、即ち再構成画素データ２０５を出力した場合には、この逆離散コサイン変換器の処理を終了する。
【００６８】
次に、１次元逆離散コサイン変換器２０３の処理の一例を図６に示すデータフローを用いて説明する。
【００６９】
１次元逆離散コサイン変換器２０３は、１ラウンド目（ラウンドの値が“０”の時）にはｎ×ｎ要素のＤＣＴ係数２００を１行づつ処理し、また２ラウンド目（ラウンドの値が“１”の時）には記憶装置１０４に保存されたｎ×ｎ要素のデータを１列づつ処理する。尚、以下の説明ではｎ＝８であるとし、ｎ×ｎ要素のＤＣＴ係数２００は、それぞれ１５ビットで表現されているものと仮定し、表現形式は表３のようになっているものとする。また、出力ｘi は再構成画素データであるため、８ビットで表現するものとする。また、βi （ｉ＝０，１，…，５）は小数値であり、実施例２では２ビットの整数部と１２ビットの小数部とで構成されるものとする。
【００７０】
１ラウンド目の入力ｙi をデータフローに従って処理すると、加算によって整数部を表現するために必要なビット数が増える。また、βi によって小数部を表現するために必要なビット数が増える。しかし、１Ｄ−ＩＤＣＴは１Ｄ−ＤＣＴの逆変換であるため、出力ｘi の整数部に必要となるビット数は実際には表２で示した表現形式で十分である。そこで、出力の最終段でシフト演算と丸めを行ない、出力ｘi を表２の表現形式に合わせて記憶装置１０４に保存する。このとき、実施例１と同様に、シフト演算のシフト数は１ラウンド目と２ラウンド目では異なる。また、処理対象となっている行によっても必要なシフト数が異なるため、カウンタ１０２から入力されるラウンドの値とカウントの値とに応じて適応的にシフト数を変えなければならない。
【００７１】
次に、２ラウンド目には記憶装置１０４に保存されたｎ×ｎ要素のデータが処理の対象となり、このラウンドではｎ×ｎ要素のデータを１列づつ処理する。やはり、加算と乗算により整数部のビット数と小数部のビット数は増加するが、出力ｘi は再構成画素データであるため、出力の最終段で、カウンタ１０２から入力されるラウンドの値とカウントの値とに応じたシフト演算と丸めを行ない、８ビットの整数とする。
【００７２】
従来手法の逆直交変換器（逆離散コサイン変換器）であれば、直交変換係数（ＤＣＴ係数）の整数部に割り当てられるビット数はどの係数についても同じであり、これは最もダイナミックレンジの大きな係数を表現するために必要なビット数であった。つまり、直交変換係数（ＤＣＴ係数２０５）の表現形式は全て整数部１５ビット、小数部０ビットであり、記憶装置１０４に保持されるデータの表現形式は全て整数部１２ビット、小数部３ビットであった。そのため、ダイナミックレンジの小さな係数の小数部に割り当てるビット数が少なくなり、逆直交変換（ＩＤＣＴ）の演算精度が低くなっていた。
【００７３】
これに対して、実施例２による逆直交変換器（逆離散コサイン変換器）では、上述のように直交変換係数（ＤＣＴ係数２０５）の整数部はどの係数についても最小限のビット数で表しているため、ダイナミックレンジの小さな係数には、より多くのビットを小数部に割り当てることができ、逆直交変換（ＩＤＣＴ）の演算精度を高くすることができる。
【００７４】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００７５】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００７６】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００７７】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００７８】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７９】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８０】
【図１】実施例１による離散コサイン変換器の一例を示す図である。
【図２】実施例１による離散コサイン変換器の処理手順を示すフローチャートである。
【図３】実施例１による離散コサイン変換器の構成要素である１次元離散コサイン変換器のデータフローの一例を示す図である。
【図４】実施例２による逆離散コサイン変換器の一例を示す図である。
【図５】実施例２による逆離散コサイン変換器の処理手順を示すフローチャートである。
【図６】実施例２による逆離散コサイン変換器の構成要素である１次元逆離散コサイン変換器のデータフローの一例を示す図である。
【図７】符号化器及び復号化器の構成の一例を示す図である。
【図８】１Ｄ−ＤＣＴを利用した離散コサイン変換器の一例を示す図である。
【符号の説明】
【００８１】
１００  入力画素データ
１０１  ＭＵＸ（選択器）
１０２  カウンタ（Counter）
１０３  １次元離散コサイン変換器
１０４  記憶装置
１０５  ＤＣＴ係数
２００  ＤＣＴ係数
２０３  １次元逆離散コサイン変換器
２０５  再構成画素データ
３００  原画像Ｘ
３０１  離散コサイン変換器
３０２  量子化器
３０３  エントロピー符号化器
３０４  伝送路又は記録媒体
３０５  エントロピー復号器
３０６  逆量子化器
３０７  逆離散コサイン変換器
３０８  再構成画像Ｘ’
【図１】
2005149099.tif 000009
【図２】
2005149099.tif 000010
【図３】
2005149099.tif 000011
【図４】
2005149099.tif 000012
【図５】
2005149099.tif 000013
【図６】
2005149099.tif 000014
【図７】
2005149099.tif 000015
【図８】
2005149099.tif 000016