(57)【要約】【課題】スキャンラインアルゴリズムを用いるレンダリング処理において、描画速度を高速化すること。【解決手段】スキャンライン法で描画処理を行う画像処理装置は、受信した印刷ジョブを解析してオブジェクトを生成する。オブジェクト結合処理にて、受信したオブジェクトのスプール（Ｓ６０２）後、生成したオブジェクトが解析され、当該オブジェクトが、幅よりも高さの大きい縦長のオブジェクト（縦切れオブジェクト）であるか否かが判定される（Ｓ６０７）。オブジェクトが縦切れオブジェクトであると判定された場合、スプール済みのオブジェクトに対し、まとめて縦方向へレンダリングするためにオブジェクトの結合処理が実行される（Ｓ６０９）。【選択図】  図６
2016192737.tif 000002
【特許請求の範囲】
【請求項１】
スキャンライン法で描画処理を行う画像処理装置であって、
取得したデータからオブジェクトを生成する生成手段と、
前記オブジェクトのスプールを行うスプール手段と、
前記オブジェクトが、幅よりも高さの大きい縦長のオブジェクトであるか否かを判定する判定手段と、
前記判定手段により、前記オブジェクトが前記縦長のオブジェクトであると判定され、かつ当該縦長のオブジェクトが、前記スプール手段によるスプール済みのオブジェクトに対して結合できる場合に、前記縦長のオブジェクトおよびスプール済みのオブジェクトをまとめて縦方向へレンダリングを行う描画手段と、を備えることを特徴とする画像処理装置。
【請求項２】
前記判定手段により、前記オブジェクトが縦長のイメージオブジェクトであると判定され、かつ当該イメージオブジェクトの幅が閾値以内である場合、前記描画手段は、当該オブジェクトに設定されるイメージバイナリを縦方向に連続させる配置に変更することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
複数のオブジェクトのオペランド情報を比較し、複数のオブジェクトの間でオペランド情報が同一である場合に複数のオブジェクトの結合が可能であると判定する結合判定手段を備えることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記結合判定手段は、第１のオブジェクトと第２のオブジェクトとの間でオペランド情報が異なる場合でも、第１のオブジェクトのオペランド情報がイメージであって第２のオブジェクトのオペランド情報がフラットフィルである場合には第１および第２のオブジェクトの結合が可能であると判定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記結合判定手段は、取得したオブジェクトを、前記スプール手段によるスプール済みのオブジェクトに対して結合する場合の面積と結合しない場合の面積との面積比が閾値以下である場合、前記オブジェクトをスプール済みのオブジェクトと結合可能であると判定することを特徴とする請求項３または４に記載の画像処理装置。
【請求項６】
前記結合判定手段は、取得したオブジェクトの幅が閾値以内であり、かつ当該オブジェクトの高さと幅との比率が閾値以上である場合、前記オブジェクトを前記縦長のオブジェクトとしてスプール済みのオブジェクトと結合可能であると判定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記描画手段により出力された画像データから画像の印刷処理を行う印刷手段をさらに備えることを特徴とする請求項１から６のいずれか１項に記載の画像処理装置。
【請求項８】
前記縦長のオブジェクトの幅方向は、前記スキャンライン法におけるスキャンライン方向であることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
スキャンライン法で描画処理を行う画像処理装置にて実行される画像処理方法であって、
前記画像処理装置により、
取得したデータからオブジェクトを生成する生成工程と、
前記オブジェクトのスプールを行うスプール工程と、
前記オブジェクトが、幅よりも高さの大きい縦長のオブジェクトであるか否かを判定する判定工程と、
前記判定工程にて前記オブジェクトが縦長のオブジェクトであると判定され、かつ当該縦長のオブジェクトが、前記スプール工程にてスプール済みのオブジェクトに対して結合できる場合に、前記縦長のオブジェクトおよびスプール済みのオブジェクトをまとめて縦方向へレンダリングを行う描画工程と、を有することを特徴とする画像処理方法。
【請求項１０】
前記描画工程で出力された画像データから画像の印刷処理を行う印刷工程を更に有し、
前記縦長のオブジェクトの幅方向は、前記スキャンライン法におけるスキャンライン方向であることを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
コンピュータを、請求項１から８のいずれか１項に記載の画像処理装置の各手段として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンライン法による描画処理の技術に関するものである。
【背景技術】
【０００２】
従来、印刷ジョブからビットマップ画像を描画する手法として、スキャンライン法がある。スキャンライン法では、一般的にPDL(ページ記述言語)で記述される印刷ジョブに含まれるオブジェクトを解釈して中間データであるDL(ディスプレイリスト)を生成する。そしてその生成されたＤＬに含まれるオブジェクトは、主走査方向に延びるスキャンラインを単位として描画処理がなされる。スキャンライン内では、オブジェクトごとに描画処理が行われる為、同一のスキャンライン上に多量のオブジェクトが存在する印刷ジョブでは描画処理が遅くなることがあった。そこで、DL生成の段階でN個のオブジェクトをM個(M＜N)のオブジェクトへ結合することで同一スキャンライン上のオブジェクト数を削減し、描画処理を高速化させる技術がある。
【０００３】
特許文献１に開示される装置では、結合対象のオブジェクトの種別、オブジェクト同士の重なり方、結合するオブジェクト数に応じて描画方法（ぺインターズ法、スキャンライン法）を変更する。アプリケーションによっては、１本の線を重なる複数のオブジェクトに分割して表現する等、冗長な描画指示を行うものがある。特に多数の細かいオブジェクトを、スキャンライン法を用いて描画すると、オブジェクトごとの情報（エッジやレベル）の処理に多大な負荷がかかる。結合対象のオブジェクトの種別やオブジェクト同士の重なり方、結合するオブジェクト数に応じて描画方法を変更することで、結合するオブジェクトに最適な方法で描画できる。これにより、ビットマップ画像の描画を高速化することが可能になった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−４２４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術では、縦切れ状のオブジェクトを結合する場合に以下の課題があった。縦切れ状のオブジェクト（以下、縦切れオブジェクトという）とは、描画オブジェクトにてアプリケーション等により分断された細切れのオブジェクトであり、幅に比べて高さの方が大きい、縦長の細長いオブジェクトである。
【０００６】
図７は縦切れオブジェクトが生成される一例を示す。なお以下の図７（Ａ）〜（Ｄ）における水平方向（横方向）は印刷装置で行われる画像形成の主走査方向に対応し、垂直方向（縦方向）は副走査方向（用紙搬送方向）に対応する。また印刷装置の主走査方向は、印刷装置のスキャンライン法によるレンダリングにおけるスキャンライン方向と等しい。ホストマシンのアプリケーションにより、図７（Ａ）に示されるような画像の向きがポートレート（縦置き）であるアプリケーションデータ７００を生成した後、印刷処理を行う場合を想定する。アプリケーションによって、図７（Ｂ）のアプリケーションデータ７１０のようにページ全面をイメージ化し、水平方向に1ライン単位で分割する処理が行われ、プリンタドライバへデータが送られる。このときに、データの出力先装置が横送り搬送の印刷装置の場合、プリンタドライバはページ全体を回転させ、図７（Ｃ）および（Ｄ）の印刷ジョブ７２０のようにデータの向きをランドスケープ（横置き）に変換してから印刷装置へデータを送る。印刷ジョブ７２０では、この変換によって図７（Ｄ）のオブジェクト７２１に示すように、「幅<<高さ」となる縦切れオブジェクトが多数生成される。
【０００７】
特許文献１の技術では、オブジェクトが縦切れオブジェクトかどうかを判定する構成がなく、オブジェクトどうしの結合時のレンダリングアルゴリズムは、上述のスキャンライン法となる。その場合、図７（Ｃ）および（Ｄ）の印刷ジョブ７２０に対して、図７（Ｄ）の矢印７２２に示す水平方向（幅方向）にデータが解釈される。この為、オブジェクトの個数に比例した多量のエッジを処理するため、計算量が膨大になる。
本発明の目的は、レンダリングの描画速度を高速化することである。
【課題を解決するための手段】
【０００８】
本発明に係る装置はスキャンライン法で描画処理を行う画像処理装置であって、取得したデータからオブジェクトを生成する生成手段と、前記オブジェクトのスプールを行うスプール手段と、前記オブジェクトが、幅よりも高さの大きい縦長のオブジェクトであるか否かを判定する判定手段と、前記判定手段により、前記オブジェクトが前記縦長のオブジェクトであると判定され、かつ当該縦長のオブジェクトが、前記スプール手段によるスプール済みのオブジェクトに対して結合できる場合に、前記縦長のオブジェクトおよびスプール済みのオブジェクトをまとめて縦方向へレンダリングを行う描画手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、レンダリングの描画速度を高速化することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における装置のハードウェア構成例を示す図である。
【図２】本実施形態における装置のソフトウェアモジュール構成例を示す図である。
【図３】図２のDL生成部モジュールについてのサブモジュールの一例を示す図である。
【図４】本実施形態におけるオブジェクトの構成例を示す図である。
【図５】本実施形態における印刷制御例を示すフローチャートである。
【図６】本実施形態におけるオブジェクト結合処理例を示すフローチャートである。
【図７】縦切れオブジェクトが生成される過程を示す図である。
【図８】本実施形態における結合実施および結合判定の処理を示すフローチャートである。
【図９】本実施形態におけるDL生成処理例を示すフローチャートである。
【図１０】本実施形態におけるDLの構成例を示す図である。
【図１１】本実施形態での通常オブジェクト結合例を示すフローチャートである。
【図１２】本実施形態での縦切れオブジェクト結合例を示すフローチャートである。
【図１３】本実施形態における結合の過程を示す模式図である。
【図１４】オブジェクトの幅が１より大きい場合のDL生成処理例を示すフローチャートである。
【図１５】図１４に示すＳ１４０２の処理の説明図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態に係る画像処理装置としての印刷制御装置について図面を参照して説明する。
図１は、本実施形態に係る印刷制御装置１００のハードウェア構成の一例を示すブロック図である。ＣＰＵ（Central Processing Unit）１０１は印刷制御装置１００の制御中枢部であり、後述する印刷制御装置１００のソフトウェア２００（図２参照）を解釈して実行する。ＲＡＭ（Random Access Memory）１０２は、ＣＰＵ１０１がアクセス可能な記憶デバイスである。ＲＡＭ１０２はソフトウェア２００の動作に必要なメモリの確保先として利用される。ＲＯＭ（Read Only Memory）１０３には、ソフトウェア２００のプログラムが格納されており、該プログラムはＣＰＵ１０１に読み込まれて実行される。ネットワークＩＦ部１０４は、ネットワークを介して外部装置（パーソナルコンピュータや他の印刷制御装置等）と接続され、主に印刷データの受信を行うためのインタフェース部である。尚、以降、印刷データについてはPDL（Page Description Language）データとして説明する。エンジン１０５は、ＣＰＵ１０１によって解釈されたPDLデータにしたがって印刷用紙に印刷処理を行う印刷エンジンである。本実施形態ではネットワークを介して外部装置から印刷処理を行う例について説明するが、外部装置からでなく、PDLデータがＲＡＭ１０２に保存されている場合においても、ＲＡＭ１０２からデータを読み出す事で、同様の効果が得られる。
【００１２】
図２は、印刷制御装置１００のソフトウェア構成の一例を示す図である。
印刷制御装置１００のソフトウェア２００は、４つのソフトウェアモジュールで構成され、これらは全てＣＰＵ１０１上で動作する。PDL受信部２０１は、ネットワークＩＦ部１０４からPDLデータを受信する為のモジュールである。受信されたPDLデータは、ＲＡＭ１０２に格納される。PDL解釈部２０２は、ＲＡＭ１０２に格納されたPDLデータで指定される描画コマンドを読み出して解釈する為のモジュールである。この描画コマンドに従い、描画対象であるオブジェクトの形状や色情報が決定され、オブジェクトが生成される。図４を参照してオブジェクトの構成例を説明する。
【００１３】
図４は、生成されるオブジェクトの構成の一例を示す。オブジェクト情報４０１は、そのオブジェクトがイメージオブジェクトであるか、グラフィックオブジェクトであるか等、オブジェクトの属性を示す情報である。パス形状情報４０２は、オブジェクトの描画範囲情報や、オブジェクトのアウトラインを点列で表現したパス点列情報等、オブジェクトの位置やアウトラインに関する情報である。オペランド情報４０３は、オブジェクトのオペランド種別（Image、FlatFill等）、色情報、色空間（RGB、Gray等）といった、描画に関する情報である。オペレータ情報４０４は、オブジェクトの階層に関連する情報である。
【００１４】
図２のDL生成部２０３は、オブジェクトを中間データであるDL（Display List）を生成する為のモジュールである。尚、DL生成部２０３のサブモジュールについては、図３を用いて後述する。RIP（Raster Image Processor）処理部２０４は、DL生成部２０３で生成されたDLに基づき、ラスタライズする為のモジュールである。DLの構造については図１０を用いて後述する。
【００１５】
図３は、図２のDL生成部２０３を構成するサブモジュールのソフトウェア構成の一例を示す図である。
管理部３００は、他のサブモジュールに対して、制御に応じて情報の送受を行う為のサブモジュールである。結合判定部３０１は、受信したオブジェクトが結合可能かの判定や、受信したオブジェクトとスプール済みのオブジェクトの情報から最適な結合形式を判定する為のサブモジュールである。結合形式の例として、通常イメージ結合がある。通常イメージ結合とは、全てのオブジェクトをレンダリングしてイメージとして出力する結合形式である。後述する縦切れオブジェクト結合の判定については管理部３００（サブモジュール）の管理下で行われる。結合形式には、この他にフラットフィル（FlatFill）同士を結合するパス結合などがあるが、本発明の要旨と直接的な関係はないのでその説明を割愛する。
【００１６】
オブジェクトスプール部３０２は、受信したオブジェクトをスプールする為のサブモジュールである。スプールされたオブジェクトはＲＡＭ１０２に格納される。オブジェクト結合部３０３は、オブジェクトスプール部３０２でスプールしたオブジェクトを結合する為のサブモジュールである。DL変換部３０４は、オブジェクトをDLに変換する為のサブモジュールである。
【００１７】
次に、図５を参照して印刷制御装置１００のソフトウェア２００の処理例について説明する。図５はソフトウェア２００の処理例を示すフローチャートであり、以下の各フローチャートに示す処理は、ＲＯＭ１０３に記憶されたプログラムをＣＰＵ１０１が実行することによって実現される。
【００１８】
Ｓ５０１にてPDL受信部２０１は、ネットワークＩＦ部１０４からPDLコマンドを受信し、ＲＡＭ１０２に格納する。Ｓ５０２から反復処理が開始し、Ｓ５０１で受信したPDLの描画コマンドの読み出しが終了するまで、Ｓ５０３からＳ５０５の処理が繰り返し実行される。Ｓ５０３でPDL解釈部２０２は、格納されたPDLの描画コマンドを読み出して解釈し、オブジェクトを生成する。Ｓ５０４でDL生成部２０３は、Ｓ５０３で生成されたオブジェクトの結合を試みる。この処理の詳細については図６を用いて後述する。尚、Ｓ５０４にて結合不可とされたオブジェクトについてはそのままＳ５０５の処理へ渡される。
【００１９】
Ｓ５０５にてDL生成部２０３は、Ｓ５０４での処理後に渡されるオブジェクトからDLを生成する。DL生成処理の詳細については、図９を用いて後述する。Ｓ５０６にてRIP処理部２０４は、Ｓ５０２からＳ５０５の処理で生成されたDLに基づき、ページをラスタライズする。ラスタライズ方法については図１２を用いて後述する。エンジン１０５は、ラスタライズ後の各ページの画像データにしたがって印刷用紙に画像を印刷する。
【００２０】
図６のフローチャートを参照して、図５に示すＳ５０４のオブジェクト結合処理の詳細を説明する。さらには図７の処理例を併せて説明する。図７に示す印刷ジョブ７２０は用紙サイズがA4であって解像度600dpi(dot per inch)であり、図５のＳ５０３で解釈されてオブジェクトが生成される。図７（Ｄ）に示す縦長のオブジェクト７２１は、そのうちの１つのオブジェクトである。オブジェクトの幅方向を矢印７２２で示す。この矢印７２２の方向は、副走査方向（印刷用紙の搬送方向）に直交する主走査方向（すなわち通常のスキャンライン法におけるスキャンライン方向）である。オブジェクト７２１は幅が１ピクセルで、高さH(=4961)のイメージオブジェクトである。図７（Ｃ）および（Ｄ）に示す印刷ジョブ７２０はN(=7061)個のオブジェクト７２１が隙間なく並ぶ矩形のデータであり、現時点でM個のオブジェクト７２１がスプールされている状態とする（「0<M<N」である）。
【００２１】
図６のＳ６０１にて結合判定部３０１は、受信したオブジェクト（以下、受信オブジェクトという）が結合可能なオブジェクトか否かを判断する。結合可能なオブジェクトとして、本実施形態では、オペランド情報がフラットフィル（FlatFill）、イメージ（Image）、またはグリフ（Glyph）のいずれかであり、パス点列情報で矩形、スキャンラインの形状をしたものを対象とする。ここで判断される事項は、受信オブジェクトが結合可能であるか否かであり、実際にオブジェクトを結合するか否かについては後続の処理で決定される。図７（Ｂ）のオブジェクト７２１の場合、オペランド情報がImageであって、パス点列情報が矩形である為、結合可能と判定される。
【００２２】
Ｓ６０２にてオブジェクトスプール部３０２は、受信オブジェクトをスプールする。スプールされたオブジェクトはＲＡＭ１０２へ格納される。尚、Ｓ６０２でスプールされるオブジェクトは、既にスプール済みのオブジェクト（スプール済みオブジェクト）とは区別された領域に格納され、Ｓ６０３で受信オブジェクトをスプールすると判定された後、同じ領域へ格納されるものとする。これは、Ｓ６０３にてスプール済みオブジェクトを結合すると判定されてオブジェクトを結合する際、このオブジェクトとスプール済みオブジェクトが同じタイミングで結合されるのを防ぐためである。
【００２３】
Ｓ６０３にて結合判定部３０１は、受信オブジェクトの情報に基づいて、当該オブジェクトと、スプール済みオブジェクトとが同じ結合方法で結合できるか否かを判定する。これらのオブジェクトが同じ結合方法で結合できる場合、受信オブジェクトはスプール済みオブジェクトとして同じ領域に格納される。一方、異なる結合方法であれば、スプール済みオブジェクトだけが結合され、受信オブジェクトはスプール済みオブジェクトとして格納される。この処理について、図８を参照して説明する。
【００２４】
Ｓ８０１にて結合判定部３０１は、受信オブジェクトのオペランド情報と、スプール済みオブジェクトのオペランド情報を比較する。比較結果の一覧は表1の通りである。
【表１】
2016192737.tif 000003
表１において、最上行を受信オブジェクトのオペランド情報とし、最左列をスプール済みオブジェクトのオペランド情報とする。“OK”は結合可能を意味し、“NG”は結合不可を意味する。両オブジェクト間で同一のオペランド情報をもつ場合、比較結果がOKである。また、両オブジェクト間でオペランド情報が異なる場合であっても、一方のオペランド情報がImageで他方のオペランド情報がFlatFillである場合には、比較結果がOKである。両オブジェクト間で同一のオペランドでなくてもOKとしている理由は、一定領域にオブジェクトが重なって密集している場合、パス結合よりもイメージ結合を実施した方が、パスのトレースが不要な分だけ高速である場合が多いからである。図７（Ｄ）のオブジェクト７２１はオペランド情報がImageであり、スプール済みオブジェクトのオペランド情報がImageであるので、比較の結果、OKと判定される。
【００２５】
Ｓ８０２では、Ｓ８０１における結合判定部３０１の比較結果として、OKと判断された場合、Ｓ８０３へ処理を進める。また、NGと判断された場合に結合判定部３０１は、受信オブジェクトとスプール済みオブジェクトを結合せず、スプール済みオブジェクトのみ結合を開始させると判断して図６のＳ６０４へ移行する。
【００２６】
Ｓ８０３にて結合判定部３０１は、スプール済みオブジェクトを結合した場合の面積と、受信オブジェクトとスプール済みオブジェクトを結合した場合の面積との比を算出して、所定の閾値と比較し、面積比が閾値以下になるか否かを判定する。判定の結果、面積比が閾値以下になると判定された場合、Ｓ８０４へ処理を進める。また、面積比が閾値を超えると判定された場合に結合判定部３０１は、受信オブジェクトとスプール済みオブジェクトは結合せず、スプール済みオブジェクトのみ結合を開始させると判断し、図６のＳ６０４へ移行する。例えば、Ｓ８０３での比較に用いる閾値を2.1に設定した場合を想定する。図７（Ｄ）のオブジェクト７２１では、隙間なくオブジェクトが配置されているため、結合前後の面積比は、以下のように閾値未満であるという判定条件を満たす（「M≧１」である）。
(結合前の面積) = 1×H×M
(結合後の面積) = 1×H×M+1×H
(結合前後の面積比) = (1×H×M+1×H)/(1×H×M) = 1+1/M < 2.1
【００２７】
Ｓ８０４からＳ８０６は、受信オブジェクトが縦切れオブジェクト結合可能か否かを判断する為の処理である。Ｓ８０４で結合判定部３０１は、受信オブジェクトおよびスプール済みオブジェクトの各オペランド情報が共にImageであるか否かを判定する。両オブジェクトのオペランド情報が共にImageである場合にはＳ８０５へ処理を進め、そうでない場合にはＳ８０７へ移行する。
【００２８】
Ｓ８０５にて結合判定部３０１は、受信オブジェクトの幅を所定の閾値と比較し、幅が閾値以内であるか否かを判定する。判定の結果、幅が閾値以内である場合にはＳ８０６へ処理を進め、幅が閾値以内でない場合にはＳ８０７へ移行する。例えば、Ｓ８０５での比較に用いる閾値を１とした場合、図７（Ｄ）のオブジェクト７２１の幅は１であるので、判定条件を満たす。
【００２９】
Ｓ８０６にて結合判定部３０１は、受信オブジェクトの幅高の比率（高さ／幅）を所定の閾値と比較し、比率が閾値以上であるか否かを判定する。この比率が閾値以上である場合には、受信オブジェクトは縦切れオブジェクト結合可能なオブジェクトとしてスプール済みオブジェクトと結合可能と判定され、図６のＳ６０４に移行する。比率が閾値未満である場合にはＳ８０７へ移行する。例えば、Ｓ８０６での比較に用いる閾値を100に設定した場合を想定する。図7（Ｄ）のオブジェクト７２１では、オブジェクトの幅が１で高さがH(=4961)であって、幅高（高さ／幅）の比率が「H>100」となるので、判定条件を満たす。したがって、当該オブジェクトは縦切れオブジェクト結合可能なオブジェクトであると判定される。
【００３０】
Ｓ８０７にて結合判定部３０１は、オブジェクトを結合した場合の面積を閾値と比較し、該面積が閾値以下であるか否かを判定する。一般に、結合後に大きなイメージが生成される場合、結合の処理負荷が大きい。よって、結合後の面積が閾値を超える場合にはオブジェクト同士を結合しない。結合後の面積が閾値以下になる場合、通常オブジェクト結合を実施した方が高速であると判定され、図６のＳ６０４へ移行する。他方、結合後の面積が閾値を超える場合には、スプール済みオブジェクトのみで結合した方が高速であると判断され、図６のＳ６０４へ戻る。ここで、この通常オブジェクト結合には、前述したイメージ結合とパス結合などが含まれるが、本発明の要旨に直接関係ないため説明を省略する。本実施形態では、通常オブジェクト結合がイメージ結合である場合について説明する。
【００３１】
図６のＳ６０４で管理部３００は、Ｓ６０３での判定結果に応じて、次に行う処理を切り替える。Ｓ６０３での判定結果が「スプール済みオブジェクトを結合する」である場合、Ｓ６０５へ処理を進め、そうでない場合にはオブジェクト結合処理を終了し、図５のＳ５０５へ移行する。
【００３２】
Ｓ６０５において反復処理が開始し、DL変換部３０４は、処理対象となるスプール済みオブジェクトが無くなるまでＳ６０６の処理を繰り返す。尚、ここで処理対象をスプール済みオブジェクトとしているのは、受信オブジェクトが結合対象ではないことを示している。その理由は、Ｓ６０３とＳ６０４にてスプール済みオブジェクトと受信オブジェクトとは、最適な結合方法が異なるため同時に結合すべきではないと判定されているからである。
【００３３】
Ｓ６０６にてDL変換部３０４は、スプール済みオブジェクトをDLへ変換する。DLは、結合に最適な中間データ構造を有し、オブジェクトをDLに変換することで高速に結合することが可能になる。DL生成処理の詳細を図９のフローチャートに示す。尚、Ｓ６０６で実行する処理については、Ｓ６０２で前もって行っていても構わない。
【００３４】
図９では、FILL生成処理、Level生成処理、Edge生成処理が順次に実行された後、マージ処理が行われる。各処理の説明前に、図１０を参照してＳ６０６で生成されるDLの構造について説明する。図１０（Ａ）に示すDL１０００は、オブジェクトのパス形状情報から算出したエッジの開始点座標を軸とするリスト構造を有する。ここで第１の方向をX方向と定義し、X方向に直交する第２の方向をY方向と定義する。X方向には、同一スキャンライン上（つまりY値が等しい）でのEdgeについてXの値が昇順となる様にリンクされている。Y方向には、Edgeの開始点が存在するスキャンラインについてYの値が昇順となる様にリンクされている。Edgeは開始点の情報と、その他に、Edge同士の上下関係を保持するLevel情報と、色情報を保持するFill情報を持つ。尚、図１０では、図７のオブジェクトがDL１０００へ登録されている状態を、Edgeリスト１００１で示している。DL生成処理では、DL変換部３０４がオブジェクトからEdge情報、Level情報、Fill情報を生成し、それらをDLにマージ（合成）する処理を実行する。
【００３５】
Ｓ９０１にてDL変換部３０４は、オブジェクトのオペランド情報からFill情報を生成する。Fill情報の領域には、オブジェクトに塗られている色やパターンに関する情報が格納される。次のＳ９０２にてDL変換部３０４は、オペレータ情報からLevel情報を生成する。Level情報は、ページ内に配置されるオブジェクトをZオーダー量（X方向およびY方向に直交するZ方向での値）で表現した情報である。例えばレベル1のオブジェクトは、レベル0のオブジェクトより上に書かれる事を示す。Level情報については、オペレータ情報に含まれるROP情報等を考慮しながら、原則としてオブジェクトの処理順にレベルが決定される。図１０（Ｂ）に示すように、Ｓ９０１で生成されたFill情報１０１３はLevel情報１０１２からリンクされる。
【００３６】
Ｓ９０３にてDL変換部３０４は、パス形状情報からEdge情報を生成する。図１０（Ｂ）に示すように、Ｓ９０２で生成されたLevel情報１０１２はEdge情報１０１１からリンクされる。これによりEdge情報とLevel情報とFill情報を取得することができる。すなわち、図１０（Ｂ）にてDLにおける１つのEdgeリスト１００１は、Edge情報１０１１、Level情報１０１２、Fill情報１０１３を前記のようにリンクした結果を表している。次に、Ｓ９０４にてDL変換部３０４は、Ｓ９０３で生成したEdge情報をDLへマージする処理を行う。
【００３７】
図６のＳ６０７で管理部３００は、Ｓ６０６でDL化したオブジェクト群の最適な結合方法に応じて処理を切り替える。管理部３００は、Ｓ６０６でDL化したオブジェクトが通常オブジェクト結合の対象であるか、または縦切れオブジェクト結合の対象であるかを判断する。結合方法が通常オブジェクト結合であると判断された場合、Ｓ６０８へ処理を進め、結合方法が縦切れオブジェクト結合であると判断された場合にはＳ６０９へ移行する。
【００３８】
Ｓ６０８にてRIP処理部２０４は、Ｓ６０６で生成されたDLに基づいて、通常オブジェクト結合処理を行う。この結合処理の詳細については図１１を参照して後述する。またＳ６０９にてRIP処理部２０４は、Ｓ６０６で生成されたDLに基づいて縦切れオブジェクト結合処理を行う。この結合処理の詳細については図１２を参照して後述する。Ｓ６０８またはＳ６０９の処理後、Ｓ６１０で管理部３００は、結合されたイメージを再びオブジェクト化する処理を実行する。この処理によって、結合した複数のオブジェクトを１つのオブジェクトとして処理できることになる。
【００３９】
次に、図１１および図１３（Ａ）を参照して、図６のＳ６０８の通常オブジェクト結合処理について説明する。
まず、図１３（Ａ）を参照して、図６のＳ６０８で結合されるDL１０００の構造について説明する。図１３（Ａ）は、図６のＳ６０８で結合されるDL１０００の構造を模式的に表わした図であり、左右方向（矢印１３１０方向参照）をX方向と定義し、X方向に直交する上下方向をY方向と定義し、XY平面での座標を（x，y）で表す。通常レンダリング処理では、図１３（Ａ）に示すように、X方向にて１スキャンラインごとにピクセルの走査が行われ、交差したEdgeの情報を読み込むことでそのピクセルに出力すべき色が決定される。ここでは、後述する縦切れオブジェクト結合との比較の為、図７の印刷ジョブ７２０のオブジェクトを結合した場合について説明する。但し、本実施形態においては、図６のＳ６０３において最適な結合方法が縦切れオブジェクト結合であると判定されるので、実際に通常オブジェクト結合されることはない。尚、説明の便宜のため、オブジェクト１３０１とオブジェクト１３０２との間にスペースを設けることで空けて示すが、実際にはこのようなスペースは存在しない。イメージについては1bit/pixelのメモリ空間であるとする。
【００４０】
図１１のＳ１１０１にてRIP処理部２０４は、Y方向に並ぶスキャンラインごとにＳ１１０２からＳ１１０５までの処理を繰り返す。図１０（Ａ）に例示するDL１０００の場合、RIP処理部２０４は、スキャンラインY=y上のピクセルを処理し、それらの処理が完了したら、次のスキャンラインY=y1上のピクセルを処理するというように反復処理を実行する。
【００４１】
Ｓ１１０２でRIP処理部２０４は、処理対象のスキャンラインに対して、Ｓ１１０３およびＳ１１０４の処理を繰り返す。RIP処理部２０４は、X方向にEdgeを走査することで、ピクセルごとの色を決定する。Ｓ１１０３にてRIP処理部２０４はEdgeをロードする。ロードされる情報は、Edge情報、Level情報、Fill情報である。Ｓ１１０４にてRIP処理部２０４は、Ｓ１１０３でロードしたFill情報から、そのピクセルが塗られる値を決定する。例えば、Fill情報がImageである場合、RIP処理部２０４は、そのイメージバイナリをFill情報から取得し、そのピクセルが塗られる値を計算して取得し、それをピクセル値として出力する。
【００４２】
Ｓ１１０２からＳ１１０４までの処理によって、１スキャンライン分のピクセル出力が完了した場合、Ｓ１１０５に処理を進める。Ｓ１１０５でRIP処理部２０４は、次のスキャンラインに更新し、反復処理を続行する。
以上の処理によって、スプール済みオブジェクトを図１３（Ａ）に示すX方向にスキャンラインレンダリングすることができる。
【００４３】
本実施形態とは異なり、縦切れオブジェクトと判定されたオブジェクト群に対し、通常オブジェクト結合が行われる場合を想定する。この場合、１ピクセルごとにEdgeのロード、イメージバイナリの読み込み、イメージバイナリから出力するピクセル値の取得が必要となる。その結果、処理負荷が増加する。更には、１ピクセルごとに異なるイメージバイナリへアクセスすることは、キャッシュ効率の観点から著しく非効率である。そこで、本実施形態では、縦切れオブジェクトと判定されたオブジェクト群に対し、以下に説明する縦切れオブジェクト結合処理を行う。すなわち、図６のＳ６０９にてRIP処理部２０４は、Ｓ６０６で生成されたDLに基づいて縦切れオブジェクト結合処理を行う。この結合処理について、図１２および図１３（Ｂ）を参照して説明する。
【００４４】
まず、図１３（Ｂ）を参照して、図６のＳ６０９で結合されるDL１０００の構造について説明する。図１３（Ｂ）では、上下方向（矢印１３２０方向参照）をY方向と定義し、Y方向に直交する左右方向をX方向と定義し、XY平面での座標を（x，y）で表す。レンダリング処理では、図１３（Ｂ）に示すように、縦方向（Y方向）のスキャンラインごとにピクセルの走査が行われて、交差したEdgeの情報を読み込むことで、そのピクセルに出力すべき色が決定される。尚、説明の便宜のため、オブジェクト１３０３とオブジェクト１３０４の間にスペースを設けることで空けて示すが、実際にはこのようなスペースは存在しない。イメージについては1bit/pixelのメモリ空間であるとする。
【００４５】
図１２のＳ１２０１にてRIP処理部２０４は、X方向に並ぶスキャンラインごとにＳ１２０２からＳ１２０５までの処理を繰り返す。図１３（Ｂ）に示すY方向の矢印１３２０のスキャンラインに係るDL１０００の場合、RIP処理部２０４は、縦ラインX=0上の複数のピクセルを処理する。RIP処理部２０４は、それらの処理が完了したら、次の縦ラインX=1上の複数のピクセルを処理するというように反復処理を実行する。
【００４６】
Ｓ１２０２にてRIP処理部２０４は、処理対象のラインに対して、Ｓ１２０３からＳ１２０４までの処理を繰り返す。RIP処理部２０４は、Y方向にEdgeを走査することで、ピクセルごとの色を決定する。Ｓ１２０３でRIP処理部２０４は、Edgeをロードする。ロードされる情報は、Edge情報、Level情報、Fill情報である。図１３（Ｂ）に矢印１３２０で示すラインでは、(x,y)=(0,0)にて幅が1で高さHのイメージを持つEdge情報のロード処理が実行される。Ｓ１２０４でRIP処理部２０４は、Ｓ１２０３でロードしたEdge情報に紐づくFill情報から、そのピクセルが塗られる値を決定する。例えば、RIP処理部２０４は、処理対象のライン（矢印１３２０参照）において、(x,y)=(0,0)のピクセル値の出力時に、イメージバイナリの先頭の1bit目をピクセル値として出力する。
【００４７】
Ｓ１２０３およびＳ１２０４の各処理が繰り返されることにより、X=0上の対象ラインのピクセル値が出力される。つまり、RIP処理部２０４は、対象ライン上での次のピクセル(0,1)において、イメージバイナリの2bit目をピクセル値として出力する。さらにRIP処理部２０４は、その次のピクセル(0,2)において、3bit目をピクセル値として出力するという具合に、連続したイメージバイナリをY方向のピクセル値として展開する。
【００４８】
Ｓ１２０２からＳ１２０４までの処理によってY方向における１ライン分のピクセル出力が完了した場合、Ｓ１２０５へ処理を進める。Ｓ１２５０にてRIP処理部２０４は、次のスキャンラインに更新し、反復処理を続行する。図７のオブジェクト７２１の場合、次のEdge(1,0)から開始されるEdge情報のロード処理が実行され、Ｓ１２０２からＳ１２０４にて説明したのと同様にY方向に沿ってピクセル出力が行われる。
以上の処理によって、スプール済みオブジェクトを、図１３（Ｂ）に示すY方向にスキャンラインレンダリングすることができる。
【００４９】
このように、本実施形態では、縦切れオブジェクトであると判定されたオブジェクト群に対し、縦切れオブジェクト結合が行われる。これにより、通常オブジェクト結合において処理負荷が大きくなる要因であったEdgeのロード回数を、2N×H回から2N回に低減できる。また、イメージバイナリへのアクセスについては、メモリから数ワード単位で連続領域のデータをキャッシュメモリに読み出し、それを使って効率よく処理することがきる。よって、キャッシュ効率を向上させることができる。
【００５０】
本実施形態によれば、オブジェクトの持つ情報に応じて、そのオブジェクトが縦切れオブジェクトであるか否かを判定する。この判定結果に応じてオブジェクトをスプールすることで、縦切れオブジェクトをまとめて結合することができる。また、オブジェクト結合時には、縦切れオブジェクトに対して縦切れオブジェクト結合処理が実行されるので、縦切れオブジェクトに対して通常オブジェクト結合処理を行う場合に比べて高速な結合を実現できる。
【００５１】
本実施形態では、処理対象とする印刷データに関して、幅が１であるオブジェクトを例示して説明したが、幅が１でないオブジェクトを結合する際にも効果がある。その方法について図１４を参照して説明する。図１４に示す各処理は、図９にて説明した処理にＳ１４０１およびＳ１４０２を追加したものである為、Ｓ９０１からＳ９０４の各ステップに示す処理については説明を割愛して、相違点を説明する。
【００５２】
Ｓ１４０１にてDL変換部３０４は、受信オブジェクトが、以下の３条件を満たすか否かを判断する。
（１）縦切れオブジェクト結合の処理対象であること。
（２）イメージオブジェクトであること（Fill情報がImage）。
（３）イメージの幅が閾値以内であること。
３条件が全て満たされた場合、Ｓ１４０２へ処理を進め、いずれかの条件が満たされない場合にはＳ９０１へ移行し、Ｓ９０１からＳ９０４の処理が実行される。例えば、イメージが1bit/pixelであり、ＣＰＵ１０１のメモリアクセスが4byteアクセスである場合を想定する。（３）の条件判断で使用する閾値を、例えば１より大きく３２より小さいとし、この範囲内の幅をもつオブジェクトかどうかが判定されるものとする。下限値を1とする理由は、イメージの幅が１より大きいと、縦切れオブジェクト結合時にイメージバイナリのアドレスが不連続な読み込みとなるからである。また、上限値を３２とする理由は、イメージの幅が32以上である場合、通常オブジェクト結合でもキャッシュ効率が高まる為、縦切れオブジェクト結合による効果との差異が少なくなるからである。尚、閾値については、イメージ階調や搭載するアーキテクチャに応じて適宜に変更される。
【００５３】
Ｓ１４０２にてDL変換部３０４は、受信オブジェクトに設定されるイメージバイナリを縦方向（Y方向）に連続させるように配置を変更する。図１５を参照して、この処理を説明する。例えば、幅が８で、高さが２であるイメージ１５０１の場合、イメージバイナリ１５０２は一列に示す配置となっている。イメージ１５０１にて、11から18はX方向に沿ってそれぞれ配列され、その次（Y方向）に21から28がそれぞれ配列される。イメージバイナリ１５０２では、11から18と、これに続いて21から28が配列される。Ｓ１４０２では、このイメージバイナリ１５０２の配置を、イメージバイナリ１５０３のように並べ替える処理が行われる。すなわち、イメージバイナリ１５０３における縦方向（Y方向）の連続性が維持されるので、例えば、11の後に21が続き、さらに12，22が続く配列となる。Ｓ１４０２の処理後にＳ９０１からＳ９０４の各処理が実行される。
【００５４】
図１４にて説明した処理によれば、幅が１ではない縦切れオブジェクトに対しても図６のＳ６０９での縦切れオブジェクト結合時に、イメージバイナリを連続して出力させることができる。よって、縦切れオブジェクト結合にかかる処理負荷を低減できる。この方法は、特にイメージの回転に特化したハードウェアを搭載した構成の場合に有効である。
【００５５】
以上のように本実施形態では、スキャンライン法で画像データを処理して描画処理を行う場合、縦切れオブジェクトを判定して結合し、まとめて縦方向へレンダリングする。これにより、１スキャンラインあたりのEdge処理量が減少し、更には同じイメージへアクセスするのでキャッシュ効率が高まる。したがって、描画速度の高速化を図ることができる。尚、前記実施形態では、縦切れオブジェクトの例としてオペランド情報がImageである場合を説明したが、FlatFillの場合でも、Edgeをロードする回数が減少するため、同様の効果を奏する。その場合、図８のＳ８０４において、結合判定部３０１は、受信オブジェクトとスプール済みオブジェクトのオペランド情報が共にFlatFillであるか否かを判定して分岐処理を実行する。これにより、前記実施形態の場合と同様の効果が得られる。
【００５６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５７】
２０３  ＤＬ生成部
２０４  RIP処理部
３０１  結合判定部
３０２  オブジェクトスプール部
３０３  オブジェクト結合部
３０４  ＤＬ変換部
【図１】
2016192737.tif 000004
【図２】
2016192737.tif 000005
【図３】
2016192737.tif 000006
【図４】
2016192737.tif 000007
【図５】
2016192737.tif 000008
【図６】
2016192737.tif 000009
【図７】
2016192737.tif 000010
【図８】
2016192737.tif 000011
【図９】
2016192737.tif 000012
【図１０】
2016192737.tif 000013
【図１１】
2016192737.tif 000014
【図１２】
2016192737.tif 000015
【図１３】
2016192737.tif 000016
【図１４】
2016192737.tif 000017
【図１５】
2016192737.tif 000018