(57)【要約】【課題】従来では、中間データを生成中にメモリオーバーフローが発生したとき、回避処理をするタイミングによっては、所定の描画処理を示す描画オブジェクトか判定せずに非可逆圧縮処理するため、描画時にノイズが目立ってしまう問題などがあった。【解決手段】回避処理に入るタイミングが所定の描画処理を示す描画オブジェクトの途中かどうかを判定して、非可逆圧縮処理により所定の描画処理の途中のイメージが圧縮されるのを防ぐことで画像のノイズを軽減する。【選択図】図５
2014117861.tif 000002
【特許請求の範囲】
【請求項１】
格納手段に格納した描画オブジェクトを対象として、前記描画オブジェクトをレンダリングし、生成したビットマップデータを不可逆圧縮して圧縮イメージを新たな描画オブジェクトとして前記格納手段に格納する回避処理を実行できる画像形成装置であって、
印刷データに基づいて描画オブジェクトを生成して前記格納手段に格納する生成手段と、
生成された描画オブジェクトに含まれた疑似透過処理のための一連の描画オブジェクトを不可分な描画オブジェクト群として前記回避処理の対象とするか或いは対象としないよう描画オブジェクトを制御する制御手段と
を有することを特徴とする画像形成装置。
【請求項２】
前記制御手段は、前記回避処理が実行される際に、前記格納手段に格納された描画オブジェクトの中から前記不可分な描画オブジェクト群を構成する描画オブジェクトを検索し、前記格納手段に前記不可分な描画オブジェクト群の一部が格納されている場合には当該一部を除いた描画オブジェクトを前記回避処理の対象とし、それ以外の場合には前記格納手段に格納されている描画オブジェクトの全体を前記回避処理の対象とすることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記制御手段は、生成された前記描画オブジェクトが、前記不可分な描画オブジェクトの一部である場合には、当該描画オブジェクトを退避領域へと格納し、該退避領域に格納した描画オブジェクトが前記不可分な描画オブジェクト群を構成するならば、該描画オブジェクト群を前記格納手段に移動し、
前記回避処理が実行される際には、前記格納手段に格納されている描画オブジェクトの全体を前記回避処理の対象とすることを特徴とする請求項１に記載の画像形成装置。
【請求項４】
前記格納手段に所定の上限値を超える描画オブジェクトが格納される場合に前記回避処理を実行することを判定する手段を更に備えることを特徴とする請求項１乃至３のいずれか一項に記載の画像形成装置。
【請求項５】
前記疑似透過処理のための一連の描画オブジェクトは、背景イメージと透過イメージとを排他的論理和で合成する描画オブジェクトと、合成されたイメージと所定のマスクとを論理積で合成する描画オブジェクトと、マスクされたイメージと前記透過イメージとを排他的論理和で合成する描画オブジェクトとを含むことを特徴とする請求項１乃至４のいずれか一項に記載の画像形成装置。
【請求項６】
前記印刷データが、透過表現を含むか否かを判定する判定手段を更に有し、
前記判定手段により透過表現を含まないと判定された場合に、前記制御手段による描画オブジェクトの制御を行うことを特徴とする請求項１乃至５のいずれか一項に記載の画像形成装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の画像形成装置としてコンピュータを機能させるためのプログラム。
【請求項８】
格納手段に格納した描画オブジェクトを対象として、前記描画オブジェクトをレンダリングし、生成したビットマップデータを不可逆圧縮して圧縮イメージを新たな描画オブジェクトとして前記格納手段に格納する回避処理を実行できる画像形成装置の制御方法であって、
印刷データに基づいて描画オブジェクトを生成して前記格納手段に格納する生成工程と、
生成された描画オブジェクトに含まれた疑似透過処理のための一連の描画オブジェクトを不可分な描画オブジェクト群として前記回避処理の対象とするか或いは対象としないよう描画オブジェクトを制御する制御工程と
を有することを特徴とする画像形成装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ不足時に中間データをいったんビットマップデータ化して非可逆圧縮処理することによりデータサイズを圧縮して空きメモリを確保する回避処理を行う画像形成装置ならびに画像形成装置の制御方法、及び、プログラムの技術に関する。
【背景技術】
【０００２】
通常、複合機など印刷機能を持つ装置はホスト側からプリンタドライバで送信されたページ記述言語（以下、ＰＤＬ）を、印刷装置側でレンダリングに適した中間データに変換してメモリ内に格納する。印刷装置は、中間データからレンダリング処理を行うことでビットマップデータを生成する。近年では、ホスト側のアプリケーションから作成される描画表現も多彩となり、透過を表現するものなどが増えている。アプリケーションで作成された画像データにおける透過の表現を、印刷装置では、そのインターフェース等の制限により複数の描画パターンを用いて疑似的な透過表現で再現する場合がある。疑似的な透過表現とは、透過領域の背景イメージと前面イメージとを描画パターンでマスクし、複数回重ね合わせる処理で実現する。重ね合わせの処理は、透過領域に２回の排他的論理和（ＸＯＲ処理）を行うことで、背景イメージと前面イメージとを交互に表現する。
【０００３】
この透過処理では、合成される複数の描画オブジェクトを作成するため、合成に伴う不具合が発生する問題があった。例えば、疑似透過処理で生じる画像の不具合を回避する先行技術として、特許文献１がある。特許文献１では、ＸＯＲ処理の描画オブジェクトを複数利用して透過処理を表現するときに、描画オブジェクトの属性情報が上書きされることで生じる問題を解消すべく、属性情報が適切に更新されるように透過オブジェクト群を検出する方法などが記載されている。
【０００４】
一方、中間データからレンダリング処理を行うことでビットマップデータを生成する技術では、メモリ不足に対応するために回避処理が行われる。回避処理とは、中間データ生成時に中間データを保持するメモリの容量の上限値を超える現象（以下、メモリオーバーフロー）が発生した際に行われる処理である。中間データの生成に伴ってメモリオーバーフローが発生すると、印刷装置はＰＤＬデータから中間データの生成を一旦中断して、その時点でメモリ内に生成済みの中間データをレンダリングしてビットマップデータを生成する。生成されたビットマップデータは、残りの未処理のＰＤＬデータから生成される中間データに対応する画像の背景イメージとして使用される。そして印刷装置は、背景イメージと残りのＰＤＬデータから生成される中間データとがメモリ上に保持できるように、背景イメージであるビットマップデータを非可逆符号化処理により非可逆圧縮して圧縮イメージとして保存する。そして印刷装置は、処理済みの中間データをメモリ上から消去してメモリ容量の空きを生成する。このような回避処理を行うことで、中間データで使用するメモリ容量の削減を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2009-159494号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、疑似透過処理を検出しても、回避処理へ移行するタイミングによっては、背景イメージとの合成後の画像にノイズを含む領域が形成されてしまう。それは以下の理由による。
【０００７】
疑似的な透過表現の処理では、同一のオブジェクトの排他的論理和という演算処理が行われる。その途中、すなわち、排他的論理和の第１項にあたる中間データが生成された段階で回避処理をしてしまうと、伸長後の背景イメージの透過領域には、圧縮処理に伴うノイズ、たとえばブロックノイズやモスキートノイズ等が発生する。このようなノイズ含みの背景イメージに、排他的論理和の第２項にあたる中間データが合成されると、ノイズはひときわ目立つことになる。それというのも、排他的論理和のみについて考えると、その演算によりノイズの部分だけが残ることになるためである。このように、疑似透過のような描画処理の途中で中間データを回避処理するタイミングによっては、最終的に生成される画質をさらに悪化させてしまうことがある。
【０００８】
本発明は上記従来例に鑑みてなされたもので、疑似透過処理を行う場合にも、回避処理に起因した画質の劣化をできるだけ抑制することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明は以下の構成を有する。すなわち、格納手段に格納した描画オブジェクトを対象として、前記描画オブジェクトをレンダリングし、生成したビットマップデータを不可逆圧縮して圧縮イメージを新たな描画オブジェクトとして前記格納手段に格納する回避処理を実行できる画像形成装置であって、
印刷データに基づいて描画オブジェクトを生成して前記格納手段に格納する生成手段と、
生成された描画オブジェクトに含まれた疑似透過処理のための一連の描画オブジェクトを不可分な描画オブジェクト群として前記回避処理の対象とするか或いは対象としないよう描画オブジェクトを制御する制御手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、回避処理が発生したさいに、中間データに含まれた疑似透過処理の組み合わせを検出して、描画オブジェクトの描画処理のタイミングを調整することでノイズの少ない画像を生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の印刷装置における実施形態の一形態であるプリンタの構成を示すブロック図である。
【図２】実施形態における各機器のコントローラユニットの構成例を示すブロック図である。
【図３】実施形態におけるコントローラソフトウェアの構成の一例を示す図である。
【図４】実施形態における印刷データの描画方法の構成例を示すブロック図である。
【図５】実施形態１における回避処理が発生するときの判定方法を示すフローチャート図である。
【図６】実施形態１における回避処理が発生後に疑似透過処理で描画不具合が発生するか判定して回避する方法を示したフローチャート図である。
【図７】実施形態２における回避処理が発生する前に事前に疑似透過処理を検出して描画不具合を回避する方法を示したフローチャート図である。
【図８】実施形態１、実施形態２において疑似透過の描画処理の様子を示した図である。
【図９】実施形態１、実施形態２において記憶領域に中間データを生成する様子を示した図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。
［実施形態１］
＜プリンタの構成＞
図１は、本実施形態を実施する印刷装置の一形態であるプリンタの構成を示すブロック図である。なお印刷装置は画像形成装置の一例である。プリンタ１０２は、プリンタコントローラ部１０３と、プリンタエンジン部１０５と、操作パネル部１０４とを備える。プリンタコントローラ部１０３は、ホストコンピュータ（以下、ホスト）などの外部機器１０１から印刷データ（ＰＤＬで記述されたコードデータを含む）が入力される。その印刷データを解析することによってイメージデータ（ページ情報）を生成する。この生成されたイメージデータはインターフェースを介してプリンタエンジン部１０５に送信する。プリンタエンジン部１０５は、電子写真プロセスにより、プリンタコントローラ部１０３によって生成されたイメージデータが示す画像を用紙上に形成する。プリンタエンジン部１０５には、各機構と、その各機構による各印刷プロセス処理に関する制御を行うエンジン制御部とが含まれている。操作パネル部１０４は、ユーザインターフェースであり、プリンタ１０２に対してユーザーの所望の動作を指示するための入力操作を行う。
【００１３】
＜プリンタコントローラ部の構成＞
次に、プリンタコントローラ部１０３の構成について図２を参照しながら説明する。プリンタコントローラ部１０３は、プリンタコントローラ部１０３全体を制御するためのＣＰＵ２０２を有し、ＣＰＵ２０２が、外部機器１０１との間でやりとりされるデータ（各種ＰＤＬデータを含む）の入出力部を構成する。ＲＡＭ２０４は、ＣＰＵ２０２が動作するためのシステムワークメモリであり、生成した中間データや圧縮ビットマップデータ、入力された画像データなどを一時記憶するための画像メモリでもある。さらに、ＲＯＭ２０５にはシステムの制御コードや後述の各処理を実行するためのプログラムが格納されている。ＣＰＵ２０２は、ＲＯＭ２０５に格納されている制御コードおよび各プログラムをＲＡＭ２０４にロードし、それを実行することで、プリンタ１０２全体を制御し、後述の各処理を実行する。また、プリンタコントローラ部１０３は、外部機器１０１との間の通信制御を行うホストＩ／Ｆ２０３とを有している。
【００１４】
ラスタイメージプロセッサ（ＲＩＰ）２０６は、ＰＤＬデータなどをビットマップデータに展開する。ホストＩ／Ｆ２０３を介して入力されたコードデータから、ＣＰＵ２０２はＲＯＭ２０５に格納されている制御コードに従い、ＲＩＰ２０６を用いてプリンタエンジン部１０５が処理可能なビットマップデータの作成を行う。なお本実施形態では、ＣＰＵ２０２によりソフトウェアで中間データを生成し、中間データに基づくビットマップデータの生成を、ＲＩＰ２０６を用いて行うものとする。作成したビットマップデータは、エンジンＩ／Ｆ部２０７を介してビデオ信号としてプリンタエンジン部１０５に転送される。エンジンＩ／Ｆ部２０７は、プリンタエンジン部１０５とでやり取りされる信号の入出力部を構成するとともに、プリンタエンジン部１０５との間の通信制御を行う。
【００１５】
パネル部１０４（図１に示す）から操作入力によって出されたモード設定に関する指示などは、操作パネルＩ／Ｆ部２０１を介して入力され、操作パネルＩ／Ｆ部２０１はパネル部１０４とＣＰＵ２０２の間のインターフェースを構成する。ＣＰＵ２０２は、パネル部１０４から指示されたモードに応じて上述の各ブロックに対する制御を行い、この制御はＲＯＭ２０５に格納されている制御コードに基づき実行される。上述のＣＰＵ２０２を含む各ブロックは、システムバス２０８にＣＰＵがアクセス可能なように接続されている。ＨＤＤ２０９はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データ等を格納する。
【００１６】
＜コントローラソフトウェアの構成＞
図３は、印刷装置の動作を制御するコントローラソフトウェアの構成を示すブロック図である。各ブロックはＣＰＵ２０２が該当するプログラムを実行することで実現する機能ブロックを示す。プリンタインターフェイス３０１は、ホストＩ／Ｆ部２０３で外部機器とのネットワーク入出力を制御するための手段である。プロトコル制御部３０２は、ネットワークプロトコルを解析・送信することによって外部との通信を行う手段である。プリンタインターフェイス３０１は、外部のネットワークから送信されたＰＤＬデータを受信したあとドキュメント記憶部３０７へ保存する。
【００１７】
ＰＤＬデータ解析部３０３は、ＣＰＵ２０２がドキュメント記憶部３０７に展開されたＰＤＬデータを解析し、描画オブジェクトごとに中間データ４０１（図４に示す）に変換する手段である。描画オブジェクトは例えば文字（テキストオブジェクト）、図形（グラフィックオブジェクト）、写真（イメージオブジェクト）等である。ＰＤＬデータ解析部３０３において生成された中間データ４０１はドキュメント記憶部３０７を介してデータ描画部３０４に渡されて処理される。
【００１８】
データ描画部３０４は、ＣＰＵ２０２が中間コードからビットマップデータを生成するためのソフトウェアであり、その中でＲＩＰ２０６が用いられる。また本例では、ＲＩＰ２０６はスキャンライン単位でビットマップデータを生成するスキャンラインレンダラである。データ描画部３０４は、スキャンラインレンダラ４０２（図４参照）の描画方法で中間コード４０１をビットマップデータに展開する処理であり、展開されたビットマップデータはページメモリ３０５に逐次描画されて行く。
【００１９】
ページメモリ３０５は、ＲＡＭ２０４やＨＤＤ２０９などに確保され、データ描画部３０４が展開するビットマップデータを一時的に保持する領域である。
【００２０】
パネル入出力制御部３０６は、操作パネル１０４から操作パネル部Ｉ／Ｆ２０１の入出力を制御するものである。パネル入出力制御部３０６は、ページメモリ３０５にプレビュー用に生成されたビットマップデータを操作パネル部１０４に表示する。また、パネル入出力操作部３０６は、プレビュー画像が更新されるたびに、ページメモリ３０５に展開されるビットマップデータを操作パネル部１０４に逐次表示される。
【００２１】
ドキュメント記憶部３０７は、入力文書の一塊（ジョブ）単位にベクターデータ、中間データ４０１を包含するデータファイルを記憶する手段であり、ＲＡＭ２０４やＨＤＤ２０９などのハードディスク等の二次記憶装置によって実現される。ドキュメント記憶部３０７は、一時的に記憶する領域のデータサイズがデータごとに決まっており、所定の上限値を超える中間データ４０１が送信された場合、上限値を超えることがＣＰＵ２０２に通知されて、回避処理が、それまでの中間データ生成処理を中断して開始される。回避処理の詳細に関しては後述する。回避処理は、フォールバック処理あるいは縮退処理などとも呼ばれる。また、本実施形態では、回避処理で描画の不具合が発生する一連のＲＯＰ（ラスタ演算）による描画パターン（たとえば中間データおよび演算のスタックなど）を一時的に記録する領域を中間データ４０１とは別に用意している。
【００２２】
印刷制御部３０８は、ページメモリ３０５の内容をビデオ信号に変換処理し、エンジンＩ／Ｆ部２０７を介してプリンタエンジン部１０５へ画像転送を行う。
【００２３】
回避処理においては、データ描画部３０４がそれまでに記憶された中間データをレンダリングして背景イメージとなるビットマップデータを生成してページメモリ３０５に格納し、印刷制御部３０９がページメモリ３０５内のビットマップデータを非可逆圧縮処理してドキュメント記憶部３０７に保存する。そしてレンダリング対象となった中間データは消去される。圧縮された背景イメージをひとつの中間データとしてドキュメント記憶部３０７に保存すると、回避処理の開始時点で中断した中間データ生成処理を続行する。これは回避処理の概要であり、一連の回避処理の詳細については図７等を参照して詳述する。
【００２４】
ＰＤＬデータ解析部３０３が、残りのＰＤＬデータから中間データ４０１を生成し終え、１ページ分の中間データがそろうと、中間データに基づいてレンダリング処理を開始する。回避処理により圧縮背景ビットマップデータが中間データとして展開されている場合には、まずその解凍処理が行われる。印刷制御部３０９は非可逆圧縮処理した背景イメージデータを解凍し、解凍後のビットマップデータをデータ描画部３０４に送信する。データ描画部３０４は、残りの中間データ４０１をレンダリングしたあとのビットマップデータ４０７と、印刷制御部３０９が解凍したビットマップデータとを重ねて描画することで、合成したビットマップデータ４０７をページメモリ３０５に展開する。回避処理では、ＰＤＬデータ解析部３０３から中間データ４０１の生成が終わるまで、一連の処理を繰り返す。プリンタエンジン部１０５は受け取ったビデオ信号を記録紙に永久可視画像形成するための印刷機構部である。
【００２５】
＜スキャンラインレンダラ４０２の構成＞
図４は、データ描画部３０４でのスキャンラインレンダラ４０２の構成を示すブロック図である。
【００２６】
中間データ４０１は、ＰＤＬデータをＰＤＬデータ解析部３０３で変換した中間コードである。スキャンラインレンダラ４０２では、中間データ４０１を入力データとして、輪郭書き出し処理部４０３、重なり整列処理部４０４、色塗り処理部４０５、色合成処理部４０６を経てビットマップデータ４０７を生成する。ビットマップデータ４０７は、ページメモリ３０５へ保持される。
【００２７】
輪郭書き出し処理部４０３は、中間データ４０１に含まれる描画オブジェクトから輪郭情報を取得する処理である。輪郭情報は、描画オブジェクトの輪郭の開始点位置、及び輪郭幅の２つの情報を指している。輪郭書き出し処理部４０３で取得された輪郭の情報が画像データの１スキャンライン分揃ったら、輪郭座標の情報を次の重なり整列処理部４０４に送る。
【００２８】
重なり整列処理部４０４は、輪郭座標の情報と描画オブジェクト同士の重なりの上下関係を元に紙面に対して描画オブジェクトが正しい順番で重なるように整列処理する。整列済みの輪郭情報は、画像データの１スキャンライン分揃ったあと、色塗り処理部４０５へ送られる。
【００２９】
色塗り処理部４０５は、整列済みの輪郭情報に対して、輪郭で区切られる１つ１つの区間に対して色情報を付加する。色塗り処理部４０５で生成された色情報が付加された整列済みの輪郭情報は、１スキャンライン分揃ったら、色合成処理部４０６へ送られる。
【００３０】
色合成処理部４０６は、色情報が付加された整列済みの輪郭情報を元に輪郭で区切られた領域かつ、その区切られた領域のうち他の輪郭で区切られた領域と重なっている部分どうしに対して中間データ４０１に従った重なりルールを適用する。重なりルールには、ＲＯＰ（Ｒａｓｔｅｒ  Ｏｐｅｒａｔｉｏｎ）とアルファブレンドがある。
【００３１】
ＲＯＰとは、領域どうしが重なっている部分に、前面側と背面側の色値を表現するビットどうしで行われる論理演算である。重なりルールとしてＲＯＰが指定された場合、前面側と背面側の領域を表現する色値の間で論理演算が行われた結果が出力される。
【００３２】
アルファブレンドとは、輪郭で区切られた領域どうしで重なっている部分に対して、両者のうち前面側及び背面側の色を混ぜて出力するときの双方の割合比を指定する。
【００３３】
色合成処理部４０６では、中間データ４０１に従った重なりルールを適用し、重なっている領域の前面と背面の領域からどのような色を出力するかを決定する。色合成処理部４０６で生成されたデータは、画像データの１ピクセルごとの色情報としてビットマップデータ４０７が出力される。
【００３４】
＜回避処理を含む画像データの生成処理手順＞
本実施形態では、ＰＤＬデータ解析部３０３による中間データ４０１の生成中にメモリオーバーフローが発生し、回避処理が実行される場合について説明する。回避処理が行われない場合には、従来技術に準じた処理が遂行されてページ単位の画像データが制せされ印刷される。図５、６では、回避処理が実行される際に、ＰＤＬデータ解析部３０３が、生成された中間データ内に描画不具合が発生する描画パターンが含まれるかを判定してデータ描画部３０４に中間データを送信する処理について説明する。図８は、回避処理が実行された場合に描画不具合が発生しうる描画パターンについて説明する図である。図５、図６のフローチャートを実行するプログラムは、ＲＯＭ２０５に存在しており、ＣＰＵ２０２がＲＡＭ２０４にロードして実行する。
【００３５】
図５は、ＰＤＬデータ解析部３０３が中間データ４０１をドキュメント記憶部３０７に描画オブジェクトを生成している処理である。この処理は、以下の説明においては図３の各機能ブロックを主体として説明するが、ＣＰＵ２０２により、ＲＩＰ２０６を用いて実行される処理である。
【００３６】
ステップＳ５０１において、ＰＤＬデータ解析部３０３は、ＰＤＬデータを解析して描画オブジェクトを生成する。
【００３７】
ステップＳ５０２において、ＰＤＬデータ解析部３０３は、生成した描画オブジェクトを中間データに変換して中間データ４０１へ加えた場合に中間データ４０１のメモリ使用量が上限値を上回るか判定する。この判定の結果、ＰＤＬデータ解析部３０３は、中間データ４０１のメモリ使用量がメモリの上限値を上回ると判定すれば（Ｓ５０２でＹＥＳ）、回避処理へと移行する。ステップＳ５０４では、このタイミングでＰＤＬデータ解析部３０３が回避処理へと移行した際に、描画の不具合となりうる描画パターンの処理途中かどうかを判定し、判定結果に応じて不具合を防止するための処理を行う。Ｓ５０４の判定処理については、以降の図６のフローチャート図で詳細を説明する。
【００３８】
一方、Ｓ５０２で回避処理へ移行しないと判定すれば、ステップＳ５０３では、ＰＤＬデータ解析部３０３が中間データ４０１にさきほど生成したＳ５０１の描画オブジェクトを追加する。ステップＳ５０５では、ＰＤＬデータ解析部３０３がＰＤＬデータから全ての描画オブジェクトが生成されたかを判定する。まだ未処理のＰＤＬデータが残っていれば、再びＰＤＬデータ解析部３０３はＳ５０１の描画オブジェクトの生成を開始する。以降、ＰＤＬデータ解析部３０３は、Ｓ５０１からＳ５０５の処理を繰り返した後、回避処理へ移行しないままＰＤＬデータの解析を終えたら、ステップＳ５０６ではＰＤＬデータ解析部３０３が中間データ４０１をデータ描画部３０４へ送信する。ステップＳ５０７では、すでに説明した要領で回避処理が実行される。なお図５の説明では、回避処理は、それまでに生成した中間データ（描画オブジェクト）をレンダリングして不可逆圧縮し、それを新たな描画オブジェクトとして中間データ４０１に保存するまでの処理である。その後に続く中間データの生成や、ページ全体のレンダリングは図５の説明では回避処理には含めておらず、通常の中間データ生成処理としてＳ５０３から続行される。なお、最終的なページデータの生成時には、回避処理で生成した中間データはＲＩＰ２０６ではなく、印刷制御部３０９で解凍されることになる。
【００３９】
＜不具合防止処理＞
図６は、Ｓ５０４の処理の詳細な説明である。ＰＤＬデータ解析部３０３は回避処理実行前に、中間データ４０１に、回避処理によって描画の不具合を発生させる所定の特殊な描画パターンがあるかを検索する。ここで、本実施形態１では、描画の不具合を発生させる特殊な描画パターンとして、疑似透過処理を対象とする。近年ではアプリケーションからグラデーションの描画などに透過処理が利用されるなど、透過表現を含むデータが増加している。ここで、透過表現をプリンタ１０２で表現するときにプリンタ１０２側でサポートするＰＤＬの種別によっては、アプリケーションによって編集された画像データに含まれた透過表現を疑似的に表現するＰＤＬデータがプリンタ１０２に送信される場合がある。透過表現をアルファブレンディングで表すか、あるいは疑似透過表現で表すかは、たとえばオペレーティングシステムのＡＰＩにも依存する。たとえば、ウインドウズ（登録商標）では、ＸＰＳではアルファブレンディングをサポートしており、疑似透過表現の必要はない。これに対してＧＤＩではアルファブレンディングはサポートされず、透過表現は疑似的に記述される。この場合、ホストで生成され、プリンタに対して出力される印刷ジョブは、疑似透過表現を含むＰＤＬのコードで記述される。
【００４０】
ここで、疑似透過表現について図８を用いて説明する。以下では擬似的な透過を表現するデータの一例として、排他的論理和（ＸＯＲ処理）、論理積（ＡＮＤ処理）、排他的論理和（ＸＯＲ処理）のＲＯＰの組み合わせについて説明する。図８の例では、アプリケーションソフトウェア等による編集によって、背景イメージ８０１の上に色つきの半透明な透過イメージ８０２が重ね合わされているものとする。
【００４１】
図８（ａ）は、疑似透過の一連の処理の様子である排他的論理和（ＸＯＲ処理）と論理積（ＡＮＤ処理）の描画処理を適用するごとに得られるイメージを表している。また、図８（ａ）の処理のオペレータおよびオペランドはすべて、中間データ４０１に描画オブジェクトとして含まれている。
【００４２】
最初に、色合成処理部４０６は背景イメージ８０１と透過イメージ８０２とをＸＯＲ処理で重ね合わせて合成イメージ８０３を生成する。ＸＯＲ処理で重ね合わせるとは、重ね合わせた際に同じ位置となる２つの画素値の排他的論理和を、重ね合わせる部分全体について計算することである。演算の種類が論理積や論理和、あるいは上書きなどに代わることはあっても、２つの画像データを合成する処理の要領はこれと同様である。次に、色合成処理部４０６は、市松模様のマスク状のイメージパターン（マスクイメージ）８０４を、合成イメージ８０３とＡＮＤ処理で合成した結果、イメージ８０５を生成する。市松模様の各格子は、たとえば１画素の大きさであり、格子の黒部分の画素値は０、白部分の画素値は最大値（全て"１"）である。最後に、色合成処理部４０６は透過イメージ８０２を再びＸＯＲ処理でイメージ８０５と合成して疑似透過イメージ８０７を生成する。この結果、透過表現の領域における背景イメージ８０１の画素値をＢ、対応する位置の透過イメージ８０２の画素値をＴとすると、市松模様の黒部分には（Ｂ＋Ｔ）・０＋Ｔ＝Ｔ、すなわち透過イメージ８０２の画素値が現れ、市松模様の白部分には（Ｂ＋Ｔ）・１＋Ｔ＝Ｂ、すなわち背景イメージ８０１の画素値が現れる。このように、色合成処理部４０６は、ＸＯＲ処理、ＡＮＤ処理、ＸＯＲ処理の一連のＲＯＰ処理を実行することで、透過表現の領域に市松模様状の背景イメージ８０１と、透過イメージ８０２とを交互に表現する疑似的な透過イメージ８０７を描画する。
【００４３】
一方、図８（ｂ）・図８（ｃ）は、上記の一連のＲＯＰ処理を行う途中で回避処理が実行された場合の例を説明している。
【００４４】
図８（ｂ）は、ＰＤＬデータ解析部３０３が疑似透過処理の背景イメージ８０１からイメージ８０５までの描画オブジェクトに対応する中間データの生成中に、回避処理が発生した場合を示す。この場合、ＰＤＬデータ解析部３０３は、データ描画部３０４に合成イメージ８０５までの描画オブジェクトに対応する中間データ４０１を送信する。ここで回避処理により、データ描画部３０４はマスクイメージ結合後の合成イメージ８０５をビットマップデータ４０７としてページメモリ３０５に出力する。印刷制御部３０８は、データ描画部３０４から出力されたページメモリ３０５中のビットマップデータ４０７を非可逆圧縮処理して、ドキュメント記憶部３０７に保存する。
【００４５】
一方、ＰＤＬデータ解析部３０３は、残りのＰＤＬデータから描画オブジェクトを生成して、１ページ分の中間データが揃うと、中間データ４０１をデータ描画部３０４に送信する。このとき、印刷制御部３０８は、非可逆圧縮していたドキュメント記憶部３０７のビットマップデータを解凍してデータ描画部３０４に送信する。データ描画部３０４は、残りの中間データ４０１をレンダリング処理する際に、色合成処理部４０６が印刷制御部３０８から送信された解凍後のデータを背景イメージとして合成する。色合成処理部４０６は、解凍後のデータ８０８と透過イメージ８０２とをＸＯＲ処理で合成して疑似透過イメージ８０９を生成する。
【００４６】
この際、印刷制御部３０８はページメモリ３０５から取得したビットマップデータ４０７は非可逆圧縮されていたため、本来のマスク状のイメージ８０５とは異なるビットマップデータ８０８となってしまう。そのため、２回のＸＯＲ処理を含む一連のＲＯＰ処理を行っても、透過イメージと背景イメージとが隣り合って交互に表示されずに、疑似透過イメージ８０９はノイズが目立つイメージとなる。ことに疑似透過処理は、透過領域のみに施される処理であり、透過領域のノイズが、それ以外の領域との対比で特に目立つことになる。このように、中間データ４０１を回避処理するタイミングが、１回目のＸＯＲ処理の後、かつ２回目のＸＯＲ処理を行う前だと、疑似透過イメージ８０９のように、描画処理の途中で画質をさらに悪化させてしまう。
【００４７】
以下で図５のステップＳ５０４の処理の詳細について図６を用いて説明する。図６のフローチャートでは、ＰＤＬデータ解析部３０３は回避処理時に図８（ｂ）・図８（ｃ）のような疑似透過処理が中間データ４０１に存在するかどうかを検出する。
【００４８】
ステップＳ６０１において、ＰＤＬデータ解析部３０３は、ＰＤＬデータが透過の描画表現をサポートしているかどうかを判定する。これは、ＰＤＬデータがＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）や、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）といったアプリケーションの透過表現をそのまま印刷機で処理するＰＤＬと区別するためである。疑似透過処理は、ホスト側で編集中のアプリケーションがＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）をとおしているかどうかで判定する。印刷制御部３０８がＰＤＬデータ解析部３０３にＰＤＬデータを送信するときに、印刷データ内に付加される情報をもとに解析してＰＤＬデータの種類を判定する。または、ＰＤＬデータ解析部３０３がＰＤＬデータを解析するときに、ＰＤＬデータの種類を判定してもよい。ＰＤＬデータがＸＰＳ、ＰＤＦといった透過をサポートしていれば、疑似透過処理を判定する処理を行わずに中間データ４０１をそのままデータ描画部３０３へ送信する。一方、ステップＳ６０１で、印刷データの情報からＰＤＬデータが疑似透過処理を有すると判定すれば、疑似透過処理の検索を始める。
【００４９】
ステップＳ６０２において、ＰＤＬデータ解析部３０３は、中間データ４０１から１つ前に描画オブジェクトを作成したアドレスを検出する。
【００５０】
図９（ａ）・図９（ｂ）を用いてステップＳ６０２の描画オブジェクトの検出方法を説明する。図９（ａ）では、ＰＤＬデータ解析部３０３がＰＤＬデータから中間データ４０１を生成したときのメモリマップの例を表している。描画オブジェクト９０１は、中間データの生成領域の開始アドレス９０２に存在する。開始アドレス９０２はあらかじめ決めてあるか、あるいは記憶されている。図９（ａ）では、ＰＤＬデータ解析部３０３が描画オブジェクト９０５を生成したときに、中間データ４０１の生成サイズの上限値９０３を超える描画オブジェクト９０５とそのアドレス９０４を示している。ＰＤＬデータ解析部３０３は、中間データ４０１の上限値９０３のメモリ領域に描画オブジェクトをＰＤＬデータから解析した順番に中間データ４０１を生成する。
【００５１】
次に図９（ｂ）では、ＰＤＬデータ解析部３０３は、回避処理が発生したときに、発生直後の描画オブジェクト９０５から順番に生成済みの描画オブジェクトを検索する様子を示している。ＰＤＬデータ解析部３０３は、描画オブジェクト９０５からその直前の描画オブジェクトのアドレスを算出する。ここで、描画オブジェクトは生成する描画内容によるため、イメージデータ、文字データ、単色塗りつぶしデータ、などの描画方法や描画領域の大きさによってデータサイズが異なる。そのため、ＰＤＬデータ解析部３０３は、描画オブジェクト９０５のアドレス９０４から、その描画内容に応じたデータサイズを減算することで１つ手前の描画オブジェクトのアドレスを算出する。
【００５２】
Ｓ６０２のアドレス検出方法は、ＰＤＬデータ解析部３０３が中間データ４０１を生成時に予め生成済みの中間データのアドレスを保持しておいてもよい。本実施形態では、ＰＤＬデータ解析部３０３が中間データ４０１の描画オブジェクトを生成したときのサイズから、各描画オブジェクトのアドレスを特定する。
【００５３】
次にステップＳ６０３では、ＰＤＬデータ解析部３０３はＳ６０２で特定したアドレスの描画オブジェクトがＸＯＲ処理かどうかを判定する。これは、ＰＤＬデータ解析部３０３が回避処理の直前で描画オブジェクトが疑似透過処理の途中の描画パターンかどうかを判定するためである。ＰＤＬデータ解析部３０３は描画オブジェクトがＸＯＲ処理と判定したら、ステップＳ６０４に、そうでなければＳ６０６に分岐する。
【００５４】
ステップＳ６０４では、ＸＯＲ処理の描画オブジェクト数をカウントする。またステップＳ６０５では、ＰＤＬデータ解析部３０３は、中間データ４０１内のＸＯＲ処理の描画オブジェクトのアドレスを一時的に保持する。アドレスの特定の仕方はＳ６０２と同じ要領である。ステップＳ６０６では、ＰＤＬデータ解析部３０３は、中間データ４０１のなかのすべての描画オブジェクトを検出し終えたかを判定する。ＰＤＬデータ解析部３０３は、Ｓ６０２からＳ６０６の一連の処理を、それまでに生成され、レンダリングされていない中間データ４０１の末尾の描画オブジェクトから、先頭の描画オブジェクトまで繰り返し、それらのアドレスを特定する。すべての描画オブジェクトが特定できたらステップＳ６０７に分岐する。
【００５５】
ステップＳ６０７では、ＰＤＬデータ解析部３０３は、中間データ４０１の中に、ＸＯＲ処理の描画オブジェクトが偶数存在したか、あるいは奇数存在したかを判定する。これは、ＰＤＬデータ処理部３０３は、図８（ａ）のようなＸＯＲ処理＋ＡＮＤ処理＋ＸＯＲ処理の一連の疑似透過処理の組み合わせが、中間データ４０１に存在するか判定するためである。ＰＤＬデータ解析部３０３は、ＸＯＲ処理が奇数個存在すると判定すれば、疑似透過処理の途中で回避処理による不可逆圧縮が発生しており、描画の不具合が発生する可能性があると判定し、Ｓ６０８に分岐する。一方、偶数個であればＳ６０９に分岐する。図５においては、Ｓ５０４の後に回避処理があるものとして記載しているが、Ｓ６０８，Ｓ６０９は回避処理の一部であり、Ｓ５０７においては、生成されたビットマップデータの不可逆圧縮から回避処理が開始される。
【００５６】
ステップＳ６０８において、ＰＤＬデータ解析部３０３は、中間データ４０１内で最初に現れるＸＯＲ処理の描画オブジェクトより前の描画オブジェクト（図９（ｂ）の描画オブジェクト群９０６）を中間データ４０１としてデータ描画部３０４に送信する。すなわちこの場合には、ＸＯＲの描画オブジェクトは、レンダリングの対象とはならない。データ描画部３０４は、受信した中間データを順序処理して背景イメージとなるビットマップデータを生成する。生成されたビットマップデータは、不可逆圧縮されていったん保存され、その後解凍されて背景イメージとなる。ここで回避処理におけるビットマップデータ生成の対象となる描画演算には、疑似透過処理の描画演算は含まれないため、描画時にノイズを抑制することができる。図９（ｂ）の描画オブジェクト群９０７は、ステップＳ６０８の判定で検出された疑似透過処理のための描画オブジェクト群である。描画オブジェクト群９０７は、ＰＤＬデータ解析部３０３が回避処理の次のレイヤの中間データ４０１を生成するときに使用する。
【００５７】
一方のステップＳ６０９では、ＰＤＬデータ解析部３０３は、中間データ４０１にＸＯＲ処理が偶数個で存在すると判定すれば、そのままの中間データ４０１をデータ描画部３０４に送信する。これは、ＰＤＬデータ解析部３０３は図８（ａ）のような疑似透過処理の描画パターンを保持しているので、疑似透過処理の途中で回避処理による不可逆圧縮が生じないと判定したためである。
【００５８】
以上のことから、実施形態１では、回避処理が発生するときに、ＰＤＬデータ解析部３０３が、疑似透過処理の途中の段階の描画オブジェクトが、それまでに生成した中間データ４０１の描画オブジェクトに含まれるか否か判定することで、描画の不具合の発生する描画パターンを検出してデータ描画部３０４に中間データを送信する。データ描画部３０３は描画オブジェクト内の疑似透過処理が図８（ｂ）・図８（ｃ）のような描画パターンの途切れた状態ではないため、正常なビットマップデータ４０７をページメモリ３０５に生成することができる。これにより、図５、図６のフローチャートでは、印刷制御部３０８が回避処理時に非可逆圧縮処理を行っても、疑似透過の領域にノイズの少ない描画を形成する。
【００５９】
［実施形態２］
実施形態２では、ＰＤＬデータ解析部３０３が、回避処理の発生前に、描画不具合が発生する描画パターンが生成した描画オブジェクトに含まれているか判定して、含まれていればそれをいったん退避領域へと対比しておく。そして疑似透過処理のための一連の描画オブジェクトがすべて生成されたなら、退避領域の描画オブジェクトを中間データ４０１に戻す。そして回避処理が発生した場合には、特にその内容の判定はせず、中間データをレンダリングして圧縮する。そして、退避した描画オブジェクトがあれば、それは、不可逆圧縮した中間データの後に続く描画オブジェクトとして、中間データ４０１に移動されて格納される。中間データ４０１を作成する様子を図７のフローチャートで説明する。なお、図７のフローチャートを実行するプログラムは、ＲＯＭ２０５に存在しておりＣＰＵ２０２で実行される。また、本実施形態では、描画不具合が発生する描画パターンが実施形態１で説明した疑似透過処理である図８を対象とするため、その説明については省略する。
【００６０】
ステップＳ７０１において、ＰＤＬデータ解析部３０３は、ＰＤＬデータを解釈して描画オブジェクトを作成する。描画オブジェクトは、ドキュメント記憶部３０７へデータ描画部３０４に送信する中間データ４０１として保存される。ここで、ドキュメント記憶部３０７には、中間データ４０１のほかにもＸＯＲ処理を退避する領域が存在する。
【００６１】
ステップＳ７０２において、ＰＤＬデータ解析部は、中間データ４０１が上限値のメモリ容量を上回るデータとなったかどうかを判定する。ＰＤＬデータ解析部が、中間データ４０１のメモリ容量が上限値を上回ると判定したら、Ｓ７１２において回避処理が実行される。中間データ４０１の容量が上限値よりも少なければＳ７０３に分岐する。ステップＳ７１２において、それまでに生成された描画オブジェクトはデータ描画部３０４へ送信され、レンダリングされ、不可逆圧縮され、その圧縮イメージデータは新たな描画オブジェクトとしてドキュメント記憶部３０７へ格納される。その後Ｓ７０３から処理を続行する。
【００６２】
ステップＳ７０３において、ＰＤＬデータ解析部３０３がＳ７０１で作成した描画オブジェクトがＸＯＲ処理かどうかを判定する。ステップＳ７０３において描画オブジェクトＳ７０１がＸＯＲ処理であると判定すれば、ステップＳ７０４においてＰＤＬデータ解析部３０３は、退避領域にＸＯＲ処理の描画オブジェクトがすでに存在するかを判定する。退避領域にＸＯＲ処理が存在すると判定すれば、ステップＳ７０５においてＰＤＬデータ解析部は、退避領域に存在するすべての描画オブジェクトＳ７０１を中間データ４０１に追加する。このときに退避領域に存在する描画オブジェクトは、図８（ａ）のようなＸＯＲ処理＋ＡＮＤ処理＋ＸＯＲ処理という疑似透過処理のための一連の描画パターンを形成する命令群である。疑似透過処理のための描画オブジェクト群をひとまとめにして中間データ４０１に保存することで、疑似透過処理の途中に回避処理による不可逆圧縮が介在することを防止できる。続いてステップＳ７０６において、ＰＤＬデータ解析部３０３は、退避領域内で保持していたデータを全て削除する。ここで、ＰＤＬデータ解析部３０３は退避領域のデータを削除することで、退避領域を、次の疑似透過処理の描画オブジェクト群のために使いまわせる。
【００６３】
ステップＳ７０８において、ＰＤＬデータ解析部３０３は、Ｓ７０１で生成した描画オブジェクトを中間データ４０１へ追加する。このとき描画オブジェクトが追加される場所は、退避領域から移動された疑似透過しょりのための描画オブジェクト群の次のアドレスとなる。
【００６４】
ステップＳ７１０において、ＰＤＬデータ解析部３０３は、のＰＤＬデータが存在するかを判定する。ページ内の全ての描画オブジェクトが生成を終えたら、ステップＳ７１１においてＰＤＬデータ解析部３０３は、それまでに生成しドキュメント記憶部３０７に保存した中間データ４０１をデータ描画部３０４へ送信する。この中間データはレンダリングされて１ページのビットマップデータとなり、Ｓ７１０からの分岐であれば印刷処理に供される。一方、未処理のＰＤＬデータがまだ残っていれば、ＰＤＬデータ生成部３０３は、Ｓ７０１で次の描画オブジェクトをＰＤＬデータから生成する。ＰＤＬデータ生成部３０３は、Ｓ７０１からＳ７１０の処理を繰り返すことで中間データ４０１を生成する。
【００６５】
図７の残りの分岐についても説明する。Ｓ７０４の判定で退避領域にＸＯＲ処理が存在しなかったとき、ＰＤＬデータ解析部３０３はステップＳ７０９において、Ｓ７０１で生成したＸＯＲ処理の描画オブジェクトを一時的に退避領域へ保存する。Ｓ７０９の処理は、疑似透過処理の途中までの描画オブジェクトが生成されている段階で回避処理が生じたとしても、疑似透過処理に係る描画オブジェクトをレンダリングの対象から外すために実行される。Ｓ７１０においてＰＤＬデータ処理部３０３は、ＰＤＬデータから再び次の描画オブジェクトが生成できるかどうかを判定する。
【００６６】
さて、Ｓ７０３の判定処理において、ＰＤＬデータ解析部３０３は、生成した描画オブジェクトがＸＯＲ処理ではないと判定したとき、Ｓ７０７に分岐する。
【００６７】
ステップＳ７０７において、ＰＤＬデータ解析部３０３は、退避領域に描画オブジェクトが存在するかを判定する。退避領域に、何らかの描画オブジェクトが存在した場合、退避されているのはＸＯＲ処理の描画オブジェクトであり、現在処理中の描画オブジェクトをＡＮＤ処理と判定して同じ退避領域に保持する。ＰＤＬデータ解析部３０３は、ＸＯＲ処理の途中のＡＮＤ処理に抜けが生じないようにするため、退避領域に描画オブジェクトが存在するかを常に判定する。一方、ＰＤＬデータ解析部３０３は、Ｓ７０７の分岐で退避領域に描画オブジェクトが存在しないと判定したら、この描画オブジェクトとは、ＸＯＲ処理＋ＡＮＤ処理＋ＸＯＲ処理という疑似透過処理を構成する描画オブジェクトではないと判定してそのまま中間データ４０１へ追加する。
【００６８】
以上のことから、実施形態２では、データ描画部３０４が色合成処理部４０７で同じ領域内の同じ色データの重なりをＸＯＲ処理するよう保障する。そのため、ＰＤＬデータ処理部３０３が回避処理に移行して、途中までの中間データ４０１をデータ描画部３０４がビットマップデータ４０７を生成しても、必ずＸＯＲ処理＋ＡＮＤ処理＋ＸＯＲ処理を、回避処理を挟まずに同じページ内で描画することができる。これにより、描画オブジェクトが回避処理によって別のレイアウトの領域となり、印刷制御部３０８で非可逆圧縮されて再びビットマップデータとして描画されてもノイズの影響を少なくすることができる。
【００６９】
なお実施形態１のＳ６０１の工程を、Ｓ７０３の直前に実行してもよい。この場合、印刷データが透過表現をサポートしていなければＳ７０３に分岐し、サポートしていればＳ７０８に分岐する。
【００７０】
以上のように、実施形態１，２では、中間データとして格納された描画オブジェクトのデータ量が所定値を超えると判定された場合、すなわち回避処理を行う場合、疑似透過処理のための一連の描画オブジェクト群を不可分な描画オブジェクト群として扱い、一連の描画オブジェクト群の全部を回避処理におけるレンダリングの対象とするか、あるいは一切対象としない。この結果、上述したように、疑似透過処理の途中で実行されるビットマップ化処理及び不可逆圧縮による画質劣化を防止できる。
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014117861.tif 000003
【図２】
2014117861.tif 000004
【図３】
2014117861.tif 000005
【図４】
2014117861.tif 000006
【図５】
2014117861.tif 000007
【図６】
2014117861.tif 000008
【図７】
2014117861.tif 000009
【図８】
2014117861.tif 000010
【図９】
2014117861.tif 000011