【実施例1】
【0033】
[実施例の概要]
本発明の第1の実施例(実施例1)を以下の順序で説明する。
【0034】
第一に、プリンターと、ホストコンピュータとの接続形態およびこの接続形態における印刷処理を概説する。
【0035】
第二に、ホストコンピュータが生成しプリンターが処理するPDLデータの説明を行う。併せて、PDLデータを用いて周期性のある描画パターンをどのように表現するかについて説明する。
【0036】
第三に、プリンターがPDLデータを用いてどのように印刷処理を行うかを説明する。併せて、プリンターがPDLデータに含まれる周期性のある描画オブジェクトをどのように処理するかについて説明する。
【0037】
最後に、本実施例の効果を説明する。
【0038】
[ホストコンピュータと、プリンターとの接続形態および印刷処理の説明]
図4は、本実施例における画像形成装置の接続形態を示している。
【0039】
パーソナルコンピュータに代表されるホストコンピュータ900は、上述したパワーポイント等のアプリケーションやミドルウェア、ドライバーソフトウェアを動作させ、入力データであるPDLデータ1000を生成する。PDLデータ1000に関しては後述する。ホストコンピュータ900と、プリンター100とは、ネットワーク300に代表される通信手段によって相互に接続されている。ホストコンピュータ900は、PDLデータ1000を、ネットワーク300を通じてプリンター100に転送する。なお、ネットワーク300として、後述するUSBインターフェース装置100−7、IEEE 1284インターフェース装置100−8、ネットワーク装置100−9のいずれを用いても本発明を実施できる。もちろんそれ以外の、装置間を接続しデータ転送を実現する技術を用いて、本発明を実施できることは言うまでもない。
【0040】
一方、プリンター100は、ネットワーク300に代表される通信手段を通じて得たPDLデータ1000を使い、紙400に代表される可視媒体上に可視像を形成する。紙400上に可視像を形成する処理は、一般には印刷と呼ばれている(以下、この可視像の形成をまとめて「印刷」と称する)。
【0041】
なお、本実施例では、ホストコンピュータ900として、パーソナルコンピュータを利用した場合を例に挙げて説明している。しかしながら、パーソナルコンピュータ以外の、次に例示するようなPDLデータ1000やそれに相当する画像データを生成し、転送することができる装置を利用しても、本発明を実施できることは言うまでもない。即ち、ホストコンピュータ900として、ワークステーション、メインフレームコンピュータ、サーバー、スマートフォン、PDA、またはデジタルカメラ等を利用しても、本発明を実施できる。
【0042】
また、本実施例では、画像形成装置として、プリンターを利用した場合を例に挙げて説明している。しかしながら、画像形成装置として、MFP(マルチファンクションプリンター)、印刷機、電子ペーパー、またはその他のディスプレイ装置等と呼ばれる可視像を形成することができる装置を利用しても、本発明を実施できる。
【0043】
[PDLデータの説明]
次に、本実施例におけるPDLデータ1000の構造を、
図5(a)を参照しながら説明する。
【0044】
PDLデータ1000は、次に説明するPDLコマンドを一つ以上持つことができる。即ち、PDLデータ1000は、グラフィック描画命令1000−1を持つことができる。また、PDLデータ1000は、文字描画命令1000−2を持つことができる。さらに、PDLデータ1000は、ラスタービットマップ描画命令1000−3を持つことができる。
【0045】
グラフィック描画命令1000−1とは、幾何学的な情報によって指定可能な図形の描画命令である。PDLデータ1000が持つことができる幾何学的な情報は、二次元平面上の線分や、その集合によって表現可能な直線を含む。また、PDLデータ1000が持つことができる幾何学的な情報は、二次元平面上のベジェ曲線に代表されるブレンディング関数で表現可能な曲線を含む。また、PDLデータ1000が持つことができる幾何学的な情報は、上述した線分や曲線を含む集合による閉曲線を含む。また、PDLデータ1000が持つことができる幾何学的な情報は、上述した閉曲線の内部の色情報を含む。また、PDLデータ1000が持つことができる幾何学的な情報は、上述した閉曲線の内部のグラデーション情報を含む。
【0046】
なお、PDLデータ1000が持つことができる幾何学的な情報は、上で例に挙げたもの以外の情報であっても良い。例えば、二次元平面上のベジェ曲線の代わりにスプライン曲線等の他の曲線の表現方法を用いたとしても本発明を実施できることは言うまでもない。また、本実施例では、PDLデータ1000が持つことができる幾何学的な情報として上述したものを例に挙げて説明してきたが、その一部を持っていないPDLデータ1000を用いたとしても本発明を実施できる。
【0047】
文字描画命令1000−2とは、指定された文字を描画するための命令である。
【0048】
ラスタービットマップ描画命令1000−3とは、離散的な色情報を持つ二次元配列を描画するための描画命令である。ラスタービットマップ描画命令1000−3は、後述するROP情報を持つことができる。
【0049】
なお、PDLデータ1000がグラフィック描画命令1000−1、文字描画命令1000−2、ラスタービットマップ描画命令1000−3以外の命令を持つ場合でも、本発明を実施することができる。
【0050】
図5(a)の拡縮命令1000−4は、グラフィック描画命令1000−1、文字描画命令1000−2、ラスタービットマップ描画命令1000−3のいずれかに対する、拡大乃至縮小を行う命令である。拡縮命令1000−4は、拡大乃至縮小する割合を示す拡縮率を持つ。
【0051】
拡縮命令1000−4を用いる処理の例として、nUP処理が挙げられる。nUP処理は、
図16に示すように、一枚の紙500の面上に複数のページ500−1、500−2を縮小して配置する処理である。nUP処理の一部である2UP処理においては、1/2倍に縮小処理を行い一枚の紙あたり2ページを配置する。ただし、この例以外に拡縮命令を用いる場合であっても、本発明を実施できることは言うまでもない。
【0052】
PDLデータ1000に含まれるデータは、後述する処理により中間データ2000(
図5(b)を参照)に変換される。中間データ2000の詳細に関しては、後述する。
【0053】
[ホストコンピュータの説明]
次に、本実施例におけるホストコンピュータ900の構造を、
図6を参照しながら説明する。
【0054】
図6に示すように、ホストコンピュータ900は、CPU11と、ROM12と、RAM13とから構成される。CPU11は、種々の演算、制御、判定等の処理動作を実行する。ROM12は、CPU11によって実行される処理の制御プログラム等を格納する。RAM13は、CPU11の処理動作中のデータや入力データ等を一時的に格納する。
【0055】
ホストコンピュータ900には、入力操作部14と、表示部15とが接続されている。入力操作部14は、所定の指令もしくはデータ等を入力するキーボードまたは各種スイッチ等を含む。表示部15は、ホストコンピュータ900の入力・設定状態等に関する種々の情報を表示する。
【0056】
また、ホストコンピュータ900は、表示部15において、前述したWYSIWYGを実現するためのGUIを表示することができる。ユーザーは、入力操作部14を介してGUIにおける半透明の指定操作を行うことで、半透明指定を行う。また、ユーザーは、入力操作部14を介してGUIにおける色設定を行うことで、各種描画の色の設定を行う。さらに、ユーザーは、入力操作部14を介してGUIにおけるグラデーション設定を行うことで、各種グラデーションの設定を行う。
【0057】
なお、本発明においてホストコンピュータ900が画像データを取得する方法は、どのような方法であっても良い。例えば、ユーザーが入力操作部14を操作して所定のアプリケーション上で画像データを作成しても良い。また、磁気ディスクや光ディスク等の着脱可能なメディアの読取装置をホストコンピュータ900が備える場合は、メディアを使って画像データを入力するようにしても良い。さらに、スキャナ等の画像読取装置が内蔵されている場合または画像読取装置がネットワークを介して接続されている場合は、画像読取装置にて読み取られた画像データを入力することで、画像データを取得するようにしても良い。
【0058】
本実施例では、ホストコンピュータ900は、ROM12からプログラムを読み出し、PDLデータ1000を作成する。そして、ホストコンピュータ900は、作成されたPDLデータ1000をプリンター100等の画像形成装置に送信する。画像形成装置は、送信されたPDLデータ1000に基づいて紙400上に印刷する。画像形成装置は、画像処理装置と一体化されていても良いし、別個に設けられて画像処理装置とネットワーク等を介して接続されていても良い。
【0059】
[半透明オブジェクトの生成処理]
次に、本実施例における半透明オブジェクトを含むPDLデータ1000の生成手順を、
図7を参照しながら説明する。なお、本実施例では、説明を簡単にするためにモノクロ印刷の場合について説明する。
【0060】
まず、ユーザーは、ホストコンピュータ900が有する所定のアプリケーションにより表示部15に表示されたファイルの中から印刷対象となるファイルを、入力操作部14を介して指定する。該指定に基づいて、CPU11は、アプリケーションによる描画を開始する。
【0061】
次いで、CPU11は、PDLデータ1000の生成のために、PDLコマンド生成処理(ステップs200)を行い、一つ以上のPDLコマンドを生成する。PDLコマンド生成処理(ステップs200)において、CPU11は、以下の一連の処理を行う。
【0062】
まず、ステップs201において、CPU11は、アプリケーションからの描画に基づく描画命令があるか否かを判定する。アプリケーションからの描画に基づく描画命令があると判定された場合、処理はステップs202へ進み、アプリケーションからの描画に基づく描画命令がないと判定された場合、処理は終了する。
【0063】
ステップs202において、CPU11は、描画命令に半透明オブジェクトがあるか否かを判定する。描画命令に半透明オブジェクトがあると判定された場合、処理はステップs203へ進み、描画命令に半透明オブジェクトがないと判定された場合、処理はステップs205へ進む。
【0064】
ステップs203において、CPU11は、ROM12に予め格納された格子状(例えば、市松模様状)の半透明パターンオブジェクトを読み出す。本実施例では、この半透明パターンは、半透明オブジェクトの透過率に対して一意に決定可能なデータとしてROM12に格納されている。即ち、CPU11は、透過率に応じて一意に求まる市松模様等の周期性のある描画データを用いてPDLデータ1000を生成する。次いで、処理は、ステップs204へ進む。
【0065】
ステップs204において、CPU11は、半透明指定されたオブジェクトに対し、半透明パターンオブジェクトと、ROPとを組み合わせることでPDLコマンドを生成し、RAM13に格納する。具体的には、半透明指定されたオブジェクトに対するROPの“XOR”指定と、半透明パターンオブジェクトに対するROPの“AND”指定と、更に半透明指定されたオブジェクトに対するROPの“XOR”指定との組み合わせによるPDLコマンドを生成する。次いで、処理は、ステップs201に戻る。
【0066】
ステップs205において、CPU11は、アプリケーションからの描画命令に従って、PDLコマンドを生成する。次いで、処理は、ステップs201に戻る。
【0067】
次に、半透明指定されたオブジェクトに対するPDLコマンドについて、
図8を参照しながら説明する。
図8(a)には、アプリケーションからの描画命令に基づく半透明指定されたオブジェクトの一般的な描画方法が示されている。まず、背景1101に半透明指定されたオブジェクト1102をROPの“XOR”で合成し、その上に半透明パターンオブジェクト1103をROPの“AND”で合成し、更にその上に半透明指定されたオブジェクト1104をROPの“XOR”で合成する。
【0068】
次に、半透明指定されたオブジェクトに対するPDLコマンドについて、
図9を参照しながらさらに詳しく説明する。
【0069】
図9(a)は、
図8(a)に示した、背景1101と、半透明指定されたオブジェクト1102とをROPの“XOR”で合成する処理の詳細を示す図である。K=0(ビットパターンでは”00000000”)の背景1201と、K=32(ビットパターンでは”00100000”)である半透明指定されたオブジェクト1202とをROPの“XOR”で合成する。合成の結果、K=32(ビットパターンでは”00100000”)の領域を含む合成画像1205が得られる。ここで、本実施例において、Kは濃度値である。なお、Kは濃度値に限定されず、他の実施例においてKは輝度値であっても良い。
【0070】
図9(b)は、
図8(a)で示した、半透明パターンオブジェクト1103をROPの“AND”で合成する処理の詳細を示す図である。合成画像1205の合成部分(K=32、ビットパターンでは”00100000”)と、半透明パターンオブジェクト1203とをROPの“AND”で合成する。半透明パターンオブジェクト1203は、白部分(K=0、ビットパターンでは”00000000”)と、黒部分(K=255、ビットパターンでは”11111111”)とから成る。合成の結果、半透明パターンオブジェクト1203の白部分がK=0(ビットパターンでは”00000000”)となり、黒部分がK=32(ビットパターンでは”00100000”)となる合成画像1206が得られる。
【0071】
図9(c)は、
図8(a)で示した、半透明指定されたオブジェクト1104をROPの“XOR”で合成する処理の詳細を示す図である。合成画像1206の合成部分(K=32、ビットパターンでは”00100000”)と、半透明指定されたオブジェクト1204(K=32、ビットパターンでは”00100000”)とをROPの“XOR”で合成する。合成の結果、白部分(ビットパターンでは”00000000”)が得られる。また、合成画像1206の合成部分(K=0、ビットパターンでは”00000000”)と、半透明指定されたオブジェクト1204(K=32、ビットパターンでは”00100000”)とをROPの“XOR”で合成する。合成の結果、K=32(ビットパターンでは”001000000”)の部分が得られる。これらの演算によって合成画像1207が得られ、半透明指定されたオブジェクト(K=32)の半透明表現が可能となる。
【0072】
なお、上記の説明では、濃度が均一な塗りに対する半透明処理を説明している。濃度が均一ではないイメージ等のオブジェクトに対する半透明処理を行う場合は、K=32のオブジェクト1102の代わりに、濃度が均一ではないイメージ1102’に対して“AND”で合成する処理を行えばよい(
図8(a)、(b)を参照)。
【0073】
以下に、上述した処理をまとめる。ホストコンピュータ900は、半透明描画をPDLコマンドで表現するために、同一領域における、ROPの“XOR”指定、“AND”指定、および“XOR”指定ならびに白と、黒とが周期的に出てくる半透明パターンオブジェクトを生成する。この半透明パターンオブジェクトは、ホストコンピュータ内のROM12に保存されたデータを読み出すことで生成される。本実施例では、この半透明パターンは、半透明オブジェクトの透過率に対して一意に決定可能なデータとしてROM12に格納されている。
【0074】
[プリンター内の装置の説明]
上述したように、本実施例においては、ホストコンピュータ900が生成したPDLデータ1000をプリンター100が取得して印刷処理を行う。以下では、プリンター100内の諸装置について
図10を参照しながら説明する。
【0075】
プリンター100は、CPU100−0と、RAM100−1と、HDD100−2と、ASIC100−3と、電子写真エンジン100−4とを備える。また、プリンター100は、USBインターフェース装置100−7と、IEEE 1284インターフェース装置100−8と、ネットワーク装置100−9とを備える。さらに、プリンター100は、バス100−6を備える。バス100−6は、上述の諸装置を接続し、装置間でデータや命令を相互にやり取りすることを可能にする。
【0076】
CPU100−0は、RAM100−1に保存された命令を実行することで、後述するPDL解釈処理を実現するソフトモジュール200を実行する。
【0077】
RAM100−1は、揮発性の記憶媒体である。RAM100−1は、PDLデータ1000と、CPU100−0が実行すべき命令とを保存することができる。また、RAM100−1は、バス100−6を通じてPDLデータ1000やCPU100−0が実行すべき命令を、CPU100−0を含む諸装置に転送することができる。RAM100−1は、揮発性の記憶媒体であるから、プリンター100の電源が落とされると、保存された命令やデータは消去される。
【0078】
HDD100−2は、不揮発性の記憶媒体である。HDD100−2は、CPU100−0が処理すべき命令およびデータを保存することで、電源断によってRAM100−1上から失われるCPU100−0が処理すべき命令およびデータを保存することができる。また、本実施例においては、HDD100−2は、RAM100−1より記憶容量が大きい。よって、後述する画像形成用ビットマップデータ4000に代表される容量の大きなデータを保存するのに好適である。本実施例では、不揮発性の記憶媒体としてHDDを用いているが、HDDの代わりにフラッシュ型EEPROM、強誘電体メモリー(FeRAM)、磁気抵抗メモリー(MRAM)等を用いても本発明を実施できることは言うまでもない。
【0079】
ASIC100−3は、後で説明する画像処理を行うことができる。
【0080】
電子写真エンジン100−4は、ASIC100−3が生成した画像形成用ビットマップデータ4000を用いて、紙に代表される可視媒体上に可視像を形成する。なお、本実施例では、電子写真エンジンを用いて可視媒体上に可視像を得ているが、次に示す電子写真エンジン以外の機構を用いても本発明を実施できることは言うまでもない。即ち、電子写真エンジンの代わりに、液晶パネル、有機ELパネル、凸版印刷エンジン、オフセット印刷電子写真エンジン、インクジェット印刷電子写真エンジン等を用いても本発明を実施できる。
【0081】
USBインターフェース装置100−7は、USB規格の外部装置を通じて外部からPDLデータ1000をプリンター100に入力することを可能にしている。
【0082】
IEEE 1284インターフェース装置100−8は、IEEE 1284規格のハードウェアを持つ外部装置を通じて外部からPDLデータ1000をプリンター100に入力することを可能にしている。
【0083】
ネットワーク装置100−9は、ネットワーク規格のハードウェアを持つ外部装置を通じて外部からPDLデータ1000をプリンター100に入力することを可能にしている。
【0084】
後述する通信制御部200−0の制御のもと、USBインターフェース装置100−7、IEEE 1284インターフェース装置100−8、およびネットワーク装置100−9により、PDLデータ1000をプリンター100内に受信することができる。
【0085】
[ソフトモジュールの説明]
次に、CPU100−0上で動作するソフトモジュール200を、
図11を参照しながら説明する。
【0086】
ソフトモジュール200は、通信制御部200−0と、PDLデータ処理部200−1と、画像処理部200−2と、エンジン制御部200−3と、ジョブコントローラ部200−4とを含む。
【0087】
通信制御部200−0は、USBインターフェース装置100−7、IEEE 1284インターフェース装置100−8、およびネットワーク装置100−9を制御し、プリンター100と、ホストコンピュータ900との間の通信コネクションを確立する。また、通信制御部200−0は、USBインターフェース装置100−7、IEEE 1284インターフェース装置100−8、およびネットワーク装置100−9を制御することで、PDLデータ1000を受信することを可能にする。さらに、通信制御部200−0は、受信したPDLデータ1000をRAM100−1に記録させることができる。
【0088】
PDLデータ処理部200−1は、RAM100−1に記録されたPDLデータ1000に対する解釈処理をおこない、コントーンラスタービットマップデータ3000を生成する。コントーンラスタービットマップデータ3000の生成については、後述する。
【0089】
画像処理部200−2は、PDLデータ処理部200−1が生成したコントーンラスタービットマップデータ3000と、ASIC100−3とを使うことで、画像形成用ビットマップデータ4000を生成する。
【0090】
エンジン制御部200−3は、画像形成用ビットマップデータ4000と、電子写真エンジン100−4とを使うことで、画像形成処理を行う。
【0091】
ジョブコントローラ部200−4は、上述したソフトモジュール間の情報伝達および処理フローの伝達を行う。これによって、ジョブコントローラ部200−4は、プリンター100の印刷に代表される画像形成処理を実現する。
【0092】
[PDLデータのデータフロー]
次に、
図10で説明したプリンター内の諸装置および
図11で説明したソフトウェアモジュール群がPDLデータ1000に対してどのような処理を行うかを、
図12を参照しながら説明する。
【0093】
本実施例においては、プリンター100は、入力データとしてPDLデータ1000をUSBインターフェース装置100−7、IEEE 1284インターフェース装置100−8、またはネットワーク装置100−9を経由して受信する。受信したPDLデータ1000は、ジョブコントローラ部200−4によって、RAM100−1またはHDD100−2に保存される。
【0094】
次に、PDLデータ処理部200−1は、CPU100−0上でジョブコントローラ部200−4の制御のもとPDLデータ1000の解釈処理を行い、中間データ2000を生成する(ステップs20)。中間データ2000は、
図5(b)で示されるように、ラスタービットマップデータ2000−1と、グラフィックデータ2000−2とを持つことができる。これらのデータは、PDLデータ1000中の描画命令1000−1、1000−2、1000−3をCPU100−0が変換することによって生成される。
【0095】
次に、PDLデータ処理部200−1は、ASIC100−3上でジョブコントローラ部200−4の制御のもと中間データ2000の解釈処理を行い、コントーンラスタービットマップデータ3000を生成する(ステップs30)。コントーンラスタービットマップデータ3000の生成処理をRIP処理という。RIP処理(ステップs30)では、PDLデータ処理部200−1は、中間データ2000に含まれるラスタービットマップデータ2000−1やグラフィックデータ2000−2を解釈し、コントーンラスタービットマップデータ3000を生成する。さらに、PDLデータ処理部200−1は、コントーンラスタービットマップデータ3000をRAM100−1に保存する。なお、本実施例では、RIP処理(ステップs30)は、ASIC100−3上で実行されているが、CPU100−0上で実行されたとしても本発明を実施できることは言うまでもない。
【0096】
次に、画像処理部200−2は、ASIC100−3上で入力されたコントーンラスタービットマップデータ3000に対して画像処理を行い、画像形成用ビットマップデータ4000を生成する(ステップs40)。生成した画像形成用ビットマップデータ4000は、ASIC100−3によって、RAM100−1に保存される。この画像処理(ステップs40)には、ディザ処理が含まれる。エンジン制御部200−3は、ジョブコントローラ部200−4の制御のもと、電子写真エンジン100−4を使って画像形成用ビットマップデータ4000をもとに印刷する。なお、本実施例では、画像処理(ステップs40)はASIC100−3上で実行されているが、CPU100−0上で実行されたとしても本発明を実施できることは言うまでもない。
【0097】
[周期性のある描画のパターンに対するプリンター内の処理]
ここまで、プリンター100内で行われる画像形成用ビットマップデータ4000の生成処理の概要を説明してきた。
【0098】
次に、上述したPDLデータ解釈処理(ステップs20)における、周期性のある描画のパターンに対するプリンター100内の処理を、
図13を参照しながら詳細に説明する。
【0099】
まず、ステップs20−1において、PDLデータ処理部200−1は、干渉比率テーブルをロードする。この処理は、HDD100−2に予め保存されたデータをCPU100−0がRAM100−1にコピーすることで実現する。この干渉比率テーブルは、後述する、周期性のある描画パターンの周期と、縮小率との比のうち、正しく描画されない可能性がある比率から成る集合データである。
図14は、その周期性のある描画パターンの周期と、縮小率との比のうち、正しく描画されない可能性がある比率を保存したデータを例示している。
図14が示すように、本実施例においては、予めHDD100−2に干渉が起こり得る比率を保存しておくことで、後述する、干渉を回避する処理を行うか否かの判定処理を行う。
【0100】
次に、ステップs20−2において、PDLデータ処理部200−1は、周期性判定マトリックスをロードする。この処理は、HDD100−2に予め保存されたデータをCPU100−0がRAM100−1にコピーすることで実現する。
図15は、その周期性判定マトリックスを例示する図である。
図15に示す例では、周期性判定マトリックスは、pattern部に3種類の塗りつぶしパターン情報を持つ。この情報を用いて、後述する、描画内容が周期性を有するか否かの判定処理が行われる。
図15のpattern部において、「1」は何らかの色での塗りつぶしを示し、「0」は白を示している。また、
図15において、「*」は、「0」または「1」のいずれでもよい、任意の描画を示している。PDLデータ処理部200−1は、「0」、「1」、「*」で表現された情報を用いて、描画内容が周期性を有するか否かを判定する。また、
図15に示すように、周期性判定マトリックスは、pich部にそれぞれのパターンに対する周期を示す値を持つ。この値は、上記の「0」、「1」、「*」で示されるパターンに対する周期をピクセル数で表した値である。このピクセル数は、後述する、PDLデータ処理部200−1によって行われるパターンの周期を求める処理に用いられる。なお、本実施例においては、周期性判定マトリックスは、1次元配列を用いた例を示しているが、2次元配列を用いた場合でも本発明を実施できることは言うまでもない。
【0101】
次に、ステップs20−3において、PDLデータ処理部200−1は、PDLデータ1000を受信する。この処理は、CPU100−0がPDLデータ1000の一部をRAM100−1上に生成されたバッファー領域に保存することによって実現される。
【0102】
次に、ステップs20−4において、PDLデータ処理部200−1は、PDLデータ受信処理(ステップs20−3)で受信したデータの末端がPDLデータ1000のデータ末端であるか否かを判定する。PDLデータ1000の受信が完了し、受信したデータの末端がPDLデータ1000のデータ末端であると判定された場合、PDLデータ解釈処理は終了する。PDLデータ1000の受信が完了しておらず、受信したデータの末端がPDLデータ1000のデータ末端ではないと判定された場合、処理はステップs20−5に進む。
【0103】
ステップs20−5において、PDLデータ処理部200−1は、受信したPDLデータ中に周期性のある描画のパターンがあるか否かを判定する。この判定処理においては、まず、PDLデータ処理部200−1は、PDLデータ1000がラスタービットマップ描画命令1000−3を含むか否かを判定する。そして、PDLデータ1000がラスタービットマップ描画命令1000−3を含むと判定された場合、PDLデータ処理部200−1は、周期性判定マトリックスを使ったパターンの検知処理を実行することで、パターンがあるか否かを判定する。これら二つの判定結果がともに真である場合に、PDLデータ1000中に周期性のある描画パターンがあると判定される。本実施例においては、パターンの検知処理は、周期性判定マトリックスと、PDLデータ1000内の上述したパターンオブジェクト304とのパターンマッチングによって実現される。ステップs20−5における判定で周期性のある描画パターンがないと判定された場合には、処理はステップs20−11に進む。ステップs20−5における判定で周期性のある描画パターンがあると判定された場合、処理はステップs20−6に進む。
【0104】
ステップs20−6において、PDLデータ処理部200−1は、周期性のある描画パターンに対して縮小処理が必要か否かを判定する。この判定処理では、PDLデータ1000が拡縮命令1000−4を持ち且つ拡縮命令1000−4の拡縮率が1未満である場合に、縮小処理が必要であると、PDLデータ処理部200−1は、判定する。ステップs20−6における判定で縮小処理が必要と判定された場合、処理はステップ20−7に進む。ステップs20−6における判定で縮小処理が必要ではないと判定された場合、処理はステップs20−11に進む。
【0105】
ステップs20−7において、PDLデータ処理部200−1は、周期性のある描画パターンの周期を求める。この周期を求める処理は、ステップs20−5における周期性判定マトリックスと一致するか比較する処理で用いたテーブルを用いて行われる。即ち、PDLデータ処理部200−1は、ステップs20−5で一致したパターンに対応するピッチ数をその描画パターンの周期としてRAM100−1に保存する。パターンと、ピッチ数との対応関係は、
図15および上述したステップs20−2の説明を参照されたい。
【0106】
ステップs20−8において、PDLデータ処理部200−1は、描画パターンの周期のピッチ数と、縮小率との比率を求める。この処理は、RAM 100−1に保存された周期のピッチ数を拡縮命令1000−4が持つ拡縮率で除算することにより実現される。描画パターンの周期のピッチ数と、縮小率との比率をXとすると、Xは次の(式1)により求めることができる。
X = L / R (式1)
ここで、Lは描画パターンの周期のピッチ数であり、Rは拡縮率である。
【0107】
ステップs20−9において、PDLデータ処理部200−1は、描画パターンの周期のピッチ数と、縮小率との比率Xが
図14で示したような干渉比率テーブル内の値と一致するか否かを判定する。この処理は、PDLデータ処理部200−1が干渉比率テーブル内の値を逐次探索し、Xと一致する値があるか否かを判定することにより実現される。Xが干渉比率テーブル内の値と一致すると判定された場合、処理はステップS20−10へ進む。ステップS20−10における処理は、 [セル単位の縮小処理]の章で詳しく説明する。Xが干渉比率テーブル内の値と一致しないと判定された場合、処理はステップs20−11に進む。
【0108】
ステップs20−11において、PDLデータ処理部200−1は、上記の「PDLデータのデータフロー」の章で説明した処理に基づき中間データ2000を生成する。次いで、処理は、ステップs20−3に戻る。
【0109】
PDLデータ処理部200−1は、上述した一連の処理をPDLデータ1000の終端まで繰り返し行うことで、中間データ2000を生成する。
【0110】
[セル単位の縮小処理]
次に、上記のステップS20−10で行う「セル単位の縮小処理」について、
図17および
図18(a)を参照しながら説明する。
【0111】
図17では、周期のピッチ数が5であり且つ拡縮率が1/5である場合を例に挙げて、セル単位の縮小処理を示している。
図17(a)は、縮小前の画像を表しており、画像はピクセル600から構成される。本明細書では、ピクセル600を周期のピッチ数分だけまとめたものをセル601と呼ぶ。即ち、
図17(a)で示されているように、周期のピッチ数が5である場合には、ピクセルを5ピクセル毎にまとめたものをセルと呼ぶ。
【0112】
図18(a)は、セル単位の縮小処理(ステップS20−10)で実行される詳細な動作のフロー図である。
【0113】
まず、ステップS20−10−1において、PDLデータ処理部200−1は、縮小の対象となる画像を周期のピッチ数に応じてセルに分割する。例えば、周期のピッチ数が5であるとき、PDLデータ処理部200−1は、縮小の対象となる画像を5ピクセル毎に「セル」という単位に分割する。
【0114】
次に、ステップS20−10−2において、PDLデータ処理部200−1は、拡縮率に応じてセルを選択する。この処理は、拡縮率が1/4の場合は4セルあたり1セルを選択することで実現される。
図17(b)および
図17(c)に示す例では、セル601−1〜601−4の中からセル601−1が選択されている。このように、本実施例では、ピクセル単位ではなく、セル単位で拡縮率に応じた間引き処理を行う。
【0115】
次に、ステップS20−10−3において、PDLデータ処理部200−1は、間引き処理で選択されたセルを縮小後の画像としてRAM100−1に保存する。この処理の後、PDLデータ処理部200−1は、セル単位の縮小処理(ステップS20−10)を終了する。
【0116】
[実施例1の効果]
本実施例により、空間周期性のある描画オブジェクトの描画処理と、拡縮処理とが干渉する場合に、描画品位が低下する問題を防止することができる。
【0117】
また、本実施例により、縮小処理において高速な間引き処理を行いながら、描画品位が低下する問題を防止することができる。
【0118】
以下に、具体的に説明する。画像の周期性の有無は、公知の技術であるフーリエ解析を用いることで判定することができる。本実施例では、フーリエ解析の代わりにパターンマッチングを行っており、フーリエ解析処理は行われない。パターンマッチングは、RAM100−1における比較・分岐処理であり、通常2サイクル程度の時間で実行可能である。これに対し、フーリエ解析処理は、FFTを用いてもN周期の場合、次の(式2)の回数分の乗算を必要とする。
N・log2N /2 (式2)
【0119】
本実施例では、周期性を見つけるうえで、ホストコンピュータ900から送られてくるPDLデータ1000に含まれ得るオブジェクトのパターンを利用している(ステップS20−5)。これによって、多大な計算処理を省略し、高速化を実現している。
【実施例2】
【0120】
本発明の第2の実施例(実施例2)を実施例1との差異を中心に説明する。
【0121】
実施例1では、PDLデータ処理部200−1は、プリンター100に予め保存されたテーブルを用いてPDLデータ1000中に周期性のある描画パターンがあるか否かを判定している(ステップs20−5)。加えて、PDLデータ処理部200−1は、PDLデータ1000中に拡縮命令1000−4があるか否かを判定する(ステップs20−6)。これらの処理の後、PDLデータ処理部200−1は、セル単位の縮小処理を行う(ステップS20−10)。このセル単位の縮小処理は、ホストコンピュータ900で実施されたとしても、本発明を実施できる。この場合、ホストコンピュータ900は、PDLデータ1000を解釈して、中間データ2000を生成する画像形成装置として機能する。
【0122】
そこで、本実施例では、ホストコンピュータ900でセル単位の縮小処理を行った場合について、実施例1との差異を中心に説明する。なお、本実施例においても実施例1と同様、説明を簡単にするためにモノクロ印刷の場合について説明する。
【0123】
[半透明オブジェクトの生成処理]
ホストコンピュータ900におけるPDLデータ1000の作成手順(ステップs200’)を、
図6および
図19を参照しながら説明する。なお、本実施例においても実施例1と同様、説明を簡単にするためにモノクロ印刷の場合について説明する。
【0124】
まず、ユーザーは、ホストコンピュータ900が有する所定のアプリケーションにより表示部15に表示されたファイルの中から印刷対象となるファイルを、入力操作部14を介して指定する。該指定に基づいて、CPU11は、アプリケーションによる描画を開始する。
【0125】
次いで、CPU11は、PDLデータ1000の生成のために、PDLコマンド生成処理(ステップs200’)を行い、一つ以上のPDLコマンドを生成する。PDLコマンド生成処理(ステップs200’)において、CPU11は、以下の一連の処理を行う。
【0126】
まず、ステップs201’において、CPU11は、アプリケーションからの描画に基づく描画命令があるか否かを判定する。アプリケーションからの描画に基づく描画命令があると判定された場合、処理はステップs202’へ進み、アプリケーションからの描画に基づく描画命令がないと判定された場合、処理は終了する。
【0127】
ステップs202’において、CPU11は、描画命令に半透明オブジェクトがあるか否かを判定する。描画命令に半透明オブジェクトがあると判定された場合、処理はステップs203’へ進み、描画命令に半透明オブジェクトがないと判定された場合、処理はステップs205’へ進む。
【0128】
ステップs203’において、CPU11は、ROM12に予め格納された格子状(例えば、市松模様状)の半透明パターンオブジェクトを読み出す。本実施例では、この半透明パターンは、半透明オブジェクトの透過率に対して一意に決定可能なデータとしてROM12に格納されている。次いで、処理は、ステップs204’へ進む。
【0129】
ステップs204’において、CPU11は、半透明指定されたオブジェクトに対し、半透明パターンオブジェクトと、ROPとを組み合わせることでPDLコマンドを生成し、RAM13に格納する。具体的には、半透明指定されたオブジェクトに対するROPの“XOR”指定と、半透明パターンオブジェクトに対するROPの“AND”指定と、更に半透明指定されたオブジェクトに対するROPの“XOR”指定との組み合わせによるPDLコマンドを生成する。次いで、処理は、ステップs206’へ進む。
【0130】
ステップs205’において、CPU11は、アプリケーションからの描画命令に従って、PDLコマンドを生成する。次いで、処理は、ステップs201’に戻る。
【0131】
ステップs206’において、CPU11は、アプリケーションからの描画命令に縮小命令が含まれるか否かを判定する。アプリケーションからの描画命令に縮小命令が含まれると判定された場合、処理はステップs207’へ進み、アプリケーションからの描画命令に縮小命令が含まれないと判定された場合、処理はステップs201’へ戻る。
【0132】
ステップs207’において、CPU11は、半透明パターンオブジェクトのピッチ幅を調べる。この処理は、ROM12に予め格納された格子状の半透明パターンオブジェクトのパターンのピクセル幅を読み込むことで実現される。CPU11は、読み込んだピクセル幅を半透明パターンオブジェクトのピッチ幅としてRAM13に保存する。次いで、処理は、ステップs208’へ進む。
【0133】
ステップs208’において、CPU11は、半透明オブジェクトに対してセル単位の縮小処理を行う。このセル単位の縮小処理は、実施例1の「セル単位の縮小処理」と同等の処理であるが、後に簡単に説明する。次いで、処理は、ステップs201’へ戻る。
【0134】
[セル単位の縮小処理]
次に、上記のステップs208’で行う「セル単位の縮小処理」について、
図18(b)を参照しながら説明する。
【0135】
図18(b)は、セル単位の縮小処理(ステップs208’)で実行される詳細な動作のフロー図である。
【0136】
まず、ステップS208’−1において、CPU11は、縮小の対象となる画像を周期のピッチ数に応じてセルに分割する。例えば、周期のピッチ数が5であるとき、CPU11は、縮小の対象となる画像を5ピクセル毎に「セル」という単位に分割する。
【0137】
次に、ステップS208’−2において、CPU11は、拡縮率に応じてセルを選択する。この処理は、拡縮率が1/4の場合は4セルあたり1セルを選択することで実現される。本実施例では、ピクセル単位ではなく、セル単位で拡縮率に応じた公知の間引き処理を行う。
【0138】
次に、ステップS208’−3において、CPU11は、間引き処理で選択されたセルを縮小後の画像としてRAM13に保存する。この処理の後、CPU11は、セル単位の縮小処理(ステップS208’)を終了する。
【0139】
本実施例により、PDLデータ処理部200−1がセル単位の縮小処理(ステップS20−10)を行わなくても、本発明の効果を実現することができる。
【0140】
即ち、本実施例では、プリンター100内のCPU100−0上で実行されるPDLデータ処理部200−1が受け取るPDLデータ1000は、縮小処理が必要な拡縮命令(1000−4)を含まない。このため、プリンター100側でのセル単位の縮小処理(ステップS20−10)が不要となる。
【0141】
[実施例2の効果]
本実施例により、実施例1の効果に加えて、ホストコンピュータ900のCPU11がプリンター100のCPU100−0より高速である場合に、セル単位の縮小処理をより高速に実行することができる。
【0142】
[その他の実施例]
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。