(57)【要約】【課題】可変長符号化したデータの復号処理の並列化を容易にする。【解決手段】画像符号化装置のラインカウンタ１２２は、符号化部１１０に入力される画像データ３００のライン数を計数する。符号ビットカウンタ１２４は、符号化部１１０が出力する符号化画像データのビット数を計数する。分割情報テーブル生成部１２６は、例えば所定のライン数の間隔で設定された分割候補ラインごとに、画像データ３００の先頭からそのラインの末尾までに符号部が出力した符号化画像データのビット数を示した分割情報テーブルを生成する。ヘッダ生成部１３０は、その分割情報テーブルのデータ内容を、例えばコメントの形でＪＰＥＧファイルのヘッダに組み込む。画像復号装置は、その分割情報テーブルを参照して、複数の復号部に対し復号対象の符号化画像データを割り当てる。【選択図】図２
2008113268.tif 000002
【特許請求の範囲】
【請求項１】
原データを符号化して符号データを生成する符号化部と、
前記符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成する分割情報生成部と、
前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成するファイル生成部と、
を備えるデータ符号化装置。
【請求項２】
請求項１記載のデータ符号化装置であって、
前記分割情報生成部は、前記符号化部の出力する符号語を計数することにより、前記原データの先頭から各分割候補位置までの符号語数を表す情報を更に含んだ分割情報を生成する、
ことを特徴とするデータ符号化装置。
【請求項３】
請求項１記載のデータ符号化装置であって、
前記符号化部はＪＰＥＧ方式の符号化を行い、
前記分割情報生成部は、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値を更に含んだ分割情報を生成する、
ことを特徴とするデータ符号化装置。
【請求項４】
原データを符号化して符号データを生成する符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成し、
前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成する、
処理をコンピュータに実行させるためのプログラム。
【請求項５】
符号データを復号する複数の復号部と、
原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出す読出部と、
読み出された前記分割情報に基づき、前記各復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する制御部と、
を備えるデータ復号装置。
【請求項６】
請求項５記載のデータ復号装置であって、
前記制御部は、前記各復号部に割り当てられる符号データの量ができるだけ均等になるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。
【請求項７】
請求項５記載のデータ復号装置であって、
前記制御部は、前記各復号部が出力する原データの量ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。
【請求項８】
請求項５記載のデータ復号装置であって、
前記分割情報には、前記原データの先頭から各分割候補位置までの符号語数を表す情報が含まれ、
前記制御部は、前記各復号部に割り当てられる符号語数ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。
【請求項９】
請求項５記載のデータ復号装置であって、
前記符号データはＪＰＥＧ方式で符号化されたデータであり、
前記分割情報には、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値が更に含まれ、
前記制御部は、前記各復号部に対し、当該復号部に割り当てられた分割候補位置に対応する直流成分の値を渡し、その直流成分を初期値として直流成分の復号を行わせる、
ことを特徴とするデータ復号装置。
【請求項１０】
原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出し、
読み出された前記分割情報に基づき、符号データを復号する複数の復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、
前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号化に関する。
【背景技術】
【０００２】
ＪＰＥＧ(Joint Photographic Experts Group)等の画像符号化方式には、可変長符号化技術を用いられることが多い。可変長符号化では、ビット長がまちまちの符号語を詰め合わせて符号データファイルを構成する。このため、Ｎ番目の符号語の情報を正しく取り出すには、１番目から（Ｎ−１）番目までの符号語を順に解釈していく必要がある。このため、可変長符号化により生成された符号データの復号においては、最初の符号語から順に復号していくことが一般的であった。別の角度からいえば、可変長符号化された符号データはランダムアクセスが原理的に困難であるといえる。ランダムアクセスが困難であるため、符号データを複数に分けて並列的に復号するということも困難であった。
【０００３】
特許文献１に示される方式では、ＪＰＥＧファイルのイメージ情報の個別領域へランダムにアクセスするために、ファイルを事前走査してテーブルを作成する。すなわち、この方式では、事前走査手段が、符号化されたピクセル・イメージ領域の位置を識別するためシーケンシャルにビットストリームを伸張する。指定された位置が事前走査テーブルに記憶される。イメージに対する事前走査が完了した後、操作されるべき符号化ピクセル・イメージ領域だけに直接アクセスすることによってイメージの選択された部分に対して回転、切り取りおよび拡大縮小のようなイメージ操作が実行される。しかしながら、この方式では、テーブルを作るのに結局のところ圧縮データをいったん伸張する必要があり、これは復号を行うのと同等の時間を要する。並列的な復号を実現するのに、そのような事前の伸張処理を行っていたのでは、復号に要する時間の短縮には繋がらない。
【０００４】
特許文献２に示される方式では、Ｍ（横方向）×Ｎ（縦方向）個の圧縮パケットからなる１ページ分の圧縮画像データを、個々の圧縮パケットを構成する横方向４個のＭＣＵの各ライン（行）をハフマン符号化したビットストリームのブロック（ＥＣＳ、エントロピコーデッドセグメント）にリスタートマーカまたはＥＯＩマーカが付加された「ＭＣＵグループＧ（ｎ）」をＭ個配置したデータブロックを一単位として、１つのＭＣＵの縦画素数（８画素）を１ラインとして４Ｎライン分連続して配列する。これにより、並列処理を実行しやすくしている。しかしながら、このデータ形式は標準的なＪＰＥＧ形式ではないので、この方式に適合したデコーダでないと復号ができない。
【０００５】
特許文献３に示される画像処理装置には、ａ個の最小符号化単位（ＭＣＵ）のブロック毎に、リスタートマーカが挿入された１ページのＪＰＥＧ圧縮画像データが入力される。入力された画像データについて、ａ個の最小符号化単位と挿入されたリスタートマーカとから構成されるグループを１ブロックとして、この圧縮したままのブロック単位で、画像を再配置して画像パケットを生成し、１ページ画像を横方向Ｍ個×縦方向Ｎ個の画像パケットの集まりに再構成する。その後、画像パケットとして並列画像処理される。しかしながら、このデータ形式も標準的なＪＰＥＧ形式ではないので、この方式に適合したデコーダでないと復号ができない。
【０００６】
【特許文献１】特開２０００−２７８６８５号公報
【特許文献２】特開２００３−１８９１０９号公報
【特許文献３】特開２００３−３４８３５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記従来技術は画像の符号化に関するものであったが、復号処理の並列化が困難であるという問題は可変長符号化を含むデータ符号化技術一般に該当する。
【０００８】
本発明は、可変長符号化技術を用いたシステムにおいて、復号処理の並列化を可能又は容易にする。
【課題を解決するための手段】
【０００９】
（１）本発明の１つの側面では、原データを符号化して符号データを生成する符号化部と、前記符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成する分割情報生成部と、前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成するファイル生成部と、を備えるデータ符号化装置を提供する。
【００１０】
（２）１つの態様では、上記構成（１）において、前記分割情報生成部は、前記符号化部の出力する符号語を計数することにより、前記原データの先頭から各分割候補位置までの符号語数を表す情報を更に含んだ分割情報を生成する、ことを特徴とする。
【００１１】
（３）別の態様では、上記構成（１）において、前記符号化部はＪＰＥＧ方式の符号化を行い、前記分割情報生成部は、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値を更に含んだ分割情報を生成する、ことを特徴とする。
【００１２】
（４）本発明の別の側面では、原データを符号化して符号データを生成する符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成し、前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成する、処理をコンピュータに実行させるためのプログラム、を提供する。
【００１３】
（５）本発明の更に別の側面では、符号データを復号する複数の復号部と、原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出す読出部と、読み出された前記分割情報に基づき、前記各復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する制御部と、を備えるデータ復号装置、を提供する。
【００１４】
（６）１つの態様では、上記構成（５）において、前記制御部は、前記各復号部に割り当てられる符号データの量ができるだけ均等になるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
【００１５】
（７）別の態様では、上記構成（５）において、前記制御部は、前記各復号部が出力する原データの量ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
【００１６】
（８）更に別の態様では、上記構成（５）において、前記分割情報には、前記原データの先頭から各分割候補位置までの符号語数を表す情報が含まれ、前記制御部は、前記各復号部に割り当てられる符号語数ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
【００１７】
（９）更に別の態様では、上記構成（５）において、前記符号データはＪＰＥＧ方式で符号化されたデータであり、前記分割情報には、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値が更に含まれ、前記制御部は、前記各復号部に対し、当該復号部に割り当てられた分割候補位置に対応する直流成分の値を渡し、その直流成分を初期値として直流成分の復号を行わせる、ことを特徴とする。
【００１８】
（１０）本発明の別の側面では、原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出し、読み出された前記分割情報に基づき、符号データを復号する複数の復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する、処理をコンピュータに実行させるためのプログラム、を提供する。
【発明の効果】
【００１９】
上記構成（１）又は（４）によれば、符号ファイルから原データを復号する画像復号装置が復号処理を並列化するための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
【００２０】
上記構成（２）によれば、復号する符号データの符号語数が復号部の処理時間のボトルネックの要因となる場合に、各復号部が復号する範囲の割り当てを適切に行うための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
【００２１】
上記構成（３）によれば、ＪＰＥＧ方式の符号化において、画像復号装置の各復号部において直流成分の再生が適切にできるようにするための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
【００２２】
上記構成（５）又は（１０）によれば、符号ファイルの復号処理の並列化を適切に並列化することができる。
【００２３】
上記構成（６）によれば、復号する符号データの量が復号部の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
【００２４】
上記構成（７）によれば、復号部の出力する原テータの量が全体の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
【００２５】
上記構成（８）によれば、復号する符号データの符号語数が復号部の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
【００２６】
上記構成（９）によれば、ＪＰＥＧ方式において、画像復号装置の各復号部において直流成分の再生が容易になる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施形態を、図面を参照しながら説明する。各図面において、同一又は類似の構成要素には同一符号を付すことで、重複する説明は省略する。
【００２８】
図１に、本実施形態の画像符号化伝送システムの概略的な構成を示す。この例のシステムはＪＰＥＧ方式で画像圧縮符号化を行うものである。このシステムの画像復号装置２００は複数の復号部２１０−１〜２１０−Ｎ（Ｎは２以上の整数）により並列的に復号処理を実行することができる（以下、特に区別する必要がない場合は、復号部２１０と総称する）。このような並列的な復号を可能にするために、画像符号化装置１００は、画像復号装置２００での復号処理の並列化のための基礎情報（ヒント）となる分割情報１０１２を含んだＪＰＥＧファイル（例えばJFIF又はExif形式のファイル）１０００を生成する。分割情報１０１２は、例えば、元の画像データ中に設定された分割候補位置ごとに、その画像データをＪＰＥＧ符号化した符号化画像データ１０１４におけるそれら各分割候補位置に対応するデータ位置の情報を含む。画像符号化装置１００は、画像データをＪＰＥＧ符号化する際に得られる情報から分割情報１０１２を生成し、この分割情報１０１２をＪＰＥＧファイル１０００のヘッダ１０１０に組み込む。画像復号装置２００は、分割情報１０１２を含んだＪＰＥＧファイル１０００を受け取った場合、分割情報１０１２に従ってそのファイル１０００中の符号化画像データ１０１４を複数の部分に分け、それら各部分を各復号部２１０−１〜２１０−Ｎに復号させることで、並列処理を実現する。
【００２９】
図２は、画像符号化装置１００の機能構成の一例を示す図である。この画像符号化装置１００は、符号化部１１０と分割情報生成部１２０とヘッダ生成部１３０とを備える。
【００３０】
符号化部１１０は、ＪＰＥＧ符号化を行う。周知のように、ＪＰＥＧ符号化では、入力される画像データ３００をブロックに分割し、ブロックごとに離散コサイン変換（ＤＣＴ）を行い、得られた各ＤＣＴ係数を量子化し、得られた量子化ＤＣＴ係数に対して可変長符号化の一種であるハフマン符号化を施す。符号化部１１０は、入力された画像データ３００に対してそのような符号化処理を実行し、その結果得られる符号化画像データを出力する。符号化部１１０は、符号化処理手順を記述したプログラムをプロセッサに実行させることにより実現してもよいし、その手順の一部又は全部をハードウエア回路として実現してもよい。また、後述する分割情報生成部１２０及びヘッダ生成部１３０は、後述する各機能を記述したプログラムをプロセッサに実行させることにより実現することができるが、それら機能のうち一部又は全部をハードウエア回路として構成してもよい。
【００３１】
分割情報生成部１２０は、符号化部１１０を監視することで、画像データ３００の符号化結果に付する分割情報１０１２を生成する。図示の例では、分割情報生成部１２０は、ラインカウンタ１２２と符号ビットカウンタ１２４と分割情報テーブル生成部１２６を備える。ラインカウンタ１２２は、符号化部１１０に入力される画像データ３００のライン（行）数を計数する。符号ビットカウンタ１２４は、符号化部１１０が出力する符号データのビット数を計数する。
【００３２】
分割情報テーブル生成部１２６は、ラインカウンタ１２２と符号ビットカウンタ１２４とから入力される計数値に基づき、例えば図３に例示する分割情報テーブルを作成する。図３の分割情報テーブルは、元の画像データ３００の先頭から各分割候補ラインの末尾までの符号化において符号化部１１０が出力した符号化画像データのビット数が示される。図中「Line」とあるのが分割候補ラインのライン番号を示し、「Code#Size」がそれら各分割候補ラインの末尾までの符号化画像データのビット数を示す。図３に示した例は、画像データ３００の総ライン数が３２００ラインの場合の例である。またこの例では、最大４並列（４つの復号部による並列処理）での並列処理に対応するために、画像データ３００上で１／４，２／４，３／４のデータ量に当たる８００，１６００，２４００ラインに対応する情報が分割情報テーブルに登録されている。最終ラインである３２００ラインで画像分割を行うことはないので、３２００ラインの情報は分割情報テーブルには原理的には不要であるが、この例では参考情報として含めている。なお最終ラインが何ライン目かの情報はＪＰＥＧファイルのヘッダに含まれる画像サイズの情報からも分かる。また、画像データ３００の先頭ラインも分割候補位置の１つではあるが、先頭ラインまでの符号化画像データの量は当然ながら０なので、分割情報テーブルからは省略している。
【００３３】
なお、図３の例で例えば画像データの８００ライン目を分割候補ラインと呼び、この代わりに８０１ライン目を分割候補ラインと呼んでもよい。図２〜図４の例において実際に画像データを分割するのは８００ライン目と８０１ライン目との間であり、それを指し示すのに８００ライン目と８０１ライン目のどちらを目印にすることもできる。また、図３の例では、画像データの先頭から８００ライン目の最後まで符号化したときの符号化ビット数２０１５８７０を分割情報テーブルに記録したが、この代わりに８０１ライン目の最初のビットの番号すなわち２０１５８７１を分割情報テーブルに記録してもよい。
【００３４】
画像データ３００のライン数は画像データ３００のヘッダ情報などから分かる場合が多い。例えば画像データ３００がｂｍｐ形式のファイルである場合、そのファイルのヘッダから総ライン数や１ラインの画素数などといった情報を得ることができる。したがって、分割情報テーブル生成部１２６は、そのような画像データ３００から分かる総ライン数の情報に基づき各分割候補ラインを決定すればよい。例えば、総ライン数を、想定される最大並列数で割った数に近い整数を、分割候補ライン数とすればよい。
【００３５】
なお、画像符号化装置１００が用いる画像符号化方式が、画像データをブロック分割するものである場合、分割候補ラインのライン番号はブロックのサイズを考慮して決める。例えば、ＪＰＥＧの場合、縦８画素×横８画素が１ブロックなので、分割候補ラインは８の倍数から選べばよい。また、画像符号化において、例えば色差成分などについて画素のサブサンプリング（間引き）を行う場合は、サブサンプリングを考慮して分割候補ラインを決定する。例えば、ＪＰＥＧ符号化において色差成分の画素数を輝度成分の画素数の１／４にする場合、分割候補ラインは１６の倍数から選べばよい。なお、画像データ３００をブロック分割しない画像符号化方式を用いる場合は、分割候補ラインの選び方にそのような制約はない。
【００３６】
ヘッダ生成部１３０は、ＪＰＥＧファイルに組み込むヘッダ情報を生成する。周知のように、ＪＰＥＧファイルには、量子化テーブルやハフマンテーブルなどといった復号に必要な各種情報がヘッダ情報として含まれるが、ヘッダ生成部１３０はそのようなヘッダ情報を生成する。ここで、本実施形態のヘッダ生成部１３０は、分割情報テーブル生成部１２６が生成した分割情報テーブルをヘッダ情報に組み込む機能を備える。すなわちヘッダ生成部１３０は、例えば分割情報テーブルを所定のデータ形式で記述し、その記述をヘッダにコメントとして組み込む。
【００３７】
例えば、図３に示す分割情報テーブルは、例えば次のようなテキストデータとして表すことができる。
【００３８】
Encode information:(Line,Code#Size)=(800,2015879),(1600,4441231),(2400,6732612),(3200,8976743):end
【００３９】
このようなテキストデータを、JFIF等で規定されるコメントの記述としてヘッダに組み込めばよい。なお、分割情報テーブルをヘッダ１０１０に組み込み可能なテキストデータとして記述するための記述形式は、上述の例に限るものではない。
【００４０】
本実施形態に準拠した画像復号装置は、画像符号化装置１００が生成したＪＰＥＧファイル１０００を復号する際、ヘッダ１０１０中にコメントとして記述された分割情報１０１２を参照して復号処理の並列化を行う。一方、本実施形態に準拠しない画像復号装置は、コメントとして記述された分割情報１０１２を無視し、並列化せずに従来通りの復号処理を行う。
【００４１】
ヘッダ生成部１３０が生成したヘッダ情報は、画像符号化装置１００のメモリ中に確保されたＪＰＥＧファイル用メモリ領域４００の中の、ヘッダ領域４０２に書き込まれる。このヘッダ領域４０２には、分割情報テーブルの情報もコメントとして含まれている。符号化部１１０が生成した符号化画像データはＪＰＥＧファイル用メモリ領域４００の中の符号化画像領域４０４に書き込まれる。なお、符号化画像データのサイズによっては、確保されたメモリ領域４００の中に未使用領域４０６が残ることもある。
【００４２】
画像符号化装置１００は、画像データ３００の最後まで符号化が終わった後で、ＪＰＥＧファイル用メモリ領域４００上に書き込まれたヘッダ情報及び符号化画像データから、ＪＰＥＧファイル１０００を作成する。
【００４３】
次に、図１の画像符号化装置１００に対応する画像復号装置２００の機能構成を、図４を参照して説明する。図４には、２つの復号部２１０−１，２１０−２を備える画像復号装置２００を例示するが、これはあくまで一例に過ぎない。なお、以下の例では、各復号部２１０−１，２１０−２の処理能力が同等であるとして説明する。
【００４４】
復号部２１０−１，２１０−２は、ＪＰＥＧ符号化された符号化画像データを復号する。周知のように、ＪＰＥＧ復号では、符号化画像データをハフマン復号し、その復号結果を逆量子化し、逆量子化結果を逆ＤＣＴ（ＩＤＣＴ）処理することで、元の画像を再生する。復号部２１０−１，２１０−２は、このようなＪＰＥＧ復号処理を示すプログラムをプロセッサに実行させることにより実現してもよい。例えば、複数のプロセッサコアを備えるＣＰＵを搭載した汎用コンピュータ上で、ＪＰＥＧ復号プログラムを各プロセッサコアに実行させることで、並列的な復号を行うことができる。また、もちろん個々の復号部２１０−１，２１０−２をそれぞれハードウエア回路として構成することもできる。
【００４５】
ヘッダ解析部２２０は、画像復号化装置２００のメモリ中に確保されたＪＰＥＧファイル用メモリ領域４００のヘッダ領域４０２にロードされたＪＰＥＧファイル１０００中のヘッダ１０１０を解析し、その結果得られたＪＰＥＧ復号のための情報を、各復号部２１０−１，２１０−２に設定する。ヘッダから得られるＪＰＥＧ復号のための情報には、例えば画像サイズ、量子化テーブルやハフマンテーブルなどがある。
【００４６】
また、ヘッダ解析部２２０は分割情報解析部２２２を備える。分割情報解析部２２２は、ヘッダ１０１０中のコメントから、分割情報１０１２の記述形式（例えば上述の例では、"Encode information:"から始まり":end"で終わるテキストデータ）に適合するデータ部分を分割情報として抽出する。そして分割情報解析部２２２は、抽出した分割情報に基づき、各復号部２１０−１，２１０−２に対する復号部分の割り当てを決定する。例えば、各復号部２１０−１，２１０−２に割り当てられる画像データのライン数が均等となるように割り当てるとすると、分割情報が図３に示すようなものであれば、復号部２１０−１には第１ライン〜第１６００ライン、復号部２１０−２には第１６０１ライン〜第３２００ラインを割り当てればよい。この場合、分割情報解析部２２２は、復号部２１０−１には、ＪＰＥＧファイル用メモリ領域４００における符号化画像領域４０４の先頭から１バイト目の１ビット目を復号開始点のアドレス情報として指定し、復号部２１０−２には、符号化画像領域４０４の先頭から５５５１５４バイト目の８ビット目（すなわち４４４１２３１＋１ビット目）を復号開始点のアドレス情報として指定すればよい。より厳密に言えば、例えば復号部２１０−２には、符号化画像領域４００の５５５１５４バイト目を読込開始アドレスと指定し、読み込んだ５５５１５４バイト目の８ビット目を復号処理の開始アドレスとして指定すればよい。また、分割情報解析部２２２は、復号結果の画像データの書込開始ラインとして、復号部２１０−１には第１ラインを指定し、復号部２１０−２には第１６０１ラインを指定すればよい。復号部２１０−１、２１０−２は、その指定に従い、符号化画像データの復号開始点のアドレスから復号を開始し、復号結果の画像データを、復号結果保持用のメモリ領域５００における書込開始ラインの先頭画素に対応するメモリアドレスから順に書き込んでいく。なお、分割情報解析部２２２が、各復号部２１０−１，２１０−２に対し、符号化画像データ中での復号終了点又は復号結果中での書込終了ライン又はその両方を指定するようにし、各復号部２１０−１，２１０−２がそのような終了点で復号処理を終了するようにしてもよいが、これは必須ではない。仮に復号部２１０−２が第１６０１ライン〜第３２００ラインまでの復号を完了するまでに、復号部２１０−１が第１６００ラインまでの復号を終え、更に復号を続けたとしても、メモリ領域５００の第１６０１ライン目以降には、復号部２１０−２が既に書き込んだデータと同じデータが上書きされるだけなので、原理上、悪影響はない。
【００４７】
以上では、２つの復号部２１０−１，２１０−２で並列的に符号化画像データを復号する例を示したが、図３のような分割情報がヘッダ１０１０に含まれていれば、復号部が例えば４つある場合まで対応できる。復号部が４つある場合は、第１の復号部には符号化画像データの１バイト目の１ビット目を、第２の復号部には２５１９８４バイト目の７ビット目を、第３の復号部には５５５１５４バイト目の８ビット目を、第４の復号部には８４１５７７バイト目の５ビット目を、それぞれ復号開始点として指定すればよい。また、書込開始ラインとしては、第１の復号部には第１ラインを、第２の復号部には第８０１ラインを、第３の復号部には第１６０１ラインを、第４の復号部には第２４０１ラインを、それぞれ指定すればよい。いずれにしても、以上のように割り当てを行うことで、各復号部が受け持つデータは、復号結果の画像データのライン数の点で均等になる。復号結果の画像データは、１画素あたり所定ビットの固定長データなので、結局各復号部は復号結果の画像データのデータ量の点で均等になる。
【００４８】
なお、画像復号装置が備える復号部の数が３つの場合は、そのうち１つに画像データの半分のライン数に対応する符号化画像データを割り当て、残りの２つに残りの半分を更に半分に分けて割り当てればよい。また、画像復号装置が備える復号部の数が５以上の場合は、図３の例のように最大４分割に対応する分割情報しかなければ、それら復号部のうち４つを使って並列処理を行えばよい。
【００４９】
次に、図５及び図６を参照して別の実施形態を説明する。この実施形態の画像符号化装置１００は、図５に示すように、図２の構成の他に、ＤＣ成分取得部１２５を備えている。ＤＣ成分取得部１２５は、各分割候補ラインの末尾の画素を含むブロックのＤＣ（直流）成分の値を符号化部１１０から取得する。このようなＤＣ成分の値は、符号化部１１０中の量子化部の出力（言い換えればハフマン符号化部への入力）を監視することで求めることができる。分割情報テーブル１２６は、それら各ＤＣ成分の値を含んだ分割情報テーブルを生成する。この実施形態の分割情報テーブルの例を、図６に示す。図６の例では、８００，１６００，２４００の各分割候補ラインの末尾の画素が含まれるブロックのＤＣ成分値が、輝度成分Ｙ及び各色差成分Ｃｂ（輝度成分と青成分との差），Ｃｒ（輝度成分と赤成分との差）のそれぞれについて示される。図６では、輝度成分のＤＣ成分が"Last#Y"、Ｃｂ成分のＤＣ成分が"Last#Cb"、Ｃｒ成分のＤＣ成分が"Last#Cr"というタイトルで示されている。なお、最終ラインである３２００ライン目の情報は、分割候補ラインの情報としてはなくてもよい。
【００５０】
ヘッダ生成部１３０は、このような分割情報テーブルの情報を、例えば次のような形で記述し、ヘッダ１０１０にコメントとして組み込めばよい。
【００５１】
Encode information:(Line,Code#Size,Last#Y,Last#Cb,Last#Cr)=(800,2015879,20,128,127),(1600,4441231,25,130,140),(2400,6732612,46,125,166),(3200,8976743,38,120,153):end
【００５２】
図５の画像符号化装置に対応する画像復号装置の構成は、図４に示すようなものでよい。ただし、この画像復号装置では、分割情報解析部２２２が、各分割候補ラインに対応するＤＣ成分の値を読み出し、それらＤＣ成分の値を各復号部２１０−１，２１０−２に初期値として設定する。例えば、図６に示すような分割情報に基づき、符号化画像データを２つの復号部２１０−１，２１０−２に分けて並列的に復号する場合、復号部２１０−１には、復号化画像データの復号開始点として１バイト目の１ビット目を、復号結果の書込開始ラインとして第１ラインを、ＤＣ成分の初期値としてＹ＝０，Ｃｂ＝０，Ｃｒ＝０を、それぞれ設定して復号を行わせる。同様に復号部２１０−２には、復号化画像データの復号開始点として５５５１５４バイト目の８ビット目を、復号結果の書込開始ラインとして第１６０１ラインを、ＤＣ成分の初期値として（Ｙ，Ｃｂ，Ｃｒ）＝（２５，１３０，１４０）を、それぞれ設定して復号を行わせる。ＪＰＥＧ符号化では、各ブロックのＤＣ成分を符号化する場合に、前のブロックのＤＣ成分との差分を符号化するので、復号では、前のブロックのＤＣ成分の再生値に対し、当該ブロックのＤＣ差分値を加えることで、当該ブロックのＤＣ成分の再生値を求める。したがって復号部２１０−２は、その初期値に対し、最初のブロックのＤＣ差分を足すことで最初のブロックのＤＣ成分の再生値を求め、以降第２，第３のブロックのＤＣ成分値も同様に求める。
【００５３】
なお、画像復号装置に復号部が４つある場合は、図６の分割情報に基づき、第１,第２，第３及び第４の復号部に対してそれぞれＤＣ成分の初期値を（２０，１２８，１２７），（２５，１３０，１４０），（４６，１２５，１６６），（３８，１２０，１５３）と設定すればよい。
【００５４】
なお、以上の例は元の画像データがフルカラーデータの場合の例である。元の画像データが単色のデータであれば、ＤＣ成分は１つでよい。
【００５５】
また、図５及び図６の実施形態のように、ＤＣ成分の初期値を分割情報に組み込んでおかなくても、画像復号装置は、各復号部で並列的に復号を行った後、第１の復号部の復号結果の最後のブロックのＤＣ成分の再生値を求め、この再生値を、第２の復号部の出力における各ブロックのＤＣ差分に加算することで、第２の復号部の出力の各ブロックにおける正しいＤＣ成分を求めることができる。同様に、第３，第４の復号部の出力についても、同様に各ブロックのＤＣ成分を補正することができる。
【００５６】
次に、更に別の実施形態を、図７を参照して説明する。図２〜図４を用いて説明した実施形態では、各復号部が出力する画像データのライン数ができるだけ均等になるように各復号部に対する復号範囲の割り当てを行った。この代わりに、この実施形態では、各復号部に割り当てる符号化画像データの量ができるだけ均等になるように割り当てを行う。
【００５７】
この実施形態の画像符号化装置の機能構成は、図２に示すようなものでよい。ただし、分割情報テーブル生成部１２６は、図７に示すように、図３の場合よりも密度の高い分割情報テーブルを生成する。図７の例では、元の画像データ３００の１６ラインごとに分割候補ラインを設定し、先頭から各分割候補ラインまでの符号化において符号化部１１０が出力した符号ビット数（Code#Size）をテーブルに記録している。このテーブルは、図２〜図４の例と同様にして例えば以下のようなテキストデータで記述することができ、これをＪＰＥＧファイル１０００のヘッダ１０１０にコメントとして組み込むことができる。
【００５８】
Encode information:(Line,Code#Size)=(16,44883),(32,89003),(48,134668),…,(1440,4445897) ,(1456,4488301) ,(1472,4535892),…, (3200,8976743):end
【００５９】
なお、図７では、画像データの１６ラインごとに分割候補ラインを設定したが、１６ラインごとというのはあくまで一例にすぎない。分割候補ラインの間隔は、ＪＰＥＧ方式の場合８の整数倍ラインごと（画素のサブサンプリングが行われる場合は更にそのサブサンプリングの比率を考慮したライン数ごと）であればよい。これは他の実施形態で例示する分割情報テーブルでも同じである。
【００６０】
画像復号装置２００の分割情報解析部２２２は、このような分割情報をＪＰＥＧファイルのヘッダ１０１０から読み出す。そして、画像復号装置２００内の復号部２１０の数に基づき、それら各復号部２１０が復号する符号化画像データのビット数ができるだけ同じようになる分割候補ラインをその分割情報の中から探し出して用いる。例えば、分割情報が図７のようなものであり、画像復号装置２００が備える復号部２１０の数が２つの場合、符号化画像データの総ビット数８９７６７４３の半分に最も近いビット数を持つ１４５６ライン目の分割候補ラインを選択すればよい。そして、第１の復号部には符号化画像データの１バイト目から読み込み、その１ビット目から復号を開始し、復号結果を画像の１ライン目から書き込むように指定し、第２の復号部には５６１０３８バイト目から読み込み、その６ビット目から復号を開始し、復号結果を画像の１４５７ライン目から書き込むように指定すればよい。
【００６１】
画像復号装置２００の持つ復号部の数がＮ個の場合、符号化画像データの総ビット数の１／Ｎ，２／Ｎ，３／Ｎ，・・・，ｋ／Ｎ，・・・，（Ｎ−１）／Ｎにそれぞれもっとも近い符号ビット数をCode#Sizeとして持つラインで画像を分割し、各復号部にそれら各分割部分を割り当てればよい。この場合、第１番目の復号部には符号化画像データの１ビット目を復号の開始点として割り当て、第ｋ番目（ｋは２〜Ｎの整数）の復号部には、符号化画像データの総ビット数の（ｋ−１）／Ｎに最も近い符号ビット数を持つ分割候補ラインの符号ビット数に１を足した番号のビットを復号の開始点として割り当てればよい。
【００６２】
以上では、図７のように分割候補ラインの密度が高い分割情報を用いて各復号部に割り当てられる画像データのライン数ができるだけ均等になるように割り当てを行ってもよい。
【００６３】
次に、更に別の実施形態を、図８及び図９を参照して説明する。この実施形態では、画像復号装置の持つ各復号部に割り当てる符号語の数ができるだけ均等になるように割り当てを行う。
【００６４】
このため、画像符号化装置１００は、図８に示すように、符号化部１１０が出力する符号語の数を計数する符号語カウンタ１２８を備える。符号語カウンタ１２８は、符号化部１１０の出力を監視することで、出力される各符号語を識別し、それら符号語を計数する。符号語カウンタ１２８はソフトウエア的に実現してもよいし、ハードウエア回路として実現してもよい。
【００６５】
分割情報テーブル生成部１２６は、符号化対象である画像データ３００の先頭から各分割候補ラインの末尾までの符号化において符号化部１１０が出力した符号語数を、分割情報テーブルに登録する。このようにして生成される分割情報テーブルの例を、図９に示す。図９に例示するテーブルにおいて、「Hufword#cnt」というタイトルで示される項目が符号語数を示す。図９のテーブルは、例えば次のようなテキストデータとして表現して、ヘッダ１０１０にコメントとして組み込むことができる。
【００６６】
Encode information:(Line,Code#Size,Hufword#cnt)=(16,44883,8976),(32,89003,18003),(48,134668,26881),…,(1440,4445897,890000) ,(1456,4488301,897670) ,(1472,4535892,905544),…, (3200,8976743,17953350):end
【００６７】
画像復号装置２００の分割情報解析部２２２は、このような分割情報をＪＰＥＧファイルのヘッダ１０１０から読み出し、各復号部２１０が復号する符号語の数ができるだけ同じようになる分割候補ラインをその分割情報の中から探し出して用いる。例えば、分割情報が図９のようなものであり、画像復号装置２００が備える復号部２１０の数が２つの場合、符号化画像データの総符号語数１７９５３３５０の半分に最も近い符号語数を持つ１４５６ライン目の分割候補ラインを選択すればよい。そして、第１の復号部には符号化画像データの１バイト目から読み込み、その１ビット目から復号を開始し、復号結果を画像の１ライン目から書き込むように指定し、第２の復号部には５６１０３８バイト目から読み込み、その６ビット目から復号を開始し、復号結果を画像の１４５７ライン目から書き込むように指定すればよい。同様に、画像復号装置２００が備える復号部２１０の数がＮ個の場合は、第１番目の復号部には符号化画像データの１ビット目を復号の開始点として割り当て、第ｋ番目（ｋは２〜Ｎの整数）の復号部には、符号化画像データの総符号語数の（ｋ−１）／Ｎに最も近い符号語数を持つ分割候補ラインの符号ビット数に１を足した番号のビットを復号の開始点として割り当てればよい。
【００６８】
なお、図７の実施形態でも、図８及び図９の実施形態でも、分割情報テーブルにおける各分割候補ラインのエントリにそのラインの末尾に該当するブロックのＤＣ成分の値を登録し、各復号部におけるＤＣ差分計算の初期値として用いるようにしてもよい。
【００６９】
以上、複数の実施形態を説明したが、それら各実施形態はそれぞれ例えば次のような場合に好適である。
【００７０】
例えば、復号部２１０をハードウエア回路として構成する場合、符号画像データに対してハフマン方式の可変長復号を施すモジュールと、その可変長復号結果に対して逆ＤＣＴ（ＩＤＣＴ）を施すモジュールとを直列に接続したモジュールとすることが考えられる。このような構成において、乗算器の数を少なくするなどしてＩＤＣＴモジュールの回路規模を削減した場合には、可変長復号モジュールの処理よりもＩＤＣＴモジュールの処理の方が復号部２１０全体の処理のボトルネックとなる。可変長復号モジュールの出力はＤＣ成分及び各周波数のＡＣ（交流）成分についての量子化ＤＣＴ係数であり、その数は復号結果の画素の数に比例する。従って、ＩＤＣＴモジュールの処理に要する時間も、復号結果の画素数に依存する。ＩＤＣＴモジュールが処理のボトルネックになるということは、結局復号処理全体に要する時間が、符号画像データのデータ量よりも復号結果の画素数に依存するということである。したがって、このような復号部２１０を複数有する画像復号装置で、並列化により各復号部の処理時間を平準化しようとすれば、各復号部に対する復号範囲の割り当ては、図２〜図４を用いて説明した実施形態のように、復号結果のライン数（言い換えれば画素数）ができるだけ均等になるようにすればよい。
【００７１】
また、図１０に示すように復号部２１０が可変長復号モジュール２１１、ＩＤＣＴモジュール２１２、及びＩＤＣＴ結果に対して画像処理等の後処理を行う後処理モジュール２１３を直列に接続したものであり、後処理モジュール２１３の処理時間が復号部２１０の全体の処理のボトルネックである場合も、上述の場合と同様、各復号部２１０に対して復号結果のライン数（言い換えれば画素数）ができるだけ均等になるように割り当てを行えばよい。
【００７２】
可変長復号モジュールの処理時間が復号部２１０全体の処理のボトルネックとなる場合は、以上のケースとは事情が異なる。可変長復号モジュールは１符号語ごとに１回の処理を行うので、復号部２１０全体の処理時間は入力される符号語の数に依存することになる。したがって、このような場合、各復号部２１０の処理時間を平準化しようとすれば、図８及び図９を用いて説明した実施形態のように、各復号部に割り当てる符号語の数ができるだけ均等になるように割り当てを行えばよい。例えば、図１１に示すように、複数の可変長復号モジュール２１１の出力がバッファとなるメモリ２１４を介して、処理能力の高いＩＤＣＴモジュール２１２に入力される回路構成において、可変長復号モジュール２１１の処理がボトルネックになるような場合も、このようなケースの一例である。
【００７３】
また、図１２に示すように、各復号部２１０がそれぞれメモリアクセス部２１５を備え、符号化画像データを有するＪＰＥＧファイル用メモリ領域４００に対し、それぞれ個別にメモリアクセスを行う場合には、上述の各例とは異なったケースとなる場合がある。すなわち、このような復号部２１０が、他のデバイスと共にメモリ領域４００が確保されているメモリチャネルの帯域を共有する場合など、各復号部２１０に割り当てられるメモリ帯域に制限があるなどしてメモリアクセスが復号部２１０全体の処理のボトルネックとなる。このような場合には、各復号部２１０の処理時間を均等化するには、各復号部２１０のメモリアクセスの回数をできるだけ均等になるように割り当てを行えばよい。このためには、図７を用いて説明した実施形態のように、各復号部２１０が復号する符号化画像データのビット数ができるだけ均等になるように割り当てを行えばよい。なお、このような割り当ては、メモリアクセス調停部２３０が各メモリアクセス部２１５からのデータ要求を受け取り、それらを調停することにより実行すればよい。なお、復号部２１０のメモリアクセスが、復号部２１０全体の処理のボトルネックとなる場合には、上述の例以外にもあり得る。
【００７４】
以上説明したように、復号部２１０のどのような部分が処理のボトルネックになるかに応じて、各復号部２１０への適切な割り当て方式が変わってくる。そこで、図９のように、分割候補ライン数の間隔が密で、符号語数の情報も含んだ分割情報をＪＰＥＧファイルに組み込んでおき、画像復号装置２００が、自分が持つ復号部２１０の特性に応じ、上記いずれの方式で各復号部２１０への割り当てを行うかを判定するようにしてもよい。
【００７５】
以上に説明した各実施形態の画像符号化装置１００は、例えばスキャナやプリンタ、デジタル複合機に組み込むことができる。例えば、スキャナの場合、スキャンした画像を各実施形態のいずれかの画像符号化装置の機能により符号化し、符号化ファイルを作成すればよい。プリンタの場合は、ホストから送られてきたページ記述言語の印刷データから印刷に用いることのできる画像データを生成し、それを一時的に蓄えるなどの目的で符号化する場合に、上述の画像符号化装置１００の機能を用いることができる。もちろん、画像符号化装置１００は、デジタルカメラ、デジタルビデオカメラ等といった他の種類の装置に組み込むこともできる。また、各実施形態の画像復号装置２００は、例えばプリンタやデジタル複合機の内蔵する機能として実現することができる。これらの装置の場合、符号化ファイルから画像を再生して印刷する場合に、上述の画像復号装置２００の技術を適用することができる。なお、以上に例示したのは、各実施形態の適用分野の一例に過ぎない。
【００７６】
以上、各実施形態を説明した。上記実施形態では、画像復号装置内の各復号部に対するデータ範囲の割り当ての境界を示す元の画像データ上での境界を「ライン」（画像における行）としたが、これは必須のことではない。ラインの途中の画素を境界とする場合でも、その画素の位置が何ライン目の何画素目であるかを分割候補位置の情報として分割情報に含めるようにすれば、画像復号装置での並列的な復号結果を正しく合成して元の画像データを再生できる。なお、ＪＰＥＧのようにブロックごとの処理を行う場合は、分割候補位置はブロックの単位を考慮して定めればよい。更に画素のサブサンプリングを行う場合には、サブサンプリングのレートを考慮して定めればよい。
【００７７】
また、以上の各実施形態ではＪＰＥＧ符号化方式を例にとったが、それら各実施形態の手法は、ＪＰＥＧに限らず、可変長符号化を用いる他の画像符号化・復号方式（例えばＭＰＥＧやＪＰＥＧ２０００など）にも適用可能である。
【００７８】
また、以上の各実施形態では可変長符号化方式としてハフマン符号化を例にとったが、算術符号化など他の符号化方式を用いる場合にも上記各実施形態の手法は適用可能である。また、上記実施形態の手法は原理的にはデータの表す内容によるものではないので、画像以外のデータについても適用可能である。
【図面の簡単な説明】
【００７９】
【図１】実施形態の画像符号化伝送システムを説明するための図である。
【図２】実施形態の画像符号化装置の構成例を示す図である。
【図３】分割情報テーブルの一例を示す図である。
【図４】実施形態の画像復号装置の構成例を示す図である。
【図５】別の実施形態の画像符号化装置の構成例を示す図である。
【図６】図５の画像符号化装置が生成する分割情報テーブルの例を示す図である。
【図７】更に別の実施形態で用いられる分割情報テーブルの例を示す図である。
【図８】更に別の実施形態の画像符号化装置の構成例を示す図である。
【図９】図８の画像符号化装置が生成する分割情報テーブルの例を示す図である。
【図１０】復号部の構成の一例を示す図である。
【図１１】復号部の構成の別の一例を示す図である。
【図１２】復号部の構成の更に別の一例を示す図である。
【符号の説明】
【００８０】
１００  画像符号化装置、１１０  符号化部、１２０  分割情報生成部、１２２  ラインカウンタ、１２４  符号ビットカウンタ、１２６  分割情報テーブル生成部、１３０  ヘッダ生成部、２００  画像復号装置、２１０−１〜２１０−Ｎ  復号部。
【図１】
2008113268.tif 000003
【図２】
2008113268.tif 000004
【図３】
2008113268.tif 000005
【図４】
2008113268.tif 000006
【図５】
2008113268.tif 000007
【図６】
2008113268.tif 000008
【図７】
2008113268.tif 000009
【図８】
2008113268.tif 000010
【図９】
2008113268.tif 000011
【図１０】
2008113268.tif 000012
【図１１】
2008113268.tif 000013
【図１２】
2008113268.tif 000014