(57)【要約】  【課題】  比較的低コストで、高速な符号化処理を実現する符号化装置を提供する。  【解決手段】  符号化装置２は、単一のソースコーダで生成されるシンボル（中間コード）を複数のエントロピーコーダ（ハフマン符号器Ａ及びハフマン符号器Ｂ）に振り分けて、これらのエントロピーコーダでシンボルを並行してエントロピー符号化させる。これにより、符号化処理の高速化を実現する。また、ソースコーダ及びエントロピーコーダを含む全体を並列化する場合に比較して、本符号化装置２は、ソースコーダに要するコストを抑えることができる。【選択図】図３
2007214998.tif 000002
【特許請求の範囲】
【請求項１】
入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成する中間コード生成手段と、
エントロピー符号化処理を行う複数の符号化手段と、
前記中間コード生成手段により生成された中間データを、複数の前記符号化手段それぞれに割り当てて符号化させる割当手段と
を有する符号化装置。
【請求項２】
前記割当手段は、前記中間コード生成手段により生成された中間コードのうち、同一の符号空間で符号が割り当てられる複数の中間コードを、出現した順序で複数の符号化手段に割り当てる
請求項１に記載の符号化装置。
【請求項３】
前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードの種類に応じて、複数の前記符号化手段のいずれかに割り当てる
請求項１に記載の符号化装置。
【請求項４】
前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードに対応付けられた符号空間に応じて、複数の前記符号化手段のいずれかに割り当てる
請求項１に記載の符号化装置。
【請求項５】
前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードに対応するコンテクストに応じて、複数の前記符号化手段のいずれかに割り当てる
請求項１に記載の符号化装置。
【請求項６】
複数の前記符号化手段により符号化された複数の中間データを、符号空間を区別できる態様で統合する符号統合手段
をさらに有する請求項１に記載の符号化装置。
【請求項７】
複数の前記符号化手段は、互いに並行して符号化処理を行うことができるハードウェアである
請求項１〜６のいずれかに記載の符号化装置。
【請求項８】
複数の符号ビット列が含まれた符号データを復号化する復号化装置であって、
エントロピー復号化処理を行う複数の復号化手段と、
入力された符号データに含まれる複数の符号ビット列を、複数の前記復号化手段に分配する符号分配手段と、
複数の前記復号化手段による復号結果を統合する統合手段と
を有する復号化装置。
【請求項９】
複数の前記復号化手段は、互いに並行して復号化処理を行うことができるハードウェアであり、
前記符号分配手段は、複数の前記復号化手段それぞれの処理負荷に応じて、符号ビット列を分配する
請求項８に記載の復号化装置。
【請求項１０】
前記符号データには、それぞれの符号ビット列について前記復号化手段のいずれかを指定する指定情報が含まれており、
前記符号分配手段は、前記指定情報に応じて、それぞれの符号ビット列を前記復号化手段のいずれかに割り当てる
請求項８に記載の復号化装置。
【請求項１１】
複数のエントロピー符号化器を用いた符号化方法であって、
入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成し、
生成された中間データを、複数の前記エントロピー符号化器それぞれに割り当て、
複数の前記エントロピー符号化器それぞれが、割り当てられた中間データをエントロピー符号化する
符号化方法。
【請求項１２】
複数のエントロピー復号化器を用いた復号化方法であって、
入力された符号データに含まれる複数の符号ビット列を、複数の前記エントロピー復号化器に分配し、
複数の前記エントロピー復号化器が、分配された符号ビット列を復号化し、
複数の前記エントロピー復号化器による復号結果を統合して、復号データを生成する
復号化方法。
【請求項１３】
複数のエントロピー符号化器を有する符号化装置において、
入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成するステップと、
生成された中間データを、複数の前記エントロピー符号化器それぞれに割り当てるステップと
を前記符号化装置に実行させるプログラム。
【請求項１４】
複数のエントロピー復号化器を有する復号化装置において、
入力された符号データに含まれる複数の符号ビット列を、複数の前記エントロピー復号化器に分配するステップと、
複数の前記エントロピー復号化器による復号結果を統合して、復号データを生成するステップと
を前記復号化装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを符号化する符号化装置に関する。
【背景技術】
【０００２】
例えば、特許文献１は、入力された画像を複数の符号器に均等に振り分けながら複数の符号器で並列して処理を行う符号化処理を開示する。
【特許文献１】特開２０００−２１７００３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、上述した背景からなされたものであり、より高速に符号化処理を行う符号化装置を提供することを目的とする。
また、本発明は、より高速に復号化処理を行う復号化装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
［符号化装置］
上記目的を達成するために、本発明にかかる符号化装置は、入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成する中間コード生成手段と、エントロピー符号化処理を行う複数の符号化手段と、前記中間コード生成手段により生成された中間データを、複数の前記符号化手段それぞれに割り当てて符号化させる割当手段とを有する。
【０００５】
好適には、前記割当手段は、前記中間コード生成手段により生成された中間コードのうち、同一の符号空間で符号が割り当てられる複数の中間コードを、出現した順序で複数の符号化手段に割り当てる。
【０００６】
好適には、前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードの種類に応じて、複数の前記符号化手段のいずれかに割り当てる。
【０００７】
好適には、前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードに対応付けられた符号空間に応じて、複数の前記符号化手段のいずれかに割り当てる。
【０００８】
好適には、前記割当手段は、前記中間コード生成手段により生成された中間コードを、それぞれの中間コードに対応するコンテクストに応じて、複数の前記符号化手段のいずれかに割り当てる。
【０００９】
好適には、複数の前記符号化手段により符号化された複数の中間データを、符号空間を区別できる態様で統合する符号統合手段をさらに有する。
【００１０】
好適には、複数の前記符号化手段は、互いに並行して符号化処理を行うことができるハードウェアである。
【００１１】
［復号化装置］
また、本発明にかかる復号化装置は、複数の符号ビット列が含まれた符号データを復号化する復号化装置であって、エントロピー復号化処理を行う複数の復号化手段と、入力された符号データに含まれる複数の符号ビット列を、複数の前記復号化手段に分配する符号分配手段と、複数の前記復号化手段による復号結果を統合する統合手段とを有する。
【００１２】
好適には、複数の前記復号化手段は、互いに並行して復号化処理を行うことができるハードウェアであり、前記符号分配手段は、複数の前記復号化手段それぞれの処理負荷に応じて、符号ビット列を分配する。
【００１３】
好適には、前記符号データには、それぞれの符号ビット列について前記復号化手段のいずれかを指定する指定情報が含まれており、前記符号分配手段は、前記指定情報に応じて、それぞれの符号ビット列を前記復号化手段のいずれかに割り当てる。
【００１４】
［符号化方法］
また、本発明にかかる符号化方法は、複数のエントロピー符号化器を用いた符号化方法であって、入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成し、生成された中間データを、複数の前記エントロピー符号化器それぞれに割り当て、複数の前記エントロピー符号化器それぞれが、割り当てられた中間データをエントロピー符号化する。
【００１５】
［復号化方法］
また、本発明にかかる復号化方法は、複数のエントロピー復号化器を用いた復号化方法であって、入力された符号データに含まれる複数の符号ビット列を、複数の前記エントロピー復号化器に分配し、複数の前記エントロピー復号化器が、分配された符号ビット列を復号化し、複数の前記エントロピー復号化器による復号結果を統合して、復号データを生成する。
【００１６】
［プログラム］
また、本発明にかかるプログラムは、複数のエントロピー符号化器を有する符号化装置において、入力データに基づいて、エントロピー符号化処理の対象となる中間データを生成するステップと、生成された中間データを、複数の前記エントロピー符号化器それぞれに割り当てるステップとを前記符号化装置に実行させる。
【００１７】
また、本発明にかかるプログラムは、複数のエントロピー復号化器を有する復号化装置において、入力された符号データに含まれる複数の符号ビット列を、複数の前記エントロピー復号化器に分配するステップと、複数の前記エントロピー復号化器による復号結果を統合して、復号データを生成するステップとを前記復号化装置に実行させる。
【発明の効果】
【００１８】
本発明の符号化装置又は復号化装置によれば、より高速に符号化処理又は復号化処理を行うことができる。
【発明を実施するための最良の形態】
【００１９】
［背景と概略］
符号化処理は、入力データを中間コードに変換するソースコーダと、中間コードを符号データに変換するエントロピーコーダとによって実現されることが多い。
ソースコーダは、処理の方式によって分岐を生じにくくできるが、エントロピーコーダは、中間コードの出現確率の偏りを利用するため、本質的に分岐処理を包含する。そのため、エントロピーコーダが実装上のボトルネックになることがある。
【００２０】
一般に、エントロピー符号化は、ある符号語の復号結果が次の符号語の復号に影響する。例えば、エントロピー符号化でもっともポピュラーな手法の１つに、ハフマン符号化方式（Huffman符号化方式）がある。ハフマン符号化方式では、符号化の対象となるシンボル（すなわち、中間コード）と、符号語とが１対１に対応する。ハフマン符号化方式の場合、シンボル毎に符号語の長さが異なる可変長符号なので、その前の符号語の終端が次の符号語の始端を決める。ここで生じる分岐のために処理負荷にペナルティが生じるだけでなく、並列化などの高速化が行いにくくなる。
【００２１】
そこで、本実施形態における画像処理装置２は、シンボル（中間コード）を、複数のストリームに分解することで、エントロピー符号化処理を並列に処理し、高速処理を実現する。
このシンボルの分解には、いくつか基準がありうるが、本質的には異なるストリームを独立にエントロピー符号化することによって、高速化を図る。
より具体的には、図１（Ａ）に例示するように、本画像処理装置２は、単一のソースコーダで生成されるシンボル（中間コード）を複数のエントロピーコーダ（本例では、エントロピーコーダＡ及びエントロピーコーダＢ）に振り分けて、シンボルを並行してエントロピー符号化する。
【００２２】
なお、図１（Ｂ）に例示するように、ソースコーダ及びエントロピーコーダを含む全体を並列化することも考えられるが、ソースコーダに要するコストを勘案すると、図１（Ａ）に例示する形態が好ましい。
また、ソースコーダを並列化すると、元のデータ（例えば、画像データ）を既定の単位で分割する必要があるため、分割境界領域に劣化が生ずる可能性がある。この点からも、図１（Ａ）に例示する形態が、図１（Ｂ）に例示する形態よりも好ましいといえる。
【００２３】
［第１実施形態］
まず、本実施形態における画像処理装置２のハードウェア構成を説明する。
図２は、本発明にかかる符号化方法及び復号化方法が適応される画像処理装置２のハードウェア構成を、制御装置２１を中心に例示する図である。
図２に例示するように、画像処理装置２は、ＣＰＵ２１２及びメモリ２１４などを含む制御装置２１、通信装置２２、ＨＤＤ・ＣＤ装置などの記録装置２４、並びに、ＬＣＤ表示装置あるいはＣＲＴ表示装置およびキーボード・タッチパネルなどを含むユーザインターフェース装置（ＵＩ装置）２５から構成される。
画像処理装置２は、例えば、プリンタ装置３の内部に設けられた処理ユニットであり、本発明にかかる符号化プログラム５及び復号化プログラム６（後述）がインストールされている。なお、本例では、プログラムの形式で説明するが、符号化プログラム５及び復号化プログラム６の全部又は一部（例えば、後述のハフマン符号器、算術符号器、ハフマン復号器及び算術復号器など）がＡＳＩＣなどのハードウェアで実現されてもよい。
【００２４】
［符号化プログラム］
図３は、制御装置２１（図２）により実行され、本発明にかかる符号化方法を実現する第１の符号化プログラム５の機能構成と、本発明にかかる復号化方法を実現する第１の復号化プログラム６の機能構成とを例示する図である。
図３に例示するように、第１の符号化プログラム５は、シンボル生成部５００、シンボル分配部５１０、及び、複数のハフマン符号器（本例では、第１のハフマン符号器Ａ５２２及び第２のハフマン符号器Ｂ５２４）を有する。
なお、シンボル生成部５００はソースコーダに相当し、ハフマン符号器Ａ５２２及びハフマン符号器Ｂ５２４はそれぞれエントロピーコーダに相当する。
【００２５】
符号化プログラム５において、シンボル生成部５００は、入力されたデータに基づいて、エントロピー符号化処理の対象となる中間コード（すなわち、シンボル）を生成し、生成されたシンボルをシンボル分配部５１０に出力する。
本例では、ＬＺ符号化方式に属するデフレート（deflate）方式を用いて画像データを符号化する場合を具体例として説明する。そのため、本例のシンボル生成部５００は、入力された画像データを、リテラル（画素値そのもの）、又は、一致長（length）及び参照距離（distance）の組に変換する。すなわち、デフレート方式では、リテラルと、一致長及び参照距離の組とがシンボルとなる。この参照距離は、処理対象となる注目データ列から、参照すべきデータ列（参照データ列）までの距離を示し、一致長は、注目データ列と参照データ列とが一致する長さを示す。
【００２６】
シンボル分配部５１０は、シンボル生成部５００により生成されたシンボルを、複数のハフマン符号器（ハフマン符号器Ａ及びハフマン符号器Ｂ）に割り当てる。
本例のデフレート方式では、一致長及び距離の組と、リテラルとは、同じ符号空間を共有する。正確には、一致長（length）とリテラル（literal）が１つの符号空間に存在し、距離（distance）は、一致長などと別の符号空間が与えられているが、一致長（length）及び距離（distance）の組み合わせを１つの符号語（中間コード）と見ることも可能であり、その限りにおいて、符号空間を共有しているといえる。したがって、直前のシンボルが、一致長及び距離の組、又は、リテラルのいずれであっても、次のシンボルの種別には影響しない。
そこで、本例のシンボル分配部５１０は、シンボル生成部５００から入力されたシンボル（一致長及び距離の組、又は、リテラル）を、入力順（出現順）に、ハフマン符号器Ａ５２２Ａ又はハフマン符号器Ｂ５２４に対して交互に割り当てる。
【００２７】
ハフマン符号器Ａ５２２及びハフマン符号器Ｂ５２４は、共に、ハフマン符号化処理を行う。すなわち、ハフマン符号器Ａ５２２及びハフマン符号器Ｂ５２４は、互いに独立に、シンボル分配部５１０から入力されるシンボルをハフマン符号に変換する。
本例では、ハフマン符号器Ａ５２２により生成された出力符号Ａは、復号化プログラム６のハフマン復号器Ａ６０２に入力され、ハフマン符号器Ｂ５２４により生成された出力符号Ｂは、復号化プログラム６のハフマン復号器Ｂ６０４に入力される。
【００２８】
図３に例示するように、第１の復号化プログラム６は、複数のハフマン復号器（本例では、第１のハフマン復号器Ａ６０２及び第２のハフマン復号器Ｂ６０４）、シンボル統合部６１０、及び復号画像生成部６２０を有する。
【００２９】
復号化プログラム６において、ハフマン復号器Ａ６０２は、ハフマン符号器Ａ５２２から入力された出力符号Ａを復号化し、復号化されたシンボルをシンボル統合部６１０に出力する。
ハフマン復号器Ｂ６０４は、ハフマン復号器Ａ６０２とは独立に、ハフマン符号器Ｂ５２４から入力された出力符号Ｂを復号化し、復号化されたシンボルをシンボル統合部６１０に出力する。
【００３０】
シンボル統合部６１０は、複数のハフマン復号器（本例では、ハフマン復号器Ａ及びハフマン復号器Ｂ）から入力されるシンボルを統合して、統合されたシンボルを復号画像生成部６２０に出力する。
本例の符号化プログラム５では、出現順にシンボルをハフマン符号器に割り当てているので、本例のシンボル統合部６１０は、ハフマン復号器Ａ６０２から入力されたシンボルと、ハフマン復号器Ｂから入力されたシンボルを交互にマージする。
【００３１】
復号画像生成部６２０は、シンボル統合部６１０から入力されたシンボルに基づいて、元のデータを再現する。
本例の復号画像生成部６２０は、シンボル統合部６１０から入力されたシンボル（一致長及び距離の組、並びに、リテラル（画素値））に基づいて、デフレート方式に従って、復号画像を生成する。
【００３２】
図４（Ａ）は、シンボル生成部５００により生成されたシンボル群を例示し、図４（Ｂ）は、シンボル分配部５１０により分配されたシンボル群を例示する図である。
符号化処理においては、シンボル生成部５００は、図４（Ａ）に例示するように、入力された画像データにおいて、注目画素と、参照バッファ（ウインドウ）内の参照画素とを比較して、いずれの参照画素も注目画素と一致しない場合には、画素値そのものであることを示すリテラル（種別）、及び、画素値（値）をシンボルとし、参照画素と注目画素とが一致する場合には、最長一致長を算出し、その一致長及び距離をシンボルとする。
このように順次生成されるシンボルは、シンボル分配部５１０によって、図４（Ｂ）に例示するように、ハフマン符号器Ａ及びハフマン符号器Ｂに交互に振り分けられる。
ハフマン符号器Ａに振り分けられたシンボル群（＃１、＃３、＃５）と、ハフマン符号器Ｂに振り分けられたシンボル群（＃２、＃４）とは、互いに独立に符号化されるため、互いに独立した符号空間で符号化されることになる。
なお、復号化処理では、ハフマン復号器Ａにより復号化されたシンボル群（＃１、＃３、＃５）と、ハフマン復号器Ｂにより復号化されたシンボル群（＃２、＃４）とは、シンボル統合部６１０によって統合され、図４（Ａ）に例示するシンボル群（＃１〜＃５）となる。
【００３３】
図５は、符号化プログラム５（図３）による符号化処理（Ｓ１０）のフローチャートである。
図５に示すように、ステップ１００（Ｓ１００）において、シンボル生成部５００（図３）は、入力された画像データを複数のシンボルに変換し、変換されたシンボル群（図４（Ａ））をシンボル分配部５１０に出力する。
【００３４】
ステップ１１０（Ｓ１１０）において、符号化プログラム５は、処理対象となるシンボルが奇数番目のシンボルである場合には、Ｓ１２０の処理に移行し、処理対象となるシンボルが偶数番目のシンボルである場合には、Ｓ１４０の処理に移行する。
なお、本フローチャートでは、説明の便宜上、Ｓ１１０において奇数番目であるか偶数番目であるかによって処理を分岐させているが、実際には、シンボル分配部５１０が、シンボル生成部５００から入力されるシンボルを、入力された順序で交互にハフマン符号器Ａ５２２又はハフマン符号器Ｂ５２４に割り当てるだけである。
【００３５】
ステップ１２０（Ｓ１２０）において、シンボル分配部５１０は、シンボル生成部５００から入力されたシンボルをハフマン符号器Ａ５２２に出力する。
【００３６】
ステップ１３０（Ｓ１３０）において、ハフマン符号器Ａ５２２は、シンボル分配部５１０から入力されたシンボルをハフマン符号に変換し、変換されたハフマン符号（出力符号Ａ）を外部に出力する。
【００３７】
ステップ１４０（Ｓ１４０）において、シンボル分配部５１０は、シンボル生成部５００から入力されたシンボルをハフマン符号器Ｂ５２４に出力する。
【００３８】
ステップ１５０（Ｓ１５０）において、ハフマン符号器Ｂ５２４は、ハフマン符号器Ａ５２２とは独立に、シンボル分配部５１０から入力されたシンボルをハフマン符号に変換し、変換されたハフマン符号（出力符号Ｂ）を外部に出力する。
【００３９】
ステップ１６０（Ｓ１６０）において、符号化プログラム６は、全てのシンボルが符号化されたか否かを判断し、未処理のシンボルが存在する場合には、Ｓ１１０の処理に戻って、次のシンボルを処理し、全てのシンボルが符号化された場合には、符号化処理（Ｓ１０）を終了する。
【００４０】
図６は、復号化プログラム６（図３）による復号化処理（Ｓ２０）のフローチャートである。
図６に示すように、ステップ２００（Ｓ２００）において、復号化プログラム６は、符号化プログラム５から符号データが入力される符号化処理を開始する。
【００４１】
ステップ２１０（Ｓ２１０）において、ハフマン復号器Ａ６０２は、符号化プログラム５（具体的には、ハフマン符号器Ａ５２２）から入力される出力符号Ａを復号化し、復号化されたシンボルをシンボル統合部６１０に出力する。
【００４２】
ステップ２２０（Ｓ２２０）において、ハフマン復号器Ｂ６０４は、ハフマン復号器Ａ６０２と独立して、符号化プログラム５（具体的には、ハフマン符号器Ｂ５２４）から入力される出力符号Ｂを復号化し、復号化されたシンボルをシンボル統合部６１０に出力する。
なお、本例では、Ｓ２１０におけるハフマン復号化処理と、Ｓ２２０におけるハフマン復号化処理とが、実質的に並行に実施される。
【００４３】
ステップ２３０（Ｓ２３０）において、シンボル統合部６１０は、ハフマン復号器Ａ６０２及びハフマン復号器Ｂ６０４から入力されるシンボルを交互にマージして、マージされたシンボル群を復号画像生成部６２０に出力する。
【００４４】
ステップ２４０（Ｓ２４０）において、復号画像生成部６２０は、シンボル統合部６１０から入力されたシンボル群（すなわち、交互にマージした統合シンボル）に基づいて、復号画像を生成する。
【００４５】
以上説明したように、本実施形態における画像処理装置２は、複数のハフマン符号器でハフマン符号化処理を実施することにより、符号化処理を高速化することができる。
また、本画像処理装置２は、単一のシンボル生成部５００でソースコーディングを行うため、比較的低コストで実装可能である。
また、本画像処理装置２は、複数のハフマン復号器でハフマン復号化処理を実施することにより、復号化処理を高速化することができる。
【００４６】
［第２実施形態］
次に、第２の実施形態を説明する。
上記実施形態では、デフレート方式に本発明を適用した形態を説明したが、第２の実施形態では、ＪＰＥＧのＤＣＴ方式（以下、単にＪＰＥＧとあらわす）に本発明を適用した場合を具体例として説明する。
図７（Ａ）は、第２の符号化プログラム５２の機能構成を例示し、図７（Ｂ）は、第２の復号化プログラム６２の機能構成を例示する図である。
図７（Ａ）に例示するように、符号化プログラム５２は、第２のシンボル生成部５３０、第２のシンボル分配部５１２、輝度用ハフマン符号器５４２、及び、色差用ハフマン符号器５４４を有する。また、第２のシンボル生成部５３０は、色変換部５３２、直交変換部５３４及び量子化部５３６を含む。
符号化プログラム５２において、色変換部５３２は、入力された画像データを輝度色差系（ＹＣｂＣｒ色空間）の画像データに変換し、輝度成分（Ｙ成分）及び色差成分（Ｃｂ成分及びＣｒ成分）からなる画像データを直交変換部５３４に出力する。
直交変換部５３４は、色変換部５３２から入力された輝度成分及び色差成分それぞれに対して、直交変換（具体的には、離散コサイン変換（ＤＣＴ））を施し、各変換係数を量子化部５３６に出力する。
量子化部５３６は、直交変換部５３４から入力された変換係数に対して、量子化処理を施して、量子化処理が施された変換係数をシンボルとしてシンボル分配部５１２に出力する。
【００４７】
シンボル分配部５１２は、量子化部５３６から入力された変換係数（シンボル）を、シンボルの種類に応じて、複数のハフマン符号器に割り当てる。
本例のシンボル分配部５１２は、量子化部５３６から入力される変換係数のうち、輝度成分（Ｙ成分）の変換係数を輝度用ハフマン符号器５４２に割り当て、色差成分（Ｃｂ成分及びＣｒ成分）の変換係数を色差用ハフマン符号器５４４に割り当てる。
【００４８】
輝度用ハフマン符号器５４２及び色差用ハフマン符号器５４４は、それぞれシンボル分配部５１２から入力される変換係数に対して２次元ハフマン符号化処理を施して、生成されたハフマン符号を外部に出力する。
【００４９】
ハフマン符号化は、シンボル毎に設計するが、種別の異なるシンボル毎に、独立に設計することがある。例えば、ＪＰＥＧの場合、ＤＣ成分の差分の符号表と、ＡＣ成分の符号表とは、独立に設計されており、さらに、それぞれが輝度用と色差用とで独立な符号空間を持つため、都合４種類の符号表を使い分ける。
本例では、このシンボルの種別（符号空間）ごとに、符号を分割する。この場合、それぞれのエントロピーコーダ（輝度用ハフマン符号器５４２及び色差用ハフマン符号器５４４）が、互いに異なる符号空間を担当するので、複数のエントロピーコーダが重複して同一の符号表を持つ必要がなくなる。
ただし、単純に４つに分割すると効率が悪い。その理由は、ＪＰＥＧが８×８ブロックを処理単位とすることにある。すなわち、１つのブロックについて、ＤＣ成分は１個であるのに対して、ＡＣ成分は、最大６３個発生しうる。したがって、ＤＣ成分とＡＣ成分とを並列化した場合に、ＤＣ成分を担当するエントロピーコーダの負荷が軽くなりすぎ、コストと性能のバランスが悪い。
これに対して、輝度成分と色差成分は、ＡＣ成分とＤＣ成分ほど個数の差がない。例えば、ＪＰＥＧで標準的に使われる、いわゆる４：２：２サンプリングでは、輝度成分（Ｙ成分）と色差成分（Ｃｂ成分及びＣｒ成分）のブロック数が等しい。したがって、本例のシンボル分配部５１２は、輝度成分を輝度用ハフマン符号器５４２に割り当て、色差成分を色差用ハフマン符号器５４４に割り当てて、輝度成分及び色差成分を並列化させ、バランス良く処理する。
【００５０】
図７（Ｂ）に例示するように、復号化プログラム６２は、輝度用ハフマン復号器６３２、色差用ハフマン復号器６３４、第２のシンボル統合部６１２、及び、第２の復号画像生成部６４０を有する。また、第２の復号画像生成部６４０は、逆量子化部６４２、逆直交変換部６４４、及び、色変換部６４６を含む。
復号化プログラム６２において、輝度用ハフマン復号器６３２は、輝度成分のハフマン符号を復号化し、復号化された輝度成分のシンボル（Ｙ成分の変換係数）をシンボル統合部６１２に出力する。
色差用ハフマン復号器６３４は、色差成分のハフマン符号を復号化し、復号化された色差成分のシンボル（Ｃｂ成分及びＣｒ成分の変換係数）をシンボル統合部６１２に出力する。
第２のシンボル統合部６１２は、複数のハフマン復号器から入力されるシンボルを、シンボルの種類に応じて統合し、統合されたシンボル群を逆量子化部６４２に出力する。
逆量子化部６４２は、シンボル統合部６１２から入力されたシンボル（変換係数）に対して逆量子化処理を施して、変換係数の逆量子化値を算出し、算出された逆量子化値を逆直交変換部６４４に出力する。
逆直交変換部６４４は、逆量子化部６４２から入力された逆量子化値（変換係数）に対して逆直交変換（具体的には、逆離散コサイン変換）を施して、輝度色差系の画像データを生成し、生成された画像データ（ＹＣｂＣｒ）を色変換部６４６に出力する。
色変換部６４６は、逆直交変換部６４４から入力された画像データ（ＹＣｂＣｒ）に対して色変換処理を施して、例えば、ＲＧＢの画像データを生成する。
【００５１】
以上説明したように、第２の実施形態における画像処理装置２は、ＪＰＥＧ方式で生成されるシンボル（変換係数）を、シンボルの種類（輝度成分であるか色差成分であるか）に応じて複数のハフマン符号器に分配して、シンボル（変換係数）を並行して符号化する。これにより、比較的低コストで、ＪＰＥＧ方式の符号化処理を高速化できる。
また、本画像処理装置２は、輝度成分の符号と、色差成分の符号とをそれぞれ並行して復号化して、輝度成分のシンボル（変換係数）及び色差成分のシンボル（変換係数）を生成し、生成されたシンボルに基づいて復号画像を生成する。これにより、比較的低コストで、ＪＰＥＧ方式の復号化処理を高速化できる。
【００５２】
なお、本例では、Ｙ成分、Ｃｂ成分及びＣｒ成分が、それぞれ４：２：２でサンプリングされることを前提として、輝度成分（Ｙ成分）と、色差成分（Ｃｒ成分及びＣｂ成分）とを並列化したが、サンプリングの比率によって並列化の方法を変更してもよい。
例えば、Ｙ成分、Ｃｂ成分及びＣｒ成分を４：４：４サンプリングした場合には、Ｙ成分、Ｃｂ成分及びＣｒ成分が、それぞれ同じブロック数になるため、Ｙ成分用のハフマン符号器、Ｃｂ成分用のハフマン符号器、及びＣｒ成分用のハフマン符号器を設けて、３つの色成分を並列化させてもよい。また、４：２：０サンプリングする場合などには、輝度成分２に対して色差成分１となるため、２つの輝度用ハフマン符号器と、１つの色差用ハフマン符号器とを設けて並列化してもよい。
【００５３】
［第３実施形態］
次に、第３の実施形態を説明する。
上記実施形態では、いずれもハフマン符号を用いる形態を説明したが、第３の実施形態では、ＪＢＩＧやＪＰＥＧ２０００で採用されている算術符号を用いる場合を説明する。
算術符号化方式では、コンテクストを使ったマルコフモデリングでエントロピーを下げるのが一般的だが、これは、仮想的にはコンテクスト数だけの算術符号化器を備えるのと同値である。
そこで、本実施形態では、コンテクストの数だけ、あるいはコンテクストのＩＤ順や出力頻度などでグルーピングして、そのグループ毎に符号を分割する。以下、一例としてＪＢＩＧ方式に適用する場合を具体例として説明する。
【００５４】
図８（Ａ）は、第３の符号化プログラム５４の機能構成を例示し、図８（Ｂ）は、第３の復号化プログラム６４の機能構成を例示する図である。
図８（Ａ）に例示するように、符号化プログラム５４は、コンテクストモデリング部５５０、第３のシンボル分配部５１４、複数のシンボルキュー（シンボルキューＡ５６２及びシンボルキューＢ５６４）、及び、複数の算術符号器（算術符号器Ａ５７２及び算術符号器Ｂ５７４）を有する。
コンテクストモデリング部５５０は、入力された画像データについて、コンテクストモデリングを行って、コンテクストを決定し、決定されたコンテクストをシンボル分配部５１４に出力する。
シンボル分配部５１４は、コンテクストモデリング部５５０から入力されたコンテクストに基づいて、シンボルの振分け先を決定する。本例のシンボル分配部５１４は、コンテクストを２つのグループ（グループＡ及びグループＢ）に分類し、処理対象となる画素のコンテクストがグループＡに属する場合には、この画素のシンボルをシンボルキューＡ５６２に出力し、処理対象となる画素のコンテクストがグループＢに属する場合には、この画素のシンボルをシンボルキューＢ５６４に出力する。
【００５５】
シンボルキューＡ５６２は、グループＡに属するコンテクストを有する画素のシンボルをバッファリングし、シンボルキューＢ５６４は、グループＢに属するコンテクストを有する画素のシンボルをバッファリングする。コンテクストの場合、出力順や輝度色差別のように固定的に順序良く分配がされるとは限らない。つまり、短期的に特定のコンテクストが出現した場合、特定の算術符号器のみが稼動して並列化の効果が減少する可能性がある。そこで、ソースコーダ（コンテクストモデリング）とエントロピーコーダ（算術符号化）の干渉バッファとして、シンボルキューＡ５６２及びシンボルキューＢ５６４が設けられている。これによって、局所的なコンテクストの偏りが吸収される。
【００５６】
算術符号器Ａ５７２は、シンボルキューＡ５６２から入力されるシンボルを算術符号に変換し、算術符号器Ｂ５７４は、シンボルキューＢ５７４から入力されるシンボルを算術符号に変換する。
【００５７】
図８（Ｂ）に例示するように、復号化プログラム６４は、複数の算術復号器（算術復号器Ａ６５２及び算術復号器Ｂ６５４）、複数のシンボルキュー（シンボルキューＡ６６２及びシンボルキューＢ６６４）、第３のシンボル統合部６１４、第３の復号画像生成部６７０、及びコンテクストモデリング部６８０を有する。
復号化プログラム６４において、算術復号器Ａ６５２は、グループＡに属するコンテクストの符号データを算術復号化し、復号化されたシンボルをシンボルキューＡ６６２に出力する。
算術復号器Ｂ６５４は、グループＢに属するコンテクストの符号データを算術復号化し、復号化されたシンボルをシンボルキューＢ６６４に出力する。
シンボルキューＡ６６２及びシンボルキューＢ６６４は、それぞれ算術復号器Ａ６５２及び算術復号器Ｂ６５４から入力されたシンボルをバッファリングする。
シンボル統合部６１４は、シンボルキューＡ６６２及びシンボルキューＢ６６４にバッファリングされているシンボルを、コンテクストモデリング部６８０により生成されたコンテクストに基づいて統合し、統合されたシンボルを復号画像生成部６７０に出力する。
復号画像生成部６７０は、シンボル統合部６１４から入力されたシンボルに基づいて、復号画像を生成し、生成された復号画像を外部に出力する。
コンテクストモデリング部６８０は、復号画像生成部６７０から順に出力される画素データ（復号画像の一部）に基づいて、コンテクストを決定し、決定されたコンテクストをシンボル統合部６１４に出力する。
【００５８】
以上説明したように、本実施形態における画像処理装置２は、コンテクストに応じて、シンボルを複数の算術符号器に割り当てる。これにより、複数の算術符号器で同一の符号表を共有することなく、算術符号化処理を並列化できる。
【００５９】
［変形例１］
以下、上記実施形態の変形例を説明する。なお、以下、第１の実施形態に対する変形例を説明するが、第２及び第３の実施形態についても同様の変形が可能である。
まず、第１の変形例として、複数の符号ストリームを１つの符号ストリームに統合する形態を説明する。上記実施形態では、シンボル群を複数のエントロピー符号器（ハフマン符号器又は算術符号器）に割り当てるため、複数のエントロピー符号器それぞれから符号ストリームが生成される。そのため、複数の符号ストリームを分けて管理する必要がある。例えば、ＰＤＦのイメージオブジェクトのように、複数の符号を１ファイルの中に統合するようなメタファイルでデータ列を構成することが考えられる。
本変形例では、複数の符号ストリームそれぞれを分割し、インターリーブすることにより、１つの符号ストリームに統合する。例えば、ブロック（又はライン）単位でインターリーブしてもよいし、符号の固定長ごとにインターリーブしてもよい。このとき、インターリーブした符号の種別（いずれの符号ストリームに属するか）は、既定の識別情報（例えば、それぞれの位置と長さの情報を集約したヘッダ情報、又は、それぞれのデータの先頭に挿入するマーカ）として符号データに付加される。
【００６０】
図９（Ａ）は、第１の変形例における符号化プログラム５６の機能構成を例示し、図９（Ｂ）は、第１の変形例における復号化プログラム６６の機能構成を例示する図である。
図９（Ａ）に例示するように、第１の変形例における符号化プログラム５６は、第１の符号化プログラム５（図３）に符号統合部５８０を追加した構成をとる。
符号統合部５８０は、ハフマン符号器Ａ５２２から出力される出力符号Ａ、及び、ハフマン符号器Ｂ５２４から出力される出力符号Ｂを統合し、統合された符号データに対して、それぞれの符号が出力符号Ａに属するか出力符号Ｂに属するかを示す識別情報を付与する。すなわち、識別情報は、いずれのエントロピー復号器（ハフマン復号器又は算術復号器）で復号化すべきかを示す情報であり、場合によっては、それぞれの符号に適用すべき符号空間を区別するための情報である。
【００６１】
図９（Ｂ）に例示するように、第１の変形例における復号化プログラム６６は、第１の復号化プログラム６（図３）に符号分配部６９０を追加した構成をとる。
符号分配部６９０は、符号プログラム５６により生成された符号データを複数の符号に分割し、分割された符号を、符号データに付加された識別情報に基づいて、ハフマン復号器Ａ６０２又はハフマン復号器Ｂ６０４に出力する。
【００６２】
図１０（Ａ）は、符号統合部５８０により生成される固定長ヘッダ形式の符号データ９を例示し、図１０（Ｂ）は、符号統合部５８０により生成される固定長マーカ形式の符号データ９２を例示する図である。
図１０（Ａ）に例示するように、固定長ヘッダ形式の符号データ９は、ヘッダ情報９０２と、固定長の符号ビット列９０４とを含む。
各符号ビット列９０４は、複数のハフマン符号器（図９のハフマン符号器Ａ５２２及びハフマン符号器Ｂ５２４）それぞれから出力される符号ストリームが既定の長さで分割されたものである。本図の「符号＃１−１」は、ハフマン符号器Ａから出力された符号ストリームの一部であり、「符号＃２−１」及び「符号＃２−２」は、ハフマン符号器Ｂから出力された符号ストームの一部である。
ヘッダ情報９０２は、各符号ビット列９０４がいずれの符号ストリームに属するかを示す情報である。換言すると、ヘッダ情報９０２は、それぞれの符号ビット列９０４をいずれのエントロピー復号器（ハフマン復号器Ａ又はハフマン復号器Ｂ）で復号化すべきかを示す情報である。本図の「＃１−１」は、最初の符号ビット列９０４が第１のハフマン符号器（本例では、図９のハフマン符号器Ａ）で復号化すべき１番目のビット列であることを示し、次の「＃２−１」は、２番目の符号ビット列９０４が第２のハフマン符号器（本例では、図９のハフマン符号器Ｂ）で復号化すべき１番目のビット列であることを示し、次の「＃２−２」は、３番目の符号ビット列９０４が第２のハフマン符号器で符号化すべき２番目のビット列であることを示す。
【００６３】
また、符号統合部５８０は、図１０（Ｂ）に例示するように、固定長マーカ形式の符号データ９２を生成してもよい。
固定長マーカ形式の符号データ９２は、複数の符号ビット列９０４と、これらのビット列それぞれに関連付けられたマーカ９０６とを含む。
各マーカ９０６は、関連付けられた符号ビット列９０４がいずれの符号ストリームに属するか（すなわち、いずれのエントロピー復号器で復号化すべきか）を示している。本例の「符号１」は、第１のハフマン符号器（本例では、図９のハフマン符号器Ａ）で復号化すべきビット列であることを示し、「符号２」は、第２のハフマン符号器（本例では、図９のハフマン符号器Ｂ）で復号化すべきビット列であることを示す。
【００６４】
また、符号統合部５８０（図９）は、図１１（Ａ）に例示するように、可変長ヘッダ形式の符号データ９４を生成してもよいし、図１１（Ｂ）に例示するように、可変長マーカ形式の符号データ９６を生成してもよい。
これらの場合には、符号統合部５８０は、出現順（例えばライン毎）に各符号ストリームを分割して符号ビット列９０８を生成し、順番にマージする。この場合には、各符号ストリームに属するビット列が交互にでてくるため、出現順が固定になるが、各ビット列の長さが必要になる。そこで、符号統合部５８０は、図１１（Ａ）に例示するヘッダ情報９１０、又は、図１１（Ｂ）に例示するマーカ９１２に、ビット列の長さを示す情報を含ませる。
【００６５】
このように、複数の符号ストリームをインターリーブして１つの符号データに統合することにより、符号データの取扱いが容易になる。
【００６６】
［変形例２］
次に、第２の変形例として、エントロピー符号器の数と、エントロピー復号器の数とが異なる場合を説明する。上記実施形態では、エントロピー符号器の数とエントロピー復号器の数とが等しい形態を説明したが、これに限定されるものではなく、エントロピー符号器の数がエントロピー復号器よりも多くてもよいし、エントロピー復号器の数がエントロピー符号器よりも多くてもよい。
【００６７】
例えば、ハフマン符号のように、符号器及び復号器が状態を持つ必要がないアルゴリズムでは、符号ビット列９０４（図１０）がいずれの復号器で復号されても構わない。
そこで、このような場合には、図１２に例示するように、符号化プログラム５６のハフマン符号器の数（本例では２つ）が、復号化プログラム６８のハフマン復号器の数（本例では、３つ）と異なってもよい。
この場合、例えば、符号分配部６９０は、複数のハフマン復号器（ハフマン復号器Ａ６０２〜ハフマン復号器Ｃ６０６）のうち、手の空いたハフマン復号器（すなわち、処理負荷の軽いハフマン復号器）に符号ビット列を割り当てる。各符号ビット列は、部分ブロックに分割されていることが望ましい。
また、この場合には、シンボル統合部６１０は、シンボルの順番を間違えないようにするために、例えば、図１０又は図１１に例示したヘッダ情報又はマーカに基づいて、シンボル群を統合する。
【００６８】
また、これと逆に、エントロピー復号器に要するコストを抑えたい場合には、図１３に例示するように、復号化プログラム６９に含まれるエントロピー復号器の数（本例では、１つのハフマン復号器６００）を、符号化プログラム５６のエントロピー符号器（本例では、２つのハフマン復号器）よりも少なくしてもよい。この場合に、ハフマン復号器６００は、時分割によって仮想的に複数の復号化処理を並列実行する。
また、この場合のシンボル統合部６１０は、ハフマン復号器６００による時分割処理に備えて、緩衝用のバッファを持つことが望ましい。
また、図１４に例示するように、符号化プログラム５９に含まれるエントロピー符号器を１つにし、符号化プログラム６６に含まれるエントロピー復号器を複数設けてもよい（本例では、１つのハフマン符号器、２つのハフマン復号器）。
この場合、ハフマン符号器５２０は、時分割によって、仮想的に複数の符号化処理を並列実行する。
このように、エントロピー符号器とエントロピー復号器との組合せは、種々考えられ、符号化処理及び復号化処理に要求される処理速度、実装上許容されるコストなどに応じて、適宜選択できる。
【図面の簡単な説明】
【００６９】
【図１】エントロピーコードのみを並列化した場合と、符号化処理全体を並列化した場合とを比較するための図である。
【図２】本発明にかかる符号化方法及び復号化方法が適応される画像処理装置２のハードウェア構成を、制御装置２１を中心に例示する図である。
【図３】第１の符号化プログラム５の機能構成と、第１の復号化プログラム６の機能構成とを例示する図である。
【図４】（Ａ）は、シンボル生成部５００により生成されたシンボル群を例示し、（Ｂ）は、シンボル分配部５１０により分配されたシンボル群を例示する図である。
【図５】符号化プログラム５（図３）による符号化処理（Ｓ１０）のフローチャートである。
【図６】復号化プログラム６（図３）による復号化処理（Ｓ２０）のフローチャートである。
【図７】（Ａ）は、第２の符号化プログラム５２の機能構成を例示し、（Ｂ）は、第２の復号化プログラム６２の機能構成を例示する図である。
【図８】（Ａ）は、第３の符号化プログラム５４の機能構成を例示し、（Ｂ）は、第３の復号化プログラム６４の機能構成を例示する図である。
【図９】（Ａ）は、第１の変形例における符号化プログラム５６の機能構成を例示し、（Ｂ）は、第１の変形例における復号化プログラム６６の機能構成を例示する図である。
【図１０】（Ａ）は、符号統合部５８０により生成される固定長ヘッダ形式の符号データ９を例示し、（Ｂ）は、符号統合部５８０により生成される固定長マーカ形式の符号データ９２を例示する図である。
【図１１】（Ａ）は、符号統合部５８０により生成される可変長ヘッダ形式の符号データ９４を例示し、（Ｂ）は、符号統合部５８０により生成される可変長マーカ形式の符号データ９６を例示する図である。
【図１２】２つのハフマン符号器が設けられた符号化プログラムと、３つのハフマン復号器が設けられた復号化プログラムとの組合せを例示する図である。
【図１３】２つのハフマン符号器が設けられた符号化プログラムと、１つのハフマン復号器が設けられた復号化プログラムとの組合せを例示する図である。
【図１４】１つのハフマン符号器が設けられた符号化プログラムと、２つのハフマン復号器が設けられた復号化プログラムとの組合せを例示する図である。
【符号の説明】
【００７０】
２・・・画像処理装置
５・・・符号化プログラム
５００・・・シンボル生成部
５１０・・・シンボル分配部
５２２、５２４・・・ハフマン符号器
５８０・・・符号統合部
６・・・復号化プログラム
６０２、６０４・・・ハフマン復号器
６１０・・・シンボル統合部
６２０・・・復号画像生成部
６９０・・・符号分配部
９・・・符号データ
９０２・・・ヘッダ情報
９０４・・・符号ビット列
【図１】
2007214998.tif 000003
【図２】
2007214998.tif 000004
【図３】
2007214998.tif 000005
【図４】
2007214998.tif 000006
【図５】
2007214998.tif 000007
【図６】
2007214998.tif 000008
【図７】
2007214998.tif 000009
【図８】
2007214998.tif 000010
【図９】
2007214998.tif 000011
【図１０】
2007214998.tif 000012
【図１１】
2007214998.tif 000013
【図１２】
2007214998.tif 000014
【図１３】
2007214998.tif 000015
【図１４】
2007214998.tif 000016