(57)【要約】【課題】安価なＣＰＵや画像メモリで構成した場合であっても処理能力を向上させることができる画像処理装置を提供することである。【解決手段】電子部品３０が撮像され、その画像が２つの画像メモリ８、１９に格納される。ＣＰＵ１０は、画像メモリ８に格納された画像のうちリード列３０ａを含む領域の画像を処理して各リード端子の位置を検出し、ＣＰＵ１７は、ＣＰＵ１０の画像処理と並列して、画像メモリ８とは異なる領域にある画像メモリ１９のリード列３０ｂの画像を処理してそのリード端子の検出を行う。このような構成では、各画像メモリに格納された画像の異なる領域にある画像を、それぞれ異なるＣＰＵで分散化して並列処理を行っているので、画像処理を高速化して部品認識時間を短縮することができる。【選択図】図５ａ
2008065815.tif 000002
【特許請求の範囲】
【請求項１】
撮像された電子部品の画像を処理して電子部品の認識を行う画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリの画像のうち設定された画像領域にある画像を処理し、また第２のＣＰＵは、第２の画像メモリの画像で第１の画像メモリで設定されている画像領域とは異なる画像領域にある画像を、第１のＣＰＵによる画像処理と並列して処理することを特徴とする画像処理装置。
【請求項２】
前記電子部品はリード端子を有する電子部品であり、第１のＣＰＵは第１の画像メモリに格納された電子部品の所定のリード端子を含む画像領域を処理し、第２のＣＰＵは前記所定のリード端子とは異なるリード端子を含む第２の画像メモリの画像領域を処理して、それぞれ各画像領域のリード端子位置を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記電子部品は少なくとも２つの辺あるいはコーナーを有する電子部品であり、第１のＣＰＵは第１の画像メモリに格納された電子部品の所定の辺あるいはコーナーを含む画像を処理し、第２のＣＰＵは前記所定の辺あるいはコーナーと異なる辺あるいはコーナーを含む第２の画像メモリの画像領域を処理して、それぞれ各画像領域内の辺あるいはコーナーの外形を認識することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記電子部品は複数のボール電極を有する電子部品であり、第１のＣＰＵは第１の画像メモリに格納された電子部品の所定のボール電極を含む画像領域を処理し、第２のＣＰＵは前記所定のボール電極とは異なるボール電極を含む第２の画像メモリの画像領域を処理して、それぞれ各画像領域のボール電極の位置を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
撮像された電子部品の画像を処理して電子部品の認識を行う画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリに格納された画像を所定の認識パラメータ値で処理し、また第２のＣＰＵは、第２の画像メモリに格納された画像を、第１のＣＰＵによる画像処理と並列して前記所定の認識パラメータ値とは異なる認識パラメータ値で処理することを特徴とする画像処理装置。
【請求項６】
撮像された電子部品の画像を処理して電子部品の検査を行なう画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリに格納された画像を所定のアルゴリズムで検査し、また第２のＣＰＵは、第２の画像メモリに格納された画像を、第１のＣＰＵによる画像処理と並列して前記所定のアルゴリズムとは異なるアルゴリズムで検査することを特徴とする画像処理装置。
【請求項７】
前記第１のＣＰＵ及び前記第２のＣＰＵのいずれか一方により検査結果がＮＧと判定された場合、他方のＣＰＵがまだ異なるアルゴリズムによる検査を実行中であれば、他方のＣＰＵに対して処理を中断させる割り込みを発行する手段を設けたことを特徴とする請求項６に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子部品の位置を検出あるいは認識するために、その電子部品を撮像し撮像した電子部品の画像に画像処理を施す画像処理装置に関する。
【背景技術】
【０００２】
従来、電子部品を基板上に搭載する電子部品実装装置が知られている。この電子部品実装装置では、電子部品を精度よく基板上の所定位置に搭載するために、電子部品実装機の吸着ヘッドにより吸着された電子部品を撮像し、電子部品の画像を処理して電子部品の位置検出（部品中心並びに部品傾きの検出）、いわゆる部品認識を行い、その認識結果に基づいて搭載位置を補正し部品搭載を行っている。
【０００３】
図２１は、従来の画像処理装置の画像入力部の構成を示すブロック図であって、（ａ）はひとつのＣＰＵを用いた構成を示す図であり、（ｂ）は２つのＣＰＵを用いた構成を示す図である。
【０００４】
画像入力部は、標準カメラ４や高解像度カメラ５によって撮像された電子部品の画像をデジタル画像に変換する入力回路７と、デジタル画像に変換された画像を格納する画像メモリ８と、画像メモリ８の画像データを演算処理するＣＰＵ（演算装置）１０、１１とを有して構成される。
【０００５】
従来、画像処理演算をひとつのＣＰＵ１０で処理する構成（図２１（ａ））が一般的であり、この場合、例えば並列処理可能な処理Ａおよび処理Ｂという２つの処理があるときでも、この処理Ａと処理ＢはひとつのＣＰＵ１０によって逐次処理されていた。
【０００６】
ところが、電子部品を撮影した画像の高解像度化や電子部品の電極数の増大、位置決め結果の高精度化のために、その画像処理は重くなる一方である。例えば、電極がボール形状の電子部品であるボール部品では、ボール状の電極数がついには１万個を越えるものもあり、現行ＣＰＵの処理速度では装置の要求時間を満たせなくなってしまうこともある。
【０００７】
図２１（ａ）に示す従来の画像入力部の構成では、非常に高性能なＣＰＵが必要となり、対応できるＣＰＵが存在しない、もしくは高価なものとなってしまうという問題があった。
【０００８】
そこで、画像処理を高速化するために、画像処理の並列化が検討されており、図２１（ｂ）に示すように、ＣＰＵ１０のほかにＣＰＵ１７を設けてＣＰＵを複数化して並列処理を実現する構成が提案されている（画像処理の分散処理に関しては特許文献１、特許文献２を参照）。
【０００９】
【特許文献１】特開平８−４４６７８号公報
【特許文献２】特許第３６４６４２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところが、ＣＰＵを複数設ける構成の場合、画像メモリが各ＣＰＵからのアクセスに耐えられるように、バンド幅の広い高価な画像メモリを使用した構成を用いる必要がある。すなわち、各両ＣＰＵから頻繁にアクセスされることを考え、アクセスが衝突しないように、アクセス時間が早い、動作クロック周波数が高い画像メモリにする必要がある。こうなると、その要求を満たす画像メモリが存在しない、もしくは高価なものとなってしまうという問題があった。
【００１１】
特に、電子部品実装装置で用いる画像処理装置の場合、取り扱う電子部品のすべてが部品認識のための画像処理の負荷が大きなものではなく、このような部品はごく少数の限られた部品である。まれに発生する負荷の高い処理にあわせて、高価なハードウェア資源を用意するのでは、無駄に高価な装置となってしまうおそれがあった。
【００１２】
本発明は、上記の点にかんがみてなされたもので、安価なＣＰＵや画像メモリで構成した場合であっても画像処理能力を向上させることができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明（請求項１）は上記の目的を達成するために、
撮像された電子部品の画像を処理して電子部品の認識を行う画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリの画像のうち設定された画像領域にある画像を処理し、また第２のＣＰＵは、第２の画像メモリの画像で第１の画像メモリで設定されている画像領域とは異なる画像領域にある画像を、第１のＣＰＵによる画像処理と並列して処理することを特徴とする。
【００１４】
第１と第２のＣＰＵはそれぞれ異なるリード端子列を含む画像、あるいは、それぞれ異なる辺あるいはコーナーを含む画像、あるいは、それぞれ異なる領域にあるボール電極の画像を処理し、それぞれリード端子位置、辺あるいはコーナーの外形、あるいはボール電極を認識する。
【００１５】
また、本発明（請求項５）は、
撮像された電子部品の画像を処理して電子部品の認識を行う画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリに格納された画像を所定の認識パラメータ値で処理し、また第２のＣＰＵは、第２の画像メモリに格納された画像を、第１のＣＰＵによる画像処理と並列して前記所定の認識パラメータ値とは異なる認識パラメータ値で処理することを特徴とする。
【００１６】
又、本発明（請求項６）は、
撮像された電子部品の画像を処理して電子部品の検査を行なう画像処理装置であって、
撮像された電子部品の画像を格納する第１と第２の画像メモリと、
前記第１の画像メモリに格納された画像を処理する第１のＣＰＵと、
前記第２の画像メモリに格納された画像を処理する第２のＣＰＵとを設け、
前記第１のＣＰＵは、第１の画像メモリに格納された画像を所定のアルゴリズムで検査し、また第２のＣＰＵは、第２の画像メモリに格納された画像を、第１のＣＰＵによる画像処理と並列して前記所定のアルゴリズムとは異なるアルゴリズムで検査することを特徴とする。
【００１７】
その際、前記第１のＣＰＵ及び前記第２のＣＰＵのいずれか一方により検査結果がＮＧと判定された場合、他方のＣＰＵがまだ異なるアルゴリズムによる検査を実行中であれば、他方のＣＰＵに対して処理を中断させる割り込みを発行する手段を設けるようにしてもよい。
【発明の効果】
【００１８】
本発明によれば、異なる画像メモリに電子部品の画像を格納し、各画像メモリに格納された画像の異なる領域にある画像を、それぞれ異なるＣＰＵで分散化して並列処理を行っているので、画像処理を高速化して部品認識時間を短縮することができ、高価なハードウェア資源（ＣＰＵ、画像メモリ）を用いることなく、安価な構成で高速な部品認識が可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明による実施の形態に基づいて図面を参照して説明する。
【実施例１】
【００２０】
図１は、電子部品実装装置における画像処理装置およびその周辺構成の要部の一例を示すブロック図である。
【００２１】
この電子部品実装装置では、電子部品（以下単に部品という）２を吸着し、撮像位置へセットするための吸着ノズル１と、吸着ノズル１の移動や照明装置３の駆動など部品の基板（不図示）上への搭載動作を制御するマシン制御装置１５と、部品２を撮像するための撮像装置として機能する標準カメラ４及び高解像度カメラ５と、撮像された画像を処理して部品認識する画像処理装置１４とによって構成される。
【００２２】
画像処理装置１４は、カメラ４、５によって撮像された部品の画像をデジタル画像に変換する入力回路７、デジタル画像に変換された画像を格納する画像メモリ８、作業用メモリ９、画像メモリ８のデータを演算処理する演算回路（ＣＰＵ）１０、部品データ格納メモリ１２、インターフェース１３並びに、各装置ないしメモリ間のデータの流れを制御するとともに、部品搭載に必要なデータを演算する制御ＣＰＵ１１から構成される。また、撮像された画像あるいは処理された画像を表示させるモニタ６が設けられる。
【００２３】
マシン制御装置１５は、部品データをインターフェース１３を介して画像処理装置１４へ送信する。画像処理装置１４は受信した部品データを部品データ格納メモリ１２に格納する。マシン制御装置１５は、通常、部品の種類、特に部品の電極サイズによって、標準カメラ４あるいは高解像度カメラ５を選択し、部品２を吸着ノズル１で吸着し、選択したカメラの撮像位置にセットする。このとき、照明装置３を選択したカメラで撮像できるように移動、点灯させ、画像処理装置１４にインターフェース１３を介して、選択したカメラチャネル情報とともに処理実行を指示する。
【００２４】
画像処理装置１４は、指定されたカメラ４もしくは５を制御し、撮像された部品２の画像を、入力回路７でデジタル化し、画像メモリ８に多値画像データとして記憶させる。そして、演算回路１０は、画像メモリ８のデータを処理し、リード先端やコーナーなどの位置を検出し、部品中心と吸着中心間のずれ、並びに部品の吸着傾きを算出し、部品の位置決め（部品認識）を行う。
【００２５】
マシン制御装置１５は、部品認識結果を受け取り、吸着ノズル１を搭載位置に移動させ、部品認識結果に従って部品の吸着ずれ（部品中心と吸着中心間のずれ並びに吸着角度ずれ）を補正し、部品２を基板上の所定位置に搭載する。
【００２６】
本発明では、高速な画像処理を実現するために、図２（ａ）、（ｂ）に示したように、画像処理装置１４に複数の画像メモリと複数の演算回路（ＣＰＵ）が設けられる。
【００２７】
図２（ａ）では、カメラ４、５からの画像データは入力回路７を介して読み取られ、分配器１８を介して２つの画像メモリ８、１９に分配し、画像メモリ８に分配された画像データは、ＣＰＵ１０によって、また、画像メモリ１９に分配された画像データは、ＣＰＵ１７によって処理される。この実施例では、画像メモリ８にはＣＰＵ１０のみがアクセス可能であり、画像メモリ１９にはＣＰＵ１７のみがアクセス可能であり、ひとつのメモリに対して複数のＣＰＵがアクセスすることがないので、帯域の広い高価な画像メモリを使わなくても、並列処理が可能となる。
【００２８】
ところで、分散可能な処理の並列処理化のためだけにＣＰＵ１７を実装するのは、ＣＰＵ１７が何ら処理を実行していない時間が存在して有効活用がされないことも考えられる。そこで、図２（ｂ）に示す例では、２ヘッド動作の電子部品実装装置において、各ヘッドごとに画像の入力系を用意し、それぞれでＣＰＵを設けて各ヘッドの処理を並列で行う中で、余ったＣＰＵリソースがあればお互いで有効活用し、処理能力を高めるようにしている。すなわち、カメラ４、５からの画像データは入力回路７を介して画像メモリ８に書き込まれるが、入力回路７と画像メモリ８との間には分配器１８を設けて、画像メモリ８と同じデータを同時間で画像メモリ１９にも書き込む。
【００２９】
また、他のヘッドの標準カメラ６４、高解像度カメラ６５からの画像データは、入力回路７と同様な入力回路２０を介して画像メモリ２２に書き込まれるが、入力回路２０と画像メモリ２２との間には分配器２１を設けて、画像メモリ２２と同じデータを同時間で画像メモリ２３にも書き込む。
【００３０】
ＣＰＵ１７は、ＣＰＵ１０の副ＣＰＵとして画像メモリ１９にアクセスして処理を実行し、ＣＰＵ１０は、ＣＰＵ１７の副ＣＰＵとして画像メモリ２３にアクセスして処理を実行する。画像メモリ８にはＣＰＵ１０のみがアクセス可能であり、画像メモリ１９にはＣＰＵ１７のみがアクセス可能である。また、画像メモリ２２にはＣＰＵ１７のみがアクセス可能であり、画像メモリ２３にはＣＰＵ１０のみがアクセス可能である。
【００３１】
図２（ｂ）の実施例でも、ひとつのメモリに対して複数のＣＰＵがアクセスすることがないので、帯域の広い高価な画像メモリを使わなくても、同様に分散可能な処理に対して並列処理が可能となる。
【００３２】
図２に示すように、複数のＣＰＵを設ける場合、図３に示したように、一つのＣＰＵ１０（あるいは１７）を主ＣＰＵ、他のＣＰＵ１７（あるいは１０）を副ＣＰＵとし、副ＣＰＵに対して補助処理を実行させ、分散処理を行うことができる。図３（ａ）は主ＣＰＵに課せられた処理に支障のない範囲で副ＣＰＵが補助処理を行う場合を示す図であり、図３（ｂ）は補助処理のプライオリティによって、補助のレベルを変動させるような場合を示す図である。
【００３３】
図３（ａ）の例では、主ＣＰＵが処理を行うアプリケーションタスク５０のうち、プライオリティが最も低いタスク５１を、副ＣＰＵがアイドルタスクとして実行する。副ＣＰＵは、分散処理のリクエストがあると（ステップＳ１）、最もプライオリティの低いタスクを分散処理し（ステップＳ２）、その結果（リザルト）を送信する（ステップＳ３）。作業用メモリ９には、リクエスト処理状態、リクエスト、リザルトが格納される。このように、補助処理をプライオリティが最低のアイドルタスクで処理することによって、２つのＣＰＵのそれぞれが、本来の処理を優先し、お互いが無理がないレベルで分散処理で相互補助し合うことができる。
【００３４】
また、補助処理のプライオリティによって、補助のレベルを変動させるような場合は、図３（ｂ）に示すように、動的にアイドルタスクのプライオリティを制御することによって実現可能である。この場合、必要に応じて補助の度合いを強めることができ、柔軟なスケジューリングを実現することができる。
【００３５】
補助処理のリクエストとしては、例えばアプリケーションタスクに緊急度および負荷のパラメータ５０ａを追加する。ここで、緊急度とは、処理しなければならない緊急性の度合いを示すパラメータであり、負荷とは、その処理がどれだけのＣＰＵパワーを必要とするかを示すパラメータである。緊急度および負荷のそれぞれは、分散化した各処理について、相対的に設定すればよい。例えば、自身が緊急度の高い処理を行っている場合は、どのような補助処理であっても副ＣＰＵとして受け付けないが、あまり緊急度が高くない処理や負荷の軽い処理を行っている場合は、負荷の軽い処理なら副ＣＰＵとして受け付けるなどという制御を可能とするパラメータである。
【００３６】
補助処理の受付自体は、最もプライオリティの高いタスク５２で行うものとし、主ＣＰＵの処理中であっても割り込んで処理することとする。補助処理の受付時には、まず、緊急度および負荷のパラメータ５０ａを読み出し、リクエストを待つ（ステップＳ４）。このとき、補助処理と同様に主ＣＰＵの処理についてもあらかじめ緊急度および負荷を設定しておく。
【００３７】
補助処理の受付時に主ＣＰＵの処理中であったならば、その処理の緊急度および負荷と、依頼処理の緊急度および負荷とを比較して、実行タスク（例えば、アイドルタスク）のプライオリティを決定、一時的に変更し（ステップＳ５）、受付タスクから実行タスクにリクエストを受け渡す（ステップＳ６）。副ＣＰＵは、ステップＳ７〜Ｓ９でタスクを実行し、処理の終了通知を受付タスクに行い、受付タスクは実行タスクのプライオリティを元に戻す。緊急度や負荷のパラメータとタスクのプライオリティとの関係は、システムにあわせて作り込めばよい。また、共有メモリ９には、図３（ａ）と同様に、リクエスト処理状態、リクエスト、リザルトが格納される。
【００３８】
図４は、画像処理装置において並列処理する対象の例を示す表図であり、（ａ）は同一処理を分散し、並列処理する具体的な適用例を示す図であり、（ｂ）は逐次連続処理を並列処理する場合の具体的な適用例を示す図である。
【００３９】
図４（ａ）のＮｏ．１〜Ｎｏ．３は、部品の端子や部品の特徴などに応じて、画像メモリ８、１９に格納された画像データにおいて所定の画像領域を設定し、各領域の画像処理をＣＰＵ１０、１７に割り当てて並列処理させ、高速化を図るというものである。
【００４０】
図４のＮｏ．１では、例えば、図５ａに示したように、矩形の部品３０の各辺に設けられたリード端子を認識する場合、画像メモリ８に格納された部品３０の一つの辺に設けられたリード端子列３０ａを含む領域８ａが設定され、また画像メモリ１９に格納された部品３０の他の辺に設けられたリード端子列３０ｂを含む領域１９ａが設定される。ＣＰＵ１０は、画像メモリ８で設定された画像領域８ａの画像データを処理してリード端子列３０ａの各リード端子の位置を検出する。また、この処理と並列して、他のＣＰＵ１７は、画像メモリ１９で設定された画像領域１９ａの画像データを処理して異なるリード端子列３０ｂの各リード端子の位置を検出する。
【００４１】
図４（ａ）のＮｏ．２では、矩形の部品の外形を認識する画像処理において、部品の各辺あるいは各コーナーごとに別のＣＰＵで認識処理を行うことによって、分散処理を行う。例えば、図５ｂに示したように、矩形の部品３１の辺あるいはコーナーの外形を認識する場合、画像メモリ８に格納された部品３１の一つの辺３１ａあるいはコーナー３１ｂを含む画像領域８ｂ、８ｃが設定され、また画像メモリ１９に格納された部品３１の他の辺３１ｃあるいはコーナー３１ｄを含む領域１９ｂ、１９ｃが設定される。ＣＰＵ１０は、画像メモリ８の領域８ｂ、８ｃの画像データを処理して辺３１ａあるいはコーナー３１ｂの外形を認識し、また、この処理と並列して、他のＣＰＵ１７は、画像メモリ１９の領域１９ｂ、１９ｃの画像データを処理して異なる辺３１ｃあるいはコーナー３１ｄの外形を認識する。
【００４２】
図４（ａ）のＮｏ．３では、底面にボール形状の電極を有する部品のボールを認識する画像処理において、それぞれ異なる画像領域を設定して、各領域ごとに別のＣＰＵで認識処理を行うことによって、分散処理を行う。例えば、図５ｃに示したように、多数のボール電極３２ａを有する部品３２の場合、画像メモリ８に格納された部品３２の画像においてボール電極を含む一つの画像領域８ｄが設定され、また画像メモリ１９に格納された部品３２の画像において他のボール電極を含む領域８ｄとは異なる領域１９ｄが設定される。ＣＰＵ１０は、画像メモリ８の領域８ｄの画像データを処理してこの領域の各ボール電極の位置を検出し、また、この処理と並列して、他のＣＰＵ１７は、画像メモリ１９の領域１９ｄの画像データを処理してこの領域１９ｄにある各ボール電極の位置を検出する。
【００４３】
また、図４（ａ）のＮｏ．４では、部品の撮像データの、予め登録してある部品データとのマッチングをとる画像処理において、撮像データを複数ブロックに分割し、各ブロックごとに異なるＣＰＵで認識処理を行うことによって、分散処理を行うことができる。すなわち、マッチング領域を分割して、マッチングをとる相関演算を分散処理で並列して行うことで高速化を図るというものである。
【００４４】
図４（ａ）のＮｏ．５では、条件を変動させて、よい処理結果がでたものを採用するような処理への適用で、所定の条件で画像処理し、うまくいかなければ、条件を変えて再処理というリトライ処理で行う場合、両方の処理を同時に行い、結果を比較し、よい処理結果を採用するもので、この並列処理により、処理時間を大幅に短縮できる。
【００４５】
このようなリトライ処理の分散・並列処理は、例えば、部品のリード検出時のエッジ判定しきい値のリトライ処理への適用が考えられる。
【００４６】
従来は、フィルタの種別・サイズごとに予めモデルリードについてフィルタ演算値を取得し、その結果を元に基準のエッジ検出しきい値を決定、ロットの違いなどによるリードの反射具合のばらつきに対応するため、撮像画像にあわせて、リトライ処理により、エッジ判定しきい値を調整していた。撮像画像において部品の端子が暗く、デフォルトのしきい値ではエッジが検出できない場合は、しきい値を下げて、またノイズ成分がある場合は余分なエッジまで検出してしまうので、しきい値を上げて、リトライを行い、正しいリードのみを検出するようにしていた。この例では、エッジ判定しきい値が認識パラメータ値に相当する。
【００４７】
図６は、フィルタ処理（ＤＯＧフィルタ処理（Ｍａｒｒ＆ＰｏｓｉｏのＤｉｆｆｅｒｅｎｃｅ−Ｏｆ−Ｇａｕｓｓｉａｎフィルタ処理）の結果とエッジ判定しきい値の関係について説明する図であり、図６（ａ）は、部品のリード部分４０の撮影画像を示すものであり、図６（ｂ）は図６（ａ）のスキャンラインＬの位置の濃度値を表すグラフであり、図６（ｃ）はフィルタ処理の結果を表すグラフであり、図６（ｄ）は、しきい値を変えたときの図６（ｃ）のゼロクロス点での変化量を表すグラフである。
【００４８】
図６（ｃ）において、フィルタ演算結果のゼロクロス地点がエッジである。ＤＯＧフィルタによっては、ちょっとした濃度変化にも反応しやすく、ゼロクロス地点が全てリードエッジとは限らない。リードエッジの場合は、フィルタ反応値が大きくなることから、図６（ｄ）のようにフィルタ結果のゼロクロス点前後の変化量が、ある一定値（＝エッジ判定しきい値＝フィルタしきい値）以上であるものをリードエッジと判断している。
【００４９】
図７に示すように、写りのよくないリード端子４１が存在する場合、リードエッジ部分の変化量に対してフィルタしきい値４２が高すぎると検出できるリード本数が少なくなり、図８に示すように、リード端子と同間隔でノイズ４３が存在する場合には、リードエッジ部分の変化量に対してエッジ判定しきい値４４が低すぎるとリード以外のノイズを誤検出して、検出本数が多くなってしまう。
【００５０】
つまり、検出したリード本数が指定リード本数よりも少ない場合には、エッジ判定しきい値が高すぎたのかもしれないし、また逆に検出リード本数が多かった場合にはエッジ判定しきい値が低すぎたのかもしれない。本当にリード本数に誤りがある場合、しきい値を変動させてもリード本数は変動しない。逆にいえば、正常なリード本数が変動しないレベルでしか、しきい値を変動させてはならない。
【００５１】
本発明を用いると、一つのＣＰＵによりデフォルト値のフィルタしきい値４２あるいは４４でリード検出を行い、また他のＣＰＵで、少し低めのフィルタしきい値４２’、もしくは高めのフィルタしきい値４４’でリード検出処理を同時に並列して行うことによって、本来の処理時間で、認識パラメータ値を変化させて行うリトライ処理を済ましておくことができる（最初の１回のリトライ処理を並列に行うことができる）。そして、並列処理で得られた２つの結果については、リード検出本数と指定リード本数とを比較することによって、得られた結果が正しいかどうかの判断ができる。２つの結果のうち、正しいほうの結果を選択する。また、両方とも正しい場合は、デフォルト設定の結果を選択する。
【００５２】
さらに続けて何回かのリトライ処理を行う場合でも、同一の画像処理で認識パラメータ値を変化させ、各認識パラメータ値で異なるＣＰＵを用いて同じ画像データを処理することにより、リトライ処理時間を半減することができる。
【００５３】
次に、図４（ａ）のＮｏ．１〜Ｎｏ．４に示した処理の流れを、図９を参照しながら説明する。この例では、画像入力部の構成として、図２（ａ）に示した構成が用いられる。
【００５４】
主ＣＰＵ（例えば、ＣＰＵ１０）は、図１に示したマシン制御装置１５からインタフェース１３を介してコマンドを受信する（ステップＳ１１）。
【００５５】
続いて、主ＣＰＵ１０は、図２（ａ）に示した入力回路７を動作させ、画像撮像を行う。画像データは図２（ａ）に示した分配器１８によって画像メモリ８、１９に同時間で同データが書き込まれる（ステップＳ１２）。
【００５６】
次に、主ＣＰＵ１０は分散処理の対象となる画像上の領域を算出する（ステップＳ１３）。さらに、主ＣＰＵは、ステップＳ１３で求めた処理領域などの処理に必要なパラメータを設定し、副ＣＰＵ（例えば図２（ａ）に示したＣＰＵ１７）にリクエストを送信する（ステップＳ１４）。
【００５７】
ステップＳ１５では、主ＣＰＵは、自身に割り当てられた分散処理（１）を実行する。
【００５８】
一方、副ＣＰＵでは主ＣＰＵからのリクエストを受信し（ステップＳ１７）、ステップＳ１５と並列して、副ＣＰＵによるステップＳ１７〜Ｓ１９の処理が実行される。
【００５９】
ステップＳ１８では、副ＣＰＵは分散処理種別を判定する（ステップＳ１８ａ）。状況、種別によって、依頼された分散処理（２）を実行するタスクのプライオリティを制御し、柔軟に対応するしくみを組み込むことができる。
【００６０】
ステップＳ１８では、おのおのの実行処理ルーチンを呼び出して分散処理（２）を実行し（ステップＳ１８ｂ〜Ｓ１８ｅ）、処理が終了したならば、その分散処理（２）の結果を主ＣＰＵ１０へと送信する（ステップＳ１９）。主ＣＰＵでは、ステップＳ１６において、ステップＳ１４で副ＣＰＵに依頼した分散処理（２）の結果を受信する。
【００６１】
なお、ステップＳ１５で行われる分散処理（１）の内容は、ステップＳ１８で行われる分散処理（２）のステップＳ１８ａ〜Ｓ１８ｅと同様な処理が行われる。
【００６２】
ステップＳ１５、Ｓ１８でそれぞれ行われるリード列検出処理は、図４（ａ）のＮｏ．１の処理で、図５ａに関連して説明した処理である。また、ステップＳ１５、Ｓ１８で行われるボール群検出処理は、図４（ａ）のＮｏ．３の処理で、図５ｃに関連して説明した処理であり、外形検出処理は、図４（ａ）のＮｏ．２の処理で、図５ｂに関連して説明した処理である。また、ステップＳ１５、Ｓ１８で行われる分割領域マッチング処理は、図４（ａ）のＮｏ．４の処理である。
【００６３】
なお、更に異なる他の領域にあるリード端子列、辺、コーナー、あるいはボール電極群に対して、上述した分散処理（１）、（２）が必要な場合には、同様な分散処理を必要な回数だけ行い、それぞれの画像処理により認識されたリード端子列、辺、コーナー、あるいはボール電極群に基づいて、部品の中心と部品の傾きを演算し部品認識を終了する。
【００６４】
図１０は、図４（ａ）のＮｏ．５で、図６〜図８で説明したリトライ処理を分散処理する場合の各ＣＰＵの動作を示すフローチャートである。
【００６５】
まず、主ＣＰＵ１０は、入力回路１を動作させ、画像撮像を行う（ステップＳ２１）。画像データは分配器１８を介し、画像メモリ８、１９に対し同時間で同じ画像データが書き込まれる。
【００６６】
主ＣＰＵ１０は自身と同じ画像上の領域のリード列の検出について、認識パラメータ値、つまりエッジ判定しきい値を変えて行うように、分散処理のリクエストを作成する（ステップＳ２２）。
【００６７】
ステップＳ２３では、主ＣＰＵ１０は、副ＣＰＵ１７に対して、ステップＳ２２で作成したリクエストを送信する。
【００６８】
その後、主ＣＰＵ１０は、所定の認識パラメータ値（パラメータ（１））で自身に割り当てられたリード検出処理を実行する（ステップＳ２４）。
【００６９】
一方、副ＣＰＵ１７は、主ＣＰＵ１０と並列に動作しており、主ＣＰＵ１０からのリクエストを受信したならば（ステップＳ２７）、分散処理種別を判定して指定処理モジュールを呼び出し（ステップＳ２８）、パラメータ（１）とは異なる認識パラメータ値（パラメータ（２））で、すなわち、異なるエッジ判定しきい値でリード検出処理を行い（ステップＳ２９）、その処理の結果を主ＣＰＵ１０へ送信する（ステップＳ３０）。
【００７０】
一方、主ＣＰＵ１０は、副ＣＰＵ１７がステップＳ２９で行ったリード検出処理の結果を受信する（ステップＳ２５）。
【００７１】
主ＣＰＵ１０は、ステップＳ２４で自身が実行した処理の結果で得られたリード検出本数と予め設定してある指定リード本数とを比較し、また、ステップＳ２５で副ＣＰＵ１７から受信した結果で得られたリード検出本数と予め設定してある指定リード本数とを比較し、正しい方の結果を選択する（ステップＳ２６）。両方とも正しい場合は、主ＣＰＵの処理の結果を優先する。
【実施例２】
【００７２】
上述した分散処理は、図２（ｂ）に示した構成でも行うことができる。図２（ｂ）に示した構成は、各ヘッドの処理を各ＣＰＵが並列で行う中で、余ったＣＰＵリソースがあればお互いが有効に利用し、処理能力を高めるために本発明の基本動作を展開したものである。
【００７３】
図１１は、図２（ｂ）に示した構成による分散処理の相互補助時の主ＣＰＵの処理を示すフローチャートである。
【００７４】
図２（ｂ）に示した構成では、カメラ４、５を有するヘッドの側から見れば、ＣＰＵ１０が主ＣＰＵ、ＣＰＵ１７が副ＣＰＵであり、カメラ６４、６５を有するヘッドの側から見れば、ＣＰＵ１７が主ＣＰＵ、ＣＰＵ１０が副ＣＰＵである。以下の説明は、カメラ４、５を有するヘッドの構成で説明する。
【００７５】
主ＣＰＵ（ＣＰＵ１０）は、図１に示したマシン制御装置１５からインタフェース１３を介してコマンドを受信する（ステップＳ４１）。
【００７６】
続いて、主ＣＰＵは、図２（ｂ）に示した入力回路７を動作させ、画像撮像を行う。画像データは図２（ｂ）に示した分配器１８によって画像メモリ８、１９に対して同時間で同データが書き込まれる（ステップＳ４２）。
【００７７】
次に、主ＣＰＵは分散処理の対象となる画像上の領域を算出する（ステップＳ４３）。さらに、主ＣＰＵは、ステップＳ４３で求めた処理領域などの処理に必要なパラメータを設定し、副ＣＰＵ（ＣＰＵ１７）に対してリクエストを送信する（ステップＳ４４）。
【００７８】
ステップＳ４５では、主ＣＰＵは、自身に割り当てられた分散処理（１）を実行する。一方、副ＣＰＵでは、主ＣＰＵからのリクエストを受信し、自身のリソースに余裕があれば、主ＣＰＵからリクエストされた分散処理（２）を実行する。分散処理（１）、（２）は、図９のステップＳ１５、Ｓ１８における分散処理（１）、（２）と同じ処理である。
【００７９】
主ＣＰＵは、ステップＳ４４で副ＣＰＵに依頼した分散処理（２）の結果を受信する（ステップＳ４６）。ただし、この時点で依頼の処理が終わっていれば結果を受信できるが、そうでないこともある。
【００８０】
ステップＳ４７では、依頼した分散処理（２）が完了したかを確認し、完了していれば、ステップＳ５１の次処理（処理（３））へと進み、そうでなければ、ステップＳ４８へと進む。
【００８１】
ステップＳ４８では、処理状況を確認し、分散処理（２）をこのまま副ＣＰＵに任せるか、それとも依頼をキャンセルし、自身で処理するかを判定する。分散処理（２）をこのまま副ＣＰＵに任せるか、それとも依頼をキャンセルするか、の判断基準は、たとえば、処理依頼からの経過時間が所定時間以上経過したか否かで判断したり、副ＣＰＵからの申告によって判断したりすることができる。
【００８２】
副ＣＰＵの処理を待つと判断した場合は、ステップＳ４６へと分岐し、分散処理（２）の完了を待つ。ステップＳ４８で、副ＣＰＵへの依頼をキャンセルすると判断した場合には、副ＣＰＵにリクエストキャンセルの送信を行い（ステップＳ４９）、主ＣＰＵ自身で分散処理（２）を処理する（ステップＳ５０）。
【実施例３】
【００８３】
次に、図１２に示した実施例を説明する。図１２の画像入力部は、逐次連続処理を並列に動作させ、全体的な処理能力を向上させるためのしくみを実現する構成である。
【００８４】
この構成は、ＣＰＵで実行する処理の中に、逐次処理すべき２種類の演算があり、その処理が連続的に発生する場合に効果がある。例えば、図４（ｂ）に示したような処理である。
【００８５】
図１２に示した構成において、カメラ４、５で撮像された画像データは分配器１８によって、画像メモリ８、１９のそれぞれに格納することが可能となる。ただし、この実施例では、２つのルートのそれぞれにスイッチ２４、２５を設けている。すなわち、スイッチ２４、２５のＯＮ／ＯＦＦ制御によって、画像メモリ８、１９への画像データの格納状態を、図１３に示すように制御することができる。
【００８６】
また、図１２に示すように、ＣＰＵ（演算回路）１０は、スイッチ２６を切り替えることによって画像メモリ８および画像メモリ１９の両方にアクセス可能なように設けられ、ＣＰＵ（演算回路）１７も、スイッチ２６を切り替えることによって画像メモリ８および画像メモリ１９の両方にアクセス可能なように設けられている。
【００８７】
図１４は、図１２の構成での処理の流れを説明したフローチャートである。図中、処理Ａ、処理Ｂとあるのは、図４（ｂ）に記した処理Ａ、処理Ｂに対応している。
【００８８】
また、図１５は、図１２の各ＣＰＵによって実行される処理の遷移を示すタイミングチャートである。この図では、画像メモリ８をＡ面と呼び、画像メモリ１９をＢ面と呼ぶ。
【００８９】
図１４のステップＳ６１では、スイッチ２４および２５をＯＮとし、両面すなわち画像メモリ８および画像メモリ１９の両方に画像データを取り込む。
【００９０】
まず、ＣＰＵ１０は、画像メモリ８（Ａ面）のデータに対して処理Ａを実行し、処理Ａを終了したならば、ＣＰＵ１７に対して処理Ｂの開始要求を出す（ステップＳ６２）。
【００９１】
ステップＳ６３では、このステップを通る初回のときには既に画像が取り込まれているのでスキップし、２回目以降は、ＣＰＵ１７の処理と同期させるため、ＣＰＵ１７による処理Ｂの終了を待つ。
【００９２】
ＣＰＵ１７によるＡ面の処理Ｂが終了したことを確認したならば、スイッチ２４をＯＮ、スイッチ２５をＯＦＦにするよう制御し、画像メモリ８（Ａ面）のみに格納できるようにする。
【００９３】
ステップＳ６４では、初回は既に画像が取り込まれているのでスキップし、２回目以降は、画像の撮像を行う。このとき、ステップＳ６３でのスイッチ２４およびスイッチ２５の制御により、２面あるメモリのうちの片面のみが更新される。
【００９４】
続いて、ステップＳ６５では、ステップＳ６４で新たに取り込まれた画像に対して、ＣＰＵ１０が処理Ａを行えるよう、スイッチ２６を切り替える。例えば、初回時は、画像メモリ８に対してＣＰＵ１０がアクセス可能となる。
【００９５】
ＣＰＵ１７は、ＣＰＵ１０によるステップＳ６２〜Ｓ６５と並列に、ステップＳ６６〜Ｓ６８の処理を行う。まず、ステップＳ６６では、ステップＳ６２で発せられた要求により、処理Ｂの実行が開始する。
【００９６】
処理Ｂが終了したならば、ステップＳ６７では、スイッチ２６を切り替えて、ＣＰＵ１７がアクセスするメモリを、次の処理対象の画像メモリへと切り替える。例えば、初回時は、画像メモリ８に対してＣＰＵ１７がアクセス可能であるところから、ステップＳ６７において画像メモリ１９に対してＣＰＵ１７がアクセス可能となるように、切り替えられる。
【００９７】
ＣＰＵ１７は、処理Ｂが終了したならば、その旨をＣＰＵ１０に通知する（ステップＳ６８）。
【実施例４】
【００９８】
前記図２（ａ）に示した構成の画像入力部を適用して部品の吸着状態の異常であるチップ立ちを検出（判定）する請求項６に係る第４実施例を説明する。
【００９９】
これは、前記図４（ａ）のＮｏ．６にチップ立ち検査として追加したもので、Ｎｏ．１〜Ｎｏ．５の各処理と同様、図２（ｂ）に示した構成の画像入力部を適用することもできる。
【０１００】
ところで、チップ立ち検査（部品吸着状態の判定）を画像処理で行おうとする場合、図１６には、（ａ）の正常吸着（両端の小さい矩形はリード（電極）端子である）の他に、（ｂ）〜（ｅ）に丸で示すノズルとの関係でエラー状態の違いをイメージで示すように、チップの斜め立ちには様々な状況が考えられる。従って、一つの判定アルゴリズムを用いて全ての状況の吸着状態を判定することは不可能である。そこで、斜め立ち等の部品吸着状態を分類し、それぞれの状況別に対応する判定アルゴリズムを複数用意し、順次、判定アルゴリズムを切り替えながら、判定処理を繰り返し行なう必要がある。以下、これを具体的に説明する。
【０１０１】
図１７に、チップ立ち（吸着状態）の判定アルゴリズムに従って処理する場合のフローチャートを示す。
【０１０２】
ステップＳ７１では、撮像画像から例えば判別分析法で２値化のための値を求め、画像の２値化を行ない、得られた２値画像から塊を求めるラベリング処理を行なう（ステップＳ７２）。
【０１０３】
次いで、ラベリング画像から塊の数が１つか２つか判定して、１つならば部品全体であるとして面積チェックを行ない、図１８（ａ）のように２つならばリード端子であるとして２つの面積比をチェックする（ステップＳ７３〜７５）。
【０１０４】
ステップＳ７３〜７５の処理結果がＯＫ（面積が正しいか面積比が１）かＮＧかの判定を行ない、図１８（ａ’）の画像イメージのように斜め立ちで面積比が１でないためＮＧならばその後の処理をキャンセルしてＮＧ処理を行なう。ＯＫならば、次の処理に移る（ステップＳ７６）。
【０１０５】
ステップＳ７７では、次の処理である慣性主軸（ノズル中心）の計算を行ない、主軸の直線式を求める。
【０１０６】
通常、斜め立ちの原因は、部品の角部がノズル先端の吸着穴に入って発生する斜め吸着にあるため、ノズル中心から部品中心の位置ずれが起こる。このことを利用して、図１８（ｂ）に示すように、ノズル中心（＝画像中心）からある一定の距離以上の場所にラベリングで取得した塊の外周位置がある（吸着ずれ大）か否かのチェックを行なう（ステップＳ７８）。
【０１０７】
位置チェック結果がＯＫかＮＧかの判定を行ない、ＮＧならばその後の処理をキャンセルしてＮＧ処理を行なう。ＯＫならば、次の処理に移る（ステップＳ７９）。
【０１０８】
前記図１６（ａ）のような正常吸着の場合、チップ部品の周囲４辺に外接する直線は矩形になる。この原理を利用するために４辺の外接線を求めて、各辺の交角が９０°±αの許容範囲内に入っているか否かを判定する（ステップＳ８０）。
【０１０９】
外接線形状結果がＯＫかＮＧかの判定を行ない、ＮＧならばその後の処理をキャンセルしてＮＧ処理を行なう。ＯＫならば、次の処理に移る（ステップＳ８１）。因みに、図１８（ｃ）のように、外接線の交角が９０°から大きくずれている場合は、同（ｃ’）のような斜め立ちのＮＧと判定する。
【０１１０】
次いで、チップ部品が正常に吸着されていれば、ウィンドウ内の２値化閾値以上の面積がほぼ１００％になる。これを利用するためにステップＳ７７で求めた慣性主軸上の最外側エッジ点を算出して、主軸に対して垂直な矩形ウィンドウ（図１８（ｄ）中、２つの小矩形）をかける（ステップＳ８２）。なおウィンドウ（取得する判定用矩形）の大きさは、部品サイズから一般的な端子サイズを求めて、それと同一なサイズにするか、又は、予め教示しておく。
【０１１１】
その後、上でかけたウィンドウ内の２値化閾値以上の面積を求め、その面積がウィンドウに対してある一定値以上の割合を占めているか判定する。即ち、ウィンドウ（矩形）に対する端子部の画素数に基づく面積チェック結果がＯＫかＮＧかの判定を行なう（ステップＳ８３）。ここで、ＮＧならばＮＧ処理を行ない、ＯＫならば、ＯＫ処理を行ない終了する。因みに、図１８（ｄ）は、同（ｄ’）に示す斜め立ちであるため、ＮＧということになる。
【０１１２】
以上詳述したように、画像処理でチップ立ち検査を行おうとする場合、斜め立ちの状態を分類し、それぞれの状況別に判定アルゴリズムを複数用意し、順次、判定アルゴリズムを切り替えながら、判定処理を繰り返し行なわなければならない。
【０１１３】
従って、従来の画像処理装置のように、ＣＰＵが１つである場合には、並列処理が可能な処理対象であっても、逐次処理を行なわなければならないために長時間かかることになる。特に、正常であるという判定結果を得るためには用意した全ての判定アルゴリズムを適用し、全ての処理でＯＫの判定を得る必要があるため、最長処理時間となってしまう。頻度的には正常状態の方が圧倒的に多いので、生産タクトに対する影響の度合は極めて大きい。
【０１１４】
そこで、前記図４（ａ）にＮｏ．６として列記したチップ立ち検査を効率的に実現できるよう、鋭意検討した結果なされた本発明に係る実施例４について、以下に説明する。
【０１１５】
図１９に本実施例による検査（判定）の処理手順を表したフローチャートを示す。
【０１１６】
左側に示す主ＣＰＵのフローチャートでは、まず、ステップＳ９１で主ＣＰＵは、図２（ａ）入力回路１を動作させ、画像撮像を行なう。
【０１１７】
撮像された画像データは図２（ａ）の分配器１８により、画像メモリ８、１９に同時間で同データが書き込まれる。
【０１１８】
ステップＳ９２では、チップ立ち検査のアルゴリズムは、ほぼ同等の処理時間になるように組み合わせを考え、図２０に示すように２つのパターンに分割し、パラメータ１、２として設定する。
【０１１９】
主ＣＰＵは、自身と同じ画像上のチップ部品について、アルゴリズムパターン２でチップ立ち検査を行なうよう、分散処理のリクエストを作成し、ステップＳ９３で副ＣＰＵにリクエストを送信すると共に、ステップＳ９４で自身に割り当てられたチップ立ち検査（アルゴリズムパターン１）を実行する。
【０１２０】
その後、ステップＳ９５で自身の処理が、他方のＣＰＵから割り込み（後述する）により中断させられたかどうか判断し、中断させられていたならば、他方のＣＰＵの検査で既にＮＧ判定が確定したものとみなす。
【０１２１】
ステップＳ９６では、中断されることなく正常に検査が終了したのであれば、自身の処理による検査結果の判定を行ない、ＮＧであったならば、他方のＣＰＵの処理を中断させるため、ステップＳ９７で他方のＣＰＵに対して割り込みをかける。
【０１２２】
ステップＳ９８では、前記ステップＳ９３で副ＣＰＵに依頼していたチップ立ち検査の結果を受信し、ステップＳ９９では、どちらかの検査でＮＧと判定されていたならばＮＧ、両方ともＯＫの場合のみＯＫとする結果選択を行う。
【０１２３】
一方、右側に示す副ＣＰＵのフローチャートは次のとおりである。これは主ＣＰＵによるステップＳ９４の処理と並列で動作する。
【０１２４】
ステップＳ１０１で、主ＣＰＵからの前記ステップＳ９３のリクエストを受信すると、ステップＳ１０２では要求された分散処理種別を判定し、指定処理モジュールを呼び出す。
【０１２５】
ステップＳ１０３では、チップ立ち検査（アルゴリズムパターン２）を実行する。
【０１２６】
その後、ステップＳ１０４で自身の処理が、他方のＣＰＵにより中断させられたかどうか判断し、中断させられていたならば、他方のＣＰＵの検査で既にＮＧ判定が確定したものとみなす。
【０１２７】
ステップＳ１０５では、中断されることなく正常に検査が終了したのであれば、自身の処理による検査結果の判定を行ない、ＮＧであったならば、他方のＣＰＵの処理を中断させるため、ステップＳ１０６で他方のＣＰＵに対して割り込みをかけると共に、ステップＳ１０７では、分散処理の結果を主ＣＰＵへ送信する。
【０１２８】
前記図１７、図１８を用いて説明した如く、前記図４（ａ）のＮｏ．６に記載したチップ立ち検査には、複数の判定アルゴリズムを順次試してＯＫ／ＮＧ判定する処理が必要である。従って、通常はあるアルゴリズムで判定し、ＯＫならば次アルゴリズムに変えて再判定を繰り返すという処理を行なうことになるが、本実施例においては、複数の判定処理を並列に効率良く行ない、最長処理時間を大幅に短縮できる。
【０１２９】
このようなＯＫ／ＮＧ判定処理の場合、頻度が高いＯＫの判定に最長処理時間を要することになるので、効果は極めて大きい。
【０１３０】
以上のように実施例４によれば、以下の効果が得られる。
【０１３１】
（１）処理を分散化し、並列処理を行なうことにより、正常時の検査時間を大幅に短縮できる。
【０１３２】
（２）割り込みにより処理を中断させる通知手段を設けることによって、エラー時の検査時間も最小限に済ませることができる。
【０１３３】
以上説明したいずれの実施例１、２、３、４でも、処理を分散化して並列処理を行い、部品認識時間を短縮することができるし、従来性能のハードウェア資源（ＣＰＵ、画像メモリ）の使用効率を向上し、処理能力を向上させることができるので、コスト的に有利である。
【０１３４】
従来の分散処理では、処理対象のデータを同一メモリで共用していたためそのメモリが高価なものである必要があったり、また、別メモリに格納してそれぞれを処理するとしてもデータのコピーという余分な処理が発生していた。これに対して本発明では、分配器を利用することで、撮像時に２面の別メモリに同一データを格納できるハード構成としている。これにより、従来性能のハードウェア資源でありながら、効率のよい分散処理を構築することができる。
【０１３５】
さらに本発明では、２つのＣＰＵのそれぞれが、本来の処理を優先し、お互いが無理がないレベルで分散処理で相互補助し合うスケジューリング方式を採用し、必要に応じて補助の度合いを強めることができる仕組みも組み込んでおり、柔軟なスケジューリングを実現できる。
【０１３６】
また本発明では、電子部品実装装置の画像処理装置において、部品認識に関する画像処理であるアプリケーション処理を分散化、並列処理を行うことで、ハードウェアの高速化のみに頼るのではなく、今ある資源の使用効率を最大限に引き出し、無駄をなくし、処理能力を上げることができる。
【図面の簡単な説明】
【０１３７】
【図１】電子部品実装装置における画像処理装置およびその周辺構成の要部の一例を示すブロック図
【図２】（ａ）は本発明による画像処理装置の画像入力部の一例を示すブロック図、（ｂ）は画像入力部の他の例を示すブロック図
【図３】（ａ）は自ＣＰＵに課せられた処理に支障のない範囲で補助処理を行う場合を示す説明図であり、（ｂ）は補助処理のプライオリティによって、補助のレベルを変動させるような場合を示す説明図
【図４】（ａ）は独立処理を分散し、並列処理する具体的な適用処理の例を示す表図であり、（ｂ）は逐次連続処理を並列に動作させる場合の具体的な適用処理の例を示す表図
【図５ａ】リード列検出を分散処理するときの例を示した説明図
【図５ｂ】外形検出を分散処理するときの例を示した説明図
【図５ｃ】ボール電極の検出を分散処理するときの例を示した説明図
【図６】フィルタの結果とエッジ判定しきい値の関係について説明する説明図であり、（ａ）は撮像画像のリード部分を示すものであり、（ｂ）は（ａ）のスキャンラインＬの位置の濃度値を表すグラフであり、（ｃ）はフィルタの結果を表すグラフであり、（ｄ）は（ｃ）のゼロクロス点での変化量を表すグラフ
【図７】フィルタの結果とエッジ判定しきい値の関係について説明する図であって、写りのよくないリード端子が存在する場合の説明図であり、（ａ）は撮像画像のリード部分を示すものであり、（ｂ）は（ａ）のスキャンラインＬの位置のフィルタの結果を表すグラフであり、（ｃ）は（ｂ）のゼロクロス点での変化量を表すグラフ
【図８】フィルタの結果とエッジ判定しきい値の関係について説明する説明図であって、リード端子と同間隔でノイズが存在する場合の図であり、（ａ）は撮像画像のリード部分を示すものであり、（ｂ）は（ａ）のスキャンラインＬの位置のフィルタの結果を表すグラフであり、（ｃ）は（ｂ）のゼロクロス点での変化量を表すグラフ
【図９】図４（ａ）に示した処理を主ＣＰＵと副ＣＰＵとで行う場合の各ＣＰＵの動作を示すフローチャート
【図１０】図４（ａ）に示したリトライ処理を主ＣＰＵと副ＣＰＵとで行う場合の各ＣＰＵの動作を示すフローチャート
【図１１】図４（ａ）に示した分散処理を主ＣＰＵと副ＣＰＵとで行う場合の各ＣＰＵの動作を示すフローチャート
【図１２】本発明による画像処理装置の画像入力部の更に他の構成例を示すブロック図
【図１３】図１２のスイッチの切り換え動作を説明する表図
【図１４】図１２に示す構成での処理の流れを示すフローチャート
【図１５】図１２に示す構成での処理の遷移を示すタイミングチャート
【図１６】チップの吸着状態の違いを示す説明図
【図１７】チップ立ち判定のアルゴリズムの一例を示すフローチャート
【図１８】上記アルゴリズムの適用例の画像イメージを示す説明図
【図１９】本発明によるチップ立ち検査の判定処理を示すフローチャート
【図２０】チップ立ち検査のアルゴリズムパターンの分類例を示す図表
【図２１】従来の画像入力部の構成を示すブロック図であって、（ａ）はひとつのＣＰＵを用いた構成を示すブロック図であり、（ｂ）は２つのＣＰＵを用いた構成を示すブロック図
【符号の説明】
【０１３８】
１…吸着ノズル
２…電子部品
３…照明装置
４、６４…標準カメラ
５、６５…高解像度カメラ
６…モニタ
７、２０…入力回路
８、１９、２２、２３…画像メモリ
９…作業用メモリ
１０、１７…ＣＰＵ
１１…制御ＣＰＵ
１２…部品データ格納メモリ
１３…インターフェース
１４…画像処理装置
１５…マシン制御装置
１６…画像入力部
１８、２１…分配回路
２４、２５、２６…スイッチ
３０、３１、３２…電子部品
【図１】
2008065815.tif 000003
【図２】
2008065815.tif 000004
【図３】
2008065815.tif 000005
【図４】
2008065815.tif 000006
【図５ａ】
2008065815.tif 000007
【図５ｂ】
2008065815.tif 000008
【図５ｃ】
2008065815.tif 000009
【図６】
2008065815.tif 000010
【図７】
2008065815.tif 000011
【図８】
2008065815.tif 000012
【図９】
2008065815.tif 000013
【図１０】
2008065815.tif 000014
【図１１】
2008065815.tif 000015
【図１２】
2008065815.tif 000016
【図１３】
2008065815.tif 000017
【図１４】
2008065815.tif 000018
【図１５】
2008065815.tif 000019
【図１６】
2008065815.tif 000020
【図１７】
2008065815.tif 000021
【図１８】
2008065815.tif 000022
【図１９】
2008065815.tif 000023
【図２０】
2008065815.tif 000024
【図２１】
2008065815.tif 000025