(57)【要約】【課題】  圧縮処理の結果膨張した符号データが発生した場合、プリンタエンジンによる印字スピード以内にデータ転送が出来ずに、印刷画像が劣化する。【解決手段】  所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込部と、読み込まれた所定単位画像データを画素単位で符号化した画素単位符号データを生成する画素単位符号化部と、読み込まれた所定単位画像データを所定単位で符号化した所定単位符号データを生成する所定単位符号化部と、画素単位符号データのデータ量である符号長を、所定単位画像データのデータ量と比較して判断する画素単位符号長判断部と、画素単位符号長判断部の判断結果に基づき、符号長の方が大きい場合に、所定単位符号データを出力し、小さい場合に、画素単位符号データを出力する画素単位符号を出力する出力符号選択部とを有する符号化装置である。【選択図】図７
2019134286.tif 000002
【特許請求の範囲】
【請求項１】
所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込部と、
読み込まれた前記所定単位画像データを画素単位で符号化した画素単位符号データを生成する画素単位符号化部と、
読み込まれた前記所定単位画像データを前記所定単位で符号化した所定単位符号データを生成する所定単位符号化部と、
前記画素単位符号データのデータ量である符号長を、前記所定単位画像データのデータ量と比較して判断する画素単位符号長判断部と、
前記画素単位符号長判断部の判断結果に基づき、前記符号長の方が大きい場合に、前記所定単位符号データを出力し、小さい場合に、前記画素単位符号データを出力する画素単位符号を出力する出力符号選択部とを有する符号化装置。
【請求項２】
前記画素単位符号化部と前記所定単位符号化部とは、符号化処理を並列に行う請求項１の符号化装置。
【請求項３】
所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込部と、
読み込まれた前記所定単位画像データを記憶する所定単位画像データ記憶部と、
読み込まれた前記所定単位画像データを画素単位で符号化した画素単位符号データを生成する画素単位符号化部と、
前記所定単位画像データ記憶部に記憶された前記所定単位画像データを前記所定単位で符号化した所定単位符号データを生成する所定単位符号化部と、
前記画素単位符号データのデータ量である符号長を、前記所定単位画像データのデータ量と比較して判断する画素単位符号長判断部と、
前記画素単位符号長判断部の判断結果に基づき、前記符号長の方が大きい場合に、前記所定単位符号化部が符号化した前記所定単位符号データを出力し、小さい場合に、前記画素単位符号データを出力する出力符号選択部とを有する符号化装置。
【請求項４】
前記画素単位符号化部と前記所定単位符号化部とは、符号化処理をシリアルに行う請求項３の符号化装置。
【請求項５】
前記所定単位符号化部は、前記画素単位符号長判断部の前記判断結果に基づき、前記符号長の方が大きい場合に、前記所定単位での前記符号化を行う請求項４の符号化装置。
【請求項６】
前記所定の複数画素は、１ライン分の画素数である請求項１ないし５いずれか一項に記載の符号化装置。
【請求項７】
前記ライン単位符号化部の最悪の圧縮率の膨張率が、前記画素単位符号化部の最悪の圧縮率の膨張率よりも少ない請求項１ないし６いずれかの符号化装置。
【請求項８】
所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込工程と、
読み込まれた前記所定単位画像データを、画素単位で符号化した画素単位符号データを生成する画素単位符号化工程と、
読み込まれた前記所定単位画像データを、前記所定単位で符号化した所定単位符号データを生成する所定単位符号化工程と、
前記画素単位符号データのデータ量である符号長を、前記所定単位画像データのデータ量と比較して判断する画素単位符号長判断工程と、
前記画素単位符号長判断工程の判断結果に基づき、前記符号長の方が大きい場合に、所定単位符号データを出力し、小さい場合に、前記画素単位符号データを出力する画素単位符号を出力する出力符号選択工程とからなる符号化方法。
【請求項９】
所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込工程と、
読み込まれた前記所定単位画像データを記憶する所定単位画像データ記憶工程と、
読み込まれた前記所定単位画像データを画素単位で符号化した画素単位符号データを生成する画素単位符号化工程と、
前記画素単位符号データのデータ量である符号長を、前記所定単位画像データのデータ量と比較して判断する画素単位符号長判断工程と、
前記画素単位符号長判断工程の判断結果に基づき、前記所定単位画像データのデータ量が前記符号長を超えた場合には、
前記所定単位画像データ記憶工程で記憶された前記所定単位画像データを所定単位で符号化した所定単位符号データを生成する所定単位符号化工程を実行して生成された前記所定単位符号データを出力し、
超えない場合には、前記画素単位符号データを出力する出力符号選択工程とを有する符号化方法。
【請求項１０】
請求項８または９のいずれか一項に記載の各工程を符号化装置に実行させることを特徴とする符号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法および符号化プログラムに関する。
【背景技術】
【０００２】
従来、スキャナ等で読み取った画像データをプリンタエンジンで出力する画像形成装置では、画像データをある単位（画素単位、ブロック単位、ライン単位、バンド単位等）で分割し、分割した単位ごとに圧縮処理した結果である符号データを、いったんメモリに記憶することが知られている。その後、各符号データはメモリから読出され、復号化されてプリンタエンジンの印字スピード以内にプロッタに対して転送される。
【０００３】
例えば特許文献１には、ライン単位に分割した画像データをライン単位ごとに圧縮してメモリの空き領域に記憶していき、メモリの空き領域がない場合はそのラインの画像データは間引く処理を行うことにより、記憶容量に合った画質と圧縮処理を得る画像処理装置が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１では、圧縮処理の結果膨張した符号データが発生した場合、プリンタエンジンによる印刷スピード以内にデータ転送が出来ずに、印刷画像が劣化する問題があった。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、請求項１にかかる発明は、所定の複数画素単位の画像データである所定単位画像データを読み込む画像読込部と、
読み込まれた前記所定単位画像データを画素単位で符号化した画素単位符号データを生成する画素単位符号化部と、
読み込まれた前記所定単位画像データを前記所定単位で符号化した所定単位符号データを生成する所定単位符号化部と、
前記画素単位符号データのデータ量である符号長を、前記所定単位画像データのデータ量と比較して判断する画素単位符号長判断部と、
前記画素単位符号長判断部の判断結果に基づき、前記符号長の方が大きい場合に、前記所定単位符号データを出力し、小さい場合に、前記画素単位符号データを出力する画素単位符号を出力する出力符号選択部とを有する符号化装置である。
【発明の効果】
【０００６】
本発明によれば、プリンタエンジンによる印刷スピード以内にデータ転送が出来ずに、印字画像が劣化するのを防止できる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態の符号化装置である画像形成装置のハードウェア構成図である。
【図２】第１の実施形態の画像形成装置の機能ブロック図である。
【図３】第１の実施形態の画像形成処理フロー図である。
【図４】符号データのデータ構造の一例である。
【図５】符号データのラインヘッダの一例である。
【図６】復号化処理部の機能ブロック図である。
【図７】符号化処理部の機能ブロック図の第一の例である。
【図８】符号化処理フロー図の第一の例である。
【図９】第２の実施形態の符号化装置であるプリンタサーバのハードウェア構成図である。
【図１０】第２の実施形態の符号化装置であるプリンタサーバの機能ブロック図である。
【図１１】符号化処理部の機能ブロック図の第二の例である。
【図１２】符号化処理フロー図の第二の例である。
【図１３】プリンタエンジン５０のハードウェア構造図である。
【発明を実施するための形態】
【０００８】
以下、添付の図面に基づき、本発明の実施の形態について説明する。なお、本発明の実施の形態を説明するための各図面において、同一の機能もしくは形状を有する部材や構成部品等の構成要素については、判別が可能な限り同一符号を付すことにより一度説明した後ではその説明を省略することがある。
【０００９】
まず、本発明の第１の実施形態に係る符号化装置のハードウェア構成について説明する。図１に示すように符号化装置である画像形成装置１００と、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの端末装置１０００とが、ネットワークＮによって接続され、プリントシステムＰ１を構成している。
【００１０】
ここで、ネットワークＮはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、ＬＡＮ経由のインターネット等を含む概念である。端末装置１０００はネットワークＮに有線で接続されていてもよいし、無線接続のいわゆるモバイル端末などでもよい。一つの画像形成装置１００に対し、複数の端末装置１０００が接続されていてもよい。
【００１１】
画像形成装置１００は、一例として、コピー機能、ＦＡＸ機能、プリント機能、スキャナ機能、また、入力画像（スキャナ機能による読み取り原稿や、プリンタ機能あるいはＦＡＸ機能により入力された画像）を保存や配信する機能また各種情報の処理を行う情報処理装置としての機能等を複合して有する、いわゆるＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）と称される複合機である。なお、本実施形態において、画像形成装置１００で処理される「画像データ」には、内容としては画像が含まれていないデータ、つまりテキスト情報のみのデータも含むものとする。
【００１２】
画像データは、画素データの集合からなり、またその画素データはビット列からなるデジタルデータである。画像データを構成する画素領域としては、１ページ分の画像データをライン状に分けたライン単位、複数のラインからなるバンド単位、また複数画素×複数画素からなるブロック単位などがあるが、以降「バンド画像」はバンド単位の画像データを、「バンド符号」はバンド単位の画像データを符号化した符号データを意味する。
【００１３】
画像形成装置１００は、プリンタコントローラボード１０と、用紙などの記憶媒体に画像を印刷するプリンタエンジン５０を有する。画像形成装置１００内の各装置、各部材間を接続する矢印はバスを表し、これらバスにより画像形成装置１００内で各データの受け渡しが可能である。
【００１４】
端末装置１０００は、ユーザが入力する印刷指示の操作に従い、画像形成装置１００に対する印刷指示データを作成し、画像形成装置１００に送信する。印刷指示データは、プリンタ等への出力イメージを記述してプリンタに対して指示する言語であるＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述されるため、以降ＰＤＬデータとよぶこともある。
【００１５】
プリンタコントローラボード１０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１と、メモリコントローラ内蔵ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２と、メインメモリ３と、画像処理コントローラ４と、エンジンコントローラ５と、ラインメモリ６ａ、６ｂを有する。各装置、各部材間を接続するバスの中で、メモリコントローラ内蔵ＣＰＵ２と画像処理コントローラ４間は一例としてシリアル転送インターフェースであるＰＣＩｅバス７で接続されている。
【００１６】
ここでメインメモリ３は、描画コマンド領域３ａ（図１中では「描画コマンド」と示す。）と、ＰＤＬデータ領域３ｂ（図１中ではこのデータ領域を「ＰＤＬデータ」と示す。）と、バンド画像領域３ｃ、バンド符号領域３ｄからなる記憶領域を有する。
【００１７】
バンド画像領域３ｃは、シアン用バンド画像の記憶領域であるＣ版バンド画像領域（図１中ではこのデータ領域を「Ｃ版バンド画像」と示す。）、マゼンタ用バンド画像の記憶領域であるＭ版バンド画像領域（図１中ではこのデータ領域を「Ｍ版バンド画像」と示す。）、イエロー用バンド画像の記憶領域であるＹ版バンド画像領域（図１中ではこのデータ領域を「Ｙ版バンド画像」と示す。）、ブラック用バンド画像の記憶領域であるＫ版バンド画像領域（図１中ではこのデータ領域を「Ｋ版バンド画像」と示す。）を有する。
【００１８】
バンド符号領域３ｄは、シアン用バンド符号の記憶領域であるＣ版バンド符号領域（図１中ではこのデータ領域を「Ｃ版バンド符号」と示す。）、マゼンタ用バンド符号の記憶領域であるＭ版バンド符号領域（図１中ではこのデータ領域を「Ｍ版バンド符号」と示す。）、イエロー用バンド符号の記憶領域であるＹ版バンド符号領域（図１中ではこのデータ領域を「Ｙ版バンド符号」と示す。）、ブラック用バンド符号の記憶領域であるＫ版バンド符号領域（図１中ではこのデータ領域を「Ｋ版バンド符号」と示す。）を有している。
【００１９】
ＲＯＭ１は、画像形成装置１００の動作に関する各種のプログラムや、文字などのフォント情報を格納する。
【００２０】
メモリコントローラ内蔵ＣＰＵ２は後述するように、ＣＰＵ２１とメモリコントローラ２４を内蔵し、プリンタコントローラボード１０に搭載された各装置および各装置間のやり取りに関する全体の制御を行う。
【００２１】
メモリコントローラ内蔵ＣＰＵ２は、ＣＰＵ２１と、ＣＰＵ  Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２２と、メモリアービタ２３（図１中「メモリＡＢＲ」と示す。）と、メモリコントローラ２４と、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２５と、バスコントローラ２６と、ネットワークＩ／Ｆ２７とを有する。
【００２２】
ＣＰＵ２１は、プリンタコントローラボード１０全体を制御し、プリントシステムＰ１のプリンタコントローラとして機能する。一例として、端末装置１０００から送られてきたＰＤＬデータを解析して、ＣＭＹＫ各画像の画像データを生成し、メインメモリ３のＰＤＬデータ領域３ｂの各色に対応する領域に記憶する。また、端末装置１０００から送られてきたＰＤＬデータを解析してＣＭＹＫ各画像の画像データを生成して、バンド画像領域３ｃへＣＭＹＫ画像部を生成する。
【００２３】
ＣＰＵ  Ｉ／Ｆ２２は、ＣＰＵ２１のインターフェースであり、メモリアービタ２３を介して、メインメモリ３や各種コントローラと接続されている。
【００２４】
メモリアービタ２３は、メインメモリ３と各種のコントローラ間の調停を行う。
【００２５】
メモリコントローラ２４は、メインメモリ３をコントロールし、メモリアービタ２３を介して、各種コントローラやＣＰＵ２１と接続されている。
【００２６】
ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２５は、メモリコントローラ２４と、画像処理コントローラ４間のダイレクトメモリアクセスを制御する。
【００２７】
バスコントローラ２６はバスとつながる各周辺コントローラとのバスの調停を行う。
【００２８】
ネットワークＩ／Ｆ２７は、ネットワークＮに接続されており、ネットワークＮから各種データやコマンドなどを受け取り、メモリアービタ２３を介して各種のコントローラに接続されている。
【００２９】
画像処理コントローラ４は一例としてＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）からなり、画像データを符号化して符号データを生成したり、符号データを復号化したりする。
【００３０】
エンジンコントローラ５は、プリンタエンジン５０が実行する印刷を制御する。
【００３１】
ラインメモリ６ａ、６ｂは、エンジンコントローラ５の制御に従い、エンジンコントローラ５がプリンタエンジン５０に転送する前のライン単位の画像データを、それぞれ一時記憶する。
【００３２】
画像処理コントローラ４は、さらにバスＩ／Ｆ４１と、復号化部４２と、符号化部４３を有する。
【００３３】
バスＩ／Ｆ４１は、画像処理コントローラ４とバスとのインターフェースであり、画像処理コントローラ４とメモリコントローラ内蔵ＣＰＵ２とを、ＰＣＩｅバス７を介して接続する。
【００３４】
復号化部４２は、メインメモリ３のバンド符号領域３ｄからメモリコントローラ２４およびバス等を介して取得したＣＭＹＫ各版のバンド符号データに対して復号化を行い、復号化の結果である画像データを、エンジンコントローラ５に転送する。
【００３５】
符号化部４３は、メインメモリ３のバンド画像領域３ｃからメモリコントローラ２４およびバス等を介して取得したＣＭＹＫ各版のバンド画像データを読み込んで符号化を行い、符号化の結果である符号データを、バス等およびメモリコントローラ２４を介してバンド符号領域３ｄに記憶する。
【００３６】
なお画像形成装置１００はさらに、不揮発性記憶媒体、一例としてＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などを有していても良い。また画像形成装置１００は、符号化部４３を有しているため、符号化装置ということもできる。
【００３７】
図２は、画像形成装置１００の機能ブロック図である。
【００３８】
画像形成装置１００は、通信処理部１１０と、制御部１２０と、読出・書込処理部１３０と、読出・書込処理部１４０と、第一記憶部１５０と、第二記憶部１６０とを有する。
【００３９】
通信処理部１１０は、ネットワークＩ／Ｆ２７の処理によって実現され、端末装置１０００などの外部装置とネットワーク経由で通信する機能を実行する。
【００４０】
制御部１２０はＣＰＵ２１がＲＯＭ１やＨＤＤ等に記憶されたプログラムを実行することによって実現され、プリントシステムＰ１全体を制御するプリンタコントローラとして機能する。
【００４１】
画像形成装置１００は、ＰＤＬ解析部１２１と、描画処理部１２２と、符号化処理部１２３と、復号化処理部１２４と、エンジン制御部１２５とを有する。
【００４２】
ＰＤＬ解析部１２１は、ＣＰＵ２１がＲＯＭ１やＨＤＤ等に記憶されたプログラムを実行することによって実現され、端末装置１０００から受信したＰＤＬデータを解析して、画像データを生成する。
【００４３】
描画処理部１２２は、ＣＰＵ２１がＲＯＭ１やＨＤＤ等に記憶されたプログラムを実行することによって実現され、描画コマンドから画像データ作成する。
【００４４】
符号化処理部１２３は、符号化部４３によって実現され、画像データを符号化したバンド符号データを生成する。
【００４５】
復号化処理部１２４は、復号化部４２によって実現され、バンド符号データを復号化し、画像データを生成する。
【００４６】
エンジン制御部１２５は、エンジンコントローラ５によって実現され、プリンタエンジン５０による画像印刷の制御を行う。
【００４７】
読出・書込処理部１３０は、メモリコントローラ２４によって実現され、第一の記憶部１５０に各種データを記憶させたり、記憶された各種データを読み出したりする機能を実行する。
【００４８】
読出・書込処理部１４０は、エンジンコントローラ５によって実現され、第二の記憶部１６０に画像データを記憶させたり、記憶された画像データを読み出したりする機能を実行する。
【００４９】
第一の記憶部１５０は、メインメモリ３によって実現される。第一の記憶部１５０は、ＰＤＬデータ記憶部１５１と、描画コマンド記憶部１５２と、バンド画像記憶部１５３と、バンド符号記憶部１５４とを有し、それぞれ、ＰＤＬデータ領域３ｂ、描画コマンド領域３ａ、バンド画像領域３ｃ、バンド符号領域３ｄによって実現され、それぞれＰＤＬデータ、描画コマンド、画像データとしてのバンド画像データ、バンド符号データを記憶する機能を実行する。
【００５０】
第二の記憶部１６０は、第一ライン記憶部１６１、第二ライン記憶部１６２からなり、第一ライン記憶部１６１と第二ライン記憶部１６２はそれぞれ、ラインメモリ６ａ、ラインメモリ６ｂによって実現され、復号化された結果であるライン単位の画像データを記憶する。
【００５１】
図３は、画像形成装置１００が実施する画像形成処理フロー図である。プリンタコントローラとしての制御部１２０が本処理フロー全体を制御している。
【００５２】
まず、通信処理部１１０は、端末装置１０００で生成されたＰＤＬデータを受信する通信処理を行う（Ｓ１）。
【００５３】
読出・書込処理部１３０は、通信処理部１１０が受信したＰＤＬデータをＰＤＬデータ記憶部１５１に記憶させる（Ｓ２）。
【００５４】
ＰＤＬ解析部１２１は、読出・書込処理部１３０を介しＰＤＬデータを読み込みＰＤＬデータから描画コマンドを生成する（Ｓ３）。
【００５５】
読出・書込処理部１３０は、描画処理部１２２が生成した描画コマンドを、描画コマンド記憶部１５２に記憶させる（Ｓ４）。
【００５６】
描画処理部１２２は、読出・書込処理部１３０を介し描画コマンドを読み込み、描画コマンドからＣＭＹＫ各画像データを生成する（Ｓ５）。
【００５７】
読出・書込処理部１３０は、描画処理部１２２が生成した画像データを、バンド画像記憶部１５３に記憶させる（Ｓ６）。
【００５８】
符号化処理部１２３は、読出・書込処理部１３０を介しバンド画像記憶部１５３から画像データを読み込んで符号化し、ＣＭＹＫ各バンド符号データを生成する（Ｓ７）。
【００５９】
読出・書込処理部１３０は、符号化処理部１２３が生成したバンド符号データを、バンド符号記憶部１５４に記憶させる（Ｓ８）。
【００６０】
復号化処理部１２４は、読出・書込処理部１３０を介しバンド符号データを読み込んで復号化し、復号化されたデータ、つまり画像データを、エンジン制御部１２５に転送する（Ｓ１０）。
【００６１】
エンジン制御部１２５は、転送された画像データに基づき、用紙等の記憶媒体に印刷を行う（Ｓ１１）。
【００６２】
ここで、符号データのデータ構造を説明する。図４は、Ｎラインからなる１バンド分の画像データを符号化した符号データのデータ構造の一例を示す図である。
【００６３】
図４において、１ライン符号〜Ｎライン符号と示されるように、バンド画像データはバンド画像データを構成する１ライン毎に符号化されており、１ライン毎に符号化は完結している。各ライン符号の先頭にはラインヘッダがある。ラインヘッダは、その後に続く符号が、画素単位符号データまたはライン単位符号データのいずれかであることを表す。
【００６４】
ラインヘッダに続き、図４中で「画素単位/ライン単位符号」と記載されている箇所は、画素単位符号データもしくはライン単位符号データを示している。続いて「ライン終端」が、各ラインデータの終了を示している。終端符号の後ろに領域が余った場合は、余ったビット数分のデータを付加する。図４中、１ライン符号、２ライン符号、Ｎライン符号それぞれについて余ったビット数分のデータを、ｘバイトＮＯＰ、ｙバイトＮＯＰ、ｚバイトＮＯＰと示す。
【００６５】
ここで、上述の画素単位符号データとライン単位符号データ、それぞれを生成する符号化の特徴について説明する。まず１ライン毎の符号化には、画素単位の符号化とライン単位の符号化の２種類を用いている。この時、１ライン分の画素数である複数画素からなる画像データに対し、画素単位に符号化を行った結果の符号データを、画素単位符号データと呼ぶ。そして、１ライン分の複数画素からなる画像データに対し、１ライン単位に符号化を行った結果の符号データをライン単位符号データと呼ぶ。
【００６６】
画素単位符号（バイト単位）は、画素単位符号であることを示すラインヘッダに続き、１ライン分の圧縮された画素データで構成されている。ライン単位符号は、ライン単位符号であることを示すラインヘッダに続き、圧縮されていない１ライン分の画素データで構成されている。
【００６７】
画素単位符号は、画素単位に符号化する為に、圧縮率は高いが、膨張が発生した場合、膨張率が高い符号化方式である。それに対しライン単位符号化は、ライン単位に符号化する為、符号化した場合の膨張率（最悪圧縮率時の符号長とラインのデータ量の倍率）が小さいが、あまりデータ量を圧縮出来ない符号化方式である。言い換えると、前述したように圧縮されていない１ライン分の画素データをそのまま含むため圧縮率は低いが、その一方大きく膨張することはなく符号データのデータ量の最大が決まっているといえる。
【００６８】
なお、圧縮方式としてはハフマン符号化、ＬＺ符号化方式、ランレングス符号化方式などの可逆符号化であってもよいし、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式による符号化のような非可逆符号化であってもよく、またこれらに限られない。画素単位符号化とライン単位符号化で異なる符号化方式を行っても良い。
【００６９】
図５は、符号データのラインヘッダの一例を示す図である。画素単位符号のライン符号には、ラインヘッダとして図５（ａ）に示すように「０」を付与し、ライン単位符号のラインヘッダとしては図５（ｂ）に示すように「１」を付与する。
【００７０】
図６は復号化処理部１２４の機能ブロック図である。図６を用いて復号化処理の各工程を説明する。なお、図６においては、画像データを「画像」、符号データを「符号」と省略して示している。
【００７１】
符号読込部１２４１は、バンド符号記憶部１５４から符号データを読み込み、読み込まれた符号データを、ライン単位復号部１２４２および画素単位復号部１２４３に入力する。
【００７２】
ライン単位復号部１２４２は、受け取った符号データを復号し、出力符号選択部１２４４へ入力する。
【００７３】
画素単位復号部１２４３は、受け取った符号データを復号し出力符号選択部１２４４へ入力する。
【００７４】
符号解析部１２４６は、符号読込部１２４１で読み込まれた符号データの最初のヘッダを認識して、その符号データがライン単位符号データなのか、画素単位符号データなのかを判断する。そしてライン単位復号部１２４２と画素単位復号部１２４３とを制御し、出力符号選択部１２４４へ切り替え信号を入力する。なお本実施形態においては、ヘッダが０であれば画素単位符号データ、ヘッダが１であればライン単位符号データと判断する。
【００７５】
出力符号選択部１２４４は、符号解析部１２４６からの切り替え信号により切り替えられ、ライン単位復号部１２４２および画素単位復号部１２４３から入力された画像データのうちいずれかを画素書込部１２４５へ入力する。
【００７６】
画素書込部１２４５は、出力符号選択部１２４４から受け取った画像データである画素値を、エンジン制御部１２５および読出・書込処理部１４０を介して第一ライン記憶部１６１または第二ライン記憶部１６２いずれかに書き込むことにより記憶させる。
【００７７】
ここで、図３で説明したフロー実行時の、プリントシステムＰ１内で転送されるデータについて説明する。以下にデータ転送処理Ｔ１，Ｔ２，Ｔ３，Ｔ４を、再度図１を参照しながら説明する。
【００７８】
制御部１２０は、バンド画像領域３ｃのバンド画像データを符号化部４３へ転送する（Ｔ１）。すると符号化部４３は画像データに符号化を行い、バンド符号データを生成する。
【００７９】
次に制御部１２０は、符号化部４３からバンド符号データを、各種バスを経由させてバンド符号領域３ｄに記憶するためにメインメモリ３に転送する（Ｔ２）。さらに制御部１２０は、バンド符号領域３ｄのバンド符号データを、プリンタエンジン５０の印刷動作に同期するように，各種バスを介して復号化部４２へ転送する（Ｔ３）。すると復号化部４２は、転送されたバンド符号データを復号する。
【００８０】
そして制御部１２０は、復号化された画像データをエンジンコントローラ５へ転送し、エンジンコントローラ５はバンド画像データをライン単位に、二つのラインメモリ６ａまたは６ｂどちらかに順次書き込み、その後ラインメモリ６ａまたは６ｂの、いずれか書き込んだラインメモリから、画像データをプリンタエンジン５０へ転送する。つまり制御部１２０は転送処理Ｔ４として、復号化された結果の画像データを、復号化部４２からエンジンコントローラ５へ転送し、エンジンコントローラ５から画像データを１ライン毎にラインメモリ６ａまたはラインメモリ６ｂへ、そしてラインメモリ６ａまたはラインメモリ６ｂから再度エンジンコントローラ５を経て、プリンタエンジン５０の印刷動作に同期するようにプリンタエンジン５０へと転送する（Ｔ４）。
【００８１】
Ｔ４において，プリンタエンジン５０は、二つのラインメモリ６ａ、６ｂを有し、画像データを１ライン毎にラインメモリ６ａまたは６ｂを使用してプリンタエンジン５０の印刷動作に同期するタイミングで転送するため、Ｔ３〜Ｔ４のデータの転送処理が、一例としてＰＣＩｅバス７の転送レートが低い等の理由で、プリンタエンジン５０の１ラインの線速に間に合わないと印刷画像に異常が発生する。
【００８２】
ここで従来の符号化では、ライン単位の画像データを符号化する際の符号長が制御されていないため、符号データが膨張することがあった。その場合、転送する符号データ量自体が増えてしまう。加えて、転送するデータ量以外の、データ転送スピードを遅くする条件、例えばバスの転送スピードがあまり高くない、またはＣＰＵ２１でのメモリ競合によりＷＡＩＴが入るなどの条件が重なると、さらに転送にかかる時間が増え、プリンタエンジン５０の線速に対して、必要な画像データの転送が間に合わないことがあった。
【００８３】
そこで本実施形態においては、符号化を実施した結果、符号データがライン単位に膨張しないような符号化装置、符号化方法を提供する。
【００８４】
図７は符号化処理部の機能ブロック図である。なお、図７のブロック図を用いて第一の実施形態の符号化処理の各工程を説明する。なお、図７においては、画像データを「画像」、符号データを「符号」と省略して示している。
【００８５】
画像読込部１２３１は、所定の複数画素単位の画像データを読み込む機能を有する。つまり制御部１２０が転送し、符号化処理部１２３に入力された画像データを、所定の複数画素毎に読み込む。本実施形態においては一例として、符号化処理部１２３に入力されたバンド画像データを、画像読取部１２３１が所定の複数画素単位の画像データとして１ライン分の複数画素毎に読み込む場合として説明するがこれに限られない。
【００８６】
画像読込部１２３１は、読み込んだ所定の複数画素単位の画像データである所定単位画像データを、所定単位符号化部としての、ライン単位符号化部１２３２と、画素単位符号化部としての、画素単位符号化部１２３４との両方に一例として同時に入力する。
【００８７】
ライン単位符号化部１２３２は、画像データをライン単位に符号化し、符号化結果であるライン単位符号データを、所定単位符号データ記憶部である、ライン単位符号のラインメモリ１２３３に書き込む。
【００８８】
ライン単位符号のラインメモリ１２３３は、符号化された１ライン分のライン単位符号データを一時的に記憶する。
【００８９】
画素単位符号化部１２３４は、画像データを画素単位に符号化し、符号化結果である画素単位符号データを、画素単位符号データ記憶部である、画素単位符号のラインメモリ１２３５に書き込む。また画素単位符号化部１２３４は、画素単位符号データの符号長、一例としてバイト数を後述の画素単位符号長判断部１２３７に入力する。
【００９０】
画素単位符号のラインメモリ１２３５は、画素単位に符号化された１ライン分のライン単位符号データを一時的に記憶する。
【００９１】
画素単位符号長判断部１２３７は、画素単位符号データの符号長を判断する。すなわち、まず、画素単位符号長判断部１２３７は、制御部１２０が転送し、符号化部１２３に入力された画像データの、１ライン分の幅、一例としてバイト数（図7中、ライン幅バイト数、と示す。）を取得する。そして、画素単位符号長判断部１２３７は、この画像データ１ライン分の幅と、画素単位符号化部１２３４から入力された１ライン分の画素単位符号の符号長とを比較する。
【００９２】
そして、画素単位符号の符号長の方が長ければ、画素単位符号化によるデータの膨張が発生していると判断する。この場合、データの膨張が発生している画素単位符号データよりも、ライン単位符号データを選択した方が、システム上で転送すべきデータ量が少なくて済む。そこで、画素単位符号長判断部１２３７は、出力符号選択部１２３６にライン単位符号データを使用するように切り替え信号を入力する。このように画素単位符号長判断部１２３７は、判断の結果、どちらの符号を使用するかを出力符号選択部１２３６に入力する。
【００９３】
出力符号選択部１２３６は、画素単位符号長判断部１２３７の判断結果に基づき出力する符号を選択する処理を行う。なお、出力符号選択部１２３６は、図７中では、ＭＵＸ（ｍｕｌｔｉｐｌｅｘｅｒ）と示している。そして符号書込部１２３８は、出力符号選択部１２３６から入力されたバンド符号を、バンド符号記憶部１５４に書き込むことにより記憶させる。
【００９４】
なお、上述の画素単位符号長判断部１２３７は、１ライン分の画像データの幅と、１ライン分の画素単位符号の符号長とを比較して画素単位符号化の膨張を判断したが、１ライン分の画像データの幅に替えて、１ライン分のライン単位符号の符号長を用いてもよい。すなわち１ライン分の画素単位符号の符号長１ライン分のライン単位符号の符号長と比べて長ければ画素単位符号化の膨張が起きていると判断できる。
【００９５】
図８は、図７の符号化処理部１２３の符号化処理フロー図である。特に出力符号選択部１２３６へ符号データを入力する工程までを説明する。
【００９６】
まず、画像読込部１２３１は画像読込工程として、画素データつまり１バイトの画素データを所定の複数画素単位、一例として１ライン分読み込み、ライン単位符号化部１２３２および画素単位符号化部１２３４に画像データをそれぞれ入力する（Ｓ７１−１）。この入力は一例として同時に行われる。
【００９７】
画像データを入力されたライン単位符号化部１２３２は、所定単位符号化工程としてライン単位の符号化を行い、そして符号データをライン単位符号用のラインメモリ１２３３に記憶する（Ｓ７１−２）。またデータを渡された画素単位符号化部１２３４は、画素単位符号化工程として画素単位の符号化を行い、そして符号データを画素単位符号用のラインメモリ１２３５に書き込む（Ｓ７１−３）。このライン単位の符号化と画素単位の符号化は一例として同時に行われる。
【００９８】
符号化処理部１２３は、１ライン分の符号化処理が完了までＳ７１−１〜Ｓ７１−３のデータの読み込みから符号データの書き込みまでを繰り返し、１ライン分の処理が完了すると、次のステップに移行する（Ｓ７１−４）。
【００９９】
次のステップでは、画素単位符号長判断部１２３７が、画素単位符号長判断工程として１ライン分の画素単位符号の符号長が１ライン分の画像データ１ライン分の幅を超えたかを判断し、そして出力符号選択部１２３６へ前述の切り替え信号を入力する（Ｓ７１−５）。
【０１００】
出力符号選択部１２３６は、出力符号選択工程として画素単位符号長判断部１２３７からのライン単位の符号の切り替え信号に基づき、画素単位符号の符号長が１ライン分の画像データの幅を超えた場合は、ライン単位符号のラインメモリ１２３３の符号（Ｓ７１−６）を、超えていない場合は画素単符号のラインメモリ１２３５の符号を、選択して出力（Ｓ７１−７）する。
【０１０１】
そして、符号化処理部１２３は、バンド高さ分の符号化処理が完了までＳ７１−１〜Ｓ７１−７の処理を繰り返し、１バンド分の処理が完了すると終了する（Ｓ７１−８）。
【０１０２】
このように、画素単位の符号化、言い換えると１バイト単位の符号化の結果の符号データが，所定単位、一例として１ライン単位のバイト数を超えた場合は、１ライン単位の符号データを出力することで，所定単位、つまり本実施形態でいうところの１ライン単位で、符号データの膨張を抑制する。
【０１０３】
すなわち、図４で説明したように、ライン単位符号化は、圧縮率は低いが、大きく膨張することはなく最大の符号長が決まっている。一方、画素単位（バイト単位）符号は、画素単位に符号化する為に、圧縮率は高いが、膨張が発生した場合、膨張率が高い符号化方式である。本実施形態により、画素単位符号化の圧縮率が高い場合は画素単位符号化の結果である画素単位符号データを、画素単位符号化が膨張してしまった場合は、ライン単位符号化の結果であるライン単位符号データを用いるため、１ライン単位で圧縮率が高く、かつ符号データの膨張を抑制した符号化を行うことができる。
【０１０４】
このような符号化の結果、印刷時のバスを介した転送データは、所定の複数画素単位、一例として１ライン単位で最大量が決まった範囲内になる。本実施形態においては、１ライン単位で最大のデータ量は、ライン単位符号データのデータ量、つまりヘッダと符号化されていない１ライン分の画素データ分のデータ量である。したがって、プリントシステムにおいて扱う最大データ量を見積もることが可能であり、想定外のデータの転送遅れ発生を防ぐことができる。その結果、線速を保ちかつ異常画像の発生を防ぐことができる。
【０１０５】
また１ライン単位で、ライン単位符号化と、画素単位符号化を並列して（パラレルに）実行し記憶するため、すでに記憶されたそれぞれの符号データから適切な方を選択して出力すればよく、無駄な処理時間を消費することがなく、高速処理が可能である。
【０１０６】
次に第２の実施形態について説明する。図９は、第２の実施形態の符号化装置であるプリンタサーバ３００と、画像形成装置１００それぞれのハードウェア構成図である。
【０１０７】
図１の第１の実施形態との相違点を述べると、本第２の実施形態においては、画像形成装置１００と端末装置１０００との間にネットワークＮを介してプリンタサーバ３００が接続されている。そして画像形成装置１００とプリンタサーバ３００と端末装置１０００とからによるプリントシステムＰ２を構成している。
【０１０８】
プリンタサーバ３００は、一例として複数の端末装置が画像形成装置１００に対して印刷指示を与えるシステムにおいて、複数の端末装置からの画像形成装置１００への印刷指示を効率よく実行できるよう制御する機能等を有する。その他、あらかじめ決められた各端末の画像形成装置１００に対する指示の優先順位やアクセス権に従って処理を行う場合もある。なお端末装置１０００自体がプリンタサーバ３００として機能してもよい。
【０１０９】
そして、画像形成装置１００のハードウェア構成については、実施形態１では、画像形成装置１００に搭載された符号化部４３が、画像データを符号化する機能を有していたのに対し、本実施形態では後述のように、プリンタサーバ３００が、その機能を有している。
【０１１０】
また、第１の実施形態では画像形成装置１００に搭載された描画コマンド領域３ａと、ＰＤＬデータ領域３ｂと、バンド画像領域３ｃが、それぞれ、描画コマンド、ＰＤＬデータ、バンド画像データを記憶する機能を有していた。それに対し本実施形態２では、画像形成装置１００のメインメモリ３は、少なくともバンド符号領域３ｄを有していれば良い。
【０１１１】
画像形成装置１００のその他のハードウェア構成は、第１の実施形態と同様であるため説明を省略する。
【０１１２】
さらに図９を用いて第２の実施形態のプリンタサーバ３００のハードウェア構成を説明する。
【０１１３】
プリンタサーバ３００は、ＣＰＵ３０１と、ＲＯＭ３０２と、メインメモリ３０３と、ＨＤＤ３０４と、ネットワークＩ／Ｆ３０５とを備え、これらがシステムバス３０６介して相互に接続されている。
【０１１４】
ＣＰＵ３０１は、ＲＯＭ３０２又はＨＤＤ３０４に記憶されたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、その他の各種プログラムを実行することで、プリンタサーバ３００全体の動作を制御する。
【０１１５】
また、ＲＯＭ３０２又はＨＤＤ３０４には、符号化プログラムが記憶されている。この符号化プログラムは、プリンタサーバ３００にあらかじめインストールされている場合に限られず、読み取り可能な記憶媒体に格納されて提供されるものであっても、または有線若しくは無線による通信手段を介して配信されるものであってもよい。プリンタサーバ３００のＣＰＵ３０１が符号化プログラムを実行することにより画像データを符号化する機能を有しており、第２実施例においては、プリンタサーバ３００が符号化装置として機能する。
【０１１６】
メインメモリ３０３は、描画コマンド領域３０３ａ（図９中では「描画コマンド」と示す。）と、ＰＤＬデータ領域３０３ｂ（図９中ではこのデータ領域を「ＰＤＬデータ」と示す。）と、バンド画像領域３０３ｃ、バンド符号領域３０３ｄからなる記憶領域を有する。それぞれの領域の詳細説明は、実施形態１の描画コマンド領域３ａ、ＰＤＬデータ領域３ｂ、バンド画像領域３ｃ、バンド符号領域３ｄの説明と共通であるため、省略する。
【０１１７】
ネットワークＩ／Ｆ３０５は、例えば、ネットワークＮを介して、端末装置１０００からの印刷指示を受け付け、画像形成装置１００へと通信するための通信手段である。
【０１１８】
プリンタサーバ３００は、その他に、各種メディアの読出し、書込みをするためのメディアＩ／Ｆ等を有していてもよい。
【０１１９】
また、プリンタサーバ３００が端末装置１０００を兼ねてもよい。つまり、ＲＯＭ３０２又はＨＤＤ３０４に記憶された各種プログラムとして、プリンタドライバ用アプリケーション、印刷指示作成用のアプリケーションソフト、プリンタドライバが記憶されていれば、一つの装置でプリンタサーバ３００と端末装置１０００の両方として動作可能である。
【０１２０】
図１０は、実施形態２における画像形成装置１００およびプリンタサーバ３００の機能ブロック図である。
【０１２１】
まずプリンタサーバ３００について説明すると、プリンタサーバ３００は、通信処理部３１０と、制御部３２０とＰＤＬ解析部３２１と、描画処理部３２２と、符号化処理部３２３と、読出・書込処理部３３０と、第一記憶部３５０とを有する。
【０１２２】
通信処理部３１０はネットワークＩ／Ｆ３０５の処理によって実現され、端末装置１０００などの外部装置とネットワーク経由で通信する機能を実行する。
【０１２３】
制御部３２０はＣＰＵ３０１がＲＯＭ３０２やＨＤＤ３０４に記憶されたプログラムを実行することによって実現され、プリントシステムＰ２全体を制御するプリンタコントローラとして機能する。
【０１２４】
ＰＤＬ解析部３２１は、ＣＰＵ３０１がＲＯＭ３０２やＨＤＤ３０４に記憶されたプログラムを実行することによって実現され、端末装置１０００から受信したＰＤＬデータを解析して、画像データを生成する。
【０１２５】
描画処理部３２２は、ＣＰＵ３０１がＲＯＭ３０２やＨＤＤ３０４に記憶されたプログラムを実行することによって実現され、描画コマンドから画像データ作成する。
【０１２６】
符号化処理部３２３は、ＣＰＵ３０１がＲＯＭ３０２やＨＤＤ３０４に記憶された符号化プログラムを実行することによって実現され、画像データを符号化したバンド符号データを生成する。
【０１２７】
読出・書込処理部３３０は、ＣＰＵ３０１がＲＯＭ３０２やＨＤＤ３０４に記憶された符号化プログラムを実行することによって実現され、第一の記憶部３５０に各種データを記憶させたり、記憶された各種データを読み出したりする機能を実行する。
【０１２８】
第一の記憶部３５０は、メインメモリ３０３によって実現される。第一の記憶部３５０は、ＰＤＬデータ記憶部３５１と、描画コマンド記憶部３５２と、バンド画像記憶部３５３と、バンド符号記憶部３５４とを有し、それぞれ、描画コマンド領域３０３ａ、ＰＤＬデータ領域３０３ｂ、バンド画像領域３０３ｃ、バンド符号領域３０３ｄによって実現され、それぞれＰＤＬデータ、描画コマンド、画像データとしてのバンド画像データ、バンド符号データを記憶する機能を実行する。
【０１２９】
画像形成装置１００は、通信処理部１１０と、制御部１２０と、復号化処理部１２４と、エンジン制御部１２５と、読出・書込処理部１４０と、読出・書込処理部１７０と、第二記憶部１６０と、第三記憶部１８０とを有する。
【０１３０】
通信処理部１１０は、ネットワークＩ／Ｆ２７の処理によって実現され、プリンタサーバ３００などの外部装置とネットワーク経由で通信する機能を実行する。
【０１３１】
制御部１２０はＣＰＵ２１がＲＯＭ１やＨＤＤ等に記憶されたプログラムを実行することによって実現され、プリントシステムＰ１全体を制御するプリンタコントローラとして機能する。
【０１３２】
復号化処理部１２４は、第１の実施形態と同様、復号化部４２によって実現され、バンド符号データを復号化し、画像データを生成する。
【０１３３】
エンジン制御部１２５は、第１の実施形態と同様、エンジンコントローラ５によって実現され、プリンタエンジン５０による画像印刷の制御を行う。
【０１３４】
読出・書込処理部１４０は、第１の実施形態と同様、エンジンコントローラ５によって実現され、第二の記憶部１６０に画像データを記憶させたり、記憶された画像データを読み出したりする機能を実行する。
【０１３５】
第二の記憶部１６０は、第１の実施形態と同様、第一ライン記憶部１６１、第二ライン記憶部１６２からなり、第一ライン記憶部１６１と第二ライン記憶部１６２はそれぞれ、ラインメモリ６ａ、ラインメモリ６ｂによって実現され、復号化された結果であるライン単位の画像データを記憶する。
【０１３６】
第三の記憶部１８０は、バンド符号記憶部１８１を有し、メインメモリ３のバンド符号領域３ｄによって実現され、バンド符号データを記憶する機能を実行する。
【０１３７】
本第２の実施形態の処理フローを、図３を用いて説明する。制御部１２０と制御部３２０とで、本処理フロー全体を制御している。
【０１３８】
まず、通信処理部３１０は、プリンタサーバ３００で生成されたＰＤＬデータを受信する通信処理を行う（Ｓ１）。
【０１３９】
読出・書込処理部３３０は、通信処理部３１０が受信したＰＤＬデータをＰＤＬデータ記憶部３５１に記憶させる（Ｓ２）。
【０１４０】
ＰＤＬ解析部３２１は、読出・書込処理部３３０を介しＰＤＬデータを読み込み、ＰＤＬデータから描画コマンドを生成する（Ｓ３）。
【０１４１】
読出・書込処理部３３０は、描画処理部３２２が生成した描画コマンドを、描画コマンド記憶部３５２に記憶させる（Ｓ４）。
【０１４２】
描画処理部３２２は、読出・書込処理部３３０を介し描画コマンドを読み込み、描画コマンドからＣＭＹＫ各画像データを生成する（Ｓ５）。
【０１４３】
読出・書込処理部３３０は、描画処理部３２２が生成した画像データを、バンド画像記憶部３５３に記憶させる（Ｓ６）。
【０１４４】
符号化処理部３２３は、読出・書込処理部３３０を介し画像データを読み込んで符号化し、ＣＭＹＫ各バンド符号データを生成する（Ｓ７）。
【０１４５】
読出・書込処理部３３０は、符号化処理部３２３が生成したバンド符号データを、バンド符号記憶部３５４に記憶させる（Ｓ８）。
【０１４６】
復号化処理部１２４は、読出・書込処理部１７０が通信処理部１１０を介してバンド符号記憶部３５４から取得し、バンド符号記憶部１８１に記憶したバンド符号データを読み込んで復号化し、復号化されたデータ、つまり画像データをエンジン制御部１２５に転送する（Ｓ１０）。
【０１４７】
エンジン制御部１２５は、転送された画像データに基づき、用紙等の記憶媒体に印刷を行う（Ｓ１１）。
【０１４８】
ここで、第２の実施形態において図３で説明したフロー実行時の、プリンタシステムＰ２内で転送されるデータについて説明する。以下にデータ転送処理Ｔ５、Ｔ６，Ｔ７，Ｔ８、Ｔ９を、再度図９を参照しながら説明する。
【０１４９】
制御部３２０は、バンド画像領域３０３ｃのバンド画像データを読み出し（Ｔ５）、符号化プログラムを実行して符号化し、さらに符号化の結果生成されたバンド符号データをバンド符号領域３０３ｄに書き込む（Ｔ６）。
【０１５０】
次に制御部３２０は、バンド符号領域３０３ｄからバンド符号データを、各種バスを経由させてバンド符号領域３ｄに記憶させるためにメインメモリ３まで転送する（Ｔ７）。さらに制御部１２０は、バンド符号領域３ｄのバンド符号データを、プリンタエンジン５０の印刷動作に同期するように，各種バスを介して復号化部４２へ転送する（Ｔ８）。
【０１５１】
すると復号化部４２はバンド符号データを復号する。制御部１２０は、復号化された画像
データを、エンジンコントローラ５へ転送し，エンジンコントローラ５はバンド画像データをライン単位に、二つのラインメモリ６ａまたは６ｂどちらかに順次書き込み、その後、ラインメモリ６ａまたは６ｂの、いずれか書き込んだラインメモリから、画像データをプリンタエンジン５０へ転送する。つまり制御部１２０は転送処理Ｔ９として、復号化された結果の画像データを、復号化部４２からエンジンコントローラ５へ転送し、エンジンコントローラ５から画像データを１ライン毎にラインメモリ６ａまたはラインメモリ６ｂへ、そしてラインメモリ６ａまたはラインメモリ６ｂから再度エンジンコントローラ５を経て、プリンタエンジン５０の印刷動作に同期するようにプリンタエンジン５０へと転送する（Ｔ９）。
【０１５２】
Ｔ９において，プリンタエンジン５０は、二つのラインメモリ６ａ、６ｂを有し、画像データを１ライン毎にラインメモリ６ａまたは６ｂを使用してプリンタエンジン５０の印刷動作に同期するタイミングで転送するため、Ｔ８〜Ｔ９のデータの転送処理が、一例としてＰＣＩｅバス７の転送レートが低い等の理由で、プリンタエンジン５０の１ラインの線速に間に合わないと、印刷画像に異常が発生する。
【０１５３】
ここで従来の符号化では、ライン単位の画像データを符号化する際の符号長が制御されていないため、符号データが膨張することがあった。その場合、転送する符号データ量自体が増えてしまう。加えて、転送するデータ量以外の、データ転送スピードを遅くする条件、例えばバスの転送スピードがあまり高くない、またはＣＰＵ２１でのメモリ競合によりＷＡＩＴが入るなどの条件が重なると、さらに転送にかかる時間が増え、プリンタエンジン５０の線速に対して、必要な画像データの転送が間に合わないことがあった。
【０１５４】
そこで本実施形態においては、符号化を実施した結果、符号データがライン単位に膨張しないような符号化装置、符号化方法を提供する。
【０１５５】
図１１は、第２の実施形態における、符号化処理部３２３の詳細な機能ブロック図である。図１１のブロック図を用いて第二の実施形態の符号化処理の各工程を説明する。なお、図１１においては、画像データを「画像」、符号データを「符号」と省略して示している。
【０１５６】
画像読込部３２３１は、所定の複数画素単位の画像データを読み込む機能を有する。つまり制御部３２０が転送し、符号化処理部３２３に入力された画像データを、所定の複数画素毎に読み込む。本実施形態においては一例として、符号化処理部３２３に入力されたバンド画像データを、画像読取部３２３１が所定の複数画素単位の画像データとして１ライン分の複数画素毎に読み込む場合として説明するがこれに限られない。
【０１５７】
画像読込部３２３１は、読み込んだ所定の複数画素単位の画像データである所定単位画像データを、画像データのラインメモリ３２３２に入力する。
【０１５８】
所定単位画像データ記憶部としての、画像データのラインメモリ３２３２は、入力された１ライン分の画素である画像データを一時記憶する。
【０１５９】
所定単位符号化部としての、ライン単位符号化部３２３３は、画像データのラインメモリ３２３２から、画像データを読み込み、ライン単位に符号化し、符号化結果であるライン符号データを、後述する出力符号選択部３２３６に入力する。なお、出力符号選択部３２３６は、図１１中で、ＭＵＸ（ｍｕｌｔｉｐｌｅｘｅｒ）と示している。
【０１６０】
画素単位符号化としての、画素単位符号化部３２３４は、画像データのラインメモリ３２３２から、画像データを読み込み、画素単位に符号化し、さらに符号化結果である画素単位符号データを、画素単位符号のラインメモリ３２３５に入力する。
【０１６１】
画素単位符号データ記憶部としての、画素単位符号データのラインメモリ３２３５は、一時的に１ライン分の画素単位符号データを記憶する。
【０１６２】
画素単位符号長判断部３２３７は、画素単位符号データの符号長を判断する。すなわち、まず、画素単位符号長判断部３２３７は、制御部３２０が転送し、符号化部３２３に入力された画像データの、１ライン分の幅、一例としてバイト数（図１１中、ライン幅バイト数、と示す。）を取得する。そして、画素単位符号長判断部３２３７は、この画像データ１ライン分の幅と、画素単位符号化部３２３４から入力された１ライン分の画素単位符号データの符号長とを比較する。
【０１６３】
この時、画素単位符号の符号長の方が長ければ、画素単位符号化によるデータの膨張が発生していると判断する。すなわち、符号データとしてライン単位符号データの方がシステム上で転送すべきデータ量が少なくて済む。したがって、その場合は、出力符号選択部３２３６にライン単位符号データを使用するように切り替え信号を入力する。画素単位符号の符号長の方が短ければ、符号データとして画素段位符号データの方が転送すべきデータ量が少ないため、画素単位符号データを使用するように切り替え信号を入力する。このように画素単位符号長判断部３２３７は、判断の結果、どちらの符号を使用するかを出力符号選択部１２３６に入力する。
【０１６４】
出力符号選択部３２３６は、画素単位符号長判断部３２３７の判断結果に基づき、出力する符号を選択する処理を行う。
【０１６５】
符号書込部３２３８は出力符号選択部３２３６から受け取ったバンド符号データを、バンド符号記憶部３５４に書き込むことにより記憶させる。
【０１６６】
図１２は、図１１の符号化処理部３２３の符号化処理フロー図である。特に出力符号選択部３２３６へ符号データを入力する工程までを説明する。
【０１６７】
まず、画像読込部３２３１が、画像読込工程として画素データつまり１バイトの画像データを読み込み（Ｓ７２−１）、そして所定単位画像データ記憶工程として画像データのラインメモリ３２３２へ書き込む（Ｓ７２−２）。
【０１６８】
符号化処理部３２３は、１ライン分が完了するまでＳ７２−１、Ｓ７２−２のデータの読込み、書き込みを繰り返し、１ライン分の処理が完了すると、次のステップに移行する（Ｓ７２−３）。
【０１６９】
次に画素単位符号化部３２３４は、画素単位符号化工程として画像データのラインメモリ３２３２から画像データを読み込み（Ｓ７２−４）、画素単位符号化を行う（Ｓ７２−５）。
【０１７０】
ライン単位符号化部３２３３は、１ライン分の符号化処理が完了するまでＳ７２−４，Ｓ７２−５の符号化処理を繰り返し、１ライン分の処理が完了すると、次のステップに移行する（Ｓ７２−６）。
【０１７１】
次のステップでは、画素単位符号長判断部３２３７が、生成した画素単位符号データが１ラインの画素バイト数を超えているかどうか判断し、出力符号選択部３２３６へ前述の切り替え信号を入力する（Ｓ７２−７）。
【０１７２】
出力符号選択部３２３６は、画素単位符号長判断部３２３７からの切り替え信号に基づき、画素単位符号の符号長が１ライン分の画像データの幅を超えた場合は、ライン単位符号化部３２３３に画像データのラインメモリ３２３２の画像データを符号化させ、生成されたライン単位符号データを出力し（Ｓ７２−８）、超えていない場合は画素単符号のラインメモリ３２３５に記憶された画素単位符号データを選択して出力する（Ｓ７２−９）。
【０１７３】
そして、符号化処理部３２３は、バンド高さ分の符号化処理が完了までＳ７２−１〜Ｓ７２−９の処理を繰り返し、１バンド分の処理が完了すると本処理フローは終了する（Ｓ７２−１０）。
【０１７４】
以上説明したように第二の実施形態においては、所定単位の画像データ、つまり１ライン単位の画像データを、まずは画像データのラインメモリ３２３２に記憶するにとどめ、ライン単位符号化を行わない。そして画素単位符号長判断部３２３７により画素単位符号データの膨張が判断された場合に、所定単位符号化つまりライン単位符号化を行う。
【０１７５】
すなわち、二つの符号化を並列（パラレル）ではなくシリアルに実行するため、無駄なライン単位符号化処理を行わない。したがって、本実施形態においては、第一の実施形態の効果に加え、符号化の高速化やシステムにかかる負荷の軽減をすることが出来る。
【０１７６】
また、一度記憶した画像データをラインメモリから読み出して符号化を行う処理は、ＡＳＩＣなどのハードウェアで実行すると比較的時間を要する。したがって、本実施形態の符号化処理は、プログラムによりソフトウェアで実行するとより効果的に処理速度を速くすることができる。
【０１７７】
なお、第一の実施形態における符号化部４３が実行した符号化処理は、当該符号化処理を実行させるプログラムをＲＯＭ１やＨＤＤなどに記憶し、ＣＰＵ２１で実行することも可能である。また、第二の実施形態において符号化プログラムが実行した符号化処理は、当該符号化処理を行うＡＳＩＣなどの回路を第一の実施形態の符号化部４３として設けることで、第１の実施形態のプリンタシステムＰ１で実行することも可能である。
【０１７８】
図１３は、前述のプリンタエンジン５０のハードウェア構造図である。プリンタエンジン５０は、作像部５１０と、給紙部５２０とを備えている。
【０１７９】
給紙部５２０は、用紙サイズの異なる記録紙を収納する給紙カセット５２１，５２２と、給紙カセット５２１，５２２に収納された記録紙を作像部５１０に搬送する各種ローラからなる給紙手段５２３とを有している。
【０１８０】
作像部５１０は、露光装置５１１と、感光体ドラム５１２ｙ、５１２ｍ、５１２ｃ、５１２ｋと、現像装置５１３ｙ、５１３ｍ、５１３ｃ、５１３ｋと、転写ベルト５１４と、定着装置５１５とを備えている。
【０１８１】
まず露光装置５１１が、画像データに基づき感光体ドラム５１２ｙ、５１２ｍ、５１２ｃ、５１２ｋを露光し、感光体ドラム５１２ｙ、５１２ｍ、５１２ｃ、５１２ｋそれぞれに潜像が形成される。現像装置５１３ｙ、５１３ｍ、５１３ｃ、５１３ｋは感光体ドラム５１２ｙ、５１２ｍ、５１２ｃ、５１２それぞれに異なる色、つまりＹ色、Ｍ色、Ｃ色、Ｋ色のトナーを供給して現像する。
【０１８２】
そして、感光体ドラム５１２ｙ、５１２ｍ、５１２ｃ、５１２ｋに現像された異なるトナー色の４つのトナー画像は転写ベルト５１４に重ねて転写される。さらに、転写ベルト５１４に転写されたトナー画像は、給紙部５２０から供給された記録紙に転写される。定着装置５１５は、記録紙に転写されたトナー画像のトナーを溶融して、記録紙にカラー画像を定着し、画像形成装置１００外に排出する。
【０１８３】
画像形成装置１００はさらに、原稿を光学的に読み取るスキャナ部６０を有していてもよい。また、プリンタエンジン５０における画像形成は上述の電子写真方式の他、インクジェット方式などを採用することができるが、これらに限られない。
【符号の説明】
【０１８４】
１００  画像形成装置
３００  プリンタサーバ
１２０、３２０  制御部
１２４、３２４  符号化処理部
１２３１，３２３１  画像読込部
１２３２，３２３３  ライン単位符号化部
１２３４，３２３４  画素単位符号化部
１２３６，３２３６  出力符号選択部
１２３７，３２３７  画素単位符号長判断部
【先行技術文献】
【特許文献】
【０１８５】
【特許文献１】特開２００５−８６６０１
【図１】
2019134286.tif 000003
【図２】
2019134286.tif 000004
【図３】
2019134286.tif 000005
【図４】
2019134286.tif 000006
【図５】
2019134286.tif 000007
【図６】
2019134286.tif 000008
【図７】
2019134286.tif 000009
【図８】
2019134286.tif 000010
【図９】
2019134286.tif 000011
【図１０】
2019134286.tif 000012
【図１１】
2019134286.tif 000013
【図１２】
2019134286.tif 000014
【図１３】
2019134286.tif 000015