(57)【特許請求の範囲】
【請求項１】
渦巻状に成形された渦巻きばねの形状を測定する形状測定装置であり、
渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを入力する入力手段と、
入力された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つを算出する関数算出手段と、
を備える形状測定装置。
【請求項２】
予め定められた基準関数又は基準パラメータの少なくとも１つを記憶する記憶手段と、
関数算出手段で算出された線間隙間関数、ピッチ関数、又は素線厚み関数の少なくとも１つと、記憶手段に記憶されている基準関数又は基準パラメータの少なくとも１つを用いて、測定対象となる渦巻きばねの形状を定量的に評価する評価手段又は測定対象となる渦巻きばねの良否を判定する判定手段の少なくとも一方の手段と、をさらに備えている、請求項１に記載の形状測定装置。
【請求項３】
入力された撮影画像又は測定データを極座標変換した極座標画像を作成する画像変換手段をさらに備えており、
関数算出手段は、極座標画像の素線と背景との境界をトレースすることにより線間隙間関数又は素線厚み関数の少なくとも１つを算出する、請求項１又は２に記載の形状測定装置。
【請求項４】
関数算出手段は、極座標画像の素線の外側の境界をトレースすることにより外側エッジ関数ｅｏ（θ）を算出し、極座標画像の素線の内側の境界をトレースすることにより内側エッジ関数ｅｉ（θ）を算出し、外側エッジ関数ｅｏ（θ）と内側エッジ関数ｅｉ（θ）との差に基づいて、線間隙間関数又は素線厚み関数の少なくとも１つを算出する、請求項３に記載の形状測定装置。
【請求項５】
関数算出手段は、極座標画像の素線の外側の境界と内側の境界が接触している場合は、当該接触箇所でトレースを終了する、請求項３又は４に記載の形状測定装置。
【請求項６】
入力された撮影画像又は測定データを芯線化した芯線化画像を作成する画像変換手段をさらに備えており、
関数算出手段は、隣り合う芯線間の距離に基づいて線間隙間関数又はピッチ関数の少なくとも１つを算出する、請求項１又は２に記載の形状測定装置。
【請求項７】
芯線は、芯線化画像の画素の座標値群によって表され、
関数算出手段は、第１芯線と、第１芯線とその外周側で隣り合う第２芯線間との距離を、第１芯線を構成する座標値群に含まれる第１座標値と、第２芯線を構成する座標値群のうち、少なくとも前記第１座標値に最も近い第２座標値とを用いて算出する、請求項６に記載の形状測定装置。
【請求項８】
入力された撮影画像又は測定データから極座標変換は行わずに輪郭線を抽出した輪郭線画像を作成する画像変換手段をさらに備えており、
関数算出手段は、輪郭線画像の輪郭線を、素線の外周側の外側輪郭線と内周側の内側輪郭線とに分離し、隣り合う外側輪郭線と内側輪郭線との距離に基づいて線間隙間関数又は素線厚み関数の少なくとも１つを算出する、請求項１又は２に記載の形状測定装置。
【請求項９】
素線の外側輪郭線及び内側輪郭線のそれぞれは、輪郭線画像の画素の座標値群によって表され、
関数算出手段は、外側輪郭線と、当該外側輪郭線とその外周側で隣り合う内側輪郭線との距離を、当該外側輪郭線を構成する座標値群に含まれる第３座標値と、当該内側輪郭線を構成する座標値群のうち、少なくとも前記第３座標値に最も近い第４座標値とを用いて算出し、当該距離に基づいて線間隙間関数を算出する、請求項８に記載の形状測定装置。
【請求項１０】
素線の外側輪郭線及び内側輪郭線のそれぞれは、輪郭線画像の画素の座標値群によって表され、
関数算出手段は、内側輪郭線と、当該内側輪郭線とその外周側で隣り合う外側輪郭線との距離を、当該内側輪郭線を構成する座標値群に含まれる第５座標値と、当該外側輪郭線を構成する座標値群のうち、少なくとも前記第５座標値に最も近い第６座標値とを用いて算出し、当該距離に基づいて素線厚み関数を算出する、請求項８又は９に記載の形状測定装置。
【請求項１１】
記憶手段は、線間隙間の下限値を表す下限閾値関数又は線間隙間の上限値を表す上限閾値関数の少なくとも一方を記憶しており、
判定手段は、線間隙間関数が下限閾値関数を下回る場合又は上限閾値関数を上回る場合に不良と判定する、請求項２〜１０のいずれか一項に記載の形状測定装置。
【請求項１２】
渦巻状に成形された渦巻きばねの形状を測定する形状測定方法であり、コンピュータに下記の処理、即ち、
渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを取得する処理と、
取得された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つを算出する関数算出処理と、
を実行させる形状測定方法。
【請求項１３】
渦巻状に成形された渦巻きばねの形状を測定するためのプログラムであり、コンピュータに下記の処理、即ち、
渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを取得する処理と、
取得された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つを算出する関数算出処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示の技術は、渦巻きばねの形状を測定する装置、方法、及びプログラムに関する。ここでいう渦巻きばねとは、平面視したときに、内周側の先端（内フック）から外周側の先端（外フック）まで渦巻状に成形されたばねを意味する。
【背景技術】
【０００２】
渦巻きばね等の工業製品の品質検査工程では、製品の形状と設計図面に規定された形状との異同を調べ、製品が設計図面のとおりに成形されているか否かが検査される。設計図面に規定された形状とのずれが許容誤差の製品は良品と判定され、設計図面に規定された形状とのずれが許容誤差を超える製品は不良品として廃棄される。渦巻きばねの品質検査工程では、渦巻きばねの特定の部位の形状（例えば、内フック長さ、外フック長さ、内径、フリー角度）を測定し、これら特定の部位の形状と設計図面に規定された形状との異同を検査する（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２５７９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような検査方法では、実際には要求性能を満たさない渦巻きばねであっても良品と判定されてしまう可能性がある。即ち、渦巻きばねの素線が変形するなどして要求性能を満たさない場合であっても、特定の部位の形状が良品の判定基準を満たしていれば良品と判定されてしまうという問題がある。本明細書は、渦巻きばねの品質検査を適切に行うために、渦巻きばねの形状を適切に測定できる技術を開示する。
【課題を解決するための手段】
【０００５】
本明細書は、渦巻状に成形された渦巻きばねの形状を測定する形状測定装置を開示する。この形状測定装置は、入力手段と、関数算出手段と、を備える。入力手段は、渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを入力する。関数算出手段は、入力された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つを算出する。
【０００６】
この形状測定装置では、関数算出手段が、線間隙間関数、ピッチ関数、又は素線厚み関数の少なくとも１つを算出する。これにより、従来では検査されていなかった、渦巻きばねの隣り合う素線間の隙間、渦巻きばねの隣り合う素線の芯線間の距離、又は渦巻きばねの素線の厚みの少なくとも１つを検査することが可能になる。このため、渦巻きばねの形状を適切に測定でき、結果として渦巻きばねの品質検査を適切に行うことが可能となる。
【０００７】
また、本明細書は、渦巻状に成形された渦巻きばねの形状を測定する新規の形状測定方法を開示する。この形状測定方法は、コンピュータに、取得処理と、関数算出処理と、を実行させる。取得処理では、渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを取得する。関数算出処理では、取得された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つが算出される。
この形状測定方法によると、渦巻きばねの形状を適切に測定でき、結果として渦巻きばねの品質検査を適切に行うことが可能となる。
【０００８】
さらに、本明細書は、渦巻状に成形された渦巻きばねの形状を測定するための新規のプログラムを開示する。このプログラムは、コンピュータに、取得処理と、関数算出処理と、を実行させる。取得処理では、渦巻きばねを撮影した撮影画像又は渦巻きばねの形状を測定した測定データを取得する。関数算出処理では、取得された撮影画像又は測定データを用いて、渦巻きばねの隣り合う素線間の隙間を表す線間隙間関数、渦巻きばねの隣り合う素線の芯線間の距離を表すピッチ関数、又は渦巻きばねの素線の厚みを表す素線厚み関数の少なくとも１つが算出される。
このプログラムによると、コンピュータを用いて渦巻きばねの形状を適切に測定でき、結果として渦巻きばねの品質検査を適切に行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施例１の形状測定装置の構成を示す図。
【図２Ａ】実施例１の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート（その１）。
【図２Ｂ】実施例１の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート（その２）。
【図２Ｃ】実施例１の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート（その３）。
【図２Ｄ】実施例１の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート（その４）。
【図３】渦巻きばねの撮影画像を示す図（第１タイプ）。
【図４】第１タイプの渦巻きばねの極座標画像を示す図。
【図５】線間隙間関数を表したグラフ。
【図６】線間隙間関数、下限閾値関数、及び上限閾値関数を表したグラフ。
【図７】隣り合う素線同士が接触している第１タイプの渦巻きばねの撮影画像を示す図。
【図８】図７の渦巻きばねの極座標画像を示す図。
【図９】渦巻きばねの撮影画像を示す図（第２タイプ）。
【図１０】第２タイプの渦巻きばねの極座標画像を示す図。
【図１１】実施例１の変形例１の良否判定方法を説明するグラフ。
【図１２】実施例１の変形例５の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート。
【図１３】実施例１の変形例５のレーザ変位計を示す図。
【図１４】渦巻きばねの断面データを示す図。
【図１５】図１４の断面データから構成された渦巻きばねの３次元データを示す図。
【図１６】図１５の３次元データの極座標データを示す図。
【図１７】図１６の極座標データのθ＝６０°における断面を表したグラフ。
【図１８】実施例２の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート。
【図１９】第２タイプの渦巻きばねの芯線化画像を示す図。
【図２０】芯線系列の法線ベクトルを示す図。
【図２１】隣り合う素線の芯線間距離の算出方法を示す図。
【図２２】実施例３の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート。
【図２３】第２タイプの渦巻きばねの輪郭線画像を示す図。
【図２４】外側輪郭線の座標値群と内側輪郭線の座標値群を示す図。
【図２５】輪郭線系列の法線ベクトルを示す図。
【図２６】実施例３の変形例１の形状測定装置による渦巻きばねの形状測定の流れを示すフローチャート。
【図２７】素線厚みが異なる渦巻きばねの撮影画像を示す図。
【図２８】図２７の渦巻きばねの輪郭線画像を示す図。
【図２９】外側輪郭線の座標値群と内側輪郭線の座標値群を示す図。
【図３０】輪郭線系列の中間点の内側次点から始点までの法線ベクトルを示す図。
【図３１】輪郭線系列の中間点の外側次点から終点までの法線ベクトルを示す図。
【発明を実施するための形態】
【００１０】
以下、本明細書で開示する実施例の技術的特徴の幾つかを記す。なお、以下に記す事項は、各々単独で技術的な有用性を有している。
【００１１】
（特徴１）本明細書が開示する形状測定装置は、記憶手段と、評価手段又は判定手段の少なくとも一方の手段と、をさらに備えていてもよい。記憶手段は、予め定められた基準関数又は基準パラメータの少なくとも１つを記憶してもよい。評価手段は、関数算出手段で算出された線間隙間関数、ピッチ関数、又は素線厚み関数の少なくとも１つと、記憶手段に記憶されている基準関数又は基準パラメータの少なくとも１つを用いて、測定対象となる渦巻きばねの形状を定量的に評価してもよい。判定手段は、関数算出手段で算出された線間隙間関数、ピッチ関数、又は素線厚み関数の少なくとも１つと、記憶手段に記憶されている基準関数又は基準パラメータの少なくとも１つを用いて、測定対象となる渦巻きばねの良否を判定してもよい。この構成によると、渦巻きばねの品質を定量的に判定することができる。
【００１２】
（特徴２）本明細書が開示する形状測定装置は、入力された撮影画像又は測定データを極座標変換した極座標画像を作成する画像変換手段をさらに備えていてもよい。関数算出手段は、極座標画像の素線と背景との境界をトレースすることにより線間隙間関数又は素線厚み関数の少なくとも１つを算出してもよい。この構成によると、画像にある程度のノイズが含まれていたとしても、素線と背景との境界を正確にトレースできる。また、比較的短時間で線間隙間関数又は素線厚み関数を算出できる。
【００１３】
（特徴３）本明細書が開示する形状測定装置では、関数算出手段が、極座標画像の素線の外側の境界をトレースすることにより外側エッジ関数ｅｏ（θ）を算出し、極座標画像の素線の内側の境界をトレースすることにより内側エッジ関数ｅｉ（θ）を算出し、外側エッジ関数ｅｏ（θ）と内側エッジ関数ｅｉ（θ）との差に基づいて、線間隙間関数又は素線厚み関数の少なくとも１つを算出してもよい。
【００１４】
（特徴４）本明細書が開示する形状測定装置では、関数算出手段は、極座標画像の素線の外側の境界と内側の境界が接触している場合は、当該接触箇所でトレースを終了してもよい。ここで、「極座標画像の素線の外側の境界と内側の境界が接触している」とは、渦巻きばねの隣り合う素線同士が接触（癒着）していることを意味する。上記の構成によると、関数算出手段は、素線の外側と内側の境界に接触箇所が存在する場合は、接触箇所においてトレースを終了し、それ以上のトレースは行わない。このため、素線同士の接触を短時間で検出でき、品質検査の作業効率が向上する。
【００１５】
（特徴５）本明細書が開示する形状測定装置は、入力された撮影画像又は測定データを芯線化した芯線化画像を作成する画像変換手段をさらに備えていてもよい。関数算出手段は、隣り合う芯線間の距離に基づいて線間隙間関数又はピッチ関数の少なくとも１つを算出してもよい。
【００１６】
（特徴６）本明細書が開示する形状測定装置では、芯線は、芯線化画像の画素の座標値群によって表されてもよい。関数算出手段は、第１芯線と、第１芯線とその外周側で隣り合う第２芯線間との距離を、第１芯線を構成する座標値群に含まれる第１座標値と、第２芯線を構成する座標値群のうち、少なくとも前記第１座標値に最も近い第２座標値とを用いて算出してもよい。この構成によると、隣り合う芯線間の距離を正確に算出することができる。
【００１７】
（特徴７）本明細書が開示する形状測定装置は、入力された撮影画像又は測定データから極座標変換は行わずに輪郭線を抽出した輪郭線画像を作成する画像変換手段をさらに備えていてもよい。関数算出手段は、輪郭線画像の輪郭線を、素線の外周側の外側輪郭線と内周側の内側輪郭線とに分離し、隣り合う外側輪郭線と内側輪郭線との距離に基づいて線間隙間関数又は素線厚み関数の少なくとも１つを算出してもよい。
【００１８】
（特徴８）本明細書が開示する形状測定装置では、素線の外側輪郭線及び内側輪郭線のそれぞれは、輪郭線画像の画素の座標値群によって表されてもよい。関数算出手段は、外側輪郭線と、当該外側輪郭線とその外周側で隣り合う内側輪郭線との距離を、当該外側輪郭線を構成する座標値群に含まれる第３座標値と、当該内側輪郭線を構成する座標値群のうち、少なくとも前記第３座標値に最も近い第４座標値とを用いて算出し、当該距離に基づいて線間隙間関数を算出してもよい。この構成によると、隣り合う素線間の距離を定量的に算出することができる。
【００１９】
（特徴９）本明細書が開示する形状測定装置では、素線の外側輪郭線及び内側輪郭線のそれぞれは、輪郭線画像の画素の座標値群によって表されてもよい。関数算出手段は、内側輪郭線と、当該内側輪郭線とその外周側で隣り合う外側輪郭線との距離を、当該内側輪郭線を構成する座標値群に含まれる第５座標値と、当該外側輪郭線を構成する座標値群のうち、少なくとも前記第５座標値に最も近い第６座標値とを用いて算出し、当該距離に基づいて素線厚み関数を算出してもよい。この構成によると、素線の厚みを定量的に算出することができる。
【００２０】
（特徴１０）本明細書が開示する形状測定装置では、記憶手段は、線間隙間の下限値を表す下限閾値関数又は線間隙間の上限値を表す上限閾値関数の少なくとも一方を記憶していてもよい。判定手段は、線間隙間関数が下限閾値関数を下回る場合又は上限閾値関数を上回る場合に不良と判定してもよい。この構成によると、記憶手段に記憶させる閾値関数を制御することにより、渦巻きばねの線間隙間を所望の形状に制御でき、渦巻きばねの性能を向上することができる。
【実施例１】
【００２１】
実施例１の形状測定装置１０について図面を参照しながら説明する。図１に示すように、形状測定装置１０は、ステージ１２と、ステージ１２上に配置された照明器１４と、ステージ１２に固定されているＣＣＤカメラ１６と、ＣＣＤカメラ１６に通信線１８を介して接続されているコンピュータ２２と、コンピュータ２２に接続されているディスプレイ２０を備えている。
【００２２】
照明器１４は、面光源であり、その発光面上に渦巻きばね３０が載置される。ＣＣＤカメラ１６は、照明器１４上に配置されており、照明器１４上に載置された渦巻きばね３０を撮影する。即ち、渦巻きばね３０は照明器１４によって下方から照明され、照明器１４の透過光（渦巻きばね３０の影）がＣＣＤカメラ１６によって撮影される。なお、照明器１４は、本実施例のような透過照明に限定されず、渦巻きばね３０を上方から照明するものでもよい。この場合、渦巻きばね３０が全周方向から均等に照明されるように、複数の照明器やリング型の照明器を用いることが好ましい。
【００２３】
ＣＣＤカメラ１６が撮影した画像データは、通信線１８を介してコンピュータ２２に入力される。コンピュータ２２には、後述する形状測定処理を実行するためのプログラムが記憶されている。コンピュータ２２は、ＣＣＤカメラ１６が撮影した撮影画像の画像データを処理し、渦巻きばね３０の隣り合う素線間の隙間を表す線間隙間関数を算出する。コンピュータ２２のメモリには、予め定められた閾値関数が記憶されている。コンピュータ２２は、算出した線間隙間関数を閾値関数と比較して、渦巻きばね３０の良否を判定し、判定結果をディスプレイ２０に表示する。
【００２４】
図２Ａ〜図２Ｄは、形状測定装置１０による渦巻きばね３０の形状測定の流れを示すフローチャートである。形状測定装置１０は、図２Ａ〜図２Ｄに示す工程、処理を経て、渦巻きばね３０の線間隙間関数を算出し、渦巻きばね３０が良品であるか否かの判定を行う。以下、図２Ａ、図２Ｂに示すフローチャートに沿って、形状測定装置１０による渦巻きばね３０の形状測定の流れを説明する。
【００２５】
まず、図２ＡのステップＳ１０において、ＣＣＤカメラ１６により、渦巻きばね３０の撮影を行う。ＣＣＤカメラ１６により撮影された撮影画像は、コンピュータ２２に入力される。入力される撮影画像は、例えば、最も黒い画素の輝度値を「０」とし、最も白い画素の輝度値を「２５５」とする２５６階調の画像とすることができる。図３、図９に、２種類の渦巻きばね３０の撮影画像を例示する。図３、図９に示す２種類の渦巻きばね３０は、共に、内フック３２から外フック３４まで渦巻状に延びている。ただし、これら２種類の渦巻きばね３０は、その内フック３２の形状に有意な違いを有する。即ち、図３に示す渦巻きばね３０は、その内フック３２が渦巻きばね３０の重心Ｇと重なっているが、図９に示す渦巻きばね３０は、その内フック３２が渦巻きばね３０の重心Ｇと重なっていない。本明細書では、図３に示す渦巻きばね３０を第１タイプと称し、図９に示す渦巻きばね３０を第２タイプと称する。形状測定装置１０は、第１タイプと第２タイプの双方の渦巻きばね３０の形状測定を行うことができる。なお、特に区別した説明がない場合は、第１タイプと第２タイプで共通の処理が行われるものとする。なお、撮影画像は、画素（ｘ，ｙ）毎に輝度値を有する輝度値画像である。
【００２６】
次に、ステップＳ１２では、ステップＳ１０で撮影された撮影画像を二値化する。すなわち、入力された撮影画像の各画素（ｘ，ｙ）に対して、輝度値が予め設定された設定値以上となる場合は濃度値「０」（白画素）とし、輝度値が予め設定された設定値未満となる場合は濃度値「１」（黒画素）とする。これによって、渦巻きばね３０に対応する部分の画素群が濃度値「１」となり、それ以外の画素群が濃度値「０」となる。なお、このステップＳ１２から後述するステップＳ３６までの処理は、コンピュータ２２によって実行される。
【００２７】
次に、ステップＳ１４では、ステップＳ１２で得られた二値化画像を極座標変換して極座標画像を作成する。図４に、第１タイプの渦巻きばね３０（図３参照）の極座標画像を示す。図１０に、第２タイプの渦巻きばね３０（図９参照）の極座標画像を示す。二値化画像から極座標画像を作成する処理は、公知の方法（例えば、特開２００９−２５７９５０）を用いて行うことができる。具体的には、渦巻きばね３０の重心Ｇを仮の中心として求めた後、公知の変換式を用いて極座標画像を作成することができる。
【００２８】
次に、ステップＳ１６では、ステップＳ１４で作成した極座標画像に基づいて、外側エッジ関数ｅｏ（θ）と内側エッジ関数ｅｉ（θ）を作成する。外側・内側エッジ関数作成処理について図２Ｂを参照して説明する。
【００２９】
（外側・内側エッジ関数作成処理）
図２Ｂに示すように、この処理では、ステップＳ３０において、極座標画像を用いて座標値Ｐ１，Ｐ２を検出する。図４、図１０に示すように、極座標画像は、濃度値１の複数の縞状の画素群を有する。以下では、説明の便宜上、これら縞状の画素群に符号を付して各々を区別する。第１タイプの渦巻きばね３０の極座標画像では、図４に示すように、縞状の画素群をそれぞれ画素群４０、画素群４２、画素群４４、画素群４６、画素群４８と称する。第２タイプの渦巻きばね３０の極座標画像では、図１０に示すように、縞状の画素群をそれぞれ画素群４０、画素群４２、画素群４４、画素群４６と称する。また、内フック３２に相当する部分の画素群を画素群Ａと称し、外フック３４に相当する部分の画素群を画素群Ｂと称する。図４、図１０では、他の画素群と区別するために、画素群Ａ、Ｂを含む範囲を破線で示す。破線内において濃度値１の画素群がそれぞれ画素群Ａ、画素群Ｂである。画素群Ａ、画素群Ｂは、公知の方法（例えば、特開２００９−２５７９５０）を用いて特定することができる。いずれのタイプにおいても、画素群４０の上端は内フック３２に相当する部分の画素群Ａと連続しており、画素群４８の下端（第２タイプの場合は画素群４６の下端）は外フック３４に相当する部分の画素群Ｂと連続している。なお、画素群４０の境界の座標値のθ成分の範囲は０°〜３６０°である。以下、各画素群４２、４４、４６、４８の境界の座標値のθ成分の範囲は、それぞれ３６０°〜７２０°、７２０°〜１０８０°、１０８０°〜１４４０°、１４４０°〜１８００°である。
座標値Ｐ１，Ｐ２は、具体的には次のように検出される。まず、極座標画像のθ＝３６０°のライン上を左から右へトレースする。そして、画素の濃度値が最初に０から１に変化するときの濃度値０の画素の座標値をＰ１として検出し、その後で濃度値が最初に１から０に変化するときの濃度値１の画素の座標値をＰ２として検出する。座標値Ｐ１が画素群４０の左側の境界を表し、座標値Ｐ２が画素群４０の右側の境界を表す。以下では、各画素群４０〜４８の左側の境界を特に「内側エッジ」と称し、右側の境界を特に「外側エッジ」とも称する。また、内側エッジの座標値のｒ成分をｒｉと称し、外側エッジの座標値のｒ成分をｒｏとも称する。即ち、座標値Ｐ１のｒ成分はθ＝３６０°におけるｒｉであり、座標値Ｐ２のｒ成分はθ＝３６０°におけるｒｏである。
【００３０】
次に、ステップＳ３１では、座標値Ｐ１のｒ成分ｒｉをｅｉ（３６０）として記憶する。同様に、座標値Ｐ２のｒ成分ｒｏをｅｏ（３６０）として記憶する。これらはＲＡＭに保存される。続いて、ステップＳ３２では、画素群４０の左側及び右側の境界を逆方向にトレースする。ここで、逆方向にトレースするとは、極座標画像の縦軸θの値が減少する方向に向かうトレースを意味する。逆方向トレース処理について、図２Ｃを参照して説明する。
【００３１】
（逆方向トレース処理）
この処理では、θ＝３５９°，３５８°，・・・０°のそれぞれのライン上を所定の範囲で左から右へトレースして、画素の濃度値が最初に０から１に変化するときの濃度値０の画素の座標値のｒ成分と、その後で濃度値が最初に１から０に変化するときの濃度値１の画素の座標値のｒ成分を検出する。以下では、座標値（θ，ｒ）の画素の濃度値をＤ（θ，ｒ）と表す。例えば、Ｄ（θ１，ｒ１）＝０のときは座標値（θ１，ｒ１）の画素は白画素であり、Ｄ（θ２，ｒ２）＝１のときは座標値（θ２，ｒ２）の画素は黒画素である。
【００３２】
具体的な処理を説明する。図２Ｃに示すように、まず、ステップＳ５０でｊ＝１に設定し、ステップＳ５１に進む。ステップＳ５１では、θ＝θｊ（θｊ＝３６０°−ｊ（ｊ＝１°〜３６０°））のときの画素群４０の内側エッジの座標値のｒ成分ｒｉを検出する。ｒｉは、θ＝θｊのライン上のｒ成分がｅｉ（θｊ＋１）−δ≦ｒ≦ｅｉ（θｊ＋１）＋δとなる範囲内で、Ｄ（θｊ，ｒ）＝０かつＤ（θｊ，ｒ＋１）＝１を満たすｒによって定義される。例えば、ｊ＝１の場合は、θ１＝３５９°のライン上においてｅｉ（３６０）−δ≦ｒ≦ｅｉ（３６０）＋δとなる範囲内で、Ｄ（θ１，ｒ）＝０かつＤ（θ１，ｒ＋１）＝１を満たすｒがθ＝θ１の内側エッジの座標値のｒｉとして検出される。ここで、ｅｉ（３６０）は、ステップＳ３１で記憶された座標値Ｐ１のｒ成分である。この処理によると、内側エッジの座標値のｒｉの検出は、θ＝θｊのライン上の所定の範囲のみで行われる。このため、処理速度を向上させることができる。
次に、ステップＳ５２では、ステップＳ５１で内側エッジの座標値のｒｉを検出できたか否か判断する。上記の条件を満たすｒが存在する場合は、ｒｉの検出に成功したと判断して（ステップＳ５２のＹＥＳ）、ステップＳ５３に進む。一方、上記の条件を満たすｒが存在しない場合は、ｒｉの検出に失敗したと判断して（ステップＳ５２のＮＯ）、ステップＳ５９に進む（後述）。なお、ステップＳ５２でＮＯの場合とは、θ＝θｊのラインにおける上記ｒの範囲内で、隣接する２つの画素の濃度値が右方向に白画素から黒画素に変化しない場合である。即ち、具体的には、θ＝θｊのときの画素群４０に相当する部分の素線が、内フック３２と接触しているか、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップＳ５３では、ステップＳ５１で検出されたｒｉをｅｉ（θｊ）として記憶する。例えば、ｊ＝１の場合は、θ＝３５９°のときの内側エッジの座標値のｒｉをｅｉ（３５９）として記憶する。ｅｉ（θｊ）はＲＡＭに保存される。
【００３３】
ステップＳ５４では、θ＝θｊのときの画素群４０の外側エッジの座標値のｒ成分ｒｏを検出する。ｒｏは、θ＝θｊのライン上のｒ成分がｅｏ（θｊ＋１）−δ≦ｒ≦ｅｏ（θｊ＋１）＋δとなる範囲内で、Ｄ（θｊ，ｒ）＝１かつＤ（θｊ，ｒ＋１）＝０を満たすｒによって定義される。例えば、ｊ＝１の場合は、θ１＝３５９°のライン上においてｅｏ（３６０）−δ≦ｒ≦ｅｏ（３６０）＋δとなる範囲内で、Ｄ（θ１，ｒ）＝１かつＤ（θ１，ｒ＋１）＝０を満たすｒがθ＝θ１の外側エッジの座標値のｒｏとして検出される。ここで、ｅｏ（３６０）は、ステップＳ３１で記憶された座標値Ｐ２のｒ成分である。この処理によると、外側エッジの座標値のｒｏの検出は、θ＝θｊのライン上の所定の範囲のみで行われる。このため、処理速度を向上させることができる。
次に、ステップＳ５５では、ステップＳ５４で外側エッジの座標値のｒｏを検出できたか否か判断する。上記の条件を満たすｒが存在する場合は、ｒｏの検出に成功したと判断して（ステップＳ５５のＹＥＳ）、ステップＳ５６に進む。一方、上記の条件を満たすｒが存在しない場合は、ｒｏの検出に失敗したと判断して（ステップＳ５５のＮＯ）、ステップＳ５９に進む（後述）。なお、ステップＳ５５でＮＯの場合とは、θ＝θｊのラインにおける上記ｒの範囲内で、隣接する２つの画素の濃度値が右方向に黒画素から白画素に変化しない場合である。即ち、具体的には、θ＝θｊのときの画素群４０に相当する部分の素線が、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップＳ５６では、ステップＳ５４で検出されたｒｏをｅｏ（θｊ）として記憶する。例えば、ｊ＝１の場合は、θ＝３５９°のときの外側エッジの座標値のｒｏをｅｏ（３５９）として記憶する。ｅｏ（θｊ）はＲＡＭに保存される。
【００３４】
続いて、ステップＳ５７では、ｊ＝３６０であるか否かを判断する。ｊ＝３６０ではない場合は、ステップＳ５７でＮＯと判断してステップＳ５８に進む。ステップＳ５８では、ｊを１インクリメントしてステップＳ５１に戻り、ステップＳ５７までの処理を繰り返す。この処理は、ステップＳ５７でＹＥＳと判断されるまで（即ち、ｊ＝３６０と判断されるまで）繰り返される。これにより、θｊ＝３６０°−ｊ（＝３５９°，３５８°，・・・０°）のときの画素群４０の内側エッジ及び外側エッジの座標値のｒ成分ｒｉ、ｒｏを順次検出（逆方向トレース）し、それらをｅｉ（θｊ）、ｅｏ（θｊ）としてＲＡＭに記憶させることができる。一方、ｊ＝３６０の場合は、ステップＳ５７でＹＥＳと判断してステップＳ５９に進む（後述）。なお、ステップＳ５７でＹＥＳの場合とは、画素群４０に相当する部分の素線を一巻分、逆方向トレースした場合である。
【００３５】
ステップＳ５２でＮＯ、ステップＳ５５でＮＯ、及びステップＳ５７でＹＥＳの場合は、ステップＳ５９に進む。ステップＳ５９では、逆方向トレースができたところまでの画素群４０の長さを部分素線長Ｓｒとして算出する。具体的には、ステップＳ５２でＮＯ又はステップＳ５５でＮＯと判断されてステップＳ５９に進んだ場合は、ステップＳ５１又はステップＳ５４においてθ＝θｊにおけるｒｉ又はｒｏの検出に失敗している。この場合、θ＝３６０°からθｊまでのθ成分の長さである３６０°−θｊを部分素線長Ｓｒとして算出する。また、ステップＳ５７でＹＥＳと判断されてステップＳ５９に進んだ場合は、部分素線長Ｓｒは３６０°（即ち、θ成分の一巻分の長さ）となる。ステップＳ５９の処理が終了すると、逆方向トレース処理は終了する。なお、上記の処理では、所定の範囲内においてＤ（θ１，ｒ）＝０かつＤ（θ１，ｒ＋１）＝１を満たすｒを内側エッジのｒｉとして検出したが、条件式は上記に限られない。例えば、Ｄ（θ１，ｒ−２）＝０、Ｄ（θ１，ｒ−１）＝０、Ｄ（θ１，ｒ）＝０、Ｄ（θ１，ｒ＋１）＝１、Ｄ（θ１，ｒ＋２）＝１、Ｄ（θ１，ｒ＋３）＝１の全てを満たすｒを内側エッジのｒｉとして検出してもよい。即ち、画素の濃度値が、左から右に向かって３画素連続して白画素となった後で、３画素連続して黒画素となるときの最も右側の白画素の座標値のｒ成分をｒｉとして検出してもよい。この検出条件によると、突発的なノイズを誤って内側エッジとして検出してしまうことを抑制でき、ｒｉの検出精度をより向上させることができる。この検出条件は、外側エッジのｒｏの検出に用いてもよい。また、後述する順方向トレース処理で用いてもよい。
【００３６】
図２Ｂに戻って説明を続ける。ステップＳ３２で逆方向トレースが終了すると、ステップＳ３３に進む。ステップＳ３３では、ステップＳ３２の逆方向トレース処理で算出された部分素線長Ｓｒをエッジ関数長さＬとして記憶する。即ち、ステップＳ３１、Ｓ３２の処理で記憶されたｅｉ（θｊ）をθ−ｒ座標系でつなぎ合わせて近似すると、画素群４０の内側エッジを表す関数（内側エッジ関数）を作成することが可能である。同様に、ｅｏ（θｊ）をθ−ｒ座標系でつなぎ合わせて近似すると、画素群４０の外側エッジを表す関数（外側エッジ関数）を作成することが可能である。このため、部分素線長Ｓｒは、画素群４０の内側及び外側エッジ関数の長さを表している。このため、ステップＳ３３では、部分素線長Ｓｒをエッジ関数長さＬとして記憶する。エッジ関数長さＬは、ＲＡＭに保存される。
【００３７】
続いて、ステップＳ３４では、位置変数θｐを３６０°に設定し、ステップＳ３５に進む。ステップＳ３５では、ｅｉ（３６０）をｇｉ（０）として記憶し、ｅｏ（３６０）をｇｏ（０）として記憶する。ここで、ｇｉ（０）は、θ＝０°のときの画素群４２の内側エッジの座標値のｒ成分ｒｉであり、ｇｏ（０）は、θ＝０°のときの画素群４２の外側エッジの座標値のｒ成分ｒｏである。画素群４０に相当する部分の渦巻きばね３０と画素群４２に相当する部分の渦巻きばねは連続している。このため、θ＝３６０°における画素群４０の内側エッジのｒｉ及び外側エッジのｒｏは、θ＝０°における画素群４２の内側エッジｒｉ及び外側エッジｒｏとそれぞれ等しい。即ち、ステップＳ３５の処理では、画素群４０のｒｉ及びｒｏを利用して画素群４２のｒｉ及びｒｏを算出し、それぞれをｇｉ（０）、ｇｏ（０）として記憶する。この処理によると、画素群４０以外の画素群については、ステップＳ３０のような処理が不要となり、処理効率を向上することができる。
【００３８】
次に、ステップＳ３６では、Ｋを１に設定し、ステップＳ３７に進む。ステップＳ３７では、画素群４２の内側エッジ及び外側エッジを順方向にトレースする。ここで、順方向にトレースするとは、極座標画像の縦軸θの値が増加する方向に向かうトレースを意味する。順方向トレース処理は、トレースの方向がθの増加方向である点以外は、逆方向トレース処理と同様である。このため、逆方向トレース処理と同様の処理については詳細な説明を省略する。
【００３９】
（順方向トレース処理）
図２Ｄに示すように、まず、ステップＳ６０でｋ＝１に設定し、ステップＳ６１に進む。ステップＳ６１では、θ＝θｋ（θｋ＝ｋ（ｋ＝１°〜３６０°））のときの画素群４２の内側エッジの座標値のｒｉを検出する。ｒｉは、θ＝θｋのライン上のｒ成分がｇｉ（θｋ−１）−δ≦ｒ≦ｇｉ（θｋ−１）＋δとなる範囲内で、Ｄ（θｋ，ｒ）＝０かつＤ（θｋ，ｒ＋１）＝１を満たすｒによって定義される。例えば、ｋ＝１の場合は、θ１＝１°のライン上においてｇｉ（０）−δ≦ｒ≦ｇｉ（０）＋δとなる範囲内で、Ｄ（θ１，ｒ）＝０かつＤ（θ１，ｒ＋１）＝１を満たすｒがθ＝θ１の内側エッジの座標値のｒｉとして検出される。
次に、ステップＳ６２では、ステップＳ６１で内側エッジの座標値のｒｉを検出できたか否か判断する。上記の条件を満たすｒが存在する場合（ステップＳ６２のＹＥＳ）は、ステップＳ６３に進み、上記の条件を満たすｒが存在しない場合（ステップＳ６２のＮＯ）は、ステップＳ６９に進む。なお、ステップＳ６２でＮＯの場合とは、θ＝θｋのラインにおける上記ｒの範囲内で、隣接する２つの画素の濃度値が右方向に白画素から黒画素に変化しない場合である。即ち、具体的には、θ＝θｋのときの画素群４２に相当する部分の素線が、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップＳ６３では、ステップＳ６１で検出されたｒｉをｇｉ（θｋ）として記憶する。例えば、ｋ＝１の場合は、θ＝１°のときの内側エッジの座標値のｒｉをｇｉ（１）として記憶する。ｇｉ（θｋ）はＲＡＭに保存される。
【００４０】
ステップＳ６４では、θ＝θｋのときの画素群４２の外側エッジの座標値のｒ成分ｒｏを検出する。ｒｏは、θ＝θｋのライン上のｒ成分がｇｏ（θｋ−１）−δ≦ｒ≦ｇｏ（θｋ−１）＋δとなる範囲内で、Ｄ（θｋ，ｒ）＝１かつＤ（θｋ，ｒ＋１）＝０を満たすｒによって定義される。例えば、ｋ＝１の場合は、θ１＝１°のライン上においてｇｏ（０）−δ≦ｒ≦ｇｏ（０）＋δとなる範囲内で、Ｄ（θ１，ｒ）＝１かつＤ（θ１，ｒ＋１）＝０を満たすｒがθ＝θ１の外側エッジの座標値のｒｏとして検出される。
次に、ステップＳ６５では、ステップＳ６４で外側エッジの座標値のｒｏを検出できたか否か判断する。上記の条件を満たすｒが存在する場合（ステップＳ６５のＹＥＳ）は、ステップＳ６６に進み、上記の条件を満たすｒが存在しない場合（ステップＳ６５のＮＯ）、ステップＳ６９に進む。なお、ステップＳ６５でＮＯの場合とは、θ＝θｋのラインにおける上記ｒの範囲内で、隣接する２つの画素の濃度値が右方向に黒画素から白画素に変化しない場合である。即ち、具体的には、θ＝θｋのときの画素群４２に相当する部分の素線が、外フック３４と接触しているか、他の部分の素線と接触しているか、その形状が規格外である場合などが考えられる。
ステップＳ６６では、ステップＳ６４で検出されたｒｏをｇｏ（θｋ）として記憶する。例えば、ｋ＝１の場合は、θ＝１°のときの外側エッジの座標値のｒｏをｇｏ（１）として記憶する。ｇｏ（θｋ）はＲＡＭに保存される。
【００４１】
続いて、ステップＳ６７では、ｋ＝３６０であるか否かを判断する。ｋ＝３６０ではない場合は、ステップＳ６７でＮＯと判断して、ステップＳ６８においてｋを１インクリメントしてステップＳ６１に戻り、ステップＳ６７までの処理を繰り返す。この処理は、ステップＳ６７でＹＥＳと判断されるまで繰り返される。これにより、θｋ＝ｋ（＝１°，２°，・・・３６０°）のときの画素群４２の内側エッジ及び外側エッジの座標値のｒ成分ｒｉ、ｒｏを順次検出（順方向トレース）し、それらをｇｉ（θｋ）、ｇｏ（θｋ）としてＲＡＭに記憶させることができる。一方、ｋ＝３６０の場合は、ステップＳ６７でＹＥＳと判断してステップＳ６９に進む。なお、ステップＳ６７でＹＥＳの場合とは、画素群４２に相当する部分の素線を一巻分、順方向トレースした場合である。
【００４２】
ステップＳ６９では、順方向トレースができたところまでの画素群４２の長さを部分素線長Ｓｆとして算出する。具体的には、ステップＳ６２でＮＯ又はステップＳ６５でＮＯと判断されてステップＳ６９に進んだ場合は、ステップＳ６１又はステップＳ６４においてθ＝θｋにおけるｒｉ又はｒｏの検出に失敗している。この場合、θ＝１°からθｋまでのθ成分の長さであるθｋ−０°を部分素線長Ｓｆとして算出する。また、ステップＳ６７でＹＥＳと判断されてステップＳ６９に進んだ場合は、部分素線長Ｓｆは３６０°（即ち、θ成分の一巻分の長さ）となる。ステップＳ６９の処理が終了すると、順方向トレース処理は終了する。
【００４３】
図２Ｂに戻って説明を続ける。ステップＳ３７で順方向トレースが終了すると、ステップＳ３８に進む。ステップＳ３８では、ステップＳ３７の順方向トレース処理で記憶されたｇｏ（θｋ）をｅｏ（３６０×Ｋ＋θｋ）として記憶し、ｇｉ（θｋ）をｅｉ（３６０×Ｋ＋θｋ）として記憶する。例えば、Ｋ＝１のときは、ｇｏ（θｋ）はｅｏ（３６０＋θｋ）として記憶され、ｇｉ（θｋ）はｅｉ（３６０＋θｋ）として記憶される。
続いて、ステップＳ３９では、ステップＳ３３で記憶されたエッジ関数長さＬに、ステップＳ３７で算出された部分素線長Ｓｆを足したものを、新たなエッジ関数長さＬとして記憶（更新）する。ステップＳ３７で算出された部分素線長Ｓｆは、画素群４２の内側及び外側エッジ関数の長さを表している。このため、ステップＳ３９では、ステップＳ３３のエッジ関数長さＬ＋ステップＳ３７の部分素線長Ｓｆを、新たなエッジ関数長さＬとして記憶する。新たなエッジ関数長さＬは、ＲＡＭに保存される。
【００４４】
次に、ステップＳ４０では、ステップＳ３４で設定された位置変数θｐに、ステップＳ３７で算出された部分素線長Ｓｆを足したものを、新たな位置変数θｐとして記憶（更新）する。
続いて、ステップＳ４１では、部分素線長Ｓｆ＝３６０°が成立するか否かを判断する。Ｓｆ＝３６０°が成立するのは、ｋ＝３６０のときである。別言すれば、画素群４２に相当する部分の素線を一巻分、順方向トレースしたときである。この場合、ステップＳ４１でＹＥＳと判断して、ステップＳ４２に進む。一方、Ｓｆ＝３６０°が成立しない場合は、ステップＳ４１でＮＯと判断して、ステップＳ４６に進む（後述）。
ステップＳ４２では、ｇｉ（３６０）をｇｉ（０）に更新し、ｇｏ（３６０）をｇｏ（０）に更新する。ここで、ｇｉ（３６０）は、θ＝３６０°のときの画素群４２の内側エッジの座標値のｒ成分ｒｉであり、ｇｏ（３６０）は、θ＝３６０°のときの画素群４２の外側エッジの座標値のｒ成分ｒｏである。画素群４２に相当する部分の渦巻きばね３０と画素群４４に相当する部分の渦巻きばね３０は連続している。このため、θ＝３６０°における画素群４２の内側エッジのｒｉ及び外側エッジのｒｏは、θ＝０°における画素群４４の内側エッジｒｉ及び外側エッジｒｏとそれぞれ等しい。即ち、ステップＳ４２の処理では、画素群４２のｒｉ及びｒｏを利用して画素群４２のｒｉ及びｒｏを算出し、それぞれをｇｉ（０）、ｇｏ（０）として記憶する。
【００４５】
次に、ステップＳ４３では、Ｋ＝Ｋｍａｘが成立するか否かを判断する。ここで、Ｋｍａｘは渦巻きばね３０の巻き数の上限値を超える値であり、コンピュータ２２に予め登録されている。上記等式が成立する場合（ステップＳ４３でＹＥＳ）はステップＳ４６に進み（後述）、成立しない場合（ステップＳ４３でＮＯ）はステップＳ４４に進む。
ステップＳ４４では、Ｋを１インクリメントして、ステップＳ３７に戻る。例えば、Ｋ＝１、Ｋｍａｘ＝８の場合は、ステップＳ４３でＮＯと判断し、ステップＳ４４でＫ＝２に設定し、ステップＳ３７で再度順方向トレース処理を行う。Ｋ＝２のときは、上記のステップＳ６０〜ステップＳ６９までの処理が、画素群４４に対して行われる。ステップＳ３７の処理が終了したら、画素群４４に対して、ステップＳ３８〜ステップＳ４４までの処理が行われる。図４に示す例では、以後、ステップＳ４４でＫを１ずつインクリメントしながら、ステップＳ３７〜ステップＳ４４までの処理が行われる。そして、ステップＳ４４でＫを１インクリメントして、Ｋ＝４に設定されると、ステップＳ３７では、画素群４８に対して順方向トレース処理を行う。この場合、図４から明らかなように、ステップＳ６５（図２Ｄ参照）でＮＯと判断され、ステップＳ６９で部分素線長Ｓｆが算出される。その後、ステップＳ３８〜Ｓ４０の処理を経て、ステップＳ４１でＮＯと判断され、ステップＳ４６に進む。
【００４６】
ステップＳ４６では、外側エッジ関数ｅｏ（θ）と内側エッジ関数ｅｉ（θ）を作成する。外側エッジ関数ｅｏ（θ）は、ステップＳ５６（図２Ｃ参照）で記憶された座標値群ｅｏ（θｊ）と、ステップＳ３８で記憶された座標値群ｅｏ（３６０×Ｋ＋θｋ）とを、θ−ｒ座標系でつなぎ合わせて近似することにより作成される。同様に、内側エッジ関数ｅｉ（θ）は、ステップＳ５３（図２Ｃ参照）で記憶された座標値群ｅｉ（θｊ）と、ステップＳ３８で記憶された座標値群ｅｉ（３６０×Ｋ＋θｋ）とを、θ−ｒ座標系でつなぎ合わせて近似することにより作成される。ステップＳ４６の処理が終了すると、外側・内側エッジ関数の作成処理が終了する。
【００４７】
図２Ａに戻って説明を続ける。ステップＳ１６で外側・内側エッジ関数の作成処理が終了すると、ステップＳ１８では、ステップＳ１６で記憶されたエッジ関数長さＬ（図２ＢのステップＳ３９参照）が下限閾値を超えるか否か判断する。ここで、下限閾値は、渦巻きばね３０の巻き数の下限値（単位は角度［°］）であり、コンピュータ２２に予め登録されている。エッジ関数長さＬが下限閾値を超える場合（ステップＳ１８でＹＥＳ）は、ステップＳ２０に進む。一方、エッジ関数長さＬが下限閾値以下の場合（ステップＳ１８でＮＯ）は、ステップＳ２８に進む。なお、ステップＳ１８でＮＯの場合とは、例えば、渦巻きばね３０の巻き数が不足しているか（ケース１）、隣り合う素線同士が接触しているか（ケース２）、隣り合う素線の間に異物が挟まっている（ケース３）場合などが考えられる。
ステップＳ１８でＮＯと判断した後のステップＳ２８では、渦巻きばね３０を不良品と判定し、不良箇所をディスプレイ２０の渦巻きばね画像に反映させる。具体的には、ケース２、３の場合は、ステップＳ４０（図２Ｂ参照）で記憶された位置変数θｐは、接触箇所又は異物がある箇所を表している。このため、ステップＳ２８では、（θｐ，ｅｉ（θｐ））又は（θｐ，ｅｏ（θｐ））を極座標逆変換して、ｘｙ平面上における接触箇所又は異物がある箇所を算出し、これら不良箇所をディスプレイ２０の渦巻きばね画像に反映させる。
【００４８】
次に、ステップＳ２０では、ステップＳ１６で作成した外側エッジ関数ｅｏ（θ）と内側エッジ関数ｅｉ（θ）から、線間隙間関数ρ１(θ)を算出する。図５に、線間隙間関数ρ１(θ)の一例を示す。線間隙間関数ρ１(θ)は、次の式；ρ１(θ)＝ｅｉ（θ＋３６０°）−ｅｏ（θ）によって定義される。線間隙間関数ρ１(θ)は、渦巻きばね３０の隣り合う素線間の隙間を表す関数である。
【００４９】
次に、ステップＳ２２では、メモリから下限閾値関数ρ１ｍｉｎ(θ)を読み出して、検査対象となる角度範囲において線間隙間関数ρ１(θ)＞下限閾値関数ρ１ｍｉｎ(θ)が成り立つか否かを判定する。上記不等式が成り立つ場合（ステップＳ２２でＹＥＳ）は、ステップＳ２４に進み、不成立の場合（ステップＳ２２でＮＯ）は、ステップＳ２８で渦巻きばね３０が不良品であると判定する（後述）。
【００５０】
ステップＳ２４では、メモリから上限閾値関数ρ１ｍａｘ(θ)を読み出して、検査対象となる角度範囲において、線間隙間関数ρ１(θ)＜上限閾値関数ρ１ｍａｘ(θ)が成り立つか否かを判定する。上記不等式が成り立つ場合（ステップＳ２４でＹＥＳ）は、ステップＳ２６に進み、不成立の場合（ステップＳ２４でＮＯ）は、ステップＳ２８で渦巻きばね３０が不良品であると判定する（後述）。
【００５１】
ステップＳ２２、Ｓ２４でＮＯと判断した後のステップＳ２８では、渦巻きばね３０を不良品と判定し、不良箇所をディスプレイ２０の渦巻きばね画像に反映させる。具体的には、線間隙間関数ρ１(θ)が異常値となるときのθをθｅｒｒとし、ρ１(θｅｒｒ)に対応する外側・内側エッジ関数の座標値（θｅｒｒ，ｅｏ（θｅｒｒ））、（θｅｒｒ，ｅｉ（θｅｒｒ））を特定する。そして、当該座標値を極座標逆変換して、ｘｙ平面上における不良箇所を算出し、当該不良箇所をディスプレイ２０の渦巻きばね画像に反映させる。
【００５２】
ステップＳ２６では、ステップＳ２２、Ｓ２４の判定結果に基づいて、渦巻きばね３０が良品であると判定する。図６に、線間隙間関数ρ１(θ)、下限閾値関数ρ１ｍｉｎ(θ)、及び上限閾値関数ρ１ｍａｘ(θ)の例を示す。図６の例では、約１２０°＜θ＜約２３０°の範囲において、ρ１(θ)＜ρ１ｍｉｎ(θ)となっている。このため、ステップＳ２２においてＮＯと判断され、ステップＳ２８で不良品と判定される。本実施例では、渦巻きばね３０の良否判定を、ρ１ｍｉｎ(θ)＜ρ１(θ)＜ρ１ｍａｘ(θ)が成立するか否かに基づいて行う。この構成によると、予めメモリに記憶させておく下限閾値関数ρ１ｍｉｎ(θ)及び上限閾値関数ρ１ｍａｘ(θ)を制御することにより、所望の線間隙間形状を有する渦巻きばねを製造することができる。これにより、渦巻きばねの特性を安定化することができる。
なお、下限閾値関数ρ１ｍｉｎ(θ)及び上限閾値関数ρ１ｍａｘ(θ)は、設計図又は設計データなどから決定されてもよいし、設計データのＦＥＭ解析結果などを元に決定されてもよい。下限閾値関数ρ１ｍｉｎ(θ)及び上限閾値関数ρ１ｍａｘ(θ)は、検査対象となる角度範囲において一定値であってもよい。また、ステップＳ２２及びＳ２４の処理は、いずれか一方のみが行われてもよい。
【００５３】
また、上記のステップＳ２０では線間隙間関数ρ１(θ)を算出したが、ρ１(θ)の代わりに、素線厚み関数ρ２(θ)を算出してもよい。素線厚み関数ρ２(θ)は、次の式；ρ２(θ)＝ｅｏ（θ）−ｅｉ（θ）によって定義される。素線厚み関数ρ２(θ)は、渦巻きばね３０の素線の厚み（線材の板厚）を表す関数である。この場合、予めメモリに素線厚みの下限閾値関数ρ２ｍｉｎ(θ)及び上限閾値関数ρ２ｍａｘ(θ)を記憶しておき、ステップＳ２２では、ρ２(θ)＞ρ２ｍｉｎ(θ)が成り立つか否かを判定してもよい。ステップＳ２４では、ρ２(θ)＜ρ２ｍａｘ(θ)が成り立つか否かを判定してもよい。
或いは、ステップＳ２０では、線間隙間関数ρ１(θ)と素線厚み関数ρ２(θ)の両方を算出し、ステップＳ２２、Ｓ２４では、両方の関数について上記不等式を満たしているか否か判定してもよい。
【００５４】
ここで、隣り合う素線同士が接触している場合について説明する。図７に、隣り合う素線同士が接触点Ｃｔにおいて接触している渦巻きばね３０の撮影画像を示し、図８に、当該渦巻きばね３０の極座標画像を示す。図７、図８から明らかなように、隣り合う素線同士が接触していると、極座標画像において、隣り合う縞状の画素群同士が接触する。この例では、画素群４０と画素群４２が接触しているため、コンピュータ２２は、逆方向トレース処理（図２Ｃ参照）のステップＳ５５でＮＯと判断し、ステップＳ５９で部分素線長Ｓｒを算出する（逆方向トレースは接触点Ｃｔで終了）。そして、ステップＳ３３〜Ｓ３６（図２Ｂ参照）の処理を経て、順方向トレース処理（図２Ｄ参照）を開始する。その後、コンピュータ２２は、ステップＳ６２でＮＯと判断し、ステップＳ６９で部分素線長Ｓｆを算出する（順方向トレースは接触点Ｃｔで終了）。続いて、ステップＳ３８〜Ｓ４０（図２Ｂ参照）の処理を経て、ステップＳ４１でＮＯと判断し、トレースしたところまでの外側・内側エッジ関数を作成する。このとき、エッジ関数長さＬ＝Ｓｒ＋Ｓｆである。このため、コンピュータ２２はステップＳ１８（図２Ａ参照）でＮＯと判断し、ステップＳ２８で当該渦巻きばね３０は不良品であると判定する。なお、上記の判定方法の代わりに、画素群Ａを特定する処理を設けて、画素群４０の逆方向トレース中に画素群Ａを構成する画素の座標値を検出した場合は、逆方向トレースを終了する構成としてもよい。同様に、画素群Ｂを特定する処理を設けて、画素群４８（図１０では画素群４６）の順方向トレース中に画素群Ｂを構成する画素の座標値を検出した場合は、順方向トレースを終了する構成としてもよい。
【００５５】
上記の形状測定装置１０の効果を説明する。隣り合う素線間の隙間（以下、線間隙間とも称する）が不自然な形状になっていると、渦巻きばねは要求性能を満たすことができない。例えば、線間隙間が狭すぎると、素線同士が接触して異音が発生したり、ヒステリシスが増大したり、折損が生じる場合がある。一方、線間隙間が広すぎると、規定されたトルクを確保できない場合がある。従来の検査方法では、このような渦巻きばねであっても、特定の部位の形状が良品の判定基準を満たしていれば良品と判定されてしまうため、検査方法に問題があった。これに対し、本明細書が開示する形状測定装置１０では、コンピュータ２２が線間隙間関数ρ１(θ)を算出する。これにより、従来では検査されていなかった線間隙間を検査することが可能となる。このため、渦巻きばね３０の形状を適切に測定でき、結果として渦巻きばねの品質検査を適切に行うことが可能となる。
また、渦巻きばねの中には、素線の厚みが一定ではない特殊な形状のものがある（例えば、図２７に示すような、内フック及び外フックだけ素線の厚みが大きい渦巻きばね）。このような渦巻きばねの形状を適切に測定するためには、素線の厚みを測定することが求められる。上記の形状測定装置１０では、コンピュータ２２が素線厚み関数ρ２(θ)を算出する。これにより、従来では検査されていなかった素線厚みを検査することが可能となり、渦巻きばねの形状を適切に測定できる。
【００５６】
また、上記の形状測定装置１０では、線間隙間形状及び／又は素線厚みの良否判定が、予めメモリに記憶された閾値関数（ρ１ｍｉｎ(θ)、ρ１ｍａｘ(θ)、ρ２ｍｉｎ(θ)、ρ２ｍａｘ(θ)）を基準に行われる。このため、渦巻きばね３０の品質を定量的に判定できる。
【００５７】
また、上記の形状測定装置１０では、コンピュータ２２は撮影画像を極座標変換して極座標画像を作成する。線間隙間関数ρ１(θ)及び／又は素線厚み関数ρ２(θ)は、極座標画像の素線と背景との境界をトレースすることにより算出される。境界をトレースするアルゴリズムは、画像のノイズに強く、比較的シンプルに構築できる。このため、極座標画像にある程度のノイズが含まれていても境界を正確にトレースできる。また、線間隙間関数ρ１(θ) 及び／又は素線厚み関数ρ２(θ)を比較的短時間で算出できる。このため、実施例１のような極座標画像を用いた形状測定方法は、インラインでの検査に適している。
【００５８】
次に、変形例１〜変形例４において、実施例１のステップＳ２２、Ｓ２４の処理の代わりとなる良否判定方法及び定量的評価方法について説明する。なお、以下の変形例では同一の文字を使用する場合がある。変形例ごとに文字の定義がある場合はその定義に従い、特に定義がない場合は共通の定義に従う。
【００５９】
（変形例１）
本変形例では、まず、登録工程で、任意の方法により良品と判定された渦巻きばねをＮ個準備し（例えば、Ｎ＝３００）、実施例１のステップＳ１０〜Ｓ２０の処理を行って、それぞれの線間隙間関数ρ１ｎ（θ）（ｎ＝１〜Ｎ）を算出する。そして、これらの線間隙間関数ρ１ｎ（θ）の平均μ（θ）及び標準偏差σ（θ）を算出し、これらを用いて以下の数１、数２の判別関数を作成し、当該判別関数をコンピュータ２２のメモリに登録する。ここで、以下の数式におけるθｉ（ｉ：０〜ｍ、ｍ：整数）は、ｓ°間隔ごとの角度を表し（即ち、θｉ＝θ０＋ｉ・ｓ）、ｋは任意に設定される定数を表す。
【数１】
0006576859.tif 000002
【数２】
0006576859.tif 000003
そして、渦巻きばね検査工程、あるいは製造工程では、測定対象となる渦巻きばね３０の線間隙間関数ρ１(θ)を算出し、メモリに記憶された判別関数を用いて当該関数ρ１(θ)のＤｓを算出する。Ｄｓ＝１の場合は良品と判定し（ステップＳ２６）、Ｄｓ＝０の場合は不良品と判定する（ステップＳ２８）。図１１に、線間隙間関数ρ１(θ)と、平均μ（θｉ）及び標準偏差σ（θｉ）との関係を表すグラフを示す。図１１のグラフでは、θ０＝１０°、ｓ＝４５°、ｋ＝５．０に設定されている。図１１のグラフでは、各θｉにおけるＤ（θｉ）はいずれも１であるため、Ｄｓ＝１となり、測定対象の渦巻きばね３０は良品と判定される。ｓ及びｋの値を小さくするほど良否判定の判定基準が厳しくなる。なお、平均μ（θ）及び標準偏差σ（θ）は、設計図又は設計データから決定されてもよいし、設計データのＦＥＭ解析結果などを元に決定されてもよい。
さらに、渦巻きばね３０の線間隙間が良品と比べてどれだけ変形しているかは、以下の数３に示すプラス変形度Ｔｒ+(θi)、及び数４に示すマイナス変形度Ｔｒ−(θi)を用いて定量的に評価することができる。プラス変形度Ｔｒ+(θi)は、角度θiにおける渦巻きばね３０の線間隙間が「良品と比べてどれだけ大きいか」を定量化する尺度である。数４で示すマイナス変形度Ｔｒ−(θi)は、角度θiにおける渦巻きばね３０の線間隙間が「良品と比べてどれだけ小さいか」を定量的に評価するための尺度である。
【数３】
0006576859.tif 000004
【数４】
0006576859.tif 000005
コンピュータ２２は、数３、数４を用いてプラス変形度Ｔｒ+(θi)、マイナス変形度Ｔｒ−(θi)を算出し、「渦巻きばね３０のどの部分でどれだけ変形が発生しているか」をディスプレイ２０に表示する。渦巻きばね製造工程の作業者は、ディスプレイ２０に表示された渦巻きばねの変形度Ｔｒ+(θi)、Ｔｒ−(θi)を確認し、渦巻きばね成形装置の成形パラメータを修正することにより、渦巻きばね製品の品質を改善することができる。
【００６０】
（変形例２）
本変形例では、公知の手法であるマハラノビス田口法を用いて渦巻きばね３０の良否を判定する。具体的には、まず、登録工程で、任意の方法により良品と判定された渦巻きばねをＮ個準備し（例えば、Ｎ＝３００）、それぞれの線間隙間関数ρ１ｎ（θ）（ｎ＝１〜Ｎ）を算出する。そして、以下の数５を用いて、θ＝θｉ（ｉ：０〜ｍ、ｍ：整数）におけるＮ個の線間隙間ρ１ｎ（θｉ）の平均μ（θｉ）及び分散｛σ（θｉ）｝２を算出する。ここで、θｉは、ｓ°間隔ごとの角度を表す（即ち、θｉ＝θ０＋ｉ・ｓ）。渦巻きばねの良品形状を登録する工程では、品質管理者が「渦巻きばね形状登録ソフト」を操作し、各々の渦巻きばね品番ごとに算出された平均μ（θｉ）及び標準偏差σ（θｉ）を、コンピュータ２２のメモリに記憶させる。
【数５】
0006576859.tif 000006
次に、以下の数６を用いてＮ個の線間隙間関数ρ１ｎ（θ）のそれぞれについて正規化平均隙間Ｘｉ，ｎを算出する。
【数６】
0006576859.tif 000007
続いて、以下の数７〜数９を用いて相関行列Ｒを算出する。ここで、ｋはθｉの個数（即ち、ｋ＝ｍ＋１）を表す。また、ｐ、ｑはｎ＝１〜ｋのうちの任意の数を示す。
【数７】
0006576859.tif 000008
【数８】
0006576859.tif 000009
【数９】
0006576859.tif 000010
続いて、以下の数１０を用いて相関行列Ｒの逆行列Ａを算出する。渦巻きばねの良品形状を登録する工程では、品質管理者が「渦巻きばね形状登録ソフト」を操作し、各々の渦巻きばね品番ごとに算出された逆行列Ａをコンピュータ２２のメモリに記憶させておく。
【数１０】
0006576859.tif 000011
【００６１】
次に、渦巻きばねの検査工程（または製造工程）の処理について説明する。コンピュータ２２のメモリには、予め以下の数１１、数１２の数式が記憶されている。渦巻きばねの検査工程（製造工程）では、測定対象となる渦巻きばね３０の線間隙間関数ρ１(θ)を算出し、以下の数１１を用いて線間隙間ρ１（θｉ）の正規化平均隙間Ｘｉを算出する。続いて、数１２の数式に、正規化平均隙間Ｘｉ及びメモリに記憶されている逆行列Ａを代入して、マハラノビス距離Ｄを算出する。
【数１１】
0006576859.tif 000012
【数１２】
0006576859.tif 000013
コンピュータ２２のメモリには、予めマハラノビス距離Ｄの閾値が記憶されている。数１２を用いてマハラノビス距離Ｄを算出したら、メモリに記憶されている閾値と比較する。Ｄ≦閾値であれば良品と判定し（ステップＳ２６）、Ｄ＞閾値であれば不良品と判定する（ステップＳ２８）。本変形例の判定方法によると、不良品の判定基準の設定が困難な場合であっても適切に良否判定を行うことができる。
ここで、マハラノビス距離Ｄは、渦巻きばね３０の変形度を定量的に評価する尺度とみなすことができる。コンピュータ２２は、変形度Ｄをディスプレイ２０に表示するように構成されていてもよい。この場合、渦巻きばね３０の製造工程の作業者は、ディスプレイ２０に表示された変形度Ｄを確認して、渦巻きばね成形装置の成形パラメータを修正することにより、渦巻きばね製品の品質を改善することができる。この構成は、変形例３に適用されてもよい。
【００６２】
（変形例３）
本変形例においても、まず、任意の方法により良品と判定された渦巻きばねをＮ個準備し（例えば、Ｎ＝３００）、それぞれの線間隙間関数ρ１ｎ（θ）（ｎ＝１〜Ｎ）を算出する。次に、各線間隙間関数ρ１ｎ（θ）のＦＦＴスペクトルＦｎ（ｉ）（ｉ：１〜Ｍ）を算出し、以下の数１３を用いてＮ個のＦＦＴスペクトルＦｎ（ｉ）の平均μ（ｉ）及び分散｛σ（ｉ）｝２を算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、各渦巻きばね品番ごとに算出された平均μ（ｉ）及び標準偏差σ（ｉ）をコンピュータ２２のメモリに予め記憶させておく。
【数１３】
0006576859.tif 000014
次に、以下の数１４を用いてＮ個の線間隙間関数ρ１ｎ（θ）のそれぞれについて正規化平均隙間Ｘｉ，ｎを算出する。
【数１４】
0006576859.tif 000015
続いて、変形例２の数７〜数９を用いて相関行列Ｒを算出し、変形例２の数１０を用いて相関行列Ｒの逆行列Ａを算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、各渦巻きばね品番ごとに算出された逆行列Ａをコンピュータ２２のメモリに予め記憶させておく。
【００６３】
コンピュータ２２のメモリには、以下の数１５及び変形例２の数１２と同一の数式が記憶されている。渦巻きばねの検査工程（または製造工程）では、、測定対象となる渦巻きばね３０の線間隙間関数ρ１(θ)を算出し、そのＦＦＴスペクトルＦ（ｉ）を求め、以下の数１５を用いて当該ＦＦＴスペクトルＦ（ｉ）の正規化平均隙間Ｘｉを算出する。ここで、渦巻きばね３０が変形している場合は、ＦＦＴスペクトルＦ（ｉ）の低周波成分（ｉ＝ｍ１〜ｍ２、１≦ｍ１、ｍ２＜Ｍ）に変形の特徴が現れる。このため、本変形例では、ｉ＝ｍ１〜ｍ２の範囲における正規化平均隙間Ｘｉが算出される。正規化平均隙間Ｘｉを算出したら、数１２の数式に、Ｘｉ及びメモリに記憶されている逆行列Ａを代入して、マハラノビス距離Ｄを算出する。
【数１５】
0006576859.tif 000016
コンピュータ２２のメモリには、予めマハラノビス距離Ｄの閾値が記憶されている。数１２を用いてマハラノビス距離Ｄを算出したら、メモリに記憶されている閾値と比較する。Ｄ≦閾値であれば良品と判定し（ステップＳ２６）、Ｄ＞閾値であれば不良品と判定する（ステップＳ２８）。
【００６４】
（変形例４）
本変形例では、変形例３と同様の方法でＮ個の良品の渦巻きばねの各線間隙間関数ρ１ｎ（θ）のＦＦＴスペクトルＦｎ（ｉ）（ｉ：１〜Ｍ）を算出する。渦巻きばねの良品形状を登録する工程では、以下の数１６、数１７を用いてＦＦＴスペクトルＦｎ（ｉ）の低周波成分の低周波パワーｐｎの平均μと分散σ２を算出する。品質管理者は「渦巻きばね形状登録ソフト」を操作し、渦巻きばね品番ごとに算出された平均μ及び標準偏差σをコンピュータ２２のメモリに記憶させておく。
【数１６】
0006576859.tif 000017
【数１７】
0006576859.tif 000018
次に、検査工程（または製造工程）では、測定対象となる渦巻きばね３０の線間隙間関数ρ１(θ)を算出し、そのＦＦＴスペクトルＦ（ｉ）を求め、以下の数１８を用いて低周波パワーｐを算出する。
【数１８】
0006576859.tif 000019
コンピュータ２２のメモリには、予め以下の数１９の不等式が記憶されている。ここで、ｋは任意に設定される定数である。数１８を用いて低周波パワーを算出したら、以下の不等式に代入し、不等式が成り立つか否かを判定する。不等式が成り立つ場合は良品と判定し（ステップＳ２６）、不成立の場合は不良品と判定する（ステップＳ２８）。
【数１９】
0006576859.tif 000020
【００６５】
（変形例５）
実施例１では、ＣＣＤカメラ１６により撮影された撮影画像（の二値化画像）を画像変換して極座標画像を作成したが、画像変換の対象は撮影画像に限られず、例えばレーザ変位計などにより測定された測定データであってもよい。本変形例では、レーザ変位計により渦巻きばね３０を測定したときの測定データを用いて線間隙間関数ρ１(θ)及び素線厚み関数ρ２(θ)を算出する２種類の方法について説明する。
【００６６】
（方法１）
本変形例の形状測定装置は、図１のＣＣＤカメラ１６の代わりに、図１３に示すレーザ変位計５０を備える。図１３に示すように、レーザ変位計５０は、レーザ光を照射する照射部５２と、対象物（渦巻きばね３０）で反射した反射光を受光する受光面５４を有する。レーザ変位計５０はｘ方向に移動可能である。渦巻きばね３０は、ｘｙ平面上に載置面を有するステージ（図示省略）上に配置されている。ステージはｙ方向に移動可能である。レーザ変位計５０は渦巻きばね３０の真上に配置され、その照射部５２は下方（ｚ方向）に向かってレーザ光を照射する。
図１２は、本変形例の形状測定装置による渦巻きばね３０の形状測定の流れを示すフローチャートである。まず、ステップＳ７０において、レーザ変位計５０により、渦巻きばね３０の形状測定を行う。具体的には、ステージを固定した状態でレーザ変位計５０をｘ方向に移動させて、渦巻きばね３０のｘ方向における一端から他端まで、渦巻きばね３０にレーザ光を照射する。この処理を、ステージをｙ方向に移動させながら繰り返し、渦巻きばね３０の全体にレーザ光を照射する。
【００６７】
次に、ステップＳ７２では、ステップＳ７０で測定した測定データに基づいて、３次元データを作成する。具体的には、ステージを固定してレーザ光を照射したときの測定データから、図１４に示すような渦巻きばね３０の断面データを作成する。この断面データは、ｙ方向に沿って複数個作成される。これらの断面データを再構成して、図１５に示すような３次元データを作成する。なお、このステップＳ７２から後述するステップＳ８６までの処理は、コンピュータ２２によって実行される。
【００６８】
続いて、ステップＳ７４では、ステップＳ７２で作成した３次元データを極座標変換して、図１６に示すような３次元の極座標データを作成する。具体的には、３次元データから中心軸（例えば重心）を算出し（図１５の破線参照）、中心軸を中心として、３次元データを極座標変換する。
次いで、ステップＳ７６では、ステップＳ７４で作成した３次元の極座標データを所定の角度ごとにｒｚ平面（半径−高さ平面）で切断して、図１７に示すようなｒｚ断面のグラフを作成する。図１７は、θ＝６０°におけるｒｚ断面のグラフである。続いて、ステップＳ７８では、ステップＳ７６で作成したｒｚ断面のグラフから線間隙間を算出し、線間隙間関数ρ１(θ)を算出する。例えば、図１７のグラフからは、θ＝６０°、４２０°、７８０°における線間隙間ρ１(６０°)、ρ１(４２０°)、ρ１(７８０°)が算出される。この処理を各ｒｚ断面のグラフに対して行い、得られた線間隙間をつなげて近似することにより、線間隙間関数ρ１(θ)を算出する。続いて、ステップＳ８０〜Ｓ８６では、渦巻きばね３０の良否判定を行う。これらの処理は実施例１のステップＳ２２〜Ｓ２８の処理（図２Ｂ参照）と同様である。
【００６９】
なお、ステップＳ７８では、線間隙間関数ρ１(θ)の代わりに、隣り合う素線の芯線間の距離（ピッチ）を表すピッチ関数ρ３(θ)を算出してもよい。具体的には、ステップＳ７６のｒｚ断面のグラフから芯線（素線の幅方向中央を通る線）を抽出して芯線間の距離を算出することによりピッチ関数ρ３(θ)を算出してもよい。通常の渦巻きばね３０では、素線厚みは内フック３２から外フック３４にかけて略一定である。ピッチ＝線間隙間＋素線厚みであるため、素線厚みが略一定であれば、線間隙間関数ρ１(θ)とピッチ関数ρ３(θ)の挙動は略同一となる。このため、ピッチ関数ρ３(θ)に基づいて良否判定する方法も有用である。
【００７０】
（方法２）
この方法では、ステップＳ７２までは上記方法１と同様の処理を行う。そして、ステップＳ７２で作成した３次元データを２次元画像に変換する。具体的には、３次元データのｚ軸の値を画像の濃淡に変換する。即ち、ｚ軸の値が閾値より小さい座標値は濃度値０に変換し、ｚ軸の値が閾値以上の座標値は濃度値１に変換する。これにより、二値化した極座標画像が作成される。その後の処理は、実施例１のステップＳ１６以降の処理（図２Ａ、図２Ｂ参照）と同様である。
【００７１】
なお、変形例５ではレーザ変位計５０を用いて形状測定する方法を説明したが、変位計の種類はこれに限られない。例えば、パターン投影式センサ、波長コンフォーカル方式を用いた光学センサ、パルスレーザ型の３Ｄ−ＴＯＦカメラ、平行光ＬＥＤを搭載した変位センサを用いてもよい。即ち、照射光はレーザ光に限られず、マイクロ波、ミリ波、テラヘルツ波などの電波（電磁波）を含む、光全般であってもよい。
また、変形例１〜４の良否判定方法又は定量的評価方法は、変形例５の形状測定方法にも適用し得る。また、後述する実施例２、実施例３及びこれらの変形例にも適用し得る。
【実施例２】
【００７２】
次に、図１８〜２０を参照して実施例２の形状測定装置について説明する。以下では、実施例１と相違する点についてのみ説明し、実施例１と同一の構成についてはその詳細な説明を省略する。実施例３についても同様である。なお、実施例２、実施例３では、第２タイプの渦巻きばね３０を例にとって説明するが、第１タイプの渦巻きばね３０にも同様の測定方法を適用し得る。
【００７３】
図１８は、本実施例の形状測定装置による渦巻きばね３０の形状測定の流れを示すフローチャートである。本実施例で測定される渦巻きばね３０は、素線厚み（線材の板厚）が略一定であることを前提としている。まず、ステップＳ９０において、実施例１のステップＳ１０（図２Ａ参照）と同様の処理を行って渦巻きばね３０を撮影する。次に、ステップＳ９１では、ステップＳ９０で撮影された撮影画像から芯線を抽出して（芯線化して）芯線化画像を作成する。ステップＳ９２では、芯線化画像の作成に成功したか否かを判断する。芯線化画像を作成する処理は、公知の方法（例えば、特開２０１３−１９８４５）を用いて行うことができる。ここで、隣り合う素線同士が接触している渦巻きばね（図７参照）では、接触点Ｃｔにおいて芯線が枝分かれすることになり、芯線が一通りに決まらない。この場合、芯線化画像の作成に失敗したと判断し（ステップＳ９２でＮＯ）、ステップＳ１０６に進む。一方、図１９に示すように、渦巻きばね３０の内フック３２から外フック３４まで芯線を抽出できた場合は、芯線化画像の作成に成功したと判断し（ステップＳ９２でＹＥＳ）、ステップＳ９４に進む。なお、このステップＳ９１から後述するステップＳ１０６までの処理は、コンピュータ２２によって実行される。
【００７４】
ステップＳ９１の処理により抽出された芯線は、芯線化画像の画素の座標値群によって表されている。ステップＳ９４では、これらの座標値群をトレースして番号付けする。具体的には、内フック３２の先端点から外フック３４の先端点に向かって、順に（ｘ０，ｙ０）、（ｘ１，ｙ１）・・・（ｘｎ−１，ｙｎ−１）と各画素の座標値に番号を付す。この処理は、芯線化画像を構成する全ての画素に対して行ってもよいし、等間隔に位置する画素に対して行ってもよい。以下では、番号付けされた座標値群を、芯線系列とも称する。
次に、ステップＳ９６では、図２０に示すように、芯線系列上の各座標値（ｘｉ，ｙｉ）（ｉ＝０〜ｎ−１）の法線ベクトルを算出する。例えば、座標値（ｘｋ，ｙｋ）の法線ベクトルを求めるときは、座標値（ｘｋ，ｙｋ）及びその近傍の座標値群を直線近似し、当該直線に直交する外向きのベクトルを、座標値（ｘｋ，ｙｋ）の法線ベクトルとして算出する。法線ベクトルの始点は、座標値（ｘｋ，ｙｋ）である。なお、「外向きのベクトル」とは、渦巻きばね３０の中心（図示省略）から離れる方向に延びるベクトルを表す。
【００７５】
続いて、ステップＳ９８では、ステップＳ９６で算出したｎ個の法線ベクトルを用いて、ｎ個の線間隙間ρ１(θｉ)を算出し、これに基づいて線間隙間関数ρ１(θ)を算出する。具体的には、まず、座標値（ｘｋ，ｙｋ）の法線ベクトルが最初に交わる芯線（即ち、座標値（ｘｋ，ｙｋ）を含む芯線とその外周側で隣り合う芯線）を構成する座標値群のうち、座標値（ｘｋ，ｙｋ）に最も近い座標値（ｘＬ１，ｙＬ１）（図２０参照）を選択する。次に、座標値（ｘｋ，ｙｋ）と座標値（ｘＬ１，ｙＬ１）との距離から素線厚みｄを引いた値をｉ＝ｋにおける線間隙間ρ１(θｋ)として算出する（即ち、ρ１(θｋ)＝{（ｘｋ−ｘＬ１）２＋（ｙｋ−ｙＬ１）２}１／２−ｄ）。このようにして算出されたｎ個の線間隙間ρ１(θｉ)をつなげて近似することにより、線間隙間関数ρ１(θ)を算出する。
次いで、ステップＳ１００〜Ｓ１０６では、渦巻きばね３０の良否判定を行う。これらの処理は実施例１のステップＳ２２〜Ｓ２８の処理（図２Ｂ参照）と同様である。
【００７６】
実施例２の構成によっても、実施例１と同様の効果を奏することができる。また、本実施例では芯線系列の各座標値について法線ベクトルを算出し、これにより芯線間の距離を算出する。このため、線間隙間（又はピッチ）を正確に算出することができ、渦巻きばね３０の線間隙間形状の品質検査精度を向上できる。実施例２のような芯線化画像を用いた形状測定方法は、例えば、設計時のＦＥＭ解析などの高い精度が要求される用途に適している。
【００７７】
なお、本実施例では渦巻きばね３０の素線厚みｄが略一定であるため、線間隙間ρ１(θｉ)の代わりにピッチρ３(θｉ)を算出し、これに基づいてピッチ関数ρ３(θ)を算出してもよい。この場合、ｉ＝ｋにおけるピッチρ３(θｋ)は、次式；ρ３(θｋ)＝{（ｘｋ−ｘＬ１）２＋（ｙｋ−ｙＬ１）２}１／２のように定義される。
【００７８】
なお、本実施例においても、実施例１の変形例５の方法２と同様の方法を用いることができる。即ち、レーザ変位計５０（図１３参照）で測定した測定データから作成された３次元データを２次元画像に変換し、その２次元画像に対してステップＳ９１以降の処理を行ってもよい。
【００７９】
（変形例１）
本変形例では、図２１を参照して、ステップＳ９８における線間隙間関数ρ１(θ)の別の算出方法について説明する。まず、図２１に示すように、座標値（ｘｋ，ｙｋ）の法線ベクトルが最初に交わる芯線を構成する座標値群のうち、座標値（ｘｋ，ｙｋ）に最も近い座標値（ｘＬａ，ｙＬａ）と、二番目に近い座標値（ｘＬｂ，ｙＬｂ）を選択する。次に、座標値（ｘＬａ，ｙＬａ）と座標値（ｘＬｂ，ｙＬｂ）を通る直線Ｌ（図２１の破線参照）の式を算出する。そして、座標値（ｘｋ，ｙｋ）と直線Ｌとの距離から素線厚みｄを引いた値をｉ＝ｋにおける線間隙間ρ１(θｋ)として算出する。このようにして算出されたｎ個の線間隙間ρ１(θｉ)から線間隙間関数ρ１(θ)を算出してもよい。なお、２つの座標値を直線近似する代わりに、スプライン曲線又は二次曲線で補間してもよい。二次曲線で補間する場合は、上記２つの座標値に加え、三番目に近い座標値も選択し、これら３つの座標値を用いて近似する。なお、素線厚みｄを引かずにピッチρ３(θｋ)を算出し、ピッチ関数ρ３(θ)を算出してもよい。
【実施例３】
【００８０】
次に、図２２〜図２５を参照して実施例３の形状測定装置について説明する。図２２は、本実施例の形状測定装置による渦巻きばね３０の形状測定の流れを示すフローチャートである。まず、ステップＳ１１０において、実施例１のステップＳ１０（図２Ａ参照）と同様の処理を行って渦巻きばね３０を撮影する。次に、ステップＳ１１１では、ステップＳ１１０で撮影された撮影画像から極座標変換は行わずに輪郭線を抽出して輪郭線画像を作成する。輪郭線画像を作成する処理は、公知の方法（例えば、特開２００９−２５７９５０や特開２０１３−１９８４５）を用いて行うことができる。ステップＳ１１１の処理により抽出された輪郭線は、輪郭線画像の画素の座標値群によって表されている。ステップＳ１１２では、図２４に示すように、ステップＳ１１１の処理により抽出された輪郭線の座標値群をトレースして番号付けする。具体的には、輪郭線の内フック端点から外フック端点までを一巡するように、順に（ｘ０，ｙ０）、（ｘ１，ｙ１）・・・（ｘ２ｎ−１，ｙ２ｎ−１）と各画素の座標値に番号を付す。この処理は、輪郭線画像を構成する全ての画素に対して行ってもよいし、等間隔に位置する画素に対して行ってもよい。なお、このステップＳ１１１から後述するステップＳ１２８までの処理は、コンピュータ２２によって実行される。
【００８１】
ステップＳ１１４では、図２４に示すように、これらの番号付けされた座標値群を外側輪郭線を構成する座標値群（破線参照）と、内側輪郭線を構成する座標値群（実線参照）とに分離する。この処理は、例えば、公知の方法により２つの内フック端点（内フックの先端面と側面とにより構成される２箇所の角部）及び２つの外フック端点（外フックの先端面と側面とにより構成される２箇所の角部）を特定することにより行うことができる。以下では、外側輪郭線を構成する番号付けされた座標値群を、特に、外側輪郭線系列とも称する。次に、ステップＳ１１６では、ステップＳ１１４において番号付けされた座標値群を外側輪郭線を構成する座標値群と、内側輪郭線を構成する座標値群とに分離できたか否かを判断する。ここで、隣り合う素線同士が接触している渦巻きばね（図７参照）には、接触点Ｃｔが存在するため、外側輪郭線を構成する座標値群と内側輪郭線を構成する座標値群とを分離できない。この場合、輪郭線の分離に失敗したと判断し（ステップＳ１１６でＮＯ）、ステップＳ１２８に進む。一方、座標値群を外側輪郭線を構成する座標値群と内側輪郭線を構成する座標値群とに分離できた場合は、輪郭線の分離に成功したと判断し（ステップＳ１１６でＹＥＳ）、ステップＳ１１８に進む。
次に、ステップＳ１１８では、図２５に示すように、輪郭線系列上の各座標値（ｘｉ，ｙｉ）（ｉ＝０〜ｎ−１）の法線ベクトルを算出する。この処理は、実施例２のステップＳ９６の処理と同様である。
【００８２】
続いて、ステップＳ１２０では、ステップＳ１１８で算出したｎ個の法線ベクトルを用いて、ｎ個の線間隙間ρ１(θｉ)を算出し、これに基づいて線間隙間関数ρ１(θ)を算出する。具体的には、まず、座標値（ｘｋ，ｙｋ）の法線ベクトルが最初に交わる内側輪郭線（即ち、座標値（ｘｋ，ｙｋ）を含む外側輪郭線とその外周側で隣り合う内側輪郭線）を構成する座標値群のうち、座標値（ｘｋ，ｙｋ）に最も近い座標値（ｘＬ２，ｙＬ２）（図２５参照）を選択する。座標値（ｘｋ，ｙｋ）と座標値（ｘＬ２，ｙＬ２）との距離をｉ＝ｋにおける線間隙間ρ１(θｋ)として算出する（即ち、ρ１(θｋ)＝{（ｘｋ−ｘＬ２）２＋（ｙｋ−ｙＬ２）２}１／２）。このようにして算出されたｎ個の線間隙間ρ１(θｉ)をつなげて近似することにより、線間隙間関数ρ１(θ)を算出する。
次いで、ステップＳ１２２〜Ｓ１２８では、渦巻きばね３０の良否判定を行う。これらの処理は実施例１のステップＳ２２〜Ｓ２８の処理（図２Ｂ参照）と同様である。
実施例３の構成によっても、実施例１と同様の効果を奏することができる。
なお、本実施例においても、ステップＳ１２０では、実施例２の変形例１と同様の方法を用いて線間隙間関数ρ１(θ)を算出することができる。
【００８３】
（変形例１）
本変形例では、図２６〜図３１を参照して、線間隙間関数ρ１(θ)の代わりに素線厚み関数ρ２(θ)を算出する方法について説明する。図２６は、本変形例の形状測定装置による渦巻きばね３０の形状測定の流れを示すフローチャートである。図２６のステップＳ１３０〜ステップＳ１３６までの処理は、実施例３のステップＳ１１０〜ステップＳ１１６までの処理と同様である。図２７は、ステップＳ１３０で撮影された渦巻きばね３０の撮影画像を示す。図２７から明らかなように、本変形例で測定対象となる渦巻きばね３０は、素線厚みが一定ではない。図２８は、ステップＳ１３１で作成された輪郭線画像を示し、図２９は、ステップＳ１３６で輪郭線の分離に成功した場合（ステップＳ１３６でＹＥＳ）の外側輪郭線の座標値群（破線参照）と内側輪郭線の座標値群（実線参照）を示す。以下では、内側輪郭線を構成する番号付けされた座標値群を、特に、内側輪郭線系列とも称する。
次に、ステップＳ１３８では、図３０に示すように、内側輪郭線系列の中間の座標値における法線ベクトルを算出する。法線ベクトルの算出方法は、実施例３のステップＳ１１８と同様である。即ち、ステップＳ１３８で算出される法線ベクトルは、外向きのベクトル（渦巻きばね３０の中心から離れる方向に延びるベクトル）である。
【００８４】
続いて、ステップＳ１４０では、図３０に示すように、中間座標（ｘ（ｎ＋１）／２，ｙ（ｎ＋１）／２）の隣の座標（ｘ（ｎ＋１）／２−１，ｙ（ｎ＋１）／２−１）から、内側輪郭線系列の始点までの各座標値（ｘｉ，ｙｉ）（ｉ＝（ｎ＋１）／２−１〜０）の法線ベクトルを算出する。なお、座標値（ｘｉ，ｙｉ）を始点とする法線ベクトルには「外向きの法線ベクトル」と「内向きの法線ベクトル（即ち、渦巻きばね３０の中心に近づく方向に延びるベクトル）」の２種類がある。このステップでは、これら２種類の法線ベクトルのうち、「１つ前の座標値で算出された法線ベクトルとのなす角が小さい方の法線ベクトル」が選択される。
続いて、ステップＳ１４２では、図３１に示すように、内側輪郭線系列の中間座標値とその外側で隣り合う座標値から終点までの各座標値（ｘｉ，ｙｉ）（ｉ＝（ｎ＋１）／２＋１〜ｎ−１）の法線ベクトルを算出する。このステップにおいても、ステップＳ１４０と同様に、「１つ前の座標値で算出された法線ベクトルとのなす角が小さい方の法線ベクトル」が選択される。
【００８５】
次いで、ステップＳ１４４では、ステップＳ１３８〜Ｓ１４２で算出したｎ個の法線ベクトルを用いて、ｎ個の素線厚みρ２(θｉ)を算出し、これに基づいて素線厚み関数ρ２(θ)を算出する。具体的には、まず、座標値（ｘｋ，ｙｋ）の法線ベクトルが最初に交わる外側輪郭線（即ち、座標値（ｘｋ，ｙｋ）を含む内側輪郭線とその外周側で隣り合う外側輪郭線）を構成する座標値群のうち、座標値（ｘｋ，ｙｋ）に最も近い座標値（ｘＬ３，ｙＬ３）（図３０参照）を選択する。座標値（ｘｋ，ｙｋ）と座標値（ｘＬ３，ｙＬ３）との距離をｉ＝ｋにおける素線厚みρ２(θｋ)として算出する（即ち、ρ２(θｋ)＝{（ｘｋ−ｘＬ３）２＋（ｙｋ−ｙＬ３）２}１／２）。このようにして算出されたｎ個の素線厚みρ２(θｉ)をつなげて近似することにより、素線厚み関数ρ２(θ)を算出する。ステップＳ１４６〜Ｓ１５２までの処理は、実施例１のステップＳ２２〜Ｓ２８の処理と同様である。
なお、本変形例においても、ステップＳ１４４では、実施例２の変形例１と同様の方法を用いて素線厚み関数ρ２(θ)を算出することができる。
【００８６】
また、実施例３及びその変形例１においても、実施例１の変形例５の方法２と同様の方法を用いることができる。即ち、レーザ変位計５０（図１３参照）で測定した測定データから作成された３次元データを２次元画像に変換し、その２次元画像に対してステップＳ１１１以降の処理又はステップＳ１３２以降の処理を行ってもよい。
【００８７】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００８８】
例えば、上述した実施例では、極座標変換するときの原点として、渦巻きばね３０の重心Ｇを用いたが、本発明はこのような実施形態に限られない。例えば、極座標変換するときの原点は、渦巻きばね３０の内側ではなく、渦巻きばね３０の外側に設定してもよい。
【００８９】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は、複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００９０】
１０：形状測定装置、３０：渦巻きばね、３２：内フック、３４：外フック、４０、４２、４４、４６、４８：画素群
【図１】
0006576859.tif 000021
【図２Ａ】
0006576859.tif 000022
【図２Ｂ】
0006576859.tif 000023
【図２Ｃ】
0006576859.tif 000024
【図２Ｄ】
0006576859.tif 000025
【図３】
0006576859.tif 000026
【図４】
0006576859.tif 000027
【図５】
0006576859.tif 000028
【図６】
0006576859.tif 000029
【図７】
0006576859.tif 000030
【図８】
0006576859.tif 000031
【図９】
0006576859.tif 000032
【図１０】
0006576859.tif 000033
【図１１】
0006576859.tif 000034
【図１２】
0006576859.tif 000035
【図１３】
0006576859.tif 000036
【図１４】
0006576859.tif 000037
【図１５】
0006576859.tif 000038
【図１６】
0006576859.tif 000039
【図１７】
0006576859.tif 000040
【図１８】
0006576859.tif 000041
【図１９】
0006576859.tif 000042
【図２０】
0006576859.tif 000043
【図２１】
0006576859.tif 000044
【図２２】
0006576859.tif 000045
【図２３】
0006576859.tif 000046
【図２４】
0006576859.tif 000047
【図２５】
0006576859.tif 000048
【図２６】
0006576859.tif 000049
【図２７】
0006576859.tif 000050
【図２８】
0006576859.tif 000051
【図２９】
0006576859.tif 000052
【図３０】
0006576859.tif 000053
【図３１】
0006576859.tif 000054