(57)【要約】【課題】対象物の形状や撮像条件に影響されず、対象物の重心を正確に検出することができる重心検出方法を提供する。【解決手段】対象物の画素（２４５〜２６４）に対しては、画素数を１にし、またエッジ付近の画素（２６５）に対しては、０と１の間の値を画素数（０．８５４．．）に設定し、背景の画素に対しては画素数を０として各画素位置でのモーメントの総和を求め、また対象物の画素数の総和を求めて重心を演算する。このような構成では、対象物のエッジ付近の画素数を１画素に相当する画素数よりも小さな値に設定するので、エッジ付近のモーメントを１画素の分解能より細かな単位（サブピクセル単位）で演算することができ、対象物の重心を正確に求めることができる。【選択図】図５
2006155248.tif 000002
【特許請求の範囲】
【請求項１】
指定ウィンドウ領域内の画像データを画素ごとに多値化し、所定のしきい値以上の画素を対象物の画素としてその画素位置を求め、また対象物の画素に対して画素数を設定し、各画素位置におけるモーメントの総和と対象物の画素数の総和から対象物の重心を検出する重心検出方法において、
対象物のエッジ部以外の各画素に対しては、その画素数を第１の数値に、またエッジ部の画素に対してその画素数を第１の数値より小さな値で０より大きな第２の数値に設定して前記モーメントの総和並びに画素数の総和を求め、求めた各総和から対象物の重心を検出することを特徴とする対象物の重心検出方法。
【請求項２】
前記しきい値を第１のしきい値とし、該第１のしきい値より所定の値だけ大きい第２のしきい値を設定し、第１と第２のしきい値間の値を有する画素を、前記エッジ部の画素とすることを特徴とする請求項１に記載の対象物の重心検出方法。
【請求項３】
前記第１と第２のしきい値を判別分析法により求めることを特徴とする請求項１又は２に記載の対象物の重心検出方法。
【請求項４】
前記第２のしきい値以上の画素に対しては画素数を１に、第１のしきい値未満の画素に対しては画素数を０に、また第１と第２のしきい値間の画素に対しては画素数を１と０の間の値に設定することを特徴とする請求項１から３のいずれか１項に記載の対象物の重心検出方法。
【請求項５】
前記第１と第２のしきい値間の画素に対する画素数が第１と第２のしきい値に基づいて求められることを特徴とする請求項４に記載の対象物の重心検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象物の重心検出方法、更に詳細には、電子部品などの対象物の画像をサブピクセル単位（画素の分解能よりも細かな単位）で画像処理して対象物の重心を検出する方法に関する。
【背景技術】
【０００２】
従来から、電子部品実装機においては、部品供給装置で吸着された電子部品をＣＣＤカメラで撮像し、その画像を処理することにより、電子部品の重心（部品中心）を求め、吸着姿勢を補正して電子部品を回路基板に搭載することが行われている。
【０００３】
ここで、電子部品などの対象物を撮像して、その画像パターン（図形）の重心位置を検出する方法は、例えば特許文献１などで知られており、重心座標（ｐ，ｑ）は画像の各画素の濃度値を重みとして（二値画像の場合重みを１とする）、モーメントを用いて以下の式で表現できる。
【０００４】
ｐ＝Ｍ（１，０）／Ｍ（０，０），ｑ＝Ｍ（０，１）／Ｍ（０，０）
Ｍ（０，０）：図形の面積
Ｍ（１，０）：Ｙ軸に対するモーメント，Ｍ（０，１）：Ｘ軸に対するモーメント
電子部品実装機では、電子部品の重心を求める際に、電子部品を撮像し、所定のウィンドウ領域を設定してこのウィンドウ領域を多数のラインに沿って走査し、電子部品の画像を多値画像データとしており、例えば、図４（Ａ）には、１ライン分（２６１番目のライン；Ｙ座標）に対して「２４０」から「２７０」の画素位置（Ｘ座標）において多値化されたデータ（０〜２５５）が示されている。この多値画像データは、図４（Ｂ）に示したように、所定のしきい値（＝１０９）より小さなデータに対しては「０」とし、それ以上にものに対しては「２５５」として二値化し、続いて図４（Ｃ）に示すように、ノイズを除去した画像データを背景と対象物に分けて、対象物の最初と最後の座標（エッジ）を抽出し（図４（Ｄ））、対象物の画素に対してはその画素数（その画素の重みに相当）を１とし、また背景の画素に対してはその画素数を０として、１ライン分の各画素位置「２４０」〜「２７０」におけるモーメント（当該位置の画素数×座標値）の総和と、画素数（ピクセル数）の総和を求めている（図５の右側）。そして、これを全てのライン「２５５」から「２８５」に対して求めて、各ラインごとに得られたモーメントの総和と対象物の画素数の総和から重心を求めている（図７の右側）。
【特許文献１】特公平７−１１３９７５
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の二値画像データによる重心の検出は、撮像した対象物の画像データ上でのエッジ部分が１画素単位での処理となるため、すなわち、その画素に対する重みを１画素に対応する値（画素数１）にして重心を演算しているために、ミクロン単位での精度が求められる現在では、対象物や撮像状態によっては十分な精度が得られないという問題点があった。
【０００６】
図６で説明すると、二値画像データによる重心の検出は、しきい値以上の場合、しきい値に近い濃度値の位置（エッジ付近）でも、しきい値よりもかなり高い濃度値の位置（対象物の中央）でも（図６（Ａ））、画素数１という同等の扱いになり（図６（Ｂ））、エッジ近辺の濃度値の変化が生かされず、検出した重心の位置に誤差が発生する場合があった。
【０００７】
又、同様の条件で順次撮像した画像データでも、各位置の濃度値はその都度変わり、その結果しきい値が変わった場合や、指定ウィンドウ領域を変更したことによりしきい値が変わった場合等、しきい値の変化による誤差（ばらつき）が二値重心では大きくなる、という問題があった。
【０００８】
本発明は、このような問題点を解決するもので、対象物の形状や撮像条件に影響されず、対象物の重心を正確に検出することができる重心検出方法を提供することをその課題とする。
【課題を解決するための手段】
【０００９】
本発明は、
指定ウィンドウ領域内の画像データを画素ごとに多値化し、所定のしきい値以上の画素を対象物の画素としてその画素位置を求め、また対象物の画素に対して画素数を設定し、各画素位置におけるモーメントの総和と対象物の画素数の総和から対象物の重心を検出する重心検出方法において、
対象物のエッジ部以外の各画素に対しては、その画素数を第１の数値に、またエッジ部の画素に対してその画素数を第１の数値より小さな値で０より大きな第２の数値に設定して前記モーメントの総和並びに画素数の総和を求め、求めた各総和から対象物の重心を検出することを特徴とする。
【００１０】
本発明では、上記しきい値を第１のしきい値とし、該第１のしきい値より所定の値だけ大きい第２のしきい値を設定し、第１と第２のしきい値間の値を有する画素を、エッジ部の画素とする。そして、前記第２のしきい値以上の画素に対しては画素数を１に、第１のしきい値未満の画素に対しては画素数を０に、また第１と第２のしきい値間の画素に対しては画素数を１と０の間の値に設定して、重心を検出する。
【発明の効果】
【００１１】
本発明によれば、対象物のエッジ部の画素数を１画素に相当する画素数よりも小さな値に設定するので、エッジ部ないしエッジ付近のモーメントを１画素の分解能より細かな単位（サブピクセル単位）で演算することができ、対象物の形状、あるいは対象物の撮像条件に影響されることなく、対象物の重心を正確に求めることができる。
【発明を実施するための最良の形態】
【００１２】
本発明は、対象物の画素に対して画素数を１に設定して、対象物の各画素位置におけるモーメントの総和と対象物の画素数の総和（対象物の面積に相当）から対象物の重心を検出するもので、その場合、背景部に隣接する対象物のエッジ部の画素数を１と０の間の値に設定し、その部分の分解能を高めて重心検出を行うもので、以下に、添付図面を参照して本発明を詳細に説明する。
【実施例】
【００１３】
図１は、本発明の一実施例を示す電子部品実装機２０と、撮像された電子部品の画像を処理する画像処理装置１２の構成を概略示している。
【００１４】
同図において、吸着ノズル１は、マシン制御装置１３により制御されてＸ、Ｙ軸方向に移動して部品供給装置（不図示）から供給される電子部品２を吸着する。マシン制御装置１３は、電子部品２を吸着した吸着ノズル１を、撮像位置へ移動させ、そこで、照明装置３により照明された電子部品２が、電子部品の種類に応じて標準のＣＣＤカメラ４あるいは高解像度のＣＣＤカメラ５のいずれかにより撮像される。
【００１５】
撮像された電子部品の画像は、後述するように、画像処理装置１２において画像処理され、部品認識が行われ、部品中心（重心）や吸着角度が演算されて部品の吸着姿勢が検出される。その後、電子部品２は、マシン制御装置１３により基板１４の位置に移動され、吸着姿勢が補正されて回路基板１４の所定位置に搭載される。
【００１６】
基板１４には、基板マークが形成されており、この基板マークは、吸着ノズル１を設けたヘッドに取り付けられる基板認識カメラ１５により撮影され、そのマーク画像が画像処理装置１２で処理され、基板位置が検出される。基板１４に位置ずれがある場合には、その位置ずれが補正されるので、電子部品２は、高精度で基板１４上に搭載される。
【００１７】
画像処理装置１２は、カメラ４、５、１５からの画像をデジタル値に変換するＡ／Ｄコンバータ６と、デジタル画像に変換された電子部品２や基板マークなどの対象物の画像を格納する画像メモリ７、作業用メモリ（ＲＡＭ）８、重心検出プログラム９、ＣＰＵ１０、インターフェース１１から構成されており、撮像された電子部品２や基板１４のマークの画像は、画像メモリ７に格納される。ＣＰＵ１０は、重心検出プログラム９を読み込んでそれを実行し、画像メモリ７に格納されている電子部品２あるいは基板マークなどの対象物の画像を含む所定の大きさのウィンドウを指定し、その指定されたウィンドウ領域内の画像を処理して、対象物の重心を検出する。
【００１８】
重心位置が正常に検出されれば、モニタ１６に重心位置を表示し、インタフェース１１を介し、マシン制御装置１３にその結果を返答する。正常に検出されなかった場合、エラーであったことを返答する。マシン制御装置１３は、正常に重心位置の結果を受け取った場合、その情報に従って上記吸着姿勢、あるいは基板位置を補正する補正量を演算して、その補正量に従って吸着ノズル１の移動量を制御し、上述したように、電子部品２を基板１４の所定位置に搭載する。
【００１９】
次に、重心を検出するための画像処理の流れを、図２に従って説明する。
【００２０】
まず、画像処理装置１２は、指定されたカメラ４又は５又は１５を制御し、電子部品２や基板１４に形成されたマークなどの対象物の画像を撮像し（ステップＳ１）、それをＡ／Ｄコンバータ６でデジタル化し、画像メモリ７に多値画像データとして記憶し、その画像をモニタ１６に表示する。
【００２１】
画像メモリ７に記憶される多値画像データの１ライン分（２６１（Ｙ座標値）のライン）が、図４（Ａ）に示されており、上に示した「２４０」〜「２７０」は、該１ラインに沿った画素位置（Ｘ座標値）を示し、その画素位置での濃度データが画像データ「０」〜「２５５」として多値化されている。
【００２２】
続いて、重心検出プログラム９は、画像メモリ７のデータについて、指定されたウィンドウ領域内のヒストグラムを作成する。そして、判別分析法により、対象物と背景部を区別するしきい値を算出する（ステップＳ２）。
【００２３】
この算出方法が、図３に示されており、同図には、ウィンドウ領域の画像の各濃度値に対してその濃度を有する画素がいくつあるか（頻度）を示したヒストグラムが図示されている。Ｍｉｎは画像の最小濃度値、Ｍａｘはその最大濃度値であり、対象物とその背景部を区切るしきい値をＴｈｒとすると、そのしきい値Ｔｈｒ以上で最大濃度値Ｍａｘまでの濃度値が対象物Ｍ２の濃度値であり、しきい値Ｔｈｒ未満で最小濃度値Ｍｉｎまでの濃度値が背景部Ｍ１の濃度値である。
【００２４】
ここで、しきい値Ｔｈｒを最小濃度値Ｍｉｎから最大濃度値Ｍａｘまで変化させ、各しきい値Ｔｈｒでの背景部Ｍ１の平均濃度値に相当する下限しきい値ＴｈｒＭｉｎと対象物Ｍ２の平均濃度値に相当する上限しきい値ＴｈｒＭａｘを求め、背景部Ｍ１の画素数をＰＭｉｎ、対象物Ｍ２の画素数をＰＭａｘとして、背景部Ｍ１と対象物Ｍ２間の分散Ｄ、
Ｄ＝ＰＭｉｎ×ＰＭａｘ×｛（ＴｈｒＭｉｎ−ＴｈｒＭａｘ）の２乗｝
を求め、その分散が最大になるようなしきい値Ｔｈｒを求める。
【００２５】
図３には、このようにして分散が最大になるときのしきい値Ｔｈｒ、上限しきい値ＴｈｒＭａｘ、下限しきい値ＴｈｒＭｉｎが示されている。
【００２６】
本実施例では、重心の検出にしきい値Ｔｈｒと上限しきい値ＴｈｒＭａｘを使用しているが、対象物のエッジ部の濃度値がしきい値に近い場合等、対象物の特性や撮像条件等によっては、下限しきい値ＴｈｒＭｉｎとしきい値Ｔｈｒの中間値や３／４の値を使用する等の調整も可能である。
【００２７】
次に、ステップＳ３において、しきい値の取得判定を行い、指定ウィンドウ領域内の最大濃度値が、重心検出処理の実行が指示された時に情報として渡されていたしきい値の参考値よりも低い場合、指定ウィンドウ領域内には背景しかないと判断し、判別分析法によるしきい値の取得を行わないで、重心検出プログラム９はインタフェース１１を介してマシン制御装置１３にエラーを通知して（ステップＳ９）処理を終了する。
【００２８】
また、画像データに対してフィルタ処理を行い（ステップＳ４）、指定ウィンドウ領域内にノイズがあった場合のために、ステップＳ２で取得したしきい値で多値画像データを二値化し、ＡＮＤ−ＯＲフィルタをかけたデータを作成し、作業用メモリ８に格納しておく。この二値化したデータが図４（Ｂ）に示されており、ここでは、しきい値を「１０９」として、図４（Ａ）の画像データで「１０９」より小さいデータを「０」（背景）、それ以上のデータを「２５５」（対象物）として二値化している。また、フィルタ処理により、図４（Ｃ）に示したように、画素位置「２４４」、「２６６」、「２６７」の画像データが対象物のデータ「２５５」に、画素位置「２７０」のデータが背景データ「０」に変換されている。
【００２９】
続いて、ステップＳ５において、重心検出を行う。この場合、重心のＸ座標を検出する場合、指定ウィンドウ領域のＹ方向に１ライン毎に、又Ｙ座標を検出する場合Ｘ方向に１ライン毎に、各画素位置の濃度値と判別分析法で取得した２種類のしきい値、つまりしきい値Ｔｈｒと上限しきい値ＴｈｒＭａｘを用い以下の条件で比較して、各画素位置を分類する。
【００３０】
この分類は、注目する画素位置の濃度値をＮとして、
Ｎ  ＜  Ｔｈｒならば、「０」
ＴｈｒＭａｘ  ≦  Ｎ  ならば「１」
Ｔｈｒ  ≦  Ｎ  ＜  ＴｈｒＭａｘならば「２」
と分類して、分類値を画素に付与する。
【００３１】
しきい値が「１０９」、上限しきい値が「１７０」となる場合で図４（Ａ）に示す多値画像データを上述のアルゴリズムで分類したものが、図４（Ｅ）に図示されており、しきい値「１０９」未満を「０」、上限しきい値「１７０」以上を「１」、しきい値「１０９」以上で上限しきい値「１７０」未満を「２」に分類する。この時、フィルタをかけたデータの該当位置を参照し、分類「１」又は「２」であっても、フィルタをかけたデータ（Ｃ）が「０」の場合には、分類「０」とする。画素位置「２７０」の場合がこの例である。
【００３２】
続いて、１ライン分のデータが作成できたら、分類１の先頭位置（ファーストエッジ）と最終位置（セカンドエッジ）で挟まれた内部を、全て分類１に置き換える。これは、対象物の内部に濃度値が低い部分があった場合、内部を対象物として扱うためである。この状態が図４（Ｆ）に示されており、画素位置「２５３」、「２５６」、「２５９」〜「２６２」は、対象物内部のデータとして「１」に置き換えられている。
【００３３】
次にこの１ライン分のデータを見て、分類１の画素に対してはその画素数を１とし、また分類０の画素に対してはその画素数を０とし、分類２の画素に対しては、対象物のエッジ部ないしエッジ近辺の画素であるとして、以下の式により、１画素より細かなサブピクセル単位の画素数（Ｐ）を設定する。
【００３４】
Ｐ＝（Ｎ−（Ｔｈｒ−１））／（ＴｈｒＭａｘ−（Ｔｈｒ−１））
この時算出される値（画素数）は、０．０  ＜  Ｐ  ＜  １．０であり、図４（Ｇ）に示したように、画素位置「２６５」は、エッジ部のデータとして画素数が「０．８５４．．．」に算出されている。
【００３５】
ここで、画素数１は、その画素位置での画素の数を１（１画素）とするものであり、画素数０は画素なしとするものであり、画素数が「０．０」と「１．０」の間にある場合には、１画素をその値に応じて細分化して得られるサブピクセルの数に相当する。言葉を変えると、画素数は、重心を演算する場合の当該画素位置にある画素の重みを示しており、対象物のエッジ部以外の画素に対しては、その画素の重みを１にし、また背景の画素に対してはその重みを０とし、エッジ部の画素に対しては、「０．０」と「１．０」の間の重みを付与していることになる。
【００３６】
このようにして、図４（Ｆ）の例では、画素位置「２６５」では、分類２であるので、そのモーメントＭは、Ｍ＝Ｐ×Ｃの式（Ｐ＝０．８５４．．；Ｃ＝２６１）に従って求め、また他の画素位置に対してはＰを分類値に従って０あるいは１の値にしてそれぞれ画素位置ごとにモーメントを求め、その１ライン分のモーメントの合計（総和）と、画素数（ピクセル）の合計（総和）を求める。その結果が図５に図示されている。なお、同図において、比較のために、従来技術に従って、図４（Ｄ）の画像データに基づいて算出されたものが右側に示されている。
【００３７】
図６には、指定ウィンドウ領域内のＸ方向、Ｙ方向の全ライン分のデータが図示されており、２５５ラインから２８５ライン（Ｙ方向）に対して各画素位置「２４０」〜「２７０」（Ｘ方向）のデータが図示されている。なお、煩雑さをさけるために、２５９〜２６１ラインのデータのみが図示されている。図６（Ａ）は、多値画像データであり、（Ｂ）は従来技術による例であり、（Ｃ）は本発明に従って、上述したように、エッジ部ないしエッジ付近の画素をサブピクセル化したもので、２５９ラインと２６０ラインでは、画素位置「２６６」の画素が、また２６１ラインでは、画素位置「２６５」の画素がサブピクセル化され、その画素数が１と０の間の値となっている。
【００３８】
続いて、ライン毎に求めたモーメント総和とピクセルの総和について、指定ウィンドウ領域の全ラインの合計（総和）を求め、ＭＳｕｍをモーメント総和，ＰＳｕｍをピクセル総和として、Ｇ＝ＭＳｕｍ／ＰＳｕｍの式により重心（Ｇ）を求める。この例が図７に示されている。なお、図７の右側には、従来例の場合、すなわち図６（Ｂ）を用いた場合の例が示されている。
【００３９】
以上は、重心のＹ座標値であるが、Ｘ座標値についても、Ｙ軸に対するモーメントをそれぞれ算出することにより求めることができる。すなわち、１ラインについて各画素位置でのモーメント（画素数とＸ座標値の積）を求めて、その総和を求め、それを全ラインに対して求め、全ライン分のモーメントの総和（ＭＳｕｍ）と、全画素数の総和（ＰＳｕｍ）から、Ｘ座標値を求める。
【００４０】
また、図８には、同じ画像データで指定ウィンドウ領域を変更し、しきい値が「９９」となり、上限しきい値が「１６８」となる場合の例が図示されている。
【００４１】
尚、濃度値がしきい値や上限しきい値と一致した場合について、例えば以下のような条件にすることもできる。
【００４２】
０：Ｎ  ≦  Ｔｈｒ
１：ＴｈｒＭａｘ  ≦  Ｎ
２：Ｔｈｒ  ＜  Ｎ  ＜  ＴｈｒＭａｘ
この場合、分類２の画素数は以下のようになる。
【００４３】
Ｐ＝（Ｎ−Ｔｈｒ）／（ＴｈｒＭａｘ−Ｔｈｒ）
このように、条件によって、画素数を求める式を変えることにより、濃度値がしきい値と一致した場合にどう扱っているか（背景側として扱っているか対象物側として扱っているか）等、その時々の画像処理の仕様に合わせることができる。
【００４４】
このようにして、求めた重心検出の良否をステップＳ６で判定する。対象物がウィンドウ内に収まっていない場合や、指定ウィンドウ領域が１画素しかなかった場合等、重心の検出が不可能な場合には、重心検出プログラム９はインタフェース１１を介してマシン制御装置１３にエラーを通知し（ステップＳ９）処理を終了する。
【００４５】
また、重心の検出が成功した場合、モニタ１６に表示されている画像上に重心位置を表示し（ステップＳ７）、重心検出プログラム９はインタフェース１１を介してマシン制御装置１３に重心位置を通知し（ステップＳ８）、処理を終了する。
【００４６】
なお、上述した実施例では、対象物のエッジ部以外の画素に対してその画素数を１にしているが、１．５や２など正の数値ｎ（実数）とすることもできる。この場合、エッジ部の画素数Ｐは、上述した式により得られる画素数のｎ倍にすればよい。
【図面の簡単な説明】
【００４７】
【図１】部品実装機と画像処理装置の構成を示したブロック図である。
【図２】対象物の重心を求める流れを示したフローチャートである。
【図３】判別分析法によりしきい値を求める方法を示した説明図である。
【図４】指定ウィンドウ領域の１ライン分のデータの遷移を示した説明図である。
【図５】１ライン分のモーメントを求める例を示した表図である。
【図６】指定ウィンドウ領域の全ライン分のデータの遷移を示した説明図である。
【図７】全ライン分のモーメントを求める例を示した表図である。
【図８】しきい値を変えた場合の全ライン分のデータの遷移を示した説明図である。
【図９】図８の例で全ライン分のモーメントを求める例を示した表図である。
【符号の説明】
【００４８】
１    吸着ノズル
２    電子部品
７    画像メモリ
９    重心検出プログラム
１２  画像処理装置
１３  マシン制御装置
１４  基板
【図１】
2006155248.tif 000003
【図２】
2006155248.tif 000004
【図３】
2006155248.tif 000005
【図４】
2006155248.tif 000006
【図５】
2006155248.tif 000007
【図６】
2006155248.tif 000008
【図７】
2006155248.tif 000009
【図８】
2006155248.tif 000010
【図９】
2006155248.tif 000011