(57)【特許請求の範囲】
【請求項１】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかを用いて固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置であって、
前記固定長符号のそれぞれを、入力符号として取得する入力手段と、
前記入力符号の固定長符号化方法を判定する判定手段と、
前記入力符号を可変長符号に変換する複数の変換手段と、
前記複数の変換手段のうちの何れかが生成した可変長符号を、前記入力符号を可変長符号化した結果として出力する出力手段と、
を備え、
前記複数の変換手段のそれぞれは、対応する固定長符号化方法が予め設定されており、前記入力符号が当該対応する固定長符号化方法によって符号化されている場合に、当該対応する固定長符号化方法によって生成された固定長符号を可変長化する方法として当該変換手段に予め設定された可変長符号化方法を用いて、前記入力符号を可変長符号に変換する
ことを特徴とする情報処理装置。
【請求項２】
前記複数の変換手段のうちの少なくとも１つは、
前記入力符号を復号して復号分割画像を取得する手段と、
前記オリジナル画像において、前記入力符号が示す分割画像の近傍に位置する分割画像の固定長符号であって、前記入力符号と同じ固定長符号化方法で生成された固定長符号を復号して、参照分割画像を取得する手段と、
前記参照分割画像を用いて前記復号分割画像を予測符号化することによって可変長符号化する手段と、
を含む事を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の変換手段のうちの少なくとも１つは、前記入力符号中の所定の値の連続を、当該連続する値の長さを示す値で置き換えることによって可変長符号化を行うことを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかの方法によって固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置であって、
前記固定長符号のそれぞれを入力符号として順次取得する入力手段と、
前記入力符号の固定長符号化方法を判定する判定手段と、
前記オリジナル画像において、前記入力符号が示す分割画像の近傍に位置する分割画像の固定長符号であって、前記入力符号と同じ固定長符号化方法で生成された固定長符号を、当該入力符号に対する対照符号として取得する取得手段と、
前記入力符号と、当該入力符号に対する前記対照符号とを用いて、前記入力符号に対する前記可変長符号を生成する生成手段と、
前記生成手段が生成した可変長符号を、前記入力符号を可変長符号化した結果として出力する出力手段と、
を備えることを特徴とする情報処理装置。
【請求項５】
前記固定長符号は複数のフィールドを含み、
前記生成手段は、前記入力符号が含む前記フィールド内の係数と、前記対照符号の対応するフィールド内の係数とを用いて、前記可変長符号を生成する
ことを特徴とする、請求項４に記載の情報処理装置。
【請求項６】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかの方法によって固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置であって、
前記固定長符号を入力符号として取得する入力手段と、
前記入力符号の固定長符号化方法を判定する判定手段と、
前記判定手段が判定した前記固定長符号化方法に基づいて、入力された前記固定長符号を可変長符号に変換して出力符号として出力するか、又は入力された前記固定長符号をそのまま出力符号として出力する複数の変換器を有する変換手段と、
前記入力手段が取得した前記入力符号を前記変換手段が有するそれぞれの変換器に入力し、該入力後、それぞれの変換器から出力される前記出力符号のうち最も符号量の小さい出力符号を選択して出力する選択手段とを備え、
前記各変換器は、それぞれ異なる固定長符号化方法で符号化された固定長符号を可変長符号に変換するように個別に設定されており、前記入力された前記固定長符号の固定長符号化方法が前記設定された固定長符号化方法である場合には当該入力された前記固定長符号を可変長符号に変換して前記出力符号として出力し、前記入力された前記固定長符号の固定長符号化方法が前記設定された固定長符号ではない場合には当該入力された前記固定長符号を前記出力符号としてそのまま出力する
ことを特徴とする、情報処理装置。
【請求項７】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかを用いて固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置が行う情報処理方法であって、
前記固定長符号のそれぞれを、入力符号として取得する入力工程と、
前記入力符号の固定長符号化方法を判定する判定工程と、
前記入力符号を可変長符号に変換する複数の変換工程と、
前記複数の変換工程のうちの何れかで生成した可変長符号を、前記入力符号を可変長符号化した結果として出力する出力工程と、
を備え、
前記複数の変換工程のそれぞれは、対応する固定長符号化方法が予め設定されており、前記入力符号が当該対応する固定長符号化方法によって符号化されている場合に、当該対応する固定長符号化方法によって生成された固定長符号を可変長化する方法として当該変換工程に予め設定された可変長符号化方法を用いて、前記入力符号を可変長符号に変換する
ことを特徴とする情報処理方法。
【請求項８】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかの方法によって固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置が行う情報処理方法であって、
前記固定長符号のそれぞれを入力符号として順次取得する入力工程と、
前記入力符号の固定長符号化方法を判定する判定工程と、
前記オリジナル画像において、前記入力符号が示す分割画像の近傍に位置する分割画像の固定長符号であって、前記入力符号と同じ固定長符号化方法で生成された固定長符号を、当該入力符号に対する対照符号として取得する取得工程と、
前記入力符号と、当該入力符号に対する前記対照符号とを用いて、前記入力符号に対する前記可変長符号を生成する生成工程と、
前記生成工程で生成した可変長符号を、前記入力符号を可変長符号化した結果として出力する出力工程と、
を備えることを特徴とする情報処理方法。
【請求項９】
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかの方法によって固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置が行う情報処理方法であって、
前記固定長符号を入力符号として取得する入力工程と、
前記入力符号の固定長符号化方法を判定する判定工程と、
前記判定工程で判定した前記固定長符号化方法に基づいて、入力された前記固定長符号を可変長符号に変換して出力符号として出力するか、又は入力された前記固定長符号を出力符号としてそのまま出力する複数の変換工程と、
前記入力工程で取得した前記入力符号を前記複数の変換工程で処理することにより得られるそれぞれの前記出力符号のうち最も符号量の小さい出力符号を選択して出力する選択工程とを備え、
前記各変換工程は、それぞれ異なる固定長符号化方法で符号化された固定長符号を可変長符号に変換するように個別に設定されており、前記入力された前記固定長符号の固定長符号化方法が前記設定された固定長符号化方法である場合には当該入力された前記固定長符号を可変長符号に変換して前記出力符号として出力し、前記入力された前記固定長符号の固定長符号化方法が前記設定された固定長符号ではない場合には当該入力された前記固定長符号を前記出力符号としてそのまま出力する
ことを特徴とする、情報処理方法。
【請求項１０】
コンピュータを、請求項１乃至６の何れか１項に記載の情報処理装置として機能させるための、コンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化技術に関する。
【背景技術】
【０００２】
固定長符号化された画像は、回転などの画像編集を行うの際には非常に利便性が高い。しかしながら固定長符号化された画像は一般に可変長符号化された画像よりもデータサイズが大きい。従って、ハードディスクなどへ格納するためには、画像を固定長符号化することは容量の点で不利である。そこで、固定長符号化した画像を更に可変長符号化する方法が開発されている。
【０００３】
例えば特許文献１には、同一の固定長符号化データが連続する場合に、固定長符号化データの繰り返し回数を符号化することにより、可変長符号化を行う方法が開示されている。また特許文献２には、画像の周波数成分ごとに所定のビット数を割り当て、さらにエントロピー符号化を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−０９４８０１号公報
【特許文献２】特開２００１−０９４９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、１つの画像が、２つ以上の固定長符号化方法を用いて符号化されることがある。例えば特開２００８−２７８０４２号公報には、１つの画像を複数の領域に分割し、選択された固定長符号化方法を用いてそれぞれの領域を固定長符号化する方法が開示されている。このような、２種類以上の固定長符号で構成される符号化画像データは、同一の固定長符号化データが連続する可能性が低い。従って、特許文献１の方法を用いても圧縮効果が低いことが考えられる。また、異なる種類の固定長符号は異なるビットアサインを有する。従って、特許文献２の方法を用いる場合、符号語の出現確率が分散するため、圧縮率が上がらない可能性がある。
【０００６】
本発明は、２種類以上の固定長符号で構成される符号化画像データを、効率的に可変長符号化することを可能とする。
【課題を解決するための手段】
【０００７】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
オリジナル画像を分割して得られる各分割画像を複数の固定長符号化方法のうちの何れかを用いて固定長符号化することによって生成された固定長符号のそれぞれを、可変長符号に変換する情報処理装置であって、
前記固定長符号のそれぞれを、入力符号として取得する入力手段と、
前記入力符号の固定長符号化方法を判定する判定手段と、
前記入力符号を可変長符号に変換する複数の変換手段と、
前記複数の変換手段のうちの何れかが生成した可変長符号を、前記入力符号を可変長符号化した結果として出力する出力手段と、を備え、
前記複数の変換手段のそれぞれは、対応する固定長符号化方法が予め設定されており、前記入力符号が当該対応する固定長符号化方法によって符号化されている場合に、当該対応する固定長符号化方法によって生成された固定長符号を可変長化する方法として当該変換手段に予め設定された可変長符号化方法を用いて、前記入力符号を可変長符号に変換することを特徴とする。
【発明の効果】
【０００８】
２種類以上の固定長符号で構成される符号化画像データを、効率的に可変長符号化できる。
【図面の簡単な説明】
【０００９】
【図１】実施例１に係る情報処理装置の構成の一例を示すブロック図。
【図２】実施例１に係る固定長符号のビットアサインの一例。
【図３】実施例１に係る二色化モードでの可変長符号化の一例を説明する図。
【図４】実施例１に係る情報処理装置の処理の一例を示すフローチャート。
【図５】実施例１に係る反転部２４０が行う処理の一例を説明する図。
【図６】実施例１に係る位置情報の可変長化の一例を説明する図。
【図７】実施例１に係る選択部２７０が行う処理の一例を説明する図。
【図８】実施例１に係る階調モードでの可変長符号化の一例を説明する図。
【図９】実施例２に係る情報処理装置の構成の一例を示すブロック図。
【図１０】実施例２に係る分割部５６０の構成の一例を示すブロック図。
【図１１】実施例２に係る情報処理装置の処理の一例を示すフローチャート。
【図１２】実施例３に係る情報処理装置の構成の一例を示すブロック図。
【図１３】実施例３に係るモードテーブル９３０の一例を説明する図。
【図１４】実施例３に係るスロットボードの一例を説明する図。
【図１５】実施例４に係るコンピュータの構成の一例を示すブロック図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例を図面に基づいて説明する。ただし、本発明の範囲は以下の実施例に限定されるものではない。
［実施例１］
本実施例では、固定長符号を可変長化する。入力である固定長符号は、処理対象画像（オリジナル画像）の一部（ブロック画像（分割画像））を、所定のビット数となるように符号化することで生成されている。固定長符号は複数の固定長符号化方法（固定長符号化モード）のうち何れかの方法によって生成されている。本実施例における固定長符号化モードとしては、階調モード及び二色化モード（各モードの詳細は後述）の２つがあるものとする。それぞれのブロック画像は、どちらか一方の符号化モードで固定長符号化されている。それぞれのブロック画像に対して選択された適切な符号化モードで、固定長符号化が行われていてもよい。用いられた固定長符号化モードによって固定長符号の特性は異なるため、最適な可変長符号化方法も固定長符号化モードによって異なる。そこで本発明では、固定長符号の符号化モードを判別する。判別された符号化モードに応じて、複数の固定長符号化方法から選択された可変長符号化方法を用いることにより、高い圧縮率を実現する。
【００１１】
図１（Ａ）は、本実施例に係る情報処理装置１００の一例を示す。本実施例においては、固定長符号１１０が情報処理装置１００に入力される。そして、情報処理装置１００は固定長符号１１０を可変長化し、可変長符号１２０として出力する。ここで、固定長符号１１０について説明する。固定長符号１１０は、処理対象画像を８×８画素のブロック画像に分割し、それぞれのブロック画像を８１ビットの固定長符号としたものである。本実施例においては、処理対象画像におけるラスタ順に、この固定長符号が情報処理装置１００に入力される。
【００１２】
図２に固定長符号の構造の一例、すなわちビットアサインを示す。ＭＳＢ（最上位ビット）は固定長符号化モードを示す。以降ではこのＭＳＢはモード情報と呼ばれる。モード情報が「１」の時は、固定長符号が二色化モードで符号化されていることを示す。「０」の時は固定長符号が階調モードで符号化されていることを示す。もっとも、他の方法によって固定長符号の符号化モードが示されていてもよい。
【００１３】
次に、それぞれの固定長符号化モードについて説明する。図２（Ａ）は二色化モードにおけるビットアサインの一例を示す。図２（Ａ）中、Ｃ０（第１の画素値）及びＣ１（第２の画素値）は画素値を示す８ビットの情報である。固定長符号化によって、ブロック画像内の画素値はＣ０とＣ１との何れかに近似される。位置情報（識別情報）は６４ビットの情報である。位置情報は、ブロック画像内の各画素がＣ０とＣ１とのどちらの画素値に対応するかを、各画素について１ビットを用いて示す。ブロック画像の画素値のヒストグラムをとった場合に、出現頻度の最も高い画素値をＣ０、次に出現頻度が２番目の画素値をＣ１としてもよい。
【００１４】
図２（Ｂ）は階調モードにおけるビットアサインの一例を示す。階調モードにおいては、８×８画素のブロック画像は４×４画素に縮小される。そして、４×４の画像に対して離散コサイン変換を行うことにより、４×４のＤＣＴ係数が得られる。８ビットのＤＣ成分（ＤＣ係数）は、固定長符号に格納される。ＡＣ成分は、例えばジグザグスキャンの順にハフマンテーブルに従って変換され、変換された値（ＡＣ係数）が固定長符号に順次格納される。より高周波数のＡＣ成分がより固定長符号の末尾側に位置することが好ましい。ＡＣ成分の格納中に固定長（８１ビット）を超える場合には、ＡＣ成分の格納は打ち切られる。また、格納されていないＤＣＴ係数が全て０である場合には、ＥＯＢ符号が格納される。ＥＯＢ符号は例えば「００００」であればよい。ＥＯＢ符号の後ろに例えば「０」を格納することにより、符号化後のビット数を固定長（８１ビット）とすることができる。
【００１５】
本実施例の情報処理装置１００が有する各部について簡単に説明する。入力部１２５は、固定長符号１１０を順次取得する。モード判別部１３０は、固定長符号１１０の符号化モードを判別する。デマルチプレクサ１４０は、固定長符号１１０を第１の符号化部１５０又は第２の符号化部１６０に送る。第１の符号化部１５０は、階調モードで符号化された固定長符号を可変長符号に変換する。第２の符号化部１６０は、二色化モードで符号化された固定長符号を可変長符号に変換する。マルチプレクサ１７０は、第１の符号化部１５０又は第２の符号化部１６０から可変長符号を取得し、可変長符号１２０として出力する。
【００１６】
本実施例の情報処理装置１００が行う処理を、図４のフローチャートを参照して説明する。ステップＳ１５０１において入力部１２５は、固定長符号１１０（入力符号）を取得する（入力手段）。ステップＳ１５０２においてモード判別部１３０は、固定長符号１１０の符号化モードを判別する（判定手段）。本実施例においては、固定長符号１１０のＭＳＢが０であれば、モード判別部１３０は固定長符号１１０は階調モードで符号化されていると判断する。この場合、処理はステップＳ１５０３に進む。固定長符号１１０のＭＳＢが１であれば、モード判別部１３０は固定長符号１１０は二色化モードで符号化されていると判断する。この場合、処理はステップＳ１５０６に進む。
【００１７】
ステップＳ１５０３でデマルチプレクサ１４０は、固定長符号１１０を第１の符号化部１５０に送る。ステップＳ１５０４で第１の符号化部１５０は、階調モードで符号化された固定長符号１１０を可変長符号１２０へと変換する（第１の変換手段）。ステップＳ１５０４の処理については後に説明される。ステップＳ１５０５でマルチプレクサ１７０は、第１の符号化部１５０が生成した可変長符号１２０を出力する（出力手段）。
【００１８】
一方、ステップＳ１５０６でデマルチプレクサ１４０は、固定長符号１１０を第２の符号化部１６０に送る。ステップＳ１５０７で第２の符号化部１６０は、二色化モードで符号化された固定長符号１１０を可変長符号１２０へと変換する（第２の変換手段。ステップＳ１５０７の処理については後に説明される。ステップＳ１５０８でマルチプレクサ１７０は、第２の符号化部１６０が生成した可変長符号１２０を出力する。
【００１９】
ステップＳ１５０９で入力部１２５は、まだ処理されていない固定長符号が存在するか否かを判断する。まだ処理されていない固定長符号が存在する場合、処理はステップＳ１５０１に戻る。まだ処理されていない固定長符号が存在しない場合には、本実施例の処理は終了する。
【００２０】
＜階調モードで符号化された固定長符号の可変長符号化＞
ステップＳ１５０４における階調モード（第１の固定長符号化方法）で符号化された固定長符号を可変長化する方法には、様々な方法がある。ここではその一例を説明する。階調モードで符号化された固定長符号は、下位ビットに連続する「０」を有することが多い。そこで図８に示されるように第１の符号化部１５０は、下位ビットにおいて連続する「０」の数を、変換後の可変長符号に格納する（第１の可変長符号化方法）。
【００２１】
例えば、第１の符号化部１５０は、固定長符号１１０のＬＳＢ（末尾）から順に、連続する「０」の数をカウントする。そして第１の符号化部１５０は、カウントした数(ランレングス)を、モード情報の直後に７ビットのデータとして挿入する。そして第１の符号化部１５０は、カウントされた連続する「０」を削除する。
【００２２】
例えば８×８のブロック画像が単色で構成される場合、ＡＣ成分は存在しない。このため、この方法によれば、１つのブロック画像は８〜１６ビットに圧縮される。符号化される画像が文書などのように単色のブロックを多く含む場合、可変長符号化によって高い圧縮率を実現することができる。本実施例では末尾に連続する「０」を、「０」の数を示す値で置換するものとした。しかしながら、第１の可変長符号化方法はこれに限られない。たとえば、固定長符号１１０中（入力符号中）にある所定の値の連続を検出し、この所定の値が連続する長さを示す値で、所定の値の連続を置換することもできる。
【００２３】
＜二色化モードで符号化された固定長符号の可変長符号化＞
ステップＳ１５０７における二色化モード（第２の固定長符号化方法）で符号化された固定長符号を可変長化する方法には、様々な方法がある。例えば、固定長符号化前の画像において隣に存在するブロック画像との差分を求め、この差分から可変長符号を生成することができる（第２の可変長符号化方法）。固定長符号化方法として二色化モードが用いられる場合、隣接するブロック画像の間で上記のＣ０とＣ１とが逆になることが多い。このことは特に、例えば背景と文字とがそれぞれ異なる色で表されている場合に当てはまる。
【００２４】
例えば図３において、４００は黒画素と白画素とを有する原画像であり、４１０及び４１０は原画像４００内のブロック画像である。４１０及び４２０は、８×８画素のブロック画像である。本実施例において、ブロック画像４１０は白画素を多く有するため、白画素がＣ０を、黒画素がＣ１を割り当てられる。一方でブロック画像４２０は黒画素を多く有するため、黒画素がＣ０を、白画素がＣ１を割り当てられる。すなわち、ブロック画像４１０と４２０との間では、Ｃ０とＣ１とが逆になっている。
【００２５】
このような場合、ブロック画像４１０と４２０との差分を符号化しても、圧縮率が大きくならない可能性がある。そこで本実施例の第２の符号化部は、一方のブロック画像のＣ０とＣ１とを反転させてから差分を求める。そして、反転なしに得られた符号量と、反転を用いて得られた符号量とを比較し、符号量が小さい方を採用する。
【００２６】
図４に本実施例における第２の符号化部１６０の構成例を示す。第２の符号化部１６０には、二色化モードの固定長符号２１０が順次入力されてくる。前述のように、この固定長符号２１０は、処理対象画像におけるラスタ順に入力される。符号化器２５０−１は、入力された固定長符号２１０を取得する。さらに符号化器２５０−１は、取得された固定長符号２１０が示すブロック画像の近傍にあるブロック画像の固定長符号を、レジスタ２３０から取得する。以下では、符号化器２５０−１は、取得された固定長符号２１０が示すブロック画像に隣接するブロック画像の固定長符号を、レジスタ２３０から取得するものとする。図６には、処理対象画像における、ブロック画像３００、３１０、３２０、及び３３０の配置が示されている。固定長符号２１０がブロック画像３３０に対応する場合、符号化器２５０−１は例えば、ブロック画像３１０及び３２０に対応する固定長符号を取得すればよい。レジスタ２３０は、第２の符号化部１６０に入力された固定長符号を記憶しておく記憶部である。
【００２７】
符号化器２５０−２も同様に、入力された固定長符号２１０を取得する。さらに符号化器２５０−２は、取得された固定長符号２１０が示すブロック画像に隣接するブロック画像の固定長符号を取得する。しかしながら、符号化器２５０−２によって取得される、固定長符号２１０が示すブロック画像に隣接するブロック画像の固定長符号は、反転部２４０によって反転されたものである。反転部２４０が行う反転処理を図５に示す。反転部２４０は、取得された固定長符号２１０が示すブロック画像に隣接するブロック画像の固定長符号を取得し、Ｃ０とＣ１とを入れ替え、位置情報を示す各ビットを反転させる（０値を１値に、１値を０値に変換する）。反転部２４０は例えば、図５（Ａ）の固定長符号を、図５（Ｂ）の固定長符号へと変換する。反転部２４０はそして、変換された固定長符号を、符号化器２５０−２に供給する。
【００２８】
符号化器２５０−１はそして、レジスタ２３０から取得された固定長符号との相関を利用して、固定長符号２１０を可変長符号化する。また、符号化器２５０−２は、反転部２４０から取得された固定長符号との相関を利用して、固定長符号２１０を可変長符号化する。例えば、ＤＰＣＭ(Differential Pulse Code Modulation)などの予測符号化により可変長符号化することができる。
【００２９】
可変長符号化の一例を以下に示す。Ｃ０及びＣ１については、固定長符号２１０が示すブロック画像の左に隣接するブロック画像の固定長符号を参照する。そして、参照された固定長符号を用いて、固定長符号２１０を予測符号化する。例えば固定長符号２１０のＣ０と、隣接するブロック画像の固定長符号のＣ０との差分を、固定長符号２１０に対応する可変長符号内に格納する。Ｃ１についても同様である。固定長符号２１０が示すブロック画像の左に隣接するブロック画像が存在しない場合には、固定長符号２１０のＣ０及びＣ１を、固定長符号２１０に対応する可変長符号内にそのまま格納すればよい。
【００３０】
固定長符号２１０が示すブロック画像の左に隣接するブロック画像が二色化モードで固定長符号化されていない場合も同様である。この場合、可変長符号にはＣ０及びＣ１がそのまま格納されているのか、それとも可変長符号にはＣ０及びＣ１の差分が格納されているのか、を示すフラグ情報を可変長符号に加えることができる。一般的に隣接するブロック画像は類似していることが多く、Ｃ０及びＣ１の差分は０もしくは小さい値である場合が多い。したがって、可変長符号化後のエントロピーは小さくなりうる。
【００３１】
次に位置情報の可変長化の一例を、図６を用いて詳しく説明する。図６において、ブロック画像３００、３１０、３２０及び３３０は、処理対象画像の一部である。ブロック画像３００と３２０は互いに隣接している。ブロック画像３００と３１０も互いに隣接している。ブロック画像３１０と３３０も互いに隣接している。また、ブロック画像３２０と３３０も互いに隣接している。固定長符号２１０は、ブロック画像３３０に対応するものとする。
【００３２】
ブロック画像３３０は、隣接するブロック画像３１０および３２０との相関が高いため、例えば以下のように予測符号化する事で圧縮できる。まず、ブロック画像３３０の上に隣接するブロック画像３２０の位置情報と、ブロック画像３３０の位置情報とを比較する。位置情報が一致する場合には、固定長符号２１０に対応する可変長符号に、位置情報として”００”を格納する。次に、ブロック画像３３０の左に隣接するブロック画像３１０の位置情報と、ブロック画像３３０の位置情報とを比較する。位置情報が一致する場合には、固定長符号２１０に対応する可変長符号に、位置情報として”０１”を格納する。
【００３３】
隣接するブロック画像３１０若しくは３２０が存在しないか、又は二色化モードで符号化されていない場合には、位置情報は同一ではないものとする。ブロック画像３３０の位置情報がブロック画像３１０及び３２０のどちらとも一致しない場合には、固定長符号２１０の位置情報の先頭に”１”を付加したデータを、固定長符号２１０に対応する可変長符号に位置情報として格納する。処理対象画像が、例えば文字や表のような、垂直および水平方向の直線を多く含む場合、本実施例の方法によって高い圧縮率を実現できる。
【００３４】
本実施例において、符号化器２５０−１及び符号化器２５０−２が生成する可変長符号は、Ｃ０を示す符号と、Ｃ１を示す符号と、位置情報を示す符号とを少なくとも含む。符号がどの情報を示しているのかを識別するために、各符号は、符号の種類を示すビット列を、例えば符号の先頭に有することが好ましい。
【００３５】
選択部２７０は、符号化器２５０−１によって生成された可変長符号と、符号化器２５０−２によって生成された可変長符号とを比較する。そして選択部２７０は、符号量（ビット数）が少ない可変長符号を選択し、固定長符号２１０に対応する可変長符号２２０として出力する。この際選択部２７０は、可変長符号２２０が、符号化器２５０−１によって生成されたか、符号化器２５０−２によって生成されたのかを示す情報を可変長符号に付加することができる。
【００３６】
図７を参照して、選択部２７０の処理の一例を説明する。図７（Ａ）〜（Ｃ）において、先頭のビット(mode)は、これらの可変長符号が二色化モードの可変長符号であることを示すモード情報である。図７（Ａ）は、符号化器２５０−１によって生成された可変長符号である。また、図７（Ｂ）は、符号化器２５０−２によって生成された可変長符号である。
【００３７】
選択部２７０は、符号化器２５０−２によって生成された、ビット数の少ない図７（Ｂ）の可変長符号を選択する。この場合、選択部２７０は図７（Ｂ）の可変長符号のモード情報の直後に”１”を付加することによって、図７（Ｃ）の可変長符号を生成し、可変長符号２２０として出力する。符号化器２５０−１によって生成された可変長符号を選択部２７０が選択した場合には、可変長符号のモード情報の直後に”０”を付加すればよい。以上の構成により、Ｃ０とＣ１とを反転させた場合と反転させない場合の双方において符号化を行い、圧縮効率の良い可変長符号を採用することができる。
【００３８】
以上説明したように本実施例では、異なる固定長符号化モードで符号化されたブロック画像に対し、それぞれに適した可変長符号化が行われる。これにより、異なる固定長符号化モードで符号化されたブロック画像を含む画像データに対する、効率的な圧縮が実現される。本実施例によれば、オリジナル画像を分割し固定長符号化して得られるそれぞれの固定長符号の全てを復号してから、再度可変長符号化する必要はない。可変長符号化方法の１つとして、固定長符号をブロック画像（復号分割画像）に復号した後に、他のブロック画像（参照分割画像）を参照し、例えば予測符号化を用いて可変長符号化を行う方法が用いられるかもしれない。しかしながら、同じ固定長符号化方法が適用されるブロック画像は相互に性質が類似していることが予想される。したがって本実施例の方法を用いることにより、適切な他のブロック画像を探索するという余分の処理を伴わずに、同じ固定長符号化方法が適用される他のブロック画像を参照して、ブロック画像を予測符号化することもできる。
【００３９】
本実施例では、１つのブロック画像に対応する固定長符号を処理するのは、複数の符号化器のうちのいずれか１つであった。しかしながら、２以上の符号化器のそれぞれが１つの固定長符号を処理することにより、２以上の可変長符号が生成されてもよい。この場合、最も符号量の小さい可変長符号を、処理された固定長符号に対応する可変長符号として採用してもよい。どの固定長符号化モードの固定長符号を、どの符号化器が符号化するかは、外部から設定されてもよい。
【００４０】
処理される固定長符号は、上記実施例で説明された固定長符号化方法で符号化された固定長符号には限られない。例えば二色化モードで固定長符号化する際に、Ｃ０及びＣ１が画素群の平均画素値として求められていてもよい。また、階調モードで固定長符号化する際の縮小率は異なっていてもよいし、縮小率がブロック画像に応じて適応的に変えられてもよい。
【００４１】
また、固定長符号化方法は二色化モード又は階調モードには限られず、他の方法でもよい。この場合、それぞれの固定長符号化方法に対応する符号化器を用いればよい。さらには、本実施例において二色化モードの固定長符号は、Ｃ０、Ｃ１及び位置情報を含むが、これらの情報のうち少なくとも１つがさらに符号化されていてもよい。例えば、エントロピー符号化された位置情報を、固定長符号が含んでいてもよい。この場合、符号化器２５０−１及び２５０−２は、符号化された位置情報を復号してから、隣接するブロック画像の位置情報との比較を行ってもよい。
【００４２】
可変長符号化方法は上記で説明された方法には限られない。例えば、同一のブロック画像（又は固定長符号）が連続する数を求め、この数を用いて可変長符号化してもよい。二色化モードの場合、Ｃ０及びＣ１については近傍のブロックのＣ０及びＣ１と合わせて直交変換し、更にエントロピー符号化しても良い。例えば、ブロック画像の位置に従って、そのブロック画像に対応するＣ０を画素値として持つ画素を配列することにより、処理対象画像内のブロック画像の数と同じ数の画素を有する画像を生成する。そして、この画像を直交変換して、エントロピー符号化すればよい。階調モードの場合、連続する０の数（０ラン長）を更にエントロピー符号化してもよい。
【００４３】
［実施例１の変形例］
実施例１では、符号化器２５０−１及び符号化器２５０−２が位置情報を可変長化する際に、隣のブロック画像の位置情報との相関を利用した。本変形例では、１つのブロック画像を複数のサブブロック（領域）に分割し、それぞれのサブブロックについて隣接するサブブロックの位置情報との相関に基づいて位置情報を可変長化する。以下では、隣接するサブブロックの位置情報が一致する場合に、一方のサブブロックの位置情報を、他方のサブブロックの位置情報に一致することを示す情報で置き換える。
【００４４】
本変形例の処理を図６を用いて説明する。ここでは、ブロック画像３３０を示す固定長符号を可変長化するものとする。まず、ブロック画像３３０を、３３１、３３２、３３３、及び３３４の４つのサブブロックに分割する。説明のためにここではサブブロックを４つに分割するものとするが、いくつのサブブロックに分割してもよい。そして、それぞれのサブブロックについて、位置情報の比較を行う。
【００４５】
例えば、サブブロック３３１を符号化する場合には、上に隣接するサブブロック３２２、及び左に隣接するサブブロック３１３との比較が行われればよい。サブブロック３３２を符号化する場合にも同様に、上に隣接するサブブロック３３１、及び左に隣接するサブブロック３１４との比較が行われればよい。サブブロック３３３及び３３４についても同様である。実施例１と同様に、上に隣接するサブブロックと位置情報が一致する場合には位置情報を”００”とし、左に隣接するサブブロックと位置情報が一致する場合には位置情報を”０１”とすればよい。
【００４６】
隣接するサブブロックが存在しないか、又は二色化モードで符号化されていない場合には、位置情報は同一ではないものとすればよい。符号化するサブブロックが上に隣接するサブブロックと左に隣接するサブブロックとのどちらとも一致しない場合には、符号化するサブブロックの位置情報の先頭に”１”を付加したデータを、可変長化された位置情報とすればよい。
【００４７】
例えば図３の例では、ブロック画像４２０の左下サブブロックの位置情報と、ブロック画像４１０の右下サブブロックの位置情報とは、一方を反転させると一致する。したがって、例えばブロック画像４１０及び４２０を含む処理対象画像を、効率よく圧縮することができる。
【００４８】
［実施例２］
実施例１に係る情報処理装置１００は、複数の符号化部（例えば第１の符号化部１５０及び第２の符号化部１６０）を備える。そのため、各符号化部に専用のハードウェアを用いると、回路規模が大きくなる。そこで本実施例では、１つの符号化部を用いてそれぞれのモードで生成された固定長符号を可変長化する。本実施例に係る情報処理装置に入力される固定長符号は、実施例１と同様である。
【００４９】
本実施例に係る情報処理装置の一例を図９に示す。また、本実施例に係る処理のフローチャートの一例を図１１に示す。ステップＳ１６０１において入力部５２５は、固定長符号５１０を取得する（入力手段）。ステップＳ１６０２においてモード判別部５３０は、実施例１のモード判別部１３０と同様に、固定長符号５１０の符号化モードを判別する（判定手段）。ステップＳ１６０３において符号化部５７０は、固定長符号５１０を取得し、さらに固定長符号５１０の符号化モードを示す情報をモード判別部５３０から取得する。
【００５０】
ステップＳ１６０４において符号化部５７０は、レジスタ５４０が格納している、固定長符号５１０と同じ符号化モードで生成された固定長符号を取得する（取得手段）。以降で、ステップＳ１６０４で取得された固定長符号を対照符号と呼ぶ。レジスタ５４０は、後述のように入力された固定長符号を格納している。本実施例では、固定長符号５１０と同じ符号化モードで生成された、レジスタ５４０に格納されている固定長符号のうち、もっとも遅く（直近に）格納された固定長符号を符号化部５７０は取得する。しかしながら、より多くの固定長符号をレジスタ５４０が格納してもよい。この場合、オリジナル画像において固定長符号５１０が示すブロック画像の近傍に位置するブロック画像の固定長符号を、以下で示す対照符号として取得することも可能となる。
【００５１】
ステップＳ１６０５においてレジスタ５４０は、固定長符号５１０を格納する。この際、以前にレジスタ５４０に格納された、固定長符号５１０と同じ符号化モードで生成された固定長符号を上書きしてもよい。この場合レジスタ５４０は、最も遅く入力された二色化モードの固定長符号と、最も遅く入力された階調モードの固定長符号とを、格納することができる。しかしながらレジスタ５４０が、より多くの固定長符号を格納できてもよい。
【００５２】
ステップＳ１６０６において符号化部５７０は、対照符号を参照して、固定長符号５１０を可変長符号化する（生成手段）。ステップＳ１６０６において符号化部５７０は、固定長符号５１０のうちモード情報を除く部分を可変長符号化することが好ましい。モード情報は、符号化部５７０が生成した可変長符号の例えば先頭にそのまま付加される。符号化部５７０は、例えばＤＰＣＭ(Differential Pulse Code Modulation)などの予測符号化を用いてもよい。符号化部５７０は、例えば固定長符号５１０と対照符号との差分を計算すればよく、この場合算出された差分に対してさらにエントロピー符号化などの符号化を行うことが好ましい。固定長符号５１０が示すブロック画像も対照符号が示すブロック画像も、１つの処理対象画像内に存在するため、各フィールド内の係数は類似する値を有することが期待される。
【００５３】
ここでフィールドとは、固定長符号に含まれるデータのそれぞれを示す。例えば図２（Ａ）の二色化モードの固定長符号はフィールドとして、モード情報、Ｃ０、Ｃ１、及び位置情報を含む。また、固定長符号５１０と対照符号とは同じ符号化モードで生成されているため、同じ位置のビットは、同じフィールドの情報を示す。したがって、固定長符号５１０と対照符号との差分を２値データとすると、多くの”０”値又は”１”値が連続する部分が存在することが期待される。したがって固定長符号５１０と対照符号との差分はエントロピーが小さく、エントロピー符号化などの符号化を行うと大きく圧縮されることが期待される。
【００５４】
ステップＳ１６０７において符号化部５７０は、ステップＳ１６０６で生成された可変長符号を、可変長符号５２０として出力する（出力手段）。ステップＳ１６０８で入力部５２５は、まだ処理されていない固定長符号が存在するか否かを判断する。まだ処理されていない固定長符号が存在する場合、処理はステップＳ１６０１に戻る。まだ処理されていない固定長符号が存在しない場合には、本実施例の処理は終了する。
【００５５】
以上のように本実施例では、同じ固定長符号化方法で生成された固定長符号の相関を用いて、固定長符号を可変長化した。本実施例では、符号化モードを考慮せずに可変長符号化を行う場合と比べて、高い圧縮率が得られることが期待される。本実施例では可変長符号化にＤＰＣＭを用いたが、異なる方法を用いることもできる。また本実施例では、処理される固定長符号と同じ符号化モードで生成され、処理される固定長符号の直前に入力された固定長符号を、対照符号として用いた。しかしながら、処理される固定長符号が示すブロック画像に隣接するブロック画像の固定長符号を、対照符号として用いることもできる。
【００５６】
また実施例１と同様に、符号化モードは二色化モードと階調モードに限られず、他のモードが用いられてもよいし、３つ以上の符号化モードが１つの処理対象画像に対して用いられてもよい。この場合レジスタ５４０は、それぞれの符号化モードの固定長符号を少なくとも１つ格納できることが好ましい。
【００５７】
［実施例２の変形例１］
本変形例では、固定長符号の各フィールド内の係数を、対照符号の同じフィールド内の係数を参照することによって、可変長符号化する。本変形例の処理は、実施例２と類似しており、異なる部分について以下で説明する。ステップＳ１６０３では、分割部５６０が、固定長符号５１０及び固定長符号５１０の符号化モードを示す情報を取得する。ステップＳ１６０４では、分割部５６０が対照符号を取得する。
【００５８】
そしてステップＳ１６０６の代わりに、本変形例ではステップＳ１６１１〜Ｓ１６１３が実行される。ステップＳ１６１１で分割部５６０は、固定長符号５１０の各フィールドが何ビットで構成されるかを示す、ビットアサイン情報をアサインテーブル５５０から取得する。たとえば、ステップＳ１６０３で取得した、固定長符号５１０の符号化モードを示す情報に対応するビットアサイン情報を、アサインテーブル５５０から取得すればよい。例えば本変形例において二色化モードの固定長符号は図２（Ａ）のような構造を持つ。二色化モードについてのビットアサイン情報は本変形例において、最初の情報（モード情報）が１ビットであり、次の情報（Ｃ０）が８ビットであり、次の情報（Ｃ１）が８ビットであり、次の情報（位置情報）が６３ビットであることを示す。
【００５９】
ステップＳ１６１２で分割部５６０は、固定長符号５１０及び対照符号を、フィールド毎に分割し、符号化部５７０に送る。例えば分割部５６０は、二色化モードの固定長符号５１０を、モード情報、Ｃ０、Ｃ１、位置情報の順に符号化部５７０へと送る。位置情報は大きいので、分割部５６０は位置情報を例えば１ライン（８ビット）ごとに分割して送ってもよい。
【００６０】
分割部５６０の構成の一例を図１０に示す。固定長符号５１０はレジスタ６００−１に格納される。また、対照符号はレジスタ６００−２に格納される。アサインテーブル５５０からは、各フィールドのビット長が累積部６３０、マスク６２０−１、及びマスク６２０−２へと順に送信される。累積部６３０は、アサインテーブル５５０から次に切り出すフィールドのビット長を取得すると、取得されたビット長を累積する。なお、累積値が固定長符号化データのビット数(本変形例では８１)を超えた場合には、累積部６３０は累積値を０にリセットすればよい。そして、累積部６３０は累積値をシフタ６１０−１及び６１０−２に送る。
【００６１】
シフタ６１０−１は累積部６３０から累積値を受け取ると、レジスタ６００−１から固定長符号５１０を取得し、切り出されるフィールドがＬＳＢ側に来るように固定長符号５１０の各ビットを右シフトする。そしてシフタ６１０−１は、シフトされた固定長符号５１０をマスク６２０−１へと送る。シフタ６１０−２も同様に対照符号をシフトし、シフトされた対照符号をマスク６２０−２へと送る。
【００６２】
マスク６２０−１は、アサインテーブル５５０から取得したフィールドのビット長を参照し、右シフトされた固定長符号５１０からフィールドを切り出す。例えば、フィールドのビット長を超える上位ビットを”０”に置換すればよい。マスク６２０−２も同様に、右シフトされた対照符号からフィールドを切り出す。以上により、切り出されたフィールドは、符号化部５７０へと送られる。
【００６３】
ステップＳ１６１３で符号化部５７０は、分割部５６０から送られた各フィールド内の係数を、対照符号の対応するフィールド内の係数との相関を用いて可変長符号化する。例えば、固定長符号５１０のＣ０を、対照符号のＣ０を参照して可変長符号化する。この処理は実施例２と同様に行うことができる。例えばＤＰＣＭが用いられてもよい。その後、ステップＳ１６０８及びＳ１６０９が実施例２と同様に行われる。
【００６４】
符号化部５７０は、可変長符号化された各フィールドを、１つのブロック画像を示す符号へと統合してもよい。本変形例においては、どのフィールドに対応するかを示す情報を、それぞれの可変長符号化されたフィールドが有していてもよい。また、実施例１で述べたように、フィールド毎に、ブロック画像の位置に従って、そのブロック画像に対応するフィールド係数を持つ画素を配列することにより、処理対象画像内のブロック画像の数と同じ数の画素を有する画像を生成する。そして、この画像を直交変換して、エントロピー符号化してもよい。この際、２次元離散コサイン変換を用いることもできる。
【００６５】
［実施例２の変形例２］
実施例２の変形例２では、符号化部５７０が（モード情報を除く）全てのフィールドを可変長化した。しかしながら、例えば階調モードのＡＣ成分はハフマン符号化されているため、これをＤＰＣＭを用いて可変長化した場合、あまり圧縮できない又は符号量が増える可能性がある。そこで本変形例では、指定されたフィールドのみを可変長化する。
【００６６】
本変形例に係る情報処理装置の一例を、図９及び図１１を参照して説明する。本変形例に係る情報処理装置及びその処理は実施例２の変形例１と同様であり、異なる点について説明する。アサインテーブル５５０は、各フィールドのビット長に加えて、各フィールドをＤＰＣＭの対象とするか否かを示すフラグを保持する。ステップＳ１６１２において符号化部５７０は、アサインテーブル５５０を有するフラグを参照することにより、分割部５６０から送られたデータに対してＤＰＣＭを行うか否かを判断する。ＤＰＣＭが行われる場合は、符号化部５７０は実施例２の変形例１と同様の処理を行う。ＤＰＣＭが行われない場合は、符号化部５７０は固定長符号５１０から分割されたフィールドをそのまま出力する。
【００６７】
以上説明したように本変形例では、フィールド毎に符号化するか否かを選択する事により、効率的な符号化を実現できる。なお、本変形例では符号化するか否かが選択されたが、可変長化方法が選択されてもよい。例えば、ＤＰＣＭを用いた可変長化と離散コサイン変換を用いた可変長化とのいずれかが、各フィールドについて選択されてもよい。
【００６８】
［実施例３］
実施例１では、２つの符号化部１５０及び１６０を備え、それぞれが異なる固定長符号化モードで生成された固定長符号を可変長化する、情報処理装置１００について説明した。本実施例では、複数の符号化器を有し、複数の固定長符号化モードに対応して可変長化を行う、情報処理装置について説明する。本実施例にかかる情報処理装置９００が、図１２に示される。説明のために、本実施例の情報処理装置９００は、Ｎ個（Ｎは２以上の整数）の符号化器９５０を有するものとする。また、本実施例の情報処理装置９００は、Ｍ種類（Ｍは２以上の整数）の固定長符号化モードに対応するものとする。
【００６９】
本実施例においては、１つの固定長符号化モードに対応する１つ以上の符号化器が予め指定されている。１つの固定長符号は、対応する符号化器のうち少なくとも１つによって可変長化される。処理する固定長符号に対応しない符号化器は、固定長符号を可変長化せずに出力する。１つの固定長符号について、複数の符号化器が処理を行うと、例えば目標とする圧縮率を考慮して、最適な処理結果が選択される。
【００７０】
図１２に示されるように、本実施例に係る情報処理装置９００は、Ｎ個の符号化器９５０を備える（変換手段）。符号化器９５０の前段にはデマルチプレクサ９６０がある。デマルチプレクサ９６０は、固定長符号を符号化器９５０に送るか、符号化器９５０には送らずそのまま出力するかのどちらかを、固定長符号化モードに応じて行うことができる。スケジューラ９８０は、どの符号化器で符号化されたデータが出力されるかを、固定長符号化モードに応じて制御する。以降では説明のためにＭ＝４及びＮ＝３とする。すなわち、符号化器１（９５０−１）、符号化器２（９５０−２）、及び符号化器３（９５０−３）を、本実施例の情報処理装置は有する。固定長符号は１ブロックあたり８１ビットで構成されるものとする。また、固定長符号の上位３ビットを参照する事により、固定長符号化モードを判別可能であるものとする。
【００７１】
情報処理装置９００の各部の動作について詳しく説明する。符号化器９５０のそれぞれは、固定長符号化データを可変長符号化するマルチサイクル型の演算器である。それぞれの符号化器は、異なる可変長符号化方法を実行し、異なるレイテンシを持つ。外部からの指示に従い、それぞれの符号化器はあるデータに対する処理を中止し、次のデータの処理を開始することが可能である。なお、それぞれの符号化器９５０が行う処理は特に限定されない。符号化器９５０には、例えば実施例１で示した階調モード用第１の符号化部１５０が含まれてもよいし、第２の符号化部１６０が含まれてもよい。また、符号化器９５０には、例えば実施例２で示した情報処理装置５００が含まれてもよいし、非可逆な圧縮を行う符号化器が含まれてもよい。
【００７２】
入力された固定長符号化はキュー９４０に格納される（入力手段）。キュー９４０は内部にレジスタを持ち、例えば４つのブロック画像に相当する固定長符号を保持できる。スケジューラ９８０からの指示により、キュー９４０は固定長符号をそれぞれのデマルチプレクサ９６０へと入力し、さらにその固定長符号のモード情報をモードテーブル９３０へと送る。送られた固定長符号は、スケジューラ９８０の制御のもと消去されることができる。
【００７３】
モードテーブル９３０は、それぞれの固定長符号化モードに対応する符号化器９５０の情報を個別に保持している。モードテーブル９３０は例えば、１つの固定長符号化モードに対応する、１以上の符号化器９５０を示す。モードテーブル９３０の対応情報は、外部から予め設定されることができる。
【００７４】
モードテーブル９３０が保持する対応情報の一例を図１３に示す。モードテーブル９３０は、固定長符号の上位３ビットと、対応する符号化器とを、関連づけて保持している。本実施例においては、固定長符号の上位１〜３ビットが、固定長符号の符号化モードを示すものとする。図示されるように、固定長符号の上位１ビットが”０”の時、固定長符号は二色化モードで生成されている。固定長符号の上位２ビットが”１０”の時、固定長符号は階調モードで生成されている。固定長符号の上位３ビットが”１１０”の時、固定長符号はモードＡで生成されている。固定長符号の上位３ビットが”１１１”の時、固定長符号モードＢで生成されている。
【００７５】
図１３における「選択符号化器」は、各符号化モードに対応する符号化器を示す３ビットの情報である。最上位ビットは符号化器１が、次のビットは符号化器２が、その次のビットは符号化器３が、固定長符号の符号化モードに対応するか否かを示す。ビットが”１”である場合には、符号化器は固定長符号の符号化モードに対応している。すなわち、二色化モード（固定長符号の上位３ビットが”０００”，”００１”，”０１０”，又は”０１１”である場合）には、符号化器２と符号化器３とが対応する。階調モード（固定長符号の上位３ビットが”１００”又は”１０１”である場合）には符号化器１が対応する。モードＡ（固定長符号の上位３ビットが”１１０”である場合）には符号化器１と符号化器２とが対応する。モードＢ（固定長符号の上位３ビットが”１１１”である場合には、符号化器１〜３が対応する。
【００７６】
モードテーブル９３０は、図１３の「選択符号化器」で示される上述の情報に従い、それぞれの符号化器９５０についての対応情報を、それぞれのデマルチプレクサ９６０へと送る（判定手段）。固定長符号が二色化モードである場合を例として説明する。この場合、モードテーブル９３０は、符号化器１（９５０−１）の前段のデマルチプレクサ９６０−１に”０”を送る。またモードテーブル９３０は、符号化器２（９５０−２）の前段のデマルチプレクサ９６０−２に”１”を送る。さらにモードテーブル９３０は、符号化器３（９５０−３）の前段のデマルチプレクサ９６０−３に”１”を送る。
【００７７】
キュー９４０からの固定長符号の入力後、デマルチプレクサ９６０は、モードテーブル９３０から送られた対応情報に従い、キュー９４０から送られてきた固定長符号を、符号化器９５０とマルチプレクサ９７０とのいずれかに送る。符号化器９５０は、デマルチプレクサ９６０から送られた固定長符号を可変長化し、マルチプレクサ９７０に送る。マルチプレクサ９７０に対しては、符号化器９５０とデマルチプレクサ９６０との何れか一方からデータが送られる（変換器）。
【００７８】
マルチプレクサ９７０は、符号化器９５０又はデマルチプレクサ９６０から送られたデータ（出力符号）を、スケジューラ９８０へと出力する。本実施例の構成によれば、前段に存在するデマルチプレクサ９６０に入力された固定長符号に対応することがモードテーブル９３０によって示されている符号化器は、入力された固定長符号を可変長化する。一方で前段に存在するデマルチプレクサ９６０に入力された固定長符号に対応しないことがモードテーブル９３０によって示されている符号化器は、入力された固定長符号を可変長化しない。
【００７９】
次に、スケジューラ９８０について説明する。スケジューラ９８０は各固定長符号の符号化モードに対応する符号化器９５０が、入力された固定長符号を符号化するように制御する。スケジューラ９８０は、複数の固定長符号を同時に管理することが可能である。そしてスケジューラ９８０は、固定長符号９１０がキュー９４０に入力された順に、その固定長符号に対応する可変長符号９２０を出力する。
【００８０】
スケジューラ９８０は、例えば図１４に示されるような、可変長化処理の状態を示す情報を保持している。１つの固定長符号についての処理状態を示すデータセットをスロットと呼ぶことにする。本実施例の情報処理装置は４つの固定長符号の処理を同時に管理することが可能であり、４つのスロットを有する。図１４のテーブルを、スロットボードと呼ぶことにする。そしてスケジューラ９８０は、可変長化処理が進行するのに伴ってこのスロットボードを更新する。
【００８１】
図１４において「スロット番号」は、それぞれの固定長符号に対して割り振られた、順序管理用のインデックスである。後から入力された固定長符号はより大きいスロット番号を割り当てられる。そして、より小さいスロット番号を割り当てられた固定長符号に対応する可変長符号が、より早く出力される。本実施例においては、出力される可変長符号は、スロット番号１の固定長符号に対応する可変長符号である。スロット番号１に対応する可変長符号が出力されると、そのスロット番号は４に戻り、他のスロットのスロット番号は１つ減る。
【００８２】
図１４において「ＩＤ」は、各スロットを識別するために割り当てられた識別子である。「状態」は、各スロットに固定長符号が割り当てられているか否かを示す。固定長符号が入力されると、その固定長符号には「状態」が「空き」であるスロットの中で一番小さいスロット番号を持つスロットが割り当てられる。固定長符号が割り当てられたスロットの「状態」は、「有効」に変わる。可変長符号が出力されると、対応するスロットの「状態」は「空き」に戻る。
【００８３】
図１４において「符号化器１」、「符号化器２」、及び「符号化器３」は、それぞれのスロットに対応する固定長符号の処理状態を示す。「符号化器１」、「符号化器２」、及び「符号化器３」は、初期状態では「未処理」であり、「未処理」→「処理中」→「処理済」→「未処理」の順に遷移する。符号化器９５０−１の前段に位置するデマルチプレクサ９６０−１へと、固定長符号がキュー９４０から送られると、「符号化器１」は「処理中」へと変化する。また、マルチプレクサ９７０−１からスケジューラ９８０へとデータが出力されると、「符号化器１」は「処理済」へと変化する。「符号化器２」及び「符号化器３」についても同様である。固定長符号９１０に対応する可変長符号９２０が情報処理装置９００から出力されると、「符号化器１」、「符号化器２」及び「符号化器３」は「未処理」に戻る。
【００８４】
ＩＤ１〜ＩＤ４のスロットのいずれについても、「符号化器１」が「処理中」ではない場合、スケジューラ９８０は「符号化器１」が「未処理」であるスロットの中で最も小さいスロット番号を持つスロットを特定する。そして、スケジューラ９８０がキュー９４０へと指示を送ることにより、特定されたスロットに対応する固定長符号が、キュー９４０から符号化器１（９５０−１）の前段に位置するデマルチプレクサ９６０−１へと送られる。このときスケジューラ９８０は、特定されたスロットの「符号化器１」を「処理中」に変更する。「符号化器２」及び「符号化器３」についても同様である。固定長符号が、モードテーブル９３０によってその固定長符号に対応していないことが示されている符号化器へと送られた場合には、その固定長符号は可変長化されない。したがってその固定長符号はそのままスケジューラ９８０へと送られるため、「処理中」はすぐに「処理済」へと変化する。
【００８５】
「最小ビット数」は、マルチプレクサ９７０−１〜９７０−３がスケジューラ９８０へと送ったデータのうち、最も符号量が少ないデータのビット数を示す。スケジューラ９８０が受け取った符号化結果が、「最小ビット数」として格納されているビット数よりも少ない場合又は「最小ビット数」が格納されていない場合は、その符号化結果を別途保持しておく。また、スケジューラ９８０が受け取った符号化結果のビット数を「最小ビット数」に格納する。「最小ビット符号器」は、スケジューラ９８０が受け取った最も符号量が少ないデータが、どの符号化器によって生成されたのかを示す。
【００８６】
スロット番号１の「最小ビット数」が目標とするビット数を下回った場合に、スケジューラ９８０は、スロット番号１の固定長符号についての、最も少ない符号量を有する符号化結果を出力する（選択手段）。「符号化器１」〜「符号化器３」が「処理済」となった場合にも同様に、スケジューラ９８０は、スロット番号１の固定長符号についての、最も少ない符号量を有する符号化結果を出力する。最も少ない符号量を有する符号化結果は、上述のように保持されている。上記の目標とするビット数は、外部から設定可能であってもよい。目標とするビット数を下回った場合にも符号化結果を出力することにより、全ての符号化器の処理が終了するのを待つ必要がなくなる。したがって、１つの固定長符号について全ての符号化器が処理を完了していない場合にも、他の固定長符号の処理を開始する事ができる。スケジューラ９８０が出力する符号化結果には、「最小ビット符号器」を示す情報を付加することができる。
【００８７】
スロットボードの更新の一例について、図１４を用いて説明する。なお、ハッチングが施されている項目は、更新された項目を示す。ある時刻において、スロットボードが図１４（Ａ）に示される状態であるとする。スロット１及びスロット２の固定長符号は二色化モードで符号化されている。また、スロット３の固定長符号はモードＡで符号化されている。このときモードＡの固定長符号が入力されたとすると、スロットＩＤ４のスロットの状態が「空き」であるから、入力された固定長符号にはこのスロットが割り当てられる。そして、スロットボードは図１４（Ｂ）のように更新される。全てのスロットの状態が「有効」である場合に備えて、不図示のキューに入力された固定長符号を格納することもできる。
【００８８】
次に、符号化器２がスロットＩＤ１の固定長符号に対する処理を完了させ、符号化器３がスロットＩＤ２の固定長符号に対する処理を完了させると、スロットボードは図１４（Ｃ）のように更新される。すなわち、スロットＩＤ１の「符号化器２」およびスロットＩＤ２の「符号化器３」は「処理済」に変更される。また、スロットＩＤ１及びスロットＩＤ２の「最小ビット数」は必要に応じて更新される。このときスケジューラ９８０は、キュー９４０に指示することにより、固定長符号の処理を終えた符号化器２に対して、スロットＩＤ２の固定長符号の処理を開始させる。また、キュー９４０に指示することにより、固定長符号の処理を終えた符号化器３に対して、スロットＩＤ３の固定長符号の処理を開始させる。
【００８９】
このときＩＤ１のスロットについては、スロット番号が１であり、「符号化器１」〜「符号化器３」が「処理済」となっている。したがってスケジューラ９８０は、ＩＤ１のスロットに対応する符号化結果を可変長符号として出力する。またスケジューラ９８０は、ＩＤ１のスロットに対応する固定長符号を消去するように、キュー９４０に対して指示する。スロットＩＤ１のデータが出力されたため、スロットＩＤ１の「状態」は「空き」となる。スロットＩＤ１のスロット番号は「４」に変更される。そして、スロットＩＤ２〜４のスロット番号は１つずつ減らされる。この結果、スロットボードは図１４（Ｄ）のように更新される。図１４（Ｃ）においてスロット３は「符号化器３」が「処理中」であるが、スロット３の固定長符号に符号化器３は対応していないため、この処理はすぐに終了する。したがって、図１４（Ｄ）においてスロット３の「符号化器」は「処理済」になっている。
【００９０】
以上の動作によりスケジューラ９８０は、固定長符号が入力される順序と、固定長符号に対応する可変長符号が出力される順序とを一致させながら、固定長符号に対して動的に符号化器を割り当てることができる。さらにスケジューラ９８０は、各固定長符号の符号化モードに対応する符号化器に処理を行わせることができる。
【００９１】
本実施例では、目標とする可変長符号のビット数は外部から設定されるものとしたが、目標ビット数は動的に変更されてもよい。例えば、出力される可変長符号が目標ビット数をｎビット下回る場合、次に出力される可変長符号の目標ビット数をｎビット増やしてもよい。逆に、出力される可変長符号が目標ビット数をｎビット上回る場合、次に出力される可変長符号の目標ビット数からｎビット減らしてもよい。
【００９２】
また、スロットの管理方法は上記の方法に限定されない。例えば本実施例のように、後から入力された固定長符号がより大きいスロット番号を割り当てられなくてもよい。この場合、後で出力された可変長符号が並び換えられることが好ましい。また、先に入力された固定長符号に対応する可変長符号よりも、後に入力された固定長符号に対応する可変長符号の方が先に出力された場合には、少なくとも一方の可変長符号に対して順番が変わっていることを示すフラグを追加してもよい。この場合、例えば可変長符号を復号する際に
、符号を並び替えることができる。本実施例では４つのスロットを用いたが、任意の数のスロットを用いることができる。
【００９３】
［実施例４］
本実施形態では、上述の各実施形態に係る処理をコンピュータにより行わせる。図１５はコンピュータの基本構成を示す。このコンピュータにおいて上述の各実施例の機能を実行するためには、各機能をプログラムにより表現し、このコンピュータに読み込ませればよい。こうして、このコンピュータで上述の実施例の全ての機能を実現することができる。この場合、図１５をはじめとする構成要素の各々は関数、若しくはＣＰＵが実行するサブルーチンで機能させればよい。また、コンピュータプログラムは通常、ＣＤ−ＲＯＭ等のコンピュータが読み取り可能な記憶媒体に格納されている。この記憶媒体を、コンピュータが有する読み取り装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピー若しくはインストールすることで実行可能になる。従って、係るコンピュータが読み取り可能な記憶媒体も本発明の範疇にあることは明らかである。
【００９４】
図１５においてＣＰＵ２００１は、コンピュータ全体の動作をコントロールする。本実施例でプログラムは、ハードディスク又はＣＤ−ＲＯＭのような二次記憶２００３に格納されている。ＣＰＵ２００１は、ＲＡＭ等のメモリである一次記憶２００２にプログラムを読み込み、読み込まれたプログラムを実行する。
入力デバイス２００４とはコンピュータに情報を入力するデバイスであって、例えばマウスやキーボード等がこれに該当する。出力デバイス２００５とはコンピュータが情報を出力するデバイスであって、モニタ及びプリンタを含む。読込デバイス２００６は、外部のデータを取得するためのデバイスであって、メモリカードリーダ及びネットワークカードを含む。バス２００８は、上述の各部を接続し、データのやりとりを可能とする。
【００９５】
［その他の実施形態］
本発明は、以下の処理を実行することによっても実現される。即ち、上述した各実施例の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005501014.tif 000002
【図２】
0005501014.tif 000003
【図３】
0005501014.tif 000004
【図４】
0005501014.tif 000005
【図５】
0005501014.tif 000006
【図６】
0005501014.tif 000007
【図７】
0005501014.tif 000008
【図８】
0005501014.tif 000009
【図９】
0005501014.tif 000010
【図１０】
0005501014.tif 000011
【図１１】
0005501014.tif 000012
【図１２】
0005501014.tif 000013
【図１３】
0005501014.tif 000014
【図１４】
0005501014.tif 000015
【図１５】
0005501014.tif 000016