説明

画像処理装置及びプログラム

【課題】簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行う。
【解決手段】エッジデータの各点に対して計算窓を設定し、エッジデータで表されたエッジを近似するNc次の関数の基底関数を表す行列B、及び計算窓内のエッジデータに対する重み行列Wで表され、かつNc次の関数の次数と同数の行数及び窓内の点の個数と同数の列数で表される行列Mを設定する。エッジデータの点毎に、行列Mの各行の要素と計算窓内の列で表されたエッジデータとの内積の各々を計算し、行列Mの1行目との窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び行列Mの(n+1)行目と窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する。また、フィルタリング後のエッジデータのn次微分を用いてエッジの特徴を抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及びプログラムに係り、特に、エッジデータのフィルタリング、補完、及び特徴抽出を行うための画像処理装置及びプログラムに関する。
【背景技術】
【0002】
従来より、エッジデータに含まれるノイズや微小特徴を除去するためにフィルタリングを施したり、エッジデータから特徴を抽出したりすることが行われている。
【0003】
例えば、各画素において輝度の傾斜方向及び傾斜量の情報を含むエッジベクトルを算出し、画像内の局所領域に限定した自己相関を考え、位置の自己相関に対応する画素組に対してさらにエッジベクトルの角度の相関を求め、これらの相関値の領域全体での積分値を、対象の輪郭曲線もしくは輝度値曲面の曲率情報を示す特徴量として抽出する画像特徴抽出装置が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−217627号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1記載の技術では、輝度情報を有するエッジデータを対象としており、また、1つの特徴を抽出するための計算が煩雑であるため、エッジデータのフィルタリングをしたい場合や、他の特徴も抽出したい場合には、さらに別の処理が必要となって、計算時間が増加する、という問題がある。
【0006】
本発明は上記問題点を解消するためになされたもので、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる画像処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の画像処理装置は、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段と、前記エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B、及び前記窓内のエッジデータに対する重み行列Wで表され、かつ前記N次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Mを設定する行列設定手段と、前記エッジデータの点毎に、前記行列Mの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段と、前記計算手段により計算された前記行列Mの1行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Mの(n+1)行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する出力手段と、を含んで構成されている。
【0008】
本発明の画像処理装置によれば、窓設定手段が、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定し、行列設定手段が、エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B、及び窓内のエッジデータに対する重み行列Wで表され、かつN次の関数の次数と同数の行数及び窓内の点の個数と同数の列数で表される行列Mを設定する。そして、計算手段が、エッジデータの点毎に、行列Mの各行の要素と窓内の列で表されたエッジデータとの内積の各々を計算し、出力手段が、計算手段により計算された行列Mの1行目との窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び行列Mの(n+1)行目と窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する。
【0009】
このように、エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B及び重み行列を用いた行列Mの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎に計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのn次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる。
【0010】
また、前記N次の関数を、多項式関数とすることができる。
【0011】
また、前記重み行列Wを、前記窓内の対象とする点のエッジデータに対する重みが最も大きくなるようにすることができる。これにより、周辺の点のノイズが大きい場合でも、計算される内積への影響を小さくすることができる。
【0012】
また、本発明の画像処理装置は、前記フィルタリング後のエッジデータのn次微分を用いて、前記エッジデータの特徴として、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分を抽出する抽出手段を更に含んで構成することができる。エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分は、フィルタリング後のエッジデータのn次微分を用いて表すことができるため、簡易な計算で、これらの特徴を抽出することができる。
【0013】
また、本発明の画像処理プログラムは、コンピュータを、複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段、前記エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B、及び前記窓内のエッジデータに対する重み行列Wで表され、かつ前記N次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Mを設定する行列設定手段、前記エッジデータの各点毎に、前記行列Mの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段、及び前記計算手段により計算された前記行列Mの1行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Mの(n+1)行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する出力手段として機能させるためのプログラムである。
【0014】
なお、本発明のプログラムを記憶する記憶媒体は、特に限定されず、ハードディスクであってもよいし、ROMであってもよい。また、CD−ROMやDVDディスク、光磁気ディスクやICカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【発明の効果】
【0015】
以上説明したように、本発明によれば、エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B及び重み行列Wを用いた行列Mの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎に計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのn次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる、という効果が得られる。
【図面の簡単な説明】
【0016】
【図1】本実施の形態の画像処理装置の概略を示すブロック図である。
【図2】本実施の形態の原理を説明するための図である。
【図3】本実施の形態の画像処理装置における画像処理ルーチンの内容を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0018】
図1に示すように、本実施の形態の画像処理装置10は、CCDカメラ等からなる撮像装置12、画像処理結果等を表示するための表示装置14、及びエッジデータのフィルタリング、補完、及び特徴抽出の処理を実行するためのコンピュータ16を備えている。
【0019】
コンピュータ16は、画像処理装置10全体の制御を司るCPU20、後述する画像処理ルーチン等の各種プログラムを記憶した記憶媒体としてのROM22、ワークエリアとしてデータを一時的に格納するRAM24、各種情報が記憶された記憶手段としてのハードディスク(HDD)26、入出力ポート(I/Oポート)28、ネットワークインターフェース(ネットワークI/F)30、及びこれらを接続するバスを含んで構成されている。I/Oポート28には、撮像装置12及び表示装置14が接続されている。
【0020】
本実施の形態の画像処理装置10では、エッジデータで表されたエッジを多項式近似する場合において、設定した計算窓内のエッジデータと多項式の基底関数を表す行列B及び重み行列Wを用いた行列Mの各行の要素との内積を畳み込み処理により計算するものである。行列Mの1行目の要素と計算窓内のエッジデータとの内積が、多項式に近似されたエッジデータ、すなわちフィルタリング後のエッジデータであり、行列Mの(n+1)行目の要素と計算窓内のエッジデータとの内積が、フィルタリング後のエッジデータのn次微分となる。以下、本実施の形態の原理について説明する。
【0021】
まず、行列Mの導出について説明する。近似の対象となるデータ列を、横座標及び縦座標(t=t0+i,d_i;i=0・・・Np−1)の長さNpのデータ列とし、縦座標のデータ(d_i;i=0・・・Np−1)を、下記(1)式で示すNc次の多項式f(t)により近似する場合を考える。
【0022】
【数1】

【0023】
なお、k_cは、多項式の係数である。また、下記の数式展開において、横座標を自然数とする必要があるが、後述するダミー変数による正規化により、その制限を吸収する。
【0024】
ここで、下記(2)式で示す誤差関数Errを最小にする多項式系列(k_c;c=0・・・Nc−1)を求める場合を考える。
【0025】
【数2】

【0026】
(1)式を行列で書き直せば、
f=Bk (3)
となる。ここで、Bは、
(B)_pc=(t0+p) (4)
で表されるNp×Ncの行列で、多項式fの基底関数を表す行列、kは多項式系列(k_c;c=0・・・Nc−1)のベクトル、fは(f_t;t=t0・・・t0+(Np−1))のベクトルである。
【0027】
(2)式を最小にするためのkは、
k=Bd (5)
によって得られる。
【0028】
ここで、Bは行列Bの擬似逆行列であり、
=(BB)−1 (6)
で表されるNc×Npの行列である。(5)式からわかるように、Bは縦座標のデータ(d_i;i=0・・・Np−1)によらず、横座標のデータ(t0+i;i=0・・・Np−1)のみによる。すなわち、横座標が同一である限り、Bはデータ列によらないため、Bを1度計算すれば、与えられたデータ列に対する多項式系列kを前方向行列掛け算のみで得ることができる。
【0029】
さらに、縦座標のデータd_i毎に重み付けを行うため、(2)式で示した誤差関数に重み係数ベクトル(w_i;i=0・・・Np−1)を付与して、下記(7)式に示す重み付き誤差関数Err_wを定義する。
【0030】
【数3】

【0031】
この重み付き誤差関数Err_wを最小化する多項式系列のベクトルkは、
k=Md (8)
によって得られる。ここで、Mは、
M=(BWB)−1W (9)
で表されるNc×Npの行列である。なお、Wは重み係数ベクトル(w_i;i=0・・・Np−1)を対角行列に書き替えたものである。
【0032】
次に、データ列の点毎の多項式近似(フィルタリング)について説明する。単位整数間隔横座標及び実数縦座標の組からなるデータ列D=(i,d_i;i=0・・・Na−1)の点毎に多項式近似する場合を考える。図2に示すように、このd_i毎に下記の条件に従った計算窓を設定する。
【0033】
・Nplを計算窓の左限度とする。
【0034】
・Nprを計算窓の右限度とする。
【0035】
・Np=Npl+Npr+1を計算窓の全長とする。
なお、Npl及びNprは、Npl=Nprとして設定してもよいし、例えば時間列などのように片側に片寄った計算窓が有利な場合には、Npl>NprまたはNpl<Nprとしてもよい。
【0036】
(i−Npl・・・i−Npr)における横座標iでの点毎多項式近似では、iを原点と見なして、下記(10)式に示す多項式近似関数を定義する。
【0037】
【数4】

【0038】
ここで、k_c[i](c=0・・・Nc−1)は横座標iに対する個別多項式系列で、他の横座標jについては、多項式系列k_c[j](c=0・・・Nc−1)を持つ。
【0039】
補完機能を使わない限り、pwapprox(i,t)を原点t=0のみで計算する必要があり、原点t=0の場合、(10)式は下記(11)式のように簡略化できる。
【0040】
pwapprox(i,0)= k_0[i] (11)
【0041】
これにより、他の多項式係数k_c[i](c>0)の計算が不要となり、多項式係数k_0[i]は、行列Mの1行目の要素(M_0j)のみを用いて、下記(12)式の内積を計算することにより得られる。
【0042】
【数5】

【0043】
行列Mは、(9)式で定義したものであり、行列Mに含まれる行列Bは、
(B)_ct=(−Npl+t) (13)
で得られ、行列Wは重み係数ベクトルw=(w_i,i=0・・・Np−1)を適当に設定して、対角行列に書き替えればよい。行列Bはデータd_iによらないため、行列Bから行列Mを求める計算は1回のみでよい。
【0044】
次に、フィルタリング後のデータ列のn次微分について説明する。(10)式の多項式近似関数のtによる微分を、下記(14)式に示す。
【0045】
【数6】

【0046】
原点t=0で評価すると、
d(pwapprox(i,0))/dt|(t=0)= k_1[i] (15)
となり、(11)式で示したのと同様に、1次微分k_1[i]は、行列Mの2行目の要素(M_1j)のみを用いて、下記(16)式の内積を計算することにより得られる。
【0047】
【数7】

【0048】
さらに一般化して、n次微分(n≧2)について説明する。
【0049】
【数8】

【0050】
ここで、Fact(x)は階乗関数で、下記(18)式で定義される。
【0051】
Fact(x)=Product[a=1・・・x]a (18)
【0052】
原点t=0で評価すると、
(pwapprox(i,0))/dt|(t=0)
=Fact(n−1)*k_n[i] (19)
となる。従って、(11)及び(14)式で示したのと同様に、n次微分k_n[i]は、行列Mの(n+1)行目の要素(M_nj)のみを用いて、下記(20)式の内積を計算することにより得られる。
【0053】
【数9】

【0054】
すなわち、行列Mの(n+1)行の要素のみを使って、多項式近似関数のn次微分を計算することができることを表している(定数を除く)。
【0055】
次に、図3を参照して、本実施の形態の画像処理装置10で実行される画像処理ルーチンについて説明する。
【0056】
ステップ100で、処理対象となるエッジデータ列を取得する。エッジデータ列は、撮像装置12で撮影された画像データを取得し、例えば、閾値処理による2値化を行ってブロブ解析処理を行うような公知の技術によりエッジを抽出し、抽出されたエッジをチェーンコード変換することにより得られる。また、ネットワークI/F30を介して接続された外部装置で処理されたエッジデータ列をそのまま取得してもよい。ここで取得されたエッジデータ列(x[i],y[i];i=0・・・Na−1)を、2つのデータ列(i,x[i];i=0・・・Na−1)及び(i,y[i];i=0・・・Na−1)に分ける。
【0057】
次に、ステップ102で、計算窓の左限度Npl及び右限度Nprを定義する。また、(9)式に従って行列Mを設定する。行列Mに含まれる重み行列Wについては、適当な値を設定することができるが、原点iを1にして、ベクトルの両端にいくに従って小さくなるような重み係数ベクトルを用いることが好ましい。(7)式の重み付き誤差関数Err_wを利用して、その理由を説明する。
【0058】
Dが、2つのデータ列D_true及びD_noiseにより下記(21)式で表されるとする。
【0059】
D=D_true+D_noise
={d[i]=d_true[i]+d_noise[i],
i=0・・・Na−1} (21)
【0060】
重み係数ベクトルの全ての要素を1とする場合をケースAとし、原点iを1にして、ベクトルの両端にいくに従って小さくなるようにした場合をケースBとする。ケースAの場合、k_0[i]へのd[i−Npl]の影響は、ケースBの場合と比べて大きい。しかし、ケースA及びケースBのいずれの場合も、k_0[i+1]へのd[i−Npl]の影響はない。従って、d_noise[i−Npl]が大きい場合、ケースAでは、k_0[i]とk_0[i+1]との差が大きくなるのに対して、ケースBは大きくならない。従って、ケースBのような重み係数ベクトルを用いることが有効である。
【0061】
次に、ステップ104で、変数iに0をセットする。次に、ステップ106で、上記ステップ102で定義された計算窓を、エッジデータi(x[i]及びy[i])を原点として設定する。
【0062】
次に、ステップ108で、列で表された計算窓内のエッジデータと行列Mの各行の要素との内積を、(12)、(16)及び(20)式に従って計算する。
【0063】
次に、ステップ110で、iがNa−1になったか否かを判定することにより、エッジデータ列の全てのエッジデータ(各点)について処理が終了したか否かを判定する。i≠Na−1の場合には、ステップ112へ移行して、iを1インクリメントして、ステップ106へ戻り、ステップ106及び108の処理を繰り返す。ステップ110において、i=Na−1と判定された場合には、ステップ114へ移行する。
【0064】
ここで、(20)式に示すk_n[i]を下記(22)式のように書き直す。
【0065】
【数10】

【0066】
ここで、mrev_n[Np−1−j]は、行列Mの(n+1)行目のj番目の要素である。このように、iを1つずつずらしながら計算窓内のエッジデータと行列Mの各行の要素との内積を計算してk_n[i]を計算することを、畳み込み計算として表すことができるため、高速フーリエ変換を利用して計算することが可能である。その場合の計算時間上限は、O(Na Log(Na))となる。
【0067】
次に、ステップ114で、計算された多項式系列(フィルタリング後のエッジデータ)を用いて、エッジデータの各種特徴を抽出する。各種特徴としては、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分がある。
【0068】
ここで、まず、エッジの接線、及びエッジの曲率の一般式を定義する。任意の指数tに対して、フィルタされた位置を、
s(t).x=funcx(t)(0) (23)
s(t).y=funcy(t)(0) (24)
とする。
【0069】
また、tに対する速度ベクトルを、
v(t).x = d s(t).x / dt (25)
v(t).y = d s(t).y / dt (26)
とすると、スカラー速度は、下記(27)式となる。
【0070】
【数11】

【0071】
一般的に、|v(t)|は、tによって異なるものであるため、下記でエッジの曲率などを計算するときに、計算が偏る原因となる。そこで、|v(tn)|=1となるようなダミー変数tnを導入する。tnはtによる関数ので、tn(t)とも表し、
tn(t)=∫|v(t)|dt (23)
とする。
【0072】
従って、
dtn(t)=|v(t)|dt (24)
となる。ここで一次度近似を利用して、|v(t)|を操作点t0で固定してから
dtn=|v(t0)|*dt (25)
または dt/dtn=1/|v(t0)| (26)
を得る。
【0073】
すると、tnに対する速度ベクトルが
vn(t).x=ds(t).x/dtn
=(ds(t).x/ dt)(dt/dtn)
=v(t).x/|v(t)| (27)
vn(t).y=d s(t).y/dtn
=(ds(t).y/dt)(dt/dtn)
=v(t).y/|v(t)| (28)
となるので、スカラー速度|vn(t)|が、|vn(t)|=|v(t)|/|v(t)|=1となる。この速度ベクトルvn(t)を「正規化速度ベクトル」と呼び、同様に、「正規化加速度ベクトル」an(t)を次の通り定義する。
【0074】
an(t).x=ds(t).x/dtn
=(ds(t).x/dt)(dt/dtn)
=a(t).x/|v(t)| (29)
an(t).y=ds(t).y/dtn
=(ds(t).y/dt)(dt/dtn)
=a(t).y/|v(t)| (30)
【0075】
ここで、a(t)は、正規されていない加速ベクトルで
a(t).x=ds(t).x/dt
a(t).y=ds(t).y/dt
である。
【0076】
そして、エッジの曲率を示すスカラー関数bend(t)を、
bend(t)=(an(t).x*vn(t).y
+an(t).y*−vn(t).x)
=(a(t).x * v(t).y+a(t).y * −v(t).x))
/|v(t)| (31)
とする。bend(t)は、正規化速度ベクトルの単位接線へ直交方向に射影された値であり、値の符号が正か負かにより接線のどちら側に凸かを表す。
【0077】
分母の|v(t)|がゼロかまたは小さくなると、計算が不安定になるため、与えられたエッジデータDについて、|v(t)|が小さくなり過ぎないことを条件として与える必要がある。
【0078】
次に、n次度変曲点を、
bend(tn)/dtn=0 (32)
とする。つまり、n次度変曲点をbendのtnによるn次微分とする。なお、多くの変曲点は重要でなく、特に、完全な直線エッジのbend微分はすべて0である。従って、エッジの特徴として抽出する場合には、他の条件も加えるようにしてもよい。
【0079】
0次度変曲点は、例えば、S字の中央点のようなbendの正と負との間(0交点)である。1次度変曲点は、bendの微分の正と負との間(0交点)である。角に1次度変曲点がある場合、その1次度変曲点が角の最大曲率と一致する場合がある。従って、1次度変曲点を特徴として抽出することが有効な場合もある。
【0080】
次に、エッジの曲率の微分の数式を下記(33)式に示す。
【0081】
d bend(tn)/dtn
=(d(an(t).x*vn(t).y
+an(t).y*−vn(t).x)/dtn)
=(zn(tn).x*vn(tn).y
+zn(tn).y*−vn(tn).x)
= (z(t).x*v(t).y+z(t).y*−v(t).x)
/|v(t)| (33)
ここで、z(t)=da(t)/dtである。
【0082】
以上説明したような一般式を多項式近似へ応用する。フィルタリングされたエッジ位置s(t0)を下記(34)式のように定義する。
【0083】
【数12】

【0084】
それぞれv=ds/dt、a=dv/dt、及びz=dv/dtという定義に、(34)式の多項式の1次微分、2次微分、及び3次微分の各々を代入すれば、下記(35)〜(37)式が得られる。
【0085】
【数13】

【0086】
(34)〜(37)式は、(17)式で示したpwapprox(i,t)のn次微分の形式に従う。
【0087】
よって、
s(t0).x=kx_0 s(t0).y=ky_0 (38)
v(t0).x=kx_1 v(t0).y=ky_1 (39)
a(t0).x=2*kx_2 a(t0).y=2*ky_2 (40)
z(t0).x=6*kx_3 z(t0).y=6*ky_3 (41)
が成り立つ。
【0088】
(38)〜(41)式の右辺のkx_n及びky_nは、上記ステップ108の畳み込み計算により得られる。エッジの曲率bend(t)は、(31)式に示すように、v(t)及びa(t)から計算することができる。エッジの曲率微分dbend(tn)/dtnは、(33)式に示すように、z(t)及びa(t)から計算することができる。
【0089】
次に、直線エッジについて説明する。直線エッジは、横座標i0からi1までを含み、次の条件を満たすエッジ線分として抽出することができる。
【0090】
(条件1)abs(bend(i))<T_straight_maxbend
i=i0・・・i1
(条件2)i1−i0+1≧T_straight_minlength
【0091】
次に、角の変曲点について説明する。角の変曲点は1次度変曲点となる。上記で説明したように、1次度変曲点に加え、その1次度変曲点のうち、下記の条件を満たす変曲点を抽出する。
【0092】
(条件1)abs(bend(i))>T_bend
(条件2)abs(−bend(i+d)+2*bend(i)
−bend(i−d))/4 >T_ddbend
【0093】
このように、上記ステップ108で計算された計算窓内のエッジデータと行列Mの1行目の要素との内積により、フィルタリング後のエッジデータが得られ、行列Mの(n+1)行目の要素との内積により、フィルタリング後のエッジデータのn次微分が簡易に得られ、これらを用いて、エッジの特徴として、エッジの曲率、エッジの曲率微分、変曲点、及び直線エッジも簡易に抽出することができる。このように抽出されたエッジの特徴は、例えば、部品検査における部品の位置特定、サイズ計測、マッチング等に用いることができる。
【0094】
また、2つの与えられたエッジデータ点(t0,x0,y0),(t1,x0,y0)間の補完結果は、2つの非線形多項式関数(fx0(t),fy0(t))と(fx1(t),fy1(t))の線形補完fx(t)=(t1−t)/(t1−t0)*(fx0(t),fy0(t))+(t−t0)/(t1−t0)*(fx1(t),fy1(t))として定義され、補完機能としても用いることができる。
【0095】
フィルタリング、補完、及び特徴抽出の結果を、表示装置14に出力して、処理を終了する。なお、結果をネットワークI/F30を介して接続された外部装置、例えば、部品検査装置の駆動制御装置に出力して、結果に応じて部品検査装置の駆動を制御するように構成してもよい。
【0096】
以上説明したように、本発明の画像処理装置によれば、エッジデータで表されたエッジを近似するNc次の関数の基底関数を表す行列B及び重み行列Wを用いた行列Mの各行の要素と窓内の列で表されたエッジデータとの内積の各々をエッジデータの点毎計算して、フィルタリング後のエッジデータ、及びエッジデータの特徴を求めるために用いられるフィルタリング後のエッジデータのn次微分として出力するため、簡易な計算で、エッジデータのフィルタリング、補完、及び特徴抽出を行うことができる。
【符号の説明】
【0097】
10 画像処理装置
12 撮像装置
14 表示装置
16 コンピュータ

【特許請求の範囲】
【請求項1】
複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段と、
前記エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B、及び前記窓内のエッジデータに対する重み行列Wで表され、かつ前記N次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Mを設定する行列設定手段と、
前記エッジデータの点毎に、前記行列Mの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段と、
前記計算手段により計算された前記行列Mの1行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Mの(n+1)行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する出力手段と、
を含む画像処理装置。
【請求項2】
前記N次の関数を、多項式関数とした請求項1記載の画像処理装置。
【請求項3】
前記重み行列Wを、前記窓内の対象とする点のエッジデータに対する重みが最も大きくなるようにした請求項1または請求項2記載の画像処理装置。
【請求項4】
前記フィルタリング後のエッジデータのn次微分を用いて、前記エッジデータの特徴として、エッジの接線、エッジの曲率、エッジの曲率微分、変曲点、及び直線成分を抽出する抽出手段を更に含む請求項1〜請求項3のいずれか1項記載の画像処理装置。
【請求項5】
コンピュータを、
複数の点で表されたエッジデータに対して、対象とする点及び該点の周辺に存在する点を内部に含む窓を設定する窓設定手段、
前記エッジデータで表されたエッジを近似するN次の関数の基底関数を表す行列B、及び前記窓内のエッジデータに対する重み行列Wで表され、かつ前記N次の関数の次数と同数の行数及び前記窓内の点の個数と同数の列数で表される行列Mを設定する行列設定手段、
前記エッジデータの点毎に、前記行列Mの各行の要素と前記窓内の列で表されたエッジデータとの内積の各々を計算する計算手段、及び
前記計算手段により計算された前記行列Mの1行目との前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータとして、及び前記行列Mの(n+1)行目と前記窓内の列で表されたエッジデータとの内積をフィルタリング後のエッジデータのn次微分として出力する出力手段
として機能させるための画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2011−165121(P2011−165121A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−30061(P2010−30061)
【出願日】平成22年2月15日(2010.2.15)
【出願人】(000170554)国際技術開発株式会社 (34)
【Fターム(参考)】