JP3567727B2 - 画像処理方法および装置 - Google Patents
画像処理方法および装置 Download PDFInfo
- Publication number
- JP3567727B2 JP3567727B2 JP07934798A JP7934798A JP3567727B2 JP 3567727 B2 JP3567727 B2 JP 3567727B2 JP 07934798 A JP07934798 A JP 07934798A JP 7934798 A JP7934798 A JP 7934798A JP 3567727 B2 JP3567727 B2 JP 3567727B2
- Authority
- JP
- Japan
- Prior art keywords
- axis direction
- intersection
- outline
- inclination
- contour
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Controls And Circuits For Display Device (AREA)
Description
【発明の属する技術分野】
この発明は、画像処理方法および装置に関し、特に、文字デザイン情報をアウトライン情報で格納し、小サイズの文字出力時にドロップアウトを補正する画像処理方法および装置に関する。
【0002】
【従来技術】
ページプリンタやディスプレイ等のビットマップスクリーンをベースとする出力装置では、画素が細かくなる、つまり、高解像度になるにしたがって、同じサイズの文字や図形を表示するために多くのデータが必要となる。特に、決まった輪郭をもつ文字情報においても、サイズ毎にビットマップデータを持つ必要があり効率が悪いものとなる、そのため、文字情報においてはサイズ毎にビットマップデータを持つのではなく、アウトライン情報を拡大または縮小してから文字の輪郭線の内部を塗り潰すことで文字を表示する方法が有利となる。
【0003】
しかし、輪郭線内部を塗り潰す方法では小サイズの文字を出力(表示)する場合には、輪郭線の間隔が狭くなりすぎて塗り潰しに抜け(ドロップアウト)が発生することがある。このドロップアウトが生じる現象を回避するためには、大きく分けてアウトライン情報自体に小サイズ出力時の輪郭線変更情報を持たせる方法と、処理系にドロップアウト発生場所を検知させ修正を行う方法の2つがある。前者は一般に処理が速く文字のデザインの崩れもデータ作成段階で補正できるが、文字数が増えた場合にデータサイズが増大し、データ作成時の手間も増える。後者ではデータの変更の必要はないが、処理が遅くなり、前者の場合と比較して文字のデザインが崩れる場合もある。したがって、現在では前者と後者を組み合わせてしようするのが主流となっている。
【0004】
なお、この発明は、上述の2つの方法のうち後者の方法に関するものであるため、後者の方法についてさらに説明する。
【0005】
図14に文字の輪郭線とその輪郭線から得られるビットマップを示す。同図に示すように文字を出力(表示)する場合には、出力しようとする文字の輪郭線の内側の画素を他の画素と反転させたビットマップを出力する。また、各画素は、図15に示すように高さ1、幅1の正方形をしており、その4隅に整数座標値がくる。画素の座標は左下隅の座標値で表現し、これをピクセル座標と呼ぶことにする。また、図16に示すように輪郭線の内側に画素の中心点がある場合、その画素は輪郭線の内側であると判断される。
【0006】
次に、スキャンコンバージョンの一例を示す。この例においては、輪郭線の方向を考慮しないEVEN−ODDルールと呼ばれる条件で輪郭線の内外を判定している。
【0007】
ここで、図17に示すようにx軸方向に画素の中心点を結んだ線を走査線または主走査線、y軸方向に画素の中心点を結んだ線を副走査線と呼ぶことにする。輪郭線の内側を求める際には、図18(a)に示すように輪郭線と走査線の交点を求め、交点とy座標が等しく、交点の右側にある画素(画素の中心点)のうち最も近い画素を選択する。この画素をエッジと呼ぶが、エッジは、例えば上記交点のx座標値の小数点第1位を四捨五入することで求めることができる。
【0008】
さて、全ての輪郭線についてエッジを選択したら、図18(b)に示すように各走査線についてエッジに挟まれた画素を反転する。このとき、反転する画素の始点または終点となるエッジのうち、始点となる画素は反転させるが、終点となる画素は反転させない。
【0009】
また、エッジを選択する段階でエッジが重なった場合、その重なりが偶数個であるあればそのエッジを削除する。この操作を実施しないと塗り潰しが正確に行われない。
なお、スキャンコンバージョンはドロップアウトが発生しない限り副走査線方向から実施しても同様の画像が得られる。
【0010】
ところで、選択されたエッジの登録を最も単純に行うには図19(a)に示すように実際のビットマップで画素を反転させればよい。しかし、文字のサイズが大きくなった場合や高解像度の場合には塗り潰しの段階で全ての画素を調べなければならないので、速度的に不利であり、単純な構造のために複雑なペイントルールが利用しにくく、輪郭線の方向等のエッジの情報をつけるとメモリ効率が悪くなるといった欠点がある。
【0011】
そのため、図19(b)に示すように各走査線をリストで管理する方法がある。これは、選択したエッジをリストに登録していき、全てのエッジが登録されたところで各リストをソートし、塗り潰し過程ではこのリストからエッジを2つずつ取り出してこれを始点および終点とする。なお、このリストはエッジリストと呼ばれる。
【0012】
ここで、図20にドロップアウトの発生例を示す。
図20(a)に示すように2つの輪郭線が隣接する画素の中心点の間を通った場合には、反転する画素が存在しないため、ドロップアウトが発生する。この場合、図20(b)に示すように2つの輪郭線の走査線との各交点から選択されるエッジが重なる。エッジが重なった場合、両輪郭線の間が輪郭線の外側であれば問題ないが、内側であればドロップアウトになる。エッジが重なった場合は前述のように削除するので、このような画素はエッジとは別のビットマップまたはエッジリストに登録する必要がある。また、図20(c)は、輪郭線と走査線の交点から求めたエッジでは発見できないドロップアウトの例を示しており、この場合には副走査線方向からエッジを選択することでドロップアウトを発見できる。この例から判るように全てのドロップアウトを発見するには、走査線方向と副走査線方向の両方から実施する必要がある。
【0013】
図21は、ドロップアウトの発生と検出の例を示しており、図21(a)は走査線方向からのスキャンコンバージョンでドロップアウトが発生した例を、図21(b)は走査線方向からのドロップアウトの検出結果を、図21(c)は副走査線方向からのドロップアウトの検出結果を示している。このような場合には、図21(a)、(b)、(c)の各画像を合成することで、図21(d)に示すような画素の抜け(ドロップアウト)の無い画像を得ることができる。
【0014】
このような処理は、文字のサイズが十分大きく、ドロップアウトが発生しなければ輪郭線からのエッジの選択は走査線または副走査線方向のどちらか一方から実施すればよいが、文字のサイズが小さくドロップアウトを処理する必要がある場合は、両方向からエッジの選択を実施しなければならずドロップアウトの処理を含む出力(表示))処理に要する時間が長くなる。
【0015】
また、ドロップアウトの発生を防止または抑制する技術としては、特開平8−87602号公報で開示されている「アウトラインフォント描画装置」や特開平8−95545号公報で開示されている「アウトラインフォント描画装置」等がある。
【0016】
特開平8−87602号公報記載の「アウトラインフォント描画装置」では、走査線方向と副走査線方向で各々スキャンコンバージョンを行い、別々のビットマップを作成し、両者を合成することでドロップアウトの無いビットマップ画像を得ている。
【0017】
また、特開平8−95545号公報記載の「アウトラインフォント描画装置」では、通常は各画素の中心部に設定されるスキャンラインをずらしてスキャンコンバージョンを行い、これによりドロップアウトの発生を抑制している。
【0018】
【発明が解決しようとする課題】
ところが、上述の特開平8−87602号公報記載の「アウトラインフォント描画装置」では、常に走査線方向と副走査線方向の両方向からスキャンコンバージョンを行っており、ドロップアウトの検出に要する時間が長くなるとともに、ドロップアウトが発生する可能性の低い文字または文字の一部分をスキャンコンバージョンする際には無駄な処理を行っていることになる。
【0019】
また、特開平8−95545号公報記載の「アウトラインフォント描画装置」では、スキャンラインをずらすことでドロップアウトの発生を抑制しているために、本来作成したい画像とは異なる画像ができる可能性があるとともに、スキャンラインの移動方向を輪郭線の方向から判断しているので塗り潰しのルールによっては適用できないものもある。
【0020】
そこで、この発明は、ドロップアウトの検出を高速に処理し、高品質のビットマップ画像を作成することのできる画像処理方法および装置を提供することを目的とする。
【0021】
【課題を解決するための手段】
上述した目的を達成するため、請求項1の発明は、x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、前記輪郭線の傾きに応じて、該輪郭線を前記x軸方向と前記y軸方向とのいずれか一方から走査するか、該輪郭線を前記x軸方向と前記y軸方向との双方から走査するかを切り換えることを特徴とする。
【0022】
また、請求項2の発明は、請求項1の発明において、前記傾きが1以上または−1以下の場合には、前記輪郭線を前記x軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には、前記輪郭線を前記x軸方向および前記y軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記検出した交点に基づいて反転する画素を決定することを特徴とする。
【0023】
また、請求項3の発明は、x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、前記輪郭線の傾きが1以上または−1以下の場合には、該輪郭線を前記x軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には、前記輪郭線を前記y軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出するとともに、該検出した交点を走査順に調べ、該交点のうちy座標値の変化した交点を抽出し、前記傾きが負の場合には該抽出した交点を前記x軸方向と前記輪郭線との交点とし、前記傾きが正の場合には該抽出した交点のy座標値を1だけ減じた点を前記x軸方向と前記輪郭線との交点とする変換を行い、前記検出若しくは変換した交点に基づいて反転する画素を決定することを特徴とする。
【0024】
また、請求項4の発明は、x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、前記輪郭線の傾きを検出する傾き検出手段と、前記傾き検出手段が検出した傾きに応じて、前記輪郭線を前記x軸方向と前記y軸方向とのいずれか一方から走査するか、前記輪郭線を前記x軸方向と前記y軸方向との双方から走査するかを切り換える走査方向切り換え手段とを具備することを特徴とする。
【0025】
また、請求項5の発明は、請求項4の発明において、前記輪郭線と走査線との交点を検出する交点検出手段と、前記交点検出手段が検出した交点に基づいて反転する画素を決定する反転画素決定手段とをさらに具備し、前記交点検出手段は、前記傾き検出手段が検出した傾きが1以上または−1以下の場合には前記x軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には前記x軸方向および前記y軸方向の複数の走査線と前記輪郭線との交点を各々検出することを特徴とする。
【0026】
また、請求項6の発明は、x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、前記輪郭線の傾きを検出する傾き検出手段と、前記傾き検出手段が検出した傾きに応じて前記輪郭線を走査する方向を切り換える走査方向切り換え手段と、前記輪郭線と走査線との交点を検出する交点検出手段と、前記交点検出手段が検出した交点のうち、前記y軸方向の走査線と前記輪郭線との交点を前記x軸方向の走査線と前記輪郭線との交点に変換する交点変換手段と、前記交点検出手段が検出した交点若しくは前記交点変換手段が変換した交点に基づいて反転する画素を決定する反転画素決定手段とを具備し、前記交点検出手段は、前記傾きが1以上または−1以下の場合には前記x軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には、前記y軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記交点変換手段は、前記検出したy軸方向の走査線と輪郭線との交点を走査順に調べ、該交点のうちy座標値の変化した交点を抽出し、前記傾きが負の場合には前記抽出した交点を前記x軸方向と前記輪郭線との交点とし、前記傾きが正の場合には前記抽出した交点のy座標値を1だけ減じた点を前記x軸方向と前記輪郭線との交点とすることを特徴とする。
【0029】
【発明の実施の形態】
以下、この発明に係わる画像処理方法および装置の一実施例を添付図面を参照して詳細に説明する。
【0030】
図1は、この発明に係わる画像処理装置の構成を示すブロック図である。
画像処理装置10は、アウトライン情報の拡大縮小等の座標変換と曲線(輪郭線情報)を画素に応じて滑らかに見える大きさの直線に分割(複数の直線による近似)を行う座標変換手段1と、輪郭線の角度を調べ、その角度に応じて走査線方向のみまたは走査線方向と副走査線方向の両方向からエッジを選択して夫々のエッジリストに登録し、その後エッジの重なった部分を検出してドロップアウト登録リストに登録する交点・ドロップアウト検出手段2、エッジリストからビットマップを生成し、さらにドロップアウト登録リストの情報を合成するビットマップ展開手段3を具備して構成される。
【0031】
この画像処理装置10は、実際には図2に示すようにCPU11と、RAM12、ROM13、外部記憶装置14、ビデオI/F(インタフェイス)15、フレームバッファ16、プリンタI/F(インタフェイス)17を具備して構成される。
【0032】
図1に示した座標変換手段1と交点・ドロップアウト検出手段2、ビットマップ展開手段3は、RAM12またはROM13に収められたプログラムによりCPU11上で構成される。また、RAM12には上述のエッジリストやドロップアウト登録リスト等が構成され、ROM13および外部記憶装置14にはアウトラインフォントデータが格納されている。フレームバッファ16は、ビットマップ展開手段3が展開したビットマップ画像を一時的に記憶し、この画像をビデオI/F15に接続されたディスプレイ(不図示)またはプリンタI/F17に接続されたページプリンタ(不図示)等の外部出力装置へ出力する。
【0033】
次に、画像処理装置10の動作について説明する。
画像処理装置10では、輪郭線(直線)の角度、つまり、傾きに応じて走査線方向のみのエッジの選択を行うか、走査線方向と副走査線方向の両方向のエッジの選択を行うかを決定する。
【0034】
図3(a)に示すように輪郭線の傾きdy/dxが1以上または−1以下の場合には、図3(b)乃至(d)に示した例のように、上下のエッジはx軸方向に1画素以上離れないので連続している。この場合には、走査線方向からのエッジの選択のみでドロップアウトを検出することができる。
【0035】
また、図4(a)に示すように輪郭線の傾きdy/dxが−1より大きく、かつ、1よりも小さい、つまり、−1<dy/dx<1の場合には、図4(b)乃至(d)に示した例のように、上下のエッジはx軸方向に1画素以上離れる可能性がある。この場合、例えば図4(b)に示した例の場合には中央のピクセルでドロップアウトが発生すると、副走査線方向からエッジの選択を行わなければこのドロップアウトを発見することができない。
【0036】
したがって、走査線方向にスキャンコンバージョンを行うならば、輪郭線の傾きdy/dxが−1<dy/dx<1の場合には、走査線および副走査線の両方向からエッジの選択を行う必要があるが、それ以外の場合には走査線方向からのみエッジの選択を行えばよいことになる。
【0037】
ここで、図5乃至9を参照して画像処理装置10の動作を説明する。
図5乃至9は、夫々画像処理装置10の動作の流れを示すフローチャートである。
【0038】
画像処理装置10は、CPU11が図示しないインタフェース等を通じて図示しないRAM(またはRAM12)上に貯えられた画像情報等を読み込む。画像情報が文字コードであればROM13または外部記憶装置14からアウトラインフォントデータを読みだして画像生成プログラムの実行を開始する(図5、ステップ101)。
【0039】
次に、CPU11は、RAM13上に走査線エッジリストと副走査線エッジリスト、ドロップアウト登録リスト等を作成し、これらリストを初期化する(ステップ102)。続いて、CPU11は画像変換手段1を実行して、輪郭線(アウトライン)を出力したい大きさに座標変換し(ステップ103)、この輪郭線を短い複数の直線に分割する(曲線部は直線近似、ステップ104)。
【0040】
輪郭線の分割が終了すると、CPU11は、交点・ドロップアウト検出手段2を実行して、エッジの選択とエッジリストへの登録を行い(ステップ105)、ドロップアウトの検出とドロップアウト登録リストへの登録を行う(ステップ106)。なお、ステップ105および106の動作の詳細は後述する。
【0041】
次に、CPU11は、ビットマップ展開手段3を実行し、走査線方向のエッジリストからビットマップを生成し(ステップ107)、ドロップアウト登録リストに登録されている座標の画素を合成(反転)した後(ステップ108)、フレームバッファ16へ出力する(ステップ109)。
【0042】
ここで、図示しない出力装置(ディスプレイやページプリンタ等)が、一定時間間隔またはCPU11からの終了信号に応じてフレームバッファ16を調べ、登録されているビットマップを出力することで画像処理装置10は動作を終了する。
【0043】
次に、上述のステップ105におけるエッジの選択とエッジリストへの登録処理の詳細について説明する。
交点・ドロップアウト検出手段2は、まず、直線に分割された最初(予め設定した順序の最初であり、どのような順序でも良い)の輪郭線をセットし(図6、ステップ201)、走査線との交点(複数)を検出する(ステップ202)。続いて、検出された交点のy座標値の小数点以下を切り捨て、x座標値の小数点以下を四捨五入してピクセル座標を取得する(ステップ203)。このピクセル座標は、交点とy座標が等しく、交点の右側にある画素(画素の中心点)のうち最も近い画素であるので、これをエッジとして走査線エッジリストに順次登録する(ステップ204)。走査線エッジリストへの登録は、まず、最初のエッジをセットし(図7、ステップ301)、その座標値のy座標またはx座標から登録するエッジリストを選択し(ステップ302)、そのエッジリストに登録するエッジの座標値を追加する(ステップ303)。エッジの登録は、最後のエッジを登録するまでは(ステップ304でNO)、次のエッジをセットして(ステップ305)、エッジリストの選択(ステップ302)および座標値の追加(ステップ303)を繰り返し、最後のエッジを登録すると(ステップ304でYES)、ステップ205(図6)へ進む。
【0044】
ここで、処理を行っている直線(輪郭線)の傾きdy/dxが−1より大きく、かつ、1よりも小さければ(ステップ205でYES)、次にこの直線と副走査線の交点を検出し(ステップ206)、検出された交点のx座標値の小数点以下を切り捨て、y座標値の小数点以下を四捨五入してピクセル座標を取得し(ステップ207)、これをエッジとして副走査線エッジリストに順次登録する(ステップ208)。副走査線エッジリストへの登録は、まず、最初のエッジをセットし(図8、ステップ401)、その座標値のx座標から登録するエッジリストを選択し(ステップ402)、そのエッジリストに登録するエッジと同じ座標値があるか否かを調べる(ステップ403)。同じ座標値が有れば(ステップ403でYES)、その座標値をエッジリストから削除し(ステップ404)、これをドロップアウト登録リストの最後に追加する(ステップ405)。また、同じ座標値が無ければ(ステップ403でNO)、エッジリストにその座標値を追加する(ステップ406)。エッジの登録は、最後のエッジを登録するまでは(ステップ407でNO)、次のエッジをセットして(ステップ408)、ステップ403からステップ407を繰り返し、最後のエッジを登録すると(ステップ407でYES)、ステップ209(図6)へ進む。
【0045】
一方、処理を行っている直線(輪郭線)の傾きdy/dxが1以上または−1以下であった場合には(ステップ205でNO)、ステップ206乃至208の(副走査線方向に対する)処理は行わずに、ステップ209へ進む。
【0046】
これらの処理は、最後の輪郭線に対する処理が終了するまでは(ステップ209でNO)、次の輪郭線をセットして(ステップ210)、ステップ202に戻り、同様の処理を行い、最後の輪郭線に対する処理が終了すると(ステップ209でYES)、ステップ105(図5)の処理を終了して、ステップ106へ進む。
【0047】
次に、上述のステップ106におけるドロップアウトの検出とドロップアウト登録リストへの登録処理の詳細について説明する。
交点・ドロップアウト検出手段2は、まず、最下段の走査線エッジリストをセットし(図9、ステップ501)、この走査線エッジリストをx座標でソートする(ステップ502)。ソートの結果、走査線エッジリスト内に同一座標が2個以上存在(連続)し(ステップ503でYES)、その数が偶数個であれば全て、奇数個であれば1つを残して削除し(ステップ504)、この座標値をドロップアウト登録リストの最後に追加する(ステップ505)。
【0048】
一方、走査線エッジリスト内に同一座標が存在しない場合には何も行わない(ステップ503でNO)。
【0049】
最下段の走査線エッジリストの処理が終了すると(ステップ506でNO)、1つ上段の走査線エッジリストをセットし(ステップ507)、ステップ502以降の処理を行い、最上段の走査線エッジリストに対する処理が行われると(ステップ506でYES)、ドロップアウトの検出とドロップアウト登録リストへの登録処理を終了してステップ107に進む。
【0050】
次に、この発明に係わる画像処理方法および装置の第2の実施例について説明する。
図10は、第2の実施例における画像処理装置の構成を示すブロック図である。
画像処理装置10′は、座標変換手段1′、交点・ドロップアウト検出手段2′、ビットマップ展開手段3′、エッジ変換手段4′を具備して構成される。座標変換手段1′、交点・ドロップアウト検出手段2′、ビットマップ展開手段3′は、各々上述の第1の実施例で説明した座標変換手段1、交点・ドロップアウト検出手段2、ビットマップ展開手段3と同様に動作し、エッジ変換手段4′は、副走査線方向から選択したエッジを走査線方向から選択したエッジに変換するエッジ変換処理を行う。また、この画像処理装置10′も第1の実施例で示した画像処理装置10と同様に、実際には図2に示すようにCPU11等で構成される。
【0051】
さて、輪郭線の傾きdy/dxが−1よりも大きく、かつ、1よりも小さい場合には、走査線方向から選択されるエッジと副走査線方向から選択されるエッジの間には所定の規則性があり、画像処理装置10′は、この規則性を利用して輪郭線の傾きdy/dxが−1よりも大きく、かつ、1よりも小さい場合には、走査線方向からのエッジの選択は行わない。
【0052】
図11は、走査線方向と副走査線方向から選択されるエッジの規則性を示した図である。副走査線方向から選択されるエッジを左から順に追っていき、y座標の値が変化するエッジに注目すると、輪郭線の傾きdy/dxが−1よりも大きく、かつ、0よりも小さい場合には、図11(a)に示すように注目したエッジは走査線方向から選択されるエッジと同一のエッジとなり、輪郭線の傾きdy/dxが0よりも大きく、かつ、1よりも小さい場合には、図11(b)に示すように注目したエッジの直下(x座標が等しく、y座標が1だけ小さい)の画素(ピクセル)が走査線方向から選択されるエッジとなる。
【0053】
なお、輪郭線の傾きdy/dxが0の場合は、輪郭線が走査線と平行であるため走査線との交点はなく、走査線方向から選択されるエッジは存在しないので考慮する必要はない。
【0054】
ここで、図12および図13を参照して画像処理装置10′の動作を説明する。
図12、図13は、画像処理装置10′の動作の流れを示すフローチャートである。
【0055】
なお、画像処理装置10′は、上述の第1の実施例で説明した画像処理装置10とエッジの選択およびエッジリストへの登録処理(図5のステップ105)の処理が異なるのみであるので、その他の部分の説明は省略する。
【0056】
さて、座標変換手段1′の処理が終了すると(図5のステップ104まで)、CPU11は交点・ドロップアウト検出手段2′を実行する。
【0057】
交点・ドロップアウト検出手段2′は、まず、直線に分割された最初の輪郭線をセットする(図12、ステップ601)。続いて、セットした直線の傾きdy/dxが−1よりも大きく、かつ、1よりも小さい場合には(ステップ602でYES)、副走査線との交点(複数)を検出し(ステップ603)、検出した交点のx座標値の小数点以下を切り捨て、y座標値の小数点以下を四捨五入してピクセル座標を取得し(ステップ604)、これをエッジとして副走査線エッジリストに順次登録する(ステップ605)。この登録の方法は図8に示したステップ401乃至408の処理と同様なので説明は省略する。
【0058】
次に、エッジ変換手段4′により、選択された副走査線方向のエッジから走査線方向のエッジを算出する(ステップ606)。
【0059】
走査線方向のエッジの算出は、まず、選択された副走査線方向のエッジをx座標について昇順にソートし(図13、ステップ701)、エッジのy座標をソートの結果得られた順番に調べて、その値が変化したエッジを検出する(ステップ702)。
【0060】
ここで輪郭線(直線)の傾きdy/dxが0よりも小さければ(−1<dy/dx<0、ステップ703でYES)、ステップ702で検出したエッジを走査線方向のエッジとしてステップ607(図12)に進み、傾きdy/dxが0よりも大きければ(0<dy/dx<1、ステップ703でNO)、ステップ702で検出したエッジの直下、つまり、x座標が等しく、y座標が1だけ小さい画素を走査線方向のエッジとしてステップ607(図12)に進む。
【0061】
走査線方向のエッジが算出されると、次にこのエッジを走査線エッジリストに順次登録する(図12、ステップ607)。この登録の方法は図7に示したステップ301乃至305の処理と同様なので説明は省略する。
【0062】
一方、輪郭線の傾きdy/dxが−1以下または1以上(dy/dx≦−1、1≦dy/dx)の場合は(ステップ602でNO)、走査線との交点を検出し(ステップ608)、検出した交点のy座標値の小数点以下を切り捨て、x座標値の小数点以下を四捨五入してピクセル座標を取得して(ステップ609)、これをエッジとして走査線エッジリストに順次登録する(ステップ610)。この登録の方法も図7に示したステップ301乃至305の処理と同様なので説明は省略する。
【0063】
これらの処理を終了し、処理を行った輪郭線が最後の輪郭線でなければ(ステップ611でNO)、次の輪郭線をセットして(ステップ612)、ステップ602以降の処理を繰り返し、処理を行った輪郭線が最後の輪郭線であれば(ステップ611でYES)、エッジ変換手段4′によるエッジの選択およびエッジリストへの登録処理を終了して図5のステップ106の処理へ進む。
【0064】
なお、上述の各実施例では、各々別個の画像処理装置として説明しているが、両者を同一の画像処理装置として構成することも可能であり、この場合には処理する輪郭線により処理方法を変えるようにしてもよい。例えば、副走査線方向で選択された各エッジのy座標の変化が激しい(変化点が多い)場合には、第1の実施例で示した処理が高速であり、その逆にy座標の変化が緩ければ第2の実施例に示した処理が高速である。
【0065】
また、上述の各実施例においては、ドロップアウト登録リストの情報の合成(図5のステップ108)をビットマップ展開手段3(3′)により、ビットマップ画像上で行っているが、1画素分の始点および終点のエッジを登録することで、直接ドロップアウトをエッジリストに登録することが可能であり、ディスプレイ等のラスタベースの出力装置ではビットマップに展開しなくともエッジリストのままで出力を実行できる場合があるため、構成によってはビットマップ展開手段3(3′)を必要としない。
【0066】
さらに、エッジリストおよびドロップアウト登録リストをRAM12上に形成しているが、これをビットマップに置き換えることも可能である。
【0067】
【発明の効果】
以上説明したように、この発明によれば、アウトラインフォントの輪郭線の傾きが−1以下または1以上の場合には、走査線方向のみのスキャンコンバージョンを行い、傾きが−1より大きく、かつ、1よりも小さい場合に、走査線と副走査線の両方向からスキャンコンバージョンを行ってドロップアウトを検出するように構成したので、
描画しようとする文字の変形を生じさせる可能性を低く保ったまま、高速にドロップアウトの補正を行うことができる。
【0068】
また、傾きが−1より大きく、かつ、1よりも小さい場合には、副走査線方向のみのスキャンコンバージョンを行い、その結果から走査線方向のスキャンコンバージョンを行ったのと同等の結果を算出するように構成したので、さらに高速にドロップアウトの補正を行うことができる。
【図面の簡単な説明】
【図1】この発明に係わる画像処理装置の構成を示すブロック図。
【図2】画像処理装置10の実際の構成を示すブロック図。
【図3】輪郭線の傾きが1以上または−1以下の場合に走査線と輪郭線の交点から決定されるエッジの例を示した図。
【図4】輪郭線の傾きが−1より大きく、かつ、1より小さい場合に走査線と輪郭線の交点から決定されるエッジの例を示した図。
【図5】画像処理装置10の動作の流れを示すフローチャート(1)。
【図6】画像処理装置10の動作の流れを示すフローチャート(2)。
【図7】画像処理装置10の動作の流れを示すフローチャート(3)。
【図8】画像処理装置10の動作の流れを示すフローチャート(4)。
【図9】画像処理装置10の動作の流れを示すフローチャート(5)。
【図10】第2の実施例における画像処理装置10′の構成を示すブロック図。
【図11】走査線方向と副走査線方向から選択されるエッジの規則性を示した図。
【図12】画像処理装置10′の動作の流れを示すフローチャート(1)。
【図13】画像処理装置10′の動作の流れを示すフローチャート(2)。
【図14】文字の輪郭線とその輪郭線から得られるビットマップを示した図。
【図15】画素の形状を示した図。
【図16】各画素が輪郭線の内外のいずれかかを判定する方法を示した図。
【図17】走査線および副走査線を示した図。
【図18】文字の描画例を示した図。
【図19】エッジの登録方法を示した図。
【図20】ドロップアウトの発生例を示した図。
【図21】ドロップアウトの発生と検出の例を示した図。
【符号の説明】
1、1′ 座標変換手段
2、2′ 交点・ドロップアウト検出手段
3、3′ ビットマップ展開手段
4′ エッジ変換手段
10、10′ 画像処理装置
11 CPU
12 RAM
13 ROM
14 外部記憶装置
15 ビデオI/F(インタフェイス)
16 フレームバッファ
17 プリンタI/F(インタフェイス)
Claims (6)
- x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、
前記輪郭線の傾きに応じて、該輪郭線を前記x軸方向と前記y軸方向とのいずれか一方から走査するか、該輪郭線を前記x軸方向と前記y軸方向との双方から走査するかを切り換えることを特徴とする画像処理方法。 - 前記傾きが1以上または−1以下の場合には、前記輪郭線を前記x軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記傾きが−1より大きく、かつ、1より小さい場合には、前記輪郭線を前記x軸方向および前記y軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記検出した交点に基づいて反転する画素を決定することを特徴とする請求項1記載の画像処理方法。 - x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理方法において、
前記輪郭線の傾きが1以上または−1以下の場合には、該輪郭線を前記x軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出し、
前記傾きが−1より大きく、かつ、1より小さい場合には、前記輪郭線を前記y軸方向に順次走査して該複数の走査線と前記輪郭線との交点を各々検出するとともに、該検出した交点を走査順に調べ、該交点のうちy座標値の変化した交点を抽出し、前記傾きが負の場合には該抽出した交点を前記x軸方向と前記輪郭線との交点とし、前記傾きが正の場合には該抽出した交点のy座標値を1だけ減じた点を前記x軸方向と前記輪郭線との交点とする変換を行い、
前記検出若しくは変換した交点に基づいて反転する画素を決定することを特徴とする画像処理方法。 - x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、
前記輪郭線の傾きを検出する傾き検出手段と、
前記傾き検出手段が検出した傾きに応じて、前記輪郭線を前記x軸方向と前記y軸方向とのいずれか一方から走査するか、前記輪郭線を前記x軸方向と前記y軸方向との双方から走査するかを切り換える走査方向切り換え手段と
を具備することを特徴とする画像処理装置。 - 前記輪郭線と走査線との交点を検出する交点検出手段と、
前記交点検出手段が検出した交点に基づいて反転する画素を決定する反転画素決定手段と
をさらに具備し、
前記交点検出手段は、前記傾き検出手段が検出した傾きが1以上または−1以下の場合には前記x軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には前記x軸方向および前記y軸方向の複数の走査線と前記輪郭線との交点を各々検出すること
を特徴とする請求項4記載の画像処理装置。 - x軸方向と該x軸方向に直交するy軸方向との少なくとも一方から走査して描画する文字の輪郭線を特定し、該特定した輪郭線の内側に相当する画素を反転することで該文字に対応する画像をビットマップ上に展開する画像処理装置において、
前記輪郭線の傾きを検出する傾き検出手段と、
前記傾き検出手段が検出した傾きに応じて前記輪郭線を走査する方向を切り換える走査方向切り換え手段と、
前記輪郭線と走査線との交点を検出する交点検出手段と、
前記交点検出手段が検出した交点のうち、前記y軸方向の走査線と前記輪郭線との交点を前記x軸方向の走査線と前記輪郭線との交点に変換する交点変換手段と、
前記交点検出手段が検出した交点若しくは前記交点変換手段が変換した交点に基づいて反転する画素を決定する反転画素決定手段と
を具備し、
前記交点検出手段は、前記傾きが1以上または−1以下の場合には前記x軸方向の複数の走査線と前記輪郭線との交点を各々検出し、前記傾きが−1より大きく、かつ、1より小さい場合には、前記y軸方向の複数の走査線と前記輪郭線との交点を各々検出し、
前記交点変換手段は、前記検出したy軸方向の走査線と輪郭線との交点を走査順に調べ、該交点のうちy座標値の変化した交点を抽出し、前記傾きが負の場合には前記抽出した交点を前記x軸方向と前記輪郭線との交点とし、前記傾きが正の場合には前記抽出した交点のy座標値を1だけ減じた点を前記x軸方向と前記輪郭線との交点とする
ことを特徴とする画像処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP07934798A JP3567727B2 (ja) | 1998-03-26 | 1998-03-26 | 画像処理方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP07934798A JP3567727B2 (ja) | 1998-03-26 | 1998-03-26 | 画像処理方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11282449A JPH11282449A (ja) | 1999-10-15 |
JP3567727B2 true JP3567727B2 (ja) | 2004-09-22 |
Family
ID=13687378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP07934798A Expired - Fee Related JP3567727B2 (ja) | 1998-03-26 | 1998-03-26 | 画像処理方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3567727B2 (ja) |
-
1998
- 1998-03-26 JP JP07934798A patent/JP3567727B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11282449A (ja) | 1999-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3483946B2 (ja) | フォント処理装置及びフォント処理方法 | |
US20090141025A1 (en) | Drawing apparatus, drawing program, and drawing method | |
US5524198A (en) | Character or graphic processing method and apparatus | |
JP4370438B2 (ja) | ベクター画像描画装置、ベクター画像描画方法およびプログラム | |
JPH07322057A (ja) | 2進入力画像の解像度の増大方法及びその増大装置、ならびに2進入力画像の外観の改良方法 | |
US5388166A (en) | Image drawing apparatus | |
JP2876942B2 (ja) | データ変換装置 | |
JP3567727B2 (ja) | 画像処理方法および装置 | |
US20060119897A1 (en) | Output apparatus and program thereof | |
JP2770582B2 (ja) | 図形塗潰し装置 | |
JP3416489B2 (ja) | フォント処理装置およびフォント処理用プログラムを記録した記録媒体 | |
JP3567728B2 (ja) | 画像処理方法および装置 | |
US6504543B1 (en) | Polygon drawing method and polygon drawing apparatus | |
JP3603589B2 (ja) | 画像処理方法および装置 | |
JP3350325B2 (ja) | キャラクタ出力装置 | |
JP3350324B2 (ja) | キャラクタ出力装置 | |
JP2782752B2 (ja) | 文字パターン出力装置 | |
JP3517982B2 (ja) | 図形描画装置 | |
JP3536894B2 (ja) | 図形処理装置 | |
JPH10198333A (ja) | アウトライン文字描画装置 | |
JPH05143743A (ja) | ベクトル画像描画装置 | |
JPH0259871A (ja) | 画像処理装置および画像処理方法 | |
JP2001307115A (ja) | 画像処理装置および画像処理方法 | |
JPH10294864A (ja) | 画像分離処理装置 | |
JPH06175637A (ja) | 文字の生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040217 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040419 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040525 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040607 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080625 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090625 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100625 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100625 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110625 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110625 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |