(57)【特許請求の範囲】
【請求項１】
ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、
前記輪郭線の傾きに応じて、該輪郭線を前記ｘ軸方向と前記ｙ軸方向とのいずれか一方から走査するか、該輪郭線を前記ｘ軸方向と前記ｙ軸方向との双方から走査するかを切り換えることを特徴とする画像処理方法。
【請求項２】
前記傾きが１以上または−１以下の場合には、前記輪郭線を前記ｘ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記傾きが−１より大きく、かつ、１より小さい場合には、前記輪郭線を前記ｘ軸方向および前記ｙ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記検出した交点に基づいて反転する画素を決定することを特徴とする請求項１記載の画像処理方法。
【請求項３】
ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、
前記輪郭線の傾きが１以上または−１以下の場合には、該輪郭線を前記ｘ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記傾きが−１より大きく、かつ、１より小さい場合には、前記輪郭線を前記ｙ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出するとともに、該検出した交点を走査順に調べ、該交点のうちｙ座標値の変化した交点を抽出し、前記傾きが負の場合には該抽出した交点を前記ｘ軸方向と前記輪郭線との交点とし、前記傾きが正の場合には該抽出した交点のｙ座標値を１だけ減じた点を前記ｘ軸方向と前記輪郭線との交点とする変換を行い、
前記検出若しくは変換した交点に基づいて反転する画素を決定することを特徴とする画像処理方法。
【請求項４】
ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、
前記輪郭線の傾きを検出する傾き検出手段と、
前記傾き検出手段が検出した傾きに応じて、前記輪郭線を前記ｘ軸方向と前記ｙ軸方向とのいずれか一方から走査するか、前記輪郭線を前記ｘ軸方向と前記ｙ軸方向との双方から走査するかを切り換える走査方向切り換え手段と
を具備することを特徴とする画像処理装置。
【請求項５】
前記輪郭線と走査線との交点を検出する交点検出手段と、
前記交点検出手段が検出した交点に基づいて反転する画素を決定する反転画素決定手段と
をさらに具備し、
前記交点検出手段は、前記傾き検出手段が検出した傾きが１以上または−１以下の場合には前記ｘ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には前記ｘ軸方向および前記ｙ軸方向の複数の走査線と前記輪郭線との交点を各々検出すること
を特徴とする請求項４記載の画像処理装置。
【請求項６】
ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、
前記輪郭線の傾きを検出する傾き検出手段と、
前記傾き検出手段が検出した傾きに応じて前記輪郭線を走査する方向を切り換える走査方向切り換え手段と、
前記輪郭線と走査線との交点を検出する交点検出手段と、
前記交点検出手段が検出した交点のうち、前記ｙ軸方向の走査線と前記輪郭線との交点を前記ｘ軸方向の走査線と前記輪郭線との交点に変換する交点変換手段と、
前記交点検出手段が検出した交点若しくは前記交点変換手段が変換した交点に基づいて反転する画素を決定する反転画素決定手段と
を具備し、
前記交点検出手段は、前記傾きが１以上または−１以下の場合には前記ｘ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には、前記ｙ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、
前記交点変換手段は、前記検出したｙ軸方向の走査線と輪郭線との交点を走査順に調べ、該交点のうちｙ座標値の変化した交点を抽出し、前記傾きが負の場合には前記抽出した交点を前記ｘ軸方向と前記輪郭線との交点とし、前記傾きが正の場合には前記抽出した交点のｙ座標値を１だけ減じた点を前記ｘ軸方向と前記輪郭線との交点とする
ことを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理方法および装置に関し、特に、文字デザイン情報をアウトライン情報で格納し、小サイズの文字出力時にドロップアウトを補正する画像処理方法および装置に関する。
【０００２】
【従来技術】
ページプリンタやディスプレイ等のビットマップスクリーンをベースとする出力装置では、画素が細かくなる、つまり、高解像度になるにしたがって、同じサイズの文字や図形を表示するために多くのデータが必要となる。特に、決まった輪郭をもつ文字情報においても、サイズ毎にビットマップデータを持つ必要があり効率が悪いものとなる、そのため、文字情報においてはサイズ毎にビットマップデータを持つのではなく、アウトライン情報を拡大または縮小してから文字の輪郭線の内部を塗り潰すことで文字を表示する方法が有利となる。
【０００３】
しかし、輪郭線内部を塗り潰す方法では小サイズの文字を出力（表示）する場合には、輪郭線の間隔が狭くなりすぎて塗り潰しに抜け（ドロップアウト）が発生することがある。このドロップアウトが生じる現象を回避するためには、大きく分けてアウトライン情報自体に小サイズ出力時の輪郭線変更情報を持たせる方法と、処理系にドロップアウト発生場所を検知させ修正を行う方法の２つがある。前者は一般に処理が速く文字のデザインの崩れもデータ作成段階で補正できるが、文字数が増えた場合にデータサイズが増大し、データ作成時の手間も増える。後者ではデータの変更の必要はないが、処理が遅くなり、前者の場合と比較して文字のデザインが崩れる場合もある。したがって、現在では前者と後者を組み合わせてしようするのが主流となっている。
【０００４】
なお、この発明は、上述の２つの方法のうち後者の方法に関するものであるため、後者の方法についてさらに説明する。
【０００５】
図１４に文字の輪郭線とその輪郭線から得られるビットマップを示す。同図に示すように文字を出力（表示）する場合には、出力しようとする文字の輪郭線の内側の画素を他の画素と反転させたビットマップを出力する。また、各画素は、図１５に示すように高さ１、幅１の正方形をしており、その４隅に整数座標値がくる。画素の座標は左下隅の座標値で表現し、これをピクセル座標と呼ぶことにする。また、図１６に示すように輪郭線の内側に画素の中心点がある場合、その画素は輪郭線の内側であると判断される。
【０００６】
次に、スキャンコンバージョンの一例を示す。この例においては、輪郭線の方向を考慮しないＥＶＥＮ−ＯＤＤルールと呼ばれる条件で輪郭線の内外を判定している。
【０００７】
ここで、図１７に示すようにｘ軸方向に画素の中心点を結んだ線を走査線または主走査線、ｙ軸方向に画素の中心点を結んだ線を副走査線と呼ぶことにする。輪郭線の内側を求める際には、図１８（ａ）に示すように輪郭線と走査線の交点を求め、交点とｙ座標が等しく、交点の右側にある画素（画素の中心点）のうち最も近い画素を選択する。この画素をエッジと呼ぶが、エッジは、例えば上記交点のｘ座標値の小数点第１位を四捨五入することで求めることができる。
【０００８】
さて、全ての輪郭線についてエッジを選択したら、図１８（ｂ）に示すように各走査線についてエッジに挟まれた画素を反転する。このとき、反転する画素の始点または終点となるエッジのうち、始点となる画素は反転させるが、終点となる画素は反転させない。
【０００９】
また、エッジを選択する段階でエッジが重なった場合、その重なりが偶数個であるあればそのエッジを削除する。この操作を実施しないと塗り潰しが正確に行われない。
なお、スキャンコンバージョンはドロップアウトが発生しない限り副走査線方向から実施しても同様の画像が得られる。
【００１０】
ところで、選択されたエッジの登録を最も単純に行うには図１９（ａ）に示すように実際のビットマップで画素を反転させればよい。しかし、文字のサイズが大きくなった場合や高解像度の場合には塗り潰しの段階で全ての画素を調べなければならないので、速度的に不利であり、単純な構造のために複雑なペイントルールが利用しにくく、輪郭線の方向等のエッジの情報をつけるとメモリ効率が悪くなるといった欠点がある。
【００１１】
そのため、図１９（ｂ）に示すように各走査線をリストで管理する方法がある。これは、選択したエッジをリストに登録していき、全てのエッジが登録されたところで各リストをソートし、塗り潰し過程ではこのリストからエッジを２つずつ取り出してこれを始点および終点とする。なお、このリストはエッジリストと呼ばれる。
【００１２】
ここで、図２０にドロップアウトの発生例を示す。
図２０（ａ）に示すように２つの輪郭線が隣接する画素の中心点の間を通った場合には、反転する画素が存在しないため、ドロップアウトが発生する。この場合、図２０（ｂ）に示すように２つの輪郭線の走査線との各交点から選択されるエッジが重なる。エッジが重なった場合、両輪郭線の間が輪郭線の外側であれば問題ないが、内側であればドロップアウトになる。エッジが重なった場合は前述のように削除するので、このような画素はエッジとは別のビットマップまたはエッジリストに登録する必要がある。また、図２０（ｃ）は、輪郭線と走査線の交点から求めたエッジでは発見できないドロップアウトの例を示しており、この場合には副走査線方向からエッジを選択することでドロップアウトを発見できる。この例から判るように全てのドロップアウトを発見するには、走査線方向と副走査線方向の両方から実施する必要がある。
【００１３】
図２１は、ドロップアウトの発生と検出の例を示しており、図２１（ａ）は走査線方向からのスキャンコンバージョンでドロップアウトが発生した例を、図２１（ｂ）は走査線方向からのドロップアウトの検出結果を、図２１（ｃ）は副走査線方向からのドロップアウトの検出結果を示している。このような場合には、図２１（ａ）、（ｂ）、（ｃ）の各画像を合成することで、図２１（ｄ）に示すような画素の抜け（ドロップアウト）の無い画像を得ることができる。
【００１４】
このような処理は、文字のサイズが十分大きく、ドロップアウトが発生しなければ輪郭線からのエッジの選択は走査線または副走査線方向のどちらか一方から実施すればよいが、文字のサイズが小さくドロップアウトを処理する必要がある場合は、両方向からエッジの選択を実施しなければならずドロップアウトの処理を含む出力（表示））処理に要する時間が長くなる。
【００１５】
また、ドロップアウトの発生を防止または抑制する技術としては、特開平８−８７６０２号公報で開示されている「アウトラインフォント描画装置」や特開平８−９５５４５号公報で開示されている「アウトラインフォント描画装置」等がある。
【００１６】
特開平８−８７６０２号公報記載の「アウトラインフォント描画装置」では、走査線方向と副走査線方向で各々スキャンコンバージョンを行い、別々のビットマップを作成し、両者を合成することでドロップアウトの無いビットマップ画像を得ている。
【００１７】
また、特開平８−９５５４５号公報記載の「アウトラインフォント描画装置」では、通常は各画素の中心部に設定されるスキャンラインをずらしてスキャンコンバージョンを行い、これによりドロップアウトの発生を抑制している。
【００１８】
【発明が解決しようとする課題】
ところが、上述の特開平８−８７６０２号公報記載の「アウトラインフォント描画装置」では、常に走査線方向と副走査線方向の両方向からスキャンコンバージョンを行っており、ドロップアウトの検出に要する時間が長くなるとともに、ドロップアウトが発生する可能性の低い文字または文字の一部分をスキャンコンバージョンする際には無駄な処理を行っていることになる。
【００１９】
また、特開平８−９５５４５号公報記載の「アウトラインフォント描画装置」では、スキャンラインをずらすことでドロップアウトの発生を抑制しているために、本来作成したい画像とは異なる画像ができる可能性があるとともに、スキャンラインの移動方向を輪郭線の方向から判断しているので塗り潰しのルールによっては適用できないものもある。
【００２０】
そこで、この発明は、ドロップアウトの検出を高速に処理し、高品質のビットマップ画像を作成することのできる画像処理方法および装置を提供することを目的とする。
【００２１】
【課題を解決するための手段】
上述した目的を達成するため、請求項１の発明は、ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、前記輪郭線の傾きに応じて、該輪郭線を前記ｘ軸方向と前記ｙ軸方向とのいずれか一方から走査するか、該輪郭線を前記ｘ軸方向と前記ｙ軸方向との双方から走査するかを切り換えることを特徴とする。
【００２２】
また、請求項２の発明は、請求項１の発明において、前記傾きが１以上または−１以下の場合には、前記輪郭線を前記ｘ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には、前記輪郭線を前記ｘ軸方向および前記ｙ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記検出した交点に基づいて反転する画素を決定することを特徴とする。
【００２３】
また、請求項３の発明は、ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、前記輪郭線の傾きが１以上または−１以下の場合には、該輪郭線を前記ｘ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には、前記輪郭線を前記ｙ軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出するとともに、該検出した交点を走査順に調べ、該交点のうちｙ座標値の変化した交点を抽出し、前記傾きが負の場合には該抽出した交点を前記ｘ軸方向と前記輪郭線との交点とし、前記傾きが正の場合には該抽出した交点のｙ座標値を１だけ減じた点を前記ｘ軸方向と前記輪郭線との交点とする変換を行い、前記検出若しくは変換した交点に基づいて反転する画素を決定することを特徴とする。
【００２４】
また、請求項４の発明は、ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、前記輪郭線の傾きを検出する傾き検出手段と、前記傾き検出手段が検出した傾きに応じて、前記輪郭線を前記ｘ軸方向と前記ｙ軸方向とのいずれか一方から走査するか、前記輪郭線を前記ｘ軸方向と前記ｙ軸方向との双方から走査するかを切り換える走査方向切り換え手段とを具備することを特徴とする。
【００２５】
また、請求項５の発明は、請求項４の発明において、前記輪郭線と走査線との交点を検出する交点検出手段と、前記交点検出手段が検出した交点に基づいて反転する画素を決定する反転画素決定手段とをさらに具備し、前記交点検出手段は、前記傾き検出手段が検出した傾きが１以上または−１以下の場合には前記ｘ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には前記ｘ軸方向および前記ｙ軸方向の複数の走査線と前記輪郭線との交点を各々検出することを特徴とする。
【００２６】
また、請求項６の発明は、ｘ軸方向と該ｘ軸方向に直交するｙ軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、前記輪郭線の傾きを検出する傾き検出手段と、前記傾き検出手段が検出した傾きに応じて前記輪郭線を走査する方向を切り換える走査方向切り換え手段と、前記輪郭線と走査線との交点を検出する交点検出手段と、前記交点検出手段が検出した交点のうち、前記ｙ軸方向の走査線と前記輪郭線との交点を前記ｘ軸方向の走査線と前記輪郭線との交点に変換する交点変換手段と、前記交点検出手段が検出した交点若しくは前記交点変換手段が変換した交点に基づいて反転する画素を決定する反転画素決定手段とを具備し、前記交点検出手段は、前記傾きが１以上または−１以下の場合には前記ｘ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−１より大きく、かつ、１より小さい場合には、前記ｙ軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記交点変換手段は、前記検出したｙ軸方向の走査線と輪郭線との交点を走査順に調べ、該交点のうちｙ座標値の変化した交点を抽出し、前記傾きが負の場合には前記抽出した交点を前記ｘ軸方向と前記輪郭線との交点とし、前記傾きが正の場合には前記抽出した交点のｙ座標値を１だけ減じた点を前記ｘ軸方向と前記輪郭線との交点とすることを特徴とする。
【００２９】
【発明の実施の形態】
以下、この発明に係わる画像処理方法および装置の一実施例を添付図面を参照して詳細に説明する。
【００３０】
図１は、この発明に係わる画像処理装置の構成を示すブロック図である。
画像処理装置１０は、アウトライン情報の拡大縮小等の座標変換と曲線（輪郭線情報）を画素に応じて滑らかに見える大きさの直線に分割（複数の直線による近似）を行う座標変換手段１と、輪郭線の角度を調べ、その角度に応じて走査線方向のみまたは走査線方向と副走査線方向の両方向からエッジを選択して夫々のエッジリストに登録し、その後エッジの重なった部分を検出してドロップアウト登録リストに登録する交点・ドロップアウト検出手段２、エッジリストからビットマップを生成し、さらにドロップアウト登録リストの情報を合成するビットマップ展開手段３を具備して構成される。
【００３１】
この画像処理装置１０は、実際には図２に示すようにＣＰＵ１１と、ＲＡＭ１２、ＲＯＭ１３、外部記憶装置１４、ビデオＩ／Ｆ（インタフェイス）１５、フレームバッファ１６、プリンタＩ／Ｆ（インタフェイス）１７を具備して構成される。
【００３２】
図１に示した座標変換手段１と交点・ドロップアウト検出手段２、ビットマップ展開手段３は、ＲＡＭ１２またはＲＯＭ１３に収められたプログラムによりＣＰＵ１１上で構成される。また、ＲＡＭ１２には上述のエッジリストやドロップアウト登録リスト等が構成され、ＲＯＭ１３および外部記憶装置１４にはアウトラインフォントデータが格納されている。フレームバッファ１６は、ビットマップ展開手段３が展開したビットマップ画像を一時的に記憶し、この画像をビデオＩ／Ｆ１５に接続されたディスプレイ（不図示）またはプリンタＩ／Ｆ１７に接続されたページプリンタ（不図示）等の外部出力装置へ出力する。
【００３３】
次に、画像処理装置１０の動作について説明する。
画像処理装置１０では、輪郭線（直線）の角度、つまり、傾きに応じて走査線方向のみのエッジの選択を行うか、走査線方向と副走査線方向の両方向のエッジの選択を行うかを決定する。
【００３４】
図３（ａ）に示すように輪郭線の傾きｄｙ／ｄｘが１以上または−１以下の場合には、図３（ｂ）乃至（ｄ）に示した例のように、上下のエッジはｘ軸方向に１画素以上離れないので連続している。この場合には、走査線方向からのエッジの選択のみでドロップアウトを検出することができる。
【００３５】
また、図４（ａ）に示すように輪郭線の傾きｄｙ／ｄｘが−１より大きく、かつ、１よりも小さい、つまり、−１＜ｄｙ／ｄｘ＜１の場合には、図４（ｂ）乃至（ｄ）に示した例のように、上下のエッジはｘ軸方向に１画素以上離れる可能性がある。この場合、例えば図４（ｂ）に示した例の場合には中央のピクセルでドロップアウトが発生すると、副走査線方向からエッジの選択を行わなければこのドロップアウトを発見することができない。
【００３６】
したがって、走査線方向にスキャンコンバージョンを行うならば、輪郭線の傾きｄｙ／ｄｘが−１＜ｄｙ／ｄｘ＜１の場合には、走査線および副走査線の両方向からエッジの選択を行う必要があるが、それ以外の場合には走査線方向からのみエッジの選択を行えばよいことになる。
【００３７】
ここで、図５乃至９を参照して画像処理装置１０の動作を説明する。
図５乃至９は、夫々画像処理装置１０の動作の流れを示すフローチャートである。
【００３８】
画像処理装置１０は、ＣＰＵ１１が図示しないインタフェース等を通じて図示しないＲＡＭ（またはＲＡＭ１２）上に貯えられた画像情報等を読み込む。画像情報が文字コードであればＲＯＭ１３または外部記憶装置１４からアウトラインフォントデータを読みだして画像生成プログラムの実行を開始する（図５、ステップ１０１）。
【００３９】
次に、ＣＰＵ１１は、ＲＡＭ１３上に走査線エッジリストと副走査線エッジリスト、ドロップアウト登録リスト等を作成し、これらリストを初期化する（ステップ１０２）。続いて、ＣＰＵ１１は画像変換手段１を実行して、輪郭線（アウトライン）を出力したい大きさに座標変換し（ステップ１０３）、この輪郭線を短い複数の直線に分割する（曲線部は直線近似、ステップ１０４）。
【００４０】
輪郭線の分割が終了すると、ＣＰＵ１１は、交点・ドロップアウト検出手段２を実行して、エッジの選択とエッジリストへの登録を行い（ステップ１０５）、ドロップアウトの検出とドロップアウト登録リストへの登録を行う（ステップ１０６）。なお、ステップ１０５および１０６の動作の詳細は後述する。
【００４１】
次に、ＣＰＵ１１は、ビットマップ展開手段３を実行し、走査線方向のエッジリストからビットマップを生成し（ステップ１０７）、ドロップアウト登録リストに登録されている座標の画素を合成（反転）した後（ステップ１０８）、フレームバッファ１６へ出力する（ステップ１０９）。
【００４２】
ここで、図示しない出力装置（ディスプレイやページプリンタ等）が、一定時間間隔またはＣＰＵ１１からの終了信号に応じてフレームバッファ１６を調べ、登録されているビットマップを出力することで画像処理装置１０は動作を終了する。
【００４３】
次に、上述のステップ１０５におけるエッジの選択とエッジリストへの登録処理の詳細について説明する。
交点・ドロップアウト検出手段２は、まず、直線に分割された最初（予め設定した順序の最初であり、どのような順序でも良い）の輪郭線をセットし（図６、ステップ２０１）、走査線との交点（複数）を検出する（ステップ２０２）。続いて、検出された交点のｙ座標値の小数点以下を切り捨て、ｘ座標値の小数点以下を四捨五入してピクセル座標を取得する（ステップ２０３）。このピクセル座標は、交点とｙ座標が等しく、交点の右側にある画素（画素の中心点）のうち最も近い画素であるので、これをエッジとして走査線エッジリストに順次登録する（ステップ２０４）。走査線エッジリストへの登録は、まず、最初のエッジをセットし（図７、ステップ３０１）、その座標値のｙ座標またはｘ座標から登録するエッジリストを選択し（ステップ３０２）、そのエッジリストに登録するエッジの座標値を追加する（ステップ３０３）。エッジの登録は、最後のエッジを登録するまでは（ステップ３０４でＮＯ）、次のエッジをセットして（ステップ３０５）、エッジリストの選択（ステップ３０２）および座標値の追加（ステップ３０３）を繰り返し、最後のエッジを登録すると（ステップ３０４でＹＥＳ）、ステップ２０５（図６）へ進む。
【００４４】
ここで、処理を行っている直線（輪郭線）の傾きｄｙ／ｄｘが−１より大きく、かつ、１よりも小さければ（ステップ２０５でＹＥＳ）、次にこの直線と副走査線の交点を検出し（ステップ２０６）、検出された交点のｘ座標値の小数点以下を切り捨て、ｙ座標値の小数点以下を四捨五入してピクセル座標を取得し（ステップ２０７）、これをエッジとして副走査線エッジリストに順次登録する（ステップ２０８）。副走査線エッジリストへの登録は、まず、最初のエッジをセットし（図８、ステップ４０１）、その座標値のｘ座標から登録するエッジリストを選択し（ステップ４０２）、そのエッジリストに登録するエッジと同じ座標値があるか否かを調べる（ステップ４０３）。同じ座標値が有れば（ステップ４０３でＹＥＳ）、その座標値をエッジリストから削除し（ステップ４０４）、これをドロップアウト登録リストの最後に追加する（ステップ４０５）。また、同じ座標値が無ければ（ステップ４０３でＮＯ）、エッジリストにその座標値を追加する（ステップ４０６）。エッジの登録は、最後のエッジを登録するまでは（ステップ４０７でＮＯ）、次のエッジをセットして（ステップ４０８）、ステップ４０３からステップ４０７を繰り返し、最後のエッジを登録すると（ステップ４０７でＹＥＳ）、ステップ２０９（図６）へ進む。
【００４５】
一方、処理を行っている直線（輪郭線）の傾きｄｙ／ｄｘが１以上または−１以下であった場合には（ステップ２０５でＮＯ）、ステップ２０６乃至２０８の（副走査線方向に対する）処理は行わずに、ステップ２０９へ進む。
【００４６】
これらの処理は、最後の輪郭線に対する処理が終了するまでは（ステップ２０９でＮＯ）、次の輪郭線をセットして（ステップ２１０）、ステップ２０２に戻り、同様の処理を行い、最後の輪郭線に対する処理が終了すると（ステップ２０９でＹＥＳ）、ステップ１０５（図５）の処理を終了して、ステップ１０６へ進む。
【００４７】
次に、上述のステップ１０６におけるドロップアウトの検出とドロップアウト登録リストへの登録処理の詳細について説明する。
交点・ドロップアウト検出手段２は、まず、最下段の走査線エッジリストをセットし（図９、ステップ５０１）、この走査線エッジリストをｘ座標でソートする（ステップ５０２）。ソートの結果、走査線エッジリスト内に同一座標が２個以上存在（連続）し（ステップ５０３でＹＥＳ）、その数が偶数個であれば全て、奇数個であれば１つを残して削除し（ステップ５０４）、この座標値をドロップアウト登録リストの最後に追加する（ステップ５０５）。
【００４８】
一方、走査線エッジリスト内に同一座標が存在しない場合には何も行わない（ステップ５０３でＮＯ）。
【００４９】
最下段の走査線エッジリストの処理が終了すると（ステップ５０６でＮＯ）、１つ上段の走査線エッジリストをセットし（ステップ５０７）、ステップ５０２以降の処理を行い、最上段の走査線エッジリストに対する処理が行われると（ステップ５０６でＹＥＳ）、ドロップアウトの検出とドロップアウト登録リストへの登録処理を終了してステップ１０７に進む。
【００５０】
次に、この発明に係わる画像処理方法および装置の第２の実施例について説明する。
図１０は、第２の実施例における画像処理装置の構成を示すブロック図である。
画像処理装置１０′は、座標変換手段１′、交点・ドロップアウト検出手段２′、ビットマップ展開手段３′、エッジ変換手段４′を具備して構成される。座標変換手段１′、交点・ドロップアウト検出手段２′、ビットマップ展開手段３′は、各々上述の第１の実施例で説明した座標変換手段１、交点・ドロップアウト検出手段２、ビットマップ展開手段３と同様に動作し、エッジ変換手段４′は、副走査線方向から選択したエッジを走査線方向から選択したエッジに変換するエッジ変換処理を行う。また、この画像処理装置１０′も第１の実施例で示した画像処理装置１０と同様に、実際には図２に示すようにＣＰＵ１１等で構成される。
【００５１】
さて、輪郭線の傾きｄｙ／ｄｘが−１よりも大きく、かつ、１よりも小さい場合には、走査線方向から選択されるエッジと副走査線方向から選択されるエッジの間には所定の規則性があり、画像処理装置１０′は、この規則性を利用して輪郭線の傾きｄｙ／ｄｘが−１よりも大きく、かつ、１よりも小さい場合には、走査線方向からのエッジの選択は行わない。
【００５２】
図１１は、走査線方向と副走査線方向から選択されるエッジの規則性を示した図である。副走査線方向から選択されるエッジを左から順に追っていき、ｙ座標の値が変化するエッジに注目すると、輪郭線の傾きｄｙ／ｄｘが−１よりも大きく、かつ、０よりも小さい場合には、図１１（ａ）に示すように注目したエッジは走査線方向から選択されるエッジと同一のエッジとなり、輪郭線の傾きｄｙ／ｄｘが０よりも大きく、かつ、１よりも小さい場合には、図１１（ｂ）に示すように注目したエッジの直下（ｘ座標が等しく、ｙ座標が１だけ小さい）の画素（ピクセル）が走査線方向から選択されるエッジとなる。
【００５３】
なお、輪郭線の傾きｄｙ／ｄｘが０の場合は、輪郭線が走査線と平行であるため走査線との交点はなく、走査線方向から選択されるエッジは存在しないので考慮する必要はない。
【００５４】
ここで、図１２および図１３を参照して画像処理装置１０′の動作を説明する。
図１２、図１３は、画像処理装置１０′の動作の流れを示すフローチャートである。
【００５５】
なお、画像処理装置１０′は、上述の第１の実施例で説明した画像処理装置１０とエッジの選択およびエッジリストへの登録処理（図５のステップ１０５）の処理が異なるのみであるので、その他の部分の説明は省略する。
【００５６】
さて、座標変換手段１′の処理が終了すると（図５のステップ１０４まで）、ＣＰＵ１１は交点・ドロップアウト検出手段２′を実行する。
【００５７】
交点・ドロップアウト検出手段２′は、まず、直線に分割された最初の輪郭線をセットする（図１２、ステップ６０１）。続いて、セットした直線の傾きｄｙ／ｄｘが−１よりも大きく、かつ、１よりも小さい場合には（ステップ６０２でＹＥＳ）、副走査線との交点（複数）を検出し（ステップ６０３）、検出した交点のｘ座標値の小数点以下を切り捨て、ｙ座標値の小数点以下を四捨五入してピクセル座標を取得し（ステップ６０４）、これをエッジとして副走査線エッジリストに順次登録する（ステップ６０５）。この登録の方法は図８に示したステップ４０１乃至４０８の処理と同様なので説明は省略する。
【００５８】
次に、エッジ変換手段４′により、選択された副走査線方向のエッジから走査線方向のエッジを算出する（ステップ６０６）。
【００５９】
走査線方向のエッジの算出は、まず、選択された副走査線方向のエッジをｘ座標について昇順にソートし（図１３、ステップ７０１）、エッジのｙ座標をソートの結果得られた順番に調べて、その値が変化したエッジを検出する（ステップ７０２）。
【００６０】
ここで輪郭線（直線）の傾きｄｙ／ｄｘが０よりも小さければ（−１＜ｄｙ／ｄｘ＜０、ステップ７０３でＹＥＳ）、ステップ７０２で検出したエッジを走査線方向のエッジとしてステップ６０７（図１２）に進み、傾きｄｙ／ｄｘが０よりも大きければ（０＜ｄｙ／ｄｘ＜１、ステップ７０３でＮＯ）、ステップ７０２で検出したエッジの直下、つまり、ｘ座標が等しく、ｙ座標が１だけ小さい画素を走査線方向のエッジとしてステップ６０７（図１２）に進む。
【００６１】
走査線方向のエッジが算出されると、次にこのエッジを走査線エッジリストに順次登録する（図１２、ステップ６０７）。この登録の方法は図７に示したステップ３０１乃至３０５の処理と同様なので説明は省略する。
【００６２】
一方、輪郭線の傾きｄｙ／ｄｘが−１以下または１以上（ｄｙ／ｄｘ≦−１、１≦ｄｙ／ｄｘ）の場合は（ステップ６０２でＮＯ）、走査線との交点を検出し（ステップ６０８）、検出した交点のｙ座標値の小数点以下を切り捨て、ｘ座標値の小数点以下を四捨五入してピクセル座標を取得して（ステップ６０９）、これをエッジとして走査線エッジリストに順次登録する（ステップ６１０）。この登録の方法も図７に示したステップ３０１乃至３０５の処理と同様なので説明は省略する。
【００６３】
これらの処理を終了し、処理を行った輪郭線が最後の輪郭線でなければ（ステップ６１１でＮＯ）、次の輪郭線をセットして（ステップ６１２）、ステップ６０２以降の処理を繰り返し、処理を行った輪郭線が最後の輪郭線であれば（ステップ６１１でＹＥＳ）、エッジ変換手段４′によるエッジの選択およびエッジリストへの登録処理を終了して図５のステップ１０６の処理へ進む。
【００６４】
なお、上述の各実施例では、各々別個の画像処理装置として説明しているが、両者を同一の画像処理装置として構成することも可能であり、この場合には処理する輪郭線により処理方法を変えるようにしてもよい。例えば、副走査線方向で選択された各エッジのｙ座標の変化が激しい（変化点が多い）場合には、第１の実施例で示した処理が高速であり、その逆にｙ座標の変化が緩ければ第２の実施例に示した処理が高速である。
【００６５】
また、上述の各実施例においては、ドロップアウト登録リストの情報の合成（図５のステップ１０８）をビットマップ展開手段３（３′）により、ビットマップ画像上で行っているが、１画素分の始点および終点のエッジを登録することで、直接ドロップアウトをエッジリストに登録することが可能であり、ディスプレイ等のラスタベースの出力装置ではビットマップに展開しなくともエッジリストのままで出力を実行できる場合があるため、構成によってはビットマップ展開手段３（３′）を必要としない。
【００６６】
さらに、エッジリストおよびドロップアウト登録リストをＲＡＭ１２上に形成しているが、これをビットマップに置き換えることも可能である。
【００６７】
【発明の効果】
以上説明したように、この発明によれば、アウトラインフォントの輪郭線の傾きが−１以下または１以上の場合には、走査線方向のみのスキャンコンバージョンを行い、傾きが−１より大きく、かつ、１よりも小さい場合に、走査線と副走査線の両方向からスキャンコンバージョンを行ってドロップアウトを検出するように構成したので、
描画しようとする文字の変形を生じさせる可能性を低く保ったまま、高速にドロップアウトの補正を行うことができる。
【００６８】
また、傾きが−１より大きく、かつ、１よりも小さい場合には、副走査線方向のみのスキャンコンバージョンを行い、その結果から走査線方向のスキャンコンバージョンを行ったのと同等の結果を算出するように構成したので、さらに高速にドロップアウトの補正を行うことができる。
【図面の簡単な説明】
【図１】この発明に係わる画像処理装置の構成を示すブロック図。
【図２】画像処理装置１０の実際の構成を示すブロック図。
【図３】輪郭線の傾きが１以上または−１以下の場合に走査線と輪郭線の交点から決定されるエッジの例を示した図。
【図４】輪郭線の傾きが−１より大きく、かつ、１より小さい場合に走査線と輪郭線の交点から決定されるエッジの例を示した図。
【図５】画像処理装置１０の動作の流れを示すフローチャート（１）。
【図６】画像処理装置１０の動作の流れを示すフローチャート（２）。
【図７】画像処理装置１０の動作の流れを示すフローチャート（３）。
【図８】画像処理装置１０の動作の流れを示すフローチャート（４）。
【図９】画像処理装置１０の動作の流れを示すフローチャート（５）。
【図１０】第２の実施例における画像処理装置１０′の構成を示すブロック図。
【図１１】走査線方向と副走査線方向から選択されるエッジの規則性を示した図。
【図１２】画像処理装置１０′の動作の流れを示すフローチャート（１）。
【図１３】画像処理装置１０′の動作の流れを示すフローチャート（２）。
【図１４】文字の輪郭線とその輪郭線から得られるビットマップを示した図。
【図１５】画素の形状を示した図。
【図１６】各画素が輪郭線の内外のいずれかかを判定する方法を示した図。
【図１７】走査線および副走査線を示した図。
【図１８】文字の描画例を示した図。
【図１９】エッジの登録方法を示した図。
【図２０】ドロップアウトの発生例を示した図。
【図２１】ドロップアウトの発生と検出の例を示した図。
【符号の説明】
１、１′    座標変換手段
２、２′    交点・ドロップアウト検出手段
３、３′    ビットマップ展開手段
４′    エッジ変換手段
１０、１０′    画像処理装置
１１    ＣＰＵ
１２    ＲＡＭ
１３    ＲＯＭ
１４    外部記憶装置
１５    ビデオＩ／Ｆ（インタフェイス）
１６    フレームバッファ
１７    プリンタＩ／Ｆ（インタフェイス）
【図１】
0003567727.tif 000002
【図２】
0003567727.tif 000003
【図３】
0003567727.tif 000004
【図４】
0003567727.tif 000005
【図５】
0003567727.tif 000006
【図６】
0003567727.tif 000007
【図７】
0003567727.tif 000008
【図８】
0003567727.tif 000009
【図９】
0003567727.tif 000010
【図１０】
0003567727.tif 000011
【図１１】
0003567727.tif 000012
【図１２】
0003567727.tif 000013
【図１３】
0003567727.tif 000014
【図１４】
0003567727.tif 000015
【図１５】
0003567727.tif 000016
【図１６】
0003567727.tif 000017
【図１７】
0003567727.tif 000018
【図１８】
0003567727.tif 000019
【図１９】
0003567727.tif 000020
【図２０】
0003567727.tif 000021
【図２１】
0003567727.tif 000022