(57)【要約】【課題】レンダリング処理を高速化することを目的とする。【解決手段】ＰＤＬデータを順次、受け取り、ＰＤＬデータに含まれる図形を後段の処理に渡す受け取り手段と、受け取り手段より渡された図形ごとにエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる割り当て手段と、図形ごとに抽出されたエッジ情報を合成する合成手段と、合成手段で合成されたデータをタイル状のフォーマットで中間データとしてスプールするスプール手段と、スプール手段からタイル状の中間データを読み出し、中間データからピクセルを生成するに際し、タイルごとにそれぞれ処理を行う生成手段と、を有することによって課題を解決する。【選択図】図５
2015181016.tif 000002
【特許請求の範囲】
【請求項１】
ＰＤＬデータを順次、受け取り、前記ＰＤＬデータに含まれる図形を後段の処理に渡す受け取り手段と、
前記受け取り手段より渡された図形ごとにエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる割り当て手段と、
前記図形ごとに抽出されたエッジ情報を合成する合成手段と、
前記合成手段で合成されたデータをタイル状のフォーマットで中間データとしてスプールするスプール手段と、
前記スプール手段からタイル状の中間データを読み出し、中間データからピクセルを生成するに際し、タイルごとにそれぞれ処理を行う生成手段と、
を有する画像処理装置。
【請求項２】
前記割り当て手段は、図形の絶対座標を、図形の外接矩形の左上の点を原点に持つ相対座標に変換し、図形ごとの各領域においてエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる請求項１記載の画像処理装置。
【請求項３】
前記エッジ抽出処理は、エッジ情報を抽出すると共に図形の輪郭の中の塗り情報を抽出する請求項１又は２記載の画像処理装置。
【請求項４】
前記受け取り手段と、前記割り当て手段及び前記合成手段と、を別々のスレッドで実行させる請求項１乃至３何れか１項記載の画像処理装置。
【請求項５】
前記受け取り手段は、
前記図形が、ベクタライズが必要な図形か否かを判断し、ベクタライズが必要であると判断した場合、前記図形にマーキングを施し、図形を第一のデータ保持部に保存するマーキング手段と、
前記第一のデータ保持部に保持されている図形のうち、マーキングが施されている図形に対してベクタライズを施し、図形を第二のデータ保持部に保持するベクタライズ手段と、
を有し、
前記マーキングを施されなかった前記第一のデータ保持部に保持されている図形を前記後段の処理である前記割り当て手段に渡すと共に、前記第二のデータ保持部に保持されている図形を前記後段の処理である前記割り当て手段に渡し、前記マーキング手段と、前記ベクタライズ手段と、を別々に実行する請求項１乃至４何れか１項記載の画像処理装置。
【請求項６】
前記受け取り手段は、利用可能なＣＰＵのコア数が所定の数より大きい場合は、前記マーキング手段と、前記ベクタライズ手段と、を実行する処理を選択し、利用可能なＣＰＵのコア数が所定の数より小さい場合は、前記マーキング手段と、前記ベクタライズ手段と、を実行する処理を選択しない請求項５記載の画像処理装置。
【請求項７】
画像処理装置が実行する画像処理方法であって、
ＰＤＬデータを順次、受け取り、前記ＰＤＬデータに含まれる図形を後段の処理に渡す受け取りステップと、
前記受け取りステップより渡された図形ごとにエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる割り当てステップと、
前記図形ごとに抽出されたエッジ情報を合成する合成ステップと、
前記合成ステップで合成されたデータをタイル状のフォーマットで中間データとしてスプールするスプールステップと、
前記スプールステップからタイル状の中間データを読み出し、中間データからピクセルを生成するに際し、タイルごとにそれぞれ処理を行う生成ステップと、
を有する画像処理方法。
【請求項８】
コンピュータに、
ＰＤＬデータを順次、受け取り、前記ＰＤＬデータに含まれる図形を後段の処理に渡す受け取りステップと、
前記受け取りステップより渡された図形ごとにエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる割り当てステップと、
前記図形ごとに抽出されたエッジ情報を合成する合成ステップと、
前記合成ステップで合成されたデータをタイル状のフォーマットで中間データとしてスプールするスプールステップと、
前記スプールステップからタイル状の中間データを読み出し、中間データからピクセルを生成するに際し、タイルごとにそれぞれ処理を行う生成ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来から図形を描画するために図形が持つ座標情報等から図形の輪郭情報（エッジ情報とも呼ぶ）を抽出し、輪郭情報に基づいて画像を形成するレンダリング手法は一般に広く利用されている（例えば、特許文献１参照）。輪郭情報は直線で表現されるが直線を表現するための手法としてＤＤＡアルゴリズムが知られている（非特許文献１参照）。
図１は、従来のレンダラの処理の一例を示す図である。ここでは入力図形をバンドに分割して処理を行っている。グラフィックス処理を実行するにあたり、このようなシステムで問題となるのは、多くのグラフィックスオブジェクトが入力された場合にレンダリング速度の低下が発生することである。そこで図１にあるようにバンドで分割された場合の処理では、それぞれのバンドに対して独立した処理単位（スレッド）を割り当てることで処理速度の向上を試みるものが提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平４−１７０６８６号公報
【特許文献２】特開２００３−５１０１９号公報
【非特許文献】
【０００４】
【非特許文献１】Ｄａｖｉｄ  Ｒｏｇｅｒｓ，"Ｐｒｏｃｅｄｕｒａｌ  Ｅｌｅｍｅｎｔｓ  ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ"ＭｃＧｒａｗ−Ｈｉｌｌ  Ｅｄｕｃａｔｉｏｎ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のレンダラでは、図形はパス等の座標や線分情報が渡された段階でスキャンライン上のエッジデータ等を生成する構造となっている。このため図形ごとに独立処理を行うことは出来ない。一方、バンド単位で分割を行えば各領域には依存性はなく並列処理を行うことは出来る。この方法では一定の条件下では並列処理の実行が効率的に実行可能だが全ての場合において効率的に動作するわけではない。例えば、１つの図形をみた場合に、それが上下に隣接する２つのバンド領域Ａとバンド領域Ｂに跨る場合は、そのままでは並列処理が実行出来ない。このような状態で処理を進めるには２つのバンド領域それぞれに対して図形を供給（データの複製、及び転送等）する必要がある。このことからバンド並列型の処理ではバンド境界に跨る図形を多く含むＰＤＬデータの場合、十分な高速化が期待出来ないという課題がある。バンドの区切り位置をオブジェクトの配置を考慮して調整することも考えられるが、どのように調整をしたとしてもバンドを跨る図形は存在しうるため根本的な解決手段とはならない。またバンド１つに対して１スレッドしか処理が（基本単位として）割り当てられないことを考える。するとオブジェクトの配置がバンドの領域に対して極端に偏って分布しているような（例えば１バンド上に数百ものオブジェクトが存在する）場合は処理の高速化が十分に期待出来ない問題があった。
【０００６】
本発明はこのような問題点に鑑みなされたもので、レンダリング処理を高速化することを目的とする。
【課題を解決するための手段】
【０００７】
そこで、本発明は、ＰＤＬデータを順次、受け取り、前記ＰＤＬデータに含まれる図形を後段の処理に渡す受け取り手段と、前記受け取り手段より渡された図形ごとにエッジ情報を抽出する処理の単位であるエッジ抽出処理を割り当てる割り当て手段と、前記図形ごとに抽出されたエッジ情報を合成する合成手段と、前記合成手段で合成されたデータをタイル状のフォーマットで中間データとしてスプールするスプール手段と、前記スプール手段からタイル状の中間データを読み出し、中間データからピクセルを生成するに際し、タイルごとにそれぞれ処理を行う生成手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、レンダリング処理を高速化することが出来る。
【図面の簡単な説明】
【０００９】
【図１】従来のレンダラの処理の一例を示す図である。
【図２】画像処理装置のハードウェア構成の一例を示す図である。
【図３】図形ごとに処理の単位（スレッド）を割り当てた一例を示す図である。
【図４】各図形においてエッジ抽出処理を各々独立に適用した場合の概念図である。
【図５】画像処理装置のソフトウェア構成（システム構成）等の一例を示す図である。
【図６】三角形の図形に対してエッジ抽出処理を行う様子を示した図である。
【図７】スキャンラインの処理の一例を示すフローチャートである。
【図８】「エッジ抽出処理」と、抽出されたエッジのデータをマージする処理「データ合成」と、におけるデータの流れを説明するための図である。
【図９】ＰＤＬ処理とエッジ抽出処理（合成処理を含む）とにおいてどのように時間が短縮されるかを説明した図である。
【図１０】実施形態１の構成について適用するコア数を増やしていった場合の性能の変化を示した図である。
【図１１】コア数が８の場合のプログラム内部スレッドの活動状況を示した図である。
【図１２】「データ受け取り」の処理にボトルネックが発生していることを説明するための図である。
【図１３】「データ受け取り」の処理を多段の（複数の）処理に分けることを説明するための図である。
【図１４】システム側から通知された利用可能なコア数に応じて、選択する処理を切り替える一例を示す図である。
【図１５】実施形態２の構成を適用した場合の、コア数に対する、性能の変化をグラフで示した図である。
【図１６】コア数に応じて処理フローが切り替わるシステムの構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面に基づいて説明する。
【００１１】
＜実施形態１＞
図２は、画像処理装置のハードウェア構成の一例を示す図である。
図２において、ＣＰＵ１０１は、ＲＯＭ１０３又はハードディスク１１１からＲＡＭ１０２にロードされたＯＳや一般アプリケーション等のプログラムを実行し、後述するソフトウェアの機能及びフローチャートの処理を実現する。
ＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）１０５は、キーボード１０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）１０６は、ＣＲＴディスプレイ１１０の表示を制御する。ディスクコントローラ（ＤＫＣ）１０７は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル等を記憶するハードディスク（ＨＤ）１１１やフレキシブルディスク（ＦＤ）等とのアクセスを制御する。ＰＲＴＣ１０８は、接続されたプリンタ１０７との間の信号の交換を制御する。ＮＣ１１２は、ネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
なお、本実施形態では、以下に示す画像処理装置の機能は、ソフトウェアにより実現されるものと説明するが、各機能を専用のハードウェアで画像処理装置に実装するようにしても良い。
なお、本実施形態のＣＰＵ１０１は、マルチコアのＣＰＵであるものとする。画像処理装置が、複数のＣＰＵを有していても良い。
【００１２】
本実施形態のレンダラは、図３にあるように図形ごとに処理の単位（スレッド）を割り当てる。図形の位置はページ上に配置（絶対座標上）されているが、それぞれは個別の相対座標にマップされ（図形の外接矩形の左上の点を原点に持つ相対座標に変換され）、各領域においてエッジ抽出処理を行うことが出来る。
図４は、各図形においてエッジ抽出処理を各々独立に適用した場合の概念図である。ページ上の図形ごとにエッジ抽出処理を実施する様子を示している。図形ごとに抽出されたエッジ情報は再度ページ上の座標にマップされ合成処理がなされる。それぞれの処理は各々依存性がないために独立に実行することが出来る。つまり、図形のデータが入力された後、各図形のエッジ抽出の処理、及び各抽出処理後のデータをマージする処理（データ合成）それぞれについて複数のスレッドを割り当てることが可能である。スレッドの処理はそれを実行するユニット（ＣＰＵコア）にマップされ各コアが時間独立に処理を実行することで、並列で動作することが出来る。
更には、本実施形態のレンダラではコアの割り振りを決定するに際し、各データの分析した結果（例えば、ＰＤＬ関連情報）に基づいて割り当てを決定するコア管理機構を有し、制御に基づいて並列処理を行う。システム上利用可能なコア数が多い場合に、処理の効率を更に高める目的で、ＰＤＬデータの受け取り処理の部分においては各図形の基本情報であるＰＤＬ関連情報を抽出する。そして、レンダラは、ベクタライズ等の処理を後段のパイプライン処理にマップすることでデータ処理の負荷分散を図るよう構成されており、コア数が増大した場合でもスケーラブルに性能が向上する。
【００１３】
並列処理構造を持つＲＩＰシステムの基本構成を説明する。
図５は、画像処理装置のソフトウェア構成（システム構成）等の一例を示す図である。図にあるようにＰＤＬデータは、描画インターフェースを経由して、ＲＩＰシステム側に受け渡される。ＲＩＰシステム側では「データ受け取り」の処理ブロックが図形、文字、画像等のＰＤＬオブジェクトを受け取り、不図示の内部スプーラに適時データを蓄えた後に後段の処理ユニットにデータを流すよう構成されている。ＰＤＬオブジェクトが図形等であった場合は、「データ受け取り」は、図５にあるエッジ抽出処理（スレッド）にデータを受け渡す。一方、ＰＤＬオブジェクトがイメージであった場合は、「データ受け取り」は、画像処理（スレッド）にデータを受け渡す。図形がページに複数存在する場合は、それぞれに対してエッジ抽出処理が割り当てられる。それぞれのエッジ抽出処理で抽出されたエッジデータは、適宜後段のデータ合成処理（スレッド）に渡され、ページ上に合成（重ね合わせの処理）がなされると同時にタイル状のデータにフォーマットされた上でスプーラにＲＩＰ中間データとして書き出される。タイル上にフォーマットされたＲＩＰ中間データは更に後段のタイル処理（スレッド）により各タイルにおいてピクセルの展開処理が行われる。それぞれのタイルの処理は、時間独立で実行がなされる。
【００１４】
図６は、三角形の図形に対してエッジ抽出処理を行う様子を示した図である。図中、水平方向右を示す矢印はスキャンラインであって、三角形の外接矩形の上から下へ順にスキャン走査を行うよう構成されている。図６では３ライン目のスキャンが行われており、辺ＡＢ及び辺ＡＣ上のエッジ（２つ）が抽出されている。
【００１５】
図７は、スキャンラインの処理の一例を示すフローチャートである。
まず、ステップＳ１１では、「エッジ抽出処理」は、入力された図形のデータについて初期化処理を行う。この処理の中では、「エッジ抽出処理」は、スキャンの範囲等を決定し後段の処理が実行出来るよう、ループ数のパラメータ群をセットする。
次にステップＳ１２において、「エッジ抽出処理」は、スキャンラインのＹ方向へのループ処理を開始する。ステップＳ１３では、「エッジ抽出処理」は、現在のスキャンラインにかかる図形（図形の輪郭を形成する辺のデータ）を拾い出し、かつ、スキャンライン上に存在するエッジ情報（カレントのエッジデータリスト）を、更新する必要があるか否かを判断する。「エッジ抽出処理」は、もし更新の必要がなければステップＳ１７へ進むが更新の必要があれば、ステップＳ１４へ進む。
【００１６】
ステップＳ１４では、「エッジ抽出処理」は、カレントのエッジデータリストに対して、エッジを追加又は削除の判断を行う。「エッジ抽出処理」は、図形の輪郭にスキャンラインがかかった場合等、エッジを追加する場合は、ステップＳ１５にて追加すべきデータをＸ方向へ昇順となるように追加する。ここで追加されたデータはノードと呼ばれ、それぞれがリスト上に連結されている。一方で、図形の輪郭からスキャンラインが外れた場合等、エッジデータを削除する場合は、「エッジ抽出処理」は、ステップＳ１６に進み、エッジデータリストから該当するデータを削除する。
ステップＳ１７は、カレントのスキャンラインにおけるＸ方向のエッジ情報を抽出するための処理である。ステップＳ１８では、「エッジ抽出処理」は、エッジデータリスト上の各ノードに順次アクセスしていく。エッジ情報は、カレント（Ｙ値）のスキャンラインにおけるデータ値（ＤＡ）を線分の傾き等の情報から更新するよう構成されており、データの更新処理はステップＳ１９にて、実行される。ステップＳ２０の処理は、Ｘループのためのカウンタ減算処理である。ステップＳ２１では、「エッジ抽出処理」は、Ｘ方向ループの終了有無を判定する。ステップＳ１７からステップ２１ｍではＸ方向のループであったが、ステップＳ１２からステップＳ２２まではＹ方向のループであり、これら二重のループにて平面上の図形の輪郭情報（エッジ情報）を抽出するよう構成されている。
【００１７】
図８は、図５（基本システム概説図）の処理の中で、「エッジ抽出処理」と、抽出されたエッジのデータをマージする処理「データ合成」と、におけるデータの流れを説明するための図である。図８にあるように図形１、２のデータは実体としては図形の種類を表す図形種情報とそれを構成する座標データとの群で構成されている。これらデータは「エッジ抽出処理」、即ち、先に説明した図７にある処理フローによりエッジデータが抽出される。図形１と図形２とにはそれぞれ独立した別々のスレッドで処理がなされるために同時に２つの図形のエッジデータが抽出される。この処理は図８ではスレッド１、スレッド２として表現されている。これらの処理の過程において不図示である色情報抽出処理により図形の輪郭の中の塗り情報が同時に抽出される。スレッド３ではスレッド１及びスレッド２により抽出されたエッジデータ及び色情報から「データ合成」によってデータの合成処理が行われる。例えば、図形２が赤の単色（不透明）で塗られており図形１が青の単色（不透明）で塗られていて、図形１が図形２の上に描画されている場合、重なりの部分は上層の色である青が塗られることになる。この状態では色情報は２つ（即ち、青と赤）が保存される。一方でスレッド３が処理の対象とする領域（図８の例では矩形タイル）においては図形１と図形２との領域におけるエッジデータの合成（例えば重なった結果で不要になったエッジは消去される）が行われる。
本実施形態の処理方式では、重なりの状況によって、領域に関して保持すべき色情報の数が増えることもある。例えば図形１が赤の単色（不透明）で塗られており、図形２が青の単色（透過）で塗られている場合で、かつ、図形２が図形１の上に重なっている場合は透過合成の計算により重なっている領域の色が計算される。例えば、青と赤とを合成すると紫となるため、スレッド３の処理においては赤、青、紫の色情報が保持される。
【００１８】
図９のグラフは、ＰＤＬ処理とエッジ抽出（合成処理を含む）処理とにおいてどのように時間が短縮されるかを説明した図である。ＣＰＵが１つのコアしか持たない場合は複数のスレッドを立ち上げても各スレッドの処理は時分割で処理されるだけであるため処理の高速化を図ることは実質的には出来ない。図９における処理時間のグラフのうち、ＰＤＬ処理の時間とは図５でいう所の「ＰＤＬインタプリタ」と「データ受け取り」との処理に関する時間がこれに該当し、エッジ抽出の時間は図５でいう所の「エッジ抽出処理」、「データ合成処理」がこれに該当する。
このグラフの例では、ＣＰＵ１コアのシステムでは１ページ分の処理時間はトータルで７００ｍｓ必要であって、その内訳は、ＰＤＬ処理に１６０ｍｓを要し、その後のエッジ抽出処理には５４０ｍｓ要していることになる。
これを同様にＣＰＵ２コアのシステムで実行した場合は、ＰＤＬ処理とエッジ抽出処理とをそれぞれ独立して動作出来るために、１ページ分のＰＤＬ図形の処理が完了する前にエッジ抽出処理を開始することが出来る。例えば端的には最初の図形ＰＤＬ処理から渡された時点からエッジ抽出処理を開始しても良いし、一定時間、複数の図形を蓄えてから処理を開始しても良い。図９の例ではＰＤＬ処理を開始後、１０ｍｓ経過した時点でエッジ抽出処理を開始している。その後はエッジ抽出処理が進むにつれてＰＤＬ処理が必要なデータを同時に生成していくことになる。加えてエッジ抽出処理は２つの処理群に分けられて処理が行われる。このケースではコアが２つ同時に動作するためにエッジ抽出処理全体の処理が加速される。ＰＤＬ処理が動作している間はどちらかのコアでＰＤＬ処理とエッジ抽出処理とが時分割で行われるが、もう一方のコアはエッジ抽出処理だけを担当する（或いは時々に役割を交代することも可能である）ため、総合すると全体の処理を短縮することが出来る。
【００１９】
＜実施形態２＞
図１０は、実施形態１の構成について適用するコア数を増やしていった場合の性能の変化を示した図である。図１０にあるようにＣＰＵ１コア時の１ページの処理時間が７００ｍｓであった場合、ＣＰＵ２コアの場合は３７０ｍｓ（１．９倍高速）、ＣＰＵ４コアの場合は２００ｍｓ（３．５倍高速）、ＣＰＵ８コアの場合は１８０ｍｓ（３．９倍高速）となった。つまり実施形態１の構成によりコア数に応じてパフォーマンス（ＲＩＰ処理速度）を向上出来るようになった。
ここで更にコア数を増やしていった場合のことも勘案し、コア数が増えた場合の内部処理状況の分析を行った。
【００２０】
図１１は、コア数が８の場合のプログラム内部スレッドの活動状況を示した図である。図１１のグラフは、スレッド・アクティビティのグラフである。図１１中に黒帯が記録されている所はＣＰＵの各コアがスレッドの処理を実行していた領域を示しており、空白の領域はコアがアイドル（休止）している領域を示している。このグラフが示すようにコア番号の８，７，６に関しては図中１０の円で示されるようにコアが動いていない領域（時間帯）がかなり多くあることが読み取れる。同条件の（データ負荷が同じ）場合でＣＰＵコアが４つで動作している場合を分析すると、このような状態は観察されない。
この状況を分析した所、図１２でいうところの「データ受け取り」の処理にボトルネックが発生していることが判明した。データ受け取りの部分では受け取った図形が直線データだけで構成されている場合は直ちにデータを受け取れるが、曲線データであった場合は、ベクタライズと呼ばれる直線化処理を行っている。通常は十分に高速処理出来る処理も、曲線を持つ図形が多く入力されると、この処理に時間がかかり、その結果、後段のエッジ抽出処理へのデータ入力が間に合わなくなってくる。データを受け取れないエッジ抽出処理は処理を開始出来ずにアイドル時間でデータを待機する状態となってしまう。
【００２１】
したがって、実施形態２では、「データ受け取り」処理を図１３の（ｂ）にあるように多段の処理ブロックを構成することで全体のパフォーマンスを更に改善する。図１３の（ｂ）中、ＰＤＬオブジェクトは、描画インターフェースを経由してデータ受け取り処理に渡されるが、そこでは最初にベクタライズ必要の有無が判断される。その後、必要な場合のみ図形にマーキングが施され、データリスト１にスプールが行われる。データリスト１は、第一のデータ保持部の一例である。
実施形態２の提案では、図１３の（ｂ）にあるように、ベクタライズ処理自体は後段の別スレッドのタスクにより「処理１」を実行する時間とは別の独立した時間（独立時間）で実行される。後段のベクタライズ処理ではデータリスト１のデータのうち、ベクタライズが必要なデータが適宜ピックアップされ、ベクタライズ処理が行われる（この動作は図にあるように適宜、複数スレッドで行っても良い）。ベクタライズされたデータはデータリスト２に格納され、後段のエッジ抽出処理に適宜渡される。つまり、マーキングを施されなかったデータリスト１に保持されている図形が後段のエッジ抽出処理に渡されると共に、データリスト２に保持されている図形が後段のエッジ抽出処理に渡される。データリスト２は、第二のデータ保持部の一例である。
図１３（ａ）中のグラフからわかるように、このような構成をとることでＣＰＵコア数が８となった場合でもエッジ抽出処理へのデータ供給が途切れず、その結果常に並列で動作が可能となり全体のパフォーマンスを向上させることが出来る。
【００２２】
ここで図１３の（ｂ）にて説明したように「データ受け取り」に多段の処理ブロックを適用すると８コアの場合に処理パフォーマンスが向上することが判明したが逆にこれを４コアの場合に適用するとどうなるかについて簡単に説明する。図１３（ａ）中のグラフにあるように８コアの処理時にはデータ受け取りの処理時間のオーバーヘッドとして３５ｍｓ（２０ｍｓ＋１５ｍｓ）を消費している。これを４コアの場合に適用しても４コアの場合は、そもそもエッジ抽出処理の部分で４つのコアがフルに稼働しているため並列処理度が向上することはない。つまりデータを供給する側に工夫をしてもシステムのパフォーマンスの向上は得られないということになる。このため４コアの場合には図１３の（ｂ）にあるような多段構成の処理系は適用しない方が良いということになる。以上のことから、実施形態２ではコア数が４、又は８という状況に応じて提供する処理アルゴリズムを切り替えるよう構成する。
【００２３】
図１４は、システム側から通知された利用可能なコア数に応じて、選択する処理を切り替える一例を示す図である。即ちコア数が４までの場合は図中左にあるように実施形態１の構成をとり、８コア以上の場合は右ブロックにあるようにデータ受け取りの処理を図１３の（ｂ）にあるように多段構成とした処理アルゴリズムで処理するよう構成する。なお、４は、所定の数の一例である。
図１５は、実施形態２の構成を適用した場合の、コア数に対する、性能の変化をグラフで示した図である。図にあるようにＣＰＵ１コア時の１ページの処理時間が７００ｍｓであった場合、ＣＰＵ２コアの場合は３７０ｍｓ（１．９倍高速）、ＣＰＵ４コアの場合は２００ｍｓ（３．５倍高速）、ＣＰＵ８コアの場合は１３５ｍｓ（５．２倍高速）となる。つまり、実施形態２の構成によりコア数に応じたパフォーマンス（ＲＩＰ処理速度）を引き出すことが出来る。
【００２４】
＜実施形態３＞
実施形態２では、コア数は８までのケースについて説明したが勿論ＣＰＵのコア数に制限があるわけではない。また８コアのケースにおける多段構成とした処理部は図５中のデータ受け取り処理を挙げたが同様の効果が挙げられる箇所があればそれらは別の箇所の処理でも良く特に処理箇所に依存しているものではない。８コア以上のケースを考えた場合、更にエッジ抽出に要する時間は短縮されることが想定される。その場合にはデータ受け取りの処理を更に高速に行えるように新規の処理フローを導入しても良いが、供給側のデータを十分に積み上げてから処理を開始するように開始しても良い。コア数が増えることによってデータを処理していく処理ユニットにおいて入力と出力量とのバランスの調整が必要となるがそれらは実験的に求めても良いし理論的なモデル又は予測に基づいても良い。コア数が増えることにより各ブロックの処理自体を違う方法で実現しても良い。
図１６は、コア数に応じて処理フローが切り替わるシステムの構成の一例を示す図である。ここでは切り替えが行われる各処理フローにおいて、それぞれが共通で用いる機能ブロックをモジュール化し、プログラムサイズを最小化する構成を示している。また想定される別のシナリオとしては、処理負荷が重くないページが多く入力されてきた場合等には、例えばコア数が４の場合にはＣＰＵコア自体にアイドル時間が多く発生することも考えられる。そのような状態のときにはスプーラ内に処理済みのページが十分に蓄積され、その結果、エンジン出力速度をキープする上で、当面の間、ページの加速処理を行う必要がない場合も考えられる。そのような場合を想定して調停機能（コア数に応じてアイドル時間の調整を行うようなシステム）を設けるようにしても良い。
【００２５】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００２６】
以上、上述した各実施形態によれば、図形がどのように配置されていてもそれぞれに対して均等にコアを割り当てることが出来るようになるため、処理効率を向上（データ転送の無駄の削減、及びコア待機時間の削減）することが出来る。この結果、グラフィックスが多く含まれるような処理負荷の高いページが入力された場合でも効果的にレンダリング速度を高速化出来る。
【００２７】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
なお、上述した構成は、プリンタ装置、ディスプレイ等の表示装置、画像出力デバイス等に利用することが出来る。
【図１】
2015181016.tif 000003
【図２】
2015181016.tif 000004
【図３】
2015181016.tif 000005
【図４】
2015181016.tif 000006
【図５】
2015181016.tif 000007
【図６】
2015181016.tif 000008
【図７】
2015181016.tif 000009
【図８】
2015181016.tif 000010
【図９】
2015181016.tif 000011
【図１０】
2015181016.tif 000012
【図１１】
2015181016.tif 000013
【図１２】
2015181016.tif 000014
【図１３】
2015181016.tif 000015
【図１４】
2015181016.tif 000016
【図１５】
2015181016.tif 000017
【図１６】
2015181016.tif 000018
【手続補正書】
【提出日】平成27年6月5日(2015.6.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
図形のエッジを抽出するエッジ抽出処理を実行するシステムが行う制御方法であって、
前記システム内の第１の数のコアで第１のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第１の実行工程と、
前記第１の数とは異なる前記システム内の第２の数のコアで前記第１のエッジ抽出アルゴリズムとは異なる第２のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第２の実行工程と、
前記システム内の利用可能なコアの数を取得する取得工程と、
前記取得されたコアの数に基づいて、前記第１の実行工程と前記第２の実行工程のうちの１つを、実行すべき実行工程として選択する選択工程と、
を有することを特徴とする制御方法。
【請求項２】
前記選択工程は、前記前記取得されたコアの数が前記第１の数であれば前記第１の実行工程を選択することを特徴とする請求項１に記載の制御方法。
【請求項３】
前記選択工程は、前記前記取得されたコアの数が前記第２の数であれば前記第２の実行工程を選択することを特徴とする請求項１又は２に記載の制御方法。
【請求項４】
前記選択された実行工程によって実行されたエッジ抽出処理で抽出されたエッジの情報に基づいて印刷処理を行う印刷工程を有することを特徴とする請求項１乃至３の何れか１項に記載の制御方法。
【請求項５】
前記第１のエッジ抽出アルゴリズムの第１の実行プログラムと、前記第２のエッジ抽出アルゴリズムの第２の実行プログラムとを記憶する記憶工程を有し、
前記第１の実行プログラムと前記第２の実行プログラムとで共通する処理の部分は共用モジュール化されていることを特徴とする請求項１乃至４の何れか１項に記載の制御方法。
【請求項６】
図形のエッジを抽出するエッジ抽出処理を実行するシステムであって、
前記システム内の第１の数のコアで第１のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第１の実行手段と、
前記第１の数とは異なる前記システム内の第２の数のコアで前記第１のエッジ抽出アルゴリズムとは異なる第２のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第２の実行手段と、
前記システム内の利用可能なコアの数を取得する取得手段と、
前記取得されたコアの数に基づいて、前記第１の実行手段と前記第２の実行手段のうちの１つを、エッジ抽出処理を実行すべき実行手段として選択する選択手段と、
を有することを特徴とするシステム。
【請求項７】
前記選択手段は、前記前記取得されたコアの数が前記第１の数であれば前記第１の実行手段を選択することを特徴とする請求項６に記載のシステム。
【請求項８】
前記選択手段は、前記前記取得されたコアの数が前記第２の数であれば前記第２の実行手段を選択することを特徴とする請求項６又は７に記載のシステム。
【請求項９】
前記選択された実行手段によって実行されたエッジ抽出処理で抽出されたエッジの情報に基づいて印刷処理を行う印刷手段を有することを特徴とする請求項６乃至８の何れか１項に記載のシステム。
【請求項１０】
前記第１のエッジ抽出アルゴリズムの第１の実行プログラムと、前記第２のエッジ抽出アルゴリズムの第２の実行プログラムとを記憶する記憶手段を有し、
前記第１の実行プログラムと前記第２の実行プログラムとで共通する処理の部分は共用モジュール化されていることを特徴とする請求項６乃至９の何れか１項に記載のシステム。
【請求項１１】
請求項６乃至１０の何れか１項に記載のシステムの各手段としてコンピュータを機能させるためのプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、制御方法、システム及びプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
図形のエッジを抽出するエッジ抽出処理を実行するコアの数によらず、エッジ抽出処理のアルゴリズムを同一とすると、コアの数によっては、処理効率が低下することがある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明はこのような問題点に鑑みなされたもので、エッジ抽出処理を高速化することを目的とする。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
そこで、本発明は、図形のエッジを抽出するエッジ抽出処理を実行するシステムが行う制御方法であって、前記システム内の第１の数のコアで第１のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第１の実行工程と、前記第１の数とは異なる前記システム内の第２の数のコアで前記第１のエッジ抽出アルゴリズムとは異なる第２のエッジ抽出処理アルゴリズムに従うエッジ抽出処理を実行する第２の実行工程と、前記システム内の利用可能なコアの数を取得する取得工程と、前記取得されたコアの数に基づいて、前記第１の実行工程と前記第２の実行工程のうちの１つを、実行すべき実行工程として選択する選択工程と、を有することを特徴とする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明によれば、エッジ抽出処理を高速化することが出来る。