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