(57)【要約】【課題】  渦巻きばねの撮影画像から渦巻きばねの端点を正確に特定することができる技術を提供する。【解決手段】  画像処理装置は、渦巻きばねを撮影した撮影画像を入力する画像入力手段と、入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出手段と、抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出手段と、抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成手段と、作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択手段を有している。【選択図】  図４
2014145626.tif 000002
【特許請求の範囲】
【請求項１】
渦巻状に成形された渦巻きばねの形状を計測する画像処理装置であり、
渦巻きばねを撮影した撮影画像を入力する画像入力手段と、
入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出手段と、
抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出手段と、
抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成手段と、
作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択手段と、
を有する画像処理装置。
【請求項２】
端点ペア選択手段は、作成された端点ペア候補のそれぞれについて、当該端点ペア候補を構成する２つの端点候補の直角度と、これら端点候補を結ぶ輪郭線上の少なくとも一点の直角度を用いて、当該端点ペア候補を評価して１つの端点ペア候補を選択する、請求項１に記載の画像処理装置。
【請求項３】
端点ペア選択手段は、２つの端点候補の直角度と、これら端点候補を結ぶ輪郭線上の最も直角度が低い点の直角度を用いて、当該端点ペア候補を評価する、請求項２に記載の画像処理装置。
【請求項４】
端点ペア選択手段は、さらに、２つの端点候補を結ぶ輪郭線上の各点の直角度が設定値以下となる端点ペア候補の中から１つの端点ペア候補を選択する、請求項１〜３のいずれか一項に記載の画像処理装置。
【請求項５】
端点ペア選択手段は、さらに、２つの端点候補の間の距離が設定範囲内となる端点ペア候補の中から１つの端点ペア候補を選択する、請求項１〜３のいずれか一項に記載の画像処理装置。
【請求項６】
渦巻状に成形された渦巻きばねの形状を計測するための画像処理方法であり、コンピュータに下記の処理、即ち、
渦巻きばねを撮影した撮影画像を入力する画像入力処理と、
入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出処理と、
抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出処理と、
抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成処理と、
作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択処理と、
を実行させる画像処理方法。
【請求項７】
渦巻状に成形された渦巻きばねの形状を計測するためのプログラムであり、コンピュータに下記の処理、即ち、
渦巻きばねを撮影した撮影画像を入力する画像入力処理と、
入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出処理と、
抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出処理と、
抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成処理と、
作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、渦巻きばねの形状を計測する技術を開示する。ここでいう渦巻きばねとは、平面視したときに、渦巻状に成形されたばねを意味する。
【背景技術】
【０００２】
渦巻きばね等の工業製品の品質検査工程では、製品の形状と設計図面に規定された形状との異同を調べ、製品が設計図面のとおりに成形されているか否かが検査される。設計図面に規定された形状とのずれが許容誤差の製品は良品と判定され、設計図面に規定された形状とのずれが許容誤差を超える製品は不良品として廃棄される。渦巻きばねの品質検査工程では、渦巻きばねを撮影し、コンピュータを利用して撮影した画像から渦巻きばねの形状を計測し、計測された渦巻きばねの形状と設計図面に規定された形状との異同を検査する。品質検査を適切に行うためには、撮影した画像から渦巻きばねの形状を精度良く計測する必要がある。このため、従来から画像処理を用いて物体の形状を計測する技術が開発されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２５７９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
渦巻きばねの形状を正確に計測するためには、渦巻きばねの端面を正確に特定する必要がある。すなわち、渦巻きばねは、ばね鋼材を渦巻き状に加工し、加工後のばね鋼材を切断して製造する。このため、渦巻きばねの端部には、ばね鋼材を切断することによる端面（切断面）が形成される。渦巻きばねの端面を正確に特定できないと、渦巻きばねの形状を正確に特定することができないため、渦巻きばねが設計図面の通りに製造できているか否かを確認できない。
【０００５】
ここで、渦巻きばねの端面は、当該端面と渦巻きばねの他の表面とが接続される位置を特定することによって規定される。例えば、渦巻きばねを平面視した撮影画像には、渦巻きばねの端面と外周面と内周面とが輪郭線として現れる。そして、渦巻きばねの端面は、当該端面と外周面とが接続される点（端点）と、当該端面と内周面とが接続される点（端点）によって規定される。したがって、渦巻きばねの端面を特定するには、渦巻きばねの端面の両端の点（２つの端点）を特定する必要がある。
【０００６】
従来の技術では、撮影された画像から渦巻きばねの輪郭線を抽出し、その輪郭線から渦巻きばねの端面の端点を抽出する。具体的には、輪郭線上の点の直角度が極大となる点を抽出し、抽出された複数の端点候補の中から渦巻きばねの中心からの距離を考慮して端点を選択する。ここで、輪郭線上の点の直角度とは、輪郭線上の点の角度が直角である程度を意味し、直角度が極大とは、周囲の点に対してその点が最も直角に近いことを意味している。なお、輪郭線上の点の角度とは、（１）その点と、その点に対して一方側に微小距離だけ離れて隣接する輪郭線上の点を結んだ直線と、（２）その点と、その点に対して他方側に微小距離だけ離れて隣接する輪郭線上の点を結んだ直線によって形成される角度をいう。
【０００７】
しかしながら、渦巻きばねの端面（切断面）は、切断時に発生するバリ等によって平坦となっておらず、また、製造時に粉塵等が表面に付着することもある。このため、端点以外の点が端点候補として抽出されることがある。従来の技術では、渦巻きばねの中心からの距離のみを考慮して端点候補の中から端点を特定するため、端点以外の点を端点と誤認定する場合があった。本明細書は、渦巻きばねの撮影画像から渦巻きばねの端面の端点を正確に特定することができる技術を開示する。
【課題を解決するための手段】
【０００８】
本明細書は、渦巻状に成形された渦巻きばねの形状を計測する画像処理装置を開示する。この画像処理装置は、渦巻きばねを撮影した撮影画像を入力する画像入力手段と、入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出手段と、抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出手段と、抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成手段と、作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択手段と、を有する。
【０００９】
この画像処理装置では、渦巻きばねの撮影画像に対して輪郭線を抽出し、渦巻きばねの少なくとも一方の端面について、抽出した輪郭線から端点候補を複数抽出する。そして、抽出された複数の端点候補から２点を選択して端点ペア候補を複数作成し、それら作成された複数の端点ペア候補の中から１つの端点ペア候補を選択する。端点ペア候補を構成する２つの端点候補の組合せが端面の両端である可能性を総合的に評価できるため、端点を１点ずつ評価する場合と比較して端面の端点を正確に特定することができる。
【００１０】
また、本明細書は、渦巻きばねの形状を計測するための画像処理方法を開示する。この画像処理方法は、コンピュータに、渦巻きばねを撮影した撮影画像を入力する画像入力処理と、入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出処理と、抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出処理と、抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成処理と、作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択処理を実行させる。この方法により、渦巻きばねの端面の端点を正確に特定することができる。
【００１１】
本明細書はさらに、渦巻きばねの形状を計測するためのプログラムを開示する。このプログラムは、コンピュータに、渦巻きばねを撮影した撮影画像を入力する画像入力処理と、入力された撮影画像から渦巻きばねの輪郭線を抽出する輪郭線抽出処理と、抽出された輪郭線から渦巻きばねの少なくとも一方の端面の端点候補を複数抽出する端点候補抽出処理と、抽出された複数の端点候補から選択された２つの端点候補によって構成される端点ペア候補を複数作成する端点ペア候補作成処理と、作成された複数の端点ペア候補の中から１つの端点ペア候補を渦巻きばねの少なくとも一方の端面の２つの端点として選択する端点ペア選択処理を実行させる。このプログラムにより、コンピュータを用いて、渦巻きばねの撮影画像から渦巻きばねの端面の端点を正確に特定することができる。
【図面の簡単な説明】
【００１２】
【図１】画像処理装置の構成を示す図。
【図２】画像処理装置による画像処理の流れを示すフローチャート。
【図３】フック領域を特定する処理の流れを示すフローチャート。
【図４】端点を特定する処理の流れを示すフローチャート。
【図５】渦巻きばねの撮影画像を示す図。
【図６】渦巻きばねの撮影画像から抽出された輪郭線を示す図。
【図７ａ】輪郭線を極座標変換することで得られた角座標値列のグラフ。
【図７ｂ】図７ａのグラフの不連続点を接続することで得られる角座標値列のグラフ。
【図８】特定された内フック領域を拡大して示す図。
【図９】特定された外フック領域を拡大して示す図。
【図１０】特定された外フック領域をトリミングする処理を説明するための図。
【図１１】トリミングされた外フック領域を拡大して示す図。
【図１２】外フック端点を特定する処理を説明するための図。
【図１３】直角度関数の一例を示す図。
【図１４】端点近傍における直角度関数を拡大して示す図。
【図１５】直角度関数を２つのガウス関数で近似して評価する方法を説明するための図。
【図１６】直角度関数を２つのガウス関数で近似した一例を示す図。
【発明を実施するための最良の形態】
【００１３】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に記載する技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。
【００１４】
（特徴１）  本明細書に開示する画像処理装置では、端点ペア選択手段は、作成された端点ペア候補のそれぞれについて、当該端点ペア候補を構成する２つの端点候補の直角度と、これら端点候補を結ぶ輪郭線上の少なくとも一点の直角度を用いて、当該端点ペア候補を評価して１つの端点ペア候補を選択してもよい。渦巻きばねの端面においては、端点では直角度が大きくなり（すなわち、輪郭線の角度が直角に近い値となり）、端点の間の点では直角度が小さくなる（すなわち、輪郭線の角度が１８０°に近い値となる）。したがって、端点ペア候補の２点の直角度と、これら端点候補を結ぶ輪郭線上の点の直角度とを考慮することで、渦巻きばねの端点か否かを総合的に判定することができる。
【００１５】
（特徴２）  本明細書に開示する画像処理装置では、端点ペア選択手段は、２つの端点候補の直角度と、これら端点候補を結ぶ輪郭線上の最も直角度が低い点の直角度を用いて、当該端点ペア候補を評価してもよい。このような構成によると、２つの端点候補の間の最も直角度が低い点の直角度を用いることで、２つの端点候補の間の平坦度を評価でき、渦巻きばねの端点か否かを好適に判定することができる。
【００１６】
（特徴３）  本明細書に開示する画像処理装置では、端点ペア選択手段は、さらに、２つの端点候補を結ぶ輪郭線上の各点の直角度が設定値以下となる端点ペア候補の中から１つの端点ペア候補を選択してもよい。このような構成によると、２つの端点候補の間に直角度の高い点がある端点候補ペアが除外され、間違った端点ペア候補が選択されることを防止することができる。
【００１７】
（特徴４）  本明細書に開示する画像処理装置では、端点ペア選択手段は、さらに、２つの端点候補の間の距離が設定範囲内となる端点ペア候補の中から１つの端点ペア候補を選択してもよい。このような構成によると、２つの端点候補の距離がばね鋼材の板厚からかけ離れている端点ペア候補が選択されることを防止することができる。
【実施例１】
【００１８】
図１に示すように、本実施例の画像処理装置１０は、渦巻きばね３０を撮影し、撮影した画像から渦巻きばね３０の輪郭線を抽出し、抽出した輪郭線から端点（本実施例では、フック端点ともいう）を特定する装置である。画像処理装置１０は、ステージ１２と、ステージ１２上に配置された照明器１４と、ステージ１２に固定されているＣＣＤカメラ１６と、ＣＣＤカメラ１６に通信線１８を介して接続されているコンピュータ２２と、コンピュータ２２に接続されているディスプレイ２０を備えている。
【００１９】
照明器１４は、面光源であり、その発光面上に渦巻きばね３０が載置される。ＣＣＤカメラ１６は、照明器１４上に配置されており、照明器１４上に載置された渦巻きばね３０を撮影する。即ち、渦巻きばね３０は照明器１４によって下方から照明され、照明器１４の透過光（渦巻きばね３０の影）がＣＣＤカメラ１６によって撮影される。なお、照明器１４は、本実施例のような透過照明に限定されず、渦巻きばね３０を上方から照明するものでもよい。この場合、渦巻きばね３０が全周方向から均等に照明されるように、複数の照明器やリング型の照明器を用いることが好ましい。
【００２０】
ＣＣＤカメラ１６が撮影した画像データは、通信線１８を介してコンピュータ２２に入力される。コンピュータ２２には、後述する各種画像処理を実行するためのプログラムが記憶されている。コンピュータ２２は、ＣＣＤカメラ１６が撮影した撮影画像の画像データを処理し、渦巻きばね３０の輪郭線画像を作成し、その輪郭線画像からフック端点を特定する。コンピュータ２２は、渦巻きばね３０の撮影画像、解析結果等を、ディスプレイ２０に表示する。
【００２１】
図２は、画像処理装置１０による渦巻きばね３０の画像処理の流れを示すフローチャートである。図３は、図２のフローチャートに示すステップＳ１８のフック領域の特定処理である。図４は、ステップＳ２０のフック端点算出処理の流れを示すフローチャートである。画像処理装置１０は、図２、図３、図４に示す工程、処理を経て、渦巻きばね３０のフック端点を特定する。以下、図２、図３、図４に示すフローチャートに沿って、画像処理装置１０による処理の流れを説明する。
【００２２】
先ず、図２のステップＳ１０において、ＣＣＤカメラ１６により、渦巻きばね３０の撮影を行う。ＣＣＤカメラ１６により撮影された撮影画像は、コンピュータ２２に入力される。入力される撮影画像は、例えば、最も黒い画素の濃度値を「２５５」とし、最も白い画素の濃度値を「０」とする２５６階調の画像とすることができる。図５に、渦巻きばね３０の撮影画像を例示する。図５に示すように、渦巻きばね３０は、内フック３２から外フック３４まで、渦巻状に伸びている。撮影画像は、画素（ｘ，ｙ）毎に濃度値を有する濃度値画像である。
【００２３】
次に、図２のステップＳ１２では、ステップＳ１０で撮影された撮影画像を二値化する。すなわち、入力された撮影画像の各画素（ｘ，ｙ）に対して、濃度値が予め設定された設定値以上となる場合は「１」とし、濃度値が予め設定された設定値未満となる場合は「０」とする。これによって、渦巻きばね３０に対応する部分の画素群が濃度値「１」となり、それ以外の画素群が濃度値「０」となる。なお、ＣＣＤカメラ１６により撮影された画像はノイズを含むため、二値化画像もノイズを含んでいる。このため、渦巻きばね３０に対応しない部分の画素にも濃度値「１」となるものが存在する。なお、このステップＳ１２から後述するＳ２０までの処理は、コンピュータ２２によって実行される。
【００２４】
次に、図２のステップＳ１４では、ステップＳ１２で得られた二値化画像を用いて、渦巻きばね３０の重心（ｃｘ，ｃｙ）を算出する。具体的には、濃度値が「１」となる画素群（すなわち、渦巻きばね３０に対応する部分の画素群）の座標値（ｘ，ｙ）から、その重心（ｃｘ，ｃｙ）を計算する。図５に示す例では、渦巻きばね３０の略中央に重心（ｃｘ，ｃｙ）が位置している。
【００２５】
次に、図２のステップＳ１６では、ステップＳ１２で得られた二値化画像から輪郭線を抽出する。二値化画像から輪郭線を抽出する処理は、公知の方法（例えば、長谷川純一，輿水大和，中山晶，横井茂樹著，「画像処理の基本技法＜技術入門編＞」，技術評論社，p.70−73）を用いることができる。図６に、渦巻きばね３０の二値化画像から抽出された輪郭線の一例が示されている。
【００２６】
なお、本実施例では、ステップＳ１６で抽出される輪郭線は、輪郭線要素番号ｉ（ｉ＝０〜ｎ）と、その輪郭線要素番号ｉに対応する画素の座標値（ｘｉ，ｙｉ）で表される。輪郭線要素番号ｉは、輪郭線上の画素に付与された番号であり、以下の規則に従って付与される。すなわち、輪郭線上に設定された１つの画素を原点として、その画素に輪郭線要素番号ｉ＝０を付与する。原点は、輪郭線上の任意の点に設定することができる。次いで、その原点と隣接する画素に輪郭線要素番号１を付与する。ここで、原点となる画素には、輪郭線上を時計回りに移動する方向に隣接する画素と、反時計回りに移動する方向に隣接する画素の２通りがある。本実施例では、原点と隣接する画素のうち、反時計回りに移動する方向に隣接する画素に輪郭線要素番号１を付与する。次いで、輪郭線要素番号１の画素に隣接する画素に輪郭線要素番号２を付与し、以下、同様の手順で輪郭線要素番号を付与する。これによって、輪郭線を構成する全ての画素に輪郭線要素番号が付与される。上述した説明から明らかなように、輪郭線要素番号ｉの画素から輪郭線要素番号ｎの画素まで順に移動すると、輪郭線上を一方向に一巡することとなる。なお、本明細書では、輪郭線要素番号０からｎまでの座標値列（ｘ０，ｙ０），（ｘ２，ｙ２）・・（ｘｎ，ｙｎ）を輪郭線系列（ｘｉ，ｙｉ）（ｉ＝０〜ｎ）という。
【００２７】
次に、図２のステップＳ１７では、ステップＳ１６で得られた輪郭線系列（ｘｉ，ｙｉ）（ｉ＝０〜ｎ）を極座標による輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）に変換する。すなわち、図６に示すように、ＸＹ座標系による輪郭線系列（ｘｉ，ｙｉ）を、ステップＳ１４で算出された重心（ｃｘ，ｃｙ）を原点として、動径ｒｉと偏角θｉにより表す。図６に示すように、動径ｒｉは、原点（ｃｘ，ｃｙ）と輪郭線系列（ｘｉ，ｙｉ）の距離である。偏角θｉは、原点（ｃｘ，ｃｙ）と輪郭線系列（ｘｉ，ｙｉ）とを結んだ直線と、ｘ軸とのなす角である。したがって、ステップＳ１７によって、ｘｙ座標系の輪郭線系列（ｃｘ，ｃｙ）（ｉ＝０〜ｎ）は、極座標系の輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）に変換される。ここで、極座標系の輪郭線系列（ｒｉ，θｉ）から得られる角座標値列θｉ（ｉ＝０〜ｎ）をグラフ化すると、図７ａに示すグラフとなる。図７ａに示すグラフでは、縦軸が偏角θｉであり、横軸が輪郭線要素番号ｉとなっている。図７ａから明らかなように、角座標値列θｉは−１８０°〜＋１８０°の範囲の数値を有し、−１８０°と＋１８０°において不連続となっている。
【００２８】
次に、図２のステップＳ１８では、ステップＳ１７で極座標変換された輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）から、フック領域を特定する。この処理について、図３に示すフローチャ−トに沿って説明する。
【００２９】
先ず、図３のステップＳ３４，Ｓ３６では、図２のステップＳ１７で作成した極座標系の輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）から、内フック領域と外フック領域を抽出する。本実施例では、輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）のうち、角座標値列θｉ（ｉ＝０〜ｎ）の特性を利用して、内フック領域Ａと外フック領域Ｂを特定する。
【００３０】
なお、図７ａに示すグラフでは、角座標値列θｉ（ｉ＝０〜ｎ）が−１８０°〜＋１８０°の範囲とされ、角座標値列θｉには不連続点が存在する。ステップＳ３４以降の処理は、図７ａに示すグラフの不連続点をつなぎ合わせた角座標値列（図７ｂ）を用いて行ってもよいし、不連続点を残した角座標値列（図７ａ）を用いて行ってもよい。
【００３１】
上述したことから明らかなように、輪郭線系列（ｒｉ，θｉ）（ｉ＝０〜ｎ）は、輪郭線上を原点から反時計回りに移動を開始し、輪郭線を一巡することで輪郭線要素番号が付与されている。このため、渦巻きばねを内側から見て右巻きにセットした場合では、原点から内フック端点（又は外フック端点）までは反時計回りに移動しながら輪郭線要素番号が付与され、内フック端点（又は外フック端点）から外フック端点（又は内フック端点）までは時計回りに移動しながら輪郭線要素番号が付与され、外フック端点（又は内フック端点）から原点までは反時計回りに移動しながら輪郭線要素番号が付与される。したがって、不連続点を接続したグラフ（図７ｂ）では、原点から内フック端点（又は外フック端点）までは角座標値列θｉ（ｉ＝０〜ｎ）は単調減少（又は単調増加）し、内フック端点（又は外フック端点）から外フック端点（又は内フック端点）までは角座標値列θｉ（ｉ＝０〜ｎ）は単調増加（又は単調減少）し、外フック端点（又は内フック端点）から原点までは角座標値列θｉ（ｉ＝０〜ｎ）は単調減少（又は単調増加）する。したがって、図７ｂに示すように、角座標値列θｉ（ｉ＝０〜ｎ）の関数は、内フック端点の近傍で極小値をとり、外フック端点の近傍で極大値をとる。
【００３２】
そこで、ステップＳ３４では、角座標値列θｉ（ｉ＝０〜ｎ）が極小値となる部分を含む領域Ａを内フック領域として特定する。例えば、図７ａに示すように、内フック領域Ａとして、極小値に隣接して角座標値θａ１が１８０°となる輪郭線要素番号ａ１から角座標値θａ２が１８０°となる輪郭線要素番号ａ２までの領域を特定し、この領域（ａ１〜ａ２）内に極小値が含まれるようにする。図８には、特定された内フック領域Ａの輪郭線系列が示されている。図８より明らかなように、特定された内フック領域Ａに内フック端点が含まれている。
【００３３】
また、ステップＳ３６では、角座標値列θｉ（ｉ＝０〜ｎ）が極大値となる部分を含む領域Ｂを外フック領域として特定する。例えば、図７ａに示すように、外フック領域Ｂとして、極大値に隣接して角座標値θｂ１が−１８０°となる輪郭線要素番号ｂ１から角座標値θｂ２が−１８０°となる輪郭線要素番号ｂ２までの領域を特定し、この領域（ｂ１〜ｂ２）内に極大値が含まれるようにする。図９には、特定された外フック領域Ｂの輪郭線系列が示されている。図９より明らかなように、特定された外フック領域Ｂに外フック端点が含まれている。
【００３４】
なお、図８と図９の比較から明らかなように、外フック領域Ｂは、内フック領域Ａに比較して広い領域となっている。すなわち、特定した外フック領域Ｂ（ｒｋ，θｋ）（ｋ＝ｂ１〜ｂ２）が広い場合には、図１０に示すように、外フック領域Ｂのトリミングを行うことが好ましい。図１０に示す例では、極大値ｉｍａｘから角度α（例えば、４０°）の角度範囲を新しい外フック領域Ｂ’（ｒｋ，θｋ）（ｋ＝ｂ１’〜ｂ２’）として新たに切り出している。図１１は、トリミング後の外フック領域Ｂ’を示している。図１１より明らかなように、トリミング後の外フック領域Ｂ’は、トリミング前の外フック領域Ｂと比較して適切な大きさに修正されている。これによって、次に行われるフック端点の算出処理（図２のステップＳ２０の処理）の計算量を少なくすることができる。
【００３５】
また、図７ｂに示すグラフでは、内フック領域Ａで極小値をとり、外フック領域Ｂで極大値をとったが、渦巻きばねの巻き方向が逆となれば、当然、内フック領域で極大値をとり、外フック領域で極小値をとることとなる。なお、渦巻きばねの輪郭線抽出からフック領域の特定処理（Ｓ１６〜Ｓ１８）には、他の公知の技術を用いてもよい。例えば、特開２００９−２５７９５０号公報に開示の技術を用いて、渦巻きばね画像より内フック画像と外フック画像を切り出し、切り出したフック画像に対して輪郭線抽出を行ってもよい。
【００３６】
次に、図２のステップＳ２０に戻ると、ステップＳ１８で特定した内フック領域Ａ（ｘｋ，ｙｋ）（ｋ＝ａ１〜ａ２）から内フック端点（ｘａｃ，ｙａｃ）を特定し、また、ステップＳ１８で特定した外フック領域Ｂ（ｘｋ，ｙｋ）（ｋ＝ｂ１’〜ｂ２’）から外フック端点（ｘｂｃ，ｙｂｃ）を特定する。ここで、内フック領域Ａから内フック端点を特定する処理と、外フック領域Ｂから外フック端点を特定する処理は、対象とする領域が異なるだけで同一の処理となる。このため、以下の説明では、内フック領域Ａと外フック領域Ｂとを区別することなくフック領域とし、また、内フック端点と外フック端点とを区別することなくフック端点として説明する。
【００３７】
図４は、フック領域からフック端点を特定する処理の流れを示すフローチャートである。まず、図４のステップＳ４２では、特定したフック領域（ｘｋ，ｙｋ）によって表される輪郭線から端点候補を抽出する。すなわち、渦巻きばね３０は、渦巻き状に加工したばね鋼材を切断して製造するため、その端面では、輪郭線が略９０°に屈曲（直交）している。しかしながら、ばね鋼材を切断する時に発生するバリ等によって端面が平坦とはならないことがあり、また、製造時に粉塵等がばね鋼材の表面に付着していることもある。このため、フック領域の輪郭線には、端点以外でも屈曲する点（端点らしくみえる点）が存在する。そこで、ステップＳ４２では、特定したフック領域（ｘｋ，ｙｋ）の輪郭線からフック端点候補（端点らしくみえる点）を抽出する。
【００３８】
具体的な手順について、外フック領域Ｂ’（ｘｋ，ｙｋ）（ｋ＝ｂ１’〜ｂ２’）から端点候補を抽出する場合を例として説明する。図１２に示すように、外フック領域Ｂ’（ｘｋ，ｙｋ）（ｋ＝ｂ１’〜ｂ２’）内には外フック端点が２つ存在し、これら２つの外フック端点では輪郭線が略直交している。したがって、まず、特定した輪郭線系列Ｂ’（ｘｋ，ｙｋ）（ｋ＝ｂ１’〜ｂ２’）内から、輪郭線が略直交する点を抽出する。この処理は、例えば、外フック領域Ｂ’を構成する各輪郭線系列Ｂ’（ｘｋ，ｙｋ）（ｋ＝ｂ１’〜ｂ２’）のそれぞれに対して、図１２に示すようにベクトルｐ（ｋ）とｍ（ｋ）を設定し、これらのベクトルｐ（ｋ）とｍ（ｋ）が直交するか否かで抽出することができる。ｐ（ｋ）、ｍ（ｋ）は、例えば、次の式（１）で表すことができる。
【００３９】
【数１】
2014145626.tif 000003
【００４０】
上記の式（１）から明らかなように、ｍ（ｋ）は、輪郭線上の点（ｘｋ，ｙｋ）からＮ画素だけ前の輪郭線上の各点までの輪郭線系列（ｘｋ−Ｎ，ｙｋ−Ｎ），（ｘｋ−（Ｎ―１），ｙｋ−（Ｎ―１）），・・，（ｘｋ，ｙｋ）が向いている方向を平均したものである。また、ｐ（ｋ）は、輪郭線上の点（ｘｋ，ｙｋ）からＮ画素だけ後ろの輪郭線上の各点までの輪郭線列（ｘｋ，ｙｋ），（ｘｋ＋１，ｙｋ＋１），・・，（ｘｋ＋Ｎ，ｙｋ＋Ｎ）が向いている方向を平均したものである。なお、本実施例では、ベクトルｍ（ｋ）、ｐ（ｋ）を算出するために０〜Ｎ画素の範囲を用いた。ここで、設定値Ｎは、ステップＳ１０で撮影された画像内における、渦巻きばね３０の素線の板厚に応じて設定することが好ましい。例えば、撮影された画像内において、渦巻きばね３０の素線の板厚が約Ｚ画素となる場合は、設定値ＮをＺ／２とすることができる。このように、撮影された画像内において、渦巻きばね３０の板厚が何画素分の長さに相当するかで、ｍ（ｋ）及びｐ（ｋ）を算出する画素数を設定することが好ましい。
【００４１】
上述したように、ベクトルｍ（ｋ）とベクトルｐ（ｋ）を算出すると、次に、ベクトルｐ（ｋ）とベクトルｍ（ｋ）が直交するか否かを判定する。ベクトルｐ（ｋ）とベクトルｍ（ｋ）が直交するか否かを判定するには、例えば、ベクトルｐ（ｋ）とベクトルｍ（ｋ）から算出されるｃｏｓθｋを用いることができる（下記の式（２）参照）。ここで、θｋは、ベクトルｐ（ｋ）とベクトルｍ（ｋ）のなす角度である。
【００４２】
【数２】
2014145626.tif 000004
【００４３】
ベクトルｍ（ｋ）とベクトルｐ（ｋ）が略直交すると、θｋ≒９０°となり、ｃｏｓθｋ≒０となる。したがって、ｃｏｓθｋ≒０となる点を探索することで、輪郭線系列からフック端点候補を抽出することができる。ここで、ｃｏｓθｋは、−１〜１の範囲の数値をとり、θｋが９０°のときにｃｏｓθｋが最大又は最小となるわけではない。このため、本実施例では、θｋが９０°のときに最大値又は最小値をとる関数を導入し、フック端点候補の抽出を容易化する。例えば、θｋが９０°のときに最大値をとる関数としては、下記の式（３）の評価関数Ｖ（ｋ）を導入することができ、また、θｋが９０°のときに最小値をとる関数としては、下記の式（４）の評価関数Ｖ（ｋ）を導入することができる。なお、図１３は、式（３）の評価関数Ｖ（ｋ）を示している。図１３から明らかなように、評価関数Ｖ（ｋ）は、フック端点において極大値をとっている。
【００４４】
【数３】
2014145626.tif 000005
【００４５】
【数４】
2014145626.tif 000006
【００４６】
上記の式（３）又は式（４）を用いることで、輪郭線上の点が端点候補か否か（すなわち、直角度が高いか否か）を評価することができる。したがって、上記の式（３）又は式（４）で算出される値が「直角度」の一例に相当する。
【００４７】
なお、上記の式（３）を用いる場合、例えば、下記の条件（ａ），（ｂ）を満足する点を、端点候補として抽出することができる。すなわち、（ａ）評価関数Ｖ（ｋ）が極大値をとり（Ｖ（ｋ−１）＜Ｖ（ｋ）＞Ｖ（ｋ＋１））、（ｂ）評価関数Ｖ（ｋ）が閾値ｐ以上（ｐは０〜１の間で適宜設定）を満足する点を抽出する。これによって、輪郭線を構成する点のうち直角度が高い点が端点候補（ｘｐ１，ｙｐ０），・・（ｘｐｍ，ｙｐｍ）として選択される。
【００４８】
一方、上記の式（４）を用いる場合、例えば、下記の条件（ｃ），（ｄ）を満足する点を、端点候補として抽出することができる。すなわち、（ｃ）評価関数Ｖ（ｋ）が極小値をとり（Ｖ（ｋ−１）＞Ｖ（ｋ）＜Ｖ（ｋ＋１））、（ｂ）評価関数Ｖ（ｋ）が閾値ｐ以下（ｐは０〜１の間で適宜設定）を満足する点を抽出する。これによっても、輪郭線上の点のうち直角度が高い点が端点候補（ｘｐ０，ｙｐ０），・・（ｘｐｍ，ｙｐｍ）として選択される。
【００４９】
図４のステップＳ４２で端点候補（ｘｐ１，ｙｐ０），・・（ｘｐｍ，ｙｐｍ）が抽出されると、それら端点候補の中から２点を選択して端点ペア候補を作成する（図４のステップＳ４４）。すなわち、全ての端点候補（ｘｐ１，ｙｐ０），・・（ｘｐｍ，ｙｐｍ）から考え得る全ての組合せを、端点ペア候補として作成する。例えば、端点候補として、３つの点（ｘｐ０，ｙｐ０），（ｘｐ１，ｙｐ１），（ｘｐ２，ｙｐ２）が抽出された場合は、｛（ｘｐ０，ｙｐ０），（ｘｐ１，ｙｐ１）｝の端点ペア候補と、｛（ｘｐ０，ｙｐ０），（ｘｐ２，ｙｐ２）｝の端点ペア候補と、｛（ｘｐ１，ｙｐ１），（ｘｐ２，ｙｐ２）｝の端点ペア候補を作成する。
【００５０】
ステップＳ４６では、ステップＳ４４で作成した複数の端点ペア候補の中から１つの端点ペア候補を選択する。そして、ステップＳ４８で、選択した端点ペア候補の２点の距離が設定値未満となるか否かを判断する。すなわち、端点ペア候補の２点の距離が、渦巻きばね３０の板厚に比して大きすぎる場合、その端点ペア候補がフック端点である可能性は低い。このため、端点ペア候補の２点の距離を利用して、複数の端点ペア候補の中から正しい組合せのペアを絞り込む。なお、端点ペア候補の２点の距離を利用する絞込みは、端点ペア候補の２点の距離が設定された数値範囲内にあるか否かで判断してもよい（すなわち、上限値と下限値を設定してもよい）。
【００５１】
選択した端点ペア候補の２点の距離が設定値を超えると（ステップＳ４８でＮＯ）、ステップＳ５０をスキップして、ステップＳ５２に進む。したがって、正しい端点のペアではないと判断された端点ペア候補については、ステップＳ５０の処理が行われない。一方、選択した端点ペア候補の２点の距離が設定値未満であると（ステップＳ４８でＹＥＳ）、端点ペア候補の評価値を算出する（ステップＳ５０）。すなわち、ステップＳ４６で選択された端点ペア候補が正しい端点の組合せであるか否かを評価する評価値を算出する。この評価値は、例えば、上述した直角度を表す評価関数Ｖ（ｋ）を利用した端点ペア評価関数Ｄ（ａｊ，ｂｊ）（ａｊ，ｂｊは端点候補）を用いて算出することができる。上記の式（３）に示す評価関数Ｖ（ｋ）を用いる場合、例えば、下記の式（５）に示す評価関数Ｄ（ａｊ，ｂｊ）を用いることができる。
【００５２】
【数５】
2014145626.tif 000007
【００５３】
ここで、Ｖ（ａｊ）は、端点候補ａｊ（ｘａｊ，ｙａｊ）の直角度を表す評価値（以下、単に直角度評価値という）であり、Ｖ（ｂｊ）は、端点候補ｂｊ（ｘｂｊ，ｙｂｊ）の直角度評価値であり、Ｖ（ｋｍｉｎ）は、端点候補ａｊと端点候補ｂｊの間に位置する各点の直角度評価値のうち最小値となる値である。したがって、Ｄ（ａｊ，ｂｊ）は、図１４に示すように、端点候補ａｊの直角度評価値Ｖ（ａｊ）から最小値Ｖ（ｋｍｉｎ）を減算した値と、端点候補ｂｊの直角度評価値Ｖ（ｂｊ）から最小値Ｖ（ｋｍｉｎ）を減算した値との和となる。したがって、仮にバリや粉塵等によってできた端点候補の直角度が高くても、これらの端点候補ａｊ，ｂｊの間に位置する点は平面度が高くはならない（すなわち、直角度は低くはならない）。このため、上記の式（５）の端点ペア評価関数Ｄ（ａｊ，ｂｊ）を用いることで、たまたま直角度が高い端点候補の組合せを、正しい端点の組合せとして選択することを防止することができる。
【００５４】
なお、上記の式（４）に示す評価関数Ｖ（ｋ）を用いる場合、例えば、下記の式（６）に示す評価関数Ｄ（ａｊ，ｂｊ）を用いることができる。
【００５５】
【数６】
2014145626.tif 000008
【００５６】
上記の式（４）に示す評価関数Ｖ（ｋ）では、最小値となるときに直角度が最も高い。このため、式（６）の評価関数Ｄ（ａｊ，ｂｊ）では、最大値Ｖ（ｋmax）から端点候補ａｊの直角度評価値Ｖ（ａｊ）を減算した値と、最大値Ｖ（ｋmax）から端点候補ｂｊの直角度評価値Ｖ（ｂｊ）を減算した値との和を評価値として用いている。
【００５７】
なお、端点ペア候補を評価する評価関数としては、上記のもの以外にも種々の態様を採ることができる。例えば、上記の式（３）に示す評価関数Ｖ（ｋ）を用いる場合は、Ｄ（ａｊ，ｂｊ）＝（Ｖ（ａｊ）−Ｖ（ｋｍｉｎ））２＋（Ｖ（ｂｊ）−Ｖ（ｋｍｉｎ））２や、Ｄ（ａｊ，ｂｊ）＝｜Ｖ（ａｊ）−Ｖ（ｋｍｉｎ）｜＋｜Ｖ（ｂｊ）−Ｖ（ｋｍｉｎ）｜を用いてもよい。なお、上記の式（４）に示す評価関数Ｖ（ｋ）を用いる場合も、上記と同様にアレンジすることができる。
【００５８】
図４のステップＳ５２では、ステップＳ４４で作成した全ての端点ペア候補についてステップＳ４６〜Ｓ５０の処理を実行したか否かが判定される。そして、全ての端点ペア候補についてステップＳ４６〜Ｓ５０の処理を実行していない場合（ステップＳ５２でＮＯ）は、ステップＳ４６に戻って、ステップＳ４６からの処理を実行する。これによって、ステップＳ４４で作成された全ての端点ペア候補のそれぞれについて、ステップＳ４８の距離による判断と、評価関数（ａｊ，ｂｊ）による数値が算出される。
【００５９】
一方、全ての端点ペア候補についてステップＳ４６〜Ｓ５０の処理を実行している場合（ステップＳ５２でＹＥＳ）は、ステップＳ５０の評価関数（ａｊ，ｂｊ）による数値が最大となった端点ペア候補が、渦巻きばね３０の端点として選択される。これによって、渦巻きばね３０の端点が特定され、その後の処理が実行される。その後の処理としては、例えば、撮影された画像から得られた輪郭線画像を細線化して、渦巻きばね３０の芯線化画像を作成する処理等が挙げられる。この場合には、作成された渦巻きばね３０の芯線化画像がディスプレイ２０に表示される。また、本明細書に開示の端点抽出技術は、例えば、特開２００９−２５７９５０号公報に開示された渦巻きばね検査装置に適用することもできる。本明細書に開示の技術によって抽出された端点情報を用いて、渦巻きばねの各部の寸法を算出することもできる。
【００６０】
上述したように、本実施例の画像処理装置１０では、撮影された画像から渦巻きばね３０の輪郭線系列（ｘｉ，ｙｉ）（ｉ＝０〜ｎ）を抽出し、その抽出した輪郭線系列から端点候補を抽出する。そして、抽出された端点候補から端点ペア候補を作成し、作成した端点ペア候補のそれぞれについて総合的に評価し、渦巻きばね３０の端点を特定する。このため、渦巻きばね３０の端面にバリが生じていたり、渦巻きばね３０の表面に粉塵等が付着していたりしても、渦巻きばね３０の端点（すなわち、端面）を適切に特定することができる。このため、渦巻きばね３０の形状を正確に計測することができる。
【００６１】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００６２】
例えば、上述した実施例では、直角度を評価する評価関数Ｖ（ｋ）にθｋを変数とする三角関数を用いたが、本明細書に開示の技術は、このような例に限られない。例えば、図１５に示すように、直角度を評価する評価関数Ｖ（ｋ）をガウス関数で近似した評価関数を導入してもよい。すなわち、図１６に示すように、上図に示される評価関数Ｖ（ｋ）の２つのピークをガウス関数で近似し、それら２つのガウス関数の和を直角度を評価する評価関数としてもよい。なお、直角度を評価する評価関数が得られれば、それ以降の処理は、上述した実施例と同様に行うことができる。
【００６３】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は、複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００６４】
１０：画像処理装置
１２：ステージ
１４：照明器
１６：ＣＣＤカメラ
１８：通信線
２０：ディスプレイ
２２：コンピュータ
３０：渦巻きばね
【図１】
2014145626.tif 000009
【図２】
2014145626.tif 000010
【図３】
2014145626.tif 000011
【図４】
2014145626.tif 000012
【図５】
2014145626.tif 000013
【図６】
2014145626.tif 000014
【図７ａ】
2014145626.tif 000015
【図７ｂ】
2014145626.tif 000016
【図８】
2014145626.tif 000017
【図９】
2014145626.tif 000018
【図１０】
2014145626.tif 000019
【図１１】
2014145626.tif 000020
【図１２】
2014145626.tif 000021
【図１３】
2014145626.tif 000022
【図１４】
2014145626.tif 000023
【図１５】
2014145626.tif 000024
【図１６】
2014145626.tif 000025