(57)【要約】【課題】画像のラスタ順における同一の画素値が連続する数であるラン長が短い画像データを、高効率に圧縮する画像圧縮装置、画像圧縮方法、コンピュータプログラム、及び、情報記録媒体を提供すること。【解決手段】画像を構成する画素毎に、該画素の画素値と、異なる画素値毎に対応づけられる画素インデックスを有する画素値と、の差を取得する差取得手段と、前記画像を構成する画素毎に、前記差に基づいて、一の画素値に対応する画素インデックスを選択する画素インデックス手段と、前記画像のラスタ順において前記画素インデックスが同一である画素が連続する数であるラン長を取得するラン長取得手段と、選択された前記画素インデックス、前記差、及び、前記ラン長を符号化する符号化手段と、を有する画像圧縮装置。【選択図】図２０
2010074444.tif 000002
【特許請求の範囲】
【請求項１】
画像を構成する画素毎に、該画素の画素値と、異なる画素値毎に対応づけられる画素インデックスを有する画素値と、の差を取得する差取得手段と、
前記画像を構成する画素毎に、前記差に基づいて、一の画素値に対応する画素インデックスを選択する画素インデックス手段と、
前記画像のラスタ順において前記画素インデックスが同一である画素が連続する数であるラン長を取得するラン長取得手段と、
選択された前記画素インデックス、前記差、及び、前記ラン長を符号化する符号化手段と、
を有する画像圧縮装置。
【請求項２】
前記画素インデックス手段は、前記差取得手段により差が取得された画素値のうち、前記差が最小となる画素値の画素インデックスを選択する請求項１記載の画像圧縮装置。
【請求項３】
前記画素インデックスと画素値とが対応づけられた辞書を保持する辞書記憶手段を有し、
前記画素の画素値と対応づけられる画素インデックスが前記辞書記憶手段に保持されない場合に、
前記画素の画素値に対応する画素インデックスを生成する画素インデックス生成手段と、
生成された前記画素インデックスと前記画素の画素値とを対応づけて前記辞書記憶手段に保持させることにより前記辞書を更新する辞書更新手段と、
を有する請求項１又は２記載の画像圧縮装置。
【請求項４】
前記画素インデックスと画素値とが対応づけられた辞書を保持する辞書記憶手段を有し、
前記画素の画素値と対応づけられる画素インデックスが前記辞書記憶手段に保持されない場合、かつ、前記画素の画素値と前記差が最小となる画素値との差が所定の上限値以上の場合に、
前記符号化手段は、前記画素の画素値を符号化する請求項１又は２記載の画像圧縮装置。
【請求項５】
前記所定の上限値を保持する上限値保持手段を有する請求項４記載の画像圧縮装置。
【請求項６】
第一の画素インデックスを有する所定のラン長を有する第一のランと、第二の画素インデックスを有する前記所定のラン長を有する第二のランと、が交互に連続する場合に、前記第一のランの数と前記第二のランの数とに基づく繰り返しの値を取得する繰り返し値取得手段を有し、
前記符号化手段は、さらに、前記繰り返しの値を符号化する請求項１ないし５何れか一項に記載の画像圧縮装置。
【請求項７】
画像データがランレングス符号化方法により圧縮された符号データを解析し、所定の画素値に対応する画素インデックス、前記所定の画素値との差、及び、前記画像データのラスタ順において前記画素値が連続する数であるラン長を取得する符号データ解析手段と、
前記画素インデックスに対応する画素値を、前記画素インデックスと画素値とが対応づけられた辞書から取得する辞書処理手段と、
前記画素値と前記差との和による復号画素の画素値を取得する差分処理手段と、
前記ラン長と前記復号画素の画素値とによりランレングス復号を行うランレングス復号手段と、
を有する画像復号装置。
【請求項８】
前記辞書を保持する辞書保持手段を有する請求項７記載の画像復号装置。
【請求項９】
前記符号データが、画素値と該画素値に対応するラン長とを含む場合に、
前記ランレングス復号手段は、前記ラン長と前記画素値とによりランレングス復号を行う請求項７又は８記載の画像復号装置。
【請求項１０】
前記符号データが、第一の画素インデックスを有する所定のラン長を有する第一のランと、第二の画素インデックスを有する前記所定のラン長を有する第二のランと、が交互に連続する際の、前記第一のランの数と前記第二のランの数とに基づく繰り返しの値を含む場合に、
前記符号データ解析手段は、前記繰り返しの値を取得し、
前記ランレングス復号手段は、前記繰り返しの値に基づいてランレングス復号を行う請求項７ないし９何れか一項に記載の画像復号装置。
【請求項１１】
画像を構成する画素毎に、該画素の画素値と、異なる画素値毎に対応づけられる画素インデックスを有する画素値と、の差を取得する差取得ステップと、
前記画像を構成する画素毎に、前記差に基づいて、一の画素値に対応する画素インデックスを選択する画素インデックスステップと、
前記画像のラスタ順において前記画素インデックスが同一である画素が連続する数であるラン長を取得するラン長取得ステップと、
選択された前記画素インデックス、前記差、及び、前記ラン長を符号化する符号化ステップと、
を有する画像圧縮方法。
【請求項１２】
前記画素インデックスステップにおいて、前記差取得ステップにおいて差が取得された画素値のうち、前記差が最小となる画素値の画素インデックスが選択される請求項１１記載の画像圧縮方法。
【請求項１３】
画像データがランレングス符号化方法により圧縮された符号データを解析し、所定の画素値に対応する画素インデックス、前記所定の画素値との差、及び、前記画像データのラスタ順において前記画素値が連続する数であるラン長を取得する符号データ解析ステップと、
前記画素インデックスに対応する画素値を、前記画素インデックスと画素値とが対応づけられた辞書から取得する辞書処理ステップと、
前記画素値と前記差との和による復号画素の画素値を取得する差分処理ステップと、
前記ラン長と前記復号画素の画素値とによりランレングス復号を行うランレングス復号ステップと、
を有する画像復号方法。
【請求項１４】
請求項１１又は１２記載の画像圧縮方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項１５】
請求項１３記載の画像復号方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、及び、コンピュータプログラムに関する。
【背景技術】
【０００２】
従来から、画像形成装置等において画像処理を行う際に、画像データをメモリに格納する際に、画像データを圧縮することがある。これにより、大容量のメモリを要しない装置構成とすることができる。
【０００３】
例えば、２値画像を高圧縮率で圧縮する２次元圧縮方式の国際標準であるＪＢＩＧ（Ｊｏｉｎｔ  Ｂｉ−ｌｅｖｅｌ  Ｉｍａｇｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ，  ＩＳＯ／ＩＥＣ  １１５４４）等が有名である。ＪＢＩＧは、エントロピ符号として算術符号器であるＱＭ＿コーダを使用している。しかし、ＱＭ＿コーダは、コンテキストメモリや、コンテキストを生成するラインメモリ等の装備が必要であり、ハードウェアコストが高くなる課題と、処理の高速化が難しいという課題とがある。
【０００４】
また、多値画像を可逆符号化するＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｇｒａｐｈｉｃ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ，  ＩＳＯ／ＩＥＣ  １１１７２）の可逆符号化モード等がある。ＪＰＥＧの可逆符号化モードは、予測符号化にハフマン符号や算術符号を組み合わせた方式である。より詳細には、この方式は、７つの予測式で予測誤差の統計を作成し、最も良い予測式を１つ選択し、予測符号化方式で圧縮する。しかしながら、高い圧縮率が望めないという課題がある。
ところで、画像データを圧縮する際には、画像データのラスタ順において、同一の画素値が連続する数を求めることにより、画像データを圧縮する方法がある。
【０００５】
例えば、特開２００３−１９８３７９号公報（特許文献１）には、Ｍｏｖｅ  ｔｏ  Ｆｒｏｎｔ法（以下、「ＭＴＦ法」という。）による符号化方法が記載されている。ＭＴＦ法による符号化では、既出の文字の中で、前回出現した文字が、今回出現する確率が最も高いとみなす。すなわち、ブロックソート法と同様に、同じ文字が繰り返される長い連（以下、「ラン」という。）を生成させる符号化法である。ＭＴＦ法は、ブロックソート法により得られた「同一バイトデータが近接して局在する」ような冗長性の高いデータにおいて、特に高い効果が望まれる。
【０００６】
また、例えば、特許第３８４２９１４号公報（特許文献２）には、複数の画素単位に、ラン長とラン長の繰り返し数とを符号化する方法が開示されている。また、例えば、特開２００５−２７０８１号公報（特許文献３）には、注目画素の連続数及び参照画素の連続数を用いて、予測処理の一部を省略し、符号化処理における処理付加を軽減させる符号化装置等の技術が開示されている。なお、特許文献３における、画素の「連続数」は、「ラン長」に対応する。
【０００７】
【特許文献１】特開２００３−１９８３７９号公報
【特許文献２】特許第３８４２９１４号公報
【特許文献３】特開２００５−２７０８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１及び２に開示の発明は、２値画像の圧縮方法であり、ＲＧＢ等の多値画像を圧縮することには適さない。また、上記特許文献３に開示の発明は、ライン間の相関が高い文書画像に対しては、ラン長を予測することが容易であるが、ライン間の相関が低い写真画像においては、色コンポーネント毎のラン長を予測することが困難である。写真画像は、また、一般にラン長が短いため、ラン長による圧縮よりも画素値そのものの情報量を減じる圧縮が望ましいが、上記特許文献３に開示の発明は、そのようなことが考慮されていない。
【０００９】
本発明は、上記の点に鑑みて、これらの問題を解消するために発明されたものであり、画像のラスタ順における同一の画素値が連続する数であるラン長が短い画像データを、高効率に圧縮する画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、コンピュータプログラム、及び、情報記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の画像圧縮装置は次の如き構成を採用した。
【００１１】
本発明の画像圧縮装置は、画像を構成する画素毎に、該画素の画素値と、異なる画素値毎に対応づけられる画素インデックスを有する画素値と、の差を取得する差取得手段と、前記画像を構成する画素毎に、前記差に基づいて、一の画素値に対応する画素インデックスを選択する画素インデックス手段と、前記画像のラスタ順において前記画素インデックスが同一である画素が連続する数であるラン長を取得するラン長取得手段と、選択された前記画素インデックス、前記差、及び、前記ラン長を符号化する符号化手段と、を有する構成とすることができる。
これにより、画像のラスタ順における同一の画素値が連続する数であるラン長が短い画像データを、高効率に圧縮する画像圧縮装置を提供することができる。
【００１２】
なお、上記課題を解決するため、本発明は、上記画像圧縮装置における画像圧縮方法、及び、その画像圧縮方法をコンピュータに実行させるためのコンピュータプログラム、又は、そのコンピュータプログラムを記録した情報記録媒体としてもよい。
【発明の効果】
【００１３】
本発明の画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、コンピュータプログラム、及び、情報記録媒体によれば、画像のラスタ順における同一の画素値が連続する数であるラン長が短い画像データを、高効率に圧縮する画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、コンピュータプログラム、及び、情報記録媒体を提供することが可能になる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づき説明する。なお、以下の実施の形態において画像データの「圧縮」を「符号化」ともいい、圧縮又は符号化された画像データの「伸張」を「復号」ともいう。また、以下の実施の形態により処理される画像データは、１枚の画像に対応する「ページ」、ページのうち、所定数の主走査ラインからなる部分である「バンド」を有する。
【００１５】
〔本発明の実施の形態〕
図１は、本発明の実施の形態に係る画像処理装置を実装する画像形成装置の機構部の構成例を示す図である。図１では、画像形成装置としてカラープリンタ１を示す。カラープリンタ１は、４色（Ｙ、Ｍ、Ｃ、Ｋ）の画像をそれぞれ独立の作像系で形成し、この４色の画像を合成する４ドラムタンデムエンジンタイプの画像形成装置である。
【００１６】
（カラープリンタ１における電装・制御部のブロック）
図２は、カラープリンタ１における電装・制御部の装置構成を示すブロック図である。図２の電装・制御部１００は、プリンタＡＳＩＣ１１０、プリンタエンジン１２０、メインメモリ１３０、及び、ＣＰＵ１９０を有し、ネットワークを介してパーソナルコンピュータ（以下、「ＰＣ」という。）９００に接続されている。
【００１７】
ＣＰＵ１９０は、カラープリンタ１の全体の制御を行う。プリンタエンジン１２０は、画像を媒体上に形成して出力する。メインメモリ１３０は、ＣＰＵ１９０が出力する描画コマンド、ＣＰＵ１９０が実行するプログラム、及び、画像データのうちバンド毎の画像データであるバンドデータ、ページ毎の圧縮データ等の各種データ等を格納する。
【００１８】
プリンタＡＳＩＣ１１０は、入力される画像データに対して所定の処理を行い、プリンタエンジン１２０に対して出力する。プリンタＡＳＩＣ１１０は、例えば、ＣＰＵ  インタフェース（以下、「Ｉ／Ｆ」という。）１１２、メインメモリアービタ１１３、メインメモリコントローラ１１４、符号化部１１５、復号部１１６、画像処理部１１７、エンジンコントローラ１１８、及び、通信処理部１１９を有する。
【００１９】
ＣＰＵ  Ｉ／Ｆ１１２は、メインメモリアービタ１１３を介してメインメモリコントローラ１１４に接続され、ＣＰＵ１９０とメインメモリコントローラ１１４との間のインタフェース処理を行う。メインメモリアービタ１１３は、符号化部１１５、復号部１１６、通信処理部１１９、及び、ＣＰＵ１９０からの、メインメモリ１３０へのアクセス順等を管理する。メインメモリコントローラ１１４は、メインメモリ１３０へのデータの書き込み及び読み出しを制御する。
【００２０】
符号化部１１５は、メインメモリ１３０に格納されている画像データのうち、例えば、バンドデータを符号化する。符号化部１１５は、メインメモリ１３０が有する符号化されたページが格納されるページメモリ領域に、符号化したバンドデータを格納させる。
【００２１】
復号部１１６は、符号化部１１５により符号化された符号データを受信して復号する。復号部１１６は、復号した画像データを画像処理部１１７に対して出力する。復号部１１６は、復号処理を、プリンタエンジン１２０の処理速度に同期させて行う。
【００２２】
画像処理部１１７は、復号部１１６により復号された画像データに対して所定の画像処理を行い、エンジンコントローラ１１８に対して出力する。エンジンコントローラ１１８は、プリンタエンジン１２０を制御する。
【００２３】
通信処理部１１９は、通信コントローラであり、ネットワークを介して接続されたＰＣ９００から画像データを受信する。画像データは、例えば、ＰＤＬ（ｐａｇｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）の形式を有する。通信処理部１１９は、受信した画像データを、メインメモリ１３０に対して出力する。
【００２４】
（カラープリンタ１における処理の概略）
図３は、カラープリンタ１における処理の概略を示す図である。図３では、入力された画像データが解析され、画像処理された後、プリンタエンジン１２０に対して出力される。図３における処理は、ＰＤＬ記憶ステップＳ２０１、ＰＤＬ解析ステップＳ２０２、ＲＧＢＡ描画処理ステップＳ２０３、ＲＧＢＡバンド画像記憶ステップＳ２０４、ＲＧＢＡ符号化ステップＳ２０５、ＲＧＢＡ符号化ステップＳ２０５、ＲＧＢＡページ符号記憶ステップＳ２０６、ＲＧＢＡ復号ステップＳ２０７、及び、画像処理ステップＳ２１０を有し、上記の順に各ステップの処理が実行される。
【００２５】
ＰＤＬ記憶ステップＳ２０１では、通信処理部１１９から出力されたＰＤＬがメインメモリ１３０に記憶される。ＰＤＬ解析ステップＳ２０２では、ＣＰＵ１９０が、メインメモリ１３０からＰＤＬを読み込み、ＰＤＬを解析して、ＲＧＢＡ描画処理ステップＳ２０３に対し、描画コマンドを出力する。
【００２６】
ＲＧＢＡ描画処理ステップＳ２０３では、ＣＰＵ１９０が、ＰＤＬ解析ステップＳ２０２から入力された描画コマンドにより、バンド画像を描画する。ＲＧＢＡバンド画像記憶ステップＳ２０４では、ＲＧＢＡ描画処理ステップＳ２０３において描画されたバンド画像が、メインメモリ１３０に格納される。
【００２７】
ＲＧＢＡ符号化ステップＳ２０５では、符号化部１１５が、メインメモリ１３０のバンド画像を格納する領域から、ＲＧＢＡバンド画像記憶ステップＳ２０４において格納された画像を読み込み、符号化し、符号データを生成する。ＲＧＢＡページ符号記憶ステップＳ２０６では、ＲＧＢＡ符号化ステップＳ２０５において生成された符号データがメインメモリ１３０に格納される。符号データが格納される領域は、例えば、メインメモリ１３０が有するページ符号を格納する領域である。
【００２８】
ＲＧＢＡ復号ステップＳ２０７では、復号部１１６が、ＲＧＢＡページ符号記憶ステップＳ２０６において格納された符号データを、メインメモリ１３０から読み出し、復号する。ＲＧＢＡ復号ステップＳ２０７では、さらに、復号された画像データが、画像処理ステップＳ２１０に対して出力される。
【００２９】
画像処理ステップＳ２１０は、ＲＧＢ→ＣＭＹ色変換処理ステップＳ２１１、ＵＣＲ処理ステップＳ２１２、及び、階調処理ステップＳ２１３を有し、上記の順に各ステップの処理が実行される。画像処理ステップＳ２１０の各ステップは、画像処理部１１７により実行される。
【００３０】
ＲＧＢ→ＣＭＹ色変換処理ステップＳ２１１では、ＲＧＢＡ復号ステップＳ２０７で復号されたＲＧＢ色空間の画像データの色空間が、ＣＭＹ色空間に変換される。ＵＣＲ処理ステップＳ２１２では、ＣＭＹ色空間に変換された画像データの各画素の画素値に対し、下色除去の処理が行われる。階調処理ステップＳ２１３では、下色除去処理された画像データに対し、階調補正処理が行われる。
【００３１】
画像処理ステップＳ２１０における各ステップの処理が行われた画像データは、プリンタエンジン１２０に対して出力され、プリンタエンジン１２０において媒体上に形成される画像となる。
【００３２】
（メインメモリ１３０における記憶領域）
図４は、メインメモリ１３０における記憶領域を説明する図である。図４のメインメモリ１３０は、プログラム領域１３１、ＰＤＬ格納メモリ領域１３２、ＲＧＢＡバンドメモリ格納領域１３３、ページ符号格納領域１３４、及び、その他領域１３５を有する。
【００３３】
プログラム領域１３１は、ＣＰＵ１９０が実行するコンピュータプログラムが展開され格納される。ＰＤＬ格納メモリ領域１３２は、ＰＣ９００から送信されるＰＤＬデータが格納される。
【００３４】
ＲＧＢＡバンドメモリ格納領域１３３は、ＲＧＢＡバンドデータを格納する。ＲＧＢＡバンドデータとは、ＲＧＢＡ色空間により表現される画像データであって、バンド毎のデータである。ページ符号格納領域１３４は、符号データを、ページ毎に複数ページ格納する。ページ毎の符号データは、バンド単位の符号データからなる。その他領域１３５は、例えば、描画コマンド等の上記の各領域に格納されない諸データが格納される。
【００３５】
（メインメモリ１３０における各記憶領域とカラープリンタ１が有する電装・制御ブロックとの関係）
図５は、メインメモリ１３０における各記憶領域と、カラープリンタ１が有する電装・制御ブロックとの関係を説明する図である。
【００３６】
ＰＣ９００は、ＰＤＬを生成し、ネットワークを介してカラープリンタ１に対してＰＤＬを転送させる。通信処理部１１９は、ＰＣ９００から受信したＰＤＬデータを、メインメモリ１３０が有するＰＤＬ格納メモリ領域１３２に格納させる。
【００３７】
ＣＰＵ１９０は、ＰＤＬ格納メモリ領域１３２に格納されたＰＤＬデータを読み出し、描画コマンドを生成する。生成された描画コマンドは、メインメモリ上の図示しない描画コマンド領域に格納される。ＣＰＵ１９０は、さらに、描画コマンド領域に格納された描画コマンドにより、バンドデータを生成する。生成されたバンドデータは、ＲＧＢＡバンドメモリ格納領域１３３に格納される。
【００３８】
符号化部１１５は、ＲＧＢＡバンドメモリ格納領域１３３に格納されたバンドデータ毎に、符号化を行い、符号データを生成する。生成された符号データは、ページ符号格納領域１３４に格納される。
【００３９】
復号部１１６は、ページ符号格納領域１３４に格納された符号データを復号し、復号された画像データを画像処理部１１７に転送させる。画像処理部１１７は、復号されたＲＧＢＡ色空間による画像データに対し、色空間の変換、下色除去、及び、階調処理等の画像処理を行う。画像処理部１１７は、画像処理された画像データを、エンジンコントローラ１１８に対して転送させる。
エンジンコントローラ１１８は、受信した画像データをプリンタエンジン１２０に転送させる。
【００４０】
（符号化部１１５の機能構成）
図６は、符号化部１１５の機能構成を説明するブロック図である。図６の符号化部１１５は、メインメモリ１３０が有するＲＧＢＡバンドメモリ格納領域１３３に格納されたバンドデータを読み込み、符号化して、符号データをメインメモリ１３０が有するページ符号格納領域１３４に対して出力する。
【００４１】
符号化部１１５は、画像読み込み部５０１、ランレングス生成処理部５０２、繰り返し処理部５０３、辞書変換部５０４、差分生成処理部５０５、符号フォーマット生成処理部５０６、及び、符号書き込み部５０７を有する。
【００４２】
画像読み込み部５０１は、ＲＧＢＡバンドメモリ格納領域１３３から、ＲＧＢＡ色空間によるバンドデータを読み込む。バンドデータは、スキャンライン毎に読み込まれる。図７は、スキャンライン毎にバンドデータが読み込まれることを説明する図である。図７において、バンドデータは、バンドの幅（Ｍ＋１）とバンドの高さ（Ｎ＋１）とを有する。すなわち、バンドデータは、主走査方向の（Ｍ＋１）個の画素と、副走査方向に（Ｎ＋１）個のラインとからなる。画像読み込み部５０１は、ライン０の画素０から順にＭまでの画素を読み込む。ライン毎に（Ｍ＋１）個の画素を読み込む処理を、ラインＮまで繰り返す。
【００４３】
ランレングス処理部５０２は、画像読み込み部５０１により読み込まれたＲＧＢＡ色空間からなるバンドデータに対し、図７の読み込み順におけるＲＧＢ値のラン長のデータに変換する。より詳細には、図７の読み込み順において、ＲＧＢ値が同一の画素が連続する個数であるラン長を取得する。
【００４４】
図８は、ランレングス生成処理の詳細を説明する図である。図８では、一のラインにおいて、ＲＧＢ値が同一の画素が連続する個数をカウントする処理の例が示されている。より詳細には、画素０から画素２までの画素値が同一である場合には、そのラン長を３とし、そのＲＧＢ値を対応づけて取得する。同様に、画素３から画素５までの画素値が同一である場合には、そのラン長を３とする。
【００４５】
図６に戻り、繰り返し処理部５０３は、ランレングス生成処理部５０２で生成されたランレングスのデータに対し、繰り返し処理を行う。図９は、繰り返し処理を説明する図である。図９では、一のラインにおいて、同一のランレングスが繰り返される個数をカウントしている。より詳細には、画素０及び画素１が同一の画素値を有し、画素２及び画素３が画素０とは異なる同一の画素値を有する場合には、画素０及び画素１に対応するラン長が２であり、画素２及び画素３に対応するラン長が２である。
【００４６】
以下の説明を簡単にするため、画素０及び画素１に対応するランレングスデータを（Ａ）とし、画素２及び画素３に対応するランレングスデータを（Ｂ）とする。ランレングスデータ（Ａ）は、画素０と同一の画素値とラン長２との情報を有する。ランレングスデータ（Ｂ）は、画素２と同一の画素値とラン長２との情報を有する。
【００４７】
次に、画素４、画素５、画素８、画素９、画素１２、及び、画素１３の画素値が、画素０と同一であり、画素６、画素７、画素１０、及び、画素１１の画素値が、画素２と同一であることにより、ランレングスデータ（Ａ）とランレングスデータ（Ｂ）とが、交互に連続して連なる。すなわち、画素４を先頭として、ランレングスデータ（Ａ）とランレングスデータ（Ｂ）とが交互に連なるランレングスデータの連続の個数が５となる。この５を繰り返しの数とする。
繰り返し処理部５０３は生成された繰り返しの数と対応するランレングスデータとを、辞書変換部５０４に対して出力する。
【００４８】
辞書変換部５０４は、繰り返し処理部５０３から出力されたランレングスデータに対し、辞書に基づく画素インデックスへの変換を行う。この処理は、ＦＩＦＯ方式により行われるとよい。図１０は、辞書変換部５０４による処理の例を示す図である。図１０において、入力された一のＲＧＢＡ値ａと同一の値が、ＲＧＢＡ辞書に格納されている場合には、ＲＧＢＡ辞書において対応づけられているインデックス値３が出力される。
【００４９】
一方、辞書変換部５０４において、入力された画素値に対応する画素値がＲＧＢＡ辞書に格納されていない場合には、差分生成処理部５０５による処理が行われる。図１１は、差分生成処理部５０５による処理の例を示す図であって、入力された画素値に対応する画素値がＲＧＢＡ辞書に格納されていない場合の例である。図１１において、入力された位置のＲＧＢＡ値ｂと同一の値が、ＲＧＢＡ辞書に格納されていない場合には、ＲＧＢＡ辞書に格納されている各画素値との差分が計算される。各差分のうち、最小の値を有する画素値に対応するインデックス値を、ＲＧＢＡ値ｂに対するインデックス値として出力し、さらに、そのインデックスに対応する差分が出力される。
【００５０】
図６に戻り、符号フォーマット生成処理部５０６が、辞書変換部５０４から出力されたインデックス値、差分生成処理部５０５から出力されたインデックス値と差分、及び、繰り返し処理部５０３から出力されたラン長及び繰り返し数とに基づいて、符号データを生成する。
【００５１】
図１２は、符号データのフォーマットを説明する図である。図１２の符号フォーマットは、制御コードｃと、データの本体である、ランレングスデータｄ、繰り返しｅ、カラー値ｆ、インデックスｇ、及び、差分ｈと、の各情報に対して、ビット長及び値の範囲等が示されている。
【００５２】
制御コードｃは、画素ヘッダ、画素差分ヘッダ、インデックスヘッダ、インデックス差分ヘッダ、及び、符号終端の各コードを有する。画素ヘッダは、画素ヘッダ、ラン長、及び、カラー値の符号規則に対するヘッダである。インデックスヘッダは、インデックスヘッダ、ラン長、及び、インデックスの符号規則に対するヘッダである。画素差分ヘッダは、画素差分ヘッダ、ラン長、差分値の符号規則に対するヘッダである。インデックス差分ヘッダは、インデックスヘッダ、ラン長、インデックス、及び、差分値の符号規則に対するヘッダである。また、符号終端は，符号の終端を表現している。
【００５３】
ランレングスデータｄは、ＲＧＢＡ画素値が同一の画素が連続する際のラン長に対する符号である。ランレングスデータｄは、ラン長と画素値との組で表現される。ランレングスデータｄにおいて、短い４ＢＩＴのＬ１符号はラン長が１〜８までを表現する。８ＢＩＴのＬ２符号はラン長が９〜４０までを表現する。Ｌ３は段階的に長くなる符号であり、４１〜１０４８５７６までのラン長を表現する。
【００５４】
繰り返しｅは、２つのランレングスデータが交互に連続する際の、繰り返し数の符号である。繰り返しｅは、複数のランレングス符号と繰り返しとの組で表現され、短い４ＢＩＴのＮ１符号は繰り返し１を、Ｎ２符号は繰り返し２を表現する。また、Ｎ３は段階的に長くなる符号であり，３〜１０４８５７６までの繰り返しを表現することができる。
カラー値ｆは、ランレングスデータにおけるＲＧＢ値のデータである。
【００５５】
インデックスｇは、辞書に保持されているインデックス値であり、短い４ＢＩＴのＩ１符号はインデックス値の１〜８までを表現する。また、８ＢＩＴのＩ２符号はインデックス値が９〜１３６までを表現することができる。
差分値ｈは、図１１に示す辞書の内容とランレングスのＲＧＢＡ値との差分である。差分値ｈは、また、１つ前のランレングスのＲＧＢＡとの差分でもよい。
【００５６】
図１３は、符号データの構成の例を説明する図である。図１３（Ａ）は、符号データの全体の構成を示す図である。図１３（Ａ）において、符号は内部符号と符号終端とを有する。符号終端は符号の終端を表す符号である。
【００５７】
図１３（Ｂ）は、内部符号の構成の例を示す図である。図１３（Ｂ）では、各符号が連結している。図１３（Ｂ）において、（）で括られた数は、符号化の優先順位を示す数である。より詳細には、（１）において、繰り返しがあれば繰り返し値を符号化し、そうでなければ、（２）へ移る。（２）において、辞書にランレングスのＲＧＢＡの値があれば、Ｉｎｄｅｘの符号化を行ない、そうでなければ（３）に移る。
【００５８】
（３）において、１つ前のランレングスのＲＧＢＡとの画素差分が差分上限値より小さい場合に画素差分で符号化を行ない、そうでなければ（４）に移る。（４）において、辞書とランレングスのＲＧＢＡの差分が差分上限値よりも小さい場合に、Ｉｎｄｅｘ差分で符号化を行ない、そうでなければ（５）に移る。（５）において、ランレングスのＲＧＢＡを符号化する。全ての画像を符号化した後に、（６）において、符号終端を符号化する。
【００５９】
なお、符号フォーマット生成部５０６は、所定の条件により、ＲＧＢＡ辞書に含まれない画素値が入力された場合には、その画素値に対応するインデックス値を生成し、辞書に登録することにより、辞書を更新してもよい。図１４は、入力されたＲＧＢＡ画素値ｊが、ＲＧＢＡ辞書に含まれていない場合に、その画素値ｊが、ＲＧＢＡ辞書に登録されることを説明する図である。図中、符号ｋを付した箇所に、画素値ｊが登録され、ＲＧＢＡ辞書が更新されている。
【００６０】
図６に戻り、符号書き込み部５０７は、符号フォーマット生成部５０６により生成された符号データを、メインメモリ１３０のページ符号格納領域１３４に格納させる。
【００６１】
（符号化部１１５の機能構成）
図１５は、復号部１１６の機能構成を説明するブロック図である。復号部１１６は、メインメモリ１３０が有するページ符号格納領域１３４に格納された符号データを読み込み、復号して得られる画像データをメインメモリ１３０に対して出力する。
【００６２】
復号部１１６は、符号読み込み部６０１、符号フォーマット解析部６０２、差分処理部６０３、辞書変換部６０４、繰り返し処理部６０５、ランレングス復号処理部６０６、及び、画像書き込み部６０７を有する。
【００６３】
符号読み込み部６０１は、ページ符号格納領域１３４から符号データを読み込む。符号フォーマット解析部６０２は、符号読み込み部６０１により読み込まれた符号データを解析し、ラン長、繰り返し、カラー値、インデックス、及び、差分等の各値を取得し、差分処理部６０３に対して出力する。
【００６４】
差分処理部６０３は、符号フォーマット解析部６０２により取得された差分の値と、１つ前のランにおけるカラー値とを加算し、そのランにおけるＲＧＢ値を求める。差分処理部６０３は、また、インデックスによりＲＧＢ値を求める。
【００６５】
図１６は、差分処理部６０３による復号処理を説明する図であって、インデックスによる復号の例である。図１６では、符号フォーマット解析部６０２により取得されたインデックスに対し、ＲＧＢＡ辞書に保持されているインデックス値に対応するＲＧＢＡ値が出力される。図１６では、さらに、出力されたＲＧＢＡ値と、符号フォーマット解析部６０２により取得された差分と、が加算され、そのランに対応するＲＧＢＡ値が出力される。
【００６６】
辞書変換部６０４は、辞書変換処理を行う。辞書変換部６０４は、差分処理部６０３においてＲＧＢＡ値が求められた場合には、その値を、ＲＧＢＡ辞書に追加する。辞書変換部６０４は、また、符号フォーマット解析部６０２によって得られたランレングスデータの中に、差分が含まれていない場合には、インデックスに対応するＲＧＢＡ値を求める。図１７は、インデックスに対応するＲＧＢＡ値を求める処理を説明する図である。図１７では、符号データから取得されたインデックスである符号インデックスに対し、ＲＧＢＡ辞書により対応づけられているＲＧＢＡ値が出力される。ＲＧＢＡ値は、繰り返し処理部６０５に対して出力される。
【００６７】
繰り返し処理部６０５は、符号フォーマット解析部６０２において取得された繰り返しの値とラン長とから、ランレングスデータを生成し、ランレングス復号処理部６０６に転送させる。
【００６８】
図１８は、繰り返し処理部６０５における繰り返しの復号処理を説明する図である。図１８は、ラン長２の画素値ｖ１と、ラン長２の画素値ｖ２と、のランレングスデータの後に続いて、繰り返しの値５を有する符号データが示されている。繰り返しの値５の部分の復号により、ラン長２の画素値ｖ１のランとラン長２の画素値ｖ２のランとが、交互に計５個連なる画像データが得られる。
【００６９】
図１５に戻り、ランレングス復号処理部６０６は、辞書変換部６０４により得られたＲＧＢＡ値により、画素毎の画素値を決定し、画像の描画を行う。図１９は、ランレングス復号処理部６０６による復号処理を説明する図である。図１９では、ラン長３の画素値ｖ４が２回繰り返され、その後に、ラン長４の画素値ｖ５、ラン長４の画素値ｖ６等が続く。この符号データをランレングス復号処理部６０６が復号することにより、ラインｍの各画素に対する画素値が決定される。復号された画像データは、画像書き込み部６０７に転送される。
なお、繰り返し処理部６０５とランレングス復号処理部６０６とは、一の処理部として構成されてもよい。
【００７０】
画像書き込み部６０７は、ランレングス復号処理部６０６により復号された画像データを、メインメモリ１３０に格納させる。画像データは、例えば、ＲＧＢＡバンドメモリ格納領域１３３に格納される。
【００７１】
（符号化部１１５の各部におけるデータの入出力）
図２０は、符号化部１１５が有する各部におけるデータの入出力を説明する図である。図２０の符号化部１１５は、画像読み込み部５０１、ランレングス生成処理部５０２、繰り返し処理部５０３、辞書変換部５０４、差分生成処理部５０５、符号フォーマット生成処理部５０６、符号書き込み部５０７、差分上限記憶部５０８、メモリアービタインタフェース（以下、「メモリアービタＩ／Ｆ」という。）５０９、画像アドレス生成部５１１、及び、符号アドレス生成部５１７を有する。図２０において、図６の符号化部１１５と同一の機能及び構成を有する各部は、同一の符号を付し、ここでは説明を省略する。
【００７２】
メモリアービタＩ／Ｆ５０９は、メインメモリアービタ１１３に対するデータの入出力等を行うインタフェースである。メモリアービタＩ／Ｆ５０９は、メインメモリ１３０に対し、アドレスを指定してデータの読み出しと書き込みとを行う。メモリアービタＩ／Ｆ５０９は、メインメモリに対し、読み出し及び書き込みの何れの処理を行わせるかを示すＲ／Ｗ信号を出力する。
【００７３】
画像アドレス生成部５１１は、メインメモリ１３０における画像データのアドレスを生成する。画像アドレス生成部５１１は、画像読み込み部５０１がメインメモリ１３０のＲＧＢＡバンドメモリ格納領域１３３に格納されたバンドデータを読み出す際の、バンドデータのアドレスを生成する。生成されたアドレスは、画像読み込み部５０１に対して出力される。なお、図２０中、メインメモリ上のアドレスを「メモリアドレス」と表記する。
【００７４】
画像読み込み部５０１は、画像アドレス生成部５１１からアドレスが入力され、そのアドレスをメモリアービタＩ／Ｆ５０９に対して出力する。画像読み込み部５０１は、メモリアービタＩ／Ｆ５０９を介してバンドデータである画像データを取得する。画像読み込み部５０１は、取得した画像データを、ランレングス生成処理部５０２に対して出力する。画像データは、ＲＧＢＡ色空間による画像データであり、図中では、ＲＧＢＡデータと表記されている。
【００７５】
ランレングス生成処理部５０２は、画像読み込み部５０１からＲＧＢＡデータが入力され、繰り返し処理部５０３に対し、ラン長の値とＲＧＢＡデータとを出力する。繰り返し処理部５０３は、ランレングス生成処理部５０２からラン長の値とＲＧＢＡデータとが入力され、辞書変換部５０４に対し、繰り返しの値、ラン長の値、及び、ＲＧＢＡデータが出力される。なお、ランレングス生成処理部５０２と繰り返し処理部５０３とは、一の処理部として構成されてもよい。
【００７６】
辞書変換部５０４は、繰り返し処理部５０３から、繰り返しの値、ラン長の値、及び、ＲＧＢＡデータが入力され、差分処理部５０５に対し、辞書データ、インデックス、繰り返しの値、ラン長の値、及び、ＲＧＢＡデータを出力する。
【００７７】
差分処理部５０５は、辞書変換部５０４から、辞書データ、インデックス、繰り返しの値、ラン長の値、及び、ＲＧＢＡデータが入力される。差分処理部５０５は、符号フォーマット生成部５０６に対し、差分データ、インデックス、繰り返しの値、ラン長の値、ＲＧＢＡデータを出力する。
【００７８】
差分上限記憶部５０８は、入力された画素値とＲＧＢＡ辞書に保持されている画素値との差分の上限の値を保持する。すなわち、入力された画素値とＲＧＢＡ辞書に保持されている画素値との差分の値が、差分上限記憶部５０８に保持されている値以上の場合には、入力された画素値が、ＲＧＢＡ辞書に新たに登録される。差分上限記憶部５０８は、符号フォーマット生成部５０６に対し、差分の上限の値を出力する。
【００７９】
符号フォーマット生成部５０６は、差分処理部５０５から、差分データ、インデックス、繰り返しの値、ラン長の値、及び、ＲＧＢＡデータが入力され、差分上限記憶部５０８から、差分の上限の値が入力される。符号フォーマット生成部５０６は、符号書き込み部５０７に対し、符号データを出力する。
【００８０】
符号アドレス生成部５１７は、メインメモリ１３０における符号データのアドレスを生成する。符号アドレス生成部５１７は、符号書き込み部５０７がメインメモリ１３０のページ符号格納領域１３４に符号データを書き込ませる際の、符号データのアドレスを生成する。符号アドレス生成部５１７は、符号書き込み部５０７に対し、生成したアドレスを出力する。
【００８１】
符号書き込み部５０７は、符号フォーマット生成部５０６から符号データが入力され、符号アドレス生成部５１７から、符号データをメインメモリ１３０に格納させる際のアドレスが入力される。符号書き込み部５０７は、メモリアービタＩ／Ｆ５０９を介してメインメモリ１３０に対し、アドレスと符号データとを出力する。
【００８２】
（符号化処理のフロー）
図２１から図２３は、符号化部１１５における符号化処理の例を説明するフロー図である。図２１は、ランレングス生成処理部５０２と繰り返し処理部５０３とにおける処理の例である。ステップＳ１０１では、処理の開始を示すラインの初期値フラグが１に初期化される。ステップＳ１０１に続いてステップＳ１０２に進み、繰り返しの値が０に設定される。
【００８３】
ステップＳ１０２に続いてステップＳ１０３に進み、画像読み込み部５０１がメインメモリ１３０から読み出したＲＧＢＡデータのうち最初のラインの最初の画素の値を取得し、変数ＲＧＢＡＤＡＴＡの値とする。なお、２回目以降のステップＳ１０３では、メインメモリ１３０から読み出されたＲＧＢＡデータのうち、前回のステップＳ１０３で値が取得された画素の次の画素の値を、変数ＲＧＢＡＤＡＴＡの値とする。
【００８４】
ステップＳ１０３に続いてステップＳ１０４に進み、ラインの初期値フラグが１の場合には、ステップＳ１０５に進む判断がなされ、ラインの初期値フラグが１ではない場合には、ステップＳ１０７に進む判断がなされる。
【００８５】
ステップＳ１０４に続くステップＳ１０５では、変数ＯＲＧの値に、ステップＳ１０３で取得されたＲＧＢＡＤＡＴＡの値の２倍の値が代入される。変数ＯＲＧの値に、ＲＧＢＡＤＡＴＡの値の２倍の値を用いることにより、ラン長を取得する処理において、隣接する画素との差の値を演算する際に、正の数にレベルシフトされた演算処理を行うことができる。ステップＳ１０５に続いてステップＳ１０６に進み、ラインの初期値フラグが０に設定される。ステップＳ１０６の後、ステップＳ１０３に戻って処理を繰り返す。
【００８６】
一方、ステップＳ１０４に続くステップＳ１０７では、変数ＯＲＧの値が、ステップＳ１０３で取得されたＲＧＢＡＤＡＴＡの値の２倍の値であるか否かの判断がなされる。２倍ではない場合には、ステップＳ１０８に進み、２倍である場合には、ステップＳ１０９に進む。
【００８７】
ステップＳ１０７に続くステップＳ１０８では、ラン長の値を１インクリメントする。一方、ステップＳ１０７に続くステップＳ１０９では、２つ前のランにおけるラン長の値が、現在のランにおけるラン長の値と等しいか否かの判断がなされ、さらに、２つ前のランにおけるＲＧＢＡＤＡＴＡの値と、現在のランにおけるＲＧＢＡＤＡＴＡの値とが等しいか否かの判断がなされる。上記２つの判断において、両者とも「等しい」場合には、ステップＳ１１０に進み、そうではない場合には、図２２の処理に進む。
【００８８】
ステップＳ１０９に続くステップＳ１１０では、繰り返しの値が１インクリメントされる。ステップＳ１１０に続いてステップＳ１１１に進み、変数ＯＲＧの値が、現在のランにおけるＲＧＢＡＤＡＴＡの値の２倍に設定される。
【００８９】
ステップＳ１１１に続いてステップＳ１１２に進み、２つ前のランにおけるラン長が、１つ前のランにおけるラン長とされ、さらに、２つ前のランにおけるＲＧＢＡＤＡＴＡの値が、１つ前のランにおけるＲＧＢＡＤＡＴＡの値とされる。ステップＳ１１２に続いてステップＳ１１３に進み、１つ前のランにおけるラン長が、現在のランのラン長とされ、１つ前のランにおけるＲＧＢＡＤＡＴＡの値が、現在のランにおけるＲＧＢＡＤＡＴＡの値とされる。ステップＳ１１３の処理の後、ステップＳ１０３に戻って処理を繰り返す。
【００９０】
図２２は、辞書変換部５０４、差分処理部５０５、及び、符号フォーマット生成部５０６における処理を説明する図である。図２２のステップＳ１１４は、図２１のステップＳ１０９の処理において、「両者とも等しい」ではない、の判断がなされた場合に、ステップＳ１０９に続いて行われる。
【００９１】
ステップＳ１１４では、繰り返しの値が０より大きいか否かの判断がなされる。０より大きい場合には、ステップＳ１１５に進み、そうではない場合には、ステップＳ１１６に進む。ステップＳ１１４に続くステップＳ１１５では、繰り返しの値が、図１２及び図１３に示す符号フォーマットに従って符号化される。なお、以下の図２２及び図２３の説明では、符号フォーマットは、全て、図１２及び図１３に示すものとする。
【００９２】
ステップＳ１１４又はステップＳ１１５に続くステップＳ１１６では、ＲＧＢＡＤＡＴＡの値が、辞書に含まれているか否かの判断がなされる。辞書に含まれている場合には、ステップＳ１１７に進み、辞書に含まれていない場合には、ステップＳ１２１に進む。
【００９３】
ステップＳ１１６に続くステップＳ１１７では、辞書に含まれているＲＧＢＡＤＡＴＡの値に対応するインデックスの値が取得される。ステップＳ１１７に続いてステップＳ１１８に進み、符号フォーマットに従い、インデックスヘッダが符号化される。ステップＳ１１８に続いてステップＳ１１９に進み、符号フォーマットに従い、ラン長が符号化される。ステップＳ１１９に続いてステップＳ１２０に進み、符号フォーマットに従い、インデックスの値が符号化される。
【００９４】
一方、ステップＳ１１６に続くステップＳ１２１では、前のランにおけるＲＧＢＡＤＡＴＡの値と、現在のランにおけるＲＧＢＡＤＡＴＡの値との差分である画素差分値が取得される。ステップＳ１２１に続いてステップＳ１２２に進み、ステップＳ１２１で取得された画素差分値が、所定の値より小さいか否かの判断がなされる。なお、この判断は、所定の値以上であるか否かの判断でもよい。所定の値より小さい場合には、ステップＳ１２３に進み、所定の値より小さくない場合には、ステップＳ１２６に進む。
【００９５】
ステップＳ１２２に続くステップＳ１２３では、符号フォーマットに従い、画素差分ヘッダが符号化される。ステップＳ１２３に続いてステップＳ１２４に進み、符号フォーマットに従い、ラン長が符号化される。ステップＳ１２４に続いてステップＳ１２５に進み、符号フォーマットに従い、画素差分値が符号化される。
【００９６】
一方、ステップＳ１２２に続くステップＳ１２６では、辞書に保持されている複数の画素値と、ＲＧＢＡＤＡＴＡの値との差分が最小となる差分の値が取得される。ステップＳ１２６に続いてステップＳ１２７に進み、ステップＳ１２６で取得された最小の差分の値が、所定の上限の値より小さいか否かの判断がなされる。小さい場合には、ステップＳ１２８に進み、小さくない場合には、ステップＳ１３１に進む。
【００９７】
ステップＳ１２７に続くステップＳ１２８では、符号フォーマットに従い、辞書差分ヘッダが符号化される。ステップＳ１２８に続いてステップＳ１２９に進み、符号フォーマットに従い、ラン長が符号化される。ステップＳ１２９に続いてステップＳ１３０に進み、符号フォーマットに従い、画素差分値が符号化される。
【００９８】
一方、ステップＳ１２７に続くステップＳ１３１では、符号フォーマットに従い、画素ヘッダが符号化される。ステップＳ１３１に続いてステップＳ１３２に進み、符号フォーマットに従い、ラン長が符号化される。ステップＳ１３２に続いてステップＳ１３３に進み、符号フォーマットに従い、画素差分値が符号化される。ステップＳ１３３に続いてステップＳ１３４に進み、辞書の画素値に現在のＲＧＢＡＤＡＴＡの値が追加される。
ステップＳ１２０、ステップＳ１２５、ステップＳ１３０、及び、ステップＳ１３４の各処理の後、図２３の処理に進む。
【００９９】
図２３では、次のランに進む前に、ラン長の値等が更新する処理が行われる。図２３のステップＳ１３５の処理は、図２２のステップＳ１２０、ステップＳ１２５、ステップＳ１３０、及び、ステップＳ１３４に続いて行われる。ステップＳ１３５では、２つ前のランのラン長の値が、１つ前のランのラン長の値に更新され、２つ前のランのＲＧＢＡＤＡＴＡの値が、１つ前のランのＲＧＢＡＤＡＴＡの値に更新される。
【０１００】
ステップＳ１３５に続いてステップＳ１３６に進み、１つ前のランのラン長の値が、現在のランのラン長の値に更新され、１つ前のランのＲＧＢＡＤＡＴＡの値が、現在のランのＲＧＢＡＤＡＴＡの値に更新される。ステップＳ１３６に続いてステップＳ１３７に進み、変数ＯＲＧの値が、現在のランのＲＧＢＡＤＡＴＡの値の２倍に設定される。
【０１０１】
ステップＳ１３７に続いてステップＳ１３８に進み、全ての画素に対する処理が終了したか否かの判断がなされる。全ての画素に対する処理が終了している場合には、ステップＳ１３９に進み、終了していない場合には、図２１のステップＳ１０３に戻って処理を繰り返す。ステップＳ１３８に続くステップＳ１３９では、符号フォーマットに従い、符号終端が符号化される。
【０１０２】
（符号化部１１５における辞書変換部５０４のハードウェア構成の例）
図２４は、符号化部１１５における辞書変換部５０４のハードウェア構成の例を説明する図である。図２４の辞書変換部５０４は、レジスタ１０ａないし１０ｆ、比較器１１ａないし１１ｆ、インデックス生成部１３、ＯＲ演算器１４、レジスタ１５、レジスタ１６、及び、制御部１７を有する。
【０１０３】
レジスタ１０ａないし１０ｆは、繰り返し処理部５０３から入力されるランのＲＧＢＡ値のデータを受け取り辞書データとして記憶する。比較器１１ａないし１１ｆは、レジスタ１０ａないし１０ｆに格納された辞書データと、繰り返し処理部５０３からのランのＲＧＢＡデータにおけるＲＧＢＡ値のデータとを、それぞれ比較する。複数の比較器が設けられていることにより、比較処理を並列に行うことができる。
【０１０４】
比較の結果は、ＯＲ演算器１４により判定され、さらに、インデックス生成部１３に転送される。これにより、入力されるＲＧＢＡ値のデータに対し、インデックスの生成と、既に生成されたインデックスに対応する画素値との一致の判定によるインデックスの対応づけとが行われる。
【０１０５】
図２５は、インデックス生成部１３におけるインデックスを生成する処理を説明する図である。図２５では、入力されるＲＧＢＡ値に対し、辞書に保持されているＲＧＢＡ値毎に、比較結果の判定が行われる。より詳細には、ステップＳ１１において、最初のインデックスに対応する画素値との一致が判定される。一致する場合には、入力されたＲＧＢＡ値に対し、インデックスの値０が設定される。一致しない場合には、ステップＳ１２以降に進み、辞書に保持されているインデックス毎に、対応する画素値が一致するか否かの判定の処理と、一致する画素値に対応するインデックスの対応づけの処理とが行われる。
【０１０６】
この処理により、辞書に登録されているインデックスの中で、優先順に基づく対応づけを行うことができる。対応付けの処理により、一致する画素値に対応するインデックスの値が、一致インデックス値として出力される。
【０１０７】
図２４に戻り、ＯＲ演算器１４は、比較器１１ａないし１１ｆからの比較結果に基づいて、入力されたＲＧＢＡ値と辞書に保持されているＲＧＢＡ値とが一致するものの有無を判定する。
【０１０８】
レジスタ１５は、繰り返し処理部５０３から入力される繰り返しの値を一時的に保持する。レジスタ１６は、繰り返し処理部５０３から入力されるラン長の値を一時的に保持する。制御部１７は、ＯＲ演算器１４からの判定結果に基づいて、インデックス生成部１３の制御を行う。
【０１０９】
（差分生成処理部５０５のハードウェア構成の例）
図２６は、差分生成処理部５０５のハードウェア構成の例を説明する図である。差分生成処理部５０５は、レジスタ２０，減算器２１、減算器２２ａないし２２ｆ、最小値選択部２３、及び、レジスタ２４ないし２６を有する。
【０１１０】
レジスタ２０は、１つ前のランにおけるＲＧＢＡ値を格納する。減算器２１は、現在のランにおけるＲＧＢＡ値と１つ前のランにおけるＲＧＢＡ値との差分を求める。減算器２２ａないし２２ｆは、辞書に格納されているＲＧＢＡ値と現在のランのＲＧＢＡ値との差分を求める。複数の減算器を有することにより、減算処理を並列に行うことができる。減算された結果である各差分は、最小値選択部２３に対して出力される。
【０１１１】
最小値選択部２３は、減算器２２ａないし２２ｆからの出力を比較し、最小の差分値を選択し、その差分値が基づく画素値に対応するインデックスを、辞書から取得する。
【０１１２】
レジスタ２４ないし２６は、辞書変換部５０４から出力される値のうち、所定の変数の値を一時的に保持する。レジスタ２４は、ＲＧＢＡ値に一致するインデックス値を一時的に保持する。レジスタ２５は、繰り返しの値を一時的に保持する。レジスタ２６は、ラン長の値を一時的に保持する。
【０１１３】
図２７は、差分からインデックスを取得する処理を説明するフロー図である。図２７のステップＳ３１では、減算器２２ａから出力された差分結果０と、減算器２２ｂから出力された差分結果１との比較が行われる。差分結果０が差分結果１より大きい場合には、ステップＳ３２に進み、そうではない場合には、ステップＳ３３に進む。
【０１１４】
ステップＳ３１に続くステップＳ３２では、変数である辞書差分データ値に、差分結果１を代入し、変数である差分インデックスデータ値に値１を代入する。一方、ステップＳ３１に続くステップＳ３３では、辞書差分データ値に、差分結果０を代入し、差分インデックスデータ値に値０を代入する。
【０１１５】
ステップＳ３２又はステップＳ３３に続くステップＳ３４では、辞書差分データ値と減算器２２ｃから出力される差分結果２との比較が行われる。差分結果２がより小さい場合には、ステップＳ３５に進み、そうではない場合には、ステップＳ３６に進む。ステップＳ３５では、辞書差分データ値と差分インデックスデータ値とが、差分結果２に対応する値に、それぞれ更新される。ステップＳ３５に続いてステップＳ３６に進む。
【０１１６】
以下のステップでは、各減算器から出力される差分結果と、辞書差分データ値との比較に基づき、辞書差分データ値と差分インデックスデータ値とが更新される。全ての減算器から出力される差分結果に基づく処理が行われた後、辞書差分データ値の値が、最小の差分として出力され、その差分に対応する差分インデックスデータ値が出力される。
【０１１７】
図２６に戻り、レジスタ２４は、辞書変換部５０４から出力されるインデックス値を一時的に保持する。レジスタ２５は、辞書変換部５０４から出力される繰り返しの値を一時的に保持する。レジスタ２６は、辞書変換部５０４から出力されるラン長の値を一時的に保持する。
【０１１８】
（復号部１１６の各部におけるデータの入出力）
図２８は、復号部１１６の各部におけるデータの入出力を説明する図である。図２８の復号部１１６は、符号読み込み部６０１、符号フォーマット解析部６０２、差分処理部６０３、辞書変換部６０４、繰り返し処理部６０５、ランレングス復号処理部６０６、画像処理部Ｉ／Ｆ６０９、及び、符号アドレス生成部６１１を有する。図２８において、図１５の復号部１１６と同一の機能及び構成を有する各部は、同一の符号を付し、ここでは説明を省略する。
【０１１９】
符号アドレス生成部６１１は、符号読み込み部６０１がメインメモリ１３０から符号データを読み込む際の、アドレスを生成する。符号アドレス生成部６１１が生成したアドレスは、符号読み込み部６０１に対して出力される。
【０１２０】
符号読み込み部６０１は、符号アドレス生成部６１１からメインメモリ１３０に対するアドレスが入力さる。符号読み込み部６０１は、メインメモリアービタ１１３に対して、入力されたアドレスと、メインメモリ１３０に対する読み出し及び書き込みの何れかの処理を指定するＲ／Ｗ信号とを出力する。符号読み込み部６０１は、メインメモリアービタ１１３を介して、メインメモリ１３０が有するページ符号格納領域１３４から、符号データを取得する。符号読み込み部６０１は、さらに、取得した符号データを、符号フォーマット解析部６０２に対して出力する。
【０１２１】
符号フォーマット解析部６０２は、符号読み込み部６０１から符号データが入力される。符号フォーマット解析部６０２は、差分処理部６０３に対し、ラン長の値、ＲＧＢＡによるカラー値、インデックスの値、繰り返しの値、及び、差分の値を出力する。
【０１２２】
差分処理部６０３は、符号フォーマット解析部６０２から、ラン長の値、カラー値、インデックスの値、繰り返しの値、及び、差分の値が入力される。差分処理部６０３は、さらに、辞書変換部６０４から、ＲＧＢＡ色空間による差分の値の辞書データが入力される。このデータは、辞書変換部６０４が、一のランに対する処理を行い辞書が更新される毎に、入力されるとよい。差分処理部６０３は、辞書変換部６０４に対し、ラン長の値、ＲＧＢＡ色空間による差分の値の辞書データ、ＲＧＢＡ色空間による差分の値、及び、繰り返しの値を出力する。
【０１２３】
辞書変換部６０４は、差分処理部６０３から、ラン長の値、差分の値の辞書データ、ＲＧＢＡ色空間による差分の値、及び、繰り返しの値が入力される。辞書変換部６０４は、繰り返し処理部６０５に対し、ラン長の値、カラー値、及び、繰り返しの値を出力する。辞書変換部６０４は、さらに、差分処理部６０３に対し、更新された差分の値の辞書データを出力する。この辞書データは、ＲＧＢＡ色空間による画素値に対応し、例えば、Ｎ個の要素を有する。
【０１２４】
繰り返し処理部６０５は、辞書変換部６０４から、ラン長の値、カラー値、及び、繰り返しの値が入力され、ランレングス復号処理部６０６に対し、ラン長の値、及び、カラー値を出力する。ランレングス復号処理部６０６は、繰り返し処理部６０５から、ラン長の値、及び、カラー値が入力される。ランレングス復号処理部６０６は、画像処理部Ｉ／Ｆ６０９に対し、ＲＧＢＡ色空間からなる画像データを出力する。
画像処理部Ｉ／Ｆ６０９は、ランレングス復号処理部６０６から画像データが入力され、画像処理部１１７に対し、画像データを出力する。
【０１２５】
（復号部１１６の処理の例）
図２９から図３１は、復号部１１６における処理の例を示すフロー図である。図２９では、入力された符号データに基づいて、ラン長の値等が取得される。図２９の処理は、符号読み込み部６０１、及び、符号フォーマット解析部６０２により実行される。
【０１２６】
図２９のステップＳ３０１では、符号フォーマット解析部６０２が、符号データから符号ヘッダを取得する。ステップＳ３０１に続いてステップＳ３０２に進み、符号フォーマット解析部６０２が、ステップＳ３０１で取得された符号ヘッダの種別を判断する。符号ヘッダが、インデックスヘッダ、辞書差分ヘッダ、画素ヘッダ、又は、画素差分ヘッダの何れかである場合には、ステップＳ３０３に進み、そうではない場合には、ステップＳ３０９に進む。
【０１２７】
ステップＳ３０２に続くステップＳ３０３では、符号フォーマット解析部６０２が、符号データのランレングスデータを読み込む。ステップＳ３０３に続いてステップＳ３０４に進み、２つ前のランのラン長を、１つ前のランのラン長に置き換える。ステップＳ３０４に続いてステップＳ３０５に進み、１つ前のランのラン長を、現在のランのラン長に置き換える。
【０１２８】
ステップＳ３０５に続いてステップＳ３０６に進み、２つ前のランのＲＧＢＡＤＡＴＡの値を、１つ前のランのＲＧＢＡＤＡＴＡの値に置き換える。ステップＳ３０６に続いてステップＳ３０７に進み、１つ前のランのＲＧＢＡＤＡＴＡの値を、現在のランのＲＧＢＡＤＡＴＡの値に置き換える。
【０１２９】
ステップＳ３０７に続いてステップＳ３０８に進み、ステップＳ３０３で読み込まれたランレングスデータから、ラン長の値、及び、ＲＧＢＡＤＡＴＡの値を取得する。ステップＳ３０８の処理の後、図３０の処理に進む。
【０１３０】
一方、ステップＳ３０２に続くステップＳ３０９では、ステップＳ３０１で読み込まれた符号ヘッダに基づいて、符号が繰り返し符号であるか否かを判断する。繰り返し符号の場合にはステップＳ３１０に進み、そうではない場合には、処理を終了する。なお、処理を終了する場合には、符号は終端符号である。
【０１３１】
ステップＳ３０９に続くステップＳ３１０では、符号フォーマット解析部６０２が、符号データのランレングスデータを読み込む。ステップＳ３１０に続いてステップＳ３１１に進み、ランレングスデータから繰り返しの値が取得される。ステップＳ３１１の処理の後、図３２の処理に進む。
【０１３２】
図３０は、符号フォーマット解析部６０２、差分処理部６０３、及び、辞書変換部６０４による処理を説明するフロー図である。図３０の処理は、図２９のステップＳ３０８の処理に続いて行われる。
【０１３３】
図３０のステップＳ３１２では、符号ヘッダが、インデックスヘッダであるか否かの判断がなされる。インデックスヘッダである場合には、ステップＳ３１３に進み、そうではない場合には、ステップＳ３１５に進む。
【０１３４】
ステップＳ３１２に続くステップＳ３１３では、符号フォーマット解析部６０２が、符号データのランレングスデータから、インデックスの値を取得する。ステップＳ３１３に続いてステップＳ３１４に進み、ステップＳ３１３で取得されたインデックスの値に対応するＲＧＢ値を辞書から取得し、その値を、変数ＲＧＢＡＤＡＴＡの値とする。ステップＳ３１４の処理に続いて図３１の処理に進む。
【０１３５】
一方、ステップＳ３１２に続くステップＳ３１５では、符号ヘッダが、辞書差分ヘッダであるか否かの判断がなされる。辞書差分ヘッダである場合には、ステップＳ３１６に進み、そうではない場合には、ステップＳ３２０に進む。
【０１３６】
ステップＳ３１５に続くステップＳ３１６では、符号フォーマット解析部６０２が、符号データのランレングスデータから、インデックスの値を読み込んで取得する。ステップＳ３１６に続いてステップＳ３１７に進み、ステップＳ３１６で取得されたインデックスの値に対応するＲＧＢ値を辞書から取得し、その値を、変数ＤＲＧＢＡＤＡＴＡの値とする。
【０１３７】
ステップＳ３１７に続いてステップＳ３１８に進み、符号フォーマット解析部６０２が、ランレングスデータの中の差分の値を取得する。ステップＳ３１８に続いてステップＳ３１９に進み、変数ＲＧＢＡＤＡＴＡの値を、ＤＲＧＢＡＤＡＴＡの値にステップＳ３１８で取得された差分の値を加算した値で更新する。ステップＳ３１９の処理の後、図３１の処理に進む。
【０１３８】
また、ステップＳ３１５に続くステップＳ３２０では、符号ヘッダが画素ヘッダであるか否かの判断がなされる。画素ヘッダである場合には、ステップＳ３２１に進み、そうではない場合には、ステップＳ３２２に進む。
【０１３９】
ステップＳ３２０に続くステップＳ３２１では、符号フォーマット解析部６０２が、ランレングスデータの中のカラー値を取得し、その値を、変数ＲＧＢＡＤＡＴＡに代入する。一方、ステップＳ３２０に続くステップＳ３２２では、符号フォーマット解析部６０２が、ランレングスデータから差分の値を取得する。ステップＳ３２２に続いてステップＳ３２３に進み、変数ＲＧＢＡＤＡＴＡの値を、１つ前のランにおけるＲＧＢＡＤＡＴＡの値に、ステップＳ３２２で取得された差分の値を加算した値で更新する。
【０１４０】
ステップＳ３２１又はステップＳ３２３に続くステップＳ３２４では、新たに取得されたカラー値に基づいて、辞書を更新する。ステップＳ３２４の処理の後、図３１の処理に進む。
【０１４１】
図３１は、ランレングス復号処理部６０６における復号処理の例を説明するフロー図である。図３１のステップＳ３２５では、変数ＬＯＯＰの値をラン長の値とする。ステップＳ３２５に続いてステップＳ３２６に進み、ラインメモリに格納されている画素データのうち、ライン０からＲＧＢＡＤＡＴＡの値を読み込み、画像処理部Ｉ／Ｆ６０９に対して出力する。
【０１４２】
ステップＳ３２６に続いてステップＳ３２７に進み、変数ＬＯＯＰの値から１を減じる。ステップＳ３２７に続いてステップＳ３２８に進み、変数ＬＯＯＰの値が０か否かの判断を行う。変数ＬＯＯＰの値が０である場合には、図２９のステップＳ３０１に戻って新たなランレングスデータを取得して処理を繰り返す。一方、変数ＬＯＯＰの値が０ではない場合には、ステップＳ３２６に戻ってＲＧＢＡ値を出力する処理を繰り返す。
【０１４３】
図３２は、繰り返し処理部６０５における処理の例を説明するフロー図である。図３２のステップＳ５１は、図２９のステップＳ３１１の処理に続いて行われる。ステップＳ５１では、変数ＬＯＯＰの値に対し、２つ前のランのラン長の値が設定される。
【０１４４】
ステップＳ５１に続いてステップＳ５２に進み、２つ前のランにおけるＲＧＢＡＤＡＴＡの値を取得する。ステップＳ５２に続いてステップＳ５３に進み、変数ＬＯＯＰの値から１を減じる。ステップＳ５３に続いてステップＳ５４に進み、変数ＬＯＯＰの値が０か否かを判断する。０である場合には、ステップＳ５５に進み、０ではない場合には、ステップＳ５２に戻って処理を繰り返す。
【０１４５】
ステップＳ５４に続くステップＳ５５では、ランレングスデータから取得された繰り返しの値を、繰り返しの値から１減じた値で更新する。ステップＳ５５に続いてステップＳ５６に進み、繰り返しの値が０か否かの判断がなされる。繰り返しの値が０の場合には、繰り返し処理部６０５による処理を終了し、図２９のステップＳ３０１に戻り、新たなランレングスデータを取得して処理を繰り返す。一方、繰り返しの値が０ではない場合には、ステップＳ５７に進む。
【０１４６】
ステップＳ５６に続くステップＳ５７では、変数ＬＯＯＰの値を、１つ前のランのラン長の値とする。ステップＳ５７に続いてステップＳ５８に進み、ラインメモリにおけるライン０に、１つ前のランレングスデータのＲＧＢＡ値を書き込む。
【０１４７】
ステップＳ５８に続いてステップＳ５９に進み、変数ＬＯＯＰの値を、変数ＬＯＯＰの値から１減じた値で更新する。ステップＳ５９に続いてステップＳ６０に進み、変数ＬＯＯＰの値が０であるか否かの判断がなされる。０である場合には、ステップＳ６１に進み、０ではない場合には、ステップＳ５８に戻って処理を繰り返す。
【０１４８】
ステップＳ６０に続いてステップＳ６１に進み、繰り返しの値を、繰り返しの値から１減じた値で更新する。ステップＳ６１に続いてステップＳ６２に進み、繰り返しの値が０であるか否かの判断がなされる。０である場合には、繰り返し処理部６０５の処理を終了し、図２９のステップＳ３０１に戻る。０ではない場合には、ステップＳ５１に戻って繰り返しの復号処理を続ける。
【０１４９】
（差分処理部６０３のハードウェア構成の例）
図３３は、復号部１１６が有する差分処理部６０３のハードウェア構成の例を示す図である。差分処理部６０３は、レジスタ３０，加算器３１、加算器３２ａないし３２ｆ、選択部３３、及び、レジスタ３４ないし３６を有する。
【０１５０】
レジスタ３０は、１つ前のランにおけるＲＧＢＡ値を格納する。加算器３１は、１つ前のランにおけるＲＧＢＡ値に対し差分を加算することにより、現在のランにおけるＲＧＢＡ値を求める。加算器３２ａないし３２ｆは、入力される差分データと、辞書に格納されているＲＧＢＡ値と入力される差分値を加算することにより、現在のランのＲＧＢＡ値を求める。複数の加算器を有することにより、減算処理を並列に行うことができる。減算された結果は、選択部３３に対して出力される。
選択部３３は、加算器３２ａないし３２ｆからの出力を比較し、差分インデックス値に対応する加算結果の値を選択する。
【０１５１】
レジスタ３４ないし３６は、符号フォーマット解析部６０２から出力される値のうち、所定の変数の値を一時的に保持する。レジスタ３４は、ＲＧＢＡ値に一致するインデックス値を一時的に保持する。レジスタ３５は、繰り返しの値を一時的に保持する。レジスタ３６は、ラン長の値を一時的に保持する。
【０１５２】
（復号部１１６における辞書変換部６０４のハードウェア構成の例）
図３４は、復号部１１６における辞書変換部６０４のハードウェア構成の例を説明する図である。図３４の辞書変換部６０４は、レジスタ４０ａないし４０ｆ、マルチプレクサ４１及び４３、制御部４２、レジスタ４５、及び、レジスタ４６を有する。
【０１５３】
レジスタ４０ａないし４０ｆは、差分処理部６０３から入力される１以上前のランのＲＧＢＡ値のデータを受け取り辞書データとして記憶する。マルチプレクサ４１は、差分処理部６０３から入力される現在のランにおけるインデックス値により、レジスタ４０ａないし４０ｆに格納されている辞書データを選択して出力する。制御部４２は、辞書データが選択される処理の制御を行う。
【０１５４】
マルチプレクサ４３は、マルチプレクサ４１から出力される辞書データによるＲＧＢＡ値と、符号フォーマット解析部６０２により取得された差分値とを加算して現在のランのＲＧＢＡ値を出力する。マルチプレクサ４３は、また、差分処理部６０３から出力される差分処理により得られたＲＧＢＡ値と、符号フォーマット解析部６０２により取得された差分値とを加算して現在のランのＲＧＢＡ値を出力する。何れの処理を行うかは、符号ヘッダにより決定される。
【０１５５】
レジスタ４５は、差分処理部６０３から入力される繰り返しの値を一時的に保持する。レジスタ４６は、差分処理部６０３から入力されるラン長の値を一時的に保持する。
【０１５６】
（コンピュータによる実現）
図３５は、本発明の実施の形態に係る画像処理装置を実現するコンピュータの構成を説明する図である。図３５のコンピュータは、主処理部４００、入力装置４１０、表示装置４２０、スキャナ４３０、プロッタ４４０、ＮＩＣ４６０、ドライブ装置４８０、ハードディスク装置４９０、入力Ｉ／Ｆ４１９、表示Ｉ／Ｆ４２９、スキャナＩ／Ｆ４３９、プロッタＩ／Ｆ４４９、ドライブＩ／Ｆ４８９、及び、ＨＤＤＩ／Ｆ４９９を有する。
【０１５７】
主処理部４００は、コンピュータプログラムを実行して各機能を実現する。主処理部４００は、例えば、ＣＰＵ４０１、ＲＯＭ４０８、及び、ＲＡＭ４０９を有する。ＣＰＵ４０１は、コンピュータプログラムを実行することにより、コンピュータが有する各デバイス等の制御を行う。ＲＯＭ４０８は、例えば、コンピュータプログラムやパラメータ等が格納され、ＣＰＵ４０１にそれらが供せられる。ＲＡＭ４０９は、例えば、ＣＰＵ４０１がコンピュータプログラムを実行する際のワークメモリとして供せられる。
【０１５８】
入力装置４１０は、例えば、キーボードやマウス等の入力デバイスとして構成され、コンピュータに対する指示等が入力される。表示装置４２０は、コンピュータの状態等が表示される。スキャナ４３０は、画像を光学的に読み取って、画像データを生成する。プロッタ４４０は、媒体上に画像を形成して出力する。
【０１５９】
ＮＩＣ４６０は、コンピュータと外部とをネットワークを介して接続する際のインタフェースの機能を実現し、その制御を行う。ドライブ装置４８０は、記録媒体が挿入され、その記録媒体に記録された情報を読み出し、またその記録媒体に情報を記録する。ＨＤＤ４９０は、大容量のデータを格納する記憶手段である。
【０１６０】
入力Ｉ／Ｆ４１９、表示Ｉ／Ｆ４２９、スキャナＩ／Ｆ４３９、プロッタＩ／Ｆ４４９、ドライブＩ／Ｆ４８９、及び、ＨＤＤ−Ｉ／Ｆ４９９は、それぞれ、入力装置４１０、表示装置４２０、スキャナ４３０、プロッタ４４０、ドライブ装置４８０、及び、ＨＤＤ４９０がバスを介して主処理部４００と接続される際のインタフェースである。
【０１６１】
（本実施の形態における効果）
本実施形態における画像圧縮装置は、画像のラスタ順における同一の画素値が連続する数であるラン長に基づく画像データの圧縮を行う際に、写真画像のように、ラン長が小さく、画素値そのものによる情報量が大きい場合に、より効率よく圧縮することができる。
【０１６２】
より詳細には、例えば、グラフィックス画像と写真画像との差異について、以下、考察する。グラフィック画像は、一般に、予測符号化を行う際に、注目画素とその注目画素に隣接する画素との相関が高い。そのため、注目画素との差分を符号化することにより、高効率に圧縮することができる。一方、写真画像は、注目画素と隣接する画素との間の相関が低いため、差分による予測符号化の効率が低下する。
【０１６３】
本実施の形態では、また、画素値に対応するインデックスを辞書に保持させ、辞書中の画素値との差分を符号化する。また、差分値が所定の値以上の場合には、その画素値に対応するインデックスを生成し、新たに辞書に登録する。これにより、辞書に保持されるインデックスを有する画素値は、複数の画素値が偏ることなく、好適な辞書となる。
【０１６４】
本実施の形態では、また、辞書に登録されている画素値のうち、処理する画素の画素値との差分が最も小さな画素値を選択し、その差分を符号化することにより、効率的に圧縮することができる。
【０１６５】
本実施の形態は、また、注目画素に対して１ライン上の画素の値を使用しない。したがって、ラインメモリが不要であり、本実施の形態による画像処理装置をＡＳＩＣに内蔵することが容易である。
【０１６６】
（実施の形態のその他の例）
本実施の形態においては、ＲＧＢＡ色空間による画像データについて説明したが、ＲＧＢ、ＣＭＹ、ＣＭＹＫ、又は、Ｌａｂ等の多値データでも、同様に実施することが可能である。また，ＣＭＹ色空間におけるＣコンポーネントのみの場合、又は、ＲＧＢ色空間におけるＲのみの多値の場合等、１つのコンポーネントの多値でも同様に実施することができる。
【０１６７】
また、本実施の形態においては、ＦＩＦＯ（Ｆｉｒｓｔ＿Ｉｎ＿Ｆｉｒｓｔ＿Ｏｕｔ）方式により実現したが、辞書を使用する方式であれば、何れの方式でもよい。
【０１６８】
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨をそこなわない範囲で変更することが可能である。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施の形態に係る画像処理装置を実装する画像形成装置の機構部の構成例を示す図である。
【図２】カラープリンタ１における電装・制御部の装置構成を示すブロック図である。
【図３】カラープリンタ１における処理の概略を示す図である。
【図４】メインメモリ１３０における記憶領域を説明する図である。
【図５】メインメモリ１３０における各記憶領域と、カラープリンタ１が有する電装・制御ブロックとの関係を説明する図である。
【図６】符号化部１１５の機能構成を説明するブロック図である。
【図７】スキャンライン毎にバンドデータが読み込まれることを説明する図である。
【図８】ランレングス生成処理の詳細を説明する図である。
【図９】繰り返し処理を説明する図である。
【図１０】辞書変換部５０４による処理の例を示す図である。
【図１１】入力された画素値に対応する画素値がＲＧＢＡ辞書に格納されていない場合の辞書変換部５０４による処理の例を示す図である。
【図１２】符号データのフォーマットを説明する図である。
【図１３】符号データのフォーマットを説明する図である。
【図１４】画素値ｊがＲＧＢＡ辞書に登録されることを説明する図である。
【図１５】復号部１１６の機能構成を説明するブロック図である。
【図１６】インデックスによる復号処理を説明する図である。
【図１７】インデックスに対応するＲＧＢＡ値を求める処理を説明する図である。
【図１８】繰り返し処理部６０５における繰り返しの復号処理を説明する図である。
【図１９】ランレングス復号処理部６０６による復号処理を説明する図である。
【図２０】符号化部１１５が有する各部におけるデータの入出力を説明する図である。
【図２１】ランレングス生成処理部５０２と繰り返し処理部５０３とにおける処理の例を説明する図である。
【図２２】辞書変換部５０４、差分処理部５０５、及び、符号フォーマット生成部５０６における処理を説明する図である。
【図２３】ラン長の値等が更新する処理を説明する図である。
【図２４】辞書変換部５０４のハードウェア構成の例を説明する図である。
【図２５】インデックス生成部１３におけるインデックスを生成する処理を説明する図である。
【図２６】差分生成処理部５０５のハードウェア構成の例を説明する図である。
【図２７】差分からインデックスを取得する処理を説明するフロー図である。
【図２８】復号部１１６の各部におけるデータの入出力を説明する図である。
【図２９】復号部１１６におけるラン長の値等を取得する処理の例を示すフロー図である。
【図３０】符号フォーマット解析部６０２、差分処理部６０３、及び、辞書変換部６０４による処理を説明するフロー図である。
【図３１】ランレングス復号処理部６０６における復号処理の例を説明するフロー図である。
【図３２】繰り返し処理部６０５における処理の例を説明するフロー図である。
【図３３】復号部１１６が有する差分処理部６０３のハードウェア構成の例を示す図である。
【図３４】復号部１１６における辞書変換部６０４のハードウェア構成の例を説明する図である。
【図３５】コンピュータの構成を説明する図である。
【符号の説明】
【０１７０】
１     カラープリンタ
１０ａ レジスタ
１１ａ 比較器
１３   インデックス生成部
１４   演算器
１５   レジスタ
１６   レジスタ
１７   制御部
２０   レジスタ
２１   減算器
２２ａ、２２ｂ、２２ｃ      減算器
２３   最小値選択部
２４   レジスタ
２５   レジスタ
２６   レジスタ
３０   レジスタ
３１   加算器
３２ａ 加算器
３３   選択部
３４   レジスタ
３５   レジスタ
３６   レジスタ
４０ａ レジスタ
４１   マルチプレクサ
４２   制御部
４３   マルチプレクサ
４５   レジスタ
４６   レジスタ
１００ 電装・制御部
１１０ プリンタＡＳＩＣ
１１３ メインメモリアービタ
１１４ メインメモリコントローラ
１１５ 符号化部
１１６ 復号部
１１７ 画像処理部
１１８ エンジンコントローラ
１１９ 通信処理部
１２０ プリンタエンジン
１３０ メインメモリ
１３１ プログラム領域
１３２ ＰＤＬ格納メモリ領域
１３３ ＲＧＢＡバンドメモリ格納領域
１３４ ページ符号格納領域
１３５ その他領域
４００ 主処理部
４１０ 入力装置
４１９ 入力Ｉ／Ｆ
４２０ 表示装置
４２９ 表示Ｉ／Ｆ
４３０ スキャナ
４３９ スキャナＩ／Ｆ
４４０ プロッタ
４４９ プロッタＩ／Ｆ
４８０ ドライブ装置
４８９ ドライブＩ／Ｆ
４９０ ハードディスク装置
５０１ 画像読み込み部
５０２ ランレングス生成処理部
５０３ 繰り返し処理部
５０４ 辞書変換部
５０５ 差分処理部
５０６ 符号フォーマット生成部
５０７ 符号書き込み部
５０８ 差分上限記憶部
５０９ メモリアービタＩ／Ｆ
５１１ 画像アドレス生成部
５１７ 符号アドレス生成部
６０１ 符号読み込み部
６０２ 符号フォーマット解析部
６０３ 差分処理部
６０４ 辞書変換部
６０５ 繰り返し処理部
６０６ ランレングス復号処理部
６０７ 画像書き込み部
６０９ 画像処理部Ｉ／Ｆ
６１１ 符号アドレス生成部
【図１】
2010074444.tif 000003
【図２】
2010074444.tif 000004
【図３】
2010074444.tif 000005
【図４】
2010074444.tif 000006
【図５】
2010074444.tif 000007
【図６】
2010074444.tif 000008
【図７】
2010074444.tif 000009
【図８】
2010074444.tif 000010
【図９】
2010074444.tif 000011
【図１０】
2010074444.tif 000012
【図１１】
2010074444.tif 000013
【図１２】
2010074444.tif 000014
【図１３】
2010074444.tif 000015
【図１４】
2010074444.tif 000016
【図１５】
2010074444.tif 000017
【図１６】
2010074444.tif 000018
【図１７】
2010074444.tif 000019
【図１８】
2010074444.tif 000020
【図１９】
2010074444.tif 000021
【図２０】
2010074444.tif 000022
【図２１】
2010074444.tif 000023
【図２２】
2010074444.tif 000024
【図２３】
2010074444.tif 000025
【図２４】
2010074444.tif 000026
【図２５】
2010074444.tif 000027
【図２６】
2010074444.tif 000028
【図２７】
2010074444.tif 000029
【図２８】
2010074444.tif 000030
【図２９】
2010074444.tif 000031
【図３０】
2010074444.tif 000032
【図３１】
2010074444.tif 000033
【図３２】
2010074444.tif 000034
【図３３】
2010074444.tif 000035
【図３４】
2010074444.tif 000036
【図３５】
2010074444.tif 000037