(57)【要約】【課題】入力データと辞書データが最も一致する周期内において、出来るだけ大きな周期で入力データを符号化することで、符号化速度をより高速化する。【解決手段】画像データをライン単位で符号化するデータ処理装置である。画像読み込み部２２でメインメモリ１０からライン単位で画像データを読み込む。読み込んだ画像データについて、ＭＴＦデータ幅選択部２３で最も大きな周期を決定し、ＭＴＦデータ幅切り出し部２８で切り出す。次に、切り出した前記データをＭＴＦ処理部２９で中間データに変換し、その中間データをハフマン符号化処理部３０でハフマン符号化する。【選択図】図２
2014103466.tif 000002
【特許請求の範囲】
【請求項１】
データを符号化するデータ処理装置であって、
データ記憶手段に記憶された所定量のデータを読み込むデータ読み込み手段と、前記読み込んだデータに対して、前記所定量毎に当該データのデータ周期を選択するデータ周期選択手段と、前記データ周期選択手段で選択したデータ周期で、前記読み込んだデータからデータを切り出すデータ切り出し手段と、前記切り出したデータを中間データに変換する中間データ変換手段と、前記中間データ変換手段で変換した中間データを符号化する符号化処理手段と、を有し、
前記データ周期選択手段は、前記読み込んだデータを所定の周期単位で分割した、各分割データ間におけるデータの一致カウント値を求める一致カウント手段を有し、前記一致カウント手段で求めた一致カウント値において、最も大きなカウント値が得られる周期、又は、前記カウント値が同数のときはそのカウント値が得られる周期のうち最も大きな周期の分割データの周期を選択することを特徴とするデータ処理装置。
【請求項２】
請求項１に記載されたデータ処理装置において、
前記データ周期選択手段は、前記データの一致カウント値を量子化する量子化手段を有し、前記量子化手段により求めた量子化後の一致カウント値において、最も大きなカウント値が得られる周期、又は、前記カウント値が同数のときはそのカウント値が得られる周期のうち最も大きな周期の分割データの周期を選択することを特徴とするデータ処理装置。
【請求項３】
請求項１又は２に記載されたデータ処理装置において、
前記中間データ変換手段は、前記データ周期選択手段で選択した最も大きな周期のデータ周期でデータ変換を行うことを特徴とするデータ処理装置。
【請求項４】
請求項１又は２に記載されたデータ処理装置において、
前記中間データ変換手段は辞書を備え、入力データを、前記入力データと前記辞書の辞書データとの一致又は不一致を反映させた中間データに変換することを特徴とするデータ処理装置。
【請求項５】
請求項４に記載されたデータ処理装置において、
前記辞書は、ＭＴＦ方式又はＦＩＦＯ方式の辞書であることを特徴とするデータ処理装置。
【請求項６】
請求項１又は２に記載されたデータ処理装置において、
前記符号化処理手段は、前記中間データをハフマン符号化するハフマン符号化処理手段であることを特徴とするデータ処理装置。
【請求項７】
請求項１又は２に記載されたデータ処理装置において、
前記データ周期選択手段は、１ワードのデータを所定のデータ幅で複数のデータに分割し、分割したデータ間におけるデータの一致数をカウントする一致カウンタを有し、同じワード数に対する前記一致カウンタの合計カウント数が最も大きいデータ幅、又は、前記カウント値が同数のときはそのカウント値が得られデータ幅のうち最も大きな分割データのデータ幅を切り出し用のデータ幅として選択することを特徴とするデータ処理装置。
【請求項８】
請求項１又は２に記載されたデータ処理装置において、
前記量子化手段では、複数の量子化値が選択可能であることを特徴とするデータ処理装置。
【請求項９】
データを符号化するデータ処理装置におけるデータ処理方法であって、
データ記憶手段に記憶された所定量のデータを読み込むデータ読み込み工程と、前記読み込んだデータに対して、前記所定量毎に当該データのデータ周期を選択するデータ周期選択工程と、
前記データ周期選択工程で選択したデータ周期で、前記読み込んだデータからデータを切り出すデータ切り出し工程と、前記切り出したデータを中間データに変換する中間データ変換工程と、前記中間データ変換工程で変換した中間データを符号化する符号化処理工程と、を有し、
前記データ周期選択工程は、前記読み込んだデータを所定の周期単位で分割した、各分割データ間におけるデータの一致カウント値を求める一致カウント工程を有し、前記一致カウント工程で求めた一致カウント値において、最も大きなカウント値が得られる周期、又は、前記カウント値が同数のときはそのカウント値が得られる周期のうち最も大きな周期の分割データの周期を選択することを特徴とするデータ処理方法。
【請求項１０】
請求項９に記載されたデータ処理方法における前記各工程を、コンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、データ処理方法及びプログラムに関する。
【背景技術】
【０００２】
プリンタ装置等の画像処理装置は、画像データを一時的にメモリに記憶する。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になりコストが掛かる。これに対処するため、画像データを圧縮してメモリに格納することが従来から行われている。
【０００３】
従来の画像処理装置におけるプリント処理手順は、例えば以下のとおりである。即ち、画像形成装置は、ネットワークから受け取ったＰＤＬ（Page Descript Language）を解析し、描画装置が実行可能な中間言語を生成し、描画装置により中間言語を解析して、バンドメモリへ画像を描画する。画像形成装置は、バンドメモリへの描画に当たり、画像の圧縮アルゴリズムにより、画像を符号化し、符号をメモリに格納し、その後、プリントアウト時に、Ｃ、Ｍ、Ｙ、Ｋ（シアン、マゼンタ、イエロー、ブラック）の各版毎に遅延させて、バンドメモリから符号化データを読み込み、前記圧縮アルゴリズムにより、復号化しＣ、Ｍ、Ｙ、Ｋの各版に対応するデータのプリンタエンジンに転送して印字する。
【０００４】
ここで、データを効率よく圧縮する方法として、特許文献１には、小さい動的な辞書をＭＴＦ（Move To Front）方式で制御することにより、少ない辞書でＭＴＦ制御し、辞書と一致したインデックス値をランレングス符号化するデータ符号化方法が記載されている。
【０００５】
ただ、この方法では、辞書に登録するワード数が小さく、例えば、符号化する辞書のデータ幅が１バイト（＝８ビット）の場合に、辞書の深さが６４＝２６個であると、対象データが辞書と一致したとしても、８バイトが６バイトに変換されるだけである。そのために辞書のワード数を大きくする必要があるが、その場合、辞書との一致が難しくなる。
【０００６】
そのために、特許文献１のデータ符号化方法では、例えば、１ビット／画素のディザ処理等の中間調処理された画像データを入力データとして用い、ディザ処理が施された画像データにはもともと周期性があることを利用して、ライン単位で周期検出を行い、辞書のワード数を求めている。しかし、何も書かれていない白画像（プリンタ画像では多くの面積を有する）の場合は、基本的に周期を有していないために、周期を求めることが出来ない。
特許文献１の前記データ符号化方法では、複数の周期で辞書のワードとの一致数をカウントし、カウント数が最も大きい値の周期を利用しているが、何も書かれていない白画像の場合は、周期が無いために周期の一番小さい一致カウンタが最も大きな値を有し易くなる。
【０００７】
また、プリンタ画像においては、各属性（文字／写真／グラフィックスなど）毎に異なるディザパターン（サイズが異なるディザパターン）を使用しているために、文字や写真等が混在するライン（図２８は、１ラインに写真画像、文字画像、グラフィックス画像が混在する例を示す図である）においては、周期を求めることが難しくなり、何も書かれていない白画像の場合と同様に、周期の一番小さい一致カウンタが最も大きなカウント値を有し易くなる。この場合、周期が一番小さい値が選択され、周期単位で辞書を使用して圧縮するため圧縮装置のスピードも低下するという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、上記の従来の問題に鑑みなされたものであって、その目的は、入力されるデータと辞書データが最も一致する周期内において、出来るだけ大きな周期でデータを符号化することにより、符号化速度をより高速化することである。
【課題を解決するための手段】
【０００９】
本発明は、データを符号化するデータ処理装置であって、データ記憶手段に記憶された所定量のデータを読み込むデータ読み込み手段と、前記読み込んだデータに対して、前記所定量毎に当該データのデータ周期を選択するデータ周期選択手段と、前記データ周期選択手段で選択したデータ周期で、前記読み込んだデータからデータを切り出すデータ切り出し手段と、前記切り出したデータを中間データに変換する中間データ変換手段と、前記中間データ変換手段で変換した中間データを符号化する符号化処理手段と、を有し、前記データ周期選択手段は、前記読み込んだデータを所定の周期単位で分割した、各分割データ間におけるデータの一致カウント値を求める一致カウント手段を有し、前記一致カウント手段で求めた一致カウント値において、最も大きなカウント値が得られる周期、又は、前記カウント値が同数のときはそのカウント値が得られる周期のうち最も大きな周期の分割データの周期を選択することを特徴とするデータ処理装置である。
【発明の効果】
【００１０】
本発明によれば、入力データと辞書データが最も一致する周期内において、出来るだけ大きな周期でデータを符号化することにより、符号化スピードをより高速化することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明のデータ処理装置の実施形態に係る画像データ処理装置のプリンタの電装・制御装置のブロック図である。
【図２】図１の符号化装置の符号化処理のための機能ブロック図である。
【図３】符号化した符号のフォーマットを示す図である。
【図４】ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＭＴＦ符号化処理の辞書探索処理を示す図である。
【図５】ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＭＴＦ符号化処理の辞書更新処理を示す図である。
【図６】図２のＭＴＦデータ幅選択部のブロック図である。
【図７】図２のＭＴＦデータ幅切り出し部のブロック図である。
【図８】８ビット単位一致合計演算部のブロック図である。
【図９】１６ビット単位一致合計演算部のブロック図である。
【図１０】３２ビット単位一致合計演算部のブロック図である。
【図１１】図６の量子化装置のブロック図である。
【図１２】８ビット量子化装置の量子化の処理状態を示す図である。
【図１３】７ビット量子化装置の量子化の処理状態を示す図である。
【図１４】６ビット量子化装置の量子化の処理状態を示す図である。
【図１５】図７の８ビット単位切り出し処理部のブロック図である。
【図１６】図７の１６ビット単位切り出し処理部のブロック図である。
【図１７】図７の３２ビット単位切り出し処理部のブロック図である。
【図１８】ＭＴＦ処理部のブロック図である。
【図１９】図６の一致ＭａｘＭＴＦデータ幅選択部２３（７）の処理手順を示すフロー図である。
【図２０】ハフマン符号化処理部におけるハフマン符号化処理手順のフロー図である。
【図２１】図２０のステップＳ２０４のインデックス符号化処理の手順を示すフロー図である。
【図２２】図２０のステップＳ２０５のＥＳＣ符号化処理の手順を示すフロー図である。
【図２３】図２０のステップＳ２０２のラインヘッダ符号化処理の手順を示すフロー図である。
【図２４】図２０のステップＳ２０７の終端符号化処理の手順を示すフロー図である。
【図２５Ａ】可変長符号の３２ビット符号への符号出力処理の手順を示すフロー図である。
【図２５ＢＣＤＥ】図２５Ａの符号出力処理におけるステップＳ７０２の符号のマージン処理を示す図である。
【図２６】符号化する画像データを示す図である。
【図２７】符号化した符号の例を示す図である。
【図２８】１ラインに写真画像、文字画像、グラフィックス画像が混在する例を示す図である。
【図２９】図１の符号化装置の符号化処理のためのＦＩＦＯアルゴリズムに基づく機能ブロック図である。
【図３０】ＦＩＦＯ処理部のブロック図である。
【図３１】ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＦＩＦＯ符号化処理の辞書更新処理を示す図である。
【図３２】量子化値を変えたことによるＭａｘ周期の差の例を示す図である。
【発明を実施するための形態】
【００１２】
図１は、本発明のデータ処理装置の実施形態である画像データ処理装置のプリンタの電装・制御装置９のブロック図である。
ＣＰＵ（Central Processing Unit）１は、ＰＣ（Personal Computer）１１からのＰＤＬを解析し、メインメモリ１０へ多値（ＣＭＹＫ）画像データの描画処理を行なう。ＣＰＵ  Ｉ／Ｆ（インタフェース）２は、メインメモリアービタ（又はメインメモリＡＲＢ）３に接続されて、ＣＰＵ１とメインメモリコントローラ４間のＩ／Ｆを処理する。
メインメモリアービタ３は、ＣＰＵ１、通信処理装置８、メインメモリコントローラ４、符号化装置５、復号装置６などとメインメモリ１０とのアクセスを制御する。
【００１３】
メインメモリコントローラ４は、メインメモリ１０を制御する。
符号化装置５は、メインメモリ１０から多値（ＣＭＹＫ）バンドデータを読み込み、符号を生成し、ＣＭＹＫページ符号格納領域１０４へ転送する。
復号装置６は、メインメモリ１０の符号化されたＣＭＹＫページ符号を読み込み復号し、エンジンコントローラ７へ転送する。
エンジンコントローラ７は、プリンタエンジン１２を制御する。通信処理装置（又は通信コントローラ）８は、ネットワークに接続されており、ネットワークから各種データやコマンドなどを受け取り、メインメモリアービタ３を介して各種のコントローラに接続されている。
【００１４】
メインメモリ１０は、プログラム領域１０１、ＰＤＬ格納メモリ領域１０２、ＣＭＹＫバンドメモリ格納領域１０３、ＣＭＹＫページ符号格納領域１０４、その他の領域１０５を備え、画像データや、その符号データや、ＣＰＵのプログラムなどを格納している。
ＰＣ１１は、ＰＤＬ（ページ記述言語）を作成し、ネットワークを介してプリンタへ転送する。
【００１５】
図２は、図１の符号化装置５の符号化処理のための機能ブロック図である。
メインメモリ１０は、上述のようにデータここでは画像データを格納している。データ読み込み手段、ここでは画像読み込み部２２は、メインメモリ１０から所定量単位、ここではライン単位で画像データを読み取り、データ周期選択手段、ここではＭＴＦデータ幅選択部２３へ画像データを転送する。ＭＴＦデータ幅選択部２３（図６はこのＭＴＦデータ幅選択部２３のブロック図である）は、画像読み込み部２２から画像データを受け取り、複数のＭＴＦデータ幅での一致数を求めながら、ラインメモリ制御部２４へ画像データを転送する。
【００１６】
ラインメモリ制御部２４は、ＭＴＦデータ幅選択部２３から画像データを受け取り、ラインメモリ記憶手段を構成するラインメモリ２５、２６をライン単位ごとに交互に切り替えながら、画像データを書き込む。ラインメモリ２５、２６はラインメモリ制御部２４からライン単位の画像データを受け取り格納する。
【００１７】
ＭＴＦデータ幅値を格納するＭＴＦデータ幅値レジスタ２７は、ＭＴＦデータ幅選択部２３で求めたＭＴＦデータ幅を格納する。データ切り出し手段、ここではＭＴＦデータ幅切り出し部２８（図７にこのＭＴＦデータ幅切り出し部２８のブロック図を示す）は、ラインメモリ制御部２４から画像データを受け取る。ＭＴＦデータ幅切り出し部２８は、受け取った画像データをＭＴＦデータ幅値レジスタ２７のＭＴＦデータ幅値の幅で切り出し、中間データ変換手段、ここではＭＴＦ処理部２９へ転送する。
【００１８】
ＭＴＦ処理部２９は、ＭＴＦデータ幅切り出し部２８で切り出された画像データを受け取り、ＭＴＦアルゴリズムに基づき、次のハフマン符号化処理部３０でハフマン符号を生成するために、図３の符号テーブルを特定する一致ＦＬＡＧと、インデックス値と、ＥＳＣＤＡＴＡ（ここでは、これらを総称して中間データという）を生成する。即ち、具体的には、ＭＴＦ処理部２９は、ＭＴＦデータ幅切り出し部２８で切り出された画像データと内蔵する辞書とを比較して、一致するか否か判断する。ここで、一致する場合は、一致したインデックス値を、一致しない場合は、切り出されたデータをＥＳＣＤＡＴＡ（Escapeデータ）値として、それぞれを中間データとして符号化処理手段、ここではハフマン符号化処理部３０へ転送する（図１８はＭＴＦ処理部２９のブロック図である）。
【００１９】
ハフマン符号化処理部３０は、ＭＴＦ処理部２９から受け取った一致ＦＬＡＧ（＝１）と、インデックス値と、ＥＳＣＤＡＴＡ値を、図３に示すフォーマットで符号化して符号書き込み部３１へ転送する。なお、図２０は、ハフマン符号化処理部３０におけるハフマン符号化処理手順のフロー図である。
符号書き込み部３１は、ハフマン符号化処理部３０で生成された符号を、符号データを格納するデータ記憶手段、ここではメモリ３２へ書き込み処理する（図２６は符号化する画像データを示す図である）。
このようにして、ライン単位の画像データを符号化する（図２７は符号化した符号の例を示す図である）。符号化した画像データは、図２７に示すように、先頭にラインヘッダ符号があり、符号の終端に符号終端があるライン単位で符号化される。
なお、以上で説明した、画像読み込み部２２、ＭＴＦデータ幅選択部２３、ラインメモリ制御部２４、ＭＴＦデータ幅切り出し部２８、ＭＴＦ処理部２９、ハフマン符号化処理部３０、符号書き込み部３１は、いずれもコンピュータにプログラムを読み取らせることで得られる機能実現手段である。
【００２０】
図３は、符号化した符号のフォーマット（符号フォーマット）を示す図であり、符号名と符号テーブルと符号サイズテーブルとからなる。
ここに記載された符号は、可変長のハフマン符号であり、登場頻度の高いハフマン木の順に短いコードを割り当てている。
【００２１】
ここで、符号名ラインヘッダは、図２７のラインの符号の先頭にあり、ラインの符号の始まりとラインの符号のＭＴＦデータ幅値（８ビット、１６ビット、３２ビット）の値を示す。符号終端は図２７のように符号の終端を示す。
符号名ＥＳＣは、ＭＴＦ符号化時に辞書にないものであって、ＥＳＣヘッダと生データからなり、ＭＴＦデータ幅値（８ビット、１６ビット、３２ビット）により、生データのデータ幅が異なる。
インデックス（ＩＮＤＥＸ）は、ＭＴＦ符号化時に入力されたデータが辞書にあったために、一致した辞書のアドレス（ＩＮＤＥＸ００など）を示す。
【００２２】
図４は、ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＭＴＦ符号化処理の辞書探索処理を示す図である。
即ち、図２のＭＴＦデータ幅切り出し部２８は、１ワード（６４ビット）のデータから、ここでは、１６ビット単位（ＭＴＦデータ幅値）でデータを順次切り出す。これに対し、図２のＭＴＦ処理部２９は、ここではＭａｘのＭＴＦデータ幅値である３２ビットで構成されているために、切り出したデータを３２ビットにするために１６ビットに“０”を付加している。
図４の例では、入力されたデータ0x5555の１６ビットに0x0000の１６ビットを付加して３２ビット（0x5555―0000）にして、辞書を探索する（他のデータも同様に0x0000を付加する）。この場合、入力されたデータ0x5555―0000は、図４に示すように、インデックス値＝１３の辞書データと一致するために、ＭＴＦ処理部２９は、一致ＦＬＡＧ（＝１）、インデックス値＝１３を出力する。なお、入力されたデータが辞書データと一致しないときは、既に述べたようにＥＳＣＤＡＴＡを出力する。このように、中間データは入力されたデータと辞書データとの一致・不一致を反映したものである。
【００２３】
図５は、ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＭＴＦ符号化処理の辞書更新処理を示す図である。
図４において、入力されたデータ0x5555―0000はインデックス値（＝１３）と一致するため、辞書更新処理は、インデックス値＝１３の辞書データ0x5555―0000を削除して、図５に示すように入力されたデータ0x5555―0000を先頭のインデックス値＝０の辞書に挿入する。同時に、辞書データを一致したインデックス値＝１３まで図中の矢印Ｙで示すようにシフトすることで行う。
【００２４】
図６は、図２のＭＴＦデータ幅選択部２３のブロック図である。
８ビット単位一致合計演算部２３（１）は、１ワード（６４ビット）のデータから所定の周期、ここでは８ビット単位で分割し、分割した隣接データ間でデータが一致する値（数）の合計を求める。
１６ビット単位一致合計演算部２３（２）は、１ワード（６４ビット）のデータから所定の周期、ここでは１６ビットで分割し、分割した隣接データ間でデータが一致する値（数）の合計を求める。
３２ビット単位一致合計演算部２３（３）は、１ワード（６４ビット）のデータから所定の周期、ここでは３２ビット単位で分割し、分割した隣接データ間でデータが一致する値（数）の合計を求める。
なお、８ビット単位一致合計演算部２３（１）のブロック図は図８に、１６ビット単位一致合計演算部２３（２）のブロック図は図９に、３２ビット単位一致合計演算部２３（３）のブロック図は図１０に、それぞれ示す。
【００２５】
量子化手段である量子化装置２３（４）は、８ビット単位一致合計演算部２３（１）で求めた８ビット単位の隣接データ間でのデータの一致数を量子化値で量子化（ここで、量子化とは、一致数カウントの値の下位ビットをマスクすることを云う。以下同じ）する。同様に、量子化装置２３（５）は、１６ビット単位一致合計演算部２３（２）で求めた１６ビット単位の隣接データ間でのデータの一致数を量子化値で量子化する。量子化装置２３（６）は、３２ビット単位一致合計演算部２３（３）で求めた３２ビット単位の隣接データ間でのデータの一致数を量子化値で量子化する。図１１は、以上の各量子化装置２３（４）、２３（５）、２３（６）のブロック図である。
【００２６】
一致ＭａｘＭＴＦデータ幅選択部２３（７）は、各ビット単位合計値の量子化装置２３（４）、２３（５）、２３（６）により求めた隣接データ間での一致するデータの合計値がＭａｘとなるＭＴＦデータ幅を選択する。
レジスタ２３（８）は、読み込まれた画像データを一時的に格納し、図２のラインメモリ制御部２４へ転送する。
【００２７】
図７は、図２のＭＴＦデータ幅切り出し部２８のブロック図である。
８ビット単位切り出し処理部２８（１）は、１ワード（６４ビット）のデータから８ビット単位でデータを分割して切り出す。図１５は、８ビット単位切り出し処理部２８（１）のブロック図である。
１６ビット単位切り出し処理部２８（２）は、１ワード（６４ビット）のデータから１６ビット単位でデータを分割して切り出す。図１６は、１６ビット単位切り出し処理部２８（２）のブロック図である。
３２ビット単位切り出し処理部２８（３）は、１ワード（６４ビット）のデータから３２ビット単位でデータを分割して切り出す。図１７は、３２ビット単位切り出し処理部２８（３）のブロック図である。
【００２８】
ＭＵＸ（Multiplexer）２８（４）は、各ビット単位切り出し処理部２８（１）〜２８（３）により切り出されたデータを指定されたＭＴＦデータ幅値で選択する。
【００２９】
図８は、８ビット単位一致合計演算部２３（１）のブロック図である。
２３（１１）はレジスタであり、受け取った６４ビットの画像データを８ビット単位で記憶する。
２３（１２）は、１つ前の画像データのワードの終端の８ビットのデータを格納するレジスタである。
２３（１３）は、ＥＸＮＯＲ（一致検出）論理であり、隣接する８ビットのデータ間におけるデータ毎の一致を求める。
２３（１４）は、一致カウント手段である８ビット一致カウンタであり、８ビット単位で一致検出されたデータを受け取り、一致したビットの数（ここでは、８ビット単位で、隣同士の８ビットデータのうち一致したビットの数；以下同じ）を求める。
２３（１５）は、加算器であり、各８ビット一致カウンタで求めた、一致したビットの数を加算し、ライン単位で一致した数を合計する。
２３（１６）はレジスタであり、加算器２３（１５）で合計した値を１ライン分加算して記憶する。
【００３０】
図９は、１６ビット単位一致合計演算部２３（２）のブロック図である。
２３（２１）はレジスタであり、受け取った画像データを１６ビット単位で記憶する。
２３（２２）は１つ前の画像データのワードの終端の１６ビットのデータを格納するレジスタである。
２３（２３）はＥＸＮＯＲ（一致検出）論理であり、隣接する１６ビットのデータの一致する数を求める。
２３（２４）は１６ビット一致カウンタであり、１６ビット単位で一致検出されたデータを受け取り一致したビットの数を求める。
２３（２５）は加算器であり、各１６ビット一致カウンタで求めた、一致したビットの数を加算しライン単位で一致した数を合計する。
２３（２６）はレジスタであり、加算器２３（２５）で合計した値を１ライン分加算して記憶する。
【００３１】
図１０は、３２ビット単位一致合計演算部２３（３）のブロック図である。
２３（３１）はレジスタであり、受け取った画像データを３２ビット単位で記憶する。
２３（３２）は１つ前の画像データのワードの終端の３２ビットのデータを格納するレジスタである。
２３（３３）はＥＸＮＯＲ（一致検出）論理であり、隣接する３２ビットのデータの一致を求める。
２３（３４）は３２ビット一致カウンタであり、３２ビット単位で一致検出されたデータを受け取り一致したビットの数を求める。
２３（３５）は加算器であり、各３２ビット一致カウンタで求めた、一致したビット数を加算しライン単位で一致した数を合計する。
２３（３６）はレジスタであり、加算器２３（３５）で合計した値を１ライン分加算して記憶する。
【００３２】
図１５は、図７の８ビット単位切り出し処理部２８（１）のブロック図である。
２８（１１）はレジスタであり、受け取った画像データを８ビット単位で記憶する。
２８（１２）はＭＵＸであり、レジスタ２８（１１）の８ビット単位のデータを順次選択する。また、出力時に“０”値を２４ビット付加して３２ビットとして出力する。
２８（１３）はカウンタであり、ＭＵＸ２８（１２）の選択する値を順次作成する。
【００３３】
図１６は、図７の１６ビット単位切り出し処理部２８（２）のブロック図である。
２８（２１）はレジスタであり、受け取った画像データを１６ビット単位で記憶する。
２８（２２）はＭＵＸであり、レジスタ２８（２１）の１６ビット単位のデータを順次選択する。また、出力時に“０”値を１６ビット付加して３２ビットとして出力する。
２８（２３）はカウンタであり、ＭＵＸ２８（２２）の選択する値を順次作成する。
【００３４】
図１７は、図７の３２ビット単位切り出し処理部２８（３）のブロック図である。
２８（３１）はレジスタであり、受け取った画像データを３２ビット単位で記憶する。
２８（３２）はＭＵＸであり、レジスタ２８（３１）の３２ビット単位のデータを順次選択する。
２８（３３）はカウンタであり、ＭＵＸ２８（３２）の選択する値を順次作成する。
【００３５】
図１８は、図２のＭＴＦ処理部２９のブロック図である。
図中データ０〜１５はレジスタに格納された辞書の内容であり、データ０〜１５に付された番号１〜６がインデックス値に対応する。また、図５で示したように更新時にシフトできるように隣接するレジスタの入出力が接続されている。２９（７）〜（１２）は比較器であり、インデックス値１〜６の辞書の内容と切り出されたデータを比較して、インデックス生成装置２９（１３）へ転送する。
インデックス生成装置２９（１３）は、比較器２９（７）〜（１２）の比較結果を受け取り、一致した番号（インデックス値）のうち一番若い番号を選択し、インデックス値として出力する。
ＯＲ回路２９（１４）は、比較器２９（７）〜（１２）からの比較結果を受け取り、一致ＦＬＡＧ（＝１）を生成する。
辞書ライト制御装置２９（１５）は、インデックス値を受け取り、インデックス番号までのデータ０〜１５のライトを制御する。
【００３６】
図１１は、図６の量子化装置２３（４）のブロック図である。
２３（４１）は、８ビット量子化装置であり、１６ビットの一致合計値の下位８ビットをマスク、即ち“０”にする。
２３（４２）は、７ビット量子化装置であり、１６ビットの一致合計値の下位７ビットを“０”に量子化する。
２３（４３）は、６ビット量子化装置であり、１６ビットの一致合計値の下位６ビットを“０”に量子化する。
【００３７】
２３（４４）はＭＵＸであり、量子化値を受けとり、各量子化装置２３（４１）、２３（４２）、２３（４３）の量子化後の一致合計値又は量子化されていない一致合計を選択する。例えば、量子化値＝０であれば、８ビット量子化装置２３（４１）の値を選択する。量子化値＝１であれば、７ビット量子化装置２３（４２）の値を選択する。量子化値＝２であれば、６ビット量子化装置２３（４３）の値を選択する。量子化値＝３であれば、量子化されていない一致合計を選択する。
【００３８】
図１２は、８ビット量子化装置２３（４１）の量子化の処理状態を示す図である。このように、１６ビットの一致合計値の下位８ビットを“０”に量子化する。
図１３は、７ビット量子化装置２３（４２）の量子化の処理状態を示す図である。このように、１６ビットの一致合計値の下位７ビットを“０”に量子化する。
図１４は、６ビット量子化装置２３（４３）の量子化の処理状態を示す図である。このように、１６ビットの一致合計値の下位６ビットを“０”に量子化する。
【００３９】
図１９は、図６の一致ＭａｘＭＴＦデータ幅選択部２３（７）の処理手順を示すフロー図である。
一致ＭａｘＭＴＦデータ幅選択部２３（７）は、８ビット一致合計値と１６ビット一致合計値を比較（Ｓ１０１）する。ここで、両者が等しいか若しくは、１６ビット一致合計値が大きい場合は（Ｓ１０１、ＹＥＳ）、ステップＳ１０５の処理へ進む。逆に、８ビット一致合計値が１６ビット一致合計値よりも大きい場合は（Ｓ１０１、ＮＯ）、ステップＳ１０２の処理へ進む。
ステップＳ１０２で、８ビット一致合計値と３２ビット一致合計値を比較し（Ｓ１０２）、両者が等しいか若しくは、３２ビット一致合計値が８ビット一致合計値より大きい場合は（Ｓ１０２、ＹＥＳ）、ＭＴＦデータ幅を３２ビットにする（Ｓ１０４）。８ビット一致合計値が３２ビット一致合計値より大きい場合は（Ｓ１０２、ＮＯ）、ＭＴＦデータ幅を８ビットにする（Ｓ１０３）。
【００４０】
ステップＳ１０５では、１６ビット一致合計値と３２ビット一致合計値を比較する（Ｓ１０５）。ここで、両者が等しいか若しくは、３２ビット一致合計値が１６ビット一致合計値よりも大きい場合は（Ｓ１０５、ＹＥＳ）、ＭＴＦデータ幅を３２ビットにする（Ｓ１０７）。１６ビット一致合計値が３２ビット一致合計値より大きい場合は（Ｓ１０５、ＮＯ）、ＭＴＦデータ幅を１６ビットにする（Ｓ１０６）。このように一致合計値が等しい場合は、より大きな周期を優先する。
【００４１】
図２０は、図２のハフマン符号化処理部３０で行うハフマン符号化処理の手順を示すフロー図である。
即ち、ステップＳ２０１でラインの先頭であるか否か判断し、ライン先頭であれば（Ｓ２０１、ＹＥＳ）、ラインヘッダ符号化処理を行い（Ｓ２０２）、図３のラインヘッダを符号として出力する。
【００４２】
次に、図２のＭＴＦ処理部２９のＭＴＦ処理で入力されたデータが辞書に一致したか否か判断する（Ｓ２０３）。ここで、両者が一致した場合は（Ｓ２０３、ＹＥＳ；ＨＩＴＦＬＧ＝１）、インデックス符号化処理を行う（Ｓ２０４）。両者が一致していない場合は（Ｓ２０３、ＮＯ）、ＥＳＣ符号化処理を行う（Ｓ２０５）。次に、ラインの終端であるか否か判断し（Ｓ２０６）、ラインの終端であれば（Ｓ２０６、ＹＥＳ）、終端符号化処理を行い、図３の符号終端を符号として出力する（Ｓ２０７）。
【００４３】
図２１は、図２０のステップＳ２０４のインデックス符号化処理の手順を示すフロー図である。
即ち、まず、図３の符号フォーマットのインデックス値に対応する符号とサイズを求める。つまり、インデックス符号テーブル（DICTNUM）を符号データとし、符号サイズ＝インデックスサイズテーブル（DICTNUM）として（Ｓ３０１）、続いて符号出力処理を行う（Ｓ３０２）。
【００４４】
図２２は、図２０のステップＳ２０５のＥＳＣ符号化処理の手順を示すフロー図である。
まず、図３の符号フォーマットのＥＳＣヘッダに対応する符号とサイズを求める、例えば、ＥＳＣヘッダ“０”を符号データとし、符号サイズを３ビットとして（Ｓ４０１）、符号出力処理を行う（Ｓ４０２）。次に、ＭＴＦデータ幅の値が８ビットであれば（Ｓ４０３、ＹＥＳ）、符号データ＝ESCDATA［３１：２４］、符号サイズ＝８ビットとする（Ｓ４０４）。つまりＥＳＣＤＡＴＡの先頭の８ビットを符号化する。
【００４５】
ＭＴＦデータ幅の値が１６ビットであれば（Ｓ４０３、ＮＯ、Ｓ４０５、ＹＥＳ）、符号データ＝ESCDATA［３１：１６］、符号サイズ＝１６ビットとする。つまりＥＳＣＤＡＴＡの先頭の１６ビットを符号化する。
ＭＴＦデータ幅の値が３２ビットであれば、（Ｓ４０３、ＮＯ、Ｓ４０５、ＮＯ）、
符号データ＝ESCDATA［３１：０］、符号サイズ＝３２ビットとする。つまりＥＳＣＤＡＴＡの先頭の３２ビットを符号化する。最後に符号出力処理を行い（Ｓ４０８）、このＥＳＣ符号化処理を終了する。
【００４６】
図２３は、図２０のステップＳ２０２のラインヘッダ符号化処理の手順を示すフロー図である。
まず、ＭＴＦデータ幅値が８ビットであるか否か判断する（Ｓ５０１）、ＭＴＦデータ幅値が８ビットであれば（Ｓ５０１、ＹＥＳ）、符号データを７′ｂ′１１１１０００とし、符号サイズを７ビットとして（Ｓ５０２）、符号出力処理を行う（Ｓ５０６）。ＭＴＦデータ幅値が１６ビットであれば（Ｓ５０１、ＮＯ、Ｓ５０３、ＹＥＳ）、符号データを７′ｂ′１１１１００１とし、符号サイズを７ビットとして（Ｓ５０４）、符号出力処理を行う（Ｓ５０６）。さらに、ＭＴＦデータ幅値が３２ビットであれば（Ｓ５０１、ＮＯ、Ｓ５０３、ＮＯ）、符号データを７′ｂ′１１１１０１０、符号サイズを７ビットとして（Ｓ５０５）、符号出力処理を行う（Ｓ５０６）。
【００４７】
図２４は、図２０のステップＳ２０７の終端符号化処理の手順を示すフロー図である。
このように、ＭＴＦデータ幅の値で図３の符号フォーマットの符号終端に対応する符号とサイズ（ここでは、符号データ＝５′ｂ′１１１１１、符号サイズ＝５ビット）を求め（Ｓ６０１）、符号出力処理を行う（Ｓ６０２）。
【００４８】
次に、可変長符号を３２ビット符号に詰めて出力する手順について説明する。
図２５Ａは、可変長符号の３２ビット符号への符号出力処理の手順を示すフロー図である。また図２５Ｂ〜２５Ｅは、ワード（６４ビット）幅内における、図２５Ａの符号出力処理におけるステップＳ７０２の符号のマージン処理を示す図である。
まず、図２５Ｂにおいて、６４ビットの符号の位置を示すポインタを求め、図２５Ｂの符号の左端を求める。例えば、符号ポインタは、最初は左端の６３を示しており、この符号ポインタから符号長（符号サイズ）の１１ビットを引き、符号ポインタを５２にする。（Ｓ７０１）。次に、図２５Ｃに示すように、追加する符号を更新後のポインタ値分シフトし、前の符号を加える。つまり、図２５Ｃに示すように、前の符号があるために、符号ポインタが５２でそれから符号長の１７ビットを引き更新後の符号ポインタを３５にする（Ｓ７０２）。
次に、図２５Ｄ、図２５Ｅの処理を行う。即ち、図２５Ｄでは、追加した符号（３５ビット）により、更新後の符号ポインタは２４になったので、符号ポインタが３２以下であるから（Ｓ７０３、ＹＥＳ）、Ｓ７０４以下の処理を行う。即ち上位の３２ビットを切り出し（Ｓ７０４）、符号として出力し（Ｓ７０５）、図２５Ｅに示すように、符号ポインタを３２加算し（Ｓ７０６）、図２５Ｅのように３２ビットシフトし（Ｓ７０７）、３２ビット単位の符号を１カウントアップする（Ｓ７０８）。このように符号サイズと符号から符号のワード幅（３２ビット）に可変長符号が一杯になると、可変長の符号を固定長の３２ビットに詰めて符号化して出力する。
【００４９】
なお、以上の実施形態において、辞書はＭＴＦアルゴリズムに基づく、つまりＭＴＦ方式の辞書であるが、簡単なＦＩＦＯ（First In First Out）アルゴリズムに基づくＦＩＦＯ方式の辞書であってよい。次にその点について説明する。
図２９は、図１の符号化装置５の符号化処理のためのＦＩＦＯアルゴリズムに基づく機能ブロック図である。図２９においては、図２の機能ブロック図におけるＭＦＴ処理部２９がＦＩＦＯ処理部２９Ａに置き換わっており、同じ部分には同じ符号を付している。
即ち、メインメモリ１０は、データここでは画像データを格納している。データ読み込み手段、ここでは画像読み込み部２２は、メインメモリ１０から所定量単位、ここではライン単位で画像データを読み取り、データ周期選択手段、ここではＭＴＦデータ幅選択部２３へ画像データを転送する。ＭＴＦデータ幅選択部２３（ＭＴＦデータ幅選択部２３は既に図６に示したとおりである）は、画像読み込み部２２から画像データを受け取り、複数のＭＴＦデータ幅での一致数を求めながら、ラインメモリ制御部２４へ画像データを転送する。
【００５０】
ラインメモリ制御部２４は、ＭＴＦデータ幅選択部２３から画像データを受け取り、ラインメモリ記憶手段を構成するラインメモリ２５、２６をライン単位ごとに交互に切り替えながら、画像データを書き込む。ラインメモリ２５、２６はラインメモリ制御部２４からライン単位の画像データを受け取り格納する。
ＭＴＦデータ幅値を格納するＭＴＦデータ幅値レジスタ２７は、ＭＴＦデータ幅選択部２３で求めたＭＴＦデータ幅を格納する。データ切り出し手段、ここではＭＴＦデータ幅切り出し部２８（ＭＴＦデータ幅切り出し部２８は既に図７に示したとおりである）は、ラインメモリ制御部２４から画像データを受け取る。ＭＴＦデータ幅切り出し部２８は、受け取った画像データをＭＴＦデータ幅値レジスタ２７のＭＴＦデータ幅値の幅で切り出し、中間データ変換手段、ここではＦＩＦＯ処理部２９Ａへ転送する。
【００５１】
ＦＩＦＯ処理部２９Ａは、ＭＴＦデータ幅切り出し部２８で切り出された画像データを受け取り、ＦＩＦＯアルゴリズムに基づき、次のハフマン符号化処理部３０で符号化データ（ハフマン符号）を生成するために、図３の符号テーブルを特定する一致ＦＬＡＧ（＝１）と、インデックス値と、ＥＳＣＤＡＴＡ、即ち中間データを生成する。
具体的には、ＦＩＦＯ処理部２９Ａは、ＭＴＦデータ幅切り出し部２８で切り出された画像データと内蔵する辞書とを比較して、一致するか否か判断する。ここで、一致する場合は、一致したインデックス値を、一致しない場合は、切り出されたデータをＥＳＣＤＡＴＡ値として符号化処理手段、ここではハフマン符号化処理部３０へ転送する。
【００５２】
ハフマン符号化処理部３０は、ＦＩＦＯ処理部２９Ａから受け取った一致ＦＬＡＧ（＝１）とインデックス値とＥＳＣＤＡＴＡ値を、図３に示すフォーマットで符号化して符号書き込み部３１へ転送する。なお、ハフマン符号化処理部３０におけるハフマン符号化処理手順は、既に図２０に示したとおりである。
【００５３】
符号書き込み部３１は、ハフマン符号化処理部３０で生成された符号を、符号データを格納するデータ記憶手段、ここではメモリ３２へ書き込み処理する（符号化する画像データは図２６に示したとおりである）。
このようにして、ライン単位の画像データを、図２７に例示したように符号化する。符号化した画像データは、図２７に示したように、先頭にラインヘッダ符号があり、符号の終端に符号終端があるライン単位で符号化される。
なお、以上で説明した、画像読み込み部２２、ＭＴＦデータ幅選択部２３、ラインメモリ制御部２４、ＭＴＦデータ幅切り出し部２８、ＦＩＦＯ処理部２９Ａ、ハフマン符号化処理部３０、符号書き込み部３１も、コンピュータにプログラムを読み取らせることで得られる機能実現手段である。
【００５４】
図３０は、図２９のＦＩＦＯ処理部２９Ａのブロック図である。
図中データ０〜1５はレジスタに格納された辞書の内容であり、データ０〜１５に付された番号１〜６がインデックス値に対応する。また、後述する図３１で示すように、更新時にシフトできるように隣接するレジスタの入出力が接続されている。２９（７）〜（１２）は比較器であり、インデックス値１〜６の辞書の内容と切り出されたデータを比較して、インデックス生成装置２９（１３）へ転送する。
インデックス生成装置２９（１３）は、比較器２９（７）〜（１２）の比較器からの比較結果を受け取り、一致した番号（インデックス値）のうち一番若い番号を選択し、インデックス値として出力する。
ＯＲ回路２９（１４）は、比較器２９（７）〜（１２）からの比較結果を受け取り、一致ＦＬＡＧ（＝１）を生成する。
【００５５】
図３１は、ＭＴＦデータ幅（＝１６ビット時）における、符号化時のＦＩＦＯ符号化処理の辞書更新処理を示す図である。
入力されたデータで辞書を探索する場合は、図４に示したとおりであり、入力データ0x5555―0000を辞書データと対比すると、インデックス値（＝１３）の辞書データと一致する。この場合の辞書更新処理は、入力されたデータ0x5555―0000を先頭のインデックス値＝０の辞書に挿入する。同時に、図３１に示すように、辞書データを全て図中の矢印Ｙで示すようにシフトする。但し、この場合は、ＭＴＦアルゴリズムによるものと相違して、インデックス値（＝１３）の辞書データ0x5555―0000は削除せずにそのまま残す（図３１はシフト後のデータであり、シフト前の図４のインデックス値＝１５のデータは破棄されている）。
【００５６】
図３２は、量子化値を変えたことによるＭａｘ周期（入力データと辞書のワードとの一致数が最も大きな周期をいう）の差の例を示す図である。
図３２は、量子化しない場合と、量子化を行う場合（即ち、下位８ビット、７ビット、６ビットをそれぞれ“０”にマスクした場合における、８周期、１６周期、３２周期における入力データと辞書のワードとの一致数を表にして表したものである。
図３２に示すように量子化なしの各周期での一致数を下位８ビット／７ビット／６ビットを“０”にマスクすると、（i）下位８ビット量子化の場合は、全ての周期が同じ値になっている。このために、ここでいうＭａｘ周期は３２周期となり、３２ビット／クロックで圧縮するのが好適であることを表している。つまり、３２ビット／クロックで圧縮できるが、多少圧縮率は低下する。（ii）下位７ビット量子化の場合は、８周期と１６周期が同じ値になる。そのため、Ｍａｘ周期は１６周期となり、１６ビット／クロックで圧縮するのが好適であることを示している。ただ、微少の圧縮率は低下する。（iii）圧縮率は低下しない。下位６ビット量子化の場合は、８周期での一致数は７０４、１６周期では６４０、３２周期では５１２であるから、その傾向は量子化なしの場合と同様であり、Ｍａｘ周期は８周期である。したがって、８ビット／クロックで圧縮するのが好適であることを示している。この場合は、圧縮率は低下しないが、圧縮速度は３２周期、１６周期の場合よりも低下する。
【００５７】
このように量子化値を変更することで、圧縮率とスピード（圧縮速度）のバランスを調節する。その場合、メモリを多く持ったプリンタでは、量子化値を大きくすることで、圧縮率は多少低下する場合があるが、圧縮スピードを向上させることができる。メモリが少ないプリンタでは、量子化値を小さくすること（若しくは量子化しないこと）で、圧縮率を落すことなく、圧縮スピードは従来のままにする、などの選択が可能である。
【００５８】
以上、本実施形態によれば、複数の周期にて、一致数をカウントするが、その複数の一致数カウントの値を量子化（一致数カウントの値の下位ビットをマスクする）することにより、少ない値の一致数であれば、同じ数値にし、一致数が同じ場合は大きな周期の値を選択する。これにより、各周期の一致数のカウント値の差が小さい場合は、その差を考慮しないようにしたことで、出来るだけ大きな周期で符号化して符号化速度を高速化することができる。
【符号の説明】
【００５９】
１・・・ＣＰＵ、２・・・ＣＰＵ  Ｉ／Ｆ、３・・・メインメモリアービタ、４・・・メインメモリコントローラ、５・・・符号化装置、６・・・複号装置、７・・・エンジンコントローラ、８・・・通信処理装置、９・・・画像データ処理装置のプリンタの電装・制御装置、１０・・・メインメモリ、１１・・・ＰＣ、１２・・・プリンタエンジン、２２・・・画像読み込み部、２３・・・ＭＴＦデータ幅選択部、２４・・・ラインメモリ制御部、２５、２６・・・ラインメモリ、２７・・・ＭＴＦデータ幅値レジスタ、２８・・・ＭＴＦデータ幅切り出し部、２９・・・ＭＴＦ処理部、３０・・・ハフマン符号化処理部、３１・・・符号書き込み部、３２・・・メモリ。
【先行技術文献】
【特許文献】
【００６０】
【特許文献１】特許第４０００２６６号公報
【図１】
2014103466.tif 000003
【図２】
2014103466.tif 000004
【図３】
2014103466.tif 000005
【図４】
2014103466.tif 000006
【図５】
2014103466.tif 000007
【図６】
2014103466.tif 000008
【図７】
2014103466.tif 000009
【図８】
2014103466.tif 000010
【図９】
2014103466.tif 000011
【図１０】
2014103466.tif 000012
【図１１】
2014103466.tif 000013
【図１２】
2014103466.tif 000014
【図１３】
2014103466.tif 000015
【図１４】
2014103466.tif 000016
【図１５】
2014103466.tif 000017
【図１６】
2014103466.tif 000018
【図１７】
2014103466.tif 000019
【図１８】
2014103466.tif 000020
【図１９】
2014103466.tif 000021
【図２０】
2014103466.tif 000022
【図２１】
2014103466.tif 000023
【図２２】
2014103466.tif 000024
【図２３】
2014103466.tif 000025
【図２４】
2014103466.tif 000026
【図２５Ａ】
2014103466.tif 000027
【図２５ＢＣＤＥ】
2014103466.tif 000028
【図２６】
2014103466.tif 000029
【図２７】
2014103466.tif 000030
【図２８】
2014103466.tif 000031
【図２９】
2014103466.tif 000032
【図３０】
2014103466.tif 000033
【図３１】
2014103466.tif 000034
【図３２】
2014103466.tif 000035