(57)【特許請求の範囲】
【請求項１】
入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置であって、
前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手段と、
前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定手段と、
前記決定手段で決定されたタイミングで前記変換処理を実行する変換手段と
を備え、
前記導出手段は、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出する
ことを特徴とする画像処理装置。
【請求項２】
前記決定手段は、
前記導出結果に基づいて、前記変換処理に要するメモリサイズが小さくなるように、前記変換処理をレンダリングの前に実行するか、または、レンダリングの後に実行するかを決定する
請求項１に記載の画像処理装置。
【請求項３】
前記入力された画像データはＰＤＬデータであって、当該ＰＤＬデータを解析して得られた中間データに基づいて、ベクタデータを生成する生成手段を備え、
前記導出手段は、
前記ベクタデータのサイズを、レンダリングの前に実行する前記変換処理に要するメモリサイズとして導出する
請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記生成手段は、
前記中間データに基づいて、ラインごとに描画オブジェクトのエッジで区切られた閉領域を抽出し、
抽出した各閉領域について、閉領域の内容を示す閉領域データを生成するとともに、当該閉領域内の各描画オブジェクトについて、描画オブジェクトの内容を示すオブジェクト情報を生成し、生成した前記閉領域データと前記オブジェクト情報とを格納したベクタデータを生成し、
前記導出手段は、
前記ベクタデータのサイズを、前記閉領域の数と、各閉領域内の描画オブジェクトの数の累計とから導出する
請求項３に記載の画像処理装置。
【請求項５】
前記導出手段は、前記ベクタデータに含まれる描画オブジェクトのエッジの高さの累計から、当該ベクタデータに含まれる前記閉領域の数を推測する
請求項４に記載の画像処理装置。
【請求項６】
前記導出手段は、前記描画オブジェクトがビットマップ文字である場合には、当該ビットマップ文字と他の描画オブジェクトまたは背景との境界を、当該描画オブジェクトのエッジであると判断する
請求項５に記載の画像処理装置。
【請求項７】
前記導出手段は、前記ベクタデータ内の各ラインを走査して、描画オブジェクトのエッジを検出し、検出された前記エッジの数から、当該ベクタデータに含まれる各閉領域内の描画オブジェクトの数の累計を推測する
請求項４から請求項６のうちのいずれか１項に記載の画像処理装置。
【請求項８】
前記導出手段は、
前記画像データの所定数のラインに対する前記変換処理に要するメモリサイズを、レンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出し、
前記決定手段は、
前記導出結果に基づいて、前記画像データに対する前記変換処理の実行のタイミングを決定し、
前記変換手段は、
前記決定手段で決定されたタイミングで、前記画像データに対して前記変換処理を実行する
請求項１に記載の画像処理装置。
【請求項９】
前記生成手段は、画像データを複数のラインで分割したバンド領域ごとに、前記ベクタデータを生成する
請求項３から請求項７のうちのいずれか１項に記載の画像処理装置。
【請求項１０】
オブジェクトの重なり方を示す前記情報とは、オブジェクトの透過情報を含むことを特徴とする請求項１に記載の画像処理装置。
【請求項１１】
入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置における画像処理方法であって、
前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出ステップと、
前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定ステップと、
前記決定ステップで決定されたタイミングで前記変換処理を実行する変換ステップと
を含み、
前記導出ステップにて、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出する
ことを特徴とする画像処理方法。
【請求項１２】
入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置に含まれるコンピュータに、
前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手順と、
前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定手順と、
前記決定手順において決定されたタイミングで前記変換処理を実行する変換手順と
を実行させ、
前記導出手順にて、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出させるためのプログラム。
【請求項１３】
画像処理装置であって、
ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータに基づいて、前記所定のデータ形式のブロックデータを生成する第１の生成手段と、
前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータのラスタライズを行うラスタライズ手段と、
前記ラスタライズ手段によってラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第２の生成手段と、
前記第１の生成手段により前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズ手段により前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズ手段により前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第２の生成手段により前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御手段と
を有し、
前記制御手段は、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行う
ことを特徴とする画像処理装置。
【請求項１４】
前記制御手段は、前記所定のデータ形式のバンドデータに含まれる１又は複数のラインデータが所定の閾値よりも大きい場合に、前記第２の生成手段によりブロックデータを生成する制御を行うことを特徴とする請求項１３に記載の画像処理装置。
【請求項１５】
バンドデータの高さと、該バンドデータを分割したブロックデータの高さは等しく、バンドデータの幅と、該バンドデータを分割したブロックデータの幅は異なることを特徴とする請求項１３に記載の画像処理装置。
【請求項１６】
オブジェクトの重なり方を示す前記情報とは、オブジェクトの透過情報を含むことを特徴とする請求項１３に記載の画像処理装置。
【請求項１７】
データ生成方法であって、
ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータに基づいて、前記所定のデータ形式のブロックデータを生成する第１の生成ステップと、
前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータのラスタライズを行うラスタライズステップと、
前記ラスタライズステップにてラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第２の生成ステップと、
前記第１の生成ステップにて前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズステップにて前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズステップにて前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第２の生成ステップにて前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御ステップと
を有し、
前記制御ステップでは、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行う
ことを特徴とするデータ生成方法。
【請求項１８】
画像処理装置に含まれるコンピュータに、
ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータに基づいて、前記所定のデータ形式のブロックデータを生成する第１の生成手順と、
前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータのラスタライズを行うラスタライズ手順と、
前記ラスタライズ手順にてラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第２の生成手順と、
前記第１の生成手順にて前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズ手順にて前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズ手順にて前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第２の生成手順にて前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御手順と
を実行させ、
前記制御手順では、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。特に、ページ画像データを、ライン順からブロック順に変換する技術に関する。
【背景技術】
【０００２】
画像形成処理時、画像データをブロックごとの画像データに変換し、以降の画像処理をブロック単位で並列に行うことで、高速に印刷を行う技術がある。画像データをブロックごとの画像データに変換する処理をブロック順変換処理と呼ぶ。ブロック順変換処理は、ページライン順にワークバッファに入力され、所定のブロック高さ分バッファされた画像データを、複数のブロックごとの画像データに分割して、ブロック順に出力する処理である。このようにブロック順変換処理では、画像データをワークバッファに一時的にバッファする必要があり、所定のバッファサイズが必要となる。
【０００３】
特許文献１には、画像データをレンダリング後のラスタ形式ではなく、レンダリング前のベクタ形式で、ワークバッファに格納する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２６９３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載されたベクタ形式のブロック順変換処理を、大量の描画オブジェクトが存在するページ画像データに対して適用した場合、必要とするワークバッファのメモリサイズが飛躍的に増大してしまうことがある。
【０００６】
従って、本発明は、ページ画像データの内容に依存せずに、より小さいバッファメモリサイズでブロック順変換処理を実現する画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明による画像処理装置は、入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置であって、画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手段と、導出結果に基づいて、変換処理の実行のタイミングを決定する決定手段と、決定手段で決定されたタイミングで変換処理を実行する変換手段とを備え、前記導出手段は、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ブロック順変換処理において、ページ画像データの内容に依存せずに、より小さいバッファメモリサイズでブロック順変換処理を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施例における、システム及び画像処理装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施例における画像処理装置のソフトウェア構成の一例を示すブロック図である。
【図３】本発明の第１の実施例における画像処理装置の処理を示すフローチャートである。
【図４】本発明の第１の実施例における中間データ生成処理を示すフローチャートである。
【図５】本発明の第１の実施例におけるレンダリング処理を示すフローチャートである。
【図６】本発明の第１の実施例におけるレンダリング処理で生成される閉領域データを説明するための説明図である。
【図７】本発明の第１の実施例におけるブロック順変換方法テーブルの一例を示す説明図である。
【図８】ページデータをライン順からブロック順に変換する様子を示す説明図である。
【図９】本発明の第１の実施例における、ライン順のベクタデータを説明するための説明図である。
【図１０】本発明の第１の実施例における、ブロック順のベクタデータを説明するための説明図である。
【図１１】本発明の第１の実施例における、ライン順のベクタデータを説明するための説明図である。
【図１２】本発明の第１の実施例における、ブロック順のベクタデータを説明するための説明図である。
【図１３】本発明の第１の実施例における、ライン順およびブロック順のラスタデータを説明するための説明図である。
【図１４】本発明の第１の実施例におけるエッジ情報解析処理を示すフローチャートである。
【図１５】本発明の第１の実施例におけるエッジ情報解析テーブルを示す説明図である。
【図１６】本発明の第１の実施例における、閉領域数及び閉領域内のオブジェクト数を算出する処理を説明するための説明図である。
【図１７】本発明の第１の実施例における、ブロック順変換方法選択処理を示すフローチャートである。
【図１８】本発明の第１の実施例における、ベクタ方式のブロック順変換処理におけるメモリサイズ算出処理を示すフローチャートである。
【図１９】本発明の第２の実施例における、画像処理装置の画像形成処理を示すフローチャートである。
【図２０】本発明の第２の実施例における、レンダリング処理を示すフローチャートである。
【図２１】本発明の第２の実施例における、エッジ情報解析処理を示すフローチャートである。
【図２２】本発明の第２の実施例における、ブロック順変換方法選択処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１１】
［実施例１］
図１は、本実施例における、システム及び画像処理装置の構成の一例を示すブロック図である。図１（Ａ）に示すシステムは、ホストコンピュータ１０１と、モバイル端末１０２と、プリンタサーバ１０３と、画像処理装置１１０とを備える。ホストコンピュータ１０１、モバイル端末１０２、プリンタサーバ１０３及び画像処理装置１１０は、ＬＡＮ１０５を介して接続される。
【００１２】
ホストコンピュータ１０１、モバイル端末１０２及びプリンタサーバ１０３は、ユーザ操作に基づいて、印刷するページ情報を示すページ画像データである、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データを生成し、画像処理装置１１０に送信する。画像処理装置１１０は、受信したＰＤＬデータに基づき、印刷処理を行う。画像処理装置１１０は、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）のうち、いずれのプリンタであってもよい。また、画像処理装置１１０は、ＭＦＰ、ＳＦＰ以外のプリンタであってもよい。
【００１３】
図１（Ｂ）を用いて、本実施形態の画像処理装置１１０のハードウェア構成を説明する。図１（Ｂ）に示すように、画像処理装置１１０は、プリンタ部１１１と、操作部１１３と、ＣＰＵ２２０と、ＲＯＭ２２１と、ＲＡＭ２２２と、記憶装置２２３と、操作部Ｉ／Ｆ２２５と、ネットワークＩ／Ｆ２２６と、イメージバスＩ／Ｆ２２８と、ＲＩＰ（ラスタイメージプロセッサ）２３１と、デバイスＩ／Ｆ２３２とを含む。
【００１４】
ＣＰＵ２２０、ＲＯＭ２２１、ＲＡＭ２２２、記憶装置２２３、操作部Ｉ／Ｆ２２５、ネットワークＩ／Ｆ２２６及びイメージバスＩ／Ｆ２２８は、システムバス２２７を介して接続される。また、イメージバスＩ／Ｆ２２８、ＲＩＰ２３１及びデバイスＩ／Ｆ２３２は、画像バス２３０を介して接続される。また、システムバス２２７と画像バス２３０とは、イメージバスＩ／Ｆ２２８を介して接続される。
【００１５】
プリンタ部１１１は、画像出力デバイスである。また、画像処理装置１１０は、ＬＡＮ１０５と接続することで、ＰＤＬデータやデバイス情報をＬＡＮ１０５経由で入出力するための制御を行う。プリンタ部１１１は、画像処理装置１１０で生成された画像データをデバイスＩ／Ｆ２３２を介して入力し、入力した画像データを紙などの記録媒体に出力する。
【００１６】
ＣＰＵ２２０は、画像処理装置１１０全体を制御するための中央処理部である。
【００１７】
ＲＯＭ２２１は、ブートＲＯＭであり、システムのブートプログラムが格納されている。
【００１８】
ＲＡＭ２２２は、ＣＰＵ２２０が動作するためのシステムワークメモリである。また、ＲＡＭ２２２は、外部装置から送信されたＰＤＬデータや、印刷処理時に画像処理装置１１０内で生成される中間データや、入力した画像データを一時記憶する。また、ＲＡＭ２２２は、レンダリング処理を行う際の作業領域であるワーク領域として機能する。
【００１９】
記憶装置２２３は、例えばハードディスクドライブである。記憶装置２２３は、各種処理のためのシステムソフトウェア、及び外部装置から送信されるＰＤＬデータを格納する。
【００２０】
操作部Ｉ／Ｆ２２５は、各種メニューや印刷データ情報等を表示可能な表示画面を有する操作部１１３とシステムバス２２７とを接続するためのインタフェースである。操作部Ｉ／Ｆ２２５は、操作部１１３に対して操作画面データを出力する。また、操作部Ｉ／Ｆ２２５は、操作者が操作部１１３に対して入力した情報をＣＰＵ２２０に転送する。
【００２１】
ネットワークＩ／Ｆ２２６は、図１に示すＬＡＮ１０５と接続される。ネットワークＩ／Ｆ２２６は、ＬＡＮ１０５を介して外部装置との間で情報の入出力を行う。
【００２２】
イメージバスＩ／Ｆ２２８は、システムバス２２７と、画像データを高速で転送する画像バス２３０とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。
【００２３】
ＲＩＰ２３１は、ＰＤＬデータや中間データ（ディスプレイリスト）を解析しイメージに展開する。
【００２４】
デバイスＩ／Ｆ２３２は、プリンタ部１１１と画像バス２３０とを接続するためのインタフェースである。デバイスＩ／Ｆ２３２は、画像データの同期系／非同期系の変換を行う。
【００２５】
＜画像処理装置のソフトウェア構成＞
図２は、本実施例における画像処理装置１１０のソフトウェア構成を示すブロック図である。図２に示すように、画像処理装置１１０は、ＰＤＬデータ処理部２０１と、中間データ生成部２０２と、画像形成処理部２０３と、ブロック順変換方法選択部２０４と、ベクタ方式ブロック順変換部２０５と、ラスタ方式ブロック順変換部２０６と、ブロック順変換メモリ２１０とを含む。
【００２６】
ＰＤＬデータ処理部２０１は、ホストコンピュータ１０１等の外部装置から受信したＰＤＬデータから、ページ情報及びページ情報に含まれるオブジェクト情報を取得する。ＰＤＬデータ処理部２０１は、取得した情報を、中間データ生成部２０２に渡す。
【００２７】
中間データ生成部２０２は、ＰＤＬデータ処理部２０１から受け取ったページ情報及びオブジェクト情報に基づき、中間データを生成する。
【００２８】
ブロック順変換方法選択部２０４は、データのブロック順変換処理を、ベクタ方式で行うかラスタ方式で行うかを選択する。ブロック順変換方法選択部２０４は、中間データ生成部２０２が生成する中間データに基づいて、ベクタ方式またはラスタ方式のどちらのブロック順変換方法が、少ないメモリでブロック順変換を行えるかを判断する。すなわち、ブロック順変換方法選択部２０４は、レンダリングの前と後のいずれのタイミングでブロック順変換を行った方が、当該変換に要するメモリサイズが小さくなるかを判断する。
【００２９】
ブロック順変換方法選択部２０４は、判断結果に基づき、ブロック順変換方法を選択する。ブロック順変換方法選択部２０４は、選択したブロック順変換方法を画像形成処理部２０３に通知する。ブロック順変換方法の選択処理の詳細については、後述する。
【００３０】
画像形成処理部２０３は、中間データ生成部２０２から受け取った中間データをから、ビットマップ画像データ（ラスタデータ）の生成処理（以降、画像形成処理と呼ぶ）を行う。また、画像形成処理部２０３は、ブロック順のラスタデータを生成するため、ブロック順変換方法選択部２０４が選択したブロック順変換方法に基づき、データをブロック順のデータに変換する。画像形成処理部２０３は、データのブロック順変換処理を行う際、ベクタ方式ブロック順変換部２０５、またはラスタ方式ブロック順変換部２０６に、データをブロック順のデータに変換させる処理を実行させる。
【００３１】
ブロック順変換方法としてベクタ方式が選択された場合は、画像形成処理部２０３は、ブロック順変換メモリ２１０に、画像形成処理部２０３が内部で利用するベクタデータを格納する。ベクタ方式ブロック順変換部２０５は、ブロック順変換メモリ２１０に格納されたベクタデータを、ブロック順のベクタデータに変換し、ブロック順に変換したベクタデータを画像形成処理部２０３に渡す。画像形成処理部２０３は、受け取ったブロック順のベクタデータをレンダリングして、ラスタデータを生成する。これにより、ブロック順のラスタデータが生成される。画像形成処理部２０３は、生成したブロック順のラスタデータに対して画像処理（回転処理等）を施して、最終的なビットマップ画像データを生成し出力する。ベクタ方式ブロック順変換部２０５における処理の詳細については、後述する。
【００３２】
また、ブロック順変換方法としてラスタ方式が選択された場合は、画像形成処理部２０３は、中間データをレンダリングして得られたラスタデータを、ブロック順変換メモリ２１０に格納する。ラスタ方式ブロック順変換部２０６は、ブロック順変換メモリ２１０に格納されたラスタデータを、ブロック順のラスタデータに変換し、画像形成処理部２０３に渡す。画像形成処理部２０３は、受け取ったブロック順のラスタデータに対して画像処理（回転処理等）を施して、最終的なビットマップ画像データを生成し出力する。ラスタ方式ブロック順変換部２０６における処理の詳細については、後述する。
【００３３】
＜画像処理装置におけるＰＤＬの印刷処理＞
図３は、本実施例における画像処理装置１１０の画像形成処理を示すフローチャートである。図３には、画像処理装置１１０における、ＰＤＬデータに対する印刷処理の一連の流れが示されている。図３に示す処理は、ＣＰＵ２２０によって実行される。具体的には、ＣＰＵ２２０が、図３に示す処理を実行するためのプログラムをＲＯＭ２２１からＲＡＭ２２２へロードし、実行することにより、図３に示す処理が実行される。なお、画像処理装置１１０のＣＰＵ２２０、ＲＯＭ２２１及びＲＡＭ２２２ではなく、外部装置（例えばプリンタサーバ１０３）のＣＰＵ、ＲＯＭ及びＲＡＭが、図３に示す処理を実行する構成であっても構わない。
【００３４】
まず、ホストコンピュータ１０１、モバイル端末１０２またはプリンタサーバ１０３から画像処理装置１１０にＰＤＬデータが送信される。すると、画像処理装置１１０のＣＰＵ２２０は、受信したＰＤＬデータを、記憶装置２２３に格納する。
【００３５】
次に、ＣＰＵ２２０は、記憶装置２２３に格納されたＰＤＬデータを取得し、取得したＰＤＬデータの解析処理を行う（ステップＳ３０１）。
【００３６】
次に、ＣＰＵ２２０は、解析したＰＤＬデータの情報に基づいて、ビットマップ画像データを生成するために必要な中間データの生成処理を行う（ステップＳ３０２）。ステップＳ３０２の処理では、公知の技術による中間データ生成処理に加えて、本発明の特徴である、エッジ情報解析処理及びブロック順変換方法選択処理の二つの処理が行われる。
【００３７】
次に、ＣＰＵ２２０は、生成した中間データと、ブロック順変換方法選択処理による選択結果とに基づいて、ブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像データを生成する（ステップＳ３０３）。なお、生成されたビットマップ画像データは、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データには、ブロック単位で後段の画像処理が施される。
【００３８】
＜中間データ生成処理の詳細＞
図４は、本実施例における、中間データ生成処理を示すフローチャートである。本実施例における中間データ生成処理には、上述のとおり、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理が含まれる。
【００３９】
まず、ＣＰＵ２２０は、ステップＳ３０１のＰＤＬ解析処理で抽出した、ＰＤＬデータに含まれる描画オブジェクトを取得する（ステップＳ４０１）。
【００４０】
次に、ＣＰＵ２２０は、ステップＳ４０１で取得した描画オブジェクトを、所定の中間データフォーマットに変換する（ステップＳ４０２）。
【００４１】
次に、ＣＰＵ２２０は、取得した描画オブジェクトの輪郭（エッジ）を示す情報であるエッジ情報の解析処理を行う（ステップＳ４０３）。このとき、ＣＰＵ２２０は、ステップＳ３０３のレンダリング処理でブロック順変換方法を選択する際に必要となる情報を、描画オブジェクトのエッジ情報から抽出する。ステップＳ４０３の処理の詳細については、後述する。
【００４２】
次に、ＣＰＵ２２０は、ＰＤＬデータに含まれる描画オブジェクト、すなわちページ内の全ての描画オブジェクトに対する処理が終了したか否かを判断する（ステップＳ４０４）。終了していなかった場合は、ＣＰＵ２２０は、ステップＳ４０１の処理に戻り、終了していた場合は、ステップＳ４０５の処理に進む。
【００４３】
次に、ＣＰＵ２２０は、ステップＳ４０３でエッジ情報から抽出した情報に基づいて、ブロック順変換方法を選択する（ステップＳ４０５）。ステップＳ４０５の処理において、ＣＰＵ２２０は、ベクタ方式及びラスタ方式のどちらの方式でブロック順変換を行った方が、メモリの消費量が少ないかを判断し、ブロック順変換方法をいずれかの方式に決定する。そして、ＣＰＵ２２０は、後述するブロック順変換方法テーブルに、決定したブロック順変換方法を示す情報を格納する。ブロック順変換方法選択処理の詳細については、後述する。
【００４４】
＜レンダリング処理の詳細＞
図５は、本実施例におけるレンダリング処理（ステップＳ３０３の処理）を示すフローチャートである。本実施例におけるレンダリング処理には、本発明の特徴であるブロック順変換処理が含まれる。図６は、本実施例におけるレンダリング処理で生成される、閉領域データを説明するための説明図である。
【００４５】
まず、ＣＰＵ２２０は、ステップＳ３０２で生成した中間データに基づいて、レンダリング処理で扱うベクタデータである閉領域データの生成処理を行う（ステップＳ５０１）。
【００４６】
図６を用いて、ベクタデータである閉領域データを説明する。ここでは、重なり合う３つの描画オブジェクト（図６（Ａ）に示すオブジェクト６０１〜６０３）を含むページ（図６（Ｂ），（Ｃ）に示すページ６１０，６１１）を例に説明する。
【００４７】
図６（Ｂ）には、透過指定がされていないオブジェクト６０１〜６０３を含むページ６１０と、ページ６１０内のライン６１２と、ライン６１２のベクタデータとが模式的に示されている。図６（Ｃ）には、透過指定がされたオブジェクト６０１〜６０３を含むページ６１１と、ページ６１１内のライン６１３と、ライン６１３のベクタデータとが模式的に示されている。
【００４８】
ラインのベクタデータは、ラインの開始を示す情報（以下、ライン開始データという）と、閉領域と呼ばれるオブジェクトの輪郭で区切られた領域を示す情報（以下、閉領域データという）とを含む。図６（Ｂ）に示すように、ライン６１２は、輪郭で区切られた７つの領域（閉領域６２１〜６２７）から構成される。従って、ライン６１２のベクタデータは、閉領域６２１〜６２７に対応する７つの閉領域データを含む。同様に、図６（Ｃ）に示すように、ライン６１３は、輪郭で区切られた７つの領域（閉領域６３１〜６３７）から構成される。従って、ライン６１３のベクタデータは、閉領域６３１〜６３７に対応する７つの閉領域データを含む。
【００４９】
以下、オブジェクト６０１〜６０３をオブジェクト＃１〜＃３と記す場合がある。また、ライン６１２，６１３をライン＃１，＃２と記す場合がある。また、閉領域６２１〜６２７を、閉領域＃１〜＃７と記す場合がある。また、閉領域６３１〜６３７を、閉領域＃１１〜＃１７と記す場合がある。
【００５０】
図６（Ｄ）には、ベクタデータに含まれる閉領域データの構成の一例が示されている。図６（Ｄ）に示す閉領域データは、閉領域６２２，６３３（閉領域＃２，＃１３）に対応する閉領域データの一例である。図６（Ｄ）に示すように、閉領域データは、閉領域の幅（長さ）を示す長さ情報と、閉領域内に含まれるオブジェクトの数を示すオブジェクト個数情報（以下、単にオブジェクト個数という）とを含む。閉領域データには、閉領域内に含まれる各オブジェクトの情報（オブジェクトデータ）が付随する。オブジェクトデータは、オブジェクトの属性や色などを示す情報である。
【００５１】
ＣＰＵ２２０は、ステップＳ５０１では、所定の高さのバンド、すなわち所定数のラインを含むバンドについて、閉領域データの生成処理を行う。
【００５２】
次に、ＣＰＵ２２０は、ステップＳ４０５の処理において生成されるブロック順変換方法テーブルに従って、処理中のバンド（以下、処理バンドという）に対応するブロック順変換方法がベクタ方式であるか否かを、判断する（ステップＳ５０２）。図７は、本実施例におけるブロック順変換方法テーブルの一例を示す説明図である。ブロック順変換方法テーブルは、ページ内の各バンドに対応する、ブロック順変換方法を示すテーブルである。図７に示すＹは、副走査方向における、ページ先頭からのピクセル数を示す。例えば、バンド領域＃２は、副走査方向における、ページ先頭からのピクセル数が、３２〜６３の位置にある領域（バンド）である。
【００５３】
ブロック順変換方法がベクタ方式でなかった場合は（ステップＳ５０２のＮＯ）、ＣＰＵ２２０は、ステップＳ５０４の処理に移行する。
【００５４】
ブロック順変換方法がベクタ方式であった場合は（ステップＳ５０２のＹＥＳ）、ＣＰＵ２２０は、ステップＳ５０１の処理で生成した、処理バンドに対応するベクタデータを、一旦ブロック順変換メモリ２１０に格納する。そして、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納されたベクタデータをブロック順に変換する（ステップＳ５０３）。図８は、ベクタデータをライン順からブロック順に変換する様子を示す説明図である。図８の左図には、ライン順のベクタデータが示されている。図８の右図には、ブロック順のベクタデータが示されている。ＣＰＵ２２０は、中間データからベクタデータを生成するとき、処理バンド８００に対して、ライン単位で左（図８における左）から右（図８における右）に順番に、閉領域データを生成する。これにより、ライン順のベクタデータが生成される。ステップＳ５０３の処理では、ＣＰＵ２２０は、ライン順のベクタデータをブロック単位に分割することで、ベクタデータをライン順からブロック順に変換する。本実施例では、処理バンド８００を、ブロック８０６及びブロック８０７の２つのブロックに分割する。
【００５５】
ここで、図９及び図１０を用いて、図６（Ｂ）に示すページ６１０のベクタデータをライン順からブロック順に変換する処理を説明する。図９は、本実施例におけるライン順のベクタデータを説明するための説明図である。図１０は、本実施例におけるブロック順のベクタデータを説明するための説明図である。図９及び図１０には、ページ６１０の処理バンド８０１に対応するベクタデータが、２つのブロック（ブロック８０８及びブロック８０９）に分割される様子が示されている。
【００５６】
ステップＳ５０３の処理において、まず、ＣＰＵ２２０は、処理バンド８０１に対してライン順に閉領域データを生成する。それにより、図９（Ｂ）に示すようなライン順のベクタデータが生成される。ＣＰＵ２２０は、生成したベクタデータをブロック順変換メモリ２１０に格納する。次いで、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納された、処理バンド８０１に対応する、ライン順のベクタデータを読み出す。その際、ＣＰＵ２２０は、ライン順のベクタデータを、ブロック順に読み出す。それにより、図１０（Ｂ）に示すように、閉領域データの並びがブロック順に変換される。
【００５７】
またここで、図１１及び図１２を用いて、図６（Ｃ）に示すページ６１１のベクタデータをライン順からブロック順に変換する処理を説明する。図１１は、本実施例におけるライン順のベクタデータを説明するための説明図である。図１２は、本実施例におけるブロック順のベクタデータを説明するための説明図である。図１１および図１２には、ページ６１１の処理バンド８０２におけるベクタデータが、２つのブロック（ブロック８１６及びブロック８１７）に分割される様子が示されている。
【００５８】
まず、ＣＰＵ２２０は、処理バンド８０２に対してライン順に閉領域データを生成する。それにより、図１２（Ｂ）に示すようなライン順のベクタデータが生成される。ＣＰＵ２２０は、生成したベクタデータをブロック順変換メモリ２１０に格納する。次いで、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納された、処理バンド８０２に対応する、ライン順のベクタデータを読み出す。その際、ＣＰＵ２２０は、ライン順のベクタデータを、ブロック順に読み出す。これにより、図１２（Ｂ）に示すように、閉領域データの並びがブロック順に変換される。
【００５９】
次に、ＣＰＵ２２０は、ベクタデータを元に、レンダリングを実行し、ラスタデータを生成する（ステップＳ５０４）。ラスタデータは、ページ内の各ピクセルのＣＭＹＫデータ（以下、単にＣＭＹＫともいう）を含む情報である。なお、ブロック順変換方法がベクタ方式である場合には、ステップＳ５０３の処理においてベクタデータがブロック順に変換されるので、ステップＳ５０４の処理で生成されるラスタデータもブロック順に生成される。また、ブロック順変換方法がラスタ方式である場合には、ステップＳ５０３の処理は実行されないので、ステップＳ５０４の処理で生成されるラスタデータは、ライン順に生成される。また、ラスタデータは、ＣＭＹＫ以外のピクセルデータを含んでいてもよい。
【００６０】
次に、ＣＰＵ２２０は、ブロック順変換方法テーブルを参照して、処理バンドに対応するブロック順変換方法がラスタ方式であるか否かを、判断する処理を行う（ステップＳ５０５）。
【００６１】
ブロック順変換方法がラスタ方式でなかった場合は（ステップＳ５０５のＮＯ）、ＣＰＵ２２０は、ステップＳ５０７の処理に移行する。
【００６２】
ブロック順変換方法がラスタ方式であった場合は（ステップＳ５０５のＹＥＳ）、ＣＰＵ２２０は、ステップＳ５０４の処理でライン順に生成されたラスタデータを、ブロック順に変換する（ステップＳ５０６）。このとき、まず、ＣＰＵ２２０は、ステップＳ５０４の処理で生成した、処理バンドに対応するラスタデータを、一旦ブロック順変換メモリ２１０に格納する。そして、ＣＰＵ２２０は、図８に示されるベクタデータのブロック順変換と同様に、ブロック順変換メモリ２１０に格納されたラスタデータをライン順からブロック順に変換する。
【００６３】
ここで、図１３を用いて、図６（Ｂ）に示すページ６１０のラスタデータをライン順からブロック順に変換する処理を説明する。図１３は、本実施例における、ライン順およびブロック順のラスタデータを説明するための説明図である。図１３には、ページ６１０の処理バンド８０１に対応するラスタデータが、２つのブロック（ブロック８０８及びブロック８０９）に分割される様子が示されている。
【００６４】
上述したように、ブロック順変換方法がラスタ方式である場合には、ステップＳ５０４の処理において、ラスタデータがライン順に生成される。図１３（Ａ）の右図には、ライン順に生成された、処理バンド８０１に対応するラスタデータが示されている。ステップＳ５０６の処理において、まず、ＣＰＵ２２０は、ステップＳ５０４の処理で生成したラスタデータをブロック順変換メモリ２１０に格納する。次いで、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納された、処理バンド８０１に対応する、ライン順のラスタデータを読み出す。その際、ＣＰＵ２２０は、ライン順のラスタデータを、ブロック順に読み出す。それにより、図１３（Ｂ）の右図に示すように、ＣＭＹＫの並びがブロック順に変換される。また、ここでは透過指定がされていないオブジェクトを含むページ６１０を例にして説明したが、ステップＳ５０６の処理では、既にピクセル生成処理（ステップＳ５０４の処理）が実行されているので、透過指定の有無にかかわらず、ラスタデータのサイズは同じである。したがって、透過指定がされている場合についての説明を省略する。
【００６５】
次に、ＣＰＵ２２０は、ページ画像データ内に含まれる全てのバンドについて、処理が終了したか否かを判断する（ステップＳ５０７）。ＣＰＵ２２０は、終了していないと判断した場合には（ステップＳ５０７のＮＯ）、ステップＳ５０１の処理に戻り、終了したと判断した場合には（ステップＳ５０７のＹＥＳ）、処理を終了する。
【００６６】
＜エッジ情報解析処理の詳細＞
図１４は、本実施例におけるエッジ情報解析処理（ステップＳ４０３の処理）を示すフローチャートである。エッジ情報解析処理では、ＣＰＵ２２０は、レンダリング処理（ステップＳ３０３の処理）において、ブロック順変換方法を選択する際に必要となる情報を、描画オブジェクトのエッジ情報から抽出する。ＣＰＵ２２０は、抽出した情報をエッジ情報解析テーブルに格納する。図１５は、本実施例におけるエッジ情報解析テーブルを示す説明図である。エッジ情報解析テーブルは、図１５に示すように、バンド領域ごとに、バンド領域に存在する描画オブジェクトのエッジの高さの累計と、当該バンド領域において透過指定がされた領域の面積（以下、透過指定面積という）の累計と、および、当該バンド領域に存在する描画オブジェクトのエッジを識別するための情報（以下、関連エッジＩＤという）とが格納されたテーブルである。エッジ情報解析テーブルは、例えばＲＡＭ２２２に格納される。
【００６７】
図１６（Ａ）〜（Ｃ）には、それぞれ、ページの一部（複数のラインを含む領域）を示す例が示されている。なお、図１６において、各ライン（ライン＃１〜＃５）の高さ（図１６における上下方向の幅）は１ピクセルである。図１６（Ａ）に示す領域では、透過指定がされていない、高さ３ピクセルのオブジェクト６０１〜６０３が重なり合っている。図１６（Ａ）に示す領域における、閉領域の数（以下、閉領域数ともいう）は、図１６（Ａ）の中央図に示すように、２３個となる。一方、オブジェクト６０１〜６０３の高さは３ピクセルで、オブジェクトの輪郭を示すエッジの高さもそれぞれ３ピクセルである。したがって、エッジの高さの累計は、図１６（Ａ）の右図に示すように、２３ピクセルとなる。このように、閉領域の数（２３個）は、エッジの高さの累計（２３ピクセル）と一致する特性がある。したがって、エッジの高さの累計を求めることで、閉領域の数を推測することができる。なお、ページ左端のエッジは閉領域を生み出すエッジであるので、本実施例では、エッジの累計にページ左端のエッジの高さも加算する。一方、ページ右端のエッジはページ範囲内の閉領域を生み出さないので、エッジの高さの累計には含めない。図１６（Ａ）の右図では、ページ左端のエッジおよびオブジェクトの開始を示すエッジに下向き矢印が付されている。また、オブジェクトの終了を示すエッジに上向き矢印が付されている。処理バンドに対応するベクタデータのサイズを見積もる際に、当該ベクタデータ内の閉領域の数が必要となる。そのため、本実施例では、エッジの高さを累積して、閉領域の数を算出する。
【００６８】
ここで、図１４に示すエッジ情報解析処理の詳細を説明する。
【００６９】
まず、ＣＰＵ２２０は、ステップＳ４０２の処理で生成した中間データから、描画オブジェクトのエッジの高さを算出する（ステップＳ１４０１）。そして、ＣＰＵ２２０は、算出した値でエッジ情報解析テーブルを更新する。具体的には、ＣＰＵ２２０は、算出した値を、当該描画オブジェクトが存在するバンド領域の、エッジの高さの累計に加算する。
【００７０】
次に、ＣＰＵ２２０は、ステップＳ４０２で生成した中間データが、ビットマップ文字であるか否かを判断する（ステップＳ１４０２）。ビットマップ文字でなかった場合（ステップＳ１４０２のＮＯ）、ＣＰＵ２２０は、ステップＳ１４０４の処理に移行する。
【００７１】
ビットマップ文字であった場合（ステップＳ１４０２のＹＥＳ）、ＣＰＵ２２０は、ビットマップ文字の輪郭のエッジの高さを算出し、描画オブジェクトのエッジの高さの累計に加算する（ステップＳ１４０３）。描画オブジェクトがビットマップ文字である場合、ステップＳ４０２の処理では、ビットマップエッジの両端の輪郭（図１６（Ｂ）の左図の中抜き矢印が付された部分）のみが中間データとして生成される。しかし、レンダリング処理では、文字の輪郭も抽出され、図１６（Ｂ）の中央図に示すような、２５個の閉領域に対してレンダリング処理が行われる。このように、描画オブジェクトがビットマップ文字である場合には、エッジの高さの累計（１５ピクセル）に対して、閉領域の数が２５個となり、閉領域の数が、エッジの高さの累計と一致しなくなる。つまり、描画オブジェクトがビットマップ文字である場合には、エッジの高さの単純な累計だけでは、閉領域の数を正確に求めることができない。そこで、本実施例では、描画オブジェクトがビットマップ文字である場合は、ＣＰＵ２２０は、ビットマップ文字を解析することで、文字のエッジを抽出し、正確な閉領域の数を算出する。具体的には、ＣＰＵ２２０は、各ラインにおける、ビットマップ文字と、他の描画オブジェクトまたは背景との境界を、当該ビットマップ文字のエッジであると判断し抽出する。図１６（Ｂ）に示す例では、ＣＰＵ２２０は、主走査方向において白と黒とが反転する領域（図１６（Ｂ）の右図に示す中抜き矢印が付された部分）をエッジとして抽出する。ＣＰＵ２２０は、抽出されたビットマップ文字のエッジの高さの累計（１０ピクセル）を、描画オブジェクトのエッジの高さの累計に加算する。すると、閉領域の数（２５個）とエッジの高さの合計値（１５ピクセル＋１０ピクセル）とが等しくなり、正確な閉領域の数が算出される。なお、エッジの抽出処理には公知の技術を利用しても構わない。
【００７２】
次に、ＣＰＵ２２０は、ステップＳ４０２の処理で生成した中間データに対応する描画オブジェクトに透過指定があるか否かを判断する（ステップＳ１４０４）。ＣＰＵ２２０は、描画オブジェクトに透過指定がない場合（ステップＳ１４０４のＮＯ）、ステップＳ１４０６の処理に移行する。
【００７３】
描画オブジェクトに透過指定がある場合（ステップＳ１４０４のＹＥＳ）、ＣＰＵ２２０は、ステップＳ４０２の処理で生成した、中間データのバウンディングボックスの面積を算出し、算出した値でエッジ情報解析テーブルを更新する。具体的には、ＣＰＵ２２０は、描画オブジェクトが存在するバンド領域の、透過指定面積の累計に、算出した値を加算する（ステップＳ１４０５）。透過指定面積の累計については、後述する、ベクタ方式のブロック順変換処理におけるメモリサイズの算出処理に用いられる。そのため、本実施例では、このように透過指定面積の累計を算出する。
【００７４】
最後に、ＣＰＵ２２０は、描画オブジェクトのエッジが跨るバンドと、当該エッジのＩＤとを対応付けて、エッジ情報解析テーブルに登録する（ステップＳ１４０６）。具体的には、ＣＰＵ２２０は、当該エッジのＩＤを、当該エッジが跨るバンドの関連エッジＩＤにリンクリストとして登録する。関連エッジＩＤは、後述する、オブジェクト数の算出処理（ステップＳ１８０３の処理）で用いられる。
【００７５】
＜ブロック順変換方法の選択処理の詳細＞
図１７は、本実施例におけるブロック順変換方法選択処理（ステップＳ４０５の処理）を示すフローチャートである。
【００７６】
まず、ＣＰＵ２２０は、ブロック順変換方法としてラスタ方式を選択した際に必要となる、バンドメモリ（バンド１つ分のラスタデータのメモリサイズ）を算出する（ステップＳ１７０１）。ラスタデータは以下の式により一律に求められるため、ページの先頭でのみ処理を行う。
【００７７】
ラスタ方式のブロック順変換処理で必要なバンドメモリ＝ページ幅×バンドの高さ（ブロックの高さ）×１チャンネル辺りの階調×１ピクセル辺りのチャンネル数…（式１）
【００７８】
次に、ＣＰＵ２２０は、ブロック順変換方法としてベクタ方式を選択した際に必要となる、バンドメモリ（処理バンドのベクタデータのメモリサイズ）を、以下の式から算出する（ステップＳ１７０２）。
【００７９】
ベクタ方式のブロック順変換処理で必要なバンドメモリ
＝バンドに含まれる閉領域データのサイズ合計
＋バンドに含まれる閉領域内のオブジェクトデータのサイズ合計    …（式２）
【００８０】
式２における、バンドに含まれる閉領域データのサイズ合計、およびバンドに含まれる閉領域内のオブジェクトデータのサイズ合計は、後述する式３および式４から算出される。
【００８１】
次に、ＣＰＵ２２０は、ステップＳ１７０１及びステップＳ１７０２の処理で導出したメモリサイズの大小関係を比較し、ラスタ方式とベクタ方式のどちらがブロック順変換時のメモリ消費量が少ないかを判断する（ステップＳ１７０３）。
【００８２】
ベクタ方式であった場合（ステップＳ１７０３のＹＥＳ）、ＣＰＵ２２０は、処理バンドのブロック順変換方法にベクタ方式を選択する（ステップＳ１７０４）。具体的には、ＣＰＵ２２０は、レンダリング処理（ステップＳ３０３の処理）で利用するブロック順変換方法テーブルの該当バンドのブロック順変換方法にベクタ方式を指定する。
【００８３】
ラスタ方式でなかった場合は（ステップＳ１７０３のＮＯ）、ＣＰＵ２２０は、処理バンドのブロック順変換方法にラスタ方式を選択する（ステップＳ１７０５）。具体的には、ＣＰＵ２２０は、レンダリング処理（ステップＳ３０３の処理）で利用するブロック順変換方法テーブルの該当バンドのブロック順変換方法にラスタ方式を指定する。
【００８４】
次に、ＣＰＵ２２０は、ページ内の全バンドに対する処理が終了したか否かを判断する（ステップＳ１７０６）。終了していない場合には（ステップＳ１７０６のＮＯ）、ＣＰＵ２２０は、ステップＳ１７０２の処理に戻る。終了している場合には（ステップＳ１７０６のＹＥＳ）、ＣＰＵ２２０は、処理を終了する。
【００８５】
＜ベクタ方式によるブロック順変換処理時のメモリサイズ算出処理の詳細＞
図１８は、本実施例における、ベクタ方式のブロック順変換処理におけるメモリサイズ算出処理（ステップＳ１７０２の処理）を示すフローチャートである。
【００８６】
まず、ＣＰＵ２２０は、処理バンドに含まれる閉領域データのサイズ合計を算出する（ステップＳ１８０１）。処理バンドに含まれる閉領域データのサイズ合計は、以下の式から算出される。
【００８７】
バンドに含まれる閉領域データのサイズ合計＝バンドに含まれる閉領域の数×閉領域データの１データ辺りのサイズ  …（式３）
【００８８】
上述したように、閉領域の数とエッジの高さの累計とは一致するため、式３において、バンドに含まれる閉領域の数として、エッジの高さの累計を用いる。このとき、ＣＰＵ２２０は、エッジ情報解析テーブルから、処理バンドに対応するエッジの高さの累計を取得する。
【００８９】
閉領域データの１データ辺りのサイズは、一意に決まる値である。例えば、当該サイズが８バイトであって、処理バンドが図１５に示すエッジ情報解析テーブルにおけるバンド領域＃１に対応する場合、当該処理バンドにおける閉領域データの１データ辺りのサイズは、３２×８＝２５６バイトと算出される。
【００９０】
次に、ＣＰＵ２２０は、処理バンド内に透過指定がされた描画オブジェクトが存在するか否かを判断する（ステップＳ１８０２）。ここでは、ＣＰＵ２２０は、エッジ情報解析テーブルから、該当バンドの透過指定面積の累計を取得し、取得した値があらかじめ定める所定の閾値(例えばＴｈ０＝＝０)以下であるか否かを判断する。
【００９１】
透過指定面積の累計が閾値より大きい場合（ステップＳ１８０２のＹＥＳ）、ＣＰＵ２２０は、処理バンド内に透過指定がされた描画オブジェクトがあると判断する。そして、ＣＰＵ２２０は、後述するステップＳ１８０３の処理に移行する。
【００９２】
透過指定面積の累計が閾値以下であった場合（ステップＳ１８０２のＮＯ）、ＣＰＵ２２０は、透過指定された描画オブジェクトがなく、処理バンド内のすべての閉領域において、重なる描画オブジェクトの数が２未満であると判断する。すなわち、ＣＰＵ２２０は、処理バンド内の描画オブジェクトが重なり合わないと判断する。そして、ＣＰＵ２２０は、処理バンドに対して、ステップＳ３０２の処理で生成した中間データを元に、実際の閉領域データの生成処理を行う（ステップＳ１８０４）。このとき、ＣＰＵ２２０は、中間データから、処理バンドに含まれる描画オブジェクトの、輪郭を示すエッジ情報を抽出する。そして、ＣＰＵ２２０は、エッジ情報に含まれるエッジの位置情報と、輪郭の詳細情報と、さらに輪郭に関連付けられたオブジェクト情報とオブジェクトの重なり方を示す情報とをもとに、処理バンド内の閉領域データの生成処理を行う。ただし、ステップＳ１８０４の処理は透過指定された描画オブジェクトがない場合にのみ実行されるので、ステップＳ１８０４の処理では、透過指定を考慮した重なりに関する処理は行われないものとする。このように、ステップＳ１８０４の処理では、上述したステップＳ５０１の処理に比べ、簡易な閉領域データの生成処理が行われる。これにより、実際に生成した各閉領域データのオブジェクト個数を足し合わせることで、描画オブジェクトの数を求めることができる。なお、閉領域データの生成処理に関しては、公知の技術を利用する。
【００９３】
ここで、ステップＳ１８０３の処理を説明する。処理バンド内に透過指定がされた描画オブジェクトが存在する場合には、描画オブジェクトの重なりを考慮する必要がある。そのため、ステップＳ１８０４の処理と同じように実際に閉領域データを生成しようとすると、処理負担を増大させる可能性がある。そこで、ステップＳ１８０３の処理では、ＣＰＵ２２０は、次のように、処理バンド内の描画オブジェクトの数を算出する。まず、ＣＰＵ２２０は、図１６（Ｃ）の中央図に示すように、処理バンド内の各エッジが描画オブジェクトの開始または終了を示すエッジであるか否かを示す情報を、テーブルとして保持する。図１６（Ｃ）の中央図には、同左図に示すエッジ１６５１〜１６５７が描画オブジェクトの開始または終了を示すエッジであるか否かが示されている。なお、エッジ１６５１〜１６５７には、それぞれ、０〜６のエッジＩＤが割り当てられている。ＣＰＵ２２０は、図１６（Ｃ）の中央図に示すテーブルから、処理バンドの関連エッジＩＤに対応づけて格納されている情報を取得する。そして、ＣＰＵ２２０は、取得した情報から、処理バンド内の各エッジが、描画オブジェクトの開始を示すエッジであるか、描画オブジェクトの終了を示すエッジであるかを判定する。次いで、ＣＰＵ２２０は、図１６（Ｃ）の右図に示すように、処理バンドにおいてラインを走査し、描画オブジェクトの個数を算出する。具体的には、ＣＰＵ２２０は、描画オブジェクトの開始を示すエッジを検出すると、描画オブジェクトの個数に１加算する。また、ＣＰＵ２２０は、描画オブジェクトの終了を示すエッジを検出すると、描画オブジェクトの個数を１減算する。ＣＰＵ２２０は、この処理をバンドの高さ分、繰り返すことにより、処理バンドにおける描画オブジェクトの数を算出する。なお、透過指定がされた描画オブジェクトが存在するか否かを判断する際の閾値（上記Ｔｈ０）は、ユーザが任意に指定しても構わない。
【００９４】
ＣＰＵ２２０は、ステップＳ１８０３またはＳ１８０４の処理で求めた、処理バンドに含まれる閉領域内のオブジェクト数の合計に基づいて、以下の式を利用して、処理バンドに含まれる閉領域内のオブジェクトデータのサイズ合計を算出する。
【００９５】
バンドに含まれる閉領域内のオブジェクトデータのサイズ合計＝バンドに含まれる閉領域内のオブジェクト数の合計×閉領域に含まれるオブジェクトデータの１データ辺りのサイズ    …（式４）
【００９６】
最後に、ＣＰＵ２２０は、式３及び式４で算出した値を式２に代入して、ベクタ方式のメモリサイズを算出する（ステップＳ１８０５）。
【００９７】
以上に説明したように、第１の実施例では、ベクタ方式のブロック順変換処理時に必要なメモリサイズと、ラスタ方式のブロック順変換処理時に必要なメモリサイズとを比較して、メモリ消費量がより少ないブロック順変換方法を選択する。それにより、レンダリング処理の対象となるページ画像データの内容に関わらず、最適なバッファメモリサイズでブロック順変換処理を行うことが可能となる。例えば、ページ画像データが大量の描画オブジェクトを含んでいて、ベクタデータのサイズが増大する可能性がある場合には、ラスタ方式のブロック順変換方法が選択されるので、ブロック変換処理時のメモリ消費量を抑えることができる。このように、本実施例によれば、ブロック順変換処理において、最適なブロック順変換方法を選択することができ、より小さいバッファメモリサイズでブロック順変換処理を行うことができる。
【００９８】
また、本実施例では、処理バンドにおける描画オブジェクトの数を算出する際に、処理バンド内に透過指定がされた描画オブジェクトがある場合（ステップＳ１８０２でＹＥＳと判定された場合）には、描画オブジェクトの開始および終了を示すエッジの検出結果にもとづいてオブジェクト数を算出するようにしている。したがって、ベクタ方式のブロック順変換処理時に必要なメモリサイズの、導出にかかる処理負荷をより小さくすることができる。なお、透過指定がされた描画オブジェクトが処理バンド内に存在しない場合（ステップＳ１８０２でＮＯと判定された場合）に、ステップＳ１８０４の処理に移行せずに、閉領域データの生成を行わないステップＳ１８０３の処理に移行するようにしてもよい。そのような形態によれば、ベクタ方式のブロック順変換処理時に必要なメモリサイズの、導出にかかる処理負荷をさらに小さくすることができる。
【００９９】
［実施例２］
第１の実施例では、中間データ生成処理（ステップＳ３０２の処理）において、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理を行う画像処理装置を例にした。本実施例では、レンダリング処理（ステップＳ３０３の処理）において、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理を行う画像処理装置を例にする。なお、本実施例の画像処理装置のハードウェア構成およびソフトウェア構成は、第１の実施例の画像処理装置１１０と同様であるため、説明を省略する。
【０１００】
＜画像処理装置における転送されたＰＤＬの印刷処理＞
図１９は、本実施例における画像処理装置の画像形成処理を示すフローチャートである。図１９には、本実施例における画像処理装置１１０の、ＰＤＬデータに対する印刷処理の一連の流れが示さている。図１９に示す処理は、ＣＰＵ２２０によって実行される。具体的には、ＣＰＵ２２０が、図１９に示す処理を実行するためのプログラムをＲＯＭ２２１からＲＡＭ２２２へロードし、実行することにより、図１９に示す処理が実行される。なお、画像処理装置１１０のＣＰＵ２２０、ＲＯＭ２２１及びＲＡＭ２２２ではなく、外部装置（例えばプリンタサーバ１０３）のＣＰＵ、ＲＯＭ及びＲＡＭが、図１９に示す処理を実行する構成であっても構わない。
【０１０１】
まず、ホストコンピュータ１０１、モバイル端末１０２またはプリンタサーバ１０３から画像処理装置１１０にＰＤＬデータが送信される。すると、画像処理装置１１０のＣＰＵ２２０は、受信したＰＤＬデータを、記憶装置２２３に格納する。
【０１０２】
次に、ＣＰＵ２２０は、記憶装置２２３に格納されたＰＤＬデータを取得し、取得したＰＤＬデータの解析処理を行う（ステップＳ１９０１）。
【０１０３】
次に、ＣＰＵ２２０は、解析したＰＤＬデータの情報を元に、ビットマップ画像データを生成するために必要な中間データの生成処理を行う（ステップＳ１９０２）。ステップＳ１９０２の処理では、公知の技術による中間データ生成処理が行われる。
【０１０４】
次に、ＣＰＵ２２０は、本発明の特徴である、エッジ情報解析処理及びブロック順変換方法選択処理を行う。さらに、ＣＰＵ２２０は、生成した中間データ及び選択したブロック順変換方法選択処理に従い、ブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像データを生成する（ステップＳ１９０３）。なお、生成されたビットマップ画像データは、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データは、ブロック単位で後段の画像処理が施される。
【０１０５】
＜レンダリング処理の詳細＞
図２０は、本実施例における、レンダリング処理（ステップＳ１９０３の処理）を示すフローチャートである。図２１は、本発明の第２の実施例における、エッジ情報解析処理を示すフローチャートである。本実施例におけるレンダリング処理には、本発明の特徴であるエッジ情報解析処理、ブロック順変換方法選択処理及びブロック順変換処理が含まれる。
【０１０６】
まず、ＣＰＵ２２０は、ステップＳ１９０２で生成した中間データに含まれるエッジ情報から、ベクタデータを元にブロック順変換処理を行うか、ラスタデータを元にブロック順変換処理を行うかを選択する際に必要となる情報を抽出する（ステップＳ２００１）。ここで、ステップＳ２００１の処理の詳細を説明する。図２１は、本発明の第２の実施例における、エッジ情報解析処理（ステップＳ２００１の処理）を示すフローチャートである。図２１に示すように、ＣＰＵ２２０は、あらかじめ定めた所定数のラインについて、閉領域データを生成する（ステップＳ２１０１）。なお、ここでいう所定数とは、バンドの全ライン数以下の値である。すなわち、所定数のラインとは、処理バンドの全部または一部のラインである。この時、ＣＰＵ２２０は、中間データから、処理バンド内の所定数のラインに含まれる描画オブジェクトの、輪郭を示すエッジ情報を抽出する。そして、ＣＰＵ２２０は、エッジ情報に含まれるエッジの位置情報と輪郭の詳細情報に基づいて、処理バンド内の所定数のラインについて、閉領域データの生成処理を行う。なお、ステップＳ２１０１の閉領域データの生成処理では、エッジ情報に含まれるエッジの位置情報と輪郭の詳細情報の他に、さらに輪郭に関連付けられたオブジェクト情報とオブジェクトの重なり方を示す情報を用いる。したがって、ステップＳ２１０１の閉領域データの生成処理では、上述したステップＳ５０１の処理と同様に、オブジェクトの重なりを考慮した閉領域データの生成処理が行われる。これにより、実際に生成した各閉領域データのオブジェクト数を足し合わせることで、透過指定の有無にかかわらず、描画オブジェクトの個数を求めることができる。なお、閉領域データの生成処理に関しては、公知の技術を利用する。これにより、上記処理で算出した、所定数のラインの閉領域データのサイズを利用し、以降のブロック順変換方法選択処理（ステップＳ２００２の処理）で利用する構成をとる。
【０１０７】
次にＣＰＵ２２０は、ステップＳ２００１で取得したブロック順変換方法の選択処理に必要な情報を元に、レンダリング処理（ステップＳ１９０３の処理）で行うブロック順変換方法の選択処理を行う（ステップＳ２００２）。具体的には、ＣＰＵ２２０は、ベクタ方式またはラスタ方式のどちらが少ないメモリでブロック順変換を行えるかを判断する。ＣＰＵ２２０は、判断結果に基づき、ブロック順変換方法として、ベクタ方式またはラスタ方式のいずれかの方式を選択する。ブロック順変換方法の選択処理の詳細については後述する。
【０１０８】
次に、ＣＰＵ２２０は、レンダリング処理で扱うベクタデータである閉領域データの生成処理を行う（ステップＳ２００３）。生成される閉領域データは、図９〜図１２に示す内容と同等であるため説明を省略する。
【０１０９】
次に、ＣＰＵ２２０は、ブロック順変換テーブルを参照して、処理バンドに対応するブロック順変換方法がベクタ方式であるか否かを、判断する（ステップＳ２００４）。
【０１１０】
ブロック順変換方法がベクタ方式でなかった場合は（ステップＳ２００４のＮＯ）、ＣＰＵ２２０は、ステップＳ２００６の処理に移行する。
【０１１１】
ブロック順変換方法がベクタ方式であった場合は（ステップＳ２００４のＹＥＳ）、ＣＰＵ２２０は、ステップＳ２００３の処理で生成した、処理バンドに対応するベクタデータを、一旦ブロック順変換メモリ２１０に格納する。そして、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納されたベクタデータをブロック順に変換する（ステップＳ２００５）。ステップＳ２００５の処理は、前述したステップＳ５０３の処理と同等であるため、説明を省略する。
【０１１２】
次に、ＣＰＵ２２０は、ベクタデータを元に、ラスタデータの生成処理を行う（ステップＳ２００６）。なお、ブロック順変換方法がベクタ方式である場合には、ステップＳ２００５の処理においてベクタデータがブロック順に変換されるので、ステップＳ２００６の処理で生成されるラスタデータもブロック順に生成される。また、ブロック順変換方法がラスタ方式である場合には、ステップＳ２００５の処理は実行されないので、ステップＳ２００６の処理で生成されるラスタデータは、ライン順に生成される。
【０１１３】
次に、ＣＰＵ２２０は、ブロック順変換方法テーブルを参照して、処理バンドに対応する、ブロック順変換方法がラスタ方式であるか否かを、判断する処理を行う（ステップＳ２００７）。
【０１１４】
ブロック順変換方法がラスタ方式でなかった場合には（ステップＳ２００７のＮＯ）、ＣＰＵ２２０は、ステップＳ２０００７の処理に移行する。
【０１１５】
ブロック順変換方法がラスタ方式であった場合には（ステップＳ２００７のＹＥＳ）、ＣＰＵ２２０は、ステップＳ２００６でライン順に生成されたラスタデータを、ブロック順に生成する（ステップＳ２０００８）。ことのき、まず、ＣＰＵ２２０は、ステップ２００６の処理で生成した、処理バンドに対応するピクセルデータを、一旦ブロック順変換メモリ２１０に格納する。そして、ＣＰＵ２２０は、ブロック順変換メモリ２１０に格納されたラスタデータをライン順からブロック順に変換する。ステップＳ２００８の処理は、前述したステップＳ５０６の処理と同等であるため、説明を省略する。
【０１１６】
次に、ＣＰＵ２２０は、ページ画像データ内に含まれる全てのバンドについて、処理が終了したか否かを判断する（ステップＳ２００９）。ＣＰＵ２２０は、終了していないと判断した場合には（ステップＳ２００９のＮＯ）、ステップＳ２００１の処理に戻り、終了したと判断した場合には（ステップＳ２００９のＹＥＳ）、処理を終了する。
【０１１７】
＜ブロック順変換方法の選択処理の詳細＞
図２２は、本発明の第２の実施例における、ブロック順変換方法選択処理（ステップＳ２００２の処理）を示すフローチャートである。
【０１１８】
まず、ＣＰＵ２２０は、ブロック順変換方法としてラスタ方式を選択した際の所定数のライン分のラスタデータのメモリサイズを算出する（ステップＳ２２０１）。ラスタデータは以下の式により一律に求められるため、ページの先頭でのみ処理を行う。
【０１１９】
ラスタ方式のブロック順変換処理で必要な所定ライン分のメモリ＝ページ幅×所定数のラインの高さ×１チャンネル辺りの階調×１ピクセル辺りのチャンネル数    …（式５）
【０１２０】
次に、ＣＰＵ２２０は、ブロック順変換方法としてベクタ方式を選択した際に必要となる、所定数のライン分のベクタデータのメモリサイズを算出する（ステップＳ２２０２）。実際には、ＣＰＵ２２０は、ステップＳ２１０１の処理で生成した所定バンドの閉領域データのデータサイズを取得する。
【０１２１】
次に、ＣＰＵ２２０は、ステップＳ２２０１及びステップＳ２２０２の処理で導出したメモリサイズの大小関係を比較し、ラスタ方式とベクタ方式のどちらがブロック順変換時のメモリ消費量が少ないかを判断する（ステップＳ２２０３）。
【０１２２】
ベクタ方式であった場合（ステップＳ２２０３のＹＥＳ）、ステップＳ２２０４に進み、ラスタ方式であった場合は、Ｓ２２０５に進む。
【０１２３】
ベクタ方式であった場合（ステップＳ２２０３のＹＥＳ）、ＣＰＵ２２０は、処理バンドのブロック順変換方法にベクタ方式を選択する（ステップＳ２２０４）。
【０１２４】
ベクタ方式でなかった場合（ステップＳ２２０３のＮＯ）、ＣＰＵ２２０は、処理バンドのブロック順変換方法にラスタ方式を選択する（ステップＳ２２０５）。
【０１２５】
次に、ＣＰＵ２２０は、ページ内の全バンドに対する処理が終了したか否かを判断する処理を行う（ステップＳ２２０６）。終了していない場合には（ステップＳ２２０６のＮＯ）、ＣＰＵ２２０は、ステップＳ２２０２の処理に戻る。終了している場合には（ステップＳ２２０６のＹＥＳ）、ＣＰＵ２２０は、処理を終了する。
【０１２６】
以上に説明したように、本実施例の画像処理装置は、所定数のライン分の閉領域データを生成することで、バンド単位に最適なブロック順変換処理の方式を決定する。具体的には、処理バンド内の所定数のライン分の、ベクタデータのメモリサイズとベクタデータのメモリサイズとを比較して、当該処理バンドのブロック順変換方法を選択している。そのような形態によれば、ステップＳ２１０１の処理において、処理バンド内の全ライン分ではなく一部のラインについて閉領域データを生成すればよいので、さらに処理負荷を低減することができる。なお、第１の実施例においても、処理バンド内の所定数のライン分の、ベクタデータのメモリサイズとベクタデータのメモリサイズとを比較して、当該処理バンドのブロック順変換方法を選択するようにしてもよい。そのような形態を実現するには、例えば、ステップＳ１７０１，Ｓ１７０２，Ｓ１８０４の処理おける処理対象を、バンドにおける全ライン分ではなく一部のラインとするようにすればよい。
【０１２７】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２８】
１１０  画像処理装置
２０４  ブロック順変換方法選択部
２０５  ベクタ方式ブロック順変換部
２０６  ラスタ方式ブロック順変換部
２２０  ＣＰＵ
【図１】
0006643056.tif 000002
【図２】
0006643056.tif 000003
【図３】
0006643056.tif 000004
【図４】
0006643056.tif 000005
【図５】
0006643056.tif 000006
【図６】
0006643056.tif 000007
【図７】
0006643056.tif 000008
【図８】
0006643056.tif 000009
【図９】
0006643056.tif 000010
【図１０】
0006643056.tif 000011
【図１１】
0006643056.tif 000012
【図１２】
0006643056.tif 000013
【図１３】
0006643056.tif 000014
【図１４】
0006643056.tif 000015
【図１５】
0006643056.tif 000016
【図１６】
0006643056.tif 000017
【図１７】
0006643056.tif 000018
【図１８】
0006643056.tif 000019
【図１９】
0006643056.tif 000020
【図２０】
0006643056.tif 000021
【図２１】
0006643056.tif 000022
【図２２】
0006643056.tif 000023