(57)【要約】【課題】レンダリング装置の性能制限のためにアフィン係数のビット精度を切り下げないといけない環境において、ビット精度切り下げに起因する不正描画を防ぐこと。【解決手段】本発明は、レンダリング装置でラスタ画像を作成するために必要な中間データを、ＰＤＬデータに基づき作成するホスト装置であって、前記ＰＤＬデータに含まれる画像オブジェクトデータと、前記ホスト装置において処理可能なビット精度と、前記レンダリング装置において処理可能なビット精度とに基づき、前記画像オブジェクトデータの不正描画が発生するか検知する検知手段と、前記検知手段が、前記不正描画の発生を検知した場合、前記画像オブジェクトデータを変換する変換手段と、前記変換された画像オブジェクトデータに基づき、前記中間データを作成する作成手段とを有することを特徴とするホスト装置である。【選択図】図４
2019074916.tif 000002
【特許請求の範囲】
【請求項１】
レンダリング装置でラスタ画像を作成するために必要な中間データを、ＰＤＬデータに基づき作成するホスト装置であって、
前記ＰＤＬデータに含まれる画像オブジェクトデータと、前記ホスト装置において処理可能なビット精度と、前記レンダリング装置において処理可能なビット精度とに基づき、前記画像オブジェクトデータの不正描画が発生するか検知する検知手段と、
前記検知手段が、前記不正描画の発生を検知した場合、前記画像オブジェクトデータを変換する変換手段と、
前記変換された画像オブジェクトデータに基づき、前記中間データを作成する作成手段と
を有することを特徴とするホスト装置。
【請求項２】
前記ＰＤＬデータを解釈する解釈手段を更に有し、
前記作成手段は、前記解釈手段による解析結果に基づき、前記中間データを作成することを特徴とする請求項１に記載のホスト装置。
【請求項３】
前記ホスト装置において処理可能なビット精度が、前記レンダリング装置において処理可能なビット精度より大きい場合、前記検知手段は、前記不正描画が発生するか検知する一方、前記ホスト装置において処理可能なビット精度が、前記レンダリング装置において処理可能なビット精度以下の場合、前記検知手段は、前記不正描画が発生するか検知しないことを特徴とする請求項１又は２に記載のホスト装置。
【請求項４】
前記画像オブジェクトデータは、元画像と、該元画像をどのように拡縮、移動、回転するかを決定するためのアフィン行列とから成ることを特徴とする請求項１乃至３の何れか１項に記載のホスト装置。
【請求項５】
前記変換手段は、前記画像オブジェクトデータに含まれる前記元画像を、該元画像に前記アフィン行列を適用した画像に変換し、かつ、前記画像オブジェクトデータに含まれる前記アフィン行列を、該画像を等倍出力する行列に変換することを特徴とする請求項４に記載のホスト装置。
【請求項６】
前記検知手段は、
前記元画像に、前記ホスト装置において処理可能なビット精度のアフィン係数から成るアフィン行列を適用することで、第１の画像を作成する作成手段と、
前記元画像に、前記レンダリング装置において処理可能なビット精度のアフィン係数から成るアフィン行列を適用することで、第２の画像を作成する作成手段と、
前記第１の画像と前記第２の画像との各画素値が一致するか判定する判定手段と
を有し、
前記判定手段が、前記第１の画像と前記第２の画像との画素値が一致しないと判定した場合、前記検知手段は、前記不正描画が発生することを検知することを特徴とする請求項４又は５に記載のホスト装置。
【請求項７】
前記判定手段は、前記第１の画像と前記第２の画像との最外枠の画素について、各画素値が一致するか判定することを特徴とする請求項６に記載のホスト装置。
【請求項８】
前記元画像に含まれる色の総数を導出する導出手段を更に有し、
前記色の総数が所定の閾値より大きい場合、前記検知手段は、前記不正描画が発生するか検知しない一方、前記色の総数が所定の閾値以下の場合、前記検知手段は、前記不正描画が発生するか検知することを特徴とする請求項４乃至７の何れか１項に記載のホスト装置。
【請求項９】
前記レンダリング装置は、前記中間データに基づきラスタ画像を作成するハードウェアレンダラを有することを特徴とする請求項１乃至８の何れか１項に記載のホスト装置。
【請求項１０】
ＰＤＬデータに基づき中間データを作成するホスト装置と、該作成された中間データに基づきラスタ画像を作成するレンダリング装置とを有するシステムであって、
前記ホスト装置は、
前記ＰＤＬデータに含まれる画像オブジェクトデータと、前記ホスト装置において処理可能なビット精度と、前記レンダリング装置において処理可能なビット精度とに基づき、前記画像オブジェクトデータの不正描画が発生するか検知する検知手段と、
前記検知手段が、前記不正描画の発生を検知した場合、前記画像オブジェクトデータを変換する変換手段と、
前記変換された画像オブジェクトデータに基づき、前記中間データを作成する作成手段と
を有し、
前記レンダリング装置は、前記中間データに基づきラスタ画像を作成するハードウェアレンダラを有することを特徴とするシステム。
【請求項１１】
レンダリング装置でラスタ画像を作成するために必要な中間データを、ＰＤＬデータに基づき作成するホスト装置で実行される方法であって、
前記ＰＤＬデータに含まれる画像オブジェクトデータと、前記ホスト装置において処理可能なビット精度と、前記レンダリング装置において処理可能なビット精度とに基づき、前記画像オブジェクトデータの不正描画が発生するか検知するステップと、
前記不正描画の発生を検知した場合、前記画像オブジェクトデータを変換するステップと、
前記変換された画像オブジェクトデータに基づき、前記中間データを作成するステップと
を有することを特徴とする方法。
【請求項１２】
コンピュータに、請求項１１に記載の方法を実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レンダリング処理の技術に関する。
【背景技術】
【０００２】
レンダリング処理では、ＰＤＬ（ＰａｇｅＤｅｓｃｒｉｐｔｉｏｎＬａｎｇｕａｇｅ）で記述された印刷データ（ＰＤＬデータとする）に基づき、ビットマップ形式の画像データ（ラスタ画像）が作成される。この際、ＰＤＬデータ中にどのような描画オブジェクトが含まれるか等の解析処理が行われ、その解析結果に基づきレンダリング処理の対象となる中間データが作成される。描画オブジェクトには、画像オブジェクト、線オブジェクト、塗りオブジェクト、グラデーションオブジェクト等がある。例えば、描画オブジェクトが画像オブジェクトの場合、中間データには画像オブジェクトの情報として、元画像と、この元画像をどのように拡大ないし縮小（拡縮）、回転、移動するかを決定するためのアフィン行列との組み合わせに基づく内容が記述される。
【０００３】
中間データは、ハードウェアレンダラ、ソフトウェアレンダラ等のレンダラに渡される。レンダラは、受けとった中間データに基づきラスタ画像を作成する。この際、画像オブジェクトについては、元画像とアフィン係数との組み合わせに基づくレンダリング処理が実行される。
【０００４】
一般的に、ハードウェアレンダラは、中間データを受け取り、該受け取った中間データに基づきラスタ画像を作成する一連の処理を担う専用のＡＳＩＣであるために、ソフトウェアレンダラよりも高速な処理が可能となっている。プリンタにハードウェアレンダラを搭載することで、ユーザはより高速なプリント体験を享受することを期待できる。しかし、ハードウェアレンダラが処理可能なビット精度、及び、処理可能な描画オブジェクトの属性が多ければ多いほど、演算器の回路規模は増大し、コスト的に不利になる。従って、ハードウェアレンダラの設計者は予め、どの程度のビット精度があればよいかの見積もりを行った上で、ハードウェアレンダラで取り扱うビット精度に制限を持たせたり、また、ハードウェアレンダラで処理可能な描画コマンドに制限を持たせたりする。
【０００５】
ハードウェアレンダラを用いるレンダリング処理では、ハードウェアレンダラに入力する中間データを、ホスト装置側で予め、ハードウェアレンダラで処理可能な形式で作成する必要がある。例えば、ハードウェアレンダラが処理可能なアフィン係数のビット精度に制限があるのであれば、ホスト装置において、アフィン係数の下位ビットを切り落とす等の調整を行った上で、該調整した内容に基づいて中間データを作成しなければならない。
【０００６】
特許文献１には、描画コマンドに応じて、ハードウェアレンダラとソフトウェアレンダラとを使い分けること、具体的には、地紋パターンを描画する描画コマンドを受け取ったときに、ハードウェアレンダラを用いてレンダリング処理を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２４９１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１には、中間データの作成時に実行される、ハードウェアレンダラ等のレンダリング装置の性能を踏まえてのビット精度切り下げに起因して生じ得る不正描画を防ぐ方法は開示されていない。
【０００９】
そこで本発明は、上記の課題に鑑み、レンダリング装置の性能制限のためにアフィン係数のビット精度を切り下げないといけない環境において、ビット精度切り下げに起因して生じる不正描画を防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、レンダリング装置でラスタ画像を作成するために必要な中間データを、ＰＤＬデータに基づき作成するホスト装置であって、前記ＰＤＬデータに含まれる画像オブジェクトデータと、前記ホスト装置において処理可能なビット精度と、前記レンダリング装置において処理可能なビット精度とに基づき、前記画像オブジェクトデータの不正描画が発生するか検知する検知手段と、前記検知手段が、前記不正描画の発生を検知した場合、前記画像オブジェクトデータを変換する変換手段と、前記変換された画像オブジェクトデータに基づき、前記中間データを作成する作成手段とを有することを特徴とするホスト装置である。
【発明の効果】
【００１１】
本発明により、レンダリング装置の性能制限のためにアフィン係数のビット精度を切り下げないといけない環境において、ビット精度切り下げに起因して生じる不正描画を防ぐことが可能になる。
【図面の簡単な説明】
【００１２】
【図１】実施例１におけるレンダリングシステムの構成
【図２】実施例１におけるホスト装置のブロック図
【図３】実施例１におけるレンダリング装置のブロック図
【図４】実施例１におけるホスト装置の機能構成を示すブロック図
【図５】実施例１におけるレンダリング装置の機能構成を示すブロック図
【図６】アフィン行列の適用による画像縮小の説明図
【図７】アフィン係数のビット精度引き下げの説明図
【図８】異なるビット精度のアフィン係数を用いたプリレンダリング処理の説明図
【図９】プリレンダリング画像の画素値の比較の説明図
【図１０】画像オブジェクトデータの変換の説明図
【図１１】実施例１における中間データ作成処理のフローチャート
【図１２】実施例１における画素ずれ検知処理のフローチャート
【図１３】元画像に異なるアフィン行列を適用した場合のプリレンダリング処理の説明図
【図１４】実施例２における画素ずれ検知処理において、比較対象となる画素の説明図
【図１５】実施例２における画素ずれ検知処理のフローチャート
【図１６】実施例３におけるホスト装置の機能構成を示すブロック図
【図１７】実施例３における中間データ作成処理のフローチャート
【図１８】実施例３における元画像判定処理のフローチャート
【発明を実施するための形態】
【００１３】
［実施例１］
以下、図面を参照して、本発明の実施形態について説明する。尚、以下の実施形態は、本発明の具体例であるから、技術的に好ましい様々の限定が付けられている。しかし、本発明の思想に沿うものであれば、実施形態は以下の実施形態やその他の具体的方法に限定されるものではない。
【００１４】
＜システムの構成について＞
以下、本実施例におけるレンダリングシステムの構成について、図１を用いて説明する。図示するように、このシステムは、ネットワーク１０２を介して接続された、ホスト装置１０１とレンダリング装置１０３とを有する。ホスト装置１０１は、ＰＤＬデータに基づき中間データを作成し、該作成した中間データをネットワーク１０２経由で、レンダリング装置１０３に送信する。ネットワーク１０２は、中間データを送信可能であれば、その形態は問わない。ネットワーク１０２として例えば、無線ＬＡＮ、有線ＬＡＮ、又はＵＳＢケーブル等を用いることができる。レンダリング装置１０３は、ネットワーク１０２経由で送信された中間データに対するレンダリング処理を実行することにより、ラスタ画像を作成する。
【００１５】
＜ホスト装置の構成について＞
以下、本実施例におけるホスト装置１０１の構成について、図２を用いて説明する。ホスト装置１０１は、入出力（Ｉ／Ｏ）装置２０２と、ＣＰＵ２０３と、ＲＡＭ２０４と、Ｎｅｔｗｏｒｋインターフェース（以下、インターフェースをＩ／Ｆと略記する）２０５と、外部記憶装置２０６とを有する。これらの構成要素は、データ転送バス２０７によって接続され、互いにデータを送受信することができる。ホスト装置１０１として、前述の構成要素を有する任意の機器を用いることが可能であり、例えば、ＰＣ、サーバ、スマートフォン、タブレット等を用いることが可能である。
【００１６】
入出力（Ｉ／Ｏ）装置２０２は、データの入出力処理を実行する。データの入力元としては、ＣＤ、ＤＶＤ、ＵＳＢメモリ、ＳＤカード等のデータ保存可能な各種メディアが挙げられる。また、データの出力先としては、前述のメディアに加えてプリンタ等が挙げられる。本実施例では、入出力（Ｉ／Ｏ）装置２０２は、ホスト装置１０１へＰＤＬデータを入力する際や、ホスト装置１０１から中間データを出力する際に使用される。
【００１７】
ＣＰＵ２０３は、演算処理を実行する。具体的には、ＣＰＵ２０３は、ＰＤＬデータの解析処理や中間データの作成処理等の、各種演算処理を実行する。ＣＰＵ２０３は、後述するＰＤＬデータ解釈部４０２、中間データ作成部４０３、画素ずれ制御部４０４、比較画像作成部４０５、画素ずれ検知部４０６、画像オブジェクトデータ変換部４０７における処理を担う（図４参照）。
【００１８】
ＲＡＭ２０４は、データの一時的な保存に用いられる。本実施例では、ＲＡＭ２０４には、ＰＤＬデータや一時変数が保存され、また、以下で説明する本実施例における処理を実行するためのプログラムがＲＡＭ２０４にロードされ、ＣＰＵ２０３によって実行される。ＲＡＭ２０４は、後述の印刷データ格納部４０１や中間データ格納部４０９として機能し得る（図４参照）。
【００１９】
ＮｅｔｗｏｒｋＩ／Ｆ２０５は有線ＬＡＮや無線ＬＡＮ等のＬＡＮに接続されており、外部機器との間におけるデータの送受信に用いられる。例えば、ホスト装置１０１は、ＮｅｔｗｏｒｋＩ／Ｆ２０５を介して、サーバ等の外部機器から送信されたＰＤＬデータを受信する。また、ホスト装置１０１は、受信したＰＤＬデータを解析することで導出した中間データを、ＮｅｔｗｏｒｋＩ／Ｆ２０５を介してレンダリング装置１０３に送信する。
【００２０】
外部記憶装置２０６は、主に永続的なデータの保存に用いられ、以下で説明する本実施例における処理を実行するためのプログラムや中間データの格納先として用いられる。ＲＡＭ２０４に格納するには容量が大きすぎるデータが、外部記憶装置２０６に一時的に退避されることもある。例えば、外部記憶装置２０６が、後述のプリレンダリング画像格納部４０８におけるプリレンダリング画像の格納を担っても良い。また、外部記憶装置２０６は、印刷データ格納部４０１や中間データ格納部４０９として機能し得る（図４参照）。
【００２１】
＜レンダリング装置の構成について＞
以下、レンダリング装置１０３の構成について、図３を用いて説明する。レンダリング装置１０３は、ＣＰＵ３０２と、ＲＡＭ３０３と、ＮｅｔｗｏｒｋＩ／Ｆ３０４と、外部記憶装置３０５と、ＡＳＩＣ３０６とを有する。これらの構成要素は、データ転送バス３０７によって接続され、互いにデータを送受信することができる。レンダリング装置１０３として、前述の構成要素を有する任意の機器を用いることが可能であり、例えば、ＰＣ、サーバ、スマートフォン、タブレット等を用いることが可能である。
【００２２】
ＣＰＵ３０２は、演算処理を実行する。具体的には、ＣＰＵ３０２は、ＲＡＭ３０３にロードされたプログラムを実行することで、レンダリング装置１０３に入力された中間データに対する、ＡＳＩＣ３０６におけるレンダリング処理を実行する。
【００２３】
ＲＡＭ３０３は、データの一時的な保存に用いられる。本実施例では、ＲＡＭ３０３には、中間データや一時変数が保存され、また、以下で説明する本実施例における処理を実行するためのプログラムがＲＡＭ３０３にロードされ実行される。ＲＡＭ３０３は、後述の中間データ格納部５０１として機能し得る（図５参照）。
【００２４】
ＮｅｔｗｏｒｋＩ／Ｆ３０４は有線ＬＡＮや無線ＬＡＮ等のＬＡＮに接続されており、外部機器との間におけるデータの送受信に用いられる。例えば、レンダリング装置１０３は、ＮｅｔｗｏｒｋＩ／Ｆ３０４を介して、ホスト装置１０１から送信された中間データを受信し、また、該受信した中間データに基づき作成したラスタ画像を、ＮｅｔｗｏｒｋＩ／Ｆ３０４を介して、外部装置に送信する。
【００２５】
外部記憶装置３０５は、主に永続的なデータの保存に用いられ、本実施例では、以下で説明する本実施例における処理を実行するためのプログラム、中間データ、ラスタ画像の格納先として用いられる。ＲＡＭ３０３に格納するには容量が大きすぎるデータが、外部記憶装置３０５に一時的に退避されることもある。外部記憶装置３０５は、後述の中間データ格納部５０１やラスタ画像格納部５０３として機能し得る（図５参照）。
【００２６】
ＡＳＩＣ３０６は、中間データに対してレンダリング処理を実行することでラスタ画像を作成する。ＡＳＩＣ３０６は、後述のレンダリング処理部５０２における処理を担う（図５参照）。
【００２７】
＜ホスト装置の機能構成について＞
以下、本実施例におけるホスト装置１０１の機能構成について、図４を用いて説明する。図４は、本実施例におけるホスト装置１０１の機能構成を示すブロック図である。
【００２８】
上述したように、ＣＰＵ２０３はＲＡＭ２０４にロードされたプログラムを実行するが、ここではプログラム４１０を実行するケースを示す。これにより、ＰＤＬデータ解釈部４０２と、中間データ作成部４０３と、画素ずれ制御部４０４と、比較画像作成部４０５と、画素ずれ検知部４０６と、画像オブジェクトデータ変換部４０７と、プリレンダリング画像格納部４０８とが実現される。また、ホスト装置１０１は、印刷データ格納部４０１と、中間データ格納部４０９とを有する。
【００２９】
印刷データ格納部４０１に格納される印刷データは、ＰＤＬデータと、使用するレンダリングシステムの情報（レンダリングシステム情報とする）とを含む。ＰＤＬデータには、画像オブジェクト、線オブジェクト、塗りオブジェクト等の描画オブジェクトに関する情報が記述されている。また、レンダリングシステム情報には、レンダリングシステムの情報、具体的には例えば、レンダリング装置１０３に搭載されるＡＳＩＣにおいて取り扱い可能なアフィン係数のビット精度等が含まれる。
【００３０】
ＰＤＬデータ解釈部４０２は、ＰＤＬデータに対する解析処理を実行する。この解析処理により、ドキュメントのページ数、レンダリング対象となるページの大きさ等の情報、及び、ページ中に含まれるオブジェクトの種類を特定するための情報（即ち属性情報）が、ＰＤＬデータから読み取られる。
【００３１】
中間データ作成部４０３は、ＰＤＬデータに基づき中間データを作成する。また、中間データ作成部４０３は、画素ずれ制御部４０４への画素ずれ検知の依頼等の、中間データ作成に関わる処理も実行する。
【００３２】
画素ずれ制御部４０４は、必要に応じて、比較画像作成部４０５及び画素ずれ検知部４０６に画素ずれ検知処理を実行させる。この際、画素ずれ制御部４０４は、元画像とアフィン行列とから成る画像オブジェクトデータ、及び、レンダリング装置１０３が取り扱い可能なアフィン係数のビット精度の情報を、比較画像作成部４０５に渡す。また、画素ずれ制御部４０４は、画素ずれ検知処理の結果に基づき、必要に応じて、画像オブジェクトデータ変換部４０７に画像オブジェクトデータの変換処理を実行させる。
【００３３】
比較画像作成部４０５は、元画像にアフィン行列を適用することで、画素ずれ検知処理で用いるプリレンダリング画像を作成する。比較画像作成部４０５によって作成されたプリレンダリング画像は、プリレンダリング画像格納部４０８に格納される。
【００３４】
画素ずれ検知部４０６は、比較画像作成部４０５によって作成された２つのプリレンダリング画像を比較し画素ずれが生じているか（つまり、画像オブジェクトデータを補正しないと不正描画が発生してしまうか）判定し、該判定結果を画素ずれ制御部４０４に返す。画素ずれ制御部４０４は、この判定結果の如何によって（具体的には、画素ずれが生じる場合に）、画像オブジェクトデータを変換するよう画像オブジェクトデータ変換部４０７に指示する。画像オブジェクトデータ変換部４０７は、この指示に応じて、画像オブジェクトデータを変換する。
【００３５】
＜アフィン行列の適用について＞
アフィン行列は、元画像をどのように拡大ないし縮小（拡縮）、回転、移動するかを決定するための行列である。図６は、アフィン行列を適用することで、元画像を２分の１の大きさの画像に縮小する様子を示している。縮小処理においては、縮小後画像６０３の座標（ｘ‘，ｙ’）における画素の値を決定する際に、縮小前画像（元画像）６０１のどの座標（ｘ，ｙ）における画素の値を参照するか、を決定する必要がある。以下、参照する画素を「参照画素」と呼ぶ。
【００３６】
参照画素の座標（ｘ，ｙ）は、逆アフィン変換用行列６０２の係数ａ，ｂ，ｃ，ｄを用いた以下の式（１）〜式（３）を用いて求める。
【００３７】
【数１】
2019074916.tif 000003
【００３８】
【数２】
2019074916.tif 000004
【００３９】
【数３】
2019074916.tif 000005
【００４０】
上記の式（１）〜式（３）を用いて求めた、縮小前画像６０１の座標（ｘ，ｙ）における画素の値が、縮小後画像６０３の座標（ｘ‘，ｙ’）における画素の値となる。しかし、参照画素の座標値ｘ、ｙは必ずしも整数になるとは限らない。ｘ、ｙの少なくとも何れか一方が小数であった場合には、この小数の値に代えて該値に最近傍の整数値が用いられる。
【００４１】
本明細書では、レンダリング装置１０３におけるレンダリング処理に先立って、ホスト装置１０１側で元画像にアフィン行列を適用してプリレンダリング画像を作成する処理を、「プリレンダリング処理」と呼ぶ。
【００４２】
ホスト装置１０１が扱えるアフィン係数のビット精度をＮビット、レンダリング装置１０３が扱えるアフィン係数のビット精度をＭビットとすると、Ｎ＞Ｍを満たす場合に、画素ずれ制御部４０４は、画素ずれ検知部４０６に画素ずれ検知を行わせる。比較画像作成部４０５は、アフィン行列を変えてプリレンダリング処理を２回実行する（各プリレンダリング処理において、アフィン係数のビット精度が異なる）ことで、比較用の２つの画像を作成する。即ち、比較画像作成部４０５は、Ｎビット精度のアフィン係数を用いたプリレンダリング処理に依る第１プリレンダリング画像、及び、Ｍビット精度のアフィン係数を用いたプリレンダリング処理に依る第２プリレンダリング画像を作成する。
【００４３】
次に、画素ずれ検知部４０６は、第１プリレンダリング画像と第２プリレンダリング画像との各画素について、画素値を比較し該画素値が一致するかチェックする。これにより、第１プリレンダリング画像と第２プリレンダリング画像とが同一か、言い換えると、第１プリレンダリング画像と第２プリレンダリング画像との間で画素ずれが生じていないか判定する。
【００４４】
＜アフィン係数のビット精度の引き下げについて＞
レンダリング装置１０３に搭載されるＡＳＩＣ３０６で処理可能なアフィン係数のビット精度には制限があり、Ｍビット精度以下のアフィン係数しか扱えない。従って、ホスト装置１０１のビット精度（Ｎビット）と、レンダリング装置のビット精度（Ｍビット）との間で、Ｎ＞Ｍの条件が成り立つ場合、アフィン係数の下位ビットを切り落として、ビット精度をＮビット精度からＭビット精度へと下げる必要がある。
【００４５】
以下、アフィン係数のビット精度の引き下げについて、図７を用いて説明する。図７は、アフィン係数のビット精度の引き下げを表した図である。列７０１は、アフィン係数ａ，ｂ，ｃ，ｄを表している。また、列７０２は、ホスト装置１０１で扱えるＮビット精度のアフィン係数の各値を、列７０３は、レンダリング装置１０３（ＡＳＩＣ３０６）で扱えるＭビット精度のアフィン係数の各値を表している。行７０４に示すアフィン係数ａについて見ると、ホスト装置１０１では３．８９０６８９８８９９８として取り扱い可能な値が、レンダリング装置１０３ではＭビット精度（Ｎ＞Ｍ）のものしか扱えないために、３．８９０６８９８８に切り下げられている。行７０７に示すアフィン係数ｄについても同様であって、ホスト装置１０１では１．２３４３２３７２８５０１として取り扱い可能な値が、１．２３４３２３７２に切り下げられている。一方で、行７０５に示すアフィン係数ｂ及び行７０６に示すアフィン係数ｃについては、元々の値が０．０であったために、切り下げ後の値も同様に０．０となっている。
【００４６】
＜プリレンダリング処理によって作成した２つのプリレンダリング画像の比較について＞
図８は、Ｎビット精度のアフィン係数を用いたプリレンダリング処理の結果と、Ｍビット精度のアフィン係数を用いたプリレンダリング処理の結果とを表している。図示するように、白地に黒枠の元画像８０１に基づき、Ｎビット精度のアフィン係数を用いてプリレンダリング処理を実行した結果、第１プリレンダリング画像８０２が作成される。また、元画像８０１に基づき、Ｍビット精度のアフィン係数を用いてプリレンダリング処理を実行した結果、第２プリレンダリング画像８０３が作成される。作成された第１プリレンダリング画像８０２及び第２プリレンダリング画像８０３は、プリレンダリング画像格納部４０８に格納される。画素ずれ検知部４０６は、これら２つのプリレンダリング画像の各画素値を比較することで、２つのプリレンダリング画像間で画素ずれが生じていないか、言い換えると、該２つのプリレンダリング画像は同一か判定する。
【００４７】
図９は、プリレンダリング画像における画素値の比較の様子を表した図である。ここでは、プリレンダリング画像Ａ，Ｂ，Ｃ，Ｄはそれぞれ、高さ１０画素、幅６画素の６０個の画素から成る矩形画像であり、画素ずれ検知部４０６によって各画素について画素値が比較されるケースを示す。例えば、画素値が（Ｒ（赤），Ｇ（緑），Ｂ（青））の３要素で表現される場合、各画素について、Ｒ，Ｇ，Ｂの３要素値が全て一致するかチェックされる。そして、３要素値が全て一致する場合に、画素値が一致すると判定される。尚、画素値の表現形式は必ずしもＲＧＢ形式に限定されない。
【００４８】
このように総計６０個の各画素について画素値が一致するかチェックされ、全画素において画素値が一致する場合は、画素ずれが生じず、少なくとも１個以上の画素において画素値が一致しない場合は、画素ずれが生じると判定される。この判定結果は、画素ずれ制御部４０４に返される。図９（ａ）は、画像中の全６０画素について画素値が一致することから、プリレンダリング画像Ａとプリレンダリング画像Ｂとの間で画素ずれは生じないと判定されるケースを示している。一方、図９（ｂ）は、画像中の一部の画素（例えば白破線で示す画素９０１）の画素値が異なるために、プリレンダリング画像Ｃとプリレンダリング画像Ｄとの間で画素ずれが生じると判定されるケースを示している。
＜画像オブジェクトデータの変換について＞
画像オブジェクトデータ変換部４０７では、画素ずれ検知部４０６によって画素ずれが生じると判定された場合に、画像オブジェクトデータの変換が行われる。画像オブジェクトデータは、元画像と、複数のアフィン係数から成るアフィン行列とから構成される。
【００４９】
上述したように、レンダリング装置１０３が扱えるＭビット精度のアフィン係数を用いるレンダリング処理では画素ずれが生じる虞がある。従って本実施例では、画素ずれが生じる場合に、予めホスト装置１０１側で、画素ずれが生じないよう画像オブジェクトデータを補正する。具体的には、Ｎビット精度のアフィン係数を用いたプリレンダリング処理の結果画像を元画像として扱うとともに、アフィン行列を、その元画像を等倍出力するものに変更する。
【００５０】
図１０は、画像オブジェクトデータの変換の説明図であり、変換前後の画像オブジェクトデータを示している。図１０（ａ）は、変換前の画像オブジェクトデータを示し、元画像１００１、及び、アフィン係数ａ、ｂ、ｃ、ｄから成るアフィン行列１００２から構成される。レンダラは、元画像にアフィン行列を適用することで、レンダリング処理の結果画像であるラスタ画像を作成する。
【００５１】
一方、図１０（ｂ）は、変換後の画像オブジェクトデータを示す。画像オブジェクトデータの変換により、変換前の画像オブジェクトデータを構成していた元画像１００１は、元画像１００１をＮビット精度のアフィン係数から成るアフィン行列を用いてプリレンダリングした結果の画像１００３に置き換えられる。また、変換前の画像オブジェクトデータを構成していたアフィン行列１００２も、アフィン係数１、０、０、１から成るアフィン行列１００４に置き換えられる。かかる画像オブジェクトデータの変換により、レンダリング装置１０３のハードウェアレンダラでは、プリレンダリング処理の結果画像を等倍出力するようなレンダリング処理が実行されることとなる。
【００５２】
画像オブジェクトデータ変換部４０７によって導出される変換後の画像オブジェクトデータは、画素ずれ制御部４０４を通じて中間データ作成部４０３に渡される。そして、この変換後の画像オブジェクトデータに対応する内容が、中間データに記述される。
【００５３】
プリレンダリング画像格納部４０８には、画素ずれ検知のために、比較画像作成部４０５によるプリレンダリング処理の結果作成されたプリレンダリング画像が格納される。画素ずれ検知部４０６は、プリレンダリング画像格納部４０８に格納されたプリレンダリング画像を用いて、画素ずれが生じるか判定する画素ずれ検知処理を実行する。
【００５４】
＜レンダリング装置の機能構成について＞
以下、レンダリング装置１０３の機能構成について、図５を用いて説明する。
【００５５】
上述したように、ＣＰＵ３０２はＲＡＭ３０３にロードされたプログラムを実行するが、ここではプログラム５０４を実行するケースを示す。これにより、レンダリング処理部５０２が実現される。また、レンダリング装置１０３は、中間データ格納部５０１と、ラスタ画像格納部５０３とを有する。中間データ格納部５０１には、ホスト装置１０１で作成され、レンダリング装置１０３に送信された中間データが格納されている。この中間データに記述されている画像オブジェクトに関する情報は、ホスト装置１０１における上述の処理により、レンダリング処理部５０２での処理に適切な形式となっている。尚、この形式は、レンダリング処理部によって異なる。レンダリング処理部５０２は、中間データ格納部５０１に格納されている中間データに対してレンダリング処理を実行することで、ラスタ画像を作成する。レンダリング処理部５０２によって作成されたラスタ画像は、ラスタ画像格納部５０３に格納される。尚、本実施例では、ハードウェアレンダラであるＡＳＩＣ３０６がレンダリング処理部５０２における処理を担うとしたが、ソフトウェアレンダラが担っても良い。
【００５６】
＜画素ずれ検知処理を伴う中間データ作成処理について＞
以下、本実施例における画素ずれ検知処理を伴う中間データ作成処理について、図１１及び図１２を用いて説明する。図１１は、本実施例における中間データ作成処理のフローチャートである。
【００５７】
中間データ作成処理ではまず、ステップＳ１１０１において、ＰＤＬデータ解釈部４０２は、印刷データに含まれるＰＤＬデータに対する解析処理を実行する。具体的には、ＰＤＬデータ解釈部４０２は、ＰＤＬデータに含まれる未処理の描画オブジェクトの１つに着目し、該着目した描画オブジェクト（着目描画オブジェクトとする）を解析し、その解析結果を中間データ作成部４０３に出力する。
【００５８】
ステップＳ１１０２において、中間データ作成部４０３は、ＰＤＬデータ解釈部４０２から渡された解析結果、具体的には着目描画オブジェクトの属性情報に基づき、着目描画オブジェクトが画像オブジェクトか判定する。ステップＳ１１０２の判定結果が真、つまり、属性情報によって、着目描画オブジェクトが画像オブジェクトであることが示される場合、ステップＳ１１０３に進む。一方、この判定結果が偽、つまり、属性情報によって、着目描画オブジェクトが画像オブジェクト以外のオブジェクト（例えば、塗りオブジェクト又は線オブジェクト）であることが示される場合、ステップＳ１１０８に進む。
【００５９】
以下、着目描画オブジェクトが画像オブジェクトと判定された場合（ステップＳ１１０２でＹＥＳの場合）を説明する。この場合、ステップＳ１１０３において、画素ずれ制御部４０４は、中間データ作成部４０３から渡される、着目描画オブジェクトの画像オブジェクトデータと、レンダリング装置１０３で取り扱い可能（処理可能）なアフィン係数のビット精度の情報とを取得する。
【００６０】
ステップＳ１１０４において、画素ずれ制御部４０４は、ホスト装置１０１で処理可能なビット精度Ｎ及びレンダリング装置１０３で処理可能なビット精度Ｍについて、Ｎ＞Ｍの大小関係を満たすか判定する。ステップＳ１１０４の判定結果が真の場合、ステップＳ１１０５に進む一方、該判定結果が偽の場合、ステップＳ１１０７に進む。
【００６１】
ステップＳ１１０５において、比較画像作成部４０５及び画素ずれ検知部４０６は、比較画像作成部４０５及び画素ずれ検知部４０６に画素ずれ検知処理を実行させることで、不正描画、即ち画素ずれが発生するか判定する。ステップＳ１１０５の判定結果が真の場合、ステップＳ１１０６に進む一方、該判定結果が偽の場合、ステップＳ１１０７に進む。尚、画素ずれ検知処理の詳細は、図１２を用いて後述する。
【００６２】
ステップＳ１１０６において、画素ずれ制御部４０４は、画像オブジェクトデータ変換部４０７に、図１０に例示したような、元画像とアフィン行列とから成る画像オブジェクトデータを変換する処理（画像オブジェクトデータ変換処理とする）を実行させる。
【００６３】
ステップＳ１１０７において、中間データ作成部４０３は、画像オブジェクトデータに基づき、中間データを作成する。このとき、ステップＳ１１０６における画像オブジェクトデータ変換処理が実行された場合、変換後の画像オブジェクトデータに応じた内容が中間データに記述される。一方、画像オブジェクトデータ変換処理が実行されなかった場合（ステップＳ１１０４でＮＯやステップＳ１１０５でＮＯの場合）、変換前の画像オブジェクトデータに応じた内容が中間データに記述される。
【００６４】
続いて、着目描画オブジェクトが画像オブジェクトではないと判定された場合（ステップＳ１１０２でＮＯの場合）を説明する。この場合、ステップＳ１１０８において、中間データ作成部４０３は、着目描画オブジェクトの情報を中間データに記述することで、中間データを作成する。
【００６５】
ステップＳ１１０７又はステップＳ１１０８で着目描画オブジェクトの情報が中間データに記述された後、ステップＳ１１０９において、ＰＤＬデータ解釈部４０２は、ＰＤＬデータに未処理の描画オブジェクトがあるか判定する。ステップＳ１１０９の判定結果が真の場合、ステップＳ１１０１に戻る一方、該判定結果が偽の場合、一連の処理は終了する。以上が、本実施例における中間データ作成処理の内容である。
【００６６】
続けて、上述の画素ずれ検知処理（図１１のステップＳ１１０５）について、図１２を用いて詳しく説明する。
【００６７】
ステップＳ１２０１において、比較画像作成部４０５は、画素ずれ制御部４０４から渡される画像オブジェクトデータを用いたプリレンダリング処理を実行する。具体的には、ホスト装置１０１で処理可能なＮビット精度のアフィン係数から成るアフィン行列を元画像に適用することで、第１プリレンダリング画像を作成する。
【００６８】
ステップＳ１２０２において、比較画像作成部４０５は、画素ずれ制御部４０４から渡されるレンダリング装置１０３で取り扱い可能なアフィン係数のビット精度の情報に従って、Ｎビット精度のアフィン係数の下位ビットを切り落とす。これにより、Ｍビット精度のアフィン係数から成るアフィン行列を導出する。
【００６９】
ステップＳ１２０３において、比較画像作成部４０５は、ステップＳ１２０２で導出したアフィン行列を元画像に適用するプリレンダリング処理を実行することで、第２プリレンダリング画像を作成する。尚、比較画像作成部４０５によって作成される、第１プリレンダリング画像及び第２プリレンダリング画像は、プリレンダリング画像格納部４０８に格納される。
【００７０】
ステップＳ１２０４において、画素ずれ検知部４０６は、第１プリレンダリング画像を構成する画素のうちの、まだ比較していない１画素に着目する（着目画素の設定）。同様に、画素ずれ検知部４０６は、第２プリレンダリング画像を構成する画素のうちの、まだ比較していない１画素に着目する。本ステップで設定される、第１プリレンダリング画像の着目画素と第２プリレンダリング画像の着目画素との座標は、同一である。
【００７１】
ステップＳ１２０５において、画素ずれ検知部４０６は、第１プリレンダリング画像の着目画素と第２プリレンダリング画像の着目画素とを比較し、これらの画素値が一致するか判定する。ステップＳ１２０５の判定結果が真の場合、ステップＳ１２０６に進む一方、該判定結果が偽の場合、ステップＳ１２０８に進む。
【００７２】
ステップＳ１２０６において、画素ずれ検知部４０６は、まだ比較していない画素があるか判定する。ステップＳ１２０６の判定結果が真の場合、ステップＳ１２０４に戻る一方、該判定結果が偽の場合、ステップＳ１２０７に進む。
【００７３】
ステップＳ１２０７において、画素ずれ検知部４０６は、判定結果ＹＥＳを画素ずれ制御部４０４に返す。
【００７４】
第１プリレンダリング画像と第２プリレンダリング画像との着目画素について、これらの画素値が一致しない場合（ステップＳ１２０５でＮＯの場合）、ステップＳ１２０８において、画素ずれ検知部４０６は、判定結果ＮＯを画素ずれ制御部４０４に返す。以上が、本実施例における画素ずれ検知処理の内容である。
【００７５】
［実施例２］
実施例１では、画素ずれが生じないことを検知するためには、プリレンダリング画像の全ての画素に対して、画素値の比較を行う必要があった。従って、プリレンダリング画像を構成する画素数が多い場合、処理時間が多くかかってしまう。そこで本実施例では、比較対象とする画素の数を減らすことで、処理の高速化を図る。尚、以下では既述の実施例との差分について主に説明し、既述の実施例と同様の内容については説明を適宜省略する。
【００７６】
図１３は、白地に２本の黒線が引かれた元画像１３０１に対して、異なるアフィン行列を用いてプリレンダリング処理を行ったときの様子を示している。プリレンダリング画像１３０２は、アフィン係数ｂ、ｃがゼロのアフィン行列を用いてプリレンダリング処理を行った場合の結果画像を示している。また、プリレンダリング画像１３０３は、アフィン係数ａ、ｄがゼロのアフィン行列を用いてプリレンダリング処理を行った場合の結果画像を示している。ここでプリレンダリング画像１３０２は、元画像を０度又は１８０度回転するプリレンダリング処理の結果得られる画像であり、プリレンダリング画像１３０３は、元画像を９０度又は２７０度回転するプリレンダリング処理の結果得られる画像である。本実施例の特徴は、プリレンダリング処理による回転の角度が０度、９０度、１８０度、又は２７０度の場合に、プリレンダリング画像の最外枠の画素のみを比較対象にすることである。このようにする理由は、プリレンダリング処理による回転角度が０度、９０度、１８０度、又は２７０度のケースで画素ずれが生じる場合、プリレンダリング画像の最外枠の画素の何れかで必ず画素ずれが現れるので、最外枠の画素のみ比較すれば十分だからである。
【００７７】
図１４は、本実施例における画素ずれ検知処理において、比較対象となる画素について説明する図である。図中の符号１４０１は、プリレンダリング画像を示す。ここで挙げるプリレンダリング画像１４０１は、高さ１０画素、幅６画素の６０個の画素から成る矩形画像である。
【００７８】
符号１４０２は、実施例１で示したような全ての画素が比較対象となるケースの、プリレンダリング画像１４０１における比較対象の画素を示しており、比較対象の画素をグレイで表している。これに対し、符号１４０３は、本実施例の場合、つまり最外枠の画素のみが比較対象となるケースの、プリレンダリング画像１４０１における比較対象の画素を示しており、比較対象の画素をグレイで表している。符号１４０２、１４０３が示すように、これらのケースでは、全画素が比較対象のときに比較する画素の数は６０、最外枠の画素のみが比較対象のときに比較する画素の数は２８であるから、比較対象の画素数は５０％以上低減されることになる。
【００７９】
図１５は、本実施例における画素ずれ検知処理のフローチャートである。本実施例における画素ずれ検知処理は、基本的には実施例１と同様である。詳しく説明すると、ステップＳ１５０１〜ステップＳ１５０３、ステップＳ１５０５〜ステップＳ１５０８は、実施例１のステップＳ１２０１〜ステップＳ１２０３、ステップＳ１２０５〜ステップＳ１２０８と同じである（図１２参照）。
【００８０】
しかし、ステップＳ１５０４が実施例１のステップＳ１２０４と異なる。ステップＳ１５０４において、画素ずれ検知部４０６はまだ比較していない１画素に着目するが、本実施例ではこの着目の際に、プリレンダリング画像の最外枠に沿って順番に着目するようにする。実施例１では上述したように、プリレンダリング画像の全ての画素について順番に着目するため、この点で本実施例は実施例１と異なる。
【００８１】
本実施例により、画素ずれ検知処理を短時間で終了させることが可能になる。
【００８２】
［実施例３］
上述の実施例では、Ｎ＞Ｍの関係を満たすときは必ず、画像オブジェクトに対する画素ずれ検知処理が実行される。しかし、画像オブジェクトの中には、画素ずれが発生したとしても、ユーザがそのことに気付きにくいものが存在する。例えば、元画像が白黒２色の画素のみから構成される場合、黒画素がずれるとユーザは画素ずれに容易に気付き易い一方、元画像が様々な色の画素から構成される場合、１色の画素がずれる程度ではユーザが画素ずれに気付くことは非常に難しい。従って本実施例では、元画像中の色数が多い場合に、画素ずれ検知処理をスキップする。尚、以下では既述の実施例との差分について主に説明し、既述の実施例と同様の内容については説明を適宜省略する。
【００８３】
図１６は、本実施例におけるホスト装置１０１の機能構成を示すブロック図である。本実施例におけるホスト装置１０１は、実施例１で示した構成（図４参照）に加えて、元画像判定部１６０９を更に有する。元画像判定部１６０９は、元画像中の色数が予め決められた閾値Ｌを越えるか判定する。そして、この判定結果に応じて、画素ずれ制御部１６０４は、画素ずれ検知処理を実行するか否かを制御する。
【００８４】
図１７は、本実施例における画素ずれ検知処理のフローチャートである。本実施例における画素ずれ検出処理は、基本的には実施例１と同様であるが（図１１参照）、元画像に含まれる色の総数が所定の閾値より多いか判定する元画像判定処理（ステップＳ１７０４）を更に有する点で、実施例１と異なる。尚、元画像判定処理の詳細は、図１８を用いて後述する。図１７に示すように、元画像に含まれる色の総数が所定の閾値より多い場合は、画素ずれ検知処理を実行しない（ステップＳ１７０４でＹＥＳ→ステップＳ１７０８）。
【００８５】
＜元画像判定処理について＞
以下、元画像に含まれる色の総数が所定の閾値より多いか判定する元画像判定処理（図１７のステップＳ１７０４）について、図１８を用いて説明する。
【００８６】
ステップＳ１８０１において、元画像判定部１６０９は、元画像を構成する画素のうち未処理の１画素に着目する（着目画素の設定）。
【００８７】
ステップＳ１８０２において、元画像判定部１６０９は、着目画素の色を導出し、該導出した色の情報（例えば、ＲＧＢ形式の場合、ＲＧＢ各値の組み合わせ）を保存する。
【００８８】
ステップＳ１８０３において、元画像判定部１６０９は、元画像の全画素の色の導出が終了したか判定する。ステップＳ１８０３の判定結果が真の場合、ステップＳ１８０４に進む一方、該判定結果が偽の場合、ステップＳ１８０１に戻る。
【００８９】
ステップＳ１８０４において、元画像判定部１６０９は、ステップＳ１８０１〜ステップ１８０３で導出した色の情報（例えば、ＲＧＢ形式の場合、各画素のＲＧＢ値）を用いて、元画像に含まれる色の総数を導出する。
【００９０】
ステップＳ１８０５において、元画像判定部１６０９は、ステップＳ１８０４で導出した元画像に含まれる色の総数が所定の閾値（Ｌとする）を越えるか判定する。ステップＳ１８０５の判定結果が真の場合、ステップＳ１８０６に進む一方、該判定結果が偽の場合、ステップＳ１８０７に進む。
【００９１】
元画像に含まれる色の総数が所定の閾値より大きい場合、ステップＳ１８０６において、元画像判定部１６０９は、判定結果ＹＥＳを画素ずれ制御部４０４に返す。
【００９２】
元画像に含まれる色の総数が所定の閾値以下の場合、ステップＳ１８０７において、元画像判定部１６０９は、判定結果ＮＯを画素ずれ制御部４０４に返す。以上が、本実施例における元画像判定処理の内容である。
【００９３】
本実施例により、元画像の色数が多い画像オブジェクトに対して画素ずれ検知処理を実行しないよう制御することで、画素ずれ検知処理を高速に終了させることが可能になる。尚、本実施例は、実施例２と組み合わせても良い。
【００９４】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９５】
１０１      ホスト装置
１０３      レンダリング装置
４０３      中間データ作成部
４０６      画素ずれ検知部
４０７      画像オブジェクトデータ変換部
【図１】
2019074916.tif 000006
【図２】
2019074916.tif 000007
【図３】
2019074916.tif 000008
【図４】
2019074916.tif 000009
【図５】
2019074916.tif 000010
【図６】
2019074916.tif 000011
【図７】
2019074916.tif 000012
【図８】
2019074916.tif 000013
【図９】
2019074916.tif 000014
【図１０】
2019074916.tif 000015
【図１１】
2019074916.tif 000016
【図１２】
2019074916.tif 000017
【図１３】
2019074916.tif 000018
【図１４】
2019074916.tif 000019
【図１５】
2019074916.tif 000020
【図１６】
2019074916.tif 000021
【図１７】
2019074916.tif 000022
【図１８】
2019074916.tif 000023