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