(57)【要約】【課題】簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行う。【解決手段】エッジデータの各点に対して計算窓を設定し、エッジデータで表されたエッジを近似するＮｃ次の関数の基底関数を表す行列Ｂ、及び計算窓内のエッジデータに対する重み行列Ｗで表され、かつＮｃ次の関数の次数と同数の行数及び窓内の点の個数と同数の列数で表される行列Ｍを設定する。エッジデータの点毎に、行列Ｍの各行の要素と計算窓内の列で表されたエッジデータとの内積の各々を計算し、行列Ｍの１行目との窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び行列Ｍの（ｎ＋１）行目と窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する。また、フィルタリング後のエッジデータのｎ次微分を用いてエッジの特徴を抽出する。【選択図】図２
2011165121.tif 000002
【特許請求の範囲】
【請求項１】
複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段と、
前記エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ、及び前記窓内のエッジデータに対する重み行列Ｗで表され、かつ前記Ｎ次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Ｍを設定する行列設定手段と、
前記エッジデータの点毎に、前記行列Ｍの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段と、
前記計算手段により計算された前記行列Ｍの１行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Ｍの（ｎ＋１）行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する出力手段と、
を含む画像処理装置。
【請求項２】
前記Ｎ次の関数を、多項式関数とした請求項１記載の画像処理装置。
【請求項３】
前記重み行列Ｗを、前記窓内の対象とする点のエッジデータに対する重みが最も大きくなるようにした請求項１または請求項２記載の画像処理装置。
【請求項４】
前記フィルタリング後のエッジデータのｎ次微分を用いて、前記エッジデータの特徴として、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分を抽出する抽出手段を更に含む請求項１〜請求項３のいずれか１項記載の画像処理装置。
【請求項５】
コンピュータを、
複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段、
前記エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ、及び前記窓内のエッジデータに対する重み行列Ｗで表され、かつ前記Ｎ次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Ｍを設定する行列設定手段、
前記エッジデータの点毎に、前記行列Ｍの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段、及び
前記計算手段により計算された前記行列Ｍの１行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Ｍの（ｎ＋１）行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する出力手段
として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに係り、特に、エッジデータのフィルタリング、補完、及び特徴抽出を行うための画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来より、エッジデータに含まれるノイズや微小特徴を除去するためにフィルタリングを施したり、エッジデータから特徴を抽出したりすることが行われている。
【０００３】
例えば、各画素において輝度の傾斜方向及び傾斜量の情報を含むエッジベクトルを算出し、画像内の局所領域に限定した自己相関を考え、位置の自己相関に対応する画素組に対してさらにエッジベクトルの角度の相関を求め、これらの相関値の領域全体での積分値を、対象の輪郭曲線もしくは輝度値曲面の曲率情報を示す特徴量として抽出する画像特徴抽出装置が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２１７６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１記載の技術では、輝度情報を有するエッジデータを対象としており、また、１つの特徴を抽出するための計算が煩雑であるため、エッジデータのフィルタリングをしたい場合や、他の特徴も抽出したい場合には、さらに別の処理が必要となって、計算時間が増加する、という問題がある。
【０００６】
本発明は上記問題点を解消するためになされたもので、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる画像処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の画像処理装置は、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段と、前記エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ、及び前記窓内のエッジデータに対する重み行列Ｗで表され、かつ前記Ｎ次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Ｍを設定する行列設定手段と、前記エッジデータの点毎に、前記行列Ｍの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段と、前記計算手段により計算された前記行列Ｍの１行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Ｍの（ｎ＋１）行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する出力手段と、を含んで構成されている。
【０００８】
本発明の画像処理装置によれば、窓設定手段が、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定し、行列設定手段が、エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ、及び窓内のエッジデータに対する重み行列Ｗで表され、かつＮ次の関数の次数と同数の行数及び窓内の点の個数と同数の列数で表される行列Ｍを設定する。そして、計算手段が、エッジデータの点毎に、行列Ｍの各行の要素と窓内の列で表されたエッジデータとの内積の各々を計算し、出力手段が、計算手段により計算された行列Ｍの１行目との窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び行列Ｍの（ｎ＋１）行目と窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する。
【０００９】
このように、エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ及び重み行列を用いた行列Ｍの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎に計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのｎ次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる。
【００１０】
また、前記Ｎ次の関数を、多項式関数とすることができる。
【００１１】
また、前記重み行列Ｗを、前記窓内の対象とする点のエッジデータに対する重みが最も大きくなるようにすることができる。これにより、周辺の点のノイズが大きい場合でも、計算される内積への影響を小さくすることができる。
【００１２】
また、本発明の画像処理装置は、前記フィルタリング後のエッジデータのｎ次微分を用いて、前記エッジデータの特徴として、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分を抽出する抽出手段を更に含んで構成することができる。エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分は、フィルタリング後のエッジデータのｎ次微分を用いて表すことができるため、簡易な計算で、これらの特徴を抽出することができる。
【００１３】
また、本発明の画像処理プログラムは、コンピュータを、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段、前記エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ、及び前記窓内のエッジデータに対する重み行列Ｗで表され、かつ前記Ｎ次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Ｍを設定する行列設定手段、前記エッジデータの各点毎に、前記行列Ｍの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段、及び前記計算手段により計算された前記行列Ｍの１行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Ｍの（ｎ＋１）行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのｎ次微分として出力する出力手段として機能させるためのプログラムである。
【００１４】
なお、本発明のプログラムを記憶する記憶媒体は、特に限定されず、ハードディスクであってもよいし、ＲＯＭであってもよい。また、ＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【発明の効果】
【００１５】
以上説明したように、本発明によれば、エッジデータで表されたエッジを近似するＮ次の関数の基底関数を表す行列Ｂ及び重み行列Ｗを用いた行列Ｍの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎に計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのｎ次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる、という効果が得られる。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態の画像処理装置の概略を示すブロック図である。
【図２】本実施の形態の原理を説明するための図である。
【図３】本実施の形態の画像処理装置における画像処理ルーチンの内容を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１８】
図１に示すように、本実施の形態の画像処理装置１０は、ＣＣＤカメラ等からなる撮像装置１２、画像処理結果等を表示するための表示装置１４、及びエッジデータのフィルタリング、補完、及び特徴抽出の処理を実行するためのコンピュータ１６を備えている。
【００１９】
コンピュータ１６は、画像処理装置１０全体の制御を司るＣＰＵ２０、後述する画像処理ルーチン等の各種プログラムを記憶した記憶媒体としてのＲＯＭ２２、ワークエリアとしてデータを一時的に格納するＲＡＭ２４、各種情報が記憶された記憶手段としてのハードディスク（ＨＤＤ）２６、入出力ポート（Ｉ／Ｏポート）２８、ネットワークインターフェース（ネットワークＩ／Ｆ）３０、及びこれらを接続するバスを含んで構成されている。Ｉ／Ｏポート２８には、撮像装置１２及び表示装置１４が接続されている。
【００２０】
本実施の形態の画像処理装置１０では、エッジデータで表されたエッジを多項式近似する場合において、設定した計算窓内のエッジデータと多項式の基底関数を表す行列Ｂ及び重み行列Ｗを用いた行列Ｍの各行の要素との内積を畳み込み処理により計算するものである。行列Ｍの１行目の要素と計算窓内のエッジデータとの内積が、多項式に近似されたエッジデータ、すなわちフィルタリング後のエッジデータであり、行列Ｍの（ｎ＋１）行目の要素と計算窓内のエッジデータとの内積が、フィルタリング後のエッジデータのｎ次微分となる。以下、本実施の形態の原理について説明する。
【００２１】
まず、行列Ｍの導出について説明する。近似の対象となるデータ列を、横座標及び縦座標（ｔ＝ｔ０＋ｉ，ｄ＿ｉ；ｉ＝０・・・Ｎｐ−１）の長さＮｐのデータ列とし、縦座標のデータ（ｄ＿ｉ；ｉ＝０・・・Ｎｐ−１）を、下記（１）式で示すＮｃ次の多項式ｆ（ｔ）により近似する場合を考える。
【００２２】
【数１】
2011165121.tif 000003
【００２３】
なお、ｋ＿ｃは、多項式の係数である。また、下記の数式展開において、横座標を自然数とする必要があるが、後述するダミー変数による正規化により、その制限を吸収する。
【００２４】
ここで、下記（２）式で示す誤差関数Ｅｒｒを最小にする多項式系列（ｋ＿ｃ；ｃ＝０・・・Ｎｃ−１）を求める場合を考える。
【００２５】
【数２】
2011165121.tif 000004
【００２６】
（１）式を行列で書き直せば、
ｆ＝Ｂｋ        （３）
となる。ここで、Ｂは、
（Ｂ）＿ｐｃ＝（ｔ０＋ｐ）ｃ        （４）
で表されるＮｐ×Ｎｃの行列で、多項式ｆの基底関数を表す行列、ｋは多項式系列（ｋ＿ｃ；ｃ＝０・・・Ｎｃ−１）のベクトル、ｆは（ｆ＿ｔ；ｔ＝ｔ０・・・ｔ０＋（Ｎｐ−１））のベクトルである。
【００２７】
（２）式を最小にするためのｋは、
ｋ＝Ｂ＋ｄ        （５）
によって得られる。
【００２８】
ここで、Ｂ＋は行列Ｂの擬似逆行列であり、
Ｂ＋＝（ＢＴＢ）−１ＢＴ      （６）
で表されるＮｃ×Ｎｐの行列である。（５）式からわかるように、Ｂ＋は縦座標のデータ（ｄ＿ｉ；ｉ＝０・・・Ｎｐ−１）によらず、横座標のデータ（ｔ０＋ｉ；ｉ＝０・・・Ｎｐ−１）のみによる。すなわち、横座標が同一である限り、Ｂ＋はデータ列によらないため、Ｂ＋を１度計算すれば、与えられたデータ列に対する多項式系列ｋを前方向行列掛け算のみで得ることができる。
【００２９】
さらに、縦座標のデータｄ＿ｉ毎に重み付けを行うため、（２）式で示した誤差関数に重み係数ベクトル（ｗ＿ｉ；ｉ＝０・・・Ｎｐ−１）を付与して、下記（７）式に示す重み付き誤差関数Ｅｒｒ＿ｗを定義する。
【００３０】
【数３】
2011165121.tif 000005
【００３１】
この重み付き誤差関数Ｅｒｒ＿ｗを最小化する多項式系列のベクトルｋは、
ｋ＝Ｍｄ        （８）
によって得られる。ここで、Ｍは、
Ｍ＝（ＢＴＷＢ）−１ＢＴＷ    （９）
で表されるＮｃ×Ｎｐの行列である。なお、Ｗは重み係数ベクトル（ｗ＿ｉ；ｉ＝０・・・Ｎｐ−１）を対角行列に書き替えたものである。
【００３２】
次に、データ列の点毎の多項式近似（フィルタリング）について説明する。単位整数間隔横座標及び実数縦座標の組からなるデータ列Ｄ＝（ｉ，ｄ＿ｉ；ｉ＝０・・・Ｎａ−１）の点毎に多項式近似する場合を考える。図２に示すように、このｄ＿ｉ毎に下記の条件に従った計算窓を設定する。
【００３３】
・Ｎｐｌを計算窓の左限度とする。
【００３４】
・Ｎｐｒを計算窓の右限度とする。
【００３５】
・Ｎｐ＝Ｎｐｌ＋Ｎｐｒ＋１を計算窓の全長とする。
なお、Ｎｐｌ及びＮｐｒは、Ｎｐｌ＝Ｎｐｒとして設定してもよいし、例えば時間列などのように片側に片寄った計算窓が有利な場合には、Ｎｐｌ＞ＮｐｒまたはＮｐｌ＜Ｎｐｒとしてもよい。
【００３６】
（ｉ−Ｎｐｌ・・・ｉ−Ｎｐｒ）における横座標ｉでの点毎多項式近似では、ｉを原点と見なして、下記（１０）式に示す多項式近似関数を定義する。
【００３７】
【数４】
2011165121.tif 000006
【００３８】
ここで、ｋ＿ｃ［ｉ］（ｃ＝０・・・Ｎｃ−１）は横座標ｉに対する個別多項式系列で、他の横座標ｊについては、多項式系列ｋ＿ｃ［ｊ］（ｃ＝０・・・Ｎｃ−１）を持つ。
【００３９】
補完機能を使わない限り、ｐｗａｐｐｒｏｘ（ｉ，ｔ）を原点ｔ＝０のみで計算する必要があり、原点ｔ＝０の場合、（１０）式は下記（１１）式のように簡略化できる。
【００４０】
ｐｗａｐｐｒｏｘ（ｉ，０）＝ ｋ＿０［ｉ］      （１１）
【００４１】
これにより、他の多項式係数ｋ＿ｃ［ｉ］（ｃ＞０）の計算が不要となり、多項式係数ｋ＿０［ｉ］は、行列Ｍの１行目の要素（Ｍ＿０ｊ）のみを用いて、下記（１２）式の内積を計算することにより得られる。
【００４２】
【数５】
2011165121.tif 000007
【００４３】
行列Ｍは、（９）式で定義したものであり、行列Ｍに含まれる行列Ｂは、
（Ｂ）＿ｃｔ＝（−Ｎｐｌ＋ｔ）ｃ        （１３）
で得られ、行列Ｗは重み係数ベクトルｗ＝（ｗ＿ｉ，ｉ＝０・・・Ｎｐ−１）を適当に設定して、対角行列に書き替えればよい。行列Ｂはデータｄ＿ｉによらないため、行列Ｂから行列Ｍを求める計算は１回のみでよい。
【００４４】
次に、フィルタリング後のデータ列のｎ次微分について説明する。（１０）式の多項式近似関数のｔによる微分を、下記（１４）式に示す。
【００４５】
【数６】
2011165121.tif 000008
【００４６】
原点ｔ＝０で評価すると、
ｄ（ｐｗａｐｐｒｏｘ（ｉ，０））／ｄｔ｜（ｔ＝０）＝ ｋ＿１［ｉ］    （１５）
となり、（１１）式で示したのと同様に、１次微分ｋ＿１［ｉ］は、行列Ｍの２行目の要素（Ｍ＿１ｊ）のみを用いて、下記（１６）式の内積を計算することにより得られる。
【００４７】
【数７】
2011165121.tif 000009
【００４８】
さらに一般化して、ｎ次微分（ｎ≧２）について説明する。
【００４９】
【数８】
2011165121.tif 000010
【００５０】
ここで、Ｆａｃｔ（ｘ）は階乗関数で、下記（１８）式で定義される。
【００５１】
Ｆａｃｔ（ｘ）＝Ｐｒｏｄｕｃｔ［ａ＝１・・・ｘ］ａ      （１８）
【００５２】
原点ｔ＝０で評価すると、
ｄｎ（ｐｗａｐｐｒｏｘ（ｉ，０））／ｄｔｎ｜（ｔ＝０）
＝Ｆａｃｔ（ｎ−１）＊ｋ＿ｎ［ｉ］      （１９）
となる。従って、（１１）及び（１４）式で示したのと同様に、ｎ次微分ｋ＿ｎ［ｉ］は、行列Ｍの（ｎ＋１）行目の要素（Ｍ＿ｎｊ）のみを用いて、下記（２０）式の内積を計算することにより得られる。
【００５３】
【数９】
2011165121.tif 000011
【００５４】
すなわち、行列Ｍの（ｎ＋１）行の要素のみを使って、多項式近似関数のｎ次微分を計算することができることを表している（定数を除く）。
【００５５】
次に、図３を参照して、本実施の形態の画像処理装置１０で実行される画像処理ルーチンについて説明する。
【００５６】
ステップ１００で、処理対象となるエッジデータ列を取得する。エッジデータ列は、撮像装置１２で撮影された画像データを取得し、例えば、閾値処理による２値化を行ってブロブ解析処理を行うような公知の技術によりエッジを抽出し、抽出されたエッジをチェーンコード変換することにより得られる。また、ネットワークＩ／Ｆ３０を介して接続された外部装置で処理されたエッジデータ列をそのまま取得してもよい。ここで取得されたエッジデータ列（ｘ［ｉ］，ｙ［ｉ］；ｉ＝０・・・Ｎａ−１）を、２つのデータ列（ｉ，ｘ［ｉ］；ｉ＝０・・・Ｎａ−１）及び（ｉ，ｙ［ｉ］；ｉ＝０・・・Ｎａ−１）に分ける。
【００５７】
次に、ステップ１０２で、計算窓の左限度Ｎｐｌ及び右限度Ｎｐｒを定義する。また、（９）式に従って行列Ｍを設定する。行列Ｍに含まれる重み行列Ｗについては、適当な値を設定することができるが、原点ｉを１にして、ベクトルの両端にいくに従って小さくなるような重み係数ベクトルを用いることが好ましい。（７）式の重み付き誤差関数Ｅｒｒ＿ｗを利用して、その理由を説明する。
【００５８】
Ｄが、２つのデータ列Ｄ＿ｔｒｕｅ及びＤ＿ｎｏｉｓｅにより下記（２１）式で表されるとする。
【００５９】
Ｄ＝Ｄ＿ｔｒｕｅ＋Ｄ＿ｎｏｉｓｅ
＝｛ｄ［ｉ］＝ｄ＿ｔｒｕｅ［ｉ］＋ｄ＿ｎｏｉｓｅ［ｉ］，
ｉ＝０・・・Ｎａ−１｝  （２１）
【００６０】
重み係数ベクトルの全ての要素を１とする場合をケースＡとし、原点ｉを１にして、ベクトルの両端にいくに従って小さくなるようにした場合をケースＢとする。ケースＡの場合、ｋ＿０［ｉ］へのｄ［ｉ−Ｎｐｌ］の影響は、ケースＢの場合と比べて大きい。しかし、ケースＡ及びケースＢのいずれの場合も、ｋ＿０［ｉ＋１］へのｄ［ｉ−Ｎｐｌ］の影響はない。従って、ｄ＿ｎｏｉｓｅ［ｉ−Ｎｐｌ］が大きい場合、ケースＡでは、ｋ＿０［ｉ］とｋ＿０［ｉ＋１］との差が大きくなるのに対して、ケースＢは大きくならない。従って、ケースＢのような重み係数ベクトルを用いることが有効である。
【００６１】
次に、ステップ１０４で、変数ｉに０をセットする。次に、ステップ１０６で、上記ステップ１０２で定義された計算窓を、エッジデータｉ（ｘ［ｉ］及びｙ［ｉ］）を原点として設定する。
【００６２】
次に、ステップ１０８で、列で表された計算窓内のエッジデータと行列Ｍの各行の要素との内積を、（１２）、（１６）及び（２０）式に従って計算する。
【００６３】
次に、ステップ１１０で、ｉがＮａ−１になったか否かを判定することにより、エッジデータ列の全てのエッジデータ（各点）について処理が終了したか否かを判定する。ｉ≠Ｎａ−１の場合には、ステップ１１２へ移行して、ｉを１インクリメントして、ステップ１０６へ戻り、ステップ１０６及び１０８の処理を繰り返す。ステップ１１０において、ｉ＝Ｎａ−１と判定された場合には、ステップ１１４へ移行する。
【００６４】
ここで、（２０）式に示すｋ＿ｎ［ｉ］を下記（２２）式のように書き直す。
【００６５】
【数１０】
2011165121.tif 000012
【００６６】
ここで、ｍｒｅｖ＿ｎ［Ｎｐ−１−ｊ］は、行列Ｍの（ｎ＋１）行目のｊ番目の要素である。このように、ｉを１つずつずらしながら計算窓内のエッジデータと行列Ｍの各行の要素との内積を計算してｋ＿ｎ［ｉ］を計算することを、畳み込み計算として表すことができるため、高速フーリエ変換を利用して計算することが可能である。その場合の計算時間上限は、Ｏ（Ｎａ  Ｌｏｇ（Ｎａ））となる。
【００６７】
次に、ステップ１１４で、計算された多項式系列（フィルタリング後のエッジデータ）を用いて、エッジデータの各種特徴を抽出する。各種特徴としては、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分がある。
【００６８】
ここで、まず、エッジの接線、及びエッジの曲率の一般式を定義する。任意の指数ｔに対して、フィルタされた位置を、
ｓ（ｔ）．ｘ＝ｆｕｎｃｘ（ｔ）（０）      （２３）
ｓ（ｔ）．ｙ＝ｆｕｎｃｙ（ｔ）（０）      （２４）
とする。
【００６９】
また、ｔに対する速度ベクトルを、
ｖ（ｔ）．ｘ ＝ ｄ ｓ（ｔ）．ｘ ／ ｄｔ      （２５）
ｖ（ｔ）．ｙ ＝ ｄ ｓ（ｔ）．ｙ ／ ｄｔ      （２６）
とすると、スカラー速度は、下記（２７）式となる。
【００７０】
【数１１】
2011165121.tif 000013
【００７１】
一般的に、｜ｖ（ｔ）｜は、ｔによって異なるものであるため、下記でエッジの曲率などを計算するときに、計算が偏る原因となる。そこで、｜ｖ（ｔｎ）｜＝１となるようなダミー変数ｔｎを導入する。ｔｎはｔによる関数ので、ｔｎ（ｔ）とも表し、
ｔｎ（ｔ）＝∫｜ｖ（ｔ）｜ｄｔ        （２３）
とする。
【００７２】
従って、
ｄｔｎ（ｔ）＝｜ｖ（ｔ）｜ｄｔ      （２４）
となる。ここで一次度近似を利用して、｜ｖ（ｔ）｜を操作点ｔ０で固定してから
ｄｔｎ＝｜ｖ（ｔ０）｜＊ｄｔ      （２５）
または  ｄｔ／ｄｔｎ＝１／｜ｖ（ｔ０）｜      （２６）
を得る。
【００７３】
すると、ｔｎに対する速度ベクトルが
ｖｎ（ｔ）．ｘ＝ｄｓ（ｔ）．ｘ／ｄｔｎ
＝（ｄｓ（ｔ）．ｘ／ ｄｔ）（ｄｔ／ｄｔｎ）
＝ｖ（ｔ）．ｘ／｜ｖ（ｔ）｜              （２７）
ｖｎ（ｔ）．ｙ＝ｄ ｓ（ｔ）．ｙ／ｄｔｎ
＝（ｄｓ（ｔ）．ｙ／ｄｔ）（ｄｔ／ｄｔｎ）
＝ｖ（ｔ）．ｙ／｜ｖ（ｔ）｜              （２８）
となるので、スカラー速度｜ｖｎ（ｔ）｜が、｜ｖｎ（ｔ）｜＝｜ｖ（ｔ）｜／｜ｖ（ｔ）｜＝１となる。この速度ベクトルｖｎ（ｔ）を「正規化速度ベクトル」と呼び、同様に、「正規化加速度ベクトル」ａｎ（ｔ）を次の通り定義する。
【００７４】
ａｎ（ｔ）．ｘ＝ｄ２ｓ（ｔ）．ｘ／ｄｔｎ２
＝（ｄ２ｓ（ｔ）．ｘ／ｄｔ２）（ｄｔ／ｄｔｎ）２
＝ａ（ｔ）．ｘ／｜ｖ（ｔ）｜２            （２９）
ａｎ（ｔ）．ｙ＝ｄ２ｓ（ｔ）．ｙ／ｄｔｎ２
＝（ｄ２ｓ（ｔ）．ｙ／ｄｔ２）（ｄｔ／ｄｔｎ）２
＝ａ（ｔ）．ｙ／｜ｖ（ｔ）｜２            （３０）
【００７５】
ここで、ａ（ｔ）は、正規されていない加速ベクトルで
ａ（ｔ）．ｘ＝ｄ２ｓ（ｔ）．ｘ／ｄｔ２
ａ（ｔ）．ｙ＝ｄ２ｓ（ｔ）．ｙ／ｄｔ２
である。
【００７６】
そして、エッジの曲率を示すスカラー関数ｂｅｎｄ（ｔ）を、
ｂｅｎｄ（ｔ）＝（ａｎ（ｔ）．ｘ＊ｖｎ（ｔ）．ｙ
＋ａｎ（ｔ）．ｙ＊−ｖｎ（ｔ）．ｘ）
＝（ａ（ｔ）．ｘ ＊ ｖ（ｔ）．ｙ＋ａ（ｔ）．ｙ ＊ −ｖ（ｔ）．ｘ））
／｜ｖ（ｔ)|３       （３１）
とする。ｂｅｎｄ（ｔ）は、正規化速度ベクトルの単位接線へ直交方向に射影された値であり、値の符号が正か負かにより接線のどちら側に凸かを表す。
【００７７】
分母の｜ｖ（ｔ）｜がゼロかまたは小さくなると、計算が不安定になるため、与えられたエッジデータＤについて、｜ｖ（ｔ）｜が小さくなり過ぎないことを条件として与える必要がある。
【００７８】
次に、ｎ次度変曲点を、
ｄｎｂｅｎｄ（ｔｎ）／ｄｎｔｎ＝０        （３２）
とする。つまり、ｎ次度変曲点をｂｅｎｄのｔｎによるｎ次微分とする。なお、多くの変曲点は重要でなく、特に、完全な直線エッジのｂｅｎｄ微分はすべて０である。従って、エッジの特徴として抽出する場合には、他の条件も加えるようにしてもよい。
【００７９】
０次度変曲点は、例えば、Ｓ字の中央点のようなｂｅｎｄの正と負との間（０交点）である。１次度変曲点は、ｂｅｎｄの微分の正と負との間（０交点）である。角に１次度変曲点がある場合、その１次度変曲点が角の最大曲率と一致する場合がある。従って、１次度変曲点を特徴として抽出することが有効な場合もある。
【００８０】
次に、エッジの曲率の微分の数式を下記（３３）式に示す。
【００８１】
ｄ ｂｅｎｄ（ｔｎ）／ｄｔｎ
＝（ｄ（ａｎ（ｔ）．ｘ＊ｖｎ（ｔ）．ｙ
＋ａｎ（ｔ）．ｙ＊−ｖｎ（ｔ）．ｘ）／ｄｔｎ）
＝（ｚｎ（ｔｎ）．ｘ＊ｖｎ（ｔｎ）．ｙ
＋ｚｎ（ｔｎ）．ｙ＊−ｖｎ（ｔｎ）．ｘ）
＝ （ｚ（ｔ）．ｘ＊ｖ（ｔ）．ｙ＋ｚ（ｔ）．ｙ＊−ｖ（ｔ）．ｘ）
／｜ｖ（ｔ）｜２              （３３）
ここで、ｚ（ｔ）＝ｄａ（ｔ）／ｄｔである。
【００８２】
以上説明したような一般式を多項式近似へ応用する。フィルタリングされたエッジ位置ｓ（ｔ０）を下記（３４）式のように定義する。
【００８３】
【数１２】
2011165121.tif 000014
【００８４】
それぞれｖ＝ｄｓ／ｄｔ、ａ＝ｄｖ／ｄｔ、及びｚ＝ｄｖ／ｄｔという定義に、（３４）式の多項式の１次微分、２次微分、及び３次微分の各々を代入すれば、下記（３５）〜（３７）式が得られる。
【００８５】
【数１３】
2011165121.tif 000015
【００８６】
（３４）〜（３７）式は、（１７）式で示したｐｗａｐｐｒｏｘ（ｉ，ｔ）のｎ次微分の形式に従う。
【００８７】
よって、
ｓ（ｔ０）．ｘ＝ｋｘ＿０      ｓ（ｔ０）．ｙ＝ｋｙ＿０        （３８）
ｖ（ｔ０）．ｘ＝ｋｘ＿１      ｖ（ｔ０）．ｙ＝ｋｙ＿１        （３９）
ａ（ｔ０）．ｘ＝２＊ｋｘ＿２  ａ（ｔ０）．ｙ＝２＊ｋｙ＿２    （４０）
ｚ（ｔ０）．ｘ＝６＊ｋｘ＿３  ｚ（ｔ０）．ｙ＝６＊ｋｙ＿３    （４１）
が成り立つ。
【００８８】
（３８）〜（４１）式の右辺のｋｘ＿ｎ及びｋｙ＿ｎは、上記ステップ１０８の畳み込み計算により得られる。エッジの曲率ｂｅｎｄ（ｔ）は、（３１）式に示すように、ｖ（ｔ）及びａ（ｔ）から計算することができる。エッジの曲率微分ｄｂｅｎｄ（ｔｎ）／ｄｔｎは、（３３）式に示すように、ｚ（ｔ）及びａ（ｔ）から計算することができる。
【００８９】
次に、直線エッジについて説明する。直線エッジは、横座標ｉ０からｉ１までを含み、次の条件を満たすエッジ線分として抽出することができる。
【００９０】
（条件１）ａｂｓ（ｂｅｎｄ（ｉ））＜Ｔ＿ｓｔｒａｉｇｈｔ＿ｍａｘｂｅｎｄ
ｉ＝ｉ０・・・ｉ１
（条件２）ｉ１−ｉ０＋１≧Ｔ＿ｓｔｒａｉｇｈｔ＿ｍｉｎｌｅｎｇｔｈ
【００９１】
次に、角の変曲点について説明する。角の変曲点は１次度変曲点となる。上記で説明したように、１次度変曲点に加え、その１次度変曲点のうち、下記の条件を満たす変曲点を抽出する。
【００９２】
（条件１）ａｂｓ（ｂｅｎｄ（ｉ））＞Ｔ＿ｂｅｎｄ
（条件２）ａｂｓ（−ｂｅｎｄ（ｉ＋ｄ）＋２＊ｂｅｎｄ（ｉ）
−ｂｅｎｄ（ｉ−ｄ））／４  ＞Ｔ＿ｄｄｂｅｎｄ
【００９３】
このように、上記ステップ１０８で計算された計算窓内のエッジデータと行列Ｍの１行目の要素との内積により、フィルタリング後のエッジデータが得られ、行列Ｍの（ｎ＋１）行目の要素との内積により、フィルタリング後のエッジデータのｎ次微分が簡易に得られ、これらを用いて、エッジの特徴として、エッジの曲率、エッジの曲率微分、変曲点、及び直線エッジも簡易に抽出することができる。このように抽出されたエッジの特徴は、例えば、部品検査における部品の位置特定、サイズ計測、マッチング等に用いることができる。
【００９４】
また、２つの与えられたエッジデータ点（ｔ０，ｘ０，ｙ０），（ｔ１，ｘ０，ｙ０）間の補完結果は、２つの非線形多項式関数（ｆｘ０（ｔ），ｆｙ０（ｔ））と（ｆｘ１（ｔ），ｆｙ１（ｔ））の線形補完ｆｘ（ｔ）＝（ｔ１−ｔ）／（ｔ１−ｔ０）＊（ｆｘ０（ｔ），ｆｙ０（ｔ））＋（ｔ−ｔ０）／（ｔ１−ｔ０）＊（ｆｘ１（ｔ），ｆｙ１（ｔ））として定義され、補完機能としても用いることができる。
【００９５】
フィルタリング、補完、及び特徴抽出の結果を、表示装置１４に出力して、処理を終了する。なお、結果をネットワークＩ／Ｆ３０を介して接続された外部装置、例えば、部品検査装置の駆動制御装置に出力して、結果に応じて部品検査装置の駆動を制御するように構成してもよい。
【００９６】
以上説明したように、本発明の画像処理装置によれば、エッジデータで表されたエッジを近似するＮｃ次の関数の基底関数を表す行列Ｂ及び重み行列Ｗを用いた行列Ｍの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのｎ次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる。
【符号の説明】
【００９７】
１０   画像処理装置
１２   撮像装置
１４   表示装置
１６   コンピュータ
【図１】
2011165121.tif 000016
【図２】
2011165121.tif 000017
【図３】
2011165121.tif 000018