(57)【要約】 【課題】圧縮率の向上を図ることができる画像処理装置および画像処理方法を提供する。【解決手段】本発明に係る画像処理装置は、符号化を行う符号化部２０４を有する。符号化部２０４は、データ読み込み部３００、ラインメモリ制御部３０１、ラインメモリ３０２、予測処理部３０３、予測誤差処理部３０４、スライド／リスト生成処理部３０５、符号フォーマット生成処理部３０６、および、符号書き込み部３０７を有する。スライド／リスト生成処理部３０５は、入力される予測誤差値と、スライド記憶部に記憶された過去の予測誤差値のそれぞれとを比較する。そして、入力された予測誤差値が、スライド記憶部内の過去の予測誤差値のうちの何れとも一致していなかった場合は、入力された予測誤差値が求められた注目画素の画素値を、ESCデータとして後段の符号フォーマット生成処理部３０６へ出力する。【選択図】図１
2012129778.tif 000002
【特許請求の範囲】
【請求項１】
画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段と、
前記第１記憶手段から、符号化対象である注目画素の画素値と、当該注目画素の周辺の画素の画素値とを読み出す第１読み出し手段と、
前記第１読み出し手段で読み出された前記周辺の画素の画素値に基づいて、前記注目画素の画素値の予測値を算出する第１予測値算出手段と、
前記第１予測値算出手段で算出された前記予測値と、前記注目画素の画素値との差分である予測誤差を算出する予測誤差算出手段と、
一方の端から、前記予測誤差算出手段で算出された前記予測誤差が順次に入力され、入力された前記予測誤差を記憶するとともに、既に記憶された前記予測誤差を他方の端側へ移動して記憶する第２記憶手段と、
前記第２記憶手段に入力される前記予測誤差を、当該第２記憶手段に既に記憶されている前記予測誤差のそれぞれと比較する比較手段と、
前記比較手段による比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差と一致していた場合は、順次に入力される前記予測誤差からなる入力データ列と一致する、前記第２記憶手段に連続して記憶される前記予測誤差からなるデータ列を探索する探索手段と、
前記探索手段で探索された前記データ列の長さを示すレングス情報を生成するレングス情報生成手段と、
前記探索手段で探索された前記データ列の開始データが記憶されていた前記第２記憶手段内の位置を示すアドレス情報を生成するアドレス情報生成手段と、
前記レングス情報生成手段で生成された前記レングス情報、および、前記アドレス情報生成手段で生成された前記アドレス情報を符号化した第１符号データを生成する第１符号データ生成手段と、
前記比較手段による比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差のうちの何れとも一致していなかった場合は、当該入力された前記予測誤差が求められた前記注目画素の画素値を符号化した第２符号データを生成する第２符号データ生成手段と、を備える、
ことを特徴とする画像処理装置。
【請求項２】
前記第１記憶手段は、
１ライン分の画素値を記憶可能であって、前記注目画素の画素値が順次に書き込まれる第１領域と、
前記注目画素が属するラインの直前のラインであって、既に符号化が終了したラインに属する複数の画素の各々の画素値が記憶される第２領域と、を有し、
前記第１領域に書き込まれた１ライン分の画素値の符号化が終了したときに、その符号化が終了した１ライン分の画素値を、前記第２領域に上書きする上書手段をさらに備える、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１符号データ生成手段で生成された前記第１符号データ、および、前記第２符号データ生成手段で生成された前記第２符号データを記憶する第３記憶手段と、
前記第３記憶手段に記憶されたデータを読み出す第２読み出し手段と、
前記第２読み出し手段で読み出された前記データが前記第１符号データであるか前記第２符号データであるかを判定する判定手段と、
前記判定手段による判定の結果、前記データが前記第１符号データである場合、当該第１符号データから前記レングス情報および前記アドレス情報を特定する第１特定手段と、
前記第１特定手段で特定された前記レングス情報および前記アドレス情報を用いて、復号すべき前記画素の前記予測誤差を特定する第２特定手段と、
既に復号が終了した前記画素の画素値を記憶する第４記憶手段と、
前記復号すべき前記画素の周辺の画素の画素値を前記第４記憶手段から読み出し、その読み出した周辺の画素の画素値に基づいて、当該復号すべき前記画素の画素値の予測値を算出する第２予測値算出手段と、
前記復号すべき前記画素の前記予測誤差と、前記第２予測値算出手段で算出された前記予測値とから、前記復号すべき前記画素の画素値を求めて復号する第１復号手段と、
前記判定手段による判定の結果、前記データが前記第２符号データである場合、当該第２符号データで特定される画素値を求めて復号する第２復号手段と、を備える、
ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段から、符号化対象である注目画素の画素値と、当該注目画素の周辺の画素の画素値とを読み出す第１ステップと、
前記第１ステップで読み出された前記周辺の画素の画素値に基づいて、前記注目画素の画素値の予測値を算出する第２ステップと、
前記第２ステップで算出された前記予測値と、前記注目画素の画素値との差分である予測誤差を算出する第３ステップと、
一方の端から、前記第３ステップで算出された前記予測誤差が順次に入力され、その入力された前記予測誤差を記憶するとともに、既に記憶された前記予測誤差を他方の端側へ移動して記憶する第２記憶手段の前記一方の端から入力される前記予測誤差を、当該第２記憶手段に既に記憶されている前記予測誤差のそれぞれと比較する第４ステップと、
前記第４ステップによる比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差と一致していた場合は、順次に入力される前記予測誤差からなる入力データ列と一致する、前記第２記憶手段に連続して記憶される前記予測誤差からなるデータ列を探索する第５ステップと、
前記第５ステップで探索された前記データ列の長さを示すレングス情報を生成する第６ステップと、
前記第５ステップで探索された前記データ列の開始データが記憶されていた前記第２記憶手段内の位置を示すアドレス情報を生成する第７ステップと、
前記第７ステップで生成された前記レングス情報、および、前記アドレス情報生成手段で生成された前記アドレス情報を符号化した第１符号データを生成する第８ステップと、
前記第４ステップによる比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差のうちの何れとも一致していなかった場合は、当該入力された前記予測誤差が求められた前記注目画素の画素値を符号化した第２符号データを生成する第９ステップと、を備える、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置では、入力された画像データを一時的にメモリに記憶し、このメモリに記憶された画像データを所定のタイミングで読み出して、印刷動作を行う。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になりコストが上昇する。そのため、一般的には、入力された画像データを圧縮符号化してメモリに格納するようにしている。
【０００３】
例えば特許文献１には、ＬＺ７７法を用いて圧縮符号化を行う技術が開示されている。
より具体的には、入力データを格納するスライド記憶部内で、順次に入力される画像データからなる入力データ列と一致する、過去の連続する画像データからなるデータ列を探索し、その一致情報（位置情報や長さなど）を符号化するという具合である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、符号化対象の画素（「注目画素」と呼ぶ）の画素値と、当該注目画素の周辺画素の画素値から求められる当該注目画素の予測画素値との差分である予測誤差値が入力データとして採用される場合を想定する。この場合、入力された予測誤差値が、スライド記憶部に既に記憶されている予測誤差値と一致していた場合は、スライド記憶部内で、順次に入力される予測誤差値からなる入力データ列と一致する、過去の連続する予測誤差値からなるデータ列を探索するリスト探索処理が行われ、探索されたリストの情報が符号化される。一方、入力された予測誤差が、スライド記憶部に既に記憶されている予測誤差値と一致していなかった場合は、その入力された予測誤差値が符号化される。
【０００５】
しかしながら、予測誤差値は、正の値だけでなく、負の値になることもあるので、予測誤差値の符号化に必要なビット数が多くなってしまい、十分な圧縮率を得られないという問題がある。
【０００６】
本発明は、上記に鑑みてなされたものであって、圧縮率の向上を図ることができる情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段と、前記第１記憶手段から、符号化対象である注目画素の画素値と、当該注目画素の周辺の画素の画素値とを読み出す第１読み出し手段と、前記第１読み出し手段で読み出された前記周辺の画素の画素値に基づいて、前記注目画素の画素値の予測値を算出する第１予測値算出手段と、前記第１予測値算出手段で算出された前記予測値と、前記注目画素の画素値との差分である予測誤差を算出する予測誤差算出手段と、一方の端から、前記予測誤差算出手段で算出された前記予測誤差が順次に入力され、入力された前記予測誤差を記憶するとともに、既に記憶された前記予測誤差を他方の端側へ移動して記憶する第２記憶手段と、前記第２記憶手段に入力される前記予測誤差を、当該第２記憶手段に既に記憶されている前記予測誤差のそれぞれと比較する比較手段と、前記比較手段による比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差と一致していた場合は、順次に入力される前記予測誤差からなる入力データ列と一致する、前記第２記憶手段に連続して記憶される前記予測誤差からなるデータ列を探索する探索手段と、前記探索手段で探索された前記データ列の長さを示すレングス情報を生成するレングス情報生成手段と、前記探索手段で探索された前記データ列の開始データが記憶されていた前記第２記憶手段内の位置を示すアドレス情報を生成するアドレス情報生成手段と、前記レングス情報生成手段で生成された前記レングス情報、および、前記アドレス情報生成手段で生成された前記アドレス情報を符号化した第１符号データを生成する第１符号データ生成手段と、前記比較手段による比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差のうちの何れとも一致していなかった場合は、当該入力された前記予測誤差が求められた前記注目画素の画素値を符号化した第２符号データを生成する第２符号データ生成手段と、を備えることを特徴とする。
【０００８】
また、本発明は、画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段から、符号化対象である注目画素の画素値と、当該注目画素の周辺の画素の画素値とを読み出す第１ステップと、前記第１ステップで読み出された前記周辺の画素の画素値に基づいて、前記注目画素の画素値の予測値を算出する第２ステップと、前記第２ステップで算出された前記予測値と、前記注目画素の画素値との差分である予測誤差を算出する第３ステップと、一方の端から、前記第３ステップで算出された前記予測誤差が順次に入力され、その入力された前記予測誤差を記憶するとともに、既に記憶された前記予測誤差を他方の端側へ移動して記憶する第２記憶手段の前記一方の端から入力される前記予測誤差を、当該第２記憶手段に既に記憶されている前記予測誤差のそれぞれと比較する第４ステップと、前記第４ステップによる比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差と一致していた場合は、順次に入力される前記予測誤差からなる入力データ列と一致する、前記第２記憶手段に連続して記憶される前記予測誤差からなるデータ列を探索する第５ステップと、前記第５ステップで探索された前記データ列の長さを示すレングス情報を生成する第６ステップと、前記第５ステップで探索された前記データ列の開始データが記憶されていた前記第２記憶手段内の位置を示すアドレス情報を生成する第７ステップと、前記第７ステップで生成された前記レングス情報、および、前記アドレス情報生成手段で生成された前記アドレス情報を符号化した第１符号データを生成する第８ステップと、前記第４ステップによる比較の結果、入力された前記予測誤差が、前記第２記憶手段に既に記憶されている前記予測誤差のうちの何れとも一致していなかった場合は、当該入力された前記予測誤差が求められた前記注目画素の画素値を符号化した第２符号データを生成する第９ステップと、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、符号化処理において、入力された予測誤差値が、スライド記憶部に既に記憶されている予測誤差値と一致していなかった場合は、その入力された予測誤差値が求められた注目画素の画素値が符号化されるので、予測誤差値が符号化される構成に比べて、符号化に必要なビット数を少なくすることができる。したがって、圧縮率の向上が可能になるという有利な効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、この発明の実施形態による画像処理装置を適用可能な画像形成装置の機構部の構成例を示す略線図である。
【図２】図２は  画像形成装置における電装・制御装置の構成の一例を示すブロック図である。
【図３】図３は、画像形成装置の全体的な動作の例を概略的に示すフローチャートである。
【図４】図４は、符号化部の構成の一例を示す図である。
【図５】図５は、注目画素の周辺画素を説明するための図である。
【図６】図６は、予測処理の算出方法を説明するための図である。
【図７】図７は、符号フォーマットの例を示す図である。
【図８】図８は、本実施形態の符号化処理を説明するための図である。
【図９−１】図９−１は、スライド探索処理およびリスト探索処理におけるフラグ処理を説明するための図である。
【図９−２】図９−２は、スライド探索処理およびリスト探索処理におけるフラグ処理を説明するための図である。
【図１０−１】図１０−１は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−２】図１０−２は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−３】図１０−３は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−４】図１０−４は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−５】図１０−５は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−６】図１０−６は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−７】図１０−７は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１０−８】図１０−８は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための図である。
【図１１】図１１は、本実施形態による符号化処理の全体的な流れを示すフローチャートの一例を示す図である。
【図１２】図１２は、スライド探索処理の詳細な内容の一例を示すフローチャートである。
【図１３】図１３は、リスト探索処理の詳細な内容の一例を示すフローチャートである。
【図１４】図１４は、スライド追加処理の詳細な内容の一例を示すフローチャートである。
【図１５】図１５は、符号生成処理の詳細な内容の一例を示すフローチャートである。
【図１６】図１６は、符号化部の詳細な構成の一例を示す図である。
【図１７】図１７は、スライド／リスト生成処理部のハードウェア構成の一例を示す図である。
【図１８】図１８は、復号部の構成の一例を示す図である。
【図１９】図１９は、復号処理の一例を示すフローチャートである。
【図２０】図２０は、復号部の詳細な構成の一例を示す図である。
【図２１】図２１は、スライド展開部のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら、本発明に係る画像処理装置の一実施形態を詳細に説明する。図１は、本実施形態に係る画像処理装置を適用可能な画像形成装置（カラープリンタとする）の機構部の構成例を示す。なお、本実施形態では、本発明に係る画像処理装置および画像処理方法をカラープリンタである画像形成装置に適用した例について説明するが、文字画像を含む画像に画像処理を施すものであれば、これに限定するものではない。例えば、本発明は、複写機、ファクシミリ、複合機などの画像処理装置にも適用することができる。
【００１２】
＜実施形態に適用可能なプリンタの例＞
図１に例示されるプリンタ装置２００は、４色（Ｙ、Ｍ、Ｃ、Ｋ）の画像をそれぞれ独立の作像系１Ｙ、１Ｍ、１Ｃ、１Ｋで形成し、この４色の画像を合成する４ドラムタンデムエンジンタイプの画像形成装置である。各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは、像担持体としての感光体、例えば小径のＯＰＣ（有機感光体）ドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを有し、このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを取り囲むように作像の上流側から帯電手段としての帯電ローラ３Ｙ、３Ｍ、３Ｃ、３Ｋと、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像をそれぞれ現像剤で現像してＹ、Ｍ、Ｃ、Ｋ各色のトナー像とする現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋと、クリーニング装置５Ｙ、５Ｍ、５Ｃ、５Ｋと、除電装置６Ｙ、６Ｍ、６Ｃ、６Ｋなどが配置されている。
【００１３】
各現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋの脇には、Ｙトナー、Ｍトナー、Ｃトナー、Ｋトナーをそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋへ補給するトナーボトルユニット７Ｙ、７Ｍ、７Ｃ、７Ｋが配置されている。また、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは各々独立な光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが配置され、この光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋはレーザ光源としてのレーザダイオード（ＬＤ）光源９Ｙ、９Ｍ、９Ｃ、９Ｋや、コリメートレンズ１０Ｙ、１０Ｍ、１０Ｃ、１０Ｋ、ｆθレンズ１１Ｙ、１１Ｍ、１１Ｃ、１１Ｋ、といった光学部品、偏向走査手段としてのポリゴンミラー１２Ｙ、１２Ｍ、１２Ｃ、１２Ｋ、折り返しミラー１３Ｙ、１３Ｍ、１３Ｃ、１３Ｋ、１４Ｙ、１４Ｍ、１４Ｃ、１４Ｋなどを有する。
【００１４】
各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは垂直に配列され、その右側には転写ベルトユニット１５がＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに接する形で配置される。転写ベルトユニット１５は、転写ベルト１６がローラ１７〜２０に張架されて図示しない駆動源により回転駆動される。装置下側には転写材としての転写紙が収納された給紙トレイ２１が配置され、装置上部に定着装置２２、排紙ローラ２３及び排紙トレイ２４が配設される。 
【００１５】
作像時には、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋにおいて、それぞれ、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが図示しない駆動源により回転駆動され、帯電ローラ３Ｙ、３Ｍ、３Ｃ、３ＫによりＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが一様に帯電されて光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが各色の画像データに基づきＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに光書込みを行うことによって、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上に静電潜像が形成される。
【００１６】
このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像はそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋにより現像されてＹ、Ｍ、Ｃ、Ｋ各色のトナー像となり、一方、給紙トレイ２１から給紙ローラ２５により転写紙が水平方向に給紙されて搬送系により作像系１Ｙ、１Ｍ、１Ｃ、１Ｋ方向へ垂直に搬送される。この転写紙は、転写ベルト１６に静電的に吸着保持されて転写ベルト１６により搬送され、図示しない転写バイアス印加手段により転写バイアスが印加されてＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上のＹ、Ｍ、Ｃ、Ｋ各色のトナー像が順次に重ねて転写されることでフルカラー画像が形成される。このフルカラー画像が形成された転写紙は、定着装置２２によりフルカラー画像が定着されて排紙ローラ２３により排紙トレイ２４へ排出される。
【００１７】
図２は、図１のプリンタ装置２００の電装・制御系統の構成の一例を示すブロック図である。図２の例では、プリンタ装置２００は、制御部２３０、メインメモリ２１０、プリンタエンジン２１１およびオペレーションパネル２４０を備える。制御部２３０は、ＣＰＵ(Central Processing Unit)２１２、ＣＰＵ  Ｉ／Ｆ２０１、メインメモリアービタ２０２、メインメモリコントローラ２０３、符号化部２０４、復号部２０５、階調処理部２０６、エンジンコントローラ２０７およびパネルコントローラ２４１を含む。 
【００１８】
ＣＰＵ２１２は、メインメモリ２１０に格納されるプログラムに従い、このプリンタ装置２００の全体の動作を制御する。ＣＰＵ２１２は、ＣＰＵ  Ｉ／Ｆ２０１を介してメインメモリアービタ２０２に接続される。メインメモリアービタ２０２は、ＣＰＵ２１２、符号化部２０４、復号部２０５および通信コントローラ２０８の、メインメモリ２１０に対するアクセスを調停する。
【００１９】
メインメモリ２１０は、メインメモリコントローラ２０３を介してメインメモリアービタ２０２に接続される。メインメモリコントローラ２０３は、メインメモリ２１０に対するアクセスの制御を行う。
【００２０】
メインメモリ２１０は、プログラム領域２１０Ａ、ＰＤＬデータ格納領域２１０Ｂ、ＣＭＹＫバンド画像データ格納領域２１０Ｃ、ＣＭＹＫページ符号格納領域２１０Ｄおよびその他の領域２１０Ｅを有する。プログラム領域２１０Ａは、ＣＰＵ２１２が動作するためのプログラムが格納される。ＰＤＬデータ格納領域２１０Ｂは、例えばコンピュータ２２０から通信コントローラ２０８を介して供給されたＰＤＬデータが格納される。ＣＭＹＫバンド画像データ格納領域２１０Ｃは、ＣＭＹＫバンド画像データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、バンド画像データが圧縮符号化された符号データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、例えば１ページ分のＣＭＹＫバンド画像データが圧縮符号化された符号データが格納される。領域２１０Ｅは、上述した以外のデータが格納される。
【００２１】
符号化部２０４は、メインメモリ２１０に格納されるバンド画像データを符号化する。バンド画像データが符号化された符号データは、メインメモリアービタ２０２およびメモリコントローラ２０３を介してメインメモリ２１０に供給され、ＣＭＹＫページ符号格納領域２１０Ｄに書き込まれる。復号部２０５は、後述するプリンタエンジン２１１に同期して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して復号する。復号された画像データは、階調処理部２０６に供給され、階調処理が施されてエンジンコントローラ２０７に転送される。
【００２２】
エンジンコントローラ２０７は、プリンタエンジン２１１を制御する。図１では、プリンタエンジン２１１としてＣＭＹＫ各色の版のうち１の版のものだけが記載され、その他の版については煩雑さを避けるために省略されている。
【００２３】
通信コントローラ２０８は、ネットワークを介しての通信を制御する。例えば、コンピュータ２２０から出力されたＰＤＬ(Page DESCription Language)データは、ネットワークを介して通信コントローラ２０８により受信される。通信コントローラ２０８は、受信したＰＤＬデータを、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介してメインメモリ２１０に転送する。
【００２４】
なお、ネットワークは、ＬＡＮ(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワークは、有線通信に限らず無線通信を用いたものでもよいし、ＵＳＢ(Universal Serial Bus)やＩＥＥＥ(Institute Electrical and Electronics Engineers)１３９４といったシリアル通信を行うものでもよい。
【００２５】
オペレーションパネル２４０は、ユーザ操作を受け付けるための複数の操作子と、ユーザに対して情報を提供するための表示素子とを有する。パネルコントローラ２４１は、ＣＰＵ２１２の指示に従い、オペレーションパネル２４０の表示を制御すると共に、オペレーションパネル２４０に対してなされたユーザ操作に応じた信号を、ＣＰＵ２１２に送信する。
【００２６】
次に、図３を用いて、プリンタ装置２００の全体的な動作の例について説明する。図３は、プリンタ装置２００の全体的な動作の例を概略的に示すフローチャートである。
【００２７】
例えばコンピュータ２２０で生成されたＰＤＬデータがネットワークを介して通信コントローラ２０８に受信され、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂに記憶される（ステップＳ１）。ＣＰＵ２１２は、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂから経路Ａに従いＰＤＬデータを読み出し、ＰＤＬを解析して（ステップＳ２）、解析結果に基づきＣＭＹＫのバンド画像を描画する（ステップＳ３）。描画されたＣＭＹＫのバンド画像によるＣＭＹＫバンド画像データは、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃに記憶される（ステップＳ４）。
【００２８】
符号化部２０４は、経路Ｂに従いＣＭＹＫバンド画像データ格納領域２１０ＣからＣＭＹＫバンド画像データを読み出して、本実施形態による符号化方法を用いて符号化する（ステップＳ５）。ＣＭＹＫバンド画像データが符号化された符号データは、経路Ｃに従いメインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに記憶される（ステップＳ６）。
【００２９】
復号部２０５は、経路Ｄに従いＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して画像データに復号し（ステップＳ７）、復号した画像データを階調処理部２０６に供給する。階調処理部２０６は、復号部２０５から供給された画像データに対して階調処理を施して（ステップＳ８）、経路Ｅに従いプリンタエンジンコントローラ２０７に供給する。エンジンコントローラ２０７は、供給された画像データに従い基づきプリンタエンジン２１１を制御してプリントアウトを行う（ステップＳ９）。
【００３０】
＜符号化処理の概略＞
図４は、本実施形態に係る符号化部２０４の構成の一例を示す。符号化部２０４は、データ読み込み部３００、ラインメモリ制御部３０１、ラインメモリ３０２、予測処理部３０３、予測誤差処理部３０４、スライド／リスト生成処理部３０５、符号フォーマット生成処理部３０６、および、符号書き込み部３０７を有する。
【００３１】
データ読み込み部３００は、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃから、ＣＭＹＫ各版毎のＣＭＹＫバンド画像データを読み出す。このとき、ＣＭＹＫ各版毎のＣＭＹＫバンド画像データ（多値画像データ）は、データ読み込み部３００によりスキャンライン毎に順次、画素単位でＣＭＹＫバンド画像データ格納領域２１０Ｃから読み出される。
【００３２】
ラインメモリ制御部３０１は、データ読み込み部３００により画素単位で読み出された画像データ（画素値）を、ラインメモリ３０２に格納する。本実施形態では、ラインメモリ３０２は、２ライン分の画素値を格納可能であり、今回供給された画素値を格納すると共に、直前に格納した１ライン分の画素値を保持するように、ラインメモリ制御部３０１に制御される。
【００３３】
より具体的には、ラインメモリ３０２は、１ライン分の画素値を記憶可能であって、符号化対象の画素（以下、「注目画素」と呼ぶ）が順次に書き込まれる第１領域と、注目画素が属するラインの直前のラインであって、既に符号化が終了したラインの画素値が記憶される第２領域とを有する。
【００３４】
ラインメモリ制御部３０１の制御により、ラインメモリ３０２から、注目画素の画素値と、注目画素の周辺３画素の画素値が順次に読み出され、予測処理部３０３に渡される。ここでラインメモリ３０２から読み出される周辺３画素は、注目画素に近接する、既に符号化が終了した画素である。より具体的には、図５に例示されるように、注目画素のスキャン順で直前の画素ａと、当該注目画素が属する現ラインに対してスキャン順で直前の前ライン、すなわち当該注目画素が属するラインの直上のラインにおいて当該注目画素の直上に位置する画素ｂと、画素ｂに対してスキャン順で直前の画素ｃとである。なお、以下では、符号化対象である注目画素が属するラインを現ライン、現ラインに対してスキャン順で直前のラインを前ラインと呼ぶ。
【００３５】
予測処理部３０３は、ラインメモリ制御部３０１から渡された画素ａ、画素ｂおよび画素ｃに基づき注目画素の画素値を予測する。本実施形態では、予測処理部３０３は、平面予測方式を用いて注目画素の画素値を予測する。平面予測方式は、図６に例示されるように、現ラインにおける、注目画素の直前に符号化された画素ａと、前ラインにおいて注目画素および画素ａのそれぞれの真上に隣接する画素ｂおよび画素ｃとを用いて、下記の式（１）の計算を行い、注目画素に対する予測値を求める。
予測値＝ａ＋ｂ−ｃ      …（１）
【００３６】
なお、注目画素がラインのスキャン順で先頭画素である場合、ならびに、現ラインがスキャン順で先頭のラインである場合は、平面予測値が０であるものとする。
【００３７】
再び図４に戻って説明を続ける。予測誤差処理部３０４は、注目画素の画素値と、予測処理部３０３で求められた平面予測値との差分である予測誤差値を算出し、算出した予測誤差値と注目画素の画素値とを後段のスライド／リスト生成処理部３０５へ出力する。
【００３８】
スライド／リスト生成処理部３０５は、予測誤差処理部３０４から順次に入力される予測誤差値を記憶するＦＩＦＯ（First In First Out）方式のスライド記憶部を有する。スライド／リスト生成処理部３０５は、供給された予測誤差値とスライド記憶部に記憶された過去の予測誤差値のそれぞれとを比較する。そして、供給された予測誤差値と過去の予測誤差値とが一致した場合には、順次に入力される予測誤差値からなる入力データ列と一致する、既にスライド記憶部に連続的に記憶されている予測誤差からなるデータ列（「リスト」と呼ぶ）を探索するリスト探索処理を行う。そして、リスト探索処理の結果から得られたリストの長さを示すレングス情報Lengthと、前述の比較が行われたときに、リスト探索処理の結果から得られたリストの開始データが記憶されていたスライド記憶部内の位置を示すアドレス情報Addressとを生成して、後段の符号フォーマット生成処理部３０６へ出力する。
【００３９】
一方、前述の比較の結果、供給された予測誤差値が、スライド記憶部内の過去の予測誤差値のうちの何れとも一致していなかった場合は、スライド／リスト生成処理部３０５は、入力された予測誤差値が求められた注目画素の画素値そのものを、ESCデータとして後段の符号フォーマット生成処理部３０６へ出力する。また、スライド／リスト生成処理部３０５は、前述の比較結果を示す比較結果フラグSlideFLAGを、後段の符号フォーマット生成処理部３０６へ出力する。前述の比較結果が肯定の場合は、比較結果フラグSlideFLAGは「１」に設定される一方、前述の比較結果が否定の場合は、比較結果フラグSlideFLAGは「０」に設定されるという具合である。
【００４０】
符号フォーマット生成処理部３０６は、供給されたESCデータ、アドレス情報Address、レングス情報Lengthおよび比較結果フラグSlideFLAGから、図７に例示されるようなフォーマットで、ESC符号、Slide符号およびライン終端符号を生成する。
【００４１】
ESC符号は、ESCデータを符号化したものである。図７に示すように、ESC符号は、データ長が１ビットで値が「０」のフラグSlidFLAGをヘッダとして、後に８ビットのデータ長を持つ画素値が接続されてなる。Slide符号は、データ長が１ビットで値が「１」の比較結果フラグSlideFLAGをヘッダとして、その後に、それぞれデータ長が７ビットのレングス情報Lengthおよびアドレス情報Addressが順次接続される。また、ライン終端符号は、ライン終端を示す符号であり、データ長が２ビットで値が「１１」のデータで構成される。なお、この図７に例示される符号フォーマットは、一例であって、これに限られるものではない。
【００４２】
符号フォーマット生成処理部３０６で生成されたESC符号、Slide符号およびライン終端符号は、符号書き込み部３０７に供給される。符号書き込み部３０７は、供給されたESC符号、Slide符号およびライン終端符号を、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに書き込む。
【００４３】
次に、本実施形態の符号化部２０４で行われる符号化処理の具体的な内容について説明する。本実施形態では、符号化部２０４は、スライド探索処理とリスト探索処理とを繰り返すことによって、データの符号化を行う。スライド探索処理は、１単位（例えば１バイト）の入力データ（予測誤差値）と一致する、スライド記憶部に記憶される過去のデータ（予測誤差値）を探索する。スライド記憶部内の過去のデータに、入力データと一致するデータが探索されなかった場合には、入力データそのものをESCデータとして用いて符号化する。
【００４４】
スライド探索処理において、入力された予測誤差値に一致するスライド記憶部内の過去の入力データが探索された場合、その一致した過去のデータをルートとして、前述のリスト探索処理が行われる。そして、リスト探索処理にて探索されたリストのルートとなる過去のデータのスライド記憶部内での位置をアドレス情報Address、当該リストの長さをレングス情報Lengthとして出力し、これらの情報を符号化する。
【００４５】
図８を用いてより具体的に説明する。本実施形態では、スライド記憶部は、直列に接続された１２８個のレジスタを持ち、ＦＩＦＯ（First In First Out）として構成されるが、図８の例では、番号＃０〜＃１５の直列に接続された１６個のレジスタに着目して説明する。各レジスタは、それぞれ１単位（例えば１バイト）のデータを格納可能であるものとする。なお、以下では、このスライド記憶部が有するレジスタをスライドと呼ぶ。
【００４６】
処理＃１において、スライド記憶部の各スライドには、入力の新しい順、すなわち図８の右側から左側に向けて、「ａ，ｂ，ｃ，ａ，ａ，ｂ，ｃ，ａ，ｂ，ｃ，ｄ，ｂ，ｃ，ａ，ｃ，ａ」と、１６個の過去に入力されたデータ（予測誤差値）が既に格納されているものとする。最初に、スライド／リスト生成処理部３０５に対して入力データ（予測誤差値）「ａ」が入力される。スライド探索処理により、この入力データ「ａ」と、各スライドに記憶された過去のデータ（予測誤差値）のそれぞれとを比較し、一致しているデータを探索する。図８の例では、番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドに格納されているデータが入力データと一致していることが分かる。したがって、これらの番号のスライドに格納されているデータが、リスト探索処理におけるルートとなる。
【００４７】
スライド探索処理によって、各スライドに記憶された過去のデータから、入力データ「ａ」と一致しているデータが探索されたので、処理＃２のリスト探索処理が行われる。
【００４８】
処理＃２では、各スライドに記憶される過去のデータを左に１だけシフトさせて、処理＃１で入力された入力データ「ａ」をスライド記憶部の番号＃０のスライドに追加する。それと共に、次の入力データ「ｃ」がスライド／リスト生成処理部３０５に対して入力される。リスト探索処理では、各スライドのうち、直前の処理＃１において入力データと一致するデータが格納されていたスライド（＃０、＃３、＃４、＃７、＃１３および＃１５）から、新たな入力データ「ｃ」と一致するデータを探索する。
【００４９】
図８の例では、処理＃１において入力データと一致した番号＃０および＃４のスライドに格納される過去のデータは、処理＃２において入力データと一致していない。一方、処理＃２において、番号＃３、＃７、＃１３および＃１５のスライドに格納された過去のデータは、データ「ｃ」であって、新たな入力データ「ｃ」と一致する。
【００５０】
処理＃２のリスト探索処理によって、直前の処理＃１において入力データが一致するデータが格納されたスライド（＃０、＃３、＃４、＃７、＃１３および＃１５）から、処理＃２における入力データ「ｃ」と一致するデータが探索されたので、次の処理はリスト探索処理となる。なお、処理＃２は、リスト探索処理の開始点であるので、リストの長さを示すレングスLengthは、値「０」とされる。
【００５１】
処理＃３では、上述の処理＃２と同様にして、各スライドに記憶される過去のデータを左に１だけシフトさせて、処理＃２で入力された入力データ「ｃ」をスライド記憶部の番号＃０のスライドに追加する。それと共に、次の入力データ「ｂ」がスライド／リスト生成処理部３０５に対して入力される。そして、各スライドのうち、処理＃１および直前の処理＃２において入力データと一致する過去のデータが格納されたスライド（＃３、＃７、＃１３および＃１５）から、新たな入力データ「ｂ」と一致するデータを探索する。
【００５２】
図８の例では、番号＃１５のスライドに格納される過去のデータは、処理＃３において入力データと一致していない。一方、処理＃３において、番号＃３、＃７および＃１３のスライドに格納される過去のデータは「ｂ」であって、新たな入力データ「ｂ」と一致する。次の処理＃４では、この番号＃３、＃７および＃１３のスライドに格納される過去のデータが、リスト探索の対象となる。すなわち、この処理＃３の段階では、番号＃３、＃７および＃１３に係るリストが残っている。処理＃３では、リストの長さが「１」となり、レングスLength情報の値が「１」とされる。
【００５３】
このような処理を繰り返していき、リストが最も長くなるデータ列を求める。図８の例では、処理＃５において、直前の処理＃４においてリスト探索された番号＃１３のスライドに格納される過去のデータ「ｃ」と、新たな入力データ「ｇ」とが一致しなくなり、リストが途切れる。そこで、処理＃５では、１つ前の処理＃４において残っているリストから１を選択し、リスト探索処理の直前におけるスライド探索処理（図８の例では処理＃１）において、そのリストの開始データが記憶されていたスライド記憶部内の位置をアドレス情報Addressとし、そのリストの長さをレングス情報LengthとしてSlide符号に符号化する。図８の例では、アドレス情報Addressの値が「１３」、レングス情報Lengthの値が「３」とされる。
【００５４】
さらに、処理＃５では、入力データ「ｇ」についてスライド探索処理を行う。この例では、各スライドに過去のデータとしてデータ「ｇ」が記憶されていないため、一致するデータがないとされる。この場合、処理は処理＃６に移行され、入力データ「ｇ」がそのままESCデータとして用いられてESC符号へ符号化される。
【００５５】
ESC符号への符号化が行われると、処理＃７で、各スライドに記憶される過去のデータが左に１だけシフトされると共に、直前のリスト探索処理（処理＃５）で入力された入力データ「ｇ」がスライド記憶部の番号＃０のスライドに追加される。そして、次の入力データ「b」に対してスライド探索処理が行われる。
【００５６】
ここで、スライド記憶部は、ＦＩＦＯ方式により各スライドに格納されたデータのシフトを行うことができるため、入力データとの一致を記憶したリストをそのままの状態で保持しながら、次の入力データの処理に移行することができる。
【００５７】
例えば、図８の例では、入力データが、処理＃１において番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドに格納される過去のデータと一致している。各スライドに格納されたデータを、新たなデータの入力に伴い順次シフトさせることで、例えば処理＃２の当該番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドに対して次のデータが格納されることになる。したがって、スライド記憶部において、スライド探索処理で一致が探索された番号のスライドに格納されるデータを、リスト探索処理毎に入力データと比較していくことで、入力データのデータ列と一致する、過去のデータのデータ列を探索することができる。
【００５８】
このように、スライド記憶部をＦＩＦＯ方式とすることで、リスト探索処理を簡易に行うことができる。
【００５９】
＜フラグ処理＞
上述したスライド探索処理およびリスト探索処理は、フラグによって制御される。このスライド探索処理およびリスト探索処理におけるフラグ処理について、図９−１、図９−２を用いて説明する。
【００６０】
図９−１は、スライド探索処理の結果を示すＲフラグRFLGmを示す。図９−１に例示されるように、スライド記憶部の各スライドに対して、図の右側から左側へ向けて「ａ，ｂ，ｃ，ａ，ａ，ｂ，ｃ，ａ，ｂ，ｃ，ｄ，ｂ，ｃ，ａ，ｃ，ａ」のように過去のデータが格納された状態で、入力データ「ａ」が入力された場合、番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドで、入力データと各スライドに記憶される過去のデータとが一致する。そこで、これらの番号のスライドに対応するＲフラグRFLG0、RFLG3、RFLG4、RFLG7、RFLG13およびRFLG15を、それぞれ一致したことを示す値「１」に設定する。
【００６１】
このように、入力データと、各スライドに記憶される過去のデータとが一致する場合は、符号化処理を行わずにリスト探索処理が行われる。このとき、ＲフラグRFLGmの各スライドに対する位置は、固定的である。入力データと一致する、各スライドに記憶される過去のデータが無い場合は、入力データをそのままESCデータとして用いてESC符号に符号化し、次の入力データに対してスライド探索処理を行う。
【００６２】
図９−２は、リスト探索処理の結果を示すＷフラグWFLGmの例を示す。リスト探索処理では、新たに入力された入力データと一致するデータが、各スライドのうちＲフラグRFLGmが「１」とされたスライドに格納されるデータから探索される。若し、一致するデータが探索されたら、当該スライドに対するＷフラグWFLGmの値を、一致したことを示す値「１」に設定する。
【００６３】
図９−２の例では、各スライドに記憶される過去のデータのうち、ＲフラグRFLGmが値「１」である番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドに格納されるデータに対してリスト探索処理が行われる。これらのうち、入力データ「ｃ」に対して、番号＃３、＃７、＃１３および＃１５のスライドに格納されるデータが一致するので、対応するＷフラグWFLG3、WFLG7、WFLG13およびWFLG15の値を、一致したことを示す値「１」に設定する。各スライドに記憶される過去の入力データのうち、このＷフラグWFLGmの値が「１」とされたスライドには、直前の入力データと一致する過去のデータと、現在の入力データと一致する過去の入力データとが連続して格納されることを示す。
【００６４】
次に、値が「１」のＷフラグWFLGmを探索する。この値「１」のＷフラグWFLGmが存在する場合は、各ＷフラグWFLGmを新たなＲフラグRFLGmとし、上述と同様にして次の入力データに対してリスト探索処理を行う。
【００６５】
一方、探索の結果、値が「１」のＷフラグWFLGmが存在しないとされた場合は、リストが途絶えたことを意味する。この場合は、値が「１」のＲフラグRFLGmを１つ選択し、選択したＲフラグRFLGmに対応するスライドのアドレス情報Addressと、そのときのレングス情報LengthとをSlide符号に符号化する。
【００６６】
次に、ＲフラグRFLGmおよびＷフラグWFLGmを用いた場合の、スライド探索処理およびリスト探索処理について、図１０−１〜図１０−８を用いて説明する。図１０−１〜図１０−８の例でも、上述した図８と同様に、番号＃０〜＃１５の直列に接続された１６個のレジスタに着目して説明する。各スライドには、新しい順すなわち番号の小さい順に、「ａ，ｂ，ｃ，ａ，ａ，ｂ，ｃ，ａ，ｂ，ｃ，ｄ，ｂ，ｃ，ａ，ｃ，ａ」と、過去に入力された１６個のデータ（予測誤差値）が既に格納されているものとする。
【００６７】
本実施形態においては、符号化を、スライド探索処理とリスト探索処理とを繰り返すことで行う。先ず、入力データ「ａ」が入力され、スライド探索処理が行われる（図１０−１）。入力データ「ａ」と一致するデータを、スライド記憶部の各スライドから探索する。各スライドから入力データに一致するデータが探索されなかった場合は、当該入力データをそのままESCデータとして用いて、ESC符号に符号化する。
【００６８】
入力データに一致するデータが格納されるスライドが探索されたら、そのスライドに対応するＲフラグRFLGmの値を「１」とし、他のＲフラグRFLGmの値を「０」とする。図１０−１の例では、番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライドに格納されるデータが入力データと一致している。このスライド探索処理において、入力データに一致したデータをルートとして、次からのリスト探索処理においてリストの生成が行われる。
【００６９】
次に、各スライドの記憶内容を左へ１つずつシフトし、直前に入力された入力データ「ａ」を、番号＃０のスライドに追加する。このように、スライド探索処理において入力データと一致するデータが格納されたスライドが探索されたら、符号化処理を行わずに、リスト探索処理（図１０−２）に移り、レングス情報Lengthを「０」とする。また、入力データと一致するデータが格納されたスライド（番号＃０、＃３、＃４、＃７、＃１３および＃１５のスライド）に対応するＲフラグRFLGm（ＲフラグRFLG0、RFLG3、RFLG4、RFLG7、RFLG13およびRFLG15）の値が「１」に設定され、他のＲフラグRFLGmの値が「０」に設定される。
【００７０】
次に、図１０−２に示すように、入力データ「ｃ」が入力される。リスト探索処理では、対応するＲフラグRFLGmの値が「１」のスライドのうち、入力データ「ｃ」と一致するデータが格納されるスライドが探索される。図１０−２の例では、ＲフラグRFLGmの値が「１」のスライドのうち番号＃３、＃７、＃１３および＃１５のスライドに格納されるデータが入力データと一致している。一方、番号＃０および＃４のスライドは、脱落している。したがって、図１０−２に示すように、入力データと一致するデータが格納されたスライドに対応するＷフラグWFLGm（ＷフラグWFLG3、WFLG7、WFLG13およびWFLG15）の値が「１」に設定され、他のＷフラグWFLGmの値が「０」に設定される。
【００７１】
次に、各スライドの記憶内容を左へ１つずつシフトし、直前に入力された入力データ「ｃ」を、番号＃０のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理（図１０−３）に移り、レングス情報Lengthを「１」とする。図１０−３に示すように、直前のＷフラグWFLGmの値（図１０−２のＷフラグWFLGmの値）をＲフラグRFLGmに設定して、ＲフラグRFLGmを更新する。
【００７２】
次に、図１０−３に示すように、入力データ「ｂ」が入力される。リスト探索処理では、対応するＲフラグRFLGの値が「１」のスライドのうち、入力データ「ｂ」と一致するデータが格納されるスライドが探索される。図１０−３の例では、ＲフラグRFLGmの値が「１」のスライドのうち番号＃３、＃７および＃１３のスライドに格納されるデータが入力データと一致している。一方、番号＃１５のスライドは、脱落している。したがって、図１０−３に示すように、入力データと一致するデータが格納されたスライドに対応するＷフラグWFLGm（ＷフラグWFLG3、WFLG7およびWFLG13）の値が「１」とされ、他のＷフラグWFLGmの値が「０」とされる。
【００７３】
次に、各スライドの記憶内容を左へ１つずつシフトし、直前に入力された入力データ「ｂ」を、番号＃０のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理（図１０−４）に移り、レングス情報Lengthを「２」とする。そして、図１０−４に示すように、直前のＷフラグWFLGmの値（図１０−３のＷフラグWFLGmの値）をＲフラグRFLGmに設定して、ＲフラグRFLGmを更新する。
【００７４】
次に、図１０−４に示すように、入力データ「ｄ」が入力される。リスト探索処理では、対応するＲフラグRFLGmの値が「１」のスライドのうち、入力データ「ｄ」と一致するデータが格納されるスライドが探索される。図１０−４の例では、番号＃１３のスライドに格納されるデータが入力データと一致している。一方、番号＃３および＃７のスライドは、脱落している。入力データと一致するデータが格納されたスライドに対応するＷフラグWFLG13の値が「１」に設定される。
【００７５】
次に、各スライドの記憶内容を左へ１つずつシフトし、直前に入力された入力データ「ｄ」を、番号＃０のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理（図１０−５）に移り、レングス情報Lengthを「３」とする。図１０−５に示すように、直前のＷフラグWFLGmの値（図１０−４のＷフラグWFLGmの値）をＲフラグRFLGmに設定して、ＲフラグRFLGmを更新する。
【００７６】
次に、図１０−５に示すように、入力データ「ａ」が入力される。リスト探索処理では、対応するＲフラグRFLGmの値が「１」のスライドのうち、入力データ「ａ」と一致するデータが格納されるスライドが探索される。図１０−５の例では、番号＃１３のスライドが脱落し、入力データ「ａ」と一致するデータが格納されるスライドが存在しない。すなわち、継続するリストが存在しなくなる。そのため、ＲフラグRFLGmの値が「１」であるスライドのスライド記憶部内での位置（図１０−５の例では番号＃１３の位置）をアドレス情報Addressとし、レングス情報Lengthが「３」とされて、これらを図７に示したようにSlide符号に符号化する。ＷフラグWFLGの値は、全て「０」とされ、処理はスライド探索処理に移る（図１０−６）。
【００７７】
リストが途切れた後のスライド探索処理は、直前のリスト探索処理における入力データ「ａ」に対して行われる（図１０−６）。入力データ「ａ」と一致するデータを、スライド記憶部の各スライドから探索する。各スライドから入力データに一致するデータが探索されなかった場合は、当該入力データをそのままESCデータとして用いて、ESC符号に符号化する。
【００７８】
入力データに一致するデータが格納されるスライドが探索されたら、そのスライドに対応するＲフラグRFLGmの値を「１」とする。図１０−６の例では、番号＃３、＃４、＃７、＃８および＃１１のスライドに格納されるデータが入力データと一致している。このスライド探索処理において、入力データに一致したデータをルートとして、次からのリスト探索処理においてリストの生成が行われる。
【００７９】
次に、各スライドの記憶内容を左へ１つずつシフトし、入力データ「ａ」を、番号＃０のスライドに追加する。このように、スライド探索処理において入力データと一致するデータが格納されたスライドが探索されたら、符号化処理を行わずに、リスト探索処理（図１０−７）に移り、レングス情報Lengthを「０」とする。また、入力データと一致するデータが格納されたスライド（番号＃３、＃４、＃７、＃８および＃１１のスライド）に対応するＲフラグRFLGm（ＲフラグRFLG3、RFLG4、RFLG7、RFLG8およびRFLG13）の値が「１」に設定され、他のＲフラグRFLGmの値が「０」に設定される。
【００８０】
次に、図１０−７に示すように、入力データ「ｆ」が入力される。リスト探索処理では、対応するＲフラグRFLGmの値が「１」のスライドのうち、入力データ「ｆ」と一致するデータが格納されるスライドが探索される。図１０−７の例では、入力データ「ｆ」と一致するデータが格納されるスライドが存在しないので、ＷフラグWFLGmの値が全て「０」とされ、処理はスライド探索処理に移る（図１０−８）。
【００８１】
ここでのスライド探索処理は、直前のリスト探索処理における入力データ「ｆ」に対して行われる（図１０−８）。入力データ「ｆ」と一致するデータを、スライド記憶部の各スライドから探索する。図１０−８の例では、各スライドから入力データに一致するデータが探索されないため、当該入力データをそのままESCデータとして用いて、ESC符号に符号化する。また、ＲフラグRFLGmの値が全て「０」に設定される。
【００８２】
そして、各スライドの記憶内容を左へ１つずつシフトし、入力データ「ｆ」を番号＃０のスライドに追加して次の入力データの符号化に進む。
【００８３】
＜符号化処理の詳細＞
次に、本実施形態による符号化処理について、より詳細に説明する。図１１は、本実施形態による符号化処理の全体的な流れを示すフローチャートの一例である。最初のステップＳ１０で、比較結果フラグSlideFLAGの値は、「０」に初期化される。ステップＳ１１で、スライド探索処理およびリスト探索処理のうち何れが有効であるかを示すフラグLISTFLGは、スライド探索処理を行っていることを示す値「０」に初期化される。
【００８４】
次に、ステップＳ１２で、データ読み込み部３００は、符号化対象の１画素（注目画素）の画素値を読み出す。ステップＳ１３で、ラインメモリ制御部３０１は、データ読み込み部３００により読み出された注目画素の画素値をラインメモリ３０２の第１領域に書き込む。ここでは、ラインメモリ３０２の第２領域には、注目画素が属するラインの直前のラインであって、既に符号化が終了したラインに属する複数の画素の各々の画素値が記憶されている。そして、ラインメモリ制御部３０１の制御により、ラインメモリ３０２から、注目画素の画素値と、注目画素の周辺３画素の画素値が読み出されて予測処理部３０３に渡される。
【００８５】
次に、ステップＳ１４で、予測処理部３０３は、注目画素の周辺３画素（前述の画素ａ、画素ｂおよび画素ｃ）の画素値に基づいて、注目画素の予測値（＝ａ＋ｂ−ｃ、式（１）参照）を算出し、算出した予測値と、注目画素の画素値とを予測誤差処理部３０４へ渡す。ステップＳ１５で、予測誤差処理部３０４は、注目画素の画素値と、予測処理部３０３で求められた予測値との差分である予測誤差値を算出し、算出した予測誤差値と注目画素とをスライド／リスト生成処理部３０５へ渡す。
【００８６】
処理はステップＳ１６に移行され、スライド／リスト生成処理部３０５は、フラグLISTFLGの値が「１」か否かを判定する。若し、「１」ではないと判定されたら、現在スライド探索処理が有効であるとされ、処理はステップＳ１７に移行される。ステップＳ１７では、スライド／リスト生成処理部３０５はスライド探索処理を実行する。スライド探索処理の詳細な内容については後述する。
【００８７】
次のステップＳ１８では、スライド記憶部に対して入力データ（ステップＳ１５で算出された予測誤差値）が追加される。次のステップＳ１９では、１ライン分の画素全てに対する処理が終了したか否かが判定される。若し、終了していないと判定された場合は、処理は上述のステップＳ１２に戻される。一方、終了していると判定された場合は、処理はステップＳ２０に移行され、ステップＳ２０では、ライン終端符号が出力される。次のステップＳ２１では、第１領域に書き込まれた、符号化が終了した１ライン分の画素の画素値が、第２領域に上書きされる。そして、処理はステップＳ２２に移行され、全てのラインに対する処理が終了したか否かが判定される。若し、終了していると判定された場合は、一連の符号化処理は終了する。一方、終了していないと判定された場合は、処理は上述のステップＳ１０に戻される。
【００８８】
また、上述のステップＳ１６において、フラグLISTFLGの値が「１」であると判定された場合は、現在リスト探索処理が有効であるとされ、処理はステップＳ２３に移行される。ステップＳ２３では、スライド／リスト生成処理部３０５は、リスト探索処理を実行する。リスト探索処理の詳細な内容については後述する。ステップＳ２３でリスト探索処理が行われた後、処理は上述のステップＳ１８に移行される。
【００８９】
図１２は、図１１のステップＳ１７で実行されるスライド探索処理の詳細な内容を示すフローチャートである。なお、以下では、スライド記憶部における第x番目（０≦x≦１２７）のスライドをスライド[x]のように表記する。例えばスライド記憶部における先頭のスライドは、スライド[０]と表記される。
【００９０】
先ず、ステップＳ３０〜ステップＳ３２で、レングス情報Length、フラグSFIINDFLGおよび変数IWがそれぞれ値「０」に初期化される。処理はステップＳ３３に移行され、入力データとスライド[IW]に格納された過去のデータとが一致するか否かが判定される。若し、一致すると判定されたら、処理はステップＳ３４に移行され、フラグSFINDFLGの値が「１」とされ、次のステップＳ３５で、ＲフラグRFLG[IW]の値が「１」とされる。
【００９１】
そして、処理はステップＳ３７に移行され、変数IWがスライドサイズ未満、すなわち、スライド記憶部が有するスライド数未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップＳ３８で変数IWに「１」が加えられ、処理がステップＳ３３に戻される。一方、ステップＳ３７で、変数IWがスライドサイズ以上であると判定されたら、処理はステップＳ３９に移行される。
【００９２】
一方、上述のステップＳ３３で入力データとスライド[IW]に格納された過去のデータとが一致しないと判定されたら、処理はステップＳ３６に移行され、ＲフラグRFLG[IW]の値が「０」とされる。そして、処理がステップＳ３７に移行される。
【００９３】
ステップＳ３９では、フラグSFINDFLGの値が「１」であるか否かが判定される。フラグSFINDFLGの値が「１」ではないと判定された場合は、スライド記憶部において入力データと一致する過去のデータが記憶されていないとされ、処理はステップＳ４０に移行される。ステップＳ４０では、比較結果フラグSlideFLAGが「０」に設定され、次のステップＳ４１で符号生成処理が行われる。符号生成処理の詳細な内容については後述する。
【００９４】
一方、上述のステップＳ３９で、フラグSFINDFLGの値が「１」であると判定された場合は、スライド記憶部において入力データと一致する過去のデータが記憶されているとされ、次のステップＳ４２で、フラグLISTFLGの値が「１」に設定される。つまり、リスト探索処理が有効とされる。
【００９５】
図１３は、図１１のステップＳ２３で実行されるリスト探索処理の詳細な内容を示すフローチャートである。先ず、ステップＳ５０およびステップＳ５１で、フラグLFINDFLGおよび変数IWがそれぞれ値「０」に初期化される。
【００９６】
ステップＳ５２で、入力データとスライド[IW]に格納された過去のデータとが一致し、且つ、ＲフラグRFLG[IW]の値が「１」であるか否かが判定される。若し、それぞれの条件を満たすと判定されたら、処理はステップＳ５３に移行され、ＷフラグWFLG[IW]の値が「１」とされ、次のステップＳ５４で、フラグLFINDFLGの値が「１」とされる。そして、処理がステップＳ５６に移行される。
【００９７】
一方、ステップＳ５２で、上述の条件を満たさない、すなわち、入力データとスライド[IW]に格納された過去の入力データとが一致しない、または、ＲフラグRFLG[IW]の値が「１」でないと判定されたら、処理はステップＳ５５に移行され、ＷフラグWFLG[IW]の値が「０」とされる。そして、処理がステップＳ５６に移行される。
【００９８】
ステップＳ５６では、変数IWがスライドサイズ（ここでは「１２８」）未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップＳ５７で変数IWに「１」が加えられ、処理がステップＳ５２に戻される。一方、変数IWがスライドサイズ以上であると判定されたら、処理がステップＳ５８に移行される。
【００９９】
ステップＳ５８では、フラグLFINDFLGの値が「０」であるか否かが判定される。若し、値が「０」であると判定されたら、処理がステップＳ５９に移行されて変数IWが値「０」に初期化され、次のステップＳ６０でＲフラグRFLG[IW]の値が「１」であるか否かが判定される。若し、「１」であると判定されたら、処理はステップＳ６１に移行される。
【０１００】
ステップＳ６１では、変数IWがアドレス情報Addressとされ、次のステップＳ６２で、スライドサイズを変数IWに代入する。そして、処理がステップＳ６３に移行される。ステップＳ６３では、変数IWがスライドサイズ未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップＳ６４で変数IWに「１」が加算されて処理がステップＳ６０に戻される。
【０１０１】
一方、ステップＳ６３で、変数IWがスライドサイズ以上であると判定されたら処理はステップＳ６５に移行され、比較結果フラグSlideFLAGが「１」に設定される。そして、処理は次のステップＳ６６に移行され、符号生成処理が行われて一連の処理が終了する。符号生成処理の詳細な内容については後述する。
【０１０２】
上述したステップＳ５８で、フラグLFINDFLGの値が「０」ではないと判定されたら、処理はステップＳ６７に移行され、変数IWが値「０」に初期化される。次のステップＳ６８で、ＷフラグWFLG[IW]の値が「０」であるか否かが判定される。若し、ＷフラグWFLG[IW]の値が「０」であると判定された場合は、ステップＳ６９でＲフラグRFLG[IW]の値は「０」に設定され、処理はステップＳ７０に移行される。一方、ＷフラグWFLG[IW]の値が「０」ではないと判定された場合は、ＲフラグRFLG[IW]の値はそのままの状態で、処理はステップＳ７０に移行される。
【０１０３】
そして、ステップＳ７０で、変数IWがスライドサイズ未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップＳ７１で変数IWに「１」が加算されて処理がステップＳ６８に戻される。一方、ステップＳ７０で変数IWがスライドサイズ以上であると判定されたら、処理はステップＳ７２に移行され、レングス情報Lengthに対して１が加算され、一連の処理が終了する。
【０１０４】
図１４は、図１１のステップＳ１８で実行されるスライド追加処理の詳細な内容の一例を示すフローチャートである。先ず、ステップＳ８０で、変数IWがスライド数から１を減じた値に設定される。次のステップＳ８１で、スライド[IW]に、スライド[IW−１]の値が格納され、ステップＳ８２で、変数IWが「０」を超えるか否かが判定される。若し、変数IWが「０」を超えると判定されたら、処理はステップＳ８３に移行され、変数IWから「１」が減じられる。そして、処理がステップＳ８１に戻される。一方、ステップＳ８２で、変数IWが「０」以下であると判定されたら、処理はステップＳ８４に移行され、スライド[0]に対して入力データの予測誤差値が格納される。
【０１０５】
図１５は、図１２のステップＳ４１および図１３のステップＳ６６の各々で実行される符号生成処理の詳細な内容の一例を示すフローチャートである。先ず、ステップＳ９０で比較結果フラグSlideFLAGの値が「１」であるか否かが判定される。比較結果フラグSlideFLAGの値が「１」であると判定された場合は、処理はステップＳ９１に移行され、比較結果フラグSlideFLAG、アドレス情報Addressおよびレングス情報Lengthが、図７に例示されるSlide符号に符号化される。
【０１０６】
一方、比較結果フラグSlideFLAGの値が「０」であると判定された場合は、処理はステップＳ９２に移行され、比較結果フラグSlideFLAGおよび入力データ（予測誤差値）が、図７に例示されるESC符号に符号化される。
【０１０７】
図１６は、符号化部２０４の一例の構成をより詳細に示す。なお、図１６において、上述の図２および図４と共通する部分には同一の符号を付し、詳細な説明を省略する。符号化部２０４は、データ読み込み部３００、ラインメモリ制御部３０１、ラインメモリ３０２、予測処理部３０３、予測誤差処理部３０４、スライド／リスト生成処理部３０５、符号フォーマット生成処理部３０６、および、符号書き込み部３０７を有すると共に、メインメモリアービタＩ／Ｆ３０８、データアドレス生成部３０９および符号アドレス生成部３１０を有する。なお、ここでは、ラインメモリ３０２のうち現ラインが記憶される領域（第１領域）を現ラインメモリ、前ラインが記憶される領域（第２領域）を前ラインメモリと呼ぶ。
【０１０８】
メインメモリアービタＩ／Ｆ３０８は、メインメモリアービタ２０２との接続を可能にするＩ／Ｆである。データアドレス生成部３０９は、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃからバンド画像データを読み出す際のメモリアドレスを生成する。データ読み込み部３００は、データアドレス生成部３０９で生成されたメモリアドレスで特定されるバンド画像データの読み出しを、メインメモリアービタＩ／Ｆ３０８を介してメインメモリアービタ２０２に対して要求する。この要求に応じて、メインメモリアービタ２０２によりメインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃから読み出されたバンド画像データが、メインメモリアービタ２０２から符号化部２０４に対して供給され、メインメモリアービタＩ／Ｆ３０９を介してデータ読み込み部３００に供給される。
【０１０９】
符号アドレス生成部３１０は、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄのうち、符号書き込み部３０７による書き込み先のメモリアドレスを生成する。そして、符号書き込み部３０７は、符号フォーマット生成処理部３０６で生成された符号を、符号アドレス生成部３１０で生成されたメモリアドレスに従ってメインメモリ２１０のＣＭＹＫ符号格納領域２１０Ｄに書き込むように、メインメモリアービタＩ／Ｆ３０８を解してメインメモリアービタ２０２に要求する。メインメモリアービタ２０２は、この要求に従い、供給された符号をメインメモリ２１０に書き込む。
【０１１０】
＜スライド／リスト生成処理部のハードウェア構成例＞
図１７は、上述したスライド／リスト生成処理部３０５のハードウェア構成の一例を示す。スライド／リスト生成処理部３０５は、スライド探索処理部３２０、スライド記憶部３２１、リスト探索処理部３２２およびコントローラ３２３を有する。
【０１１１】
コントローラ３２３は、例えばマイクロプロセッサからなり、スライド／リスト生成処理部３０５の動作を制御する。例えば、コントローラ３２３は、上述したスライド探索処理およびリスト探索処理のうち何れが有効かを示すフラグLISTFLGによる動作制御を行う。
【０１１２】
スライド／リスト生成処理部３０５に対して、例えば１クロック毎に１単位の入力データ（予測誤差値）が入力され、スライド探索処理部３２０、スライド記憶部３２１およびリスト探索処理部３２２にそれぞれ供給される。また入力データである予測誤差値を求める際に用いられた注目画素の画素値は、レジスタ３２４に格納される。レジスタ３２４に格納される注目画素の画素値は、ESC符号の符号化の際のデータ値として用いられる。以下では、データの１単位を１バイトとする。
【０１１３】
スライド記憶部３２１は、各々がレジスタからなり、それぞれ１単位のデータが格納される１２８個のSlide０、Slide１、…、Slide１２７が直列に接続されて構成される。また、各Slide０、Slide１、…、Slide１２７の出力は、次段のスライドに供給されると共に、後述するスライド探索処理部３２０の対応する比較器３２５の一方の入力端と、リスト探索処理部３２２の対応する比較器３２６の一方の入力端にそれぞれ供給される。
【０１１４】
スライド記憶部３２１は、これら１２８個のSlide０、Slide１、…、Slide１２７によりＦＩＦＯが構成され、入力されたデータ（予測誤差値）がSlide0からSlide1、Slide2、…と１クロック毎に順次送られていく。
【０１１５】
スライド探索処理部３２０は、１２８個の比較器３２５0、３２５1、…、３２５127と、１２８入力の論理和回路３２７とを有する。比較器３２５0、３２５1、…、３２５127のそれぞれは、一方および他方の入力端に入力されたデータを比較し、両者が一致していれば値「１」を出力し、一致していなければ値「０」を出力する。
【０１１６】
比較器３２５0、３２５1、…、３２５127の一方の入力端には、上述したように、スライド記憶部３２１が有するSlide０、Slide１、…、Slide１２７の出力がそれぞれ入力される。また、比較器３２５0、３２５1、…、３２５127のそれぞれの他方の入力端には、入力データ（予測誤差値）が入力される。
【０１１７】
比較器３２５0、３２５1、…、３２５127のそれぞれの出力は、１２８入力の論理和回路３２７に入力されると共に、後述するリスト探索処理部３２２のマルチプレックス（ＭＵＸ）３２８0、３２８1、…、３２８127の一方の入力端にそれぞれ入力される。論理和回路３２７の出力は、フラグSFINDFLGとしてコントローラ３２３に供給される。このフラグSFINDFLGは、Slide０、Slide１、…、Slide１２７のデータのうちの少なくとも１つが入力データと一致しているか否かを示す。
【０１１８】
リスト探索処理部３２２は、それぞれ１２８個の比較器３２６0、３２６1、…、３２６127、マルチプレックス(ＭＵＸ)３２８1、３２８2、…、３２８n、ならびに、レジスタ３２９0、３２９1、…、３２９127と、アドレス情報生成部３３０と、１２８入力の論理和回路３３１とを有する。比較器３２６0、３２６1、…、３２６127のそれぞれは、一方および他方の入力端に入力されたデータを比較し、両者が一致していれば値「１」を出力し、一致していなければ値「０」を出力する。
【０１１９】
比較器３２６0、３２６1、…、３２６127の一方の入力端には、上述したように、スライド記憶部３２１が有するSlide０、Slide１、…、Slide１２７の出力がそれぞれ入力される。また、比較器３２６0、３２６1、…、３２６０127のそれぞれの他方の入力端には、入力データ（予測誤差値）が入力される。
【０１２０】
比較器３２６0、３２６０1、…、３２６127の出力は、ＷフラグWFLGmであって、１２８入力の論理和回路３３１にそれぞれ入力されると共に、マルチプレックス３２８0、３２８1、…、３２８127の他方の入力端にそれぞれ入力される。論理和回路３３１の出力は、フラグLFINDFLGとしてコントローラ３２３に供給される。フラグLFINDFLGは、ＷフラグWFLG0、WFLG1、…、WFLG127のうち少なくとも１の値が「１」であることを示す。
【０１２１】
マルチプレックス３２８0、３２８1、…、３２８127の出力は、ＲフラグRFLGmとされて、それぞれレジスタ３２９0、３２９1、…、３２９127に格納される。マルチプレックス３２８0、３２８1、…、３２８127は、コントローラ３２３から図示しない経路を経て供給されるフラグListFLGにより、一方および他方の端子のうち何れを選択するかが制御される。
【０１２２】
若し、フラグListFLGの値が「０」であって、現在スライド探索処理が有効であることが示されていれば、マルチプレックス３２８0、３２８1、…、３２８127は、それぞれの一方の入力端に入力された、スライド探索処理部３２０における比較器３２５0、３２５1、…、３２５127の出力をレジスタ３２９0、３２９1、…、３２９127に供給するように制御される。
【０１２３】
一方、フラグListFLGの値が「１」であって、現在リスト探索処理が有効であることが示されていれば、マルチプレックス３２８0、３２８1、…、３２８127は、それぞれの他方の入力端に入力された、リスト探索処理部３２２における比較器３２６0、３２６1、…、３２６127を選択してレジスタ３２９0、３２９1、…、３２９127に供給するように制御される。
【０１２４】
レジスタ３２９0、３２９1、…、３２９127は、マルチプレックス３２８0、３２８1、…、３２８127からの出力が供給されると、格納されているＲフラグRFLG0、RFLG1、…、RFLG127を出力する。すなわち、レジスタ３２９0、３２９1、…、３２９127に格納されるＲフラグRFLG0、RFLG1、…、RFLG127は、マルチプレックス３２８0、３２８1、…、３２８127からの出力により更新される。
【０１２５】
レジスタ３２９0、３２９1、…、３２９127から出力されたＲフラグRFLG0、RFLG1、…、RFLG127は、比較器３２６0、３２６1、…、３２６127の動作を制御する制御信号として、比較器３２６0、３２６1、…、３２６127の制御端にそれぞれ供給される。例えば、比較器３２６mは、対応するレジスタ３２９mから供給された制御信号が値「１」を示していれば比較動作を行い、値「０」を示していれば比較動作を行わない。これは、３２６0、３２６1、…、３２６127それぞれの動作は、３２６0、３２６1、…、３２６127自身の出力により絞り込まれていくことを意味する。
【０１２６】
レジスタ３２９0、３２９1、…、３２９127から出力されたＲフラグRFLG0、RFLG1、…、RFLG127は、さらにアドレス情報生成部３３０にも供給される。アドレス情報生成部３３０は、図８の処理＃５で説明したように、リスト探索処理が終了した際に、レジスタ３２９0、３２９1、…、３２９127から出力されたＲフラグRFLG0、RFLG1、…、RFLG127のうち、値が「１」であるＲフラグRFLGmを選択し、選択されたＲフラグRFLGmの番号をアドレス情報Addressとして出力する。アドレス情報生成部３３０から出力されたアドレス情報Addressは、レジスタ３３２に格納されると共に、コントローラ３２３に供給される。
【０１２７】
ここで、アドレス情報生成部３３０は、値が「１」であるＲフラグRFLGmが複数存在する場合に、スライドの番号が小さい、すなわち、スライド記憶部３２１においてより入力側に近いスライドSlideに基づくＲフラグRFLGmから優先的に選択する。これは、入力に近いSlideの方が、入力データと一致する可能性が高いからである。このとき、図７を用いて説明した符号フォーマットにおいて、アドレス情報Addressが小さい方が短い符号となるように構成すると、圧縮効率が高くなり、好ましい。
【０１２８】
コントローラ３２３は、スライド探索処理部３２０から供給されたフラグSFINDFLGと、リスト探索処理部３２２から供給されたフラグLFINDFLGと、アドレス情報生成部３３０から供給されたアドレス情報Addressとに基づき、レングス情報Lengthおよび比較結果フラグSlideFLAGを生成する。レングス情報Lengthおよび比較結果フラグSlideFLAGは、それぞれレジスタ３３３および３３４に格納される。
【０１２９】
なお、レジスタ３３２〜３３４にそれぞれ格納されたアドレス情報Address、レングス情報Lengthおよび比較結果フラグSlideFLAGは、それぞれ符号フォーマット生成処理部３０６により読み出され、図７に例示する符号フォーマットに従い符号化され符号データ（第１符号データ）が生成される。また、レジスタ３２４に格納された注目画素の画素値も、符号フォーマット生成処理部３０６により読み出され、図７に例示する符号フォーマットに従い符号化され符号データ（第２符号データ）が生成される。
【０１３０】
このような構成において、スライド探索処理は、以下のように行われる。すなわち、比較器３２５0、３２５1、…、３２５127による、入力データ（予測誤差値）と、Slide０、Slide１、…、Slide１２７に格納された過去の入力データとの比較処理が行われる。比較結果がそれぞれ論理和回路３２７に供給され、フラグSFINDFLGが出力される。比較結果は、マルチプレックス３２８0、３２８1、…、３２８127にも供給され、スライド探索処理の間は、レジスタ３２９0、３２９1、…、３２９127に格納される。図１７の構成によれば、この一連の処理を１クロックで実行可能である。
【０１３１】
また、リスト探索処理は、以下のように行われる。すなわち、比較器３２６0、３２６1、…、３２６127による、入力データと、Slide０、Slide１、…、Slide１２７に格納された過去の入力データとの比較処理が行われる。このとき、レジスタ３２９0、３２９1、…、３２９127に格納されるＲフラグRFLG0、RFLG1、…、RFLG127の値に基づき、比較器３２６0、３２６1、…、３２６127の比較動作が制御される。例えば、ＲフラグRFLG0、RFLG1、…、RFLG127の値が全て「０」であれば、比較器３２６0、３２６1、…、３２６127全ての比較動作が行われないことになる。この状態を、リスト探索処理が行われていない状態とする。
【０１３２】
比較器３２６0、３２６1、…、３２６127による比較結果がそれぞれ論理和回路３３１に供給され、フラグLFINDFLGが出力される。また、各比較結果は、マルチプレックス３２８0、３２８1、…、３２８127に供給され、リスト探索処理の間は、レジスタ３２９0、３２９1、…、３２９127に格納される。また、レジスタ３２９0、３２９1、…、３２９127に格納されるＲフラグRFLG0、RFLG1、…、RFLG127は、アドレス情報生成部３３０にも保持される。
【０１３３】
アドレス情報生成部３３０は、レジスタ３２９0、３２９1、…、３２９127に格納される値が全て「０」であれば、保持しているＲフラグRFLG0、RFLG1、…、RFLG127のうち値が「１」のＲフラグRFLGmの位置を、アドレス情報Addressとしてコントローラ３２３に渡す。図１７の構成によれば、このリスト探索処理による一連の処理を１クロックで実行可能である。
【０１３４】
図１７の構成によれば、スライド探索処理部３２０と、リスト探索処理部３２２とがそれぞれ別個の構成とされると共に、スライド探索処理部３２０とリスト探索処理部３２２とでスライド記憶部３２１を共有する。そのため、スライド探索処理部３２０によるスライド探索処理と、リスト探索処理部３２２によるリスト探索処理とを並列的に実行することが可能である。したがって、符号化処理をより高速化できる。また、図１７の構成によれば、先読みバッファや大規模なマトリクスアレイなどの構成が不要なので、ハードウェア規模を小さくできる。
【０１３５】
＜復号部＞
図１８は、復号部２０５の構成の一例を示す。復号部２０５において、符号読み込み部４００により、上述した符号化部２０４で符号化された符号データがメインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから読み込まれる。符号読み込み部４００に読み込まれた符号データは、符号フォーマット解析部４０１に供給される。符号フォーマット解析部４０１は、図７を用いて説明した符号フォーマットに従い、供給された符号データを解釈して注目画素の画素値、アドレス情報Address、レングス情報Lengthおよび比較結果フラグSlideFLAGを取り出す。取り出されたこれらのデータは、スライド展開部４０２に供給される。
【０１３６】
スライド展開部４０２は、直列に接続された複数のレジスタがＦＩＦＯとして構成されるスライド記憶部を持つ。各レジスタは、スライドと呼ばれ、それぞれ１単位（例えば１バイト）のデータを格納可能とされる。スライド展開部４０２は、符号フォーマット解析部４０１から渡された比較結果SlideFLGが「１」であるときは、複数のレジスタのうち、アドレス情報Addressで特定されるレジスタに記憶された予測誤差値を読み出し、読み出した予測誤差値と、「１」に設定された比較結果フラグSlideFLAGとを予測処理部４０３へ送る。一方、スライド展開部４０２は、符号フォーマット解析部４０１から渡された比較結果SlideFLGが「０」であるときは、符号フォーマット解析部４１０から渡された注目画素の画素値と、「０」に設定された比較結果フラグSlideFLAGとを予測処理部４０３へ送る。
【０１３７】
予測処理部４０３は、スライド展開部４０２から、「１」に設定された比較結果フラグSlideFLAGと予測誤差値とを渡された場合は、ラインメモリ制御部４０４によりラインメモリ４０５から読み出された、復号対象の画素（注目画素）の周辺３画素の復号済みの画素ａ、ｂおよびｃ（図５参照）の画素値に基づき、注目画素の画素値の予測値を算出する。そして、その算出した予測値と、スライド展開部４０２から渡された予測画素値とから、注目画素の画素値を算出し、算出した注目画素の画素値を、画像書き込み部４０６およびラインメモリ制御部４０４へ送る。
【０１３８】
なお、ラインメモリ４０５は、復号を行っている復号ラインと、直前に復号が終了した復号済みのラインとの２ライン分の画素値を格納可能である。ここでは、ラインメモリ４０５のうち復号ラインが記憶される領域を現ラインメモリ、復号済みのラインが記憶される領域を前ラインメモリと呼ぶ。ラインメモリ制御部４０４は、ラインメモリ４０５に対する画素値の読み書きを制御する。
【０１３９】
一方、予測処理部４０３は、スライド展開部４０２から、「０」に設定された比較結果フラグSlideFLAGと注目画素の画素値とを渡された場合は、その渡された注目画素の画素値を、画像書き込み部４０６およびラインメモリ制御部４０４へ送る。また、予測処理部４０３は、ラインメモリ制御部４０４によりラインメモリ４０５から読み出された、復号対象の画素（注目画素）の周辺３画素の復号済みの画素ａ、ｂおよびｃ（図５参照）の画素値に基づき、注目画素の画素値の予測値を算出し、その算出した予測値と、スライド展開部４０２から渡された注目画素の画素値とから予測誤差値を算出する。そして、その算出した予測誤差値をスライド展開部４０２へ送る。スライド展開部４０２は、予測処理部４０３から渡された予測誤差値をスライド記憶部に追加する。
【０１４０】
画像書き込み部４０６は、予測処理部４０３から渡された注目画素の画素値を、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃに書き込む。
【０１４１】
＜復号処理の詳細＞
図１９は、上述した本実施形態の符号化方法により符号化された符号データを、復号部２０５で復号する一例の処理を示すフローチャートである。なお、符号読み込み部４００により、メインメモリ２１０から予め符号データが読み込まれているものとする。先ず、ステップＳ１００で、符号フォーマット解析部４０１は、符号読み込み部４００により読み込まれた符号データのヘッダを読み込み、後続する符号がESC符号であるかを判定する（ステップＳ１０１）。
【０１４２】
読み込まれたヘッダからESC符号であると判定された場合は、処理がステップＳ１０２に移行される。ステップＳ１０２で、符号フォーマット解析部４０１は、次のステップＳ１０２でヘッダに続く所定長のビットを画素値として読み込む。読み込まれた画素値は、そのまま注目画素の画素値として出力される（ステップＳ１０３）とともに、注目画素の予測誤差値が算出される（ステップＳ１０４）。そして、算出された予測誤差値がスライド記憶部に追加される（ステップＳ１０５）。算出された予測誤差値のスライド記憶部に対する追加処理は、図１４のフローチャートで説明したのと同様の手順により行われる。そして、処理がステップＳ１０６に移行される。ステップＳ１０６では、注目画素の画素値が、ラインメモリ４０５の現ラインメモリに書き込まれる。
【０１４３】
上述のステップＳ１０１で、読み込まれたヘッダから、ESC符号ではないと判定された場合は、Slide符号であるか否かが判定される（ステップＳ１０７）。ステップＳ１０７で、Slide符号であると判定された場合は、処理はステップＳ１０８に移行される。ステップＳ１０８では、符号フォーマット解析部４０１が、ヘッダに続く所定長のビットをレングス情報Lengthおよびアドレス情報Addressとして読み込む。読み込まれたレングス情報Lengthおよびアドレス情報Addressは、比較結果フラグSlideFLAGとともにスライド展開部４０２に供給される。
【０１４４】
次のステップＳ１０９で、スライド展開部４０２は、スライド記憶部のスライドのうち、アドレス情報Addressで示されるスライドに格納されるデータ（予測誤差値）を読み込む。そして、スライド展開部４０２は、読み込んだデータをスライドに追加する（ステップＳ１１０）とともに、その読み込んだデータに基づいて注目画素の画素値を算出する（ステップＳ１１１）。算出された注目画素の画素値は、画像書き込み部４０６に送られるとともに、ラインメモリ制御部４０４にも送られる。そして、ラインメモリ制御部４０４は、その注目画素の画素値を、ラインメモリ４０５の現ラインメモリに書き込む（ステップＳ１１２）。
【０１４５】
処理はステップＳ１１３に移行され、レングス情報Lengthが「０」より大きいか否かが判定される。若し、レングス情報Lengthが「０」以下であると判定されたら、処理はステップＳ１００に戻される。一方、レングス情報Lengthが「０」より大きいと判定されたら、処理はステップＳ１１４に移行される。ステップＳ１１４で、現在のレングス情報Lengthから１を減じた値が新たなレングス情報Lengthとされ、処理はステップＳ１０９に戻される。
【０１４６】
上述のステップＳ１０７で、Slide符号ではないと判定された場合は、読み込まれた符号データは、ライン終端符号であると判定され、処理はステップＳ１１５に移行される。
ステップＳ１１５では、ラインメモリ制御部４０４は、現ラインメモリのデータを前ラインメモリに上書きする。そして、処理はステップＳ１１６に移行され、全ラインに対する復号処理が終了したか否かが判定される。全ラインに対する復号処理が終了していると判定された場合は、一連の処理が終了する。一方、全ラインに対する復号処理が終了していないと判定された場合は、処理はステップＳ１００に戻される。
【０１４７】
図２０は、復号部２０５の一例の構成をより詳細に示す。なお、図２０において、上述の図２および図１８と共通する部分には同一の符号を付し、詳細な説明を省略する。復号部２０５は、符号読み込み部４００、符号フォーマット解析部４０１、スライド展開部４０２、予測処理部４０３、ラインメモリ制御部４０４、ラインメモリ４０５および画像書き込み部４０６を有すると共に、メインメモリアービタＩ／Ｆ４０７、符号アドレス生成部４０７を有する。
【０１４８】
メインメモリアービタＩ／Ｆ４０８は、メインメモリアービタ２０２との接続を可能にするＩ／Ｆである。メインメモリアービタＩ／Ｆ４０８は、メインメモリアービタ２０２に対して書き込み／読み出し要求（Ｒ／Ｗ信号）やメモリアドレスを送信することで、メインメモリ２１０へのデータの書き込み、メインメモリ２１０からのデータの読み出しなどを行う。
【０１４９】
符号アドレス生成部４０７は、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出す際のメモリアドレスを生成する。符号読み出し部４００は、符号アドレス生成部４０７で生成されたメモリアドレスで特定される符号データの読み出しを、メインメモリアービタＩ／Ｆ４０８を介してメインメモリアービタ２０２に対して要求する。この要求に応じて、メインメモリアービタ２０２によりメインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから読み出された符号データが、メインメモリアービタＩ／Ｆ４０８を介して符号読み出し部４００に供給される。
【０１５０】
＜スライド展開部のハードウェア構成＞
図２１は、スライド展開部４０２のハードウェア構成の一例を示す。スライド展開部４０２は、予測誤差生成部４９０、スライド記憶部５００、コントローラ５０１、マルチプレックス５０２および５０３を有する。
【０１５１】
コントローラ５０１は、例えばマイクロプロセッサからなり、アドレス情報Address、レングス情報Lengthおよび比較結果フラグSlideFLAGが供給され、供給されたこれらのデータに基づきこのスライド展開部４０２の全体の動作を制御する。例えばコントローラ５０１は、スライド記憶部５００におけるデータ値のスライドに対する追加処理や、マルチプレックス５０２および５０３の動作などを制御する。
【０１５２】
スライド記憶部５００は、各々がレジスタからなり、それぞれ１単位のデータが格納される１２８個のスライド５１１0、５１１1、…、５１１127が直列に接続されて構成されたＦＩＦＯと、当該ＦＩＦＯの先頭に接続されるマルチプレックス５１０とを有する。
【０１５３】
各スライド５１１0、５１１1、…、５１１127の出力は、さらに、それぞれマルチプレックス５０２に供給される。マルチプレックス５０２の出力は、マルチプレックス５０３に供給されると共に、マルチプレックス５１０にも供給される。
【０１５４】
予測誤差生成部４９０は、前述の符号フォーマット解析部４０１から供給される注目画素の画素値と、前述の予測処理部４０３から供給される予測値とから、予測誤差値を生成する。予測誤差生成部４９０により生成された予測誤差値は、マルチプレックス５１０に供給されると共に、マルチプレックス５０３にも供給される。
【０１５５】
マルチプレックス５０２は、図１９のステップＳ１０９の処理時に、コントローラ５０１から供給されるアドレス情報Addressに従い、スライド記憶部５００の各スライド５１１0、５１１1、…、５１１127に格納されたデータ値（予測誤差値）からスライド５１１Addressに格納されたデータ値を選択し、選択したデータ値を、マルチプレックス５０３および５１０にそれぞれ供給する。
【０１５６】
マルチプレックス５０３は、図１９のステップＳ１０９の後、マルチプレックス５０２から供給されたデータ値を出力する。また、マルチプレックス５０３は、図１９のステップＳ１０４の後、予測誤差生成部４９０から供給されたデータ値を出力する。マルチプレックス５１０は、図１９のステップＳ１０５のスライド追加処理時には、予測誤差生成部４９０から供給された予測誤差値をスライド５１１0に追加する。一方、図１９のステップＳ１１０のスライド追加処理時には、マルチプレックス５０２から供給された予測誤差値をスライド５１１0に追加する。
【０１５７】
＜作用・効果＞
以上に説明したように、本実施形態では、符号化処理において、入力された予測誤差値が、スライド記憶部に既に記憶されている予測誤差値の何れとも一致していなかった場合は、当該入力された予測誤差値が求められた注目画素の画素値を符号化するので、当該入力された予測誤差値自体を符号化する構成に比べて、符号化に必要なビット数を少なくすることができる。これにより、圧縮率の向上が可能になるという有利な効果を奏する。
【０１５８】
なお、上述では、本発明がプリンタ装置に適用されるように説明したが、これは一例でありこの例に限定されない。すなわち、本発明は、データの可逆符号化をハードウェアを用いて行う他の装置にも適用することが可能である。
【符号の説明】
【０１５９】
２００  プリンタ装置
２０２  メインメモリアービタ
２０３  メインメモリコントローラ
２０４  符号化部
２０５  復号部
２０６  階調処理部
２０７  エンジンコントローラ
２０８  通信コントローラ
２１０Ｂ  データ格納領域
２１０Ｃ  ＣＭＹＫバンド画像データ格納領域
２１０Ａ  プログラム領域
２１０Ｄ  ＣＭＹＫページ符号格納領域
２１０  メインメモリ
３００  データ読み込み部
３０１  ラインメモリ制御部
３０２  ラインメモリ
３０３  予測処理部
３０４  予測誤差処理部
３０５  スライド／リスト生成処理部
３０６  符号フォーマット生成処理部
３０７  符号書き込み部
４００  符号読み込み部
４０１  符号フォーマット解析部
４０２  スライド展開部
４０３  予測処理部
４０４  ラインメモリ制御部
４０５  ラインメモリ
４０６  画像書き込み部
【先行技術文献】
【特許文献】
【０１６０】
【特許文献１】特許第４０００２６６号公報
【図１】
2012129778.tif 000003
【図２】
2012129778.tif 000004
【図３】
2012129778.tif 000005
【図４】
2012129778.tif 000006
【図５】
2012129778.tif 000007
【図６】
2012129778.tif 000008
【図７】
2012129778.tif 000009
【図８】
2012129778.tif 000010
【図９−１】
2012129778.tif 000011
【図９−２】
2012129778.tif 000012
【図１０−１】
2012129778.tif 000013
【図１０−２】
2012129778.tif 000014
【図１０−３】
2012129778.tif 000015
【図１０−４】
2012129778.tif 000016
【図１０−５】
2012129778.tif 000017
【図１０−６】
2012129778.tif 000018
【図１０−７】
2012129778.tif 000019
【図１０−８】
2012129778.tif 000020
【図１１】
2012129778.tif 000021
【図１２】
2012129778.tif 000022
【図１３】
2012129778.tif 000023
【図１４】
2012129778.tif 000024
【図１５】
2012129778.tif 000025
【図１６】
2012129778.tif 000026
【図１７】
2012129778.tif 000027
【図１８】
2012129778.tif 000028
【図１９】
2012129778.tif 000029
【図２０】
2012129778.tif 000030
【図２１】
2012129778.tif 000031