(57)【要約】【課題】  量子化処理をより高速に且つ少ない回路規模で行うこと。又、逆量子化データの最大値が設定されている場合に、量子化されたデータに対してより高速にかつ少ない回路規模で逆量子化を行うこと。【解決手段】  逆量子化データが示す値の最大値が予め設められた値となるような量子化データと量子化閾値であって、量子化データをビットシフトすることで、量子化データの偶数倍の量子化値を示すデータを生成する。このビットシフトによる量子化データの偶数倍の量子化値を示すデータと、量子化データを加算することで、量子化データの奇数倍の量子化値を示すデータを生成する。量子化データと量子化閾値とを乗算する。量子化閾値に応じてビットシフト、加算、乗算によるいずれかの演算結果、若しくは量子化データを逆量子化データとして出力する。【選択図】  図１８
2007213590.tif 000002
【特許請求の範囲】
【請求項１】
量子化データに対して逆量子化処理を施すことで逆量子化データを生成する逆量子化装置であって、
前記逆量子化データが示す値の最大値が予め設められた値となるような量子化データと量子化閾値であって、当該量子化データをビットシフトすることで、当該量子化データの偶数倍の量子化値を示すデータを生成するビットシフト手段と、
前記ビットシフト手段による前記量子化データの偶数倍の量子化値を示すデータと、前記量子化データを加算することで、前記量子化データの奇数倍の量子化値を示すデータを生成する加算手段と、
前記量子化データと、前記量子化閾値とを乗算する乗算手段と、
前記量子化閾値に応じて、前記ビットシフト手段、前記加算手段、前記乗算手段のいずれかの演算結果、もしくは前記量子化データを選択して前記逆量子化データとして出力する選択手段と
を備えることを特徴とする逆量子化装置。
【請求項２】
前記量子化閾値は、（前記逆量子化データが示す値の最大値）／（前記量子化データが示す値）で表されることを特徴とする請求項１に記載の逆量子化装置。
【請求項３】
前記選択手段は、
前記量子化閾値が１の場合、前記量子化データを、
前記量子化閾値が２もしくは４の場合、前記ビットシフト手段による演算結果を、
前記量子化閾値が３の場合、前記加算手段による演算結果を、
前記量子化閾値が１，２，３，４のいずれでもない場合、前記乗算手段による演算結果を選択して前記逆量子化データとして出力することを特徴とする請求項１に記載の逆量子化装置。
【請求項４】
更に、前記逆量子化データが示す値の最大値が、予め設められた値とならない量子化データに対して、前記量子化閾値に応じて当該量子化データを補正する量子化データの補正手段を備え、
前記量子化データの補正手段により補正された量子化データは前記乗算手段に入力されることを特徴とする請求項１乃至３のいずれか１項に記載の逆量子化装置。
【請求項５】
前記量子化データの補正手段は、（前記量子化データの値）×（前記量子化閾値）＞（前記逆量子化データの値）、の場合、前記量子化データが示す値を（前記逆量子化データの値）／（前記量子化閾値）よりも小さい数に補正することを特徴とする請求項２に記載の逆量子化装置。
【請求項６】
更に、前記選択手段が出力する逆量子化値が、予め設められた値を越える場合に、当該逆量子化値を補正する補正手段を備えることを特徴とする請求項１に記載の逆量子化装置。
【請求項７】
量子化データに対して逆量子化処理を施すことで逆量子化データを生成する逆量子化方法であって、
前記逆量子化データが示す値の最大値が予め設められた値となるような量子化データと量子化閾値であって、当該量子化データをビットシフトすることで、当該量子化データの偶数倍の量子化値を示すデータを生成するビットシフト工程と、
前記ビットシフト工程による前記量子化データの偶数倍の量子化値を示すデータと、前記量子化データを加算することで、前記量子化データの奇数倍の量子化値を示すデータを生成する加算工程と、
前記量子化データと、前記量子化閾値とを乗算する乗算工程と、
前記量子化閾値に応じて、前記ビットシフト工程、前記加算工程、前記乗算工程のいずれかの演算結果、もしくは前記量子化データを選択して前記逆量子化データとして出力する選択工程と
を備えることを特徴とする逆量子化方法。
【請求項８】
コンピュータに請求項７に記載の逆量子化方法を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを格納したことを特徴とする、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、量子化データに対して逆量子化処理を施すことで逆量子化データを生成する為の技術に関するものである。
【背景技術】
【０００２】
多値画像の圧縮技術として、従来より原画像を複数の画素からなるブロック単位に分割して２次元ＤＣＴ変換を施し、指定された量子化閾値で量子化してハフマン符号化する方法がある。
【０００３】
こうした符号化処理の２次元ＤＣＴ変換をハードウェアで実現しようとした場合、ｎ×ｎ単位に矩形分割された画像入力に対し１次元ＤＣＴ変換を施した後、ｎ×ｎ個の係数を格納する容量を持つ記憶手段に書き込み、転置変換して読み出し、もう一度１次元ＤＣＴ変換を施して結果的に２次元ＤＣＴ変換処理を実現する提案がなされている。
【０００４】
図５は、このような従来の２次元ＤＣＴ変換装置の構成例を示すブロック図である。
【０００５】
５００１は、画像供給システム（不図示）より入力されたｎ個の入力を伝達するためのｎ本の信号線を含み、これらは選択器５００に接続されている。選択器５００は、選択信号線５００５を通じて入力される制御信号に従って、信号線５００１を通じて送られてくるｎ個の入力と、ｎ本の信号線５００４を通して送られてくるｎ個の入力のいずれかを選択し、その選択したｎ個の入力をｎ本の信号線５００２へ出力する。ｎ本の信号線５００２は、選択器５００より１次元ＤＣＴ変換器５０１へと接続される。１次元ＤＣＴ変換器５０１は、信号線５００７を通して入力されるクロック信号、及び信号線５００６を通じて入力される出力タイミング制御信号に応じて、信号線５００２を通じて入力されるｎ個の入力に対して１次元ＤＣＴ変換を行なう。そして、その１次元ＤＣＴ変換したｎ個の係数を、ｎ本の信号線を含む信号線５００３に出力する。
【０００６】
ここで信号線５００３は２系統に分岐されており、一方は図示されない符号化器（量子化器）へ、他方は転置変換器５０２に接続されている。転置変換器５０２は、内部に信号線５００３を通じて入力される係数をｎ×ｎ個分格納する容量を有するブロックメモリを有し、信号線５００３を通じて入力されるＤＣＴ変換係数を、ｎ×ｎ個分、そのブロックメモリに書き込み、転置変換をして読み出し、ロック信号（５００７）及び制御信号（５００８）に応じてｎ個ずつ信号線５００４に出力している。
【０００７】
次に、この図５及び図６のタイミングチャートを用いて従来の２次元ＤＣＴ変換装置全体の動作を説明する。
【０００８】
この例では、ｎ＝８の場合の例を示す。ここでは説明のために、８×８に矩形分割された６４個の各位置と、各位置に対応する番号を図３（ａ）に示す。
【０００９】
また図４（ａ）は、以下説明で使用する水平方向のラスタスキャンのスキャン順を示し、図４（ｂ）は垂直方向のラスタスキャンのスキャン順をそれぞれ示している。
【００１０】
図６（ａ）のタイミングチャートの期間６０１の先頭において、図５における信号線５００１を通じて最初の８個のデータが入力される。これら最初の８個のデータは、図６では「ｈ０」で表されており、この「ｈ０」と図３（ａ）に示した８×８矩形内における位置番号との対応は、図３（ｂ）のようになる。この図３（ｂ）に示すように、「ｈ０」〜「ｈ７」は、水平方向ラスタスキャン順に、それぞれ８個ずつ選んだデータで構成される。また期間６０１においては、選択器５００の制御信号（５００５）は「１」を示している。この例では、選択器５００の制御信号（５００５）が「０」の場合は信号線５００４側を選択し、「１」の場合は信号線５００１側を選択するものとする。従って、期間６０１においては、信号線５００２には、信号線５００１のデータ、即ち「ｈ０」が出力される。
【００１１】
同様に、期間６０２〜期間６０７の各先頭において、信号線５００１を通じて「ｈ１」〜「ｈ７」のデータが選択器５００に入力され、制御信号（５００５）は「１」であるため、「ｈ１」〜「ｈ７」が信号線５００２に出力される。選択器５００の制御信号（５００５）は、期間６０１〜期間６０８においては「１」を表している。従って、期間６０１〜期間６０８においては、選択器５００は信号線５００１の値を選択して信号線５００２に出力する。
【００１２】
この期間６０１において、選択器５００より出力された「ｈ０」は、信号線５００２を通じて１次元ＤＣＴ変換器５０１に入力される。この例では、１次元ＤＣＴ変換器５０１は、制御信号（５００６）の値が「１」のときに、クロック信号（５００７）の立ち上がりに同期して、変換された係数を出力するものとする。
【００１３】
図６（ａ）に示されるように、制御信号（５００６）の値は、期間６０１〜期間６０８及び期間６０９〜期間６１９の各期間の終わりにおいて「１」になる。従って、期間６０１において、１次元ＤＣＴ変換器５０１に入力されたデータ「ｈ０」に対して１次元ＤＣＴ変換が施され、制御信号（５００６）及びクロック信号（５００７）に応じて、期間６０２の先頭において、その変換係数が信号線５００３に出力される。
【００１４】
以下同様に、期間６０２〜期間６０８の期間の各先頭において、１次元ＤＣＴ変換器５０１に入力されたデータ「ｈ１」〜「ｈ７」は、１次元ＤＣＴ変換されて、それぞれ期間６０３〜期間６０９の各期間の先頭において信号線５００３に出力される。
【００１５】
期間６０２〜期間６０９の各期間の先頭において、１次元ＤＣＴ変換器５０１より信号線５００３に出力されたデータ「ｈ０」〜「ｈ７」は、転置変換するべく転置変換器５０２に入力され、６４個分のデータを格納する容量を持つ内部ブロックメモリに順次書き込まれていく。この内部ブロックメモリは、クロック信号（５００７）に同期して、書き込み又は読み出しが行なわれるものとする。また転置変換器５０２は、制御信号（５００８）の値が「１」の時にクロック信号（５００７）の立ち上がりに同期して出力する。
【００１６】
こうして、データ「ｈ０」〜「ｈ７」が転置変換器５０２の内部ブロックメモリに全て書き込まれた後、垂直方向のラスタスキャン順に読み出しが行なわれ、制御信号（５００８）及びクロック信号（５００７）に応じて８個ずつ出力される。こうして出力される８個のデータは、図６（ａ）において、「ｖ０」〜「ｖ７」で表わされている。これら「ｖ０」〜「ｖ７」と、図３（ａ）に示した８×８矩形内における位置番号との対応は図３（ｃ）のようになる。この図３（ｃ）に示されるように、「ｖ０」〜「ｖ７」は、垂直方向ラスタスキャン順に８個ずつ選んだデータで構成される。
【００１７】
また、制御信号（５００８）は、図６（ａ）のように期間６０９〜期間６１６の各期間の最後において「１」になる。従って、データ「ｖ０」〜「ｖ７」は、期間６１０〜期間６１７の各期間の先頭において順次信号線５００４に出力されて選択器５００に送られる。
【００１８】
ここで、期間６０９の先頭において、１次元ＤＣＴ変換器５０１より転置変換器５０２へ、信号線５００３を通じて入力された「ｈ７」に含まれる８個のデータと、図３（ａ）に示した８×８矩形内における位置番号との対応は、図３（ｃ）に示されるように、「５６，５７，５８，５９，６０，６１，６２，６３」である。
【００１９】
一方、期間６１０の先頭において、転置変換器５０２より選択器５００へ信号線５００４を通じて出力される「ｖ０」に含まれる８個のデータと、図３（ａ）に示した、８×８矩形内における位置番号との対応は、図３（ｃ）に示されるように、「０，８，１６，２４，３２，４０，４８，５６」である。つまり、「ｈ７」と「ｖ０」とを構成するデータにおいては、図３（ａ）に示した８×８矩形内における位置番号５６が重複している。期間６０９の先頭において１次元DCT変換器５０１より出力された「ｈ７」の要素である位置番号５６のデータを、RAMに入力して同一クロックサイクルで読み出すためには、該RAMにいくつかの機能が備わっていることが条件として要求される。該条件とは、アドレス入力に対して該アドレスに対応する読み出し値が同一クロックサイクル内に出力されること、即ち非同期式RAMであること、かつ、あるアドレスにデータの書き込みを行ない、更に該書き込んだデータを同一クロックサイクル内に読み出すことが可能なRAMであること、である。しかしながら、近年のLSIにおけるクロック周波数はますます増加する傾向にあり、非同期式RAMはそうしたシステムの中で使用するには不利であることから、同期式RAMを使用するのが一般的になってきている。また、上記したように書き込んだ値を同一クロックサイクル内に読み出すことが可能なRAMは特殊であり、全てのRAMがこの機能を備えているわけではない。特に、様々なプロセス上で実装可能な回路を構成するためには、こうした特殊なRAMを使用するべきではないといえる。従って、使用するRAMとしては一般的な同期式RAMを想定することが必要になってきている。このことは、上記条件を満たしたRAMを使用しない限り、「ｈ７」の転置変換器５０２への入力と、「ｖ０」の転置変換器５０２からの出力とを同一クロックサイクル内に行なうことができないことを示している。
【００２０】
そのため、「ｖ０」の転置変換器５０２からの出力は、本例に示したように、「ｈ７」の転置変換器５０２への入力から１クロックサイクルずらさなければならない。期間６０８〜期間６１０の更なる詳細な動きを図６（ｂ）に示した。
【００２１】
図６（ｂ）では、図６（ａ）では図示していないクロック信号（５００７）も合わせて示している。
【００２２】
この図において、転置変換が施されたデータ「ｖ０」〜「ｖ７」は、信号線５００４を通じて選択器５００へ入力される。また制御信号（５００５）は、２回目の１次元ＤＣＴ変換を施すべく、期間６１０の先頭において信号線５００４側を選択するように「０」に切り替わる。従って、期間６１０〜期間６１７の各期間の先頭において、データ「ｖ０」〜「ｖ７」が順次、選択器５００より信号線５００２へ出力されて１次元ＤＣＴ変換器５０１へ入力される。
【００２３】
こうして１次元ＤＣＴ変換器５０１へ入力されたデータ「ｖ０」〜「ｖ７」に対して、１次元ＤＣＴ変換器５０１によって２回目の１次元ＤＣＴ変換が施され、制御信号（５００６）に従って、期間６１１〜期間６１８の各期間の先頭において順次、信号線５００３へ出力される。これら期間６１１〜期間６１８の各期間の先頭において順次出力されたデータは、既に説明したように、１次元ＤＣＴ変換が転置変換を挟んで２回行なわれたものであり、結果的に２次元ＤＣＴ変換された結果と等価となる。
【００２４】
続いて、次の８×８矩形ブロックのデータを受け取るため、制御信号（５００５）は信号線５００１側を選択すべく期間６１８の先頭において「１」に切り替わる。この期間６１８の先頭において、次の８×８矩形ブロックの最初の８個のデータ「ｈ０」が、不図示の画像供給システムより信号線５００１を通じて選択器５００に入力される。以下、同様にして順次８×８矩形ブロックの単位でＤＣＴ変換を施していく。
【００２５】
また従来、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、この直交変換処理によって得られた変換係数を所定のスキャン順に並べ替え、並べ替えられた変換係数を所定の量子化閾値を用いて量子化処理を施し、符号化する符号化装置において、回路規模の増大を抑えつつ処理の高速化を図るためにいくつかの提案がなされている。特に、量子化処理部の回路構成において、回路規模の大きい除算器の使用効率を高めるために、量子化処理に先んじて、直交変換された係数と、この係数に対応する量子化閾値とをそれぞれ複数組同時に比較し、量子化結果が０（無意係数）になるか否（有意係数）かを判定し、０にならない係数を優先的に除算器に投入する方法が知られている。
【００２６】
図１６に、従来の符号化装置の構成を示す。
【００２７】
直交変換器９８０１は、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、順次ブロックメモリ９８０２へ出力する。この直交変換器９８０１は例えば図５に示した上記２次元ＤＣＴ変換装置である。直交変換器９８０１より出力された直交変換係数は、ブロックメモリ９８０２へと書き込まれ、１ブロック分の直交変換係数が書き込まれた時点で制御装置９８１０の出力する制御信号に従って、２個ずつジグザグスキャン順に読み出される。図１３に、直交変換の単位となるブロックが８×８個の要素で構成される場合におけるジグザグスキャンの順序を示す。
【００２８】
ブロックメモリ９８０２より読み出された２個の係数は、比較器９８０３及び比較器９８０４へとそれぞれ入力される。また同時に、ブロックメモリ９８０２より読み出された２個の係数は、選択器９８０７へも入力される。一方、読み出された２個の係数に対応する２個の量子化閾値が量子化閾値テーブル９８０５より読み出され、それぞれ対応する比較器９８０３及び比較器９８０４へとそれぞれ入力される。また同時に、量子化閾値テーブル９８０５より読み出された２個の量子化閾値は、選択器９８０８へも入力される。比較器９８０３及び比較器９８０４は、それぞれに入力された係数と対応する量子化閾値とを比較し、量子化結果が０になるか否かをそれぞれ判定し、判定結果を出力する。
【００２９】
比較器９８０３及び比較器９８０４より出力された判定結果は、選択信号生成装置９８０６、制御装置９８１０、及びエントロピー符号化部９８１１へとそれぞれ入力される。選択信号生成装置９８０６は、比較器９８０３及び比較器９８０４の出力する判定結果を基に、選択信号を生成する。この選択信号は、比較器９８０３及び比較器９８０４より出力される２つの判定結果より、量子化対象となる２個の係数のうち量子化結果が０にならない方を選択するように生成される信号である。この２個の係数の量子化結果がいずれも０にならないと判定された場合は、この２個の係数をそれぞれ一つずつ時分割で選択するように選択信号が生成される。また、この２個の係数の量子化結果がいずれも０になると判定された場合は、いずれの係数が選択されても結果に変わりはないので、どちらか一方を選択するように選択信号が生成される。
【００３０】
制御装置９８１０は、比較器９８０３及び比較器９８０４の出力する判定結果を基に、ブロックメモリ９８０２からの読み出し制御信号を生成する。該制御信号は、比較器９８０３及び比較器９８０４より出力される２つの判定結果より、量子化対象となる２個の係数の量子化結果のうち少なくともいずれか一方が０になると判定された場合は、次なる２個の係数の読み出しを指示し、いずれも０にならないと判定された場合は、該２個の係数の値を１サイクル保持してその次のサイクルにおいて次なる２個の係数の読み出しを行なうよう、指示する。選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうちいずれか一方を、選択信号生成装置９８０６より出力された選択信号に従って選択し、出力する。同様に、選択器９８０８は量子化閾値テーブル９８０５より出力された２個の量子化閾値のうちいずれか一方を、選択信号生成装置９８０６より出力された選択信号に従って選択し、出力する。選択器９８０７より出力された係数及び選択器８０８より出力された量子化閾値は、除算器９８０９へと入力される。
【００３１】
除算器９８０９は入力された量子化閾値を用いて入力された係数を量子化し、量子化結果を出力する。この量子化結果はエントロピー符号化部９８１１へと入力される。エントロピー符号化部９８１１は、除算器９８０９より出力される量子化係数及び比較器９８０３、比較器９８０４より出力される判定結果を基に、ブロック内における位置情報を得てゼロラン長を計数し、エントロピー符号化を行い、符号化データを出力する。
【００３２】
次に上述の符号化装置の動作の説明を行う。以下、例としてブロックメモリ９８０２より出力される２個の直交変換係数の量子化結果が以下に示すようになる場合について説明する。ここで、（）でくくられた部分がブロックメモリ９８０２より出力される２個の係数のペアを表し、これらがブロックメモリ９８０２より出力される順に並べて表してある。また、「０」は量子化結果が０（無意係数）、「有」は量子化結果が０でない（有意係数）ことを示す。
【００３３】
量子化結果：（有、０）、（有、有）、（０、有）、（有、０）
直交変換器９８０１より出力された直交変換係数が１ブロック分ブロックメモリ９８０２に書き込まれると、制御装置９８１０から読み出し制御信号が出力され、ブロックメモリ９８０２から順次２個ずつ係数の読み出しが開始される。
【００３４】
図１７に、上述の各部における動作のタイミングチャートを示す。期間９９０１で制御装置９８１０より読み出し指示が出力される。ここで、制御装置９８１０の出力する読み出し制御信号は、１が読み出し指示、０が出力ホールド指示を表している。期間９９０２では、ブロックメモリ９８０２より、期間９９０１における読み出し指示信号に従って、最初の２個の係数（有、０）が読み出される。該２個の係数は、量子化閾値テーブル９８０５より読み出された対応する２個の量子化閾値と共に、比較器９８０３及び比較器９８０４へ入力される。比較器９８０３及び比較器９８０４は、入力された２個の係数の量子化結果がそれぞれ有意係数、無意係数になるという判定結果を出力する。ここで、該判定結果は０が無意係数、１が有意係数を表す。
【００３５】
該判定結果は、同じく期間９９０２において選択信号生成装置９８０６及び制御装置９８１０及びエントロピー符号化部９８１１へ入力される。制御装置８１０においては入力された判定結果が、少なくともいずれか一方の係数は０であるという条件にあてはまるので、ブロックメモリ９８０２に対して次なる読み出し指示、つまり１を出力する。同じく期間９９０２において、選択信号生成装置９８０６は２個の係数のうち有意係数の方を選択するよう、選択器９８０７及び選択器９８０８に対して選択信号を出力する。ここでは、該選択信号は、（有、０）の場合１を、（０、有）の場合０を示すものとする。同じく期間９９０２において、選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうち、有意係数の方を選択して出力し、同じく選択器９８０８は選択器９８０７で選択された係数に対応する量子化閾値を選択して出力する。同じく期間９９０２において、選択器９８０７より出力された係数は、選択器９８０８より出力された量子化閾値を用いて除算器９８０９で量子化され、量子化結果が出力される。量子化結果はエントロピー符号化部９８１１へ入力され、エントロピー符号化処理される。
【００３６】
期間９９０３では、制御装置９８１０より期間９９０２に出力された読み出し指示信号に従って、ブロックメモリ９８０２より、次なる２個の係数（有、有）が読み出される。該２個の係数は、量子化閾値テーブル９８０５より読み出された対応する２個の量子化閾値と共に、比較器９８０３及び比較器９８０４へ入力される。比較器９８０３及び比較器９８０４は、該２個の係数の量子化結果がいずれも有意係数になるという判定結果を出力する。該判定結果は、同じく期間９９０３において選択信号生成装置９８０６及び制御装置９８１０及びエントロピー符号化部９８１１へ入力される。制御装置９８１０においては入力された判定結果が、いずれの係数も０でないという条件にあてはまるので、ブロックメモリ９８０２に対して出力ホールド指示、つまり０を出力する。
【００３７】
同じく期間９９０３において、選択信号生成装置９８０６は２個の係数のうちジグザグスキャン順で先の方を選択するよう、選択器９８０７及び選択器９８０８に対して選択信号を出力する。同じく期間９９０３において、選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうち、ジグザグスキャン順で先の方を選択して出力し、同じく選択器９８０８は選択器９８０７で選択された係数に対応する量子化閾値を選択して出力する。同じく期間９９０３において、選択器９８０７より出力された係数は、選択器９８０８より出力された量子化閾値を用いて除算器９８０９で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部９８１１へ入力され、エントロピー符号化処理される。
【００３８】
期間９９０４では、制御装置９８１０より期間９９０３に出力された出力ホールド指示信号に従って、ブロックメモリ９８０２は期間９９０３において出力した２個の係数（有、有）をそのままホールドして出力する。該２個の係数は、量子化閾値テーブル９８０５より読み出された対応する２個の量子化閾値と共に、比較器９８０３及び比較器９８０４へ入力される。比較器９８０３及び比較器９８０４は、該２個の係数の量子化結果がいずれも有意係数になるという判定結果を出力する。該判定結果は、同じく期間９９０４において選択信号生成装置９８０６及び制御装置９８１０及びエントロピー符号化部９８１１へ入力される。制御装置９８１０においては入力された判定結果が、いずれの係数も０でないという条件にあてはまり、かつ該条件が２サイクル続いたので、ブロックメモリ９８０２に対して次なる読み出し指示、つまり１を出力する。一方同じく期間９９０４において、選択信号生成装置９８０６は２個の係数のうちジグザグスキャン順で後の方を選択するよう、選択器９８０７及び選択器９８０８に対して選択信号を出力する。同じく期間９９０４において、選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうち、ジグザグスキャン順で後の方を選択して出力し、同じく選択器９８０８は選択器９８０７で選択された係数に対応する量子化閾値を選択して出力する。同じく期間９９０４において、選択器９８０７より出力された係数は、選択器９８０８より出力された量子化閾値を用いて除算器９８０９で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部９８１１へ入力され、エントロピー符号化処理される。
【００３９】
期間９９０５では、期間９９０４における読み出し指示信号に従ってブロックメモリ９８０２より、次なる２個の係数（０、有）が読み出される。該２個の係数は、量子化閾値テーブル９８０５より読み出された対応する２個の量子化閾値と共に、比較器９８０３及び比較器９８０４へ入力される。比較器９８０３及び比較器９８０４は、該２個の係数の量子化結果がそれぞれ無意係数、有意係数になるという判定結果を出力する。該判定結果は、同じく期間９９０５において選択信号生成装置９８０６及び制御装置９８１０及びエントロピー符号化部９８１１へ入力される。制御装置９８１０においては入力された判定結果が、少なくともいずれか一方の係数は０であるという条件にあてはまるので、ブロックメモリ９８０２に対して次なる読み出し指示、つまり１を出力する。
【００４０】
同じく期間９０５では、選択信号生成装置９８０６は選択器９８０７及び選択器９８０８に対して、該２個の係数が（０、有）であるので０を出力する。同じく期間９９０５において、選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうち、有意係数の方を選択して出力し、同じく選択器９８０８は選択器９８０７で選択された係数に対応する量子化閾値を選択して出力する。同じく期間９９０５では、選択器９８０７より出力された係数は、選択器９８０８より出力された量子化閾値を用いて除算器９８０９で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部９８１１へ入力され、エントロピー符号化処理される。
【００４１】
期間９９０６では、期間９９０５における読み出し指示信号に従ってブロックメモリ９８０２より、次なる２個の係数（有、０）が読み出される。該２個の係数は、量子化閾値テーブル９８０５より読み出された対応する２個の量子化閾値と共に、比較器９８０３及び比較器９８０４へ入力される。比較器９８０３及び比較器９８０４は、該２個の係数の量子化結果がそれぞれ有意係数、無意係数になるという判定結果を出力する。該判定結果は、同じく期間９９０５において選択信号生成装置９８０６及び制御装置９８１０及びエントロピー符号化部９８１１へ入力される。制御装置９８１０においては入力された判定結果が、少なくともいずれか一方の係数は０であるという条件にあてはまるので、ブロックメモリ９８０２に対して次なる読み出し指示、つまり１を出力する。
【００４２】
同じく期間９９０６では、選択信号生成装置９８０６は選択器９８０７及び選択器９８０８に対して、該２個の係数が（有、０）であるので１を出力する。同じく期間９９０６において、選択器９８０７はブロックメモリ９８０２より出力された２個の係数のうち、有意係数の方を選択して出力し、同じく選択器９８０８は選択器９８０７で選択された係数に対応する量子化閾値を選択して出力する。同じく期間９９０６では、選択器９８０７より出力された係数は、選択器９８０８より出力された量子化閾値を用いて除算器９８０９で量子化され、量子化結果が出力される。また、該量子化結果はエントロピー符号化部９８１１へ入力され、エントロピー符号化処理される。以下、同様にして符号化処理が行われる。
【００４３】
また、符号化されたデータを復号する復号装置において、ある定義域を有するデータをある定義域を有する量子化閾値を用いて量子化した量子化データを、元の定義域のデータに逆量子化する技術として、従来では乗算器及びクランプ回路を用いて実現する方法が知られている。以下、この乗算器及びクランプ回路について説明する。尚、以下の説明では０〜１０２４の定義域を有するデータを１〜２５５の定義域を有する量子化閾値を用いて量子化した量子化データを、該量子化閾値を用いて０〜１０２４の定義域を有するデータに逆量子化する例を示す。図２１に、従来の逆量子化装置の構成例を示す。以下、図２１を参照して従来の逆量子化装置について説明する。
【００４４】
９１３０１は乗算器であり、入力される量子化データに量子化閾値を乗じて乗算結果を得、出力する。入力される量子化データの定義域は０〜１０２４であるので１１ビットで表される。また、量子化閾値の定義域は０〜２５５であるので８ビットで表される。従って乗算器９１３０１のサイズは１１ビット×８ビットとなる。９１３０２はクランプ回路であり、乗算器９１３０１の出力を本来の定義域である１０２４を超えた場合には１０２４にして出力し、超えない場合はそのままの値を出力する。クランプ回路９１３０２の出力が求める逆量子化値となる。
【発明の開示】
【発明が解決しようとする課題】
【００４５】
従来の復号装置、特に逆量子化装置は、乗算器のサイズが入力１１ビット×８ビットであるにもかかわらず、実際の乗算結果はほとんどが０〜１０２４となるはずであり、乗算器の出力としてフル・ビットの１９ビットを要する場合はほとんどない。更に逆量子化結果が本来の定義域である０〜１０２４となることが保証されているシステム内においては、乗算器の出力として１１ビットをオーバーすることはない。このように、乗算器として事実上使われない部分が多く存在することになり、乗算器の使用効率の低下と処理の高速化が図れないという問題があった。
【００４６】
本発明は以上の問題に鑑みてなされたものであり、量子化処理をより高速に且つ少ない回路規模で行うことを目的とする。又本発明の第２の目的としては、逆量子化データの最大値が設定されている場合に、量子化されたデータに対してより高速にかつ少ない回路規模で逆量子化を行うことを目的とする。
【課題を解決するための手段】
【００４７】
本発明の目的を達成するために、例えば本発明の逆量子化装置は以下の構成を備える。
【００４８】
すなわち、量子化データに対して逆量子化処理を施すことで逆量子化データを生成する逆量子化装置であって、
前記逆量子化データが示す値の最大値が予め設められた値となるような量子化データと量子化閾値であって、当該量子化データをビットシフトすることで、当該量子化データの偶数倍の量子化値を示すデータを生成するビットシフト手段と、
前記ビットシフト手段による前記量子化データの偶数倍の量子化値を示すデータと、前記量子化データを加算することで、前記量子化データの奇数倍の量子化値を示すデータを生成する加算手段と、
前記量子化データと、前記量子化閾値とを乗算する乗算手段と、
前記量子化閾値に応じて、前記ビットシフト手段、前記加算手段、前記乗算手段のいずれかの演算結果、もしくは前記量子化データを選択して前記逆量子化データとして出力する選択手段と
を備えることを特徴とする。
【００４９】
本発明の目的を達成するために、例えば本発明の逆量子化方法は以下の構成を備える。
【００５０】
すなわち、量子化データに対して逆量子化処理を施すことで逆量子化データを生成する逆量子化方法であって、
前記逆量子化データが示す値の最大値が予め設められた値となるような量子化データと量子化閾値であって、当該量子化データをビットシフトすることで、当該量子化データの偶数倍の量子化値を示すデータを生成するビットシフト工程と、
前記ビットシフト工程による前記量子化データの偶数倍の量子化値を示すデータと、前記量子化データを加算することで、前記量子化データの奇数倍の量子化値を示すデータを生成する加算工程と、
前記量子化データと、前記量子化閾値とを乗算する乗算工程と、
前記量子化閾値に応じて、前記ビットシフト工程、前記加算工程、前記乗算工程のいずれかの演算結果、もしくは前記量子化データを選択して前記逆量子化データとして出力する選択工程と
を備えることを特徴とする。
【発明の効果】
【００５１】
本発明によって、量子化処理をより高速に且つ少ない回路規模で行うことができる。又、逆量子化データの最大値が設定されている場合に、量子化されたデータに対してより高速に且つ少ない回路規模で逆量子化を行うことができる。
【発明を実施するための最良の形態】
【００５２】
以下、添付図面を参照し、本発明の好適な実施形態について詳細に説明する。
【００５３】
［第１の実施形態］
図１は、本実施形態に係る符号化装置の２次元ＤＣＴ変換装置の構成を示すブロック図である。尚、本実施形態では、入力データの個数を示すｎをｎ＝８とし，ｎ個のうちの選択する所定数ｍの値を「１」とした場合で説明する。
【００５４】
図において、１００１は、不図示の画像供給システムより入力された８個の入力を伝達する８本の信号線を示し、選択器１００へ接続されている。この選択器１００は、信号線１００５を通じて入力される制御信号に従って、信号供給線１００１を通じて送られてくる８個の入力と、８本の信号線より成る信号線１０１０を通じて送られてくる８個の入力（選択器１０３の出力）のいずれかを選択し、その選択した８本の入力信号線よりのデータを信号線１００２に供給している。この信号線１００２は、選択器１００の出力を１次元ＤＣＴ変換器１０１に接続している。
【００５５】
１次元ＤＣＴ変換器１０１は、信号線１００７を通じて入力されるクロック信号及び、信号線１００６を通じて入力される出力タイミング制御信号に応じて、信号線１００２を通じて入力される８個の入力に対して１次元ＤＣＴ変換を行ない、その１次元ＤＣＴ変換した８個の係数を信号線１００３へ出力する。ここで、信号線１００３の８個の信号のうち、最低周波成分のデータが現れる信号線を特に信号線１００３ａとする。
【００５６】
この信号線１００３ａを除く信号線１００３は２系統に分岐され、一方は量子化器（図８の８１）へ、他方は転置変換器１０２に接続されている。信号線１００３ａは、更に３系統に分岐され、一つは量子化器（図８の８１）へ、一つは転置変換器１０２へ、もう一つは選択器１０３へ接続されている。
【００５７】
転置変換器１０２は、信号線１００３を通じて入力される係数を８×８個分格納する容量を持つブロックメモリを内部に有し、その信号線１００３を通じて入力される係数を（８×８−１）個分、そのブロックメモリに書き込む。その後、そのデータに対して転置変換を施して読み出し、クロック信号（１００７）及び信号線１００８を通して入力される制御信号に応じて、８個ずつ８本の信号線１００４へ出力する。この信号線１００４のうち、最高周波成分のデータが現れる信号線を、特に信号線１００４ａとする。
【００５８】
選択器１０３は、信号線１００９を通じて入力される制御信号に従って、信号線１００４を通じて転置変換器１０２から送られてくる８個のデータ及び、信号線１００３ａを通じて送られてくる最低周波成分のデータのうち８個を選択して、８本の信号線１０１０へ出力する。この信号線１０１０のうち、最高周波成分のデータが現れる信号線を、特に信号線１０１０ａとする。
【００５９】
本実施形態では、選択器１０３は、内部にマルチプレクサ１０３ａを有し、このマルチプレクサ１０３ａは、制御信号（１００９）に従って、信号線１００４ａを通じて送られてくる最高周波成分のデータと、信号線１００３ａを通じて送られてくる最低周波成分のデータのいずれかを選択し、その選択したデータを信号線１０１０ａへ出力する。また選択器１０３は、信号線１００４のうち信号線１００４ａを除く信号をそのまま、信号線１０１０ａを除く７本の信号線１０１０に対して出力する。
【００６０】
次に、この図１、及び図２（ａ），（ｂ）のタイミングチャートを用いて全体の動作を説明する。
【００６１】
図２（ａ），（ｂ）における、「ｈ０」〜「ｈ７」，「ｖ０」〜「ｖ７」の表す意味は、従来例における説明で使用した図３（ａ）〜（ｃ）を参照されたい。また、図２（ａ），（ｂ）における、１００３ａ，１００４ａ及び１０１０ａの欄に示された各数字は、図３（ａ）に示された８×８矩形ブロック内における位置番号に対応している。
【００６２】
図２（ａ）のタイミングチャートの期間２０１の先頭において、信号線１００１を通じて最初の８個のデータが入力される。この最初の８個のデータは、図２（ａ）では「ｈ０」で表されており、この「ｈ０」と図３（ａ）に示した８×８矩形ブロック内における位置番号との対応は、図３（ｂ）のようになる。
【００６３】
図３（ｂ）に示されるように、「ｈ０」〜「ｈ７」のそれぞれは、水平方向ラスタスキャン順に８個ずつ選んだデータで構成される。また同じく期間２０１においては、選択器１００の制御信号（１００５）は、図２（ａ）で、１００５において「１」を示している。
【００６４】
本実施形態では、選択器１００の制御信号（１００５）が「０」の場合は転置結果である信号線１０１０の信号を選択し、「１」の場合は、信号線１００１の信号を選択するものとする。従って期間２０１においては、信号線１００２には、信号線１００１のデータ、即ち「ｈ０」が現れる。
【００６５】
同様に、期間２０２〜期間２０８の各先頭において、信号線１００１を通じて「ｈ１」〜「ｈ７」のデータが選択器１００に入力され、制御信号（１００５）に従って、このデータ「ｈ１」〜「ｈ７」が信号線１００２に出力され、１次元ＤＣＴ変換器１０１に供給される。この時、制御信号（１００５）は期間２０１〜期間２０８においては「１」を表している。従って、期間２０１〜期間２０８においては、選択器１００は信号線１００１のデータを選択して信号線１００２に出力する。
【００６６】
この期間２０１において、選択器１００より出力された「ｈ０」は、信号線１００２を通じて１次元ＤＣＴ変換器１０１へ入力される。本実施形態では、１次元ＤＣＴ変換器１０１は、制御信号（１００６）の値が「１」のときに、クロック信号（１００７）の立ち上がりに同期して、その変換した係数を出力するものとする。
【００６７】
図２（ａ）に示されるように、制御信号（１００６）の値は、期間２０１〜期間２１８の各期間の終わりにおいて「１」になる。こうして期間２０１において、１次元ＤＣＴ変換器１０１に入力されたデータ「ｈ０」に対して１次元ＤＣＴ変換が施され、制御信号（１００６）及びクロック信号（１００７）に応じて、期間２０２の先頭において変換係数が信号線１００３に出力される。
【００６８】
以下同様に、期間２０２〜期間２０８の期間の各先頭において、１次元ＤＣＴ変換器１０１に入力されたデータ「ｈ１」〜「ｈ７」は、１次元ＤＣＴ変換されて、それぞれ期間２０３〜期間２０９の各期間の先頭において、信号線１００３へ出力される。また、特に信号線１００３ａへ出力される値（最低周波数）は、期間２０２〜期間２０９の各期間の先頭において図２（ａ）に示したようになる。
【００６９】
これら期間２０２〜期間２０９の各期間の先頭において、１次元ＤＣＴ変換器１０１より信号線１００３に出力されたデータ「ｈ０」〜「ｈ７」は、転置変換するべく転置変換器１０２に入力され、６４個分のデータを格納する容量を持つ転置変換器１０２内のブロックメモリに順次書き込まれていく。但し、図３（ａ）で示される８×８矩形ブロック内の位置番号５６に対応するデータ（以下、単に位置番号５６に対応するデータとする）に関しては、書き込みは行われないように制御される。この内部ブロックメモリは、クロック信号（１００７）に同期して書き込み又は読み出しが行なわれるものとする。また、転置変換器１０２は、制御信号（１００８）の値が「１」のときにクロック信号（１００７）の立ち上がりに同期して出力が行われるものとする。
【００７０】
こうして、位置番号５６に対応するデータを除くデータ「ｈ０」〜「ｈ７」が転置変換器１０２の内部ブロックメモリに書き込まれ、垂直方向のラスタスキャン順に読み出しが行なわれ、制御信号（１００８）及びクロック信号（１００７）に応じて８個ずつ出力される。こうして出力される８個のデータは、図２（ａ）においては、「ｖ０'」，「ｖ１」〜「ｖ７」で表される。ここで「ｖ０'」は、図３（ａ）で示される８×８矩形ブロック内の位置番号に対応して表すと、「０，８，１６，２４，３２，４０，４８，ｘｘ」のデータを含む。ここで、位置番号５６に対応するデータが除かれており、ドント・ケア、即ち、何であってもよい値を表す「ｘｘ」で示されている。
【００７１】
このとき制御信号（１００８）は、図２（ａ）のように、期間２０８〜期間２１５の各期間の最後において「１」になる。従って、データ「ｖ０'」，「ｖ１
」〜「ｖ７」は、期間２０９〜期間２１６の各期間の先頭において順次、転置変換器１０２から信号線１００４に出力される。また特に、信号線１００４ａへ出力される値は、期間２０９〜期間２１６の各期間の先頭において、図２（ａ）に示したようになる。特に、期間２０９の先頭において出力される値（ｘｘ）は、ドント・ケア（ｘｘ）となる。これは図３（ａ）で示される、８×８矩形ブロック内の位置番号５６に対応する値のブロックメモリへの書き込み及び読み出しを行なった場合、その値を期間２０９の先頭において出力することができないことに起因する。
【００７２】
転置変換器１０２から出力される８本の信号線から成る信号線１００４は、選択器１０３に入力されている。とりわけ、信号線１００４ａは、選択器１０３が内部に有するマルチプレクサ１０３ａに入力される。このマルチプレクサ１０３ａは、制御信号（１００９）に応じて、信号線１００４ａを通じて入力される値（最高周波成分）と、信号線１００３ａを通じて入力される値（最低周波成分）とのいずれかを選択し、信号線１０１０ａへ出力する。
【００７３】
本実施形態では、このマルチプレクサ１０３ａは、制御信号（１００９）が「０」のときは信号線１００４ａの値（最高周波成分）を、「１」のときは信号線１００３ａの値（最低周波成分）をそれぞれ信号線１０１０ａに出力するものとする。図２（ａ）に示すように、制御信号（１００９）は期間２０９において「１」となる。従って、期間２０９においては、信号線１０１０ａの値は信号線１００３ａの値、即ち、図３（ａ）で示される８×８矩形ブロック内の位置番号５６に対応する値となる。
【００７４】
その結果、信号線１０１０ａには、期間２０９〜期間２１６の各期間の先頭において、図２（ａ）に示したような値が出力される。また、８個の信号線より成る信号線１０１０のうち、信号線１０１０ａを除く他の７個の信号線は、選択器１０３内で、８個の信号線より成る信号線１００４のうち信号線１００４ａを除く他の７個の信号線に接続されるので、結果的に、信号線１０１０には期間２０９〜期間２１６の各期間の先頭において、図２（ａ）に示したようにそれぞれ「ｖ０」〜「ｖ７」が出力される。
【００７５】
期間２０８〜期間２０９の更なる詳細な動きを図２（ｂ）に示す。図２（ｂ）では、図２（ａ）では図示していない、クロック信号（１００７）も合わせて示している。
【００７６】
こうして、転置変換が施されたデータ「ｖ０」〜「ｖ７」は、信号線１０１０を通じて選択器１００へ入力される。また制御信号（１００５）は、２回目の１次元ＤＣＴ変換を施すべく、期間２０９の先頭において、信号線１０１０側を選択するように「０」に切り替わる。従って、期間２０９〜期間２１６の各期間の先頭において、データ「ｖ０」〜「ｖ７」が順次、選択器１００より信号線１００２へ出力されて１次元ＤＣＴ変換器１０１へ入力される。こうして１次元ＤＣＴ変換器１０１に入力されたデータ「ｖ０」〜「ｖ７」に対して、１次元ＤＣＴ変換器１０１によって２回目の１次元ＤＣＴ変換が施される。この結果は、制御信号（１００６）に従って、期間２１０〜期間２１７の各期間の先頭において順次、信号線１００３へ出力される。これら期間２１０〜期間２１７の各期間の先頭において順次出力されたデータは、既に説明したように、１次元ＤＣＴ変換を、転置変換を挟んで２回実行したものであり、結果的に２次元ＤＣＴ変換された結果と等価となる。
【００７７】
続いて、次なる８×８矩形ブロックのデータを受け取るため、制御信号（１００５）は信号線１００１側を選択すべく、期間２１７の先頭において「１」に切り替わる。
【００７８】
期間２１７の先頭において、次なる８×８の矩形ブロックの最初の８個のデータ「ｈ０」が、画像供給システム（不図示）より信号線１００１を通じて選択器１００へ入力される。以下、同様にして、順次８×８矩形ブロックの単位でＤＣＴ変換を実行していく。
【００７９】
図７は、本実施形態に係る符号化装置における２次元のＤＣＴ変換を説明するフローチャートである。
【００８０】
まずステップＳ１で、ｎ×ｎ個のデータからなる画像データを入力し、それを１次元ＤＣＴ変換器１０１に出力して１次元のＤＣＴ変換を実行する（ステップＳ２）。次に、この１次元ＤＣＴ変換の結果を転置変換器１０２に出力して、その内部メモリに記憶する（ステップＳ３）。そして転置変換器１０２により、ｎ×ｎのブロックを転置変換する（ステップＳ４）。次にステップＳ５に進み、１次元ＤＣＴのｍ個のデータと、転置した（ｎ−ｍ）個のデータとを組合わせ、それに対して１次元ＤＣＴを実行する。これにより、２次元ＤＣＴの演算結果が得られ、その結果をステップＳ６で出力する。
【００８１】
図８は本実施形態に係る符号化装置の構成を示すブロック図である。
【００８２】
図において、８０は２次元ＤＣＴ変換器で、これは前述した図１のような構成を備えている。８１は量子化器で、２次元ＤＣＴ変換器８０で変換された係数のそれぞれを、予め定められた量子化ステップに従って量子化している。８２はエントロピー符号化器で、量子化器８１で量子化された値を基にエントロピー符号化を実行している。
【００８３】
前述した従来例の構成によれば、８×８の矩形ブロックを２次元ＤＣＴ変換処理するのに必要なクロックサイクル数は６５サイクルである。これに対し前述した実施の形態の構成によれば、８×８の矩形ブロックを２次元ＤＣＴ変換処理するのに必要なクロックサイクル数は６４サイクルとなり、従来と比べて、８×８の矩形ブロック毎に、１サイクルだけ処理時間を短縮することができる。
【００８４】
尚、本実施形態では、直交変換の一例として２次元のＤＣＴ（離散コサイン変換）を行う場合を例にして説明したが、これに限定されるものでなく、例えば２次元の離散ウエーブレット変換、アダマール変換等の場合にも適用できる。
【００８５】
［第２の実施形態］
上述の通り、画像の圧縮符号化を行うためには、画像データに対して直交変換を行った後、直交変換による変換係数に対して量子化を行う必要がある。この圧縮符号化処理を従来のものよりもより高速に行うためには、各処理の高速化を行う必要があるが、直交変換に関しては上述の通り、第１の実施形態により従来のものよりもより高速に行うことができる。そこで本実施形態では、この直交変換の後段の処理である量子化処理を従来のものよりもより高速に行う量子化方法について説明する。なお本実施形態に係る量子化を行う装置は第１の実施形態に係る２次元ＤＣＴ変換装置と共に用いることに限定されるものではない。
【００８６】
図９に本実施形態における符号化装置の構成を示す。また、直交変換の単位ブロックは８×８の要素により構成されているものとする。
【００８７】
直交変換器９１０１は、複数画素で構成されるブロック単位に分割された画像データを、分割されたブロック単位に直交変換処理を施し、直交変換された係数を順次２個ずつ出力する。この直交変換として例えばＤＣＴ（離散コサイン変換）等が挙げられ、この場合、直交変換器９１０１として第１の実施形態に係る２次元ＤＣＴ変換装置を用いてもよい。
【００８８】
直交変換器９１０１から出力された２個の係数は、ブロックメモリ９１０３、比較器９１０４、及び比較器９１０５へ入力される。直交変換器９１０１より出力された直交変換係数は、ブロックメモリ９１０３へと２個ずつ１ブロック分を単位として書き込まれ、１ブロック分の直交変換係数が書き込まれた時点でアドレス生成装置９１０７の出力する読み出しアドレスに従って、１個ずつジグザグスキャン順に読み出される。ブロックメモリ９１０３より読み出された係数は、除算器９１０９へ入力される。また同時に、直交変換器９１０１より出力された２個の係数は比較器９１０４及び比較器９１０５にそれぞれ入力され、比較器９１０４及び比較器９１０５は量子化閾値テーブル９１０２より読み出された２個の量子化閾値とを比較し、量子化結果が０になるか否かをそれぞれ判定し、該判定結果を出力する。
【００８９】
量子化閾値テーブル９１０２は、同時にアクセス可能な２つのＲＡＭを含み、一方のＲＡＭ（アドレス）からは、比較器９１０４及び比較器９１０５へ入力される係数に対応する２個の量子化閾値が読み出され、他方のＲＡＭ（アドレス）からは、除算器９１０９へ入力される係数に対応する量子化閾値が読み出される。判定結果保持装置９１０６は、比較器９１０４及び比較器９１０５より出力される判定結果を順次受け取り、１ブロック分の判定結果を保持する。判定結果は例えば、判定された係数の量子化結果が０（無意係数）になるのであれば０、０にならない（有意係数）のであれば１で表す。判定結果保持装置９１０６に保持された１ブロック分の判定結果は、アドレス生成装置９１０７及びデコーダ９１０８へと出力される。
【００９０】
アドレス生成装置９１０７は、判定結果保持装置９１０６に保持された１ブロック分の判定結果をもとに、ブロックメモリ９１０３からの読み出しアドレスを生成する。読み出しアドレスの生成方法は例えば、１ブロックの係数のうち有意係数が格納されているアドレスのみを１サイクルずつ順次ジグザグスキャン順に生成する。生成した読み出しアドレスはブロックメモリ９１０３に出力し、ブロックメモリ９１０３は入力した読み出しアドレスに格納された係数、即ち有意係数を出力する。そして、ブロックメモリ９３０３が最後の有意係数を出力した時点で当該ブロックの読み出し処理を終了させる。但し直流成分については有意係数であるなしにかかわらず常に読み出すようにする。
【００９１】
デコーダ９１０８は、判定結果保持装置９１０６に保持された１ブロック分の判定結果をもとに、ブロックメモリ９１０３から読み出される係数の、ブロック内における位置情報を生成し、出力する。該位置情報は例えば、アドレス生成装置９１０７に対応して、１ブロックの係数のうち有意係数のみを１サイクルずつ順次ジグザグスキャン順に生成させるようにする。但し直流成分については有意係数であるなしにかかわらず常に生成させるようにする。また、該位置情報の内容として好適な例としては、直流成分については直交変換器９１０１が直交変換処理を行なう単位ブロックの画素数から１を減じた値、即ち本実施形態においては単位ブロックの画素数が８×８＝６４であるので、６３なる値を位置情報とする。交流成分については、ジグザグスキャン順で一つ前の有意係数と注目している有意係数との間にある無意係数の個数を位置情報とする。但し、ジグザグスキャン順で直流成分の次の最初の有意係数については、該直流成分との間にある無意係数の個数を位置情報とする。
【００９２】
このように位置情報を生成させた場合に、交流成分の有意係数に対応する位置情報は、単位ブロックの画素数から２を減じた値、即ち本実施形態においては６２なる値が最大値となる。直流成分に対応する位置情報に６３を割り当てているのはこのためであり、交流成分に対応する位置情報のとりうる値の範囲外の値を割り当てることにより、それが直流成分であることの識別が可能となり、また、位置情報を表現するのに要するビット数を最小限に抑えることが可能となる。もちろん、６３以外の値を割り当てても他の交流成分に対応する位置情報の取りうる値の範囲外であれば差し支えない。直流成分であることを識別することは、直交変換の単位ブロックの境界を知るために必要である。後段のエントロピー符号化部９１１０においては、直流成分を受け取ることによって直前に受け取った係数が、直交変換の単位ブロック内における最後の有意係数であったことが判別できる。また、このように位置情報を生成することによって、ゼロランレングス符号化を行なうために有効な情報となる。
【００９３】
以下、図１４を用いて該位置情報生成の例を示す。図１４は、直交変換の単位ブロックが８×８の要素から構成される場合の、単位ブロック内の係数の量子化結果の分布の例を表したものである。ここで、”有”は有意係数を、”０”は無意係数を表す。まず、最初に処理されるべき直流成分に対応する位置情報は、６３となる。次にジグザグスキャン順に数えて２番目の有意係数に対応する位置情報は、直流成分との間に無意係数が存在しないので、０となる。次にジグザグスキャン順に数えて３番目の有意係数に対応する位置情報は、一つ前の有意係数との間に無意係数が存在しないので、０となる。以下、ジグザグスキャン順に数えて１０個目までの有意係数に対応する位置情報は、それぞれ直前の有意係数との間に無意係数が存在しないので、それぞれ０となる。ジグザグスキャン順に数えて１１個目の有意係数に対応する位置情報は、一つ前の有意係数との間に２個の無意係数が存在するので、２となる。以下、同様に位置情報を生成させると、ジグザグスキャン順に数えて１２個目以降の有意係数に対応する位置情報はそれぞれ、０，１，２，５，０，０，１０，１３となる。
【００９４】
デコーダ９１０８より出力される位置情報は、エントロピー符号化部９１１０へ入力される。除算器９１０９は、ブロックメモリ９１０３より出力される係数を、量子化閾値テーブル９１０２より出力される対応する量子化閾値を用いて順次量子化し、エントロピー符号化部９１１０へと出力する。エントロピー符号化部９１１０は、除算器９１０９の出力及びデコーダ９１０８の出力をもとに、順次エントロピー符号化を行なう。
【００９５】
次に、本実施形態における符号化装置の動作について以下説明する。図１０は本実施形態における符号化装置の各部の動作のタイミングチャートである。尚、図中の”有”は有意係数を表し、”０”は無意係数を表している。
【００９６】
期間９２０１において、直交変換器９１０１より直交変換された係数の出力が開始される。期間９２０１における直交変換器９１０１から出力される２個の係数の量子化結果がそれぞれ有意係数、無意係数であるとすると、同じく期間２２０１において比較器２１０４は１を出力し、比較器９１０５は０を出力する。本実施形態では、量子化結果の判定が有意係数ならば判定結果として１、無意係数ならば判定結果として０で示すものとしている。これらの判定結果は判定結果保持装置９１０６へ入力され、保持される。また同じく期間９２０１において直交変換器９１０１より出力された２個の係数は、ブロックメモリ９１０３へと書き込まれる。
【００９７】
次に期間９２０２において次なる２個の係数が直交変換器９１０１より出力される。期間９２０２における直交変換器９１０１から出力される２個の係数の量子化結果がそれぞれ無意係数、無意係数であるとすると、同じく期間９２０２において比較器９１０４、比較器９１０５は共に０を出力する。これらの判定結果は判定結果保持装置９１０６へ入力され、保持される。また同じく期間９２０２において直交変換器９１０１より出力された２個の係数は、ブロックメモリ９１０３へと書き込まれる。以下同様にして１ブロック分の係数が２個ずつ直交変換器９１０１より出力され、ブロックメモリ９１０３へ順次書き込まれる一方、比較器９１０４及び比較器９１０５において判定がなされ、その判定結果が判定結果保持装置９１０６へ出力され、保持される。
【００９８】
期間９２３２において１ブロック分の書き込み期間が終了すると、期間９２３３からブロックメモリ９１０３からの読み出し期間が開始される。期間９２３３において、１ブロック分の判定結果が保持されている判定結果保持装置９１０６の判定結果をもとに、アドレス生成装置９１０７は、ブロックメモリ９１０３に対して読み出しアドレスを生成する。この読み出しアドレスとは、ブロックメモリ９１０３において直流成分、もしくは直流成分以外の有意係数が格納されたアドレスをジグザグスキャン順に列挙したものである。よって期間９２３３において、ブロックメモリ９１０３からアドレス生成装置９１０７により生成された読み出しアドレスを参照して、読み出しアドレスに格納された係数が１個読み出される。
【００９９】
また同じく期間９２３３において、デコーダ９１０８は、判定結果保持装置９１０６の判定結果をもとに、対応する係数の単位ブロック内における位置情報を出力する。また同じく期間９２３３において、除算器９１０９はブロックメモリ９１０３より出力された係数を、量子化閾値テーブル９１０２より出力された対応する量子化閾値を用いて量子化し、量子化結果を出力する。また、エントロピー符号化部９１１０はデコーダ９１０８の出力及び除算器９１０９の出力をもとに符号化を行なう。以下、同様にして単位ブロック内の最後の有意係数の処理が終了するまで、アドレスの生成、読み出し、ブロック内位置情報の生成、除算、エントロピー符号化が行われる。
【０１００】
期間９２５０において最初のブロックの最後の有意係数の処理が終了すると、期間９２５１において、次なるブロックの処理が開始される。すなわち、期間９２５１において直交変換器９１０１より次なるブロックの最初の２個の係数が出力される。
【０１０１】
以下、同様にして直交変換のブロックを単位として処理が繰り返される。ここで注目すべきなのは、ブロック毎におけるブロックメモリからの読み出しの回数が、
１（直流成分の数）＋処理該当単位ブロック内における直流成分以外の有意係数の数
で表されるということである。つまり、有意係数のみ（直流成分は除く）を除算器に投入することができ、除算器の非常に効率的な使用が可能となると共に、量子化処理を従来よりも高速に行うことができる。
【０１０２】
［第３の実施形態］
本実施形態では、第２の実施形態とは異なる構成を備える符号化装置における符号化処理について以下説明する。図１１に本実施形態における符号化装置の構成を示す。図１１に示した符号化装置と図９に示した符号化装置との相違点は、量子化閾値テーブル９３０２から読み出される量子化閾値がブロックメモリ９３０３に出力されるようになった点である。なお、本実施形態においても直交変換器９３０１が行う直交変換として例えばＤＣＴ（離散コサイン変換）等が挙げられ、この場合、直交変換器９３０１として第１の実施形態に係る２次元ＤＣＴ変換装置を用いてもよい。
【０１０３】
図１２に、図１１に示した各部における動作のタイミングチャートを示す。尚、図中の”有”は有意係数を表し、”０”は無意係数を表している。
【０１０４】
期間９４０１において、直交変換器９３０１より直交変換された係数の出力が開始される。期間９４０１における直交変換器９３０１から出力される２個の係数の量子化結果がそれぞれ有意係数、無意係数であるとすると、同じく期間９４０１において比較器９３０４は１を出力し、比較器９３０５は０を出力する。本実施形態でも第２の実施形態と同様に、量子化結果の判定が有意係数ならば判定結果として１、無意係数ならば判定結果として０で示すものとしている。これらの判定結果は判定結果保持装置９３０６へ入力され、保持される。また同じく期間９４０１において直交変換器９３０１より出力された２個の係数は、量子化閾値テーブル９３０２より読み出された対応する２個の量子化閾値と共に、ブロックメモリ９３０３へと書き込まれる。
【０１０５】
次に期間９４０２において次なる２個の係数が直交変換器９３０１より出力される。期間９４０２における直交変換器９３０１から出力される２個の係数の量子化結果がそれぞれ無意係数、無意係数であるとすると、同じく期間９４０２において比較器９３０４、比較器９３０５は共に０を出力する。これらの判定結果は判定結果保持装置９３０６へ入力され、保持される。また同じく期間９４０２において直交変換器９３０１より出力された２個の係数は、量子化閾値テーブル９３０２より読み出された対応する２個の量子化閾値と共に、ブロックメモリ９３０３へと書き込まれる。
【０１０６】
以下同様にして、１ブロック分の係数が２個ずつ直交変換器９３０１より出力され、ブロックメモリ９３０３へ順次書き込まれると共に、対応する量子化閾値が量子化閾値テーブル９３０２より読み込まれ、ブロックメモリ９３０３に順次書き込まれる。一方、比較器９３０４及び比較器９３０５において判定がなされ、その判定結果が判定結果保持装置９３０６へ出力され、保持される。
【０１０７】
期間９４３２において１ブロック分の書き込み期間が終了すると、期間９４３３から読み出し期間が開始される。期間９４３３において、１ブロック分の判定結果が保持されている判定結果保持装置９３０６の判定結果をもとに、アドレス生成装置９３０７は、ブロックメモリに対して読み出しアドレスを生成する。この読み出しアドレスとは、ブロックメモリ９３０３において直流成分、もしくは直流成分以外の有意係数が格納されたアドレス、及び対応する量子化閾値が格納されたアドレスをジグザグスキャン順に列挙したものである。
【０１０８】
同じく期間９４３３において、ブロックメモリ９３０３から、アドレス生成装置９３０７より出力されたアドレスに格納された係数が対応する量子化閾値と共に１ペア読み出される。また同じく期間９４３３において、デコーダ９３０８より、判定結果保持装置９３０６の判定結果をもとに、対応する係数の単位ブロック内における位置情報を出力する。また同じく期間９４３３において、除算器９３０９はブロックメモリ９３０３より出力された係数を、対応する量子化閾値を用いて量子化し、量子化結果を出力する。また、エントロピー符号化部９３１０はデコーダ９３０８の出力及び除算器９３０９の出力をもとに符号化を行なう。以下、同様にして単位ブロック内の最後の有意係数の処理が終了するまで、アドレスの生成、読み出し、ブロック内位置情報の生成、除算、エントロピー符号化が行われる。
【０１０９】
期間９４５０において最初のブロックの最後の有意係数の処理が終了すると、期間９４５１において、次なるブロックの処理が開始される。すなわち、期間９４５１において直交変換器９３０１より次なるブロックの最初の２個の係数が出力される。以下、同様にして直交変換のブロックを単位として処理が繰り返される。
【０１１０】
本実施形態によれば、量子化閾値テーブル９３０２からの量子化閾値の読み出しは１回（比較器９１０４，９１０５による読み出しのみ）だけなので、第２の実施形態（比較器９１０４，９１０５による読み出しと、除算器９１０９による読み出しの２回）よりも符号化処理全体をより高速に行うことができる。
【０１１１】
以上の第２，３の実施形態によれば、回路規模の大きい除算器の数を増やすことなく、符号化処理の高速化が可能となる。例として、上記従来の符号化装置と上記第２，３の実施形態における符号化装置との処理サイクル数の比較について図１４，１５を用いて説明する。
【０１１２】
図１５は、図１４に示す例においてジグザグスキャン順に２個ずつ係数を並べた図である。
【０１１３】
まず、上記従来の符号化装置において、必要とされる処理サイクル数を示す（但し、ブロックメモリに書き込むサイクル数については省略する）。ここで、”有”は有意係数を、”０”は無意係数を表す。判定結果保持装置に同時に投入される２個の係数のペアのうち、（有、有）の数は７、（有、０）もしくは（０、有）の数は５、（０、０）の数は２０であるので、処理サイクル数は以下のようになる。
【０１１４】
７×２＋５＋２０＝３９サイクル
一方、上記第２，３の実施形態における符号化装置では、直流成分以外の有効係数の数が１８であるので、処理サイクル数は以下のようになる。
【０１１５】
１＋１８＝１９サイクル
よって、上記第２、３の実施形態における符号化装置によって、上記例では２０サイクルもの処理時間の低減が可能となる
なお、上記第２，３の実施形態の符号化装置による符号化方法を実行するプログラムは、情報処理装置、例えばパーソナルコンピュータやワークステーションなどに読み込ませることで、この情報処理装置が上記符号化装置として機能することから、上記符号化方法を実行するプログラムも本発明の範疇に含まれることは明らかである。また、このプログラムを格納し、上記情報処理装置に読み込ませるための記憶媒体、例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなども同様である。
【０１１６】
また、第２の実施形態、もしくは第３の実施形態に係る符号化装置（量子化装置）と第１の実施形態に係る符号化装置（２次元ＤＣＴ変換装置）とを１つの装置（これを改めて符号化装置）としてもよい。この場合、この符号化装置は２次元ＤＣＴ変換装置の出力結果である変換係数群に対して量子化装置が量子化を行い、更にエントロピ符号化を行う装置となる。上述の通り、２次元ＤＣＴ変換装置、量子化装置の夫々が従来の夫々よりも高速に処理を行うことができるわけであるから、この符号化装置は、従来の符号化装置よりもより高速に符号化処理を行うことができる。
【０１１７】
［第４の実施形態］
本実施形態では、符号化されたデータを復号する復号装置において、逆量子化処理を行う逆量子化装置について以下、説明する。なお、本実施形態では、０〜１０２４の定義域を有するデータを１〜２５５の定義域を有する量子化閾値を用いて量子化した量子化データを、この量子化閾値を用いて０〜１０２４の定義域を有するデータに逆量子化する例を示す。
【０１１８】
図１９は、量子化閾値の各値に対応する、乗算結果が１０２４を超えない量子化データの最大値と、対応するビット数と、逆量子化に使用する手段を表に表したものである。図１９によると、量子化閾値が５〜１６の範囲にある場合は、（量子化閾値５〜１６が表現可能なビット数）×（１０２４／（５〜１６）が表現可能なビット数）、すなわち、５ビット×８ビットのサイズの乗算器で逆量子化値を得ることができ、量子化閾値が１７〜６４の範囲にある場合は同様に７ビット×６ビットのサイズの乗算器で逆量子化値を得ることができ、量子化閾値が６５〜２５５の範囲にある場合は８ビット×４ビットのサイズの乗算器で逆量子化値を得ることができることがわかる。従って、量子化閾値が５〜２５５の範囲にある場合は高々６ビット×８ビットのサイズの乗算器で逆量子化値を得ることができる。
【０１１９】
また、量子化閾値が１の場合は乗算器を用いずに量子化データがそのまま逆量子化値となる。また、量子化閾値が２及び４の場合は量子化データを２倍、もしくは４倍することで逆量子化値を求めることができるので、量子化データを左に１ビット、もしくは２ビットビットシフトする。すなわち、このビットシフトを行う係数器を用いる。また、量子化閾値が３の場合は量子化データの３倍が逆量子化値となるので、量子化データの値と量子化データの２倍値との和を求める。すなわち、上記係数器（量子化データを左へ１ビットシフトする（２倍にする）係数器）と、この係数器の出力と量子化データとの加算を行う加算器とを用いる。
【０１２０】
図１８に本実施形態における逆量子化装置の構成を示す。同図において９１００１は係数器であり、量子化データを入力とし、出力として量子化データ値の４倍値を出力する。実際にはこの係数器９１００１は２ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。９１００２は係数器であり、量子化データを入力とし、出力として量子化データ値の２倍値を出力する。実際にはこの係数器９１００２は１ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。９１００３は加算器であり、量子化データと係数器９１００２の出力との和を出力する。すなわち、結果として加算器９１００３の出力は量子化データの３倍値と等価である。また、量子化データの下位８ビットは接続切り替え装置９１００４の入力１へと入力され、量子化閾値は接続切り替え装置９１００４の入力２へと入力される。
【０１２１】
接続切り替え装置９１００４は、量子化閾値が１７〜２５５の範囲にある場合は入力１の値を出力２へ、入力２の値を出力１へとそれぞれ出力し、量子化閾値がそれ以外の範囲にある場合は入力１の値を出力１へ、入力２の値を出力２へとそれぞれ出力する。９１００５は８ビット×６ビットのサイズの乗算器であり、８ビットの入力１と６ビットの入力２とをそれぞれ有し、この２つの入力の積を出力する。乗算器９１００５の入力１へは接続切り替え装置９１００４の出力１の出力が入力され、乗算器９１００５の入力２へは接続切り替え装置９１００４の出力２の出力のうち、下位６ビットが入力される。
【０１２２】
係数器９１００１、加算器９１００３、係数器９１００２、乗算器９１００５のそれぞれの出力、及び量子化データは選択器９１００６へと入力され、選択器９１００６は量子化閾値の値に応じてこの５つの入力のうちただ一つを選択して出力する。また、選択器９１００６は上述の説明の通り、量子化閾値が１の場合は量子化データを、２の場合は係数器９１００２の出力を、３の場合は加算器９１００３の出力を、４の場合は係数器９１００１の出力を、それ以外の値の場合は乗算器９１００５の出力を選択して出力することで、選択器９１００６の出力は求める逆量子化値となる。
【０１２３】
上記構成を備える逆量子化装置の動作について、いくつかの例を用いて以下、説明する。まず、量子化閾値が１であり量子化データが８９５である場合について説明する。選択器９１００６において、量子化閾値が１である場合には量子化データの値（すなわち８９５）が選択され、出力されるので逆量子化値として８９５なる値を得る。
【０１２４】
次に、量子化閾値が２であり量子化データが５１２である場合について以下、説明する。量子化データは係数器９１００２において２倍され、１０２４なる値が選択器９１００６へと出力される。また、量子化閾値が２である場合には選択器９１００６では係数器９１００２の出力が選択され、出力されるので逆量子化値として１０２４なる値を得る。
【０１２５】
次に、量子化閾値が３であり量子化データが１９８である場合について以下、説明する。量子化データは係数器９１００２において２倍され、３９６なる値が加算器９１００３へと入力される。一方、加算器９１００３の他の入力として、量子化データ１９８なる値が入力される。加算器９１００３では、３９６と１９８とを加算して５９４なる値を出力する。また、量子化閾値が３である場合には選択器９１００６では加算器９１００３の出力が選択され、出力されるので逆量子化値として５９４なる値を得る。
【０１２６】
次に、量子化閾値が４であり量子化データが２５３である場合について以下、説明する。量子化データは係数器９１００１において４倍され、１０１２なる値が選択器９１００６へと出力される。また、量子化閾値が４である場合には選択器９１００６では係数器９１００１の出力が選択され、出力されるので逆量子化値として１０１２なる値を得る。
【０１２７】
次に、量子化閾値が１３であり量子化データが６８である場合について以下、説明する。量子化データの下位８ビット、つまり６８なる値が接続切り替え装置９１００４の入力１へと入力される。また、量子化閾値１３なる値が接続切り替え装置９１００４の入力２へと入力される。量子化閾値の値は１３であるので上記説明の通り、１７〜２５５の範囲外にある。従って接続切り替え装置９１００４は、入力１の値（すなわち６８）を出力１へ、入力２の値（すなわち１３）を出力２へとそれぞれ出力する。よって、接続切り替え装置９１００４の出力１の値（すなわち６８）は乗算器９１００５に入力され、接続切り替え装置９１００４の出力２の下位６ビットの値（すなわち１３）は乗算器９１００５に入力される。従って乗算器９１００５は出力値として６８×１３＝８８４を出力する。また、選択器９１００６は、量子化閾値が１，２，３，４のいずれにも該当しないので、乗算器９１００５の出力を選択して出力するので、逆量子化値として８８４なる値を得る。
【０１２８】
次に、量子化閾値が８６であり量子化データが９である場合について以下、説明する。量子化データの下位８ビット、つまり９なる値が接続切り替え装置９１００４の入力１へと入力される。また、量子化閾値８６なる値が接続切り替え装置９１００４の入力２へと入力される。量子化閾値の値は８６であるので上記説明の通り、１７〜２５５の範囲内に該当する。従って接続切り替え装置９１００４は、入力１の値（すなわち９）を出力２へ、入力２の値（すなわち８６）を出力１へとそれぞれ出力する。接続切り替え装置９１００４の出力１の値（すなわち８６）が乗算器９１００５に入力され、接続切り替え装置９１００４の出力２の下位６ビットの値（すなわち９）が乗算器９１００５に入力される。従って乗算器９１００５は出力値として８６×９＝７７４を出力する。また、選択器９１００６は、量子化閾値が１，２，３，４のいずれにも該当しないので、乗算器９１００５の出力を選択して出力するので、逆量子化値として７７４なる値を得る。他の値についても同様に処理が行われ、逆量子化値が出力される。
【０１２９】
このように、量子化閾値と量子化データの逆量子化結果が本来の定義域を超えない（本実施形態の場合１０２４を越えない）ことが保証されているシステムにおいては、本実施形態における構成を備える逆量子化装置を用いることが好適である。
【０１３０】
この理由としては、量子化閾値と量子化データの逆量子化結果が本来の定義域を超えないことが保証されている場合、この本来の定義域に応じた量子化データと量子化閾値を用いていることに起因する。
【０１３１】
また、本実施形態により、回路規模的に大きい乗算器のビット・サイズを低減して逆量子化装置を実現できる。また、本実施形態における逆量子化装置によれば、従来８ビット×１１ビットのサイズの乗算器を用いていたところを、８ビット×６ビットのサイズの乗算器と加算器と若干のロジックを用いればよく、大幅に回路規模の削減を図ることができる。また、実行速度の点においても高速化が図れる。
【０１３２】
［第５の実施形態］
本実施形態では、第４の実施形態で説明した逆量子化装置とは異なる構成、及び処理を行う逆量子化装置を示す。図２０に本実施形態における逆量子化装置の構成を示す。
【０１３３】
９１２０１は係数器であり、量子化データを入力とし、４倍値を出力する。実際にはこの係数器９１２０１は２ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。９１２０２は係数器であり、量子化データを入力とし、２倍値を出力する。実際にはこの係数器９１２０２は１ビット左シフトを実現するための配線接続により構成されるので、回路素子を必要としない。９１２０３は加算器であり、量子化データと係数器９１２０２の出力との和を出力する。結果として加算器９１２０３の出力は量子化データの３倍値と等価である。また、量子化データはクランプ回路９１２０４に入力される。
【０１３４】
クランプ回路９１２０４は、量子化閾値が１７〜２５５の範囲にある場合において、入力された量子化データが６３を超える場合は６３を出力し（量子化データの補正）、入力された量子化データが６３を超えない場合は入力された量子化データをそのまま出力する。一方、量子化閾値が１７〜２５５以外の範囲にある場合には、入力された量子化データが２５５を超える場合は２５５を出力し、超えない場合は入力された量子化データをそのまま出力する。クランプ回路９１２０４の出力は接続切り替え装置９１２０５の入力１へと入力され、量子化閾値は接続切り替え装置９１２０５の入力２へと入力される。
【０１３５】
接続切り替え装置９１２０５は、量子化閾値が１７〜２５５の範囲にある場合は入力１の値を出力２へ、入力２の値を出力１へとそれぞれ出力し、量子化閾値がそれ以外の範囲にある場合は入力１の値を出力１へ、入力２の値を出力２へとそれぞれ出力する。９１２０６は８ビット×６ビットのサイズの乗算器であり、８ビットの入力１と６ビットの入力２をそれぞれ有し、この２つの入力の積を出力する。乗算器９１２０６の入力１へは接続切り替え装置９１２０５の出力１の出力が入力され、乗算器９１２０６の入力２へは接続切り替え装置９１２０５の出力２の出力のうち、下位６ビットが入力される。係数器９１２０１、加算器９１２０３、係数器１２０２、及び乗算器１２０６のそれぞれの出力、及び量子化データは選択器９１２０７へと入力され、選択器９１２０７は量子化閾値の値に応じてこの５つの入力のうちただ一つを選択して出力する。
【０１３６】
また、選択器９１２０７は量子化閾値が１の場合は量子化データを、２の場合は係数器９１２０２の出力を、３の場合は加算器９１２０３の出力を、４の場合は係数器９１２０１の出力を、それ以外の値の場合は乗算器９１２０６の出力を選択して出力する。選択器９１２０７の出力はクランプ回路９１２０８へ入力され、クランプ回路９１２０８は選択器９１２０７の出力の値が１０２４を超える場合は１０２４を、超えない場合は選択器９１２０７の出力の値をそのまま出力する。クランプ回路９１２０８の出力は求める逆量子化値となる。
【０１３７】
上記構成を備える逆量子化装置の動作について、いくつかの例を用いて以下、説明する。
【０１３８】
まず、量子化閾値が１であり量子化データが８９５である場合について以下、説明する。選択器９１２０７において、量子化閾値が１である場合には量子化データの値（すなわち８９５）が選択され、出力されるので８９５なる値がクランプ回路９１２０８へと入力される。８９５なる値は１０２４以下であるので、クランプ回路９１２０８は入力をそのまま出力する。従って、逆量子化値として８９５なる値を得る。
【０１３９】
次に、量子化閾値が２であり量子化データが５１３である場合について以下、説明する。量子化データは係数器９１２０２において２倍され、１０２６なる値が選択器９１２０７へと出力される。また、量子化閾値が２である場合には選択器９１２０７では係数器９１２０２の出力が選択され、出力されるので１０２６なる値がクランプ回路９１２０８へと入力される。１０２６なる値は１０２４を超えているので、クランプ回路９１２０８は値として１０２４を出力する。従って、逆量子化値として１０２４なる値を得る。
【０１４０】
次に、量子化閾値が３であり量子化データが１９８である場合について以下、説明する。量子化データは係数器９１２０２において２倍され、３９６なる値が加算器９１２０３へと入力される。一方、加算器９１２０３の他の入力として、量子化データ１９８なる値が入力される。加算器９１２０３では、３９６と１９８とを加算して５９４なる値を出力する。また、量子化閾値が３である場合には選択器９１２０７では加算器９１２０３の出力が選択され、出力されるので５９４なる値がクランプ回路９１２０８へと入力される。５９４なる値は１０２４以下であるので、クランプ回路９１２０８は入力をそのまま出力する。従って、逆量子化値として５９４なる値を得る。
【０１４１】
次に、量子化閾値が４であり量子化データが２５３である場合について以下、説明する。量子化データは係数器９１２０１において４倍され、１０１２なる値が選択器９１２０７へと出力される。また、量子化閾値が４である場合には選択器９１２０７では係数器９１２０１の出力が選択され、出力されるので１０１２なる値がクランプ回路９１２０８へと入力される。１０１２なる値は１０２４以下であるので、クランプ回路９１２０８は入力をそのまま出力する。従って、逆量子化値として１０１２なる値を得る。
【０１４２】
次に、量子化閾値が１４であり量子化データが７３である場合を例として、以下説明する。７３なる値を持つ量子化データはクランプ回路９１２０４へと入力される。また、１４なる値を持つ量子化閾値もクランプ回路９１２０４へと入力される。クランプ回路９１２０４は、量子化閾値が１７〜２５５以外の範囲にありかつ量子化データが２５５を超えていないので、量子化データの値（すなわち７３）をそのまま出力する。クランプ回路９１２０４の出力、つまり７３なる値は接続切り替え装置９１２０５の入力１へと入力される。また、量子化閾値１４なる値が接続切り替え装置９１２０５の入力２へと入力される。量子化閾値の値は１４であるので１７〜２５５の範囲外にある。従って接続切り替え装置９１２０５は、入力１の値（すなわち７３）を出力１へ、入力２の値（すなわち１４）を出力２へとそれぞれ出力する。接続切り替え装置９１２０５の出力１の値（すなわち７３）が乗算器９１２０６に入力され、接続切り替え装置９１２０５の出力２の下位６ビットの値（すなわち１４）が乗算器９１２０６に入力される。従って乗算器９１２０６は出力値として７３×１４＝１０２２を出力する。
【０１４３】
また、選択器９１２０７においては、量子化閾値が１，２，３，４のいずれにも該当しないので、乗算器９１２０６の出力を選択して出力するので１０２２なる値がクランプ回路９１２０８へと入力される。１０２２なる値は１０２４以下であるので、クランプ回路９１２０８は入力をそのまま出力する。従って、逆量子化値として１０２２なる値を得る。
【０１４４】
次に、量子化閾値が６５であり量子化データが６６である場合を例として、以下説明する。６６なる値を持つ量子化データはクランプ回路９１２０４へと入力される。また、６５なる値を持つ量子化閾値もクランプ回路９１２０４へと入力される。クランプ回路９１２０４は、量子化閾値が１７〜２５５の範囲内にありかつ量子化データが６３を超えているので、６３を出力する。クランプ回路９１２０４の出力、つまり６３なる値は接続切り替え装置９１２０５の入力１へと入力される。また、量子化閾値６５なる値が接続切り替え装置９１２０５の入力２へと入力される。量子化閾値の値は６５であるので１７〜２５５の範囲内に該当する。従って接続切り替え装置９１２０５は、入力１の値（すなわち６３）を出力２へ、入力２の値（すなわち６５）を出力１へとそれぞれ出力する。接続切り替え装置９１２０５の出力１の値（すなわち６５）が乗算器９１２０６の入力１に入力され、接続切り替え装置９１２０５の出力２の下位６ビットの値（すなわち６３）が乗算器９１２０６の出力２に入力される。従って乗算器９１２０６は出力値として６５×６３＝４０９５を出力する。
【０１４５】
また、選択器９１２０７においては、量子化閾値が１，２，３，４のいずれにも該当しないので、乗算器９１２０６の出力を選択して出力するので４０９５なる値がクランプ回路９１２０８へと入力される。４０９５なる値は１０２４を超えているので、クランプ回路９１２０８は値として１０２４を出力する。従って、逆量子化値として１０２４なる値を得る。他の値についても同様に処理が行われ、逆量子化値が出力される。
【０１４６】
なお、上記第４，５の実施形態の逆量子化装置による逆量子化方法を実行するプログラムは、情報処理装置、例えばパーソナルコンピュータやワークステーションなどに読み込ませることで、この情報処理装置が上記逆量子化装置として機能することから、上記逆量子化方法を実行するプログラムも本発明の範疇に含まれることは明らかである。また、このプログラムを格納し、上記情報処理装置に読み込ませるための記憶媒体、例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなども同様である。
【０１４７】
［他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１４９】
【図１】本発明の第１の実施形態に係る符号化装置における２次元ＤＣＴ変換装置の構成を説明するブロック図である。
【図２】本発明の第１の実施形態に係る２次元ＤＣＴ変換装置における処理を説明するためのタイミング図である。
【図３】本発明の第１の実施形態における矩形内のデータの位置対応を説明する図である。
【図４】画像のスキャン動作の方向を説明する図である。
【図５】従来の符号化装置における２次元ＤＣＴを行う回路構成を説明するブロック図である。
【図６】従来の符号化装置における処理を説明するためのタイミング図である。
【図７】本発明の第１の実施形態に係る２次元ＤＣＴを行う処理を説明するためのフローチャートである。
【図８】本発明の第１の実施形態に係る符号化装置の構成を示すブロック図である。
【図９】本発明の第２の実施形態における符号化装置の構成を示す図である。
【図１０】本発明の第２の実施形態における符号化装置の各部における動作のタイミングチャートである。
【図１１】本発明の第３の実施形態における符号化装置の構成を示す図である。
【図１２】本発明の第３の実施形態における符号化装置の各部における動作のタイミングチャートである。
【図１３】直交変換の単位となるブロックが８×８個の要素で構成される場合におけるジグザグスキャンの順序を示す図である。
【図１４】直交変換の単位ブロックが８×８の要素から構成される場合の、単位ブロック内の係数の量子化結果の分布の例を示す図である。
【図１５】図１４に示す例においてジグザグスキャン順に２個ずつ係数を並べた様子を示す図である。
【図１６】従来の符号化装置の構成を示す図である。
【図１７】従来の符号化装置の各部における動作のタイミングチャートである。
【図１８】本発明の第４の実施形態における逆量子化装置の構成を示す図である。
【図１９】量子化閾値の各値に対応する乗算結果が１０２４を超えない量子化データの最大値と、対応するビット値と、逆量子化し使用する手段を示す表である。
【図２０】本発明の第５の実施形態における逆量子化装置の構成を示す図である。
【図２１】従来の逆量子化装置の構成を示す図である。
【図１】
2007213590.tif 000003
【図２】
2007213590.tif 000004
【図３】
2007213590.tif 000005
【図４】
2007213590.tif 000006
【図５】
2007213590.tif 000007
【図６】
2007213590.tif 000008
【図７】
2007213590.tif 000009
【図８】
2007213590.tif 000010
【図９】
2007213590.tif 000011
【図１０】
2007213590.tif 000012
【図１１】
2007213590.tif 000013
【図１２】
2007213590.tif 000014
【図１３】
2007213590.tif 000015
【図１４】
2007213590.tif 000016
【図１５】
2007213590.tif 000017
【図１６】
2007213590.tif 000018
【図１７】
2007213590.tif 000019
【図１８】
2007213590.tif 000020
【図１９】
2007213590.tif 000021
【図２０】
2007213590.tif 000022
【図２１】
2007213590.tif 000023