(57)【特許請求の範囲】
【請求項１】
コード画像データの内容を解釈する解釈手段と、
前記解釈手段による解釈結果に基づいて、出力すべき画像を分割したバンド画像に対応した中間コード画像データを、バンド画像毎に作成する中間コード作成手段と、
前記解釈手段の解釈結果から、各バンド画像において各々の色成分の有無を当該色成分のランレングスの総数によって示したバンド情報であって、当該ランレングスの総数を色成分がゼロである場合と色成分がゼロでない場合とで分けて持たせたバンド情報を作成する識別手段と、
前記バンド画像に対応する中間コード画像データを、要求される形式のデータに展開し、バンドバッファに書き込む展開書込手段と、
前記展開書込手段に対し、前記バンド情報においてランレングスの総数によって色成分が無いことが示されているバンド画像については、その色成分での展開を行なわないように制御する制御手段と、
前記バンド情報において、色成分がゼロである場合の前記ランレングスの総数と、色成分がゼロでない場合の前記ランレングスの総数とに基づいて、前記展開書込手段による書き込みに要する時間を予測する予測手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記バンド情報において色成分の有無を示すランレングスを、そのバンドにおける描画オブジェクトの内容毎に分けて持たせたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記展開手段によって展開されたデータを格納するバンドバッファを複数備え、
前記バンド情報として、さらに、前記バンドバッファの容量を示す情報を持たせたことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記バンド情報において、そのバンド画像において描画オブジェクトの重なりがあるか否かをフラグとして持たせたことを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記バンド情報において、そのバンド画像に対し間引き処理が行なわれたか否かをフラグとして持たせたことを特徴とする請求項１記載の画像処理装置。
【請求項６】
前記バンド情報において、そのバンド画像における描画オブジェクトに対し圧縮処理が行なわれたか否かをフラグとして持たせたことを特徴とする請求項１記載の画像処理装置。
【請求項７】
前記バンドバッファを複数備え、
これらバンドバッファがクリアにされたか否かのクリア情報をバンドバッファ毎に、前記バンド情報とは別に有し、展開されたデータをバンドバッファに格納する際に、バンドバッファに対応するクリア情報によって当該バンドバッファがクリアにされているならば、前記制御手段は、そのバンドバッファのクリアを行なわないように前記展開書込手段を制御することを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、ＰＤＬ（ページ記述言語）によって記述されたコードデータを入力し、これを解釈してビットマップ形式の画像データに展開する処理の高速化を図った画像処理装置に関する。
【０００２】
【従来の技術】
一般に、ＰＤＬで記述されたコード画像データを用いると、当該データで示される画像を異なった機種の端末において共通の出力装置で出力したり、同じ形式のデータを異なる出力装置において出力することが可能となる。このため、ＰＤＬは、最近では印刷のみならず、種々の出力を行なう場合に用いられる。
このようなコード画像データによって示される画像を出力する場合、当該コード画像データの内容を解釈して、出力装置に要求されるデータ形式に変換する処理を行なうとともに、出力装置の出力動作に同期して供給する必要がある。
例えば、カラーページプリンタなどに出力する場合には、コード画像データを、ビットマップ形式に展開して、その展開結果たるデータ（ラスターデータ）を一時的に記憶するとともに、当該プリンタの出力動作（主走査動作と副走査動作）に同期して、ラスターデータを供給する必要がある。
従来では、コード画像データの展開処理を１ページ分行なって、その１ページ分のラスターデータをバッファに格納した後に、格納されたデータを出力装置の動作に同期して読み出して、当該データに基づいた画像出力を行なうようになっていた。
【０００３】
ただし、この方法では、バッファに少なくとも１ページ分の容量が要求される、といった欠点があった。
そこで、出力画像を１ページではなく、副走査方向に帯状に分割した画像（バンド画像）て取り扱うことが試みられるようになってきた。
この場合、バンド画像を格納するバンドバッファを複数用意し、ラスターデータを格納すべきバンドバッファを順次循環させる形で変更するとともに、格納が完了したならば、バンドバッファを格納した順番でデータを読み出して、出力装置に供給することにより、バンドバッファの総容量を１ページ分よりも少なく抑えようとするのである。
【０００４】
【発明が解決しようとする課題】
ところで、近年、出力装置の動作を短時間に済ますことが要求されている。画像をバンド画像として扱う場合に、このような要求をかなえるには、コード画像データをラスターデータに展開した後、これをバンドバッファに格納するという一連の処理（レンダリング処理）を高速化するとともに、そのレンダリング処理に要する時間の正確な予測とが不可欠である。
なぜならば、レンダリング処理を高速にすれば、出力に要する時間の短縮に直接寄与するし、レンダリング処理に要する時間の正確な予測が可能であれば、レンダリング処理の進捗状況に対し、出力装置を適切なタイミングで起動させることができ、やはり、出力に要する時間の短縮に寄与するからである。
本発明は、上述した事情に鑑みてなされたものであり、その目的とするところは、レンダリング処理をバンド画像毎に行なうものにおいて、レンダリング処理の高速化と、そのレンダリング処理に要する時間の正確な予測とを図った画像処理装置を提供することにある。
【０００５】
【課題を解決するための手段】
上記課題を解決するために、本発明にあっては、コード画像データの内容を解釈する解釈手段と、前記解釈手段による解釈結果に基づいて、出力すべき画像を分割したバンド画像に対応した中間コード画像データを、バンド画像毎に作成する中間コード作成手段と、前記解釈手段の解釈結果から、各バンド画像において各々の色成分の有無を当該色成分のランレングスの総数によって示したバンド情報であって、当該ランレングスの総数を色成分がゼロである場合と色成分がゼロでない場合とで分けて持たせたバンド情報を作成する識別手段と、前記バンド画像に対応する中間コード画像データを、要求される形式のデータに展開し、バンドバッファに書き込む展開書込手段と、前記展開書込手段に対し、前記バンド情報においてランレングスの総数によって色成分が無いことが示されているバンド画像については、その色成分での展開を行なわないように制御する制御手段と、前記バンド情報において、色成分がゼロである場合の前記ランレングスの総数と、色成分がゼロでない場合の前記ランレングスの総数とに基づいて、前記展開書込手段による書き込みに要する時間を予測する予測手段とを具備することを特徴としている。
【０００６】
（作用）
本発明によれば、コード化されたコード画像データの内容が解釈され、その解釈結果に基づいて、バンド画像に対応した中間コード画像データがバンド画像毎に作成されるとともに、バンド画像の描画成分を識別したバンド情報がバンド画像毎に作成される。そして、中間コード画像データは、出力装置において要求される形式のデータに展開されるが、その際、バンド情報においてそのバンド画像の描画成分がゼロであるバンド画像については、その成分での展開は、行なわれない。
したがって、各描画成分に対して一律に展開を行なうのではなく、実質的に描画を行なう必要のない成分について展開をスキップさせるので、展開処理に要する時間をその分短縮することができ、総合的に見てレンダリング処理に要する時間も短縮することが可能となる。
ところで、バンド情報としては、その描画成分を一般的な色成分とすることが考えられる。この場合、各色成分をフラグやランレングスとして持たせれば良い。さらに、色成分をランレングスとして持たせるには、色成分がゼロのものとゼロでないものとに分けることや、描画オブジェクトの内容毎に分けることなど考えられる。ランレングスを用いた場合、展開処理に要する時間の予測が容易となるので、その分、レンダリング処理に要する時間の正確な予測に寄与することが可能となる。
また、レンダリング処理に要する時間をさらに正確に予測するためには、展開処理における他の要因や、展開処理以外の処理に要する時間を予測しなければならない。これには、例えば、バンドバッファのゼロクリア処理に要する時間を予測するための、バンド画像について展開されたデータサイズの情報や、バンドバッファへの書込処理に要する時間を予測するための、描画オブジェクトに重なりがあるかを示す情報、同じく書込処理に要する時間を予測するための、間引き処理が行なわれたか否かを示す情報、展開処理において伸張する場合に、その伸張処理に要する時間を予測するための、圧縮処理が行なわれたか否かを示す情報などが考えられる。また、バンドバッファへのゼロクリア処理をスキップするため、バンドバッファ毎にゼロクリアされているか否かの情報も考えられる。
【０００７】
【発明の実施の形態】
＜１：実施形態の構成＞
以下、本発明による一実施形態について図面を参照して説明する。図１は、本実施形態にかかる画像処理装置の構成を示すブロック図である。この図に示す画像処理装置１は、ネットワークやスプールディスクなどから供給されたコード画像データを、ＣＭＹＫの面順次型データにレンダリング処理して、出力装置に供給するものである。ここで、コード画像データは、ＰＤＬで記述されたものである。
【０００８】
図において、コード画像データ解釈部２は、入力されたコード画像データの内容を解釈するものである。中間コード画像データ変換部３は、コード画像データの内容を解釈した結果、そのなかにオブジェクトの描画を指示するもの（描画オブジェクト）がある場合に、ラスタデータを作成するための中間コード画像データをバンド毎に作成するものである。なお、オブジェクトには、例えば、グラフィクスや、フォント、イメージなど種々のものがある。
保持ブロック４は、作成された中間コード画像データを保持するものであり、一般にシステムメモリの一部分が割り当てられる。展開部５は、中間コード画像データを出力装置において要求されるラスターデータに展開処理するものである。
バッファ６は、本実施形態にあっては４つバンドバッファからなるものであり、展開部５で処理されたラスターデータを、バンドバッファに格納した後、出力装置に供給するものである。
【０００９】
さて、これらの構成において、画像処理装置１におけるレンダリング処理とは、主に、次の４つからなる一連の処理をいう。すなわち、レンダリング処理は、▲１▼バンドバッファをゼロにクリアするクリア処理、▲２▼中間コード画像データを保持ブロック４から読み出す読出処理、▲３▼読み出した中間コード画像データをラスターデータに展開する展開処理、および▲４▼ラスターデータをバンドバッファに書き込む書込処理に大別される。
【００１０】
なお、本実施形態の出力装置としては、ＣＭＹＫの面順次型データに基づいて、各色成分毎に順番に画像形成を行なうカラーページプリンタを想定している。そして、かかる出力装置は、Ｋのみの色成分により白黒の画像出力を行なう白黒モードと、ＣＭＹＫのすべての色成分によりフルカラーの画像出力を行なうカラーモードとを切替可能なものとする。
また、このような出力装置の動作も含めて、画像処理装置１における各構成要素は、図示しない制御部により制御されるようになっている。
くわえて、一般にバンドバッファの数は、２個以上必要であるが、レンダリング処理の高速化を図るには、３個以上必要である。これは、次の理由による。すなわち、バンドバッファの個数が２個であると、一方のバンドバッファからラスターデータが読み出されて出力装置に供給されている期間、他方のバンドバッファには、展開されたラスターデータが格納されるが、前者の読出は、出力装置の出力動作に同期するので一定速度で行なわれるが、後者の展開は、そのバンドに存する描画オブジェクトの数および種類に依存して一定でない。ここで、１つのバンド画像をレンダリング処理するのに要する時間が、出力装置において１つのバンド画像を出力するのに要する時間よりも短い場合、レンダリング処理は、バンドバッファが解放されるまで、常に待機状態となり、非常に効率が悪い。そこで、レンダリング処理が待機状態となるのなるべく防ぐため、バンドバッファが３個以上必要となる。なお、本実施形態にかかる画像処理装置１においては、余裕を見越して４個のバンドバッファを備えることとした。
【００１１】
＜１−１：バンド情報＞
次に、バンド情報について説明する。バンド情報とは、後述するステップＳ１０においてセットされるものであり、基本的に、バンド画像における識別情報を色成分毎に持たせたものである。さらに、レンダリング処理に要する時間を正確に予測する場合には、そのバンドについてなされた処理情報などが付加される。このバンド情報には、画像処理装置１における各機能により、種々考えられるので、基本的なものから順に説明することとする。
【００１２】
＜１−１−１：フラグ＞
このバンド情報は、そのバンドにおける識別情報をフラグとして持たせたものであり、例えば、図２に示すように、ＣＭＹＫの各色成分毎に対応したフラグを有する。
この場合、各色成分に対応するフラグの初期値はすべてオフである（例えば、初期化動作で、その旨を示す値のゼロがセットされる）。そして、コード画像データ解釈部２がコード画像データを解釈して、それが描画オブジェクトである場合、中間コード画像データ変換部３が、その描画オブジェクトに対しＣＭＹＫの各色成分についてチェックし、色成分がゼロ以外であれば、当該色成分に対応するフラグをオンにする（例えば、その旨を示す値の「１」をセットする）。
【００１３】
このバンド情報において、フラグがオフのままである場合、そのバンドにおいて当該色成分の描画が行なわれないことを意味する。したがって、その色成分についてレンダリング処理する際に、上記▲２▼読出処理、▲３▼展開処理、▲４▼書込処理については省略できるので、その分、レンダリング処理を高速化することが可能となる。例えば、あるバンドについてＣＭＹの色成分に対応するフラグがすべてオフの場合、そのバンドについてはＫの色成分についてのみレンダリング処理を行なえば良い。この場合、出力装置のモードを白黒モードにセットすることにより、出力装置における出力時間も短縮化することができる。
【００１４】
＜１−１−２：ランレングス＞
このバンド情報は、そのバンドにおける識別情報をランレングスとして持たせたものであり、その最も簡単な例は、図３に示すように、ＣＭＹＫの各色成分毎に対応したランレングスの情報を有する。
この場合、各色成分に対応するランレングス情報の初期値はすべてゼロである（例えば、初期化動作で、その旨を示す値のゼロがセットされる）。そして、コード画像データ解釈部２がコード画像データを解釈して、それが描画オブジェクトである場合、中間コード画像データ変換部３が、その描画オブジェクトに対しＣＭＹＫの各色成分についてチェックし、色成分がゼロ以外であれば、当該オブジェクトの総ランレングス数を、色成分に対応するランレングス情報に累算する。
ここで、本実施形態にあっては、ＣＭＹＫの面順次型データを出力するものであるから、そのバンドにおける描画オブジェクトに重なりがなければ、ランレングス情報の値は、フルカラー（８ビット／色）の場合においてバンドバッファへの書込バイト数と等しくなる。
【００１５】
このバンド情報において、ランレングス情報の値がゼロである場合、そのバンドにおいて当該色成分の描画が行なわれないことを意味する。したがって、識別情報としてフラグを用いた場合と同様に、その色成分についてのレンダリング処理の際に、上記▲２▼読出処理、▲３▼展開処理、▲４▼書込処理については省略することができるので、その分、レンダリング処理を高速化することが可能となる。
あるバンドについてＣＭＹの色成分に対応するランレングス数がすべてゼロの場合も同様である。
さらに、後述するように、ランレングス数によって、レンダリング処理に要する時間を予測できる。
【００１６】
このようにランレングスを識別情報を持つものは、次のように発展させて、レンダリング処理の時間を予測するための情報として活用することができる。
【００１７】
＜１−１−２−１：ゼロの場合とゼロでない場合とのランレングス数を持つ＞
このバンド情報は、そのバンドにおける識別情報をランレングスとして持たせたものであって、図４に示すように、ゼロの場合のランレングス数とゼロでない場合のランレングス数とを各色成分毎に持たせたものである。
この場合、各色成分に対応する双方のランレングス数の初期値はすべてゼロである（例えば、初期化動作で、その旨を示す値のゼロがセットされる）。そして、コード画像データ解釈部２がコード画像データを解釈して、それが描画オブジェクトである場合、中間コード画像データ変換部３が、その描画オブジェクトに対しＣＭＹＫの各色成分について、その色成分がゼロのランレングス数と、その色成分がゼロでないランレングス数とをチェックし、当該色成分に対応するそれぞれのランレングス数に累算する。
なお、このバンド情報において、マージフラグとは、描画オブジェクトの重なりをなくしたマージ処理が実行されたことか否かを示すものであり、また、間引きフラグとは、間引き処理が実行されたか否かを示すものである。両者を参照することで、後述するように、レンダリング処理のうち▲４▼書込処理に要する時間をより正確に予測できる。
【００１８】
このバンド情報において、色成分がゼロでないランレングス数がゼロである場合、そのバンドにおいて当該色成分の描画が行なわれないことを意味する。したがって、識別情報としてフラグを用いた場合と同様に、その色成分についてのレンダリング処理では、上記▲２▼読出処理、▲３▼展開処理、▲４▼書込処理について省略することができるので、その分、レンダリング処理を高速化することが可能となる。
また、そのバンドにおける描画オブジェクトに重なりがなければ、ゼロでないランレングス数は、フルカラー（８ビット／色）の場合においてバンドバッファへの書込バイト数と等しくなる。このため、▲４▼書込処理に要する時間の予測が行なうことができる。
このように、ランレングス数を、色成分がゼロのものと、そうでないものとに分けたことより、レンダリング処理の高速化とそれに要する時間の予測とに寄与することができる。
【００１９】
＜１−１−２−２：オブジェクトの内容毎にランレングス数を持つ＞
このバンド情報は、図５に示すように、そのバンドにおける識別情報を、オブジェクト毎のランレングス数として持たせたものである。
この場合、各色成分に対応するランレングス数の初期値はすべてゼロである。このようにランレングス数をオブジェクト毎に分類したのは、オブジェクト毎に展開処理が異なるためである。例えば、オブジェクトがグラフィックの場合、中間コード画像データに基づいてラスターデータが作成されて図形が描画されるし、また、オブジェクトがフォントの場合であって、フォントキャッシュにヒットしたときは、フォントキャッシュ内にキャッシングされたビットマップデータがコピーされて当該フォントが描画される一方、フォントキャッシュにミスヒットしたときは、新たにアウトラインフォントデータから該当する文字のベクトルデータが読み出され、これを基にビットマップデータが展開されて、当該フォントが描画されるし、さらに、オブジェクトがイメージの場合、中間コード画像データとは別の領域に保持されているイメージデータをコピーすることにより、当該イメージが描画される。このように、オブジェクト毎に展開処理が異なるために、その処理に要する時間も、当然異なってくる。
したがって、レンダリング処理を高速化するとともに、その処理時間を予測するには、ランレングス数をオブジェクト毎に分けた方が都合が良い。
【００２０】
なお、このバンド情報において、中間コード画像データの総バイト数は、レンダリング処理のうち▲２▼読出処理に要する時間を予測するためのものであり、コード画像データの解釈結果、それが描画オブジェクトである場合、その描画オブジェクトに対応する中間コード画像データのバイト数が順次累算されたものである。
また、バンドバッファゼロクリア時間は、レンダリング処理のうち▲１▼クリア処理に要する時間を予測するためのものであり、そのバンドの容量に係数を乗じたものである。
【００２１】
＜１−１−２−３：ゼロの場合とゼロでない場合とのランレングス数をオブジェクト毎に持つ＞
このバンド情報は、図６に示すように、図４および図５の双方を組み合わせたものである。
この例では、描画オブジェクトの重なりを考慮するので、レンダリング処理の高速化に寄与し、また、展開処理に要する時間をオブジェクト毎に考慮するので、レンダリング処理に要する時間の正確な予測に寄与することできる。
なお、図６に示すバンド情報において、オブジェクトがイメージである場合のランレングス数を、ゼロのものとゼロでないものとに分けていない理由は、イメージデータについてその色成分がゼロか否かを１バイト毎に識別する処理の負荷が大きいためである。
また、圧縮フラグとは、後述するように圧縮処理が施されたか否かを示すものであり、このフラグを参照することにより、レンダリング処理のうち▲３▼展開処理に要する時間のうち、その伸張に要する時間も考慮するので、より正確に予測することができる。
【００２２】
このように、バンド情報を、識別情報や、処理情報などを種々付加することで、レンダリング処理の高速や、その処理に要する時間を予測することができる。そこで、本実施形態にあっては、図６に示したバンド情報を用いることとする。
【００２３】
＜１−２：レンダリング情報＞
次に、レンダリング情報について説明する。このレンダリング情報とは、レンダリング処理に要する時間を予測するのに必要な情報であって、この画像処理装置１に固有な情報である。すなわち、中間コード画像データには依存しない情報であるため、バンド情報とは別個に規定することとした。
その内容を図７に示す。図において、メモリ読出効率とは、保持ブロック４から中間コード画像データを単位時間あたりに読み出す転送レート（バイト／時間）の逆数（時間／バイト）であり、メモリ書込効率とは、ラスターデータをバンドバッファに単位時間あたりに書き込む転送レート（バイト／時間）の逆数（時間／バイト）である。
また、コピー効率とは、副走査方向の１ライン分のラスターデータをバンドバッファに複写する速度（バイト／時間）の逆数（時間／バイト）であり、伸張効率とは、圧縮されたデータの伸張速度（バイト／時間）の逆数である。
これらの情報は、固定値として保持されている。
さらに、バッファ（ｎ）のゼロクリア情報とは（ｎ：は１〜４の整数）、バッファ６を構成する４つのバンドバッファについて、ゼロクリア処理されたか否かをバンドバッファ毎に示す情報（例えばフラグ）であり、ゼロクリアされていれば、制御部によってオンとされるものである。
【００２４】
＜１−３：他＞
次に、この画像処理装置１において、レンダリング処理において補足的に行なわれる処理について説明する。
マージ処理は、描画オブジェクトの重なりをなくす処理である。この処理は、一般に、その負荷が重いので、第１に、保持ブロック４の容量が不足した場合や、第２に、後述するレンダリング時間予測処理において、当該バンドにかかるレンダリング処理が、出力装置における１バンド画像の出力に要する時間よりも長くなると予想された場合に、そのバンドに対して行なわれる。そして、このマージ処理が実際に行なわれると、そのバンドに対応するバンド情報のマージフラグがオンにされる。
間引き処理は、展開時にラインを間引く処理である。この処理は、第１に、保持ブロック４の容量が不足した場合や、第２に、後述するレンダリング時間予測処理において、当該バンドにかかるレンダリング処理が、出力装置における１バンド画像の出力に要する時間よりも長くなると予想された場合に、そのバンドに対して行なわれる。そして、この間引き処理が実際に行なわれると、そのバンドに対応するバンド情報の間引きフラグがオンにされる。なお、この場合、識別情報のランレングス数は、間引かれていないライン数に対応するものとする。
圧縮処理は、第１に、システムメモリの容量不足のために、イメージデータをそのままの状態で保持できなくなった場合や、第２に、描画オブジェクトを中間コード画像データとして保持するよりもラスターデータとして保持する方が有利とみなされて、ラスターデータに展開されたものの、システムメモリの容量が不足したため、当該ラスターデータをそのままの状態で保持できなくなった場合などに、その描画オブジェクトあるいはそのバンドに対して実行される。そして、この圧縮処理が実際に行なわれると、そのバンドに対応するバンド情報の圧縮フラグがオンにされる。なお、この場合、識別情報のランレングス数は、圧縮された描画オブジェクトあるいはそのバンドに対応するものとする。
【００２５】
＜２：実施形態の動作＞
次に、この画像処理装置１の動作について説明する。図８〜図１２は、それぞれ画像処理装置１の動作を示すフローチャートである。まず、ＰＤＬで記述されたコード画像データがネットワークやスプールディスクなどから供給されると、図８に示す画像データ処理が起動される。
【００２６】
はじめに、ステップＳ１において制御部は、コード画像データ解釈部２がコード画像データについてすべて解釈したか否かを判別する。制御部は、この判別結果が「Ｙｅｓ」ならば、処理手順を後述するステップＳ１１に分岐させて、レンダリング時間予測処理を実行した後、実際にレンダリング処理を開始する一方、判別結果が「Ｎｏ」ならば、処理手順を次のステップＳ２として、当該コード画像データについての解釈をコード画像データ解釈部２に指示する。これにより、コード画像データの解釈が継続される。
次に、制御部は、ステップＳ３において、コード画像データ解釈部２による解釈の結果、それが描画オブジェクトであるか否かを判別する。制御部は、それが描画オブジェクトでなければ、引き続き当該コード画像データについての解釈を継続すべく処理手順をステップＳ１に戻す。一方、制御部は、それが描画オブジェクトであれば、次のステップＳ４において、その描画オブジェクトに対応する中間コード画像データを作成する旨を、中間コード画像データ変換部３に指示する。これにより当該描画オブジェクトに対応する中間コード画像データが作成される。
【００２７】
中間コード画像データが作成されると、ステップＳ５において制御部は、システムメモリに中間コード画像データの保持するための領域が存在するか否かをチェックする。
もし、保持領域が存在しなければ、制御部は、ステップＳ６においてさらにメモリに未使用領域が存在するか否かをチェックする。未使用領域があれば、制御部は、ステップＳ７においてその領域を保持ブロックとして確保する。一方、未使用領域がなければ、制御部は、ステップＳ８において、当該中間コード画像データに対し間引き処理を実行するなどの保持ブロック獲得処理を実行する。これにより、当該中間コード画像データの容量は少なくされるので、より少ない容量で保持ブロックが確保される。作成（あるいは間引き）された中間コード画像データは、ステップＳ９において保持ブロック４にセットされる。
【００２８】
次に、ステップＳ１０において制御部は、当該描画オブジェクトが存在するバンドについて、その描画オブジェクトの各色成分毎のランレングス数や、各フラグを、そのバンドの識別情報としてセットする。具体的な、識別情報の内容について図６に示した通りである。
以降、制御部は、そのコード画像データに含まれる他の描画オブジェクトについても、同様な処理を実行すべく、処理手順をステップＳ１に戻す。そして、制御部は、そのコード画像データに含まれるすべての描画オブジェクトに対して処理を完了すると、処理手順を、図９におけるステップＳ１１に分岐させる。
したがって、ステップＳ１１に分岐した段階では、各ページを構成するバンド画像の各々に対しバンド情報が作成されることになる。
【００２９】
ステップＳ１１において制御部は、レンダリング時間予測処理を実行して、次のように、各バンド画像について、そのレンダリング処理に要する時間を予測する。
前述したように、レンダリング処理は、▲１▼バンドバッファをすべてゼロにクリアするクリア処理、▲２▼中間コード画像データをメモリから読み出す読出処理、▲３▼読み出した中間コード画像データをラスターデータに展開する展開処理、および▲４▼ラスターデータをバンドバッファに書き込む書込処理に大別される。そして、これら４つの処理に要する時間は、次のように算出することができる。
▲１▼クリア処理に要する時間は、バンドバッファの容量に依存した定数であるといえる。このため、本実施形態のように、すべてのバンドバッファサイズが固定値であるならば、特に情報を参照しなくても、クリア処理に要する時間を求めることはできる（ただし、説明の便宜上、図６に示すように、バンド情報にバンドバッファゼロクリア時間を設けた）。
▲２▼読出処理に要する時間は、読み出すべき中間コード画像データの総バイト数と読出効率（時間／バイト）との積により求めることができる。ここで、中間コード画像データの総バイト数については、１つの描画オブジェクトに対応するコード画像データのバイト数が、その変換の際に求められ（ステップＳ４）、そのバンドにおける総数が識別情報としてセットされている（ステップＳ１０）ので、当該バンド情報を参照することで求められる。また、読出効率は、レンダリング情報（図７参照）を参照することで求められる。
結局、当該バンド情報とレンダリング情報とを参照して、演算することにより、▲２▼読出処理に要する時間が求められることとなる。
▲３▼展開処理に要する時間は、描画オブジェクトの種類および数に依存する。さらに、圧縮されている場合には、その伸張処理に要する時間も含まれる。ここで、描画オブジェクトの種類および数については、当該バンド情報において描画オブジェクト毎のランレングス数を参照することで求められる。また、圧縮された場合に、その伸張処理に要する時間は、レンダリング情報の伸張効率を参照することで求められる。結局、圧縮が行なわれていなければ当該バンド情報を参照することにより、また、圧縮が行なわれていればさらにレンダリング情報を参照することにより、▲３▼展開処理に要する時間が求められることとなる。
▲４▼書込処理に要する時間は、基本的に、ＣＭＹＫの総ランレングス数と書込効率（時間／バイト）との積により求めることができる。ただし、マージ処理が行なわれた場合には、ＣＭＹＫの総ランレングス数として、ゼロでないランレングス数を用いる。
ここで、ＣＭＹＫの総ランレングス数あるいはゼロでないランレングス数は、バンド情報を参照することで求められる。また、書込効率は、レンダリング情報を参照することで求められる。
結局、基本的には、当該バンド情報とレンダリング情報とを参照して、演算することにより、▲４▼書込処理に要する時間が求められることとなる。
ただし、間引き処理が行なわれた場合、さらに、間引かれたラインの補間処理に要する時間を加算する必要がある。かかる補間処理は、後述するように、間引かれていない近傍のラインについてのラスターデータをコピーして当該バンドバッファに格納する処理であり、この処理に要する時間は、間引かれたライン数にかかるバイト量とレンダリング情報のコピー効率との積により求めれる。ここで、間引き処理が行なわれた場合、そのバンド情報に示されるランレングス数は、間引きされたライン数のバイト量を含まないものである。このため、間引かれたライン数のバイト量は、間引き処理の内容と、当該バンドのランレングス数から逆算して求めることができる。また、コピー効率は、レンダリング情報を参照することで求められる。
結局、間引き処理が行なわれた場合であっても、その補間処理に要する時間をも考慮して、▲４▼書込処理に要する時間が求められることとなる。
【００３０】
このように、１つのバンドにおけるレンダリング処理に要する時間は、▲１▼〜▲４▼に求められる時間の和であり、いずれも、当該バンド情報とレンダリング情報とを参照することで求められる。
そして、このようにして求めた時間の和を、制御部は、当該バンドにおいてレンダリング処理に要する時間と予測する。
次に、この処理により予測された時間が、出力装置において１つのバンド画像の出力に要する時間よりも長くなるバンドが１つでも存在する場合、制御部は、中間コード画像データに対しマージ処理、間引き処理を順番に実行し、これら処理後に再度、レンダリング時間予測処理を実行する。そして、これら処理を実行したのにもかかわらず、いずれかのバンドについてレンダリング処理に要する時間が、出力装置における１バンド画像の出力時間よりも長いと予測すれば、制御部は、不良画像が出力される旨をユーザに知らせるなどのエラー処理を実行する。
一方、各バンドについての予測時間が、出力装置における１バンド画像の出力に要する時間より、すべて短ければ、制御部は、次に述べる以降の処理を実行して、実際にレンダリング処理を開始する。
【００３１】
まず、制御部はステップＳ１２において未処理となっている色が存在するか否かを判別する。ここで、色の処理順序については、ＣＭＹＫの面順次型データを、白黒モード／カラーモードの切替が可能な出力装置に供給するものであるから、ＫＹＭＣとする。
すべての色について処理していれば、当該コード画像データによって出力すべき全ページにおけるすべてのバンドについてレンダリング処理が完了したことになるから、当該レンダリング処理が終了する。一方、制御部は、未処理の色があれば、処理対象をその色に設定し、次のステップＳ１３において、未処理のバンドが存在するか否かを判別する。
もし、未処理のバンドがあるならば、制御部は、処理対象をそのバンドに設定する。なお、バンドについての処理の順番は、画像の副走査方向となっている。
【００３２】
次に、制御部は、ステップＳ１４において、バンドバッファがゼロクリアにされているか否かを判定する。ここで、バンドバッファをゼロクリアするか否かの判定は、バンドにコード画像データが存在するか否かとは無関係なので、本実施形態においては、各バンドバッファに対応して設けられるゼロクリア情報により判定することとする。したがって、ゼロクリア情報は、各バンドについての色毎の識別情報とは全く無関係である。
これにより、制御部は、使用するバンドバッファに対応するゼロクリア情報をチェックして、当該バンドバッファがゼロクリアされていないと認識すれば、識別情報によって、当該バンドに描画オブジェクトが存在しなくても、ステップＳ１５において当該バンドバッファのゼロクリア処理を実行する一方、当該バンドバッファがすでにゼロクリアされていると認識すれば、ステップＳ１５におけるゼロクリア処理をスキップする。
【００３３】
この後、制御部は、ステップＳ１６において、処理対象となっているバンドについて処理対象となっている色成分がゼロか否かを判別する。この判別は、識別情報としてフラグが用いられる場合にあっては、当該色成分に対応するフラグがオフであるか否かを検出することで行なわれ、また、識別情報としてランレングスが用いられる場合にあっては、当該色成分に対応するランレングスがゼロであるか否かを検出することで行なわれる。
もし、色成分がゼロであれば、制御部は、当該色成分について、▲２▼読出処理、▲３▼展開処理、および▲４▼書込処理をスキップすべく、処理手順を後述するステップＳ３４に移行させる一方、色成分がゼロでなければ、次のステップＳ１７以降において中間コード画像データの解釈を行なわせる。
その前にステップＳ１７においては、制御部は、当該バンドに対応するバンド情報のうちのマージフラグを参照して、当該バンドにおいてマージ処理が実行されたか否かを判別する。制御部は、マージ処理が実行されていれば、処理手順を後述するステップＳ２６に分岐させる一方、マージ処理が実行されていなければ、処理手順を図９におけるステップＳ１９に分岐させる。
【００３４】
制御部は、ステップＳ１９において、当該バンドにおける未処理の中間コード画像データが存在するか否かを判別し、あれば展開部５に対し、次のように指示する。すなわち、制御部は、展開部５に対し、ステップＳ２０において当該中間コード画像データを保持ブロック４から読み出すように指示し、ステップＳ２１において当該中間コード画像データを解釈するように指示し、ステップＳ２２においてその解釈結果たるラスタデータを当該バンドバッファに書き込むように指示する。これにより、当該中間コード画像データが実際にラスターデータに展開されて、対応するバンドバッファに格納されることとなる。
そして、制御部は、ステップＳ２２における指示後、処理手順を再びステップＳ１９に戻す。これにより、当該バンドにおけるすべての中間コード画像データについて、▲２▼読出処理、▲３▼展開処理、および▲４▼書込処理が実行されることとなる。
【００３５】
一方、制御部は、ステップＳ１９において、当該バンドにおける未処理の中間コード画像データが存在しないと判別すれば、処理手順をステップＳ２３に分岐させ、そこで、当該バンドに対応するバンド情報のうちの間引きフラグを参照して、当該バンドにおいて間引き処理が実行されたか否かを判別する。間引き処理が実行されていなければ、当該バンドについてのレンダリング処理が完了したことを意味するから、制御部は、処理手順を後述するステップＳ３４に分岐させる。一方、間引き処理が実行されていれば、制御部は、次のステップＳ２４において展開部５に対して、描画オブジェクトのうち、間引かれていないラインについては、そのラスターデータを当該バンドバッファに格納するとともに、間引かれたラインについては、間引かれていない近傍のラインについてのラスターデータをコピーして当該バンドバッファに格納するように指示する。これにより間引かれたラインは補間されたことになる。
次に、制御部は、ステップＳ２５において、当該バンドにおいて、未処理状態の間引かれたラインが存在するか否かを判別する。あれば、当該ラインについてコピー処理を同様に実行すべく、制御部は処理手順をステップＳ２４に戻す一方、なければ、それは当該バンドにおいて間引かれたすべてのラインが補間されたことを意味するから、制御部は、処理手順を後述するステップＳ３４に移行させる。
【００３６】
さて、制御部は、図９のステップＳ１７において、当該バンドに対しマージ処理が実行されていないと判別すると、処理手順を図１１におけるステップＳ２６に分岐させる。
制御部は、ステップＳ２６において、当該バンドにおける未処理の中間コード画像データが存在するか否かを判別し、あれば、さらにステップＳ２７において、その未処理となっている中間コード画像データにおいて、処理対象となっている色成分がゼロであるか否かを判別する。ゼロでなければ、制御部は、展開部５に対し、次のように指示する。すなわち、制御部は、展開部５に対し、ステップＳ２８において当該中間コード画像データを保持ブロック４から読み出すように指示し、ステップＳ２９において当該中間コード画像データを解釈するように指示し、ステップＳ３０においてその解釈結果たるラスタデータを当該バンドバッファに書き込むように指示する。これにより、当該中間コード画像データが実際にラスターデータに展開されて、対応するバンドバッファに格納されることとなる。
一方、ステップＳ２７において、未処理となっている中間コード画像データにおいて、処理対象となっている色成分がゼロであれば、制御部は、ステップＳ２８〜Ｓ３０をスキップさせる。
そして、制御部は、ステップＳ３０における指示後あるいはステップＳ２８〜Ｓ３０をスキップさせた後、処理手順を再びステップＳ２６に戻す。これにより、当該バンドにおけるすべての中間コード画像データについて、同様な処理が実行されることとなる。
【００３７】
一方、制御部は、ステップＳ２６において、当該バンドにおける未処理の中間コード画像データが存在しないと判別すれば、上述のステップＳ２３〜Ｓ２５と同様なステップＳ３１〜Ｓ３３の処理を実行する。これにより、当該バンドにおいて間引かれたすべてのラインが補間されることなる。
【００３８】
次に、ある１つのバンドについてのレンダリング処理が完了した場合、あるいは、ある１つのバンドについてその色成分がゼロである場合、処理手順は図１２におけるステップＳ３４に移行する。
まず、制御部は、ステップＳ３４において、出力装置が起動しているか否かをチェックする。すでに起動していれば、以降のステップＳ３５〜Ｓ３８の処理を実行する必要がないので、制御部は、次のバンドを処理すべく、処理手順を図９におけるステップＳ１３に戻す。一方、出力装置がいまだ起動していなければ、制御部は、現時点における各状態が出力装置の起動条件を満たしているか否かを判別する。
ここで、出力装置の起動条件とは、ラスターデータの格納が完了したバンドバッファの個数が、所定値となったことである。本実施形態にあっては、バンドバッファの個数を４としたので、ラスターデータの格納が完了したバンドバッファの個数が２個となった状態が、起動条件を満たすものとする。このように起動条件を設定したのは次の理由による。
まず、第１に、前述のステップＳ１１におけるレンダリング時間予測処理において、各バンドについてレンダリング処理の予測時間が、出力装置における１バンド画像の出力に要する時間よりすべて短かいと判断したので、ラスターデータの格納が完了したバンドバッファの個数を１個としても、少なくともラスターデータのバンドバッファへの書込がバンドバッファからの読出に追いつかないという事態は発生しないと考えられるが、余裕をみて２個としたからである。第２に、空き状態となっているバンドバッファの個数が少なくとも２個ないと、レンダリング処理を、出力装置において出力にかかるバンドに応じて不必要に待機させなければならないので、レンダリング処理を高速に実行する目的からすれば適切でないからである。
【００３９】
さて、ステップＳ３５において起動条件が満たされない場合、ラスターデータの格納が済んだバンドバッファの個数を増やすべく、レンダリング処理を引き続き継続させるため、制御部は、処理手順を図９におけるステップＳ１３に戻す。一方、起動条件が満たされる場合、制御部は、ステップＳ３６において、この処理にかかるすべてのバンドについてＣＭＹの識別情報をチェックし、これらの色成分がすべてゼロであるか否かを判別して、色成分がＫのみか否かを判断する。この色成分の判別は、識別情報としてフラグが用いられる場合にあっては、当該色成分に対応するフラグがオフであるか否かを検出することで行なわれ、また、識別情報としてランレングスが用いられる場合にあっては、当該色成分に対応するランレングスがゼロであるか否かを検出することで行なわれる。
そして、制御部は、色成分がＫのみであれば、ステップＳ３７において出力装置を白黒モードで起動させる一方、それ以外であれば、ステップＳ３８において出力装置をカラーモードで起動させる。
この後、制御部は、処理手順を図９におけるステップＳ１３に戻す。
【００４０】
さて、図９におけるステップＳ１３に戻った場合、未処理のバンドがあれば、引き続き処理を継続する一方、なければ、処理手順をステップＳ１８に分岐して、色成分がＫのみか否かを判断する。この判断が「Ｙｅｓ」であれば、それは、すべてのバンドの色成分がＫであって、すべてのバンドに対してＫの色成分について処理が完了したことを意味する。このため、レンダリング処理が終了する。一方、この判断が「Ｎｏ」であれば、それは、すべてのバンドに対し、少なくともＫの色成分については処理が完了したが、他のＹＭＣについては未処理となっているものがあることを意味する。このため、制御部は、未処理となっている色成分についても同様な処理を実行すべく、処理手順をステップＳ１２に戻す。
【００４１】
したがって、以上述べた処理は、すべてのバンドの色成分がＫのみであれば、すべてのバンドが処理された段階で終了し、すべてのバンドの色成分がＫのみでなければ、ＫＹＭＣの順番で、すべてのバンドが処理された段階で終了する。
そして、このような処理において、識別情報によっては、中間コード画像データに対して、行なう必要のない▲１▼クリア処理、▲２▼読出処理、▲３▼展開処理、および▲４▼書込処理がスキップされるので、レンダリング処理の高速化を図ることができる。
さらに、各バンドについての色成分毎の識別情報とレンダリング情報とから、当該バンドについてのレンダリング処理に要する時間をより正確に予測できるので、出力装置を適切なタイミングで起動させることができ、結局、出力に要する時間の短縮を図ることができる。
【００４２】
【発明の効果】
以上説明したように、本発明によれば、レンダリング処理をバンド画像毎に行なうものにおいて、レンダリング処理の高速化と、そのレンダリング処理に要する時間の正確な予測とが可能となる。
【図面の簡単な説明】
【図１】  本発明の実施形態にかかる画像処理装置の構成を示すブロック図である。
【図２】  バンド情報の構成を示す一例を示す図である。
【図３】  バンド情報の構成を示す一例を示す図である。
【図４】  バンド情報の構成を示す一例を示す図である。
【図５】  バンド情報の構成を示す一例を示す図である。
【図６】  本実施形態にかかるバンド情報の構成を示す例である。
【図７】  本実施形態におけるレンダリング情報の構成を示す図である。
【図８】  本画像処理装置の動作を示すフローチャートである。
【図９】  本画像処理装置の動作を示すフローチャートである。
【図１０】  本画像処理装置の動作を示すフローチャートである。
【図１１】  本画像処理装置の動作を示すフローチャートである。
【図１２】  本画像処理装置の動作を示すフローチャートである。
【符号の説明】
２……コード画像データ解釈部（解釈手段）、
３……中間コード画像データ変換部（中間コード作成手段）、
５……レンダリング部（展開手段）、
６……バッファ（バンドバッファ）
【図１】
0003772407.tif 000002
【図２】
0003772407.tif 000003
【図３】
0003772407.tif 000004
【図４】
0003772407.tif 000005
【図５】
0003772407.tif 000006
【図６】
0003772407.tif 000007
【図７】
0003772407.tif 000008
【図８】
0003772407.tif 000009
【図９】
0003772407.tif 000010
【図１０】
0003772407.tif 000011
【図１１】
0003772407.tif 000012
【図１２】
0003772407.tif 000013