(57)【要約】【課題】画像データに含まれる先端余白及び後端余白量を算出する際に、ビットマップデータで判定すると処理時間がかり、ＣＰＵの負荷も大きくなる。【解決手段】画像データに基づいてシートに画像を形成する画像形成装置であって、符号化された画像データに基づいて、先行して給紙された第１シートに続く後続の第２シートの先端側の第１余白量を取得し、符号化された画像データに基づいて、前記第１シートの後端側の第２余白量を取得する。これら第１余白量と前記第２余白量のうち、小さい方の余白量の相当する長さ分、前記第２シートが前記第１シートに重なるように前記第２シートを給紙して画像形成する。【選択図】  図５
2019098673.tif 000002
【特許請求の範囲】
【請求項１】
画像データに基づいてシートに画像を形成する画像形成装置であって、
符号化された画像データに基づいて、先行して給紙された第１シートに続く後続の第２シートの先端側の第１余白量を取得する第１取得手段と、
前記符号化された画像データに基づいて、前記第１シートの後端側の第２余白量を取得する第２取得手段と、
前記第１余白量と前記第２余白量のうち、小さい方の余白量の相当する長さ分、前記第２シートが前記第１シートに重なるように前記第２シートを給紙して画像形成する画像形成手段と、
を有することを特徴とする画像形成装置。
【請求項２】
前記画像データは、複数のライン単位で符号化された符号データであり、
前記第１取得手段は、前記複数のライン単位の符号データに含まれる余白エリアを示す符号が、前記符号データの先頭から連続する量に基づいて、前記第１余白量を取得することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記第１取得手段は、更に、前記複数のライン単位で、前記符号データに含まれる前記符号が連続しなくなったラインの位置を求め、前記符号が前記符号データの先頭から連続した量と、前記画像データを復号した画像データにおける前記ラインの位置までの余白量との加算により、前記第１余白量を取得することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記第２取得手段は、前記複数のライン単位の符号データに含まれる余白エリアを示す符号が、前記符号データの後端から連続する量に基づいて、前記第２余白量を取得することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記第２取得手段は、更に、前記複数のライン単位で、前記符号データに含まれる前記符号が連続しなくなったラインの位置を求め、前記符号が前記符号データの後端から連続した量と、前記画像データを復号した画像データにおける前記ラインの位置までの余白量との加算により、前記第２余白量を取得することを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記画像データは、矩形のブロック単位で符号化された符号データであり、
前記第１取得手段は、前記ブロック単位の符号データに含まれる余白エリアを示す符号が、前記符号データの先頭から連続する量に基づいて、前記第１余白量を取得することを特徴とする請求項１に記載の画像形成装置。
【請求項７】
前記第１取得手段は、更に、前記ブロック単位で、前記符号データに含まれる前記符号が連続しなくなったラインの位置を求め、前記符号が前記符号データの先頭から連続した量と、前記画像データを復号した画像データにおける前記ラインの位置までの余白量との加算により、前記第１余白量を取得することを特徴とする請求項６に記載の画像形成装置。
【請求項８】
前記第２取得手段は、前記符号データに含まれる余白エリアを示す符号が、前記符号データの後端から連続する量に基づいて、前記第２余白量を取得することを特徴とする請求項６に記載の画像形成装置。
【請求項９】
前記第２取得手段は、更に、前記ブロック単位で、前記符号データに含まれる前記符号が連続しなくなったラインの位置を求め、前記符号が前記符号データの後端から連続した量と、前記画像データを復号した画像データにおける前記ラインの位置までの余白量との加算により、前記第２余白量を取得することを特徴とする請求項８に記載の画像形成装置。
【請求項１０】
前記余白量は、１ラインが全て白であるラインが連続しているライン数であることを特徴とする請求項１乃至９のいずれか１項に記載の画像形成装置。
【請求項１１】
前記符号データは、ＪＢＩＧ圧縮された符号データであることを特徴とする請求項１乃至５のいずれか１項に記載の画像形成装置。
【請求項１２】
前記符号データは、ＪＰＥＧ圧縮された符号データであることを特徴とする請求項６乃至９のいずれか１項に記載の画像形成装置。
【請求項１３】
前記符号化された画像データの符号化される前の画像データは、ページ記述言語から展開された画像データであることを特徴とする請求項１乃至１２のいずれか１項に記載の画像形成装置。
【請求項１４】
画像データに基づいてシートに画像を形成する画像形成装置の制御方法であって、
第１取得手段が、符号化された画像データに基づいて、先行して給紙された第１シートに続く後続の第２シートの先端側の第１余白量を取得する第１取得工程と、
第２取得手段が、前記符号化された画像データに基づいて、前記第１シートの後端側の第２余白量を取得する第２取得工程と、
画像形成手段が、前記第１余白量と前記第２余白量のうち、小さい方の余白量の相当する長さ分、前記第２シートが前記第１シートに重なるように前記第２シートを給紙して画像形成する画像形成工程と、
を有することを特徴とする制御方法。
【請求項１５】
コンピュータを、請求項１乃至１３のいずれか１項に記載の画像形成装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置とその制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来より、印刷処理のスループットを向上させるために、先行するシートへの印刷が完了する前に、後続のシートの搬送を開始する先行給紙が知られている。例えば特許文献１には、印刷情報から画像が記録されるシート上の記録領域を取得し、記録領域が重ならない量だけシートを重ねて搬送させる画像形成装置が記載されている。また特許文献２には、印刷対象の画像データを解析することにより、シート上で画像の記録領域が重ならない量を算出する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−０６２９７５号公報
【特許文献２】特開２０１６−１６５８３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の特許文献２に記載の方法では、画像データをビットマップとしてメモリに展開し、１画素ずつ、白（Ｒ＝２５５、Ｇ＝２５５、Ｂ＝２５５）でない画像データが存在するラインまでを重ね合わせ領域として算出している。この方法では、１画素ごとの画像データをメモリから読み出して白かどうか判定しなければならないため多くの時間を要する。また各画素のデータをメモリから読み出して、上述の判定を行う処理をソフトウェアにより実現すると、ＣＰＵに多くの負荷をかけてしまうという課題があった。
【０００５】
本発明の目的は、上記従来技術の課題を解決することにある。
【０００６】
本発明の目的は、先行シートと後続シートとの重なり量を求めて先行給紙を行うことにより、画像形成のパフォーマンスを向上させる技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明の一態様に係る画像形成装置は以下のような構成を備える。即ち、
画像データに基づいてシートに画像を形成する画像形成装置であって、
符号化された画像データに基づいて、先行して給紙された第１シートに続く後続の第２シートの先端側の第１余白量を取得する第１取得手段と、
前記符号化された画像データに基づいて、前記第１シートの後端側の第２余白量を取得する第２取得手段と、
前記第１余白量と前記第２余白量のうち、小さい方の余白量の相当する長さ分、前記第２シートが前記第１シートに重なるように前記第２シートを給紙して画像形成する画像形成手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、先行シートと後続シートとの重なり量を求めて先行給紙を行うことにより、画像形成のパフォーマンスを向上させることができる。
【０００９】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１０】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態に係る画像形成装置（ＭＦＰ）の構成を説明するブロック図。
【図２】実施形態に係るＭＦＰの外観図。
【図３】実施形態に係る画像データ（ビットマップデータ）とＪＢＩＧ符号の一例を説明する図。
【図４】グレースケールをＪＰＥＧ圧縮する際の例を説明する図。
【図５】実施形態に係るＭＦＰによる印刷ジョブの実行時の処理を説明するフローチャート。
【図６】図５のＳ５０６の先端余白ライン数の算出処理を説明するフローチャート。
【図７】図５のＳ５０６の先端余白ライン数の算出処理を説明するフローチャート。
【図８】図５のＳ５０７の後端の余白ライン数の計算処理を説明するフローチャート。
【図９】図５のＳ５０７の後端の余白ライン数の計算処理を説明するフローチャート。
【図１０】実施形態に係るプリンタによる印刷処理を説明するフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
図１は、本発明の実施形態に係る画像形成装置（ＭＦＰ）の構成を説明するブロック図である。
【００１３】
この実施形態では、画像形成装置として、スキャン機能、ボックス機能、ファクシミリ機能などを有する複合機（ＭＦＰ）１００を例に説明するが、主として印刷機能のみを有するプリンタ（印刷装置）であっても良い。制御部１１０は、スキャナ１３０やプリンタ１４０と接続されており、画像情報の入出力を制御する。また制御部１１０はＬＡＮに接続され、これを経由して印刷ジョブの受信などを行う。
【００１４】
ＣＰＵ１１１は、ＲＯＭ１１３に格納されているブートプログラムを実行して、記憶部１１４に格納されているプログラムをＲＡＭ１１２に展開し、その展開したプログラムを実行して、このＭＦＰ１００の動作を制御する。ＲＯＭ１１３はブートＲＯＭであり、ブートプログラムや各種設定データ等を格納している。記憶部１１４は、例えばハードディスクドライブ（ＨＤＤ）やＳＤＤ等の大容量の記憶装置で、ソフトウェア、画像データ、ＭＦＰ１００の動作を制御するためのプログラム等を格納している。
【００１５】
ネットワークＩ／Ｆ１１５はＬＡＮに接続され、ＬＡＮ経由でＰＣ１６０などの外部装置と通信を行い、各種情報の入出力を司る。デバイスＩ／Ｆ１１６は、スキャナ１３０やプリンタ１４０と制御部１１０とを接続し、画像データの同期系／非同期系の変換を行う。操作部Ｉ／Ｆ１１７は、操作部１５０と制御部１１０とを接続し、操作部１５０に表示するための画像データを操作部１５０に出力する。また操作部Ｉ／Ｆ１１７は、操作部１５０からユーザが入力した情報をＣＰＵ１１１に伝達する。操作部１５０はタッチパネル機能を有している。画像処理部１１８は、ＬＡＮ経由で受信した印刷データに対して画像処理を行い、またデバイスＩ／Ｆ１１６を介して入出力される画像データに対して画像処理を行う。この画像処理部１１８は、例えばＡＳＩＣ（application specific integrated circuit）等のハードウェアで構成されてもよく、またＣＰＵ１１１とプログラムによるソフトウェアで構成されても良い。画像メモリ１１９は、画像処理部１１８によって処理される画像データを画像処理のために一時記憶するためのメモリである。画像メモリ１１９は、例えばＤＲＡＭのような揮発性の記憶媒体で実現される。画像記憶部１２０は、例えばＨＤＤやＳＳＤのような不揮発性の記憶媒体で実現され、画像メモリ１１９のデータを継続的に利用する場合、ＭＦＰ１００の電源オフの後に再利用したい場合に使用される。また画像記憶部１２０を使用するために、オペレーティングシステムが提供するファイルシステムをＨＤＤ上などに構築して、ファイル単位での画像データを蓄積できる。画像処理部１１８は、例えばＲＧＢやＣＭＹＫの色空間で表現されたビットマップデータに対して画像処理を実行する。画像メモリ１１９、画像記憶部１２０に記憶される画像データは、データ量削減のため、上記のビットマップデータをＪＰＥＧ、ＪＢＩＧ、ＰＮＧなどの画像圧縮方式により圧縮した符号データとして蓄積される。もちろん、メモリの容量が許す限り、無圧縮のビットマップデータそのものを蓄積してもよい。またビットマップデータを圧縮する圧縮方法は、ＪＰＥＧやＪＢＩＧなどの一般的な圧縮方式であっても良く、またＭＦＰ１００に留まるデータの場合は特殊な圧縮方式を用いてもよい。
【００１６】
図２は、実施形態に係るＭＦＰ１００の外観図である。
【００１７】
このＭＦＰ１００は、プリンタ１４０の上部にスキャナ１３０を配置している。給紙部２０１は、印刷に使用する用紙（シート）を格納する。ここでＭＦＰ１００は３つの給紙部を有しているが、給紙部の数は３つに限らない。搬送ローラ２０２は、給紙部２０１に格納されている用紙を印刷部２０３に給送する。この際、後述の用紙重ね量が設定されている場合は、先行する用紙に、後続の用紙の一部が重なるようにして搬送する。印刷部２０３は、給送されてきた用紙に画像を印刷する。印刷部２０３は、インクを用紙に吹き付けて画像を印刷するインクジェット方式、或いはトナーを用紙に定着させて画像を印刷する電子写真方式を採用していてもよい。印刷部２０３によって画像が印刷された用紙は、搬送ローラ２０４を経て排紙トレイ２０５に排紙される。両面印刷の場合、第１の面に画像が印刷された用紙は、搬送ローラ２０４ではなく給送ローラ２０６，２０７を経て一度トレイ２０８に送られた後に、逆回転した給送ローラ２０７と２０９によって両面印刷用搬送パス２１０に送られる。そして、この用紙は、搬送ローラ２１１を経由して、再び印刷部２０３に送られ、その用紙の第２の面に画像が印刷される。ステープル装置２１２は、排紙トレイ２０５に出力された用紙をステープルすることができる。
【００１８】
実施形態では、スキャナ１３０で得られた画像データ、又はネットワークＩ／Ｆ１１５を介して受信したＰＤＬ（ページ記述言語）データをＣＰＵ１１１でレンダリングした画像データから、画像処理部１１８により必要な画像処理を施した画像データを得る。そして、この画像データ（ビットマップデータ）を圧縮した符号データとして画像メモリ１１９を経由して画像記憶部１２０に蓄積する。そして印刷を実行する際は、この画像記憶部１２０に蓄積された符号データを画像メモリ１１９に読み出し、画像処理部１１８により復号、及び印刷に適した画像処理を実施する。そして、その変換後の画像データ（ビットマップデータ）をプリンタ１４０に出力して印刷させる。
【００１９】
尚、実施形態では、白黒２値のビットマップデータとしてプリンタ１４０に出力する例で説明するが、本発明は、プリンタ１４０に出力する画像データを白黒２値のビットマップデータに限定するものではない。また実施形態では、白黒２値の画像データをＪＢＩＧで圧縮した画像データとして処理するものとして説明するが、この画像圧縮アルゴリズムをＪＢＩＧに限定するものではない。例えば、白黒２値の圧縮方式であれば、ＭＭＲ／ＭＲ／ＭＨなどの圧縮アルゴリズムを使用してもよい。また白黒２値ではない、グレースケール、ＲＧＢ点順次の画像データの圧縮であれば、ＪＰＥＧやＰＮＧの圧縮アルゴリズムを使用してもよい。
【００２０】
図３は、実施形態に係る画像データ（ビットマップデータ）とＪＢＩＧ符号の一例を説明する図である。尚、以下で説明する動作は、ＣＰＵ１１１にて動作する制御プログラム、及び、制御プログラムによりパラメータが設定されて動作する画像処理部１１８の動作として実現される。
【００２１】
画像メモリ１１９に形成されるビットマップデータ３００は、一例として、主走査方向１２８画素、副走査方向１０００ラインの画像とする。これは、あくまでも説明のための一例であり、本発明を限定するものではない。ビットマップデータ３００をＪＢＩＧ圧縮する際、１２８ラインを１ストライプとして圧縮するために、１２８ラインごとに、ストライプデータ３０１〜３０８に区分けして符号化する。尚、ここではビットマップデータ３００は合計１０００ラインであるため、最後のストライプデータは１０４ラインで構成されている。また、図示されたビットマップ画像は「１」を黒画素、「０」を白画素とするが、「０」を黒画素、「１」を白画素としてもよい。
【００２２】
画像処理部１１８のＪＢＩＧ圧縮器は、各ストライプデータ３０１〜３０８を符号化して符号データ３０９〜３１６で示すＪＢＩＧ符号が生成される。ＪＢＩＧ符号は、符号化した１ストライプ中に、「１」のビットが全く存在しない場合は、ストライプ終了符号ＳＤＮＯＲＭ（ＦＦ０２）、或いは、ストライプ終了でのリセット符号ＳＤＲＳＴ（ＦＦ０３）だけが生成されるという特徴をもつ。つまりストライプデータ３０１〜３０２、及びストライプデータ３０６〜３０８を符号化したデータは、符号データ３０９，３１０，３１４，３１５，３１６で示すように、「ＦＦ０２」又は「ＦＦ０３」の２バイトの符号データとなる。よって、符号データ「ＦＦ０２」、「ＦＦ０３」が連続している場合、１２８ラインの余白エリアが、その連続した数分、存在することを表す。例えば、符号データ３０９，３１０は、画像データの先端から「ＦＦ０２」が２回連続しているため、その画像データの先頭の２５６（＝１２８×２）ラインが余白エリアであることを、その符号データから判別できる。
【００２３】
３０３−１は、ストライプデータ３０３を拡大して示している。このストライプデータ３０３は、１画素１ビットで表現される画像データである。図中「００」は、連続する８つの白画素（１バイト）を表しており、先頭ラインは１６バイト（１６個の「００」）で１２８画素分、即ち、１ライン分の余白を表している。３０３−１のグレー部分３２０は、ビットマップデータ３００が示す文字「Ｆ」の上辺部分に対応し、３０３−１の先頭から１４４０バイト（９０ライン）の位置から「００」が連続しないラインが現れる。つまり、ストライプデータ３０３の先頭から０でない画素が存在する位置までのバイト数をカウントし、それを１ライン分の画像データ量、１６（１２８画素／８）で割った数値が、このストライプデータ３０３を解析して得られる余白ライン数となる。従って、この例では、画像データ３００の先端から、符号データにより算出される余白分は、１２８×２と、このストライプデータ３０３の解析により算出される余白分１４４０／１６＝９０との合算値、３４６ラインの先端余白が存在すると判別できる。
【００２４】
また、この文字「Ｆ」の後端側の余白ライン数の算出には、画像メモリ１１９のビットマップデータ及び符号データの後端から同様の判定を行うことで、後端の余白ライン数を求めることができる。但し、先端の余白ライン数の計算と算出方法が異なる点は１点あり、符号データから後端の余白ライン数を算出する場合は、｛（連続する「ＦＦ０２」又は「ＦＦ０３」のカウント値−１）×１２８）｝ラインで算出される。
【００２５】
図４は、グレースケールをＪＰＥＧ圧縮する際の例を説明する図である。ここでも、文字「Ｆ」を含む画像データ４００を例に説明する。
【００２６】
ＪＰＥＧ圧縮時は、圧縮アルゴリズムの都合上、ビットマップデータを８×８画素の矩形（ブロック）に分割して圧縮する。そのため、符号データから余白ライン数を計算するアルゴリズムが異なる。また符号化の際に使用されるハフマンテーブルにより、同じデータを符号化した場合でも符号データが異なる場合がある。従って、ＪＰＥＧ符号から余白ライン数を算出する場合は、予め、使用するハフマンテーブルにより白符号を圧縮した後で算出する必要がある。或いは、事前に動的に白符号データをテスト圧縮し、テンプレートデータとして使ってもよい。例として、白データを圧縮した後の白符号データは、４１０で示すようになる。ここではブロック４０１〜４０４は白の領域であるため、その符号データは、白符号データ４０５〜４０８となる。そして文字「Ｆ」の一部が含まれるブロックの符号データは、非白符号データ４０９となる。
【００２７】
ＪＰＥＧ符号には、画像のサイズや色空間情報を識別するためのヘッダデータが付属する。画像の先端位置は、ブロック４０１の位置からで、「Ａ２８Ａ２８００」４１１が連続する。このパターンの連続性をカウントすることにより、８×８画素ブロックの白データの個数がわかり、これから余白ライン数を算出することができる。
【００２８】
図５は、実施形態に係るＭＦＰ１００による印刷ジョブの実行時の処理を説明するフローチャートである。尚、このフローチャートで示す処理は、ＣＰＵ１１１がＲＡＭ１１２に展開したプログラムを実行することにより達成される。
【００２９】
尚、実施形態では、画像データの蓄積時に余白量を計算せず、印刷の実行時に余白量を計算する例で説明するが、画像データの蓄積時に、その画像データの先端、及び後端の余白量を計算して記憶しておくようにしても良い。また実施形態では、画像データの回転処理を行わない例で説明するが、画像データを回転した後、再度、符号化を実施して、余白量を計算してもよい。また画像データを回転する場合は、符号データからの余白ライン数の算出を行わず、ビットマップデータの解析のみで余白ライン数を算出するようにしてもよい。
【００３０】
この処理は、印刷ジョブの開始がユーザによって指示されることにより開始される。まずＳ５０１でＣＰＵ１１１は、その印刷ジョブの情報を取得する。この印刷ジョブの情報には、印刷を実施するページ数、カラー或いはモノクロ印刷の情報、印刷する画像データの画像サイズ、印刷を実行する用紙サイズなどの情報が含まれる。次にＳ５０２に進みＣＰＵ１１１は、その印刷ジョブにより印刷される総印刷ページ数を取得して、ＲＡＭ１１２に確保した変数Ｐｍａｘに保存する。次にＳ５０３に進みＣＰＵ１１１は、印刷済みのページ数を保存するＰｐをＲＡＭ１１２に変数として確保し、そのＰｐを「０」で初期化する。尚、これら変数Ｐｐ，Ｐｍａｘの値は、印刷ジョブの終了判定に使用される。次にＳ５０４に進みＣＰＵ１１１は、先行する用紙の後端余白ライン数を保存する変数Ｗ＿ｐｒｅｂをＲＡＭ１１２に確保し、それを「０」で初期化する。
【００３１】
尚、実施形態では、先行する用紙の後端余白数と、後続する用紙の先端余白数の小さい方を、重ね搬送可能な余白量として使用する。
【００３２】
次にＳ５０５に進みＣＰＵ１１１は、印刷が終了したかどうかを判定するために、ＰｍａｘとＰｐとを比較し、Ｐｍａｘの値とＰｐの値とが一致すれば印刷が終了したものとして、この処理を終了する。一方、Ｓ５０５でＰｍａｘの値とＰｐの値とが一致しなかった場合は、後続ページの印刷が必要であるためＳ５０６に進む。Ｓ５０６でＣＰＵ１１１は、次に印刷する用紙の先端余白ライン数（Ｗ＿ｔ）を求める。次にＳ５０７に進みＣＰＵ１１１は、次に印刷する用紙の後端余白ライン数（Ｗ＿ｂ）を求める。尚、Ｓ５０６，Ｓ５０７の処理の詳細は、図６〜図９のフローチャートを参照して後述する。
【００３３】
こうしてＳ５０６，Ｓ５０７を実行した後Ｓ５０８に進みＣＰＵ１１１は、先行する用紙の後端余白ライン数（Ｗ＿ｐｒｅｂ）と、Ｓ５０６で求めた先端余白ライン数（Ｗ＿ｔ）とを比較する。これは前述したように、先行する用紙の後端余白ライン数と、後続の用紙の先端余白ラインの小さい方を、重ね搬送可能な余白量とするためである。Ｓ５０８での比較の結果、先端余白ライン数（Ｗ＿ｔ）と前ページの後端余白ライン数（Ｗ＿ｐｒｅｂ）の内、小さい方の余白量をプリンタ１４０に通知する。即ち、先端余白ライン数（Ｗ＿ｔ）の方が小さい場合はＳ５０９に進みＣＰＵ１１１は、重ね搬送可能な余白量として先端余白ライン数（Ｗ＿ｔ）をプリンタ１４０に通知する。一方、先行する用紙の後端余白ライン数（Ｗ＿ｐｒｅｂ）の方が小さい場合はＳ５１０に進みＣＰＵ１１１は、重ね搬送可能な余白量として、先行する用紙の後端余白ライン数（Ｗ＿ｐｒｅｂ）をプリンタ１４０に通知する。尚、この重ね搬送可能な余白量を受取って印刷を実行するプリンタ１４０の処理は、図１０のフローチャートを参照して後述する。
【００３４】
尚、実施形態では、Ｗ＿ｐｒｅｂ、Ｗ＿ｔ、Ｗ＿ｂは、いずれも余白エリアのライン数としているが、本発明は、これに限定するものではない。例えば、ｃｍやｍｍ等の長さの単位に変換して通知してもよい。また或いは、用紙全体を複数のブロックに分割し、どのブロックまで重ね合わせ可能というように、ブロック単位に換算して通知してもよい。
【００３５】
こうしてＳ５０９或いはＳ５１０を実行した後Ｓ５１１に進み、ＣＰＵ１１１は、次ページの余白量を求めるために、Ｓ５０７ｄｅ求めた後続の用紙の後端余白ライン数（Ｗ＿ｂ）を、先行の用紙の後端余白ライン数（Ｗ＿ｐｒｅｂ）に記憶する。次にＳ５１２に進みＣＰＵ１１１は、１ページの印刷処理を実行した後、印刷済みページ数Ｐｐをカウントアップ（＋１）する。そしてＳ５１３に進みＣＰＵ１１１は、次のページのデータを処理するために印刷ページ情報を取得してＳ５０５に戻る。
【００３６】
以上の処理を繰り返すことにより、印刷ジョブの先頭ページから最終ページまでの印刷を、先行する用紙の後端側と後続の用紙の先端側とを重ね合わせて搬送する先行給紙を行いながら実行することができる。尚、印刷ジョブの先頭ページについての重ね合わせは、重ね合わせる対象のページが存在しない。従って、プリンタ１４０に通知したとしても、プリンタ１４０で無視されるという前提である。また或いは、印刷ジョブの先頭ページの場合は、重ね合わせライン数をプリンタ１４０に通知しないようにしても良い。また印刷ジョブの最終ページの場合も後端余白のライン数の計算を行っているが、印刷ジョブの最終ページの場合は、先行する用紙の後端余白を重ねる対象の用紙の給紙（印刷データも存在しない）がないため、その処理は不要となる。
【００３７】
図６及び図７は、図５のＳ５０６の先端余白ライン数の算出処理を説明するフローチャートである。尚、この実施形態では、原稿が白紙を含んでいた場合、即ち、１ページの画像データが全て白の場合を考慮していないが、例えば白紙が含まれる場合は、前述の先端余白量及び後端余白量を、その白紙の用紙サイズの半分の位置として計算する。
【００３８】
まずＳ６０１でＣＰＵ１１１は、先端余白ライン数を保存する変数Ｗ＿ｔをＲＡＭ１１２に確保し、それを「０」で初期化する。次にＳ６０２に進みＣＰＵ１１１は、画像データの詳細が含まれたジョブ情報を取得する。次にＳ６０３に進みＣＰＵ１１１は、画像情報を取得するために必要な符号データの読み出し用の符号データメモリを画像メモリ１１９に確保する。次にＳ６０４に進みＣＰＵ１１１は、その符号データを復号した画像データを格納する画像データメモリを画像メモリ１１９に確保する。そしてＳ６０５に進みＣＰＵ１１１は、画像記憶部１２０に格納されている符号データを符号データメモリに読み出す。そして、その符号データを画像処理部１１８のＪＢＩＧ復号器を使用してビットマップデータに復号し、そのビットマップデータを画像データメモリに格納する。具体的な例としては、符号データメモリに配置されるデータは図３の３０９〜３１６で、画像データメモリに配置されるデータは図３の３０１〜３０８となる。
【００３９】
次にＣＰＵ１１１は、さらに必要な変数をＲＡＭ１１２に確保して初期化を実行する。まずＳ６０６でＣＰＵ１１１は、ストライプ終了符号連続数ＭＣ＿ｎｕｍをＲＡＭ１１２に確保し「０」で初期化する。このＭＣ＿ｎｕｍは、実施形態では、ＪＢＩＧ圧縮された例として説明するため、ＪＢＩＧ符号のＳＤＲＳＴ，ＳＤＮＯＲＭの連続する数をカウントする変数である。次にＳ６０７に進みＣＰＵ１１１は、１ストライプのライン数を示す変数ＳｔｒｉｐｅＬｉｎｅをＲＡＭ１１２に確保し「１２８」で初期化する。これはＪＢＩＧ圧縮時のパラメータであり、変更可能である。一般的なＪＢＩＧ符号は１２８ラインが推奨されており、本実施形態もそれに倣う。
【００４０】
こうして必要な変数の確保及び初期化を行った後、Ｓ６０８に進みＣＰＵ１１１は、ジョブ情報を参照して、印刷ジョブの画像データがＰＤＬで記述されているかどうか判定する。ここでＰＤＬで記述されていないと判定するとＳ６１４（図７）に進み、ＰＤＬで記述されていると判定するとＳ６０９に進む。これは、コピージョブの場合、スキャナ１３０が原稿を読み取って得られた画像データを印刷するが、スキャナ１３０は、読み取りに使用するＣＣＤやＣＩＳ等のセンサの読み取り誤差がある。また読み取り時の光源のムラもあり、完全な白データが保証できないため、余白量を算出することが困難なためである。また、これは現状のハードウェア制御に依存した処置であるため、将来的なスキャナの技術的な進歩により、コピー時にも符号データから余白ライン数を算出することが可能となった場合はこの限りではない。
【００４１】
Ｓ６０９〜Ｓ６１３の処理は、符号データから余白ライン数を算出するための処理である。Ｓ６０９でＣＰＵ１１１は、オフセット位置ＯｆｆをＲＡＭ１１２に確保し、それを「０」で初期化する。これは、符号データメモリの先頭からのオフセット位置を指定するものである。次にＳ６１０に進みＣＰＵ１１１は、符号データメモリからオフセット位置Ｏｆｆのデータを２バイト取得する。そしてＳ６１１に進みＣＰＵ１１１は、その２バイトのデータが「０ｘＦＦ０２」或いは「０ｘＦＦ０３」かどうか判定する。これは図３を参照して前述したように、「０ｘＦＦ０２」或いは「０ｘＦＦ０３」は、１２８ライン分の余白エリアが存在してることを示している。Ｓ６１１で「０ｘＦＦ０２」或いは「０ｘＦＦ０３」であると判定するとＳ６１２に進みＣＰＵ１１１は、ストライプ終了符号連続数ＭＣ＿ｎｕｍを１カウントアップする。そしてＳ６１３に進みＣＰＵ１１１は、オフセット位置Ｏｆｆを２カウントアップ（２バイトずつ読み出すため）してＳ６１０に進む。
【００４２】
一方、Ｓ６１１でＣＰＵ１１１は、「０ｘＦＦ０２」、「０ｘＦＦ０３」以外のデータであると判定すると、余白以外のデータであると判定してＳ６１４に進み、画像データの解析処理に移行する。
【００４３】
ここで、例えば符号データメモリに読み出された符号データが、図３の３０９〜３１６であった場合、オフセット位置Ｏｆｆは「４」、ストライプ終了符号連続数ＭＣ＿ｎｕｍが「２」となる。
【００４４】
次に図７に進みＳ６１４でＣＰＵ１１１は、ビットマップデータの解析のための主走査画素数Ｐｉｘをジョブ情報から取得する。図３の画像データの場合は「１２８」である。そしてＳ６１５に進みＣＰＵ１１１は、その主走査画素数Ｐｉｘを「８」で除算し、その結果を、ＲＡＭ１１２に確保されている主走査方向のバイト数Ｂｎｕｍ＿ｍに記憶する。これは、ビットマップデータが白黒２値画像データであるため、１画素を１ビットで表現していることに起因する。尚、実施形態では、１画素を１ビットとして計算するが、例えば１画素を２ビット、４ビット等、１ビット以外の数値としても構わない。また、例えばＪＰＥＧ圧縮符号データを復号した後のＲＢＧ２４ビットのビットマップデータであれば３バイトと固定値としてもよい。
【００４５】
次にＳ６１６に進みＣＰＵ１１１は、ビットマップデータ解析のためのオフセット位置を算出する。この算出の方法として、前段で計算された、ストライプ終了符号連続数ＭＣ＿ｎｕｍ、ＳｔｒｉｐｅＬｉｎｅ及び主走査方向のバイト数Ｂｎｕｍ＿ｍを用いる。（ＭＣ＿ｎｕｍ）×（ＳｔｒｉｐｅＬｉｎｅ）が余白ライン数であり、この余白ライン数に、１ラインのバイト数Ｂｎｕｍ＿ｍを乗算した値がオフセット位置となる。こうして求めたオフセット位置の計算値を、ＲＡＭ１１２に確保した変数Ｏｆｆ＿ｉに記憶する。
【００４６】
次にＳ６１７に進みＣＰＵ１１１は、画像データの副走査ライン数Ｌを取得する。これは、ビットマップエリア外を算出対象としないための保護処理である。次にＳ６１８に進みＣＰＵ１１１は、ＲＡＭ１１２に確保している、画像データの白が連続する回数をカウントするための変数Ｂｎｕｍ＿ｔを「０」で初期化する。そしてＳ６１９に進みＣＰＵ１１１は、画像データの解析開始位置Ｏｆｆを、オフセット位置Ｏｆｆ＿ｉのオフセット位置とする。こうして、画像データの解析開始位置Ｏｆｆを、符号データメモリの解析によって得られた余白分スキップさせることで、余白量の決定処理の高速化を図っている。
【００４７】
次にＳ６２０に進みＣＰＵ１１１は、解析開始位置Ｏｆｆのデータが白かどうか判定する。そうであればＳ６２１に進みＣＰＵ１１１は、白が連続する回数を示す変数Ｂｎｕｍ＿ｔを＋１する。次にＳ６２２に進みＣＰＵ１１１は、ビットマップデータの後端まで調べ終わったかどうか判定し、後端でなければＳ６２３に進み、解析開始位置Ｏｆｆを＋１してＳ６２０に進む。Ｓ６２０〜６２３まで処理は、白以外のデータに行き当たるまでループし、白が連続する回数を示す変数Ｂｎｕｍ＿ｔを計算する。
【００４８】
Ｓ６２２でビットマップデータの後端まで調べ終わったか、或いは、Ｓ６２０で解析開始位置Ｏｆｆのデータが白でないときはＳ６２４に進む。Ｓ６２４でＣＰＵ１１１は、Ｂｎｕｍ＿ｔをＢｎｕｍ＿ｍで除算した数値が、ビットマップメモリから算出される連続する白ライン数であるため、これと符号データ解析によって算出される余白ライン数とを加算した数値を、先端余白ライン数Ｗ＿ｔとする。そして、この処理を終了する。
【００４９】
尚、実施形態では、１バイトずつビットマップデータを読み出して解析する処理として説明したが、本発明はこれに限定されない。ＣＰＵ１１１と接続されたＲＡＭ１１２のメモリバスによっては、２バイト、４バイトを同時に読み出して判定するほうが高速な場合もあり得る。また１２８ライン単位などのストライプ単位での余白長のみが必要な場合は、ビットマップデータの解析を飛ばして、余白長を計算するようにしても良い。ビットマップデータの解析においては、０ｘ００を白画素のデータとして白画素の判定を行ったが、グレースケールビットマップの場合は０ｘＦＦ、ＲＧＢビットマップの場合は０ｘＦＦＦＦＦＦのように、画像データの色空間によって、Ｓ６２０の判定条件をかえてもよい。
【００５０】
図８及び図９は、図５のＳ５０７の後端の余白ライン数の計算処理を説明するフローチャートである。この後端余白ライン数の算出処理の原理は、前述の先端余白ラインの算出処理と同じ原理であるため、差分のある点を重点的に説明する。
【００５１】
まずＳ８０１〜Ｓ８０７の処理は、後端余白ライン数Ｗ＿ｂを初期化する点のみが異なるだけで、前述のＳ６０１〜Ｓ６０７の処理と同じである。ここでは、各種変数の初期化と必要なデータ及びメモリの確保、更に、画像データのデコード処理等を実施する。画像データのデコード、及び符号データの読み出しは、先端余白ラインの計算処理を実行した後に、この後端余白ライン数の計算処理を実施するため、前述の先端余白ラインの計算処理で使用した変数やメモリをそのまま使用してもよい。また、この画像データ及び符号データは、そのまま印刷データをプリンタ１４０に渡すデータとして使用してもよい。
【００５２】
Ｓ８０８でＣＰＵ１１１は、符号データメモリの後端判定処理に必要な符号データサイズＳｉｚｅ＿ｃｏｄｅを取得する。この符号データサイズは、画像記憶部１２０から画像メモリ１１９に確保された符号データメモリに符号データを読み出した際に、ファイルシステムから取得されるファイルサイズを用いる。
【００５３】
次にＳ８０９に進みＣＰＵ１１１は、図６のＳ６０８と同様に、ＰＤＬデータかどうか判定する。ここではＰＤＬで記述されていない画像データを含む印刷ジョブに対して、符号メモリからの余白ライン数算出を実施しないように判定する。Ｓ８１０〜Ｓ８１５は、符号データから後端余白ライン数を算出する処理である。
【００５４】
まずＳ８１０でＣＰＵ１１１は、オフセット位置Ｏｆｆの初期化を行う。ここでは後端余白ライン数を算出するため、符号データの後端から処理を行う。従って、オフセット位置Ｏｆｆを、Ｓ８０８で取得した符号データサイズＳｉｚｅ＿ｃｏｄｅよりも「２」小さい（Ｓｉｚｅ＿ｃｏｄｅ−２）とする。この「−２」は、ＪＢＩＧのマーカコードが「ＦＦ０２」、「ＦＦ０３」の２バイトであることに起因している。もし他の符号、例えばＪＰＥＧなどの場合、図４の例では、「Ａ２８Ａ２８００」の数をカウントするため、４をオフセットした位置から検索を実施する。
【００５５】
次にＳ８１１に進みＣＰＵ１１１は、符号データメモリの先端からのオフセット位置Ｏｆｆのデータを２バイト取得する。図３の例でいえば、符号３１６のデータが取得される。そしてＳ８１２に進みＣＰＵ１１１は、その２バイトのデータが「０ｘＦＦ０２」或いは「０ｘＦＦ０３」かどうか判定する。そうであればＳ８１３に進みＣＰＵ１１１は、
て、ストライプ終了符号連続数ＭＣ＿ｎｕｍの値を＋１する。ＪＢＩＧ符号では、符号の終端に必ず「０ｘＦＦ０２」又は「０ｘＦＦ０３」が存在するため、データの末端に余白が存在しなかったとしても、必ず１つのストライプ終了符号連続数ＭＣ＿ｎｕｍが存在する。従って、１回は必ず、Ｓ８１３以降の処理が実施される。この後端１回分の判定処理は、Ｓ８１０でオフセットされる位置を−４バイトの位置にし、Ｓ８０６の初期化を「０」ではなく「１」で初期化することによってスキップできる。実施形態では、先端余白ライン数の算出処理との共通化のため、同じ初期化を実施して説明を省略する。この後端の余白ライン数の三種処理における「ＦＦ０２」、「ＦＦ０３」の判定処理と回数のカウント処理は、前述の先端余白ラインの数の算出処理と同じであるが、Ｓ８１４で、オフセット位置Ｏｆｆを２ずつデクリメントしていくことが異なる。そしてＳ８１５でオフセット位置Ｏｆｆが０以下となったときは、符号データメモリの先端まで調べて全てが白データであることが算出されたものとしてＳ８１６（図９）に進む。しかし、前述したように、全てが白データである場合は別の手段により検出し、先端、後端の余白ライン数の算出処理を飛ばしてもよい。
【００５６】
Ｓ８１９〜Ｓ８１８の処理は、Ｓ８１６で、処理終了判別のために画像データの副走査ライン数Ｌをジョブ情報より取得する点以外は、前述の先端余白ライン数の算出処理のＳ６１４〜Ｓ６１５と同等であるため、その説明を省略する。
【００５７】
次にＳ８１９に進みＣＰＵ１１１は、画像メモリ上のビットマップデータの後端位置を示すオフセット位置Ｏｆｆを算出する。これは、Ｓ８１６で取得した副走査ライン数Ｌと主走査方向のバイト数Ｂｎｕｍ＿ｍの乗算値から、（ＭＣ＿ｎｕｍ−１）×ＳｔｒｉｐｅＬｉｎｅ×Ｂｎｕｍ＿ｍを引いた値から、更に−１して計算される。これは、符号データメモリから解析された、後端余白ラインの位置を処理対象から外し、計算を高速に行うためである。
【００５８】
次にＳ８２０に進みＣＰＵ１１１は、後端白画素バイト数Ｂｎｕｍ＿ｂをＲＡＭ１１２に確保し、それを「０」で初期化する。そしてＳ８２１に進みＣＰＵ１１１は、画像メモリの後端からオフセット位置Ｏｆｆのデータを画像メモリから読み出し、それが「０」（白）か否か判定する。ここで「０」であると判定した場合はＳ８２２に進みＣＰＵ１１１は、後端白画素バイト数Ｂｎｕｍ＿ｂを＋１する。そしてＳ８２３に進みＣＰＵ１１１は、オフセット位置Ｏｆｆを−２する。これは判定位置を後端から先端方向に２バイト分進めるためである。そしてＳ８２４に進みＣＰＵ１１１は、画像メモリの先端までビットマップデータを判定し終わったかどうか判定する。こうしてＳ８２１〜Ｓ８２４の処理をループすることで、ビットマップデータの後端から先端に向けて、白でない画素値がある位置までのバイト数を算出する。
【００５９】
こうしてＳ８２４で画像メモリの先端までビットマップデータを判定したか、或いはＳ８２１でオフセット位置Ｏｆｆのデータが「０」でないときはＳ８２５に進む。Ｓ８２５でＣＰＵ１１１は、後端余白ライン数Ｗ＿ｂを、｛Ｂｎｕｍ＿ｂ／Ｂｎｕｍ＿ｍ＋（ＭＣ＿ｎｕｍ−１）／ＳｔｒｉｐｅＬｉｎｅ×Ｂｎｕｍ＿ｍ｝で算出する。これにより、後端余白ライン数を求めることができる。これらのビットマップデータからの余白量計算と、ビットマップデータからの余白量計算は、画像データの高解像度化が進めば進むほど処理効率が高くなる。
【００６０】
例えば、Ａ４（２１０ｍｍｘ２９７ｍｍ）の横向き画像の場合で考える。そして、６００ｄｐｉとして計算した場合で、先端１２８ラインに存在する余白を算出する例で説明する。ビットマップデータから解析する場合、（７０１５画素×１２８ライン／８）で得られた１１２２４０バイトのデータを読み出して、「０」以外のデータが存在するかどうかを調べなくてはならない。これに対して符号データの解析であれば、高々、２バイトの判定で済む。また１２００ｄｐｉの場合は、（１４０３０×１２８／８＝２２４４８０）バイトのデータを解析して白画素を判定しなければならず、高解像度のデータの余白ライン数を算出する際に有効な方法となる。
【００６１】
また画像データの解像度に応じて、ビットマップデータの解析のみで余白ライン数を求めるか、或いは、ビットマップデータの解析で余白量を求めないかを切り替えるようにしても良い。
【００６２】
以上説明したように実施形態によれば、ビットマップデータの解析量、ＲＡＭ１１２へのアクセス回数、ＣＰＵの演算回数等を減らして、高速に余白ライン数を求めることができる。
【００６３】
次に実施形態に係るプリンタ１４０の動作を説明する。このプリンタ１４０は、用紙重ね量が設定されている場合は、印刷時、先行する用紙に、後続の用紙の一部が重なるようにして搬送することを前提としている。
【００６４】
図１０は、実施形態に係るプリンタ１４０による印刷処理を説明するフローチャートである。この処理は、制御部１１０から出力される印刷データと、図５のＳ５０９或いはＳ５１０で重ね領域を示すデータをプリンタ１４０が受取ることにより開始される。
【００６５】
まずＳ１００１でプリンタ１４０は、印刷データの最初のページを印刷する先行シートの給紙を開始する。つぎにＳ１００２でシート検知センサで、そのシートの先端が検知されるのを待ってＳ１００３に進み、そのシートの斜行を補正する。そしてＳ１００４に進み、そのページの印刷データに基づいて、そのシートの頭出しを行う。そしてＳ１００５で、そのシートへの印刷を開始する。
【００６６】
次にＳ１００６に進みプリンタ１４０は、次のページの印刷データがあるかどうか判定し、次のページの印刷データが無いと判定すると、そのページの印刷終了を待ち、印刷済のシートを排紙して、この処理を終了する。一方、次のページの印刷データがあると判定するとＳ１００７に進み、次のページの印刷データを印刷する後続のシートの給紙を開始する。そしてＳ１００８でシート検知センサで、後続シートの先端が検知されるのを待ってＳ１００９に進み、後続のシートの先端部を先行するシートの後端部に、指定された重ね領域に相当する長さ分重なるように後続のシートを給紙する。そしてＳ１０１０で、その後続シートの斜行を補正する。
【００６７】
次にＳ１０１１に進み、先行シートへの印刷が終了したかどうか判定し、先行シートへの印刷が終了したときはＳ１０１２に進み、後続シートの頭出しを行う。そしてＳ１０１３で、後続シートへの印刷を開始する。そして１０１４に進み，Ｓ１００６と同様に、次のページの印刷データがあるかどうか判定し、次のページの印刷データがあると判定するとＳ１００７に進み、前述と同様の処理を実行する。一方、次のページの印刷データが無いときはＳ１０１５に進み、そのページの印刷終了を待ち、Ｓ１０１６で印刷済のシートを排紙して、この処理を終了する。
【００６８】
尚、上述の実施形態では、全てが「０」でない符号を発見した後、その符号における連続する余白ラインの数を求め、その求めた余白ライン数と、それまでに連続していた全て「０」を示す符号に対応するライン数との合計で余白量を求めていた。しかし、全てが「０」でない符号を発見したとき、それまでに連続していた全て「０」を示す符号の数だけから先端或いは後端側の余白量を求めても良い。これは例えば前述のＪＢＩＧ圧縮された符号の例では、１つの符号は１２８ラインに対応している。従って、全てが「０」でない符号を発見するまでの連続する符号の数で余白量を求めると、上述の実施形態で求めた余白量との誤差は最大１２８ライン分となる。これは、例えば１６００ｄｐｉで印刷する場合、その長さは２５．４ｍｍ×（１２８／１６００）＝２．０３２となり、その誤差は約２ｍｍとなる。従って、全てが「０」でない符号を発見したとき、それまでに連続していた全て「０」を示す符号の数だけから先端或いは後端側の余白量を求めても、それほど支障はないと考えられる。
【００６９】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７０】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００７１】
１００…複合機（ＭＦＰ），１１１…ＣＰＵ、１１２…ＲＡＭ、１１３…ＲＯＭ、１２０…画像記憶部、１１８…画像処理部、１１９…画像メモリ、１３０…スキャナ、１４０…プリンタ、１５０…操作部
【図１】
2019098673.tif 000003
【図２】
2019098673.tif 000004
【図３】
2019098673.tif 000005
【図４】
2019098673.tif 000006
【図５】
2019098673.tif 000007
【図６】
2019098673.tif 000008
【図７】
2019098673.tif 000009
【図８】
2019098673.tif 000010
【図９】
2019098673.tif 000011
【図１０】
2019098673.tif 000012