説明

画像処理装置及びプログラム作成支援装置並びに画像処理方法

【課題】 複数の品種に対応することが可能であり、かつ、例えば画像処理ユニットの処理順序や画像処理ユニットに対応するパラメータなどに修正の必要性が生じたときであっても、複数のフローチャートについて編集作業を行う必要がなく、少ない工数でメンテナンスを可能とする。
【解決手段】 個別処理ユニットとして規定された画像処理ユニットについて複数の異なるパラメータ値をもつ個別パラメータが少なくとも一つ含まれるように規定されており、個別パラメータの各々のパラメータ値に対し個別処理ユニット間で共通の識別情報を関連付けて規定された画像処理プログラムを設定する又は受け付ける手段と、識別情報を指定する手段と、個別処理ユニットとして規定された画像処理ユニットの個別パラメータに対して、識別情報に対応したパラメータ値を割り付けて、画像処理を実行する手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検査対象物をカメラ等の撮像手段で撮像して、得られた画像データを用いて計測処理を実行する画像処理装置及びプログラム作成支援装置並びに画像処理方法に関する。
【背景技術】
【0002】
工場など数多くの生産現場では、人の目視に頼っていた検査を自動化・高速化する画像処理装置が導入されている。画像処理装置は、ベルトコンベア等の生産ラインを流れてくるワークをカメラによって撮像し、得られた画像データを用いて、所定領域のエッジ検出や面積計算などの計測処理を実行する。そして、計測処理の処理結果に基づいて、ワークの欠け検出やアライメントマークの位置検出などの検査を行い、ワークの欠けや位置ずれの有無を判定する判定信号を出力する。このように、画像処理装置は、FAセンサの一つとして利用されることがある。
【0003】
画像処理装置の中には、実行される画像処理の処理順序が予め決められているパッケージ型のものや、ユーザがパソコン上で作成した所望の処理順序を実行する画像処理プログラムを転送し、思い通りの計測処理を行わせるものなどがある。前者は、予め決められた処理順序でしか画像処理を行うことができないため、画像処理の自由度が制限される一方、後者は、所望の計測処理を行わせるには高度なプログラミングスキルと多大な工数を必要とする。これらの課題を解決する画像処理装置として、画像処理の検査項目一連の処理順序をフローチャートで表示し、そのフローチャート上で、ユーザにより処理順序を変更可能にしたものがある(例えば特許文献1参照)。ユーザが所望の処理順序を実現するためには、例えば、PC上の専用ソフトウェアによりフローチャート上で処理順序をカスタマイズし、カスタマイズされた処理順序を画像処理装置に実行させるための画像処理プログラムを生成した後、その画像処理プログラムを画像処理装置のコントローラに転送する。
【0004】
フローチャート上で処理順序をカスタマイズ可能な画像処理装置によれば、高度なプログラミングスキルを必要とすることなく、少ない工数で画像処理の自由度を向上させることができる。また、各画像処理をフローチャートに示す処理順序と同期させて実行することによって、撮像して得られた画像データをメモリへ書き込む、計測処理を実行するために画像データをメモリから読み出す、といった動作が同じタイミングで行われることはなく、メモリ競合の問題を防ぐこともできる。さらに、その処理順序に沿ってデバッグを行うことができ、バグ修正を容易化することもできる。
【0005】
このような画像処理装置の検査設定では、まず、撮像のような必須の画像処理や、エッジ検出や面積計算など、検査に必要な個別の画像処理を検査項目として選択し、それらを所望の順序(例えば上から下へ順番に)に並べて配置し、処理順序を示すフローチャートを作成する。なお、検査項目の配置を入れ替えることによって、上述したように、フローチャート上で処理順序を変更することができる。次に、各検査項目についてパラメータ値の設定を行う。例えば撮像では、撮像対象カメラやシャッタースピードなどを指定するためのパラメータ値を設定する。また、エッジ検出や面積計算では、ワークの欠けや位置ずれの有無を判定する判定条件などを設定する。さらに、検査項目によっては、パラメータ値の設定に加えて基準画像を設定する。例えば、検査対象物を撮像して得られた画像データの中に特定のパターンが出現するか否か、出現する場合には位置はどこか、を特定するパターンマッチングでは、特定のパターンとして予め基準画像を設定する。このようにして、検査項目の選択・配置によるフローチャートの作成と、各検査項目についてパラメータ値の設定及び必要に応じて基準画像の設定とが終わると、検査設定が完了する。
【0006】
このような検査設定は、画像処理装置で取り扱う検査対象物の品種が複数ある場合には、品種ごとに別個に行う必要がある。検査対象物の品種が異なれば、検査で正しく判定するための最適なパラメータ値や基準画像が変わってくるからである。例えば、パッキンなどOリングの切り欠き位置を検出する検査を行う場合において、様々な大きさ(複数の品種)のOリングに対応するためには、まず、一の品種について検査項目のフローチャートを作成し、各検査項目のパラメータ値を設定する。これにより、一の検査設定が完了する。そして、別の品種については、検査項目のフローチャート及び各検査項目のパラメータ値全てを複製(コピー)し、例えば切り欠き位置を検出するための円周エッジ領域の半径など、品種ごとに異なるパラメータ値を設定する。これにより、上述した一の検査設定とは異なる他の検査設定が完了する。
【0007】
他にも例えば、液晶基板のアライメント検査を行う場合において、様々なマーキングパターン(複数の品種)を有する液晶基板に対応するためには、上述同様、まず、一の品種について検査項目のフローチャートを作成し、各検査項目のパラメータ値を設定する。これにより、一の検査設定が完了する。そして、別の品種については、検査項目のフローチャート及び各検査項目のパラメータ値全てを複製し、例えばサーチ領域や予め登録されたマーキングパターン(基準画像)など、品種ごとに異なるパラメータ値及び基準画像を設定する。これにより、上述した一の検査設定とは異なる他の検査設定が完了する。
【0008】
このように、フローチャート上で処理順序をカスタマイズ可能な従来の画像処理装置では、検査対象物の品種に応じた検査設定を繰り返し行うことによって、複数の品種に対応していた。すなわち、ユーザは、検査項目のフローチャート及び各検査項目のパラメータ値を品種の数だけ複製した後、各々のフローチャートについて、品種ごとにパラメータ値や基準画像の変更を行って、パラメータ値や基準画像の異なる複数のフローチャートを作成していた。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平09−288568号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、フローチャートの複製によって品種の数だけフローチャートが作成されると、フローチャートに一部修正の必要性が生じたときに、多くのメンテナンス工数が掛かってしまう。具体的には、画像処理装置を運用していく過程で、例えば不良品が良品と誤判定されてしまった場合には、ユーザは、検査項目を入れ替えたり、必要な検査項目をフローチャートに追加したり、既に設定されている検査項目のパラメータ値を変更したりと、各種編集作業を行って、誤判定を防ぐ対策を講じなければならない。ところが、上述したように品種の数だけフローチャートが作成されていると、全てのフローチャートについて同じような編集作業を繰り返し行わなければならないため、多くのメンテナンス工数が掛かってしまう。特に、近年、ユーザの品種に関するニーズは多様化しており、画像処理装置で取り扱う品種の数が増大しているため、フローチャートのメンテナンスは非常に手間の掛かる作業となっている。
【0011】
図35は、従来の画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。図35に示すフローチャートは、「撮像」、「第1計測」、「第2計測」の3個の画像処理ユニットから構成されている。また、図35において、第1計測ユニットは、P11,P12,P13のパラメータを有し、第2計測ユニットは、P21,P22,P23のパラメータを有している。撮像ユニットも、いくつかのパラメータを有しているが、ここでは説明の便宜上、省略する。
【0012】
図35に示すように、検査対象物の品種が複数ある場合には、品種ごとにフローチャートを作成する必要がある。ユーザは、まず、品種0についての検査設定を行う。具体的には、撮像ユニット、第1計測ユニット、第2計測ユニットからなるフローチャートを作成する。そして、各画像処理ユニットのパラメータに対し、品種0に最適なパラメータ値を設定する。ただし、各画像処理ユニットにはデフォルト値が規定されており、このデフォルト値をそのまま使う場合には特に設定を行う必要はない。ここでは、デフォルト値がP11=0、P12=0、P13=0、P21=0、P22=0、P23=0と設定されているものとする。これにより、一つの検査設定が完了し、この検査設定は保存される。
【0013】
次に、品種1用の検査設定を行う場合には、品種0用の検査設定(フローチャートと各パラメータ値)をコピーする。そして、各画像処理ユニットのパラメータに対し、品種1に最適なパラメータ値を設定する。ここではP11とP21に変更はないが(デフォルト値のまま)、P12=1、P13=1、P22=1、P23=1と変更したとする。同様にして、品種2用の検査設定を行う場合には、再度、品種0用の検査設定をコピーし、必要に応じて、品種2に最適なパラメータ値(P12=2、P13=2、P22=2、P23=2)を設定し、検査設定を保存する。以下、品種3、品種4、品種5、・・・と、これらの作業を繰り返す。このように、従来の画像処理装置では、品種に応じた検査設定を繰り返し行うことによって、複数の品種に対応することができる。
【0014】
ここで、図35(a)→図35(b)に示すように、画像処理ユニットの一部を入れ替えるメンテナンスを行う必要性が生じたとする。これは、画像処理装置を運用していく過程で、最適な検査を行うために他の画像処理ユニットを使いたいときや、既存の画像処理ユニットの機能拡張(改良)などが行われ、その機能拡張版画像処理ユニットを使いたいときなどが想定される。図35(b)において、「第1計測ii」及び「第2計測ii」は、それぞれ「第1計測」及び「第2計測」に改良を加えた画像処理ユニットである。なお、第1計測iiユニットのパラメータは、第1計測ユニットと共通するパラメータ(P11,P12,P13)と、第1計測ユニットにはない新規なパラメータ(P14)とがあり、また、第2計測iiユニットのパラメータも、第2計測ユニットと共通するパラメータ(P21,P22,P23)と、第2計測ユニットにはない新規なパラメータ(P24)とがある。
【0015】
まずユーザは、画像処理装置に保存されている品種0用の検査設定を呼び出し、第1計測ユニットと第2計測ユニットを削除する。そして、撮像ユニットの直下に、第1計測iiユニット、第2計測iiユニットが、この順で配置されるように追加する。また、品種0用の検査設定における第1計測iiユニット、第2計測iiユニットのパラメータについては、第1計測ユニット、第2計測ユニットと同様にデフォルト値を使うものとする。次に、品種1の検査設定をメンテナンスするにあたっては、品種1用の検査設定を呼び出し、上述同様、第1計測ユニット及び第2計測ユニットの削除、第1計測iiユニット及び第2計測iiユニットの追加を行う。
【0016】
ここで、第1計測iiユニット、第2計測iiユニットのパラメータのうち、第1計測ユニット、第2計測ユニットと共通するパラメータ(P12,P13,P22,P23)については、図35(a)と同様に、品種1に最適なパラメータ値を設定したい場合がある。この場合、ユーザは、P12=1、P13=1、P22=1、P23=1と変更する設定を行う。したがって、品種1の検査設定をメンテナンスするにあたって、ユーザの修正が必要な箇所は、第1計測iiユニットの追加と第2計測iiユニットの追加に加えて、品種に応じて異なるパラメータ値(P12,P13,P22,P23のパラメータ値)の設定となる。同様にして、品種2用の検査設定をメンテナンスするにあたっても、ユーザは、品種2用の検査設定を呼び出し、第1計測iiユニット及び第2計測iiユニットを追加し、品種2に最適なパラメータ値(P12=2、P13=2、P22=2、P23=2)を設定する。以下、品種3、品種4、品種5、・・・についても、これらの作業を繰り返す。
【0017】
このように、従来の画像処理装置では、後々にメンテナンスを行う際に、品種の数が多ければ多いほど煩雑な編集作業が必要になり、メンテナンスに多大な工数が掛かっていた。なお、図35(b)では、品種に応じて値が異なるパラメータ値の設定のみに着目したが、品種が変わっても値が変化しないパラメータ値の設定をしなければならない場合には、尚更煩雑になる。例えば、第2計測iiユニットで新規に追加されたパラメータ(P24)に着目し、デフォルト値(P24=0)ではなく、所望の値(P24=1など)に変更しようとする。この場合、上述した編集作業に加えて、品種0用の検査設定を呼び出したときにP24=1を設定し、品種1用の検査設定を呼び出したときにP24=1を設定し、品種2用の検査設定を呼び出したときにP24=1を設定し、・・・というように、同様の設定を繰り返し行う必要があり、これも、品種の数が多ければ多いほど煩雑な編集作業となる。
【0018】
この点、例えば特開2002−251603号公報(段落[0076]〜[0080])には、フローチャートを構成する画像処理サブルーチンとして、パラメータ値の異なる複数種類の画像処理サブルーチン候補を用意しておき、実際に各画像処理サブルーチン候補を実行してみて、その実行結果に基づいて、ユーザが一の画像処理サブルーチン候補を選択し、それをフローチャートに追加する、という画像処理プログラム作成方法が開示されている。この画像処理プログラム作成方法によれば、品種ごとにパラメータ値を変更しようとしたとき、ユーザは、所望のパラメータ値が設定された画像処理サブルーチン候補を選択するだけで、新たなフローチャートを作成・保存することができる。
【0019】
しかし、この画像処理プログラム作成方法によっても上述したメンテナンス性の問題は解決困難である。すなわち、複数の品種に対応させるために、ユーザは、まず、第一の品種に最適なパラメータ値が設定された画像処理サブルーチン候補を(必要に応じていくつか)選択し、その第一の品種に最適な一又は複数の画像処理サブルーチンからなるフローチャートを作成・保存し、次に、第二の品種に最適なパラメータ値が設定された画像処理サブルーチン候補を(必要に応じていくつか)選択し、その第二の品種に最適な一又は複数の画像処理サブルーチンからなるフローチャートを作成・保存し、以後、第三の品種以降についても同様に、それぞれフローチャートを作成・保存していく必要がある。そうすると、結局のところ、フローチャートに一部修正の必要性が生じたときに、品種の数だけ作成されたフローチャートについて編集作業を行わなくてはならないため、多くのメンテナンス工数が掛かってしまう。
【0020】
本発明は、以上の点に鑑みてなされたものであり、その目的は、複数の品種に対応することが可能であり、かつ、例えば画像処理ユニットの入れ替えや追加、画像処理ユニットのパラメータ値の修正などの編集の必要性が生じたときであっても、複数のフローチャートについて編集作業を行う必要がなく、少ない工数でメンテナンスでき、ひいては使い勝手を向上させることが可能な画像処理装置及びプログラム作成支援装置並びに画像処理方法を提供することにある。
【課題を解決するための手段】
【0021】
本発明に係る画像処理装置は、一又は複数のパラメータを有し、パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行される画像処理装置において、パラメータとして、複数の異なるパラメータ値を設定可能な個別パラメータと、一のパラメータ値を設定可能な共通パラメータとが混在するとともに、個別パラメータの各々のパラメータ値に対し複数の画像処理間で共通の識別情報が関連付けて規定されており、識別情報を指定する手段と、個別パラメータに対して識別情報に対応したパラメータ値を割り付ける一方で、共通パラメータに対して識別情報によらない一のパラメータ値を割り付ける割り付け手段と、割り付け手段により割り付けられたパラメータ値を用いて複数の画像処理を実行する実行手段と、を備える。
【0022】
このような構成によれば、複数の画像処理間で共通の識別情報が指定され、個別パラメータに対してその識別情報に対応したパラメータ値が割り付けられ、共通パラメータに対してその識別情報によらない一のパラメータ値が割り付けられた上で、複数の画像処理が実行されるので、例えばユーザ又は外部PLC等からのコマンドにより検査対象物の品種に応じた識別情報を指定することによって、個別パラメータのパラメータ値が品種に応じたパラメータ値に切り換わる。その結果、画像処理ユニットの処理順序を1つ作成するだけで複数の品種に対応することができ、例えば画像処理ユニットの入れ替えや追加、画像処理ユニットのパラメータ修正など編集の必要性が生じたときであっても、1つの処理順序についてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、ひいては画像処理装置の使い勝手を向上させることができる。
【0023】
ここで、画像処理装置は、複数の画像処理には、個別パラメータを少なくとも一つ有する個別画像処理と共通パラメータのみ有する共通画像処理とが含まれ、割り付け手段は、個別画像処理の個別パラメータに対して識別情報に対応したパラメータ値を割り付ける一方で、共通画像処理の共通パラメータに対して識別情報によらない一のパラメータ値を割り付けるような構成としてもよい。これにより、上述した個別画像処理と共通画像処理とが混在する場合に、個別画像処理の個別パラメータに対して検査対象物の品種に応じたパラメータ値を割り付ける一方で、共通画像処理の共通パラメータに対して検査対象物の品種が変わっても値が不変の一のパラメータ値を割り付けることができ、少ない工数でメンテナンスが可能となるので、画像処理装置の使い勝手を向上させることができる。
【0024】
また、画像処理装置は、複数の画像処理には、ユーザによって登録された基準画像をパラメータの一つとして用いる画像処理が含まれるとともに、個別パラメータには、複数の異なる基準画像を設定可能なパラメータが含まれ、割り付け手段は、個別パラメータに対して識別情報に対応したパラメータ値及び/又は基準画像を割り付ける一方で、共通パラメータに対して識別情報によらない一のパラメータ値及び/又は基準画像を割り付け、実行手段は、割り付け手段により割り付けられたパラメータ値及び/又は基準画像を用いて複数の画像処理を実行するような構成としてもよい。これにより、ユーザは識別情報を指定することによって、個別パラメータとして設定される基準画像も品種に応じて切り換えることができるので、基準画像を用いて処理内容を実行する画像処理ユニットの入れ替えや追加、パラメータ修正などのメンテナンスを行う際は、品種に応じて基準画像を切り換える設定を簡易に行うことができ、ひいては少ない工数でメンテナンスを行うことができる。
【0025】
また、画像処理装置は、識別情報を切り換える切換コマンドを受け付ける手段を備え、割り付け手段は、個別パラメータに対して切換コマンドにより切り換えられた識別情報に対応したパラメータ値を割り付ける一方で、共通パラメータに対して切換コマンドにより切り換えられた識別情報によらない一のパラメータ値を割り付けるような構成としてもよい。ここでいう「切換コマンド」は、複数ある検査設定(画像処理の複数種類の処理順序)を切り換えるコマンド等ではなく、本発明における「識別情報」を切り換えるコマンドを意味する。このような切換コマンドを外部から受け付けると、画像処理の個別パラメータに対して、切換コマンドにより切り換えられた識別情報に対応したパラメータ値が割り付けられる。したがって、ユーザは、外部PLC等を用いて切換コマンドを画像処理装置に送るだけの簡易な操作により、検査対象物の品種に応じたパラメータ値を用いて検査を行うことができ、ひいては使い勝手を向上させることができる。
【発明の効果】
【0026】
以上説明したように、本発明によれば、画像処理ユニットの処理順序を1つ作成するだけで複数の品種に対応することができるようになり、画像処理ユニットの処理順序や画像処理ユニットに対するパラメータなどに修正の必要性が生じたときであっても、その1つの処理順序についてのみ編集を行えばよいので、少ない工数でメンテナンスすることができる。
【図面の簡単な説明】
【0027】
【図1】本発明の実施の形態に係る画像処理装置の概略構成例を示す図である。
【図2】本発明の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図3】本実施形態に係る画像処理装置におけるコントローラのハードウェア構成例を示すブロック図である。
【図4】本実施形態に係る画像処理装置におけるコントローラの機能構成例を示すブロック図である。
【図5】本実施形態に係るプログラム作成支援装置としてのPCの機能構成例を示すブロック図である。
【図6】PCの表示部に表示されるエディタ画面(主要部)の一例を示す図である。
【図7】傷ユニットのプロパティ設定画面の一例を示す図である。
【図8】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図9】変数設定画面の一例を示す図である。
【図10】傷ユニットのプロパティ設定画面の一例を示す図である。
【図11】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図12】PCの表示部に表示されるエディタ画面(主要部)の一例であって、レシピファイルが表示されている様子を示す図である。
【図13】レシピ設定のコピー画面例を示す図である。
【図14】レシピファイルが自動生成され、このレシピファイルがアクティブになっている様子を示す図である。
【図15】レシピファイルが自動生成され、このレシピファイルがアクティブになっている様子を示す図である。
【図16】傷ユニットのプロパティ設定画面の一例を示す図である。
【図17】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図18】レシピ0からレシピ3までのレシピファイルに保存された内容のイメージを示す図である。
【図19】品種3に対応するパラメータ値を設定した後、レシピ3のレシピファイルがアクティブになっている様子を示す図である。
【図20】基準画像として登録された画像一覧を示す図である。
【図21】4個の基準画像を登録し、レシピ3のレシピファイル及び基準画像がアクティブになっている様子を示す図である。
【図22】画像処理装置における画像処理の流れを示すフローチャートである。
【図23】画像処理装置においてレシピ番号が切り換えられる例を説明するためのフローチャートである。
【図24】画像処理装置のモニタにおいて、コンソールを用いてレシピ設定に関する操作を行う画面例を示す図である。
【図25】メンテナンス内容を示すフローチャートである。
【図26】PCの表示部に表示されるエディタ画面(主要部)の一例を示す図である。
【図27】傷ユニットのプロパティ設定画面の一例を示す図である。
【図28】傷ユニットのプロパティ設定画面の一例を示す図である。
【図29】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図30】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図31】メンテナンスを行った際の画像処理装置の動作の流れを示すフローチャートである。
【図32】本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図33】本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図34】レシピ切り換えコマンドと検査設定切り換えコマンドとが混在する場合を説明するためのフローチャートである。
【図35】従来の画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施の形態に係る画像処理装置について、図面に基づいて具体的に説明する。
【0029】
[概略]
図1は、本発明の実施の形態に係る画像処理装置1の概略構成例を示す図である。図1に示すように、画像処理装置1は、エッジ検出や面積計算などの計測処理を実行するコントローラ10と、検査対象物を撮像する3台のカメラ30a,30b,30cと、液晶パネル等のモニタ40と、ユーザがモニタ40上で各種操作するためのコンソール50と、を有している。カメラ30a,30b,30c、モニタ40、及びコンソール50は、コントローラ10と着脱可能に接続される。コントローラ10は、カメラ30a,30b,30cから得られた画像データを用いて画像処理を実行し、外部接続されたPLC60に対し、ワークの良否などの判定結果を示す信号として判定信号を出力する。
【0030】
3台のカメラ30a,30b,30cは、PLC60から入力される制御信号、例えばカメラ30a,30b,30cから画像データを取り込むタイミングを規定する撮像トリガ信号に基づいて、検査対象物の撮像を行う。モニタ40は、検査対象物を撮像して得られた画像データや、その画像データを用いた計測処理の結果を表示するための表示装置である。一般に、ユーザはモニタ40を視認することによって、画像処理装置1が運転中である場合のコントローラ10の動作状態を確認することができる。コンソール50は、モニタ40上でフォーカス位置を移動させたり、メニュー項目を選択したりするための入力装置である。特に、後述するように、本実施形態では、コンソール50は検査対象物の品種に応じた識別情報を入力するための入力装置にもなる。
【0031】
また、画像処理装置1のコントローラ10には、画像処理装置1の画像処理プログラム(制御プログラム)を生成するためのPC70が接続されており、このPC70上で動作するソフトウェアによって、画像処理ユニットの処理順序を規定する画像処理プログラムが生成される(詳細については後述する)。画像処理装置1では、その処理順序に沿って各画像処理ユニットが順次実行される。PC70とコントローラ10とは、通信ネットワークを介して接続されており、PC70上で生成された画像処理プログラムは、モニタ40の表示態様を規定するレイアウト情報などとともにコントローラ10に転送される。また逆に、コントローラ10から画像処理プログラムやレイアウト情報などを取り込んで、PC70上で編集することもできる。
【0032】
図2は、本発明の実施の形態に係る画像処理装置1におけるメンテナンス方法の概略を説明するための説明図である。メンテナンスの流れとしては、まずユーザが画像処理装置1で実行される画像処理プログラムを作成し、その画像処理プログラムを画像処理装置1に転送して運用を開始した後、一部の画像処理ユニットの追加/削除やパラメータ値の設定し直しなどのメンテナンスを行う、という流れである。図2(a)は、画像処理装置1で実行される画像処理プログラムの作成について示しており、図2(b)は、傷ユニットとパターンサーチユニットを削除し、傷iiユニットとパターンサーチiiユニットを追加するとともに、必要に応じてパラメータ値を設定し直す、というメンテナンスについて示している。なお、ここでは、図2(a)に示す画像処理プログラムの作成と、図2(a)から図2(b)へのメンテナンスは、画像処理装置1に接続されたPC70において行うものとする。
【0033】
図2(a)に示すフローチャートは、「撮像」、「傷」、「サーチ」(図2では、「パターンサーチ」を「サーチ」と略す)の3個の画像処理ユニットから構成されており、ユーザがPC70或いはモニタ40の画面上で(モニタ40の画面上の場合はコンソール50を使用して)作成し得るものである。また、図2(a)においては、傷ユニットのパラメータの一部として、検出方向,傷レベル,セグメントサイズの各パラメータを有しており(各パラメータの詳細は後述)、パターンサーチユニットのパラメータの一部として、検出個数,サーチ感度,サーチ精度の各パラメータを有している(各パラメータの詳細は後述)。撮像ユニットも、いくつかのパラメータを有しているが、ここでは説明の便宜上、省略する。なお、撮像ユニットは、カメラ30a,30b,30cから傷ユニット及びパターンサーチユニットの計測処理で用いる画像データを取り込む処理を実行するためのユニットであり、傷ユニットは、検査対象物の傷や汚れの位置を検知する処理を実行するためのユニットであり、サーチユニットは、特定のパターンとして予め登録しておいた基準画像に最も似ている部分を入力画像の中から検出する処理を実行するためのユニットである。
【0034】
まず、図2(a)に示すように、ユーザは、PC70の表示画面において、検査対象物(ワーク)の品種が複数ある場合であっても、品種ごとに別々のフローチャートを作成する必要はない。ユーザは、まず撮像ユニット、傷ユニット、パターンサーチユニットからなるフローチャートを1つ作成する。また、フローチャートの作成過程において、各画像処理ユニットのパラメータに対し、画像処理装置1において画像処理が実行される際に割り付けられるパラメータ値の設定を行う。
【0035】
本実施形態では、傷ユニットとパターンサーチユニットについて、検査対象となるワークの品種ごとにパラメータ値が変わらない共通パラメータ(傷ユニットの検出方向及びパターンサーチユニットの検出個数)と、検査対象となるワークの品種ごとにパラメータ値が異なる個別パラメータ(傷ユニットの傷レベルとセグメントサイズ、パターンサーチユニットのサーチ感度とサーチ精度)とが混在している。
【0036】
共通パラメータについては、検査対象となるワークの品種ごとにパラメータ値が変わらないため、ユーザは、一のパラメータ値を設定する。図2(a)では、傷ユニットの検出方向及びパターンサーチユニットの検出個数について、それぞれ円周及び1が設定されている。
【0037】
一方で、個別パラメータについては、検査対象となるワークの品種ごとにパラメータ値が異なるように、ユーザは、品種に応じてパラメータ値が切り換わるような設定を行う。図2(a)に示すように、例えば個別パラメータに予め定義した変数を関連付け、その変数には、品種に応じて異なる値が代入されるようにする。図2(a)では、傷レベルに変数#kizuを関連付け、セグメントサイズに変数#sizeを関連付け、サーチ感度に変数#kandoを関連付け、サーチ精度に変数#seidoを関連付けている。また、変数#kizuについては、品種0のワークを検査する際には50が代入され、品種1のワークを検査する際には60が代入され、品種2のワークを検査する際には70が代入されるようにしている(品種3以降についても同様)。また、変数#size,#kando,#seidoについても同様に、それぞれ、品種0のワークを検査する際には20,0,0が代入され、品種1のワークを検査する際には30,1,1が代入され、品種2のワークを検査する際には40,2,2が代入されるようにしている(品種3以降については省略)。このような設定を行うことにより、変数に代入される値は、例えば図2(a)に示すような品種ごとのファイル(レシピファイル)に纏めることができる。
【0038】
ユーザは、以上の設定が完了すると、図2(a)に示す設定内容をPC70から画像処理装置1に転送し、複数の品種を有するワークについて画像処理を実行する。このとき、画像処理装置1のコントローラ10において、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。なお、コントローラ10は、コンソール50を用いたユーザの指示により、或いは、PLC60からのコマンドにより、どの品種のワークを検査するかを認識する。
【0039】
画像処理装置1の運転中に、外部からワークの品種切り換えを示す指示又はコマンドが送られてくると、コントローラ10は、パラメータ値の割り付けをし直す。具体的には、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。このようにして、画像処理装置1は、共通パラメータについては、品種によらない共通のパラメータ値を割り付け、個別パラメータについては、品種に対応したパラメータ値を割り付けることによって、複数の品種のワークに対応することができるようになっている。
【0040】
ここで、図2(a)→図2(b)に示すように、画像処理ユニットの一部を入れ替えてメンテナンスを行う必要性が生じたとする。このときユーザは、例えばコンソール50を操作して、画像処理装置1の運転を停止する。その後、図2(a)に示すフローチャートやレシピファイルなどをコントローラ10からPC70に転送し、PC70の表示画面に、図2(a)に示すフローチャートを表示させる。そして、傷ユニットとパターンサーチユニットを削除した後、傷iiユニット、パターンサーチiiユニットを追加する。また、フローチャートの編集過程において、各画像処理ユニットのパラメータに対し、次に画像処理装置1において画像処理が実行される際に割り付けられるパラメータ値の設定を行う。
【0041】
図2(b)に示すフローチャートでも、図2(a)に示すフローチャートと同様に、傷iiユニットとパターンサーチiiユニットについて共通パラメータと個別パラメータとを混在させており、傷iiユニットの検出方向及び新規なパラメータ「間引き方法」、パターンサーチiiユニットの検出個数及び新規なパラメータ「サーチ高速化」を、それぞれ共通パラメータとして規定し、傷iiユニットの傷レベルとセグメントサイズ、パターンサーチiiユニットのサーチ感度とサーチ精度を、それぞれ個別パラメータとして規定している。なお、「間引き方法」は欠陥を検出する際の精度を調整するためのパラメータであり、「サーチ高速化」は処理速度を調整するためのパラメータである。
【0042】
共通パラメータについては、上述同様、一のパラメータ値を設定する。図2(b)に示すように、傷iiユニットの検出方向及びパターンサーチiiユニットの検出個数については、図2(a)と同じくそれぞれ円周及び1が設定されている。また、傷iiユニットの新規なパラメータ「間引き方法」及びパターンサーチiiユニットの新規なパラメータ「サーチ高速化」については、それぞれオート及びOFFが設定されている。一方、個別パラメータについては、品種に応じてパラメータ値が切り換わるような設定を行う。ここでは図2(b)に示すように、傷iiユニットの傷レベル及びセグメントサイズ、パターンサーチiiユニットのサーチ感度及びサーチ精度について、それぞれ、例えば個別パラメータに図2(a)で定義した変数#kizu,#size,#kando,#seidoを関連付ける。そうすると、図2(a)を用いて説明したように、変数#kizu,#size,#kando,#seidoには、品種に応じて異なる値が代入されるように構成されているため、個別パラメータに変数を関連付けるだけで、個別パラメータについて検査対象となるワークの品種ごとにパラメータ値を切り換えることができる。以上のメンテナンスが終了すると、ユーザは、図2(b)に示すフローチャートやレシピファイルなどをPC70から画像処理装置1へ転送し、画像処理装置1の運転を再開する。このとき、画像処理装置1のコントローラ10において、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。
【0043】
このように、本実施形態に係る画像処理装置1は、傷ユニット及び傷iiユニット並びにパターンサーチユニット及びパターンサーチiiユニットを個別処理ユニット(個別画像処理の一例に相当)として規定し、これらの個別処理ユニットについて、共通パラメータと個別パラメータとを混在させている。そして、共通パラメータについては、検査対象となるワークの品種ごとにパラメータ値が変わらないように構成し、個別パラメータについては、品種に応じてパラメータ値が切り換わるような構成にしている。したがって、画像処理ユニットの一部を追加・削除するような編集を行った場合であっても、図2(b)を用いて説明したように、一のフローチャートについてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、使い勝手を向上させることができる。
【0044】
以上説明したように、画像処理装置1には、予め処理内容が規定され、ユーザにより設定可能な一又は複数のパラメータからなるパラメータセットに従って処理内容を実行する複数の画像処理ユニットが記憶されている。また、画像処理ユニットが共通処理ユニット又は個別処理ユニットとして規定されており、個別処理ユニットとして規定された画像処理ユニットについて複数の異なるパラメータ値をもつ個別パラメータが少なくとも一つ含まれるように規定されており、個別パラメータの各々のパラメータ値に対し個別処理ユニット間で共通の識別情報を関連付けて規定された画像処理プログラムが、設定され又は受け付けられる。そして、外部からワークの品種切り換えを示す指示又はコマンドが送られて、識別情報が指定されると、個別パラメータに対して識別情報に対応したパラメータ値が割り付けられ、共通パラメータに対して識別情報によらないパラメータ値が割り付けられて、画像処理プログラムで規定された画像処理ユニットの処理順序及び割り付けられたパラメータ値により画像処理ユニットの処理内容と協働して画像処理が実行される。
【0045】
以下、本発明の実施の形態に係る画像処理装置1及びプログラム作成支援装置の一例となるPC70について、詳細に説明する。
【0046】
[ハードウェア構成]
図3は、本実施形態に係る画像処理装置1におけるコントローラ10のハードウェア構成例を示すブロック図である。図3に示すように、画像処理装置1におけるコントローラ10は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウェア各部の制御を行うCPUなどの主制御部11と、起動プログラムや初期化プログラムなどが格納されたROM,フラッシュROM,EEPROMなどのプログラムメモリ12と、CPU11が各種プログラムを実行する際のワークエリアとして機能するRAMなどのメインメモリ13と、外部のPLC60やPC70などと通信可能に接続される通信部14と、コンソール50からの操作信号が入力される操作入力部15と、を有している。
【0047】
また、画像処理装置1は、カメラ30a〜カメラ30cでの撮像により得られた画像データを取り込むASICなどの画像入力部16と、画像データをバッファリングする画像メモリ(フレームバッファ)17aと、エッジ検出や面積計算などの計測処理を実行するDSPなどの画像処理部18と、計測処理用に画像データを記憶する画像メモリ(ワークメモリ)17bと、液晶パネル等のモニタ40に対して画像を表示させるDSPなどの画像表示部19と、画像を表示させる際に画像データを一時記憶するVRAMなどのビデオメモリ20と、を有している。そして、これらの各ハードウェアは、バス等の電気配線を介して通信可能に接続されている。
【0048】
プログラムメモリ12には、画像入力部16、画像処理部18、及び画像表示部19、並びに、通信部14及び操作入力部15の各部を、主制御部11により制御するための装置制御プログラムが格納されている。また、本実施形態では、PC70において生成され、PC70から転送されてきた画像処理プログラムは、プログラムメモリ12に格納されるようにしている。勿論、メインメモリ13に格納されるようにすることもできる。
【0049】
メインメモリ13、画像メモリ17a,17b、ビデオメモリ20は、SRAMやSDRAM等の揮発性メモリで構成されており、コントローラ10で別個独立したメモリとして設けられている。なお、不揮発性メモリを用いることもできるし、一個のメモリの記憶領域を切り分けて各メモリを構成することもできる。
【0050】
通信部14は、外部のPLC60に接続されたセンサ(光電センサ等)でトリガ入力があったときに、PLC60から撮像トリガ信号を受信するインターフェース(I/F)として機能する。また、PC70から転送されてくる画像処理装置1の画像処理プログラムやモニタ40の表示態様を規定するレイアウト情報などを受信するインターフェース(I/F)としても機能する。
【0051】
主制御部11は、通信部14を介してPLC60から撮像トリガ信号を受信すると、画像入力部16に対して撮像指令を送る。なお、撮像トリガ信号は、カメラ30a〜カメラ30cのいずれか一のカメラに対する撮像トリガになる場合もあるし、カメラ30a〜カメラ30cの全部のカメラに対する撮像トリガになる場合もある。したがって、主制御部11から画像入力部16へ送られる撮像指令も、カメラ30a〜カメラ30cのいずれか一の撮像指令になる場合もあるし、カメラ30a〜カメラ30cの全部の撮像指令になる場合もある。なお、撮像トリガ信号を生成する装置として、PLC60ではなく、光電センサなどのトリガ入力用のセンサを通信部14に直接接続することもできる。
【0052】
操作入力部15は、コンソール50からの操作信号を受信するインターフェース(I/F)として機能する。なお、コンソール50には、モニタ40上に表示されるカーソルを上下左右に移動させる十字キー、決定ボタン、又はキャンセルボタンなどの各部品が配置されている。これらの各部品を操作することによって、ユーザはモニタ40上でフローチャートを作成したり、レシピファイルをコピーしたり、所望のレシピを指定したりすることができる。なお、コンソール50は、キーボードやマウスで代用することもできる。また、コンソール50の機能とモニタ40の機能を一体化させたタッチパネルを用いることもできる。
【0053】
カメラ30a〜カメラ30cは、可視光線や赤外線を利用して検査対象物を撮像する撮像手段の一例であり、例えばCCDやCMOSを用いることができる。画像入力部16に接続された3台のカメラ30a〜30cは、内部にA/D変換器を有しており、撮像して得られた画像データをデジタルデータで出力する。また、画像入力部16(或いは主制御部11)からの画像データ取り込み信号に基づき動作する。例えば、カメラ30a〜カメラ30cのいずれか一のみで検査対象物を撮像することもできるし、カメラ30a〜カメラ30cの全部で検査対象物を撮像することもできる。
【0054】
画像入力部16は、上述した画像入力プログラムに従って、画像データの取り込みを行う。具体的には、例えば主制御部11からカメラ30aの撮像指令を受信すると、カメラ30aに対して画像データ取り込み信号を送信する。そして、カメラ30aで撮像が行われた後、撮像して得られた画像データを取り込む。取り込んだ画像データは、一旦画像メモリ17aにバッファリング(キャッシュ)され、予め用意しておいた画像変数に代入される。この画像変数は、数値を扱う通常の変数と異なり、対応する画像処理ユニットの入力画像として割り付けることで、計測処理や画像表示の参照先となる変数である。
【0055】
画像処理部18は、画像データに対する計測処理を実行する。具体的には、まず画像入力部16が上述した画像変数を参照しつつ、画像メモリ17aから画像データを読み出して、画像処理部18を通じて画像メモリ17bへ内部転送を行う。そして、画像処理部18は、画像メモリ17bに記憶された画像データを読み出して、計測処理を実行する。
【0056】
画像表示部19は、主制御部11から送られてきた表示指令に基づいて、モニタ40に所定画像を表示させる。例えば、画像メモリ17bに記憶されている計測処理前又は計測処理後の画像データを読み出して、ビデオメモリ20に一時記憶し(展開し)、モニタ40に対して画像データ表示信号を送信する。
【0057】
[機能構成]
図4は、本実施形態に係る画像処理装置1におけるコントローラ10の機能構成例を示すブロック図である。主制御部11がプログラムメモリ12に格納されている装置制御プログラムを実行することによって、コントローラ10は図5に示す各機能を発揮するように動作する。
【0058】
図4に示すように、コントローラ10は、図2を用いて説明したレシピファイルのうち、どの品種用のレシピファイルを用いるかを示す識別情報、すなわち検査対象物の品種を識別するための識別情報を受信する識別情報受信部101と、PC70から転送された検査用データ(画像処理ユニットの処理順序を示すフローチャート、各画像処理ユニットに対応するパラメータセットのパラメータ値や基準画像などを含む)を記憶する検査用データ記憶部102と、識別情報受信部101から転送される識別情報と検査用データ記憶部102から読み出される検査用データとを用いて、フローチャートの中で、個別処理ユニットとして規定された画像処理ユニットのパラメータのうち個別パラメータ(詳細は後述)に対して、識別情報に対応した(識別情報が示すレシピファイルに保存された)パラメータ値や基準画像を割り付け、個別処理ユニットとして規定された画像処理ユニットのパラメータのうち共通パラメータ(詳細は後述)及び共通処理ユニット(共通画像処理の一例に相当)として規定された画像処理ユニットのパラメータに対して識別情報によらないパラメータ値や基準画像を割り付けるパラメータセット/基準画像割り付け部103と、予め処理内容が規定され、ユーザにより設定可能な一又は複数のパラメータからなるパラメータセットに従って処理内容を実行する複数の画像処理ユニットを記憶する処理ユニット記憶部104と、検査用データに含まれるフローチャート、パラメータセット/基準画像割り付け部103で割り付けられたパラメータ値により、処理ユニット記憶部104に記憶された画像処理ユニットの処理内容と協働して画像処理を実行する画像処理実行部105と、を有している。画像処理実行部105は、検査用データに含まれる画像処理プログラムに従って、画像処理を実行する。
【0059】
なお、識別情報受信部101は、例えば上述した通信部14や操作入力部15などによって具現化することができ、検査用データ記憶部102及び処理ユニット記憶部104は、例えばプログラムメモリ12などによって具現化することができ、パラメータセット/基準画像割り付け部103は、例えば主制御部11などによって具現化することができ、画像処理実行部105は、例えば主制御部11,画像入力部16,画像処理部18,画像メモリ17a及び17b,プログラムメモリ12,メインメモリ13などによって具現化することができる。
【0060】
図5は、本実施形態に係るプログラム作成支援装置としてのPC70の機能構成例を示すブロック図である。PC70は、例えばCPU,ROM,RAM,及びハードディスク等から構成される汎用のパーソナルコンピュータを用いることができる。また、図6に示す各機能は、PC70にインストールされたプログラム作成支援ソフトウェアが実行されることによって発揮される。
【0061】
PC70は、フローチャート生成部7011及びプログラム生成部7012として機能する制御部701と、処理ユニット記憶部7021及び検査用データ記憶部7022として機能するメモリ702と、画像処理装置1のコントローラ10と通信可能に接続される通信部703と、マウスやキーボード等から構成される入力部704と、液晶モニタ等で構成される表示部705と、を有している。
【0062】
フローチャート生成部7011は、スタートシンボルにおいて開始し、エンドシンボルにおいて終了するフローチャートを生成する機能を有する。ユーザは、入力部704を用いて、所望の画像処理ユニットを所望の順序に配置することによって、表示部705上でフローチャートを作成する。これにより、フローチャートが生成される。
【0063】
プログラム生成部7012は、生成されたフローチャートをコントローラ10で解釈できる設定データに直して、検査用データを生成する機能を有する。ユーザは、入力部704を用いて、表示部705において所定のボタン等をクリックすることによって、画像処理プログラムを含む検査用データを生成することができる。生成された検査用データ(画像処理プログラム)は、メモリ702の検査用データ記憶部7022に記憶される。制御部701は、検査用データ記憶部7022から検査用データ(画像処理プログラム)を読み出して、通信部703を介してコントローラ10へ転送する。
【0064】
また、PC70では、検査用データ(画像処理プログラム)をコントローラ10へ転送するに先立って、画像処理シミュレーションを行うこともできる。具体的には、制御部701が、フローチャート生成部7011によって生成されたフローチャートをPC70上で実行可能な形式に変換し、処理ユニット記憶部7021に記憶された画像処理ユニットの中からフローチャートに配置された画像処理ユニットを参照しながら画像処理シミュレーションを行う。
【0065】
以下、PC70における画像処理プログラム作成の流れについて説明し、その後、作成された画像処理プログラムにより画像処理装置1を運用している際に、メンテナンスの必要性が生じたときのメンテナンス方法について説明する。
【0066】
[画像処理プログラム作成の流れ]
図6は、PC70の表示部705に表示されるエディタ画面(主要部)の一例を示す図である。このエディタ画面は、PC70においてプログラム作成支援ソフトウェアが実行されると、自動的にPC70の表示部705に表示される。
【0067】
図6において、まずユーザは、入力部704の操作によって、所望の画像処理ユニットを、パーツリスト1003からフロービュー1002へ所望の順序で配置されるように、ドラッグアンドドロップを繰り返す。すなわち、スタートシンボルにおいて開始し、エンドシンボルにおいて終了する実行フロー上に、画像処理ユニットを配置することによって、簡易に所望のフローチャートを作成することができる。すなわち、コントローラ10に行わせる一連の画像処理は、画像処理ユニットとしてブロック化されていて、ユーザが画像処理ユニットを実行フロー上に配置するだけで、その画像処理ユニットが、それより前の画像処理ユニットの処理結果に基づいて所定の処理を行うフローシーケンスを作成することができる。
【0068】
パーツリスト1003内では、複数の画像処理ユニットが、「画像入力」「計測」「制御」「演算」「タイミング」「表示」「出力」「コマンド出力」のカテゴリーに区分されている。各カテゴリーに属する画像処理ユニットをパーツリスト1003内に実際に表示させるには、各カテゴリー左端の+ボタンをクリックすればよい。
【0069】
「画像入力」は、撮像に関する画像処理ユニットが属するカテゴリーであり、撮像ユニットが属している。この撮像ユニットには、シャッタースピード、カメラ感度、フラッシュオン時間、フラッシュ遅延時間、撮像対象カメラ、トリガ端子を指定するためのパラメータからなるパラメータセットが、撮像ユニットのプロパティとして関連付けられている。図6に示すフロービュー1002では、フローチャートの1番目のユニット(ユニット番号U0001)として、撮像ユニットが配置されている。
【0070】
「計測」は、計測に関する画像処理ユニットが属するカテゴリーであり、撮像ユニットによって得られた画像データから計測結果を抽出し、この計測結果に基づいて検査対象物の良否を判定する計測ユニットが属している。例えば、エリアユニットやエッジ位置ユニット、傷ユニットやパターンサーチが属している。図6に示すフロービュー1002では、フローチャートの2番目及び3番目のユニット(それぞれユニット番号U0002及びU0003)として、それぞれ傷ユニット及びパターンサーチユニットが配置されている。傷ユニットは、小面積の検出領域(セグメント)を移動して平均濃度を算出し、しきい値以上の濃度差がある箇所を傷として検出するユニットである。パターンサーチは、特定の画像パターンを基準画像として予め登録しておき、入力画像の中から基準画像に最も似ている部分を検出し、その部分の位置や角度、相関値を計測するユニットである。また、本実施形態では、図2を用いて説明したように、傷ユニットを改良した画像処理ユニットとして傷iiユニットや、パターンサーチユニットを改良した画像処理ユニットとしてパターンサーチiiユニットなども、「計測」のカテゴリーに属している。
【0071】
その他、「制御」は、制御に関する画像処理ユニットが属するカテゴリーであり、バイパスユニットやエンドシンボルなどの制御ユニットが属している。バイパスユニットは、実行フローを2以上の枝フローに分岐させる分岐ユニットと、分岐された枝フローを合流させる合流ユニットからなる画像処理ユニットであり、所定条件で実行フローを分岐させるユニットである。エンドシンボルは、1回のフローシーケンスを終了させるためのシンボルである。「演算」は、数値演算ユニットなど、演算に関する画像処理ユニットが属するカテゴリーであり、「タイミング」は、タイマ待ちユニットなど、フロー遷移のタイミング制御に関する画像処理ユニットが属するカテゴリーであり、「表示」は、表示に関する画像処理ユニットが属するカテゴリーであり、「出力」及び「コマンド出力」は、それぞれ出力及びコマンド出力に関する画像処理ユニットが属するカテゴリーである。
【0072】
このようにして、例えば3個の画像処理ユニットを配置してフローチャートの作成が終わると、次にユーザは、各画像処理ユニットに対応するパラメータ値を設定する。具体的には、フロービュー1002内の撮像ユニット、傷ユニット、パターンサーチユニットそれぞれの上にカーソルを合わせ、右クリックしてプロパティ設定画面を表示部705に表示させる。ここでは、傷ユニットとパターンサーチユニットのプロパティ設定について詳しく説明する。
【0073】
図7は、傷ユニットのプロパティ設定画面の一例を示す図である。図8は、パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【0074】
図7において、傷ユニットのプロパティは、例えば「全般」「検出条件」「表示設定」「詳細設定」などの各タブに区分されており、図7では「検出条件」が表示されている。検出条件のパラメータの一例としては、例えば、傷の検出方向を選ぶ「検出方向」、傷と判定する平均濃度の差(公差)を指定する「傷レベル」、計測領域内で移動するセグメントの大きさを指定する「セグメントサイズ」、セグメントにより平均濃度算出を行う際の移動量を指定する「移動量」などが挙げられる(他のパラメータについては説明の便宜上、省略する)。図7では、検出方向はプルダウンメニューの中から円周が選択され、傷レベルは50が選択され、セグメントサイズは20が選択され、移動量は8が選択されている。このように、ユーザはパラメータ値として数値を入力するのではなく、予め定められた数値リストの中から入力部704のマウス操作により選択することができるようになっている。これにより、ユーザは整数型(int型)や倍精度浮動小数型(double型)などの属性を気にすることなく、パラメータ値の設定を行うことができる。これらの各パラメータが一つのパラメータセットになって、画像処理プログラムにおいて傷ユニットに対応するパラメータセットとして規定される。
【0075】
なお、このときユーザはデフォルト値を使用することもできる。デフォルト値は、ユーザがパラメータ値の設定を省略したときに、画像処理ユニットのパラメータに対する割り付けに使用されるように予め設定されたパラメータ値であって、コントローラ10に組み込まれている。また、図7に示すプロパティ設定画面を表示部705上で開いたときには、そのプロパティ設定画面に予め設定されたパラメータ値として、最初にデフォルト値が表示されるようになっている。図7では、検出方向のデフォルト値として円周が設定されており、傷レベルのデフォルト値として50が設定されており、セグメントサイズのデフォルト値として20が設定されており、移動量のデフォルト値として8が設定されている。したがって、ユーザは、図7に示すプロパティ設定画面に表示される各パラメータのデフォルト値を確認し、そのままデフォルト値をパラメータに対する割り付けに使用する場合(デフォルト値を変更しない場合)には、パラメータ値の設定を省略することができる。
【0076】
一方、図8において、パターンサーチユニットのプロパティは、例えば「全般」「検出条件」「表示設定」「詳細設定」などの各タブに区分されており、図8では「検出条件」が表示されている。検出条件のパラメータの一例としては、例えば、入力画像中の特定の画像パターンが回転している場合に、計測する角度の範囲を指定する「角度範囲」、パターンサーチ計測で検出する特定の画像パターンの最大個数を指定する「検出個数」、検出の安定度と処理時間との優先付けを調整するサーチ感度を指定する「サーチ感度」、検出の精度と処理時間との優先付けを調整するサーチ精度を指定する「サーチ精度」などが挙げられる。図8では、「角度範囲」は+方向にも−方向にも0度が選択され、「検出個数」は1個が選択され、「サーチ感度」は0が選択され、「サーチ精度」は0が選択されている。なお、図7と同様に、ユーザは、入力部704のマウス操作により所望のパラメータ値を選択することができる。また、図8では、角度範囲のデフォルト値として+方向にも−方向にも0が設定されており、検出個数のデフォルト値として1が設定されており、サーチ感度のデフォルト値として0が設定されており、サーチ精度のデフォルト値として0が設定されているため、ユーザは、そのままデフォルト値をパラメータに対する割り付けに使用する場合(デフォルト値を変更しない場合)には、パラメータ値の設定を省略することができる。これらの各パラメータが一つのパラメータセットになって、パターンサーチユニットに対応するパラメータセットとして規定されている。
【0077】
なお、上述した画像処理ユニットの処理順序の一例となるフローチャートの設定、及び画像処理ユニットに対応するパラメータセットの各パラメータ値の設定は、入力部704を通じたユーザの操作に基づいて、フローチャート生成部7011が行う。したがって、本実施形態では、フローチャート生成部7011は、複数の画像処理の処理順序及びパラメータ値を設定する「第1設定手段」の一例として機能する。
【0078】
次に、ユーザは、レシピ切り換えに対応したローカル変数を宣言(定義)し、そのローカル変数を、レシピ切り換えを行いたいパラメータと対応付ける(関連付ける)。これにより、そのパラメータを含む画像処理ユニットが個別処理ユニットとして規定される。具体的に説明すると、図6に示すエディタ画面に戻って、「設定」をクリックし、図示しないプルダウンメニューから変数設定をクリックし、ポップアップウィンドウで変数設定画面を表示部705に表示させる。
【0079】
図9は、変数設定画面の一例を示す図である。図9に示す変数設定画面では、「ローカル変数」、「グローバル変数」、「画像変数」の3個の変数タブが含まれている。「ローカル変数」は、一時的に数字や文字等を記憶しておくとともに、一の検査設定内で参照可能な変数であり、画像処理ユニットの一の処理順序(フローチャート)において参照し得る変数である。ローカル変数は、コントローラ10の電源起動時や検査設定切換時に、ユーザによって予め定義された初期値で初期化される。また、特定の画像処理ユニットの実行結果(例えばエッジ位置など)が一時的に記憶された後、その画像処理ユニット以下に配置された画像処理ユニットの実行(例えばエッジ位置とエッジ位置との間の距離など)において参照され得る。「グローバル変数」は、一時的に数字や文字等を記憶しておくとともに、複数の検査設定を跨いで(全検査設定に共通して)参照可能な変数である。すなわち、画像処理ユニットの処理順序(フローチャート)が複数ある場合に、それら複数の処理順序において共通で参照し得る変数である。「画像変数」は、上述のとおりである。
【0080】
図9に示すように、ユーザは、追加ボタン1015をクリックして、例えば「ローカル変数」として“#kizu”“#size”“#kando”“#seido”を宣言するとともに、レシピ対応欄1016の各チェックボックスをクリックし、これらのローカル変数をレシピ対応にする。これにより、4個のレシピ対応ローカル変数が定義される。このようにして宣言されたレシピ対応ローカル変数は、通常のローカル変数とは意義が異なる。一時的に数字や文字等を記憶しておくとともに、一の検査設定内で参照可能である、という意味においてはローカル変数の範疇に包含される変数であるが、これに加えて、レシピ(品種)に応じて異なる値が代入されるようになっている。なお、変数名の頭についた#は、ローカル変数を意味する接頭子であり、レシピ対応ローカル変数の接頭子も#になっている。
【0081】
そして、これら4個のレシピ対応ローカル変数を、レシピ切り換えを行いたいパラメータと対応付ける(関連付ける)。具体的には、ユーザは、図7に戻って、傷レベルの変数入力欄1011の左側のチェックボックスにチェックを入れると、変数入力欄1011が入力不可能な状態(グレーアウト状態)から入力可能な状態になるので、レシピ対応ローカル変数“#kizu”を入力する。なお、チェックボックスにおけるチェックの有無により変数入力欄1011の入力可否状態をコントロールすることによって、ユーザが誤って変数を入力してしまうミスを防ぐことができる。また、セグメントサイズの変数入力欄1012の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#size”を入力する。そうすると、図10に示すように、レシピ対応ローカル変数“#kizu”及び“#size”が、それぞれパラメータ「傷レベル」及び「セグメントサイズ」と関連付けられる。同様にして、ユーザは、図8に戻って、サーチ感度の変数入力欄1013の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#kando”を入力する。また、サーチ精度の変数入力欄1014の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#seido”を入力する。そうすると、図11に示すように、レシピ対応ローカル変数“#kando”及び“#seido”が、それぞれパラメータ「サーチ感度」及び「サーチ精度」と関連付けられる。このようにして、4個のレシピ対応ローカル変数が、レシピ切り換えを行いたいパラメータと関連付けられる。なお、図10及び図11において、レシピ対応ローカル変数と通常のローカル変数とを混在させてもよい。通常のローカル変数は、一の処理順序(フローチャート)において画像処理ユニット間で受け渡しを行う値が格納される変数であり、レシピ対応ローカル変数は、一の処理順序(フローチャート)において識別情報(レシピ)に応じて異なる値が代入される変数である。このように、画像処理装置1で実行される画像処理プログラムでは、レシピ対応ローカル変数と通常のローカル変数が混在可能となっている。これにより、通常のローカル変数がもつ画像処理ユニットの間での値の受け渡し機能とともに、レシピ対応ローカル変数がもつレシピに応じたパラメータ値の切り換え機能の双方を発揮することができる。
【0082】
次に、ユーザは図6に戻って、「ファイル」の中にある「レシピ保存」ボタン(図示せず)をクリックし、レシピの保存を行う。そうすると、図10及び図11で設定した内容、すなわち#kizu=50、#size=20、#seido=0、#kando=0が格納されたレシピファイル(recipe0000.dat)が生成される。レシピファイルの内容を変更したい場合、すなわちレシピに応じてレシピ対応ローカル変数に代入される値を変更したい場合には、図10又は図11に示すプロパティ設定画面を開き、そのプロパティ設定画面上で所望のパラメータ値を選択し、上述した「レシピ保存」ボタン(図示せず)をクリックしてレシピの保存を行う。これにより、最初にパラメータ値を設定する場合と同様(図7及び図8)、ユーザは整数型(int型)や倍精度浮動小数型(double型)などの属性を気にすることなく、パラメータ値の再設定(修正)を行うことができる。
【0083】
なお、recipe0000.datのファイル名は、システムによって自動的に命名されるファイル名であり、レシピファイルを追加するときには、0000の部分はレシピ番号としてユーザが指定することができる。また、レシピの保存を行う際に、レシピファイルの名称(レシピ名称)を設定することができる。recipe0000.datといったファイル名よりもレシピ名称の方が、ユーザにとって検査対象物の品種を認識しやすい。例えば、画像処理プログラムを最初に作成するユーザと、メンテナンスするユーザが異なる可能性がある場合には、レシピ名称を設定しておき、検査対象物の品種を認識しやすくしておくことができる。具体的には、ユーザは図6に示す「ファイル」の中にある「レシピ名称設定」ボタン(図示せず)をクリックし、図示しないダイアログボックスを開いて、レシピ名称の入力を行う。ここでは、品種0のワークを検査するときにレシピ対応ローカル変数に代入される値が保存されているレシピファイル、という意味で、「ワーク0」という名称を設定する。
【0084】
図12は、PC70の表示部705に表示されるエディタ画面(主要部)の一例であって、生成されたレシピファイル(recipe0000.dat)が表示されている様子を示す図である。図12に示すように、システムビュー1019のタブをクリックすると、ワークスペース内に各種ファイルが表示される。具体的には、図12に示すように、システムビュー1019のワークスペースには、「0000:Oリング外観検査」と「0001:液晶アライメント」の2個の検査設定が表示され、そのうち「0000:Oリング外観検査」については下位層まで表示されている。そのうち、検査設定ファイル“inspect.dat”には、図6に示すフローチャート、フローチャートを構成する各画像処理ユニット(撮像ユニット、傷ユニット、パターンサーチユニット)のパラメータのデフォルト値、図9に示すレシピ対応有無の属性などが保存される。また、「0000:Oリング外観検査」の下位層には、レシピファイル(recipe0000.dat)が生成されている様子が表示され、このレシピファイルには、品種0のワークを検査するときにレシピ対応ローカル変数に代入される値が保存される。また、図12では、レシピファイル(recipe0000.dat)が点線枠で囲まれているが、これは、現在アクティブになっているレシピファイルであることを示している。つまり、この状態で上述したレシピの保存を行うと、現在レシピ対応ローカル変数が関連付けられたパラメータにおいて設定されているパラメータ値(図10及び図11参照)が、品種0のワークを検査するときにレシピ対応ローカル変数に代入される値として保存される。
【0085】
なお、図12に示すエディタ画面は、図6と異なり、最上部に「0000−0000:Oリング外観検査 ワーク0」と表示されているが、ハイフンより前の0000は検査設定フォルダ番号、ハイフンより後ろの0000はレシピ番号、ワーク0はレシピ名称を示している。このように、「ワーク0」というレシピ名称を最上部に表示することによって、メンテナンスを行う際にユーザが品種を認識しやすくなる。なお、ユーザが品種を認識しやすくする観点から、レシピ名称をワークスペース内に表示するようにすることもできる(例えば、「recipe0000.dat」を「recipe0000.dat:ワーク0」等と表示することも可能である)。
【0086】
次に、品種1に対応するパラメータ値として、品種1のワークを検査するときにレシピ対応ローカル変数に代入される値の保存方法について説明する。図13は、レシピ設定のコピー画面例である。ユーザは、図12に示すエディタ画面において、「ファイル」をクリックし、図示しないプルダウンメニューから「レシピ設定のコピー」をクリックし、ポップアップウィンドウでレシピ設定のコピー画面(図13)を表示部705に表示させる。
【0087】
まず、コピー元のレシピ番号1021を選択し、コピー対象となるレシピファイルをプルダウン等により選択する。ここでは、コピー元レシピ番号として、既にパラメータ値を設定しているレシピ番号0を用いる。また、コピー対象となる対象データ1022を、チェックボックスにチェックを入れて選択する。対象データ1022としては、例えばレシピ名称、ロット番号などのレシピ文字列0〜4、登録画像(登録された基準画像)、ワークの位置補正情報となる位置補正基準値、画面表示や演算などに使用する結果データ等を実寸など任意の単位に変換するスケーリング補正設定などが挙げられる。そして、コピー先レシピ番号1023として、開始(終了)レシピ番号或いはコピー回数などを指定した後(ここでは開始(終了)レシピ番号としてレシピ番号1を指定する)、実行ボタン1024をクリックすると、レシピファイル(recipe0000.dat)がコピーされ、レシピファイル(recipe0001.dat)が生成される。
【0088】
図14及び図15は、レシピファイル(recipe0001.dat)が生成され、このレシピファイルがアクティブになっている様子を示す図である。図14は、フロービュー1018のタブがクリックされた状態であり、図15は、システムビュー1019のタブがクリックされた状態である。なお、レシピ名称として今度は「ワーク1」を設定しているため、図14及び図15に示すエディタ画面の最上部には、「0000−0001:Oリング外観検査 ワーク1」と表示されている。また、図14及び図15では、レシピファイル(recipe0001.dat)が点線枠で囲まれているため、このレシピファイルがアクティブになっていることが一目で分かるようになっている。
【0089】
次に、ユーザは、傷ユニット及びパターンサーチユニットのプロパティ設定画面を開き、パラメータ値を変更する。具体的には、ユーザは、傷ユニット及びパターンサーチユニットのプロパティ設定画面を開くと、図10及び図11に示すプロパティ設定画面が表示される。これは、現在アクティブになっているレシピファイル(recipe0001.dat)は、レシピファイル(recipe0000.dat)からコピーしたものだからである。図10に示す傷ユニットについては、検出方向と移動量のパラメータ値としてデフォルト値が表示され、レシピ対応ローカル変数が関連付けられた傷レベル及びセグメントサイズのパラメータ値として、レシピファイル(recipe0000.dat)に保存されている値が読み出され、表示される(#kizu=50、#size=20、#seido=0、#kando=0が表示される)。図11に示すパターンサーチユニットについても同様である。
【0090】
次に、ユーザは、図16及び図17に示すように、#kizu=60、#size=30、#seido=1、#kando=1となるようにパラメータ値を選択することによって、品種1に対応するパラメータ値を設定する。その後、ユーザは、OKボタンをクリックしてプロパティ設定画面を閉じ、図14又は図15に示す「ファイル」の中にある「レシピ保存」ボタン(図示せず)をクリックし、レシピを保存する。これにより、レシピファイル(recipe0001.dat)の内容が更新される。すなわち、#kizu、#size、#seido、#kandoの各レシピ対応ローカル変数に代入される値が、上記の値によって上書きされる。
【0091】
以下同様にして、レシピファイルのコピー、品種に対応するパラメータ値の選択、レシピの保存、という一連の作業を繰り返す。図18は、レシピ0からレシピ3までのレシピファイルに保存された内容のイメージを示す図である。図18に示すように、レシピファイル“recipe0000.dat”には、品種0のワークを検査するときに、レシピ対応ローカル変数“#kizu”に代入される値として50が規定され、レシピ対応ローカル変数“#size”に代入される値として20が規定され、レシピ対応ローカル変数“#kando”に代入される値として0が規定され、レシピ対応ローカル変数“#seido”に代入される値として0が規定されている。他のレシピファイルについても同様である。
【0092】
図19は、品種3に対応するパラメータ値を設定した後、レシピ3のレシピファイルがアクティブになっている様子を示す図である。システムビュー1019のワークスペースでは、レシピファイル“recipe0003.dat”が点線枠で囲まれており、最上部には、「0000−0003:Oリング外観検査 ワーク3」と表示されている。なお、レシピ番号1001を変更することによって、アクティブなレシピファイルを切り換えることもできる。図19ではレシピ番号3がアクティブとなっているが、これを0〜2に切り換えることも可能である。本実施形態では、レシピ番号は0〜3の4種類を切り換えることができるようになっている。
【0093】
次に、パターンサーチユニットの処理内容を実行する際に用いる基準画像について説明する。ユーザは、図19に示すエディタ画面に戻って、「設定」をクリックし、図示しないプルダウンメニューから「画像登録」をクリックし、ポップアップウィンドウで登録画像一覧を表示部705に表示させる。
【0094】
図20は、基準画像として登録された画像一覧を示す図である。図20に示すように、ユーザは、パターンサーチユニットの品種に応じた4個の基準画像(ファイル名は、それぞれ“ref1_000_0000.jpg”“ref1_000_0001.jpg”“ref1_000_0002.jpg”“ref1_000_0003.jpg”)を登録しておき、最右欄のレシピ対応欄1017の各チェックボックスをクリックし、これらの画像をレシピ対応の基準画像にする。
【0095】
そして、基準画像を品種に応じて切り換えたいパターンサーチユニットのプロパティの基準画像設定画面(図示せず)で、パターンサーチの際に用いる基準画像として、下3桁の数字とファイル拡張子を除く“ref1_000”を指定する。そうすると、アクティブとなっているレシピ番号(下3桁で表わされるレシピ番号)に対応した基準画像がパターンサーチに用いられる。具体的に説明すると、レシピ番号0が指定されているときには“ref1_000_0000.jpg”が用いられ、レシピ番号1が指定されているときには“ref1_000_0001.jpg”が用いられ、レシピ番号2が指定されているときには“ref1_000_0002.jpg”が用いられ、レシピ番号3が指定されているときには“ref1_000_0003.jpg”が用いられる。なお、パラメータも基準画像も、レシピ対応有無(つまり、レシピ対応か否か)の属性自体は検査設定ファイル“inspect.dat”内に保存される。
【0096】
図21は、図19に示す状態から更に、4個の基準画像を登録し、レシピ3のレシピファイル(“recipe0003.dat”)及び基準画像(“ref1_000_0003.jpg”)がアクティブになっている様子を示す図である。
【0097】
最後に、PC70上で生成された画像処理プログラム、具体的には、図21のワークスペースに示す検査設定ファイル“inspect.dat”、レシピファイル“recipe0000.dat”〜“recipe0003.dat”、基準画像“ref1_000_0000.jpg”〜“ref1_000_0003.jpg”が、画像処理装置1のコントローラ10に転送された後、画像処理装置1において画像処理プログラムが実行される。
【0098】
以上、図6〜図21を用いて説明したように、ユーザは、PC70において画像処理プログラムを作成する際に、レシピ対応ローカル変数を定義し(図9)、それを傷ユニット及びパターンサーチユニットのパラメータに関連付けることによって(図10、図11)、これらの画像処理ユニットを個別処理ユニットとして指定することができる。同時に、レシピ対応ローカル変数と関連付けられたパラメータは、個別処理ユニットとして指定された傷ユニット及びパターンサーチユニットについて複数の異なるパラメータ値をもつ個別パラメータとして設定されるとともに、個別パラメータの各々のパラメータ値に対し個別処理ユニット間で共通のレシピ番号を関連付けて設定される(図18)。これらの各処理は、ユーザによる入力部704の操作を通じて、フローチャート生成部7011が行う。したがって、フローチャート生成部7011は、パラメータについて、複数の異なるパラメータ値を設定可能な個別パラメータか、或いは、一のパラメータ値を設定可能な共通パラメータかを指定する手段の一例として機能するとともに、個別パラメータの各々のパラメータ値に対し複数の画像処理間で共通の識別情報を関連付けて設定する「第2設定手段」の一例として機能する。
【0099】
[画像処理装置の動作]
図22は、画像処理装置1における画像処理の流れを示すフローチャートである。
【0100】
図22に示すように、まず、画像処理装置1のコントローラ10は、検査用データを受信する(ステップS1)。具体的には、PC70から送られてきた検査用データとして、画像処理ユニットの処理手順を示すフローチャートや各画像処理ユニットの各パラメータのデフォルト値、レシピ対応有無の属性などを含む検査設定ファイル(inspect.dat)、上述したレシピファイル、必要に応じて基準画像などを受信する。受信した検査用データは、検査用データ記憶部102(図4)に記憶される。
【0101】
次に、デフォルトでアクティブになっているレシピ番号(例えばレシピ0)に基づいて、割り付けが行われる(ステップS2)。具体的には、コントローラ10のパラメータセット/基準画像割り付け部103(図4)は、検査用データ記憶部102の中からパラメータ値やレシピ番号などを読み出して、レシピ番号が示すレシピファイルを参照し、そのレシピ番号に応じた値をレシピ対応ローカル変数に代入する。そして、個別処理ユニットとして規定された傷ユニット及びパターンサーチユニットの個別パラメータに対して、レシピ番号に対応したパラメータ値(レシピ対応ローカル変数に代入された値)が割り付けられる。また、傷ユニット及びパターンサーチユニットの個別パラメータ以外のパラメータ(共通パラメータ)に対しては、検査設定ファイルを参照し、レシピ番号によらないパラメータ値(ユーザが設定した一のパラメータ値)が割り付けられる。また、共通処理ユニットとして規定される撮像ユニットのパラメータに対しても同様に、検査設定ファイルを参照し、レシピ番号によらないパラメータ値(ユーザが設定した一のパラメータ値)が割り付けられる。
【0102】
次に、割り付けが成功したか否かが判断される(ステップS3)。パラメータ値の割り付けは通常は成功する可能性が高いが、ユーザのミス等によって失敗することがある。例えば、ユーザが、レシピファイルの一つをPC70からコントローラ10にアップロードし忘れた場合には、参照すべきレシピファイルが存在しないため、レシピ番号に応じた値をレシピ対応ローカル変数に代入することができない。したがって、この場合は、パラメータセット/基準画像割り付け部103において、パラメータ値の割り付け失敗として判断され(ステップS3:NO)、エラー処理が実行される(ステップS5)。エラー処理としては、ユーザに「参照すべきレシピファイルが存在しません。」などの表示をモニタ40上に行うようにしてもよい。
【0103】
一方で、パラメータ値の割り付けが成功した場合には(ステップS3:YES)、画像処理が実行される(ステップS4)。具体的には、画像処理実行部105は、検査用データに含まれるフローチャート、ステップS2で割り付けられたパラメータ値により、処理ユニット記憶部104に記憶された画像処理ユニットの処理内容と協働して、品種0のワークに対する画像処理を実行する。
【0104】
ここで、今まで品種0のワークが流れていたが、連続して、次に品種1のワークが流れてくると仮定する。このとき、外部のPLC60からレシピ切り換えコマンドが送られてくる。図23は、画像処理装置1においてレシピ番号が切り換えられる例を説明するためのフローチャートである。コントローラ10の識別情報受信部101(図4)は、ユーザによって指定された、レシピ切り換えコマンドが示すレシピ番号を受信する(ステップS11)。レシピ番号は、識別情報受信部101によってパラメータセット/基準画像割り付け部103(図4)へ転送される。
【0105】
パラメータセット/基準画像割り付け部103は、識別情報受信部101から転送されるレシピ番号(例えばレシピ0001)を参照し、そのレシピ番号に応じた値をレシピ対応ローカル変数に代入する。そして、個別処理ユニットとして規定された傷ユニット及びパターンサーチユニットの個別パラメータに対して、レシピ番号に対応したパラメータ値(レシピ対応ローカル変数に代入された値)が割り付けられる(ステップS12)。また、傷ユニット及びパターンサーチユニットの個別パラメータ以外のパラメータ(共通パラメータ)に対しては、検査設定ファイルを参照し、レシピ番号によらないパラメータ値(ユーザが設定した一のパラメータ値)が割り付けられる。また、共通処理ユニットとして規定される撮像ユニットのパラメータに対しても同様に、検査設定ファイルを参照し、レシピ番号によらないパラメータ値(ユーザが設定した一のパラメータ値)が割り付けられる。
【0106】
その後、上述したように、割り付けが成功したか否かが判断され(ステップS13)、成功した場合には(ステップS13:YES)、画像処理が実行され(ステップS14)、失敗した場合には(ステップS13:NO)、エラー処理が実行される(ステップS15)。
【0107】
このように、ユーザ又は外部のPLC60などからレシピ切り換えの要求を受けたとき(図23のステップS11)、個別処理ユニットの個別パラメータについて、切り換えたいレシピ番号に対応したパラメータ値が割り付けられた上で(図23のステップS12)、画像処理が実行されるので(図23のステップS14)、フローチャートを1つ作成するだけで、複数の品種に対応することができる。その結果、切換コマンドを画像処理装置1に送るだけの簡易な操作により、ワークの品種に応じたパラメータ値を用いて検査を行うことができ、ひいては使い勝手を向上させることができる。
【0108】
また、画像処理装置1は、複数のフローチャートを入れ換えて品種対応を可能にする画像処理装置と比べて、切り換えの内部処理に掛かる時間を短縮することができる。詳述すると、フローチャートを入れ換えた場合には、フローチャートの初期化に多少の時間が掛かる。例えば初期化処理では、画像処理に用いる基準画像をフラッシュメモリからRAMに予め展開しておいたり、頻繁に使うパラメータをフラッシュメモリからRAMに予め展開しておいたりする。レシピファイルを入れ換えて品種対応を可能にする画像処理装置1では、このような初期化処理をワークの品種が変わる度に行う必要はないため、切り換えの内部処理に掛かる時間を短縮することができる。
【0109】
また、上述した本実施形態では、エディタ画面(UI)上でパラメータ値を設定するようにしたが、これによりユーザの設定ミスを防ぐことができる。仮に、図18に示すファイル群をテキストエディタで別途作成した場合には、“0”(ゼロ)と“O”(オー)の記述ミスなどが発生し、レシピ対応ローカル変数に代入される値を読み込めないエラーが生ずる虞がある。また、変数値の属性にはdouble(倍精度浮動小数型)やint(整数型)などがあるが、属性指定を勘違いした場合には、ユーザが思っていた値と異なる値が入力される虞がある(double型にも拘わらず単に0.1と入力すると、コントローラ10は0.1の近似値が入力されたものとして扱う場合がある)。そこで、エディタ画面(UI)上でパラメータ値を設定するようにすることで、このような設定ミスを防ぐことができる。
【0110】
なお、図23は、PLC60から送られてきたレシピ切り換えコマンドによって、レシピ番号を自動的に切り換えることとしたが、例えばコンソール50を用いて手動でレシピ番号を切り換えることもできる。具体的には、例えば今まで品種0のワークが流れていたが、一旦中断して、次に品種1のワークが流れてくると仮定する。ワークの流れが中断しているときに、ユーザは、レシピ番号を手動で切り換えることができる。
【0111】
図24は、画像処理装置1のモニタ40において、コンソール50を用いてレシピ設定に関する操作を行う画面例を示す図である。ユーザは、コンソール50を操作して、モニタ40上でレシピ切り換えを行う。例えば、ファンクションキーなどから図24(a)に示すレシピ切換画面をモニタ40上に表示させる。そして、切換先となるレシピ番号(例えばレシピ0001)、レシピ名称(例えばワーク1)を指定し、実行ボタンをクリックする。そうすると、コントローラ10の識別情報受信部101(図4)は、ユーザによって指定された、コンソール50の操作信号に基づくレシピ番号を受信する(図23のステップS11)。レシピ番号は、識別情報受信部101によってパラメータセット/基準画像割り付け部103(図4)へ転送される。その後、図23のステップS12〜ステップS15の各処理が実行される。なお、図24(b),図24(c)の詳細については、後述する[メンテナンス方法]で説明する。
【0112】
[メンテナンス方法]
次に、メンテナンス方法について説明する。図25は、メンテナンス内容を示すフローチャートである。図25において、メンテナンス前とメンテナンス後とでは、一部の画像処理ユニットが入れ替わっている(網掛けで示す)。図2を用いて説明したのと同様に、傷ユニットが傷iiユニットに代わり、パターンサーチユニットがパターンサーチiiユニットに代わっている。以下では、このようなメンテナンスをPC70において行う場合について説明する。すなわち、コントローラ10から検査用データをPC70へダウンロードし、PC70のソフトウェアを用いて編集作業(メンテナンス)を行った後、再びコントローラ10へ検査用データをアップロードする。なお、一般に、PC70にはコントローラ10に保存されている検査設定と同期して、同じ検査設定が保存されているため、検査用データをダウンロードしなくても、メンテナンスを行うことは可能である。
【0113】
PC70でプログラム作成支援ソフトウェアを起動した後、コントローラ10から検査用データをPC70へダウンロードした直後のエディタ画面は、例えば図6に示すような画面になる。そして、図25に示すようなメンテナンスを行うため、まず画像処理ユニットの削除・追加を行う。その結果、図26に示すエディタ画面が表示される。そして、フロービュー1018の傷iiユニット上で右クリックをして、プロパティ設定画面を開くと、図27に示すような画面が表示される。このとき、パラメータ「傷レベル」のパラメータ値は50、パラメータ「セグメントサイズ」のパラメータ値は20、パラメータ「移動量」のパラメータ値は8と表示されているが、これは、傷iiユニットのデフォルト値として予め検査設定ファイルに保存されているパラメータ値である。
【0114】
ここで、ユーザは、個別パラメータとして、「傷レベル」にレシピ対応ローカル変数#kizuを入力し、「セグメントサイズ」にレシピ対応ローカル変数#sizeを入力して(図28参照)、パラメータにレシピ対応ローカル変数を関連付ける。他のパラメータ、すなわち検出方向や移動量については、予め定められた数値リストの中から所望の数値を選択することによって、一のパラメータ値を設定する。デフォルト値をそのまま使用する際には、パラメータ値の設定を省略することができる。パターンサーチiiユニットについても同様である。すなわち、図29及び図30に示すように、ユーザは、パターンサーチiiユニットのプロパティ設定画面(図29)において、個別パラメータとして「サーチ感度」にレシピ対応ローカル変数#kandoを関連付け、個別パラメータとして「サーチ精度」にレシピ対応ローカル変数#seidoを関連付ける(図30)。また、他のパラメータについても一のパラメータ値を設定する。
【0115】
このように、ユーザは、PC70においてフローチャートの入れ替えを行った後(図26)、画像処理ユニットのパラメータ値の設定を行うことによって(図27〜図30)、メンテナンスを完了させることができる。メンテナンスが完了すると、検査用データがPC70からコントローラ10へ転送され、画像処理装置1に保存されている検査用データが上書きされ、画像処理装置1の運転が再開される。
なお、図27〜図30を用いて説明したメンテナンス方法では、画像処理ユニットの入れ替えと、画像処理ユニットのパラメータ修正、という編集を行うこととしたが、例えば画像処理ユニットのパラメータ修正、特にレシピファイルのみの編集を行うこともできる。この場合、ユーザは、PC70において、レシピファイルの編集を行う。例えば図16に示すレシピファイルのうち、recipe0001.datにおける#kizuの値(現在値60)を65に変更する場合を考える。
【0116】
ユーザは、PC70において、レシピ番号1001を操作してレシピファイルrecipe0001.datをアクティブにするとともに、傷ユニットのプロパティ設定画面を表示させる(図16参照)。そして、傷レベルのパラメータ値として65を選択することによって、パラメータ値を60から65へ変更する。その後、ユーザは、プロパティ設定画面を閉じ、図14に示す「ファイル」の中にある「レシピ保存」ボタン(図示せず)をクリックし、レシピを保存する。そうすると、recipe0001.datにおける#kizuの値が65になり、品種1のワークを検査するときに、レシピ対応ローカル変数#kizuに代入される値として65が規定される。レシピの保存が終わると、PC70と画像処理装置1を接続し、レシピファイルrecipe0001.datのみの転送を行う。その結果、コントローラ10に保存されているレシピファイルrecipe0001.datが、新たにPC70から転送されたレシピファイルrecipe0001.datによって上書きされ、品種1のワークを検査する際には、傷レベルのパラメータ値として65が割り付けられた上で、画像処理が行われる。
【0117】
なお、以上はPC70においてフローチャートのメンテナンスを行う場合の説明であるが、画像処理装置1のモニタ40上でメンテナンスを行うこともできる。具体的には、モニタ40にフローチャートや画像処理ユニットのプロパティ設定画面を表示させ、コンソール50を用いてメンテナンスを行う。
【0118】
図31は、画像処理装置1のモニタ40においてメンテナンスを行った際の処理の流れを示すフローチャートである。図31において、ユーザは、画像処理装置1の運転を停止させるとともに、コンソール50を操作してモニタ40上にフローチャートや画像処理ユニットのプロパティ設定画面を表示させる。そして、PC70でメンテナンスを行った場合と同様に、ユニットの追加・削除を行い(ステップS21)、パラメータ値の設定(ステップS22)を行う。このとき例えば、扱う品種が増えるような場合には、レシピ設定のコピーを行うことができる。例えば、ユーザはモニタ40上に図24(b)に示す画面を表示させ、コピー元のレシピ番号とコピー先のレシピ番号を指定し、実行ボタンをクリックする。そうすると、図13を用いて説明したときと同様に、コピー先のレシピ番号に対応するレシピファイルが新たに生成される。また、図24(c)に示すように、レシピ名称の変更を行うこともできる。モニタ40においてメンテナンスを行う場合であっても、図27〜図30を用いて説明したのと同様に、一のフローチャート上で必要な編集を行えばよいので、少ない工数でメンテナンスすることができる。なお、図31において、パラメータの設定(ステップS22)が終わると、あとは図22で説明した処理(ステップS2〜ステップS5)と同様である(ステップS23〜ステップS26)。
【0119】
このように、本実施形態に係る画像処理装置1によれば、フローチャートを1つ作成するだけで複数の品種に対応することができるとともに、画像処理ユニットの一部を入れ替えたときであっても、1つのフローチャートについてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、ひいては画像処理装置の使い勝手を向上させることができる。
【0120】
[変形例]
図32及び図33は、本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。上述した本実施形態では、レシピ対応ローカル変数を別途定義した上で、個別処理ユニットの個別パラメータを規定することとしたが(図9参照)、本発明は、必ずしもレシピ対応ローカル変数を別途定義しなくてもよい。具体的には、例えば図32及び図33に示すように、個別処理ユニットのパラメータ設定画面においてレシピ対応にするためのチェックボックスを設けてもよい。これにより、図32及び図33に示す#kizu、#size、#kando、#seidoは、レシピ対応ローカル変数と同様の機能を発揮する変数にすることができる。
【0121】
また、上述した本実施形態では、外部PLC60からレシピ番号を切り換えるレシピ切り換えコマンドが送られてくる場合について説明したが、例えば、検査設定切り換えコマンドが送られてくる場合が混在していてもよい。検査設定切り換えコマンドは、複数ある検査設定の中から、所定の検査設定に切り換えるコマンドである。これにより、画像処理が実行される際に用いられるフローチャート自体が切り換わる。
【0122】
図34は、レシピ切り換えコマンドと検査設定切り換えコマンドとが混在する場合を説明するためのフローチャートである。
【0123】
図34に示すように、コントローラ10の識別情報受信部101(図4)は、外部のPLC60などからコマンドを受信すると(ステップS31)、それがレシピ切り換えコマンドか否かを判断する(ステップS32)。それがレシピ切り換えコマンドである場合には(ステップS32:YES)、識別情報受信部101によって、レシピ番号がパラメータセット/基準画像割り付け部103(図4)へ転送される。その後、ステップS33〜ステップS36までの処理は、図23を用いて説明したステップS12〜ステップS15までの処理と同様である。
【0124】
一方で、コントローラ10の識別情報受信部101(図4)が、受信したコマンドをレシピ切り換えコマンドでないと判断した場合には(ステップS32:NO)、受信したコマンドが検査設定切り換えコマンドか否かを判断する(ステップS37)。検査設定切り換えコマンドである場合には、検査設定の切り換えが行われ(ステップS38)、検査設定切り換えコマンドでない場合には、他のコマンドであると認識して、他の処理が行われる(ステップS39)。
【0125】
このように、画像処理装置1は、受信したコマンドが、識別情報としてレシピを切り換えるコマンドであるか、或いは、画像処理ユニットの処理順序を切り換えるコマンドであるかを識別して判断する機能を有している。すなわち、外部からコマンドを受信したときに、受信したコマンドが(複数ある識別情報のうち一の)識別情報を指定するコマンドであるか、又は、(複数ある画像処理ユニットの処理順序のうち一の)処理順序を指定するコマンドであるかを識別し、識別情報を指定するコマンドである場合には、パラメータ値の割り付けを行う一方、処理順序を指定するコマンドである場合には、処理順序の切り換えを行うことが可能な構成となっている。これにより、これにより、識別情報を指定するコマンドと処理順序を指定するコマンドの双方が画像処理装置1に送られたときであっても、これらのコマンドを正しく認識して、正常に動作することができる。
【0126】
また、上述した実施形態では、レシピ対象としてパラメータと基準画像の2つを説明したが、レシピ対象として位置補正基準値も考えられる(図13参照)。位置補正基準値は、基準画像に対して計測した結果を位置補正の基準の値となるものである。この位置補正基準値も、ワークの品種ごとに異なる値が考えられ、レシピ対象に含めておくことで、少ない工数で位置補正基準値のメンテナンスを行うことができる。
【0127】
以上説明したように、画像処理装置1は、検査対象物の品種に応じたレシピ番号が指定されると、個別パラメータ(傷ユニット及び傷iiユニットの傷レベル及びセグメントサイズ、パターンサーチユニット及びパターンサーチiiユニットのサーチ感度及びサーチ精度)のパラメータ値を、指定されたレシピ番号に対応したパラメータ値に切り換えることができる。したがって、フローチャートを1つ作成するだけで複数の品種に対応することができ、メンテナンスの必要性が生じたときであっても、1つのフローチャートについてのみ編集を行うだけでよく、少ない工数でメンテナンスすることができる。その結果、画像処理装置の使い勝手を向上させることができる。
【0128】
また、図2に示すように、個別処理ユニットとして規定される画像処理ユニットのパラメータには、個別パラメータだけではなく、共通パラメータ(傷ユニットの検出方向、パターンサーチユニットの検出個数など)が混在している。したがって、品種に応じてパラメータ値を切り換える必要のないパラメータについては、一のパラメータ値を設定するだけで全品種に反映させることができ、少ない工数でメンテナンスを完了させることができる。
【符号の説明】
【0129】
1 画像処理装置
10 コントローラ
11 主制御部
12 プログラムメモリ
13 メインメモリ
14 通信部
15 操作入力部
16 画像入力部
17a,17b 画像メモリ
18 画像処理部
19 画像表示部
20 ビデオメモリ
30 カメラ
40 モニタ
50 コンソール
60 PLC
70 PC

【特許請求の範囲】
【請求項1】
一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行される画像処理装置において、
前記パラメータとして、複数の異なるパラメータ値を設定可能な個別パラメータと、一のパラメータ値を設定可能な共通パラメータとが混在するとともに、前記個別パラメータの各々のパラメータ値に対し前記複数の画像処理間で共通の識別情報が関連付けて規定されており、
前記識別情報を指定する手段と、
前記個別パラメータに対して前記識別情報に対応したパラメータ値を割り付ける一方で、前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値を割り付ける割り付け手段と、
前記割り付け手段により割り付けられたパラメータ値を用いて前記複数の画像処理を実行する実行手段と、を備えることを特徴とする画像処理装置。
【請求項2】
前記複数の画像処理には、前記個別パラメータを少なくとも一つ有する個別画像処理と、前記共通パラメータのみ有する共通画像処理とが含まれ、
前記割り付け手段は、前記個別画像処理の前記個別パラメータに対して前記識別情報に対応したパラメータ値を割り付ける一方で、前記共通画像処理の前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値を割り付けることを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記複数の画像処理には、ユーザによって登録された基準画像をパラメータの一つとして用いる画像処理が含まれるとともに、前記個別パラメータには、複数の異なる基準画像を設定可能なパラメータが含まれ、
前記割り付け手段は、前記個別パラメータに対して前記識別情報に対応したパラメータ値及び/又は基準画像を割り付ける一方で、前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値及び/又は基準画像を割り付け、
前記実行手段は、前記割り付け手段により割り付けられたパラメータ値及び/又は基準画像を用いて前記複数の画像処理を実行することを特徴とする請求項1又は2記載の画像処理装置。
【請求項4】
前記識別情報を切り換える切換コマンドを受け付ける手段を備え、
前記割り付け手段は、前記個別パラメータに対して前記切換コマンドにより切り換えられた識別情報に対応したパラメータ値を割り付ける一方で、前記共通パラメータに対して前記切換コマンドにより切り換えられた識別情報によらない前記一のパラメータ値を割り付けることを特徴とする請求項1から3のいずれか記載の画像処理装置。
【請求項5】
一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理を順次実行するための画像処理プログラムのプログラム作成支援装置において、
前記複数の画像処理の処理順序及び前記パラメータ値を設定する第1設定手段と、
前記パラメータについて、複数の異なるパラメータ値を設定可能な個別パラメータか、或いは、一のパラメータ値を設定可能な共通パラメータかを指定する手段と、
前記個別パラメータの各々のパラメータ値に対し前記複数の画像処理間で共通の識別情報を関連付けて設定する第2設定手段と、を備えることを特徴とするプログラム作成支援装置。
【請求項6】
一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行される画像処理装置を用いた画像処理方法において、
前記パラメータとして、複数の異なるパラメータ値を設定可能な個別パラメータと、一のパラメータ値を設定可能な共通パラメータとが混在するとともに、前記個別パラメータの各々のパラメータ値に対し前記複数の画像処理間で共通の識別情報が関連付けて規定されており、
前記識別情報を指定する第1ステップと、
前記個別パラメータに対して前記識別情報に対応したパラメータ値を割り付ける一方で、前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値を割り付ける第2ステップと、
前記第2ステップにより割り付けられたパラメータ値を用いて前記複数の画像処理を実行する第3ステップと、を備えることを特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate


【公開番号】特開2011−43928(P2011−43928A)
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2009−190547(P2009−190547)
【出願日】平成21年8月19日(2009.8.19)
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】