(57)【特許請求の範囲】
【請求項１】
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接している場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合に、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間することを特徴とする画像処理方法。
【請求項２】
前記第１記録ドット列および前記第２記録ドット列が、円又は楕円を表わすベクトルデータから生成されたものである場合、該円又は楕円の内側にドットを補間することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接している場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合に、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間する処理をコンピュータに実行させる補間プログラムを格納したことを特徴とするコンピュータ可読メモリ。
【請求項４】
前記補間プログラムは、前記第１記録ドット列および前記第２記録ドット列が、円又は楕円を表わすベクトルデータから生成されたものである場合、該円又は楕円の内側にドットを補間する処理をコンピュータに実行させることを特徴とする請求項３に記載のコンピュータ可読メモリ。
【請求項５】
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接しているか否かを判定する判定手段と、
前記判定手段で斜めに隣接すると判定された場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合には、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間する補間手段と、
を有することを特徴とする画像処理装置。
【請求項６】
前記補間手段は、前記第１記録ドット列および前記第２記録ドット列が、円又は楕円を表わすベクトルデータから生成されたものである場合、該円又は楕円の内側にドットを補間することを特徴とする請求項５に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理方法及び装置に関するものである。
【０００２】
【従来の技術】
従来からこの種の画像処理装置として、レーザビームプリンタやインクジェットプリンタなどのドットマトリクス式ページプリンタが知られている。このようなプリンタでは、図形や文字などのベクトルデータをドットの集合で構成されるラスタデータに変換し、１ページ分の内部メモリ空間に展開する。このラスタデータに対応する印字メディア上の特定位置（各ドットの面積に相当する範囲）にトナーやインクを付着させることにより印字を行う。この時の印字機構をレーザビーム型プリンタを例に説明する。
【０００３】
プリンタ内部のメモリ空間に展開されたラスタデータは、レーザ光をＯＮ／ＯＦＦする駆動信号に変換される。このレーザ駆動信号（ビデオ信号）に基づいて発射されるレーザ光が、予め負の電荷により帯電している感光ドラムに照射される。レーザビームが帯電感光ドラム上を走査すると、ビームが照射された部分の電荷が消えるために照射されなかった部分との間に電位差が生じ、ラスタデータと同じ形の像ができる。このような潜像を持つドラム上に、正の電荷を持つトナーを付着させることによって、可視像が形成され、このトナー像を記録材に転写することによって画像記録が行なわれる。
【０００４】
各ドットの面積はデータの解像度によって異なるが、このような印字機構においてはレーザ光の照射時間を制御することによってドット面積を調整している。すなわち、解像度が高く１ドットの面積が小さい場合はレーザの照射／停止時間を短くし、逆に解像度が低く１ドットの面積が大きい場合は長くすることによって、面積を調整する。
【０００５】
さて、アプリケーションより図形や文字などのデータが送られてくると、プリンタ内部あるいはホスト上で解析処理を行って、最終的にラスタデータに展開する。この時図形はドットの集合で表されるが、図形の元面積が１ドットの面積に近い場合は１ドットで図形全体を表すケースもある。また、１ドットの面積に近い幅を指定された直線や、文字、図形の輪郭線などでは、各スキャンラインにドットが１つずつ並ぶようなドット構成になる場合もある。
【０００６】
このように、アプリケーションから送られる印刷データを解析し、ラスタデータに展開する際に、図形の形状や属性によっては部分的に、近傍に他のドットがない（あるいは少ない）孤立したドットが並ぶ可能性がある。
【０００７】
【発明が解決しようとする課題】
このような印字機構によって描画データを印字する場合、図形の各部の面積が充分に広い場合は問題ないが、上述のように１ドットで図形の形状を表すような部分の潜像形成及びトナーののり状態が、高解像度になるにつれて問題となってくる。
【０００８】
プリンタエンジンが高解像度になればなるほど、１ドットに相当するトナーの付着面積は小さくなり、１ドット面積中に付着するトナー量も減少する。出力解像度が高くなると１ドット当りの面積が小さくなるため、狭い範囲に集まった電荷は互いに飛び易く、また全体として引力も弱いので、トナーの吸着率が悪く、正しい可視像が形成されない場合がある。
【０００９】
そのため、ドットの分散や孤立によって近傍に他のドットが無かったり少なかったりする場合は、メディア上にドットを再現する充分な量のトナーがのらず、結果として本来印字されるべき図形が消えてしまったり薄くなったりするという問題が発生していた。
【００１０】
特に、図９のように、あるスキャンライン上に存在する記録ドット列の一端とそのスキャンラインに隣接するスキャンラインに存在する記録ドット列の一端とが、斜めに隣接する関係にある場合には、それらのドット列の再現性が低下していた。
【００１１】
本発明は、上記問題を解決するためになされたもので、その目的とするところは、高品質の画像を提供する画像処理方法及び装置を提供することにある。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る方法は、
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接している場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合に、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るコンピュータ可読メモリは、
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接している場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合に、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間する処理をコンピュータに実行させる補間プログラムを格納したことを特徴とする。
【００１４】
上記目的を達成するため、本発明に係る画像処理装置は、
第１のスキャンライン上に存在する第１記録ドット列の一端の第１記録ドットと、第２のスキャンライン上に存在する第２記録ドット列の一端の第２記録ドットとが、離間も連続もせず、斜めに隣接しているか否かを判定する判定手段と、
前記判定手段で斜めに隣接すると判定された場合で、かつ、前記第１記録ドット列及び前記第２記録ドット列の何れもが再現を保証できる最低ドット数よりも短い場合には、前記第１記録ドットおよび前記第２記録ドットの両方に連続する位置にドットを補間する補間手段と、
を有することを特徴とする。
【００２１】
【発明の実施の形態】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素の相対配置、数式、数値等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００２２】
（第１の実施の形態）
まず、本発明に係る画像処理装置の第１の実施の形態としてのプリンタについて、図１乃至図５を用いて説明する。
【００２３】
［装置構成］
図１は、本実施の形態としてのプリンタの概略構成を示すブロック図である。
プリンタ１００は、プリントコントローラ１０１とプリントエンジン１０２から構成されており、ホストコンピュータ１０３から、入力した図形や文字などのベクトルデータを、変換部１０４にて、一旦ランレングスデータに変換して蓄積した後、更に、１ページ分の画素の集合で構成されるラスタデータに変換し、ページメモリ１０５に展開する。そして、ページメモリ１０５から出力したラスタデータに基づいて、プリントエンジン１０２にて記録材にトナーやインクを付着させることにより印字を行う。
【００２４】
「ランレングス」とは、平面上の閉領域を表現する中間データ形式であり、ランレングスデータ形式では、１スキャンライン毎に図形の左座標点と右座標点を対で持ち両者に挟まれた範囲を図形の内部領域と認識する。例えば、図２（ａ）の２０１のような直線の描画開始位置座標、終了位置座標及び線幅を指定するベクトル情報がホストコンピュータから送信された場合、図２（ｂ）のようなランレングスデータへ一旦変換された後、さらにラスタデータへ展開され図２（ｃ）のようにページメモリ１０５に格納される。
【００２５】
図２（ｃ）のように全ての記録ドットが連続している場合には、プリントエンジン１０２で安定した記録が行われ、ドットの消失といった問題はおこらない。
【００２６】
しかし、図３（ａ）の３０１のように、線幅の細い線分のベクトルデータがホストから送られた場合には、このまま、ラスタ展開すると、図３（ｃ）に黒く塗りつぶされた画素のみに記録ドットがのることになる。ように１スキャラインに１ドットしか打たれなくなる。この時、ｙ２のスキャンラインに存在する記録ドットとｙ３のスキャンラインに存在する記録ドットのように斜めに隣接する場合は、ドット間の距離が長いために孤立ドットに近くなり、個々のドットの再現性は悪くなる。
【００２７】
そこで、走査線と同方向にドットが連続するように、図３（ｂ）のようなランレングスデータに対して補間処理部３０２において補間処理を行なう。具体的には、図３（ｃ）において、グレーで示された、（ｘ２，ｙ２）の位置、或いは、（ｘ３，ｙ３）の位置に記録ドットを補間する。
【００２８】
［補間処理の流れ］
図４及び図５は、補間処理部３０２での処理の流れを概略的に示したフローチャートである。
【００２９】
図４のステップＳ１でアプリケーションより描画データを受け取る。ホストまたはプリンタで、受け取ったデータを解析し（ステップＳ２）、ステップＳ３で中間データであるランレングスを作成する。作成したランレングスデータはＲＵＮ［ｍ］［２］に格納する。ここで、ＲＡＮ［ｍ］［０］にはｍ番目のスキャンラインの左ｘ座標、ＲＵＮ［ｍ］［１］へは右ｘ座標がそれぞれ格納されるとする。
【００３０】
ステップＳ４で１ドットの再現性が保証されている基準解像度を取得し、ＢａｓｅＲｅｓｏｌに格納する。更にステップＳ５で現在の解像度を取得しＣｒｔＲｅｓｏｌに格納する。上記情報よりｓ６で補間限界長Ｌｍｔｌｅｎｇｔｈを計算する。
【００３１】
ステップＳ７でスキャラインを示す変数ｍに、開始スキャンライン番号Ｙｍｉｎ（初期値）を設定する。次にステップＳ８で、１つ前のランが補間されているか否かを示すフラグｃｍｐＦｌｇを０で初期化する。ステップＳ９で先頭スキャンラインのランレングスデータ（右ｘ座標及び左ｘ座標）をそれぞれ、ｘＬｃｒｔ、ｘＲｃｒｔに代入する。
【００３２】
ステップＳ１０で現在のスキャンラインが最終スキャンライン（Ｙｍａｘ）か否かを判断する。最終ラインであれば、処理を終了する。
【００３３】
最終ラインでない場合は、ステップＳ１１で、現在のスキャンラインのランの長さ（ｘＲｃｒｔ−ｘＬｃｒｔ）をＣｌｅｎｇｔｈへ代入する。次に、ステップＳ１２で次のスキャンラインのランレングスデータをｘＬｎｘｔ，ｘＲｎｘｔに代入し、ステップＳ１３で次のスキャンラインのラン長（ｘＲｎｘｔ−ｘＬｎｘｔ）をＮｌｅｎｇｔｈに代入する。
【００３４】
次に図５のステップＳ１４へ移行し、１つ前のスキャンラインがドット補間されているか否かを判断する。補間されている場合はステップＳ１７へ移行し、ｃｍｐＦｌｇを０にしてステップＳ２４へ移行する。補間されていない場合は、ステップＳ１５に進む。
【００３５】
ステップＳ１５では現在のラン長及び次のラン長と補間限界長とを比較し、いずれも補間限界長よりも短い場合、その接点ではドット再現性が悪いと判断し、ステップＳ１６に進む。
【００３６】
ステップＳ１６で現在のスキャンライン上のランに対して次のスキャンラインのランがどの位置にあるかを判断する。つまり、ｘＬｎｘｔ＞ｘＲｃｘｔ  ｏｒｘＬｃｘｔ＞ｘＲｎｘｔ  である場合にステップＳ２０に進む
ステップＳ２０で現在のスキャンライン上のランよりも次のライン上のランが左にあると判断された場合、ステップＳ２１で現在のランの左端にＬｍｔｌｅｎｇｔｈ＋Ｃｌｅｎｆｔｈ−１だけドットを補間する。同様に現在のスキャンライン上のランよりも次のライン上のランが右にあると判断された場合、ステップＳ２２で現在のランの右端にＬｍｔｌｅｎｇｔｈ−Ｃｌｅｎｇｔｈ＋１だけドットを補間する。
【００３７】
上記で現在のランと次のランの端点が斜めに接する場合の補間処理が行われた時は、ステップＳ２３でフラグｃｍｐＦｌｇをたてる。
【００３８】
次に、補間処理の如何に関わらずステップＳ２４で現在のランの左右点を次のランの左右点に更新し、ステップＳ２５でスキャンラインを１更新して図４のステップＳ１０に戻り、スキャンラインが終了するまで処理を繰り返す。
【００３９】
つまり、以上の処理を、簡単に示すと図６のようになる。
【００４０】
処理を開始すると、ステップＳ１０１で、記録ドット列Ｃの長さＣｌｅｎｇｔｈ及び記録ドット列Ｎの長さＮｌｅｎｇｔｈを算出する。
【００４１】
次に、ステップＳ１０２で、Ｃの一端のＸ座標が、Ｎの一端のＸ座標と１画素だけ離れた位置に存在するかどうかを判定する。否定的な判定であれば、ステップＳ１０５に進む。
【００４２】
更に、ステップＳ１０３で、ＣｌｅｎｇｔｈとＮｌｅｎｇｔｈの両方が、補完限界長Ｌｍｔｌｅｎｇｔｈ以下であるかどうかを判定する。否定的な判定であればステップＳ１０５に進む。
【００４３】
ステップＳ１０３で肯定的な判定であれば、ステップＳ１０４に進み、ＣとＮが連続するようにＣの一端のＸ座標を増加させる。
【００４４】
最後にステップＳ１０５では、Ｎが存在するスキャンラインが最終ラインであるか否かを判定し、最終ラインであれば処理を終了し、そうでなければ、次のラインへ処理を移す（ステップＳ１０６）。
【００４５】
以上の処理により、斜め４５度に接する付近のラン長が短く再現性を保証できない場合、再現を保証できる最低数（補間限界長）のドットが補間される。
【００４６】
つまり、ドットの分散や孤立によってメディア上にドットを再現する充分な量のトナーが載らず、結果として本来印字されるべき図形が消えてしまったり薄くなったりするという問題を回避し、これらのドットの再現性を高めることが可能となる。
【００４７】
（第２の実施の形態）
図７、８は、（楕）円を描画する場合の本発明に係る処理を説明するためのフローチャートである。
【００４８】
円や曲線は、細かい直線に分解して多角形や折れ線で近似するため、最終的には直線と同じくランレングスで表される。ラン同士が斜めに並んで補間が必要と判断された時、（楕）円の内部に向かってドットが打たれるようにすると比較的形状を損なわずに補間できるため、現在のランが（楕）円のどの部分に相当するかによって補間位置を決定する。
【００４９】
ほとんどの処理が上記第１の実施の形態と同様であるが、楕円データを解析して直線データに分解する際、左半円と右半円を別々に処理する点で異なる（ランレングスは同じスキャンラインに複数のランデータを持つことができない）。
【００５０】
まず、図７のＳ３３で、処理回数フラグｎを初期化する。ｎ＝０の時はＳ３４で左半円を直線データに分解し、半円全体をランレングスデータとする。
【００５１】
この後、Ｓ３５〜Ｓ４１までは第１の実施の形態のＳ４〜Ｓ１０に対応する処理であるため、ここではその説明を省略する。
【００５２】
ｓ４１で現在のスキャンラインが最終スキャンラインである場合、５４５で処理回数フラグｎを１更新する。Ｓ４６でｎが２以上であれば左右両半円の処理が終了しているので、処理を終了する。
【００５３】
ｎが１であれば左半円の処理が終了しているので、Ｓ４７で右半円を直線データに分解し、Ｓ３８に戻る。
【００５４】
Ｓ４２〜Ｓ５３（図８）までは第１の実施の形態のＳ１１〜Ｓ２０と同様の処理であるため、ここでは説明を省略する。それぞれ斜めに接していて補間要と判断された場合、Ｓ５４〜Ｓ５９で補間処理を行なう。
【００５５】
Ｓ５３において現在のランよりも次のランが左にある場合で、Ｓ５４で左半円の処理中と判断された場合（ｎ＝＝０）は、Ｓ５５でｘＲｎｘｔを＋Ｌｍｔｌｅｎｇｔｈする（次のランの右端を補間限界長だけ右に延す）。右半円の処理中と判断された場合（ｎ＝＝１）はＳ５６でｘＬｃｒｔを−Ｌｍｔｌｅｎｇｔｈする（現在のランの左端を補間長だけ左に延す）。
【００５６】
同様に、現在のランよりも次のランが右にある場合で、Ｓ５７で左半円の処理中と判断された場合（ｎ＝＝０）は、Ｓ５９でｘＲｃｒｔを＋Ｌｍｔｌｅｎｇｔｈする。右半円の処理中と判断された場合（ｎ＝＝１）はＳ５８でｘＬｎｘｔを−Ｌｍｔｌｅｎｇｔｈする。（ステップ３）
以上の処理により、斜め４５度に接する付近のラン長が短く再現性を保証できない場合、再現を保証できる最低数（補間限界長）のドットが円の内部に向かう位置に追加される。
【００５７】
（他の実施形態）
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００５８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６０】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した（図６に示す）フローチャートに対応するプログラムコードが格納されることになる。
【００６１】
【発明の効果】
以上説明したように、本発明によれば高品質の画像を提供する画像処理方法及び装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態としてのプリンタの概略構成を示すブロック図である。
【図２】ベクトルデータからラスタデータへのデータ変換を示す図である。
【図３】ベクトルデータからラスタデータへのデータ変換を示す図である。
【図４】本発明の第１の実施の形態に係る補間処理部での処理の流れを概略的に示したフローチャートである。
【図５】本発明の第１の実施の形態に係る補間処理部での処理の流れを概略的に示したフローチャートである。
【図６】本発明の第１の実施の形態に係る補間処理部での処理の流れを概略的に示したフローチャートである。
【図７】本発明の第２の実施の形態に係る補間処理部での処理の流れを概略的に示したフローチャートである。
【図８】本発明の第２の実施の形態に係る補間処理部での処理の流れを概略的に示したフローチャートである。
【図９】記録ドットが斜めに隣接する例を示す図である。
【図１】
0004261735.tif 000002
【図２】
0004261735.tif 000003
【図３】
0004261735.tif 000004
【図４】
0004261735.tif 000005
【図５】
0004261735.tif 000006
【図６】
0004261735.tif 000007
【図７】
0004261735.tif 000008
【図８】
0004261735.tif 000009
【図９】
0004261735.tif 000010