(57)【要約】【課題】小数点の丸め誤差の累積を抑え、圧縮画像の再現精度の高い逆離散コサイン変換方法を提供する。【解決手段】１次元逆離散コサイン変換の演算結果として、３０ビットのテンポラリデータｔ'（ｋ，ｖ）が得られる。これを外部ＲＡＭに格納する際に、データｔ'（ｋ，ｖ）の整数が−１２８〜＋１２７以外の場合、整数用に１１ビット（符号ビットＳを含まない）が確保される（モード０）。一方、整数が−１２８〜＋１２７の場合、整数用に７ビット（符号ビットＳを含まない）が確保され、余った４ビットが小数に割り当てられる（モード１）。したがって、データｔ'（ｋ，ｖ）を待避するための外部ＲＡＭの容量を拡張することなく、データｔ'（ｋ，ｖ）の演算精度を高くすることができる。【選択図】図５
2005157832.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記ｉ＋ｊビットの整数と前記ｋ−ｉビットの小数とをメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを前記メモリに登録するステップとを備えたことを特徴とする動的小数点方式。
【請求項２】
請求項１に記載の動的小数点方式であってさらに、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいときフラグを第１の状態に設定し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記フラグを第２の状態に設定するステップを備えたことを特徴とする動的小数点方式。
【請求項３】
少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値を算出するステップと、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記ｉ＋ｊビットの整数と前記ｋ−ｉビットの小数とをメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを前記メモリに登録するステップと、
前記メモリから数値を順次読み出してその数値に所定の数値を乗算し、その積を累算する積和演算ステップとを備えたことを特徴とする動的小数点演算方法。
【請求項４】
請求項３に記載の動的小数点演算方法であってさらに、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいときフラグを第１の状態に設定し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記フラグを第２の状態に設定するステップを備えたことを特徴とする動的小数点演算方法。
【請求項５】
請求項３又は請求項４に記載の動的小数点演算方法であって、
前記積和演算ステップは逆離散コサイン変換ステップを含むことを特徴とする動的小数点演算方法。
【請求項６】
入力データを１次元逆離散コサイン変換して少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴステップと、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記ｉ＋ｊビットの整数と前記ｋ−ｉビットの小数とを第２のテンポラリデータとしてメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを第２のテンポラリデータとして前記メモリに登録するステップと、
前記メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴステップとを備えたことを特徴とする２次元逆離散コサイン変換方法。
【請求項７】
請求項６に記載の２次元逆離散コサイン変換方法であってさらに、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいときフラグを第１の状態に設定し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記フラグを第２の状態に設定するステップを備えたことを特徴とする２次元逆離散コサイン変換方法。
【請求項８】
入力データを１次元逆離散コサイン変換して少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴ手段と、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断する手段と、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記ｉ＋ｊビットの整数と前記ｋ−ｉビットの小数とを第２のテンポラリデータとしてメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを第２のテンポラリデータとして前記メモリに登録する手段と、
前記メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴ手段とを備えたことを特徴とする２次元逆離散コサイン変換装置。
【請求項９】
請求項８に記載の２次元逆離散コサイン変換装置であってさらに、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいときフラグを第１の状態に設定し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記フラグを第２の状態に設定する手段を備えたことを特徴とする２次元逆離散コサイン変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的小数点方式、動的小数点演算方法、並びに２次元逆離散コサイン変換方法及びその装置に関し、さらに詳しくは、固定小数点方式と浮動小数点方式との間の中間的な動的小数点方式、その方式を用いた動的小数点演算方法、並びにその演算方法を用いた２次元逆離散コサイン変換方法及びその装置に関する。
【背景技術】
【０００２】
ＪＰＥＧ(Joint Photographic Expert Group)、ＭＰＥＧ(Moving Picture Coding Experts Group)などの画像圧縮では、画像データを離散コサイン変換(ＤＣＴ；Discrete Cosine Transform)した後、量子化することにより符号化処理を行っている。一方、圧縮された画像データを元に戻す復号処理では、上記と逆に、圧縮された画像データを逆量子化した後、逆離散コサイン変換(ＩＤＣＴ；Inverse Discrete Cosine Transform)している。
【０００３】
画像データは２次元データであるから、符号化処理では２次元ＤＣＴを行い、復号処理では２次元ＩＤＣＴを行う。Ｎ×Ｎ画素の元の画像データをｆ（ｘ，ｙ）（ｘ，ｙ＝０〜Ｎ−１）とし、ＤＣＴ後の画像データをＦ（ｕ，ｖ）（ｕ，ｖ＝０〜Ｎ−１）とすると、２次元ＤＣＴは次の式（１）で、２次元ＩＤＣＴは次の式（２）で表される。
【数１】
2005157832.tif 000003
【０００４】
また、２次元ＤＣＴは次の式（３）及び（４）で表される１次元ＤＣＴに分解され、２次元ＩＤＣＴは次の式（５）及び（６）で表される１次元ＩＤＣＴに分解される。
【数２】
2005157832.tif 000004
【０００５】
式（３）〜（６）から明らかなように、２次元ＤＣＴは１次元ＤＣＴを２回、２次元ＩＤＣＴは１次元ＩＤＣＴを２回行うことにより演算することができる。
【０００６】
しかし、いずれの場合も、１回目の演算結果を使用して２回目の演算を行うため、１回目の演算結果の精度により２回目の演算結果の精度が左右される。１回目の演算結果の精度を高めるためには１回目の演算結果の桁数を多く取って２回目の演算を行えばよいが、２回目の演算は１回目の演算が全て終了した後に行うので、１回目の演算結果はメモリに一時的に待避しておかなければならない。メモリ内に大きな待避領域を確保することは好ましくなく、また、メモリが有限なハードウエア資源である以上、確保可能な待避領域には一定の限界がある。
【０００７】
したがって、実在する符号化器又は復号器では小数点以下を３ビット程度に固定した固定小数点方式で演算を行っている。下記の特許文献１に開示されている逆離散コサイン変換方法もやはり小数点以下を４ビット（第１１〜第１４ビット）に固定している。
【０００８】
一般に、固定小数点方式は小数点以下のビット数を一定にしているため、浮動小数点方式よりも演算精度は低い。画像圧縮では演算対象となる数値範囲が限られていることから、演算可能な数値範囲の広い浮動小数点方式ではなく、演算速度の速い固定小数点方式が採用されている。
【０００９】
【特許文献１】特開平１０−１４９３５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、浮動小数点方式よりも低いが、固定小数点方式よりも高い演算精度を確保することができる動的小数点方式を提供することである。
【００１１】
本発明のもう１つの目的は、小数点の丸め誤差の累積を抑えることができる動的小数点数演算方法を提供することである。
【００１２】
本発明のさらにもう１つの目的は、離散コサイン変換後のデータを元のデータに高い精度で戻すことができる逆離散コサイン変換方法及びその装置を提供することである。
【課題を解決するための手段及び発明の効果】
【００１３】
本発明による動的小数点方式は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除きｉ＋ｊビットの整数とｋ−ｉビットの小数とをメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とをメモリに登録するステップとを備える。
【００１４】
この動的小数点方式では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用にｉ＋ｊビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、浮動小数点方式よりも低いが、固定小数点方式よりも高い演算精度を確保することができる。
【００１５】
好ましくは、上記動的小数点方式はさらに、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいときフラグを第１の状態に設定し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいときフラグを第２の状態に設定するステップを備える。
【００１６】
この場合、小数点の位置はフラグで判別可能である。
【００１７】
本発明による動的小数点数演算方法は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値を算出するステップと、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除きｉ＋ｊビットの整数とｋ−ｉビットの小数とをメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とをメモリに登録するステップと、メモリから数値を順次読み出してその数値に所定の数値を乗算し、その積を累算する積和演算ステップとを備える。
【００１８】
この動的小数点演算方法では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用にｉ＋ｊビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、その数値の積和演算で発生する丸め誤差の累積を小さく抑えることができる。
【００１９】
本発明による２次元逆離散コサイン変換方法は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴステップと、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除きｉ＋ｊビットの整数とｋ−ｉビットの小数とを第２のテンポラリデータとしてメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とを第２のテンポラリデータとしてメモリに登録するステップと、メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴステップとを備える。
【００２０】
本発明による２次元逆離散コサイン変換装置は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴ手段と、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断する手段と、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除きｉ＋ｊビットの整数とｋ−ｉビットの小数とを第２のテンポラリデータとしてメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とを第２のテンポラリデータとしてメモリに登録する手段と、メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴ手段とを備える。
【００２１】
この２次元逆離散コサイン変換方法及び装置では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用にｉ＋ｊビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、その数値の１次元離散コサイン変換で発生する丸め誤差の累積を小さく抑え、離散コサイン変換後のデータを元のデータに高い精度で戻すことができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２３】
図１は、圧縮された２次元の画像データＱＦ（ｕ，ｖ）を展開して２次元の画像データｆ'（ｘ，ｙ）を生成する復号装置１０の全体構成を示す。復号装置１０は、圧縮された画像データＱＦ（ｕ，ｖ）を逆量子化してデータＦ"（ｕ，ｖ）を算出する量子化部１２と、データＦ"（ｕ，ｖ）を飽和処理してデータＦ'（ｕ，ｖ）を算出する飽和処理部１４と、データＦ'（ｕ，ｖ）を２次元逆離散コサイン変換して画像データｆ'（ｘ，ｙ）を算出する２次元ＩＤＣＴ部１６とを備える。
【００２４】
一般にＩＤＣＴは８×８画素のブロック単位で行われるので、以下では上記式（２），（５），（６）をＮ＝７として具体的に説明する。
【００２５】
図２は、２次元ＩＤＣＴ部１６の構成を示す機能ブロック図である。２次元ＩＤＣＴ部１６は、１次元逆離散コサイン変換を行う２つの１次元ＩＤＣＴ部１８及び２０と、ＩＤＣＴテーブルを記憶したＲＡＭ(Random Accesses Memory)２２と、１次元ＩＤＣＴ部１８から出力される３０ビットのテンポラリデータｔ'（ｘ，ｖ）を１６ビットのテンポラリデータｔ"（ｘ，ｖ）に制限しかつ丸めるリミット／ラウンド部２４とを含む。
【００２６】
図３は、式（５）を行列で表したものである。ＩＤＣＴテーブルは８×８個のＩＤＣＴ係数Ｃ（ｘ，ｕ）を有する。
【００２７】
飽和処理部１４で算出された８×８個のデータＦ'（ｕ，ｖ）の中から１列ずつ列データＦ'（ｋ，ｖ）が抽出される。列データＦ'（ｋ，ｖ）の各数値は、ＩＤＣＴテーブルにおける対応するＩＤＣＴ係数Ｃ（ｘ，ｋ）と乗算され（１８１）、それらの積が累算される（１８２）。これらの乗算及び累算は、ＩＤＣＴテーブルにおける対応する１行にある８個のＩＤＣＴ係数Ｃ（ｘ，ｋ）全てについて繰り返される（１８３）。その結果、テンポラリデータｔ'（ｘ，ｖ）が得られる。テンポラリデータｔ'（ｘ，ｖ）の各数値は次の式（７）で表される。
【００２８】
ｔ'（ｘ，ｖ）＝Ｃ（ｘ，０）×Ｆ'（ｋ，０）＋Ｃ（ｘ，１）×Ｆ'（ｋ，１）＋Ｃ（ｘ，２）×Ｆ'（ｋ，２）＋Ｃ（ｘ，３）×Ｆ'（ｋ，３）＋Ｃ（ｘ，４）×Ｆ'（ｋ，４）＋Ｃ（ｘ，５）×Ｆ'（ｋ，５）＋Ｃ（ｘ，６）×Ｆ'（ｋ，６）＋Ｃ（ｘ，７）×Ｆ'（ｋ，７）…（７）
【００２９】
算出されたテンポラリデータｔ'（ｘ，ｖ）はリミット／ラウンド部２４を経てテンポラリデータｔ"（ｘ，ｕ）として外部ＲＡＭ２６に格納される。８列分の列データＦ'（ｋ，ｖ）全てについて１次元ＩＤＣＴ部１８による１次元逆離散コサイン変換が終了すると、図４に示したｔ"（ｘ，ｖ）が外部ＲＡＭ２６に格納されることになる。
【００３０】
ここで図５及び図６を参照して、リミット／ラウンド部２４の詳細を説明する。
【００３１】
１次元ＩＤＣＴ部１８で算出されたテンポラリデータｔ'（ｘ，ｖ）の各数値は、１ビットの符号ビットＳと、１３ビットの整数と、１６ビットの小数とからなる。
【００３２】
リミット／ラウンド部２４は、テンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７か否か（テンポラリデータｔ'（ｘ，ｖ）の絶対値が１２７よりも大きいか否か）、具体的には、第２３〜第２８ビットのいずれかが「１」か否かを判断する（Ｓ１）。
【００３３】
第２３〜第２８ビットのいずれかが「１」の場合、モードフラグＭＦを「０」に設定するとともに（Ｓ２）、１３ビットの整数を１１ビットの整数に制限し、１６ビットの小数を４ビットの小数に丸める（Ｓ３）。その結果、１ビットの符号ビットＳを含む１６ビットのテンポラリデータｔ"（ｘ，ｖ）が得られる。この場合を「モード０」という。
【００３４】
一方、第２３〜第２８ビットの全てが「０」の場合、モードフラグＭＦを「１」に設定するとともに（Ｓ４）、１３ビットの整数を７ビットの整数に制限し、１６ビットの小数を８ビットの小数に丸める（Ｓ５）。その結果、１ビットの符号ビットＳを含む１６ビットのテンポラリデータｔ"（ｘ，ｖ）が得られる。この場合を「モード１」という。
【００３５】
リミット／ラウンド部２４は、得られた１６ビットのテンポラリデータｔ"（ｘ，ｖ）を１ビットのモードフラグＭＦとともに外部ＲＡＭ２６に格納する（Ｓ６）。
【００３６】
ＩＤＣＴでは、ＤＣ（直流）成分のデータＦ'（０，０）は大きい数値になる可能性が高い。したがって、このデータＦ'（０，０）を上記積和演算に用いて得たテンポラリデータｔ'（ｘ，ｖ）も大きい数値になる可能性が高い。本実施の形態ではテンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７以外の場合、整数用に１１ビット（符号ビットＳを含まない）を確保しているので、ほとんどの場合、オーバーフローを避けることができる。
【００３７】
一方、ＡＣ（交流）成分のデータＦ'（ｕ，ｖ）（ｕ又はｖ≠０）は小さい数値になる可能性が高い。したがって、このデータＦ'（ｕ，ｖ）を上記積和演算に用いて得たテンポラリデータｔ'（ｘ，ｖ）も小さい数値になる可能性が高い。本実施の形態ではテンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７の場合、小数用に８ビットを確保しているので、十分な精度を持ったテンポラリデータｔ"（ｘ，ｖ）を次の１次元ＩＤＣＴ部２０に与えることができる。
【００３８】
外部ＲＡＭ２６に格納された８×８個のテンポラリデータｔ"（ｘ，ｖ）の中から１行ずつ行データｔ'（ｘ，ｊ）が読み出され、１次元ＩＤＣＴ部２０に入力され、２回目の１次元逆離散コサイン変換が行われる。具体的には、行データｔ"（ｋ，ｊ）の各数値は、ＩＤＣＴテーブルにおける対応するＩＤＣＴ係数と乗算され（２０１）、それらの積が累算され（２０２）、これらの乗算及び累算はＩＤＣＴテーブルにおける対応する１列にある８個のＩＤＣＴ係数全てについて繰り返される（２０３）。その結果、展開された画像データｆ'（ｘ，ｙ）が得られる。
【００３９】
以上のように本実施の形態によれば、リミット／ラウンド部２４において、テンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７以外の場合、整数用に１１ビット（符号ビットＳを含まない）が確保されるが、テンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７の場合、整数用の４ビットが小数用に割り当てられ、小数用に８ビットが確保されるので、十分な精度を持ったテンポラリデータｔ"（ｘ，ｖ）が次の１次元ＩＤＣＴ部２０に与えられる。したがって、テンポラリデータｔ"（ｘ，ｖ）を待避するための外部ＲＡＭ２６の容量を増やすことなく、２次元逆離散コサイン変換の精度を高くすることができる。その結果、画像の復元精度が高くなる。
【００４０】
上記実施の形態ではテンポラリデータｔ'（ｘ，ｖ）の整数が−１２８〜＋１２７か否かを判断しているが、このしきい値は特に限定されるものではなく、画像の復元精度が高くなるように適宜定めればよい。また、上記のビット数も一例に過ぎず、特に限定されるものではない。また、上記実施の形態は本発明をＪＰＥＧ又はＭＰＥＧ用のＩＤＣＴに適用したものであるから符号ビットＳが存在するが、一般的な演算では存在しない場合もある。
【００４１】
また、上記実施の形態では本発明はＩＤＣＴ部１６に適用されているが、飽和処理部１４に適用してもよい。飽和処理部１４は、図７に示すように、２１ビットのデータＦ"（ｕ，ｖ）（範囲：−１０４８５７６〜＋１０４８５７７）を１２ビットのデータＦ'（ｕ，ｖ）に制限する。
【００４２】
具体的には、まずデータＦ"（ｕ，ｖ）を「８」で除算する。「８」による除算は、データＦ"（ｕ，ｖ）の小数点を３桁繰り上げることに相当する。除算により得られた商については小数点以下３ビットの小数を丸める。これにより１８ビットのデータＦｔ"（ｕ，ｖ）（範囲：−１３１０７２〜＋１３１０７１）が得られる。
【００４３】
次に、１８ビットのデータＦｔ"（ｕ，ｖ）を１２ビットのデータＦ'（ｕ，ｖ）に制限する。すなわち、Ｆｔ"（ｕ，ｖ）>２０４７のときはＦ'（ｕ，ｖ）＝２０４７とし、−２０４８≦Ｆｔ"（ｕ，ｖ）≦２０４７のときはＦ'（ｕ，ｖ）＝Ｆｔ"（ｕ，ｖ）とし、Ｆｔ"（ｕ，ｖ）≦−２０４８のときはＦ'（ｕ，ｖ）＝−２０４８とする。
【００４４】
このとき、データＦｔ"（ｕ，ｖ）の整数が−２５６〜＋２５５か否か、具体的には、第８〜第１６ビットのいずれかが「１」か否かを判断する。第８〜第１６ビットのいずれかが「１」の場合、モードフラグＭＦを「０」に設定し（モード０）、従来通り１１ビット全てを整数に割り当てる。一方、第８〜第１６ビットの全てが「０」の場合、モードフラグＭＦを「１」に設定し（モード１）、８ビットを整数に割り当て、残りの３ビットを上記除算により得られた商の小数に割り当てる。
【００４５】
この飽和処理部１４によれば、モード０では整数用に１１ビットが確保されるのでオーバーフローを避けることができ、モード１では整数用の余った３ビットが小数用に割り当てられるので、十分な精度を持ったデータＦ'（ｕ，ｖ）が次のＩＤＣＴ１６に与えられる。したがって、データＦ'（ｕ，ｖ）を格納するためのレジスタのビット数を拡張することなく１２ビットに固定し、２次元逆離散コサイン変換の精度をさらに高くすることができる。
【００４６】
また、上記実施の形態では１ビットのモードフラグＭＦを使用しているが、２ビット又はそれ以上のモードフラグを使用してもよい。たとえば２ビットのモードフラグを使用すれば４通りのモードを実現できるので、大きいか否かの判断基準となる数値を３通り設定することができる。
【００４７】
また、復号装置１０の全部をハードウエアで構成してもよいが、全部又は一部をソフトウエアで構成してもよい。
【００４８】
また、上記実施の形態では本発明はＩＤＣＴに適用されているが、ＤＣＴその他の直交変換及び逆直交変換にも適用される。また、本発明は小数の丸め誤差を累積することになる積和演算に適用されるのが好ましいが、特にそれに限定されない。
【００４９】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【産業上の利用可能性】
【００５０】
本発明による動的小数点方式、動的小数点数演算方法、並びに２次元逆離散コサイン変換方法及びその装置は、あらゆる２進演算に利用可能であるが、特に圧縮画像の復号器に利用可能である。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施の形態による復号装置の構成を示す機能ブロック図である。
【図２】図１に示した復号装置及び外部ＲＡＭの構成を示す機能ブロック図である。
【図３】図２中の１次元離散コサイン変換を行列で表した数式である。
【図４】図２中の１次元離散コサイン変換で得られるテンポラリデータの構成を示す図である。
【図５】図２中のリミット／ラウンドの処理を示す概念図である。
【図６】図５に示したリミット／ラウンドの処理のフロー図である。
【図７】図１中の飽和処理を示す概念図である。
【符号の説明】
【００５２】
１０  復号装置
１２  量子化部
１４  飽和処理部
１６  ＩＤＣＴ部
１８，２０  １次元ＩＤＣＴ部
２４  リミット／ラウンド部
２６  外部ＲＡＭ
ＭＦ  モードフラグ
【図１】
2005157832.tif 000005
【図２】
2005157832.tif 000006
【図３】
2005157832.tif 000007
【図４】
2005157832.tif 000008
【図５】
2005157832.tif 000009
【図６】
2005157832.tif 000010
【図７】
2005157832.tif 000011
【手続補正書】
【提出日】平成15年12月4日(2003.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記(ｉ＋ｊ)ビットの整数と(ｋ−ｉ)ビットの小数とをメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを前記メモリに登録するステップとを備えたことを特徴とする動的小数点方式。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】
少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値を算出するステップと、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記(ｉ＋ｊ)ビットの整数と(ｋ−ｉ)ビットの小数とをメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを前記メモリに登録するステップと、
前記メモリから数値を順次読み出してその数値に所定の数値を乗算し、その積を累算する積和演算ステップとを備えたことを特徴とする動的小数点演算方法。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項６
【補正方法】変更
【補正の内容】
【請求項６】
入力データを１次元逆離散コサイン変換して少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴステップと、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記(ｉ＋ｊ)ビットの整数と(ｋ−ｉ)ビットの小数とを第２のテンポラリデータとしてメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを第２のテンポラリデータとして前記メモリに登録するステップと、
前記メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴステップとを備えたことを特徴とする２次元逆離散コサイン変換方法。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
入力データを１次元逆離散コサイン変換して少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴ手段と、
前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断する手段と、
判断の結果、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき前記小数の下位ｉビットを除き前記(ｉ＋ｊ)ビットの整数と(ｋ−ｉ)ビットの小数とを第２のテンポラリデータとしてメモリに登録し、前記数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき前記整数の上位ｉビットを除きｊビットの整数と前記ｋビットの小数とを第２のテンポラリデータとして前記メモリに登録する手段と、
前記メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴ手段とを備えたことを特徴とする２次元逆離散コサイン変換装置。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
本発明による動的小数点方式は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除き（ｉ＋ｊ）ビットの整数と（ｋ−ｉ）ビットの小数とをメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とをメモリに登録するステップとを備える。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
この動的小数点方式では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用に（ｉ＋ｊ）ビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、浮動小数点方式よりも低いが、固定小数点方式よりも高い演算精度を確保することができる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
本発明による動的小数点数演算方法は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む数値を算出するステップと、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除き（ｉ＋ｊ）ビットの整数と（ｋ−ｉ）ビットの小数とをメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とをメモリに登録するステップと、メモリから数値を順次読み出してその数値に所定の数値を乗算し、その積を累算する積和演算ステップとを備える。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
この動的小数点演算方法では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用に（ｉ＋ｊ）ビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、その数値の積和演算で発生する丸め誤差の累積を小さく抑えることができる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
本発明による２次元逆離散コサイン変換方法は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴステップと、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断するステップと、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除き（ｉ＋ｊ）ビットの整数と（ｋ−ｉ）ビットの小数とを第２のテンポラリデータとしてメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とを第２のテンポラリデータとしてメモリに登録するステップと、メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴステップとを備える。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
本発明による２次元逆離散コサイン変換装置は、少なくとも｛ｉ（≧１）＋ｊ（≧０）｝ビットの整数と少なくともｋ（≧ｉ）ビットの小数とを含む第１のテンポラリデータを算出する第１のＩＤＣＴ手段と、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいか否かを判断する手段と、判断の結果、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きいとき小数の下位ｉビットを除き（ｉ＋ｊ）ビットの整数と（ｋ−ｉ）ビットの小数とを第２のテンポラリデータとしてメモリに登録し、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さいとき整数の上位ｉビットを除きｊビットの整数とｋビットの小数とを第２のテンポラリデータとしてメモリに登録する手段と、メモリから第２のテンポラリデータを順次読み出してその第２のテンポラリデータを１次元逆離散コサイン変換する第２のＩＤＣＴ手段とを備える。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
この２次元逆離散コサイン変換方法及び装置では、数値の絶対値がｊビットで表現可能な整数の最大値よりも大きい場合、整数用に（ｉ＋ｊ）ビットが確保される。一方、数値の絶対値がｊビットで表現可能な整数の最大値よりも小さい場合、整数用にｊビットが確保され、余ったｉビットが小数に割り当てられる。したがって、数値を登録するためのメモリ容量を拡張することなく、数値の精度を高くすることができる。その結果、その数値の１次元離散コサイン変換で発生する丸め誤差の累積を小さく抑え、離散コサイン変換後のデータを元のデータに高い精度で戻すことができる。