【実施例1】
【0021】
実施例1の形状測定装置10について図面を参照しながら説明する。
図1に示すように、形状測定装置10は、ステージ12と、ステージ12上に配置された照明器14と、ステージ12に固定されているCCDカメラ16と、CCDカメラ16に通信線18を介して接続されているコンピュータ22と、コンピュータ22に接続されているディスプレイ20を備えている。
【0022】
照明器14は、面光源であり、その発光面上に渦巻きばね30が載置される。CCDカメラ16は、照明器14上に配置されており、照明器14上に載置された渦巻きばね30を撮影する。即ち、渦巻きばね30は照明器14によって下方から照明され、照明器14の透過光(渦巻きばね30の影)がCCDカメラ16によって撮影される。なお、照明器14は、本実施例のような透過照明に限定されず、渦巻きばね30を上方から照明するものでもよい。この場合、渦巻きばね30が全周方向から均等に照明されるように、複数の照明器やリング型の照明器を用いることが好ましい。
【0023】
CCDカメラ16が撮影した画像データは、通信線18を介してコンピュータ22に入力される。コンピュータ22には、後述する形状測定処理を実行するためのプログラムが記憶されている。コンピュータ22は、CCDカメラ16が撮影した撮影画像の画像データを処理し、渦巻きばね30の隣り合う素線間の隙間を表す線間隙間関数を算出する。コンピュータ22のメモリには、予め定められた閾値関数が記憶されている。コンピュータ22は、算出した線間隙間関数を閾値関数と比較して、渦巻きばね30の良否を判定し、判定結果をディスプレイ20に表示する。
【0024】
図2A〜
図2Dは、形状測定装置10による渦巻きばね30の形状測定の流れを示すフローチャートである。形状測定装置10は、
図2A〜
図2Dに示す工程、処理を経て、渦巻きばね30の線間隙間関数を算出し、渦巻きばね30が良品であるか否かの判定を行う。以下、
図2A、
図2Bに示すフローチャートに沿って、形状測定装置10による渦巻きばね30の形状測定の流れを説明する。
【0025】
まず、
図2AのステップS10において、CCDカメラ16により、渦巻きばね30の撮影を行う。CCDカメラ16により撮影された撮影画像は、コンピュータ22に入力される。入力される撮影画像は、例えば、最も黒い画素の輝度値を「0」とし、最も白い画素の輝度値を「255」とする256階調の画像とすることができる。
図3、
図9に、2種類の渦巻きばね30の撮影画像を例示する。
図3、
図9に示す2種類の渦巻きばね30は、共に、内フック32から外フック34まで渦巻状に延びている。ただし、これら2種類の渦巻きばね30は、その内フック32の形状に有意な違いを有する。即ち、
図3に示す渦巻きばね30は、その内フック32が渦巻きばね30の重心Gと重なっているが、
図9に示す渦巻きばね30は、その内フック32が渦巻きばね30の重心Gと重なっていない。本明細書では、
図3に示す渦巻きばね30を第1タイプと称し、
図9に示す渦巻きばね30を第2タイプと称する。形状測定装置10は、第1タイプと第2タイプの双方の渦巻きばね30の形状測定を行うことができる。なお、特に区別した説明がない場合は、第1タイプと第2タイプで共通の処理が行われるものとする。なお、撮影画像は、画素(x,y)毎に輝度値を有する輝度値画像である。
【0026】
次に、ステップS12では、ステップS10で撮影された撮影画像を二値化する。すなわち、入力された撮影画像の各画素(x,y)に対して、輝度値が予め設定された設定値以上となる場合は濃度値「0」(白画素)とし、輝度値が予め設定された設定値未満となる場合は濃度値「1」(黒画素)とする。これによって、渦巻きばね30に対応する部分の画素群が濃度値「1」となり、それ以外の画素群が濃度値「0」となる。なお、このステップS12から後述するステップS36までの処理は、コンピュータ22によって実行される。
【0027】
次に、ステップS14では、ステップS12で得られた二値化画像を極座標変換して極座標画像を作成する。
図4に、第1タイプの渦巻きばね30(
図3参照)の極座標画像を示す。
図10に、第2タイプの渦巻きばね30(
図9参照)の極座標画像を示す。二値化画像から極座標画像を作成する処理は、公知の方法(例えば、特開2009−257950)を用いて行うことができる。具体的には、渦巻きばね30の重心Gを仮の中心として求めた後、公知の変換式を用いて極座標画像を作成することができる。
【0028】
次に、ステップS16では、ステップS14で作成した極座標画像に基づいて、外側エッジ関数e
o(θ)と内側エッジ関数e
i(θ)を作成する。外側・内側エッジ関数作成処理について
図2Bを参照して説明する。
【0029】
(外側・内側エッジ関数作成処理)
図2Bに示すように、この処理では、ステップS30において、極座標画像を用いて座標値P
1,P
2を検出する。
図4、
図10に示すように、極座標画像は、濃度値1の複数の縞状の画素群を有する。以下では、説明の便宜上、これら縞状の画素群に符号を付して各々を区別する。第1タイプの渦巻きばね30の極座標画像では、
図4に示すように、縞状の画素群をそれぞれ画素群40、画素群42、画素群44、画素群46、画素群48と称する。第2タイプの渦巻きばね30の極座標画像では、
図10に示すように、縞状の画素群をそれぞれ画素群40、画素群42、画素群44、画素群46と称する。また、内フック32に相当する部分の画素群を画素群Aと称し、外フック34に相当する部分の画素群を画素群Bと称する。
図4、
図10では、他の画素群と区別するために、画素群A、Bを含む範囲を破線で示す。破線内において濃度値1の画素群がそれぞれ画素群A、画素群Bである。画素群A、画素群Bは、公知の方法(例えば、特開2009−257950)を用いて特定することができる。いずれのタイプにおいても、画素群40の上端は内フック32に相当する部分の画素群Aと連続しており、画素群48の下端(第2タイプの場合は画素群46の下端)は外フック34に相当する部分の画素群Bと連続している。なお、画素群40の境界の座標値のθ成分の範囲は0°〜360°である。以下、各画素群42、44、46、48の境界の座標値のθ成分の範囲は、それぞれ360°〜720°、720°〜1080°、1080°〜1440°、1440°〜1800°である。
座標値P
1,P
2は、具体的には次のように検出される。まず、極座標画像のθ=360°のライン上を左から右へトレースする。そして、画素の濃度値が最初に0から1に変化するときの濃度値0の画素の座標値をP
1として検出し、その後で濃度値が最初に1から0に変化するときの濃度値1の画素の座標値をP
2として検出する。座標値P
1が画素群40の左側の境界を表し、座標値P
2が画素群40の右側の境界を表す。以下では、各画素群40〜48の左側の境界を特に「内側エッジ」と称し、右側の境界を特に「外側エッジ」とも称する。また、内側エッジの座標値のr成分をr
iと称し、外側エッジの座標値のr成分をr
oとも称する。即ち、座標値P
1のr成分はθ=360°におけるr
iであり、座標値P
2のr成分はθ=360°におけるr
oである。
【0030】
次に、ステップS31では、座標値P
1のr成分r
iをe
i(360)として記憶する。同様に、座標値P
2のr成分r
oをe
o(360)として記憶する。これらはRAMに保存される。続いて、ステップS32では、画素群40の左側及び右側の境界を逆方向にトレースする。ここで、逆方向にトレースするとは、極座標画像の縦軸θの値が減少する方向に向かうトレースを意味する。逆方向トレース処理について、
図2Cを参照して説明する。
【0031】
(逆方向トレース処理)
この処理では、θ=359°,358°,・・・0°のそれぞれのライン上を所定の範囲で左から右へトレースして、画素の濃度値が最初に0から1に変化するときの濃度値0の画素の座標値のr成分と、その後で濃度値が最初に1から0に変化するときの濃度値1の画素の座標値のr成分を検出する。以下では、座標値(θ,r)の画素の濃度値をD(θ,r)と表す。例えば、D(θ
1,r
1)=0のときは座標値(θ
1,r
1)の画素は白画素であり、D(θ
2,r
2)=1のときは座標値(θ
2,r
2)の画素は黒画素である。
【0032】
具体的な処理を説明する。
図2Cに示すように、まず、ステップS50でj=1に設定し、ステップS51に進む。ステップS51では、θ=θ
j(θ
j=360°−j(j=1°〜360°))のときの画素群40の内側エッジの座標値のr成分r
iを検出する。r
iは、θ=θ
jのライン上のr成分がe
i(θ
j+1)−δ≦r≦e
i(θ
j+1)+δとなる範囲内で、D(θ
j,r)=0かつD(θ
j,r+1)=1を満たすrによって定義される。例えば、j=1の場合は、θ
1=359°のライン上においてe
i(360)−δ≦r≦e
i(360)+δとなる範囲内で、D(θ
1,r)=0かつD(θ
1,r+1)=1を満たすrがθ=θ
1の内側エッジの座標値のr
iとして検出される。ここで、e
i(360)は、ステップS31で記憶された座標値P
1のr成分である。この処理によると、内側エッジの座標値のr
iの検出は、θ=θ
jのライン上の所定の範囲のみで行われる。このため、処理速度を向上させることができる。
次に、ステップS52では、ステップS51で内側エッジの座標値のr
iを検出できたか否か判断する。上記の条件を満たすrが存在する場合は、r
iの検出に成功したと判断して(ステップS52のYES)、ステップS53に進む。一方、上記の条件を満たすrが存在しない場合は、r
iの検出に失敗したと判断して(ステップS52のNO)、ステップS59に進む(後述)。なお、ステップS52でNOの場合とは、θ=θ
jのラインにおける上記rの範囲内で、隣接する2つの画素の濃度値が右方向に白画素から黒画素に変化しない場合である。即ち、具体的には、θ=θ
jのときの画素群40に相当する部分の素線が、内フック32と接触しているか、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップS53では、ステップS51で検出されたr
iをe
i(θ
j)として記憶する。例えば、j=1の場合は、θ=359°のときの内側エッジの座標値のr
iをe
i(359)として記憶する。e
i(θ
j)はRAMに保存される。
【0033】
ステップS54では、θ=θ
jのときの画素群40の外側エッジの座標値のr成分r
oを検出する。r
oは、θ=θ
jのライン上のr成分がe
o(θ
j+1)−δ≦r≦e
o(θ
j+1)+δとなる範囲内で、D(θ
j,r)=1かつD(θ
j,r+1)=0を満たすrによって定義される。例えば、j=1の場合は、θ
1=359°のライン上においてe
o(360)−δ≦r≦e
o(360)+δとなる範囲内で、D(θ
1,r)=1かつD(θ
1,r+1)=0を満たすrがθ=θ
1の外側エッジの座標値のr
oとして検出される。ここで、e
o(360)は、ステップS31で記憶された座標値P
2のr成分である。この処理によると、外側エッジの座標値のr
oの検出は、θ=θ
jのライン上の所定の範囲のみで行われる。このため、処理速度を向上させることができる。
次に、ステップS55では、ステップS54で外側エッジの座標値のr
oを検出できたか否か判断する。上記の条件を満たすrが存在する場合は、r
oの検出に成功したと判断して(ステップS55のYES)、ステップS56に進む。一方、上記の条件を満たすrが存在しない場合は、r
oの検出に失敗したと判断して(ステップS55のNO)、ステップS59に進む(後述)。なお、ステップS55でNOの場合とは、θ=θ
jのラインにおける上記rの範囲内で、隣接する2つの画素の濃度値が右方向に黒画素から白画素に変化しない場合である。即ち、具体的には、θ=θ
jのときの画素群40に相当する部分の素線が、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップS56では、ステップS54で検出されたr
oをe
o(θ
j)として記憶する。例えば、j=1の場合は、θ=359°のときの外側エッジの座標値のr
oをe
o(359)として記憶する。e
o(θ
j)はRAMに保存される。
【0034】
続いて、ステップS57では、j=360であるか否かを判断する。j=360ではない場合は、ステップS57でNOと判断してステップS58に進む。ステップS58では、jを1インクリメントしてステップS51に戻り、ステップS57までの処理を繰り返す。この処理は、ステップS57でYESと判断されるまで(即ち、j=360と判断されるまで)繰り返される。これにより、θ
j=360°−j(=359°,358°,・・・0°)のときの画素群40の内側エッジ及び外側エッジの座標値のr成分r
i、r
oを順次検出(逆方向トレース)し、それらをe
i(θ
j)、e
o(θ
j)としてRAMに記憶させることができる。一方、j=360の場合は、ステップS57でYESと判断してステップS59に進む(後述)。なお、ステップS57でYESの場合とは、画素群40に相当する部分の素線を一巻分、逆方向トレースした場合である。
【0035】
ステップS52でNO、ステップS55でNO、及びステップS57でYESの場合は、ステップS59に進む。ステップS59では、逆方向トレースができたところまでの画素群40の長さを部分素線長S
rとして算出する。具体的には、ステップS52でNO又はステップS55でNOと判断されてステップS59に進んだ場合は、ステップS51又はステップS54においてθ=θ
jにおけるr
i又はr
oの検出に失敗している。この場合、θ=360°からθ
jまでのθ成分の長さである360°−θ
jを部分素線長S
rとして算出する。また、ステップS57でYESと判断されてステップS59に進んだ場合は、部分素線長S
rは360°(即ち、θ成分の一巻分の長さ)となる。ステップS59の処理が終了すると、逆方向トレース処理は終了する。なお、上記の処理では、所定の範囲内においてD(θ
1,r)=0かつD(θ
1,r+1)=1を満たすrを内側エッジのr
iとして検出したが、条件式は上記に限られない。例えば、D(θ
1,r−2)=0、D(θ
1,r−1)=0、D(θ
1,r)=0、D(θ
1,r+1)=1、D(θ
1,r+2)=1、D(θ
1,r+3)=1の全てを満たすrを内側エッジのr
iとして検出してもよい。即ち、画素の濃度値が、左から右に向かって3画素連続して白画素となった後で、3画素連続して黒画素となるときの最も右側の白画素の座標値のr成分をr
iとして検出してもよい。この検出条件によると、突発的なノイズを誤って内側エッジとして検出してしまうことを抑制でき、r
iの検出精度をより向上させることができる。この検出条件は、外側エッジのr
oの検出に用いてもよい。また、後述する順方向トレース処理で用いてもよい。
【0036】
図2Bに戻って説明を続ける。ステップS32で逆方向トレースが終了すると、ステップS33に進む。ステップS33では、ステップS32の逆方向トレース処理で算出された部分素線長S
rをエッジ関数長さLとして記憶する。即ち、ステップS31、S32の処理で記憶されたe
i(θ
j)をθ−r座標系でつなぎ合わせて近似すると、画素群40の内側エッジを表す関数(内側エッジ関数)を作成することが可能である。同様に、e
o(θ
j)をθ−r座標系でつなぎ合わせて近似すると、画素群40の外側エッジを表す関数(外側エッジ関数)を作成することが可能である。このため、部分素線長S
rは、画素群40の内側及び外側エッジ関数の長さを表している。このため、ステップS33では、部分素線長S
rをエッジ関数長さLとして記憶する。エッジ関数長さLは、RAMに保存される。
【0037】
続いて、ステップS34では、位置変数θ
pを360°に設定し、ステップS35に進む。ステップS35では、e
i(360)をg
i(0)として記憶し、e
o(360)をg
o(0)として記憶する。ここで、g
i(0)は、θ=0°のときの画素群42の内側エッジの座標値のr成分r
iであり、g
o(0)は、θ=0°のときの画素群42の外側エッジの座標値のr成分r
oである。画素群40に相当する部分の渦巻きばね30と画素群42に相当する部分の渦巻きばねは連続している。このため、θ=360°における画素群40の内側エッジのr
i及び外側エッジのr
oは、θ=0°における画素群42の内側エッジr
i及び外側エッジr
oとそれぞれ等しい。即ち、ステップS35の処理では、画素群40のr
i及びr
oを利用して画素群42のr
i及びr
oを算出し、それぞれをg
i(0)、g
o(0)として記憶する。この処理によると、画素群40以外の画素群については、ステップS30のような処理が不要となり、処理効率を向上することができる。
【0038】
次に、ステップS36では、Kを1に設定し、ステップS37に進む。ステップS37では、画素群42の内側エッジ及び外側エッジを順方向にトレースする。ここで、順方向にトレースするとは、極座標画像の縦軸θの値が増加する方向に向かうトレースを意味する。順方向トレース処理は、トレースの方向がθの増加方向である点以外は、逆方向トレース処理と同様である。このため、逆方向トレース処理と同様の処理については詳細な説明を省略する。
【0039】
(順方向トレース処理)
図2Dに示すように、まず、ステップS60でk=1に設定し、ステップS61に進む。ステップS61では、θ=θ
k(θ
k=k(k=1°〜360°))のときの画素群42の内側エッジの座標値のr
iを検出する。r
iは、θ=θ
kのライン上のr成分がg
i(θ
k−1)−δ≦r≦g
i(θ
k−1)+δとなる範囲内で、D(θ
k,r)=0かつD(θ
k,r+1)=1を満たすrによって定義される。例えば、k=1の場合は、θ
1=1°のライン上においてg
i(0)−δ≦r≦g
i(0)+δとなる範囲内で、D(θ
1,r)=0かつD(θ
1,r+1)=1を満たすrがθ=θ
1の内側エッジの座標値のr
iとして検出される。
次に、ステップS62では、ステップS61で内側エッジの座標値のr
iを検出できたか否か判断する。上記の条件を満たすrが存在する場合(ステップS62のYES)は、ステップS63に進み、上記の条件を満たすrが存在しない場合(ステップS62のNO)は、ステップS69に進む。なお、ステップS62でNOの場合とは、θ=θ
kのラインにおける上記rの範囲内で、隣接する2つの画素の濃度値が右方向に白画素から黒画素に変化しない場合である。即ち、具体的には、θ=θ
kのときの画素群42に相当する部分の素線が、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップS63では、ステップS61で検出されたr
iをg
i(θ
k)として記憶する。例えば、k=1の場合は、θ=1°のときの内側エッジの座標値のr
iをg
i(1)として記憶する。g
i(θ
k)はRAMに保存される。
【0040】
ステップS64では、θ=θ
kのときの画素群42の外側エッジの座標値のr成分r
oを検出する。r
oは、θ=θ
kのライン上のr成分がg
o(θ
k−1)−δ≦r≦g
o(θ
k−1)+δとなる範囲内で、D(θ
k,r)=1かつD(θ
k,r+1)=0を満たすrによって定義される。例えば、k=1の場合は、θ
1=1°のライン上においてg
o(0)−δ≦r≦g
o(0)+δとなる範囲内で、D(θ
1,r)=1かつD(θ
1,r+1)=0を満たすrがθ=θ
1の外側エッジの座標値のr
oとして検出される。
次に、ステップS65では、ステップS64で外側エッジの座標値のr
oを検出できたか否か判断する。上記の条件を満たすrが存在する場合(ステップS65のYES)は、ステップS66に進み、上記の条件を満たすrが存在しない場合(ステップS65のNO)、ステップS69に進む。なお、ステップS65でNOの場合とは、θ=θ
kのラインにおける上記rの範囲内で、隣接する2つの画素の濃度値が右方向に黒画素から白画素に変化しない場合である。即ち、具体的には、θ=θ
kのときの画素群42に相当する部分の素線が、外フック32と接触しているか、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップS66では、ステップS64で検出されたr
oをg
o(θ
k)として記憶する。例えば、k=1の場合は、θ=1°のときの外側エッジの座標値のr
oをg
o(1)として記憶する。g
o(θ
k)はRAMに保存される。
【0041】
続いて、ステップS67では、k=360であるか否かを判断する。k=360ではない場合は、ステップS67でNOと判断して、ステップS68においてkを1インクリメントしてステップS61に戻り、ステップS67までの処理を繰り返す。この処理は、ステップS67でYESと判断されるまで繰り返される。これにより、θ
k=k(=1°,2°,・・・360°)のときの画素群42の内側エッジ及び外側エッジの座標値のr成分r
i、r
oを順次検出(順方向トレース)し、それらをg
i(θ
k)、g
o(θ
k)としてRAMに記憶させることができる。一方、k=360の場合は、ステップS67でYESと判断してステップS69に進む。なお、ステップS67でYESの場合とは、画素群42に相当する部分の素線を一巻分、順方向トレースした場合である。
【0042】
ステップS69では、順方向トレースができたところまでの画素群42の長さを部分素線長S
fとして算出する。具体的には、ステップS62でNO又はステップS65でNOと判断されてステップS69に進んだ場合は、ステップS61又はステップS64においてθ=θ
kにおけるr
i又はr
oの検出に失敗している。この場合、θ=1°からθ
kまでのθ成分の長さであるθ
k−0°を部分素線長S
fとして算出する。また、ステップS67でYESと判断されてステップS69に進んだ場合は、部分素線長S
fは360°(即ち、θ成分の一巻分の長さ)となる。ステップS69の処理が終了すると、順方向トレース処理は終了する。
【0043】
図2Bに戻って説明を続ける。ステップS37で順方向トレースが終了すると、ステップS38に進む。ステップS38では、ステップS37の順方向トレース処理で記憶されたg
o(θ
k)をe
o(360×K+θ
k)として記憶し、g
i(θ
k)をe
i(360×K+θ
k)として記憶する。例えば、K=1のときは、g
o(θ
k)はe
o(360+θ
k)として記憶され、g
i(θ
k)はe
i(360+θ
k)として記憶される。
続いて、ステップS39では、ステップS33で記憶されたエッジ関数長さLに、ステップS37で算出された部分素線長S
fを足したものを、新たなエッジ関数長さLとして記憶(更新)する。ステップS37で算出された部分素線長S
fは、画素群42の内側及び外側エッジ関数の長さを表している。このため、ステップS39では、ステップS33のエッジ関数長さL+ステップS37の部分素線長S
fを、新たなエッジ関数長さLとして記憶する。新たなエッジ関数長さLは、RAMに保存される。
【0044】
次に、ステップS40では、ステップS34で設定された位置変数θ
pに、ステップS37で算出された部分素線長S
fを足したものを、新たな位置変数θ
pとして記憶(更新)する。
続いて、ステップS41では、部分素線長S
f=360°が成立するか否かを判断する。S
f=360°が成立するのは、k=360のときである。別言すれば、画素群42に相当する部分の素線を一巻分、順方向トレースしたときである。この場合、ステップS41でYESと判断して、ステップS42に進む。一方、S
f=360°が成立しない場合は、ステップS41でNOと判断して、ステップS46に進む(後述)。
ステップS42では、g
i(360)をg
i(0)に更新し、g
o(360)をg
o(0)に更新する。ここで、g
i(360)は、θ=360°のときの画素群42の内側エッジの座標値のr成分r
iであり、g
o(360)は、θ=360°のときの画素群42の外側エッジの座標値のr成分r
oである。画素群42に相当する部分の渦巻きばね30と画素群44に相当する部分の渦巻きばね30は連続している。このため、θ=360°における画素群42の内側エッジのr
i及び外側エッジのr
oは、θ=0°における画素群44の内側エッジr
i及び外側エッジr
oとそれぞれ等しい。即ち、ステップS42の処理では、画素群42のr
i及びr
oを利用して画素群42のr
i及びr
oを算出し、それぞれをg
i(0)、g
o(0)として記憶する。
【0045】
次に、ステップS43では、K=K
maxが成立するか否かを判断する。ここで、K
maxは渦巻きばね30の巻き数の上限値を超える値であり、コンピュータ22に予め登録されている。上記等式が成立する場合(ステップS43でYES)はステップS46に進み(後述)、成立しない場合(ステップS43でNO)はステップS44に進む。
ステップS44では、Kを1インクリメントして、ステップS37に戻る。例えば、K=1、K
max=8の場合は、ステップS43でNOと判断し、ステップS44でK=2に設定し、ステップS37で再度順方向トレース処理を行う。K=2のときは、上記のステップS60〜ステップS69までの処理が、画素群44に対して行われる。ステップS37の処理が終了したら、画素群44に対して、ステップS38〜ステップS44までの処理が行われる。
図4に示す例では、以後、ステップS44でKを1ずつインクリメントしながら、ステップS37〜ステップS44までの処理が行われる。そして、ステップS44でKを1インクリメントして、K=4に設定されると、ステップS37では、画素群48に対して順方向トレース処理を行う。この場合、
図4から明らかなように、ステップS65(
図2D参照)でNOと判断され、ステップS69で部分素線長S
fが算出される。その後、ステップS38〜S40の処理を経て、ステップS41でNOと判断され、ステップS46に進む。
【0046】
ステップS46では、外側エッジ関数e
o(θ)と内側エッジ関数e
i(θ)を作成する。外側エッジ関数e
o(θ)は、ステップS56(
図2C参照)で記憶された座標値群e
o(θ
j)と、ステップS38で記憶された座標値群e
o(360×K+θ
k)とを、θ−r座標系でつなぎ合わせて近似することにより作成される。同様に、内側エッジ関数e
i(θ)は、ステップS53(
図2C参照)で記憶された座標値群e
i(θ
j)と、ステップS38で記憶された座標値群e
i(360×K+θ
k)とを、θ−r座標系でつなぎ合わせて近似することにより作成される。ステップS46の処理が終了すると、外側・内側エッジ関数の作成処理が終了する。
【0047】
図2Aに戻って説明を続ける。ステップS16で外側・内側エッジ関数の作成処理が終了すると、ステップS18では、ステップS16で記憶されたエッジ関数長さL(
図2BのステップS39参照)が下限閾値を超えるか否か判断する。ここで、下限閾値は、渦巻きばね30の巻き数の下限値(単位は角度[°])であり、コンピュータ22に予め登録されている。エッジ関数長さLが下限閾値を超える場合(ステップS18でYES)は、ステップS20に進む。一方、エッジ関数長さLが下限閾値以下の場合(ステップS18でNO)は、ステップS28に進む。なお、ステップS18でNOの場合とは、例えば、渦巻きばね30の巻き数が不足しているか(ケース1)、隣り合う素線同士が接触しているか(ケース2)、隣り合う素線の間に異物が挟まっている(ケース3)場合などが考えられる。
ステップS18でNOと判断した後のステップS28では、渦巻きばね30を不良品と判定し、不良箇所をディスプレイ20の渦巻きばね画像に反映させる。具体的には、ケース2、3の場合は、ステップS40(
図2B参照)で記憶された位置変数θ
pは、接触箇所又は異物がある箇所を表している。このため、ステップS28では、(θ
p,e
i(θ
p))又は(θ
p,e
o(θ
p))を極座標逆変換して、xy平面上における接触箇所又は異物がある箇所を算出し、これら不良箇所をディスプレイ20の渦巻きばね画像に反映させる。
【0048】
次に、ステップS20では、ステップS16で作成した外側エッジ関数e
o(θ)と内側エッジ関数e
i(θ)から、線間隙間関数ρ
1(θ)を算出する。
図5に、線間隙間関数ρ
1(θ)の一例を示す。線間隙間関数ρ
1(θ)は、次の式;ρ
1(θ)=e
i(θ+360°)−e
o(θ)によって定義される。線間隙間関数ρ
1(θ)は、渦巻きばね30の隣り合う素線間の隙間を表す関数である。
【0049】
次に、ステップS22では、メモリから下限閾値関数ρ
1min(θ)を読み出して、検査対象となる角度範囲において線間隙間関数ρ
1(θ)>下限閾値関数ρ
1min(θ)が成り立つか否かを判定する。上記不等式が成り立つ場合(ステップS22でYES)は、ステップS24に進み、不成立の場合(ステップS22でNO)は、ステップS28で渦巻きばね30が不良品であると判定する(後述)。
【0050】
ステップS24では、メモリから上限閾値関数ρ
1max(θ)を読み出して、検査対象となる角度範囲において、線間隙間関数ρ
1(θ)<上限閾値関数ρ
1max(θ)が成り立つか否かを判定する。上記不等式が成り立つ場合(ステップS24でYES)は、ステップS26に進み、不成立の場合(ステップS24でNO)は、ステップS28で渦巻きばね30が不良品であると判定する(後述)。
【0051】
ステップS22、S24でNOと判断した後のステップS28では、渦巻きばね30を不良品と判定し、不良箇所をディスプレイ20の渦巻きばね画像に反映させる。具体的には、線間隙間関数ρ
1(θ)が異常値となるときのθをθ
errとし、ρ
1(θ
err)に対応する外側・内側エッジ関数の座標値(θ
err,e
o(θ
err))、(θ
err,e
i(θ
err))を特定する。そして、当該座標値を極座標逆変換して、xy平面上における不良箇所を算出し、当該不良箇所をディスプレイ20の渦巻きばね画像に反映させる。
【0052】
ステップS26では、ステップS22、S24の判定結果に基づいて、渦巻きばね30が良品であると判定する。
図6に、線間隙間関数ρ
1(θ)、下限閾値関数ρ
1min(θ)、及び上限閾値関数ρ
1max(θ)の例を示す。
図6の例では、約120°<θ<約230°の範囲において、ρ
1(θ)<ρ
1min(θ)となっている。このため、ステップS22においてNOと判断され、ステップS28で不良品と判定される。本実施例では、渦巻きばね30の良否判定を、ρ
1min(θ)<ρ
1(θ)<ρ
1max(θ)が成立するか否かに基づいて行う。この構成によると、予めメモリに記憶させておく下限閾値関数ρ
1min(θ)及び上限閾値関数ρ
1max(θ)を制御することにより、所望の線間隙間形状を有する渦巻きばねを製造することができる。これにより、渦巻きばねの特性を安定化することができる。
なお、下限閾値関数ρ
1min(θ)及び上限閾値関数ρ
1max(θ)は、設計図又は設計データなどから決定されてもよいし、設計データのFEM解析結果などを元に決定されてもよい。下限閾値関数ρ
1min(θ)及び上限閾値関数ρ
1max(θ)は、検査対象となる角度範囲において一定値であってもよい。また、ステップS22及びS24の処理は、いずれか一方のみが行われてもよい。
【0053】
また、上記のステップS20では線間隙間関数ρ
1(θ)を算出したが、ρ
1(θ)の代わりに、素線厚み関数ρ
2(θ)を算出してもよい。素線厚み関数ρ
2(θ)は、次の式;ρ
2(θ)=e
o(θ)−e
i(θ)によって定義される。素線厚み関数ρ
2(θ)は、渦巻きばね30の素線の厚み(線材の板厚)を表す関数である。この場合、予めメモリに素線厚みの下限閾値関数ρ
2min(θ)及び上限閾値関数ρ
2max(θ)を記憶しておき、ステップS22では、ρ
2(θ)>ρ
2min(θ)が成り立つか否かを判定してもよい。ステップS24では、ρ
2(θ)<ρ
2max(θ)が成り立つか否かを判定してもよい。
或いは、ステップS20では、線間隙間関数ρ
1(θ)と素線厚み関数ρ
2(θ)の両方を算出し、ステップS22、S24では、両方の関数について上記不等式を満たしているか否か判定してもよい。
【0054】
ここで、隣り合う素線同士が接触している場合について説明する。
図7に、隣り合う素線同士が接触点Ctにおいて接触している渦巻きばね30の撮影画像を示し、
図8に、当該渦巻きばね30の極座標画像を示す。
図7、
図8から明らかなように、隣り合う素線同士が接触していると、極座標画像において、隣り合う縞状の画素群同士が接触する。この例では、画素群40と画素群42が接触しているため、コンピュータ22は、逆方向トレース処理(
図2C参照)のステップS55でNOと判断し、ステップS59で部分素線長S
rを算出する(逆方向トレースは接触点Ctで終了)。そして、ステップS33〜S36(
図2B参照)の処理を経て、順方向トレース処理(
図2D参照)を開始する。その後、コンピュータ22は、ステップS62でNOと判断し、ステップS69で部分素線長S
fを算出する(順方向トレースは接触点Ctで終了)。続いて、ステップS38〜S40(
図2B参照)の処理を経て、ステップS41でNOと判断し、トレースしたところまでの外側・内側エッジ関数を作成する。このとき、エッジ関数長さL=S
r+S
fである。このため、コンピュータ22はステップS18(
図2A参照)でNOと判断し、ステップS28で当該渦巻きばね30は不良品であると判定する。なお、上記の判定方法の代わりに、画素群Aを特定する処理を設けて、画素群40の逆方向トレース中に画素群Aを構成する画素の座標値を検出した場合は、逆方向トレースを終了する構成としてもよい。同様に、画素群Bを特定する処理を設けて、画素群48(
図10では画素群46)の順方向トレース中に画素群Bを構成する画素の座標値を検出した場合は、順方向トレースを終了する構成としてもよい。
【0055】
上記の形状測定装置10の効果を説明する。隣り合う素線間の隙間(以下、線間隙間とも称する)が不自然な形状になっていると、渦巻きばねは要求性能を満たすことができない。例えば、線間隙間が狭すぎると、素線同士が接触して異音が発生したり、ヒステリシスが増大したり、折損が生じる場合がある。一方、線間隙間が広すぎると、規定されたトルクを確保できない場合がある。従来の検査方法では、このような渦巻きばねであっても、特定の部位の形状が良品の判定基準を満たしていれば良品と判定されてしまうため、検査方法に問題があった。これに対し、本明細書が開示する形状測定装置10では、コンピュータ22が線間隙間関数ρ
1(θ)を算出する。これにより、従来では検査されていなかった線間隙間を検査することが可能となる。このため、渦巻きばね30の形状を適切に測定でき、結果として渦巻きばねの品質検査を適切に行うことが可能となる。
また、渦巻きばねの中には、素線の厚みが一定ではない特殊な形状のものがある(例えば、
図27に示すような、内フック及び外フックだけ素線の厚みが大きい渦巻きばね)。このような渦巻きばねの形状を適切に測定するためには、素線の厚みを測定することが求められる。上記の形状測定装置10では、コンピュータ22が素線厚み関数ρ
2(θ)を算出する。これにより、従来では検査されていなかった素線厚みを検査することが可能となり、渦巻きばねの形状を適切に測定できる。
【0056】
また、上記の形状測定装置10では、線間隙間形状及び/又は素線厚みの良否判定が、予めメモリに記憶された閾値関数(ρ
1min(θ)、ρ
1max(θ)、ρ
2min(θ)、ρ
2max(θ))を基準に行われる。このため、渦巻きばね30の品質を定量的に判定できる。
【0057】
また、上記の形状測定装置10では、コンピュータ22は撮影画像を極座標変換して極座標画像を作成する。線間隙間関数ρ
1(θ)及び/又は素線厚み関数ρ
2(θ)は、極座標画像の素線と背景との境界をトレースすることにより算出される。境界をトレースするアルゴリズムは、画像のノイズに強く、比較的シンプルに構築できる。このため、極座標画像にある程度のノイズが含まれていても境界を正確にトレースできる。また、線間隙間関数ρ
1(θ) 及び/又は素線厚み関数ρ
2(θ)を比較的短時間で算出できる。このため、実施例1のような極座標画像を用いた形状測定方法は、インラインでの検査に適している。
【0058】
次に、変形例1〜変形例4において、実施例1のステップS22、S24の処理の代わりとなる良否判定方法及び定量的評価方法について説明する。なお、以下の変形例では同一の文字を使用する場合がある。変形例ごとに文字の定義がある場合はその定義に従い、特に定義がない場合は共通の定義に従う。
【0059】
(変形例1)
本変形例では、まず、登録工程で、任意の方法により良品と判定された渦巻きばねをN個準備し(例えば、N=300)、実施例1のステップS10〜S20の処理を行って、それぞれの線間隙間関数ρ
1n(θ)(n=1〜N)を算出する。そして、これらの線間隙間関数ρ
1n(θ)の平均μ(θ)及び標準偏差σ(θ)を算出し、これらを用いて以下の数1、数2の判別関数を作成し、当該判別関数をコンピュータ22のメモリに登録する。ここで、以下の数式におけるθ
i(i:0〜m、m:整数)は、s°間隔ごとの角度を表し(即ち、θ
i=θ
0+i・s)、kは任意に設定される定数を表す。
【数1】
【数2】
そして、渦巻きばね検査工程、あるいは製造工程では、測定対象となる渦巻きばね30の線間隙間関数ρ
1(θ)を算出し、メモリに記憶された判別関数を用いて当該関数ρ
1(θ)のD
sを算出する。D
s=1の場合は良品と判定し(ステップS26)、D
s=0の場合は不良品と判定する(ステップS28)。
図11に、線間隙間関数ρ
1(θ)と、平均μ(θ
i)及び標準偏差σ(θ
i)との関係を表すグラフを示す。
図11のグラフでは、θ
0=10°、s=45°、k=5.0に設定されている。
図11のグラフでは、各θ
iにおけるD(θ
i)はいずれも1であるため、D
s=1となり、測定対象の渦巻きばね30は良品と判定される。s及びkの値を小さくするほど良否判定の判定基準が厳しくなる。なお、平均μ(θ)及び標準偏差σ(θ)は、設計図又は設計データから決定されてもよいし、設計データのFEM解析結果などを元に決定されてもよい。
さらに、渦巻きばね30の線間隙間が良品と比べてどれだけ変形しているかは、以下の数3に示すプラス変形度T
r+(θ
i)、及び数4に示すマイナス変形度T
r−(θ
i)を用いて定量的に評価することができる。プラス変形度T
r+(θ
i)は、角度θ
iにおける渦巻きばね30の線間隙間が「良品と比べてどれだけ大きいか」を定量化する尺度である。数4で示すマイナス変形度T
r−(θ
i)は、角度θ
iにおける渦巻きばね30の線間隙間が「良品と比べてどれだけ小さいか」を定量的に評価するための尺度である。
【数3】
【数4】
コンピュータ22は、数3、数4を用いてプラス変形度T
r+(θ
i)、マイナス変形度T
r−(θ
i)を算出し、「渦巻きばね30のどの部分でどれだけ変形が発生しているか」をディスプレイ20に表示する。渦巻きばね製造工程の作業者は、ディスプレイ20に表示された渦巻きばねの変形度T
r+(θ
i)、T
r−(θ
i)を確認し、渦巻きばね成形装置の成形パラメータを修正することにより、渦巻きばね製品の品質を改善することができる。
【0060】
(変形例2)
本変形例では、公知の手法であるマハラノビス田口法を用いて渦巻きばね30の良否を判定する。具体的には、まず、登録工程で、任意の方法により良品と判定された渦巻きばねをN個準備し(例えば、N=300)、それぞれの線間隙間関数ρ
1n(θ)(n=1〜N)を算出する。そして、以下の数5を用いて、θ=θ
i(i:0〜m、m:整数)におけるN個の線間隙間ρ
1n(θ
i)の平均μ(θ
i)及び分散{σ(θ
i)}
2を算出する。ここで、θ
iは、s°間隔ごとの角度を表す(即ち、θ
i=θ
0+i・s)。渦巻きばねの良品形状を登録する工程では、品質管理者が「渦巻きばね形状登録ソフト」を操作し、各々の渦巻きばね品番ごとに算出された平均μ(θ
i)及び標準偏差σ(θ
i)を、コンピュータ22のメモリに記憶させる。
【数5】
次に、以下の数6を用いてN個の線間隙間関数ρ
1n(θ)のそれぞれについて正規化平均隙間X
i,nを算出する。
【数6】
続いて、以下の数7〜数9を用いて相関行列Rを算出する。ここで、kはθ
iの個数(即ち、k=m+1)を表す。また、p、qはn=1〜kのうちの任意の数を示す。
【数7】
【数8】
【数9】
続いて、以下の数10を用いて相関行列Rの逆行列Aを算出する。渦巻きばねの良品形状を登録する工程では、品質管理者が「渦巻きばね形状登録ソフト」を操作し、各々の渦巻きばね品番ごとに算出された逆行列Aをコンピュータ22のメモリに記憶させておく。
【数10】
【0061】
次に、渦巻きばねの検査工程(または製造工程)の処理について説明する。コンピュータ22のメモリには、予め以下の数11、数12の数式が記憶されている。渦巻きばねの検査工程(製造工程)では、測定対象となる渦巻きばね30の線間隙間関数ρ
1(θ)を算出し、以下の数11を用いて線間隙間ρ
1(θ
i)の正規化平均隙間X
iを算出する。続いて、数12の数式に、正規化平均隙間X
i及びメモリに記憶されている逆行列Aを代入して、マハラノビス距離Dを算出する。
【数11】
【数12】
コンピュータ22のメモリには、予めマハラノビス距離Dの閾値が記憶されている。数12を用いてマハラノビス距離Dを算出したら、メモリに記憶されている閾値と比較する。D≦閾値であれば良品と判定し(ステップS26)、D>閾値であれば不良品と判定する(ステップS28)。本変形例の判定方法によると、不良品の判定基準の設定が困難な場合であっても適切に良否判定を行うことができる。
ここで、マハラノビス距離Dは、渦巻きばね30の変形度を定量的に評価する尺度とみなすことができる。コンピュータ22は、変形度Dをディスプレイ20に表示するように構成されていてもよい。この場合、渦巻きばね30の製造工程の作業者は、ディスプレイ20に表示された変形度Dを確認して、渦巻きばね成形装置の成形パラメータを修正することにより、渦巻きばね製品の品質を改善することができる。この構成は、変形例3に適用されてもよい。
【0062】
(変形例3)
本変形例においても、まず、任意の方法により良品と判定された渦巻きばねをN個準備し(例えば、N=300)、それぞれの線間隙間関数ρ
1n(θ)(n=1〜N)を算出する。次に、各線間隙間関数ρ
1n(θ)のFFTスペクトルF
n(i)(i:1〜M)を算出し、以下の数13を用いてN個のFFTスペクトルF
n(i)の平均μ(i)及び分散{σ(i)}
2を算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、各渦巻きばね品番ごとに算出された平均μ(i)及び標準偏差σ(i)をコンピュータ22のメモリに予め記憶させておく。
【数13】
次に、以下の数14を用いてN個の線間隙間関数ρ
1n(θ)のそれぞれについて正規化平均隙間X
i,nを算出する。
【数14】
続いて、変形例2の数7〜数9を用いて相関行列Rを算出し、変形例2の数10を用いて相関行列Rの逆行列Aを算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、各渦巻きばね品番ごとに算出された逆行列Aをコンピュータ22のメモリに予め記憶させておく。
【0063】
コンピュータ22のメモリには、以下の数15及び変形例2の数12と同一の数式が記憶されている。渦巻きばねの検査工程(または製造工程)では、、測定対象となる渦巻きばね30の線間隙間関数ρ
1(θ)を算出し、そのFFTスペクトルF(i)を求め、以下の数15を用いて当該FFTスペクトルF(i)の正規化平均隙間X
iを算出する。ここで、渦巻きばね30が変形している場合は、FFTスペクトルF(i)の低周波成分(i=m
1〜m
2、1≦m
1、m
2<M)に変形の特徴が現れる。このため、本変形例では、i=m
1〜m
2の範囲における正規化平均隙間X
iが算出される。正規化平均隙間X
iを算出したら、数12の数式に、X
i及びメモリに記憶されている逆行列Aを代入して、マハラノビス距離Dを算出する。
【数15】
コンピュータ22のメモリには、予めマハラノビス距離Dの閾値が記憶されている。数12を用いてマハラノビス距離Dを算出したら、メモリに記憶されている閾値と比較する。D≦閾値であれば良品と判定し(ステップS26)、D>閾値であれば不良品と判定する(ステップS28)。
【0064】
(変形例4)
本変形例では、変形例3と同様の方法でN個の良品の渦巻きばねの各線間隙間関数ρ
1n(θ)のFFTスペクトルF
n(i)(i:1〜M)を算出する。渦巻きばねの良品形状を登録する工程では、以下の数16、数17を用いてFFTスペクトルF
n(i)の低周波成分の低周波パワーp
nの平均μと分散σ
2を算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、渦巻きばね品番ごとに算出された平均μ及び標準偏差σをコンピュータ22のメモリに記憶させておく。
【数16】
【数17】
次に、検査工程(または製造工程)では、測定対象となる渦巻きばね30の線間隙間関数ρ
1(θ)を算出し、そのFFTスペクトルF(i)を求め、以下の数18を用いて低周波パワーpを算出する。
【数18】
コンピュータ22のメモリには、予め以下の数19の不等式が記憶されている。ここで、kは任意に設定される定数である。数18を用いて低周波パワーを算出したら、以下の不等式に代入し、不等式が成り立つか否かを判定する。不等式が成り立つ場合は良品と判定し(ステップS26)、不成立の場合は不良品と判定する(ステップS28)。
【数19】
【0065】
(変形例5)
実施例1では、CCDカメラ16により撮影された撮影画像(の二値化画像)を画像変換して極座標画像を作成したが、画像変換の対象は撮影画像に限られず、例えばレーザ変位計などにより測定された測定データであってもよい。本変形例では、レーザ変位計により渦巻きばね30を測定したときの測定データを用いて線間隙間関数ρ
1(θ)及び素線厚み関数ρ
2(θ)を算出する2種類の方法について説明する。
【0066】
(方法1)
本変形例の形状測定装置は、
図1のCCDカメラ16の代わりに、
図13に示すレーザ変位計50を備える。
図13に示すように、レーザ変位計50は、レーザ光を照射する照射部52と、対象物(渦巻きばね30)で反射した反射光を受光する受光面54を有する。レーザ変位計50はx方向に移動可能である。渦巻きばね30は、xy平面上に載置面を有するステージ(図示省略)上に配置されている。ステージはy方向に移動可能である。レーザ変位計50は渦巻きばね30の真上に配置され、その照射部52は下方(z方向)に向かってレーザ光を照射する。
図12は、本変形例の形状測定装置による渦巻きばね30の形状測定の流れを示すフローチャートである。まず、ステップS70において、レーザ変位計50により、渦巻きばね30の形状測定を行う。具体的には、ステージを固定した状態でレーザ変位計50をx方向に移動させて、渦巻きばね30のx方向における一端から他端まで、渦巻きばね30にレーザ光を照射する。この処理を、ステージをy方向に移動させながら繰り返し、渦巻きばね30の全体にレーザ光を照射する。
【0067】
次に、ステップS72では、ステップS70で測定した測定データに基づいて、3次元データを作成する。具体的には、ステージを固定してレーザ光を照射したときの測定データから、
図14に示すような渦巻きばね30の断面データを作成する。この断面データは、y方向に沿って複数個作成される。これらの断面データを再構成して、
図15に示すような3次元データを作成する。なお、このステップS72から後述するステップS86までの処理は、コンピュータ22によって実行される。
【0068】
続いて、ステップS74では、ステップS72で作成した3次元データを極座標変換して、
図16に示すような3次元の極座標データを作成する。具体的には、3次元データから中心軸(例えば重心)を算出し(
図15の破線参照)、中心軸を中心として、3次元データを極座標変換する。
次いで、ステップS76では、ステップS74で作成した3次元の極座標データを所定の角度ごとにrz平面(半径−高さ平面)で切断して、
図17に示すようなrz断面のグラフを作成する。
図17は、θ=60°におけるrz断面のグラフである。続いて、ステップS78では、ステップS76で作成したrz断面のグラフから線間隙間を算出し、線間隙間関数ρ
1(θ)を算出する。例えば、
図17のグラフからは、θ=60°、420°、780°における線間隙間ρ
1(60°)、ρ
1(420°)、ρ
1(780°)が算出される。この処理を各rz断面のグラフに対して行い、得られた線間隙間をつなげて近似することにより、線間隙間関数ρ
1(θ)を算出する。続いて、ステップS80〜S86では、渦巻きばね30の良否判定を行う。これらの処理は実施例1のステップS22〜S28の処理(
図2B参照)と同様である。
【0069】
なお、ステップS78では、線間隙間関数ρ
1(θ)の代わりに、隣り合う素線の芯線間の距離(ピッチ)を表すピッチ関数ρ
3(θ)を算出してもよい。具体的には、ステップS76のrz断面のグラフから芯線(素線の幅方向中央を通る線)を抽出して芯線間の距離を算出することによりピッチ関数ρ
3(θ)を算出してもよい。通常の渦巻きばね30では、素線厚みは内フック32から外フック34にかけて略一定である。ピッチ=線間隙間+素線厚みであるため、素線厚みが略一定であれば、線間隙間関数ρ
1(θ)とピッチ関数ρ
3(θ)の挙動は略同一となる。このため、ピッチ関数ρ
3(θ)に基づいて良否判定する方法も有用である。
【0070】
(方法2)
この方法では、ステップS72までは上記方法1と同様の処理を行う。そして、ステップS72で作成した3次元データを2次元画像に変換する。具体的には、3次元データのz軸の値を画像の濃淡に変換する。即ち、z軸の値が閾値より小さい座標値は濃度値0に変換し、z軸の値が閾値以上の座標値は濃度値1に変換する。これにより、二値化した極座標画像が作成される。その後の処理は、実施例1のステップS16以降の処理(
図2A、
図2B参照)と同様である。
【0071】
なお、変形例5ではレーザ変位計50を用いて形状測定する方法を説明したが、変位計の種類はこれに限られない。例えば、パターン投影式センサ、波長コンフォーカル方式を用いた光学センサ、パルスレーザ型の3D−TOFカメラ、平行光LEDを搭載した変位センサを用いてもよい。即ち、照射光はレーザ光に限られず、マイクロ波、ミリ波、テラヘルツ波などの電波(電磁波)を含む、光全般であってもよい。
また、変形例1〜4の良否判定方法又は定量的評価方法は、変形例5の形状測定方法にも適用し得る。また、後述する実施例2、実施例3及びこれらの変形例にも適用し得る。