(57)【要約】【課題】描画コードを画素毎の二値画像データに変換する画像処理装置であって、画像同士の合成処理を含む場合に、出力画像の品質を落とさずにかつ処理負荷を抑えることのできる画像処理装置等を提供する。【解決手段】画像オブジェクトの描画コードを画素毎の二値画像データに変換する画像処理装置において、描画コードに画像オブジェクトの多値階調値と他の画像オブジェクトとの合成処理の有無を示す情報が含まれ、出力範囲を分割した分割領域毎に処理を実行し、合成処理が有ることを示す情報を含む描画コードがある分割領域は、描画コードを画素毎に多値画像データに変換した後に二値画像データに変換し、合成処理が有ることを示す情報を含む描画コードがない分割領域は、描画コードを二値画像データに変換する制御手段と、描画コードと多値画像データと二値画像データを格納する格納手段とを有する。【選択図】  図６
2009232266.tif 000002
【特許請求の範囲】
【請求項１】
出力範囲について、出力する画像オブジェクトの描画コードを画素毎の二値画像データに変換する画像処理装置であって、
前記描画コードには、前記画像オブジェクトの出力色の濃度階調値を多値で表現した多値階調値と、他の画像オブジェクトとの合成処理の有無を示す情報が含まれ、
前記二値画像データには、画素の出力色の濃度階調値を二値で表現した二値階調値が含まれ、
前記出力範囲を分割した分割領域毎に前記変換処理を実行し、前記合成処理が有ることを示す情報を含む前記描画コードがある前記分割領域については、前記描画コードを、画素毎に前記多値階調値を有する多値画像データに変換した後に、当該多値画像データを前記二値画像データに変換し、前記合成処理が有ることを示す情報を含む前記描画コードがない前記分割領域については、前記描画コードを前記二値画像データに変換する、制御手段と、
前記描画コードと前記多値画像データと前記二値画像データを格納する格納手段とを有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記合成処理は、αブレンド処理であり、
当該αブレンド処理は、前記描画コードを前記多値画像データに変換する際に行なわれる
ことを特徴とする画像処理装置。
【請求項３】
出力範囲について、出力する画像オブジェクトの描画コードを画素毎の二値画像データに変換する処理を制御装置に実行させる画像処理プログラムであって、
前記描画コードには、前記画像オブジェクトの出力色の濃度階調値を多値で表現した多値階調値と、他の画像オブジェクトとの合成処理の有無を示す情報が含まれ、
前記二値画像データには、画素の出力色の濃度階調値を二値で表現した二値階調値が含まれ、
前記出力範囲を分割した分割領域毎の前記変換処理であって、前記合成処理が有ることを示す情報を含む前記描画コードがある前記分割領域については、前記描画コードを、画素毎に前記多値階調値を有する多値画像データに変換した後に、当該多値画像データを前記二値画像データに変換し、前記合成処理が有ることを示す情報を含む前記描画コードがない前記分割領域については、前記描画コードを前記二値画像データに変換する、前記変換処理を前記制御装置に実行させる
ことを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力画像の描画コードを画素毎の二値画像データに変換する画像処理装置等に関し、特に、画像同士の合成処理を含む場合に、出力画像の品質を落とさずに、かつ、処理負荷を抑えることのできる画像処理装置等に関する。
【背景技術】
【０００２】
従来、いわゆるモノクロプリンタなどのモノクロ・バイレベル（二値）画像の画像生成装置が用いられている。かかる画像生成装置では、例えば、ＰＤＬ（ページ記述言語）で対象画像の情報を受け取り、それを一旦、装置で処理のしやすい中間コードなるものに変換する。この中間コードは、全体画像を複数の領域に分割した分割領域毎に、その領域内に描画するオブジェクトをコード化したものである。その後、この中間コードは、画素毎のデータに展開され、二値の画像データが生成される。そして、この二値画像データに基づく機構部の動作で所定の媒体に対して画像が形成される。
【０００３】
ところで、このようなモノクロプリンタを含む画像生成装置では、上記描画するオブジェクトが重なり合う場合があり、そのような場合のオブジェクト同士の合成処理として、各種の手法が用いられている。例えば、αブレンドとして知られる数値演算を用いるものや各種の論理演算を用いるものがある。そして、この合成処理は、一般的には、オブジェクト毎に表される描画コードを画素毎の画像データに変換する際になされる。
【０００４】
下記特許文献１では、描画オブジェクトの重なり領域ではＲＧＢ空間でのレンダリング処理をホストコンピュータで行い、重なりがない領域ではＣＭＹＫ空間でのレンダリング処理をプリンタ側で行なうことが記載されている。
【特許文献１】特開平１１−３５５５８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したモノクロ・バイレベルプリンタにおいて上記オブジェクト同士の合成処理がある場合、従来の一般的な方法によれば、描画コードを、二値の画素毎の画像データに展開する過程でこの合成処理がなされる。従って、この方法では、少なくとも、合成する相手の画像は既に二値のデータになっており、すなわち、画像の再現性において精度の悪いデータになっているので、良好な合成処理の結果は得られず、生成される画像の品質を下げてしまうという課題がある。
【０００６】
また、良好な合成結果を得るために、画像全体について、描画コードを多値の画素毎の画像データに展開する方法が考えられるが、この場合には、データを保持するメモリ容量、データ処理量の点で処理負荷が増大してしまう。
【０００７】
そこで、本発明の目的は、出力画像の描画コードを画素毎の二値画像データに変換する画像処理装置であって、画像同士の合成処理を含む場合に、出力画像の品質を落とさずに、かつ、処理負荷を抑えることのできる画像処理装置、等を提供することである。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明の一つの側面は、出力範囲について、出力する画像オブジェクトの描画コードを画素毎の二値画像データに変換する画像処理装置において、前記描画コードには、前記画像オブジェクトの出力色の濃度階調値を多値で表現した多値階調値と、他の画像オブジェクトとの合成処理の有無を示す情報が含まれ、前記二値画像データには、画素の出力色の濃度階調値を二値で表現した二値階調値が含まれ、前記出力範囲を分割した分割領域毎に前記変換処理を実行し、前記合成処理が有ることを示す情報を含む前記描画コードがある前記分割領域については、前記描画コードを、画素毎に前記多値階調値を有する多値画像データに変換した後に、当該多値画像データを前記二値画像データに変換し、前記合成処理が有ることを示す情報を含む前記描画コードがない前記分割領域については、前記描画コードを前記二値画像データに変換する、制御手段と、前記描画コードと前記多値画像データと前記二値画像データを格納する格納手段とを有する、ことである。
【０００９】
更に、上記の発明において、一つの態様は、前記合成処理は、αブレンド処理であり、当該αブレンド処理は、前記描画コードを前記多値画像データに変換する際に行なわれる、ことを特徴とする。
【００１０】
上記の目的を達成するために、本発明の別の側面は、出力範囲について、出力する画像オブジェクトの描画コードを画素毎の二値画像データに変換する処理を制御装置に実行させる画像処理プログラムにおいて、前記描画コードには、前記画像オブジェクトの出力色の濃度階調値を多値で表現した多値階調値と、他の画像オブジェクトとの合成処理の有無を示す情報が含まれ、前記二値画像データには、画素の出力色の濃度階調値を二値で表現した二値階調値が含まれ、前記出力範囲を分割した分割領域毎の前記変換処理であって、前記合成処理が有ることを示す情報を含む前記描画コードがある前記分割領域については、前記描画コードを、画素毎に前記多値階調値を有する多値画像データに変換した後に、当該多値画像データを前記二値画像データに変換し、前記合成処理が有ることを示す情報を含む前記描画コードがない前記分割領域については、前記描画コードを前記二値画像データに変換する、前記変換処理を前記制御装置に実行させる、ことである。
【００１１】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１３】
図１は、本発明を適用した画像処理装置であるコントローラを備えるプリンタの実施の形態例に係る構成図である。図１に示すコントローラ２１が、本発明を適用した画像処理装置であり、印刷の１ページを分割したバンド領域毎に、描画オブジェクトの合成処理の有無により描画コード（中間コード）から画素毎の画像データに展開する処理を変更し、すなわち、当該合成処理がないバンドでは描画コードから直接二値の画像データに展開し、合成処理があるバンドでは描画コードから多値の画像データに展開した後に二値化する、ことにより、出力画像の品質を落とさずに、かつ、処理負荷を抑えたモノクロ・バイレベルでの印刷を行なおうとするものである。
【００１４】
図１に示すホストコンピュータ１は、プリンタ２に対して印刷要求を行なうホスト装置であり、ユーザ操作等に基づいて画像データと制御コマンドを含む印刷データをプリンタ２に送信する。なお、ホストコンピュータ１は、所謂パーソナルコンピュータなどで構成することができる。
【００１５】
ホストコンピュータ１内のプリンタドライバ１１は、ホストコンピュータ１内のアプリケーション（図示せず）などからのデータを受け取って、プリンタ２に送信する上記印刷データを生成する部分である。なお、プリンタドライバ１１は、上記機能に関する処理を指示するプログラムと当該プログラムに従って処理を実行するホストコンピュータ１の制御装置（図示せず）等によって構成される。また、プリンタドライバ１１から送信される印刷データは、ここではＰＤＬ形式であり、画像の色はグレースケール（黒色の多値）で表現され、描画オブジェクトにはαブレンドを行なうか否かの情報が付加される。
【００１６】
次に、プリンタ２は、図１に示すように、コントローラ２１及び印刷実行部２２などで構成される、いわゆるモノクロのレーザプリンタである。本プリンタ２では、多値の画像データを受け取って二値の画像データに変換し、当該データに基づいて要求された画像の生成を行なう。
【００１７】
コントローラ２１は、前記ホストコンピュータ１から送信される印刷データを受信し、当該データに含まれる制御コマンドを解釈すると共に、当該データに含まれる画像データに対して所定の処理を施して印刷実行部２２側へ提供するデータを生成する。コントローラ２１には、図１に示すように、Ｉ／Ｆ２３、ＣＰＵ２４、ＲＯＭ２５、ＲＡＭ２６、エンジンＩ／Ｆ２７等が備えられる。
【００１８】
Ｉ／Ｆ２３は、ホストコンピュータ１から送信される前記印刷データを受信する部分である。ＲＯＭ２５は、プリンタ２を制御するための各種プログラムを記憶する部分である。
【００１９】
ＲＡＭ２６は、前記受信した印刷データ、コントローラ２１で処理された各過程での画像データ等を格納するメモリであり、印刷実行部２２で印刷処理が行われる各ページの画像データは、ここからエンジンＩ／Ｆ２７に引き渡される。より具体的には、前記受信したＰＤＬから生成される１ページ分の中間コード、中間コードを展開して得られる１バンド分の二値画像データ、中間コードを展開して得られる１バンド分の多値画像データ、及び、１ページ分の圧縮した上記二値画像データ等が格納される。そして、上記１バンド分の二値画像データを保持する部分（領域）を二値バンドバッファと呼び、上記１バンド分の多値画像データを保持する部分（領域）を多値バンドバッファと呼ぶ。
【００２０】
ＣＰＵ２４は、本プリンタ２において行われる各種処理を制御する部分であるが、特に、前記受信した印刷データに含まれる画像データをＲＡＭ２６に格納する処理、前記印刷データに含まれる制御コマンドを解釈して印刷実行部２２に対して適切な印刷処理を指示する処理、及び、ユーザとのインターフェースを形成する操作ユニットを制御する処理等を司る。本プリンタ２では、ＣＰＵ２４が行なう、中間コードの生成処理及び展開処理に特徴があり、その具体的な内容については後述する。なお、ＣＰＵ２４が実行する処理は、主に前記ＲＯＭ２５に記憶されたプログラムに従って行われるものである。
【００２１】
次に、エンジンＩ／Ｆ２７は、印刷実行部２２で印刷を実行する際に、所定のタイミングで前述したＲＡＭ２６に格納されている画像データを読み出し、それらに所定の処理を施した後に印刷実行部２２に引き渡す、コントローラ２１と印刷実行部２２とのインターフェースを司る部分である。なお、このエンジンＩ／Ｆ２７には、図示されていないが、解凍ユニット、パルス幅変調ユニット等が備えられ、これら各部により、エンジンＩ／Ｆ２７では、上記読み出した画像データの解凍、パルス幅変調処理などがなされ、処理後の信号が印刷実行部２２へ送られる。また、エンジンＩ／Ｆ２７は、具体的には、ＡＳＩＣで構成されている。
【００２２】
次に、印刷実行部２２は、図示していないが、帯電ユニット、露光ユニット、現像ユニット、転写ユニット、定着ユニット等で構成される。当該印刷実行部２２では、前記エンジンＩ／Ｆ２７から受信する信号に基づき、ＣＰＵ２４からの印刷指示に従った印刷処理を実行し、所定の印刷媒体に印刷要求に従った画像が形成される。
【００２３】
以上説明したような構成を有する本実施の形態例に係るプリンタ２では、コントローラ２１で行なわれる中間コードの生成処理及び中間コードの展開処理等に特徴があり、以下、その点を中心に印刷時の処理内容について説明する。
【００２４】
図２は、本プリンタ２のコントローラ２１における印刷時の処理手順を例示したフローチャートである。ここには、１ページの処理について記述されており、図２に基づいて１ページ分の印刷について以下に説明する。また、図３は、印刷する１ページ分の画像を例示した図である。図３に示す例では、１ページに４つの描画対象のオブジェクト（画像オブジェクト）が含まれている。また、このケースでは、１ページの領域が４つのバンド（図中の第１バンドから第４バンド）に分割されている。
【００２５】
前述の通り、プリンタ２がホストコンピュータ１から印刷データを受信すると、そのＰＤＬ形式のデータがＲＡＭ２６に格納されるので、ＣＰＵ２４は、当該印刷データについての処理を開始する。まず、処理対象ページの領域をバンド領域に分割し、全バンドについて、ＡｌｐｈａＢｌｅｎｄＦｌａｇなるフラグの値を０に設定する（ステップＳ１）。ここで、バンドとは、１ページの領域を副走査方向（印刷実行部２２において用紙が搬送される方向）に等間隔で分割した各領域のことである。また、ＡｌｐｈａＢｌｅｎｄＦｌａｇはこのバンド毎に設けられるフラグであり、そのバンド内においてαブレンドによる合成処理をする画像オブジェクトがあるか否かを示すものである。
【００２６】
図３に示した例では、４バンドに分割され、その各バンドにおいて上記フラグが初期化され、ＡｌｐｈａＢｌｅｎｄＦｌａｇ＝０となる。
【００２７】
次に、ＣＰＵ２４は、前記格納したＰＤＬデータを順次読み込む（ステップＳ２）。ＰＤＬデータには、描画する画像オブジェクトそのものを示すものと、各種の設定や制御のためのものがあり、ＣＰＵ２４は、まず、読み込んだデータが画像オブジェクトにかかるものであるか否かを判断し（ステップＳ３）、画像オブジェクトにかかるものではない場合には（ステップＳ３のＮｏ）、ステップＳ４に移行する。
【００２８】
ステップＳ４では、読み込んだＰＤＬデータが改ページコマンドであるか否かが判断される。改ページコマンドとは、１ページの最後を示すコマンドであり、読み込んだＰＤＬデータが改ページコマンドでなければ（ステップＳ４のＮｏ）、そのＰＤＬデータは、不透過率やグレイ濃度などの値を設定するコマンドであり、ＣＰＵ２４は、そのコマンドに従って設定を行う（ステップＳ５）。当該設定された各パラメータの値は、次の設定がなされるまで保持され、保持され値は、その後に来る画像オブジェクトに反映される。例えば、不透過率が１００％に設定された後に、画像オブジェクトのデータが読み込まれれば、当該画像オブジェクトの不透過率は１００％であるとされる。グレイ濃度（例えば、０から２５５の値）についても同様である。その後、処理がステップＳ２に戻る。
【００２９】
一方、前記ステップＳ３において、読み込んだデータが画像オブジェクトにかかるものである場合には（ステップＳ３のＹｅｓ）、画像オブジェクトの種類が判断される。画像オブジェクトには、写真などのイメージ、文字、及び矩形（グラフィックを構成するもの）があり、上記処理では、ＣＰＵ２４が、読み込んだデータがどの画像オブジェクトにかかるものであるかを判断する。図３に示す例では、一つのイメージ、二つの矩形、及び五つの文字にかかる画像オブジェクトが存在する。
【００３０】
上記判断により、ＰＤＬデータが文字にかかるものである場合には（ステップＳ６のＹｅｓ）、処理がステップＳ７へ、ＰＤＬデータがイメージにかかるものである場合には（ステップＳ８のＮｏ）、処理がステップＳ１０へ、また、ＰＤＬデータが矩形にかかるものである場合には（ステップＳ８のＹｅｓ）、処理がステップＳ９へ移行する。
【００３１】
そして、ＣＰＵ２４は、それら各ステップにおいてその画像オブジェクトの中間コードを生成し、ＲＡＭ２６の所定箇所に登録（格納）する（ステップＳ７、Ｓ９、Ｓ１０）。図４は、生成される中間コードを例示した図である。図４の（Ａ）、（Ｂ）、及び（Ｃ）は、それぞれ、イメージ、矩形、及び文字の中間コードを例示している。なお、中間コード生成時の処理内容については後述する。その後、処理はステップＳ２に戻る。
【００３２】
また、前述したステップＳ４において、読み込んだＰＤＬデータが改ページコマンドである場合には（ステップＳ４のＹｅｓ）、当該ページの中間コード作成・登録処理が終了し、ＣＰＵ２４は、当該中間コードの展開処理を行う（ステップＳ１１）。当該展開処理により、各バンド内において画像オブジェクト単位で表されていた描画対象のデータが、画素毎の二値画像データに変換される。なお、当該展開処理の具体的な処理手順いついては後述する。展開されたデータは、圧縮されてＲＡＭ２６のページバッファに格納される。そして、対象ページの圧縮後のデータがページバッファに揃い、印刷実行部２２で処理を開始するタイミングになると、当該データが読み出されて、順次、エンジンＩ／Ｆ２７による処理が実行され、その後の信号が印刷実行部２２へ出力されていく（ステップＳ１２）。
【００３３】
印刷実行部２２では、当該信号に基づく印刷動作を実行し、当該ページの画像が用紙などの印刷媒体上に形成されプリンタ２から排出される。
【００３４】
このようにして、印刷時における処理がなされるが、前述した中間コードの作成・登録処理についてより具体的な手順を説明する。図５は、矩形の中間コードを作成、登録する際の処理手順を例示したフローチャートである。図５に示す処理は、図２のステップＳ９に相当する。ここでは、図５に基づいて、読み込んだＰＤＬデータが矩形の画像オブジェクトにかかるものであった場合について説明する。
【００３５】
まず、ＣＰＵ２４は、読み込んだＰＤＬデータを解釈し、その矩形の画像オブジェクトが描画される範囲を含むバンドを決定する（ステップＳ９１）。すなわち、当該画像オブジェクトの中間コードを登録するバンドを決定する。中間コードは、前述したバンド毎に生成されるので、画像オブジェクトが二つのバンドにかかって位置する場合には、その二つのバンドに中間コードが登録される。図３に示した例において、対象の画像オブジェクトが矩形＃１であった場合には、中間コードを登録するバンドとして第１バンド及び第２バンドが決定される。
【００３６】
次に、上記決定したバンドの一つのバンドについて処理を行う。そして、ＣＰＵ２４は、矩形のそのバンドに存在する部分について、矩形の中間コードを作成し、当該バンドの中間コードとしてＲＡＭ２６に登録する（ステップＳ９２）。作成・登録される矩形の中間コードは、例えば、図４の（Ｂ）に示すようなものである。「ＯｐＣｏｄｅ」は、画像オブジェクトの種別を示し、ここでは矩形であるのでＲＥＣＴＡＮＧＬＥという値になっている。「不透過率」は、αブレンドの際の係数を示し、１００％である場合にはαブレンドを行わない。「グレイ濃度」は、当該矩形の色の濃度階調値を示し、例えば、０から２５５の２５６階調で表される。また、「バンド内位置」（ｘ、ｙ）は、矩形の左上の頂点が存在するバンド内の位置を縦横の座標で表現したものである。また、「展開幅」及び「展開高さ」は、描画する矩形の縦横の大きさを示しており、幅がｗ画素、高さがｈ画素の矩形であることを表している。
【００３７】
従って、この中間コードは、当該バンドの（ｘ、ｙ）の位置から、幅がｗ画素、高さがｈ画素の矩形を、グレイ濃度ｇ、不透過率αで描画すべきことを示している。なお、これらの情報は前記ＰＤＬデータから取得される。図３の例では、例えば、矩形＃１について、第１バンドの処理において、矩形＃１の上側の第１バンドに含まれる部分についてこのような中間コードが作成される。
【００３８】
このようにして中間コードを登録すると、ＣＰＵ２４は、当該中間コードの画像オブジェクトの不透過率が１００％であるか否かをチェックし（ステップＳ９３）、１００％である場合には（ステップＳ９３のＹｅｓ）、当該バンドについての処理を終了し、ステップＳ９５に移行する。一方、１００％でない場合には（ステップＳ９３のＮｏ）、前述したＡｌｐｈａＢｌｅｎｄＦｌａｇの値を１とする。すでに、当該バンドのＡｌｐｈａＢｌｅｎｄＦｌａｇの値が１になっていれば、そのままの値とする。図３の例において、矩形＃２の不透過率は１００％でないので、第２バンドについてはＡｌｐｈａＢｌｅｎｄＦｌａｇ＝１とされる。このフラグの値の設定後、当該バンドについての処理を終了し、ステップＳ９５に移行する。
【００３９】
ステップＳ９５では、処理中の画像オブジェクトについて、前記決定した全てのバンドについての処理が終了したかがチェックされ、終了していなければ（ステップＳ９５のＮｏ）、次のバンドを選択してステップＳ９２からの処理を実行する。
【００４０】
そして、前記決定した全てのバンドについての処理が終了すれば（ステップＳ９５のＹｅｓ）、一つの矩形についての中間コード作成・登録処理が終了する。なお、画像オブジェクトがイメージや文字である場合についても同様に中間コードの作成・登録処理が実行される。イメージの場合には、例えば、図４の（Ａ）に示すような中間コードが作成されて登録される。イメージの場合には、画素毎に色の濃度階調値を有する所定サイズの画像データが前記印刷データで受信されるので、その画像データをソースイメージとしてＲＡＭ２６の所定アドレスに格納し、中間コードでは、そのソースイメージのアクセス（ａｄｄｒ）及びサイズ（幅ｓｗと高さｓｈ）の情報が収められる。
【００４１】
文字の場合には、例えば、図４の（Ｃ）に示すような中間コードが作成されて登録される。文字については、各文字についてプリンタ２で各サイズの文字ビットマップデータが生成され、ＲＡＭ２６の所定アドレスに保持されるので、中間コードでは該当する文字ビットマップデータのアドレスを示すポインタ情報が格納される。
【００４２】
イメージ、文字の中間コードについてその他の情報は矩形の場合と同様である。
【００４３】
次に、前述した中間コードの展開処理についてさらに説明する。図６は、中間コードの展開処理の手順を例示したフローチャートである。図６に示す処理は、図２のステップＳ１１に相当する。ここでは、図６に基づいて、前記作成・登録された１ページ分の中間コードについて展開処理を行う場合を説明する。
【００４４】
まず、ＣＰＵ２４は、処理対象とするバンドの番号であるＢａｎｄＮｏを１として第１バンドについて処理を開始する（ステップＳ１１１）。前述の中間コード作成・登録処理で説明したように、各画像オブジェクトの中間コードはバンドに分割されて作成され、バンド毎に登録されるので、１ページ分（全画像オブジェクト）の中間コードは、バンド毎に登録されている。そして、各バンドのＡｌｐｈａＢｌｅｎｄＦｌａｇフラグは、中間コードの登録終了時点で０または１の値に設定されている。従って、この展開処理では、バンド毎に処理が実行される。
【００４５】
ＣＰＵ２４は、ＢａｎｄＮｏとして設定されている番号のバンドについて、まず、中間コードが登録されておるか否かをチェックし（ステップＳ１１２）、登録されていない場合には（ステップＳ１１２のＮｏ）、当該バンドの処理を終了して処理がＳ１１８に移行する。
【００４６】
一方、中間コードが登録されている場合には（ステップＳ１１２のＹｅｓ）、まず、そのバンドのＡｌｐｈａＢｌｅｎｄＦｌａｇフラグの値をチェックする（ステップＳ１１３）。その結果、ＡｌｐｈａＢｌｅｎｄＦｌａｇの値が０であれば（ステップＳ１１３のＮｏ）、当該バンドの中間データについて二値バンドバッファへの展開処理を実行する（ステップＳ１１４）。一方、ＡｌｐｈａＢｌｅｎｄＦｌａｇの値が１であれば（ステップＳ１１３のＹｅｓ）、当該バンドの中間データについて多値バンドバッファへの展開処理を実行する（ステップＳ１１５）。すなわち、上記フラグの値が０であり、αブレンド処理を行うべき画像オブジェクトが含まれていないバンドについては、中間コードから、直接、二値の画像データ（画素が０又は１の値を有する画像データ）を生成し、上記フラグの値が１であり、αブレンド処理を行うべき画像オブジェクトが含まれているバンドについては、中間コードから、多値の画像データ（画素が、例えば、０から２５５のいずれかの値を有する画像データ）を生成する。そして、αブレンド処理を行うべき画像オブジェクトについてはそのαブレンド処理を行って展開後の画素の値が決定される。なお、これらステップＳ１１４及びＳ１１５の処理内容については、後で詳述する。
【００４７】
その後、多値バンドバッファへの展開処理が行われた場合には、その多値の画像データを二値化する（ステップＳ１１６）。そして、二値バンドバッファに保持される。
【００４８】
このようにして、当該バンドについて二値の画像データが生成されると（Ｓ１１４、Ｓ１１６）、ＣＰＵ２４は、二値バンドバッファに保持される画像データを圧縮処理し、データ容量を小さくしてＲＡＭ２６のページバッファにおける所定箇所に記憶する。そして、上記使用していたバンドバッファを解放する（ステップＳ１１７）。
【００４９】
以上で当該バンドの処理が終了し、上記ＢａｎｄＮｏの値を１つ増やす（ステップＳ１１８）。そして、対象ページの全バンドについて処理が終了していなければ、（ステップＳ１１９のＮｏ）、上記ＢａｎｄＮｏのバンドについてステップＳ１１２からの処理を行う。
【００５０】
そして、対象ページの全バンドについて処理が終了すれば、（ステップＳ１１９のＹｅｓ）、中間コードの展開処理を終了する。
【００５１】
このように、本コントローラ２１では、αブレンド処理を含まないバンドについては、二値バンドバッファのみを用い、αブレンド処理を含むバンドについては、一旦、αブレンド処理を含む多値バンドバッファへの展開処理を行い、その後に二値化する。また、そのどちらにするかの判断は、中間コード生成時に設定されるフラグの値によって行われる。図３に示す例では、αブレンド処理を含まない第１バンドでは直接二値の画像データが作成され、αブレンド処理を含む第２バンドでは多値バンドバッファへの展開処理がなされる。
【００５２】
次に、前記二値バンドバッファへの展開処理についてさらに説明する。図７は、二値バンドバッファへの展開処理の手順を例示したフローチャートである。図７に示す処理は、図６のステップＳ１１４に相当する。ここでは、図７に基づいて、前記作成・登録された１バンド分の中間コードについて展開処理を行う場合を説明する。
【００５３】
まず、ＣＰＵ２４は、ＲＡＭ２６内に二値バンドバッファを確保し（ステップＳ１１４−１）、対象バンドについて登録されている一つの中間コードを取り出す（ステップＳ１１４−２）。そして、その中間コードがイメージの画像オブジェクトにかかるものである場合には（ステップＳ１１４−３のＹｅｓ）、まず、中間コードのポインタ情報により、前述したソースイメージを読み出し、バンド内に描画するサイズにスケーリングを行う。図４の（Ａ）に例示したように、イメージの中間コードには、展開幅及び展開高さとして展開時のサイズと、ソースイメージ幅及びソースイメージ高さとしてソースイメージのサイズの情報があるので、これらの情報から上記スケーリングを行う。その後、イメージの各画素は多値で表現されているためその値を二値化して二値バンドバッファへ収める（ステップＳ１１４−４）。かかる二値化処理では、従来から使用されている所定サイズの閾値マトリックスを用いる方法などを採用することができる。
【００５４】
また、取り出した中間コードが文字の画像オブジェクトにかかるものである場合には（ステップＳ１１４−５のＹｅｓ）、ＣＰＵ２４は、まず、中間コードが示すグレイ濃度に対応した二値パターンを取得する（ステップＳ１１４−６）。この二値パターンは、各グレイ濃度（例えば、０から２５５の２５６階調）を二値の画素の集合で表現するものであり、所定のサイズ（Ｘピクセル×Ｙピクセル）を有している。また、これらの二値パターンは、予め作成してプリンタ２内に保持しておく。
【００５５】
次に、文字の中間コードの含まれる情報から、文字を描画する領域を決定し、その領域に上記取得した二値パターンを当てはめて、各画素の二値表現での値を決定し、その値を二値バンドバッファへ収める（ステップＳ１１４−８）。なお、文字を描画する領域は、前述した文字ビットマップデータを参照して決定される。
【００５６】
また、取り出した中間コードが矩形の画像オブジェクトにかかるものである場合には（ステップＳ１１４−５のＮｏ）、文字の場合と同様に、中間コードが示すグレイ濃度に対応した二値パターンを取得する（ステップＳ１１４−７）。そして、矩形の中間コードの含まれる情報から、矩形を描画する領域を決定し、その領域に上記取得した二値パターンを当てはめて、各画素の二値表現での値を決定し、その値を二値バンドバッファへ収める（ステップＳ１１４−９）。
【００５７】
なお、文字及び矩形の処理では上述のように予め用意しておいた二値パターンを用いたが、イメージの処理のように、グレイ濃度から対象領域の各画素の多値表現での値を求め、その値を閾値マトリックス等で二値化してもよい。
【００５８】
このようにして、どの画像オブジェクトであっても二値の画像データが二値バンドバッファへ収められて、当該取り出した中間コードについての処理が終了する。そして、対象バンドに登録されている全中間コードについての処理が終了するまで、各中間コードについてステップＳ１１４−２からの処理繰り返される。
【００５９】
そして、全中間コードについての展開処理が終了すれば（ステップＳ１１４−１０のＹｅｓ）、対象バンドについての処理を終了する。
【００６０】
次に、前記多値バンドバッファへの展開処理についてさらに説明する。図８は、多値バンドバッファへの展開処理の手順を例示したフローチャートである。図８に示す処理は、図６のステップＳ１１５に相当する。ここでは、図８に基づいて、前記作成・登録された１バンド分の中間コードについて展開処理を行う場合を説明する。
【００６１】
まず、ＣＰＵ２４は、ＲＡＭ２６内に多値バンドバッファを確保する（ステップＳ１１５−１）。多値が８ビットで表現される場合には、前記二値バンドバッファの８倍の領域が必要となる。その後、対象バンドについて登録されている一つの中間コードを取り出す（ステップＳ１１５−２）。そして、その中間コードがイメージの画像オブジェクトにかかるものである場合には（ステップＳ１１５−３のＹｅｓ）、まず、中間コードのポインタ情報により、前述したソースイメージを読み出し、バンド内に描画するサイズにスケーリングを行う。当該スケーリングは、前述した二値バンドバッファへの展開処理の場合と同様に行われる。その後、スケーリング後のイメージデータは各画素が多値で表現される値を有しているので、不透過率が１００％であれば、そのまま多値バンドバッファに格納する。また、不透過率が１００％でない場合には、αブレンド処理を行って処理後の値を多値バンドバッファに格納する（ステップＳ１１５−４）。
【００６２】
αブレンド処理では、各画素毎に以下の式で処理後の画素値を決定する。
【００６３】
Ｄ２＝αＳ＋（１−α）Ｄ１
但し、
Ｄ２：処理後の値
α：不透過率（０から１の値、１００％で１）
Ｓ：描画する画像オブジェクトの値
Ｄ１：元の値
また、取り出した中間コードが文字の画像オブジェクトにかかるものである場合には（ステップＳ１１５−５のＹｅｓ）、ＣＰＵ２４は、文字の中間コードの含まれる情報から、文字を描画する領域を決定し、不透過率が１００％であれば、その領域の画素の値を中間コードのグレイ濃度の値として、多値バンドバッファに格納する。なお、文字を描画する領域は、前述した文字ビットマップデータを参照して決定される。また、不透過率が１００％でない場合には、上記決定した領域の各画素についてαブレンド処理を行い処理後の値を多値バンドバッファに格納する（ステップＳ１１５−６）。αブレンド処理では上述の式を用い、Ｓの値としては、中間コードのグレイ濃度の値が用いられる。
【００６４】
また、取り出した中間コードが矩形の画像オブジェクトにかかるものである場合には（ステップＳ１１５−５のＮｏ）、ＣＰＵ２４は、矩形の中間コードの含まれる情報から、矩形を描画する領域を決定し、不透過率が１００％であれば、その領域の画素の値を中間コードのグレイ濃度の値として、多値バンドバッファに格納する。また、不透過率が１００％でない場合には、上記決定した領域の各画素についてαブレンド処理を行い処理後の値を多値バンドバッファに格納する（ステップＳ１１５−７）。αブレンド処理では上述の式を用い、Ｓの値としては、中間コードのグレイ濃度の値が用いられる。
【００６５】
このようにして、どの画像オブジェクトであっても多値の画像データが多値バンドバッファへ収められて、当該取り出した中間コードについての処理が終了する。そして、対象バンドに登録されている全中間コードについての処理が終了するまで、各中間コードについてステップＳ１１５−２からの処理繰り返される。
【００６６】
そして、全中間コードについての展開処理が終了すれば（ステップＳ１１５−８のＹｅｓ）、対象バンドについての処理を終了する。
【００６７】
以上説明したように、本実施の形態例に係るプリンタ２のコントローラ２１では、中間コードから二値画像データへ展開する際に、αブレンド処理を行う必要があるバンドについては、一旦、多値バンドバッファへ展開処理を行った後に二値化し、αブレンド処理を行う必要がないバンドについては、多値バンドバッファへ展開することなく中間コードから二値化して二値バンドバッファへ展開する。従って、αブレンド処理を行う必要があるバンドについては、そのαブレンド処理が多値バンドバッファへの展開過程で実行され、すなわち、αブレンド処理が多値のデータ同士で行われるので、画像オブジェクト同士の合成処理を精度良く行うことができ、その結果、画像の出力品質を高めることができる。また、αブレンド処理を行う必要がないバンドについては、多値バンドバッファへの展開処理を行わないので、メモリ容量や処理量の観点で負荷を抑えることができる。
【００６８】
なお、上述の実施の形態例では、画像オブジェクト同士の合成処理としてαブレンド処理が用いられていたが、合成処理を従来行なわれているような各種の論理演算で行なう場合にも本発明を適用することができる。なお、その論理演算において、すでにバンドバッファに展開されているデータを用いる場合に、その演算を含むバンドについては前述した多値バンドバッファへの展開処理を実行する。これにより、やはり合成処理の精度を高め出力品質を向上させることができる。また、論理演算が必要であっても、バンドバッファに展開されているデータを用いないバンドについては、直接二値バンドバッファへの展開処理を実行する。これにより、不必要に処理負荷を増やしてしまうことを防止できる。
【００６９】
また、上述の実施の形態例では、１ページ分の圧縮された二値画像データをページバッファに格納した後、印刷実行部２２の動作と同期した処理として、当該二値画像データに対する処理が開始される場合について説明したが、前述した１ページ分の中間コードまでを作成しておき、その後の展開処理からを上述の印刷実行部２２の動作と同期した処理として実行する場合にも本発明を適用することができる。この場合、αブレンドが必要であり多値バンドバッファへの展開処理を実行するバンドについては、この展開処理に時間を要し、上記印刷実行部２２の動作と同期した処理でこの展開処理を行うことが難しいので、中間コードの作成時に、事前に展開処理を実施し、展開後の二値画像データをＲＡＭ２６に保持し、中間コードにはそのデータへのポインタ情報を格納するようにする。そして、印刷実行部２２の動作と同期した処理では、その事前展開された二値画像データが用いられる。また、αブレンドが必要でないバンドについては、印刷実行部２２の動作と同期した処理の中で中間コードから直接二値画像データへ展開する。
【００７０】
また、上述の実施の形態例では、プリンタ２がＰＤＬで印刷データを受信する場合について説明したが、ホストコンピュータ１側で上述の二値画像データまでを作成する場合にも本発明を適用することができる。この場合には、プリンタドライバ１１が、コントローラ２１に換わって前述した中間コードの展開処理までの処理を同様に実行する。そして、生成された二値画像データを圧縮してプリンタ２へ送信し、プリンタ２は受信した圧縮後の二値画像データを用いて印刷実行部２２の動作と同期した処理から印刷処理を実行する。この場合にも、合成処理の精度を高めることができ、ホストコンピュータ１側の処理負荷を不必要に増やすことがない。
【００７１】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【００７２】
【図１】本発明を適用した画像処理装置であるコントローラを備えるプリンタの実施の形態例に係る構成図である。
【図２】本プリンタ２のコントローラ２１における印刷時の処理手順を例示したフローチャートである。
【図３】印刷する１ページ分の画像を例示した図である。
【図４】生成される中間コードを例示した図である。
【図５】矩形の中間コードを作成、登録する際の処理手順を例示したフローチャートである。
【図６】中間コードの展開処理の手順を例示したフローチャートである。
【図７】二値バンドバッファへの展開処理の手順を例示したフローチャートである。
【図８】多値バンドバッファへの展開処理の手順を例示したフローチャートである。
【符号の説明】
【００７３】
１  ホストコンピュータ、  ２  プリンタ、  １１  プリンタドライバ、  ２１  コントローラ、  ２２  印刷実行部、  ２３  Ｉ／Ｆ、  ２４  ＣＰＵ、  ２５  ＲＯＭ、  ２６  ＲＡＭ、  ２７  エンジンＩ／Ｆ
【図１】
2009232266.tif 000003
【図２】
2009232266.tif 000004
【図４】
2009232266.tif 000005
【図５】
2009232266.tif 000006
【図６】
2009232266.tif 000007
【図７】
2009232266.tif 000008
【図８】
2009232266.tif 000009
【図３】
2009232266.tif 000010