(57)【特許請求の範囲】
【請求項１】
画像データのライン内で白データを検出する白検出手段と、
画像データに対し、ライン単位で、予め定められた複数の周期の検出を並列して行う検出手段と、
前記検出手段で１のラインの画像データに対して前記複数の周期の検出を行って取得された周期のうち最も長い周期を選択する選択手段と、
前記選択手段で選択された周期に従い、前記１のラインの画像データを分割する分割手段と、
前記分割手段で前記１のラインの画像データが分割された分割データを中間データに変換する変換手段と、
前記変換手段で変換された前記中間データを圧縮符号化する符号化手段と
を有し、
前記検出手段は、
前記白検出手段により前記１のラインの画像データが全て前記白データであると検出された場合に、該１のラインの画像データから予め定められた周期が検出されたと見做す
ことを特徴とする画像処理装置。
【請求項２】
第１のラインに対する前記変換手段および前記符号化手段による処理と、該第１のラインの次の第２のラインに対する前記検出手段による処理とが並列に実行される
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記変換手段は、
前記分割データを、前記検出手段で検出を行う前記複数の周期のうち最も長い周期に対応するデータ長を持つ前記中間データに変換する
ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記検出手段は、
前記白検出手段により前記１のラインの画像データから白データ以外のデータが検出された場合に、該白データ以外が検出された時点から前記複数の周期の検出を開始する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記予め定められた周期は、前記検出手段で検出を行う前記複数の周期のうち最も長い周期である
ことを特徴とする請求項１または請求項４に記載の画像処理装置。
【請求項６】
前記変換手段は、
前記分割データを辞書形式の前記中間データに変換する
ことを特徴とする請求項１乃至請求項５の何れか１項に記載の画像処理装置。
【請求項７】
前記符号化手段で前記圧縮符号化により生成された符号データをライン単位で出力する出力手段をさらに有し、
前記出力手段は、
前記符号データの先頭に、ラインを識別する識別情報と、前記選択手段で選択された周期を示す値とを付加して出力する
ことを特徴とする請求項１乃至請求項６の何れか１項に記載の画像処理装置。
【請求項８】
前記周期は、前記画像データをビット列で表した場合の該ビット列に含まれるビット値による周期である
ことを特徴とする請求項１乃至請求項７の何れか１項に記載の画像処理装置。
【請求項９】
白検出手段が、画像データのライン内で白データを検出する白検出ステップと、
検出手段が、画像データに対し、ライン単位で、予め定められた複数の周期の検出を並列して行う検出ステップと、
選択手段が、前記検出ステップにより１のラインの画像データに対して前記複数の周期の検出を行って取得された周期のうち最も長い周期を選択する選択ステップと、
分割手段が、前記選択ステップにより選択された周期に従い、前記１のラインの画像データを分割する分割ステップと、
変換手段が、前記分割ステップにより前記１のラインの画像データが分割された分割データを中間データに変換する変換ステップと、
符号化手段が、前記変換ステップにより変換された前記中間データを圧縮符号化する符号化ステップと
を有し、
前記検出ステップは、
前記白検出ステップにより前記１のラインの画像データが全て前記白データであると検出された場合に、該１のラインの画像データから予め定められた周期が検出されたと見做す
ことを特徴とする画像処理方法。
【請求項１０】
請求項１乃至請求項８の何れか１項に記載の画像処理装置と、
前記符号化手段で圧縮符号化された符号データを記憶する記憶手段と、
前記記憶手段に記憶された前記符号データを画像データに復号する復号手段と、
前記復号手段で復号された画像データに基づき印刷媒体に画像を形成する画像形成手段と
を有する
ことを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの圧縮符号化処理を行う画像処理装置および画像処理方法、ならびに、画像形成装置に関する。
【背景技術】
【０００２】
プリンタ装置などの画像形成装置は、画像データを一時的にメモリに記憶する。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になり価格が上昇してしまう。これに対処するため、画像データを圧縮してメモリに格納するようにしている。
【０００３】
このようなプリンタ装置における印字処理は、例えば次のように行われる。プリンタ装置は、コンピュータなどで作成されネットワークなどを介して受け取ったＰＤＬ(Page  Description  Language)を解析して描画部が実行可能な中間言語を生成し、この中間言語を描画部が解析して、バンドメモリに対して階調処理後の画像を描画する。描画された画像データは、２値画像の圧縮符号化アルゴリズムにより圧縮符号化し、生成された符号データをメモリに格納する。その後、印字動作時に、ＣＭＹＫ各版毎に遅延させてメモリから符号データを読み込んで復号し、ＣＭＹＫ各版に対応するデータのプリンタエンジンに転送し、印字する。
【０００４】
ところで、データを効率よく圧縮符号化する方法として、ユニバーサル符号により圧縮符号化する方法が実用化されている。このユニバーサル符号は、情報保存型のデータ圧縮方法であり、データ圧縮時に情報源の統計的な性質を予め仮定しないため、種々のタイプ（文字コード、オブジェクトコードなど）のデータに適用することができる。
【０００５】
ユニバーサル符号の代表的な方法として、ジブ−レンペル(Ziv-Lempel)符号がある。Ziv-Lempel符号では、ユニバーサル型と、増分分解型(Incremental  parsing)  の２つのアルゴリズムが提案されている。これらのうち、ユニバーサル型アルゴリズムを用いた実用的な方法として、ＬＺＳＳ(Lempel-Ziv-Storer-Syzmanski)符号がある。
【０００６】
ＬＺＳＳ符号のベースとなるＬＺ７７符号の符号化アルゴリズムは、符号化データを、過去のデータ系列の任意の位置から一致する最大長の系列に区切り、過去の系列の複製として符号化する。
【０００７】
より具体的には、符号化済みの入力データを格納する移動窓と、これから符号化するデータを格納する先読みバッファとを備え、先読みバッファのデータ系列と移動窓のデータ系列の全ての部分系列とを照合して、移動窓中で一致する最大長の部分系列を求める。そして、移動窓中でこの最大長の部分系列を指定するために、「その最大長の部分系列の開始位置」と「一致する長さ」と「不一致をもたらした次のシンボル」との組を符号化する。
【０００８】
次に、先読みバッファ内の符号化したデータ系列を移動窓に移して、先読みバッファ内に符号化したデータ系列分の新たなデータ系列を入力する。以下、同様の処理を繰り返していくことで、データを部分系列に分解して符号化を実行していく。
【０００９】
一般的に、ＬＺＳＳ符号化は、符号化済の入力データを保存している移動窓数分、入力データ列との最長一致を検出する必要があるため、演算量は多いが高圧縮率が得られると考えられる。
【００１０】
Ziv-Lempel符号のうちユニバーサル型アルゴリズムを用いた実用的な方法の別の例として、ＬＺＷ(Lempel,  Ziv,  Welch)符号化がある。ＬＺＷ符号化は、書き換え可能な辞書を設け、入力文字列を相異なる文字列に分け、この文字列を出現した順に番号を付けて辞書に登録すると共に、現在入力している文字列を辞書に登録してある最長一致文字列の辞書番号だけで表して符号化する。このＬＺＷ符号化によれば、圧縮率はＬＺＳＳ符号化より劣るが、シンプルで、計算も容易で、高速処理が出来ることから記憶装置のファイル圧縮、データ伝送などで使われるようになっている。
【００１１】
ＬＺ７７方式においては、符号化時の最長一致文字列の探索に多くの時間を要するため、符号化処理を高速化するためには、この探索処理を高速化することが効果的である。特許文献１には、小さい動的な辞書をＭＴＦ(Move  To  Front)制御することにより、辞書と一致したインデクス値をランレングス符号化する技術が記載されている。
【００１２】
一方、この特許文献１に記載の方法では、辞書に登録するワード長が短いと効率が悪く、高速化が期待できない。例えば、辞書に登録するワード長が１バイトであって、辞書の深さが６４個の場合は、インデクス値が辞書と一致した場合であっても、データ長が８ビットから６ビットに変換されるだけである。そのため、辞書のワード長を大きくする必要がある。しかしながら、辞書のワード長を大きくすると、辞書との一致が困難となってしまう。そのため、特許文献１では、周期検出により辞書のワード長を求めている。
【００１３】
この周期検出を用いて符号化処理を行うためには、２パス方式およびパイプライン処理の何れかを用いる必要があった。２パス方式では、符号化処理を、周期検出処理と符号化処理との２ステージに分ける。そして、符号化を行うデータを先ず周期検出処理のステージに渡してデータの周期を求め、次にデータを符号化処理のステージに渡して、周期検出処理のステージで求めた周期を用いて符号化処理を行う。また、パイプライン処理では、ラインメモリなどのワークメモリを使用して、周期検出処理と符号化処理とをパイプライン化する。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところが、２パス方式では、符号化を２ステージに分けて行うため、処理に時間を要し、高速化が困難である。また、パイプライン処理では、ワークメモリとして比較的容量の大きなメモリを用意する必要があり、コストが嵩んでしまう。このように、従来のＬＺ７７方式を用いた符号化方式では、系列データの一致を判定するためのデータ長に依らず効率的に符号化を行うことが困難であるという問題点があった。
【００１５】
本発明は、上記に鑑みてなされたものであって、画像データの圧縮符号化をより効率的に実行可能とすることを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するために、本発明は、画像データのライン内で白データを検出する白検出手段と、画像データに対し、ライン単位で、予め定められた複数の周期の検出を並列して行う検出手段と、検出手段で１のラインの画像データに対して複数の周期の検出を行って取得された周期のうち最も長い周期を選択する選択手段と、選択手段で選択された周期に従い、１のラインの画像データを分割する分割手段と、分割手段で１のラインの画像データが分割された分割データを中間データに変換する変換手段と、変換手段で変換された中間データを圧縮符号化する符号化手段とを有し、検出手段は、白検出手段により１のラインの画像データが全て白データであると検出された場合に、１のラインの画像データから予め定められた周期が検出されたと見做すことを特徴とする。
【００１７】
また、本発明は、白検出手段が、画像データのライン内で白データを検出する白検出ステップと、検出手段が、画像データに対し、ライン単位で、予め定められた複数の周期の検出を並列して行う検出ステップと、選択手段が、検出ステップにより１のラインの画像データに対して複数の周期の検出を行って取得された周期のうち最も長い周期を選択する選択ステップと、分割手段が、選択ステップにより選択された周期に従い、１のラインの画像データを分割する分割ステップと、変換手段が、分割ステップにより１のラインの画像データが分割された分割データを中間データに変換する変換ステップと、符号化手段が、変換ステップにより変換された中間データを圧縮符号化する符号化ステップとを有し、検出ステップは、白検出ステップにより１のラインの画像データが全て白データであると検出された場合に、１のラインの画像データから予め定められた周期が検出されたと見做すことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、画像データの圧縮符号化がより効率的に実行可能となるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施形態に係る画像形成装置の一例の構成を示すブロック図である。
【図２】図２は、メインメモリの一例の構成を示す略線図である。
【図３】図３は、第１の実施形態に係る符号化部の一例の構成を示すブロック図である。
【図４】図４は、画像データ読み込み部が読み込む画像データの一例の構成を示す略線図である。
【図５−１】図５−１は、ＭＴＦ処理について概略的に説明するための略線図である。
【図５−２】図５−２は、ＭＴＦ処理について概略的に説明するための略線図である。
【図６】図６は、ハフマン符号化部において用いられる符号の一例のフォーマットを示す略線図である。
【図７】図７は、符号書き込み部から出力される符号データの一例のフォーマットを示す略線図である。
【図８】図８は、ＭＴＦデータ幅生成部の一例の構成を示すブロック図である。
【図９】図９は、８ビット単位一致合計演算部の一例の構成を示すブロック図である。
【図１０】図１０は、８ビット一致カウンタの一例の構成を示すブロック図である。
【図１１】図１１は、４ビットＲＯＭの一例の構成を示す略線図である。
【図１２】図１２は、１６ビット単位一致合計演算部の一例の構成を示すブロック図である。
【図１３】図１３は、３２ビット単位一致合計演算部の一例の構成を示すブロック図である。
【図１４】図１４は、ＭＴＦデータ分割部の一例の構成を示すブロック図である。
【図１５】図１５は、８ビット単位分割処理部の一例の構成を示すブロック図である。
【図１６】図１６は、１６ビット単位分割処理部の一例の構成を示すブロック図である。
【図１７】図１７は、３２ビット単位分割処理部の一例の構成を示すブロック図である。
【図１８】図１８は、ＭＴＦ処理部の一例の構成を示すブロック図である。
【図１９】図１９は、検出された最大の周期以外の周期に対応するデータ長の辞書データによる辞書について説明するための略線図である。
【図２０】図２０は、ハフマン符号化部における全体的な処理を示す一例のフローチャートである。
【図２１】図２１は、ラインヘッダ符号化処理を示す一例のフローチャートである。
【図２２】図２２は、インデクス符号化処理を示す一例のフローチャートである。
【図２３】図２３は、ＥＳＣ符号化処理を示す一例のフローチャートである。
【図２４】図２４は、符号終端処理を示す一例のフローチャートである。
【図２５】図２５は、符号出力処理を示す一例のフローチャートである。
【図２６−１】図２６−１は、第１の実施形態によるパイプライン処理を説明するための略線図である。
【図２６−２】図２６−２は、第１の実施形態によるパイプライン処理を説明するための略線図である。
【図２７】図２７は、第１の実施形態に係る復号部の一例の構成を示すブロック図である。
【図２８】図２８は、ＭＴＦ復号部の一例の構成を示すブロック図である。
【図２９】図２９は、ＭＴＦデータ合成部の一例の構成を示すブロック図である。
【図３０】図３０は、８ビット単位合成処理部の一例の構成を示すブロック図である。
【図３１】図３１は、１６ビット単位合成処理部の一例の構成を示すブロック図である。
【図３２】図３２は、３２ビット単位合成処理部の一例の構成を示すブロック図である。
【図３３】図３３は、第２の実施形態に係る符号化部の一例の構成を示すブロック図である。
【図３４】図３４は、第２の実施形態による符号化処理を示す一例のフローチャートである。
【図３５−１】図３５−１は、第２の実施形態によるパイプライン処理を説明するための略線図である。
【図３５−２】図３５−２は、第２の実施形態によるパイプライン処理を説明するための略線図である。
【図３５−３】図３５−３は、第２の実施形態によるパイプライン処理を説明するための略線図である。
【図３５−４】図３５−４は、第２の実施形態によるパイプライン処理を説明するための略線図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して、画像処理装置および画像処理方法、ならびに、画像形成装置の実施の形態を詳細に説明する。
【００２１】
（第１の実施の形態）
図１は、実施形態に係る画像形成装置１の一例の構成を示すブロック図である。画像形成装置１において、メモリアービタ１３に対してＣＰＵ  Ｉ／Ｆ１１を介してＣＰＵ(Central  Processing  Unit)１０が接続されると共に、ローカルＩ／Ｆ２１を介してＲＯＭ(Read  Only  Memory)２２およびパネルコントローラ２３が接続される。図示は省略するが、メモリアービタ１３は、メモリコントローラを有し、このメモリコントローラを介してメインメモリ１４が接続される。それと共に、メモリアービタ１３に対して、描画部１５、符号化部１６、復号部１７および通信コントローラ２０が接続される。復号部１７の出力は、プリンタエンジン１９を制御するエンジンコントローラ１８に接続される。
【００２２】
メモリアービタ１３は、接続された各部間におけるデータ転送の調停を行う。ＣＰＵ  Ｉ／Ｆ１１は、ＣＰＵ１０とメモリアービタ１３との間のインターフェイスであって、ＣＰＵ１０は、ＣＰＵ  Ｉ／Ｆ１１およびメモリアービタ１３を介して、画像形成装置１の各部に接続される。パネルコントローラ２３は、ユーザ操作を行うために操作子や表示部が設けられたパネル２４が接続される。
【００２３】
ＲＯＭ２２は、各種プログラムや文字などのフォント情報が予め記憶されている。ＣＰＵ１０は、ＲＯＭ２２に予め記憶されたプログラムに従い、  図示されないＲＡＭ(Random  Access  Memory)をワークメモリとして用いて、この画像形成装置１の動作を制御する。ＣＰＵ１０は、ワークメモリとしてメインメモリ１４を利用することも可能である。また、ＣＰＵ１０は、エンジンコントローラ１８に対して、プリンタエンジン１９を制御するための命令を出す。通信コントローラ２０は、ネットワークを介して接続される、パーソナルコンピュータ（ＰＣ）といった外部機器との間の通信を制御する。
【００２４】
メモリアービタ１３を介してなされるメインメモリ１４に対するアクセスの制御は、メモリアービタ１３に含まれるメモリコントローラにより行われる。図２は、メインメモリ１４の一例の構成を示す。メインメモリ１４は、例えばプログラム領域１４Ａ、ＰＤＬデータ領域１４Ｂ、ＣＭＹＫバンド画像データ領域１４Ｃ、ＣＭＹＫページ符号データ領域１４Ｄおよびその他領域１４Ｅを含む。
【００２５】
プログラム領域１４Ａは、ＣＰＵ１０が動作するためのプログラムなどが格納される。ＰＤＬデータ領域１４Ｂは、例えば通信コントローラ２０を介してパーソナルコンピュータから転送されたＰＤＬ(Page  Description  Language)データが格納される。ＣＰＵ１０がＰＤＬデータに基づき生成した中間言語をこのＰＤＬデータ領域１４Ｂに格納してもよい。ＣＭＹＫバンド画像データ領域１４Ｃは、ＰＤＬデータに基づき生成されたＣ、Ｍ、Ｙ、Ｋ各色の版によるバンド画像データがそれぞれ格納される。ＣＭＹＫバンド符号データ領域１４Ｄは、ＣＭＹＫ各版の、符号化されたバンド画像データ（バンド符号データと呼ぶ）が格納される。また、その他領域１４Ｅは、上述以外のデータが格納される領域であって、例えばＣＰＵ１０がプログラムを実行する際のワークメモリとして用いることができる。
【００２６】
描画部１５は、ＣＰＵ１０によりＰＤＬデータに基づき生成された中間言語を読み込んで解析し、解析結果に従い、メインメモリ１４のバンド記憶領域に対してバンド画像を書き込む描画処理を行う。例えば、メインメモリ１４から、描画部１５により描画されたバンド画像が読み出されて、メモリアービタ１３を介して符号化部１６および復号部１７で符号化および復号処理などを施されて、エンジンコントローラ１８に供給される。エンジンコントローラ１８が、供給されたバンド画像に従いプリンタエンジン１９を制御することで、印刷媒体に対して画像が形成され、印刷がなされる。
【００２７】
このような構成において、例えばパーソナルコンピュータで生成されたＰＤＬデータがネットワークを介して通信コントローラ２０に受信され、メインメモリ１４のＰＤＬデータ領域１４Ｂに記憶される。ＣＰＵ１０は、メインメモリ１４のＰＤＬデータ領域１４ＢからＰＤＬデータを読み出して解析し、解析結果に基づき中間言語を生成し、メインメモリ１４に記憶する。描画部１５は、メインメモリ１４から読み出した中間言語に従い描画処理を行い、ＣＭＹＫ各版の画像データを生成する。生成されたＣＭＹＫ各版の画像データは、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃに書き込まれる。
【００２８】
符号化部１６は、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから読み出されたＣＭＹＫ各版のバンド画像データに対して、ＭＴＦ(Move  To  Front)制御およびハフマン符号化を利用した圧縮符号化方式により圧縮符号化処理を施す。バンド画像データが圧縮符号化された符号データは、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄに格納される。復号部１７は、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄから読み出されたＣＭＹＫ各版の符号データを復号して、ＣＭＹＫ各版の画像データを出力し、エンジンコントローラ１８に送る。エンジンコントローラ１８は、復号部１７から受け取ったＣＭＹＫ各版の画像データに従い基づきプリンタエンジン１９を制御してプリントアウトを行う。
【００２９】
（符号化部）
図３は、第１の実施形態に係る符号化部１６の一例の構成を示す。符号化部１６は、画像読み込み部３０、ＭＴＦデータ幅生成部３１、ラインメモリ制御部３２、ラインメモリ３３Ａおよび３３Ｂ、ＭＴＦデータ幅値記憶部３４、ＭＴＦデータ分割部３５、ＭＴＦ処理部３６、ハフマン符号化部３７、ならびに、符号書き込み部３８を含む。
【００３０】
画像データ読み込み部３０は、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから画像データを読み込み、読み込んだ画像データをＭＴＦデータ幅生成部３１に転送する。ここで、符号化部１６における画像データの処理は、予め定められたデータ長に基づき行われる。この予め定められたデータ長を、ワードと呼ぶ。１ワードは、例えば６４ビットのデータ長を有する。例えば、画像データ読み込み部３０は、ＣＭＹＫバンド画像データ領域１４Ｃから、ワード単位で画像データを読み込む。
【００３１】
図４は、画像データ読み込み部３０がＣＭＹＫバンド画像データ領域１４Ｃから読み込む画像データの一例の構成を示す。ＣＭＹＫバンド画像データ領域１４Ｃには、ＣＭＹＫ各版毎に、１回の主走査にて画像を形成するための１ライン分の画像データが、バンドの高さに応じたライン数（Ｎ）分、記憶される。画像データ読み込み部３０は、ＣＭＹＫバンド画像データ領域１４Ｃから、画像データを１ラインずつ、ワード単位で順次読み出していく。
【００３２】
ＭＴＦデータ幅生成部３１は、画像データ読み込み部３０から受け取った画像データに対して、予め定められた複数の周期の検出を並列的に実行しながら、画像データをラインメモリ制御部３２に転送する。なお、画像データの周期とは、例えば、画像データをビット列で表した場合の、当該ビット列に含まれるビット値による周期である。ＭＴＦデータ幅生成部３１は、検出された周期に基づき、当該複数のデータ幅からＭＴＦ制御を行う際のデータ幅であるＭＴＦデータ幅値を決定する。決定されたＭＴＦデータ幅値は、例えばレジスタからなるＭＴＦデータ幅値記憶部３４に記憶される。
【００３３】
ラインメモリ制御部３２は、それぞれライン単位で画像データを記憶するラインメモリ３３Ａおよび３３Ｂに対するアクセスを制御する。ラインメモリ制御部３２は、ＭＴＦデータ幅生成部３１から受け取った画像データを、ラインメモリ３３Ａおよび３３Ｂのうち一方（ラインメモリ３３Ａとする）に書き込む。ラインメモリ制御部３２は、画像データの書き込みを行ったラインメモリ３３Ａに対して１ライン分の画像データが記憶されると、ラインメモリ３３Ａからの画像データの読み出しを開始すると共に、次にＭＴＦデータ幅生成部３１から受け取った画像データを、ラインメモリ３３Ｂに書き込む。このように、ラインメモリ制御部３２は、画像データの書き込み先と読み出し元を、ラインメモリ３３Ａおよび３３Ｂとで、ライン単位でトグルに切り替える。
【００３４】
ＭＴＦデータ分割部３５は、ラインメモリ制御部３２から画像データを受け取り、受け取った画像データを、ＭＴＦデータ幅値記憶部３４に記憶されるＭＴＦデータ幅値に従い分割する。例えば、ＭＴＦデータ幅値記憶部３４に記憶されるＭＴＦデータ幅値が３２ビットを示していれば、ＭＴＦデータ分割部３５は、ラインメモリ制御部３２からワード単位で受け取った画像データを、データ幅が３２ビットの分割データに分割する。分割データは、ＭＴＦ処理部３６に順次転送される。
【００３５】
ＭＴＦ処理部３６は、ＭＴＦデータ分割部３５から分割データを受け取ると、ＭＴＦ(Move  To  Front)アルゴリズムに基づき、ＭＴＦ処理部３６が内蔵する辞書と、受け取った分割データとを比較して、辞書中に当該分割データに一致するデータが存在するか否かを判定する。一致する辞書データが存在すると判定された場合、当該辞書データのインデクス値を求め、その後、当該辞書データを辞書の先頭に移動し、既に辞書に登録されている辞書データを１つずつ辞書の後端側にシフトさせる。一方、分割データに一致する辞書データが存在しないと判定された場合、当該分割データをエスケープ（ＥＳＣ）データとする。これらインデクス値およびＥＳＣデータは、辞書中に分割データに一致する辞書データが存在するか否かを示す一致フラグと共に、ハフマン符号化部３７に転送される。
【００３６】
図５−１および図５−２を用いて、ＭＴＦ処理について概略的に説明する。ＭＴＦ処理は、概略的には、図５−１に例示されるように、複数の辞書データが格納される辞書を用意し、辞書データの格納位置の先頭から順にインデクス値を割り当てる。図５−１の例では、先頭位置に最も小さいインデクス値「００」（ＩＮＤＥＸ００）が割り当てられ、以降順にインデクス値「０１」、インデクス値「０２」、…のように値が増加され、インデクス値「１５」までが割り当てられている。
【００３７】
そして、入力されたデータと辞書に含まれる辞書データとを比較し、入力データと一致する辞書データが存在するか否かを判定する。存在する場合、入力データと一致する辞書データに割り当てられたインデクス値を出力シンボル（符号名）として出力し、その後、図５−２に例示されるように、当該辞書データを辞書の先頭に移動させて辞書を更新する。また、一致フラグを一致を示す値（例えば値「１」）に設定する。
【００３８】
一方、入力データと一致する辞書データが存在しない場合、入力データそのものに対して符号名「ＥＳＣ」を付加したＥＳＣデータを出力する。また、一致フラグを非一致を示す値（例えば値「０」）に設定する。
【００３９】
ハフマン符号化部３７は、ＭＴＦ処理部３６から受け取ったインデクス値、ＥＳＣデータおよび一致フラグを、予め定められたテーブルを参照して可変長符号化する。符号化された符号データは、符号書き込み部３８に転送される。
【００４０】
ハフマン符号化部３７におけるハフマン符号化処理について概略的に説明する。図６は、ハフマン符号化部３７において用いられる符号の一例のフォーマットを示す。なお、図中、「０ｂ」は、後続する数値がバイナリ表現による数値であることを示す。
【００４１】
この図６に示される符号は、可変長なハフマン符号であり、登場頻度の高いハフマン木の順に短いコードを割り当てている。図６の例では、符号テーブルの各符号に対して、符号名および符号サイズテーブルがそれぞれ対応付けられている。符号名は、ＥＳＣデータを示す「ＥＳＣ」と、各インデクス値を示す「ＩＮＤＥＸｎｎ」（「ｎｎ」は「００」〜「１５」）、と、１ライン分の符号データの先頭に付加されるラインヘッダと、符号の終端を示す符号終端とが定義されている。
【００４２】
これらのうち、辞書において先頭側に位置するインデクス値「００」〜「０２」に最もサイズが小さい、データ長が３ビットの符号が割り当てられ、以降、インデクス値が大きくなるほど、データ長が長い符号が割り当てられる。また、ＥＳＣデータは、ＥＳＣデータを示す符号「０００」に対して、ＭＴＦデータ幅生成部３１で決定される複数のＭＴＦデータ幅値それぞれに対応するデータ長の符号が付加される。ラインヘッダは、データ長が７ビットに固定的とされ、ラインヘッダを示す符号「１１１１」に対して、ＭＴＦデータ幅生成部３１で決定される複数のＭＴＦデータ幅値それぞれに対応する値が付加される。符号終端は、データ長が５ビット、符号「１１１１１」に固定的とされる。
【００４３】
なお、ＥＳＣデータを示す符号「０００」は、非一致を示す一致フラグの符号であると考えることができる。この場合、例えばこの符号「０００」の有無が一致フラグの値を示すものとすることができる。一致フラグを示す符号を別途、定義しても構わない。
【００４４】
ハフマン符号化部３７は、ＭＴＦ処理部３６から出力されたインデクス値やＥＳＣデータを符号名として図６の符号テーブルの値を検索して、符号データとして出力する。
【００４５】
符号書き込み部３８は、ハフマン符号化部３７から受け取った符号データに対して、予め定められたフォーマットに従いヘッダ情報などを付加する。ヘッダ情報が付加された符号データは、符号書き込み部３８により、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄに書き込まれる。
【００４６】
図７は、符号書き込み部３８から出力される符号データの一例のフォーマットを示す。各ライン（０）〜（Ｎ）において、図６を用いて説明したように、ＥＳＣデータおよびインデクス値による画像データがハフマン符号化により可変長符号化されてライン符号データ（０）〜（Ｎ）とされる。また、各ライン符号データ（０）〜（Ｎ）に対して、それぞれラインヘッダ符号が先頭に付加される。ラインヘッダ符号は、図６を用いて説明したように、ラインの周期を示す情報が含まれる。終端符号（ｎ）は、最後のライン符号データ（Ｎ）の後ろに付加され、符号の終端を示す。
【００４７】
（符号化部の各部詳細）
次に、符号化部１６の各部について、より詳細に説明する。先ず、ＭＴＦデータ幅生成部３１について説明する。図８は、ＭＴＦデータ幅生成部３１の一例の構成を示す。ＭＴＦデータ幅生成部３１は、上述したように、入力された画像データの、１ライン内での周期を求める。このとき、本第１の実施形態では、ＭＴＦデータ幅生成部３１は、予め定められた複数の周期について、並列に検出を行う。そして、検出された周期のうち最も長い周期を選択し、当該周期に対応するデータ長を、ＭＴＦ処理を行う際のデータ幅（ＭＴＦデータ幅と呼ぶ）に決定する。
【００４８】
図８の例では、ＭＴＦデータ幅生成部３１は、８ビット単位一致合計演算部５１、１６ビット単位一致合計演算部５２および３２ビット単位一致合計演算部５３を有し、入力された画像データに対して、８ビット、１６ビットおよび３２ビットの３種類の周期の検出を行うことができる。
【００４９】
画像読み込み部３０からワード毎に転送された画像データは、ＭＴＦデータ幅生成部３１に受け取られ、レジスタ５０に一時的に記憶されると共に、８ビット単位一致合計演算部５１、１６ビット単位一致合計演算部５２および３２ビット単位一致合計演算部５３にそれぞれ入力される。
【００５０】
８ビット単位一致合計演算部５１は、ワード単位で入力された画像データから８ビット単位で一致ビット数を計数し、計数された８ビット単位の一致ビット数を、１ライン分加算して出力する。１６ビット単位一致合計演算部５２は、同様に、ワード単位で入力された画像データから１６ビット単位で一致ビット数を計数し、計数された１６ビット単位の一致ビット数を、１ライン分加算して出力する。さらに、３２ビット単位一致合計演算部５３は、ワード単位で入力された画像データから３２ビット単位で一致ビット数を計数し、計数された３２ビット単位の一致ビット数を、１ライン分加算して出力する。
【００５１】
図９は、８ビット単位一致合計演算部５１の一例の構成を示す。１ワードの画像データが、データを８ビット単位で記憶するレジスタ６０に格納される。例えば、１ワードの画像データのＬＳＢ(Least  Significant  Bit)側の８ビットがレジスタ６０の領域６０1に格納され、次の８ビットが領域６０2に格納され、以降、画像データが８ビット毎に領域６０3、６０4、…、６０8に格納される。また、レジスタ６１は、１ワード分前の画像データにおけるＭＳＢ(Most  Significant  Bit)側の８ビットが格納される。
【００５２】
排他的論理和回路６２1〜６２8は、それぞれ、８ビット単位で入力された２のデータに対して、対応するビット毎に排他的論理和演算を行い、その反転値を出力することで、８ビット単位の２のデータにおける一致ビットを検出する。各領域６０1〜６０8の互いに隣接する領域からそれぞれ読み出された８ビット単位の２のデータが、各排他的論理和回路６２2〜６２8に入力され、それぞれ８ビット単位で一致ビットを検出される。また、領域６０1およびレジスタ６１からそれぞれ読み出された２の８ビット単位のデータが排他的論理和回路６２1に入力され、８ビット単位で一致ビットを検出される。
【００５３】
各排他的論理和回路６２1〜６２8の出力は、８ビット一致カウンタ６３1〜６３8にそれぞれ入力され、一致ビットの数が計測される。図１０は、８ビット一致カウンタ６３1〜６３8の一例の構成を、８ビット一致カウンタ６３1で代表させて示す。８ビット一致カウンタ６３1は、それぞれ４ビットの値を予め格納する２の４ビットＲＯＭ(Read  Only  Memory)７０Ａおよび７０Ｂと、加算器７１とを有する。
【００５４】
４ビットＲＯＭ(Read  Only  Memory)７０Ａおよび７０Ｂは、それぞれ図１１に示されるように、４ビットで表現される各値をアドレスとし、アドレスに含まれる値「１」の数が出力値として予め格納される。排他的論理和回路６２1から出力された８ビットのデータの上位４ビット（第４ビット〜第７ビット）および下位４ビット（第０ビット〜第３ビット）のうち、上位４ビットが４ビットＲＯＭ７０Ａの入力端＃０〜＃３にそれぞれ入力されると共に、下位４ビットが４ビットＲＯＭ７０Ｂの入力端＃０〜＃３にそれぞれ入力される。４ビットＲＯＭ７０Ａおよび７０Ｂは、それぞれ、入力された４ビットをアドレスとして、対応する出力値を出力する。４ビットＲＯＭ７０Ａおよび７０Ｂの出力は、加算器７１で加算されて出力される。
【００５５】
各８ビット一致カウンタ６３1〜６３8の出力は、加算器６４に入力され、合計値が算出される。この合計値は、８ビット単位一致合計値としてレジスタ６５に記憶される。レジスタ６５から読み出された８ビット単位一致合計値は、加算器６４に入力されて次の１ワードの各８ビット一致カウンタ６３1〜６３8の出力に対して加算され、１ワード毎の８ビット単位一致合計値が累積される。このようにして１ワード分の８ビット単位一致合計値を順次累積し、１ライン分の８ビット単位一致合計値を求める。１ライン分の処理が終了したら、レジスタ６５から１ライン分の８ビット単位一致合計値が読み出されて、ＭＴＦデータ幅選択部５４に入力される。
【００５６】
図１２は、１６ビット単位一致合計演算部５２の一例の構成を示す。この１６ビット単位一致合計演算部５２の構成は、基本的には、上述した８ビット単位一致合計演算部５１の構成と同様である。すなわち、１ワードの画像データが、データを１６ビット単位で記憶するレジスタ８０に格納される。例えば、１ワードの画像データのＬＳＢ側の１６ビットがレジスタ８０の領域８０1に格納され、領域８０2、８０3および８０4にも、順次、１６ビット毎に画像データが格納される。また、レジスタ８１は、１ワード分前の画像データにおけるＭＳＢ側の１６ビットが格納される。
【００５７】
排他的論理和回路８２1〜８２4は、それぞれ、１６ビット単位で入力された２のデータに対して、対応するビット毎に排他的論理和演算を行い、その反転値を出力することで、１６ビット単位の２のデータにおける一致ビットを検出する。各領域８０1〜８０4の互いに隣接する領域からそれぞれ読み出された１６ビット単位の２のデータが、各排他的論理和回路８２2〜８２4に入力され、それぞれ１６ビット単位で一致ビットを検出される。また、領域８０1およびレジスタ８１からそれぞれ読み出された２の１６ビット単位のデータが排他的論理和回路８２1に入力され、１６ビット単位で一致ビットを検出される。
【００５８】
各排他的論理和回路８２1〜８２4の出力は、１６ビット一致カウンタ８３1〜８３4にそれぞれ入力され、一致ビットの数が計測される。なお、各１６ビット一致カウンタ８３1〜８３4の構成は、図１０および図１１を用いて説明した８ビット単位一致カウンタ６３1の構成に４ビットＲＯＭを追加することで実現可能なので、ここでの説明を省略する。
【００５９】
各１６ビット一致カウンタ８３1〜８３4の出力は、加算器８４に入力され、合計値が算出され、１６ビット単位一致合計値としてレジスタ８５に記憶される。レジスタ８５から読み出された１６ビット単位一致合計値は、加算器８４に入力されて次の１ワードの各１６ビット一致カウンタ８３1〜８３4の出力に対して加算され、１ワード毎の１６ビット単位一致合計値が累積される。１ワード分の１６ビット単位一致合計値を順次累積して求めた１ライン分の１６ビット単位一致合計値がレジスタ８５から読み出されて、ＭＴＦデータ幅選択部５４に入力される。
【００６０】
図１３は、３２ビット単位一致合計演算部５３の一例の構成を示す。この３２ビット単位一致合計演算部５３の構成も、基本的には、上述した８ビット単位一致合計演算部５１の構成と同様である。すなわち、１ワードの画像データが、データを３２ビット単位で記憶するレジスタ９０に格納される。例えば、１ワードの画像データのＬＳＢ側の３２ビットとＭＳＢ側の３２ビットとが、レジスタ９０の領域９０1および９０2にそれぞれ格納される。また、レジスタ９１は、１ワード分前の画像データにおけるＭＳＢ側の３２ビットが格納される。
【００６１】
排他的論理和回路９２1および９２2は、それぞれ、３２ビット単位で入力された２のデータに対して、対応するビット毎に排他的論理和演算を行い、その反転値を出力することで、３２ビット単位の２のデータにおける一致ビットを検出する。レジスタ９１から読み出された３２ビット単位の画像データは、排他的論理和回路９２1に入力される。レジスタ９０の領域９０1から読み出された３２ビットの画像データは、排他的論理和回路９２1および９２2にそれぞれ入力される。領域９０2から読み出された３２ビットの画像データは、排他的論理和回路９２2に入力される。レジスタ９１、ならびに、レジスタ９０1および９０2それぞれから３２ビット単位で読み出された画像データは、これら排他的論理和回路９２1および９２2において、それぞれ３２ビット単位で一致ビットを検出される。
【００６２】
各排他的論理和回路９２1および９２2の出力は、３２ビット一致カウンタ９３1および９３2にそれぞれ入力され、一致ビットの数が計測される。なお、各３２ビット一致カウンタ９３1および９３2の構成は、図１０および図１１を用いて説明した８ビット単位一致カウンタ６３1の構成に４ビットＲＯＭを追加することで実現可能なので、ここでの説明を省略する。
【００６３】
各３２ビット一致カウンタ９３1および９３2の出力は、加算器９４に入力され、合計値が算出され、３２ビット単位一致合計値としてレジスタ９５に記憶される。レジスタ９５から読み出された３２ビット単位一致合計値は、加算器９４に入力されて次の１ワードの各３２ビット一致カウンタ９３1および９３2の出力に対して加算され、１ワード毎の３２ビット単位一致合計値が累積される。１ワード分の３２ビット単位一致合計値を順次累積して求めた１ライン分の３２ビット単位一致合計値がレジスタ９５から読み出されて、ＭＴＦデータ幅選択部５４に入力される。
【００６４】
なお、本第１の実施形態では、これら８ビット単位一致合計演算部５１、１６ビット単位一致合計演算部５２および３２ビット単位一致合計演算部５３における処理は、並列的に行われる。
【００６５】
一例として、これら８ビット単位一致合計演算部５１、１６ビット単位一致合計演算部５２および３２ビット単位一致合計演算部５３にに対して共通のクロックを供給する。これら各演算部５１、５２および５３は、レジスタ、排他的論理和回路、一致カウンタおよび加算器、ならびに、出力のレジスタの各段からなる構成を共通としている。そのため、これら各段を、各演算部５１、５２および５３それぞれで同一のクロックで動作させることで、各演算部５１、５２および５３に対する画像データの入力タイミングを同期させると共に、各演算部５１、５２および５３からの一致合計値の出力タイミングを同期させることができ、各演算部５１、５２および５３の処理を並列的に実行させることができる。
【００６６】
図８の説明に戻り、ＭＴＦデータ幅選択部５４は、８ビット単位一致合計演算部５１、１６ビット単位一致合計演算部５２および３２ビット単位一致合計演算部５３から出力された、８ビット単位、１６ビット単位および３２ビット単位それぞれの、１ライン分の一致合計値が入力される。ＭＴＦデータ幅選択部５４は、入力された８ビット単位、１６ビット単位および３２ビット単位それぞれの一致合計値のうち、最大の一致合計値を選択し、選択された一致合計値のビット単位を示す値をＭＴＦデータ幅値に決定する。例えば、８ビット単位、１６ビット単位および３２ビット単位それぞれの一致合計値のうち、１６ビット単位の一致合計値が最も大きかった場合、ＭＴＦデータ幅値を１６ビットに決定する。
【００６７】
ＭＴＦデータ幅生成部３１は、ＭＴＦデータ幅選択部５４で決定されたＭＴＦデータ幅を示す値であるＭＴＦデータ幅値を、ＭＴＦデータ幅値記憶部３４に転送し、記憶させる。それと共に、ＭＴＦデータ幅生成部３１は、レジスタ５０に格納される画像データをラインメモリ制御部３２に転送する。
【００６８】
次に、ＭＴＦデータ分割部３５について説明する。図１４は、ＭＴＦデータ分割部３５の一例の構成を示す。ＭＴＦデータ分割部３５は、上述したように、ＭＴＦデータ幅生成部３１で決定されたＭＴＦデータ幅で画像データを分割し、画像データが分割された分割データをＭＴＦ処理部３６に転送する。
【００６９】
ＭＴＦデータ分割部３５は、ＭＴＦデータ幅生成部３１における複数の周期検出に対応して、それぞれ異なる単位で画像データを分割する複数の分割処理部を有する。この例では、ＭＴＦデータ幅生成部３１において８ビット単位、１６ビット単位および３２ビット単位の３の周期検出を行うため、ＭＴＦデータ分割部３５は、図１４に示されるように、８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２の３の分割処理部を有する。
【００７０】
８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２は、入力された画像データをそれぞれ所定単位で分割する。そして、分割したそれぞれのデータを、データ幅が、ＭＴＦデータ幅生成部３１での周期検出における最大の周期に対応するデータ幅になるように成形する。例えば、周期検出における最大の周期に対応するデータ幅が３２ビットであり、分割のデータ幅が１６ビットであれば、当該分割したデータのＬＳＢ側に、各ビットが「０」の１６ビット幅のデータを付加し、全体として３２ビット幅のデータに成形する。
【００７１】
ラインメモリ制御部３２からワード単位で受け取った画像データが、８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２にそれぞれ入力される。８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２は、それぞれ、入力された画像データを、８ビット単位、１６ビット単位および３２ビット単位に分割し、分割された各データを３２ビット幅のデータに成形して、分割データとしてそれぞれ出力する。
【００７２】
図１５は、８ビット単位分割処理部１００の一例の構成を示す。１ワードの画像データが、データを８ビット単位で記憶するレジスタ１１０に格納される。例えば、１ワードの画像データのＬＳＢ側の８ビットがレジスタ１１０の領域１１０1に格納され、次の８ビットが領域１１０2に格納され、以降、画像データが８ビット毎に領域１１０3、１１０4、…、１１０8に格納される。
【００７３】
レジスタ１１０の各領域１１０1〜１１０8から読み出された８ビット単位の画像データが、それぞれＭＵＸ（マルチプレクサ）１１２に入力される。また、ＭＵＸ１１２には、カウンタ１１１で所定のタイミング毎に生成されるカウント値が入力される。ＭＵＸ１１２は、カウンタ１１１から入力されるカウント値に従い、領域１１０1〜１１０8それぞれから読み出された８ビット単位の画像データを順次選択する。そして、選択された８ビットの画像データのＬＳＢに対して、値「０」のビットを２４ビット分付加して、全体として３２ビット幅の分割データとして出力する。
【００７４】
図１６は、１６ビット単位分割処理部１０１の一例の構成を示す。１ワードの画像データが、データを１６ビット単位で記憶するレジスタ１２０に格納される。例えば、１ワードの画像データのＬＳＢ側の１６ビットがレジスタ１２０の領域１２０1に格納され、次の１６ビットが領域１２０2に格納され、さらに次の１６ビットが領域１２０3に格納され、ＭＳＢ側の１６ビットが領域１２０4に格納される。
【００７５】
レジスタ１２０の各領域１２０1〜１２０4から読み出された１６ビット単位の画像データが、それぞれＭＵＸ１２２に入力される。また、ＭＵＸ１２２には、カウンタ１２１で所定のタイミング毎に生成されるカウント値が入力される。ＭＵＸ１２２は、カウンタ１２１から入力されるカウント値に従い、領域１２０1〜１２０4それぞれから読み出された１６ビット単位の画像データを順次選択する。そして、選択された１６ビットの画像データのＬＳＢに対して、値「０」のビットを１６ビット分付加して、全体として３２ビット幅の分割データとして出力する。
【００７６】
図１７は、３２ビット単位分割処理部１０２の一例の構成を示す。１ワードの画像データが、データを３２ビット単位で記憶するレジスタ１３０に格納される。例えば、１ワードの画像データのＬＳＢ側の３２ビットがレジスタ１３０の領域１３０1に格納され、ＭＳＢ側の３２ビットが領域１３０2に格納される。
【００７７】
レジスタ１３０の各領域１３０1および１３０2から読み出された３２ビット単位の画像データが、それぞれＭＵＸ１３２に入力される。また、ＭＵＸ１３２には、カウンタ１３１で所定のタイミング毎に生成されるカウント値が入力される。ＭＵＸ１３２は、カウンタ１３１から入力されるカウント値に従い、領域１３０1および１３０2それぞれから読み出された３２ビット単位の画像データを順次選択し、３２ビット幅の分割データとして出力する。
【００７８】
図１４の説明に戻り、８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２から出力された各分割データは、ＭＵＸ１０３に入力される。ＭＵＸ１０３には、さらに、ＭＴＦデータ幅値記憶部３４から読み出されたＭＴＦデータ幅値が入力される。ＭＵＸ１０３は、８ビット単位分割処理部１００、１６ビット単位分割処理部１０１および３２ビット単位分割処理部１０２の出力のうち、入力されたＭＴＦデータ幅値に対応する出力を選択し、ＭＴＦ処理部３６に転送する。
【００７９】
次に、ＭＴＦ処理部３６について説明する。図５−１および図５−２を用いて説明したように、ＭＴＦ処理においては、入力データと辞書データとを比較し、辞書に入力データと一致する辞書データが含まれている場合に、一致を示す値の一致フラグと当該辞書データの辞書内の格納位置に対応するインデクス値とを出力し、その後、当該辞書データを辞書の先頭に移動させて辞書を更新する。
【００８０】
図１８は、こうした処理を行うためのＭＴＦ処理部３６の一例の構成を示す。ＭＴＦ処理部３６は、辞書データが格納される複数のレジスタ１４０0、１４０1、…、１４０n、…、１４０15と、各辞書データと入力データとを比較する複数の比較器１４１0、１４１1、…、１４１n、…、１４１15と、辞書データと入力データとの一致を検出する一致検出部１４２と、インデクス値を生成するインデクス値生成部１４３と、一致検出部１４２の出力に応じて入力データの経路を切り替えなどを行うセレクタ１４４とを有する。
【００８１】
レジスタ１４０0〜１４０15は、ＭＴＦ処理における辞書を構成する。すなわち、各レジスタ１４０0〜１４０15は、例えばレジスタ１４０0に辞書の先頭の辞書データ＃０が格納され、レジスタ１４０1に次の辞書データ＃１が格納され、以降、順次、辞書の後端側に向けて辞書データ＃２〜＃１５が格納される。各レジスタ１４０0〜１４０15は、辞書の更新時に辞書データをシフトできるように、隣接するレジスタの入出力が接続される。
【００８２】
既に説明したように、本第１の実施形態では、辞書のサイズ（辞書を構成する各辞書データのデータ長）を、ＭＴＦデータ幅生成部３１で検出可能な最大の周期に対応したサイズとしている。この例では、本第１の実施形態では、ＭＴＦデータ幅生成部３１において８ビット、１６ビットおよび３２ビットの３種類のデータ長に対応する周期を検出している。したがって、辞書のサイズは、これら３種類の周期のうち最大の３２ビットとされる。
【００８３】
一方、画像データは、ＭＴＦデータ分割部３５においてＭＴＦデータ幅生成部３１で生成されたＭＴＦデータ幅値に従い分割されて、入力データとしてＭＴＦ処理部３６に入力されて、辞書データと比較される。このとき、上述したように、ＭＴＦデータ幅生成部３１で検出される最大の周期以外の周期に対応するデータ長の辞書データは、ＭＴＦデータ幅生成部３１で検出された周期に対応するデータ長のデータの例えばＬＳＢ側に対して、所定の値（例えば値「０」）を、データ長が全体として当該最大の周期に対応するデータ長になるように付加する。
【００８４】
より具体的には、例えばＭＴＦデータ幅生成部３１で検出された周期が１６ビットのデータ長に対応する場合、図１９（ａ）に例示されるように、ＭＳＢ側の１６ビットのデータに対して、ＬＳＢ側に１６ビット分の値「０」を付加して、辞書データを構成する。また、データ長が１６ビットの入力データ（例えば値「０ｘ５５５５」とする）に対しても、ＬＳＢ側に値「０ｘ００００」を付加し、全体として３２ビットのデータ長のデータ（この例では「０ｘ５５５５＿００００」）として、辞書の探索を行う。この場合、辞書データにも同様に値「０ｘ００００」がＬＳＢ側に付加されているので、辞書の探索は問題なく実行できる。
【００８５】
なお、図１９（ａ）および図１９（ｂ）において、「０ｘ」は、後続の数値が１６進表記であることを示す。
【００８６】
図１９（ｂ）は、ＭＴＦデータ幅生成部３１で検出された周期が３２ビットのデータ長に対応する場合の例を示す。この場合、周期に対応するデータ長と、辞書のサイズとが一致するため、入力データをそのまま用いて辞書の探索を行う。
【００８７】
レジスタ１４０0〜１４０15の出力は、比較器１４１0〜１４１15それぞれの一方の入力端に入力される。また、ＭＴＦデータ分割部３５から出力された分割データが入力データとしてＭＴＦ処理部３６に入力され、各比較器１４１0〜１４１15それぞれの他方の入力端に入力される。各比較器１４１1〜１４１15は、一方および他方の入力端に入力されたデータを比較して、両者が一致する場合には、一致を示す値「１」を出力し、両者が異なる場合には、非一致を示す値「０」を出力する。各比較器１４１0〜１４１15の出力は、一致検出部１４２およびインデクス生成部１４３にそれぞれ入力される。
【００８８】
インデクス生成部１４３において、各比較器１４１0〜１４１15の比較結果に対して、順にインデクス値「００」、「０１」、…、「１５」を対応付ける。インデクス生成部１４３は、各比較器１４１0〜１４１15の比較結果を受け取り、一致を示す値が出力された比較結果に対応付けられたインデクス値のうち、最も値が小さいインデクス値を出力する。このインデクス値は、ハフマン符号化部３７に転送される。
【００８９】
一致検出部１４２は、論理和回路を有し、入力値の論理和を取る。各比較器１４１0〜１４１15の比較結果のうち少なくとも１の比較結果が一致を示す値「１」であれば、一致を示す値が「１」の一致フラグを出力し、入力データと一致する辞書データが存在することを示す。また、一致検出部１４２は、各比較器１４１0〜１４１15の比較結果が全て非一致を示す「０」であれば、非一致を示す値が「０」の一致フラグを出力する。この一致フラグは、ハフマン符号化部３７に転送される。
【００９０】
また、一致フラグは、セレクタ１４４にも供給される。セレクタ１４４は、一致フラグの値が「１」であって、入力データと一致する辞書データが存在することを示していれば、レジスタ１４０0〜１４０14に格納される辞書データ＃０〜＃１４を、順次隣接するレジスタに移動させると共に、入力データをレジスタ１４０0に格納する。
【００９１】
一方、セレクタ１４４は、一致フラグの値が「０」であれば、入力データをそのまま、ＥＳＣデータとして出力する。ＥＳＣデータは、ハフマン符号化部３７に転送される。
【００９２】
次に、ハフマン符号化部３７における処理について説明する。ハフマン符号化部３７に対して、ＭＴＦ処理部３６から出力された一致フラグ、インデクス値およびＥＳＣデータが入力されると共に、ＭＴＦデータ幅値記憶部３４に記憶されるＭＴＦデータ幅値が入力される。
【００９３】
図２０は、ハフマン符号化部３７における全体的な処理を示す一例のフローチャートである。ハフマン符号化部３７は、先ず、ステップＳ１００で、処理対象のデータがラインの先頭のデータであるか否かを判定する。若し、ラインの先頭のデータではないと判定した場合、処理をステップＳ１０２に移行させる。一方、ラインの先頭のデータであると判定した場合、処理をステップＳ１０１に移行させて、ラインヘッダ符号化処理を実行し、処理をステップＳ１０２に移行させる。
【００９４】
ステップＳ１０２で、ハフマン符号化部３７は、ＭＴＦ処理部３６から受け取った一致フラグに基づき、処理対象のデータが辞書に存在したデータであるか否かを判定する。若し、一致フラグが一致を示す値（例えば値「１」）であって、処理対象のデータが辞書に存在したデータであることを示している場合、処理をステップＳ１０３に移行させ、インデクス符号化処理を行う。一方、一致フラグが非一致を示す値（例えば値「０」）であって、処理対象のデータが辞書に存在しないデータであることを示している場合、処理をステップＳ１０４に移行させ、ＥＳＣ符号化処理を行う。
【００９５】
ステップＳ１０３またはステップＳ１０４の処理が終了すると、ハフマン符号化部３７は、処理をステップＳ１０５に移行させ、処理対象のデータが最終ラインのラインの終端であるか否かを判定する。若し、最終ラインのラインの終端であると判定した場合、処理をステップＳ１０６に移行させて終端符号化処理を行う。そして、図示は省略するが、処理をステップＳ１００に戻し、次の処理対象のデータに対する処理を行う。一方、ステップＳ１０５で処理対象のデータが最終ラインのラインの終端ではないと判定した場合、処理をステップＳ１００に戻す。
【００９６】
図２１は、図２０のステップＳ１０１におけるラインヘッダ符号化処理を示す一例のフローチャートである。このラインヘッダ符号化処理では、図６を用いて説明したフォーマットに従い、ＭＴＦデータ幅値に基づきラインヘッダ符号を選択する。ステップＳ１１０で、ハフマン符号化部３７は、ＭＴＦデータ幅値が８ビットであるか否かを判定する。若し、８ビットであると判定した場合、処理をステップＳ１１１に移行させ、ラインヘッダ符号の符号データを「７’ｂ’１１１１０００」とし、符号サイズを７ビットとする。なお、符号データ中「７’ｂ’」は、後続する数値がバイナリ表現による７ビットの数値であることを示す。
【００９７】
ハフマン符号化部３７は、ステップＳ１１０でＭＴＦデータ幅値が８ビットではないと判定した場合、処理をステップＳ１１２に移行させ、ＭＴＦデータ幅値が１６ビットであるか否かを判定する。若し、１６ビットであると判定した場合、処理をステップＳ１１３に移行させ、ラインヘッダ符号の符号データを「７’ｂ’１１１１００１」とし、符号サイズを７ビットとする。ハフマン符号化部３７は、さらに、ステップＳ１１２でＭＴＦデータ幅値が１６ビットではないと判定した場合、処理をステップＳ１１４に移行させる。この場合、ＭＴＦデータ幅値が３２ビットであるので、ステップＳ１１４では、ラインヘッダ符号の符号データを「７’ｂ’１１１１０１０」とし、符号サイズを７ビットとする。
【００９８】
このように、ラインヘッダ符号化処理では、ラインヘッダ符号の符号データにおけるＬＳＢ側の３ビットで、ＭＴＦデータ幅値を表している。
【００９９】
ステップＳ１１１、ステップＳ１１３またはステップＳ１１４の処理が終了したら、ハフマン符号化部３７は、処理をステップＳ１１５に移行させて、符号出力処理を行う。
【０１００】
図２２は、図２０のステップＳ１０３におけるインデクス符号化処理を示す一例のフローチャートである。ハフマン符号化部３７は、ステップＳ１２０で、ＭＴＦ処理部３６から受け取ったインデクス値に基づき、図６に例示した符号テーブルおよび符号サイズテーブルを参照し、当該インデクス値に対応する符号データと符号サイズとを得る。例えば、ハフマン符号化部３７は、ＭＴＦ処理部３６からインデクス値として値「１３」を受け取った場合、対応する符号名「ＩＮＤＥＸ１３」に基づき符号テーブルおよび符号サイズテーブルを参照する。そして、符号名「ＩＮＤＥＸ１３」に対応する符号データ「０ｂ１１１０１００」と、符号サイズ「７」とを取得する。
【０１０１】
ステップＳ１２０で符号データと符号サイズとを取得すると、ハフマン符号化部３７は、処理をステップＳ１２１に移行させて、取得した符号データを出力する符号出力処理を行う。
【０１０２】
図２３は、図２０のステップＳ１０４におけるＥＳＣ符号化処理を示す一例のフローチャートである。ハフマン符号化部３７は、ステップＳ１３０で、後続する符号がＥＳＣデータであることを示すＥＳＣヘッダ「０」を符号データとし、符号サイズを３ビットとする。すなわち、ＥＳＣヘッダは、値「０ｂ０００」とされる。次のステップＳ１３１で、ハフマン符号化部３７は、ＥＳＣヘッダを出力する符号出力処理を行う。
【０１０３】
次のステップＳ１３２〜ステップＳ１３６で、ハフマン符号化部３７は、ＭＴＦデータ幅値に応じてＥＳＣデータから符号データを切り出す。ステップＳ１３２で、ハフマン符号化部３７は、ＭＴＦデータ幅値が８ビットであるか否かを判定する。若し、８ビットであると判定した場合、処理をステップＳ１３４に移行させて、ＥＳＣデータの上位８ビットを切り出して符号データとし、符号サイズを８ビットとする。
【０１０４】
ハフマン符号化部３７は、ステップＳ１３２でＭＴＦデータ幅値が８ビットではないと判定した場合、処理をステップＳ１３３に移行させ、ＭＴＦデータ幅値が１６ビットであるか否かを判定する。若し、１６ビットであると判定した場合、処理をステップＳ１３５に移行させて、ＥＳＣデータの上位１６ビットを切り出して符号データとし、符号サイズを１６ビットとする。
【０１０５】
ステップＳ１３３でＭＴＦデータ幅値が１６ビットではないと判定した場合、ＭＴＦデータ幅値は、３２ビットであるので、処理はステップＳ１３６に移行され、ＥＳＣデータをそのまま符号データとし、符号サイズを３２ビットとする。
【０１０６】
ステップＳ１３４、ステップＳ１３５またはステップＳ１３６で符号データおよび符号サイズが求められると、ハフマン符号化部３７は、処理をステップＳ１３７に移行させて符号出力処理を行う。
【０１０７】
図２４は、図２０のステップＳ１０６における符号終端処理を示す一例のフローチャートである。ハフマン符号化部３７は、ステップＳ１４０で符号データを「５’ｂ’１１１１１」とし、符号サイズを５ビットとする。そして、次のステップＳ１４２で、符号出力処理が行われる。
【０１０８】
図２５は、上述したステップＳ１１５、ステップＳ１２１、ステップＳ１３７およびステップＳ１４２による符号出力処理を示す一例のフローチャートである。符号出力処理は、符号サイズの長さの可変長の符号データをワードサイズ（この例では３２ビット）に纏めて出力する。符号バッファは６４ビットであり、符号サイズの長さの可変長の符号データ順次付加していく。符号ポインタは、符号バッファの中の有効な符号の終端を示す。
【０１０９】
ステップＳ１５０で、符号ポインタから符号サイズを減じた値が新たな符号ポインタとする。すなわち、符号バッファに符号データを付加するために、符号サイズ分、符号ポインタを更新している。次のステップＳ１５１で、符号データを符号ポインタで移動させて位置を合わせて、符号バッファに付加する。次のステップＳ１５２で、符号ポインタ≦３２であるか否かを判定し、符号ポインタ＞３２であれば、符号出力処理を終了する。
【０１１０】
一方、符号ポインタ≦３２であれば、ステップＳ１５３〜ステップＳ１５７で、符号バッファの上位３２ビットが出力される。すなわち、ステップＳ１５３で符号バッファが３２ビット右シフトされて出力符号バッファとされ、次のステップＳ１５４で出力符号バッファが出力される。次のステップＳ１５５で、符号ポインタに３２が加算され、次のステップＳ１５６で符号バッファが３２ビット左シフトされる。そして、次のステップＳ１５７で、符号カウンタが１だけカウントアップされ、図２５のフローチャートによる一連の符号出力処理が終了される。
【０１１１】
（パイプライン処理）
本第１の実施形態では、符号化部１６におけるＭＴＦデータ幅生成部３１による周期検出処理と、ＭＴＦ処理部３６およびハフマン符号化部３７による符号化処理とを、２のラインメモリ３３Ａおよび３３Ｂをトグルに用いることでパイプライン処理し、より高速な処理を実現している。図２６−１および図２６−２を用いて、第１の実施形態によるパイプライン処理について説明する。なお、図２６−１および図２６−２において、上述した図３と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１１２】
図２６−１は、ｎライン目の処理の流れを示す。ｎライン目の画像データにおいて、経路Ａにより、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから画像読み込み部３０がｎライン目における１ワードの画像データを読み出し、ＭＴＦデータ幅生成部３１で、読み出された１ワードに対して複数の周期の検出を並列して行う。そして、経路Ｂにより、ｎライン目における１ワード分の画像データを例えばラインメモリ３３Ａに書き込む。この１ワード単位の処理を１ライン分繰り返し、ｎライン目全ての処理が終了すると、ＭＴＦデータ幅生成部３１が、検出を行った複数の周期のうち最も長い周期に対応するデータ幅をＭＴＦデータ幅値に決定し、経路Ｃにより、決定されたＭＴＦデータ幅値をＭＴＦデータ幅値記憶部３４に記憶させる。
【０１１３】
図２６−２は、（ｎ＋１）ライン目の処理の流れを示す。（ｎ＋１）ライン目の画像データにおいて、上述のｎライン目と同様に、経路Ｄにより、ＣＭＹＫバンド画像データ領域１４Ｃから読み出した（ｎ＋１）ライン目における１ワードの画像データに対して、ＭＴＦデータ幅生成部３１で、読み出された１ワードに対して複数の周期の検出を並列して行う。そして、経路Ｅにより、（ｎ＋１）ライン目における１ワード分の画像データをラインメモリ３３Ｂに書き込む。この１ワード単位の処理を１ライン分繰り返し、（ｎ＋１）ライン目全ての処理が終了すると、ＭＴＦデータ幅生成部３１が、検出を行った複数の周期のうち最も長い周期に対応するデータ幅をＭＴＦデータ幅値に決定し、経路Ｆにより、決定されたＭＴＦデータ幅値をＭＴＦデータ幅値記憶部３４に記憶させる。
【０１１４】
以上の経路Ｄ、経路Ｅおよび経路Ｆの処理と並列的に、経路Ｇにより、ラインメモリ３３Ａからｎライン目の画像データを読み出して、上述の経路ＣでＭＴＦデータ幅値記憶部３４に記憶されたＭＴＦデータ幅値に基づき、ＭＴＦデータ分割部３５においてｎライン目の画像データが分割される。このｎライン目の分割データは、ＭＴＦ処理部３６に転送される。ＭＴＦ処理部３６は、このｎライン目の分割データに基づきＭＴＦ処理により符号化を行い、一致フラグと、インデクス値またはＥＳＣデータとを生成し、生成された一致フラグと、インデクス値またはＥＳＣデータとを経路Ｈでハフマン符号化部３７に転送する。ハフマン符号化部３７は、ＭＴＦ処理部３６から受け取った一致フラグと、インデクス値またはＥＳＣデータとを符号化して、符号データを経路Ｉで符号書き込み部３８に転送する。符号書き込み部３８は、受け取った符号データを、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄに書き込む。このｎライン目における  経路Ｇ、経路Ｈおよび経路Ｉの処理を、１ライン分繰り返す。
【０１１５】
上述のｎライン目および（ｎ＋１）ライン目の処理を、繰り返し実行する。
【０１１６】
このように、１ライン分の画像データについてＭＴＦデータ幅値を求める処理と、符号化を行う処理とを並列して行うことにより、基本的に１クロックでＭＴＦデータ幅値分の符号化処理を行うことができ、処理をより高速に実行することができる。
【０１１７】
（復号処理）
図２７は、第１の実施形態に係る復号部１７の一例の構成を示す。復号部１７は、符号読み込み部２００、ハフマン復号処理部２０１、ＭＴＦ復号部２０２、ＭＴＦデータ合成部２０３および画像書き込み部２０４を含む。
【０１１８】
符号読み込み部２００は、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄから符号データを読み込み、読み込んだ符号データをハフマン復号処理部２０１に転送する。ハフマン復号処理部２０１は、符号読み込み部２００から受け取った符号データを、図６に示したフォーマットに従い復号し、一致フラグ、インデクス値、ＥＳＣデータおよびＭＴＦデータ幅値を取得する。取得された一致フラグ、インデクス値およびＥＳＣデータは、ＭＴＦ復号部２０２に転送される。また、取得されたＭＴＦデータ幅値は、ＭＴＦデータ合成部２０３に転送される。
【０１１９】
ハフマン復号処理部２０１における復号処理について、概略的に説明する。ハフマン復号処理部２０１は、符号読み込み部２００から受け取った符号データのＭＳＢ側から順に１ビットずつ値を読み込み、図６のフォーマットに従い、当該符号データがラインヘッダ符号、ＥＳＣ符号、インデクス値および終端符号のうち何れであるかを判定する。
【０１２０】
ハフマン復号処理部２０１は、受け取った符号データがラインヘッダ符号であると判定した場合、当該符号データのＬＳＢ側の３ビットに基づきＭＴＦデータ幅が８ビット、１６ビットおよび３２ビットのうち何れであるかを判定する。ハフマン復号処理部２０１は、受け取った符号データがＥＳＣ符号であると判定した場合、一致フラグを非一致を示す値（例えば値「０」）とする。それと共に、ラインヘッダ符号から判定したＭＴＦデータ幅値に従い、符号データの４ビット目からＭＴＦデータ幅値が示すビット長だけデータを切り出し、ＥＳＣデータとする。ハフマン復号処理部２０１は、受け取った符号データがインデクス符号であると判定した場合、図６のフォーマットに従いインデクス値を求める。さらに、ハフマン復号処理部２０１は、受け取った符号データが終端符号であると判定した場合、復号処理を終了する。
【０１２１】
ＭＴＦ復号部２０２は、ハフマン復号処理部２０１から一致フラグ、インデクス値およびＥＳＣデータを受け取り、ＭＴＦアルゴリズムに基づき復号処理を行う。すなわち、一致フラグが非一致を示す値（例えば値「０」）である場合には、ＥＳＣデータをＭＴＦデータとしてＭＴＦデータ合成部２０３に転送すると共に、当該ＥＳＣデータを辞書に格納する。また、一致フラグが一致を示す値（例えば「１」である場合には、インデクス値に従い辞書を参照して、インデクス値に対応する辞書データをＭＴＦデータとしてＭＴＦデータ合成部２０３に転送する。このＭＴＦデータは、上述した符号化部１６におけるＭＴＦデータ分割部３５で分割され所定のデータ幅に成形された分割データに対応する。
【０１２２】
ＭＴＦデータ合成部２０３は、ＭＴＦ復号部２０２から受け取ったＭＴＦデータをハフマン復号処理部２０１から受け取ったＭＴＦデータ幅値に基づき合成して、ワード単位の画像データを生成する。生成された画像データは、画像書き込み部２０４に転送され、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃに書き込まれる。
【０１２３】
（復号部の各部詳細）
次に、復号部１７の各部について、より詳細に説明する。先ず、ＭＴＦ復号部２０２について説明する。ＭＴＦ復号部２０２は、ＥＳＣデータを辞書データとして用いて辞書を構成し、インデクス値に基づき辞書を参照して、インデクス値に対応するデータを出力する。
【０１２４】
図２８は、こうした処理を行うためのＭＴＦ復号部２０２の一例の構成を示す。ＭＴＦ復号部２０２は、辞書データが格納され辞書を構成する複数のレジスタ２１０0、２１０1、…、２１０n、…、２１０15と、インデクス値に従いレジスタ２１０0、２１０1、…、２１０n、…、２１０15から１を選択するＭＵＸ２１１と、ＥＳＣデータと各レジスタ２１０0、２１０1、…、２１０n、…、２１０15から読み出されたデータのうち、一致フラグに基づき一方を選択して出力するＭＵＸ２１２とを有する。各レジスタ２１０0〜２１０15は、辞書の更新時に辞書データをシフトできるように、隣接するレジスタの入出力が接続される。
【０１２５】
ＭＴＦ復号部２０２は、ハフマン復号処理部２０１から受け取った一致フラグが非一致を示す場合、ハフマン復号処理部２０１から受け取ったＥＳＣデータをＭＴＦデータとしてＭＴＦ復号部２０２から出力すると共に、当該ＥＳＣデータを辞書データ＃０としてレジスタ２１０0に格納する。さらに非一致を示す一致フラグと、ＥＳＣデータとを受け取った場合、ＭＵＸ２１２は、レジスタ２１０0に格納されるデータを隣接するレジスタ２１０1に移動させると共に、レジスタ２１０0に対して新たに受け取ったＥＳＣデータを格納する。このように、各レジスタ２１０0〜２１０15に対して、ＥＳＣデータを辞書データとして順次格納し、辞書を構成する。
【０１２６】
なお、ＥＳＣデータは、データ幅が、符号化部１６のＭＴＦデータ分割部３５においてＭＴＦデータ幅生成部３１により検出される最大の周期に対応するデータ幅（この例では３２ビット）に成形されたデータである。
【０１２７】
一方、ＭＴＦ復号部２０２において、ハフマン復号処理部２０１から受け取ったインデクス値に基づき、ＭＵＸ２１１によりレジスタ２１０0〜２１０15から当該インデクス値に対応する出力が選択される。ＭＴＦ復号部２０２は、ハフマン復号処理部２０１から受け取った一致フラグが一致を示す場合、ＭＵＸ２１２によりＭＵＸ２１１でインデクス値に基づき選択された出力を選択して、ＭＴＦデータとしてＭＴＦ復号部２０２から出力する。
【０１２８】
図２９は、ＭＴＦデータ合成部２０３の一例の構成を示す。ＭＴＦデータ合成部２０３は、８ビット単位合成処理部２２０、１６ビット単位合成処理部２２１、３２ビット単位合成処理部２２２およびＭＵＸ２２３を有する。ＭＴＦデータ合成部２０３は、それぞれ３２ビットのデータ幅に成形された８ビット単位、１６ビット単位および３２ビット単位の各ＭＴＦデータを、１ワードのデータに合成して出力する。
【０１２９】
図３０は、８ビット単位合成処理部２２０の一例の構成を示す。データ幅が３２ビットのＭＴＦデータがＭＵＸ２３０に入力される。なお、図３０において、カウンタ２３１は、例えばＭＵＸ２３０にＭＴＦデータが入力される毎に値「１」からカウントアップされ、カウント値が値「８」になると、次の入力タイミングでカウント値を「１」に初期化してカウントアップを再開するものとする。また、レジスタ２３２は、各領域２３２1、２３２2、…、２３２8に８ビット単位でデータを格納し、全体として１ワード分のデータを格納可能とされている。
【０１３０】
ＭＵＸ２３０は、入力されたＭＴＦデータのＭＳＢ側の８ビットを切り出して、切り出した８ビットのデータを、領域２３２1〜２３２8のうちカウンタ２３１のカウント値が示す領域に格納する。領域２３２1〜２３２8の全てにデータが格納されると、各領域２３２1〜２３２8から同時にデータが読み出され、１ワードのデータとして出力される。
【０１３１】
図３１は、１６ビット単位合成処理部２２１の一例の構成を示す。データ幅が３２ビットのＭＴＦデータがＭＵＸ２４０に入力される。なお、図３１において、カウンタ２４１は、例えばＭＵＸ２４０にＭＴＦデータが入力される毎に値「１」からカウントアップされ、カウント値が値「４」になると、次の入力タイミングでカウント値を「１」に初期化してカウントアップを再開するものとする。また、レジスタ２４２は、各領域２４２1〜２４２4に１６ビット単位でデータを格納し、全体として１ワード分のデータを格納可能とされている。
【０１３２】
ＭＵＸ２４０は、入力されたＭＴＦデータのＭＳＢ側の１６ビットを切り出して、切り出した１６ビットのデータを、領域２４２1〜２４２4のうちカウンタ２４１のカウント値が示す領域に格納する。領域２４２1〜２４２4の全てにデータが格納されると、各領域２４２1〜２４２4から同時にデータが読み出され、１ワードのデータとして出力される。
【０１３３】
図３２は、３２ビット単位合成処理部２２２の一例の構成を示す。データ幅が３２ビットのＭＴＦデータがＭＵＸ２５０に入力される。なお、図３２において、カウンタ２５１は、例えばＭＵＸ２５０にＭＴＦデータが入力される毎に値「１」からカウントアップされ、カウント値が値「２」になると、次の入力タイミングでカウント値を「１」に初期化してカウントアップを再開するものとする。また、レジスタ２５２は、各領域２５２1および２５２2に３２ビット単位でデータを格納し、全体として１ワード分のデータを格納可能とされている。
【０１３４】
ＭＵＸ２５０は、入力されたＭＴＦデータを、領域２５２1および２５２2のうちカウンタ２５１のカウント値が示す領域に格納する。領域２５２1および２５２2にそれぞれデータが格納されると、各領域２５２1および２５２2から同時にデータが読み出され、１ワードのデータとして出力される。
【０１３５】
図２９の説明に戻り、８ビット単位合成処理部２２０、１６ビット単位合成処理部２２１および３２ビット単位合成処理部２２２から出力された１ワードのデータは、それぞれＭＵＸ２２３に入力される。ＭＵＸ２２３は、８ビット単位合成処理部２２０、１６ビット単位合成処理部２２１および３２ビット単位合成処理部２２２の出力のうち、ハフマン復号処理部２０１から受け取ったＭＴＦデータ幅値に対応する出力を選択して、１ワードの画像データとして出力する。
【０１３６】
なお、上述では、画像データの符号化をＭＴＦ方式を用いて行っているが、これはこの例に限定されない。例えば、簡単なＦＩＦＯ(First  In  First  Out)の辞書を用いて符号化を行う場合にも、本第１の実施形態を適用することができる。
【０１３７】
また、上述では、ＭＴＦデータ幅生成部３１において、８ビット、１６ビットおよび３２ビットの３種類のデータ幅に対応する周期をそれぞれ検出しているが、これはこの例に限定されない。例えば、８ビットおよび１６ビットなど２種類のデータ幅に対応する周期をそれぞれ検出してもよいし、４種類以上のデータ幅に対応する周期をそれぞれ検出してもよい。
【０１３８】
上述したように、本第１の実施形態では、符号化対象のデータに対して周期検出を行い、検出された周期に従い当該データを分割して辞書を作成し、作成した辞書をＭＴＦ制御して当該データのインデクス値を求め、求められたインデクス値に対してハフマン符号化処理を施す。このとき、第１の実施形態では、２のラインメモリをトグルに用いて、ライン単位で、周期検出処理と符号化処理（ＭＴＦ制御およびハフマン符号化処理）とを並列処理する。これにより、周期検出処理の処理時間を隠蔽し、高速化することが可能である。
【０１３９】
また、周期検出処理においては、小さな周期で画像データを読み込んで周期の検出を行うと、周期検出処理に大きな時間を消費してしまい、周期検出処理と符号化処理とを効率的に並列処理することが困難となる。
【０１４０】
すなわち、周期検出処理および符号化処理を同じビット数で処理する場合は、周期検出処理と符号化処理とでそれぞれ同じ時間を消費するために問題が無い。一方、より高速化を図るために、周期検出処理を小さいビット幅から大きなビット幅まで、複数のビット幅について実行することが考えられる。この場合であっても、符号化処理は、選択された１の周期（ビット幅）でのみ実行することになる。そのため、元々大きなビット幅で符号化を行う場合でも、周期検出で検出される複数の周期のうち短い周期がネックとなり、高速化が困難となるおそれがある。
【０１４１】
そこで、第１の実施形態では、周期検出処理において、異なる周期を検出する複数の周期検出処理を並列に実行すると共に、複数の周期の検出を、画像データのアクセス単位である１ワードに対して並列的に行っている。これにより、小さいビット幅（周期）でも、大きなビット幅（周期）と同等な速度で周期検出を行うことができ、周期検出処理の高速化が実現可能となると共に、周期検出処理を、符号化処理の以上の速度で実行することを保証できる。
【０１４２】
また、ライン単位で周期検出処理と  符号化処理を分ける場合、周期検出処理は、メインメモリから画像データを読み込んで処理し、符号化処理は、ラインメモリに溜め込まれたデータを処理することになる。そのため、符号化処理は、一定の時間で処理が終了するが、周期検出処理は、メインメモリからのデータの読み込み時間で処理の終了時間が変化する。すなわち、メインメモリは、他の処理からもアクセスされるために、読み込み時間を保証することが困難なためである。
【０１４３】
したがって、基本的には、周期検出処理は、単位当たりの処理を、符号化処理よりも高速に終了させる必要がある。第１の実施形態では、周期検出処理において、複数の周期の検出を並列的に処理し、且つ、複数の周期の検出それぞれが１ワードに対して並列的に実行されるため、小さいビット幅（周期）でも、大きなビット幅（周期）と同等な速度で周期検出を行うことができる。これにより、周期検出処理の高速化が実現可能となり、符号化処理と処理のバランスを保つことができる。
【０１４４】
また、第１の実施形態では、周期検出処理において８ビット幅、１６ビット幅、３２ビット幅など複数の周期を検出する。ここで、周期検出を行い検出された周期に従いデータを分割した後に、複数の周期のそれぞれに対して辞書を用意してＭＴＦ制御を行うと、ハードウエアのゲート規模を大きくしてしまう。
【０１４５】
そのため、各実施形態では、周期検出における最大の周期（上述の例では３２ビット幅）のサイズの辞書のみ用意する。そして、周期検出により複数の周期のうち検出された周期で符号化対象の画像データを分割し、分割したそれぞれのデータに対して、周期検出における最大の周期に従い所定の値を付加して分割データのサイズを辞書のサイズに合わせる。この辞書のサイズに合わせたデータを用いてＭＴＦ制御を行うことで、１のサイズの辞書のみで対応可能となり、ハードウエアのゲート規模を小さくすることができる。
【０１４６】
（第２の実施形態）
次に、第２の実施形態について説明する。本第２の実施形態は、上述した第１の実施形態に対して白ラインの検出処理を追加したものである。なお、白ラインとは、１ラインの全ての画素が画素値「０」であるラインをいう。すなわち、白ラインは、１ラインの画像データをビット列で表した場合に、当該ビット列における全てのビット値が値「０」となる。
【０１４７】
図３３は、本第２の実施形態に係る符号化部１６’の一例の構成を示す。なお、図３３において、上述した図３と共通する部分には同一の符号を付して、詳細な説明を省略する。図３３に例示されるように、本第２の実施形態に係る符号化部１６’は、図３を用いて説明した第１の実施形態に係る符号化部１６に対して白ライン検出部３００を追加した構成となっている。
【０１４８】
画像読み込み部３０がメインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから読み込んだ画像データは、ＭＴＦデータ幅生成部３１に転送されると共に、白ライン検出部３００にも転送される。白ライン検出部３００は、受け取った画像データにおける白（すなわち画素のビット値が全て「０」）を検出し、ラインの先頭から白の連続部分が継続しているか否かを判定する。そして、白ライン検出部３００は、ラインの先頭から白が連続している間の画像データを、例えばワード単位でラインメモリ制御部３２に転送する。ラインメモリ制御部３２は、当該白の画像データを、ラインメモリ３３Ａまたは３３Ｂに書き込む。
【０１４９】
また、白ライン検出部３００は、白の連続部分の検出の結果、１ライン全体が白であった場合に、その旨示す値（例えば値「１」）の白ラインフラグを出力する。出力されたこの白ラインフラグは、ＭＴＦデータ幅値記憶部３４に記憶されると共に、ＭＴＦデータ幅生成部３１に転送される。
【０１５０】
ＭＴＦデータ分割部３５は、ＭＴＦデータ幅値記憶部３４に記憶される白ラインフラグの値が、１ライン全体が白であることを示す値（以下、全白を示す値と呼ぶ）であった場合に、ＭＴＦデータ幅値を、ＭＴＦデータ幅生成部３１による周期検出処理で検出を行う最大の周期に対応する値（この例では３２ビット）に固定的に設定する。
【０１５１】
一方、ＭＴＦデータ分割部３５は、ＭＴＦデータ幅値記憶部３４に記憶される白ラインフラグの値が、１ラインのうち一部でも白ではない画素が存在することを示す値（以下、非全白を示す値と呼ぶ）であった場合には、ＭＴＦデータ幅値を、ＭＴＦデータ幅生成部３１による周期検出処理で検出を行った周期に対応する値とする。
【０１５２】
図３４は、本第２の実施形態による符号化処理を示す一例のフローチャートである。符号化部１６’は、先ず、ステップＳ２００で白ラインフラグを全白を示す値（この例では値「１」）に初期化する。そして、次のステップＳ２０１で、画像読み込み部３０により、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから１ラインの画像データを、１ワード分、読み込む。
【０１５３】
次のステップＳ２０２で、ＭＴＦデータ幅生成部３１により、白ラインフラグの値が全白を示す値（値「１」）であるか否かが判定される。若し、白ラインフラグの値が非全白を示す値（値「０」）であると判定された場合、処理がステップＳ２０５に移行される。ステップＳ２０５で、ＭＴＦデータ幅生成部３１により、画像読み込み部３０から受け取った画像データに対して周期検出処理が行われ、ＭＴＦデータ幅値が求められる。このＭＴＦデータ幅値は、ＭＴＦデータ幅値記憶部３４に記憶される。そして、処理はステップＳ２０６に移行される。
【０１５４】
一方、ステップＳ２０２で、白ラインフラグの値が全白を示す値であると判定された場合、処理がステップＳ２０３に移行され、白ライン検出部３００により、画像読み込み部３０から受け取った画像データの値が「０」であるか否か、すなわち、当該画像データの各ビットの値が全て値「０」であるか否かが判定される。若し、画像データの値が「０」であると判定された場合、処理がステップＳ２０６に移行される。
【０１５５】
一方、ステップＳ２０３で、画像データの値が「０」ではない、すなわち、当該画像データの各ビットのうち少なくとも１ビットの値が「０」ではないと判定された場合、処理がステップＳ２０４に移行され、白ラインフラグの値が非全白を示す値（値「０」）に設定される。そして、処理がステップＳ２０６に移行される。
【０１５６】
ステップＳ２０６では、ラインメモリ制御部３２の制御により、画像データがラインメモリ３３Ａまたは３３Ｂに書き込まれる。ここでは、ラインメモリ３３Ａに書き込まれるものとする。
【０１５７】
なお、上述のステップＳ２０３で画像データの値が「０」であると判定されて、このステップＳ２０６に処理が移行された場合、ならびに、ステップＳ２０３で画像データの値が「０」ではないと判定され、ステップＳ２０４を介してステップＳ２０６に移行された場合には、画像データは、白ライン検出部３００からラインメモリ制御部３２に転送されて、ラインメモリ３３Ａに書き込まれる。一方、ステップＳ２０２で白ラインフラグが非全白を示す値であると判定されてステップＳ２０６に移行された場合には、画像データは、ＭＴＦデータ幅生成部３１からラインメモリ制御部３２に転送されて、ラインメモリ３３Ａに書き込まれる。
【０１５８】
処理はステップＳ２０７に移行され、符号化部１６’は、１ライン分の画像データの処理が終了したか否かを判定する。若し、終了していないと判定された場合、処理をステップＳ２０１に戻し、処理対象の１ラインの次の１ワードの画像データを読み込む。
【０１５９】
一方、ステップＳ２０７で、１ライン分の処理が終了したと判定した場合、処理をステップＳ２０８に移行させる。ステップＳ２０８では、ＭＴＦデータ分割部３５により、ＭＴＦデータ幅値記憶部３４に記憶される白ラインフラグの値が全白を示しているか否かが判定される。
【０１６０】
若し、白ラインフラグの値が全白を示していると判定された場合、処理がステップＳ２０９に移行され、ＭＴＦデータ分割部３５により、ＭＴＦデータ幅として、ＭＴＦデータ幅生成部３１による周期検出処理で検出される最大の周期に対応するデータ幅（この例では３２ビット）が使用される。一方、白ラインフラグの値が非全白を示していると判定された場合、処理がステップＳ２１０に移行され、ＭＴＦデータ分割部３５により、ＭＴＦデータ幅として、ＭＴＦデータ幅生成部３１による周期検出処理で検出された周期に対応するデータ幅が使用される。
【０１６１】
ステップＳ２０９またはステップＳ２１０でＭＴＦデータ幅が決定されたら、処理がステップＳ２１１に移行される。ステップＳ２１１では、ＭＴＦデータ分割部３５により、ステップＳ２０９またはステップＳ２１０で決定されたＭＴＦデータ幅で、ラインメモリ３３Ａから読み出した画像データを分割する。そして、次のステップＳ２１２でＭＴＦ処理部３６によりＭＴＦ処理がなされ、さらに、次のステップＳ２１３で、ハフマン符号化処理部３７により図６を用いて説明したフォーマットに従いハフマン符号化がなされる。これらステップＳ２１１〜ステップＳ２１３での各処理は、上述した第１の実施形態における対応する各処理と何ら変わるところがないので、ここでの説明を省略する。
【０１６２】
ステップＳ２１３でハフマン符号化処理が終了すると、処理がステップＳ２１４に移行され、１ライン分の画像データの処理が終了したか否かが判定される。若し、終了していないと判定された場合、処理がステップＳ２１１に戻され、次の１ワード分の処理が行われる。一方、１ライン分の画像データの処理が終了したと判定された場合、処理がステップＳ２１５に移行され、全ライン（例えばバンド高さ分のライン全て）の画像データに対する処理が終了したか否かが判定される。若し、終了していないと判定された場合、処理がステップＳ２００に移行され、次のラインについて処理が行われる。一方。全ラインの画像データに対する処理が終了したと判定された場合、図３４のフローチャートによる一連の符号化処理が終了される。
【０１６３】
（第２の実施形態におけるパイプライン処理）
本第２の実施形態においても、符号化部１６’におけるＭＴＦデータ幅生成部３１による周期検出処理と、ＭＴＦ処理部３６およびハフマン符号化部３７による符号化処理とを、２のラインメモリ３３Ａおよび３３Ｂをトグルに用いることでパイプライン処理し、より高速な処理を実現している。このとき、本第２の実施形態では、１ライン中の先頭から白が連続して検出される場合と、１ラインの先頭からの白の連続が途切れて以降の場合とで、処理の流れが異なる。
【０１６４】
図３５−１〜図３５−４を用いて、第２の実施形態によるパイプライン処理について説明する。なお、図３５−１〜図３５−４において、上述した図３および図３３と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１６５】
図３５−１は、ｎライン目の処理において、ｎライン目の先頭から白が連続して検出されている場合の処理の流れを示す。ｎライン目の画像データにおいて、経路Ａ’により、メインメモリ１４のＣＭＹＫバンド画像データ領域１４Ｃから画像読み込み部３０がｎライン目における１ワードの画像データを読み出し、白ライン検出部３００で読み出された画像データの値が「０」であるか否かを判定する。画像データの値が「０」であると判定された場合、経路Ｂ’により、ｎライン目における１ワード分の画像データを例えばラインメモリ３３Ａに書き込む。また、白ライン検出部３００は、白ラインフラグの値を全白を示す値に設定して、経路Ｃ’にてＭＴＦデータ幅値記憶部３４に記憶させる。
【０１６６】
図３５−２は、ｎライン目の処理において、白ラインフラグの値が非全白を示す値となり、ｎライン目の先頭から連続して検出された白が途切れて以降の処理の流れを示す。この場合、図２６−１を用いて説明した処理の流れと同様となる。すなわち、ｎライン目の画像データにおいて、画像読み込み部３０によりＣＭＹＫバンド画像データ領域１４Ｃから経路Ａにより読み出されたｎライン目における１ワードの画像データに対して、ＭＴＦデータ幅生成部３１で、複数の周期の検出を並列して行う。そして、経路Ｂにより、ｎライン目における１ワード分の画像データをラインメモリ３３Ａに書き込む。この１ワード単位の処理を１ライン分繰り返し、ｎライン目全ての処理が終了すると、ＭＴＦデータ幅生成部３１が、検出を行った複数の周期のうち最も長い周期に対応するデータ幅をＭＴＦデータ幅値に決定し、経路Ｃにより、決定されたＭＴＦデータ幅値をＭＴＦデータ幅値記憶部３４に記憶させる。
【０１６７】
図３５−３は、（ｎ＋１）ライン目の処理において、（ｎ＋１）ライン目の先頭から白が連続して検出されている場合の処理の流れを示す。（ｎ＋１）ライン目の画像データにおいて、上述のｎライン目と同様に、経路Ｄ’によりＣＭＹＫバンド画像データ領域１４Ｃから読み出した（ｎ＋１）ライン目における１ワードの画像データに対して、白ライン検出部３００でこの画像データの値が「０」であるか否かを判定する。画像データの値が「０」であると判定された場合、経路Ｅ’により、（ｎ＋１）ライン目における１ワード分の画像データをラインメモリ３３Ｂに書き込む。また、白ライン検出部３００は、白ラインフラグの値を全白を示す値に設定して、経路Ｆ’にてＭＴＦデータ幅値記憶部３４に記憶させる。
【０１６８】
以上の経路Ｄ’、経路Ｅ’および経路Ｆ’の処理と並列的に、図２６−２を用いて説明した処理の流れと同様に、経路Ｇにより、ラインメモリ３３Ａからｎライン目の画像データを読み出して、上述の経路Ｃ’でＭＴＦデータ幅値記憶部３４に記憶されたＭＴＦデータ幅値に基づき、ＭＴＦデータ分割部３５においてｎライン目の画像データが分割され、ＭＴＦ処理部３６に転送される。ＭＴＦ処理部３６は、このｎライン目の分割データに基づきＭＴＦ処理により符号化を行い、一致フラグと、インデクス値またはＥＳＣデータとを生成し、生成された一致フラグと、インデクス値またはＥＳＣデータとを経路Ｈでハフマン符号化部３７に転送する。ハフマン符号化部３７は、ＭＴＦ処理部３６から受け取った一致フラグと、インデクス値またはＥＳＣデータとを符号化して、符号データを経路Ｉで符号書き込み部３８に転送する。符号書き込み部３８は、受け取った符号データを、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄに書き込む。このｎライン目における経路Ｇ、経路Ｈおよび経路Ｉの処理を、１ライン分繰り返す。
【０１６９】
図３５−４は、（ｎ＋１）ライン目の処理において、白ラインフラグの値が非全白を示す値となり、（ｎ＋１）ライン目の先頭から連続して検出された白が途切れて以降の処理の流れを示す。この場合、図２６−２を用いて説明した処理の流れと同様となる。すなわち、（ｎ＋１）ライン目の画像データにおいて、上述のｎライン目と同様に、経路Ｄにより、ＣＭＹＫバンド画像データ領域１４Ｃから読み出した（ｎ＋１）ライン目における１ワードの画像データに対して、ＭＴＦデータ幅生成部３１で、読み出された１ワードに対して複数の周期の検出を並列して行う。そして、経路Ｅにより、（ｎ＋１）ライン目における１ワード分の画像データをラインメモリ３３Ｂに書き込む。この１ワード単位の処理を１ライン分繰り返し、（ｎ＋１）ライン目全ての処理が終了すると、ＭＴＦデータ幅生成部３１が、検出を行った複数の周期のうち最も長い周期に対応するデータ幅をＭＴＦデータ幅値に決定し、経路Ｆにより、決定されたＭＴＦデータ幅値をＭＴＦデータ幅値記憶部３４に記憶させる。
【０１７０】
以上の経路Ｄ、経路Ｅおよび経路Ｆの処理と並列的に、経路Ｇにより、ラインメモリ３３Ａからｎライン目の画像データを読み出して、上述の経路Ｃ’でＭＴＦデータ幅値記憶部３４に記憶されたＭＴＦデータ幅値に基づき、ＭＴＦデータ分割部３５においてｎライン目の画像データが分割され、ＭＴＦ処理部３６に転送される。ＭＴＦ処理部３６は、このｎライン目の分割データに基づきＭＴＦ処理により符号化を行い、一致フラグと、インデクス値またはＥＳＣデータとを生成し、生成された一致フラグと、インデクス値またはＥＳＣデータとを経路Ｈでハフマン符号化部３７に転送する。ハフマン符号化部３７は、ＭＴＦ処理部３６から受け取った一致フラグと、インデクス値またはＥＳＣデータとを符号化して、符号データを経路Ｉで符号書き込み部３８に転送する。符号書き込み部３８は、受け取った符号データを、メインメモリ１４のＣＭＹＫページ符号データ領域１４Ｄに書き込む。このｎライン目における経路Ｇ、経路Ｈおよび経路Ｉの処理を、１ライン分繰り返す。
【０１７１】
上述したように、本第２の実施形態では、読み込んだ１ラインの画像データの先頭から白画素の連続を検出し、白画素が連続している間は周期検出処理を行わずに、当該画像データをラインメモリに書き込む。白ラインにおいて周期検出処理を行わずに、読み込んだ画像データをそのままラインメモリに書き込むため、画像データの読み込みを高速化することが可能である。
【０１７２】
また、１ラインの全ての画素が画素値「０」であれば、当該１ラインの処理を全て白ライン検出処理として行うことが可能であるため、圧縮符号化処理を高速化することが可能である。すなわち、１ライン全体が白であることが検出された場合、ＭＴＦデータ分割部３５では、周期検出処理により検出される最大の周期に対応するデータ幅で画像データを分割する。１ライン全体が白であれば、最も大きな周期に対応するデータ幅で圧縮符号化を行うことで、処理速度および圧縮率を向上させることができる。
【０１７３】
また、第２の実施形態では、１ラインの途中で白の連続が途切れるような場合、白が検出された部分までラインメモリに画像データを格納し、白の連続が途切れた部分から周期検出処理を開始するようにしている。そのため、白が連続している間は、高速に圧縮符号化処理を実行することが可能である。すなわち、白が連続している部分は、どの周期にも対応可能であるため、特に周期検出処理を行う必要が無い。
【符号の説明】
【０１７４】
１  画像形成装置
１４  メインメモリ
１６  符号化部
１７  復号部
３０  画像読み込み部
３１  ＭＴＦデータ幅生成部
３２  ラインメモリ制御部
３３Ａ，３３Ｂ  ラインメモリ
３４  ＭＴＦデータ幅値記憶部
３５  ＭＴＦデータ分割部
３６  ＭＴＦ処理部
３７  ハフマン符号化処理部
３８  符号書き込み部
２００  符号読み込み部
２０１  ハフマン復号処理部
２０２  ＭＴＦ復号部
２０３  ＭＴＦデータ合成部
２０４  画像書き込み部
３００  白ライン検出部
【先行技術文献】
【特許文献】
【０１７５】
【特許文献１】特許第４０００２６６号公報
【図１】
0006003059.tif 000002
【図２】
0006003059.tif 000003
【図３】
0006003059.tif 000004
【図４】
0006003059.tif 000005
【図５−１】
0006003059.tif 000006
【図５−２】
0006003059.tif 000007
【図６】
0006003059.tif 000008
【図７】
0006003059.tif 000009
【図８】
0006003059.tif 000010
【図９】
0006003059.tif 000011
【図１０】
0006003059.tif 000012
【図１１】
0006003059.tif 000013
【図１２】
0006003059.tif 000014
【図１３】
0006003059.tif 000015
【図１４】
0006003059.tif 000016
【図１５】
0006003059.tif 000017
【図１６】
0006003059.tif 000018
【図１７】
0006003059.tif 000019
【図１８】
0006003059.tif 000020
【図１９】
0006003059.tif 000021
【図２０】
0006003059.tif 000022
【図２１】
0006003059.tif 000023
【図２２】
0006003059.tif 000024
【図２３】
0006003059.tif 000025
【図２４】
0006003059.tif 000026
【図２５】
0006003059.tif 000027
【図２６−１】
0006003059.tif 000028
【図２６−２】
0006003059.tif 000029
【図２７】
0006003059.tif 000030
【図２８】
0006003059.tif 000031
【図２９】
0006003059.tif 000032
【図３０】
0006003059.tif 000033
【図３１】
0006003059.tif 000034
【図３２】
0006003059.tif 000035
【図３３】
0006003059.tif 000036
【図３４】
0006003059.tif 000037
【図３５−１】
0006003059.tif 000038
【図３５−２】
0006003059.tif 000039
【図３５−３】
0006003059.tif 000040
【図３５−４】
0006003059.tif 000041