(57)【特許請求の範囲】
【請求項１】
入力データを所定の単位に分割する分割手段と、
前記分割手段により分割された入力データから、前記所定の単位で中間データを生成する生成手段と、
前記生成手段にて生成された中間データの描画内容をイメージデータに変換することで中間データを更新する更新手段と、
前記生成手段が中間データを生成する毎に、生成した中間データをラスタ画像処理部に転送する転送手段と、
前記転送手段が前記入力データから生成された最初の中間データを転送する前に、前記入力データの描画命令、または、前記最初の中間データに基づいて、前記入力データに対応する全ての中間データに対し、前記更新手段による更新を行うか否かを判定する判定手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記更新手段は、前記変換したイメージデータを圧縮することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記更新手段は、前記イメージデータの圧縮として、非可逆圧縮の画像圧縮を行うことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記判定手段は、前記描画命令に含まれるイメージオブジェクトの個数に基づいて判定を行うことを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記判定手段は、前記描画命令に含まれるイメージオブジェクトのデータサイズに基づいて判定を行うことを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記判定手段は、前記描画命令に含まれるイメージオブジェクトのデータサイズが、中間データのサイズ閾値より大きいか否かに基づいて判定を行うことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記判定手段は、前記最初の中間データのデータサイズに基づいて判定を行うことを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項８】
前記判定手段は、前記最初の中間データのデータサイズが、前記中間データのサイズ閾値より大きいか否かに基づいて判定を行うことを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記判定手段は、前記最初の中間データからイメージデータを除いたデータサイズに基づいて判定を行うことを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項１０】
前記判定手段は、前記最初の描画領域の中間データからイメージデータを除いたデータサイズが、中間データのサイズ閾値より大きいか否かに基づいて判定を行うことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記入力データの描画命令は、ページ記述言語によって表現されることを特徴とする請求項１乃至１０のいずれか一項に記載の画像処理装置。
【請求項１２】
前記入力データの描画命令は、ページ単位のデータであり、
前記所定の単位は、バンド単位であることを特徴とする請求項１乃至１１のいずれか一項に記載の画像処理装置。
【請求項１３】
前記入力データの描画命令は、ドキュメント単位のデータであり、
前記所定の単位は、ページ単位であることを特徴とする請求項１乃至１１のいずれか一項に記載の画像処理装置。
【請求項１４】
前記生成手段により生成した処理対象の中間データに対し前記更新手段による更新を行うか否かを判定する第二の判定手段を更に有し、
前記第二の判定手段にて前記更新手段による更新を行うと判定された場合、前記更新手段は、前記処理対象の中間データ以降の全ての中間データに対し前記更新手段による更新を行うことを特徴とする請求項１乃至１３のいずれか一項に記載の画像処理装置。
【請求項１５】
前記第二の判定手段は、前記処理対象の中間データのデータサイズに基づいて判定を行うことを特徴とする請求項１４に記載の画像処理装置。
【請求項１６】
前記第二の判定手段は、前記処理対象の中間データのデータサイズが、中間データのサイズ閾値より大きいか否かに基づいて判定を行うことを特徴とする請求項１５に記載の画像処理装置。
【請求項１７】
前記中間データを用いてラスタ画像をレンダリングするレンダリング手段を更に有することを特徴とする請求項１乃至１６のいずれか一項に画像処理装置。
【請求項１８】
入力データを所定の単位に分割する分割工程と、
前記分割工程にて分割された入力データから、前記所定の単位で中間データを生成する生成工程と、
前記生成工程にて生成された中間データの描画内容をイメージデータに変換することで中間データを更新する更新工程と、
前記生成工程にて中間データを生成する毎に、生成した中間データをラスタ画像処理部に転送する転送工程と、
前記転送工程が前記入力データから生成された最初の中間データを転送する前に、前記入力データの描画命令、または、前記最初の中間データに基づいて、前記入力データに対応する全ての中間データに対し、前記更新工程による更新を行うか否かを判定する判定工程と
を有する画像処理方法。
【請求項１９】
コンピューターを、
入力データを所定の単位に分割する分割手段、
前記分割手段により分割された入力データから、前記所定の単位で中間データを生成する生成手段、
前記生成手段にて生成された中間データの描画内容をイメージデータに変換することで中間データを更新する更新手段、
前記生成手段が中間データを生成する毎に、生成した中間データをラスタ画像処理部に転送する転送手段、
前記転送手段が前記入力データから生成された最初の中間データを転送する前に、前記入力データの描画命令、または、前記最初の中間データに基づいて、前記入力データに対応する全ての中間データに対し、前記更新手段による更新を行うか否かを判定する判定手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラム
【背景技術】
【０００２】
従来、画像処理方法として、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を解釈して、中間データとしてＤＬ（ディスプレイリスト）を生成し、このＤＬからラスタ画像を生成する手法が用いられている。また、ＤＬが一定のサイズを超えた場合等に、その時点のＤＬをレンダリングしてイメージデータに変換及び画像圧縮して、残りのＤＬと結合する、フォールバックという手法も知られている。フォールバックにおける画像圧縮には一般的に非可逆圧縮が用いられており、このフォールバックによってＤＬが一度にスプール可能な上限データサイズを超えないように動作保証がなされる。
【０００３】
ラスタ画像の生成に関しては、ページ内の一部領域だけを非可逆圧縮すると、周辺領域との画質差により境界線が目立って視覚上の品位が落ちてしまうという問題がある。そこで、特許文献１は、フォールバックに関して、途中のＤＬをイメージデータに変換及び画像圧縮した背景画像と、残りのＤＬから生成した前景画像との画質差による境界線を目立たなくすることを目的としている。特に、画質劣化した画像を含む場合に画像全体を劣化させることで、境界線を目立たなくする手法を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１７１５３３
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ラスタ画像を出力するには、ページ全体に対して中間データを生成し、このページ全体の中間データをレンダリングしてラスタ画像を生成し、出力装置によって出力する。このとき、中間データの生成とレンダリングが別の装置において実施される場合、ページ全体の中間データを生成し終わるまで、レンダリングを実行することができず、システム全体の処理性能が低下してしまうという問題がある。
【０００６】
特許文献１では、レンダリング開始までに画像全体の劣化処理を行うと、レンダリング及び出力の処理待ちが増長されることとなってしまう。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、画像処理装置であって、入力データを所定の単位に分割する分割手段と、前記分割手段により分割された入力データから、前記所定の単位で中間データを生成する生成手段と、前記生成手段にて生成された中間データの描画内容をイメージデータに変換することで中間データを更新する更新手段と、前記生成手段が中間データを生成する毎に、生成した中間データをラスタ画像処理部に転送する転送手段と、前記転送手段が前記入力データから生成された最初の中間データを転送する前に、前記入力データの描画命令、または、前記最初の中間データに基づいて、前記入力データに対応する全ての中間データに対し、前記更新手段による更新を行うか否かを判定する判定手段とを備える。
【発明の効果】
【０００８】
本発明によれば、ＰＤＬを解釈してラスタ画像を生成する際に、視覚上の品位を維持しつつ、ラスタ画像の生成の開始時間を低減させることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る画像処理システムの概略を示す図。
【図２】第一の実施形態に係る画像処理システムの処理機能及びデータフローを示す図。
【図３】第一の実施形態に係る入力データの例を示す図。
【図４】第一の実施形態に係る中間データの例を示す図。
【図５】第一の実施形態に係る中間データをフラット化した例を示す図。
【図６】第一の実施形態に係る中間データをバンド単位に生成する様子を示す図。
【図７】第一の実施形態に係るデータフローを示す図。
【図８】第一の実施形態に係る中間データの生成処理全体のフローチャート。
【図９】第一の実施形態に係るラスタ画像の生成処理全体のフローチャート。
【図１０】第一の実施形態に係る中間データ生成処理のフローチャート。
【図１１】第一の実施形態に係るフラット化処理のフローチャート。
【図１２】第一の実施形態に係るラスタ画像生成処理のフローチャート。
【図１３】第一の実施形態に係る塗り情報を合成する様子を示す図。
【図１４】第二の実施形態に係る中間データ生成処理のフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明に係る一実施形態を、添付の図面に基づいて詳細に説明する。
【００１１】
＜第一の実施形態＞
図１は、本実施形態に係る第１の画像処理装置及び第２の画像処理装置の概略を示す図である。本実施形態では、画像処理システムは、第１の画像処理装置及び第２の画像処理装置を含んで構成されるものとする。
【００１２】
図１（ａ）に示す画像処理装置１００は、画像を出力する機能を有しており、例えば、プリンタが挙げられる。画像処理装置１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、記憶装置１０４、通信部１０５、及び印刷部１０７を含んで構成される。各構成要素は、画像処理装置１００の内部バスにて通信可能に接続される。ＣＰＵ１０１は、画像処理装置１００全体を制御する中央演算ユニットであり、画像処理装置１００の処理シーケンスを統括的に制御する。ＲＯＭ１０２は、不揮発性の記憶領域である。ＲＡＭ１０３は、揮発性の記憶領域である。後述する本実施形態に係るフローチャートを実現するためのプログラムや固定データは、ＲＯＭ１０２に格納され、データの一時保存やプログラムのロードにＲＡＭ１０３を使用する。記憶装置１０４は不揮発性の記憶領域であり、これに格納されたデータは、画像処理装置１００の電源オフ状態にあっても保持しておくことが可能であり、格納したデータを画像処理装置１００の再起動後に読み出すことを可能とする。通信部１０５は、ネットワーク１０６を介した外部機器とのデータ送受信に用いる。ここでいう外部機器としては、例えば、画像処理装置１５０が挙げられる。印刷部１０７は、印刷ヘッド１０８を用いて画像を紙等の記録媒体に印刷する。
【００１３】
図１（ｂ）に示す画像処理装置１５０は、例えば、ＰＣ等の情報処理装置が挙げられる。画像処理装置１５０は、ＣＰＵ１５１、ＲＯＭ１５２、ＲＡＭ１５３、記憶装置１５４、及び通信部１５５を含んで構成される。各構成要素は、画像処理装置１５０の内部バスにて通信可能に接続される。ＣＰＵ１５１は、画像処理装置１５０全体を制御する中央演算ユニットであり、画像処理装置１５０の処理シーケンスを統括的に制御する。ＲＯＭ１５２は、不揮発性の記憶領域である。ＲＡＭ１５３は、揮発性の記憶領域である。後述する本実施形態に係るフローチャートを実現するためのプログラムや固定データは、ＲＯＭ１５２に格納され、データの一時保存やプログラムのロードにＲＡＭ１５３を使用する。記憶装置１５４は不揮発性の記憶領域であり、これに格納されたデータは、画像処理装置１５０の電源オフ状態にあっても保持しておくことが可能であり、格納したデータを画像処理装置１５０の再起動後に読み出すことを可能とする。通信部１５５は、ネットワーク１５６を介した外部機器とのデータ送受信に用いる。ここでいう外部機器としては、例えば、画像処理装置１００が挙げられる。
【００１４】
図２は、本実施形態に係る画像処理システムの処理機能及びデータフローを示す図である。画像処理システム内の各処理部によって生成された各データは、画像処理システムが有する各記憶部にて保持される。
【００１５】
入力部２０１は、画像処理装置１５０に接続されている外部装置（不図示）から入力データ２０８を受け取る。解釈部２０２は、入力部２０１で受け取った入力データ２０８を解釈して描画命令２０９を抽出する。本実施形態における入力データ２０８は、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ページ記述言語）で記述される画像データである。入力データ２０８のフォーマットとしては、公知であるＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）やＯｐｅｎＸＰＳが挙げられ、描画命令２０９としては、ＰＤＦのオブジェクトやＯｐｅｎＸＰＳのオブジェクトが挙げられる。中間データ生成部２０３は、解釈部２０２により抽出された描画命令２０９に従い、中間データ２１０を生成する。中間データ２１０の詳細に関しては後述する。
【００１６】
レンダリング部２０４は、詳細は後述するが、必要に応じて、中間データ生成部２０３により生成された中間データ２１０の描画内容をイメージデータに変換し、中間データ２１０を更新する。中間データ２１０の更新処理を以降、「フラット化」と記載する。フラット化は、例えば、中間データ２１０がそれをスプールするための記憶領域の上限データサイズを超えた際に実施する。フラット化とは、具体的には、レンダリング部２１４で実行するラスタ画像生成処理の少なくとも一部をレンダリング部２０４で予め実行する処理である。レンダリング部２０４で生成したラスタ画像は、後述する塗り情報のイメージデータとして扱われる。
【００１７】
レンダリング部２１４は、データ変換部２０６から中間データ２１０を受信し、中間データ２１０を基に、ラスタ画像２１１を生成する。なお、レンダリング部２１４は、レンダリング部２０４から中間データを受信した場合、すなわち、フラット化された中間データを受信した場合、中間データからイメージデータを取り出して、ＲＡＭ１０３上の一時的なバッファに画像を展開し、出力部２０５に渡す。
【００１８】
出力部２０５は、レンダリング部２１４により生成されたラスタ画像２１１に対して、ハーフトーン処理等の画像処理を施して出力データ２１２を形成し、出力する。
【００１９】
本実施形態において、データ変換部２０６は、入力部２０１、解釈部２０２、中間データ生成部２０３、およびレンダリング部２０４を含む。また、ラスタ画像処理部２０７は、レンダリング部２１４と出力部２０５を含む。なお、機器の構成は、特に限定されないが、本実施形態では、データ変換部２０６は、プリンタドライバにより実現され、ラスタ画像処理部２０７はプリンタにより実現される。すなわち、データ変換部２０６は、プリンタの外部装置であるＰＣ等の情報処理装置が有し、ラスタ画像処理部２０７は、図１に示すプリンタが有するものとする。
【００２０】
中間データ２１０は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して、データ変換部２０６からラスタ画像処理部２０７へ送信される。ラスタ画像処理部２０７は、記録媒体に印刷を行うことで出力データ２１２を出力する。なお、これに限定されず、データ変換部２０６及びラスタ画像処理部２０７を１つの画像処理装置が有するものとしてもよい。
【００２１】
図３は、入力データ２０８の一例を示す図である。描画領域３００において、矩形の単色オブジェクト３０１の一部と、イメージオブジェクト３０２の一部とが重なっており、重なっている部分では、矩形の単色オブジェクト３０１が透過して、イメージオブジェクト３０２の上端に重畳している様子を示している。
【００２２】
図４は、図３の入力データ２０８の例に対する、中間データ２１０の様子を示している。本実施形態において、中間データ２１０は、境界情報、合成情報、及び塗り情報を含む。
【００２３】
境界情報は、オブジェクトの重なりによって区切られる各領域について、境界の座標を示す情報であり、対応する合成情報を参照するデータである。境界の座標は、一実施形態では、ページにおいて該領域の存在する、上端及び下端のＹ座標（上下位置）と、Ｙ座標毎の左端と右端のＸ座標（左右位置）にて示される。なお、Ｙ座標とＸ座標は他の領域を跨がないように決定される。例えば、境界情報４００は、図４（ｂ）に示すように、オブジェクトが何もない、すなわち背景の領域の座標の集合体を示す。境界情報４０２は、図４（ｃ）に示すように、単色オブジェクト３０１とイメージオブジェクト３０２の右側の領域の座標の集合体を示す。境界情報４００と、境界情報４０２とが背景領域に対応する。また、境界情報４０１は、単色オブジェクト３０１とイメージオブジェクト３０２が重なっている領域の座標の集合体を示す。
【００２４】
塗り情報は、夫々のオブジェクト等を描画するための色を示すデータである。例えば、塗り情報４０６は、単色オブジェクト３０１を描画するための色を示す情報であり、一実施形態では単色オブジェクトのＲＧＢ値（各１バイトの３バイトデータ）である。塗り情報４０７は、イメージオブジェクト３０２を描画するための色を示す情報であり、一実施形態ではＢＭＰやＪＰＥＧ等の配置するイメージデータの情報である。また、塗り情報４０５は、背景を描画するための色を示す情報であり、一実施形態では背景色のＲＧＢ値である。
【００２５】
合成情報は、夫々の領域について、参照する塗り情報を示す情報であり、複数の塗り情報を参照する場合にはそれらの合成処理方法も示す。また、先述したように、合成情報は境界情報から参照される。合成処理方法は、一実施形態ではＲＯＰ（Ｒａｓｔｅｒ  Ｏｐｅｒａｔｉｏｎ）の論理演算である。例えば、境界情報４００は合成情報４０３を参照し、合成情報４０３は塗り情報４０５を参照する。境界情報４０２も合成情報４０３を参照する。境界情報４０１は合成情報４０４を参照し、合成情報４０４は塗り情報４０６と塗り情報４０７を参照して、それらの塗り情報を上書き（Ｏｖｅｒ）で合成処理することを示す。このように、境界情報、合成情報、塗り情報は、関連付けられている。
【００２６】
ここでフラット化について説明する。先述したように、フラット化は中間データ２１０の描画内容をイメージデータに変換し、中間データ２１０を更新する処理である。図５は、図４の中間データ２１０をフラット化した場合の様子を示す。中間データ２１０をフラット化すると、１つのイメージデータに変換される。さらに、変換されたイメージデータは、例えばＪＰＥＧ等の非可逆圧縮方法により圧縮される。これにより、イメージデータのデータサイズが低減される。そして、複数のイメージデータが１つのイメージデータに変換されることにより、図４の塗り情報４０５〜４０７は、１つの塗り情報５０２となる。また、描画領域３００の全体を一つの領域とする境界情報５００と、合成情報５０１が生成される。このように、フラット化をすることにより、塗り情報のサイズは、フラット化前と比較して低減する。境界情報５００は合成情報５０１を参照し、合成情報５０１は塗り情報５０２を参照する構成となる。一実施形態では、境界情報５００、合成情報５０１、及び塗り情報５０２を除く情報は、データサイズを減らすために中間データ２１０から削除する。
【００２７】
次にバンド単位の中間データ２１０について説明する。描画命令２０９に従って中間データ２１０を生成する際に、出力部２０５による出力順序（ページの先頭から末尾）に沿って、中間データ２１０をバンド単位に分割して生成する。図６は、中間データ２１０をバンド単位で生成する様子を示す。入力データ２０８と描画命令２０９はページ単位のデータであり、中間データ２１０はバンド単位のデータである。図６の例では、中間データ２１０は４個のバンドに分かれており、その夫々が先述した、境界情報、合成情報、及び塗り情報から構成されるデータ構造になっている。
【００２８】
一実施形態では、１バンドあたりの高さを、データ変換部２０６の中間データ２１０の転送能力やスプール能力に基づいて予め定めたスキャンライン数とする。例えば、プリンタドライバとプリンタとのデータ通信帯域が狭いならば、１ページの最大バンド幅を小さくして、中間データ２１０の転送が全体処理のボトルネックにならないようにする。また、例えば、中間データ２１０の上限データサイズが小さいならば、１ページの最大バンド幅を小さくして、過度にフラット化が起こらないようにしてもよい。なお、最後のバンドの幅は端数になってよい。また、入力されたページの高さが予め定めた高さより小さい場合は、中間データ２１０を１つのバンドで生成する。１つのバンドで生成した場合には、図４及び図５の例の如く、描画領域３００に対して、１つの中間データ２１０を生成する。
【００２９】
図７は、バンド単位の中間データ２１０を生成及びレンダリングし、ラスタ画像２１１を出力するデータフローを示す。図７において、点線の枠内はバンド単位に同じ処理を繰り返すことを表している。入力部２０１はページ単位の入力データ２０８を受け取り、解釈部２０２は、ＰＤＬデータを解釈し、ページ単位の描画命令２０９を抽出する。中間データ生成部２０３は、描画命令２０９から先頭バンドから順に中間データ２１０を生成する。この際、バンドの中間データ２１０をフラット化するか否かを判定する（Ｓ７００）。判定方法の詳細については後述する。フラット化すると判定された場合（Ｓ７００にてＹＥＳ）、データ変換部２０６内のレンダリング部２０４に着目しているバンドの中間データ２１０を送信する。レンダリング部２０４は、着目バンドの中間データ２１０をイメージデータに変換及び圧縮し、中間データ生成部２０３が中間データ２１０を更新する。フラット化しないと判定された場合（Ｓ７００にてＮＯ）、バンドの中間データ２１０を、データ変換部２０６からラスタ画像処理部２０７へ転送する。なお、既にフラットされた中間データは、フラット化しないと判定される。そして、中間データ生成部２０３は次のバンドに対して、同様にバンド単位の中間データ２１０の生成を繰り返す。なお、データ変換部２０６において、複数のバンドの中間データ２１０を記憶できるだけの記憶領域があり、かつ転送処理がオフロードされていれば、転送が完了する前に次のバンドの中間データ２１０を生成開始してもよい。全てのバンドに対して、バンド単位の中間データ２１０の転送が完了すると、データ変換部２０６の処理は終了となる。
【００３０】
一方、ラスタ画像処理部２０７内のレンダリング部２１４は、データ変換部２０６から転送された、バンド単位の中間データ２１０を受け取ると直ちに、レンダリングを行い、バンド単位のラスタ画像２１１を生成する。そして、出力部２０５は、バンド単位のラスタ画像２１１が生成されると直ちに、ハーフトーン処理等の画像処理を施してバンド単位の出力データ２１２を形成し、出力する。ラスタ画像処理部２０７内のレンダリング部２１４と出力部２０５は夫々、バンド単位に処理を繰り返す。全てのバンドに対して、バンド単位の出力データ２１２の出力が完了すると、データ変換部２０６の処理は終了となる。
【００３１】
データ変換部２０６とラスタ画像処理部２０７に関する、より詳しいフローチャートについては後述する。
【００３２】
以上説明した一連の処理により、ページ全体の中間データ２１０を生成し終わるまでレンダリング及び出力の処理が待たされることが無くなり、それによってシステム全体の処理性能向上を図れる。
【００３３】
図８は、本実施形態に係る、データ変換部２０６がバンド毎に中間データ２１０を生成して、ラスタ画像処理部２０７へ送信するフローチャートを示す図である。図８のフローチャートは、ＣＰＵ１０１が、ＲＯＭ１０２に格納されている画像処理プログラムをＲＡＭ１０３にロードし、それを実行することにより行われる。
【００３４】
Ｓ８００にて、データ変換部２０６は、先頭のバンド（分割されたバンドのうちの最初のバンド）を選択する。
【００３５】
Ｓ８０１にて、データ変換部２０６は、選択したバンドの中間データ２１０を生成する。中間データ生成処理の詳細なフローチャートについては図１０を用いて後述する。
【００３６】
Ｓ８０２にて、データ変換部２０６は、生成した中間データ２１０をラスタ画像処理部２０７へ送信する。
【００３７】
Ｓ８０３にて、データ変換部２０６は、未処理のバンドが残っているか否かを判定する。未処理のバンドが残っている場合（Ｓ８０３にてＹＥＳ）、Ｓ８０４へ進み、未処理のバンドが残っていない場合（Ｓ８０３にてＮＯ）、本処理フローを終了する。
【００３８】
Ｓ８０４にて、データ変換部２０６は、未処理のバンドを選択して、Ｓ８０１に戻り、処理を繰り返す。
【００３９】
図９は、ラスタ画像処理部２０７がバンド毎に中間データ２１０を受信して、ラスタ画像２１１を生成し、出力部２０５へ転送するフローチャートを示す図である。図９のフローチャートは、ＣＰＵ１５１が、ＲＯＭ１５２に格納されている画像処理プログラムをＲＡＭ１５３にロードし、それを実行することにより行われる。
【００４０】
Ｓ９００にて、ラスタ画像処理部２０７は、先頭のバンドの中間データ２１０を受信する。
【００４１】
Ｓ９０１にて、ラスタ画像処理部２０７は、受信したバンドのラスタ画像２１１を生成する。ラスタ画像生成処理の詳細なフローチャートについては図１２を用いて後述する。
【００４２】
Ｓ９０２にて、ラスタ画像処理部２０７は、生成したラスタ画像２１１を出力部２０５へ転送する。一実施形態では、ここでの転送は単純なデータコピーでなく、出力部２０５によりハーフトーン処理を施しながら実施される。
【００４３】
Ｓ９０３にて、ラスタ画像処理部２０７は、未処理のバンドが残っているか否かを判定する。未処理のバンドが残っている場合（Ｓ９０３にてＹＥＳ）、Ｓ９０４へ進み、未処理のバンドが残っていない場合（Ｓ９０３にてＮＯ）、本処理フローを終了する。
【００４４】
Ｓ９０４にて、ラスタ画像処理部２０７は、未処理のバンドの中間データを受信し、Ｓ９０１へ戻り、処理を繰り返す。
【００４５】
図１０は、図８のＳ８０１における中間データ生成処理の詳細なフローチャートを示す図である。このフローチャートでは、先頭のバンドの中間データ２１０を生成する前に、描画命令２０９が所定の条件を満たすか否かにより、全てのバンドの中間データ２１０をフラット化するか否かを判定する。本構成の背景として、一部のバンドだけをフラット化した場合、非可逆圧縮したバンドと非可逆圧縮しないバンドとの画質差により境界線が目立って視覚上の品位が落ちてしまう問題が発生する。一方、常に全てのバンドの中間データ２１０をフラット化すると、描画内容の少ないページに対しても、フラット化の処理負荷が余分にかかってしまう。また、フラット化が必要となるバンドを検出できた段階で全てのバンドの中間データ２１０をフラット化しようにも、その時点でページ先頭側のバンドは既に出力されている可能性がある。上述の問題を抑制するために、本実施形態では描画命令２０９に基づいて、全てのバンドの中間データ２１０をフラット化するか否かを判定する。
【００４６】
ここで用いられる所定の条件とは、描画命令２０９の中にあるイメージオブジェクトの合計データサイズが予め定めた閾値以上であることとする。この条件に示すような特徴を判定基準にする理由は、イメージオブジェクトを描画するための塗り情報はイメージデータであり、単色のＲＧＢ値や境界の座標と比較し、大きなデータサイズになりやすいためである。特に、バンド単位の中間データ２１０の生成において、イメージオブジェクトが複数のバンドに跨っていると、その跨っているバンド全ての中間データ２１０に、その塗り情報が含まれる。そのため、バンド単位に中間データ２１０を生成する形態では、イメージオブジェクトの合計データサイズは、中間データ２１０のデータサイズに影響し、その予測基準となりうる。一例として、描画命令２０９の中にあるイメージオブジェクトの合計データサイズが、中間データ２１０の上限データサイズ以上（サイズ閾値以上）であるとする。この例では、縦長の細切れのイメージオブジェクトが全てのバンドに跨るように配置されているという状況を想定して、サイズ閾値を定める。そのため、描画命令２０９の中にあるイメージオブジェクトの合計データサイズが、中間データ２１０のサイズ閾値以上である場合は、プリンタドライバ側、すなわちデータ変換部２０６でフラット化を行う。
【００４７】
また、別の条件としては、描画命令２０９の中にある、特定のイメージオブジェクトの個数が予め定めた閾値以上であることとする。一例としては、ページの向き（印刷方向の向き）と異なるイメージオブジェクトがページ内に大量の存在している状況を想定して、そのようなイメージオブジェクトが１万個以上あることを条件とする。言い換えれば、描画命令として画像の回転指示を含むイメージオブジェクトがページ内に閾値以上であることを条件とする。この構成の背景として、イメージデータの回転処理は処理負荷が高くなりやすく、プリンタ側と比較して処理性能の高いＰＣ上のプリンタドライバ側で実施することが望ましい。そのため、ページの向きと異なるイメージオブジェクトが大量にある場合は、プリンタドライバ側、すなわちデータ変換部２０６でフラット化を行う。この構成により、１つのイメージデータへ変換すると同時に、イメージデータがページの向きに合わせて回転されるため、システム全体の処理性能向上を図ることが出来る。同様にイメージデータのデコード処理も処理負荷が高くなりやすいため、イメージオブジェクトが１万個以上あることを条件としてもよい。これにより、大量のイメージオブジェクトが、フラット化で重なりのない１個のイメージデータにまとまり、プリンタ側のデコード処理の負荷が軽減し、システム全体の処理性能向上を図れる。
【００４８】
本実施形態では、上記の描画命令２０９の中にあるイメージオブジェクトの合計データサイズの条件、上記の描画命令２０９の中にある特定のイメージオブジェクトの個数の条件のうち少なくとも一方を満たしていれば、フラット化すると判定する。
【００４９】
なお、本実施形態における所定の条件として用いられるものは上記に限定するものではなく、プリンタドライバおよびプリンタそれぞれの処理負荷を考慮して他の条件を用いてもよい。例えば、イメージオブジェクトの向きに関わらず、イメージオブジェクトの個数が予め設定した閾値以上であれば、フラット化すると判定してもよい。また、例えば、データの転送速度、記憶領域のサイズ、もしくは画像処理装置にて行っている他の処理との関係などから決定してよい。また、閾値についても、必ずしも固有値を用いるものではなく、画像処理装置の状態に応じて変更してもよい。
【００５０】
図１０の各ステップを説明する。図１０のフローチャートは、ＣＰＵ１０１が、ＲＯＭ１０２に格納されている画像処理プログラムをＲＡＭ１０３にロードし、それを実行することにより行われる。
【００５１】
Ｓ１０００にて、データ変換部２０６は、先頭のバンドを選択中であるか否かを判定する。先頭のバンドを選択中である場合は（Ｓ１０００にてＹＥＳ）Ｓ１００１へ進み、先頭のバンド以外を選択中である場合は（Ｓ１０００にてＮＯ）Ｓ１００４へ進む。
【００５２】
Ｓ１００１にて、データ変換部２０６は、ＲＡＭ１５３に設けたフラット化フラグをＯＦＦに初期化する。フラット化フラグとはフラット化するか否かを一時記憶するための２値の変数であり、ＯＮはフラット化することを示し、ＯＦＦはフラット化しないことを示す。初期化の後、Ｓ１００２へ進む。
【００５３】
Ｓ１００２にて、データ変換部２０６は、描画命令２０９が所定の条件を満たすか否かを判定する。ここでの所定の条件は、上記にて説明した条件が該当する。この判定は、対象の中間データの全体サイズが大きいか否かを予想する処理であり、所定の条件を満たす場合は、対象の中間データの全体のサイズが大きいと予想される。所定の条件を満たす場合は（Ｓ１００２にてＹＥＳ）Ｓ１００３へ進み、所定の条件を満たさない場合は（Ｓ１００２にてＮＯ）Ｓ１００５へ進む。
【００５４】
Ｓ１００３にて、データ変換部２０６は、フラット化フラグをＯＮにする。そして、Ｓ１００５に進む。
【００５５】
Ｓ１００４にて、データ変換部２０６は、直前のバンドまで使用していたフラット化フラグの値を読み込む。つまり、ここでは、直前のバンドにて使用していたフラット化フラグの値を引き継ぐこととする。なお、フラット化フラグをバンド間で引き継ぐために保存する処理については後述する。
【００５６】
Ｓ１００５にて、データ変換部２０６は、選択しているバンド（処理対象のバンド）の中間データを生成する。
【００５７】
Ｓ１００６にて、データ変換部２０６は、生成したバンドの中間データのデータサイズが所定サイズより大きいか否かを判定する。所定サイズは、一実施形態では、ラスタ画像処理部２０７で各バンドの中間データ２１０をスプール可能な上限サイズである。中間データのデータサイズが所定サイズより大きい場合は（Ｓ１００６にてＹＥＳ）Ｓ１００７へ進み、所定のサイズ以下である場合は（Ｓ１００６にてＮＯ）Ｓ１００８へ進む。中間データのデータサイズとは、画像データそのもののサイズと、ページ単位の塗り情報のサイズと、バンド単位のエッジ情報のサイズとの合計データサイズである。なお、ここでの判定は、先頭のバンドの他、それ以降のバンドの中間データに対しても所定のサイズより大きいか否かが判定される。従って、本実施形態では、あるバンドの中間データが所定サイズより大きいと判定された場合にはそのバンド以降のバンド全てがフラット化対象として扱われることとなる。なお、フラット化フラグが既にＯＮとなっている場合は、Ｓ１００６の判定を行わずに、Ｓ１００５からＳ１００８へ進んでよい。
【００５８】
Ｓ１００７にて、データ変換部２０６は、フラット化フラグをＯＮにする。そして、Ｓ１００８に進む。
【００５９】
Ｓ１００８にて、データ変換部２０６は、フラット化フラグがＯＮか否かを判定する。フラット化フラグがＯＮである場合は（Ｓ１００８にてＹＥＳ）Ｓ１００９へ進み、ＯＮでない場合は（Ｓ１００８にてＮＯ）Ｓ１０１０へ進む。
【００６０】
Ｓ１００９にて、データ変換部２０６は、選択しているバンドをフラット化する。フラット化処理の詳細なフローチャートについては図１１を用いて後述する。フラット化処理の後、Ｓ１０１０へ進む。
【００６１】
Ｓ１０１０にて、データ変換部２０６は、フラット化フラグを保存する。そして、本処理フローを終了する。なお、ここで保存したフラット化フラグは、次のバンドの選択中にＳ１００４の工程にて読み込まれる。次のバンドの処理をする際には、図１０に示す処理を再び実行する。
【００６２】
図１１は、図１０のＳ１００９におけるフラット化処理の詳細なフローチャートを示す図である。
【００６３】
Ｓ１１００にて、データ変換部２０６は、選択しているバンドのラスタ画像を生成する。ラスタ画像生成処理の詳細なフローチャートについては図１２を用いて後述する。
【００６４】
Ｓ１１０１にて、データ変換部２０６は、先頭のバンドを選択中であるか否かを判定する。先頭のバンドを選択中である場合は（Ｓ１１０１にてＹＥＳ）Ｓ１１０２へ進み、先頭のバンド以外を選択中である場合は（Ｓ１１０１にてＮＯ）Ｓ１１０３へ進む。
【００６５】
Ｓ１１０２にて、データ変換部２０６は、圧縮レベルを初期値に設定する。そして、Ｓ１１０４に進む。圧縮レベルとは、生成したラスタ画像を画像圧縮するための圧縮レベルであり、例えば圧縮方法がＪＰＥＧであれば量子化率によって表現される。圧縮方法が他の方法であれば、その方法に準じて圧縮するレベル（程度）が用いられる。圧縮レベルの初期値は、圧縮処理における負荷などに応じて決定してよい。
【００６６】
Ｓ１１０３にて、データ変換部２０６は、直前のバンドまで使用していた圧縮レベルの情報を読み込む。そして、Ｓ１１０４へ進む。なお、圧縮レベルをバンド間で引き継ぐために保存する処理については後述する。
【００６７】
Ｓ１１０４にて、データ変換部２０６は、生成したラスタ画像を設定した圧縮レベル又は読み込んだ圧縮レベルにて圧縮する。
【００６８】
Ｓ１１０５にて、データ変換部２０６は、圧縮したラスタ画像を唯一の塗り情報とするように、選択しているバンドの中間データ２１０を更新する。元の中間データ２１０に対して更新した中間データ２１０の様子は、図５の説明で述べた通りである。
【００６９】
Ｓ１１０６にて、データ変換部２０６は、更新した中間データ２１０が所定サイズより大きいか否かを判定する。所定サイズとは、図１０のＳ１００６にて用いた所定サイズと同一である。所定サイズより大きい場合は（Ｓ１００６にてＹＥＳ）Ｓ１１０７へ進み、所定サイズ以下である場合は（Ｓ１００６にてＮＯ）Ｓ１１０９へ進む。
【００７０】
Ｓ１１０７にて、データ変換部２０６は、圧縮レベルを上げ、Ｓ１１０４に戻ってラスタ画像の圧縮をやり直す。なお、圧縮レベルは、１段階ごと（例えば、ＪＰＥＧであれば量子化率を１％ごと）上げるようにしてもよいし、所定サイズと更新した中間データ２１０のサイズとの差に応じて上げる幅を決定してもよい。
【００７１】
Ｓ１１０８にて、データ変換部２０６は、選択中のバンドにおいて使用した圧縮レベルを保存する。そして、本処理フローを終了する。なお、保存した圧縮レベルの情報は、次のバンドの選択中にＳ１１０３で読み込まれる。なお、選択中のバンドの中間データが所定サイズより大きくない場合は、圧縮されずに終了することもある。
【００７２】
図１２は、図９のＳ９０１及び図１１のＳ１１００におけるラスタ画像生成処理の詳細なフローチャートを示す図である。
【００７３】
Ｓ１２００にて、データ変換部２０６は、中間データ２１０から先頭のスキャンラインを選択する。
【００７４】
Ｓ１２０１にて、データ変換部２０６は、選択しているスキャンラインにおいて最も左側にある境界情報を選択する。
【００７５】
Ｓ１２０２にて、データ変換部２０６は、Ｓ１２０１にて選択した境界情報が参照する合成情報を取得する。
【００７６】
Ｓ１２０３にて、データ変換部２０６は、Ｓ１２０２にて取得した合成情報が参照する塗り情報が、複数存在するか否かを判定する。参照する塗り情報が複数存在する場合は（Ｓ１２０３にてＹＥＳ）Ｓ１２０４へ進み、参照する塗り情報が１つのみ存在する場合は（Ｓ１２０３にてＮＯ）Ｓ１２０５へ進む。
【００７７】
Ｓ１２０４にて、データ変換部２０６は、塗り情報を１つの塗り情報へと合成する。そして、Ｓ１２０５に進む。
【００７８】
図１３は、塗り情報を合成する様子を示す図である。図１３（Ａ）は合成する前の様子を示す。図１３（Ａ）において、合成情報４０４は、塗り情報４０６と塗り情報４０７を参照し、それらを上書き（Ｏｖｅｒ）で合成処理することを示す。図１３（Ｂ）は、図１３（Ａ）に示す中間データ２１０を合成した後の様子を示す。図１３（Ｂ）において、塗り情報４０６と塗り情報４０７を合成処理することで、処理結果のイメージデータ１３００が新たな塗り情報として追加される。このように合成処理を完了することで、合成情報が参照する塗り情報は１つに集約される。
【００７９】
Ｓ１２０５にて、データ変換部２０６は、塗り情報をラスタ画像２１１の記憶領域に書き込む。ここでの記憶領域とは、選択中のスキャンライン（Ｙ座標）及び、選択中の境界情報の範囲（左端から右端までのＸ座標）に対応する領域である。ここでの書き込みは、例えば、塗り情報が単色のＲＧＢ値の場合、その値を記憶領域にコピーすることによって行われる。また、塗り情報がイメージデータの場合、イメージデータを記憶領域に対して、ラスタ画像２１１と同じ解像度に拡大または縮小することによって行われる。イメージデータが画像圧縮されていれば、拡大または縮小の前に、そのイメージデータに対する画像展開も行われる。
【００８０】
Ｓ１２０６にて、データ変換部２０６は、選択中の境界情報の右側に他の境界情報が残っているか否かを判定する。他の境界情報が残っている場合は（Ｓ１２０６にてＹＥＳ）Ｓ１２０７へ進み、残っていない場合は（Ｓ１２０６にてＮＯ）Ｓ１２０８へ進む。
【００８１】
Ｓ１２０７にて、データ変換部２０６は、右側の境界情報を新たに選択し、Ｓ１２０２に戻り、処理を繰り返す。
【００８２】
Ｓ１２０８にて、データ変換部２０６は、選択中のスキャンラインの下側に他のスキャンラインが残っているか否かを判定する。他のスキャンラインが残っている場合は（Ｓ１１２０８にてＹＥＳ）Ｓ１２０９へ進み、残っていない場合は（Ｓ１２０８にてＮＯ）本処理フローを終了する。
【００８３】
Ｓ１２０９にて、データ変換部２０６は、直下のスキャンラインを新たに選択し、Ｓ１２０１に戻り、処理を繰り返す。
【００８４】
以上、本実施形態では、描画命令の特徴に応じてバンド単位の中間データの全てをイメージデータに変換及び画像圧縮するかを事前に判定する。この構成により、非可逆圧縮したバンドとそうでないバンドとの画質差により境界線が目立って視覚上の品位が落ちてしまうことを抑制できる。また、圧縮が必要のない中間データも圧縮する場合と比較して、フラット化の処理負荷を低減することができると共に、ラスタ画像の生成を効率よく行うことができる。
【００８５】
また、本実施形態では、あるバンドの中間データが所定サイズより大きいと判定された場合にはそのバンド及びそれ以降の全てのバンドがフラット化対象として扱われる。例えば、ページの途中にイメージオブジェクトが配置されている場合などが、これに該当することがある。この場合、イメージオブジェクトの少なくとも一部が配置されているバンドからフラット化することができる可能性が高まるため、バンド間にイメージオブジェクトがまたがっている場合に、イメージオブジェクト内に画質差が生じるのを抑制することができる。
【００８６】
＜第二の実施形態＞
第一の実施形態では、描画命令２０９の特徴に応じてフラット化フラグを切り替える実施形態について説明した。第二の実施形態として、１バンド目の中間データ２１０の特徴に応じてフラット化フラグを切り替える実施形態について説明する。なお、第一の実施形態と同じ構成については、説明を省略する。
【００８７】
図１４は、本実施形態に係る中間データ生成処理のフローチャートを示す図である。図１４は、第一の実施形態にて述べた図１０に対応する。なお、図１４のＳ１４００〜Ｓ１４０２を除き、処理の流れは図１０で説明した構成と同じであるため、同じ処理については同じ参照番号を付す。
【００８８】
Ｓ１０００にて、データ変換部２０６は、先頭のバンドを選択中か否かを判定する。先頭のバンドを選択中である場合は（Ｓ１０００にてＹＥＳ）Ｓ１００１へ進み、先頭以外のバンドを選択中である場合は（Ｓ１０００にてＮＯ）Ｓ１００４へ進む。
【００８９】
Ｓ１００１にて、データ変換部２０６は、フラット化フラグをＯＦＦに初期化する。
【００９０】
Ｓ１４００にて、データ変換部２０６は、先頭のバンドの中間データ２１０を生成する。
【００９１】
Ｓ１４０１にて、データ変換部２０６は、先頭のバンドの中間データ２１０が所定の条件を満たすか否かを判定する。所定の条件を満たす場合（Ｓ１４０１にてＹＥＳ）Ｓ１００３へ進み、満たさない場合（Ｓ１４０１にてＮＯ）Ｓ１００６へ進む。
【００９２】
ここでの所定の条件とは、先頭のバンドの中間データ２１０のデータサイズが、Ｓ１００６の所定サイズに対して予め定めた割合より大きいとする。すなわち、先頭のバンドの中間データ２１０がある程度大きければ、以降のバンドの中間データ２１０が所定サイズより大きくなり、Ｓ１００７でフラット化フラグがＯＮになる可能性が高いと予測する。一例としては、中間データ２１０のデータサイズはバンドによって上下２割程度のぶれがあると推定し、先頭のバンドの中間データ２１０のデータサイズが、Ｓ１００６の所定サイズの８割より大きいことを条件とする。このようにして、先頭のバンドの中間データ２１０の特徴に応じて、各バンドの中間データ２１０をフラット化するか否かを、１バンド目の中間データを送信する前に決定する。
【００９３】
また、別の条件としては、先頭のバンドの中間データ２１０のうち、イメージオブジェクトを描画するための塗り情報を除いたデータサイズが、Ｓ１００６の所定サイズに対して、予め定めた割合より大きいことを所定の条件とする。これにより、塗り情報に係るイメージデータを除いてもデータサイズが大きくなる場合に、描画命令２０９が複雑であるために以降のバンドでフラット化フラグがＯＮになる可能性が高いと予測する。
【００９４】
Ｓ１００４にて、データ変換部２０６は、直前のバンドまで使用していたフラット化フラグを読み込む。続いて、Ｓ１４０２にて、データ変換部２０６は、選択しているバンドの中間データ２１０を生成して、Ｓ１００６に進む。Ｓ１００６以降の処理は第一の実施形態にて述べた図１０と同じである。
【００９５】
以上、本実施形態では、先頭バンドの中間データに応じてバンド単位の中間データの全てをイメージデータに変換及び画像圧縮するかを事前に判定する。この構成により、非可逆圧縮したバンドとそうでないバンドとの画質差により境界線が目立って視覚上の品位が落ちてしまうことを抑制できる。また、圧縮が必要のない中間データも圧縮する場合と比較して、フラット化の処理負荷を低減することができると共に、ラスタ画像の生成を効率よく行うことができる。
【００９６】
また、本実施形態も、第一の実施形態と同様に、あるバンドの中間データが所定サイズより大きいと判定された場合にはそのバンド及びそれ以降の全てのバンドがフラット化対象として扱われる。したがって、イメージオブジェクトの少なくとも一部が配置されているバンドからフラット化することができる可能性が高まるため、バンド間にイメージオブジェクトがまたがっている場合に、イメージオブジェクト内に画質差が生じるのを抑制することができる。
【００９７】
＜その他の実施形態＞
上述の第一、第二の実施形態では入力データ２０８がページ単位であり、ページ内のバンド単位の描画領域毎に中間データ２１０を生成していた。しかし、別の実施形態として、入力データ２０８がドキュメント単位であり、ドキュメント内のページ単位の描画領域毎に中間データ２１０を生成するように実施してもよい。この実施形態により、ページ間で画質差が出てしまうことを抑制できる。また、Ｘ方向（図６の左右方向）及びＹ方向を複数に分けたタイル単位で中間データ２１０を生成してもよい。すなわち、中間データ２１０を所定の単位に分割して処理する場合に、本実施形態を適用することができる。
【００９８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９９】
１００  画像処理装置、２０１  入力部、２０２  解釈部、２０３  中間データ生成部、  ２０４  レンダリング部、２０５  出力部、２０６  データ変換部、２０７  ラスタ画像処理部、２０８  入力データ、２０９  描画命令、２１０  中間データ、２１１  ラスタ画像、２１２  出力データ
【図１】
0006741463.tif 000002
【図２】
0006741463.tif 000003
【図３】
0006741463.tif 000004
【図４】
0006741463.tif 000005
【図５】
0006741463.tif 000006
【図６】
0006741463.tif 000007
【図７】
0006741463.tif 000008
【図８】
0006741463.tif 000009
【図９】
0006741463.tif 000010
【図１０】
0006741463.tif 000011
【図１１】
0006741463.tif 000012
【図１２】
0006741463.tif 000013
【図１３】
0006741463.tif 000014
【図１４】
0006741463.tif 000015