(57)【特許請求の範囲】
【請求項１】
画像データにおけるオブジェクトの輪郭を表現する座標点列を、三次ベジェ曲線の単位近似区間に区切るアンカ点を設定するアンカ点設定手段と、
前記アンカ点設定手段で設定された複数のアンカ点の中で着目するアンカ点を第一アンカ点とし、これに隣接するアンカ点を第二アンカ点とし、前記第一アンカ点と前記第二アンカ点の二つのアンカ点を通る第一の直線を座標軸のひとつとし且つ前記第一アンカ点もしくは前記第二アンカ点を原点とした直交座標系において、前記二つのアンカ点で区切られる単位近似区間の座標点列の中で前記第一の直線から最も離れている点が存在する象限にそれぞれ第一のコントロール点候補と第二のコントロール点候補とを設定するコントロール点候補設定手段と、
前記第一のコントロール点候補と前記第一アンカ点を結ぶ線分と、前記第二のコントロール点候補と前記第二アンカ点の線分とが互いに交差することのないように第一のコントロール点と第二のコントロール点を決定するコントロール点決定手段と
を具備し、
前記コントロール点決定手段は、
前記コントロール点候補の位置が前記単位近似区間の形状で決定される制限区間に収まっているか否かを判定する手段を備え、
前記コントロール点候補の位置が前記制限区間に収まっていると判定された場合は前記コントロール点候補を補正した座標点をコントロール点とし、前記コントロール点候補の位置が前記制限区間に収まっていないと判定された場合は前記コントロール点候補をコントロール点とし、
前記コントロール点決定手段はまた、
前記第一の直線に対し前記単位近似区間の前記座標点列の中で最も離れている前記座標点を通る垂線上で、かつ前記アンカ点間を結ぶ第一の直線から前記アンカ点間に含まれる座標点列の中で最も離れている点までの距離の４／３倍となる点を制限点、前記アンカ点と前記制限点までの距離を制限距離とし、
前記アンカ点と対応する前記コントロール点候補との距離が、前記制限距離を超過しているか否かを判定する手段を備え、
制限距離を超過していると判定された場合は前記制限点をコントロール点とし、制限距離を超過していないと判定された場合は前記コントロール点候補をコントロール点とすることを特徴とした画像処理装置。
【請求項２】
画像データにおけるオブジェクトの輪郭を表現する座標点列を三次ベジェ曲線の単位近似区間に区切るアンカ点の設定を行うアンカ点設定手段と、
前記アンカ点設定手段で設定された複数のアンカ点における互いに隣接する二つのアンカ点を結ぶ直線を座標軸のひとつとし且つ前記二つのアンカ点の何れかを原点とした直交座標系において、前記二つのアンカ点で区切られる単位近似区間における座標点列の中で前記直線から最も離れている座標点が存在する象限に、前記二つのアンカ点の夫々に対応する計二つのコントロール点候補を設定するコントロール点候補設定手段と、
前記座標点を通る前記直線に対する垂線上で、前記座標点までの距離の４／３倍となる点を制限点、前記二つのアンカ点のうちの一つのアンカ点と前記制限点までの距離を、当該一つのアンカ点に対応する制限距離とし、当該一つのアンカ点と、当該一つのアンカ点に対応するコントロール点候補との距離が、当該一つのアンカ点に対応する前記制限距離を超過しているか否かを判定する手段と、
前記制限距離を超過していると判定された場合は、前記制限点を当該一つのアンカ点に対応するコントロール点と決定し、前記制限距離を超過していないと判定された場合は、当該一つのアンカ点に対応するコントロール点候補を当該一つのアンカ点に対応するコントロール点と決定するコントロール点決定手段と
を有することを特徴とする画像処理装置。
【請求項３】
画像データを入力する画像入力手段と、
前記画像入力手段により入力された画像データにおけるオブジェクトの輪郭を表現する座標点列を生成する座標点列抽出手段と
を更に具備することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記二つのアンカ点と、前記二つのアンカ点の夫々に対応する二つのコントロール点とを前記単位近似区間における前記輪郭の形状を近似する近似データとして出力する近似データの出力手段と
を更に具備することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記アンカ点設定手段は、前記直線を軸にした前記直交座標系における単位近似区間の座標点列で近似される輪郭の極大値もしくは極小値が一つ以下となるようにアンカ点を設定することを特徴とする請求項２乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記アンカ点設定手段では、前記座標点列で近似される輪郭が極大値又は極小値となる頂点と、前記座標点列で近似される輪郭の曲率の符号が変化する変曲点とを少なくとも抽出することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記アンカ点設定手段では、前記頂点として、前記座標点列で近似される輪郭の傾きの符号の正負が入れ替わる点を、前記変曲点として、前記座標点列で近似される輪郭の傾きの変化量の符号の正負が入れ替わる点を抽出することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記コントロール点候補設定手段は、前記直交座標系の前記象限に、
前記直線に対して最も大きい角度を持つ、前記二つのアンカ点のうちの一つのアンカ点と前記単位近似区間内の座標点とを結ぶ直線の上に、当該一つのアンカ点に対応するコントロール点候補を設定し、
前記直線に対して最も大きい角度を持つ、前記二つのアンカ点のうちのもう一つのアンカ点と前記単位近似区間内の座標点とを結ぶ直線の上に、当該もう一つのアンカ点に対応するコントロール点候補を設定することを特徴とする請求項２乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記単位近似区間に対し直線で表現してよい区間か否かを判定する直線区間の判定手段を更に備え、
前記直線区間でないと判定された場合は前記コントロール点候補設定手段により前記コントロール点の候補を決定し、前記直線区間であると判定された場合は前記コントロール点の候補を決定しないことを特徴する請求項２乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
前記直線区間の判定手段は、前記二つのアンカ点同士の距離を、前記直線に対して前記単位近似区間の前記座標点列の中で最も離れている前記座標点までの距離で除算した値が閾値以上であった場合、当該単位近似区間を直線区間として判定することを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記コントロール点決定手段は、
前記二つのアンカ点のうちの一つのアンカ点と当該アンカ点に対応するコントロール点候補とを結ぶ線分と、前記二つのアンカ点のうちのもう一つのアンカ点と当該アンカ点に対応するコントロール点候補とを結ぶ線分とが互いに交差するか否かを判定する交差判定手段と、
前記交差判定手段による判定の結果に応じてコントロール点候補を補正するコントロール点候補補正手段とを備えることを特徴とする請求項２に記載の画像処理装置。
【請求項１２】
請求項１乃至１１のいずれか一項に記載した画像処理装置の各手段としてコンピュータを機能させるためのプログラム。
【請求項１３】
アンカ点設定手段と、コントロール点候補設定手段と、判定手段と、コントロール点決定手段とを有する画像処理装置における画像処理方法であって、
前記アンカ点設定手段が、画像データにおける輪郭の形状を表現する座標点列を三次ベジェ曲線の単位近似区間に区切るアンカ点の設定を行うアンカ点設定工程と、
前記コントロール点候補設定手段が、前記アンカ点設定工程で設定された複数のアンカ点における互いに隣接する二つのアンカ点を結ぶ直線を座標軸のひとつとし且つ前記二つのアンカ点の何れかを原点とした直交座標系において、前記二つのアンカ点で区切られる単位近似区間における座標点列の中で前記直線から最も離れている座標点が存在する象限に、前記二つのアンカ点の夫々に対応する計二つのコントロール点候補を設定するコントロール点候補設定工程と、
前記判定手段が、前記座標点を通る前記直線に対する垂線上で、前記座標点までの距離の４／３倍となる点を制限点、前記二つのアンカ点のうちの一つのアンカ点と前記制限点までの距離を、当該一つのアンカ点に対応する制限距離とし、当該一つのアンカ点と、当該一つのアンカ点に対応するコントロール点候補との距離が、当該一つのアンカ点に対応する前記制限距離を超過しているか否かを判定する工程と、
前記コントロール点決定手段が、前記制限距離を超過していると判定された場合は、前記制限点を当該一つのアンカ点に対応するコントロール点と決定し、前記制限距離を超過していないと判定された場合は、当該一つのアンカ点に対応するコントロール点候補を当該一つのアンカ点に対応するコントロール点と決定するコントロール点決定工程と
を有することを特徴とした画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理技術に関するものであり、特にラスタ画像から特徴点を抽出し、関数近似を行うことでベクタ画像へ変換を行う画像処理装置と画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ディスプレイや印刷機器など解像度の異なる機器の混在化が進み、一つの画像情報を異なる解像度で表示する機会が増えてきている。低解像度機器に適した画像を高解像度機器で表示あるいは印刷しようとすると、そのままでは出力サイズが小さくなるため、画素を補間するなどして画像を本来のサイズに変換する必要がある。このようにサイズが変更された画像は、高解像度機器で出力してもその解像度を生かすことができず画質の劣化が目立ってしまう。このことからラスタ形式で表現された画像を、解像度に依存しないベクタ形式へ変換する、ベクトル化技術が必要となってきている。ベクトル化技術の検討は以前からも行われており、下記に示すようなベクトル化手法が開示されている。
【０００３】
特許文献１では二値画像の輪郭を示す座標点列を、以下の条件を満たす分割点で分割を行う。
角点１：隣接する点列を結ぶベクトルの変化が鋭角となる点。
角点２：連続する点と点との距離がある閾値より大きい場合の両端の点。
変曲点：連続するベクトルの外積の符号が変化する点。
このようにしてできた分割点に対し、近傍の座標点形状から接線方向を定め、それぞれベジェ曲線で近似を行う。
【０００４】
しかしながら上記特許文献１においては、接線方向の決定法は明記されていない。また近似した結果をフィードバックし、精度が低いと判定された場合は分割点の追加を行っており、処理速度の低下や過剰な分割点の抽出を行ってしまう可能性がある。
【０００５】
特許文献２では、入力された座標点列に対し連続する曲線区間でｘ方向、またはｙ方向についてベクトルの向きが逆転する点、及び曲率が大きな点を分割点とする。そして分割点間を隣接する節点の方向を接線方向として制御点を決定し、その後隣り合う統合区間の接線方向を合わせるために、決定した制御点を補正する。
【０００６】
しかしながら上記特許文献２においては、接線方向を隣接する座標点の方向と一意に定めており、近似区間にノイズが含まれる場合、近似精度が上がらない可能性がある。
【０００７】
特許文献３では、入力された座標点列を三次曲線で表すことできるようなセグメントに区切り、最小二乗近似を行う。そして最小二乗近似で得られた曲線セグメントの始点と終点における接線を微分により求めてベジェ曲線を生成し、その後セグメント同士をつなぐため決定した接線方向を補正する。
【０００８】
しかしながら上記特許文献３においては、ベジェ近似処理の前処理として、最小二乗近似を必要としており、処理速度の低下を招く可能性がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−３１００７０号公報
【特許文献２】特開平０４−１１６６９０号公報
【特許文献３】特開平０４−２８７１７３号公報
【特許文献４】特許第３０２６５９２号明細書
【特許文献５】特開２００６−０３１２４５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、従来のベクトル化方法では、得られたベクタデータの基となるラスタデータに対する近似精度とベクトル化処理の負荷とが互いにトレードオフの関係にあり、高精度のベクトルデータを簡易な処理で得ることは困難であった。
【００１１】
本発明は上記課題を鑑みてなされたものであり、その目的とするところは高精度な曲線近似処理を簡便に行うことである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明に係る画像処理装置は以下の構成を備える。即ち、画像データにおけるオブジェクトの輪郭を表現する座標点列を、三次ベジェ曲線の単位近似区間に区切るアンカ点を設定するアンカ点設定手段と、
前記アンカ点設定手段で設定された複数のアンカ点の中で着目するアンカ点を第一アンカ点とし、これに隣接するアンカ点を第二アンカ点とし、前記第一アンカ点と前記第二アンカ点の二つのアンカ点を通る第一の直線を座標軸のひとつとし且つ前記第一アンカ点もしくは前記第二アンカ点を原点とした直交座標系において、前記二つのアンカ点で区切られる単位近似区間の座標点列の中で前記第一の直線から最も離れている点が存在する象限にそれぞれ第一のコントロール点候補と第二のコントロール点候補とを設定するコントロール点候補設定手段と、
前記第一のコントロール点候補と前記第一アンカ点を結ぶ線分と、前記第二のコントロール点候補と前記第二アンカ点の線分とが互いに交差することのないように第一のコントロール点と第二のコントロール点を決定するコントロール点決定手段と
を具備し、
前記コントロール点決定手段は、
前記コントロール点候補の位置が前記単位近似区間の形状で決定される制限区間に収まっているか否かを判定する手段を備え、
前記コントロール点候補の位置が前記制限区間に収まっていると判定された場合は前記コントロール点候補を補正した座標点をコントロール点とし、前記コントロール点候補の位置が前記制限区間に収まっていないと判定された場合は前記コントロール点候補をコントロール点とし、
前記コントロール点決定手段はまた、
前記第一の直線に対し前記単位近似区間の前記座標点列の中で最も離れている前記座標点を通る垂線上で、かつ前記アンカ点間を結ぶ第一の直線から前記アンカ点間に含まれる座標点列の中で最も離れている点までの距離の４／３倍となる点を制限点、前記アンカ点と前記制限点までの距離を制限距離とし、
前記アンカ点と対応する前記コントロール点候補との距離が、前記制限距離を超過しているか否かを判定する手段を備え、
制限距離を超過していると判定された場合は前記制限点をコントロール点とし、制限距離を超過していないと判定された場合は前記コントロール点候補をコントロール点とする。
あるいは他の観点によれば、本発明は以下の構成を有する。
画像データにおけるオブジェクトの輪郭を表現する座標点列を三次ベジェ曲線の単位近似区間に区切るアンカ点の設定を行うアンカ点設定手段と、
前記アンカ点設定手段で設定された複数のアンカ点における互いに隣接する二つのアンカ点を結ぶ直線を座標軸のひとつとし且つ前記二つのアンカ点の何れかを原点とした直交座標系において、前記二つのアンカ点で区切られる単位近似区間における座標点列の中で前記直線から最も離れている座標点が存在する象限に、前記二つのアンカ点の夫々に対応する計二つのコントロール点候補を設定するコントロール点候補設定手段と、
前記座標点を通る前記直線に対する垂線上で、前記座標点までの距離の４／３倍となる点を制限点、前記二つのアンカ点のうちの一つのアンカ点と前記制限点までの距離を、当該一つのアンカ点に対応する制限距離とし、当該一つのアンカ点と、当該一つのアンカ点に対応するコントロール点候補との距離が、当該一つのアンカ点に対応する前記制限距離を超過しているか否かを判定する手段と、
前記制限距離を超過していると判定された場合は、前記制限点を当該一つのアンカ点に対応するコントロール点と決定し、前記制限距離を超過していないと判定された場合は、当該一つのアンカ点に対応するコントロール点候補を当該一つのアンカ点に対応するコントロール点と決定するコントロール点決定手段とを有する。
【発明の効果】
【００１３】
本発明によれば、以下が実現可能となる。
・ノイズを含むような区間も破綻なく近似を行うことができる。
・フィードバックを用いず簡便に近似処理を行うことができる。
・分割点の過剰抽出を防止でき、データ量が削減できる。
即ち、従来に比し、高精度な近似処理を簡便に行うことができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態における画像処理装置のブロック構成図である。
【図２】実施形態１における画像処理装置のメイン処理ブロック構成図である。
【図３】実施形態１における画像処理装置のメイン処理を示すフローチャートである。
【図４】画像、および画像により生成される座標点列例を示す図である。
【図５】ベジェ曲線の概念を示す図である。
【図６】着目点と周辺の座標点と中点を示す図である。
【図７】実施形態１におけるアンカ点候補情報抽出処理を示すフローチャートである。
【図８】実施形態１における着目点のアンカ点候補判定処理を示すフローチャートである。
【図９】実施形態１における着目辺のアンカ点候補判定処理を示すフローチャートである。
【図１０】実施形態１におけるアンカ点候補情報抽出ルールの例を示す図である。
【図１１】実施形態１におけるアンカ点決定処理を示すフローチャートである。
【図１２】実施形態１における削減判定処理を示すフローチャートである。
【図１３】実施形態１におけるコントロール点候補設定処理に関する説明図である。
【図１４】実施形態１におけるコントロール点候補設定処理を示すフローチャートである。
【図１５】実施形態１におけるコントロール点決定処理を示すフローチャートである。
【図１６】実施形態１におけるコントロール点決定処理に関する説明図である。
【図１７】実施形態２におけるアンカ点決定処理を示すフローチャートである。
【図１８】実施形態１と実施形態３における座標点追跡の違いを示す図である。
【図１９】実施形態３におけるアンカ点候補情報抽出処理を示すフローチャートである。
【図２０】実施形態３における着目点のアンカ点候補判定処理を示すフローチャートである。
【図２１】実施形態３における屈曲点と変曲点の抽出ルールの例を示す図である。
【発明を実施するための形態】
【００１５】
［実施形態１］
以下、添付の図面を参照して本発明の実施の形態を説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１６】
＜画像処理装置の構成例＞
本実施形態の画像処理装置の構成例について、図１のブロック図を参照して説明する。画像処理装置は、汎用コンピュータにより実現しても良いし、あるいは多機能複写機（ＭＦＰ）などの周辺装置でにより実現しても良い。図１において、ＣＰＵ７は装置全体を制御する処理ユニットである。本実施形態で説明するフローチャートの手順はこのＣＰＵ７により当該手順を記述したプログラムを実行することで実現される。ＲＯＭ６は変更を必要としないプログラムやパラメータを格納する読み出し専用メモリである。ＲＡＭ５は外部装置等から供給されるプログラムやデータを一時記憶するランダムアクセスメモリである。スキャナ１は、文書等を光電走査して電子的な画像データを得るための周辺デバイスであり、画像入出力Ｉ／Ｏ３によりスキャナ１と画像処理装置本体とが接続される。画像メモリ２は、スキャナ１で読み取られた画像データ等を保持する画像メモリである。外部記憶ユニット１２は固定して設置されたハードディスクやメモリカード、あるいは着脱可能なフレキシブルディスク（ＦＤ）やコンパクトディスク（ＣＤ）等の光ディスク、磁気や光カード、ＩＣカード、メモリカード等を含む外部記憶装置である。また、Ｉ／Ｏ１３は外部記憶装置１２と画像処理装置本体（例えばコンピュータ装置）とを接続するＩ／Ｏインタフェースである。Ｉ／Ｏ１５は、ユーザの操作を受け、データを入力するマウス等のポインティングデバイス１０やキーボード９等の入力デバイスとのインタフェースである。映像Ｉ／Ｏ１４は画像処理装置の保持するデータや供給されたデータを表示するためのディスプレイモニタ８とのインタフェースである。通信Ｉ／Ｆ４はインターネット等のネットワーク回線に接続するための通信インタフェースである。システムバス１１は、ユニット１〜１５の各々を通信可能に接続するシステムバスである。
【００１７】
以下、ＣＰＵ７上で実行されるプログラムにより本願発明を実現する処理手順を、図２のブロック図と図３のフローチャートを用いて説明する。
【００１８】
＜ベクトル化処理手順＞
始めに図３のフローチャートにおいて、ステップＳ１００において座標点列入力を行う。ここではまずステップＳ１１０で処理を開始すると、処理対象となる画像領域を含むラスタ画像データを入力する。画像入力に関しては、スキャナ１にて読み取られた画像データを画像入出力Ｉ／Ｏ３を介して画像メモリ２に入力する。また、通信Ｉ／Ｆ４を介して、装置外部より前記処理対象となる画像領域を含む画像を入力してもよい。あるいは、外部記憶装置１２に予め記憶される画像データをＩ／Ｏ  １３を介して読み込むものであってもよい。得られた入力画像データは、画像メモリ２上に保持される。以上の処理は図２における画像入力手段１１０を実現している。
【００１９】
次に読み取った画像データに対してステップＳ１２０で座標点列抽出処理を行う。この処理により、画像中のオブジェクトの輪郭が水平および垂直ベクトルにより近似されて表される。ここで扱う画像データの１画素を図４（ａ）に示す。図４（ａ）で示すように、画像データにおける１画素は、４つの頂点をもち、各頂点を始点および終点とする垂直ベクトルと水平ベクトルとにより構成される正方形として扱う。なおここでいう頂点とは、後述するベクトルデータにおいてアンカ点のひとつとなる「頂点」とは異なり、単なる角点を指す。１画素を形成す４つのベクトルそれぞれを単位ベクトルと呼ぶことにする。１画素を４つの頂点をもつ正方形として扱い、その集合であるオブジェクト（画像オブジェクト）の輪郭（アウトライン）を抽出すると、水平ベクトルと垂直ベクトルからなるアウトラインベクトルがアウトラインデータとして抽出される。オブジェクトは例えば、背景色とは異なる前景色を持つ画素の集まりである。一般にアウトライン化（あるいはベクトル化）される画像データは二値であることが多くベクトル化処理の対象となるオブジェクトは特定が容易である。しかしもちろん多値画像データであってもベクトル化は可能である。
【００２０】
アウトラインベクトルは、垂直ベクトルと水平ベクトルとが交互に表れ、或るベクトルの終点が次のベクトルの始点となるベクトル列である。そのため、ベクトル化されたアウトラインは、連続するベクトルの始点（あるいは終点）を並べた座標点列で表すことができる。このような座標点列の抽出方法は種々提案されており、例えば特許文献４（特許第３０２６５９２号）で開示されている座標点列抽出方法を用いれば、画像一面より効率良くかつ高速に座標点列を抽出することが可能である。例えば、図４（ｂ）で示す画像から抽出された座標点列は、図４（ｃ）に示すような、水平ベクトル、垂直ベクトルが交互に並ぶベクトル列を構成となる座標点列となる。
【００２１】
またこのとき、読み取った画像データが複数色で構成されている場合は、例えば特許文献５に記載されている座標点列追跡法を適用することができる。即ち、図４（ｄ）に示したように、３色以上の色領域の交点が存在した時、該交点で座標点列の分割を行い、図４（ｅ）で示したようにそれぞれを異なる座標点列として抽出する手法である。本実施形態では、座標点列の始点と終点が同一の座標となるような座標点列を閉輪郭、始点と終点が異なった座標となる座標点列を開輪郭と呼称する。以上の処理は図２における座標点列抽出手段１２０を実現している。また、ステップＳ１１０とステップＳ１２０は合わせて図２における座標点列入力手段１００を構成している。ステップＳ１００で抽出された座標点列は、画素単位で画像の輪郭をたどったものであり、以下の説明では、ステップＳ１００で抽出された、ベクトル化対象となる画像データの輪郭ベクトルの始点あるいは終点を座標点と呼び、輪郭ベクトルに沿った座標点列を単に座標点列と呼ぶ。
【００２２】
次にステップＳ２００、Ｓ３００では抽出した座標点列に対して関数近似処理を行う。本実施形態では置き換える関数として３次ベジェ曲線を用いる。３次ベジェ曲線は図５に示すとおり、２つのアンカ点ａ１，ａ２と２つのコントロール点ｃ１，ｃ２で定義される。これらアンカ点とコントロール点の組が画像の輪郭を近似する近似データとなる。図５において、黒丸はアンカ点ａ１，ａ２を、白丸はコントロール点ｃ１，ｃ２をそれぞれ示す。またａ１，ａ２，ｃ１，ｃ２を座標値とすると３次ベジェ曲線は以下の式によって定義される。なおｔは媒介変数であり０≦ｔ≦１とする。
ｒ（ｔ）＝（１−ｔ）3ａ１＋３ｔ（１−ｔ）2ｃ１＋３ｔ2（１−ｔ）ｃ２＋ｔ3ａ２
よって３次ベジェ曲線を用いて関数近似を行うには、ステップＳ１２０で得た座標点列を適切に単位近似区間に区切るアンカ点の決定と、その間を構成する座標点列の形状を適切に近似するコントロール点の決定が必要となる。以下から本実施形態における関数近似処理のフローを説明する。なお単位近似区間とは、ひとつの三次ベジェ曲線で近似される区間を指す。なおベクトルデータが本来のオブジェクトを水平および垂直ベクトルで近似したデータであるから、関数近似処理は、オブジェクト本来の輪郭を回復する処理ということもできる。
【００２３】
＜アンカ点の設定＞
まずステップＳ２００ではアンカ点設定処理を行う。本実施形態におけるアンカ点設定処理は図３のフローチャートに示すようにステップＳ２１０のアンカ点候補情報抽出処理と、ステップＳ２２０のアンカ点決定処理の二つの処理からなる。以下からアンカ点候補情報抽出処理の説明をする。
【００２４】
＜アンカ点候補の決定＞
ステップＳ２１０のアンカ点候補情報抽出処理では、ステップＳ１２０で抽出した座標点列中の着目している点とその近傍の座標点のなすパターンと、予め定められた複数の抽出ルールで予め定めたパターンとを比較する。そしてパターンが合致した場合に、着目点をアンカ点の候補としアンカ点候補情報を出力する。ここでは、図６に示すように現在着目している座標点列の点を着目点Ｐi（ｉ＝１，２，…ｎ）と呼称する。また着目点Ｐiから見て座標点列追跡方向と逆方向の座標点をＰi-1、Ｐi-2…とし、座標点列追跡方向と順方向の座標点をＰi+1、Ｐi+2…と呼称することとする。また、アンカ点候補情報とは、アンカ点の候補として抽出した輪郭点の座標と、アンカ点候補である輪郭点Ｐi近傍のパターン特性を示す属性とを含む。また図６における中点座標については後述する。アンカ点候補とする点は、それぞれ所定の条件を満たす端点、折点、屈曲点、変曲点、直線保持点、頂点であり、Ｓ２１０では着目点がそれらに該当するか否かが判定される。なお頂点とは、オブジェクトの輪郭の頂点であり、関数の極大値または極小値に相当する。また変曲点とは、オブジェクトの輪郭の曲率の符号が変化する点と言い得る。屈曲点とは、オブジェクトの輪郭が一定角度以上折れ曲がった点である。折点とは、オブジェクトの輪郭が直角に折れ曲がる点である。直線保持点とは、オブジェクトの輪郭において、ラスタデータを単にベクトル化した際の垂直ベクトルまたは水平ベクトルと同方向の直線の始点となる点である。またこの辺を直線保持辺と呼ぶ。なお、ここでいうオブジェクトの輪郭とは、座標点列を垂直ベクトルまたは水平ベクトルで連結した階段状の輪郭、すなわち画像のデジタル化により生じた輪郭ではなく、オブジェクトが本来持つ形状の輪郭を指す。そしてオブジェクトが本来持つ輪郭は、座標点列の配置を参照して決定され、上記各点が特定される。
【００２５】
図７はステップＳ２１０で行われるアンカ点候補情報抽出処理のフローである。まずステップＳ２１１で、追跡する座標点列の初期点を検索し、該当の座標点を最初の着目点とする。次にステップＳ２１２では着目点Ｐi自身をアンカ点候補とすべきか否かを判定する。図８はその詳細な処理フローである。
【００２６】
まずステップＳ２１２１で着目点の端点判定を行う。端点は図１０（ａ）に示したように開輪郭の着目座標点Ｐiに対し、前、もしくは後に座標点が存在しない点Ｐｉである。すなわち輪郭ベクトルの始点又は終点のいずれかでしかない点が端点である。着目点Ｐｉが端点と判定された場合は、ステップＳ２１２２に移り、その着目点Ｐi自身の座標と、「端点」という属性とを関連付けて保持し、処理を終える。抽出された座標点列は、開輪郭であっても閉輪郭であっても座標点列を構成する座標点の集合として表すことができる。そして座標点列を抽出する処理において、開輪郭については端点はその座標点列の先頭又は末尾に配置されるとすれば、端点であるか否かの判定は例えば以下のように行うことができる。まず、抽出処理において抽出した座標点列に開輪郭であることを示す情報を付加しているのであれば、その情報を参照して開輪郭であると判定した場合、先頭と末尾の座標点が端点であると判定できる。また開輪郭であることが示されていないとすれば、末尾の座標点を始点とし、先頭の座標点を終点とするベクトルが垂直ベクトルでも水平ベクトルでもなければ、それは開輪郭であると判定できる。また、当該ベクトルが垂直ベクトル又は水平ベクトルであっても、その前後のベクトルのいずれか一方又は両方が同じ方向のベクトルであれば、それは開輪郭であると判定できる。開輪郭であればその先頭および末尾の座標点は端点となる。もちろんこの方法は判定方法の一例に過ぎない。
【００２７】
ステップＳ２１２１で端点でないと判定された場合は、ステップＳ２１２３の折点判定に移る。折点は図１０（ｂ）に示したように座標Ｐi-1、Ｐi+1を参照点とし、着目点Ｐiと参照点がなす辺Ｐi-1Ｐiと辺ＰiＰi+1の長さがいずれも閾値Ｔ１以上となる場合の着目点とする。ここで言う辺の長さとは、座標間に内包される画素長（画素数）を指す。このとき閾値Ｔ１は、固定的に定めてもよいし、画像の大きさを加味して可変としてもよい。本実施形態ではＣを座標点列の外接矩形の外周の長さとして、値Ｔ１＝２＋Ｃ／３００としている。ただし、閾値Ｔ１は２≦Ｔ１≦６の範囲で限定をしている。すなわち２＋Ｃ／３００が２に満たない場合にはＴ１＝２とし、２＋Ｃ／３００が６を越える場合にはＴ１＝６とする。折点と判定された場合は、ステップＳ２１２２に移り、その着目点Ｐi自身の座標と、「折点」という属性を互いに関連付けて保持し、処理を終える。
【００２８】
ステップＳ２１２３で折点でないと判定された場合は、ステップＳ２１２４に移る。ステップＳ２１２４では現在着目している点が奇数点目か偶数点目かを判定する。ここで偶数点目であると判定された場合はステップＳ２１２７に移り、着目点Ｐi自身の座標のみを保持し、そのまま処理を終える。奇数点目と判定された場合はステップＳ２１２５へ移る。
【００２９】
ステップＳ２１２５では屈曲点判定を行う。屈曲点は、図１０（ｆ）に示したように座標Ｐi-2、Ｐi+2を参照点とし、ベクトルＰi-2Ｐiと、ベクトルＰiＰi+2とがなす角度θを算出し、角度θが閾値Ｔ２以上となる場合の着目点とする。本実施形態では閾値Ｔ２を２５°としている。屈曲点と判定された場合は、ステップＳ２１２２に移り、その着目点Ｐi自身の座標と、「屈曲点」という属性を保持し、処理を終える。
【００３０】
ステップＳ２１２５で屈曲点ではないと判定された場合は、ステップＳ２１２６の変曲点判定に移る。変曲点は図１０（ｇ）に示したように座標Ｐi-4、Ｐi-2、Ｐi+2を参照点とする。そして線分Ｐi-4Ｐi-2の傾きαと、線分Ｐi-2Ｐiの傾きβと、線分ＰiＰi+2の傾きγを算出し、傾きの変化量となるβ‐α、γ‐βを算出する。そして、この傾きの変化量同士の正負が入れ替わる点、すなわちベクトルの傾きの変化量の符号が反転する座標点を変曲点とする。ただし、傾きの変化量β‐αの絶対値が閾値Ｔ３以下となる場合は、β‐αの絶対値が閾値Ｔ３以上の値を取るまで、傾きαをとる線分をＰi-6Ｐi-4、Ｐi-8Ｐi-6…と遡らせて判定を行う。本実施形態では閾値Ｔ３を１．０×１０-7としている。変曲点と判定された場合は、ステップＳ２１２２に移り、その着目点Ｐi自身の座標と、「変曲点」という属性を関連付けて保持し、処理を終える。
【００３１】
ステップＳ２１２６で変曲点ではないと判定された場合は、ステップＳ２１２７に移り、着目点Ｐi自身の座標のみを保持し、そのまま処理を終える。
【００３２】
ここまででステップＳ２１２の着目点Ｐi自身がアンカ点候補であるかの判定（アンカ点候補判定）は終えた。次に着目辺ＰiＰi+1上にアンカ点候補を取るべきか否かを判定するステップＳ２１３に移る。ここで、着目辺とは着目点Ｐiと、その次に存在する座標点Ｐi+1を結ぶ辺を指す。ここでアンカ点候補が抽出された場合は、その座標は着目辺上となるためステップＳ１２０で抽出した座標点列ＰiＰi+1の間に書き加える。図９はその詳細な処理フローである。
【００３３】
まずステップＳ２１３１で着目辺ＰiＰi+1が直線保持辺か否かを判定する。直線保持辺の判定は図１０（ｃ）、（ｄ）に示したように、座標Ｐi-2、Ｐi-1、Ｐi+1または座標Ｐi+1、Ｐi+2、Ｐi+3を参照点とする。そして次にベクトルＰi-2Ｐi-1、ＰiＰi+1の長さ｜Ｐi-2Ｐi-1｜、｜ＰiＰi+1｜、またはベクトルＰiＰi+1、Ｐi+2Ｐi+3の長さ｜ＰiＰi+1｜、｜Ｐi+2Ｐi+3｜をそれぞれ算出する。そして｜ＰiＰi+1｜が｜Ｐi-2Ｐi-1｜のＴ４倍以上、または｜ＰiＰi+1｜が｜Ｐi+2Ｐi+3｜のＴ４倍以上となり、かつ双方のベクトル方向が同一である辺を直線保持辺であると判定する。着目辺が直線保持辺であると判定された場合、ステップＳ２１３２に移り、着目辺ＰiＰi+1上において、座標Ｐi、Ｐi+1からそれぞれ距離｜ＰiＰi+1｜／Ｔ５だけ離れた点を２点決定し、その属性を「直線保持点」として決定した直線保持点に関連付けて保持し、処理を終える。このとき係数Ｔ４、Ｔ５は、一意に定めてもよいし、画像の大きさを加味して可変としてもよい。本実施形態では係数Ｔ４を１０、係数Ｔ５を５としている。
【００３４】
ステップＳ２１３１で着目辺ＰiＰi+1が直線保持辺でないと判定された場合は、ステップＳ２１３３の、頂点を含む辺判定に移る。頂点を含む辺は、図１０（ｅ）に示したように座標Ｐi-1、Ｐi+1、Ｐi+2を参照点として、ベクトルＰi-1Ｐiと、ベクトルＰi+1Ｐi+2が逆方向となる辺である。着目辺ＰiＰi+1が頂点を含む辺であると判定された場合、ステップＳ２１３４に移り、線分ＰiＰi+1の中点座標と、当該座標に関連付けて属性「頂点」を保持し、処理を終える。ステップＳ２１３３で着目辺ＰiＰi+1が頂点を含む辺でないと判定された場合は、そのまま処理を終える。
【００３５】
ここまででステップＳ２１３の着目辺ＰiＰi+1のアンカ点候補判定は終えた。次にステップＳ２１４で、現在の着目点が、追跡している座標点列の終点すなわち最後の点であるか否かを判定する。終点ではないと判定された場合は、ステップＳ２１５で着目点を座標点列上における次の点に移し、再度ステップＳ２１２へ移る。終点であると判定された時はアンカ点候補情報抽出処理を終える。
【００３６】
＜アンカ点の決定＞
次に抽出したアンカ点候補情報に基づいてステップＳ２２０でアンカ点決定処理を行う。アンカ点候補は輪郭点に関連付けて属性が保存されているため、その属性に基づいてアンカ点候補であることを判定できる。ここで、ステップＳ２１０において抽出された座標点列をＱj（ｊ＝１，２，…ｍ）と呼称することとする。そして着目点Ｑjに対し、その前後の座標点Ｑj-2、Ｑj-1、Ｑj+1、Ｑj+2を参照点とする。そしてその参照点のうちにアンカ点候補があった場合、各アンカ点候補の属性に応じて着目アンカ点候補を削除するか否かを決定する。またここでいう削除とは、ステップＳ２１０でアンカ点候補として抽出した座標に関連付けて保存された属性を削除し、アンカ点候補ではない座標点の状態に戻すことを指す。ただし、「頂点」と「直線保持点」においては、辺上に新たに書き加えた点であるので、削除する場合は元のＳ１２０で抽出した座標点列の状態に戻すために、属性だけでなく、その座標も削除することとする。
【００３７】
図１１はステップＳ２２０で行われるアンカ点決定処理の詳細なフローである。まずステップＳ２２１で、追跡する座標点列の初期点を検索し、該当の座標点を着目点Ｑjとして、ステップＳ２２２に移る。
【００３８】
ステップＳ２２２では、着目点Ｑjがアンカ点候補として抽出された点か否かを判定する。着目点Ｑjがアンカ点候補として抽出された点でなかった場合は、ステップＳ２２６へ移る。ステップＳ２２６の詳細については後に述べる。着目点Ｑjがアンカ点候補として抽出された点であった時は、ステップＳ２２３に移る。ただし、本実施形態では端点をアンカ点候補から削除しないため、Ｓ２２２では着目点が端点であると判定されたなら、Ｓ２２６に分岐する。
【００３９】
ステップＳ２２３では着目しているアンカ点候補Ｑjに対し、前後２点以内（Ｑj-2、Ｑj-1、Ｑj+1、Ｑj+2）を参照点とし、参照点内にアンカ点候補が含まれているか否かを判定する。参照点内にアンカ点候補が存在しなかった場合は、ステップＳ２２６へ移る。参照点内にアンカ点候補が存在した場合は、ステップＳ２２４に移る。
【００４０】
ステップＳ２２４ではアンカ点候補同士の優先順位の比較を行う。ここで、アンカ点候補の優先順位は、アンカ点候補情報における属性に依存する。本実施形態ではアンカ点候補の優先順位をあらかじめ高いものから「折点」、「直線保持点」、「頂点」、「屈曲点」、「変曲点」とする。また「端点」は、近似処理を終えた後各座標点列をつなぎ合わせる過程で必要な点であるため、例外として削減対象とはしない。そこで「端点」の優先順位を「折点」より高い最高順位とする。着目アンカ点候補Ｑjの優先順位が、参照点内に存在するアンカ点候補の優先順位よりも大きかった場合、ステップＳ２２６へ移る。着目アンカ点候補Ｑjの優先順位が、参照点内に存在するアンカ点候補の優先順位以下であった場合はステップＳ２２５に移る。
【００４１】
ステップＳ２２５ではアンカ点候補の削減処理を行う。図１２は削減処理の詳細なフローである。まずステップＳ２２５１では、着目アンカ点候補Ｑjの属性が「変曲点」か否かを判定する。
【００４２】
着目アンカ点候補Ｑjの属性が「変曲点」であった場合、ステップＳ２２５２に移り、着目アンカ点候補Ｑjの属性を削除し、そのまま処理を終える。着目アンカ点候補Ｑjの属性が「変曲点」でなかった場合、ステップＳ２２５３に移る。
【００４３】
ステップＳ２２５３では、着目アンカ点候補Ｑjの属性が「屈曲点」か否かを判定する。着目アンカ点候補Ｑjの属性が「屈曲点」であった場合、ステップＳ２２５４に移り、参照点内のアンカ点候補が隣接する参照点Ｑj-1、Ｑj+1か否かを判定する。そして隣接する参照点Ｑj-1、Ｑj+1であった場合はステップＳ２２５５に移り、着目アンカ点候補Ｑjの属性を削除し、そのまま処理を終える。隣接しない座標点であった場合はそのまま処理を終える。着目アンカ点候補Ｑjの属性が「屈曲点」でなかった場合、ステップＳ２２５６に移る。
【００４４】
ステップＳ２２５６では、着目アンカ点候補Ｑjの属性が「頂点」か否かを判定する。
着目アンカ点候補Ｑjの属性が「頂点」であった場合、ステップＳ２２５７に移り、優先度の高いアンカ点候補が隣接する参照点Ｑj-1、Ｑj+1双方に存在するか否かを判定する。すなわち高優先度のアンカ点候補に挟まれているか判定する。そして隣接する参照点Ｑj-1、Ｑj+1双方にアンカ点候補が存在した場合はステップＳ２２５８に移り、着目アンカ点候補Ｑjの属性と座標を削除し、そのまま処理を終える。隣接する参照点Ｑj-1、Ｑj+1双方にアンカ点候補が存在しない場合はそのまま処理を終える。着目アンカ点候補Ｑjの属性が「頂点」でなかった場合、ステップＳ３２５９に移る。
【００４５】
ステップＳ２２５９では、着目アンカ点候補Ｑjの属性が「直線保持点」か否かを判定する。着目アンカ点候補Ｑjの属性が「直線保持点」であった場合、必ず参照点Ｑj+1は同じ「直線保持点」となる。よって次にステップＳ２２５１０に移り、優先度の高いアンカ点候補が参照点Ｑj-1、Ｑj+2双方に存在するか否かを判定する。そして参照点Ｑj-1、Ｑj+2双方に優先度の高いアンカ点候補が存在した場合はステップＳ２２５１１に移り、参照点Ｑj+1に存在するアンカ点候補と、着目アンカ点候補Ｑjの属性と座標を削除し、そのまま処理を終える。参照点Ｑj-1、Ｑj+2双方にアンカ点候補が存在しない場合はそのまま処理を終える。着目アンカ点候補Ｑjの属性が「直線保持点」でなかった場合、処理を終える。
【００４６】
ここまでで着目アンカ点候補を削減するか否かの判定を終えた。次にステップＳ２２６で、現在の着目点が追跡している座標点列の終点であるか否かを判定する。終点ではないと判定された場合は、ステップＳ２２７で着目点を座標点列上における次の点に移し、再度ステップＳ２２２へ移る。終点であると判定された時はアンカ点決定処理を終える。
【００４７】
この時点で残ったアンカ点候補が選ばれたアンカ点となる。こうして決定されたアンカ点により区切られる単位近似区間では、当該アンカ点を通る直線（これを第一の直線とも呼ぶ。）を座標軸とし、いずれかのアンカ点を原点とする直交座標系において、座標点列で近似される輪郭の極大値もしくは極小値（すなわちピーク）が一つ以下となる。なおここで座標点列で近似される輪郭とは、座標点列の配置から特定されるオブジェクト本来の輪郭である。すなわち、オブジェクト本来の輪郭は垂直ベクトルと水平ベクトルとで近似されているため、単位ベクトル（１画素長に相当するベクトル）で形成される凹凸は、近似のための誤差であって極小値又は極大値とは見なさない。
【００４８】
以上、ステップＳ２１０のアンカ点候補情報抽出処理と、ステップＳ２２０のアンカ点決定処理は図２におけるアンカ点設定手段２００を実現している。
【００４９】
＜コントロール点の設定＞
次にステップＳ３００ではコントロール点設定処理を行う。本実施形態におけるコントロール点設定処理は、ステップＳ３１０のコントロール点候補設定処理と、ステップＳ３２０のコントロール点決定処理で構成される。そしてコントロール点候補設定処理はステップＳ３１１の最大角接線決定処理と、ステップＳ３１２の交点算出処理からなる。またコントロール点決定処理ステップＳ３２１の制限距離超過判定処理、ステップＳ３２２のコントロール点候補補正処理からなる。
【００５０】
まずステップＳ３１０のコントロール点候補設定処理について以下から説明する。図１３はステップＳ２００で得たアンカ点で区切られた一つの単位近似区間におけるコントロール点候補設定処理の説明図である。ここでは便宜的に座標点列を単位近似区間に区切る二つのアンカ点をａ１，ａ２とする。コントロール点候補設定処理ではステップＳ２００で得たアンカ点で区切られた単位近似区間を曲線で近似するためのコントロール点を仮決定する。
【００５１】
ここで、三次ベジェ曲線による近似の説明をする。まずこれから求めるべきコントロール点間を結ぶ直線Ｌｃを、アンカ点間を結ぶ直線Ｌａと平行であると仮定する。そしてアンカ点で区切られた単位近似区間の座標点列の中で、線分Ｌａから最も離れた点Ｐｆとし、その距離Ｄｆとする。このとき近似後の三次ベジェ曲線における、直線Ｌａと垂直方向の最大の距離を距離Ｄｆと同値とすると、直線Ｌａから直線Ｌｃの距離ＤｃはＤｃ＝４／３Ｄｆの関係が成り立つ。これにより直線Ｌｃは一意に定まる。
【００５２】
次に各アンカ点に対応する接線ｔ１、ｔ２を決定し、接線ｔ１、ｔ２と直線Ｌｃとの交点ｃ１、ｃ２をそれぞれ算出することで、各アンカ点に対応するコントロール点候補ｃ１、ｃ２（それぞれ第一のコントロール点候補及び第二のコントロール点候補とも呼ぶ）を得ることができる。以下から各処理の内容を詳細に述べる。
【００５３】
図１４は本実施形態におけるコントロール点候補設定処理の詳細なフローである。まずステップＳ３１１の最大角接線決定処理の説明をする。
【００５４】
ここで、アンカ点ａ１，ａ２で単位近似区間の座標点数をｎとし、座標点列をｐｋ（ｋ＝１，２…ｎ）と定義する。ステップＳ３１１１においては、座標点列ｐｋにおいて最も遠い点Ｐｆを抽出する。
【００５５】
次にステップＳ３１１２においては、図１３に示したようにアンカ点間を結ぶ直線Ｌａをｕ軸とし、アンカ点ａ１を原点としたｕ軸の垂直方向をｖ軸とした直交座標系を定義する。そしてこの直交座標系において、最も遠い点Ｐｆと同象限であり、かつ直線Ｌａと直線ａ１ｐｋのなす角度θ１が最大となる点を基準点ｓ１、直線Ｌａと直線ａ２ｐｋのなす角度θ２が最大となる点を基準点ｓ２として決定する。このとき、平滑性のためにアンカ点直近の一点は基準点としない。すなわち、座標点ｐ１と、ｐｎは基準点の抽出を行わない。また今回図示していないが、単位近似区間に含まれる座標点数ｎが、最も遠い点Ｐｆや、基準点ｓ１、ｓ２を求めるために必要な点数に満たない場合は、当該アンカ点の間は直線区間としてコントロール点を付加せずそのままステップＳ４００のデータ出力処理に移る例外処理がある。
【００５６】
次にステップＳ３１１３においては、アンカ点ａ１とステップＳ３１１２で決定した基準点ｓ１を結ぶ直線を接線ｔ１、アンカ点ａ２とステップＳ３１１２で決定した基準点ｓ２を結ぶ直線を接線ｔ２として算出し、最大角接線決定処理を終える。
【００５７】
ここまでで各アンカ点における接線の決定ができた。以上の処理は図２における最大角接線決定手段３１１を実現している。次にステップＳ３１２で交点算出処理を行う。
【００５８】
ここではまず、ステップＳ３１２１において、単位近似区間の座標点列の中で、線分Ｌａから最も離れた点Ｐｆを決定し、その距離Ｄｆを算出し、ステップＳ３１２２に移る。ステップＳ３１２２では直線Ｌｃはアンカ点ａ１、ａ２を結ぶ直線Ｌａと平行であり、かつ直線Ｌａからの距離が４／３Ｄｆとなる直線を直線Ｌｃとして算出し、ステップＳ３１２３に移る。ステップＳ３１２３では、ステップＳ２００で決定したアンカ点ａ１、ａ２における接線ｔ１、ｔ２と、線分Ｌｃとの交点を算出し、それぞれコントロール点候補ｃ１、ｃ２として定め、交点算出処理を終える。決定したコントロール点候補の座標は、コントロール点の決定に用いたアンカ点に関連付けて記憶することで、当該アンカ点に係るベジェ曲線を定義できる。以上は一対のアンカ点について行われる処理であり、これを輪郭上のアンカ点の対について実行する。
【００５９】
ここまででコントロール点候補の決定ができた。以上の処理は図２における交点算出手段３１２を実現しており、またステップＳ３１１とステップＳ３１２を合わせてコントロール点候補設定手段３１０を実現している。
【００６０】
次にステップＳ３２０のコントロール点決定処理を行う。図１５はコントロール点決定処理の詳細なフローである。ここではステップＳ３２１において、コントロール点候補の位置が制限距離で定義される区間内であるか否かを判定する。そして制限距離で定義される区間内であった場合はそのままコントロール点候補をコントロール点として決定し、制限距離で定義される区間外であった場合はステップＳ３２２においてコントロール点候補の位置を補正した点をコントロール点として決定する。以下からその詳細について述べる。
【００６１】
まずステップＳ３２１で制限距離超過判定処理を行う。ここでは、ステップＳ３１０で求めたコントロール点候補の位置が、制限距離で定義される区間内に収まっているか否かを判定する。
【００６２】
ステップＳ３２１１において、単位近似区間に区切る二つのアンカ点をａ１、ａ２とし、それに対応するコントロール点候補をそれぞれｃ１、ｃ２としたとき、アンカ点間を結ぶ直線Ｌａに対する垂線であり、かつ直線Ｌａから最も遠い点Ｐｆを通る直線を算出する。そして求めた直線と、直線Ｌｃとの交点を算出し、この点を制限点Ｃｌｉｍとして、ステップＳ３２１２に移る。すなわち制限点Ｃｌｉｍは、直線Ｌａに対する垂線上にあり、かつ、直線Ｌｃ上にある。
【００６３】
ステップＳ３２１２ではまず図１６（ａ）に示すようにステップＳ３２１１で算出した制限点Ｃｌｉｍからアンカ点ａ１までの距離を制限距離｜Ｃｌｉｍ−ａ１｜とし、コントロール点候補ｃ１からアンカ点ａ１までの距離を｜ｃ１−ａ１｜とする。このとき制限距離｜Ｃｌｉｍ−ａ１｜を、アンカ点ａ１とコントロール点候補ｃ１との距離｜ｃ１−ａ１｜の上限とし、制限距離の条件｜Ｃｌｉｍ−ａ１｜＞｜ｃ１−ａ１｜を満たすか否かを判定する。また同様に、｜Ｃｌｉｍ−ａ２｜をコントロール点候補ｃ２の制限距離とし、｜Ｃｌｉｍ−ａ２｜＞｜ｃ２−ａ２｜という制限距離の条件を満たすか否かを判定する。上記のステップＳ３２１１とステップＳ３２１２を合わせて図２における制限距離超過判定手段３２１を実現している。
【００６４】
そしてステップＳ３２１２における制限距離の条件を満たすコントロール点候補は、ステップＳ３２２１には入らずそのままコントロール点候補をコントロール点とし、処理を終える。図１６（ａ）のように制限距離の条件を満たさなかったコントロール点候補は、ステップ３２２のコントロール点候補補正処理におけるステップＳ３２２１に移る。
【００６５】
ステップＳ３２２１では制限距離を満たさなかったコントロール点候補の位置を図１６（ｂ）に示すように制限点Ｃｌｉｍの位置に補正し、この点をコントロール点として決定し、処理を終える。すなわち、制限距離を満たさないコントロール点候補は、制限点に移動される。この処理は図２におけるコントロール点候補補正手段３２２を実現している。また、ステップＳ３２１とステップＳ３２２は、合わせてコントロール点決定手段３２０を実現している。以上の処理を、すべてのアンカ点およびコントロール点にについて施し、制限距離の条件を満足させる。
【００６６】
そして上記ステップＳ３１０のコントロール点候補設定処理と、ステップＳ３２０のコントロール点決定処理は合わせて図２におけるコントロール点設定手段３００を実現している。
【００６７】
以上のコントロール点決定処理により、図１６（ｃ）に示すようなアンカ点ａ１，ａ２の位置に対しコントロール点ｃ１，ｃ２が交差した状態で決定された場合でも図１６（ｄ）のように補正することができる。すなわちコントロール点の交差による近似曲線の尖りを防止することができる。
【００６８】
以上のようにして処理対象画像全体についてアンカ点およびコントロール点を決定したなら、最後にステップＳ４００では生成したデータを、同一の座標を有する「端点」同士を結合し、ベクトルデータとして出力する。結合するとは、例えば結合を示す情報を端点に関連付けて記憶しても良いし、座標点列の先頭と末尾とが結合すべき端点であれば、出力時の処理の仕方を決めておけば、特に処理をする必要はない。また出力するとは、生成したベクトルデータをファイル記憶部に記憶したり、あるいはディスプレイやプリンタ等の出力装置に送信することを含む。この処理は図２におけるデータ出力手段４００を実現している。
【００６９】
以上の構成および手順により本実施形態によれば、アンカ点の数を少なくした上で基となるラスタデータに対する高い近似精度を維持しつつ、軽い処理でベクタデータを生成することができる。
【００７０】
［実施形態２］
実施形態１では、アンカ点決定処理において、着目アンカ点候補の前後の座標点二点以内に他のアンカ点候補が存在した場合に削減処理を行った。しかし、アンカ点候補間に含まれる座標点数が３点以上離れている場合は、例え冗長なアンカ点候補が存在した場合でも削減することはできない。本実施形態によれば、二次曲線で表現可能な範囲で単位近似区間に区切れていれば破綻なく近似処理を行うことが可能なので、さらなるアンカ点候補の削減を行ってもよい。
【００７１】
そこで本実施形態では、隣接するアンカ点候補の優先順位を比較し、その上で削減処理を行う。また、アンカ点候補同士を比較して削減を行った場合、削減した結果をアンカ点候補情報に上書きし、上書きした結果における隣接アンカ点候補を再度判定していくこととしている。このことにより、より広い範囲での削減処理が可能となり、データ量の削減に寄与することができる。
【００７２】
図１７は本実施形態の処理フローである。この手順は、実施形態１における図３のＳ２２０として、図１１に代えて実行される本実施形態の着目点判定処理である。
【００７３】
まず、座標点列を追跡し、ステップＳ５１０で初めのアンカ点候補を第一アンカ点候補として抽出する。次にステップＳ５２０で第一アンカ点候補からさらに座標点列を追跡し、次に検出されたアンカ点候補を第二アンカ点候補とする。ここで図示していないが、もし第二アンカ点候補がない場合、すなわち次に第二アンカ点候補となるはずのアンカ点候補が、座標点列の末尾の端点であるか、または全アンカ点候補について処理を終えており新たな候補がないなら、図１７の処理は終了する。
【００７４】
次にステップＳ５３０で第一アンカ点候補と第二アンカ点候補の優先順位の比較を行う。第二アンカ点候補の優先順位が低かった場合はステップＳ５４０に移る。
【００７５】
ステップＳ５４０では第一アンカ点候補と第二アンカ点候補で区切られた単位近似区間の座標点列の形状を判定する。ここで判定する形状は座標点列の角度でもよいし、長さでもよいし、座標点数でもよいし、削減したアンカ点候補の数でもよい。ここで削減を行うと判定された場合は、ステップＳ５６０に移り、第二アンカ点候補を削減し、ステップＳ５２０に戻る。削減を行わないと判定された場合、ステップＳ５８０に移る。ステップＳ５８０については後に述べる。また、Ｓ５４０とＳ５６０の一連の処理を、実施形態１の図１２ので置換しても良い。ただしその場合には、図１２の「着目アンカ点候補Ｑｉ」は、「第二アンカ点候補」と読み替えるべきである。そしてＳ２２５２，Ｓ２２５５，Ｓ２２５８，Ｓ２２５１１のいずれかの処理が行われたなら削減が行われたとしてＳ５２０に分岐し、そうでなければＳ５８０に分岐する。
【００７６】
ステップＳ５３０で第一アンカ点候補の優先順位が低かった場合はステップＳ５５０に移る。ステップＳ５５０ではステップＳ５４０と同様に第一アンカ点候補と第二アンカ点候補で区切られた単位近似区間の座標点列の形状を判定する。ここで判定する形状は座標点列の角度でもよいし、長さでもよいし、座標点数でもよいし、削減したアンカ点候補の数でもよい。ここで削減を行うと判定された場合は、ステップＳ５７０に移り、第一アンカ点候補を削減し、ステップＳ５８０に移る。また削減を行わないと判定された場合、そのままステップＳ５８０に移る。ステップＳ５８０では現在第二アンカ点候補として着目している点を第一アンカ点候補とし、ステップＳ５２０へ戻る。また、Ｓ５５０とＳ５７０の一連の処理を、実施形態１の図１２ので置換しても良い。ただしその場合には、図１２の「着目アンカ点候補Ｑｉ」は、「第一アンカ点候補」と読み替えるべきである。そしてＳ２２５２，Ｓ２２５５，Ｓ２２５８，Ｓ２２５１１のいずれかの処理が行われたなら削減が行われたとしてＳ５８０に分岐し、そうでなければＳ５２０に分岐する。
【００７７】
以上の処理を、処理した座標点数が開輪郭、閉輪郭における総座標点数となるまで行う。ただし、図１７をアンカ点決定処理として行う場合には、選択されているアンカ点候補すべてについて行う。この処理により座標点列の追跡方向に従って、次々にアンカ点候補を比較していくことができ、アンカ点候補間の座標点数に制限されることのないアンカ点決定処理を実行することができる。
【００７８】
［実施形態３］
実施形態１では、アンカ点候補抽出処理において、ステップＳ１２０で抽出した座標点列に対して追跡を行い、アンカ点候補情報を抽出した。このとき、「変曲点」や「屈曲点」のように角度の変化を用いて抽出を行う属性は、座標点列の角度を算出する必要があることから、図１８（ａ）に示したように、一点おきに判定を行うようにしている。
【００７９】
しかしこのとき、同じ座標点列でも図１８（ａ）の座標点列１を判定する場合と図１８（ａ）の座標点列２を判定する場合では異なる抽出結果が得られてしまい、２つの場合で最終的な近似結果が一致しないことがある。
【００８０】
これに対応するため、実施形態１におけるアンカ点候補情報抽出処理で、角度変化を用いてアンカ点候補情報の抽出を行う「変曲点」と「屈曲点」の判定を、図１８（ｂ）に示すように各座標点列間を結ぶ辺の中点を用いて行ってもよい。即ち、図７の着目点判定処理Ｓ２１２を、図８に代えて、図１９で示すフローチャートに沿って処理し、着目辺判定処理Ｓ２１３を、図９に代えて図２０に従って実行するように構成してもよい。尚、アンカ点候補情報抽出処理以外の処理は実施形態１と同様の処理を行えばよい。
【００８１】
ここでは、図６に示すように現在着目している座標点列の点を着目点Ｐi（ｉ＝１，２，…ｎ）と呼称する。そして着目点Ｐiから見て座標点列追跡方向と逆方向の座標点をＰi-1、Ｐi-2…とし、座標点列追跡方向と順方向の座標点をＰi+1、Ｐi+2…と呼称する。また座標点Ｐiと座標点Ｐi+1間を結ぶ辺の中点をＣｌ（ｌ＝１，２，…ｎ−１）と呼称する。そして着目点Ｐiから見て座標点列追跡方向と逆方向の座標点同士がなす中点をＣｌ−１、Ｃｌ−２…とし、座標点列追跡方向と順方向座標点同士がなす中点をＣｌ＋１、Ｃｌ＋２…と呼称することとする。以下、本実施形態におけるアンカ点候補情報抽出処理の詳細を図１９に示すフローチャートを用いて述べる。
【００８２】
図１９のステップＳ６２１で着目点の端点判定を行う。この処理は実施形態１における図８のステップＳ２１２１と同様のものでよい。端点と判定された場合は、ステップＳ６２２に移り、その着目点Ｐi自身の座標と、「端点」という属性を保持し、処理を終える。
【００８３】
ステップＳ６２１で端点でないと判定された場合は、ステップＳ６２３の折点判定に移る。この処理は実施形態１における図８のステップＳ２１２３と同様のものでよい。折点と判定された場合は、ステップＳ６２２に移り、その着目点Ｐi自身の座標と、「折点」という属性を保持し、処理を終える。
【００８４】
ステップＳ６２３で折点でないと判定された場合は、ステップＳ６２４に移り、着目点Ｐi自身の座標のみを保持し、そのまま処理を終える。
【００８５】
ここまででステップＳ２１２の着目点Ｐi自身のアンカ点候補判定は終えた。次に着目辺ＰiＰi+1上にアンカ点候補を取るべきか否かを判定するステップＳ２１３に移る。図２０は本実施形態におけるその詳細な処理フローである。
【００８６】
まずステップＳ６３１で着目辺ＰiＰi+1が直線保持辺か否かを判定する。この処理は実施形態１における図９のステップＳ２１３１と同様のものでよい。着目辺ＰiＰi+1が直線保持辺であると判定された場合、ステップＳ６３２に移り、実施形態１と同様の座標を２点取り、その属性を「直線保持点」として保持し、処理を終える。
【００８７】
ステップＳ６３１で着目辺ＰiＰi+1が直線保持辺でないと判定された場合は、ステップＳ６３３の頂点を含む辺判定に移る。この処理は実施形態１における図９のステップＳ２１３３と同様のものでよい。着目辺ＰiＰi+1が頂点を含む辺であると判定された場合、ステップＳ６３４に移り、線分ＰiＰi+1の中点座標と、属性「頂点」を保持し、処理を終える。
【００８８】
ステップＳ６３３で着目辺ＰiＰi+1が頂点を含む辺でないと判定された場合は、ステップＳ６３５の屈曲点を含む辺判定に移る。ここでは着目辺ＰiＰi+1の中点座標Ｃｌと、辺Ｐi-1Ｐiの中点座標Ｃｌ−１と、辺ＰiＰi+1の中点座標Ｃｌ＋１を参照点とする。このとき屈曲点を含む辺は図２１（ａ）に示したように線分Ｃｌ−１Ｃｌと、線分ＣｌＣｌ＋１とがなす角度θを算出し、角度θが閾値Ｔ６以上となる辺とする。本実施形態では閾値Ｔ６を２５°としている。着目辺ＰiＰi+1が屈曲点を含む辺であると判定された場合、ステップＳ６３４に移り、線分ＰiＰi+1の中点座標Ｃｌと、属性「屈曲点」を保持し、処理を終える。
【００８９】
ステップＳ６３５で着目辺ＰiＰi+1が屈曲点を含む辺でないと判定された場合は、ステップＳ６３６の変曲点を含む辺判定に移る。ここでは着目辺ＰiＰi+1の中点座標Ｃｌと、辺Ｐi-1Ｐiの中点座標Ｃｌ−１と、辺Ｐi-2Ｐi-1の中点座標Ｃｌ−２と、辺ＰiＰi+1の中点座標Ｃｌ＋１を参照点とする。このとき変曲点を含む辺は図２１（ｂ）に示したように、線分Ｃｌ−２Ｃｌ−１の傾きαと、線分Ｃｌ−１Ｃｌの傾きβと、線分ＣｌＣｌ＋１の傾きγを算出し、傾きの変化量となるβ‐α、γ‐βを算出し、この傾きの変化量同士の正負が入れ替わる辺とする。ただし、傾きの変化量β‐αの絶対値が閾値Ｔ７以下となる場合は、β‐αの絶対値が閾値以上（すなわちＴ７以上）の値を取るまで傾きαをとる線分をＣｌ−３Ｃｌ−２、Ｃｌ−４Ｃｌ−３…と遡らせて判定を行う。本実施形態では閾値Ｔ７を１．０×１０-7としている。着目辺ＰiＰi+1が変曲点を含む辺であると判定された場合、ステップＳ６３４に移り、線分ＰiＰi+1の中点座標Ｃｌと、属性「変曲点」を保持し、処理を終える。
【００９０】
ステップＳ６３６で着目辺ＰiＰi+1が変曲点を含む辺でないと判定された場合は、そのまま処理を終える。
【００９１】
ここまででステップＳ２１３の着目辺ＰiＰi+1のアンカ点候補判定は終えた。次にステップＳ２１４で、現在の着目点が追跡している座標点列の終点であるか否かを判定する。終点ではないと判定された場合は、ステップＳ２１５で着目点を座標点列上における次の点に移し、再度ステップＳ２１２へ移る。終点であると判定された時はアンカ点候補情報抽出処理を終える。
【００９２】
上記の処理をアンカ点候補情報抽出処理として実施することで、角度の変化を用いて抽出する変曲点や屈曲点を、着目点の偶数点目か奇数点目かという判定を必要とせず、入力した座標点列に一対一で対応したアンカ点抽出結果を得ることができる。
【００９３】
［実施形態４］
実施形態３ではアンカ点候補情報抽出処理において入力された座標点列がなす辺の中点を抽出対象としていた。それに対して、コントロール点候補設定処理においても同様にしてよい。すなわち、最大角接線決定処理における、最遠点Ｐｆを抽出する際に、入力された座標点列がなす辺の中点をその抽出対象としても同様の効果が得られる。
【００９４】
［実施形態５］
実施形態１では、アンカ点候補情報抽出処理において、アンカ点決定処理における優先順位の高いものから順番に抽出を行っており、抽出したアンカ点候補は一意に決定された属性を保持していた。それに対して、複数の属性の性質を持つ点の場合、重複して属性を保持してもよい。例えば、「屈曲点」と「変曲点」の属性を持つ場合は優先順位を上げ、接線方向は「変曲点」の場合と同様とする、などその重複属性の組み合わせによって優先順位や接線方向の取り方を変えることで、さらに精度の高いベクトル化を実現することができる。
【００９５】
［実施形態６］
実施形態１では、最大角接線決定処理の際に、基準点の抽出範囲をアンカ点間で区切られた単位近似区間内の座標点列においてアンカ点直近の一点を除く全ての点としていた。それに対して、アンカ点の属性を用いて抽出範囲を変えてもよい。例えば、平滑性のために属性が変曲点であるアンカ点の場合は対応する基準点の抽出範囲を直近の２点を除く、直線保持点と頂点は直近の一点も含む、等である。
【００９６】
［実施形態７］
実施形態１では、最大角接線決定処理の際にアンカ点間に含まれる座標点数が、最大角接線を求めるために必要な点数に満たない場合のみ、コントロール点を付加せずアンカ点のみを出力し直線区間とした。それに対して、他に直線区間とみなせる区間を含めてもよい。例えばアンカ点ａ１、ａ２間を結ぶ線分ａ１ａ２の長さを距離Ｄｆで除算した値が閾値Ｔ８以下である場合、該当区間は直線部であるとしコントロール点は出力しないこととしてもよい。すなわち、アンカ点間を線分で結んだものと想定し、その線分と当該アンカ点間に分布する座標点との最大距離が、当該線分の長さに対して一定の割合Ｔ８以下であれば、当該アンカ点は直線区間を構成するものと判定し、コントロール点を付加しない。本実施形態ではこの閾値Ｔ８を３０としている。
【００９７】
［実施形態８］
実施形態１ではコントロール点の位置の制限区間超過を、ステップＳ３２１の制限距離超過判定処理において線分の長さを用いて判定したが、その他の手段でコントロール点の位置を判定してもよい。
【００９８】
例えば、まず実施形態１と同様に制限点Ｃｌｉｍを設ける。次にアンカ点ａ１とアンカ点ａ２を結ぶ線分と、アンカ点ａ１と制限点Ｃｌｉｍを結ぶ線分との角度Ｃｌｉｍａ１ａ２をコントロール点候補ｃ１の制限角度とし、同様にコントロール点候補ｃ２の制限角度を角度Ｃｌｉｍａ２ａ１とする。そしてコントロール点候補ｃ１がなす角度ｃ１ａ１ａ２とコントロール点候補ｃ２がなす角度ｃ２ａ２ａ１がそれぞれ制限角度を下回っていないかを判定する。そして下回っている場合にはコントロール点ｃ１，ｃ２を制限点Ｃｌｉｍに移動することでも同様の効果が見込める。
【００９９】
［実施形態９］
実施形態１では、コントロール点の位置が制限区間内であるか否かを判定し、その結果に応じてコントロール点候補補正を行った。本実施形態ではアンカ点ａ１とコントロール点ｃ１を結ぶ線分と、アンカ点ａ２とコントロール点ｃ２を結ぶ線分が交差しているか否かを判定する交差判定処理を行い、交差している場合のみコントロール点候補の補正を行う。
【０１００】
このときの交差判定処理方法の例を説明する。例えばアンカ点ａ１とアンカ点ａ２を結ぶベクトルａ１ａ２と、コントロール点候補ｃ１とコントロール点候補ｃ２を結ぶベクトルｃ１ｃ２を用い、ベクトルａ１ａ２の向きとベクトルｃ１ｃ２の向きが同一であるか否かで判定する方法が挙げられる。また他には、アンカ点ａ１とコントロール点候補ｃ１を結ぶ線分ａ１ｃ１の長さ｜ａ１ｃ１｜が、アンカ点ａ１とコントロール点候補ｃ２を結ぶ線分ａ１ｃ２の長さ｜ａ１ｃ２｜よりも小さいか否かで判定する方法が挙げられる。
【０１０１】
上記例に挙げたように、アンカ点ａ１とコントロール点ｃ１を結ぶ線分と、アンカ点ａ２とコントロール点ｃ２を結ぶ線分が交差の判定は、アンカ点ａ１，ａ２とコントロール点ｃ１，ｃ２の４点の相対的位置関係を判定することができれば、その方法は問わない。これらは公知の図形演算方法で容易に実装が可能である。
【０１０２】
ただし実施形態１によれば交差している場合以外の、コントロール点が偏った位置に決定された場合においても補正することを可能とする、特有の効果を持つが、本実施形態においてはその効果を持たない。
【０１０３】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
上記実施形態では、プログラムはＲＡＭ５やＲＯＭ６、またはＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータにセットし、システムにコピーもしくはインストールすることで実行可能になる。
【図１】
0005653141.tif 000002
【図２】
0005653141.tif 000003
【図３】
0005653141.tif 000004
【図４】
0005653141.tif 000005
【図５】
0005653141.tif 000006
【図６】
0005653141.tif 000007
【図７】
0005653141.tif 000008
【図８】
0005653141.tif 000009
【図９】
0005653141.tif 000010
【図１０】
0005653141.tif 000011
【図１１】
0005653141.tif 000012
【図１２】
0005653141.tif 000013
【図１３】
0005653141.tif 000014
【図１４】
0005653141.tif 000015
【図１５】
0005653141.tif 000016
【図１６】
0005653141.tif 000017
【図１７】
0005653141.tif 000018
【図１８】
0005653141.tif 000019
【図１９】
0005653141.tif 000020
【図２０】
0005653141.tif 000021
【図２１】
0005653141.tif 000022