(57)【要約】 【課題】リスト探索処理を行うための回路構成を簡素化することが可能な画像処理装置および画像処理方法を提供する。【解決手段】本発明に係る画像処理装置は、符号化を行う符号化部を有する。符号化部は、リスト探索処理を行うスライド／リスト生成処理部を備える。スライド／リスト生成処理部は、連続する４つの注目画素のそれぞれの画素値と、スライド記憶部に記憶された過去の画素値とを比較するための複数の比較器（３１３、３１４、３１５、３１６）と、それぞれの入力側に、少なくとも２つの対応する比較器の出力が供給される複数のANDゲート（３４０、３５０、３６０、３７０）とを有する。スライド／リスト生成処理部は、各ANDゲート（３４０、３５０、３６０、３７０）の出力に基づいて、リスト探索処理を実行する。【選択図】図７
2012134929.tif 000002
【特許請求の範囲】
【請求項１】
画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段と、
前記第１記憶手段から、符号化対象の注目画素の画素値を読み出す読み出し手段と、
前記読み出し手段で読み出された前記画素値が記憶される第２記憶手段と、
前記読み出し手段で読み出された、連続する複数の前記注目画素のそれぞれの画素値を、前記第２記憶手段に既に記憶されている複数の前記画素値のそれぞれと比較し、比較ごとに、当該比較の結果を２値で示す比較結果信号を生成する比較結果信号生成手段と、
前記比較結果信号生成手段で生成された複数の前記比較結果信号のうちのL（Lは２以上の自然数）個の前記比較結果信号の論理積に基づいて、連続する複数の前記注目画素のそれぞれの画素値からなる入力データ列のうちL個の前記画素値が連続する部分と一致する、前記第２記憶手段に連続して記憶されるL個の前記画素値からなるデータ列を探索する探索手段と、
前記探索手段による探索結果に応じた符号化を行う符号化手段と、を備える、
ことを特徴とする画像処理装置。
【請求項２】
前記符号化手段は、
前記探索手段により前記データ列が探索された場合は、当該探索されたデータ列の長さを示すレングス情報を生成するレングス情報生成手段と、
前記探索手段により前記データ列が探索された場合は、当該探索されたデータ列の開始データが記憶されていた前記第２記憶手段内の位置を示すアドレス情報を生成するアドレス情報生成手段と、
前記レングス情報、および、前記アドレス情報を符号化した第１符号データを生成する第１符号データ生成手段と、
前記探索手段により前記データ列が探索されなかった場合は、前記読み出し手段で読み出された、連続する複数の前記注目画素のうちの先頭の前記注目画素の画素値を符号化した第２符号データを生成する第２符号データ生成手段と、を有する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記探索手段により前記データ列が探索された場合は、当該探索されたデータ列を構成する前記画素値の数を、次回の読み出しにおいて前記読み出し手段が読み出すべき前記注目画素の数として設定する一方、前記探索手段により前記データ列が探索されなかった場合は、次回の読み出しにおいて前記読み出し手段が読み出すべき前記注目画素の数を１に設定する注目画素数設定手段をさらに備え、
前記符号化手段による符号化の後において、前記連続する複数の前記注目画素のうち、先頭の前記注目画素から、前記注目画素数設定手段で設定された前記注目画素の数だけ後に至るまでの前記注目画素のそれぞれの前記画素値は、前記第２記憶手段の一方の端から順次に入力されて前記第２記憶手段に記憶されるとともに、既に記憶された前記画素値は他方の端側へ移動されて前記第２記憶手段に記憶される、
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段から、符号化対象の注目画素の画素値を読み出す第１ステップと、
前記第１ステップで読み出された、連続する複数の前記注目画素のそれぞれの画素値を、前記画素値が記憶される第２記憶手段に既に記憶されている複数の前記画素値のそれぞれと比較し、比較ごとに、当該比較の結果を２値で示す比較結果信号を生成する第２ステップと、
前記第３ステップで生成された複数の前記比較結果信号のうちのL（Lは２以上の自然数）個の前記比較結果信号の論理積に基づいて、連続する複数の前記注目画素のそれぞれの画素値からなる入力データ列のうちL個の前記画素値が連続する部分と一致する、前記第２記憶手段に連続して記憶されるL個の前記画素値からなるデータ列を探索する第３ステップと、
前記第４ステップによる探索結果に応じた符号化を行う第４ステップと、を備える、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置では、入力された画像データを一時的にメモリに記憶し、このメモリに記憶された画像データを所定のタイミングで読み出して、印刷動作を行う。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になりコストが上昇する。そのため、一般的には、入力された画像データを圧縮符号化してメモリに格納するようにしている。
【０００３】
例えば特許文献１には、ＬＺ７７法を用いて圧縮符号化を行う技術が開示されている。
より具体的には、入力される画素値がそれぞれに格納される複数のレジスタを有するスライド記憶部内に、連続する複数の注目画素（符号化対象の画素）の画素値からなる入力データ列のうち２以上の連続する画素値からなる部分と一致するデータ列（「リスト」）があるかを探索し、その一致情報（位置情報や長さなど）を符号化するという具合である。
【０００４】
ここで、特許文献１では、入力データ列を構成する画素の数をｍ、レジスタの数をｎ個とすると、ｍ×ｎ個の演算回路（特許文献１の図２参照）がマトリクス状に配置されている。各演算回路には、入力データ列を構成する何れかの画素値と、何れかのレジスタに格納されたデータとが供給される。そして、各演算回路が、所定の演算処理を並列的に実行することによってリストが探索される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された技術では、各演算回路には、入力データ列の画素値と、レジスタに格納されたデータとを比較するための比較器だけでなく、リストの長さをカウントするためのカウンタ、および、比較器の結果に応じてカウンタ値を出力するか否かを選択するためのセレクタが設けられるので、回路規模が大きくなってしまうという問題がある。
【０００６】
本発明は、上記に鑑みてなされたものであって、リスト探索処理を行うための回路構成を簡素化することが可能な画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段と、前記第１記憶手段から、符号化対象の注目画素の画素値を読み出す読み出し手段と、前記読み出し手段で読み出された前記画素値が記憶される第２記憶手段と、前記読み出し手段で読み出された、連続する複数の前記注目画素のそれぞれの画素値を、前記第２記憶手段に既に記憶されている複数の前記画素値のそれぞれと比較し、比較ごとに、当該比較の結果を２値で示す比較結果信号を生成する比較結果信号生成手段と、前記比較結果信号生成手段で生成された複数の前記比較結果信号のうちのL（Lは２以上の自然数）個の前記比較結果信号の論理積に基づいて、連続する複数の前記注目画素のそれぞれの画素値からなる入力データ列のうちL個の前記画素値が連続する部分と一致する、前記第２記憶手段に連続して記憶されるL個の前記画素値からなるデータ列を探索する探索手段と、前記探索手段による探索結果に応じた符号化を行う符号化手段と、を備えることを特徴とする。
【０００８】
また、本発明は、画像データを構成する複数の画素の各々の画素値が書き込まれる第１記憶手段から、符号化対象の注目画素の画素値を読み出す第１ステップと、前記第１ステップで読み出された、連続する複数の前記注目画素のそれぞれの画素値を、前記画素値が記憶される第２記憶手段に既に記憶されている複数の前記画素値のそれぞれと比較し、比較ごとに、当該比較の結果を２値で示す比較結果信号を生成する第２ステップと、前記第３ステップで生成された複数の前記比較結果信号のうちのL（Lは２以上の自然数）個の前記比較結果信号の論理積に基づいて、連続する複数の前記注目画素のそれぞれの画素値からなる入力データ列のうちL個の前記画素値が連続する部分と一致する、前記第２記憶手段に連続して記憶されるL個の前記画素値からなるデータ列を探索する第３ステップと、前記第４ステップによる探索結果に応じた符号化を行う第４ステップと、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数の比較結果信号のうちのL（Lは２以上の自然数）個の比較結果信号の論理積に基づいてリスト探索処理が行われるので、ANDゲートを設けるだけでよく、カウンタやセレクタは不要である。したがって、従来の構成に比べて、回路規模を小さくすることが可能になるという有利な効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、この発明の実施形態による画像処理装置を適用可能な画像形成装置の機構部の構成例を示す略線図である。
【図２】図２は、画像形成装置における電装・制御装置の構成の一例を示すブロック図である。
【図３】図３は、画像形成装置の全体的な動作の例を概略的に示すフローチャートである。
【図４】図４は、符号化部の構成の一例を示す図である。
【図５】図５は、スライド／リスト生成処理部の詳細な構成の一例を示す図である。
【図６】図６は、符号フォーマットの例を示す図である。
【図７】図７は、リスト探索処理部の詳細な構成の一例を示す図である。
【図８】図８は、本実施形態の符号化処理を説明するための図である。
【図９】図９は、非連続処理の詳細な内容の一例を示すフローチャートである。
【図１０】図１０は、連続処理の詳細な内容の一例を示す図である。
【図１１】図１１は、スライド追加処理の詳細な内容の一例を示す図である。
【図１２】図１２は、符号化処理の詳細な内容の一例を示す図である。
【図１３】図１３は、データ読み出し処理の詳細な内容の一例を示す図である。
【図１４】図１４は、符号化処理の具体例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら、本発明に係る画像処理装置の一実施形態を詳細に説明する。図１は、本実施形態に係る画像処理装置を適用可能な画像形成装置（カラープリンタとする）の機構部の構成例を示す。なお、本実施形態では、本発明に係る画像処理装置および画像処理方法をカラープリンタである画像形成装置に適用した例について説明するが、文字画像を含む画像に画像処理を施すものであれば、これに限定するものではない。例えば、本発明は、複写機、ファクシミリ、複合機などの画像処理装置にも適用することができる。
【００１２】
＜実施形態に適用可能なプリンタの例＞
図１に例示されるプリンタ装置２００は、４色（Ｙ、Ｍ、Ｃ、Ｋ）の画像をそれぞれ独立の作像系１Ｙ、１Ｍ、１Ｃ、１Ｋで形成し、この４色の画像を合成する４ドラムタンデムエンジンタイプの画像形成装置である。各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは、像担持体としての感光体、例えば小径のＯＰＣ（有機感光体）ドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを有し、このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋを取り囲むように作像の上流側から帯電手段としての帯電ローラ３Ｙ、３Ｍ、３Ｃ、３Ｋと、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像をそれぞれ現像剤で現像してＹ、Ｍ、Ｃ、Ｋ各色のトナー像とする現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋと、クリーニング装置５Ｙ、５Ｍ、５Ｃ、５Ｋと、除電装置６Ｙ、６Ｍ、６Ｃ、６Ｋなどが配置されている。
【００１３】
各現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋの脇には、Ｙトナー、Ｍトナー、Ｃトナー、Ｋトナーをそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋへ補給するトナーボトルユニット７Ｙ、７Ｍ、７Ｃ、７Ｋが配置されている。また、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは各々独立な光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが配置され、この光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋはレーザ光源としてのレーザダイオード（ＬＤ）光源９Ｙ、９Ｍ、９Ｃ、９Ｋや、コリメートレンズ１０Ｙ、１０Ｍ、１０Ｃ、１０Ｋ、ｆθレンズ１１Ｙ、１１Ｍ、１１Ｃ、１１Ｋ、といった光学部品、偏向走査手段としてのポリゴンミラー１２Ｙ、１２Ｍ、１２Ｃ、１２Ｋ、折り返しミラー１３Ｙ、１３Ｍ、１３Ｃ、１３Ｋ、１４Ｙ、１４Ｍ、１４Ｃ、１４Ｋなどを有する。
【００１４】
各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋは垂直に配列され、その右側には転写ベルトユニット１５がＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに接する形で配置される。転写ベルトユニット１５は、転写ベルト１６がローラ１７〜２０に張架されて図示しない駆動源により回転駆動される。装置下側には転写材としての転写紙が収納された給紙トレイ２１が配置され、装置上部に定着装置２２、排紙ローラ２３及び排紙トレイ２４が配設される。 
【００１５】
作像時には、各作像系１Ｙ、１Ｍ、１Ｃ、１Ｋにおいて、それぞれ、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが図示しない駆動源により回転駆動され、帯電ローラ３Ｙ、３Ｍ、３Ｃ、３ＫによりＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋが一様に帯電されて光書き込み装置８Ｙ、８Ｍ、８Ｃ、８Ｋが各色の画像データに基づきＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋに光書込みを行うことによって、ＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上に静電潜像が形成される。
【００１６】
このＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上の静電潜像はそれぞれ現像装置４Ｙ、４Ｍ、４Ｃ、４Ｋにより現像されてＹ、Ｍ、Ｃ、Ｋ各色のトナー像となり、一方、給紙トレイ２１から給紙ローラ２５により転写紙が水平方向に給紙されて搬送系により作像系１Ｙ、１Ｍ、１Ｃ、１Ｋ方向へ垂直に搬送される。この転写紙は、転写ベルト１６に静電的に吸着保持されて転写ベルト１６により搬送され、図示しない転写バイアス印加手段により転写バイアスが印加されてＯＰＣドラム２Ｙ、２Ｍ、２Ｃ、２Ｋ上のＹ、Ｍ、Ｃ、Ｋ各色のトナー像が順次に重ねて転写されることでフルカラー画像が形成される。このフルカラー画像が形成された転写紙は、定着装置２２によりフルカラー画像が定着されて排紙ローラ２３により排紙トレイ２４へ排出される。
【００１７】
図２は、図１のプリンタ装置２００の電装・制御系統の構成の一例を示すブロック図である。図２の例では、プリンタ装置２００は、制御部２３０、メインメモリ２１０、プリンタエンジン２１１およびオペレーションパネル２４０を備える。制御部２３０は、ＣＰＵ(Central Processing Unit)２１２と、ＣＰＵ  Ｉ／Ｆ２０１と、メインメモリアービタ２０２と、メインメモリコントローラ２０３と、符号化部２０４と、復号部２０５と、階調処理部２０６と、エンジンコントローラ２０７と、通信コントローラ２０８と、パネルコントローラ２４１とを含む。
【００１８】
ＣＰＵ２１２は、メインメモリ２１０に格納されるプログラムに従い、このプリンタ装置２００の全体の動作を制御する。ＣＰＵ２１２は、ＣＰＵ  Ｉ／Ｆ２０１を介してメインメモリアービタ２０２に接続される。メインメモリアービタ２０２は、ＣＰＵ２１２、符号化部２０４、復号部２０５および通信コントローラ２０８の、メインメモリ２１０に対するアクセスを調停する。
【００１９】
メインメモリ２１０は、メインメモリコントローラ２０３を介してメインメモリアービタ２０２に接続される。メインメモリコントローラ２０３は、メインメモリ２１０に対するアクセスの制御を行う。
【００２０】
メインメモリ２１０は、プログラム領域２１０Ａ、ＰＤＬデータ格納領域２１０Ｂ、ＣＭＹＫバンド画像データ格納領域２１０Ｃ、ＣＭＹＫページ符号格納領域２１０Ｄおよびその他の領域２１０Ｅを有する。プログラム領域２１０Ａは、ＣＰＵ２１２が動作するためのプログラムが格納される。ＰＤＬデータ格納領域２１０Ｂは、例えばコンピュータ２２０から通信コントローラ２０８を介して供給されたＰＤＬデータが格納される。ＣＭＹＫバンド画像データ格納領域２１０Ｃは、ＣＭＹＫバンド画像データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、バンド画像データが圧縮符号化された符号データが格納される。ＣＭＹＫページ符号格納領域２１０Ｄは、例えば１ページ分のＣＭＹＫバンド画像データが圧縮符号化された符号データが格納される。領域２１０Ｅは、上述した以外のデータが格納される。
【００２１】
符号化部２０４は、メインメモリ２１０に格納されるバンド画像データを符号化する。バンド画像データが符号化された符号データは、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介してメインメモリ２１０に供給され、ＣＭＹＫページ符号格納領域２１０Ｄに書き込まれる。復号部２０５は、後述するプリンタエンジン２１１に同期して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して復号する。復号された画像データは、階調処理部２０６に供給され、階調処理が施されてエンジンコントローラ２０７に転送される。
【００２２】
エンジンコントローラ２０７は、プリンタエンジン２１１を制御する。図１では、プリンタエンジン２１１としてＣＭＹＫ各色の版のうち１の版のものだけが記載され、その他の版については煩雑さを避けるために省略されている。
【００２３】
通信コントローラ２０８は、ネットワークを介しての通信を制御する。例えば、コンピュータ２２０から出力されたＰＤＬ(Page DESCription Language)データは、ネットワークを介して通信コントローラ２０８により受信される。通信コントローラ２０８は、受信したＰＤＬデータを、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介してメインメモリ２１０に転送する。
【００２４】
なお、ネットワークは、ＬＡＮ(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワークは、有線通信に限らず無線通信を用いたものでもよいし、ＵＳＢ(Universal Serial Bus)やＩＥＥＥ(Institute of Electrical and Electronics Engineers)１３９４といったシリアル通信を行うものでもよい。
【００２５】
オペレーションパネル２４０は、ユーザ操作を受け付けるための複数の操作子と、ユーザに対して情報を提供するための表示素子とを有する。パネルコントローラ２４１は、ＣＰＵ２１２の指示に従い、オペレーションパネル２４０の表示を制御すると共に、オペレーションパネル２４０に対してなされたユーザ操作に応じた信号を、ＣＰＵ２１２に送信する。
【００２６】
次に、図３を用いて、プリンタ装置２００の全体的な動作の例について説明する。図３は、プリンタ装置２００の全体的な動作の例を概略的に示すフローチャートである。
【００２７】
例えばコンピュータ２２０で生成されたＰＤＬデータがネットワークを介して通信コントローラ２０８に受信され、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂに記憶される（ステップＳ１）。ＣＰＵ２１２は、メインメモリ２１０のＰＤＬデータ格納領域２１０Ｂから経路Ａに従いＰＤＬデータを読み出し、ＰＤＬを解析して（ステップＳ２）、解析結果に基づきＣＭＹＫのバンド画像を描画する（ステップＳ３）。描画されたＣＭＹＫのバンド画像によるＣＭＹＫバンド画像データは、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃに記憶される（ステップＳ４）。
【００２８】
符号化部２０４は、経路Ｂに従いＣＭＹＫバンド画像データ格納領域２１０ＣからＣＭＹＫバンド画像データを読み出して、本実施形態による符号化方法を用いて符号化する（ステップＳ５）。ＣＭＹＫバンド画像データが符号化された符号データは、経路Ｃに従いメインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに記憶される（ステップＳ６）。
【００２９】
復号部２０５は、経路Ｄに従いＣＭＹＫページ符号格納領域２１０Ｄから符号データを読み出して画像データに復号し（ステップＳ７）、復号した画像データを階調処理部２０６に供給する。階調処理部２０６は、復号部２０５から供給された画像データに対して階調処理を施して（ステップＳ８）、経路Ｅに従いエンジンコントローラ２０７に供給する。エンジンコントローラ２０７は、供給された画像データに従い基づきプリンタエンジン２１１を制御してプリントアウトを行う（ステップＳ９）。
【００３０】
＜符号化処理の概略＞
図４は、本実施形態に係る符号化部２０４の構成の一例を示す。符号化部２０４は、データ読み出し部３００と、スライド／リスト生成処理部３１０と、符号フォーマット生成処理部３２０と、符号書き込み部３３０とを有する。
【００３１】
データ読み出し部３００は、メインメモリ２１０のＣＭＹＫバンド画像データ格納領域２１０Ｃから、ＣＭＹＫ各版毎のＣＭＹＫバンド画像データを読み出す。このとき、ＣＭＹＫ各版毎のＣＭＹＫバンド画像データは、データ読み出し部３００によりスキャンライン毎に順次、画素単位でＣＭＹＫバンド画像データ格納領域２１０Ｃから読み出される。詳しくは後述するが、本実施形態では、データ読み出し部３００は、最初に、４つの連続する符号化対象の画素（注目画素）の画素値を読み出してスライド／リスト生成処理部３１０へ供給する。４つの連続する注目画素の画素値からなるデータ列を入力データ列と呼び、入力データ列は、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2と第3番目の画素値D3とから構成される。以後、データ読み出し部３００は、所定のタイミング（後述のデータ読み出し処理の実行タイミング）で、スライド／リスト生成処理部３１０から供給される処理画素数に応じた数の画素値をメインメモリ２１０から読み出してスライド／リスト生成処理部３１０へ供給する。
【００３２】
スライド／リスト生成処理部３１０は、データ読み出し部３００で読み出される画素値を記憶するＦＩＦＯ（First In First Out）方式のスライド記憶部を有する。スライド／リスト生成処理部３１０は、データ読み出し部３００から供給される入力データ列を構成する４つの画素値（D0，D1，D2，D3）と、スライド記憶部に記憶された過去の画素値のそれぞれとを比較する。そして、スライド／リスト生成処理部３１０は、入力データ列のうち２以上の画素値が連続する部分と一致する、スライド記憶部に既に連続して記憶されている画素値からなるデータ列（「リスト」と呼ぶ）を探索するリスト探索処理を行う。そして、リスト探索処理の結果から得られたリストの長さを示すレングス情報Lengthと、リスト探索処理の結果から得られたリストの開始データが記憶されていたスライド記憶部内の位置を示すアドレス情報Addressとを生成して、後段の符号フォーマット生成処理部３２０へ出力する。
【００３３】
一方、リスト探索処理の結果、リストが存在しなかった場合は、スライド／リスト生成処理部３１０は、入力データ列の第0番目（先頭）の画素値D0を、ESCデータとして後段の符号フォーマット生成処理部３２０へ供給する。また、スライド／リスト生成処理部３１０は、リストの有無を示すフラグSlideFLAGを、後段の符号フォーマット生成処理部３２０へ供給する。リスト探索処理の結果、リストが存在する場合は、フラグSlideFLAGは「１」に設定される一方、リストが存在しない場合は、フラグSlideFLAGは「０」に設定されるという具合である。また、後述するように、スライド／リスト生成処理部３１０は、処理画素数を決定し、その決定した処理画素数をデータ読み出し部３００へ供給する。
【００３４】
図５は、スライド／リスト生成処理部３１０の詳細な構成の一例を示すブロック図である。図５に示すように、スライド／リスト生成処理部３１０は、リスト探索処理部３１１とアドレス／レングス情報生成部３１２とを有する。リスト探索処理部３１１は、上述のリスト探索処理を実行し、その結果を示す各種の情報（後述）を後段のアドレス／レングス情報生成部３１２へ供給する。アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給された各種の情報に基づいて、フラグSlideFLAG、アドレス情報Address、レングス情報Length、ESCデータを生成し、その生成したデータを後段の符号フォーマット生成処理部３２０へ供給する。
【００３５】
再び図４に戻って説明を続ける。符号フォーマット生成処理部３２０は、供給されたESCデータ、アドレス情報Address、レングス情報Length、フラグSlideFLAGから、図６に例示されるようなフォーマットで、ESC符号およびSlide符号を生成する。
【００３６】
ESC符号は、ESCデータを符号化したものである。図６に示すように、ESC符号は、データ長が１ビットで値が「０」のフラグSlideFLAGをヘッダとして、後に８ビットのデータ長を持つ画素値が接続されてなる。Slide符号は、データ長が１ビットで値が「１」のフラグSlideFLAGをヘッダとして、その後に、それぞれデータ長が７ビットのレングス情報Lengthおよびアドレス情報Addressが順次接続される。なお、この図６に例示される符号フォーマットは、一例であって、これに限られるものではない。
【００３７】
符号フォーマット生成処理部３２０で生成されたESC符号およびSlide符号は、符号書き込み部３３０に供給される。符号書き込み部３３０は、供給されたESC符号およびSlide符号を、メインメモリアービタ２０２およびメインメモリコントローラ２０３を介して、メインメモリ２１０のＣＭＹＫページ符号格納領域２１０Ｄに書き込む。
【００３８】
図７は、リスト探索処理部３１１の詳細な構成の一例を示す図である。図７に示すように、リスト探索処理部３１１は、それぞれ１単位のデータが格納される１２８個のレジスタ（スライド）R0、R1、…、R127と、１２８個のマルチプレックスMUX0、MUX1、…、MUX127とを含んで構成されるスライド記憶部を有する。図７の例では、隣り合うレジスタRの間に、マルチプレックスMUXが１つずつ配置される。
【００３９】
図７に示すように、第0番目のマルチプレックスMUX0には、入力データ列を構成する４つの画素値（D0，D1，D2，D3）が供給される。より具体的には、マルチプレックスMUX0の第１入力端子には第0番目の画素値D0が供給され、第２入力端子には第1番目の画素値D1が供給され、第３入力端子には第2番目の画素値D2が供給され、第４入力端子には第3番目の画素値D3が供給されるという具合である。
【００４０】
また、第1番目のマルチプレックスMUX1には、第0番目のレジスタR0に格納されるデータと、入力データ列を構成する４つの画素値のうちの第0番目〜第2番目の画素値（D0，D1，D2）とが供給される。より具体的には、マルチプレックスMUX1の第１入力端子には第0番目のレジスタR0に格納されたデータが供給され、第２入力端子には第0番目の画素値D0が供給され、第３入力端子には第1番目の画素値D1が供給され、第４入力端子には第2番目の画素値D2が供給されるという具合である。
【００４１】
また、第2番目のマルチプレックスMUX2には、第1番目のレジスタR1および第0番目のレジスタR0のそれぞれに格納されるデータと、入力データ列を構成する４つの画素値のうちの第0番目および第1番目のそれぞれの画素値（D0，D1）とが供給される。より具体的には、マルチプレックスMUX2の第１入力端子には第1番目のレジスタR1に格納されたデータが供給され、第２入力端子には第0番目のレジスタR0に格納されたデータが供給され、第３入力端子には第0番目の画素値D0が供給され、第４入力端子には第1番目の画素値D1が供給されるという具合である。
【００４２】
さらに、第3番目のマルチプレックスMUX3には、第0番目〜第2番目のレジスタR0〜R2のそれぞれに格納されるデータと、入力データ列を構成する４つの画素値のうちの第0番目の画素値（D0）とが供給される。より具体的には、マルチプレックスMUX3の第１入力端子には第2番目のレジスタR2に格納されたデータが供給され、第２入力端子には第1番目のレジスタR1に格納されたデータが供給され、第３入力端子には第0番目のレジスタR0に格納されたデータが供給され、第４入力端子には第0番目の画素値D0が供給されるという具合である。
【００４３】
そして、第m（4≦ｍ≦127）番目のマルチプレックスMUXmには、第m-1番目〜第m-4番目のレジスタRm-1〜Rm-4のそれぞれに格納されたデータが供給されるという具合である。より具体的には、マルチプレックスMUXmの第１入力端子には第m-1番目のレジスタRm-1に格納されたデータが供給され、第２入力端子には第m-2番目のレジスタRm-2に格納されたデータが供給され、第３入力端子には第m-3番目のレジスタRm-3に格納されたデータが供給され、第４入力端子には第m-4番目のレジスタRm-4に格納されたデータが供給されるという具合である。
【００４４】
後述のスライド追加処理が実行されるとき、各マルチプレックスMUXには共通の処理画素数が供給される。供給された処理画素数が「１」のときは、各マルチプレックスMUXは、第１入力端子に供給されるデータを選択して出力する。これにより、各スライドR（R0〜R127）の直前の記憶内容は図７の左側へ１つずつシフトするという具合である。また、供給された処理画素数が「２」のときは、各マルチプレックスMUXは、第２入力端子に供給されるデータを選択して出力する。これにより、各スライドR（R0〜R127）の直前の記憶内容は図７の左側へ２つずつシフトするという具合である。また、供給された処理画素数が「３」のときは、各マルチプレックスMUXは、第３入力端子に供給されるデータを選択して出力する。これにより、各スライドR（R0〜R127）の直前の記憶内容は図７の左側へ３つずつシフトするという具合である。さらに、供給された処理画素数が「４」のときは、各マルチプレックスMUXは、第４入力端子に供給されるデータを選択して出力する。これにより、各スライドR（R0〜R127）の直前の記憶内容は図７の左側へ４つずつシフトするという具合である。
【００４５】
また、図７に示すように、リスト探索処理部３１１は、１２８個の比較器３１３0、３１３1、…、３１３127と、１２８個の比較器３１４0、３１４1、…、３１４127と、１２８個の比較器３１５0、３１５1、…、３１５127と、１２８個の比較器３１６0、３１６1、…、３１６127とを有する。各比較器（３１３、３１４、３１５、３１６）は、一方および他方の入力端に入力されたデータを比較し、両者が一致していれば値「１」を出力し、一致していなければ値「０」を出力する。
【００４６】
比較器３１３0、３１３1、…、３１３127の一方の入力端には、レジスタR0、R1、…、R127の出力がそれぞれ入力される。第x番目（0≦x≦127）の比較器３１３xの一方の入力端には、第x番目のレジスタRxの出力が入力されるという具合である。また、比較器３１３0、３１３1、…、３１３127の他方の入力端には、入力データ列を構成する４つの画素値のうちの第0番目の画素値D0が入力される。ここでは、第x番目の比較器313xの出力はD0_Rxと表記され、出力D0_Rxが「１」の場合は、第0番目の画素値D0と、第x番目のレジスタRxに格納されたデータとが一致していることを示す。一方、出力D0_Rxが「０」の場合は、第0番目の画素値D0と、第x番目のレジスタRxに格納されたデータとが不一致であることを示す。
【００４７】
比較器３１４0、３１４1、…、３１４127の一方の入力端には、レジスタR0、R1、…、R127の出力がそれぞれ入力される。また、比較器３１４0、３１４1、…、３１４127の他方の入力端には、入力データ列を構成する４つの画素値のうちの第1番目の画素値D1が入力される。ここでは、第x番目の比較器３１４xの出力はD1_Rxと表記され、出力D1_Rxが「１」の場合は、第1番目の画素値D1と、第x番目のレジスタRxに格納されたデータとが一致していることを示す。一方、出力D1_Rxが「０」の場合は、第1番目の画素値D1と、第x番目のレジスタRxに格納されたデータとが不一致であることを示す。
【００４８】
比較器３１５0、３１５1、…、３１５127の一方の入力端には、レジスタR0、R1、…、R127の出力がそれぞれ入力される。また、比較器３１５0、３１５1、…、３１５127の他方の入力端には、入力データ列を構成する４つの画素値のうちの第2番目の画素値D2が入力される。ここでは、第x番目の比較器３１５xの出力はD2_Rxと表記され、出力D2_Rxが「１」の場合は、第2番目の画素値D2と、第x番目のレジスタRxに格納されたデータとが一致していることを示す。一方、出力D2_Rxが「０」の場合は、第2番目の画素値D2と、第x番目のレジスタRxに格納されたデータとが不一致であることを示す。
【００４９】
比較器３１６0、３１６1、…、３１６127の一方の入力端には、レジスタR0、R1、…、R127の出力がそれぞれ入力される。また、比較器３１６0、３１６1、…、３１６127の他方の入力端には、入力データ列を構成する４つの画素値のうちの第3番目の画素値D3が入力される。ここでは、第x番目の比較器３１６xの出力はD3_Rxと表記され、出力D3_Rxが「１」の場合は、第3番目の画素値D3と、第x番目のレジスタRxに格納されたデータとが一致していることを示す。一方、出力D3_Rxが「０」の場合は、第3番目の画素値D3と、第x番目のレジスタRｘに格納されたデータとが不一致であることを示す。
【００５０】
本実施形態では、リスト探索処理部３１１は、各比較器（３１３、３１４、３１５、３１６）からの出力のうちL（ここでは2≦L≦4）個の出力の論理積に基づいて、入力データ列（D0，D1，D2，D3）のうち連続するL個の画素値からなる部分と一致する、スライド記憶部に連続して記憶されるL個の画素値からなるデータ列（「リスト」）を探索する。
【００５１】
例えば、第x番目のレジスタRxに格納されたデータと第0番目の画素値D0との比較結果を示す出力D0_Rxと、第x-1番目のレジスタRx-1に格納されたデータと第1番目の画素値D1との比較結果を示す出力D1_Rx-1との論理積が「１」であれば、第0番目の画素値D0と第1番目の画素値D1とが連続してなるリストがスライド記憶部に存在することが特定される。また、例えば、上述の出力D0_Rxと、上述の出力D1_Rx-1と、第x-2番目のレジスタRx-2に格納されたデータと第2番目の画素値D2との比較結果を示す出力D2_Rx-2と、の論理積が「１」であれば、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2とが連続してなるリストがスライド記憶部に存在することが特定される。また、例えば、上述の出力D0_Rxと、上述の出力D1_Rx-1と、上述の出力D2_Rx-2と、第x-3番目のレジスタRx-3に格納されたデータと第3番目の画素値D3との比較結果を示す出力D3_Rx-3と、の論理積が「１」であれば、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2と第3番目の画素値D3とが連続してなるリストがスライド記憶部に存在することが特定されるという具合である。以下、具体的な内容について説明する。
【００５２】
図７に示すように、リスト探索処理部３１１は、１２８個のANDゲート（論理積回路）３４０0、３４０1、…、３４０127と、１２７個のANDゲート３５０1、３５０2、…、３５０127と、１２６個のANDゲート３６０2、３６０3、…、３６０127と、１２５個のANDゲート３７０3、３７０4、…、３７０127とを有する。図７からも理解されるように、第x番目のANDゲート３４０xの一方の入力端には、第x番目の比較器３１３_xの出力が入力され、他方の入力端には、第x番目のレジスタRxの有効性を示すフラグRx_FLAGが入力される。第x番目のANDゲート３４０xの出力が「１」の場合は、第0番目の画素値D0と第x番目のレジスタRxに格納されたデータとが一致していることを示すフラグD0一致_xが「１」に設定される（有効となる）。一方、ANDゲート３４０xの出力が「０」の場合は、フラグD0一致_xは「０」に設定される（無効となる）。ANDゲート３４０0、３４０1、…、３４０127のそれぞれの出力（フラグD0一致_x）は、後述のORゲート３８０と、後段のアドレス／レングス情報生成部３１２とに供給される。
【００５３】
図７からも理解されるように、第j番目（1≦j≦127）のANDゲート３５０jの第１入力端には第j番目のレジスタRjの有効性を示すフラグRj_FLAGが入力され、第２入力端には第j-1番目の比較器３１４j-1の出力が入力され、第３入力端には第j番目の比較器３１３jの出力が入力される。第j番目のANDゲート３５０jの出力が「１」の場合は、第j番目のレジスタRjに格納されたデータは第0番目の画素値D0と一致し、第j-1番目のレジスタRj-1に格納されたデータは第1番目の画素値D1と一致することを意味する。したがって、ANDゲート３５０jの出力が「１」の場合は、第0番目の画素値D0と第1番目の画素値D1とが連続してなるデータ列（リスト）がスライド記憶部に存在し、そのデータ列の開始データである画素値D0が、第j番目のレジスタRjに格納されていることを示すフラグD0_2連続_jが「１」に設定される（有効となる）。一方、ANDゲート３５０jの出力が「０」の場合は、フラグD0_2連続_jは「０」に設定される（無効となる）。ANDゲート３５０1、３５０2、…、３５０127のそれぞれの出力（フラグD0_2連続_j）は、後述のORゲート３９０と、後段のアドレス／レングス情報生成部３１２とに供給される。
【００５４】
また、図７からも理解されるように、第k番目（2≦k≦127）のANDゲート３６０kの第１入力端には第k番目のレジスタRkの有効性を示すフラグRk_FLAGが入力され、第２入力端には第k-2番目の比較器３１５k-2の出力が入力され、第３入力端には第k-1番目の比較器３１４k-1の出力が入力され、第４入力端には第k番目の比較器３１３kの出力が入力される。第k番目のANDゲート３６０kの出力が「１」の場合は、第k番目のレジスタRkに格納されたデータは第0番目の画素値D0と一致し、第k-1番目のレジスタRk-1に格納されたデータは第1番目の画素値D1と一致し、第k-2番目のレジスタRk-2に格納されたデータは第2番目の画素値D2と一致することを意味する。したがって、第k番目のANDゲート３６０kの出力が「１」の場合は、第0番目の画素値D0と第1番目の画素値D1と第２番目の画素値D2とが３連続してなるデータ列がスライド記憶部に存在し、そのデータ列の開始データである画素値D0が、第k番目のレジスタRkに格納されていることを示すフラグD0_3連続_kが「１」に設定される（有効となる）。一方、ANDゲート３６０jの出力が「０」の場合は、フラグD0_3連続_kは「０」に設定される（無効となる）。ANDゲート３６０2、３６０3、…、３６０127のそれぞれの出力（フラグD0_3連続_k）は、後述のORゲート４００と、後段のアドレス／レングス情報生成部３１２とに供給される。
【００５５】
さらに、図７からも理解されるように、第p番目（3≦p≦127）のANDゲート３７０pの第１入力端には第p番目のレジスタRpの有効性を示すフラグRp_FLAGが入力され、第２入力端には第p-3番目の比較器３１６p-3の出力が入力され、第３入力端には第p-2番目の比較器３１５p-2の出力が入力され、第４入力端には第p-1番目の比較器３１４p-1の出力が入力され、第５入力端には第p番目の比較器３１３pの出力が入力される。第p番目のANDゲート３７０pの出力が「１」の場合は、第p番目のレジスタRpに格納されたデータは第0番目の画素値D0と一致し、第p-1番目のレジスタRp-1に格納されたデータは第1番目の画素値D1と一致し、第p-2番目のレジスタRp-2に格納されたデータは第2番目の画素値D2と一致し、第p-3番目のレジスタRp-3に格納されたデータは第3番目の画素値D3と一致することを意味する。したがって、第p番目のANDゲート３７０pの出力が「１」の場合は、第0番目の画素値D0と第1番目の画素値D1と第２番目の画素値D2と第３番目の画素値D3とが４連続してなるデータ列がスライド記憶部に存在し、そのデータ列の開始データである画素値D0が、第p番目のレジスタRpに格納されていることを示すフラグD0_4連続_pが「１」に設定される（有効となる）。一方、ANDゲート３７０pの出力が「０」の場合は、フラグD0_4連続_pは「０」に設定される（無効となる）。ANDゲート３７０3、３７０4、…、３７０127のそれぞれの出力は、後述のORゲート４１０と、後段のアドレス／レングス情報生成部３１２とに供給される。
【００５６】
図７に示すように、本実施形態では、リスト探索処理部３１１は、ORゲート（論理和回路）３８０と、ORゲート３９０と、ORゲート４００と、ORゲート４１０とを有する。ORゲート３８０には、ANDゲート３４０0、３４０1、…、３４０127のそれぞれの出力が入力される。ANDゲート３４０0、３４０1、…、３４０127のそれぞれの出力のうち少なくとも１つが「１」である場合は、ORゲート３８０の出力は「１」となり、フラグD0_1FLAGの値は「１」に設定される（有効となる）。フラグD0_1FLAGが有効であるとは、第0番目の画素値D0と同じ画素値が格納されたレジスタRが存在することを示す。一方、ORゲート３８０の出力が「０」の場合は、フラグD0_1FLAGの値は「０」に設定される（無効となる）。ORゲート３８０の出力は、後段のアドレス／レングス情報生成部３１２へ供給される。
【００５７】
ORゲート３９０には、ANDゲート３５０1、３５０2、…、３５０127のそれぞれの出力が入力される。ANDゲート３５０1、３５０2、…、３５０127のそれぞれの出力のうち少なくとも１つが「１」である場合は、ORゲート３９０の出力は「１」となり、フラグD0_2FLAGは「１」に設定される（有効となる）。フラグD0_2FLAGが有効であるとは、第0番目の画素値D0と第1番目の画素値D1とが連続してなるデータ列（D0、D1）と一致するデータ列が、スライド記憶部に存在することを示す。一方、ORゲート３９０の出力が「０」の場合は、フラグD0_2FLAGは「０」に設定される（無効となる）。ORゲート３９０の出力は、後段のアドレス／レングス情報生成部３１２へ供給される。
【００５８】
ORゲート４００には、ANDゲート３６０2、３５０3、…、３５０127のそれぞれの出力が入力される。ANDゲート３６０2、３６０3、…、３６０127のそれぞれの出力のうち少なくとも１つが「１」である場合は、ORゲート４００の出力は「１」となり、フラグD0_3FLAGは「１」に設定される（有効となる）。フラグD0_3FLAGが有効であるとは、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2とが連続してなるデータ列（D0，D1，D2）と一致するデータ列が、スライド記憶部に存在することを示す。一方、ORゲート４００の出力が「０」の場合は、フラグD0_3FLAGの値は「０」に設定される（無効となる）。ORゲート４００の出力は、後段のアドレス／レングス情報生成部３１２へ供給される。
【００５９】
ORゲート４１０には、ANDゲート３７０3、３７０4、…、３７０127のそれぞれの出力が入力される。ANDゲート３７０3、３７０4、…、３７０127のそれぞれの出力のうち少なくとも１つが「１」である場合は、ORゲート４１０の出力は「１」となり、フラグD0_4FLAGは「１」に設定される（有効となる）。フラグD0_4FLAGが有効であるとは、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2と第3番目の画素値D3とが連続してなるデータ列（D0、D1、D2、D3）と一致するデータ列が、スライド記憶部に存在することを示す。一方、ORゲート４１０の出力が「０」の場合は、フラグD0_4FLAGは「０」に設定される（無効となる）。ORゲート４１０の出力は、後段のアドレス／レングス情報生成部３１２へ供給される。
【００６０】
このような構成において、リスト探索処理は、以下のように行われる。まず、比較器３１３0、３１３1、…、３１３127による、入力データ列の第0番目の画素値D0と、レジスタR0、R1、…、R１２７に格納された過去の画素値との比較処理と、比較器３１４0、３１４1、…、３１４127による、入力データ列の第1番目の画素値D1と、レジスタR0、R1、…、R１２７に格納された過去の画素値との比較処理と、比較器３１５0、３１５1、…、３１５127による、入力データ列の第2番目の画素値D2と、レジスタR0、R1、…、R１２７に格納された過去の画素値との比較処理と、比較器３１６0、３１６1、…、３１６127による、入力データ列の第3番目の画素値D3と、レジスタR0、R1、…、R１２７に格納された過去の画素値との比較処理と、が並列的に行われる。
【００６１】
そして、各比較器（３１３、３１４、３１５、３１６）による比較結果が、対応するANDゲート（３４０、３５０、３６０、３７０）の入力側に供給され、フラグ（D0_一致_x、D0_2連続_j、D0_3連続_k、D0_4連続_p）が出力される。当該フラグは、後段のアドレス／レングス情報生成部３１２へ供給されるとともに、対応するORゲート（３８０、３９０、４００、４１０）の入力側にも供給され、別のフラグ（D0_1FLAG、D0_2FLAG、D0_3FLAG、D0_4FLAG）が出力される。ORゲート（３８０、３９０、４００、４１０）から出力されたフラグ（D0_1FLAG、D0_2FLAG、D0_3FLAG、D0_4FLAG）は、後段のアドレス／レングス情報生成部３１２へ供給される。図７の構成によれば、この一連の処理を１クロックで実行可能である。
【００６２】
＜符号化処理の詳細＞
次に、本実施形態の符号化部２０４で行われる符号化処理について、より詳細に説明する。図８は、本実施形態による符号化処理の全体的な流れを示すフローチャートの一例である。最初のステップＳ１０で、後述の連続処理および非連続処理のうち何れが有効であるかを示すフラグLISTFLGが、非連続処理を行っていることを示す値「０」に初期化される。次のステップＳ１１で、スライド／リスト生成処理部３１０は、データ読み出し部３００が読み出すべき注目画素の画素数を示す処理画素数を初期値の「４」に設定し、その設定した処理画素数をデータ読み出し部３００へ供給する。次のステップＳ１２で、スライド／リスト生成処理部３１０は、フラグRx_FLAG（x＝0〜127）を全て有効にする。より具体的には、アドレス／レングス情報生成部３１２（図５参照）は、全てのフラグRx_FLAG（x＝0〜127）の値を「１」に設定したうえでリスト探索処理部３１１の各ANDゲート（３４０、３５０、３６０、３７０）へ供給する。
【００６３】
次のステップＳ１３で、データ読み出し部３００は、スライド／リスト生成処理部３１０から供給された処理画素数に基づいて、データ読み出し処理を行い、入力データ列をスライド／リスト生成処理部３１０へ供給する。このデータ読み出し処理の詳細な内容は後述する。次のステップＳ１４で、スライド／リスト生成処理部３１０（リスト探索処理部３１１）は、前述のリスト探索処理を実行する。次のステップＳ１５では、フラグLISTFLGが「０」であるか否かが判定され、フラグLISTFLGが「０」であると判定された場合は、処理はステップＳ１６に移行する。ステップＳ１６では、スライド／リスト生成処理部３１０（アドレス／レングス情報生成部３１２）は非連続処理を実行する。この非連続処理の詳細な内容については後述する。そして、処理は、ステップＳ１８に移行する。
【００６４】
一方、上述のステップＳ１５で、フラグLISTFLGが「０」ではないと判定された場合は、処理はステップＳ１７に移行する。ステップＳ１７では、スライド／リスト生成処理部３１０（アドレス／レングス情報生成部３１２）は連続処理を実行する。この連続処理の詳細な内容については後述する。そして、処理は、ステップＳ１８に移行する。
【００６５】
ステップＳ１８では、スライド／リスト生成処理部３１０は、スライド記憶部の各レジスタ（スライド）R0〜R127の記憶内容を、後述の非連続処理または連続処理で新たに決定した処理画素数に応じた数だけ他方の端側へシフトするとともに、入力データ列を構成する４つの画素値のうち、新たに決定した処理画素数に応じた数の画素値を、スライド記憶部の一方の端から順次に追加するスライド追加処理を実行する。このスライド追加処理の詳細な内容については後述する。処理は、ステップＳ１９に移行し、全ての画素に対する処理が終了したか否かが判定される。全ての画素に対する処理が終了していないと判定された場合は、処理は上述のステップＳ１３に戻される。一方、全ての画素に対する処理が終了したと判定された場合は、処理はステップＳ２０へ移行する。
【００６６】
ステップＳ２０では、フラグLISTFLGが「０」であるか否かが判定され、フラグLISTFLGが「０」ではないと判定された場合は、処理はステップＳ２１に移行され、リストの有無を示すフラグSlideFLAGが「０」に設定される。そして、処理はステップＳ２２に移行し、符号フォーマット生成処理部３２０による符号化処理が行われる。この符号化処理の詳細な内容については後述する。一方、上述のステップＳ２０で、フラグLISTFLGが「０」であると判定された場合は、一連の符号化処理は終了する。
【００６７】
図９は、図８のステップＳ１６で実行される非連続処理の詳細な内容を示すフローチャートである。先ずステップＳ５０で、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_4FLAGの値が「１」であるか否かを判定する。フラグD0_4FLAGの値が「１」であると判定された場合は、処理はステップＳ５１に移行する。ステップＳ５１で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「１」、レングス情報Lengthを「４」に設定する。また、アドレス／レングス情報生成部３１２は処理画素数を「４」に設定する。つまり、上述のリスト探索処理の結果、４つの連続する注目画素の画素値からなるリスト（D0，D1，D2，D3）が探索された場合は、次回の読み出しにおいてデータ読み出し部３００が読み出すべき注目画素の画素数は「４」に設定されるという具合である。そして、処理はステップＳ５２に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_4連続_pに対応するレジスタRpの有効性を示すフラグRp_FLAGの値を「１」に維持する一方、その他のレジスタRの有効性を示すフラグR_FLAGの値を「０」に設定する。
【００６８】
上述のステップＳ５０で、フラグD0_4FLAGの値が「１」ではない、つまりはフラグD0_4FLAGの値が「０」であると判定された場合は、処理はステップＳ５３に移行する。ステップＳ５３では、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_3FLAGの値が「１」であるか否かを判定する。フラグD0_3FLAGの値が「１」であると判定された場合は、処理はステップＳ５４に移行する。ステップＳ５４で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」、レングス情報Lengthを「３」に設定する。また、アドレス／レングス情報生成部３１２は処理画素数を「３」に設定する。つまり、上述のリスト探索処理の結果、３つの連続する注目画素の画素値からなるリスト（D0，D1，D2）が探索された場合は、次回の読み出しにおいてデータ読み出し部３００が読み出すべき注目画素の画素数は「３」に設定されるという具合である。そして、処理はステップＳ５５に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_3連続_kに対応するレジスタRkのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_3連続_kが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００６９】
処理はステップＳ５６に移行し、ステップＳ５６で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ５４で設定したレングス情報Length、上述のステップＳ５５で生成したアドレス情報Address、上述のステップＳ５６で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ５７に移行し、ステップＳ５７で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。
【００７０】
上述のステップＳ５３で、フラグD0_3FLAGの値が「１」ではない、つまりはフラグD0_3FLAGの値が「０」であると判定された場合は、処理はステップＳ５８に移行する。ステップＳ５８では、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_2FLAGの値が「１」であるか否かを判定する。フラグD0_2FLAGの値が「１」であると判定された場合は、処理はステップＳ５９に移行する。ステップＳ５９で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」、レングス情報Lengthを「２」に設定する。また、アドレス／レングス情報生成部３１２は処理画素数を「２」に設定する。つまり、上述のリスト探索処理の結果、２つの連続する注目画素の画素値からなるリスト（D0，D1）が探索された場合は、次回の読み出しにおいてデータ読み出し部３００が読み出すべき注目画素の画素数は「２」に設定されるという具合である。そして、処理はステップＳ６０に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_2連続_jに対応するレジスタRjのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_2連続_jが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００７１】
処理はステップＳ６１に移行し、ステップＳ６１で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ５９で設定したレングス情報Length、上述のステップＳ６０で生成したアドレス情報Address、上述のステップＳ６１で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ６２に移行し、ステップＳ６２で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。
【００７２】
上述のステップＳ５８で、フラグD0_2FLAGの値が「１」ではない、つまりはフラグD0_2FLAGの値が「０」であると判定され、スライド記憶部内にリストが存在しなかった場合は、処理はステップＳ６３に移行する。ステップＳ６３で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」、レングス情報Lengthを「０」に設定する。また、アドレス／レングス情報生成部３１２は処理画素数を「１」に設定する。つまり、上述のリスト探索処理によりリストが探索されなかった場合は、次回のデータ読み出しにおいてデータ読み出し部３００が読み出すべき注目画素の数は「１」に設定されるという具合である。そして、処理はステップＳ６４に移行し、ステップＳ６４で、アドレス／レングス情報生成部３１２は、入力データ列のうちの第0番目（先頭）の画素値D0を、ESCデータとして設定する。次のステップＳ６５で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「０」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ６４で設定したESCデータ、上述のステップＳ６５で「０」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ６６に移行し、ステップＳ６６で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。
【００７３】
図１０は、図８のステップＳ１７で実行される連続処理の詳細な内容を示すフローチャートである。先ずステップＳ６７で、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_4FLAGの値が「１」であるか否かを判定する。フラグD0_4FLAGの値が「１」であると判定された場合は、処理はステップＳ６８に移行する。ステップＳ６８で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「１」に設定する。また、アドレス／レングス情報生成部３１２は、直前のレングス情報Lengthに「４」を加えた値を新たなレングス情報Lengthとして設定する。さらに、アドレス／レングス情報生成部３１２は、処理画素数を「４」に設定する。そして、処理はステップＳ６９に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_4連続_pに対応するレジスタRpの有効性を示すフラグRp_FLAGの値を「１」に維持する一方、その他のレジスタRの有効性を示すフラグR_FLAGの値を「０」に設定する。
【００７４】
また、上述のステップＳ６７で、フラグD0_4FLAGの値が「１」ではない、つまりはフラグD0_4FLAGの値が「０」であると判定された場合は、処理はステップＳ７０に移行する。ステップＳ７０では、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_3FLAGの値が「１」であるか否かを判定する。フラグD0_3FLAGの値が「１」であると判定された場合は、処理はステップＳ７１に移行する。ステップＳ７１で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」に設定する。また、アドレス／レングス情報生成部３１２は、直前のレングス情報Lengthに「３」を加えた値を新たなレングス情報Lengthとして設定する。さらに、アドレス／レングス情報生成部３１２は、処理画素数を「３」に設定する。そして、処理はステップＳ７２に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_3連続_kに対応するレジスタRkのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_3連続_kが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００７５】
処理はステップＳ７３に移行し、ステップＳ７３で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ７１で設定したレングス情報Length、上述のステップＳ７２で生成したアドレス情報Address、上述のステップＳ７３で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ７４に移行し、ステップＳ７４で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。処理はステップＳ７５に移行し、ステップＳ７５で、アドレス／レングス情報生成部３１２は、全てのフラグRx_FLAG（x＝0〜127）の値を「１」に設定したうえでリスト探索処理部３１１へ供給する。
【００７６】
また、上述のステップＳ７０で、フラグD0_3FLAGの値が「１」ではない、つまりはフラグD0_3FLAGの値が「０」であると判定された場合は、処理はステップＳ７６に移行する。ステップＳ７６では、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_2FLAGの値が「１」であるか否かを判定する。フラグD0_2FLAGの値が「１」であると判定された場合は、処理はステップＳ７７に移行する。ステップＳ７７で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」に設定する。また、アドレス／レングス情報生成部３１２は、直前のレングス情報Lengthに「２」を加えた値を新たなレングス情報Lengthとして設定する。さらに、アドレス／レングス情報生成部３１２は、処理画素数を「２」に設定する。そして、処理はステップＳ７８に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_2連続_jに対応するレジスタRjのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_2連続_jが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００７７】
処理はステップＳ７９に移行し、ステップＳ７９で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ７７で設定したレングス情報Length、上述のステップＳ７８で生成したアドレス情報Address、上述のステップＳ７９で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ８０に移行し、ステップＳ８０で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。処理はステップＳ８１に移行し、ステップＳ８１で、アドレス／レングス情報生成部３１２は、全てのフラグRx_FLAG（x＝0〜127）の値を「１」に設定したうえでリスト探索処理部３１１へ供給する。
【００７８】
また、上述のステップＳ７６で、フラグD0_2FLAGの値が「１」ではない、つまりはフラグD0_2FLAGの値が「０」であると判定された場合は、処理はステップＳ８２に移行する。ステップＳ８２では、アドレス／レングス情報生成部３１２は、リスト探索処理部３１１から供給されたフラグD0_1FLAGの値が「１」であるか否かを判定する。フラグD0_1FLAGの値が「１」であると判定された場合は、処理はステップＳ８３に移行する。ステップＳ８３で、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」に設定する。また、アドレス／レングス情報生成部３１２は、直前のレングス情報Lengthに「１」を加えた値を新たなレングス情報Lengthとして設定する。さらに、アドレス／レングス情報生成部３１２は、処理画素数を「１」に設定する。そして、処理はステップＳ８４に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_一致_xに対応するレジスタRxのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグD0_一致_xが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００７９】
処理はステップＳ８５に移行し、ステップＳ８５で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ８３で設定したレングス情報Length、上述のステップＳ８４で生成したアドレス情報Address、上述のステップＳ８５で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ８６に移行し、ステップＳ８６で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。処理はステップＳ８７に移行し、ステップＳ８７で、アドレス／レングス情報生成部３１２は、全てのフラグRx_FLAG（x＝0〜127）の値を「１」に設定したうえでリスト探索処理部３１１へ供給する。
【００８０】
また、上述のステップＳ８２で、フラグD0_1FLAGの値が「１」ではない、つまりはフラグD0_1FLAGの値が「０」であると判定された場合は、処理はステップＳ８８に移行する。ステップＳ８８では、アドレス／レングス情報生成部３１２は、フラグLISTFLAGを「０」に設定する。また、アドレス／レングス情報生成部３１２は、直前のレングス情報Lengthの値を新たなレングス情報Lengthとして設定する。さらに、アドレス／レングス情報生成部３１２は、処理画素数を「１」に設定する。そして、処理はステップＳ８９に移行し、アドレス／レングス情報生成部３１２は、「１」に設定されたフラグRp_FLAGに対応するレジスタRpのスライド記憶部内の位置を示すアドレス情報Addressを生成する。アドレス／レングス情報生成部３１２は、「１」に設定されたフラグRp_FLAGが複数ある場合は、それぞれに対応するレジスタRのうち、第0番目のレジスタR0に最も近いレジスタRのアドレス情報Addressを生成する。
【００８１】
処理はステップＳ９０に移行し、ステップＳ９０で、アドレス／レングス情報生成部３１２は、フラグSlideFLAGを「１」に設定する。アドレス／レングス情報生成部３１２は、上述のステップＳ８８で設定したレングス情報Length、上述のステップＳ８９で生成したアドレス情報Address、上述のステップＳ９０で「１」に設定したフラグSlideFLAGを、後段の符合フォーマット生成処理部３２０へ供給する。そして、処理は、ステップＳ９１に移行し、ステップＳ９１で、符号フォーマット生成処理部３２０は後述の符号化処理を実行する。処理はステップＳ９２に移行し、ステップＳ９２で、アドレス／レングス情報生成部３１２は、全てのフラグRx_FLAG（x＝0〜127）の値を「１」に設定したうえでリスト探索処理部３１１へ供給する。
【００８２】
図１１は、図８のステップＳ１８で実行されるスライド追加処理の詳細な内容を示すフローチャートである。先ずステップＳ１００で、スライド／リスト生成処理部３１０は、上述の非連続処理または連続処理で設定された処理画素数が「１」であるか否かを判定する。処理画素数が「１」であると判定された場合は、処理はステップＳ１０１に移行し、ステップＳ１０１で、スライド／リスト生成処理部３１０は、スライド記憶部の各レジスタ（R0〜R127）の記憶内容を１つずつ他方の端側へシフトさせて、入力データ列を構成する４つの連続する画素値（D0，D1，D2，D3）のうち、先頭の第0番目の画素値D0のみを一方の端から入力して第0番目のレジスタR0へ追加する。
【００８３】
上述のステップＳ１００で、処理画素数は「１」ではないと判定された場合は、処理はステップＳ１０２に移行する。ステップＳ１０２で、スライド／リスト生成処理部３１０は、上述の非連続処理または連続処理で設定された処理画素数が「２」であるか否かを判定する。処理画素数が「２」であると判定された場合は、処理はステップＳ１０３へ移行し、ステップＳ１０３で、スライド／リスト生成処理部３１０は、スライド記憶部の各レジスタ（R0〜R127）の記憶内容を２つずつ他方の端側へシフトさせて、入力データ列のうち、第0番目の画素値D0と第1番目の画素値D1とを一方の端から順次に入力して、第1番目のレジスタR1へ画素値D0を追加し、第0番目のレジスタR0へ画素値D1を追加する。
【００８４】
上述のステップＳ１０２で、処理画素数は「２」ではないと判定された場合は、処理はステップＳ１０４に移行する。ステップＳ１０４で、スライド／リスト生成処理部３１０は、上述の非連続処理または連続処理で設定された処理画素数が「３」であるか否かを判定する。処理画素数が「３」であると判定された場合は、処理はステップＳ１０５へ移行し、ステップＳ１０５で、スライド／リスト生成処理部３１０は、スライド記憶部の各レジスタ（R0〜R127）の記憶内容を３つずつ他方の端側へシフトさせて、入力データ列のうち、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2とを一方の端から順次に入力して、第2番目のレジスタR2へ画素値D0を追加し、第1番目のレジスタR1へ画素値D1を追加し、第0番目のレジスタR0へ画素値D2を追加する。
【００８５】
上述のステップＳ１０４で、処理画素数は「３」ではないと判定された場合は、処理はステップＳ１０６に移行する。ステップＳ１０６で、スライド／リスト生成処理部３１０は、上述の非連続処理または連続処理で設定された処理画素数が「４」であるか否かを判定する。処理画素数が「４」であると判定された場合は、処理はステップＳ１０７に移行し、ステップＳ１０７で、スライド／リスト生成処理部３１０は、スライド記憶部の各レジスタ（R0〜R127）の記憶内容を４つずつ他方の端側へシフトさせて、入力データ列を構成する４つの画素値（D0，D1，D2，D3）のそれぞれを一方の端から順次に入力して、第3番目のレジスタR3へ画素値D0を追加し、第2番目のレジスタR2へ画素値D1を追加し、第1番目のレジスタR1へ画素値D2を追加し、第0番目のレジスタR0へ画素値D3を追加する。
【００８６】
図１２は、上述の符号化処理の詳細な内容を示すフローチャートである。先ずステップＳ１１０で、符号フォーマット生成処理部３２０は、スライド／リスト生成処理部３１０から供給されたフラグSlideFLAGが「１」であるか否かを判定する。フラグSlideFLAGが「１」であると判定した場合は、処理はステップＳ１１１に移行し、ステップＳ１１１で、符号フォーマット生成処理部３２０は、スライド／リスト生成処理部３１０から供給されたアドレス情報Addressとレングス情報Lengthとを、図６に例示されるSlide符号へ符号化する。
【００８７】
一方、上述のステップＳ１１０で、フラグSlideFLAGが「１」ではないと判定された場合、つまりはフラグSlideFLAGが「０」であると判定された場合は、処理はステップＳ１１２に移行し、ステップＳ１１２で、符号フォーマット生成処理部３２０は、スライド／リスト生成処理部３１０から供給されたESCデータを、図６に例示されるESC符号へ符号化する。
【００８８】
図１３は、図８のステップＳ１３で実行されるデータ読み出し処理の詳細な内容の一例を示すフローチャートである。先ずステップＳ１２０で、データ読み出し部３００は、スライド／リスト生成処理部３１０から供給された処理画素数が「１」であるか否かを判定する。処理画素数が「１」であると判定された場合は、処理はステップＳ１２１に移行する。ステップＳ１２１では、直前の入力データ列を構成する４つの画素値は、１つずつシフトされる。より具体的には、直前の入力データ列の第3番目の画素値D3は第2番目の画素値D2にシフトされ、直前の入力データ列の第2番目の画素値D2は第1番目の画素値D1にシフトされ、直前の入力データ列の第1番目の画素値D1は第0番目の画素値D0にシフトされてスライド／リスト生成処理部３１０へ供給されるという具合である。なお、上述のスライド追加処理で説明したように、処理画素数が「１」の場合は、直前の入力データ列の第0番目の画素値D0はスライド記憶部に入力されて記憶される。そして、処理はステップＳ１２２に移行し、ステップＳ１２２では、データ読み込み部３００は、新たに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第3番目の画素値D3としてスライド／リスト生成処理部３１０に供給する。以上のようにして、新たな入力データ列（D0，D1，D2，D3）が構成されてスライド／リスト生成処理部３１０へ供給される。
【００８９】
上述のステップＳ１２０で、処理画素数が「１」ではないと判定された場合は、処理はステップＳ１２３に移行する。ステップＳ１２３で、データ読み出し部３００は、処理画素数が「２」であるか否かを判定する。処理画素数が「２」であると判定された場合は、処理はステップＳ１２４に移行する。ステップＳ１２４では、直前の入力データ列を構成する４つの画素値は、２つずつシフトされる。より具体的には、直前の入力データ列の第2番目の画素値D2は第0番目の画素値D0にシフトされ、直前の入力データ列の第3番目の画素値D3は第1番目の画素値D1にシフトされてスライド／リスト生成処理部３１０へ供給される。なお、上述のスライド追加処理で説明したように、処理画素数が「２」の場合は、直前の入力データ列の第0番目の画素値D0と第1番目の画素値D1とはスライド記憶部に順次に入力されて記憶される。
【００９０】
そして、処理はステップＳ１２５に移行し、ステップＳ１２５では、データ読み込み部３００は、新たに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第2番目の画素値D2としてスライド／リスト生成処理部３１０に供給する。処理はステップＳ１２６に移行し、ステップＳ１２６では、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第3番目の画素値D3としてスライド／リスト生成処理部３１０に供給する。以上のようにして、新たな入力データ列が構成されてスライド／リスト生成処理部３１０へ供給される。
【００９１】
上述のステップＳ１２３で、処理画素数が「２」ではないと判定された場合は、処理はステップＳ１２７に移行する。ステップＳ１２７で、データ読み出し部３００は、処理画素数が「３」であるか否かを判定する。処理画素数が「３」であると判定された場合は、処理はステップＳ１２８に移行する。ステップＳ１２８では、直前の入力データ列を構成する４つの画素値は、３つずつシフトされる。より具体的には、直前の入力データ列の第3番目の画素値D3は第0番目の画素値D0にシフトされてスライド／リスト生成処理部３１０へ供給される。上述のスライド追加処理で説明したように、処理画素数が「３」の場合は、直前の入力データ列の第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2とはスライド記憶部に順次に入力されて記憶される。
【００９２】
そして、処理はステップＳ１２９に移行し、ステップＳ１２９では、データ読み込み部３００は、新たに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第1番目の画素値D1としてスライド／リスト生成処理部３１０に供給する。次のステップＳ１３０で、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第2番目の画素値D2としてスライド／リスト生成処理部３１０に供給する。次のステップＳ１３１で、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第3番目の画素値D3としてスライド／リスト生成処理部３１０に供給する。以上のようにして、新たな入力データ列が構成されてスライド／リスト生成処理部３１０へ供給される。
【００９３】
上述のステップＳ１２７で、処理画素数が「３」ではないと判定された場合は、処理画素数は「４」であると判定されて処理はステップＳ１３２に移行する。上述のスライド追加処理で説明したように、処理画素数が「４」の場合は、前回の第0番目の画素値D0と第1番目の画素値D1とはスライド記憶部に順次に入力されて記憶されるので、直前の入力データ列を構成する４つの画素値（D0、D1、D2、D3）は全てスライド記憶部に記憶されている状態である。処理はステップＳ１３２に移行し、ステップＳ１３２で、データ読み出し部３００は、新たに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第0番目の画素値D0としてスライド／リスト生成処理部３１０に供給する。次のステップＳ１３３で、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第1番目の画素値D1としてスライド／リスト生成処理部３１０に供給する。次のステップＳ１３４で、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第2番目の画素値D2としてスライド／リスト生成処理部３１０に供給する。次のステップＳ１３５で、データ読み込み部３００は、さらに１つの注目画素の画素値をメインメモリ２１０から読み出し、その読み出した画素値を第3番目の画素値D3としてスライド／リスト生成処理部３１０に供給する。以上のようにして、新たな入力データ列が構成されてスライド／リスト生成処理部３１０へ供給される。
【００９４】
次に、図１４を参照しながら、本実施形態の符号化処理の具体例を説明する。上述したように、本実施形態では、スライド記憶部は１２８個のレジスタR（R0〜R127）を有しているが、図１４の例では、説明の便宜上、７個のレジスタR（第0番目のレジスタR0〜第7番目のレジスタR7）に着目して説明する。
【００９５】
最初の処理＃１において、第0番目のレジスタR0には画素値「ａ」、第1番目のレジスタR1には画素値「ｂ」、第2番目のレジスタR2には画素値「ｃ」、第3番目のレジスタR3には画素値「ａ」、第4番目のレジスタR4には画素値「ｂ」、第5番目のレジスタR5には画素値「ｄ」、第6番目のレジスタR6には画素値「ａ」、第7番目のレジスタR7には画素値「ｂ」がそれぞれ格納されている。図１４に示すように、このときの入力データ列は「ｂ，ａ，ｃ，ｃ」であり、第0番目の画素値D0は「ｂ」、第1番目の画素値D1は「ａ」、第2番目の画素値D2は「ｃ」、第3番目の画素値D3は「ｃ」であるとする。ここでは、処理＃１は非連続処理であるとする。このため、フラグRx_FLAG（x＝0〜127）の値は全て「１」に設定されている。
【００９６】
処理＃１においては、第4番目のレジスタR4に格納されたデータ（「ｂ」）と第0番目の画素値D0（「ｂ」）とが一致し、第3番目のレジスタR3に格納されたデータ（「ａ」）と第1番目の画素値D1(「ａ」）とが一致し、第2番目のレジスタR2に格納されたデータ（「ｃ」）と第2番目の画素値D2(「ｃ」）とが一致している。したがって、第0番目の画素値D0と第1番目の画素値D1と第2番目の画素値D2とが３連続してなるリストがスライド記憶部に存在し、そのリストの開始データである画素値D0が、第4番目のレジスタR4に格納されていることを示すフラグD0_3連続_4が「１」に設定される。また、このとき、フラグD0_2連続_4およびフラグD0一致_4も「１」に設定されるが、図９の非連続処理で説明したように、フラグD0_3連続_4が「１」に設定された場合の処理は、フラグD0_2連続_4およびフラグD0一致_4が「１」に設定された場合の処理よりも優先されるので、リストの長さを示すレングス情報Lengthが「３」に設定され、第4番目のレジスタR4の位置を示すアドレス情報Addressが生成される。そして、このアドレス情報Addressおよびレングス情報Lengthが符号化される。
【００９７】
続いて、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は３つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ｂ」と、第1番目の画素値D1である「ａ」と、第2番目の画素値D2である「ｃ」とが図１４の左側から順次に入力されて、第0番目の画素値D0である「ｂ」は第2番目のレジスタR2に格納され、第1番目の画素値D1である「ａ」は第1番目のレジスタR1に格納され、第2番目の画素値D2である「ｃ」は第0番目のレジスタR0に格納されて、次の処理＃２に移る。以上の処理＃１においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理＃２は非連続処理となる。
【００９８】
処理＃１での処理画素数は「３」であるので、処理＃２では、直前（処理＃１）の入力データ列の第3番目の画素値D3である「ｃ」が第0番目の画素値D0としてシフトされ、新たに３つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ｂ」が第1番目の画素値D1とされ、新たに読み出された画素値「ａ」が第2番目の画素値D2とされ、新たに読み出された画素値「ｂ」が第3番目の画素値D3とされる。すなわち、処理＃２での入力データ列は「ｃ（第0番目），ｂ（第1番目），ａ（第2番目），ｂ（第3番目）」となる。
【００９９】
処理＃２においては、第5番目のレジスタR5に格納されたデータ（「ｃ」）と第0番目の画素値D0（「ｃ」）とが一致し、第4番目のレジスタR4に格納されたデータ（「ｂ」）と第1番目の画素値D1(「ｂ」）とが一致している。したがって、第0番目の画素値D0と第1番目の画素値D1とが２連続してなるリストがスライド記憶部に存在し、そのリストの開始データである画素値D0が、第5番目のレジスタR5に格納されていることを示すフラグD0_2連続_5が「１」に設定される。また、このとき、フラグD0一致_5も「１」に設定されるが、図９の非連続処理で説明したように、フラグD0_2連続_5が「１」に設定された場合の処理が優先されるので、リストの長さを示すレングス情報Lengthの値が「２」に設定され、第5番目のレジスタR5の位置を示すアドレス情報Addressが生成される。そして、このアドレス情報Addressおよびレングス情報Lengthが符号化される。
【０１００】
続いて、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は２つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ｃ」と、第1番目の画素値D1である「ｂ」とが図１４の左側から順次に入力されて、第0番目の画素値D0である「ｃ」は第1番目のレジスタR1に格納され、第1番目の画素値D1である「ｂ」は第0番目のレジスタR0に格納されて、次の処理＃３に移る。以上の処理＃２においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理＃３は非連続処理となる。
【０１０１】
処理＃２での処理画素数は「２」であるので、処理＃３では、直前（処理＃２）の入力データ列の第2番目の画素値D2である「ａ」が第0番目の画素値D0としてシフトされ、直前の入力データ列の第3番目の画素値D3である「ｂ」が第1番目の画素値D1としてシフトされ、新たに２つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ａ」が第2番目の画素値D2とされ、新たに読み出された画素値「ｃ」が第3番目の画素値D3とされる。すなわち、処理＃３での入力データ列は「ａ（第0番目），ｂ（第1番目），ａ（第2番目），ｃ（第3番目）」となる。
【０１０２】
処理＃３においては、第5番目のレジスタR5に格納されたデータ（「ａ」）と第0番目の画素値D0（「ａ」）とが一致し、第4番目のレジスタR4に格納されたデータ（「ｂ」）と第1番目の画素値D1(「ｂ」）とが一致し、第3番目のレジスタR3に格納されたデータ（「ａ」）と第2番目の画素値D2（「ａ」）とが一致し、第2番目のレジスタR2に格納されたデータ（「ｃ」）と第3番目の画素値D3(「ｃ」）とが一致している。したがって、入力データ列と完全に一致するリストがスライド記憶部に存在し、そのリストの開始データである画素値D0が、第5番目のレジスタR5に格納されていることを示すフラグD0_4連続_5が「１」に設定される。また、このとき、フラグD0_3連続_5、フラグD0_2連続_5およびフラグD0一致_5のそれぞれも「１」に設定されるが、図９の非連続処理で説明したように、フラグD0_4連続_5が「１」に設定された場合の処理が優先されるので、リストの長さを示すレングス情報Lengthの値は「４」に設定され、第5番目のレジスタR5の有効性を示すフラグR5_FLAGが「１」に維持される一方、他のレジスタRの有効性を示すフラグR_FLAGは「０」に設定される。
【０１０３】
そして、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は４つずつ図１４の右側へシフトされ、入力データ列を構成する４つの画素値（ａ，ｂ，ａ，ｃ）のそれぞれが図１４の左側から順次に入力されて、第0番目の画素値D0である「ａ」は第3番目のレジスタR3に格納され、第1番目の画素値D1である「ｂ」は第2番目のレジスタR2に格納され、第2番目の画素値D2である「ａ」は第1番目のレジスタR1に格納され、第3番目の画素値D3である「ｃ」は第0番目のレジスタR0に格納されて、次の処理＃４に移る。以上の処理＃３においては、入力データ列と完全に一致するリストがスライド記憶部に存在する（「１」に設定されたフラグD0_４連続_pがある）ので、次の処理＃４は連続処理となる。
【０１０４】
処理＃３での処理画素数は「４」であるので、次の処理＃４では、新たに４つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ｃ」が第0番目の画素値D0とされ、新たに読み出された画素値「ｂ」が第1番目の画素値D1とされ、新たに読み出された画素値「ｅ」が第2番目の画素値D2とされ、新たに読み出された画素値「ｅ」が第3番目の画素値D3とされる。すなわち、処理＃４での入力データ列は「ｃ（第0番目），ｂ（第1番目），ｅ（第2番目），ｅ（第3番目）」となる。
【０１０５】
処理＃４においては、第5番目のレジスタR5に格納されたデータ（「ｃ」）と第0番目の画素値D0（「ｃ」）とが一致し、第4番目のレジスタR4に格納されたデータ（「ｂ」）と第1番目の画素値D1(「ｂ」）とが一致している。したがって、第0番目の画素値D0と第1番目の画素値D1とが２連続してなるリストがスライド記憶部に存在し、そのリストの開始データである画素値D0が、第5番目のレジスタR5に格納されていることを示すフラグD0_2連続_5が「１」に設定される。また、このとき、フラグD0一致_5も「１」に設定されるが、フラグD0_2連続_5が「１」に設定された場合の処理が優先されるので、処理＃４で探索されたリストの長さを示す「２」に直前のレングス情報Lengthの値「４」を加えた値である「６」がレングス情報Lengthとして設定され、第5番目のレジスタR5の位置を示すアドレス情報Addressが生成される。そして、このアドレス情報Addressおよびレングス情報Lengthが符号化される。
【０１０６】
続いて、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は２つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ｃ」と、第1番目の画素値D1である「ｂ」とが図１４の左側から順次に入力されて、第0番目の画素値D0である「ｃ」は第1番目のレジスタR1に格納され、第1番目の画素値D1である「ｂ」は第0番目のレジスタR0に格納されて、次の処理＃５に移る。以上の処理＃４においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理＃５は非連続処理となり、フラグRx_FLAG（x＝0〜127）の値は再び全て「１」に設定される。
【０１０７】
処理＃４での処理画素数は「２」であるので、次の処理＃５では、直前（処理＃４）の入力データ列の第2番目の画素値D2である「ｅ」が第0番目の画素値D0としてシフトされ、直前の入力データ列の第3番目の画素値D3である「ｅ」が第1番目の画素値D1としてシフトされ、新たに２つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ａ」が第2番目の画素値D2とされ、新たに読み出された画素値「ｃ」が第3番目の画素値D3とされる。すなわち、処理＃５での入力データ列は「ｅ（第0番目），ｅ（第1番目），ａ（第2番目），ｃ（第3番目）」となる。
【０１０８】
処理＃５においては、第0番目のレジスタR0〜第7番目のレジスタR7のそれぞれに格納されたデータ（画素値）のうち、入力データ列の第0番目の画素値D0（「ｅ」）と一致するリストが存在しないので、当該第0番目の画素値D0を符号化してESC符号を生成する。そして、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は１つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ｅ」のみが図１４の左側から入力されて、第0番目のレジスタR0に格納されて、次の処理＃６に移る。以上の処理＃５においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理＃６は非連続処理となる。
【０１０９】
処理＃５での処理画素数は「１」であるので、次の処理＃６では、直前（処理＃５）の入力データ列の第1番目の画素値D1である「ｅ」が第0番目の画素値D0としてシフトされ、直前の入力データ列の第2番目の画素値D2である「ａ」が第1番目の画素値D1としてシフトされ、直前の入力データ列の第3番目の画素値D3である「ｃ」が第2番目の画素値D2としてシフトされ、新たに１つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ａ」が第3番目の画素値D3とされる。すなわち、処理＃６での入力データ列は「ｅ（第0番目），ａ（第1番目），ｃ（第2番目），ａ（第3番目）」となる。
【０１１０】
処理＃６においては、第0番目のレジスタR0に格納された画素値（「ｅ」）と、入力データ列の第0番目の画素値D0（「ｅ」）とが一致しているので、フラグD0一致_0が「１」に設定されるが、その他のフラグは全て「０」に設定される。すなわち、処理＃６においては、入力データ列のうち連続する２以上の画素値からなる部分と一致するリストはスライド記憶部に存在しないので、入力データ列の第0番目の画素値D0を符号化してESC符号を生成する。そして、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は１つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ｅ」のみが図１４の左側から入力されて、第0番目のレジスタR0に格納されて、次の処理＃７に移る。。以上の処理＃６においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理＃７は非連続処理となる。
【０１１１】
処理＃６での処理画素数は「１」であるので、次の処理＃７では、直前（処理＃６）の入力データ列の第1番目の画素値D1である「ａ」が第0番目の画素値D0としてシフトされ、直前の入力データ列の第2番目の画素値D2である「ｃ」が第1番目の画素値D1としてシフトされ、直前の入力データ列の第3番目の画素値D3である「ａ」が第2番目の画素値D2としてシフトされ、新たに１つの注目画素の画素値が読み出される。図１４の例では、新たに読み出された画素値「ａ」が第3番目の画素値D3とされる。すなわち、処理＃６での入力データ列は「ａ（第0番目），ｃ（第1番目），ａ（第2番目），ａ（第3番目）」となる。
【０１１２】
処理＃７においては、第5番目のレジスタR5に格納されたデータ（「ａ」）と第0番目の画素値D0（「ａ」）とが一致し、第4番目のレジスタR4に格納されたデータ（「ｃ」）と第1番目の画素値D1(「ｃ」）とが一致している。したがって、フラグD0_2連続_5が「１」に設定されるので、リストの長さを示すレングス情報Lengthの値が「２」に設定され、第5番目のレジスタR5の位置を示すアドレス情報Addressが生成される。そして、このアドレス情報Addressおよびレングス情報Lengthが符号化される。
【０１１３】
続いて、スライド記憶部の各レジスタ（R0〜R127）の記憶内容は２つずつ図１４の右側へシフトされ、入力データ列のうちの第0番目の画素値D0である「ａ」と、第1番目の画素値D1である「ｃ」とが図１４の左側から順次に入力されて、第0番目の画素値D0である「ａ」は第1番目のレジスタR1に格納され、第1番目の画素値D1である「ｃ」は第0番目のレジスタR0に格納されて、次の処理に移る。以上の処理＃７においては、入力データ列と完全に一致するリストはスライド記憶部に存在しない（「１」に設定されたフラグD0_４連続_pがない）ので、次の処理は非連続処理となるという具合である。
【０１１４】
＜作用・効果＞
以上に説明したように、本実施形態では、各比較器（３１３、３１４、３１５、３１６）の出力信号のうちの少なくとも２つの出力信号の論理積に基づいてリスト探索処理が行われるので、ANDゲート（論理積回路）を設けるだけでよく、カウンタやセレクタは不要である。したがって、本実施形態によれば、従来の構成に比べて、回路規模を小さくすることが可能になるという有利な効果を奏する。
【０１１５】
＜変形例＞
なお、上述の実施形態では、本発明がプリンタ装置に適用されるように説明したが、これは一例でありこの例に限定されない。すなわち、本発明は、データの可逆符号化をハードウェアを用いて行う他の装置にも適用することが可能である。また、上述の実施形態では、入力データ列が４つの画素からなる構成を例示したが、これに限らず、入力データ列を構成する画素の数は任意である。また、上述の実施形態では、スライド記憶部が１２８個のレジスタRを備えているが、これに限らず、スライド記憶部が有するレジスタRの数は任意である。また、上述の実施形態では、ORゲート380〜410が設けられているが、これに限らず、例えばORゲート380〜410が設けられない構成であってもよい。要するに、本発明は、少なくともANDゲートが設けられていればよい。
【符号の説明】
【０１１６】
２００  プリンタ装置
２０２  メインメモリアービタ
２０３  メインメモリコントローラ
２０４  符号化部
２０５  復号部
２０６  階調処理部
２０７  エンジンコントローラ
２０８  通信コントローラ
２１０Ｂ  ＰＤＬデータ格納領域
２１０Ｃ  ＣＭＹＫバンド画像データ格納領域
２１０Ａ  プログラム領域
２１０Ｄ  ＣＭＹＫページ符号格納領域
２１０  メインメモリ
３００  データ読み出し部
３１０  スライド／リスト生成処理部
３１１  リスト探索処理部
３１２  アドレス／レングス情報生成部
３１３  比較器
３１４  比較器
３１５  比較器
３１６  比較器
３４０  ANDゲート
３５０  ANDゲート
３６０  ANDゲート
３７０  ANDゲート
３８０  ORゲート
３９０  ORゲート
４００  ORゲート
４１０  ORゲート
【先行技術文献】
【特許文献】
【０１１７】
【特許文献１】特許第３９２２３８６号公報
【図１】
2012134929.tif 000003
【図２】
2012134929.tif 000004
【図３】
2012134929.tif 000005
【図４】
2012134929.tif 000006
【図５】
2012134929.tif 000007
【図６】
2012134929.tif 000008
【図７】
2012134929.tif 000009
【図８】
2012134929.tif 000010
【図９】
2012134929.tif 000011
【図１０】
2012134929.tif 000012
【図１１】
2012134929.tif 000013
【図１２】
2012134929.tif 000014
【図１３】
2012134929.tif 000015
【図１４】
2012134929.tif 000016