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