(57)【要約】【課題】  １台のコントローラで、各画像処理を所定の処理手順と同期させて実行しつつ、撮像の取りこぼしを防ぐための撮像禁止期間をなくす。【解決手段】  画像処理ユニットには、計測ユニットと撮像ユニットが含まれており、画像処理ユニットの処理手順を規定する画像処理プログラムに基づいて、処理手順に沿って各画像処理ユニットが順次実行される画像処理装置において、所定の撮像手段（カメラ３０ａ〜カメラ３０ｃのいずれか）から画像データが得られるときに成立する複数種類の撮像完了条件を記憶しており、撮像ユニットの処理内容として、画像データが所定の撮像手段から得られるものであるかを識別し、複数種類の撮像完了条件のうちいずれかが成立しているかを判定し、成立していると判定した撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して割り当て処理を実行する。【選択図】          図２
2011043363.tif 000002
【特許請求の範囲】
【請求項１】
検査対象物を撮像して画像データを生成する複数のカメラを有し、当該複数のカメラから取得した画像データを用いて計測を行い、計測結果に基づき検査対象物の良否を判定して判定信号を出力するとともに、
前記複数のカメラから取得した画像データを計測に用いるための割り当てを行う割り当て処理と、当該割り当て処理により割り当てが行われた画像データを用いて計測を行う複数の計測処理とが実行されるように規定される画像処理装置において、
前記複数のカメラのうち一又は複数のカメラの種別と、前記複数の計測処理のうち一の計測処理との対応付けを複数パターン設定する設定手段と、
前記複数のカメラのうちいずれのカメラから画像データが取得されるかを識別して、前記設定手段により設定された複数パターンの前記対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたかを判定する判定手段と、
画像データが取得されたと判定された前記一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行う割り当て手段と、を備えることを特徴とする画像処理装置。
【請求項２】
前記割り当て手段は、前記判定手段により画像データが取得されていないと判定されたときには、計測処理を実行するための割り当てを行わずに待機することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記割り当て手段は、前記設定手段により設定された複数の前記対応付けのうち二以上の対応付けにおいて規定される種別のカメラから画像データが取得されたと判定されたときには、予め定めた優先順位に基づく一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行うことを特徴とする請求項１又は２記載の画像処理装置。
【請求項４】
前記優先順位は、前記設定手段により設定された複数の前記対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたタイミングに基づいて定められていることを特徴とする請求項３記載の画像処理装置。
【請求項５】
検査対象物を撮像して画像データを生成する複数のカメラを有し、当該複数のカメラから取得した画像データを用いて計測を行い、計測結果に基づき検査対象物の良否を判定して判定信号を出力するとともに、
前記複数のカメラから取得した画像データを計測に用いるための割り当てを行う割り当て処理と、当該割り当て処理により割り当てが行われた画像データを用いて計測を行う複数の計測処理とが実行されるように規定される画像処理装置を用いた画像処理方法において、
前記複数のカメラのうち一又は複数のカメラの種別と、前記複数の計測処理のうち一の計測処理との対応付けを複数パターン設定する設定ステップと、
前記複数のカメラのうちいずれのカメラから画像データが取得されるかを識別して、前記設定ステップにより設定された複数パターンの前記対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたかを判定する判定ステップと、
画像データが取得されたと判定された前記一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行う割り当てステップと、を含むことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査対象物をカメラ等の撮像手段で撮像して、得られた画像データを用いて計測処理を実行する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
工場など数多くの生産現場では、人の目視に頼っていた検査を自動化・高速化する画像処理装置が導入されている。画像処理装置は、ベルトコンベア等の生産ラインを流れてくるワークをカメラによって撮像し、得られた画像データを用いて、所定領域のエッジ検出や面積計算などの計測処理を実行する。そして、計測処理の処理結果に基づいて、ワークの欠け検出やアライメントマークの位置検出などの検査を行い、ワークの欠けや位置ずれの有無を判定する判定信号を出力する。このように、画像処理装置は、ＦＡセンサの一つとして利用されることがある。
【０００３】
画像処理装置の中には、実行される処理手順が予め決められているパッケージ型のものや、ユーザがパソコン上で作成した所望の処理手順を実行する画像処理プログラムを転送し、思い通りの計測処理を行わせるものなどがある。前者は、予め決められた処理手順でしか画像処理を行うことができないため、画像処理の自由度が制限される一方、後者は、所望の計測処理を行わせるには高度なプログラミングスキルと多大な工数を必要とする。これらの課題を解決する画像処理装置の一つとして、画像処理一連の処理手順をフローチャートで表示し、そのフローチャート上で、ユーザにより処理手順を変更可能にしたものがある（例えば特許文献１参照）。ユーザが所望の処理手順を実現するためには、例えばＰＣ上の専用ソフトウェアによりフローチャート上で処理手順をカスタマイズし、カスタマイズされた処理手順を画像処理装置に実行させるための画像処理プログラムを生成し、その画像処理プログラムを画像処理装置のコントローラに転送すればよい。
【０００４】
ユーザが処理手順をカスタマイズ可能な画像処理装置の使用態様について、図２０を用いて具体的に説明する。図２０は、画像処理装置が使用される場面の一例を示す図である。図２０では、ベルトコンベア２００上を流れているワーク１００を、２台のカメラ３０１及びカメラ３０２により撮像し、カメラ３０１及びカメラ３０２が接続されている１台のコントローラ３００において、得られた画像データを用いて計測処理が実行される。図２１は、ユーザによって作成された処理手順の一例を示すフローチャートである。
【０００５】
図２０及び図２１に示すように、ワーク１００がカメラ３０１の下まで流れてくると、外部（例えば光電センサ等）からのトリガ入力に基づき、カメラ３０１によってワーク１００の撮像が行われる。そして、ワーク１００がカメラ３０２の下まで流れてくると、再び外部（例えば光電センサ等）からのトリガ入力に基づき、カメラ３０２によってワーク１００の撮像が行われる。このようにして、カメラ３０１及びカメラ３０２での撮像が終わると（図２１のステップＳ１０１）、コントローラ３００において、これらの撮像により得られた２つの画像データを用いて計測処理が実行される（図２１のステップＳ１０２）。なお、図２１に示すフローチャートでは、ＳＴＡＲＴシンボルからＥＮＤシンボルまでのフローシーケンスを１周期分の画像処理として、計測周期が定められている。
【０００６】
ここで、図２１において、ステップＳ１０２の計測処理が終わるまでは、ワーク１００の次に流れてくるワーク（ワーク１００の左隣のワーク）の撮像をカメラ３０１で行うことができない。上述したように、ＳＴＡＲＴシンボルからＥＮＤシンボルまでのフローシーケンスが１周期分の画像処理であり、ステップＳ１０２の計測処理を実行している最中に、ステップＳ１０１の撮像処理を実行することはできないからである。この点について更に詳細に説明すると、図２１において、まず、ＳＴＡＲＴシンボル直下に位置する撮像処理（ステップＳ１０１）が実行され、ワーク１００の撮像が行われる。そして、次の計測処理（ステップＳ１０２）において必要になるカメラ３０１及びカメラ３０２からの画像データが得られると、ステップＳ１０１の撮像は完了する。その後、カメラ３０１及びカメラ３０２からの画像データを用いてステップＳ１０２の計測処理が実行され、この計測処理が完了すると、１周期分の画像処理（一フローシーケンス）が終了する。このように各画像処理（ステップＳ１０１及びステップＳ１０２）を、フローチャートに示す処理手順と同期させて実行することによって享受できる利点はいくつかある。例えば、各画像処理を非同期で実行すると、撮像して得られた画像データをメモリへ書き込む、計測処理を実行するために画像データをメモリから読み出す、といった動作が同時に行われることに起因するメモリ競合の問題が生じるが、各画像処理をフローチャートに示す処理手順と同期させて実行するようにすれば、このようなメモリ競合の問題は生じない。また、各画像処理をフローチャートに示す処理手順と同期させて実行することによって、その処理手順に沿ってデバッグを行うことができるようになり、ひいてはバグ修正も容易になる。
【０００７】
このような理由から、ユーザが処理手順をカスタマイズ可能な画像処理装置では、各画像処理は所定の処理手順と同期させて実行するようになっており、現在実行中の処理ステップが終わらなければ、次の処理ステップに移行できないようになっている。そのため、上述したように、図２１においてステップＳ１０２の計測処理を実行している最中に、ステップＳ１０１の撮像処理を実行することはできず、撮像の取りこぼしを防ぐためには、カメラ３０１で撮像を行うことができない撮像禁止期間を設けなければならなかった。
【０００８】
この点、ステップＳ１０２の計測処理を実行している最中であっても、内部的に、カメラ３０１での撮像を可能にする技術がある。例えば特許文献２に開示されているように、撮像用の画像データメモリと計測用の画像データメモリを設けておき、計測処理を実行しながら撮像を行う技術である。このような技術を採用すれば、図２１に示すフローチャートにおいて、計測用の画像データメモリを使用するステップＳ１０２の計測処理が終わっていなくても、撮像用の画像データメモリを使用して、次の計測周期におけるカメラ３０１での撮像を予め行っておくことが可能になる。
【０００９】
ところで、図２１に示すフローチャートは、ステップＳ１０２の計測処理において、カメラ３０１での撮像により得られた画像データと、カメラ３０２での撮像により得られた画像データとを用いて、一の画像処理を行うものであるが、それぞれの画像データに対し、別々に画像処理を行いたい場合がある。
【００１０】
図２２は、カメラ３０１での撮像により得られた画像データと、カメラ３０２での撮像により得られた画像データのそれぞれに対し、別々の画像処理を行う場合のフローチャートである。図２２に示すフローチャートでは、まず、ワーク１００がカメラ３０１の下まで流れてくると、カメラ３０１での撮像により画像データを取得する第１撮像（ステップＳ２０１）が実行される。第１撮像の処理が完了すると、得られた画像データに対して第１計測が実行される（ステップＳ２０２）。次に、ワーク１００がカメラ３０２の下まで流れてくると、カメラ３０２での撮像により画像データを取得する第２撮像（ステップＳ２０３）が実行される。第２撮像の処理が完了すると、得られた画像データに対して第２計測が実行される（ステップＳ２０４）。
【００１１】
また、上述した特許文献２に開示されている技術を適用することによって、ステップＳ２０２に示す第１計測が終わる前に、内部的に、カメラ３０２での撮像を予め行っておくことができるし、ステップＳ２０４に示す第２計測が終わる前に、内部的に、次の計測周期におけるカメラ３０１での撮像を予め行っておくことができる。このように、計測処理を実行しながら撮像を行う技術（すなわち計測処理と撮像処理を非同期で行う技術）を用いることによって、各画像処理（ステップＳ２０１〜ステップＳ２０４）をフローチャートに示す処理手順と同期させて実行しつつ、撮像の取りこぼしを防ぐことができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平０９−２８８５６８号公報
【特許文献２】特開平１０−３２８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、図２２に示すフローチャートにおいては、少なくとも、カメラ３０１での撮像（ステップＳ２０１の第１撮像）とカメラ３０２での撮像（ステップＳ２０３の第２撮像）は、シリアルに処理されなければならない。すなわち、ステップＳ２０３に示す第２撮像が実行されている最中に、ワーク１００の次のワークがカメラ３０１の下に流れてきた場合、次の計測周期におけるステップＳ２０１の第１撮像を実行することはできない。図２１を用いて説明したように、各画像処理をフローチャートの処理手順と同期させて実行するようになっている画像処理装置では、現在実行中の処理ステップが終わらなければ、次の処理ステップ（計測周期）に移行できないようになっているからである。また、たとえ上述した特許文献２に開示されている技術を適用したとしても、カメラ３０１での第１撮像により得られた画像データをメモリへ書き込む動作と、カメラ３０２での第２撮像により得られた画像データをメモリへ書き込む動作とが同時に行われると、メモリ競合の問題が生じるからである。
【００１４】
そのため、図２２に示すフローチャートでは、撮像の取りこぼしを防ぐために、やはりカメラ３０１で撮像を行うことができない撮像禁止期間を設けなければならない。この撮像禁止期間の存在は、カメラ３０１での処理時間の遅延、ひいては検査タクト遅延に繋がる。
【００１５】
そこで、例えば図２０に示すコントローラ３００を２台用意して、カメラ３０１での撮像と、カメラ３０２での撮像とを独立させることを考える。すなわち、２台のコントローラのうち、一方のコントローラにはカメラ３０１を接続し、他方のコントローラにはカメラ３０２を接続する。そうすると、処理手順としては、図２３に示すように、独立した２本のフローチャートが存在することと等価である。図２３（ａ）は、カメラ３０１から画像データを得る第１撮像（ステップＳ２０１）及びその画像データを用いた第１計測（ステップＳ２０２）がシリアルに接続された処理手順であり、図２３（ｂ）は、カメラ３０２から画像データを得る第２撮像（ステップＳ２０３）及びその画像データを用いた第２計測（ステップＳ２０４）がシリアルに接続された処理手順である。
【００１６】
図２３によれば、一方のコントローラにおけるカメラ３０１での撮像（ステップＳ２０１の第１撮像）と、他方のコントローラにおけるカメラ３０２での撮像（ステップＳ２０３の第２撮像）とを独立させることができるので、カメラ３０２での第２撮像（ステップＳ２０３）が実行されている最中に、ワーク１００の次のワークがカメラ３０１の下に流れてきた場合であっても、ステップＳ２０１の第１撮像を実行することができる。
【００１７】
ところが、図２３に示すフローチャートによる画像処理を実現するためには、上述したように２台のコントローラが必要になるため、その分ユーザに余分なコスト負担を強いることになる。そこで、図２３に示すフローチャートによる画像処理を１台のコントローラで実現することも考えられるが、図２３（ａ）に示すフローチャートに示す各画像処理と、図２３（ｂ）に示すフローチャートに示す各画像処理という２つのフローシーケンスを、２台のコントローラを用いるときのように非同期で実行させると、上述同様、メモリ競合の問題が生じたり、一のフローシーケンスに沿ってデバッグを行うことができなかったりと、各画像処理をフローチャートに示す処理手順と同期させて実行することで享受し得る利点が失われてしまう。
【００１８】
このように、従来の画像処理装置では、検査タクトを向上させるため、また、ユーザに余分なコスト負担を掛けないようにするために、１台のコントローラで撮像の取りこぼしを防ぐための撮像禁止期間をなくそうとすると、図２３を用いて説明したように、各画像処理を所定の処理手順と同期させて実行することにより享受し得る利点（メモリ競合を防ぐ、バグ修正が容易）が失われてしまうという問題があった。
【００１９】
本発明は、以上の点に鑑みてなされたものであり、その目的は、１台のコントローラで、各画像処理を所定の処理手順と同期させて実行しつつ、撮像の取りこぼしを防ぐための撮像禁止期間をなくし得る画像処理装置及び画像処理方法を提供することにある。
【課題を解決するための手段】
【００２０】
本発明に係る画像処理装置は、検査対象物を撮像して画像データを生成する複数のカメラを有し、複数のカメラから取得した画像データを用いて計測を行い、計測結果に基づき検査対象物の良否を判定して判定信号を出力するとともに、複数のカメラから取得した画像データを計測に用いるための割り当てを行う割り当て処理と、割り当て処理により割り当てが行われた画像データを用いて計測を行う複数の計測処理とが実行されるように規定される画像処理装置において、複数のカメラのうち一又は複数のカメラの種別と、複数の計測処理のうち一の計測処理との対応付けを複数パターン設定する設定手段と、複数のカメラのうちいずれのカメラから画像データが取得されるかを識別して、設定手段により設定された複数パターンの対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたかを判定する判定手段と、画像データが取得されたと判定された一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行う割り当て手段と、を備える。
【００２１】
このような構成によれば、例えば外部のプログラム作成支援装置からの画像処理プログラム転送により、複数のカメラのうち一又は複数のカメラの種別と、複数の計測処理のうち一の計測処理との対応付けが複数パターン設定されるとともに、設定された複数パターンの対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたかが判定され、画像データが取得されたと判定された一の対応付けにおいて規定される一の計測処理を実行するための割り当てが行われる。したがって、カメラによる撮像及び計測に用いるための割り当て処理、画像データを用いた計測処理、という所定の処理手順に同期させて各処理を実行することができる。また、本発明でいう割り当て処理では、設定手段により設定された複数パターンの対応付けのうち、一の対応付けにおいて規定される種別のカメラから画像データが取得されたことが契機となって行われるので、検査対象物を撮像する複数のカメラから画像データを取得する撮像機構を、上述した所定の処理手順と非同期で動作させることができる。その結果、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができる。さらに、このような効果を１台のコントローラで実現することができる。
【００２２】
ここで、画像処理装置は、上述した割り当て手段が、判定手段により画像データが取得されていないと判定されたときには、計測処理を実行するための割り当てを行わずに待機するような構成としてもよい。
【００２３】
このような構成によれば、上述した割り当て手段は、判定手段により画像データが取得されていないと判定されたときには、計測処理を実行するための割り当てを行わずに待機するので、このようなときであっても、割り当て手段による割り当てを行うことができない割り当てエラーが生じることはなく、所定の処理手順に同期させて割り当て処理や一の計測処理を実行することができる。
【００２４】
また、画像処理装置は、上述した割り当て手段が、設定手段により設定された複数の対応付けのうち二以上の対応付けにおいて規定される種別のカメラから画像データが取得されたと判定されたときには、予め定めた優先順位に基づく一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行うような構成としてもよい。
【００２５】
このような構成によれば、上述した割り当て手段は、設定手段により設定された複数の対応付けのうち二以上の対応付けにおいて規定される種別のカメラから画像データが取得されたと判定されたときには、予め定めた優先順位に基づく一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行うので、このようなときであっても、割り当て手段による割り当ての対象が不明になることはなく（すなわち、二以上の対応付けにおいて規定される種別のカメラから画像データが取得されたと判定されたときであっても、どの対応付けにおいて規定される一の計測処理を実行するための割り当てを行えばよいかが特定されるので）、所定の処理手順に同期させて割り当て処理や一の計測処理を実行することができる。
【００２６】
また、画像処理装置は、上述した優先順位が、設定手段により設定された複数の対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたタイミングに基づいて定められているような構成としてもよい。
【００２７】
このような構成によれば、カメラから画像データが取得されたタイミングが早いか遅いかに基づいて割り当てを行うことができるので、カメラから画像データが取得された順番を考慮して（いわゆる早いもの順で）割り当てを行うことができる。
【００２８】
さらに、検査対象物を撮像して画像データを生成する複数のカメラを有し、複数のカメラから取得した画像データを用いて計測を行い、計測結果に基づき検査対象物の良否を判定して判定信号を出力するとともに、複数のカメラから取得した画像データを計測に用いるための割り当てを行う割り当て処理と、割り当て処理により割り当てが行われた画像データを用いて計測を行う複数の計測処理とが実行されるように規定される画像処理装置を用いた画像処理方法において、複数のカメラのうち一又は複数のカメラの種別と、複数の計測処理のうち一の計測処理との対応付けを複数パターン設定する設定ステップと、複数のカメラのうちいずれのカメラから画像データが取得されるかを識別して、設定ステップにより設定された複数パターンの対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたかを判定する判定ステップと、画像データが取得されたと判定された一の対応付けにおいて規定される一の計測処理を実行するための割り当てを行う割り当てステップと、を含むようにしてもよい。
【００２９】
このような方法によれば、上述した画像処理装置と同様に、１台のコントローラで、所定の処理手順に同期させて割り当て処理や計測処理を実行することができるとともに、撮像機構を所定の処理手順と非同期で動作させて、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができる。
【発明の効果】
【００３０】
以上説明したように、本発明によれば、所定の処理手順に同期させて割り当て処理や計測処理を実行することができるので、これらを非同期で実行した場合に生じるメモリ競合やバグ修正の問題を防ぐことができる。
【００３１】
また、本発明によれば、検査対象物を撮像する複数の撮像手段から画像データを得る撮像機構を、所定の処理手順と非同期で動作させることができるので、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができる。さらに、これらの効果を１台のコントローラで実現することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態に係る画像処理装置の概略構成例を示す図である。
【図２】画像処理装置の概略動作について説明するためのフローチャートである。
【図３】本発明の実施の形態に係る画像処理装置のハードウェア構成を示すブロック図である。
【図４】本実施形態に係る画像処理装置における撮像機構の動作を示すフローチャートである。
【図５】本実施形態に係る画像処理装置における画像処理の流れを示すフローチャートである。
【図６】図５に示す撮像ユニット処理の詳細な流れを示すフローチャートである。
【図７】予め設定された撮像完了条件の一例を示す図である。
【図８】本実施形態に係る画像処理装置における画像処理の流れを示すタイミングチャート（概念図）である。
【図９】画像処理装置の画像処理プログラムを作成するＰＣの機能構成例を示すブロック図である。
【図１０】ＰＣの表示部に表示されたエディタ画面（主要部のみ）の一例を示す図である。
【図１１】図７に示す撮像完了条件を設定する設定画面の一例を示す図である。
【図１２】本発明の他の実施の形態に係る画像処理装置における画像処理の流れを示すタイミングチャート（概念図）である。
【図１３】本発明の他の実施の形態に係る画像処理装置で使用する撮像完了条件設定テーブルである。
【図１４】本発明の他の実施の形態に係る画像処理装置で使用する撮像完了条件設定テーブルである。
【図１５】図１４に示す撮像完了条件設定テーブルを用いた画像処理の流れを示すタイミングチャート（概念図）である。
【図１６】本発明の他の実施の形態に係る画像処理装置で使用する撮像完了条件設定テーブルである。
【図１７】本発明の他の実施の形態に係る画像処理装置における画像処理の流れを示すフローチャートである。
【図１８】本発明の他の実施の形態に係る画像処理装置で使用する撮像完了条件設定テーブルである。
【図１９】本発明の他の実施の形態に係る画像処理装置における画像処理の流れを示すフローチャートである。
【図２０】ベルトコンベア上を流れているワークを２台のカメラで撮像する様子を示す図である。
【図２１】ワークを検査する際の従来の画像処理の流れを示すフローチャートである。
【図２２】ワークを検査する際の従来の画像処理の流れを示すフローチャートである。
【図２３】ワークを検査する際の従来の画像処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態に係る画像処理装置について、図面に基づいて具体的に説明する。
【００３４】
［概略構成］
図１は、本発明の実施の形態に係る画像処理装置１の概略構成例を示す図である。図１に示すように、画像処理装置１は、エッジ検出や面積計算などの計測処理を実行するコントローラ１０と、検査対象物を撮像する３台のカメラ３０ａ，３０ｂ，３０ｃと、液晶パネル等のモニタ４０と、ユーザがモニタ４０上で各種操作するためのコンソール５０と、を有している。カメラ３０ａ，３０ｂ，３０ｃ、モニタ４０、及びコンソール５０は、コントローラ１０と着脱可能に接続される。コントローラ１０は、カメラ３０ａ，３０ｂ，３０ｃから得られた画像データを用いた計測処理を実行し、ＰＬＣ６０に対し、ワークの良否などの判定結果を示す信号として判定信号を出力する。
【００３５】
３台のカメラ３０ａ，３０ｂ，３０ｃは、ＰＬＣ６０から入力される制御信号、すなわちカメラ３０ａ，３０ｂ，３０ｃから画像データを取り込むタイミングを規定する撮像トリガ信号に基づいて、検査対象物の撮像を行う。モニタ４０は、検査対象物を撮像して得られた画像データや、その画像データを用いた計測処理の結果を表示するための表示装置である。一般に、ユーザはモニタ４０を視認することによって、画像処理装置１が運転中である場合のコントローラ１０の動作状態を確認することができる。コンソール５０は、モニタ４０上でフォーカス位置を移動させたり、メニュー項目を選択したりするための入力装置である。
【００３６】
また、画像処理装置１のコントローラ１０には、画像処理装置１の画像処理プログラム（制御プログラム）を生成するためのＰＣ７０が接続されており、このＰＣ７０上で動作するソフトウェアによって、画像処理ユニットの処理手順を規定する画像処理プログラムが生成される（詳細については後述する）。画像処理装置１では、その処理手順に沿って各画像処理ユニットが順次実行される。ＰＣ７０とコントローラ１０とは、通信ネットワークを介して接続されており、ＰＣ７０上で生成された画像処理プログラムは、モニタ４０の表示態様を規定するレイアウト情報などとともにコントローラ１０に転送される。また逆に、コントローラ１０から画像処理プログラムやレイアウト情報などを取り込んで、ＰＣ７０上で編集することもできる。
【００３７】
図２は、画像処理装置１の概略動作について説明するためのフローチャートである。図２（ａ）及び図２（ｂ）において、ステップＳ２の計測Ａは、カメラ３０ａでの撮像により得られた画像データを用いた所定の計測処理を実行する計測ユニットを示し、ステップＳ３の計測Ｂは、カメラ３０ｂでの撮像により得られた画像データを用いた所定の計測処理を実行する計測ユニットを示し、ステップＳ４の計測Ｃは、カメラ３０ｃでの撮像により得られた画像データを用いた所定の計測処理を実行する計測ユニットを示している。また、これらの計測ユニットは、ステップＳ１の撮像ユニット、ステップＳ５の分岐ユニット（図２（ａ））、ステップＳ６の合流ユニット（図２（ａ））とともに、実行される処理内容が規定された複数の画像処理ユニットとしてコントローラ１０に記憶されている。また、図２に示すフローチャートは、例えば図１に示すＰＣ７０上で動作するソフトウェアによってユーザが作成したものであって、画像処理ユニットの処理手順を示している。
【００３８】
ここで、本実施形態に係る画像処理装置１における撮像ユニット（ステップＳ１）は、カメラ３０ａ，３０ｂ，３０ｃから得られた画像データに対して、計測ユニットで実行される計測処理に用いるための割り当て処理を実行するユニットである。そして、この割り当て処理を実行するにあたっては、カメラ３０ａ，３０ｂ，３０ｃのうち所定のカメラから画像データが得られるときに成立する複数種類の撮像完了条件（詳細は後述する）が成立しているかが判定され、成立していると判定された撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して、割り当て処理を実行する。
【００３９】
図２（ａ）及び図２（ｂ）においては、カメラ３０ａからの画像データが得られたときに撮像完了条件として条件Ａが成立し、カメラ３０ｂからの画像データが得られたときに撮像完了条件として条件Ｂが成立し、カメラ３０ｃからの画像データが得られたときに撮像完了条件として条件Ｃが成立するようになっている。
【００４０】
また、条件Ａが計測Ａに対応付けられ、条件Ｂが計測Ｂに対応付けられ、条件Ｃが計測Ｃに対応付けられている。具体的には、図２（ａ）では、ステップＳ５の分岐ユニットのプロパティにおいて、このような対応付けがなされており、図２（ｂ）では、各計測ユニットのプロパティにおいて、このような対応付けがなされている。
【００４１】
まず、図２（ａ）に示すフローチャートについて詳述すると、ＳＴＡＲＴシンボル直下に位置する撮像ユニット（ステップＳ１）が実行される。具体的には、コントローラ１０は、図２（ａ）に示すフローチャートと非同期で動作させることが可能な撮像機構を有しており、この撮像機構によって、図２（ａ）に示すフローチャートとは独立して、カメラ３０ａ，３０ｂ，３０ｃでの撮像により得られた画像データを取得する。そして、コントローラ１０は、その画像データがいずれのカメラから得られたものであるかを識別する機能を有しており、その識別結果に基づいて、上述した条件Ａ〜Ｃが成立しているかを判定する。いずれも成立していないと判定したときには、上述した識別機能を発揮しながら条件Ａ〜Ｃのいずれかが成立するまで待機する。なお、画像データがいずれのカメラから得られたものであるかを識別するタイミング（例えばメモリにアクセスするタイミング）については、常時識別するようにすることもできるし、定期的に識別するようにすることもできる。
【００４２】
例えばカメラ３０ａでの撮像により得られた画像データを取得した場合、コントローラ１０は条件Ａが成立していると判定し、条件Ａに対応付けられた計測ユニット（計測Ａ）の実行に用いる画像データとして、その画像データに対して割り当て処理を実行する。この割り当て処理が実行されることによって、その画像データは計測Ａの実行対象として認識される。
【００４３】
割り当て処理が終わると、撮像ユニット（ステップＳ１）の実行は終了し、次に分岐ユニット（ステップＳ２）の実行に移行する。この分岐ユニットでは、フローチャートを各計測ユニット（計測Ａ〜計測Ｃ）それぞれへ分岐させる分岐処理が実行されるが、この際、上述したように条件Ａは計測Ａに対応付けられているため、処理は分岐ユニットを抜けた後、ステップＳ２の計測ユニット（計測Ａ）に移行する。その後、カメラ３０ａでの撮像により得られた画像データを用いて、計測Ａが示す計測処理が実行される。その計測処理が終了すると、ステップＳ６の合流ユニットを経て、ＥＮＤシンボルにより一のフローシーケンスが終了する。
【００４４】
コントローラ１０がカメラ３０ｂでの撮像により得られた画像データを取得した場合や、コントローラ１０がカメラ３０ｃでの撮像により得られた画像データを取得した場合も同様である。すなわち、前者の場合は、ステップＳ１の撮像ユニットから、ステップＳ５の分岐ユニットを介して、ステップＳ３の計測ユニット（計測Ｂ）が実行されるし、後者の場合は、ステップＳ１の撮像ユニットから、ステップＳ５の分岐ユニットを介して、ステップＳ４の計測ユニット（計測Ｃ）が実行される。
【００４５】
従来は、撮像ユニット（ステップＳ１）の実行終了タイミングが、単に、例えば計測Ａの実行に用いる画像データに対して割り当て処理が実行されたときと決まっていたため、図２（ａ）に示すようなフローシーケンスを実現することができなかった。すなわち、撮像ユニットの実行終了タイミングが、計測Ａの実行に用いる画像データに対して割り当て処理が実行されたときと決まっている場合には、ステップＳ１の撮像ユニット→ステップＳ５の分岐ユニットを介してステップＳ２の計測ユニット（計測Ａ）という処理フローでしか画像処理を行うことができないし、撮像ユニットの実行終了タイミングが、計測Ｂの実行に用いる画像データに対して割り当て処理が実行されたときと決まっている場合には、ステップＳ１の撮像ユニット→ステップＳ５の分岐ユニットを介してステップＳ３の計測ユニット（計測Ｂ）という処理フローでしか画像処理を行うことができないし、撮像ユニットの実行終了タイミングが、計測Ｃの実行に用いる画像データに対して割り当て処理が実行されたときと決まっている場合には、ステップＳ１の撮像ユニット→ステップＳ５の分岐ユニットを介してステップＳ４の計測ユニット（計測Ｃ）という処理フローでしか画像処理を行うことができなかった。
【００４６】
しかし、本実施形態に係る画像処理装置１のように、撮像ユニット（ステップＳ１）の実行終了タイミングを、複数種類の撮像完了条件のうちいずれかが成立していると判定され、その撮像完了条件に対応付けられた計測ユニット（計測Ａ〜計測Ｃのいずれか）の実行に用いる画像データに対して割り当て処理が実行されたときとすることによって、図２（ａ）に示すような処理フローが可能になる。
【００４７】
次に、図２（ｂ）に示すフローチャートについて説明する。図２（ｂ）に示すフローチャートでは、図２（ａ）に示すフローチャートにある分岐ユニット（ステップＳ５）及び合流ユニット（ステップＳ６）が存在しない。図２（ｂ）では、上述したように、撮像完了条件と計測ユニットとの対応付けが各計測ユニットのプロパティにおいてなされている。したがって、ステップＳ２の計測ユニット（計測Ａ）は、条件Ａが成立していると判定されたときに実行されるが、それ以外のときには何も実行されずに通過（スルー）される。また、ステップＳ３の計測ユニット（計測Ｂ）は、条件Ｂが成立していると判定されたときに実行されるが、それ以外のときには何も実行されずに通過される。また、ステップＳ４の計測ユニット（計測Ｃ）は、条件Ｃが成立していると判定されたときに実行されるが、それ以外のときには何も実行されずに通過される。なお、撮像ユニット（ステップＳ１）の処理内容については、図２（ａ）と同様である。
【００４８】
したがって、撮像ユニット（ステップＳ１）において、条件Ａが成立していると判定され上で割り当て処理が実行されている場合には、その後の処理フローとして、ステップＳ２の計測ユニット（計測Ａ）のみが実行され、ステップＳ３の計測ユニット（計測Ｂ）及びステップＳ４の計測ユニット（計測Ｃ）は通過し、ＥＮＤシンボルにより一のフローシーケンスが終了する。条件Ｂや条件Ｃが成立していると判定された上で割り当て処理が実行されている場合も同様である。
【００４９】
なお、図２（ａ）及び図２（ｂ）では、コントローラ１０において、カメラ３０ａ〜カメラ３０ｃからの画像データが“得られた”ときに撮像完了条件が成立することとしているが、カメラ３０ａ〜カメラ３０ｃからの画像データが“得られる”ときに撮像完了条件が成立することとしてもよい。具体的には、例えば、ＰＬＣ６０からカメラ３０ａ〜カメラ３０ｃの撮像トリガ信号がコントローラ１０に入力されたとき、としてもよい。
【００５０】
以上説明したように、画像処理装置１には、実行される処理内容が規定された複数の画像処理ユニットが記憶されており、その画像処理ユニットには、検査対象物を撮像するカメラから得られた画像データを用いた計測処理を実行する計測ユニット（ステップＳ２〜ステップＳ４）と、カメラから得られた画像データに対して計測処理に用いるための割り当て処理を実行する撮像ユニット（ステップＳ１）とが含まれている。また、画像処理装置１は、画像処理ユニットの処理手順を規定する画像処理プログラムに基づいて、その処理手順に沿って各画像処理ユニットが順次実行されるようになっている。
【００５１】
また、画像処理装置１には、複数のカメラのうち所定のカメラから画像データが得られるときに成立する複数種類の撮像完了条件が記憶されている。すなわち、複数のカメラのうち一又は複数のカメラの種別（カメラ３０ａ，３０ｂ，３０ｃなど）と、複数の計測処理（ステップＳ２〜ステップＳ４）のうち一の計測処理との対応付けが複数パターン設定されている。さらに、撮像ユニット（ステップＳ１）の処理内容として、画像データが複数のカメラのうちいずれのカメラから得られるものであるかが識別され、複数種類の撮像完了条件のうちいずれかが成立しているかが判定され、成立していると判定した撮像完了条件に対応付けられた計測ユニット（すなわち、複数パターンの対応付けのうち一の対応付けにおいて規定される種別のカメラから画像データが取得されたと判定されたとき、その一の対応付けにおいて規定される一の計測処理）の実行に用いる画像データに対して割り当てが行われるようになっている。
【００５２】
これにより、一の撮像ユニットから、処理手順内に存在する計測ユニットのうち、成立していると判定された撮像完了条件に対応付けられた計測ユニットに移行する、というように、所定の処理手順に同期させて撮像ユニット及び計測ユニットを実行することができる。しかも、本発明でいう撮像ユニットでは、複数種類の撮像完了条件のうちいずれかが成立していると判定されたことが契機となって計測ユニットへ移行するので、検査対象物を撮像する複数の撮像手段から画像データを得る撮像機構を、所定の処理手順と非同期で動作させることができる。その結果、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができる。さらに、このような効果を１台のコントローラで実現することができる。
【００５３】
以下に説明する本実施形態では、図２（ａ）に示すように、分岐ユニット（ステップＳ５）のプロパティにおいて撮像完了条件と計測ユニットの対応付けを行う場合を考える。
【００５４】
［ハードウェア構成］
図３は、本実施形態に係る画像処理装置１におけるコントローラ１０のハードウェア構成を示すブロック図である。図３に示すように、画像処理装置１におけるコントローラ１０は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウェア各部の制御を行うＣＰＵなどの主制御部１１と、起動プログラムや初期化プログラムなどが格納されたＲＯＭやフラッシュＲＯＭなどのプログラムメモリ１２と、ＣＰＵ１１が各種プログラムを実行する際のワークエリアとして機能するＲＡＭなどのメインメモリ１３と、外部のＰＬＣ６０やＰＣ７０などと通信可能に接続される通信部１４と、コンソール５０からの操作信号が入力される操作入力部１５と、を有する。また、画像処理装置１は、カメラ３０ａ〜カメラ３０ｃでの撮像により得られた画像データを取り込むＡＳＩＣなどの画像入力部１６と、画像データをバッファリングする画像メモリ（フレームバッファ）１７ａと、エッジ検出や面積計算などの計測処理を実行するＤＳＰなどの画像処理部１８と、計測処理用に画像データを記憶する画像メモリ（ワークメモリ）１７ｂと、液晶パネル等のモニタ４０に対して画像を表示させるＤＳＰなどの画像表示部１９と、画像を表示させる際に画像データを一時記憶するＶＲＡＭなどのビデオメモリ２０と、を有している。そして、これらの各ハードウェアは、バス等の電気配線を介して通信可能に接続されている。
【００５５】
プログラムメモリ１２には、画像入力部１６、画像処理部１８、及び画像表示部１９、並びに、通信部１４及び操作入力部１５の各部を、主制御部１１により制御するための装置制御プログラムが格納されている。また、画像入力部１６内のプログラムメモリ（図示せず）には、カメラ３０ａ〜カメラ３０ｃでの撮像により得られた画像データの取り込み、画像メモリ１７ａへのバッファリング、バッファリングされた画像データの計測処理用割り当て処理、画像メモリ１７ｂへの内部転送などの各種処理を実行するための画像入力プログラムが格納され、画像処理部１８内のプログラムメモリ（図示せず）には、計測処理を実行するための計測処理プログラムが格納され、画像表示部１９内のプログラムメモリ（図示せず）には、モニタ４０に画像を表示させるための画像表示プログラムが格納されている。なお、これら画像入力プログラム、計測処理プログラム、及び画像表示プログラムは、上述したプログラムメモリ１２やメインメモリ１３などに格納することもできる。
【００５６】
メインメモリ１３、画像メモリ１７ａ，１７ｂ、ビデオメモリ２０は、ＳＲＡＭやＳＤＲＡＭ等の揮発性メモリで構成されており、図３に示すコントローラ１０で、別個独立したメモリとして設けられている。なお、不揮発性メモリを用いることもできるし、一個のメモリの記憶領域を切り分けて各メモリを構成することもできる。また、画像メモリ１７ａのフレームバッファは、読み書き同時アクセス可能となるように構成されている。
【００５７】
通信部１４は、外部のＰＬＣ６０に接続されたセンサ（光電センサ等）でトリガ入力があったときに、ＰＬＣ６０から撮像トリガ信号を受信するインターフェース（Ｉ／Ｆ）として機能する。また、ＰＣ７０から転送されてくる画像処理装置１の画像処理プログラムやモニタ４０の表示態様を規定するレイアウト情報などを受信するインターフェース（Ｉ／Ｆ）としても機能する。主制御部１１は、この通信部１４を介して、ＰＬＣ６０から撮像トリガ信号を受信すると、画像入力部１６に対して撮像指令を送る。なお、撮像トリガ信号は、カメラ３０ａ〜カメラ３０ｃのいずれか一に対する撮像トリガになる場合もあるし、カメラ３０ａ〜カメラ３０ｃの全部に対する撮像トリガになる場合もある。したがって、主制御部１１から画像入力部１６へ送られる撮像指令も、カメラ３０ａ〜カメラ３０ｃのいずれか一方の撮像指令の場合もあるし、カメラ３０ａ〜カメラ３０ｃの全部同時の撮像指令の場合もある。なお、撮像トリガ信号を生成する装置として、ＰＬＣ６０ではなく、光電センサなどのトリガ入力用のセンサを通信部１４に直接接続することもできる。
【００５８】
操作入力部１５は、コンソール５０からの操作信号を受信するインターフェース（Ｉ／Ｆ）として機能する。なお、コンソール５０には、モニタ４０上に表示されるカーソルを上下左右に移動させる十字キー、決定ボタン、又はキャンセルボタンなどが配置されている。これらの各部品は、ユーザが撮像完了条件を設定する際などに用いることができる。なお、コンソール５０は、キーボードやマウスで代用することもできる。また、コンソール５０の機能とモニタ４０の機能を一体化させたタッチパネルを用いることもできる。
【００５９】
カメラ３０ａ〜カメラ３０ｃは、可視光線や赤外線を利用して検査対象物を撮像する撮像手段の一例であり、例えばＣＣＤやＣＭＯＳを用いることができる。画像入力部１６に接続された３台のカメラ３０ａ〜３０ｃは、内部にＡ／Ｄ変換器を有しており、撮像して得られた画像データをデジタルデータで出力する。また、画像入力部１６（或いは主制御部１１）からの画像データ取り込み信号に基づき動作する。例えば、カメラ３０ａ〜カメラ３０ｃのいずれか一のみで検査対象物を撮像することもできるし、カメラ３０ａ〜カメラ３０ｃの全部で検査対象物を撮像することもできる。なお、カメラ３０ａ〜カメラ３０ｃと、画像入力部１６との間にリピーター等の増幅器を介在させることもできる。また、本実施形態では、カメラ３０ａ〜３０ｃにＡ／Ｄ変換器を内蔵させることとしたが、画像入力部１６側にＡ／Ｄ変換器を設け、アナログ出力のカメラを用いることもできる。また、本実施形態では、３台のカメラを画像入力部１６に接続しているが、例えば４台のカメラを画像入力部１６に接続することもできる。
【００６０】
画像入力部１６は、上述した画像入力プログラムに従って、画像データの取り込みを行う。具体的には、例えば、主制御部１１からカメラ３０ａの撮像指令を受信すると、カメラ３０ａに対して画像データ取り込み信号を送信する。そして、カメラ３０ａで撮像が行われた後、撮像して得られた画像データを取り込む。取り込んだ画像データは、一旦画像メモリ１７ａにバッファリングされる。
【００６１】
ここで、本実施形態に係る画像処理装置１では、主制御部１１から画像入力部１６に送られた撮像指令は、画像入力部１６内のワークメモリ（図示せず）に一時キャッシュされるようになっている。したがって、画像入力部１６は、ワークメモリにキャッシュされている撮像指令の内容を参照することによって、画像メモリ１７ａにバッファリングされた画像データが、カメラ３０ａ〜カメラ３０ｃのうちいずれのカメラから得られるものであるかを識別することができる。一方、メインメモリ１３には、カメラ３０ａ〜カメラ３０ｃのうち所定のカメラから画像データが得られるときに成立する複数種類の撮像完了条件（詳細は後述する）が記憶されている。
【００６２】
画像入力部１６は、キャッシュされている撮像指令の内容を参照することによって、画像メモリ１７ａにバッファリングされた画像データが、カメラ３０ａ〜カメラ３０ｃのうちいずれのカメラから得られるものであるかを識別するとともに、メインメモリ１３にアクセスして、複数種類の撮像完了条件を参照し、複数種類の撮像完了条件のうちいずれかが成立しているかを判定する。
【００６３】
画像入力部１６は、複数種類の撮像完了条件のうち一の撮像完了条件が成立していると判定したときには、その一の撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データとしての、画像メモリ１７ａに記憶されている画像データに対して計測処理用割り当て処理（割り当て処理）を実行する。具体的には、画像メモリ１７ａにおいて、その画像データを予め用意しておいた画像変数に代入する。画像変数は、数値を扱う通常の変数と異なり、対応する画像処理ユニット（画像処理ユニットの詳細については後述する）の入力画像として割り付けることで、計測処理や画像表示の参照先となる変数である。画像入力部１６により画像データが画像変数に代入され、計測処理用割り当て処理が実行されることで、図２を用いて説明したように、撮像ユニットの実行が終了する。
【００６４】
また、画像入力部１６は、複数種類の撮像完了条件のうち複数の撮像完了条件が成立していると判定したときには、予め規定された優先順位に基づく一の撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して計測処理用割り当て処理を実行する。「予め規定された優先順位」についての詳細については後述する。
【００６５】
一方、画像入力部１６は、複数種類の撮像完了条件のうちいずれの撮像完了条件も成立していないと判定したときには、計測処理用割り当て処理を実行することなく、画像データがカメラ３０ａ〜カメラ３０ｃのうちいずれのカメラから得られるものであるかを識別する処理を継続する。なお、識別する処理を常時繰り返してもよいし、定期的に繰り返してもよいし、継続する態様の如何は問わない。
【００６６】
計測ユニットの実行が始まると、画像入力部１６は、画像メモリ１７ａから画像データを読み出して、画像処理部１８を通じて画像メモリ１７ｂに内部転送を行う。そして、画像処理部１８は、上述した画像変数を参照しつつ、画像データに対する計測処理を実行する。
【００６７】
なお、本実施形態では、画像データがどのカメラから得られるものであるかを識別するにあたって、主制御部１１から受信した撮像指令の内容を用いているが、画像入力部１６からカメラ３０ａ〜カメラ３０ｃに送信される画像取り込み信号を用いることもできる。この場合、この画像取り込み信号を、画像入力部１６内のワークメモリに一時キャッシュすればよい。また、撮像指令や画像取り込み信号以外にも、［概略構成］で説明したように、ＰＬＣ６０からの撮像トリガ信号を用いることもできる。
【００６８】
また、本実施形態では、画像データの計測処理用割り当て処理として、画像メモリ１７ａにおいて画像データを予め用意しておいた画像変数に代入することを考えたが、他にも方法はいろいろ考えられる。例えば、Ｃ言語のポインタを使って、画像データが記憶されている配列要素を画像変数として指し示すようにすることもできる。或いは、カメラ３０ａ〜カメラ３０ｃから得られる画像データが画像メモリ１７ａへバッファリングされる際、最初から、画像データをカメラに対応する画像変数に代入しておくことができる。この場合、画像変数を用いて、画像データがどのカメラから得られるものであるかを識別するとともに、画像メモリ１７ｂへの内部転送を、画像データに対する計測処理用割り当て処理とすることができる。
【００６９】
画像処理部１８は、画像メモリ１７ｂに記憶された画像データを読み出して、計測処理を実行する。なお、計測処理の実行対象となる画像データは、画像メモリ１７ａに記憶されていた画像データと同一のものであってもよいし、画像入力部１６又は画像処理部１８において前処理（ノイズ除去等）が実行された後の画像データであってもよい。
【００７０】
画像表示部１９は、主制御部１１から送られてきた表示指令に基づいて、モニタ４０に所定画像を表示させる。例えば、画像メモリ１７ｂに記憶されている計測処理前又は計測処理後の画像データを読み出して、ビデオメモリ２０に一時記憶し（展開し）、モニタ４０に対して画像データ表示信号を送信する。
【００７１】
［画像処理の流れ］
図４は、本実施形態に係る画像処理装置１における撮像機構の動作を示すフローチャートである。なお、ここでいう「撮像機構」は、図２を用いて説明したように、所定の処理手順とは非同期に、カメラ３０ａ〜カメラ３０ｃから画像データを（繰り返し）取得する機構である。
【００７２】
図４に示すように、まず、外部からのトリガ入力があったか否かが判断される（ステップＳ７）。具体的には、主制御部１１は、通信部１４を介してＰＬＣ６０から撮像トリガ信号を受信したか否かを判断する。未だ受信していないと判定した場合には（ステップＳ７：ＮＯ）、受信するまで待機する。一方、受信したと判定した場合には（ステップＳ７：ＹＥＳ）、主制御部１１は画像入力部１６に対して撮像指令を送る。これにより、上述したように、画像入力部１６において画像データの取り込み（ステップＳ８）、画像メモリ１７ａへのバッファリング（ステップＳ９）が行われる。画像データの取り込みと画像メモリ１７ａへのバッファリングは、外部からのトリガ入力を契機として繰り返し行われる。これにより、撮像の取りこぼしを防ぐための撮像禁止期間をなくすることができる。
【００７３】
図５は、本実施形態に係る画像処理装置１を制御するための処理手順の一例を示すフローチャートである。図５に示すフローチャートは、ＳＴＡＲＴシンボル（ここではＳで示す）からＥＮＤシンボル（ここではＥで示す）までのフローシーケンスを１周期分の画像処理として計測周期が定められており、撮像ユニット（ステップＳ１１）、処理フローを２以上の枝フローに分岐させる分岐ユニット（ステップＳ１２）、計測ユニットの一例として面積計算を行うエリアユニット（ステップＳ１３及びステップＳ１４）、分岐された枝フローを合流させる合流ユニット（ステップＳ１５）から構成されている。これらの各処理ユニットは、パラメータが変更可能な処理を示すシンボルであり、ＰＣ７０上においてフローチャートに配置される。なお、以下の説明では、説明の便宜上、カメラ３０ａ〜カメラ３０ｃのうちカメラ３０ａ及びカメラ３０ｂのみを使用する。
【００７４】
図５に示すように、まず、撮像ユニットが実行される（ステップＳ１１）。この撮像ユニットが実行されているとき、画像入力部１６において、撮像機構（図４）によって得られる画像データが、カメラ３０ａ又はカメラ３０ｂのうちいずれのカメラから得られるものであるかが識別される。そして、画像入力部１６において、その識別結果に基づいて、複数種類の撮像完了条件のうちいずれかが成立しているかが判定され、成立していると判定された撮像完了条件に対応付けられたエリアユニット（ステップＳ１３或いはステップＳ１４）の実行に用いる画像データに対して計測処理用割り当て処理が実行される。その後、分岐ユニット（ステップＳ１２）を介して、ステップＳ１３のエリアユニットか、或いは、ステップＳ１４のエリアユニットが実行される。
【００７５】
ステップＳ１１の撮像ユニットについて、図６を用いて更に詳述する。図６は、図５に示す撮像ユニット（ステップＳ１１）における処理の流れを示すフローチャートである。図６に示すように、本実施形態では、画像メモリ１７ａが撮像完了条件を満たすか否かが判断される（ステップＳ１１１）。具体的には、画像入力部１６は、メインメモリ１３にアクセスして、予め設定された撮像完了条件を参照し、主制御部１１から受信した撮像指令に基づき撮像完了条件が成立しているか否かを判定する。
【００７６】
例えば図７は、撮像完了条件の一例を示す図である。図７では、画像メモリ１７ａに記憶されている画像データが、カメラ３０ａから得られた画像データであるときに条件０が成立し、カメラ３０ｂから得られた画像データであるときに条件１が成立するように設定されている。本実施形態では、図６に示すステップＳ１１１において、画像メモリ１７ａが、図７に示す（条件０又は条件１の２種類から構成される）撮像完了条件を満たすか否かが判断される。
【００７７】
撮像完了条件を満たしていないと判定された場合（ステップＳ１１１：ＮＯ）、すなわち、画像メモリ１７ａに、カメラ３０ａから得られた画像データもカメラ３０ｂから得られた画像データも記憶されていないと判定された場合には、画像入力部１６は、撮像完了条件が満たされるまで待機する。一方、撮像完了条件を満たすと判定された場合（ステップＳ１１１：ＹＥＳ）、すなわち、画像メモリ１７ａに、カメラ３０ａから得られた画像データ、或いはカメラ３０ｂから得られた画像データのいずれか記憶されていると判定された場合には、画像入力部１６は計測処理用割り当て処理を行う（ステップＳ１１２）。具体的には、画像入力部１６は、画像メモリ１７ａにバッファリングされている画像データを、計測処理用に予め用意しておいた画像変数に代入する。この計測処理用割り当て処理が終わると、ステップＳ１１の撮像ユニットの実行は終了する。なお、この撮像ユニットが実行されている最中に、常時ステップＳ１１１の判定処理が行われてもよいし、定期的な間隔でステップＳ１１１の判定処理が行われてもよい。
【００７８】
図５に戻って、ステップＳ１１の撮像ユニットの実行が終了した後、次に分岐ユニットの処理が実行される（ステップＳ１２）。具体的には、本実施形態では、分岐ユニットのプロパティにおいて、図７に示す条件０は、図５に示すステップＳ１３のエリアユニットと対応付けられ、図７に示す条件１は、図５に示すステップＳ１４のエリアユニットと対応付けられている。したがって、図７に示す撮像完了条件のうち条件０が成立していると判定された場合には、図５に示すステップＳ１３のエリアユニットが実行される一方で、図７に示す撮像完了条件のうち条件１が成立していると判定された場合には、図５に示すステップＳ１４のエリアユニットが実行される。
【００７９】
ステップＳ１３のエリアユニット又はステップＳ１４のエリアユニットが実行されているとき、画像入力部１６は、画像変数に代入された画像データを画像メモリ１７ａから画像メモリ１７ｂへ内部転送する。画像処理部１８は、画像メモリ１７ｂから画像データを読み出して、エッジ検出や面積計算（エリア計算）などの計測処理を実行する。その際、画像データが代入されている画像変数を参照することによって、カメラ３０ａから得られた画像データに対して計測処理を実行しているか、カメラ３０ｂから得られた画像データに対して計測処理を実行しているかを認識する。
【００８０】
最後に、合流ユニット（ステップＳ１５）において、エンドシンボルにより１回のフローシーケンスが終了する。なお、ステップＳ１３とステップＳ１４で示すエリアユニットの実行内容は、同じあっても異なっていてもよい。
【００８１】
以上説明したように、画像処理装置１のコントローラ１０では、図５に示すフローチャートのバックグラウンドで動作する撮像機構によって、検査対象物を非同期で撮像するとともに（図４）、図５に示すフローチャートの撮像ユニット（ステップＳ１１）において、複数種類の撮像完了条件のうちいずれかが成立しているかが判定され、成立していると判定された撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して計測処理用割り当て処理が実行される。すなわち、図５に示すフローチャートに同期させて撮像ユニット（ステップＳ１１）及びエリアユニット（ステップＳ１３又はステップＳ１４）を実行することができる。したがって、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができるとともに、撮像ユニットやエリアユニットを非同期で実行した場合に生じるメモリ競合やバグ修正の問題を防ぐことができる。
【００８２】
［タイミングチャート］
次に、図４〜図７を用いて説明した画像処理を、タイミングチャートを用いて時系列に説明する。図８は、本実施形態に係る画像処理装置１における画像処理の流れを示すタイミングチャート（概念図）である。図８（ａ）は、撮像トリガ信号などの外部トリガの入力タイミングを示し、図８（ｂ）は、カメラ３０ａを用いた撮像（図４のステップＳ８）及びバッファリング（図４のステップＳ９）の処理期間を示し、図８（ｃ）は、カメラ３０ｂを用いた撮像（図４のステップＳ８）及びバッファリング（図４のステップＳ９）の処理期間を示し、図８（ｄ）は、画像メモリ１７ａの記憶状態（図８（ｄ）では、カメラ３０ａから得られた画像データＫａが記憶されているときには上半分を塗りつぶし、カメラ３０ｂから得られた画像データＫｂが記憶されているときには下半分を塗りつぶしている。）を示し、図８（ｅ）は、画像メモリ１７ａが撮像完了条件を満たす記憶状態になったタイミングを示し、図８（ｆ）は、撮像ユニット（図５のステップＳ１１）が実行中である期間（実行期間）を示し、図８（ｇ）は、分岐ユニット（図５のステップＳ１２）から合流ユニット（図５のステップＳ１５）までの実行タイミング（実行期間）を示す。
【００８３】
なお、図８（ａ）については、上段にカメラ３０ａに対する外部トリガの入力タイミングを示し、下段にカメラ３０ｂに対する外部トリガの入力タイミングを示す。また、図８（ｇ）では、計測ユニット（図５に示すステップＳ１３及びステップＳ１４のエリアユニット）の実行期間が主となるため、「計測ユニット」と示している。また、図８（ａ）〜図８（ｅ）までのタイミングチャートは、図４に示すフローチャートに対応するものであって、図８（ｆ）と図８（ｇ）のタイミングチャートは、図５に示すフローチャートに対応するものである。
【００８４】
また、図８は、あくまで概念図であって、各パルスの時間幅や立ち上がり／立ち下がりタイミングは、適宜変更可能である。例えば図８とは異なり、各外部トリガのパルスの時間幅を限りなく０にしてもよいし、各パルスの立ち下がりタイミングで、カメラ３０ａ又はカメラ３０ｂの撮像が行われるようにしてもよい。
【００８５】
図８（ａ）に示すように、まず、カメラ３０ａに対する外部トリガＴｒａ１の入力があったとき、カメラ３０ａにおいて検査対象物（ワークＷ１）の撮像が行われる。図８（ｂ）は、上述したように、カメラ３０ａでの撮像により得られた画像データＫａの取り込み、画像入力部１６により画像メモリ１７ａへのバッファリングが行われている期間を示している。また、図８（ｂ）中のＷ１は最初のワーク、Ｗ２は次のワーク、Ｗ３は更に次のワークを示している。
【００８６】
画像メモリ１７ａへのバッファリングが終了すると、図８（ｄ）に示すように、画像メモリ１７ａに、カメラ３０ａから得られた画像データＫａが記憶された状態となる。そのとき、画像メモリ１７ａが撮像完了条件のうち“条件０”（図７参照）を満たす記憶状態になるため（図８（ｅ））、画像入力部１６で撮像完了条件が成立していると判定され、画像入力部１６で計測処理用割り当て処理が実行される。具体的には、カメラ３０ａから得られた画像データＫａが、計測処理用に予め用意しておいた画像変数に代入される。
【００８７】
その後、画像変数に代入された画像データＫａは、画像メモリ１７ｂへ内部転送され、画像データＫａに対してエリアユニット（図５に示すステップＳ１３）が実行される。なお、図８（ｇ）において、（Ｗ１，Ｋａ）は、カメラ３０ａにおいてワークＷ１の撮像が行われた結果、得られた画像データＫａに対するエリアユニットが実行されることを意味する。
【００８８】
以下同様にして、外部トリガＴｒｂ１，Ｔｒａ２，Ｔｒｂ２の入力があったときも同様である。外部トリガＴｒｂ１の入力→カメラ３０ｂでの撮像→画像データＫｂの取り込み→画像メモリ１７ａへのバッファリング→撮像ユニットから計測ユニット（Ｗ１，Ｋｂ）への移行、が順次行われ、外部トリガＴｒａ２の入力→カメラ３０ａでの撮像→画像データＫａの取り込み→画像メモリ１７ａへのバッファリング→撮像ユニットから計測ユニット（Ｗ２，Ｋａ）への移行、が順次行われ、外部トリガＴｒｂ２の入力→カメラ３０ｂでの撮像→画像データＫｂの取り込み→画像メモリ１７ａへのバッファリング→撮像ユニットから計測ユニット（Ｗ２，Ｋｂ）への移行、が順次行われる。
【００８９】
ここで、３個目のワークＷ３が、カメラ３０ａの下に早く到着したとする。すなわち、カメラ３０ｂでの撮像により得られた画像データＫｂの取り込み及びバッファリングが終了する前に、外部トリガＴｒａ３が入力されたとする（図８（ａ）参照）。この場合、カメラ３０ａでの撮像により得られたＷ３の画像データＫａが取り込まれ（図８（ｂ）参照）、その画像データが画像メモリ１７ａに一旦バッファリングされる（図８（ｄ）参照）。したがって、外部トリガＴｒａ３が入力されたとき、撮像をとりこぼすことなく、カメラ３０ａにおいてワークＷ３の撮像を行うことができる。
【００９０】
また、外部トリガＴｒａ３の入力により、カメラ３０ａでの撮像により得られたＷ３の画像データＫａがバッファリングされたとき、（Ｗ２，Ｋｂ）の計測ユニットが実行されている（図８（ｆ）中の矢印Ｏ参照）。画像処理部１８において（Ｗ２，Ｋｂ）の計測ユニットの処理が終了すると、画像入力部１６は、計測ユニットの処理が終了した旨の信号を画像処理部１８から受信したことを契機として、次の計測周期に移行する。それに伴い、次の計測周期における撮像ユニットが実行される（図８（ｆ）中の矢印Ｐ参照）。そして、この撮像ユニットにおいては、上述同様、画像入力部１６によって、画像メモリ１７ａが、図７に示す撮像完了条件を満たすか否かが判断され、撮像完了条件のうち“条件０”を満たすと判定されるため、計測処理用割り当て処理が実行される。
【００９１】
その後、図８（ｇ）に示す計測ユニットに移行する。具体的には、画像入力部１６によって、画像メモリ１７ａから画像メモリ１７ｂへ内部転送が行われ、面積計算などの計測処理が実行される。
【００９２】
［撮像完了条件の設定］
図９は、画像処理装置１の画像処理プログラムが生成されるＰＣ７０の機能構成例を示すブロック図である。図１０は、ＰＣ７０の表示部７０５に表示されたエディタ画面（主要部のみ）の一例を示す図である。図１１は、図７に示す撮像完了条件を設定する設定画面の一例を示す図である。
【００９３】
図１又は図３に示すＰＣ７０は、ＣＰＵやＲＯＭ、ＲＡＭ等から構成され、フローチャート生成部７０１１及びプログラム生成部７０１２として機能する制御部７０１と、ハードディスク等から構成され、処理ユニット記憶部７０２１及び検査用データ記憶部７０２２として機能するメモリ７０２と、画像処理装置１のコントローラ１０と通信可能に接続される通信部７０３と、マウスやキーボード等から構成される入力部７０４と、液晶モニタ等で構成される表示部７０５と、を有している。
【００９４】
フローチャート生成部７０１１は、スタートシンボルにおいて開始し、エンドシンボルにおいて終了するフローチャートを生成する機能を有し、実行フロー上に画像処理ユニットを配置することによって生成する。具体的には、入力部７０４の操作によって、所望の画像処理ユニットが、図１０に示すエディタ画面のパーツリスト（右側）からフロービューウィンドウ（左側）の所望の箇所にドラッグアンドドロップされると、フローチャート生成部７０１１は、その箇所にその画像処理ユニットを配置する。
【００９５】
各画像処理ユニットは、処理ユニット記憶部７０２１から読み出される。図１０に示すように、パーツリスト内には複数の画像処理ユニットが表示されており、「画像入力」「計測」「制御」「演算」「タイミング」「表示」「出力」「コマンド出力」のカテゴリーに区分されている。「画像入力」は、撮像に関する画像処理ユニットが属するカテゴリーであり、上述した撮像ユニット（図５のステップＳ１１）が属している。この撮像ユニットには、シャッタースピード、カメラ感度、フラッシュオン時間、フラッシュ遅延時間、撮像対象カメラ、トリガ端子を指定するためのパラメータがプロパティとして関連付けられている。特に、本実施形態に係る画像処理装置１では、図１１を用いて後述するように、撮像完了条件を設定するためのパラメータもプロパティとして関連付けられる。
【００９６】
その他、「計測」は、計測に関する画像処理ユニットが属するカテゴリーであり、撮像ユニットによって得られた画像データから計測結果を抽出し、この計測結果に基づいて検査対象物の良否を判定する計測ユニットが属している。例えば、上述したエリアユニット（図５のステップＳ１３、ステップＳ１４）や、エッジ位置検出ユニット、色検査ユニットなどが属している。「制御」は、制御に関する画像処理ユニットが属するカテゴリーであり、バイパスユニットやエンドシンボルなどの制御ユニットが属している。バイパスユニットは、実行フローを２以上の枝フローに分岐させる分岐ユニットと、分岐された枝フローを合流させる合流ユニットからなる画像処理ユニットであり、所定条件で実行フローを分岐させるユニットである。エンドシンボルは、１回のフローシーケンスを終了させるためのシンボルである。「演算」は、数値演算ユニットなど、演算に関する画像処理ユニットが属するカテゴリーであり、「タイミング」は、タイマ待ちユニットなど、フロー遷移のタイミング制御に関する画像処理ユニットが属するカテゴリーであり、「表示」は、表示に関する画像処理ユニットが属するカテゴリーであり、「出力」及び「コマンド出力」は、それぞれ出力及びコマンド出力に関する画像処理ユニットが属するカテゴリーである。
【００９７】
図９に戻って、プログラム生成部７０１２は、ユーザが図１０に示すフロービューウィンドウで作成したフローチャートを、コントローラ１０で解釈できる設定データに直して、検査用データを生成する機能を有する。生成された検査用データ（画像処理プログラム）は、メモリ７０２の検査用データ記憶部７０２２に記憶される。制御部７０１は、検査用データ記憶部７０２２から検査用データを読み出して、通信部７０３を介してコントローラ１０へ転送する。
【００９８】
このように、図１０に示すフロービューウィンドウは、コントローラ１０の画像処理プログラムを新たに作成し、又は、コントローラ１０から取得した画像処理プログラムを編集するために、処理手順を示すフローチャートを表示するためのウィンドウとなる。ユーザは、スタートシンボルにおいて開始し、エンドシンボルにおいて終了する実行フロー上に、画像処理ユニットを配置することによって、簡易に所望の画像処理プログラムを作成することができる。すなわち、コントローラ１０に行わせる一連の画像処理は、画像処理ユニットとしてブロック化されていて、ユーザが画像処理ユニットを実行フロー上に配置するだけで、その画像処理ユニットが、直前の画像処理ユニットの処理結果に基づいて所定の処理を行うフローシーケンスを作成することができる。
【００９９】
ここで、図１０に示すフロービューウィンドウにおいて、撮像ユニットにカーソルを合わせて右クリック操作（入力部７０４を操作）すると、図１１に示すプロパティを設定するための編集画面が表示部７０５に表示される。或いは、設定エディタ画面にはユニットプロパティウィンドウ（図示せず）が設けられ、そのユニットプロパティウィンドウに、フロービューウィンドウで選択され、フォーカス表示されている画像処理ユニットのプロパティが表示される。そして、図１１に示す編集画面において、複数種類の撮像完了条件が設定される。
【０１００】
図１１に示すように、設定画面の上部には、撮像に関する全般的な設定を行う全般設定用タブ１００１、外部トリガの入力タイミング（或いは一定の遅延時間を加味して）同期させるか否か等の設定を行うトリガ設定用タブ１００２、撮像を行う際の照明設定を行う照明設定用タブ１００４、そして、現在選択されている撮像完了条件設定用タブ１００３が配置されている。
【０１０１】
撮像完了条件設定用タブ１００３を選択すると、撮像完了条件設定テーブル１００５、コメントエリア１００６、ＯＫボタン１００７、キャンセルボタン１００８が現れる。ユーザは、ＰＣ７０の入力部７０４を介して、例えば、撮像完了条件設定テーブル１００５上のチェックボックスにチェックを入れ、撮像完了条件を設定する。撮像完了条件設定テーブル１００５では、カメラが４台接続されるケースを想定して、カメラ１〜カメラ４の４列を用意するとともに、４種類の条件を設定できるように、条件０〜条件３の４行を用意している。本実施形態では、カメラ１とカメラ２が、それぞれ実際に使用するカメラ３０ａとカメラ３０ｂに相当する。図７に示す撮像完了条件を設定するには、条件０でカメラ３０ａを選択し、条件１でカメラ３０ｂを選択すればよい。
【０１０２】
最後に、ＯＫボタン１００７を押すことによって、撮像完了条件の設定が完了する。このように、本実施形態に係る画像処理装置１では、複数種類の撮像完了条件の各々は、カメラ３０ａ（カメラ１）又はカメラ３０ｂ（カメラ２）のうちいずれのカメラから画像データが得られるときに成立するかを設定し得るように構成されている（図１１）。すなわち、つまり、ＰＣ７０或いはコンソール５０を用いて、ユーザが複数種類の撮像完了条件の内容について設定可能に構成されている。これにより、画像処理装置１の使い勝手を高めることができる。
【０１０３】
なお、分岐ユニット（図５のステップＳ１２）のプロパティ設定についても同様である。すなわち、特に図示しないが、分岐ユニットのプロパティ設定を設定するための編集画面が表示部７０５に表示され、入力部７０４を通じて、撮像完了条件と計測ユニットとの対応付けが行われる。すなわち、本実施形態に係る画像処理装置１では、画像処理ユニットの中に、処理手順を複数の計測ユニットそれぞれへ分岐させる分岐処理を実行する分岐ユニットが含まれており、画像入力部１６により成立していると判定された撮像完了条件と計測ユニットとの対応付けを設定し得るように構成されている。その結果、複数のカメラのうち一又は複数のカメラの種別と、複数の計測処理のうち一の計測処理との対応付けを複数パターン（条件０とカメラ１との対応付け、条件１とカメラ２との対応付け）設定することが可能になる。
【０１０４】
その後、フローチャートに基づき検査用データが生成され、その検査用データがコントローラ１０に転送される。主制御部１１は、画像処理プログラムを含む検査用データをメインメモリ１３に記憶するとともに、画像入力部１６から撮像完了条件設定テーブル１００５の設定内容を参照できるようにする。そして、画像入力部１６が、撮像完了条件設定テーブル１００５の設定内容を適宜参照することによって、撮像完了条件が成立しているか否かの判定が行われる。なお、本実施形態では、撮像完了条件設定テーブル１００５の設定内容をメインメモリ１３に記憶させることとしたが、画像入力部１６内のワークメモリ、或いは画像メモリ１７ａに記憶させてもよい。また、ＥＥＰＲＯＭなどの不揮発性メモリを用いれば、例えば製品出荷前に予め撮像完了条件を設定しておくこともできる。これにより、ユーザが撮像完了条件を設定する手間を省くこともできる。
【０１０５】
このように、画像処理装置１に接続され、画像処理装置１の検査用データ（画像処理プログラム）を作成するＰＣ７０において、ユーザの操作により複数の撮像完了条件（条件０及び条件１）が設定された撮像ユニットを含むフローチャートが生成され、フローチャートに基づいて画像処理装置１の検査用データ（画像処理プログラム）が生成された後、その画像処理プログラムが画像処理装置１に転送される。そして、主制御部１１は、その画像処理プログラムに基づいて、画像入力部１６からも撮像完了条件設定テーブル１００５の設定内容を参照できるように、撮像完了条件を設定する。なお、図１１に示す画面は、画像処理装置１のモニタ４０に表示されるようにして、ユーザのコンソール５０操作に基づいて、主制御部１１が撮像完了条件を設定するようにしてもよい。
【０１０６】
［変形例］
図１２は、本発明の他の実施の形態に係る画像処理装置１における画像処理の流れを示すタイミングチャート（概念図）である。図１２に示すタイミングチャートでは、計測ユニットの実行に時間が掛かっている。すなわち、図１２（ｇ）に示すように、計測ユニットの実行時間が、図８（ｇ）に示す実行時間と比べて長くなっている。これは、例えば精緻なパターンマッチングなど、演算負荷の重い計測処理が行われる場合などに想定される。このような場合には、一つ前の計測処理が長引いたことに起因して、画像入力部１６において二以上の撮像完了条件が複数同時に成立していると判定される可能性がある。
【０１０７】
具体的には、図１２（ｇ）に示す（Ｗ２，Ｋａ）の計測ユニットの実行が終了した後、次の計測周期において、撮像ユニットが実行されるとする（図１２（ｆ）の矢印Ｑ、図５のステップＳ１１）。このとき、画像入力部１６は、撮像完了条件設定テーブル１００５の設定内容を参照し、図７に示す撮像完了条件が成立しているか否かを判断するが、図１２（ｅ）に示すように、条件０と条件１の双方が成立している。したがって、このような場合には、画像入力部１６は、カメラ３０ａから得られた画像データに対して計測処理用割り当て処理を行えばよいのか、或いは、カメラ３０ｂから得られた画像データに対して計測処理用割り当て処理を行えばよいのか分からない。その結果、画像処理エラーに繋がる可能性がある。
【０１０８】
そこで、本発明の他の実施形態に係る画像処理装置１では、画像入力部１６は、複数種類の撮像完了条件のうち複数の撮像完了条件が成立していると判定されたときには、予め規定された優先順位（詳細は後述する）に基づく一の撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して割り当て処理を実行するようにしている。また、画像メモリ１７ａにおいて最も早く成立した撮像完了条件を使用できるように、撮像完了条件が成立したタイミングを検出する検出手段としての機能をもたせている。具体的には、これらの機能を画像入力部１６に実現させるプログラムが、画像入力部１６内のプログラムメモリ（図示せず）等に格納されている。なお、タイミングを検出する機能を実現するにあたっては、例えば、外部タイマ又は外部カウンタ、或いはＣＰＵ内蔵タイマ等を用いて、成立タイミング（成立時刻等）を画像入力部１６内のワークメモリ或いは画像メモリ１７ａ等に記憶しておけばよい。
【０１０９】
画像入力部１６は、（Ｗ２，Ｋａ）の計測ユニットの実行が終了した後、次の計測周期において、撮像ユニットを実行する。このとき、画像メモリ１７ａでは、図１２（ｆ）の矢印Ｑのタイミングにおいて撮像完了条件のうち条件１と条件０が両方同時に成立している。そこで、画像処理部１６は、条件１が成立したタイミングと、条件０が成立したタイミングとをワークメモリ等から読み出して、両者を比較する。そして、先に成立している条件１を使用して、カメラ３０ｂから得られた画像データを計測処理の実行対象として決定し、計測処理用割り当て処理（上述同様、画像変数への代入）を行う。その結果、（Ｗ２，Ｋｂ）の計測ユニットが実行される。
【０１１０】
このように、画像入力部１６に、予め規定された優先順位に基づき画像データに対して割り当て処理を実行する機能や撮像完了条件が成立したタイミングを検出する機能をもたせることで、計測処理対象が不明となる画像処理エラーを防ぐことができる。また、ここでは最先の成立タイミングを用いたが、最も直近の（最も後の）成立タイミング（すなわち、図１２でいえば条件０）を用いてもよい。また、例えば各撮像完了条件で、予め優先順位を規定することもできる（図１３参照）。
【０１１１】
図１３は、本発明の他の実施の形態に係る画像処理装置１で使用する撮像完了条件設定テーブルである。図７に示す撮像完了条件設定テーブルと異なる点は、最右列に優先順位の項目がある点である。例えば、カメラ１（カメラ３０ａ）は、ワークの種類を識別するための識別子（バーコード等）を撮像するカメラであって、カメラ２（カメラ３０ｂ）は、ワークの所定面を撮像するカメラである場合に、カメラ１での撮像を優先させたいときがある。このようなときには、例えばプルダウンメニュー等により、図１３の最右列に示すように、条件０の優先順位を“高”に設定し、条件１の優先順位を“低”に設定しておく。優先順位の設定は、例えばＰＣ７０上で、或いはモニタ４０とコンソール５０を使って設定する。画像入力部１６は、図１３に示す撮像完了条件設定テーブルを参照する際に、優先順位の高い条件（条件０）から使用する。これにより、図１２（ｆ）の矢印Ｑのタイミングにおいて、カメラ３０ａから得られた画像データに対して計測処理用割り当て処理が実行される。その結果、図１２とは異なり、（Ｗ２，Ｋｂ）の代わりに、（Ｗ３，Ｋａ）の計測ユニットが実行される。このように、撮像完了条件に優先順位をつけておけば、撮像完了条件の重要度ランク付けを行うことができる。つまり、図１３に示す撮像完了条件設定テーブルを用いれば、複数種類の撮像完了条件のうちいずれの撮像完了条件も成立していないと判定されたときには、割り当て処理を実行することなく、画像データが複数の撮像手段のうちいずれの撮像手段から得られるものであるかを識別する処理を継続し、複数種類の撮像完了条件のうち一の撮像完了条件が成立していると判定されたときには、撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して割り当て処理を実行し、複数種類の撮像完了条件のうち二以上の撮像完了条件が成立していると判定されたときには、予め規定された優先順位に基づく一の撮像完了条件に対応付けられた計測ユニットの実行に用いる画像データに対して割り当て処理を実行することができる。したがって、撮像完了条件が成立していない場合、或いは、二以上の撮像完了条件が成立している場合であっても、撮像ユニットの処理内容が不明になることなく、所定の処理手順に同期させて撮像ユニット及び計測ユニットを実行することができる。
【０１１２】
図１４は、本発明の他の実施の形態に係る画像処理装置１で使用する撮像完了条件設定テーブルである。図１３に示す撮像完了設定テーブルと異なる点は、コントローラ１０に接続された４台のカメラ（カメラ１〜カメラ４）について、撮像完了条件を設定している点である。例えば、カメラ１（カメラ３０ａ）は、ワークの種類を識別するための識別子を撮像するカメラであって、カメラ２〜カメラ４（カメラ３０ｂ〜カメラ３０ｄ）は、それぞれワークの上面、下面、側面を同時に撮像するカメラである。なお、図１２と同様に、条件０の優先順位を“高”に設定し、条件１の優先順位を“低”に設定している。
【０１１３】
図１５は、図１４に示す撮像完了条件設定テーブルを用いた画像処理の流れを示すタイミングチャート（概念図）である。なお、図１５（ｃ）〜図１５（ｅ）に示すように、カメラ２〜４は撮像タイミングが同時であることが分かる。また、Ｔｒｂ１〜Ｔｒｂ３は、カメラ３０ｂ〜３０ｄに対する外部トリガの入力タイミングを示す。また、図１５（ｆ）に示す画像メモリ１７ａの記憶状態は、カメラ３０ａ（Ｋａ）〜カメラ３０ｄ（Ｋｄ）から得られた画像データにのみ着目しており、カメラ３０ａ（Ｋａ）〜カメラ３０ｄ（Ｋｄ）それぞれ２画面分のみを図示している。さらに、図１５（i）に示すように、カメラ２〜カメラ４から得られた画像データに対する計測ユニットを実行する際は、カメラ１から得られた画像データに対する計測ユニットを実行するときよりも処理時間が長く掛かっている。
【０１１４】
図１５（ｈ）及び図１５（i）に示すように、（Ｗ２，Ｋａ）の計測ユニットが終了した後、次の計測周期において、撮像ユニット処理が実行される（図１５（ｈ）の矢印Ｒ参照）。このとき、画像入力部１６は、撮像完了条件設定テーブルの設定内容を参照し、図１４に示す撮像完了条件が成立しているか否かを判断するが、その際、優先順位の高い条件（条件０）から使用する。これにより、図１５（ｈ）の矢印Ｒのタイミングにおいて、カメラ３０ａから得られた画像データに対して計測処理用割り当て処理が実行される。その結果、（Ｗ３，Ｋａ）の計測ユニットが実行される。
【０１１５】
なお、（Ｗ３，Ｋａ）の計測ユニットの実行が完了する前に、カメラ３０ｂ〜カメラ３０ｄでの画像データ取り込み（図１５（ｃ）〜図１５（ｅ）参照）が行われた場合には、画像メモリ１７ａに２画面分の画像データが記憶される（図１５（ｆ）参照）。その後、例えば、画像メモリ１７ａに記憶された順に計測ユニットを実行することができる。
【０１１６】
画像メモリ１７ａに何画面分の画像データが記憶できるようにするかは、ユーザが設定可能である。すなわち、画像処理装置１に、撮像手段の撮像によって得られた画像データを記憶手段に記憶可能な容量を設定する容量設定手段を設けることもできる。これにより、撮像機構によりストック可能な画像データの許容量を調整することができ、ひいては画像処理装置１の利便性を高めることができる。
【０１１７】
また、画像メモリ１７ａに追加の画像データを記憶することができない状態のとき、その状態を取得するようにしてもよい。すなわち、記憶手段に、撮像手段の撮像によって得られた画像データを追加記憶することができない場合には、その旨をユーザに報知する報知手段を設けてもよい。ユーザに報知する態様としては、例えば、モニタ４０にアラーム表示を行うことが考えられる。これにより、ワークが流れてくる間隔を広げたり、上述した容量設定手段により許容量を増やしたりするなど、ユーザは迅速に対応することができる。
【０１１８】
また、画像メモリ１７ａに追加の画像データを記憶することができない状態のとき、追加の撮像をさせないか、上書きで撮像するかを選択できるようにしてもよい。すなわち、記憶手段に、撮像手段の撮像によって得られた画像データを追加記憶することができない場合には、それ以降の撮像手段による撮像を禁止させるか、或いは、既に記憶手段に記憶されている画像データに上書きしていくかを選択する選択手段を設けてもよい。これにより、ユーザの要望に応じて撮像禁止を行うか否かを決めることができ、ひいては画像処理装置１の利便性を高めることができる。
【０１１９】
なお、上述した容量設定手段、報知手段、選択手段の各機能は、モニタ４０及びコンソール５０や、主制御部１１及び画像入力部１６などによって実現することができる。
【０１２０】
図１６は、本発明の他の実施の形態に係る画像処理装置１で使用する撮像完了条件設定テーブルである。図１６の撮像完了条件設定テーブルに示すように、条件０でカメラ１とカメラ２が設定され（カメラ１とカメラ２は同時に動作する）、条件１でカメラ３が設定され、条件２でカメラ４が設定されてもよい。
【０１２１】
図１７は、本実施形態に係る画像処理装置１における画像処理の他の処理手順の一例を示すフローチャートである。特に、図１６に示す撮像完了条件設定テーブルを用いた処理手順について説明する。
【０１２２】
図１７に示す撮像ユニット（ステップＳ２１）のプロパティとして、撮像完了条件設定テーブルは図１６に示すようになっている。そして、分岐ユニット（ステップＳ２２）のプロパティとして、条件０とステップＳ２３のエリアユニット及びステップＳ２４の色検査ユニットとが対応付けられ、それ以外の条件（条件１、条件２）は他の計測ユニットとが対応付けられている。また、分岐ユニット（ステップＳ２６）のプロパティとして、条件１とステップＳ２７の数値演算ユニットとが対応付けられ、それ以外の条件（条件２）とステップＳ２９のエッジ位置検出ユニットとが対応付けられている。このように、分岐ユニットのプロパティにおいて、撮像完了条件の各条件と、撮像ユニットより下流に配置された計測ユニットの対応付けがなされている。
【０１２３】
なお、対応付けの態様については様々あって、要は、移行する処理フローが認識できればよい。したがって、例えば、分岐ユニット（ステップＳ２２）のプロパティとして、条件０とステップＳ２３のエリアユニット及びステップＳ２４の色検査ユニットとが対応付けられていなくても、条件０とステップＳ２３のエリアユニットのみが対応付けられていてもよい。このような対応付けでも、移行する処理フローは認識することができる。更にいえば、例えば、分岐ユニット（ステップＳ２２）のプロパティとして、それよりも下にある何らかの計測ユニットに対応付けられていてもよい。このような対応付けでも、移行する処理フローは認識することができる。
【０１２４】
このようなフローチャートにおいて、画像メモリ１７ａにカメラ１とカメラ２からの画像データがバッファリングされると、計測処理用割り当て処理が行われた後、ステップＳ２１からステップＳ２２を介して、エリアユニット（ステップＳ２３）と色検査ユニット（ステップＳ２４）が実行される。また、画像メモリ１７ａにカメラ３からの画像データがバッファリングされると、計測処理用割り当て処理が行われた後、ステップＳ２１からステップＳ２２、ステップＳ２６を介して、数値演算ユニット（ステップＳ２７）が実行される。さらに、画像メモリ１７ａにカメラ４からの画像データがバッファリングされると、計測処理用割り当て処理が行われた後、ステップＳ２１からステップＳ２２、ステップＳ２６を介して、エッジ位置検出ユニット（ステップＳ２９）が実行される。
【０１２５】
なお、図１７では、２個の分岐ユニット及び２個の合流ユニットを用いることとしたが、１個の分岐ユニット及び１個の合流ユニットを用いるようにしてもよい。すなわち、ステップＳ２２とステップＳ２６の分岐ユニットを１つの分岐ユニットに纏め、ステップＳ２５とステップＳ２８の合流ユニットを１つの合流ユニットに纏めることによって、３分岐としてもよい。また、他にも、図１８の撮像完了条件設定テーブルに示すように、条件０でカメラ１、条件１でカメラ２、条件２でカメラ３、条件３でカメラ４が設定されてもよい。
【０１２６】
図１９は、本発明の他の実施の形態に係る画像処理装置１における画像処理の主な流れを示すフローチャートである。これまで説明した画像処理では、図４に示す撮像機構を切り離して、非同期で動作させることとしたが、図１９に示すように、図４に示す撮像機構を組み込んで、撮像ユニット内でシリアルに動作させることとしてもよい。
【０１２７】
図１９に示す画像処理は、大きく分けて撮像ユニット（ステップＳ３１、点線枠参照）と、計測ユニット（ステップＳ３２）に分けられる。なお、ステップＳ３２の計測ユニットは、図５と同様に分岐ユニット・エリアユニット・合流ユニットの各ユニット（ステップＳ１２〜ステップＳ１４）としてもよい。
【０１２８】
図１９に示す撮像ユニット（ステップＳ３１）において、まず、外部からのトリガ入力があったか否かが判断される（ステップＳ３１１）。トリガ入力がなかった場合には（ステップＳ３１１：ＮＯ）、これがあるまで待機し、トリガ入力があった場合には（ステップＳ３１１：ＹＥＳ）、画像データの取り込みが行われる（ステップＳ３１２）。ここでは、バッファリングメモリ（フレームバッファ）として機能する画像メモリ１７ａを設けていないため、トリガ入力があると、画像データの取り込みとともに及び内部転送も行われる。この際、内部転送を行った画像データが、どのカメラから得られたものであるかを示す識別情報（例えば上述のように撮像指令の情報など）も一緒に内部転送される。なお、識別情報だけ画像処理部１８内のワークメモリに記憶することもできる。
【０１２９】
その後、画像入力部１６ではなくて画像処理部１８によって、撮像完了条件を満たす画像が取り込まれたか否かが判断される（ステップＳ３１３）。具体的には、画像処理部１８は、画像メモリ１７ｂにアクセスして、上述した識別情報を参照し、記憶されている画像データが、どのカメラから得られたものであるかを認識する。一方、メインメモリ１３にアクセスして、予め設定された撮像完了条件を参照し、認識された画像データが、その撮像完了条件を満たす画像データであるか否かを判断する。
【０１３０】
撮像完了条件を満たしていないと判定された場合には（ステップＳ３１３：ＮＯ）、処理はステップＳ３１１に戻され、撮像完了条件を満たしていると判定された場合には（ステップＳ３１３：ＹＥＳ）、計測処理用割り当て処理（ステップＳ３１４）が行われる。具体的には、画像処理部１８によって、上述したステップＳ１１２で説明したような処理と同様に、画像変数への代入が行われる。最後に、ステップＳ３１４の計測処理用割り当て処理が終了すると、計測ユニットに移行する（ステップＳ３２）。
【０１３１】
このように、撮像ユニット処理を実行する段階で撮像機構が（シリアルに）動作するようにしてもよい。
【０１３２】
［実施形態の主な効果］
以上説明したように、本発明の実施形態及び他の実施形態に係る画像処理装置１によれば、カメラから得られた画像データを、画像メモリ１７ａ（図１９に示す画像処理では画像メモリ１７ｂ）に逐次ストックしながら、撮像の取りこぼしを防ぐための撮像禁止期間をなくすことができる。その結果、カメラ毎の処理時間を短縮し、検査タクトを短縮することができる。また、複数種類の撮像完了条件を設定し、一の撮像ユニットから、処理手順内に存在する計測ユニットのうち、画像入力部１６によって成立していると判定された撮像完了条件に対応付けられた計測ユニットに移行する、というように、フローチャートに同期させて撮像ユニット及び計測ユニットを実行することができる。したがって、これらを非同期で実行した場合に生じるメモリ競合やバグ修正の問題を防ぐことができる。また、１台のコントローラで足りるので、ユーザに対してコスト負担を軽減することができる。
【符号の説明】
【０１３３】
１  画像処理装置
１０  コントローラ
１１  主制御部
１２  プログラムメモリ
１３  メインメモリ
１４  通信部
１５  操作入力部
１６  画像入力部
１７ａ，１７ｂ  画像メモリ
１８  画像処理部
１９  画像表示部
２０  ビデオメモリ
３０  カメラ
４０  モニタ
５０  コンソール
６０  ＰＬＣ
７０  ＰＣ
【図１】
2011043363.tif 000003
【図２】
2011043363.tif 000004
【図３】
2011043363.tif 000005
【図４】
2011043363.tif 000006
【図５】
2011043363.tif 000007
【図６】
2011043363.tif 000008
【図７】
2011043363.tif 000009
【図８】
2011043363.tif 000010
【図９】
2011043363.tif 000011
【図１０】
2011043363.tif 000012
【図１１】
2011043363.tif 000013
【図１２】
2011043363.tif 000014
【図１３】
2011043363.tif 000015
【図１４】
2011043363.tif 000016
【図１５】
2011043363.tif 000017
【図１６】
2011043363.tif 000018
【図１７】
2011043363.tif 000019
【図１８】
2011043363.tif 000020
【図１９】
2011043363.tif 000021
【図２０】
2011043363.tif 000022
【図２１】
2011043363.tif 000023
【図２２】
2011043363.tif 000024
【図２３】
2011043363.tif 000025