説明

画像処理プログラム及び画像処理システム

【課題】プリンタドライバにおける太線化処理に係る処理負荷を低減することで、描画処理の処理速度を向上させる。
【解決手段】プリンタドライバは、アプリケーションから出力される描画命令で示される線の太さが規定値以下である描画物に対して太線化処理を行う。そこで、太線化処理の対象とならない描画物を描画領域に描画し(a)、太線化処理の対象となる描画物を合成領域に描画する(b)。さらに、次の太線化処理の対象となる描画物の描画色が、既に合成領域に描画されている他の描画物の描画色と同一であるならば、当該描画物を合成領域に追加して描画する(c)。そして、複数の描画物が描画されている合成領域をまとめて太線化し(d)、この太線化した合成領域を描画命令で示され描画領域(a)へ合成して、合成画像(e)を得る。このようにすることで、太線化処理に係る処理負荷を低減する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パーソナルコンピュータ等の情報処理装置において、プリンタに出力させるための画像の描画処理を行うプリンタドライバに関する。
【背景技術】
【0002】
従来、パーソナルコンピュータ(PC)等の情報処理装置と、この情報処理装置からの情報を印刷するプリンタとからなるプリンタシステムにおいては、印刷する画像の描画処理を情報処理装置側で機能するプリンタドライバで行い、このプリンタドライバによって描画された画像をプリンタで印刷するものが知られている。
【0003】
この種のプリンタシステムにおいて、情報処理装置のアプリケーションで作成したドキュメントを印刷する際、プリンタドライバは、アプリケーションからの描画命令に沿って文字、図形、画像等からなる印刷データをビットマップ展開し、このビットマップ展開した画像をプリンタ側でそのまま印刷できる状態に変換してからプリンタへ出力している。
【0004】
このとき、ドキュメントに含まれる線が細過ぎたり、文字が小さ過ぎたりすると、印刷物上においてそれらの線や文字を認識できないことがある。そこで、プリンタドライバには、細い線や小さな文字を通常よりも太らせる太線化処理を行い、印刷物上でそれらの線や文字を認識しやすくするという機能を備えている。
【0005】
例えば、特許文献1では、フォント視認性向上処理を実行するコントロール部が、画像データの印刷処理内容に応じて小さな文字を太線化する技術が開示されている。
【特許文献1】特開2001−146039号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところで、プリンタドライバによる描画処理は、例えばWindows(登録商標)等の情報処理装置のオペレーティングシステム(OS)に実装されている標準の描画関数を用いて行われる。そのため、この描画関数の仕様上の制約により、プリンタドライバによって線や文字をアプリケーションからの描画命令で示されるものより太くする処理を行う際には、以下のような手順が必要であった。
【0007】
まず、通常の描画領域とは別に設けられた合成領域に太線化すべき描画物を一旦描画してから、その合成領域上で当該描画物を太線化する。そして、その合成領域に描かれた太線化後の描画物を描画領域に合成することで当該描画物の描画を完了する。すなわち、OSに備えられた標準の描画関数を用いて描画処理を行う場合、描画命令で示される描画物を直接太線化して描画領域に描き込むことができないため、このような手順で描画を行うのである。
【0008】
しかしながら、ドキュメントの中に太線化すべき線や文字が多数存在する場合、上述のような手順を個々の線や文字に対応する描画命令を受ける度に繰り返し行う必要があり、その結果、描画処理に要する時間が長くなるという問題があった。
【0009】
本発明は上記問題を解決するためになされており、プリンタドライバにおける太線化処理に係る処理負荷を低減することで、描画処理の処理速度を向上させるための技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するためになされた請求項1に記載の画像処理プログラムは、アプリケーションからの描画命令で示される描画物に対する描画処理を行う情報処理装置によって実行される画像処理プログラムであって、判定手順と、描画手順と、合成手順と、描画判定手順と、描画条件判定手順とを備える。
【0011】
このうち、判定手順では、1の描画命令で示される描画物の太さを当該描画命令で指示されるよりも太くする太線化処理を行うか否かを判定する。描画手順では、判定手順により太線化処理を行うと判定された描画物を第1の描画領域に描画し、太線化処理を行わないと判定された描画物を第2の描画領域に描画する。合成手順では、第1の描画領域に描画されている描画物に対して太線化処理を実行し、その太線化された描画物を第2の描画領域へ合成した後、第1の描画領域を初期化する。描画判定手順では、判定手順により太線化処理を行うと判定された場合、第1の描画領域に他の描画命令で示された描画物が描画されているか否かを判定する。描画条件判定手順では、描画判定手順により、第1の描画領域に他の描画命令で示された描画物が描画されていると判定された場合、当該1の描画命令で示される描画条件と、第1の描画領域に既に描画されている描画物における描画条件とが一致するか否かを判定する。
【0012】
そして、描画判定手順により第1の描画領域に他の描画物が描画されていないと判定された場合、又は、描画条件判定手順により描画条件が一致すると判定された場合、描画手順によって、第1の描画領域に1の描画命令で示される描画物を描画する。
【0013】
一方、描画条件判定手順により描画条件が一致しないと判定された場合、まず、合成手順によって、第1の描画領域に描画されている描画物を太線化して、これを第2の描画領域へ合成した後、第1の描画領域を初期化し、その後、描画手順によって、合成手順により初期化された第1の描画領域に1の描画命令で示される描画物を新たに描画する。
【0014】
なお、本発明の画像処理プログラムは、PC等の情報処理装置にインストールされるプリンタドライバ等に適用される。
このように構成された画像処理プログラムによれば、アプリケーションからの描画命令に示される描画条件が同一である描画物に対しては、複数の描画命令で示される描画物を第1の描画領域(合成領域)にまとめて描画し、これら複数の描画物を一括して太線化及び合成させることができる。このようにすることで、プリンタドライバによる描画処理の際の太線化処理に係る処理負荷を低減でき、描画処理の処理速度を向上させることができる。
【0015】
なお、複数の描画物に対して一括して太線化処理するための描画条件としては、請求項2に記載のように、描画色が挙げられる。すなわち、描画色が同一の描画物をまとめて第1の描画領域に描画した上で太線化処理及び画像の合成を行うことで、太線化処理に係る処理負荷を低減できるのである。
【0016】
さらに、請求項3に記載のように、第1の描画領域は、1画素あたり1ビットのビットマップ領域で構成されているとよい。その場合、合成手順では、第1の描画領域に描画されている描画物を第2の描画領域へ合成する際に、当該描画物を示す描画命令で示される描画色で第2の描画領域へ合成する。
【0017】
第1の描画領域を、1画素あたり1ビットのデータで表現するビットマップ領域で構成することで、第1の描画領域を構成するのに必要なメモリの容量を最小限にすることができる。さらに、1ビットのビットマップ領域で構成された第1の描画領域には、各描画物は二値化された白黒画像として描画されるので、第1の描画領域に描画物を描き込んだり、描画物をまとめて太線化する際の処理負荷も大幅に低減できる。なお、第1の描画領域にまとめて描画されている複数の描画物は、各々の描画命令において同一の描画色が指定されている。そのため、太線化処理後の画像合成時には、その描画色にて一括して第2の描画領域に画像を合成できる。このようにすることで、画像合成時の処理負荷も低減でき、好適である。
【0018】
つぎに、請求項4に記載の画像処理プログラムは、描画手順により第1の描画領域に描画物が描画された際、第1の描画領域に描画命令で示される描画物が描画されている状態を示す変数を設定し、合成手順により第1の描画領域が初期化された際、変数を解除する変数設定手順を更に備える。そして、描画判定手順では、変数設定手順により設定された変数に基づき、第1の描画領域に描画物が描画されているか否かを判定することを特徴とする。このように構成することで、変数設定手順により設定される変数に基づいて、描画判定手順において合成処理の要否を正確に判定することができる。
【0019】
つぎに、請求項5に記載の画像処理システムは、アプリケーションからの描画命令で示される描画物に対する描画処理を行う情報処理装置と、この情報処理装置と通信可能に接続され、当該情報処理装置によって描画された画像を印刷する印刷装置とからなり、情報処理装置にインストールされるプリンタドライバに、請求項1に記載の画像処理プログラムを適用したものに相当する。
【0020】
すなわち、情報処理装置は、自情報処理装置上で動作するアプリケーションから出力された1の描画命令で示される描画物の太さを当該描画命令で指示されるよりも太くする太線化処理を行うか否かを判定する判定手段と、判定手段により太線化処理を行うと判定された描画物を第1の描画領域に描画し、太線化処理を行わないと判定された描画物を第2の描画領域に描画する描画手段と、第1の描画領域に描画されている描画物に対して太線化処理を実行し、その太線化された描画物を第2の描画領域へ合成した後、第1の描画領域を初期化する合成手段と、判定手段により太線化処理を行うと判定された場合、第1の描画領域に他の描画命令で示された描画物が描画されているか否かを判定する描画判定手段と、描画判定手段により、第1の描画領域に他の描画命令で示された描画物が描画されていると判定された場合、当該1の描画命令で示される描画条件と、第1の描画領域に既に描画されている描画物における描画条件とが一致するか否かを判定する描画条件判定手段とを備える。
【0021】
そして、描画判定手段により第1の描画領域に他の描画物が描画されていないと判定された場合、又は、描画条件判定手段により描画条件が一致すると判定された場合、描画手段は、第1の描画領域に1の描画命令で示される描画物を描画する。
【0022】
一方、描画条件判定手段により描画条件が一致しないと判定された場合、まず、合成手段は、第1の描画領域に描画されている描画物を太線化して、これを第2の描画領域へ合成した後、第1の描画領域を初期化し、その後、描画手段は、合成手段により初期化された第1の描画領域に1の描画命令で示される描画物を新たに描画する。
【0023】
そして、全ての描画命令に対して描画手段による描画処理を実行した後、合成手段による合成処理を実行し、第2の描画領域に描画されている画像を所定のデータ形式に変換して印刷装置へ出力する。
【0024】
このように構成された画像処理システムによれば、請求項1に記載の画像処理プログラムと同様の効果を奏する。
【発明を実施するための最良の形態】
【0025】
以下、本発明の一実施形態を図面に基づいて説明する。なお、本発明は下記の実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り様々な態様にて実施することが可能である。
【0026】
[画像処理システムの構成の説明]
図1は、本発明の一実施形態である画像処理システムの概略構成を示すブロック図である。この画像処理システムは、パーソナルコンピュータ1(以下、PC1と表記)と、PC1に接続されたプリンタ2とからなり、PC1上で動作するプリンタドライバによってドキュメントの描画処理を行い、PC1側で描画された画像をプリンタ2が印刷する。
【0027】
PC1は、図1に示すように、CPU11、ROM12、RAM13、ハードディスクドライブ14(以下、HDD14と称する)、操作部15、表示部16、通信インタフェース17等を備えている。
【0028】
CPU11は、ROM12やRAM13に記憶されたプログラムやデータに従って、PC1各部に対する制御及び各種演算を実行する装置である。後述する印刷処理等を行うプリンタドライバとしての処理は、このCPU11によって実行される。ROM12は、PC1の電源スイッチを切っても記憶内容を保持する記憶装置で、BIOSやIPLといった一部のプログラムや通常であれば更新されない読み出し専用のデータ等を記憶している。
【0029】
RAM13は、CPU11から直接アクセスされるメインメモリとして利用される記憶装置である。このRAM13には、オペレーティングシステムや各種アプリケーション等のソフトウェアがHDD14から読み込まれ、また、CPU11による各種演算の結果やHDD14から読み込まれたデータもRAM13に記憶される。後述するプリンタドライバとしての処理を実行する際には、各処理をCPU11に実行させるためのプログラムがHDD14からRAM13に読み込まれる。そして、RAM13に記憶されたプログラムに従って、CPU11が各処理を実行することになる。
【0030】
HDD14は、OS、各種プログラム、及び各種データファイルを保存しておくための装置で、上記プリンタドライバのプログラムもHDD14に保存されている。操作部15は、ユーザからの各種指示を入力するための入力装置であり、例えば、キーボードや各種ポインティングデバイス(例えばマウス)等によって構成される。表示部16は、各種情報をユーザに対して提示するための出力装置であり、例えば液晶ディスプレイ等によって構成される。
【0031】
通信インタフェース17(以下、通信I/F17と表記する)は、通信線やネットワーク等で構成される通信経路171を介してプリンタやスキャナ等の周辺機器をPC1に接続するためのハードウェインタフェースである。なお、本実施形態では、この通信I/F17を介してPC1とプリンタ2とが通信可能に接続されているものと想定する。
【0032】
PC1には、このPC1に接続されたプリンタ2を制御するためのプリンタドライバがインストールされている。このプリンタドライバは、同じくPC1にインストールされている上位のOSの管理下で動作し、OSの管理下で動作する他のアプリケーションに対してプリンタ2とのインタフェースを提供するソフトウェアである。PC1のCPU11は、このプリンタドライバのプログラムに従ってアプリケーションから出力されるドキュメントの印刷処理を行う。
【0033】
具体的には、CPU11は、アプリケーションから出力される描画命令に従ってドキュメントの描画処理を行い、その描画した画像の印刷データをプリンタ2へ出力する。なお、プリンタドライバによる描画処理は、上位のOS側から供給される標準の描画関数を用いて行われる。一方、プリンタ2は、PC1のプリンタドライバから出力された印刷データに基づき、ドキュメントの印刷を行う。なお、上述のドキュメントの印刷に関する一連の処理の詳細な説明については後述する。
【0034】
[プリンタドライバによる印刷処理の説明]
図2は、PC1にインストールされているプリンタドライバのプログラムに従って、CPU11が実行する印刷処理のメイン処理の手順を示すフローチャートである。この印刷処理は、他のアプリケーションからのドキュメントの印刷要求によってプリンタドライバがコールされることで開始される。
【0035】
CPU11は、まず、印刷対象のドキュメントにおいて、本処理が未処理のページがあるか否かを判定する(S101)。未処理のページがあると判定した場合(S101:YES)、そのうちの1ページを対象に画像描画処理を行う(S102)。この処理は、処理対象のページに含まれる各描画物に対応する描画命令をアプリケーションから順次取得し、その描画命令に従ってRAM13上に設けられる描画領域に画像を描画する処理である。この画像描画処理の詳細な手順については後述する。
【0036】
つぎに、S102で描画領域に描画された画像に対して、所定の色成分(例えば、CMYK)からなるカラーイメージデータに変換する色変換処理を行い(S103)、つづいて、その変換されたカラーイメージデータに基づいて2値カラーイメージデータを生成する2値化処理を行う(S104)。つぎに、このようにして作成された画像のイメージデータを所定の解像度に圧縮し(S105)、この圧縮したデータに各種制御コマンドを付加して、プリンタ2に適合するページ記述言語(PDL:Page Description Language)を作成する(S106)。そして、この作成した1ページ分のPDLデータを印刷ジョブとしてプリンタ2に送信し(S107)、S101の処理へ戻る。
【0037】
以降、S101〜S107の処理を順次繰り返すことで、ドキュメントの各ページに対応する印刷ジョブをプリンタ2に出力する。その後、S101で、未処理のページが存在しないと判定した場合(S101:NO)、すなわち、印刷対象のドキュメントの全ページに対して本処理を実行した場合、印刷処理を終了する。
【0038】
[プリンタドライバによる画像描画処理の説明]
つぎに、上述の印刷処理(図2)におけるS102の画像描画処理の詳細な手順を図3〜7に基づき説明する。
【0039】
図3は、CPU11が実行する画像描画処理の手順を示すフローチャートである。この処理は、PC1にインストールされているプリンタドライバのプログラムに従って実行される。
【0040】
なお、以下においては、画像描画処理に対する理解を容易にするために、図5に示す画像を描画する事例に基づいて処理の手順を説明する。この図5において、(a)は、画像描画処理の対象となるページの一例を示す図であり、(b)は、このページを描画するために用いられる描画命令の一覧を示す説明図である。
【0041】
図5(a)に示す描画処理の対象ページには、図形(円)、線(直線、曲線、楕円)、文字(ABC,XYZ)等といった個々の描画物が合計6つ含まれている。そして、各描画物にそれぞれ対応する合計6つの描画命令がアプリケーション側で生成され、番号順にプリンタドライバへ出力される。
【0042】
各描画命令には、図5(b)に示すように、例えば、図形、線、文字といった描画内容を定義する情報と、描画物の形状やテキストの内容を定義する情報と、描画色を定義する情報と、文字の大きさ及び線の太さを定義する情報とが含まれている。
【0043】
図3のフローチャートの説明に戻る。CPU11は、まず、RAM13上の描画領域を初期化し(S201)、つづいて、RAM13上の合成領域を初期化する(S202)。
ここで、描画領域とは、本発明における第2の描画領域に相当し、1つの画素について24ビット又は32ビットの色情報を持たせるフルカラーのビットマップ領域が用いられる。一方、合成領域とは、本発明における第1の描画領域に相当し、1つの画素について1ビットの色情報(例えば、白と黒)を持たせるビットマップ領域が用いられる。なお、描画領域と合成領域とは、互いに同じサイズ(すなわち、画素数及び縦横比が同じ)に構成されている。
【0044】
描画領域及び合成領域を共に初期化した後、合成色を示すパラメータを「なし」にセットし、合成中フラグを「偽」にセットする(S203)。ここで、合成色とは、後述の合成処理(図4参照)のS302で合成領域内の描画物を描画領域へ合成する際に用いる描画色である。また、合成中フラグとは、合成領域に後述の合成処理の済んでいない描画物が描画されている状態であるか否かを示すフラグである。この合成中フラグが「真」である場合、合成領域に描画物が描画されている状態を示しており、合成中フラグが「偽」である場合、合成領域に描画物が描画されていない状態(すなわち、初期化された状態)を示している。
【0045】
つぎに、アプリケーションから描画命令の受信を行い(S204)、アプリケーションから出力された描画命令があるか否かを判定する(S205)。ここでは、図5(b)に示す描画命令の一覧のうち、まず、1番目の描画命令を受信した場合を想定し、S205では肯定判定をする(S205:YES)。
【0046】
つぎに、受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。本実施形態では、描画内容が線又は文字である描画物で、かつ、線の太さ及び文字の大きさが規定値以下のものを太線化処理の対象としており、それ以外の描画物(図形、ビットマップ画像等)については太線化処理の対象とならない。すなわち、S206では、描画命令で示される描画物の描画内容が、太線化処理の対象になり得るものであるか否かを判定している。今受信している1番目の描画命令においては、描画内容が「図形描画」となっており、太線化処理の対象ではないので、S206では否定判定をする(S206:NO)。
【0047】
つぎに、合成中フラグの値が「真」であるか否かを判定する(S207)。1番目の描画命令を受信した時点では、合成中フラグは初期値の「偽」のままであるので、S207では否定判定をする(S207:NO)。そして、1番目の描画命令で示される描画物を描画領域に描き込み(S209)、S204の処理へ戻る。なお、描画領域には、描画命令で示される各種指示(形状・テキスト、描画色、文字の大きさ・線の太さ)のとおりに描画物を描画する。なお、1番目の描画命令に基づく描画を行った際の描画領域の具体例を図6(a)に示す。この図6(a)に示す描画領域の例では、1番目の描画命令で示された図形(円)が描画されている。
【0048】
図3のフローチャートの説明に戻る。1番目の描画命令に対する描画処理を行った後、S204の処理へ戻り、2番目の描画命令をアプリケーションから受信し、S205では肯定判定をする(S205:YES)。そして、その受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。今受信している2番目の描画命令においては、描画内容が「線描画」となっており、太線化処理の対象となり得るので、S206では肯定判定をする(S206:YES)。
【0049】
つづいて、当該描画命令で示される描画物の線の太さ・文字の大きさが規定値以下であるか否かを判定する(S210)。この規定値とは、描画命令で示される線の太さ又は文字の大きさがその数値以下である場合、印刷結果の視認性を向上させるために太線化処理を行うことを定めた数値である。なお、本実施形態では、線の太さに対する規定値を3とし、文字の大きさに対する規定値を5と設定した場合を想定するが、実用上においては、プリンタの解像度等の条件に応じて適宜な規定値を設定すればよい。
【0050】
今受信している2番目の描画命令においては、線の太さが2と指定されており、線の太さの規定値である3よりも細い線であるため、太線化処理の対象となる。したがって、S210では肯定判定をする(S210:YES)。つぎに、合成中フラグの値が「真」であるか否かを判定する(S211)。2番目の描画命令を受信した時点では合成領域に未だ何も描画されておらず、合成中フラグは初期値の「偽」のままである。したがって、S211では否定判定をする(S211:NO)。そして、2番目の描画命令で示される描画物を合成領域に描き込む(S214)。なお、合成領域は1ビットのビットマップ領域であるので、描画物を黒で描き込むが、描画色を黒にする以外は、描画命令で示される各種指示(形状・テキスト、文字の大きさ・線の太さ)のとおりに描画物を描画する。
【0051】
2番目の描画命令に基づく描画を行った際の合成領域の具体例を図6(b)に示す。この図6(b)に示す合成領域の例では、2番目の描画命令で示された直線が描画されている。
【0052】
図3のフローチャートの説明に戻る。2番目の描画命令で示された描画物を合成領域に描画した後、合成色を示すパラメータを当該2番目の描画命令で示される描画色(灰色)にセットし、合成中フラグを「真」にセットする(S215)。つぎに、S204の処理へ戻り、3番目の描画命令をアプリケーションから受信し、S205では肯定判定をする(S205:YES)。そして、その受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。今受信している3番目の描画命令においては、描画内容が「文字描画」となっており、太線化処理の対象となり得るので、S206では肯定判定をする(S206:YES)。
【0053】
つづいて、当該描画命令で示される描画物の線の太さ・文字の大きさが規定値以下であるか否かを判定する(S210)。今受信している3番目の描画命令においては、文字の大きさが5と指定されており、文字の大きさの規定値である5と同じであるため、太線化処理の対象となる。したがって、S210では肯定判定をする(S210:YES)。つぎに、合成中フラグの値が「真」であるか否かを判定する(S211)。3番目の描画命令を受信した時点では、合成領域には2番目の描画命令による描画物が描画されており、合成中フラグは「真」となっている。したがって、S211では肯定判定をする(S211:YES)。
【0054】
そして、3番目の描画命令で示される描画色と、合成色のパラメータにセットされている描画色とが同一であるか否かを判定する(S212)。ここでは、これから合成領域に描画しようとする描画物の描画色と、合成領域に既に描画されている描画物に指定の描画色(すなわち、合成色)とが同一であるか否かを判断している。3番目の描画命令で示される描画色は灰色であり、この時点での合成色のパラメータには灰色がセットされているため、S212では肯定判定をする(S212:YES)。
【0055】
そして、3番目の描画命令で示される描画物を合成領域に追加で描き込む(S214)。なお、合成領域は1ビットのビットマップ領域であるので、描画物を黒で描き込むが、描画色を黒にする以外は、描画命令で示される各種指示(形状・テキスト、文字の大きさ・線の太さ)のとおりに描画物を描画する。
【0056】
3番目の描画命令で示された描画物を合成領域に描画した後、合成色を示すパラメータを当該3番目の描画命令で示される描画色(灰色)にセットし、合成中フラグを「真」にセットする(S215)。つぎに、S204の処理へ戻り、4番目の描画命令をアプリケーションから受信し、S205では肯定判定をする(S205:YES)。そして、その受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。今受信している4番目の描画命令においては、描画内容が「線描画」となっており、太線化処理の対象となり得るので、S206では肯定判定をする(S206:YES)。
【0057】
つづいて、当該描画命令で示される描画物の線の太さ・文字の大きさが規定値以下であるか否かを判定する(S210)。今受信している4番目の描画命令においては、線の太さが1と指定されており、線の太さの規定値である3よりも細い線であるため、太線化処理の対象となる。したがって、S210では肯定判定をする(S210:YES)。つぎに、合成中フラグの値が「真」であるか否かを判定する(S211)。4番目の描画命令を受信した時点では、合成領域には2番目、3番目の描画命令による描画物が描画されており、合成中フラグは「真」となっている。したがって、S211では肯定判定をする(S211:YES)。
【0058】
そして、4番目の描画命令で示される描画色と、合成色のパラメータにセットされている描画色とが同一であるか否かを判定する(S212)。4番目の描画命令で示される描画色は灰色であり、この時点での合成色のパラメータも灰色にセットされているため、S212では肯定判定をする(S212:YES)。
【0059】
そして、4番目の描画命令で示される描画物を合成領域に追加で描き込む(S214)。なお、合成領域は1ビットのビットマップ領域であるので、描画物を黒で描き込むが、描画色を黒にする以外は、描画命令で示される各種指示(形状・テキスト、文字の大きさ・線の太さ)のとおりに描画物を描画する。
【0060】
4番目の描画命令に基づく描画を行った際の合成領域の具体例を図6(c)に示す。この図6(c)に示す合成領域の例では、2番目の描画命令で示された直線、3番目の描画命令で示された文字(ABC)、及び4番目の描画命令で示された楕円が同一の画像上にまとめて描画されている。
【0061】
図3のフローチャートの説明に戻る。4番目の描画命令で示された描画物を合成領域に描画した後、合成色を示すパラメータを当該4番目の描画命令で示される描画色(灰色)にセットし、合成中フラグを「真」にセットする(S215)。つぎに、S204の処理へ戻り、5番目の描画命令をアプリケーションから受信し、S205では肯定判定をする(S205:YES)。そして、その受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。今受信している5番目の描画命令においては、描画内容が「線描画」となっており、太線化処理の対象となり得るので、S206では肯定判定をする(S206:YES)。
【0062】
つづいて、当該描画命令で示される描画物の線の太さ・文字の大きさが規定値以下であるか否かを判定する(S210)。今受信している5番目の描画命令においては、線の太さが1と指定されており、線の太さの規定値である3よりも細い線であるため、太線化処理の対象となる。したがって、S210では肯定判定をする(S210:YES)。つぎに、合成中フラグの値が「真」であるか否かを判定する(S211)。5番目の描画命令を受信した時点では、合成領域には2〜4番目の描画命令による描画物が描画されており、合成中フラグは「真」となっている。したがって、S211では肯定判定をする(S211:YES)。
【0063】
そして、5番目の描画命令で示される描画色と、合成色のパラメータにセットされている描画色とが同一であるか否かを判定する(S212)。5番目の描画命令で示される描画色は黒色であり、この時点での合成色のパラメータには灰色がセットされている。すなわち、これから合成領域に描画しようとする描画物の描画色と、合成領域に既に描画されている描画物に指定の描画色(すなわち、合成色)とが異なるため、S212では否定判定をする(S212:NO)。
【0064】
この場合、合成領域に現在描画されている描画物を太線化し、描画領域に合成する合成処理を実行する(S213)。ここで、この合成処理の詳細な手順について、図4に基づき説明する。図4は、CPU11が実行する合成処理の手順を示すフローチャートである。この処理は、PC1にインストールされているプリンタドライバのプログラムに従って実行される。
【0065】
CPU11は、まず、合成領域内の描画物を上下左右に太らせる(S301)。描画物の太線化は、合成領域の画像を上下左右方向へビットシフトすることにより行う。5番目の描画命令を受信している時点で行う合成処理においては、図6(c)に示す合成領域を太線化することにより、合成領域は図6(d)のようになる。
【0066】
つづいて、太線化した合成領域の描画物を合成色に変換し、これを描画領域へ合成する(S302)。具体的には、合成領域において黒で描かれた画素に対応する描画領域の画素を、合成色のパラメータで示された描画色で塗る処理を行う。5番目の描画命令を受信している時点で行う合成処理においては、図6(d)に示す合成領域を図6(a)に示す描画領域へ合成することで、図6(e)に示す描画領域の画像を得る。
【0067】
合成領域の描画物を描画領域へ合成した後、合成領域を初期化する(S303)。そして、合成色を示すパラメータを「なし」、合成中フラグを「偽」にセットし(S304)、合成処理を終了する。
【0068】
図3の説明に戻る。S213で合成処理を実行した後、初期化された合成領域に対して、5番目の描画命令で示される描画物を描き込む(S214)。なお、合成領域は1ビットのビットマップ領域であるので、描画物を黒で描き込むが、描画色を黒にする以外は、描画命令で示される各種指示(形状・テキスト、文字の大きさ・線の太さ)のとおりに描画物を描画する。
【0069】
5番目の描画命令に基づく描画を行った際の合成領域の具体例を図7(b)に示す。この図7(b)に示す合成領域の例では、5番目の描画命令で示された曲線だけが描画されている。
【0070】
図3のフローチャートの説明に戻る。5番目の描画命令で示された描画物を合成領域に描画した後、合成色を示すパラメータを当該5番目の描画命令で示される描画色(黒色)にセットし、合成中フラグを「真」にセットする(S215)。つぎに、S204の処理へ戻り、6番目の描画命令をアプリケーションから受信し、S205では肯定判定をする(S205:YES)。そして、その受信した描画命令で示される描画内容が、線又は文字の何れかの描画を指示するものであるか否かを判定する(S206)。今受信している6番目の描画命令においては、描画内容が「文字描画」となっており、太線化処理の対象
となり得るので、S206では肯定判定をする(S206:YES)。
【0071】
つづいて、当該描画命令で示される描画物の線の太さ・文字の大きさが規定値以下であるか否かを判定する(S210)。今受信している6番目の描画命令においては、線の太さが20と指定されており、文字の大きさが規定値である5よりも大きいため、太線化処理の対象とならない。したがって、S210では否定判定をする(S210:NO)。
【0072】
つぎに、合成中フラグの値が「真」であるか否かを判定する(S207)。6番目の描画命令を受信した時点では、合成領域には5番目の描画命令による描画物が描画されており、合成中フラグは「真」となっている。したがって、S207では肯定判定をする(S207:YES)。
【0073】
この場合、合成領域に現在描画されている描画物を太線化し、描画領域に合成する合成処理を実行する(S208)。ここでの合成処理も、図4のフローチャートの手順で行う。まず、合成領域内の描画物を上下左右に太らせる(S301)。6番目の描画命令を受信している時点で行う合成処理においては、図7(b)に示す合成領域を太線化することにより、合成領域は図7(c)のようになる。つづいて、太線化した合成領域の描画物を合成色に変換し、これを描画領域へ合成する(S302)。6番目の描画命令を受信している時点で行う合成処理においては、図7(c)に示す合成領域を図7(a)に示す描画領域へ合成することで、図7(d)に示す描画領域の画像を得る。合成領域の描画物を描画領域へ合成した後、合成領域を初期化する(S303)。そして、合成色を示すパラメータを「なし」、合成中フラグを「偽」にセットし(S304)、合成処理を終了する。
【0074】
図3の説明に戻る。S208で合成処理を実行した後、6番目の描画命令で示される描画物を描画領域に描き込む(S209)。なお、描画領域には、描画命令で示される各種指示(形状・テキスト、描画色、文字の大きさ・線の太さ)のとおりに描画物を描画する。6番目の描画命令に基づく描画を行った際の描画領域の具体例を図7(e)に示す。この図7(e)に示す描画領域の例では、1〜6番目の描画命令で示された各描画物が描画されている。
【0075】
図3のフローチャートの説明に戻る。6番目の描画命令に対する描画処理を行った後、S204の処理へ戻る。このとき、本画像描画処理の処理対象となるページに係る描画命令は全て処理済であるので、S204では描画命令を受信せず、S205では否定判定をする(S205:NO)。つぎに、合成中フラグの値が「真」であるか否かを判定する(S216)。6番目の描画命令に対する処理を終えた時点では、合成中フラグは「偽」であるので、S216では否定判定をし、(S216:NO)、画像描画処理を終了する。一方、SS216で、合成中フラグの値が「真」であると判定した場合(S216:YES)、最後に合成領域の描画物を描画領域に合成する合成処理(図4参照)を実施して(S217)、画像描画処理を終了する。
【0076】
[効果]
本実施形態の画像処理システムによれば、以下のような効果を奏する。
(1)アプリケーションからの描画命令で示される描画色が同一である描画物に対しては、複数の描画命令で示される描画物を合成領域にまとめて描画し、これら複数の描画物を一括して太線化して描画領域へ合成することができる。このようにすることで、太線化の対象となる描画物ごとに、毎回太線化処理及び合成処理を実施する必要がなくなる。よって、プリンタドライバによる描画処理の際の太線化処理に係る処理負荷を低減でき、描画処理の処理速度を向上させることができる。
【0077】
(2)合成領域を1画素あたり1ビットのデータで表現するビットマップ領域で構成することで、合成領域を構成するのに必要なメモリの容量を最小限にすることができる。さらに、1ビットのビットマップ領域で構成された合成領域には、各描画物は二値化された白黒画像として描画されるので、合成領域に描画物を描き込んだり、描画物をまとめて太線化する際の処理負荷も大幅に低減できる。また、太線化した複数の描画物を描画領域に合成する際には、同一の合成色にて一括して合成するので、画像の合成に係る処理負荷も低減できる。
【0078】
(3)合成領域に描画物が記載されている状態を示す変数として合成中フラグを用いることで、図形描画処理(図3参照)のS207、S210、S216において合成処理の要否を正確に判定することができる。
【0079】
(4)合成処理(図3のS208,S213,S217)は、合成中フラグが「真」であり、かつアプリケーションからの描画命令がない場合、又は、合成中フラグが「真」であり、かつ直前の描画命令とは描画条件が異なる(描画内容、描画色が異なる)場合に実行される。このようなタイミングで合成処理を行うように構成したことで、アプリケーションから受けた描画命令の順序に従いつつ、描画処理の処理速度を向上させることができる。
【図面の簡単な説明】
【0080】
【図1】画像処理システムの概略構成を示すブロック図である。
【図2】印刷処理のメイン処理手順を示すフローチャートである。
【図3】画像描画処理の手順を示すフローチャートである。
【図4】合成処理の手順を示すフローチャートである。
【図5】(a)は画像描画処理の対象となるページの一例を示す図であり、(b)は、このページを描画する際に用いられる描画命令の一覧を示す説明図である。
【図6】描画領域及び合成領域の描画状態の推移を模式的に示す説明図である。
【図7】描画領域及び合成領域の描画状態の推移を模式的に示す説明図である。
【符号の説明】
【0081】
1…パーソナルコンピュータ、11…CPU、12…ROM、13…RAM、14…ハードディスクドライブ、15…操作部、16…表示部、17…通信インタフェース、171…通信経路、2…プリンタ、S206,S210…判定手順の一例、S209,S214…描画手順の一例、S208,S213,S217…合成手順の一例、S212…描画条件判定手順の一例

【特許請求の範囲】
【請求項1】
アプリケーションからの描画命令で示される描画物に対する描画処理を行う情報処理装置によって実行される画像処理プログラムであって、
1の描画命令で示される描画物の太さを当該描画命令で指示されるよりも太くする太線化処理を行うか否かを判定する判定手順と、
前記判定手順により太線化処理を行うと判定された描画物を第1の描画領域に描画し、太線化処理を行わないと判定された描画物を第2の描画領域に描画する描画手順と、
前記第1の描画領域に描画されている描画物に対して前記太線化処理を実行し、その太線化された描画物を前記第2の描画領域へ合成した後、前記第1の描画領域を初期化する合成手順と、
前記判定手順により太線化処理を行うと判定された場合、前記第1の描画領域に他の描画命令で示された描画物が描画されているか否かを判定する描画判定手順と、
前記描画判定手順により、前記第1の描画領域に他の描画命令で示された描画物が描画されていると判定された場合、当該1の描画命令で示される描画条件と、前記第1の描画領域に既に描画されている描画物における描画条件とが一致するか否かを判定する描画条件判定手順とを備え、
前記描画判定手順により前記第1の描画領域に他の描画物が描画されていないと判定された場合、又は、前記描画条件判定手順により描画条件が一致すると判定された場合、前記描画手順によって、前記第1の描画領域に前記1の描画命令で示される描画物を描画し、
前記描画条件判定手順により描画条件が一致しないと判定された場合、まず、前記合成手順によって、前記第1の描画領域に描画されている描画物を太線化して、これを前記第2の描画領域へ合成した後、前記第1の描画領域を初期化し、その後、前記描画手順によって、前記合成手順により初期化された前記第1の描画領域に前記1の描画命令で示される描画物を新たに描画すること
を特徴とする画像処理プログラム。
【請求項2】
請求項1の画像処理プログラムにおいて、
前記描画条件判定手順において判定する前記描画条件とは、描画色であること
を特徴とする画像処理プログラム。
【請求項3】
請求項1又は請求項2に記載の画像処理プログラムにおいて、
前記第1の描画領域は、1画素あたり1ビットのビットマップ領域で構成されており、
前記合成手順では、前記第1の描画領域に描画されている描画物を前記第2の描画領域へ合成する際、当該描画物を示す描画命令で示される描画色で前記第2の描画領域へ合成すること
を特徴とする画像処理プログラム。
【請求項4】
請求項1ないし請求項3の何れか1項に記載の画像処理プログラムにおいて、
前記描画手順により前記第1の描画領域に描画物が描画された際、前記第1の描画領域に描画命令で示される描画物が描画されている状態を示す変数を設定し、前記合成手順により前記第1の描画領域が初期化された際、前記変数を解除する変数設定手順を更に備え、
前記描画判定手順では、前記変数設定手順により設定された変数に基づき、前記第1の描画領域に描画物が描画されているか否かを判定すること
を特徴とする画像処理プログラム。
【請求項5】
アプリケーションからの描画命令で示される描画物に対する描画処理を行う情報処理装置と、この情報処理装置と通信可能に接続され、当該情報処理装置によって描画された画像を印刷する印刷装置とからなる画像処理システムであって、
前記情報処理装置は、
自情報処理装置上で動作するアプリケーションから出力された1の描画命令で示される描画物の太さを当該描画命令で指示されるよりも太くする太線化処理を行うか否かを判定する判定手段と、
前記判定手段により太線化処理を行うと判定された描画物を第1の描画領域に描画し、太線化処理を行わないと判定された描画物を第2の描画領域に描画する描画手段と、
前記第1の描画領域に描画されている描画物に対して前記太線化処理を実行し、その太線化された描画物を前記第2の描画領域へ合成した後、前記第1の描画領域を初期化する合成手段と、
前記判定手段により太線化処理を行うと判定された場合、前記第1の描画領域に他の描画命令で示された描画物が描画されているか否かを判定する描画判定手段と、
前記描画判定手段により、前記第1の描画領域に他の描画命令で示された描画物が描画されていると判定された場合、当該1の描画命令で示される描画条件と、前記第1の描画領域に既に描画されている描画物における描画条件とが一致するか否かを判定する描画条件判定手段とを備え、
前記描画判定手段により前記第1の描画領域に他の描画物が描画されていないと判定された場合、又は、前記描画条件判定手段により描画条件が一致すると判定された場合、前記描画手段は、前記第1の描画領域に前記1の描画命令で示される描画物を描画し、
前記描画条件判定手段により描画条件が一致しないと判定された場合、まず、前記合成手段は、前記第1の描画領域に描画されている描画物を太線化して、これを前記第2の描画領域へ合成した後、前記第1の描画領域を初期化し、その後、前記描画手段は、前記合成手段により初期化された前記第1の描画領域に前記1の描画命令で示される描画物を新たに描画し、
全ての描画命令に対して前記描画手段による描画処理を実行した後、前記合成手段による合成処理を実行し、前記第2の描画領域に描画されている画像を所定のデータ形式に変換して前記印刷装置へ出力すること
を特徴とする画像処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−74262(P2010−74262A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2008−236563(P2008−236563)
【出願日】平成20年9月16日(2008.9.16)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】