JP2008113268A - データ符号化装置、データ復号装置 - Google Patents
データ符号化装置、データ復号装置 Download PDFInfo
- Publication number
- JP2008113268A JP2008113268A JP2006295094A JP2006295094A JP2008113268A JP 2008113268 A JP2008113268 A JP 2008113268A JP 2006295094 A JP2006295094 A JP 2006295094A JP 2006295094 A JP2006295094 A JP 2006295094A JP 2008113268 A JP2008113268 A JP 2008113268A
- Authority
- JP
- Japan
- Prior art keywords
- decoding
- data
- division
- unit
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
【課題】可変長符号化したデータの復号処理の並列化を容易にする。
【解決手段】画像符号化装置のラインカウンタ122は、符号化部110に入力される画像データ300のライン数を計数する。符号ビットカウンタ124は、符号化部110が出力する符号化画像データのビット数を計数する。分割情報テーブル生成部126は、例えば所定のライン数の間隔で設定された分割候補ラインごとに、画像データ300の先頭からそのラインの末尾までに符号部が出力した符号化画像データのビット数を示した分割情報テーブルを生成する。ヘッダ生成部130は、その分割情報テーブルのデータ内容を、例えばコメントの形でJPEGファイルのヘッダに組み込む。画像復号装置は、その分割情報テーブルを参照して、複数の復号部に対し復号対象の符号化画像データを割り当てる。
【選択図】図2
【解決手段】画像符号化装置のラインカウンタ122は、符号化部110に入力される画像データ300のライン数を計数する。符号ビットカウンタ124は、符号化部110が出力する符号化画像データのビット数を計数する。分割情報テーブル生成部126は、例えば所定のライン数の間隔で設定された分割候補ラインごとに、画像データ300の先頭からそのラインの末尾までに符号部が出力した符号化画像データのビット数を示した分割情報テーブルを生成する。ヘッダ生成部130は、その分割情報テーブルのデータ内容を、例えばコメントの形でJPEGファイルのヘッダに組み込む。画像復号装置は、その分割情報テーブルを参照して、複数の復号部に対し復号対象の符号化画像データを割り当てる。
【選択図】図2
Description
本発明は、可変長符号化に関する。
JPEG(Joint Photographic Experts Group)等の画像符号化方式には、可変長符号化技術を用いられることが多い。可変長符号化では、ビット長がまちまちの符号語を詰め合わせて符号データファイルを構成する。このため、N番目の符号語の情報を正しく取り出すには、1番目から(N−1)番目までの符号語を順に解釈していく必要がある。このため、可変長符号化により生成された符号データの復号においては、最初の符号語から順に復号していくことが一般的であった。別の角度からいえば、可変長符号化された符号データはランダムアクセスが原理的に困難であるといえる。ランダムアクセスが困難であるため、符号データを複数に分けて並列的に復号するということも困難であった。
特許文献1に示される方式では、JPEGファイルのイメージ情報の個別領域へランダムにアクセスするために、ファイルを事前走査してテーブルを作成する。すなわち、この方式では、事前走査手段が、符号化されたピクセル・イメージ領域の位置を識別するためシーケンシャルにビットストリームを伸張する。指定された位置が事前走査テーブルに記憶される。イメージに対する事前走査が完了した後、操作されるべき符号化ピクセル・イメージ領域だけに直接アクセスすることによってイメージの選択された部分に対して回転、切り取りおよび拡大縮小のようなイメージ操作が実行される。しかしながら、この方式では、テーブルを作るのに結局のところ圧縮データをいったん伸張する必要があり、これは復号を行うのと同等の時間を要する。並列的な復号を実現するのに、そのような事前の伸張処理を行っていたのでは、復号に要する時間の短縮には繋がらない。
特許文献2に示される方式では、M(横方向)×N(縦方向)個の圧縮パケットからなる1ページ分の圧縮画像データを、個々の圧縮パケットを構成する横方向4個のMCUの各ライン(行)をハフマン符号化したビットストリームのブロック(ECS、エントロピコーデッドセグメント)にリスタートマーカまたはEOIマーカが付加された「MCUグループG(n)」をM個配置したデータブロックを一単位として、1つのMCUの縦画素数(8画素)を1ラインとして4Nライン分連続して配列する。これにより、並列処理を実行しやすくしている。しかしながら、このデータ形式は標準的なJPEG形式ではないので、この方式に適合したデコーダでないと復号ができない。
特許文献3に示される画像処理装置には、a個の最小符号化単位(MCU)のブロック毎に、リスタートマーカが挿入された1ページのJPEG圧縮画像データが入力される。入力された画像データについて、a個の最小符号化単位と挿入されたリスタートマーカとから構成されるグループを1ブロックとして、この圧縮したままのブロック単位で、画像を再配置して画像パケットを生成し、1ページ画像を横方向M個×縦方向N個の画像パケットの集まりに再構成する。その後、画像パケットとして並列画像処理される。しかしながら、このデータ形式も標準的なJPEG形式ではないので、この方式に適合したデコーダでないと復号ができない。
上記従来技術は画像の符号化に関するものであったが、復号処理の並列化が困難であるという問題は可変長符号化を含むデータ符号化技術一般に該当する。
本発明は、可変長符号化技術を用いたシステムにおいて、復号処理の並列化を可能又は容易にする。
(1)本発明の1つの側面では、原データを符号化して符号データを生成する符号化部と、前記符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成する分割情報生成部と、前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成するファイル生成部と、を備えるデータ符号化装置を提供する。
(2)1つの態様では、上記構成(1)において、前記分割情報生成部は、前記符号化部の出力する符号語を計数することにより、前記原データの先頭から各分割候補位置までの符号語数を表す情報を更に含んだ分割情報を生成する、ことを特徴とする。
(3)別の態様では、上記構成(1)において、前記符号化部はJPEG方式の符号化を行い、前記分割情報生成部は、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値を更に含んだ分割情報を生成する、ことを特徴とする。
(4)本発明の別の側面では、原データを符号化して符号データを生成する符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成し、前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成する、処理をコンピュータに実行させるためのプログラム、を提供する。
(5)本発明の更に別の側面では、符号データを復号する複数の復号部と、原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出す読出部と、読み出された前記分割情報に基づき、前記各復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する制御部と、を備えるデータ復号装置、を提供する。
(6)1つの態様では、上記構成(5)において、前記制御部は、前記各復号部に割り当てられる符号データの量ができるだけ均等になるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
(7)別の態様では、上記構成(5)において、前記制御部は、前記各復号部が出力する原データの量ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
(8)更に別の態様では、上記構成(5)において、前記分割情報には、前記原データの先頭から各分割候補位置までの符号語数を表す情報が含まれ、前記制御部は、前記各復号部に割り当てられる符号語数ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、ことを特徴とする。
(9)更に別の態様では、上記構成(5)において、前記符号データはJPEG方式で符号化されたデータであり、前記分割情報には、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値が更に含まれ、前記制御部は、前記各復号部に対し、当該復号部に割り当てられた分割候補位置に対応する直流成分の値を渡し、その直流成分を初期値として直流成分の復号を行わせる、ことを特徴とする。
(10)本発明の別の側面では、原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出し、読み出された前記分割情報に基づき、符号データを復号する複数の復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する、処理をコンピュータに実行させるためのプログラム、を提供する。
上記構成(1)又は(4)によれば、符号ファイルから原データを復号する画像復号装置が復号処理を並列化するための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
上記構成(2)によれば、復号する符号データの符号語数が復号部の処理時間のボトルネックの要因となる場合に、各復号部が復号する範囲の割り当てを適切に行うための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
上記構成(3)によれば、JPEG方式の符号化において、画像復号装置の各復号部において直流成分の再生が適切にできるようにするための判断材料となる分割情報を含んだ符号化ファイルを作成できる。
上記構成(5)又は(10)によれば、符号ファイルの復号処理の並列化を適切に並列化することができる。
上記構成(6)によれば、復号する符号データの量が復号部の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
上記構成(7)によれば、復号部の出力する原テータの量が全体の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
上記構成(8)によれば、復号する符号データの符号語数が復号部の処理時間のボトルネックの要因となる場合に、各復号部に対して適切に復号する範囲の割り当てを行うことができる。
上記構成(9)によれば、JPEG方式において、画像復号装置の各復号部において直流成分の再生が容易になる。
以下、本発明の実施形態を、図面を参照しながら説明する。各図面において、同一又は類似の構成要素には同一符号を付すことで、重複する説明は省略する。
図1に、本実施形態の画像符号化伝送システムの概略的な構成を示す。この例のシステムはJPEG方式で画像圧縮符号化を行うものである。このシステムの画像復号装置200は複数の復号部210−1〜210−N(Nは2以上の整数)により並列的に復号処理を実行することができる(以下、特に区別する必要がない場合は、復号部210と総称する)。このような並列的な復号を可能にするために、画像符号化装置100は、画像復号装置200での復号処理の並列化のための基礎情報(ヒント)となる分割情報1012を含んだJPEGファイル(例えばJFIF又はExif形式のファイル)1000を生成する。分割情報1012は、例えば、元の画像データ中に設定された分割候補位置ごとに、その画像データをJPEG符号化した符号化画像データ1014におけるそれら各分割候補位置に対応するデータ位置の情報を含む。画像符号化装置100は、画像データをJPEG符号化する際に得られる情報から分割情報1012を生成し、この分割情報1012をJPEGファイル1000のヘッダ1010に組み込む。画像復号装置200は、分割情報1012を含んだJPEGファイル1000を受け取った場合、分割情報1012に従ってそのファイル1000中の符号化画像データ1014を複数の部分に分け、それら各部分を各復号部210−1〜210−Nに復号させることで、並列処理を実現する。
図2は、画像符号化装置100の機能構成の一例を示す図である。この画像符号化装置100は、符号化部110と分割情報生成部120とヘッダ生成部130とを備える。
符号化部110は、JPEG符号化を行う。周知のように、JPEG符号化では、入力される画像データ300をブロックに分割し、ブロックごとに離散コサイン変換(DCT)を行い、得られた各DCT係数を量子化し、得られた量子化DCT係数に対して可変長符号化の一種であるハフマン符号化を施す。符号化部110は、入力された画像データ300に対してそのような符号化処理を実行し、その結果得られる符号化画像データを出力する。符号化部110は、符号化処理手順を記述したプログラムをプロセッサに実行させることにより実現してもよいし、その手順の一部又は全部をハードウエア回路として実現してもよい。また、後述する分割情報生成部120及びヘッダ生成部130は、後述する各機能を記述したプログラムをプロセッサに実行させることにより実現することができるが、それら機能のうち一部又は全部をハードウエア回路として構成してもよい。
分割情報生成部120は、符号化部110を監視することで、画像データ300の符号化結果に付する分割情報1012を生成する。図示の例では、分割情報生成部120は、ラインカウンタ122と符号ビットカウンタ124と分割情報テーブル生成部126を備える。ラインカウンタ122は、符号化部110に入力される画像データ300のライン(行)数を計数する。符号ビットカウンタ124は、符号化部110が出力する符号データのビット数を計数する。
分割情報テーブル生成部126は、ラインカウンタ122と符号ビットカウンタ124とから入力される計数値に基づき、例えば図3に例示する分割情報テーブルを作成する。図3の分割情報テーブルは、元の画像データ300の先頭から各分割候補ラインの末尾までの符号化において符号化部110が出力した符号化画像データのビット数が示される。図中「Line」とあるのが分割候補ラインのライン番号を示し、「Code#Size」がそれら各分割候補ラインの末尾までの符号化画像データのビット数を示す。図3に示した例は、画像データ300の総ライン数が3200ラインの場合の例である。またこの例では、最大4並列(4つの復号部による並列処理)での並列処理に対応するために、画像データ300上で1/4,2/4,3/4のデータ量に当たる800,1600,2400ラインに対応する情報が分割情報テーブルに登録されている。最終ラインである3200ラインで画像分割を行うことはないので、3200ラインの情報は分割情報テーブルには原理的には不要であるが、この例では参考情報として含めている。なお最終ラインが何ライン目かの情報はJPEGファイルのヘッダに含まれる画像サイズの情報からも分かる。また、画像データ300の先頭ラインも分割候補位置の1つではあるが、先頭ラインまでの符号化画像データの量は当然ながら0なので、分割情報テーブルからは省略している。
なお、図3の例で例えば画像データの800ライン目を分割候補ラインと呼び、この代わりに801ライン目を分割候補ラインと呼んでもよい。図2〜図4の例において実際に画像データを分割するのは800ライン目と801ライン目との間であり、それを指し示すのに800ライン目と801ライン目のどちらを目印にすることもできる。また、図3の例では、画像データの先頭から800ライン目の最後まで符号化したときの符号化ビット数2015870を分割情報テーブルに記録したが、この代わりに801ライン目の最初のビットの番号すなわち2015871を分割情報テーブルに記録してもよい。
画像データ300のライン数は画像データ300のヘッダ情報などから分かる場合が多い。例えば画像データ300がbmp形式のファイルである場合、そのファイルのヘッダから総ライン数や1ラインの画素数などといった情報を得ることができる。したがって、分割情報テーブル生成部126は、そのような画像データ300から分かる総ライン数の情報に基づき各分割候補ラインを決定すればよい。例えば、総ライン数を、想定される最大並列数で割った数に近い整数を、分割候補ライン数とすればよい。
なお、画像符号化装置100が用いる画像符号化方式が、画像データをブロック分割するものである場合、分割候補ラインのライン番号はブロックのサイズを考慮して決める。例えば、JPEGの場合、縦8画素×横8画素が1ブロックなので、分割候補ラインは8の倍数から選べばよい。また、画像符号化において、例えば色差成分などについて画素のサブサンプリング(間引き)を行う場合は、サブサンプリングを考慮して分割候補ラインを決定する。例えば、JPEG符号化において色差成分の画素数を輝度成分の画素数の1/4にする場合、分割候補ラインは16の倍数から選べばよい。なお、画像データ300をブロック分割しない画像符号化方式を用いる場合は、分割候補ラインの選び方にそのような制約はない。
ヘッダ生成部130は、JPEGファイルに組み込むヘッダ情報を生成する。周知のように、JPEGファイルには、量子化テーブルやハフマンテーブルなどといった復号に必要な各種情報がヘッダ情報として含まれるが、ヘッダ生成部130はそのようなヘッダ情報を生成する。ここで、本実施形態のヘッダ生成部130は、分割情報テーブル生成部126が生成した分割情報テーブルをヘッダ情報に組み込む機能を備える。すなわちヘッダ生成部130は、例えば分割情報テーブルを所定のデータ形式で記述し、その記述をヘッダにコメントとして組み込む。
例えば、図3に示す分割情報テーブルは、例えば次のようなテキストデータとして表すことができる。
Encode information:(Line,Code#Size)=(800,2015879),(1600,4441231),(2400,6732612),(3200,8976743):end
このようなテキストデータを、JFIF等で規定されるコメントの記述としてヘッダに組み込めばよい。なお、分割情報テーブルをヘッダ1010に組み込み可能なテキストデータとして記述するための記述形式は、上述の例に限るものではない。
本実施形態に準拠した画像復号装置は、画像符号化装置100が生成したJPEGファイル1000を復号する際、ヘッダ1010中にコメントとして記述された分割情報1012を参照して復号処理の並列化を行う。一方、本実施形態に準拠しない画像復号装置は、コメントとして記述された分割情報1012を無視し、並列化せずに従来通りの復号処理を行う。
ヘッダ生成部130が生成したヘッダ情報は、画像符号化装置100のメモリ中に確保されたJPEGファイル用メモリ領域400の中の、ヘッダ領域402に書き込まれる。このヘッダ領域402には、分割情報テーブルの情報もコメントとして含まれている。符号化部110が生成した符号化画像データはJPEGファイル用メモリ領域400の中の符号化画像領域404に書き込まれる。なお、符号化画像データのサイズによっては、確保されたメモリ領域400の中に未使用領域406が残ることもある。
画像符号化装置100は、画像データ300の最後まで符号化が終わった後で、JPEGファイル用メモリ領域400上に書き込まれたヘッダ情報及び符号化画像データから、JPEGファイル1000を作成する。
次に、図1の画像符号化装置100に対応する画像復号装置200の機能構成を、図4を参照して説明する。図4には、2つの復号部210−1,210−2を備える画像復号装置200を例示するが、これはあくまで一例に過ぎない。なお、以下の例では、各復号部210−1,210−2の処理能力が同等であるとして説明する。
復号部210−1,210−2は、JPEG符号化された符号化画像データを復号する。周知のように、JPEG復号では、符号化画像データをハフマン復号し、その復号結果を逆量子化し、逆量子化結果を逆DCT(IDCT)処理することで、元の画像を再生する。復号部210−1,210−2は、このようなJPEG復号処理を示すプログラムをプロセッサに実行させることにより実現してもよい。例えば、複数のプロセッサコアを備えるCPUを搭載した汎用コンピュータ上で、JPEG復号プログラムを各プロセッサコアに実行させることで、並列的な復号を行うことができる。また、もちろん個々の復号部210−1,210−2をそれぞれハードウエア回路として構成することもできる。
ヘッダ解析部220は、画像復号化装置200のメモリ中に確保されたJPEGファイル用メモリ領域400のヘッダ領域402にロードされたJPEGファイル1000中のヘッダ1010を解析し、その結果得られたJPEG復号のための情報を、各復号部210−1,210−2に設定する。ヘッダから得られるJPEG復号のための情報には、例えば画像サイズ、量子化テーブルやハフマンテーブルなどがある。
また、ヘッダ解析部220は分割情報解析部222を備える。分割情報解析部222は、ヘッダ1010中のコメントから、分割情報1012の記述形式(例えば上述の例では、"Encode information:"から始まり":end"で終わるテキストデータ)に適合するデータ部分を分割情報として抽出する。そして分割情報解析部222は、抽出した分割情報に基づき、各復号部210−1,210−2に対する復号部分の割り当てを決定する。例えば、各復号部210−1,210−2に割り当てられる画像データのライン数が均等となるように割り当てるとすると、分割情報が図3に示すようなものであれば、復号部210−1には第1ライン〜第1600ライン、復号部210−2には第1601ライン〜第3200ラインを割り当てればよい。この場合、分割情報解析部222は、復号部210−1には、JPEGファイル用メモリ領域400における符号化画像領域404の先頭から1バイト目の1ビット目を復号開始点のアドレス情報として指定し、復号部210−2には、符号化画像領域404の先頭から555154バイト目の8ビット目(すなわち4441231+1ビット目)を復号開始点のアドレス情報として指定すればよい。より厳密に言えば、例えば復号部210−2には、符号化画像領域400の555154バイト目を読込開始アドレスと指定し、読み込んだ555154バイト目の8ビット目を復号処理の開始アドレスとして指定すればよい。また、分割情報解析部222は、復号結果の画像データの書込開始ラインとして、復号部210−1には第1ラインを指定し、復号部210−2には第1601ラインを指定すればよい。復号部210−1、210−2は、その指定に従い、符号化画像データの復号開始点のアドレスから復号を開始し、復号結果の画像データを、復号結果保持用のメモリ領域500における書込開始ラインの先頭画素に対応するメモリアドレスから順に書き込んでいく。なお、分割情報解析部222が、各復号部210−1,210−2に対し、符号化画像データ中での復号終了点又は復号結果中での書込終了ライン又はその両方を指定するようにし、各復号部210−1,210−2がそのような終了点で復号処理を終了するようにしてもよいが、これは必須ではない。仮に復号部210−2が第1601ライン〜第3200ラインまでの復号を完了するまでに、復号部210−1が第1600ラインまでの復号を終え、更に復号を続けたとしても、メモリ領域500の第1601ライン目以降には、復号部210−2が既に書き込んだデータと同じデータが上書きされるだけなので、原理上、悪影響はない。
以上では、2つの復号部210−1,210−2で並列的に符号化画像データを復号する例を示したが、図3のような分割情報がヘッダ1010に含まれていれば、復号部が例えば4つある場合まで対応できる。復号部が4つある場合は、第1の復号部には符号化画像データの1バイト目の1ビット目を、第2の復号部には251984バイト目の7ビット目を、第3の復号部には555154バイト目の8ビット目を、第4の復号部には841577バイト目の5ビット目を、それぞれ復号開始点として指定すればよい。また、書込開始ラインとしては、第1の復号部には第1ラインを、第2の復号部には第801ラインを、第3の復号部には第1601ラインを、第4の復号部には第2401ラインを、それぞれ指定すればよい。いずれにしても、以上のように割り当てを行うことで、各復号部が受け持つデータは、復号結果の画像データのライン数の点で均等になる。復号結果の画像データは、1画素あたり所定ビットの固定長データなので、結局各復号部は復号結果の画像データのデータ量の点で均等になる。
なお、画像復号装置が備える復号部の数が3つの場合は、そのうち1つに画像データの半分のライン数に対応する符号化画像データを割り当て、残りの2つに残りの半分を更に半分に分けて割り当てればよい。また、画像復号装置が備える復号部の数が5以上の場合は、図3の例のように最大4分割に対応する分割情報しかなければ、それら復号部のうち4つを使って並列処理を行えばよい。
次に、図5及び図6を参照して別の実施形態を説明する。この実施形態の画像符号化装置100は、図5に示すように、図2の構成の他に、DC成分取得部125を備えている。DC成分取得部125は、各分割候補ラインの末尾の画素を含むブロックのDC(直流)成分の値を符号化部110から取得する。このようなDC成分の値は、符号化部110中の量子化部の出力(言い換えればハフマン符号化部への入力)を監視することで求めることができる。分割情報テーブル126は、それら各DC成分の値を含んだ分割情報テーブルを生成する。この実施形態の分割情報テーブルの例を、図6に示す。図6の例では、800,1600,2400の各分割候補ラインの末尾の画素が含まれるブロックのDC成分値が、輝度成分Y及び各色差成分Cb(輝度成分と青成分との差),Cr(輝度成分と赤成分との差)のそれぞれについて示される。図6では、輝度成分のDC成分が"Last#Y"、Cb成分のDC成分が"Last#Cb"、Cr成分のDC成分が"Last#Cr"というタイトルで示されている。なお、最終ラインである3200ライン目の情報は、分割候補ラインの情報としてはなくてもよい。
ヘッダ生成部130は、このような分割情報テーブルの情報を、例えば次のような形で記述し、ヘッダ1010にコメントとして組み込めばよい。
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
図5の画像符号化装置に対応する画像復号装置の構成は、図4に示すようなものでよい。ただし、この画像復号装置では、分割情報解析部222が、各分割候補ラインに対応するDC成分の値を読み出し、それらDC成分の値を各復号部210−1,210−2に初期値として設定する。例えば、図6に示すような分割情報に基づき、符号化画像データを2つの復号部210−1,210−2に分けて並列的に復号する場合、復号部210−1には、復号化画像データの復号開始点として1バイト目の1ビット目を、復号結果の書込開始ラインとして第1ラインを、DC成分の初期値としてY=0,Cb=0,Cr=0を、それぞれ設定して復号を行わせる。同様に復号部210−2には、復号化画像データの復号開始点として555154バイト目の8ビット目を、復号結果の書込開始ラインとして第1601ラインを、DC成分の初期値として(Y,Cb,Cr)=(25,130,140)を、それぞれ設定して復号を行わせる。JPEG符号化では、各ブロックのDC成分を符号化する場合に、前のブロックのDC成分との差分を符号化するので、復号では、前のブロックのDC成分の再生値に対し、当該ブロックのDC差分値を加えることで、当該ブロックのDC成分の再生値を求める。したがって復号部210−2は、その初期値に対し、最初のブロックのDC差分を足すことで最初のブロックのDC成分の再生値を求め、以降第2,第3のブロックのDC成分値も同様に求める。
なお、画像復号装置に復号部が4つある場合は、図6の分割情報に基づき、第1,第2,第3及び第4の復号部に対してそれぞれDC成分の初期値を(20,128,127),(25,130,140),(46,125,166),(38,120,153)と設定すればよい。
なお、以上の例は元の画像データがフルカラーデータの場合の例である。元の画像データが単色のデータであれば、DC成分は1つでよい。
また、図5及び図6の実施形態のように、DC成分の初期値を分割情報に組み込んでおかなくても、画像復号装置は、各復号部で並列的に復号を行った後、第1の復号部の復号結果の最後のブロックのDC成分の再生値を求め、この再生値を、第2の復号部の出力における各ブロックのDC差分に加算することで、第2の復号部の出力の各ブロックにおける正しいDC成分を求めることができる。同様に、第3,第4の復号部の出力についても、同様に各ブロックのDC成分を補正することができる。
次に、更に別の実施形態を、図7を参照して説明する。図2〜図4を用いて説明した実施形態では、各復号部が出力する画像データのライン数ができるだけ均等になるように各復号部に対する復号範囲の割り当てを行った。この代わりに、この実施形態では、各復号部に割り当てる符号化画像データの量ができるだけ均等になるように割り当てを行う。
この実施形態の画像符号化装置の機能構成は、図2に示すようなものでよい。ただし、分割情報テーブル生成部126は、図7に示すように、図3の場合よりも密度の高い分割情報テーブルを生成する。図7の例では、元の画像データ300の16ラインごとに分割候補ラインを設定し、先頭から各分割候補ラインまでの符号化において符号化部110が出力した符号ビット数(Code#Size)をテーブルに記録している。このテーブルは、図2〜図4の例と同様にして例えば以下のようなテキストデータで記述することができ、これをJPEGファイル1000のヘッダ1010にコメントとして組み込むことができる。
Encode information:(Line,Code#Size)=(16,44883),(32,89003),(48,134668),…,(1440,4445897) ,(1456,4488301) ,(1472,4535892),…, (3200,8976743):end
なお、図7では、画像データの16ラインごとに分割候補ラインを設定したが、16ラインごとというのはあくまで一例にすぎない。分割候補ラインの間隔は、JPEG方式の場合8の整数倍ラインごと(画素のサブサンプリングが行われる場合は更にそのサブサンプリングの比率を考慮したライン数ごと)であればよい。これは他の実施形態で例示する分割情報テーブルでも同じである。
画像復号装置200の分割情報解析部222は、このような分割情報をJPEGファイルのヘッダ1010から読み出す。そして、画像復号装置200内の復号部210の数に基づき、それら各復号部210が復号する符号化画像データのビット数ができるだけ同じようになる分割候補ラインをその分割情報の中から探し出して用いる。例えば、分割情報が図7のようなものであり、画像復号装置200が備える復号部210の数が2つの場合、符号化画像データの総ビット数8976743の半分に最も近いビット数を持つ1456ライン目の分割候補ラインを選択すればよい。そして、第1の復号部には符号化画像データの1バイト目から読み込み、その1ビット目から復号を開始し、復号結果を画像の1ライン目から書き込むように指定し、第2の復号部には561038バイト目から読み込み、その6ビット目から復号を開始し、復号結果を画像の1457ライン目から書き込むように指定すればよい。
画像復号装置200の持つ復号部の数がN個の場合、符号化画像データの総ビット数の1/N,2/N,3/N,・・・,k/N,・・・,(N−1)/Nにそれぞれもっとも近い符号ビット数をCode#Sizeとして持つラインで画像を分割し、各復号部にそれら各分割部分を割り当てればよい。この場合、第1番目の復号部には符号化画像データの1ビット目を復号の開始点として割り当て、第k番目(kは2〜Nの整数)の復号部には、符号化画像データの総ビット数の(k−1)/Nに最も近い符号ビット数を持つ分割候補ラインの符号ビット数に1を足した番号のビットを復号の開始点として割り当てればよい。
以上では、図7のように分割候補ラインの密度が高い分割情報を用いて各復号部に割り当てられる画像データのライン数ができるだけ均等になるように割り当てを行ってもよい。
次に、更に別の実施形態を、図8及び図9を参照して説明する。この実施形態では、画像復号装置の持つ各復号部に割り当てる符号語の数ができるだけ均等になるように割り当てを行う。
このため、画像符号化装置100は、図8に示すように、符号化部110が出力する符号語の数を計数する符号語カウンタ128を備える。符号語カウンタ128は、符号化部110の出力を監視することで、出力される各符号語を識別し、それら符号語を計数する。符号語カウンタ128はソフトウエア的に実現してもよいし、ハードウエア回路として実現してもよい。
分割情報テーブル生成部126は、符号化対象である画像データ300の先頭から各分割候補ラインの末尾までの符号化において符号化部110が出力した符号語数を、分割情報テーブルに登録する。このようにして生成される分割情報テーブルの例を、図9に示す。図9に例示するテーブルにおいて、「Hufword#cnt」というタイトルで示される項目が符号語数を示す。図9のテーブルは、例えば次のようなテキストデータとして表現して、ヘッダ1010にコメントとして組み込むことができる。
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
画像復号装置200の分割情報解析部222は、このような分割情報をJPEGファイルのヘッダ1010から読み出し、各復号部210が復号する符号語の数ができるだけ同じようになる分割候補ラインをその分割情報の中から探し出して用いる。例えば、分割情報が図9のようなものであり、画像復号装置200が備える復号部210の数が2つの場合、符号化画像データの総符号語数17953350の半分に最も近い符号語数を持つ1456ライン目の分割候補ラインを選択すればよい。そして、第1の復号部には符号化画像データの1バイト目から読み込み、その1ビット目から復号を開始し、復号結果を画像の1ライン目から書き込むように指定し、第2の復号部には561038バイト目から読み込み、その6ビット目から復号を開始し、復号結果を画像の1457ライン目から書き込むように指定すればよい。同様に、画像復号装置200が備える復号部210の数がN個の場合は、第1番目の復号部には符号化画像データの1ビット目を復号の開始点として割り当て、第k番目(kは2〜Nの整数)の復号部には、符号化画像データの総符号語数の(k−1)/Nに最も近い符号語数を持つ分割候補ラインの符号ビット数に1を足した番号のビットを復号の開始点として割り当てればよい。
なお、図7の実施形態でも、図8及び図9の実施形態でも、分割情報テーブルにおける各分割候補ラインのエントリにそのラインの末尾に該当するブロックのDC成分の値を登録し、各復号部におけるDC差分計算の初期値として用いるようにしてもよい。
以上、複数の実施形態を説明したが、それら各実施形態はそれぞれ例えば次のような場合に好適である。
例えば、復号部210をハードウエア回路として構成する場合、符号画像データに対してハフマン方式の可変長復号を施すモジュールと、その可変長復号結果に対して逆DCT(IDCT)を施すモジュールとを直列に接続したモジュールとすることが考えられる。このような構成において、乗算器の数を少なくするなどしてIDCTモジュールの回路規模を削減した場合には、可変長復号モジュールの処理よりもIDCTモジュールの処理の方が復号部210全体の処理のボトルネックとなる。可変長復号モジュールの出力はDC成分及び各周波数のAC(交流)成分についての量子化DCT係数であり、その数は復号結果の画素の数に比例する。従って、IDCTモジュールの処理に要する時間も、復号結果の画素数に依存する。IDCTモジュールが処理のボトルネックになるということは、結局復号処理全体に要する時間が、符号画像データのデータ量よりも復号結果の画素数に依存するということである。したがって、このような復号部210を複数有する画像復号装置で、並列化により各復号部の処理時間を平準化しようとすれば、各復号部に対する復号範囲の割り当ては、図2〜図4を用いて説明した実施形態のように、復号結果のライン数(言い換えれば画素数)ができるだけ均等になるようにすればよい。
また、図10に示すように復号部210が可変長復号モジュール211、IDCTモジュール212、及びIDCT結果に対して画像処理等の後処理を行う後処理モジュール213を直列に接続したものであり、後処理モジュール213の処理時間が復号部210の全体の処理のボトルネックである場合も、上述の場合と同様、各復号部210に対して復号結果のライン数(言い換えれば画素数)ができるだけ均等になるように割り当てを行えばよい。
可変長復号モジュールの処理時間が復号部210全体の処理のボトルネックとなる場合は、以上のケースとは事情が異なる。可変長復号モジュールは1符号語ごとに1回の処理を行うので、復号部210全体の処理時間は入力される符号語の数に依存することになる。したがって、このような場合、各復号部210の処理時間を平準化しようとすれば、図8及び図9を用いて説明した実施形態のように、各復号部に割り当てる符号語の数ができるだけ均等になるように割り当てを行えばよい。例えば、図11に示すように、複数の可変長復号モジュール211の出力がバッファとなるメモリ214を介して、処理能力の高いIDCTモジュール212に入力される回路構成において、可変長復号モジュール211の処理がボトルネックになるような場合も、このようなケースの一例である。
また、図12に示すように、各復号部210がそれぞれメモリアクセス部215を備え、符号化画像データを有するJPEGファイル用メモリ領域400に対し、それぞれ個別にメモリアクセスを行う場合には、上述の各例とは異なったケースとなる場合がある。すなわち、このような復号部210が、他のデバイスと共にメモリ領域400が確保されているメモリチャネルの帯域を共有する場合など、各復号部210に割り当てられるメモリ帯域に制限があるなどしてメモリアクセスが復号部210全体の処理のボトルネックとなる。このような場合には、各復号部210の処理時間を均等化するには、各復号部210のメモリアクセスの回数をできるだけ均等になるように割り当てを行えばよい。このためには、図7を用いて説明した実施形態のように、各復号部210が復号する符号化画像データのビット数ができるだけ均等になるように割り当てを行えばよい。なお、このような割り当ては、メモリアクセス調停部230が各メモリアクセス部215からのデータ要求を受け取り、それらを調停することにより実行すればよい。なお、復号部210のメモリアクセスが、復号部210全体の処理のボトルネックとなる場合には、上述の例以外にもあり得る。
以上説明したように、復号部210のどのような部分が処理のボトルネックになるかに応じて、各復号部210への適切な割り当て方式が変わってくる。そこで、図9のように、分割候補ライン数の間隔が密で、符号語数の情報も含んだ分割情報をJPEGファイルに組み込んでおき、画像復号装置200が、自分が持つ復号部210の特性に応じ、上記いずれの方式で各復号部210への割り当てを行うかを判定するようにしてもよい。
以上に説明した各実施形態の画像符号化装置100は、例えばスキャナやプリンタ、デジタル複合機に組み込むことができる。例えば、スキャナの場合、スキャンした画像を各実施形態のいずれかの画像符号化装置の機能により符号化し、符号化ファイルを作成すればよい。プリンタの場合は、ホストから送られてきたページ記述言語の印刷データから印刷に用いることのできる画像データを生成し、それを一時的に蓄えるなどの目的で符号化する場合に、上述の画像符号化装置100の機能を用いることができる。もちろん、画像符号化装置100は、デジタルカメラ、デジタルビデオカメラ等といった他の種類の装置に組み込むこともできる。また、各実施形態の画像復号装置200は、例えばプリンタやデジタル複合機の内蔵する機能として実現することができる。これらの装置の場合、符号化ファイルから画像を再生して印刷する場合に、上述の画像復号装置200の技術を適用することができる。なお、以上に例示したのは、各実施形態の適用分野の一例に過ぎない。
以上、各実施形態を説明した。上記実施形態では、画像復号装置内の各復号部に対するデータ範囲の割り当ての境界を示す元の画像データ上での境界を「ライン」(画像における行)としたが、これは必須のことではない。ラインの途中の画素を境界とする場合でも、その画素の位置が何ライン目の何画素目であるかを分割候補位置の情報として分割情報に含めるようにすれば、画像復号装置での並列的な復号結果を正しく合成して元の画像データを再生できる。なお、JPEGのようにブロックごとの処理を行う場合は、分割候補位置はブロックの単位を考慮して定めればよい。更に画素のサブサンプリングを行う場合には、サブサンプリングのレートを考慮して定めればよい。
また、以上の各実施形態ではJPEG符号化方式を例にとったが、それら各実施形態の手法は、JPEGに限らず、可変長符号化を用いる他の画像符号化・復号方式(例えばMPEGやJPEG2000など)にも適用可能である。
また、以上の各実施形態では可変長符号化方式としてハフマン符号化を例にとったが、算術符号化など他の符号化方式を用いる場合にも上記各実施形態の手法は適用可能である。また、上記実施形態の手法は原理的にはデータの表す内容によるものではないので、画像以外のデータについても適用可能である。
100 画像符号化装置、110 符号化部、120 分割情報生成部、122 ラインカウンタ、124 符号ビットカウンタ、126 分割情報テーブル生成部、130 ヘッダ生成部、200 画像復号装置、210−1〜210−N 復号部。
Claims (10)
- 原データを符号化して符号データを生成する符号化部と、
前記符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成する分割情報生成部と、
前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成するファイル生成部と、
を備えるデータ符号化装置。 - 請求項1記載のデータ符号化装置であって、
前記分割情報生成部は、前記符号化部の出力する符号語を計数することにより、前記原データの先頭から各分割候補位置までの符号語数を表す情報を更に含んだ分割情報を生成する、
ことを特徴とするデータ符号化装置。 - 請求項1記載のデータ符号化装置であって、
前記符号化部はJPEG方式の符号化を行い、
前記分割情報生成部は、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値を更に含んだ分割情報を生成する、
ことを特徴とするデータ符号化装置。 - 原データを符号化して符号データを生成する符号化部の出力する符号データの量を計数することにより、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報、を生成し、
前記符号化部が出力した符号データと、前記分割情報生成部が生成した分割情報と、を含む符号ファイルを生成する、
処理をコンピュータに実行させるためのプログラム。 - 符号データを復号する複数の復号部と、
原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出す読出部と、
読み出された前記分割情報に基づき、前記各復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する制御部と、
を備えるデータ復号装置。 - 請求項5記載のデータ復号装置であって、
前記制御部は、前記各復号部に割り当てられる符号データの量ができるだけ均等になるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。 - 請求項5記載のデータ復号装置であって、
前記制御部は、前記各復号部が出力する原データの量ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。 - 請求項5記載のデータ復号装置であって、
前記分割情報には、前記原データの先頭から各分割候補位置までの符号語数を表す情報が含まれ、
前記制御部は、前記各復号部に割り当てられる符号語数ができるだけ均等となるよう前記各復号部に対して前記分割候補位置を割り当てる、
ことを特徴とするデータ復号装置。 - 請求項5記載のデータ復号装置であって、
前記符号データはJPEG方式で符号化されたデータであり、
前記分割情報には、前記原データの各分割候補位置に対応して前記符号化部が出力した直流成分の値が更に含まれ、
前記制御部は、前記各復号部に対し、当該復号部に割り当てられた分割候補位置に対応する直流成分の値を渡し、その直流成分を初期値として直流成分の復号を行わせる、
ことを特徴とするデータ復号装置。 - 原データを符号化した符号データと、前記原データの各分割候補位置に対応する符号データ中のデータ位置を表す分割情報と、を含む符号ファイルから前記分割情報を読み出し、
読み出された前記分割情報に基づき、符号データを復号する複数の復号部に対してそれぞれ異なる分割候補位置を割り当て、割り当てた分割候補位置に対応する符号データ中のデータ位置から復号を開始させ、
前記各復号部の復号結果がそれぞれ当該復号部に対応する分割候補位置に従って組み立てられるように制御する、
処理をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295094A JP2008113268A (ja) | 2006-10-31 | 2006-10-31 | データ符号化装置、データ復号装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295094A JP2008113268A (ja) | 2006-10-31 | 2006-10-31 | データ符号化装置、データ復号装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008113268A true JP2008113268A (ja) | 2008-05-15 |
Family
ID=39445532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006295094A Pending JP2008113268A (ja) | 2006-10-31 | 2006-10-31 | データ符号化装置、データ復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008113268A (ja) |
-
2006
- 2006-10-31 JP JP2006295094A patent/JP2008113268A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6120490B2 (ja) | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム | |
US8457428B2 (en) | Image coding apparatus, control method thereof, and storage medium | |
US9083977B2 (en) | System and method for randomly accessing compressed data from memory | |
US7643694B2 (en) | Method and apparatus for processing a compressed image in an order other than the order in which it was compressed | |
US9002122B2 (en) | System and method for improving decoder performance using quantization control | |
US8538180B2 (en) | Method and apparatus for generating JPEG files suitable for parallel decoding | |
US8600183B2 (en) | Optimized method and system for entropy coding | |
JP2000278685A (ja) | 可変長符号化バイナリ・ビットストリームの処理方法 | |
US8094952B2 (en) | Image processing apparatus and image processing method | |
JP2004194266A (ja) | 画像処理装置 | |
US8175401B2 (en) | Image processing apparatus and computer readable medium storing program therefor | |
JP2006093958A (ja) | プログレッシブjpeg復号化システム | |
JP2006325186A (ja) | 画像処理装置 | |
US7123656B1 (en) | Systems and methods for video compression | |
JP6569949B2 (ja) | データ復号のための装置および方法 | |
JP3835273B2 (ja) | 画像符号化復号装置 | |
JP2003189109A (ja) | 画像処理装置及び方法、並びにコンピュータ・プログラム | |
JP2008113268A (ja) | データ符号化装置、データ復号装置 | |
WO2015041652A1 (en) | A progressive jpeg bitstream transcoder and decoder | |
JP6490272B2 (ja) | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム | |
US20210352303A1 (en) | Method for processing transform coefficients | |
JP2001217722A (ja) | 情報符号化装置及び情報符号化方法及びコンピュータ読み取り可能な記憶媒体 | |
US8160376B2 (en) | Image compression apparatus | |
JP2005277758A (ja) | 画像復号装置 | |
JP6223012B2 (ja) | 画像符号化装置及び画像符号化方法 |