以下、添付図面を参照して本発明の好適な実施の形態を例示的に詳細に説明する。但し、この実施の形態に記載されている構成要素の相対配置、装置形状等は、あくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
(実施形態1)
本実施形態では、画像処理装置の一例として、画像処理装置を含む画像形成装置を例に挙げて説明する。
図1は、本発明の一実施形態に係る画像形成装置100のハードウェアの構成の一例を表す図である。なお、本実施形態では、画像形成装置100として、印刷機能を有するプリンタを例に挙げて説明する。プリンタとしては、例えば、印刷機能のみを有するシングルファンクションプリンタであってもよいし、また、例えば、印刷機能、FAX機能、スキャナ機能等の複数の機能を有するマルチファンクションプリンタであってもよい。また、画像形成装置は、プリンタに限定されず、例えば、印刷機能とその他の機能を複合した複合機や、記録紙上に画像やパターンを形成する製造装置等であってもよい。
画像形成装置100は、図1に示すように、中央処理装置(CPU)101と、ROM102と、RAM103と、操作部104と、通信部105と、記録部106と、表示部107とを有する。なお、これらはシステムバスを介して互いに接続されている。
CPU101は、ROM102に記憶されているプログラムに従って、RAM103、通信部105、記録部106、操作部104及び表示部107を制御する。
ROM102は、CPU101が実行する各種制御プログラムや印刷装置100の各種動作に必要な固定データを格納する。例えば、印刷装置100の記録(印刷)処理を実行するプログラムを記憶する。
RAM103は、CPU101の作業エリアとして用いられたり、種々の受信データの一時格納領域として用いられたり、各種設定データを記憶させたりする。外部装置110から送られてくる印刷ジョブデータは、RAM103に一時的に記憶される。
通信部105は、外部装置と印刷装置100との通信を制御する。
操作部104は、電源ボタン、リセットボタンなどの各種ボタンを含み、ユーザが印刷装置100を操作する際に使用される。表示部107は、例えば、タッチパネルの液晶ディスプレイで構成され、印刷装置100の状態や各種設定を表示する。ユーザは、表示部107を介して、各種設定の入力を行うこともできる。表示部107は、操作指示の受付や装置状態の表示を行う。なお、本実施形態では、操作部104の少なくとも一部と表示部107がタッチパネルから構成され、一体となっている。
画像処理部108は、受信した印刷ジョブデータに対して画像処理を実行し、画像データを生成する。
記録部(印刷部)106は、後述するプリンタエンジン部を有する。記録部106は、画像データに基づいて記録媒体に画像を形成する。
画像形成装置100は、外部装置110とネットワーク等を介して接続可能であり、例えば、外部装置110から印刷ジョブデータを含む印刷ジョブを受信する。
図2は、本実施形態に係る画像形成装置における画像処理部の制御構成を説明するためのブロック図である。
画像形成装置100の画像処理部は、外部装置110から入力される印刷ジョブの受信・制御を行うジョブ制御部202と、印刷用画像を生成するラスタライズ部203と、を含む。
図15を用いて、図1に示した画像形成装置100に含まれる画像処理部の構成について説明する。本実施形態では、図15(a)に示すように、ジョブ制御部202およびラスタライズ部203はそれぞれ独立した構成とし、ジョブ制御部202がシステムバスを介して表示部107及びプリンタエンジン部105と接続されるものとする。なお、これに限定されるものではなく、例えば、図15(b)に示すように、ラスタライズ部203が、ジョブ制御部202に組み込まれた構成とし、ジョブ制御部202がシステムバスを介して表示部107及びプリンタエンジン部105と接続されていてもよい。また、本実施形態では、画像処理部は、画像形成装置が備えるものとしたが、図15(c)に示すように、ジョブ制御部202およびラスタライズ部203のみとしてもよい。例えば、画像処理装置は、外部装置110、表示部107、及びプリンタエンジン部105とは分離した構成としてもよい。
ジョブ制御部202は、印刷ジョブ受信部206と、ジョブを保持するスプーラ部207と、ジョブを管理するスプーラ管理部208と、ラスタライズ部203と通信を行う通信部213と、を有する。また、ジョブ制御部202は、効率的なラスタライズ処理を行うため、ジョブ解析部209と、ジョブ調停範囲決定部210と、ジョブ処理負荷推定部211と、ジョブ調停部212を有する。
印刷ジョブ受信部206では、外部装置110から入力された印刷ジョブを受信し、スプーラ部207へ格納する。
スプーラ部207は、受信した印刷ジョブ及びラスタライズ部203で生成されるラスタライズデータを格納する。また、印刷ジョブ内容と各処理ステージ負荷とを対応付けた負荷管理の情報を負荷管理テーブルとして格納する。負荷管理テーブルは、詳細は後述するが、各処理ステージの負荷を推定するために用いられる。また、スプーラ部207は、印刷ジョブの処理順序を決定するための調停管理情報が調停管理テーブルとして格納される。調停管理テーブルは、負荷カテゴリ毎に最適な調停方法が管理されており、詳細は後述するが、印刷ジョブの処理順序を決定するために用いられる。
スプーラ管理部208は、スプーラ部207に格納された印刷ジョブが即ラスタライズ処理されるものか、未ラスタライズ状態で保持されるものかを管理する。更に、スプーラ管理部208は、スプーラ部207に格納された未ラスタライズ状態の印刷ジョブの量、及び未ラスタライズ状態の印刷ジョブの量が閾値に到達したかを管理する。
ジョブ解析部209は、受信した印刷ジョブを解析し、PDFやJPEGといったジョブデータの種別やサイズ、ラスタライズ部203で実施される処理内容などを取得する。ジョブ調停範囲決定部210は、スプーラ管理部208で監視される未ラスタライズ状態の印刷ジョブが閾値に到達した場合に、ジョブの処理順を決定する範囲を定める。
ジョブ処理負荷推定部211は、ジョブ解析部209の解析結果とスプーラ部207に格納される負荷管理テーブルの情報に基づいて、印刷ジョブ毎の各処理ステージ負荷を推定する。ここで、負荷が高いとは、ラスタライズ部203における処理時間が長いものを指す。各印刷ジョブの設定内容と負荷管理テーブルの情報により、ジョブ毎に負荷タイプがカテゴライズされる。ジョブ調停部212では、ジョブ処理負荷推定部211でカテゴライズされたジョブ毎の負荷タイプと、スプーラ部207に格納される調停管理テーブルの情報によって印刷ジョブの処理順序を決定する。印刷ジョブの処理順序は、ジョブ調停範囲決定部210で定められた範囲に対して行う。
ラスタライズ部203は、ジョブ制御部202と通信を行う通信部216と、補正処理を施す画像補正部217と、印刷用の画像データを生成するRIP部218と、印刷ジョブ設定に適合するように画像データの整形を行う回転・面付部219とを有する。通信部216、画像補正部217、RIP部218、及び回転・面付部219には、それぞれ異なるプロセッサ(CPU)215が割り当てられる。なお、画像補正部217は、例えば、赤目補正等の補正を行う。ラスタライズ部203は、通信部216を介して印刷ジョブを受信し、各印刷ジョブデータに対して実行する画像処理を複数の処理プロセスに分割し、これらの処理を順に行う。これにより、印刷ジョブデータからビットマップデータを生成する。なお、本実施形態では、ラスタライズ部203は、印刷ジョブデータに対して実行する画像処理を画像補正処理、RIP処理、回転・面付け処理に分割する。ここで、ラスタライズ部203では、分割した複数の処理プロセスをパイプライン処理する。ラスタライズ部203におけるパイプライン処理とは、それぞれ重複しない処理プロセスを同時に(並行して)実行する処理方式であり、各処理プロセスにおける処理対象のページは、互いに異なるページである。具体的には、画像補正処理中の3ページ目と、RIP処理中の2ページ目と、回転・面付け処理中の1ページ目を並行して処理する。なお、同じページに対して異なる処理プロセスを実行(例えば1ページ目の画像補正処理と、1ページ目のRIP処理を同時に実行)することはできない。
図3を用いて、図1に示すラスタライズ部203が実行可能な処理形態について説明する。ここでは、画像データの描画処理(画像処理)が、処理1、処理2、処理3の3ステージに分割された場合、逐次処理及びパイプライン処理それぞれについて処理の流れを説明する。
図3(a)は、逐次処理について示している。逐次処理では1ページ目の全処理を完了してから2ページ目、3ページ目と処理を行う。図3(b)はパイプライン処理について示している。1ページ目の処理1が完了後、1ページ目の処理2が始まると並列して2ページ目の処理1を処理する。同様に、2ページ目の処理1が完了後、3ページ目の処理1を処理する。なお、パイプライン処理では、各処理がそれぞれ別のプロセスとして動作するため複数のプロセッサを必要とする。本実施形態では、ラスタライズ部203は、逐次処理も可能であるが、高速化のためにパイプライン処理を行う。
図5を用いて、ラスタライズ部203において実行する処理について具体例を挙げて説明する。ここでは、図5(a)に示す3つの印刷ジョブ500が入力された場合について説明する。図5(a)に示す印刷ジョブ500は、それぞれジョブA、ジョブB、ジョブCとする。ジョブA及びジョブBは画像補正を行う印刷ジョブであり、ジョブCは画像補正を行わない印刷ジョブである。図5(b)にラスタライズ部203の構成の一例を示す。ラスタライズ部203は、描画処理を複数の処理ステージに分割して実行する。具体的には受信処理、画像補正処理、RIP処理、回転・面付け処理、送信処理の5つを行う。受信処理501及び送信処理505は、通信部216が行う。画像補正処理502は画像補正部217、RIP処理503はRIP部218、回転・面付け処理504は回転・面付け部219がそれぞれ実行する。各処理部の前後にはそれぞれバッファ506が設けられ、次の処理部の処理対象となるデータが格納される。各処理部はバッファ506を介して処理対象となるデータの受け渡しを行う。バッファ506は、格納されたものから順にデータ処理が開始されるデータ構造(キュー)となっている。ここで、受信処理501の後で且つ画像補正処理502の前に設けられるバッファ506を用いて、バッファ506内の領域について説明する。バッファ506のうち、画像補正処理502に最も近い領域を先頭領域、受信処理501に最も近い領域を末尾領域、先頭領域及び末尾領域以外が中間領域である。先頭領域には、次の処理部である画像補正処理502で処理される直前のデータが格納され、末尾領域には、受信処理501で処理された直後のデータが格納される。各処理部は、バッファ506の先頭領域から処理対象となるデータを取得し、処理実施後、バッファ506の末尾領域へ格納する。バッファ506は、一の処理部にとっての出力バッファであり、その次の処理部にとっての入力バッファでもある。例えば、受信処理501(通信部216)の後で且つ画像補正処理502(画像補正部217)の前に設けられるバッファ506は、受信処理501で処理した処理済みデータを出力する出力バッファであり、また、画像補正処理502へ入力するデータを格納する入力バッファでもある。
ここで、図4を用いて、ジョブ制御部202より入力された印刷ジョブに対するラスタライズ部203の処理の流れについて説明する。
ラスタライズ部203は、ジョブ制御部202から入力される印刷ジョブを、通信部216を介して受信し(S401)、ジョブの設定を確認する。具体的には、ジョブの設定が、画像補正ONとなっているか、すなわち、画像補正を行う設定となっているか判定する(S402)。
画像補正ONとなっている、すなわち、印刷ジョブに含まれる画像データに対し補正を行う設定となっている場合(S402でYes)、受信した印刷ジョブの設定に従って画像補正を行う(S403)。画像補正の完了後、RIP部218によりRIP処理を行う(S404)。
画像補正がONとなっていない、すなわち、画像データに対し補正が不要の設定となっている場合(S402でNo)、そのままRIP部218によりRIP処理を行う(S404)。
RIP処理後に生成されたデータに、印刷ジョブの設定に基づいて回転・面付け部219により回転・面付け処理を行う(S405)。すなわち、回転・面付け部219は、印刷ジョブに設定された内容に適合するように回転・面付け処理を行う(S405)。これにより、印刷用データを生成する。
生成されたデータは、通信部216を介してジョブ制御部202に送信する(S406)。
図5(c)に、図5(a)に示す印刷ジョブ500がラスタライズ部203で処理される場合の処理状況の推移を示す。ラスタライズ部203は、パイプライン化されており、かつ処理ステージの実施順は決まっている。また、ラスタライズ部203の処理部(画像補正部217、RIP部218、回転・面付け部219)毎にプロセッサが割り当てられている。プロセッサ数によるが、同じ処理ステージは並列して実行できないため、他のジョブまたはページで実行したい処理が実施されていればその処理が完了するまで、処理待機状態507が発生する。例えば、ジョブAの1ページの画像補正処理502が始まるとジョブBの1ページ目や2ページ目は、画像補正処理502を並列動作できない。そのため、ジョブAの1ページ目の画像補正処理が完了するまで、ジョブBの1ページ目は処理待機状態となる。一方、ジョブCは、画像補正を行わないジョブであり、RIP部218は、動作していないため、ジョブCの1ページ目のRIP処理503は開始可能である。したがって、RIP部218は、ジョブCの1ページ目のRIP処理503を実施する。ジョブAの画像補正処理が完了するより前に、ジョブCの2ページ目のRIP処理が登録され、ジョブCの1ページ目の後は、ジョブCの2ページ目のRIP処理が実施される。その後、ジョブCの2ページ目のRIP処理が完了すると、RIP部218は、ジョブAの1ページ目のRIP処理を開始する。
ラスタライズ部203への印刷ジョブは、ジョブAの1ページ目、ジョブBの1ページ目、2ページ目、ジョブCの1ページ目、2ページ目の順序で入力される。しかしながら、RIP処理は、ジョブCの1ページ目、2ページ目、ジョブA、ジョブBの1ページ目、2ページ目と処理される。
ここで、図6を用いて、本実施形態に係る画像処理の流れの一例について詳細に説明する。なお、CPU101は、ROM102に格納されているプログラムをRAM103にロードし、それを実行することにより、図6に示すフローチャートを実行する。外部装置110から印刷ジョブが入力されると、印刷ジョブ受信部206が入力された印刷ジョブを受信する(S601)。受信した印刷ジョブは、スプーラ部207へ格納する。
スプーラ部207に格納された印刷ジョブに対して、スプーラ管理部208がラスタライズ処理を開始するかを判定する(S602)。詳細は後述するが、所定の開始条件を満たしている場合は、ラスタライズ処理を開始すると判定する。
ラスタライズ処理を開始すると判定した場合(S602でNo)、印刷データをラスタライズ部203に入力しラスタライズを行う(S612)。
ラスタライズ処理を開始しないと判定した場合(S602でYes)、スプーラ部207に十分な印刷ジョブがあるか判定する(S603)。具体的には、スプーラ部207にスプールされている印刷ジョブの量(以下、スプール量ともいう)が所定量以上であるか判定する。なお、本実施形態では、スプール量は、スプーラ部207にスプールされた印刷ジョブ数とし、閾値は100とする。ただし、スプール量及び閾値はこれに限定されるものではなく、例えば、スプール量は印刷ジョブのデータサイズで判定してもよい。
スプーラ部207に十分な印刷ジョブがないと判定した場合、すなわち、スプール量が閾値未満である場合(S603でNo)、ユーザインタフェース部107から入力される設定値に従い、ラスタライズを開始するか判定する(S604)。具体的には、ラスタライズを開始すると判定した場合(S604でYes)、ラスタライズ処理を実行する(S612)。一方、ラスタライズを開始しないと判定した場合(S604でNo)、S603へ戻る。
スプーラ部207に十分な印刷ジョブがあると判定した場合、すなわち、スプール量が閾値以上である場合(S603でYes)、ジョブ解析部209によりスプールされている印刷ジョブを解析する(S605)。
また、スプーラ部207にスプールされた印刷ジョブのスプール量に基づいて、ジョブの調停範囲決定部210において、スプーラ部207にスプールされた印刷ジョブのうちラスタライズ部203に投入する投入順序を変更する範囲を決定する(S606)。本実施形態では、ユーザインタフェース部204から入力される設定値に従い、調停範囲は50ジョブに決定し、スプーラ部207にスプールされたジョブについて先頭から50ジョブずつジョブ調停を行う。なお、スプーラ部207にスプールされているジョブ数が調停範囲の設定値以下である場合、スプーラ部207にスプールされている全てのジョブにジョブ調停を行う。調停範囲は、所定のジョブ数としてもよいし、一定時間内にスプーラ部207に投入された範囲のジョブとしてもよい。
なお、S605のジョブ解析は、印刷ジョブを受信した直後に実施してもよいし、調停範囲が定まった後で解析を実施してもよいし、S605のジョブ解析及びS606の決定は、並行して実行してもよい。
ジョブの調停範囲決定部210において定められた範囲内の印刷ジョブについて、ジョブ解析結果を元に、ジョブ設定が全て同じであるか判定する(S607)。ここで判定に用いるジョブの設定としては、処理対象のジョブの種類(例えば、JPEG、PDF等のフォーマットの種類)、赤目補正や美肌補正等の画像補正処理の有無、レイアウト(例えば、1in1、2in1等の出力レイアウト)、A3やA4等の出力用紙サイズが挙げられる。
調停範囲内のジョブについて、処理対象ジョブの種類やレイアウトなどのジョブ設定が全て同一であれば(S607でYes)、ラスタライズ部203への投入順を変更しない(S611)。すなわち、ラスタライズ部203への投入順は、スプーラ部207への投入順そのままとする。これにより、ラスタライズ部203はスプーラ部207へ投入された順序で処理を行う(S612)。
調停範囲内のジョブについて、ジョブ設定が全て同一ではない場合、すなわち、ジョブ設定が異なった場合(S607でNo)、それぞれのジョブに対して、ジョブ処理負荷推定部211は、各ジョブの処理負荷を推定する(S608)。各ジョブの処理負荷は、スプーラ部207に格納される負荷管理テーブル情報とS605で解析した解析結果とを用いて推定する。言い換えれば、スプーラ部207に格納される負荷管理テーブル情報及びS605で解析した解析結果に基づいて、各ジョブの負荷カテゴリを特定する。なお、負荷カテゴリについては、詳細は後述する。
負荷設定後、調停対象範囲内の印刷ジョブが全て同じ負荷タイプにカテゴライズされたか判定する(S609)。
印刷ジョブの負荷カテゴリが全て同一カテゴリとなった場合(S609でYes)、投入順序の調停を行わない、すなわち、ラスタライズ部203への投入順を変更しない(S611)。すなわち、ラスタライズ部203への投入順は、スプーラ部207への投入順そのままとする。これにより、ラスタライズ部203は、投入された順にラスタライズ処理を行う(S612)。
印刷ジョブの負荷カテゴリが異なった場合(S609でNo)、ジョブ調停部212において設定された負荷カテゴリを利用してジョブの調停を行い、処理順序を決定する(S610)。本実施形態では、ラスタライズ部203は、投入された順に印刷ジョブデータに対して処理を行うため、言い換えれば、印刷ジョブデータの投入順を決定する。ジョブの調停は、スプーラ部207に格納された調停管理テーブルを用いて行う。詳細は後述するが、調停管理テーブルに設定された負荷カテゴリの調停方法に基づいて、ジョブの調停を行う。ジョブの調停が完了した後、ラスタライズ部203にジョブの調停により決定した順に印刷ジョブの印刷データを投入し、ラスタライズ部203は、投入された順にラスタライズ処理を開始する(S612)。すなわち、ラスタライズ部203は、ジョブの調停により決定された処理順序で処理を実行する。
図7を用いて、ラスタライズ部203における各処理ステージ負荷と印刷ジョブの負荷タイプの設定の関係について説明する。ラスタライズ処理は、図4で説明した通り、受信、画像補正、RIP、回転・面付け、送信の順で実施され、画像補正のみ実施可否がジョブに設定できる。
図7(a)は、画像補正がONの場合と画像補正がOFFの場合の処理負荷の違いを示す図である。画像補正を実施するジョブ700は、画像補正を実施しないジョブ701と比べて、画像補正の処理ステージ702があるため処理負荷が大きくなる。
図7(b)は、印刷ジョブのフォーマットの種類による違いを示す図である。PDFジョブ704は、JPEGジョブ703に比べ、RIP処理ステージ705の処理負荷が大きくなる。
図7(c)は、最終的な印刷データの出力レイアウトによる違いを示す図である。1in1印刷ジョブ705は、画像707のように、1枚で1枚の画像を確認できるようにレイアウトされる。2in2印刷ジョブ706は、中綴じ製本後に見開き状態で1枚の画像が確認できるように、画像708のように左右別々のデータをレイアウトされる。2in2印刷ジョブ706は、画像データが2枚必要となるため、1in1印刷ジョブ705に比べてRIPステージ709及び回転面付処理ステージ710の負荷が大きくなる。また、出力レイアウトが同じ1in1でも、最終的な出力用紙サイズが異なる場合、例えばA3とA4では、A3の方がRIP709及び回転面付処理710の負荷が大きくなる。
また、図8にジョブ解析部209が解析した印刷ジョブの解析結果の例を示す図である。ジョブ解析部209は、ジョブ解析部209でスプールされた印刷ジョブを解析し、印刷ジョブ毎に解析結果800を得る。図7に示したように、ジョブの設定は各処理ステージの負荷に影響する。ジョブ解析部209は、解析結果800として、負荷に影響を与える情報を取得する。具体的には、例えば、ジョブ管理のためのジョブID801、ジョブの種類802、出力サイズ802、画像補正の実施の有無804、出力レイアウト805等の各種ジョブ設定情報を取得する。本実施形態では、印刷ジョブデータに含まれるジョブ設定情報を解析して解析結果800を得る。これにより、ジョブ解析を高速化することができる。なお、印刷ジョブのジョブ設定の解析方法は、これに限定されず、ラスタライズ対象に含まれる描画命令をより詳細に解析してもよい。
図9は、ユーザインタフェース部107に表示される表示画面の一例を示す図である。ユーザインタフェース部107で設定された内容により図7に示す処理の流れが決定される。
図9に示す表示画面は、画像処理部の処理条件の設定や画像処理部の状態確認を行うことができる画面であり、例えば、ユーザがユーザインタフェース部107の表示画面において、画像処理部の設定等を選択することにより、表示される。
表示画面は、ラスタライズ部に格納するかを設定する設定部901と、解析開始条件を設定する設定部902と、調停設定条件を設定する設定部903と、待機条件を設定する設定部904と、調停範囲を設定する設定部905と、を有する。また、表示画面は、調停開始条件を設定する設定部906と、調停モードを設定する設定部907と、管理テーブル情報の更新を設定する設定部907と、スプーラモニタ909と、ジョブステータスモニタ910と、を有する。
設定部901は、受信したジョブをRIP待機状態でスプーラ部207に格納するか、受信したジョブをすぐにラスタライズ処理を行うかを設定できる。図9に示す設定部901においてONのチェックボックスが選択されている場合、受信したジョブをRIP待機状態でスプーラ部207に格納する。一方、図9に示す設定部901においてOFFのチェックボックスが選択されている場合、受信したジョブをRIP待機状態でスプーラ部207に格納する。
設定部902は、受信したジョブのジョブ解析部209による解析開始タイミングを設定することができる。図9に示す設定部902において、解析開始条件としてジョブ受信のチェックボックスが選択されている場合、ジョブを受信したタイミングでジョブ解析部209が解析を開始する。図9に示す設定部902において、解析開始条件として調停開始のチェックボックスが選択されている場合、調停を開始したタイミングでジョブ解析部209が解析を開始する。
設定部903は、調停設定条件を設定することができる。最短解のチェックボックスが選択されている場合、ラスタライズ処理が最短で終了するように調停を行い、最適解のチェックボックスが選択されている場合、負荷タイプに応じた最適なラスタライズ処理を実行するように調停を行う。最適なラスタライズ処理が選択された場合は、調停管理テーブルに基づいて調停を行う。ここで、「ラスタライズ処理が最短」とは、例えば、複数の印刷ジョブデータの処理時間の合計が短くなることを指す。
設定部904は、RIP待機状態ジョブとして扱うかどうかを設定することができる。具体的には、設定部904で選択されたジョブについては、RIP待機をしないように設定することができる。割込みジョブのチェックボックスが選択されている場合、割込みジョブはRIP待機をせず、再印刷ジョブのチェックボックスが選択されている場合、再印刷ジョブはRIP待機をしない。なお、「常に」のチェックボックスが選択されている場合、全ての印刷ジョブは、RIP待機をせずに、すぐにラスタライズ処理を実行するようにする。すなわち、図9の場合、割り込みジョブや再印刷ジョブが入力された場合、それらのジョブはすぐにラスタライズを開始する。
設定部906は、ジョブ調停を開始する条件を設定することができる。設定部906で設定された条件は、スプーラ管理部208でスプールされた印刷ジョブのスプール量が閾値以上かの判定で使用される。設定部906において、RIP待機ジョブのチェックボックスが選択されている場合、スプーラ部207にスプールされた印刷ジョブの数がプルダウンメニューにより設定されたRIP数以上となった場合、調停を開始する。本実施形態では、スプーラ部207にスプールされたジョブ数が100以上となった場合に、調停が開始される。なお、本実施形態では閾値を100と設定しているため、例えば、スプーラ部207にスプールされたジョブ数が10の場合は、調停を開始せず、スプールされたジョブ数が100以上となった場合に調停を開始する。なお、ここでは閾値を設定したが、スプール可能な空き容量によっては、閾値に到達する前に調停を開始する。例えば、調停開始条件がジョブ数で、閾値が100の場合について説明する。ジョブを30スプールした時点でスプーラの空き容量が0となると、閾値100に到達できないため、調停を開始する。その際、調停開始条件のジョブ数の閾値を100で維持するか、開始した値とするかを、ユーザが判断する。また、開始条件を自動で変えてもよい。一方、経過時間のチェックボックスが選択されている場合、スプーラ部207にスプールされてからの経過時間がプルダウンメニューにより設定された経過時間以上となった場合、調停を開始する。
スプーラモニタ909は、スプーラ管理部208で管理している情報を表示する。ここでは、スプーラ利用率と、ラスタライズ(RIP)が完了したジョブ数と、ラスタライズ(RIP)を待機しているジョブ数と、が表示される。
設定部905は、調停範囲を設定することができ、ジョブの調停範囲決定部210は、設定部905で設定された調停範囲に従って調停範囲を決定する。言い換えれば、ジョブの調停範囲決定部210は、設定部905の設定を取得し、取得した設定に基づいてジョブの調停範囲を決定する。ジョブ数のチェックボックスが選択されている場合、プルダウンメニューにより設定されたジョブ数を調停範囲とする。例えば、図9に示す例では50ジョブ単位で調停を行う。ジョブ設定のチェックボックスが選択されている場合、プルダウンメニューにより設定されたジョブ設定のジョブを調停範囲とする。図9に示す例では、レイアウト設定により調停範囲を決定する。合計処理時間のチェックボックスが選択されている場合、各ジョブのRIP処理時間の合計がプルダウンメニューにより設定された合計処理時間となるジョブまでを調停範囲とする。
設定部907は、調停を実施する単位を設定することができる。調停なしのチェックボックスが選択されている場合、調停は実行されない。ジョブ単位のチェックボックスが選択されている場合、ジョブ単位で調停が実行され、ページ単位のチェックボックスが選択されている場合、ページ単位で調停が実行される。
設定部908は、管理テーブルの更新設定を行うことができる。具体的には、スプーラ部207に格納された負荷管理テーブル及び調停管理テーブルのそれぞれについて、ラスタライズ処理が進む過程に従って更新するか否かを設定することができる。チェックボックスが選択されたテーブルについては、ラスタライズ処理が進む過程に従って更新される。
ジョブステータスモニタは、画像形成装置100に入力された印刷ジョブの設定および処理状態を表示する。図9では、各ジョブのジョブID、解析情報、処理ステータス、調停ステータスを表示する。解析情報としては、各ジョブの種類、各ジョブの出力サイズ、画像補正を行うか否か、各ジョブの出力レイアウトが表示される。処理ステータスとしては、「印刷済み」、「RIP中」、「RIP完了」、「RIP待機」等が挙げられる。調停ステータスは、「調停済」、「調停中」、「調停未実施」が挙げられる。
図10に、スプーラ部207に格納される管理情報の一例を示す。スプーラ部207に格納される管理情報としては、印刷ジョブの処理開始前に予め生成された管理テーブルと、印刷ジョブ処理開始後に生成される管理情報とが挙げられる。
図10(a)は、印刷ジョブの処理開始前に予め生成された管理情報の一例を示す図である。本実施形態では、予め生成される管理情報は、負荷カテゴライズテーブル1000、ステージ処理負荷テーブル1001、及び調停管理テーブル1002である。
負荷カテゴライズテーブル1000は、ジョブの種類やジョブのサイズ等のジョブ設定に基づいて分類した処理負荷のタイプ(以下、負荷カテゴリともいう)を管理する。負荷カテゴリは、ラスタライズ部203において律速要因となる処理負荷の高い処理ステージを分類するための情報である。本実施形態では、律速要因となり得るラスタライズ部203の処理ステージは、画像補正、RIP、及び回転面付のいずれかとする。図7で示すように、印刷ジョブの種類、印刷ジョブのサイズ、赤目補正や美肌補正などの画像補正処理の実施有無、出力レイアウトにより各処理ステージにおける律速要因となる処理ステージを特定し、それにより負荷カテゴリを分類している。負荷カテゴライズテーブル1000は、ジョブの処理負荷推定部211で印刷ジョブ毎の負荷分類を設定する際に参照される。なお、負荷カテゴライズテーブル1000は処理開始前に予め生成されたものを使用してもよいし、処理結果情報を学習させて更新したものを使用してもよい。本実施形態では、各処理ステージのうち画像補正処理が律速要因となるものをType−Aとし、出力サイズによりRIP処理と回転面付処理が律速要因となるものをType−Bとする。また、レイアウトによりRIP処理と回転面付処理が律速要因となるものをType−C、フォーマットによりRIP処理が律速要因となるものをType−Dとする。
ステージ処理負荷テーブル1001は、負荷カテゴリの情報に基づいて推定した各処理ステージの処理時間を管理する。
調停管理テーブル1002は、負荷カテゴリ付けされた印刷ジョブに対する最適処理を管理する。すなわち、各印刷ジョブの最も処理効率が上がる調停順序を管理する。各印刷ジョブに設定可能な調停順序は複数存在するが、本実施形態では、最も高速に処理され且つ調停対象となる負荷カテゴリ毎に律速要因とされる処理ステージがより重複している調停順序を設定する。なお、ここでは、調停管理テーブル1002は、調停範囲内の印刷ジョブの情報を管理する。調停管理テーブル1002はジョブ調停部212で参照される。
図10(b)は、印刷ジョブ処理を開始した後に作成される管理情報を示す図である。処理を開始した後に作成される管理情報としては、印刷ジョブ毎のジョブ解析結果1003、1004、1005と、負荷推定結果1006が挙げられる。ジョブ解析結果1003、1004、1005は、ジョブ解析部209で生成され、負荷推定結果1006はジョブ処理負荷推定部211で生成される。ジョブ解析結果1003、1004、1005は、印刷ジョブ本体に付随する(付加された)印刷ジョブ設定情報から抽出して生成する。ここで抽出される情報としては、ジョブ種別、画像補正実施の有無、平綴じ/中綴じ等の処理負荷の推定に用いられる情報である。
負荷推定結果1006は、ジョブ毎に生成されたジョブ解析結果と負荷カテゴライズテーブル1000とに基づいて、ジョブ毎に負荷カテゴリ分類された情報である。すなわち、負荷推定結果1006は、印刷ジョブと負荷カテゴリを関連付けた情報である。例えば、Job11は、ジョブの種類がJPEG、サイズが4×6、画像補正がON、レイアウトが1in1というジョブ設定であるため、負荷カテゴライズテーブルの1行目に相当する。したがって、Job11は、負荷カテゴリがType−Aであると特定されて、負荷推定結果として記憶される。Job12及びJob13についても同様に、ジョブ設定に基づいて負荷カテゴライズテーブルから負荷カテゴリが特定される。
図14を用いて、調停管理テーブル1002におけるルール設定ついて説明する。図14(a)は、調停管理テーブル1002における各調停順序を設定するための処理の流れを示す図である。なお、CPU101は、ROM102に格納されているプログラムをRAM103にロードし、それを実行することにより、図14(a)に示すフローチャートを実行する。図14(b)は、図14(a)に示した処理の流れに従い調停順序を決定する際に使用される処理状況を可視化した例を示す図である。本実施形態では、各印刷ジョブの負荷カテゴリがType−A、Type−C、Type−Dの場合におけるルール設定について説明する。また、それぞれの印刷ジョブは1ページずつとする。
負荷カテゴリに応じて印刷ジョブの処理順序の候補を特定する(S1401)。本実施形態では、処理順序の候補は、ACD、ADC、CAD、CDA、DAC、DCAの6種類となる。処理順序の候補は、調停順序のルール設定を行う印刷ジョブの負荷カテゴリの種類により変動する。
次に、処理順序の候補が複数存在するか判定する(S1402)。処理順序候補は6種類なので複数存在すると判定し(S1402でYes)、処理順序候補毎にラスタライズ部203における各処理ステージの処理時間を特定する(S1403)。図14(b)は、各処理順序候補の処理時間の模式図である。なお、図4(b)は、第1印刷ジョブがTypeA、第2印刷ジョブがTypeC、第3印刷ジョブがTypeDの場合の処理推移の予測を示す図である。1408は、ACDの順に処理を行った場合の各処理ステージの処理推移の予測である。1409は、ADCの処理順序順、1410はCADの処理順序、1411はCDAの処理順序順、1412はDACの処理順序、1413はDCAの処理順序で処理を行った場合の各処理ステージの処推移の予測である。
図14(b)に示された各処理順序候補のうち、処理が最短で完了する処理順序をルール候補に設定する(S1404)。図14(b)の場合、1410と1411の2つと判断され、CADとCDAの2つの処理順序が調停管理テーブルに設定されるルール候補となる。
ルールとなる処理順序候補が複数あるか判定する(S1405)。設定されたルール候補が1つの場合(S1405でNo)、その処理順序が調停管理テーブルに設定される調停ルールとなり(S1407)、処理を終了する。
ルール候補が2つ以上ある場合(S1405でYes)、そのルール候補に対して、所定の選択基準に基づき、処理順序を1つ選択する(S1406)。本実施形態では、負荷カテゴリ毎に律速要因とされる処理ステージが重なっている時間が最も長い処理順序候補を選択する。各ジョブにおける律速要因となる処理ステージが並列処理されることにより、リソース使用率を向上することができる。なお、負荷カテゴリType−Aは各処理ステージのうち画像補正処理が律速要因であり、Type−CはRIP処理と回転面付処理が律速要因であり、Type−DはRIP処理が律速要因である。したがって、本実施形態における選択基準は、Type−Aの画像補正処理と、Type−CのRIP処理または回転面付処理と、Type−DのRIP処理とが、より長い時間重複する処理順序を選択することになる。1410と1411は共に1414に示すように異なる3処理が重複する部分が存在する。ここで、Type−AのRIP処理及びType−Dの画像補正処理は、それぞれの負荷カテゴリに対する律速要因ではない。したがって、1411、すなわち、CDAの処理順序がルールとして選択される。なお、選択基準はこれに限定されるものではなく、例えば、各処理ステージ間の隙間が少ないものを選択するようにしてもよい。S1406で選択したルール(処理順序)を調停管理テーブルに設定する(S1407)。
上述した方法により、負荷の組み合わせがACDの場合は、処理順序をCDAとすることが決定される。
ここで、具体例を挙げて、本実施形態に係る印刷ジョブの調停方法について説明する。図11は、本実施形態に係るジョブ調停の一例を示す。印刷ジョブ1101、印刷ジョブ1102、印刷ジョブ1103の順序でスプーラ部207に投入された場合について説明する。本実施形態では、印刷ジョブは先頭のページから順番に1ページずつ、ジョブ単位で処理されていくものとする。すなわち、1ジョブ目の1ページ目から最終ページまで順に処理された後に2ジョブ目の1ページ目の処理を行うものとする。ジョブ毎の処理負荷分類は、負荷カテゴライズテーブル1104に従うものとし、調停範囲内の印刷ジョブの処理順序は、調停管理テーブル1105に設定されたルールに従うものとする。各印刷ジョブ(印刷ジョブ1101、1102、1103)、負荷カテゴライズテーブル1104、及び調停管理テーブル1105は、スプーラ部207に格納済みであるとする。また、調停範囲は、印刷ジョブ1101、1102、1103の3ジョブとする。
図11(a)は、各印刷ジョブに基づく画像のイメージ図である。図11(a)に示すように、各印刷ジョブ(印刷ジョブ1101、1102、110)はそれぞれ2ページで構成され、印刷ジョブ1101は、印刷ジョブ1102及び1103とは出力サイズが異なる。
図11(b)は、本実施形態で用いる負荷カテゴライズテーブル1104及び調停管理テーブル1105と、印刷ジョブ1101のジョブ解析結果1006と、負荷推定結果1108と、調停前後の印刷ジョブの処理順序1109とを示す。
調停が開始されると、CPU101は、ジョブ解析部209に印刷ジョブ1101の設定情を解析させ、解析結果1106をスプーラ部207に格納させる。解析結果1106には、ジョブ種別、ジョブの総ページ数、出力設定、補正設定等が記述される。印刷ジョブ1102、1103についても同様に解析を行う。
次に、CPU101は、ジョブ処理負荷推定部211に解析結果1106を取得させ、負荷推定結果を生成させる。負荷推定とは、負荷カテゴライズテーブル1104と解析結果1106に基づいて、処理負荷分類を行うことである。本実施形態では、ジョブ種別、サイズ、補正設定、レイアウト設定により処理負荷を分類する。解析結果1106から処理負荷を分類するために必要な参照情報1107を取得し、負荷カテゴライズテーブル1104と照合する。参照情報1107は、負荷カテゴライズテーブル1104の1行目と適合する。したがって、印刷ジョブ1101は、負荷カテゴリがType−Aと判別される。同様に印刷ジョブ1102、1103について負荷カテゴリを判別し、印刷ジョブと判定結果を関連付けた負荷推定結果1108をスプーラ部207に生成する。
その後、CPU101は、ジョブ調停部212に負荷推定結果1108と調停管理テーブル1105により調停順序を決定させる。ジョブ調停部212は、調停管理テーブル1105を参照することで、負荷推定結果1108に存在する負荷カテゴリの組合せをどのような順序に調停されるかを決定する。負荷推定結果1108に存在する負荷カテゴリはACDであり、負荷の組み合わせは調停管理テーブル1105の2行目と適合する。調停管理テーブル1105のルールに従い、負荷カテゴリCDAの順で処理することを決定する。すなわち、印刷ジョブ1102、1103、1101の順序で処理するよう調停する。
図11(c)は、ジョブ調停が未実施の場合のラスタライズ部203における各処理ステージの処理推移の予測と、ジョブ調停を実施した場合のラスタライズ部203における各処理ステージの処理推移の予想を示す図である。ジョブ調停が未実施の場合、印刷ジョブのスプーラ部207への投入順、すなわち、印刷ジョブ1101の1ページ目、2ページ目、印刷ジョブ1102の1ページ目、2ページ目、印刷ジョブ1103の1ページ目、2ページ目の順でラスタライズ処理される。これに対し、ジョブ調停を実施した場合、印刷ジョブ1102の1ページ目、2ページ目、印刷ジョブ1103の1ページ目、2ページ目、印刷ジョブ1101の1ページ目、2ページ目の順でラスタライズ処理される。これにより、ジョブ調停を未実施の場合の処理推移1110と比べ、ジョブ調停を実施することでラスタライズ処理に要する時間が短縮され、処理効率が向上する。さらに、各ジョブにおける律速要因となる処理ステージ1112が並列処理されるようになり、リソース使用率も向上する。
以上のように、描画処理を複数の処理ステージに分割し、それぞれ並列処理可能なパイプライン化されたラスタライズ処理において、各処理ステージの負荷を推定しジョブ調停を行うことにより、効率的なラスタライズ処理が実施可能となる。具体的には、複数の印刷ジョブデータの処理時間の合計が短くなるように順序を決定する。
さらに、本実施形態では、最も処理負荷の高い処理ステージが並列処理されるように、印刷ジョブが調停されるため、リソースの使用効率が向上する。
また、複数の印刷ジョブデータのラスタライズ処理の実行時間を短縮することができるため、省電力やメンテナンス効率を向上させることもできる。
(実施形態2)
実施例1では、ジョブの調停をジョブ単位で実行していたのに対し、本実施形態では、ジョブの調停をページ単位で実行する。
図12を用いて、本実施形態に係る処理の流れの一例について詳細に説明する。なお、CPU101は、ROM102に格納されているプログラムをRAM103にロードし、それを実行することにより、図12に示すフローチャートを実行する。
S1201〜S1209は、図6のS601〜609と同様であるため説明を省略する。なお、調停範囲内のジョブの設定が全て同じ場合(S1207でYes)、S1216へ進み、投入順序の調停を行なわず(投入順を変更せず)、ラスタライズ処理を開始する(S1217)。
印刷ジョブの負荷タイプの負荷カテゴリが異なった場合(S1209でNo)、ジョブ調停部212において、調停範囲内の印刷ジョブについて負荷カテゴリ毎の総ページ数を取得する(S1210)。取得された各負荷カテゴリの総ページ数が同じか判定する(S1211)。なお、ここではページ数が同じか判定するものとしたが、これに限定されず、例えば、負荷カテゴリのばらつきが許容できるか判定するようにしてもよい。具体的には、ページ数の差が所定の範囲内か判定するようにしてもよい。
各負荷カテゴリの総ページ数が同じ場合(S1211でYes)、ジョブ調停部212において設定された負荷カテゴライズテーブルを利用して処理ページ順序の調停を行い(S1215)、ラスタライズ処理を開始する(1217)。
各負荷カテゴリの総ページ数が異なる場合(S1211でNo)、まず、取得した処理対象となる各印刷ジョブデータの総ページ数を比較する。そして、処理対象となる各印刷ジョブデータのそれぞれを所定ページ数分、具体的には、処理対象となる印刷ジョブデータのなかにおける最小のページ数と同じページ数分の処理ページ順序の調停を行う(S1212)。次に、調停が実施されなかった残りのページに対して、処理ページ内容を解析して負荷カテゴリを再設定するか判定する(S1213)。未調停ページに対する負荷カテゴリの再設定の判定については、ユーザインタフェース部107に表示された表示画面における設定に従う。再設定を行わない場合(S1213でNo)、未調停ページの負荷カテゴリに対して調停管理テーブルを参照し、処理ページ順序の調停を行う(S1215)。未調停ページに対して再設定する場合(S1213でYes)、ページ単位で負荷カテゴリを再設定し(S1214)。負荷カテゴリの再設定は、ページを詳細に解析して行ってもよいし、データサイズや画像枚数のような簡易解析に基づいて行ってもよい。再設定後、再度負荷カテゴリ毎のページ数を比較し(S1211)、処理ページ順序の調停を行う。
図13を用いて、図12で示したフローチャートによるジョブ調停について具体例を挙げて説明する。
図13(a)は、各ジョブに含まれるページ数が同じ場合の説明図である。負荷推定結果情報1301は、ジョブ処理負荷推定部211が生成する。負荷推定結果情報1301には、ジョブIDと、負荷カテゴリと、各ジョブの総ページ数とを含む。負荷推定結果情報1301から負荷カテゴリが3種類でいずれも5ページずつであることを特定することができる。図12における処理において、図13(a)に示す場合、各負荷カテゴリはページ数が同じであるため(S1211でYes)、1302に示す範囲のページ、すなわち、各印刷ジョブデータの全てのページについてジョブ調停を行う。負荷カテゴリの組み合わせがABCであるため調停管理テーブル情報に従い、CBAの順で処理するように調停する。すなわち、ジョブ22の1ページ目、ジョブ21の1ページ目、ジョブ20の1ページ目の順序で処理されるように調停する。ジョブの調停を実行せずにジョブを処理した場合の各処理ステージの処理推移1303と、ジョブの調停を実施した場合の各処理ステージの処理推移1304とを比較すると、ジョブの調停を実施することにより処理時間が短くなることがわかる。
図13(b)は、各ジョブに含まれるページ数が異なる場合の説明図である。負荷推定結果情報1305は、ジョブ処理負荷推定部211生成する。負荷推定結果情報1305から負荷カテゴリが3種類で総ページ数がそれぞれ異なることを特定することができる。図12における処理において、図13(b)に示す場合、各負荷カテゴリはページ数が異なるため(S1211でNo)、処理対象となる印刷ジョブのなかにおいて最小ページ数(ジョブID025の3ページ)分のジョブ調停を行う(S1212)。すなわち、1306に示す範囲についてジョブ調停を行う。これにより、各印刷ジョブの3ページ目まで順序が決定する。具体的には、ジョブ25の1ページ目、ジョブ24の1ページ目、ジョブ23の1ページ目の順序で処理される。次に、未調停ページ1307について負荷カテゴリの再設定を行うか判定する(S1213)。本実施形態では未調停ページ1307について負荷カテゴリの再設定は行わない。未調停ページ1307は、調停によりジョブ24の4ページ目、ジョブ23の4ページ目、5ページ目の順序で処理される。ジョブの調停を実施せずにジョブを処理した場合の各処理ステージの処理推移1308と、ジョブの調停を実施した場合の各処理ステージの処理推移1304とを比較すると、ジョブの調停を実施することにより処理時間が短くなることがわかる。
本実施形態では、ジョブの処理の開始は、例えば、未調停ページ1307が調停完了後とするが、これに限定されるものではない。例えば、調停対象ページ1306の処理完了までに未調停ページ1307の調停を完了できる場合は、調停済みページの処理を開始するようにしてもよい。
以上のように、各処理ステージの負荷を推定して、ページ単位でジョブ調停を行うことで、より効率的なラスタライズ処理が実施可能となる。ページ数が膨大な場合は、ジョブ単位で調停を行う場合よりもさらに効率的にラスタライズ処理を実行することができる。さらに、本実施形態では、最も処理負荷の高い処理ステージを並列処理するように調停されるため、リソースの使用効率が向上する。
(他の実施形態)
本発明は上述した実施形態に限定されるものではない。例えば、上述した実施形態では、画像処理部が負荷の組み合わせを決定できるようにしたが、調停管理テーブルの結果を他の処理部や外部装置から取得するようにしてもよい。
また、上述した実施形態では、画像処理装置が有する画像処理部において、ジョブの調停を行うようにしたが、これに限定されるものではない。例えば、ジョブ調停範囲決定部210及びジョブ調停部212が実行する処理を他の処理部やPC等の他の外部装置が実行するようにしてもよい。
また、上述した実施形態では、負荷カテゴリを決定するために、ジョブ設定として、ジョブの種類、補正の実行の有無、レイアウトを判定するものとしたが、これに限定されるものではない。例えば、ジョブの種類、補正の実行の有無、及びレイアウトのうち1又は2つの設定に基づいて負荷カテゴリを決定してもよいし、他の設定をさらに考慮して負荷カテゴリを決定してもよい。
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、処理の一部または全部をASIC等のハードウェアで実現するようにしてもよい。また、CPUも1つのCPUで全ての処理を行うものに限らず、複数のCPUが適宜連携をしながら処理を行うものとしてもよい。