(57)【特許請求の範囲】
【請求項１】
一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行され、当該複数の画像処理の実行結果に基づき検査対象物の良否を判定する画像処理装置において、
前記パラメータの属性として、検査対象物の複数の異なる品種ごとに異なるパラメータ値を設定可能な個別パラメータ、又は、検査対象物の複数の異なる品種に共通して一のパラメータ値を設定可能な共通パラメータのいずれかをユーザが指定可能であり、
前記個別パラメータに設定された各々のパラメータ値に対して検査対象物の品種を識別するための異なる識別情報を対応付けて記憶し、前記共通パラメータに設定された一のパラメータ値を記憶する手段と、
外部からの検査対象物の品種切り換え指示に基づいて、前記識別情報を切り換え指定する手段と、
前記個別パラメータに対して前記切り換え指定された識別情報に対応したパラメータ値を割り付け、前記共通パラメータに対して前記一のパラメータ値を割り付ける割り付け手段と、
前記割り付け手段による割り付けが成功したか否かを判断する判断手段と、
前記判断手段により前記割り付け手段による割り付けが成功したと判断された場合、前記割り付け手段により割り付けられたパラメータ値を用いて前記複数の画像処理を実行する実行手段と、を備えることを特徴とする画像処理装置。
【請求項２】
前記複数の画像処理には、前記個別パラメータを少なくとも一つ有する個別画像処理と、前記共通パラメータのみ有する共通画像処理とが含まれ、
前記割り付け手段は、前記個別画像処理の前記個別パラメータに対して前記識別情報に対応したパラメータ値を割り付ける一方で、前記共通画像処理の前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値を割り付けることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記複数の画像処理には、ユーザによって登録された基準画像をパラメータの一つとして用いる画像処理が含まれるとともに、前記個別パラメータには、複数の異なる基準画像を設定可能なパラメータが含まれ、
前記割り付け手段は、前記個別パラメータに対して前記識別情報に対応したパラメータ値及び／又は基準画像を割り付ける一方で、前記共通パラメータに対して前記識別情報によらない前記一のパラメータ値及び／又は基準画像を割り付け、
前記実行手段は、前記割り付け手段により割り付けられたパラメータ値及び／又は基準画像を用いて前記複数の画像処理を実行することを特徴とする請求項１又は２記載の画像処理装置。
【請求項４】
前記判断手段により前記割り付け手段による割り付けが失敗したと判断された場合、ユーザに対して割り付け失敗を知らせるためのエラー処理が実行されることを特徴とする請求項１から３のいずれか記載の画像処理装置。
【請求項５】
一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行され、当該複数の画像処理の実行結果に基づき検査対象物の良否を判定する画像処理装置を用いた画像処理方法において、
前記パラメータの属性として、検査対象物の複数の異なる品種ごとに複数の異なるパラメータ値を設定可能な個別パラメータ、又は、検査対象物の複数の異なる品種に共通して一のパラメータ値を設定可能な共通パラメータのいずれかをユーザが指定可能であり、
前記個別パラメータに設定された各々のパラメータ値に対して検査対象物の品種を識別するための異なる識別情報を対応付けて記憶し、前記共通パラメータに設定された一のパラメータ値を記憶する記憶ステップと、
外部からの検査対象物の品種切り換え指示に基づいて、前記識別情報を切り換え指定する切り換え指定ステップと、
前記個別パラメータに対して前記切り換え指定された識別情報に対応したパラメータ値を割り付け、前記共通パラメータに対して前記一のパラメータ値を割り付ける割り付けステップと、
前記割り付けステップによる割り付けが成功したか否かを判断する判断ステップと、
前記判断ステップにより前記割り付けステップによる割り付けが成功したと判断された場合、前記割り付けステップにより割り付けられたパラメータ値を用いて前記複数の画像処理を実行する実行ステップと、を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査対象物をカメラ等の撮像手段で撮像して、得られた画像データを用いて計測処理を実行する画像処理装置及びプログラム作成支援装置並びに画像処理方法に関する。
【背景技術】
【０００２】
工場など数多くの生産現場では、人の目視に頼っていた検査を自動化・高速化する画像処理装置が導入されている。画像処理装置は、ベルトコンベア等の生産ラインを流れてくるワークをカメラによって撮像し、得られた画像データを用いて、所定領域のエッジ検出や面積計算などの計測処理を実行する。そして、計測処理の処理結果に基づいて、ワークの欠け検出やアライメントマークの位置検出などの検査を行い、ワークの欠けや位置ずれの有無を判定する判定信号を出力する。このように、画像処理装置は、ＦＡセンサの一つとして利用されることがある。
【０００３】
画像処理装置の中には、実行される画像処理の処理順序が予め決められているパッケージ型のものや、ユーザがパソコン上で作成した所望の処理順序を実行する画像処理プログラムを転送し、思い通りの計測処理を行わせるものなどがある。前者は、予め決められた処理順序でしか画像処理を行うことができないため、画像処理の自由度が制限される一方、後者は、所望の計測処理を行わせるには高度なプログラミングスキルと多大な工数を必要とする。これらの課題を解決する画像処理装置として、画像処理の検査項目一連の処理順序をフローチャートで表示し、そのフローチャート上で、ユーザにより処理順序を変更可能にしたものがある（例えば特許文献１参照）。ユーザが所望の処理順序を実現するためには、例えば、ＰＣ上の専用ソフトウェアによりフローチャート上で処理順序をカスタマイズし、カスタマイズされた処理順序を画像処理装置に実行させるための画像処理プログラムを生成した後、その画像処理プログラムを画像処理装置のコントローラに転送する。
【０００４】
フローチャート上で処理順序をカスタマイズ可能な画像処理装置によれば、高度なプログラミングスキルを必要とすることなく、少ない工数で画像処理の自由度を向上させることができる。また、各画像処理をフローチャートに示す処理順序と同期させて実行することによって、撮像して得られた画像データをメモリへ書き込む、計測処理を実行するために画像データをメモリから読み出す、といった動作が同じタイミングで行われることはなく、メモリ競合の問題を防ぐこともできる。さらに、その処理順序に沿ってデバッグを行うことができ、バグ修正を容易化することもできる。
【０００５】
このような画像処理装置の検査設定では、まず、撮像のような必須の画像処理や、エッジ検出や面積計算など、検査に必要な個別の画像処理を検査項目として選択し、それらを所望の順序（例えば上から下へ順番に）に並べて配置し、処理順序を示すフローチャートを作成する。なお、検査項目の配置を入れ替えることによって、上述したように、フローチャート上で処理順序を変更することができる。次に、各検査項目についてパラメータ値の設定を行う。例えば撮像では、撮像対象カメラやシャッタースピードなどを指定するためのパラメータ値を設定する。また、エッジ検出や面積計算では、ワークの欠けや位置ずれの有無を判定する判定条件などを設定する。さらに、検査項目によっては、パラメータ値の設定に加えて基準画像を設定する。例えば、検査対象物を撮像して得られた画像データの中に特定のパターンが出現するか否か、出現する場合には位置はどこか、を特定するパターンマッチングでは、特定のパターンとして予め基準画像を設定する。このようにして、検査項目の選択・配置によるフローチャートの作成と、各検査項目についてパラメータ値の設定及び必要に応じて基準画像の設定とが終わると、検査設定が完了する。
【０００６】
このような検査設定は、画像処理装置で取り扱う検査対象物の品種が複数ある場合には、品種ごとに別個に行う必要がある。検査対象物の品種が異なれば、検査で正しく判定するための最適なパラメータ値や基準画像が変わってくるからである。例えば、パッキンなどＯリングの切り欠き位置を検出する検査を行う場合において、様々な大きさ（複数の品種）のＯリングに対応するためには、まず、一の品種について検査項目のフローチャートを作成し、各検査項目のパラメータ値を設定する。これにより、一の検査設定が完了する。そして、別の品種については、検査項目のフローチャート及び各検査項目のパラメータ値全てを複製（コピー）し、例えば切り欠き位置を検出するための円周エッジ領域の半径など、品種ごとに異なるパラメータ値を設定する。これにより、上述した一の検査設定とは異なる他の検査設定が完了する。
【０００７】
他にも例えば、液晶基板のアライメント検査を行う場合において、様々なマーキングパターン（複数の品種）を有する液晶基板に対応するためには、上述同様、まず、一の品種について検査項目のフローチャートを作成し、各検査項目のパラメータ値を設定する。これにより、一の検査設定が完了する。そして、別の品種については、検査項目のフローチャート及び各検査項目のパラメータ値全てを複製し、例えばサーチ領域や予め登録されたマーキングパターン（基準画像）など、品種ごとに異なるパラメータ値及び基準画像を設定する。これにより、上述した一の検査設定とは異なる他の検査設定が完了する。
【０００８】
このように、フローチャート上で処理順序をカスタマイズ可能な従来の画像処理装置では、検査対象物の品種に応じた検査設定を繰り返し行うことによって、複数の品種に対応していた。すなわち、ユーザは、検査項目のフローチャート及び各検査項目のパラメータ値を品種の数だけ複製した後、各々のフローチャートについて、品種ごとにパラメータ値や基準画像の変更を行って、パラメータ値や基準画像の異なる複数のフローチャートを作成していた。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０９−２８８５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、フローチャートの複製によって品種の数だけフローチャートが作成されると、フローチャートに一部修正の必要性が生じたときに、多くのメンテナンス工数が掛かってしまう。具体的には、画像処理装置を運用していく過程で、例えば不良品が良品と誤判定されてしまった場合には、ユーザは、検査項目を入れ替えたり、必要な検査項目をフローチャートに追加したり、既に設定されている検査項目のパラメータ値を変更したりと、各種編集作業を行って、誤判定を防ぐ対策を講じなければならない。ところが、上述したように品種の数だけフローチャートが作成されていると、全てのフローチャートについて同じような編集作業を繰り返し行わなければならないため、多くのメンテナンス工数が掛かってしまう。特に、近年、ユーザの品種に関するニーズは多様化しており、画像処理装置で取り扱う品種の数が増大しているため、フローチャートのメンテナンスは非常に手間の掛かる作業となっている。
【００１１】
図３５は、従来の画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。図３５に示すフローチャートは、「撮像」、「第１計測」、「第２計測」の３個の画像処理ユニットから構成されている。また、図３５において、第１計測ユニットは、Ｐ１１，Ｐ１２，Ｐ１３のパラメータを有し、第２計測ユニットは、Ｐ２１，Ｐ２２，Ｐ２３のパラメータを有している。撮像ユニットも、いくつかのパラメータを有しているが、ここでは説明の便宜上、省略する。
【００１２】
図３５に示すように、検査対象物の品種が複数ある場合には、品種ごとにフローチャートを作成する必要がある。ユーザは、まず、品種０についての検査設定を行う。具体的には、撮像ユニット、第１計測ユニット、第２計測ユニットからなるフローチャートを作成する。そして、各画像処理ユニットのパラメータに対し、品種０に最適なパラメータ値を設定する。ただし、各画像処理ユニットにはデフォルト値が規定されており、このデフォルト値をそのまま使う場合には特に設定を行う必要はない。ここでは、デフォルト値がＰ１１＝０、Ｐ１２＝０、Ｐ１３＝０、Ｐ２１＝０、Ｐ２２＝０、Ｐ２３＝０と設定されているものとする。これにより、一つの検査設定が完了し、この検査設定は保存される。
【００１３】
次に、品種１用の検査設定を行う場合には、品種０用の検査設定（フローチャートと各パラメータ値）をコピーする。そして、各画像処理ユニットのパラメータに対し、品種１に最適なパラメータ値を設定する。ここではＰ１１とＰ２１に変更はないが（デフォルト値のまま）、Ｐ１２＝１、Ｐ１３＝１、Ｐ２２＝１、Ｐ２３＝１と変更したとする。同様にして、品種２用の検査設定を行う場合には、再度、品種０用の検査設定をコピーし、必要に応じて、品種２に最適なパラメータ値（Ｐ１２＝２、Ｐ１３＝２、Ｐ２２＝２、Ｐ２３＝２）を設定し、検査設定を保存する。以下、品種３、品種４、品種５、・・・と、これらの作業を繰り返す。このように、従来の画像処理装置では、品種に応じた検査設定を繰り返し行うことによって、複数の品種に対応することができる。
【００１４】
ここで、図３５（ａ）→図３５（ｂ）に示すように、画像処理ユニットの一部を入れ替えるメンテナンスを行う必要性が生じたとする。これは、画像処理装置を運用していく過程で、最適な検査を行うために他の画像処理ユニットを使いたいときや、既存の画像処理ユニットの機能拡張（改良）などが行われ、その機能拡張版画像処理ユニットを使いたいときなどが想定される。図３５（ｂ）において、「第１計測ii」及び「第２計測ii」は、それぞれ「第１計測」及び「第２計測」に改良を加えた画像処理ユニットである。なお、第１計測iiユニットのパラメータは、第１計測ユニットと共通するパラメータ（Ｐ１１，Ｐ１２，Ｐ１３）と、第１計測ユニットにはない新規なパラメータ（Ｐ１４）とがあり、また、第２計測iiユニットのパラメータも、第２計測ユニットと共通するパラメータ（Ｐ２１，Ｐ２２，Ｐ２３）と、第２計測ユニットにはない新規なパラメータ（Ｐ２４）とがある。
【００１５】
まずユーザは、画像処理装置に保存されている品種０用の検査設定を呼び出し、第１計測ユニットと第２計測ユニットを削除する。そして、撮像ユニットの直下に、第１計測iiユニット、第２計測iiユニットが、この順で配置されるように追加する。また、品種０用の検査設定における第１計測iiユニット、第２計測iiユニットのパラメータについては、第１計測ユニット、第２計測ユニットと同様にデフォルト値を使うものとする。次に、品種１の検査設定をメンテナンスするにあたっては、品種１用の検査設定を呼び出し、上述同様、第１計測ユニット及び第２計測ユニットの削除、第１計測iiユニット及び第２計測iiユニットの追加を行う。
【００１６】
ここで、第１計測iiユニット、第２計測iiユニットのパラメータのうち、第１計測ユニット、第２計測ユニットと共通するパラメータ（Ｐ１２，Ｐ１３，Ｐ２２，Ｐ２３）については、図３５（ａ）と同様に、品種１に最適なパラメータ値を設定したい場合がある。この場合、ユーザは、Ｐ１２＝１、Ｐ１３＝１、Ｐ２２＝１、Ｐ２３＝１と変更する設定を行う。したがって、品種１の検査設定をメンテナンスするにあたって、ユーザの修正が必要な箇所は、第１計測iiユニットの追加と第２計測iiユニットの追加に加えて、品種に応じて異なるパラメータ値（Ｐ１２，Ｐ１３，Ｐ２２，Ｐ２３のパラメータ値）の設定となる。同様にして、品種２用の検査設定をメンテナンスするにあたっても、ユーザは、品種２用の検査設定を呼び出し、第１計測iiユニット及び第２計測iiユニットを追加し、品種２に最適なパラメータ値（Ｐ１２＝２、Ｐ１３＝２、Ｐ２２＝２、Ｐ２３＝２）を設定する。以下、品種３、品種４、品種５、・・・についても、これらの作業を繰り返す。
【００１７】
このように、従来の画像処理装置では、後々にメンテナンスを行う際に、品種の数が多ければ多いほど煩雑な編集作業が必要になり、メンテナンスに多大な工数が掛かっていた。なお、図３５（ｂ）では、品種に応じて値が異なるパラメータ値の設定のみに着目したが、品種が変わっても値が変化しないパラメータ値の設定をしなければならない場合には、尚更煩雑になる。例えば、第２計測iiユニットで新規に追加されたパラメータ（Ｐ２４）に着目し、デフォルト値（Ｐ２４＝０）ではなく、所望の値（Ｐ２４＝１など）に変更しようとする。この場合、上述した編集作業に加えて、品種０用の検査設定を呼び出したときにＰ２４＝１を設定し、品種１用の検査設定を呼び出したときにＰ２４＝１を設定し、品種２用の検査設定を呼び出したときにＰ２４＝１を設定し、・・・というように、同様の設定を繰り返し行う必要があり、これも、品種の数が多ければ多いほど煩雑な編集作業となる。
【００１８】
この点、例えば特開２００２−２５１６０３号公報（段落［００７６］〜［００８０］）には、フローチャートを構成する画像処理サブルーチンとして、パラメータ値の異なる複数種類の画像処理サブルーチン候補を用意しておき、実際に各画像処理サブルーチン候補を実行してみて、その実行結果に基づいて、ユーザが一の画像処理サブルーチン候補を選択し、それをフローチャートに追加する、という画像処理プログラム作成方法が開示されている。この画像処理プログラム作成方法によれば、品種ごとにパラメータ値を変更しようとしたとき、ユーザは、所望のパラメータ値が設定された画像処理サブルーチン候補を選択するだけで、新たなフローチャートを作成・保存することができる。
【００１９】
しかし、この画像処理プログラム作成方法によっても上述したメンテナンス性の問題は解決困難である。すなわち、複数の品種に対応させるために、ユーザは、まず、第一の品種に最適なパラメータ値が設定された画像処理サブルーチン候補を（必要に応じていくつか）選択し、その第一の品種に最適な一又は複数の画像処理サブルーチンからなるフローチャートを作成・保存し、次に、第二の品種に最適なパラメータ値が設定された画像処理サブルーチン候補を（必要に応じていくつか）選択し、その第二の品種に最適な一又は複数の画像処理サブルーチンからなるフローチャートを作成・保存し、以後、第三の品種以降についても同様に、それぞれフローチャートを作成・保存していく必要がある。そうすると、結局のところ、フローチャートに一部修正の必要性が生じたときに、品種の数だけ作成されたフローチャートについて編集作業を行わなくてはならないため、多くのメンテナンス工数が掛かってしまう。
【００２０】
本発明は、以上の点に鑑みてなされたものであり、その目的は、複数の品種に対応することが可能であり、かつ、例えば画像処理ユニットの入れ替えや追加、画像処理ユニットのパラメータ値の修正などの編集の必要性が生じたときであっても、複数のフローチャートについて編集作業を行う必要がなく、少ない工数でメンテナンスでき、ひいては使い勝手を向上させることが可能な画像処理装置及びプログラム作成支援装置並びに画像処理方法を提供することにある。
【課題を解決するための手段】
【００２１】
本発明に係る画像処理装置は、一又は複数のパラメータを有し、当該パラメータに対してユーザが設定したパラメータ値が割り付けられる複数の画像処理が順次実行され、当該複数の画像処理の実行結果に基づき検査対象物の良否を判定する画像処理装置において、パラメータの属性として、検査対象物の複数の異なる品種ごとに異なるパラメータ値を設定可能な個別パラメータ、又は、検査対象物の複数の異なる品種に共通して一のパラメータ値を設定可能な共通パラメータのいずれかをユーザが指定可能であり、個別パラメータに設定された各々のパラメータ値に対して検査対象物の品種を識別するための異なる識別情報を対応付けて記憶し、共通パラメータに設定された一のパラメータ値を記憶する手段と、外部からの検査対象物の品種切り換え指示に基づいて、識別情報を切り換え指定する手段と、個別パラメータに対して切り換え指定された識別情報に対応したパラメータ値を割り付け、共通パラメータに対して一のパラメータ値を割り付ける割り付け手段と、割り付け手段による割り付けが成功したか否かを判断する判断手段と、判断手段により割り付け手段による割り付けが成功したと判断された場合、割り付け手段により割り付けられたパラメータ値を用いて複数の画像処理を実行する実行手段と、を備える。
【００２２】
このような構成によれば、複数の画像処理間で共通の識別情報が指定され、個別パラメータに対してその識別情報に対応したパラメータ値が割り付けられ、共通パラメータに対してその識別情報によらない一のパラメータ値が割り付けられた上で、複数の画像処理が実行されるので、例えばユーザ又は外部ＰＬＣ等からのコマンドにより検査対象物の品種に応じた識別情報を指定することによって、個別パラメータのパラメータ値が品種に応じたパラメータ値に切り換わる。その結果、画像処理ユニットの処理順序を１つ作成するだけで複数の品種に対応することができ、例えば画像処理ユニットの入れ替えや追加、画像処理ユニットのパラメータ修正など編集の必要性が生じたときであっても、１つの処理順序についてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、ひいては画像処理装置の使い勝手を向上させることができる。
【００２３】
ここで、画像処理装置は、複数の画像処理には、個別パラメータを少なくとも一つ有する個別画像処理と共通パラメータのみ有する共通画像処理とが含まれ、割り付け手段は、個別画像処理の個別パラメータに対して識別情報に対応したパラメータ値を割り付ける一方で、共通画像処理の共通パラメータに対して識別情報によらない一のパラメータ値を割り付けるような構成としてもよい。これにより、上述した個別画像処理と共通画像処理とが混在する場合に、個別画像処理の個別パラメータに対して検査対象物の品種に応じたパラメータ値を割り付ける一方で、共通画像処理の共通パラメータに対して検査対象物の品種が変わっても値が不変の一のパラメータ値を割り付けることができ、少ない工数でメンテナンスが可能となるので、画像処理装置の使い勝手を向上させることができる。
【００２４】
また、画像処理装置は、複数の画像処理には、ユーザによって登録された基準画像をパラメータの一つとして用いる画像処理が含まれるとともに、個別パラメータには、複数の異なる基準画像を設定可能なパラメータが含まれ、割り付け手段は、個別パラメータに対して識別情報に対応したパラメータ値及び／又は基準画像を割り付ける一方で、共通パラメータに対して識別情報によらない一のパラメータ値及び／又は基準画像を割り付け、実行手段は、割り付け手段により割り付けられたパラメータ値及び／又は基準画像を用いて複数の画像処理を実行するような構成としてもよい。これにより、ユーザは識別情報を指定することによって、個別パラメータとして設定される基準画像も品種に応じて切り換えることができるので、基準画像を用いて処理内容を実行する画像処理ユニットの入れ替えや追加、パラメータ修正などのメンテナンスを行う際は、品種に応じて基準画像を切り換える設定を簡易に行うことができ、ひいては少ない工数でメンテナンスを行うことができる。
【００２５】
また、画像処理装置は、識別情報を切り換える切換コマンドを受け付ける手段を備え、割り付け手段は、個別パラメータに対して切換コマンドにより切り換えられた識別情報に対応したパラメータ値を割り付ける一方で、共通パラメータに対して切換コマンドにより切り換えられた識別情報によらない一のパラメータ値を割り付けるような構成としてもよい。ここでいう「切換コマンド」は、複数ある検査設定（画像処理の複数種類の処理順序）を切り換えるコマンド等ではなく、本発明における「識別情報」を切り換えるコマンドを意味する。このような切換コマンドを外部から受け付けると、画像処理の個別パラメータに対して、切換コマンドにより切り換えられた識別情報に対応したパラメータ値が割り付けられる。したがって、ユーザは、外部ＰＬＣ等を用いて切換コマンドを画像処理装置に送るだけの簡易な操作により、検査対象物の品種に応じたパラメータ値を用いて検査を行うことができ、ひいては使い勝手を向上させることができる。
【発明の効果】
【００２６】
以上説明したように、本発明によれば、画像処理ユニットの処理順序を１つ作成するだけで複数の品種に対応することができるようになり、画像処理ユニットの処理順序や画像処理ユニットに対するパラメータなどに修正の必要性が生じたときであっても、その１つの処理順序についてのみ編集を行えばよいので、少ない工数でメンテナンスすることができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態に係る画像処理装置の概略構成例を示す図である。
【図２】本発明の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図３】本実施形態に係る画像処理装置におけるコントローラのハードウェア構成例を示すブロック図である。
【図４】本実施形態に係る画像処理装置におけるコントローラの機能構成例を示すブロック図である。
【図５】本実施形態に係るプログラム作成支援装置としてのＰＣの機能構成例を示すブロック図である。
【図６】ＰＣの表示部に表示されるエディタ画面（主要部）の一例を示す図である。
【図７】傷ユニットのプロパティ設定画面の一例を示す図である。
【図８】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図９】変数設定画面の一例を示す図である。
【図１０】傷ユニットのプロパティ設定画面の一例を示す図である。
【図１１】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図１２】ＰＣの表示部に表示されるエディタ画面（主要部）の一例であって、レシピファイルが表示されている様子を示す図である。
【図１３】レシピ設定のコピー画面例を示す図である。
【図１４】レシピファイルが自動生成され、このレシピファイルがアクティブになっている様子を示す図である。
【図１５】レシピファイルが自動生成され、このレシピファイルがアクティブになっている様子を示す図である。
【図１６】傷ユニットのプロパティ設定画面の一例を示す図である。
【図１７】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図１８】レシピ０からレシピ３までのレシピファイルに保存された内容のイメージを示す図である。
【図１９】品種３に対応するパラメータ値を設定した後、レシピ３のレシピファイルがアクティブになっている様子を示す図である。
【図２０】基準画像として登録された画像一覧を示す図である。
【図２１】４個の基準画像を登録し、レシピ３のレシピファイル及び基準画像がアクティブになっている様子を示す図である。
【図２２】画像処理装置における画像処理の流れを示すフローチャートである。
【図２３】画像処理装置においてレシピ番号が切り換えられる例を説明するためのフローチャートである。
【図２４】画像処理装置のモニタにおいて、コンソールを用いてレシピ設定に関する操作を行う画面例を示す図である。
【図２５】メンテナンス内容を示すフローチャートである。
【図２６】ＰＣの表示部に表示されるエディタ画面（主要部）の一例を示す図である。
【図２７】傷ユニットのプロパティ設定画面の一例を示す図である。
【図２８】傷ユニットのプロパティ設定画面の一例を示す図である。
【図２９】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図３０】パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【図３１】メンテナンスを行った際の画像処理装置の動作の流れを示すフローチャートである。
【図３２】本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図３３】本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【図３４】レシピ切り換えコマンドと検査設定切り換えコマンドとが混在する場合を説明するためのフローチャートである。
【図３５】従来の画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施の形態に係る画像処理装置について、図面に基づいて具体的に説明する。
【００２９】
［概略］
図１は、本発明の実施の形態に係る画像処理装置１の概略構成例を示す図である。図１に示すように、画像処理装置１は、エッジ検出や面積計算などの計測処理を実行するコントローラ１０と、検査対象物を撮像する３台のカメラ３０ａ，３０ｂ，３０ｃと、液晶パネル等のモニタ４０と、ユーザがモニタ４０上で各種操作するためのコンソール５０と、を有している。カメラ３０ａ，３０ｂ，３０ｃ、モニタ４０、及びコンソール５０は、コントローラ１０と着脱可能に接続される。コントローラ１０は、カメラ３０ａ，３０ｂ，３０ｃから得られた画像データを用いて画像処理を実行し、外部接続されたＰＬＣ６０に対し、ワークの良否などの判定結果を示す信号として判定信号を出力する。
【００３０】
３台のカメラ３０ａ，３０ｂ，３０ｃは、ＰＬＣ６０から入力される制御信号、例えばカメラ３０ａ，３０ｂ，３０ｃから画像データを取り込むタイミングを規定する撮像トリガ信号に基づいて、検査対象物の撮像を行う。モニタ４０は、検査対象物を撮像して得られた画像データや、その画像データを用いた計測処理の結果を表示するための表示装置である。一般に、ユーザはモニタ４０を視認することによって、画像処理装置１が運転中である場合のコントローラ１０の動作状態を確認することができる。コンソール５０は、モニタ４０上でフォーカス位置を移動させたり、メニュー項目を選択したりするための入力装置である。特に、後述するように、本実施形態では、コンソール５０は検査対象物の品種に応じた識別情報を入力するための入力装置にもなる。
【００３１】
また、画像処理装置１のコントローラ１０には、画像処理装置１の画像処理プログラム（制御プログラム）を生成するためのＰＣ７０が接続されており、このＰＣ７０上で動作するソフトウェアによって、画像処理ユニットの処理順序を規定する画像処理プログラムが生成される（詳細については後述する）。画像処理装置１では、その処理順序に沿って各画像処理ユニットが順次実行される。ＰＣ７０とコントローラ１０とは、通信ネットワークを介して接続されており、ＰＣ７０上で生成された画像処理プログラムは、モニタ４０の表示態様を規定するレイアウト情報などとともにコントローラ１０に転送される。また逆に、コントローラ１０から画像処理プログラムやレイアウト情報などを取り込んで、ＰＣ７０上で編集することもできる。
【００３２】
図２は、本発明の実施の形態に係る画像処理装置１におけるメンテナンス方法の概略を説明するための説明図である。メンテナンスの流れとしては、まずユーザが画像処理装置１で実行される画像処理プログラムを作成し、その画像処理プログラムを画像処理装置１に転送して運用を開始した後、一部の画像処理ユニットの追加／削除やパラメータ値の設定し直しなどのメンテナンスを行う、という流れである。図２（ａ）は、画像処理装置１で実行される画像処理プログラムの作成について示しており、図２（ｂ）は、傷ユニットとパターンサーチユニットを削除し、傷iiユニットとパターンサーチiiユニットを追加するとともに、必要に応じてパラメータ値を設定し直す、というメンテナンスについて示している。なお、ここでは、図２（ａ）に示す画像処理プログラムの作成と、図２（ａ）から図２（ｂ）へのメンテナンスは、画像処理装置１に接続されたＰＣ７０において行うものとする。
【００３３】
図２（ａ）に示すフローチャートは、「撮像」、「傷」、「サーチ」（図２では、「パターンサーチ」を「サーチ」と略す）の３個の画像処理ユニットから構成されており、ユーザがＰＣ７０或いはモニタ４０の画面上で（モニタ４０の画面上の場合はコンソール５０を使用して）作成し得るものである。また、図２（ａ）においては、傷ユニットのパラメータの一部として、検出方向，傷レベル，セグメントサイズの各パラメータを有しており（各パラメータの詳細は後述）、パターンサーチユニットのパラメータの一部として、検出個数，サーチ感度，サーチ精度の各パラメータを有している（各パラメータの詳細は後述）。撮像ユニットも、いくつかのパラメータを有しているが、ここでは説明の便宜上、省略する。なお、撮像ユニットは、カメラ３０ａ，３０ｂ，３０ｃから傷ユニット及びパターンサーチユニットの計測処理で用いる画像データを取り込む処理を実行するためのユニットであり、傷ユニットは、検査対象物の傷や汚れの位置を検知する処理を実行するためのユニットであり、サーチユニットは、特定のパターンとして予め登録しておいた基準画像に最も似ている部分を入力画像の中から検出する処理を実行するためのユニットである。
【００３４】
まず、図２（ａ）に示すように、ユーザは、ＰＣ７０の表示画面において、検査対象物（ワーク）の品種が複数ある場合であっても、品種ごとに別々のフローチャートを作成する必要はない。ユーザは、まず撮像ユニット、傷ユニット、パターンサーチユニットからなるフローチャートを１つ作成する。また、フローチャートの作成過程において、各画像処理ユニットのパラメータに対し、画像処理装置１において画像処理が実行される際に割り付けられるパラメータ値の設定を行う。
【００３５】
本実施形態では、傷ユニットとパターンサーチユニットについて、検査対象となるワークの品種ごとにパラメータ値が変わらない共通パラメータ（傷ユニットの検出方向及びパターンサーチユニットの検出個数）と、検査対象となるワークの品種ごとにパラメータ値が異なる個別パラメータ（傷ユニットの傷レベルとセグメントサイズ、パターンサーチユニットのサーチ感度とサーチ精度）とが混在している。
【００３６】
共通パラメータについては、検査対象となるワークの品種ごとにパラメータ値が変わらないため、ユーザは、一のパラメータ値を設定する。図２（ａ）では、傷ユニットの検出方向及びパターンサーチユニットの検出個数について、それぞれ円周及び１が設定されている。
【００３７】
一方で、個別パラメータについては、検査対象となるワークの品種ごとにパラメータ値が異なるように、ユーザは、品種に応じてパラメータ値が切り換わるような設定を行う。図２（ａ）に示すように、例えば個別パラメータに予め定義した変数を関連付け、その変数には、品種に応じて異なる値が代入されるようにする。図２（ａ）では、傷レベルに変数#kizuを関連付け、セグメントサイズに変数#sizeを関連付け、サーチ感度に変数#kandoを関連付け、サーチ精度に変数#seidoを関連付けている。また、変数#kizuについては、品種０のワークを検査する際には５０が代入され、品種１のワークを検査する際には６０が代入され、品種２のワークを検査する際には７０が代入されるようにしている（品種３以降についても同様）。また、変数#size，#kando，#seidoについても同様に、それぞれ、品種０のワークを検査する際には２０，０，０が代入され、品種１のワークを検査する際には３０，１，１が代入され、品種２のワークを検査する際には４０，２，２が代入されるようにしている（品種３以降については省略）。このような設定を行うことにより、変数に代入される値は、例えば図２（ａ）に示すような品種ごとのファイル（レシピファイル）に纏めることができる。
【００３８】
ユーザは、以上の設定が完了すると、図２（ａ）に示す設定内容をＰＣ７０から画像処理装置１に転送し、複数の品種を有するワークについて画像処理を実行する。このとき、画像処理装置１のコントローラ１０において、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。なお、コントローラ１０は、コンソール５０を用いたユーザの指示により、或いは、ＰＬＣ６０からのコマンドにより、どの品種のワークを検査するかを認識する。
【００３９】
画像処理装置１の運転中に、外部からワークの品種切り換えを示す指示又はコマンドが送られてくると、コントローラ１０は、パラメータ値の割り付けをし直す。具体的には、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。このようにして、画像処理装置１は、共通パラメータについては、品種によらない共通のパラメータ値を割り付け、個別パラメータについては、品種に対応したパラメータ値を割り付けることによって、複数の品種のワークに対応することができるようになっている。
【００４０】
ここで、図２（ａ）→図２（ｂ）に示すように、画像処理ユニットの一部を入れ替えてメンテナンスを行う必要性が生じたとする。このときユーザは、例えばコンソール５０を操作して、画像処理装置１の運転を停止する。その後、図２（ａ）に示すフローチャートやレシピファイルなどをコントローラ１０からＰＣ７０に転送し、ＰＣ７０の表示画面に、図２（ａ）に示すフローチャートを表示させる。そして、傷ユニットとパターンサーチユニットを削除した後、傷iiユニット、パターンサーチiiユニットを追加する。また、フローチャートの編集過程において、各画像処理ユニットのパラメータに対し、次に画像処理装置１において画像処理が実行される際に割り付けられるパラメータ値の設定を行う。
【００４１】
図２（ｂ）に示すフローチャートでも、図２（ａ）に示すフローチャートと同様に、傷iiユニットとパターンサーチiiユニットについて共通パラメータと個別パラメータとを混在させており、傷iiユニットの検出方向及び新規なパラメータ「間引き方法」、パターンサーチiiユニットの検出個数及び新規なパラメータ「サーチ高速化」を、それぞれ共通パラメータとして規定し、傷iiユニットの傷レベルとセグメントサイズ、パターンサーチiiユニットのサーチ感度とサーチ精度を、それぞれ個別パラメータとして規定している。なお、「間引き方法」は欠陥を検出する際の精度を調整するためのパラメータであり、「サーチ高速化」は処理速度を調整するためのパラメータである。
【００４２】
共通パラメータについては、上述同様、一のパラメータ値を設定する。図２（ｂ）に示すように、傷iiユニットの検出方向及びパターンサーチiiユニットの検出個数については、図２（ａ）と同じくそれぞれ円周及び１が設定されている。また、傷iiユニットの新規なパラメータ「間引き方法」及びパターンサーチiiユニットの新規なパラメータ「サーチ高速化」については、それぞれオート及びＯＦＦが設定されている。一方、個別パラメータについては、品種に応じてパラメータ値が切り換わるような設定を行う。ここでは図２（ｂ）に示すように、傷iiユニットの傷レベル及びセグメントサイズ、パターンサーチiiユニットのサーチ感度及びサーチ精度について、それぞれ、例えば個別パラメータに図２（ａ）で定義した変数#kizu，#size，#kando，#seidoを関連付ける。そうすると、図２（ａ）を用いて説明したように、変数#kizu，#size，#kando，#seidoには、品種に応じて異なる値が代入されるように構成されているため、個別パラメータに変数を関連付けるだけで、個別パラメータについて検査対象となるワークの品種ごとにパラメータ値を切り換えることができる。以上のメンテナンスが終了すると、ユーザは、図２（ｂ）に示すフローチャートやレシピファイルなどをＰＣ７０から画像処理装置１へ転送し、画像処理装置１の運転を再開する。このとき、画像処理装置１のコントローラ１０において、共通パラメータについては、ユーザが設定した一のパラメータ値が割り付けられ、個別パラメータについては、品種に応じて変数に代入された値が割り付けられる。
【００４３】
このように、本実施形態に係る画像処理装置１は、傷ユニット及び傷iiユニット並びにパターンサーチユニット及びパターンサーチiiユニットを個別処理ユニット（個別画像処理の一例に相当）として規定し、これらの個別処理ユニットについて、共通パラメータと個別パラメータとを混在させている。そして、共通パラメータについては、検査対象となるワークの品種ごとにパラメータ値が変わらないように構成し、個別パラメータについては、品種に応じてパラメータ値が切り換わるような構成にしている。したがって、画像処理ユニットの一部を追加・削除するような編集を行った場合であっても、図２（ｂ）を用いて説明したように、一のフローチャートについてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、使い勝手を向上させることができる。
【００４４】
以上説明したように、画像処理装置１には、予め処理内容が規定され、ユーザにより設定可能な一又は複数のパラメータからなるパラメータセットに従って処理内容を実行する複数の画像処理ユニットが記憶されている。また、画像処理ユニットが共通処理ユニット又は個別処理ユニットとして規定されており、個別処理ユニットとして規定された画像処理ユニットについて複数の異なるパラメータ値をもつ個別パラメータが少なくとも一つ含まれるように規定されており、個別パラメータの各々のパラメータ値に対し個別処理ユニット間で共通の識別情報を関連付けて規定された画像処理プログラムが、設定され又は受け付けられる。そして、外部からワークの品種切り換えを示す指示又はコマンドが送られて、識別情報が指定されると、個別パラメータに対して識別情報に対応したパラメータ値が割り付けられ、共通パラメータに対して識別情報によらないパラメータ値が割り付けられて、画像処理プログラムで規定された画像処理ユニットの処理順序及び割り付けられたパラメータ値により画像処理ユニットの処理内容と協働して画像処理が実行される。
【００４５】
以下、本発明の実施の形態に係る画像処理装置１及びプログラム作成支援装置の一例となるＰＣ７０について、詳細に説明する。
【００４６】
［ハードウェア構成］
図３は、本実施形態に係る画像処理装置１におけるコントローラ１０のハードウェア構成例を示すブロック図である。図３に示すように、画像処理装置１におけるコントローラ１０は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウェア各部の制御を行うＣＰＵなどの主制御部１１と、起動プログラムや初期化プログラムなどが格納されたＲＯＭ，フラッシュＲＯＭ，ＥＥＰＲＯＭなどのプログラムメモリ１２と、ＣＰＵ１１が各種プログラムを実行する際のワークエリアとして機能するＲＡＭなどのメインメモリ１３と、外部のＰＬＣ６０やＰＣ７０などと通信可能に接続される通信部１４と、コンソール５０からの操作信号が入力される操作入力部１５と、を有している。
【００４７】
また、画像処理装置１は、カメラ３０ａ〜カメラ３０ｃでの撮像により得られた画像データを取り込むＡＳＩＣなどの画像入力部１６と、画像データをバッファリングする画像メモリ（フレームバッファ）１７ａと、エッジ検出や面積計算などの計測処理を実行するＤＳＰなどの画像処理部１８と、計測処理用に画像データを記憶する画像メモリ（ワークメモリ）１７ｂと、液晶パネル等のモニタ４０に対して画像を表示させるＤＳＰなどの画像表示部１９と、画像を表示させる際に画像データを一時記憶するＶＲＡＭなどのビデオメモリ２０と、を有している。そして、これらの各ハードウェアは、バス等の電気配線を介して通信可能に接続されている。
【００４８】
プログラムメモリ１２には、画像入力部１６、画像処理部１８、及び画像表示部１９、並びに、通信部１４及び操作入力部１５の各部を、主制御部１１により制御するための装置制御プログラムが格納されている。また、本実施形態では、ＰＣ７０において生成され、ＰＣ７０から転送されてきた画像処理プログラムは、プログラムメモリ１２に格納されるようにしている。勿論、メインメモリ１３に格納されるようにすることもできる。
【００４９】
メインメモリ１３、画像メモリ１７ａ，１７ｂ、ビデオメモリ２０は、ＳＲＡＭやＳＤＲＡＭ等の揮発性メモリで構成されており、コントローラ１０で別個独立したメモリとして設けられている。なお、不揮発性メモリを用いることもできるし、一個のメモリの記憶領域を切り分けて各メモリを構成することもできる。
【００５０】
通信部１４は、外部のＰＬＣ６０に接続されたセンサ（光電センサ等）でトリガ入力があったときに、ＰＬＣ６０から撮像トリガ信号を受信するインターフェース（Ｉ／Ｆ）として機能する。また、ＰＣ７０から転送されてくる画像処理装置１の画像処理プログラムやモニタ４０の表示態様を規定するレイアウト情報などを受信するインターフェース（Ｉ／Ｆ）としても機能する。
【００５１】
主制御部１１は、通信部１４を介してＰＬＣ６０から撮像トリガ信号を受信すると、画像入力部１６に対して撮像指令を送る。なお、撮像トリガ信号は、カメラ３０ａ〜カメラ３０ｃのいずれか一のカメラに対する撮像トリガになる場合もあるし、カメラ３０ａ〜カメラ３０ｃの全部のカメラに対する撮像トリガになる場合もある。したがって、主制御部１１から画像入力部１６へ送られる撮像指令も、カメラ３０ａ〜カメラ３０ｃのいずれか一の撮像指令になる場合もあるし、カメラ３０ａ〜カメラ３０ｃの全部の撮像指令になる場合もある。なお、撮像トリガ信号を生成する装置として、ＰＬＣ６０ではなく、光電センサなどのトリガ入力用のセンサを通信部１４に直接接続することもできる。
【００５２】
操作入力部１５は、コンソール５０からの操作信号を受信するインターフェース（Ｉ／Ｆ）として機能する。なお、コンソール５０には、モニタ４０上に表示されるカーソルを上下左右に移動させる十字キー、決定ボタン、又はキャンセルボタンなどの各部品が配置されている。これらの各部品を操作することによって、ユーザはモニタ４０上でフローチャートを作成したり、レシピファイルをコピーしたり、所望のレシピを指定したりすることができる。なお、コンソール５０は、キーボードやマウスで代用することもできる。また、コンソール５０の機能とモニタ４０の機能を一体化させたタッチパネルを用いることもできる。
【００５３】
カメラ３０ａ〜カメラ３０ｃは、可視光線や赤外線を利用して検査対象物を撮像する撮像手段の一例であり、例えばＣＣＤやＣＭＯＳを用いることができる。画像入力部１６に接続された３台のカメラ３０ａ〜３０ｃは、内部にＡ／Ｄ変換器を有しており、撮像して得られた画像データをデジタルデータで出力する。また、画像入力部１６（或いは主制御部１１）からの画像データ取り込み信号に基づき動作する。例えば、カメラ３０ａ〜カメラ３０ｃのいずれか一のみで検査対象物を撮像することもできるし、カメラ３０ａ〜カメラ３０ｃの全部で検査対象物を撮像することもできる。
【００５４】
画像入力部１６は、上述した画像入力プログラムに従って、画像データの取り込みを行う。具体的には、例えば主制御部１１からカメラ３０ａの撮像指令を受信すると、カメラ３０ａに対して画像データ取り込み信号を送信する。そして、カメラ３０ａで撮像が行われた後、撮像して得られた画像データを取り込む。取り込んだ画像データは、一旦画像メモリ１７ａにバッファリング（キャッシュ）され、予め用意しておいた画像変数に代入される。この画像変数は、数値を扱う通常の変数と異なり、対応する画像処理ユニットの入力画像として割り付けることで、計測処理や画像表示の参照先となる変数である。
【００５５】
画像処理部１８は、画像データに対する計測処理を実行する。具体的には、まず画像入力部１６が上述した画像変数を参照しつつ、画像メモリ１７ａから画像データを読み出して、画像処理部１８を通じて画像メモリ１７ｂへ内部転送を行う。そして、画像処理部１８は、画像メモリ１７ｂに記憶された画像データを読み出して、計測処理を実行する。
【００５６】
画像表示部１９は、主制御部１１から送られてきた表示指令に基づいて、モニタ４０に所定画像を表示させる。例えば、画像メモリ１７ｂに記憶されている計測処理前又は計測処理後の画像データを読み出して、ビデオメモリ２０に一時記憶し（展開し）、モニタ４０に対して画像データ表示信号を送信する。
【００５７】
［機能構成］
図４は、本実施形態に係る画像処理装置１におけるコントローラ１０の機能構成例を示すブロック図である。主制御部１１がプログラムメモリ１２に格納されている装置制御プログラムを実行することによって、コントローラ１０は図５に示す各機能を発揮するように動作する。
【００５８】
図４に示すように、コントローラ１０は、図２を用いて説明したレシピファイルのうち、どの品種用のレシピファイルを用いるかを示す識別情報、すなわち検査対象物の品種を識別するための識別情報を受信する識別情報受信部１０１と、ＰＣ７０から転送された検査用データ（画像処理ユニットの処理順序を示すフローチャート、各画像処理ユニットに対応するパラメータセットのパラメータ値や基準画像などを含む）を記憶する検査用データ記憶部１０２と、識別情報受信部１０１から転送される識別情報と検査用データ記憶部１０２から読み出される検査用データとを用いて、フローチャートの中で、個別処理ユニットとして規定された画像処理ユニットのパラメータのうち個別パラメータ（詳細は後述）に対して、識別情報に対応した（識別情報が示すレシピファイルに保存された）パラメータ値や基準画像を割り付け、個別処理ユニットとして規定された画像処理ユニットのパラメータのうち共通パラメータ（詳細は後述）及び共通処理ユニット（共通画像処理の一例に相当）として規定された画像処理ユニットのパラメータに対して識別情報によらないパラメータ値や基準画像を割り付けるパラメータセット／基準画像割り付け部１０３と、予め処理内容が規定され、ユーザにより設定可能な一又は複数のパラメータからなるパラメータセットに従って処理内容を実行する複数の画像処理ユニットを記憶する処理ユニット記憶部１０４と、検査用データに含まれるフローチャート、パラメータセット／基準画像割り付け部１０３で割り付けられたパラメータ値により、処理ユニット記憶部１０４に記憶された画像処理ユニットの処理内容と協働して画像処理を実行する画像処理実行部１０５と、を有している。画像処理実行部１０５は、検査用データに含まれる画像処理プログラムに従って、画像処理を実行する。
【００５９】
なお、識別情報受信部１０１は、例えば上述した通信部１４や操作入力部１５などによって具現化することができ、検査用データ記憶部１０２及び処理ユニット記憶部１０４は、例えばプログラムメモリ１２などによって具現化することができ、パラメータセット／基準画像割り付け部１０３は、例えば主制御部１１などによって具現化することができ、画像処理実行部１０５は、例えば主制御部１１，画像入力部１６，画像処理部１８，画像メモリ１７ａ及び１７ｂ，プログラムメモリ１２，メインメモリ１３などによって具現化することができる。
【００６０】
図５は、本実施形態に係るプログラム作成支援装置としてのＰＣ７０の機能構成例を示すブロック図である。ＰＣ７０は、例えばＣＰＵ，ＲＯＭ，ＲＡＭ，及びハードディスク等から構成される汎用のパーソナルコンピュータを用いることができる。また、図６に示す各機能は、ＰＣ７０にインストールされたプログラム作成支援ソフトウェアが実行されることによって発揮される。
【００６１】
ＰＣ７０は、フローチャート生成部７０１１及びプログラム生成部７０１２として機能する制御部７０１と、処理ユニット記憶部７０２１及び検査用データ記憶部７０２２として機能するメモリ７０２と、画像処理装置１のコントローラ１０と通信可能に接続される通信部７０３と、マウスやキーボード等から構成される入力部７０４と、液晶モニタ等で構成される表示部７０５と、を有している。
【００６２】
フローチャート生成部７０１１は、スタートシンボルにおいて開始し、エンドシンボルにおいて終了するフローチャートを生成する機能を有する。ユーザは、入力部７０４を用いて、所望の画像処理ユニットを所望の順序に配置することによって、表示部７０５上でフローチャートを作成する。これにより、フローチャートが生成される。
【００６３】
プログラム生成部７０１２は、生成されたフローチャートをコントローラ１０で解釈できる設定データに直して、検査用データを生成する機能を有する。ユーザは、入力部７０４を用いて、表示部７０５において所定のボタン等をクリックすることによって、画像処理プログラムを含む検査用データを生成することができる。生成された検査用データ（画像処理プログラム）は、メモリ７０２の検査用データ記憶部７０２２に記憶される。制御部７０１は、検査用データ記憶部７０２２から検査用データ（画像処理プログラム）を読み出して、通信部７０３を介してコントローラ１０へ転送する。
【００６４】
また、ＰＣ７０では、検査用データ（画像処理プログラム）をコントローラ１０へ転送するに先立って、画像処理シミュレーションを行うこともできる。具体的には、制御部７０１が、フローチャート生成部７０１１によって生成されたフローチャートをＰＣ７０上で実行可能な形式に変換し、処理ユニット記憶部７０２１に記憶された画像処理ユニットの中からフローチャートに配置された画像処理ユニットを参照しながら画像処理シミュレーションを行う。
【００６５】
以下、ＰＣ７０における画像処理プログラム作成の流れについて説明し、その後、作成された画像処理プログラムにより画像処理装置１を運用している際に、メンテナンスの必要性が生じたときのメンテナンス方法について説明する。
【００６６】
［画像処理プログラム作成の流れ］
図６は、ＰＣ７０の表示部７０５に表示されるエディタ画面（主要部）の一例を示す図である。このエディタ画面は、ＰＣ７０においてプログラム作成支援ソフトウェアが実行されると、自動的にＰＣ７０の表示部７０５に表示される。
【００６７】
図６において、まずユーザは、入力部７０４の操作によって、所望の画像処理ユニットを、パーツリスト１００３からフロービュー１００２へ所望の順序で配置されるように、ドラッグアンドドロップを繰り返す。すなわち、スタートシンボルにおいて開始し、エンドシンボルにおいて終了する実行フロー上に、画像処理ユニットを配置することによって、簡易に所望のフローチャートを作成することができる。すなわち、コントローラ１０に行わせる一連の画像処理は、画像処理ユニットとしてブロック化されていて、ユーザが画像処理ユニットを実行フロー上に配置するだけで、その画像処理ユニットが、それより前の画像処理ユニットの処理結果に基づいて所定の処理を行うフローシーケンスを作成することができる。
【００６８】
パーツリスト１００３内では、複数の画像処理ユニットが、「画像入力」「計測」「制御」「演算」「タイミング」「表示」「出力」「コマンド出力」のカテゴリーに区分されている。各カテゴリーに属する画像処理ユニットをパーツリスト１００３内に実際に表示させるには、各カテゴリー左端の＋ボタンをクリックすればよい。
【００６９】
「画像入力」は、撮像に関する画像処理ユニットが属するカテゴリーであり、撮像ユニットが属している。この撮像ユニットには、シャッタースピード、カメラ感度、フラッシュオン時間、フラッシュ遅延時間、撮像対象カメラ、トリガ端子を指定するためのパラメータからなるパラメータセットが、撮像ユニットのプロパティとして関連付けられている。図６に示すフロービュー１００２では、フローチャートの１番目のユニット（ユニット番号Ｕ０００１）として、撮像ユニットが配置されている。
【００７０】
「計測」は、計測に関する画像処理ユニットが属するカテゴリーであり、撮像ユニットによって得られた画像データから計測結果を抽出し、この計測結果に基づいて検査対象物の良否を判定する計測ユニットが属している。例えば、エリアユニットやエッジ位置ユニット、傷ユニットやパターンサーチが属している。図６に示すフロービュー１００２では、フローチャートの２番目及び３番目のユニット（それぞれユニット番号Ｕ０００２及びＵ０００３）として、それぞれ傷ユニット及びパターンサーチユニットが配置されている。傷ユニットは、小面積の検出領域（セグメント）を移動して平均濃度を算出し、しきい値以上の濃度差がある箇所を傷として検出するユニットである。パターンサーチは、特定の画像パターンを基準画像として予め登録しておき、入力画像の中から基準画像に最も似ている部分を検出し、その部分の位置や角度、相関値を計測するユニットである。また、本実施形態では、図２を用いて説明したように、傷ユニットを改良した画像処理ユニットとして傷iiユニットや、パターンサーチユニットを改良した画像処理ユニットとしてパターンサーチiiユニットなども、「計測」のカテゴリーに属している。
【００７１】
その他、「制御」は、制御に関する画像処理ユニットが属するカテゴリーであり、バイパスユニットやエンドシンボルなどの制御ユニットが属している。バイパスユニットは、実行フローを２以上の枝フローに分岐させる分岐ユニットと、分岐された枝フローを合流させる合流ユニットからなる画像処理ユニットであり、所定条件で実行フローを分岐させるユニットである。エンドシンボルは、１回のフローシーケンスを終了させるためのシンボルである。「演算」は、数値演算ユニットなど、演算に関する画像処理ユニットが属するカテゴリーであり、「タイミング」は、タイマ待ちユニットなど、フロー遷移のタイミング制御に関する画像処理ユニットが属するカテゴリーであり、「表示」は、表示に関する画像処理ユニットが属するカテゴリーであり、「出力」及び「コマンド出力」は、それぞれ出力及びコマンド出力に関する画像処理ユニットが属するカテゴリーである。
【００７２】
このようにして、例えば３個の画像処理ユニットを配置してフローチャートの作成が終わると、次にユーザは、各画像処理ユニットに対応するパラメータ値を設定する。具体的には、フロービュー１００２内の撮像ユニット、傷ユニット、パターンサーチユニットそれぞれの上にカーソルを合わせ、右クリックしてプロパティ設定画面を表示部７０５に表示させる。ここでは、傷ユニットとパターンサーチユニットのプロパティ設定について詳しく説明する。
【００７３】
図７は、傷ユニットのプロパティ設定画面の一例を示す図である。図８は、パターンサーチユニットのプロパティ設定画面の一例を示す図である。
【００７４】
図７において、傷ユニットのプロパティは、例えば「全般」「検出条件」「表示設定」「詳細設定」などの各タブに区分されており、図７では「検出条件」が表示されている。検出条件のパラメータの一例としては、例えば、傷の検出方向を選ぶ「検出方向」、傷と判定する平均濃度の差（公差）を指定する「傷レベル」、計測領域内で移動するセグメントの大きさを指定する「セグメントサイズ」、セグメントにより平均濃度算出を行う際の移動量を指定する「移動量」などが挙げられる（他のパラメータについては説明の便宜上、省略する）。図７では、検出方向はプルダウンメニューの中から円周が選択され、傷レベルは５０が選択され、セグメントサイズは２０が選択され、移動量は８が選択されている。このように、ユーザはパラメータ値として数値を入力するのではなく、予め定められた数値リストの中から入力部７０４のマウス操作により選択することができるようになっている。これにより、ユーザは整数型（int型）や倍精度浮動小数型（double型）などの属性を気にすることなく、パラメータ値の設定を行うことができる。これらの各パラメータが一つのパラメータセットになって、画像処理プログラムにおいて傷ユニットに対応するパラメータセットとして規定される。
【００７５】
なお、このときユーザはデフォルト値を使用することもできる。デフォルト値は、ユーザがパラメータ値の設定を省略したときに、画像処理ユニットのパラメータに対する割り付けに使用されるように予め設定されたパラメータ値であって、コントローラ１０に組み込まれている。また、図７に示すプロパティ設定画面を表示部７０５上で開いたときには、そのプロパティ設定画面に予め設定されたパラメータ値として、最初にデフォルト値が表示されるようになっている。図７では、検出方向のデフォルト値として円周が設定されており、傷レベルのデフォルト値として５０が設定されており、セグメントサイズのデフォルト値として２０が設定されており、移動量のデフォルト値として８が設定されている。したがって、ユーザは、図７に示すプロパティ設定画面に表示される各パラメータのデフォルト値を確認し、そのままデフォルト値をパラメータに対する割り付けに使用する場合（デフォルト値を変更しない場合）には、パラメータ値の設定を省略することができる。
【００７６】
一方、図８において、パターンサーチユニットのプロパティは、例えば「全般」「検出条件」「表示設定」「詳細設定」などの各タブに区分されており、図８では「検出条件」が表示されている。検出条件のパラメータの一例としては、例えば、入力画像中の特定の画像パターンが回転している場合に、計測する角度の範囲を指定する「角度範囲」、パターンサーチ計測で検出する特定の画像パターンの最大個数を指定する「検出個数」、検出の安定度と処理時間との優先付けを調整するサーチ感度を指定する「サーチ感度」、検出の精度と処理時間との優先付けを調整するサーチ精度を指定する「サーチ精度」などが挙げられる。図８では、「角度範囲」は＋方向にも−方向にも０度が選択され、「検出個数」は１個が選択され、「サーチ感度」は０が選択され、「サーチ精度」は０が選択されている。なお、図７と同様に、ユーザは、入力部７０４のマウス操作により所望のパラメータ値を選択することができる。また、図８では、角度範囲のデフォルト値として＋方向にも−方向にも０が設定されており、検出個数のデフォルト値として１が設定されており、サーチ感度のデフォルト値として０が設定されており、サーチ精度のデフォルト値として０が設定されているため、ユーザは、そのままデフォルト値をパラメータに対する割り付けに使用する場合（デフォルト値を変更しない場合）には、パラメータ値の設定を省略することができる。これらの各パラメータが一つのパラメータセットになって、パターンサーチユニットに対応するパラメータセットとして規定されている。
【００７７】
なお、上述した画像処理ユニットの処理順序の一例となるフローチャートの設定、及び画像処理ユニットに対応するパラメータセットの各パラメータ値の設定は、入力部７０４を通じたユーザの操作に基づいて、フローチャート生成部７０１１が行う。したがって、本実施形態では、フローチャート生成部７０１１は、複数の画像処理の処理順序及びパラメータ値を設定する「第１設定手段」の一例として機能する。
【００７８】
次に、ユーザは、レシピ切り換えに対応したローカル変数を宣言（定義）し、そのローカル変数を、レシピ切り換えを行いたいパラメータと対応付ける（関連付ける）。これにより、そのパラメータを含む画像処理ユニットが個別処理ユニットとして規定される。具体的に説明すると、図６に示すエディタ画面に戻って、「設定」をクリックし、図示しないプルダウンメニューから変数設定をクリックし、ポップアップウィンドウで変数設定画面を表示部７０５に表示させる。
【００７９】
図９は、変数設定画面の一例を示す図である。図９に示す変数設定画面では、「ローカル変数」、「グローバル変数」、「画像変数」の３個の変数タブが含まれている。「ローカル変数」は、一時的に数字や文字等を記憶しておくとともに、一の検査設定内で参照可能な変数であり、画像処理ユニットの一の処理順序（フローチャート）において参照し得る変数である。ローカル変数は、コントローラ１０の電源起動時や検査設定切換時に、ユーザによって予め定義された初期値で初期化される。また、特定の画像処理ユニットの実行結果（例えばエッジ位置など）が一時的に記憶された後、その画像処理ユニット以下に配置された画像処理ユニットの実行（例えばエッジ位置とエッジ位置との間の距離など）において参照され得る。「グローバル変数」は、一時的に数字や文字等を記憶しておくとともに、複数の検査設定を跨いで（全検査設定に共通して）参照可能な変数である。すなわち、画像処理ユニットの処理順序（フローチャート）が複数ある場合に、それら複数の処理順序において共通で参照し得る変数である。「画像変数」は、上述のとおりである。
【００８０】
図９に示すように、ユーザは、追加ボタン１０１５をクリックして、例えば「ローカル変数」として“#kizu”“#size”“#kando”“#seido”を宣言するとともに、レシピ対応欄１０１６の各チェックボックスをクリックし、これらのローカル変数をレシピ対応にする。これにより、４個のレシピ対応ローカル変数が定義される。このようにして宣言されたレシピ対応ローカル変数は、通常のローカル変数とは意義が異なる。一時的に数字や文字等を記憶しておくとともに、一の検査設定内で参照可能である、という意味においてはローカル変数の範疇に包含される変数であるが、これに加えて、レシピ（品種）に応じて異なる値が代入されるようになっている。なお、変数名の頭についた#は、ローカル変数を意味する接頭子であり、レシピ対応ローカル変数の接頭子も#になっている。
【００８１】
そして、これら４個のレシピ対応ローカル変数を、レシピ切り換えを行いたいパラメータと対応付ける（関連付ける）。具体的には、ユーザは、図７に戻って、傷レベルの変数入力欄１０１１の左側のチェックボックスにチェックを入れると、変数入力欄１０１１が入力不可能な状態（グレーアウト状態）から入力可能な状態になるので、レシピ対応ローカル変数“#kizu”を入力する。なお、チェックボックスにおけるチェックの有無により変数入力欄１０１１の入力可否状態をコントロールすることによって、ユーザが誤って変数を入力してしまうミスを防ぐことができる。また、セグメントサイズの変数入力欄１０１２の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#size”を入力する。そうすると、図１０に示すように、レシピ対応ローカル変数“#kizu”及び“#size”が、それぞれパラメータ「傷レベル」及び「セグメントサイズ」と関連付けられる。同様にして、ユーザは、図８に戻って、サーチ感度の変数入力欄１０１３の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#kando”を入力する。また、サーチ精度の変数入力欄１０１４の左側のチェックボックスにチェックを入れ、レシピ対応ローカル変数“#seido”を入力する。そうすると、図１１に示すように、レシピ対応ローカル変数“#kando”及び“#seido”が、それぞれパラメータ「サーチ感度」及び「サーチ精度」と関連付けられる。このようにして、４個のレシピ対応ローカル変数が、レシピ切り換えを行いたいパラメータと関連付けられる。なお、図１０及び図１１において、レシピ対応ローカル変数と通常のローカル変数とを混在させてもよい。通常のローカル変数は、一の処理順序（フローチャート）において画像処理ユニット間で受け渡しを行う値が格納される変数であり、レシピ対応ローカル変数は、一の処理順序（フローチャート）において識別情報（レシピ）に応じて異なる値が代入される変数である。このように、画像処理装置１で実行される画像処理プログラムでは、レシピ対応ローカル変数と通常のローカル変数が混在可能となっている。これにより、通常のローカル変数がもつ画像処理ユニットの間での値の受け渡し機能とともに、レシピ対応ローカル変数がもつレシピに応じたパラメータ値の切り換え機能の双方を発揮することができる。
【００８２】
次に、ユーザは図６に戻って、「ファイル」の中にある「レシピ保存」ボタン（図示せず）をクリックし、レシピの保存を行う。そうすると、図１０及び図１１で設定した内容、すなわち#kizu＝５０、#size＝２０、#seido＝０、#kando＝０が格納されたレシピファイル（recipe0000.dat）が生成される。レシピファイルの内容を変更したい場合、すなわちレシピに応じてレシピ対応ローカル変数に代入される値を変更したい場合には、図１０又は図１１に示すプロパティ設定画面を開き、そのプロパティ設定画面上で所望のパラメータ値を選択し、上述した「レシピ保存」ボタン（図示せず）をクリックしてレシピの保存を行う。これにより、最初にパラメータ値を設定する場合と同様（図７及び図８）、ユーザは整数型（int型）や倍精度浮動小数型（double型）などの属性を気にすることなく、パラメータ値の再設定（修正）を行うことができる。
【００８３】
なお、recipe0000.datのファイル名は、システムによって自動的に命名されるファイル名であり、レシピファイルを追加するときには、００００の部分はレシピ番号としてユーザが指定することができる。また、レシピの保存を行う際に、レシピファイルの名称（レシピ名称）を設定することができる。recipe0000.datといったファイル名よりもレシピ名称の方が、ユーザにとって検査対象物の品種を認識しやすい。例えば、画像処理プログラムを最初に作成するユーザと、メンテナンスするユーザが異なる可能性がある場合には、レシピ名称を設定しておき、検査対象物の品種を認識しやすくしておくことができる。具体的には、ユーザは図６に示す「ファイル」の中にある「レシピ名称設定」ボタン（図示せず）をクリックし、図示しないダイアログボックスを開いて、レシピ名称の入力を行う。ここでは、品種０のワークを検査するときにレシピ対応ローカル変数に代入される値が保存されているレシピファイル、という意味で、「ワーク０」という名称を設定する。
【００８４】
図１２は、ＰＣ７０の表示部７０５に表示されるエディタ画面（主要部）の一例であって、生成されたレシピファイル（recipe0000.dat）が表示されている様子を示す図である。図１２に示すように、システムビュー１０１９のタブをクリックすると、ワークスペース内に各種ファイルが表示される。具体的には、図１２に示すように、システムビュー１０１９のワークスペースには、「0000:Ｏリング外観検査」と「0001:液晶アライメント」の２個の検査設定が表示され、そのうち「0000:Ｏリング外観検査」については下位層まで表示されている。そのうち、検査設定ファイル“inspect.dat”には、図６に示すフローチャート、フローチャートを構成する各画像処理ユニット（撮像ユニット、傷ユニット、パターンサーチユニット）のパラメータのデフォルト値、図９に示すレシピ対応有無の属性などが保存される。また、「0000:Ｏリング外観検査」の下位層には、レシピファイル（recipe0000.dat）が生成されている様子が表示され、このレシピファイルには、品種０のワークを検査するときにレシピ対応ローカル変数に代入される値が保存される。また、図１２では、レシピファイル（recipe0000.dat）が点線枠で囲まれているが、これは、現在アクティブになっているレシピファイルであることを示している。つまり、この状態で上述したレシピの保存を行うと、現在レシピ対応ローカル変数が関連付けられたパラメータにおいて設定されているパラメータ値（図１０及び図１１参照）が、品種０のワークを検査するときにレシピ対応ローカル変数に代入される値として保存される。
【００８５】
なお、図１２に示すエディタ画面は、図６と異なり、最上部に「００００−００００：Ｏリング外観検査  ワーク０」と表示されているが、ハイフンより前の００００は検査設定フォルダ番号、ハイフンより後ろの００００はレシピ番号、ワーク０はレシピ名称を示している。このように、「ワーク０」というレシピ名称を最上部に表示することによって、メンテナンスを行う際にユーザが品種を認識しやすくなる。なお、ユーザが品種を認識しやすくする観点から、レシピ名称をワークスペース内に表示するようにすることもできる（例えば、「recipe0000.dat」を「recipe0000.dat:ワーク０」等と表示することも可能である）。
【００８６】
次に、品種１に対応するパラメータ値として、品種１のワークを検査するときにレシピ対応ローカル変数に代入される値の保存方法について説明する。図１３は、レシピ設定のコピー画面例である。ユーザは、図１２に示すエディタ画面において、「ファイル」をクリックし、図示しないプルダウンメニューから「レシピ設定のコピー」をクリックし、ポップアップウィンドウでレシピ設定のコピー画面（図１３）を表示部７０５に表示させる。
【００８７】
まず、コピー元のレシピ番号１０２１を選択し、コピー対象となるレシピファイルをプルダウン等により選択する。ここでは、コピー元レシピ番号として、既にパラメータ値を設定しているレシピ番号０を用いる。また、コピー対象となる対象データ１０２２を、チェックボックスにチェックを入れて選択する。対象データ１０２２としては、例えばレシピ名称、ロット番号などのレシピ文字列０〜４、登録画像（登録された基準画像）、ワークの位置補正情報となる位置補正基準値、画面表示や演算などに使用する結果データ等を実寸など任意の単位に変換するスケーリング補正設定などが挙げられる。そして、コピー先レシピ番号１０２３として、開始（終了）レシピ番号或いはコピー回数などを指定した後（ここでは開始（終了）レシピ番号としてレシピ番号１を指定する）、実行ボタン１０２４をクリックすると、レシピファイル（recipe0000.dat）がコピーされ、レシピファイル（recipe0001.dat）が生成される。
【００８８】
図１４及び図１５は、レシピファイル（recipe0001.dat）が生成され、このレシピファイルがアクティブになっている様子を示す図である。図１４は、フロービュー１０１８のタブがクリックされた状態であり、図１５は、システムビュー１０１９のタブがクリックされた状態である。なお、レシピ名称として今度は「ワーク１」を設定しているため、図１４及び図１５に示すエディタ画面の最上部には、「００００−０００１：Ｏリング外観検査  ワーク１」と表示されている。また、図１４及び図１５では、レシピファイル（recipe0001.dat）が点線枠で囲まれているため、このレシピファイルがアクティブになっていることが一目で分かるようになっている。
【００８９】
次に、ユーザは、傷ユニット及びパターンサーチユニットのプロパティ設定画面を開き、パラメータ値を変更する。具体的には、ユーザは、傷ユニット及びパターンサーチユニットのプロパティ設定画面を開くと、図１０及び図１１に示すプロパティ設定画面が表示される。これは、現在アクティブになっているレシピファイル（recipe0001.dat）は、レシピファイル（recipe0000.dat）からコピーしたものだからである。図１０に示す傷ユニットについては、検出方向と移動量のパラメータ値としてデフォルト値が表示され、レシピ対応ローカル変数が関連付けられた傷レベル及びセグメントサイズのパラメータ値として、レシピファイル（recipe0000.dat）に保存されている値が読み出され、表示される（#kizu＝５０、#size＝２０、#seido＝０、#kando＝０が表示される）。図１１に示すパターンサーチユニットについても同様である。
【００９０】
次に、ユーザは、図１６及び図１７に示すように、#kizu＝６０、#size＝３０、#seido＝１、#kando＝１となるようにパラメータ値を選択することによって、品種１に対応するパラメータ値を設定する。その後、ユーザは、ＯＫボタンをクリックしてプロパティ設定画面を閉じ、図１４又は図１５に示す「ファイル」の中にある「レシピ保存」ボタン（図示せず）をクリックし、レシピを保存する。これにより、レシピファイル（recipe0001.dat）の内容が更新される。すなわち、#kizu、#size、#seido、#kandoの各レシピ対応ローカル変数に代入される値が、上記の値によって上書きされる。
【００９１】
以下同様にして、レシピファイルのコピー、品種に対応するパラメータ値の選択、レシピの保存、という一連の作業を繰り返す。図１８は、レシピ０からレシピ３までのレシピファイルに保存された内容のイメージを示す図である。図１８に示すように、レシピファイル“recipe0000.dat”には、品種０のワークを検査するときに、レシピ対応ローカル変数“#kizu”に代入される値として５０が規定され、レシピ対応ローカル変数“#size”に代入される値として２０が規定され、レシピ対応ローカル変数“#kando”に代入される値として０が規定され、レシピ対応ローカル変数“#seido”に代入される値として０が規定されている。他のレシピファイルについても同様である。
【００９２】
図１９は、品種３に対応するパラメータ値を設定した後、レシピ３のレシピファイルがアクティブになっている様子を示す図である。システムビュー１０１９のワークスペースでは、レシピファイル“recipe0003.dat”が点線枠で囲まれており、最上部には、「００００−０００３：Ｏリング外観検査  ワーク３」と表示されている。なお、レシピ番号１００１を変更することによって、アクティブなレシピファイルを切り換えることもできる。図１９ではレシピ番号３がアクティブとなっているが、これを０〜２に切り換えることも可能である。本実施形態では、レシピ番号は０〜３の４種類を切り換えることができるようになっている。
【００９３】
次に、パターンサーチユニットの処理内容を実行する際に用いる基準画像について説明する。ユーザは、図１９に示すエディタ画面に戻って、「設定」をクリックし、図示しないプルダウンメニューから「画像登録」をクリックし、ポップアップウィンドウで登録画像一覧を表示部７０５に表示させる。
【００９４】
図２０は、基準画像として登録された画像一覧を示す図である。図２０に示すように、ユーザは、パターンサーチユニットの品種に応じた４個の基準画像（ファイル名は、それぞれ“ref1_000_0000.jpg”“ref1_000_0001.jpg”“ref1_000_0002.jpg”“ref1_000_0003.jpg”）を登録しておき、最右欄のレシピ対応欄１０１７の各チェックボックスをクリックし、これらの画像をレシピ対応の基準画像にする。
【００９５】
そして、基準画像を品種に応じて切り換えたいパターンサーチユニットのプロパティの基準画像設定画面（図示せず）で、パターンサーチの際に用いる基準画像として、下３桁の数字とファイル拡張子を除く“ref1_000”を指定する。そうすると、アクティブとなっているレシピ番号（下３桁で表わされるレシピ番号）に対応した基準画像がパターンサーチに用いられる。具体的に説明すると、レシピ番号０が指定されているときには“ref1_000_0000.jpg”が用いられ、レシピ番号１が指定されているときには“ref1_000_0001.jpg”が用いられ、レシピ番号２が指定されているときには“ref1_000_0002.jpg”が用いられ、レシピ番号３が指定されているときには“ref1_000_0003.jpg”が用いられる。なお、パラメータも基準画像も、レシピ対応有無（つまり、レシピ対応か否か）の属性自体は検査設定ファイル“inspect.dat”内に保存される。
【００９６】
図２１は、図１９に示す状態から更に、４個の基準画像を登録し、レシピ３のレシピファイル（“recipe0003.dat”）及び基準画像（“ref1_000_0003.jpg”）がアクティブになっている様子を示す図である。
【００９７】
最後に、ＰＣ７０上で生成された画像処理プログラム、具体的には、図２１のワークスペースに示す検査設定ファイル“inspect.dat”、レシピファイル“recipe0000.dat”〜“recipe0003.dat”、基準画像“ref1_000_0000.jpg”〜“ref1_000_0003.jpg”が、画像処理装置１のコントローラ１０に転送された後、画像処理装置１において画像処理プログラムが実行される。
【００９８】
以上、図６〜図２１を用いて説明したように、ユーザは、ＰＣ７０において画像処理プログラムを作成する際に、レシピ対応ローカル変数を定義し（図９）、それを傷ユニット及びパターンサーチユニットのパラメータに関連付けることによって（図１０、図１１）、これらの画像処理ユニットを個別処理ユニットとして指定することができる。同時に、レシピ対応ローカル変数と関連付けられたパラメータは、個別処理ユニットとして指定された傷ユニット及びパターンサーチユニットについて複数の異なるパラメータ値をもつ個別パラメータとして設定されるとともに、個別パラメータの各々のパラメータ値に対し個別処理ユニット間で共通のレシピ番号を関連付けて設定される（図１８）。これらの各処理は、ユーザによる入力部７０４の操作を通じて、フローチャート生成部７０１１が行う。したがって、フローチャート生成部７０１１は、パラメータについて、複数の異なるパラメータ値を設定可能な個別パラメータか、或いは、一のパラメータ値を設定可能な共通パラメータかを指定する手段の一例として機能するとともに、個別パラメータの各々のパラメータ値に対し複数の画像処理間で共通の識別情報を関連付けて設定する「第２設定手段」の一例として機能する。
【００９９】
［画像処理装置の動作］
図２２は、画像処理装置１における画像処理の流れを示すフローチャートである。
【０１００】
図２２に示すように、まず、画像処理装置１のコントローラ１０は、検査用データを受信する（ステップＳ１）。具体的には、ＰＣ７０から送られてきた検査用データとして、画像処理ユニットの処理手順を示すフローチャートや各画像処理ユニットの各パラメータのデフォルト値、レシピ対応有無の属性などを含む検査設定ファイル（inspect.dat）、上述したレシピファイル、必要に応じて基準画像などを受信する。受信した検査用データは、検査用データ記憶部１０２（図４）に記憶される。
【０１０１】
次に、デフォルトでアクティブになっているレシピ番号（例えばレシピ０）に基づいて、割り付けが行われる（ステップＳ２）。具体的には、コントローラ１０のパラメータセット／基準画像割り付け部１０３（図４）は、検査用データ記憶部１０２の中からパラメータ値やレシピ番号などを読み出して、レシピ番号が示すレシピファイルを参照し、そのレシピ番号に応じた値をレシピ対応ローカル変数に代入する。そして、個別処理ユニットとして規定された傷ユニット及びパターンサーチユニットの個別パラメータに対して、レシピ番号に対応したパラメータ値（レシピ対応ローカル変数に代入された値）が割り付けられる。また、傷ユニット及びパターンサーチユニットの個別パラメータ以外のパラメータ（共通パラメータ）に対しては、検査設定ファイルを参照し、レシピ番号によらないパラメータ値（ユーザが設定した一のパラメータ値）が割り付けられる。また、共通処理ユニットとして規定される撮像ユニットのパラメータに対しても同様に、検査設定ファイルを参照し、レシピ番号によらないパラメータ値（ユーザが設定した一のパラメータ値）が割り付けられる。
【０１０２】
次に、割り付けが成功したか否かが判断される（ステップＳ３）。パラメータ値の割り付けは通常は成功する可能性が高いが、ユーザのミス等によって失敗することがある。例えば、ユーザが、レシピファイルの一つをＰＣ７０からコントローラ１０にアップロードし忘れた場合には、参照すべきレシピファイルが存在しないため、レシピ番号に応じた値をレシピ対応ローカル変数に代入することができない。したがって、この場合は、パラメータセット／基準画像割り付け部１０３において、パラメータ値の割り付け失敗として判断され（ステップＳ３：ＮＯ）、エラー処理が実行される（ステップＳ５）。エラー処理としては、ユーザに「参照すべきレシピファイルが存在しません。」などの表示をモニタ４０上に行うようにしてもよい。
【０１０３】
一方で、パラメータ値の割り付けが成功した場合には（ステップＳ３：ＹＥＳ）、画像処理が実行される（ステップＳ４）。具体的には、画像処理実行部１０５は、検査用データに含まれるフローチャート、ステップＳ２で割り付けられたパラメータ値により、処理ユニット記憶部１０４に記憶された画像処理ユニットの処理内容と協働して、品種０のワークに対する画像処理を実行する。
【０１０４】
ここで、今まで品種０のワークが流れていたが、連続して、次に品種１のワークが流れてくると仮定する。このとき、外部のＰＬＣ６０からレシピ切り換えコマンドが送られてくる。図２３は、画像処理装置１においてレシピ番号が切り換えられる例を説明するためのフローチャートである。コントローラ１０の識別情報受信部１０１（図４）は、ユーザによって指定された、レシピ切り換えコマンドが示すレシピ番号を受信する（ステップＳ１１）。レシピ番号は、識別情報受信部１０１によってパラメータセット／基準画像割り付け部１０３（図４）へ転送される。
【０１０５】
パラメータセット／基準画像割り付け部１０３は、識別情報受信部１０１から転送されるレシピ番号（例えばレシピ０００１）を参照し、そのレシピ番号に応じた値をレシピ対応ローカル変数に代入する。そして、個別処理ユニットとして規定された傷ユニット及びパターンサーチユニットの個別パラメータに対して、レシピ番号に対応したパラメータ値（レシピ対応ローカル変数に代入された値）が割り付けられる（ステップＳ１２）。また、傷ユニット及びパターンサーチユニットの個別パラメータ以外のパラメータ（共通パラメータ）に対しては、検査設定ファイルを参照し、レシピ番号によらないパラメータ値（ユーザが設定した一のパラメータ値）が割り付けられる。また、共通処理ユニットとして規定される撮像ユニットのパラメータに対しても同様に、検査設定ファイルを参照し、レシピ番号によらないパラメータ値（ユーザが設定した一のパラメータ値）が割り付けられる。
【０１０６】
その後、上述したように、割り付けが成功したか否かが判断され（ステップＳ１３）、成功した場合には（ステップＳ１３：ＹＥＳ）、画像処理が実行され（ステップＳ１４）、失敗した場合には（ステップＳ１３：ＮＯ）、エラー処理が実行される（ステップＳ１５）。
【０１０７】
このように、ユーザ又は外部のＰＬＣ６０などからレシピ切り換えの要求を受けたとき（図２３のステップＳ１１）、個別処理ユニットの個別パラメータについて、切り換えたいレシピ番号に対応したパラメータ値が割り付けられた上で（図２３のステップＳ１２）、画像処理が実行されるので（図２３のステップＳ１４）、フローチャートを１つ作成するだけで、複数の品種に対応することができる。その結果、切換コマンドを画像処理装置１に送るだけの簡易な操作により、ワークの品種に応じたパラメータ値を用いて検査を行うことができ、ひいては使い勝手を向上させることができる。
【０１０８】
また、画像処理装置１は、複数のフローチャートを入れ換えて品種対応を可能にする画像処理装置と比べて、切り換えの内部処理に掛かる時間を短縮することができる。詳述すると、フローチャートを入れ換えた場合には、フローチャートの初期化に多少の時間が掛かる。例えば初期化処理では、画像処理に用いる基準画像をフラッシュメモリからＲＡＭに予め展開しておいたり、頻繁に使うパラメータをフラッシュメモリからＲＡＭに予め展開しておいたりする。レシピファイルを入れ換えて品種対応を可能にする画像処理装置１では、このような初期化処理をワークの品種が変わる度に行う必要はないため、切り換えの内部処理に掛かる時間を短縮することができる。
【０１０９】
また、上述した本実施形態では、エディタ画面（ＵＩ）上でパラメータ値を設定するようにしたが、これによりユーザの設定ミスを防ぐことができる。仮に、図１８に示すファイル群をテキストエディタで別途作成した場合には、“０”（ゼロ）と“Ｏ”（オー）の記述ミスなどが発生し、レシピ対応ローカル変数に代入される値を読み込めないエラーが生ずる虞がある。また、変数値の属性にはdouble（倍精度浮動小数型）やint（整数型）などがあるが、属性指定を勘違いした場合には、ユーザが思っていた値と異なる値が入力される虞がある（double型にも拘わらず単に０．１と入力すると、コントローラ１０は０．１の近似値が入力されたものとして扱う場合がある）。そこで、エディタ画面（ＵＩ）上でパラメータ値を設定するようにすることで、このような設定ミスを防ぐことができる。
【０１１０】
なお、図２３は、ＰＬＣ６０から送られてきたレシピ切り換えコマンドによって、レシピ番号を自動的に切り換えることとしたが、例えばコンソール５０を用いて手動でレシピ番号を切り換えることもできる。具体的には、例えば今まで品種０のワークが流れていたが、一旦中断して、次に品種１のワークが流れてくると仮定する。ワークの流れが中断しているときに、ユーザは、レシピ番号を手動で切り換えることができる。
【０１１１】
図２４は、画像処理装置１のモニタ４０において、コンソール５０を用いてレシピ設定に関する操作を行う画面例を示す図である。ユーザは、コンソール５０を操作して、モニタ４０上でレシピ切り換えを行う。例えば、ファンクションキーなどから図２４（ａ）に示すレシピ切換画面をモニタ４０上に表示させる。そして、切換先となるレシピ番号（例えばレシピ０００１）、レシピ名称（例えばワーク１）を指定し、実行ボタンをクリックする。そうすると、コントローラ１０の識別情報受信部１０１（図４）は、ユーザによって指定された、コンソール５０の操作信号に基づくレシピ番号を受信する（図２３のステップＳ１１）。レシピ番号は、識別情報受信部１０１によってパラメータセット／基準画像割り付け部１０３（図４）へ転送される。その後、図２３のステップＳ１２〜ステップＳ１５の各処理が実行される。なお、図２４（ｂ），図２４（ｃ）の詳細については、後述する［メンテナンス方法］で説明する。
【０１１２】
［メンテナンス方法］
次に、メンテナンス方法について説明する。図２５は、メンテナンス内容を示すフローチャートである。図２５において、メンテナンス前とメンテナンス後とでは、一部の画像処理ユニットが入れ替わっている（網掛けで示す）。図２を用いて説明したのと同様に、傷ユニットが傷iiユニットに代わり、パターンサーチユニットがパターンサーチiiユニットに代わっている。以下では、このようなメンテナンスをＰＣ７０において行う場合について説明する。すなわち、コントローラ１０から検査用データをＰＣ７０へダウンロードし、ＰＣ７０のソフトウェアを用いて編集作業（メンテナンス）を行った後、再びコントローラ１０へ検査用データをアップロードする。なお、一般に、ＰＣ７０にはコントローラ１０に保存されている検査設定と同期して、同じ検査設定が保存されているため、検査用データをダウンロードしなくても、メンテナンスを行うことは可能である。
【０１１３】
ＰＣ７０でプログラム作成支援ソフトウェアを起動した後、コントローラ１０から検査用データをＰＣ７０へダウンロードした直後のエディタ画面は、例えば図６に示すような画面になる。そして、図２５に示すようなメンテナンスを行うため、まず画像処理ユニットの削除・追加を行う。その結果、図２６に示すエディタ画面が表示される。そして、フロービュー１０１８の傷iiユニット上で右クリックをして、プロパティ設定画面を開くと、図２７に示すような画面が表示される。このとき、パラメータ「傷レベル」のパラメータ値は５０、パラメータ「セグメントサイズ」のパラメータ値は２０、パラメータ「移動量」のパラメータ値は８と表示されているが、これは、傷iiユニットのデフォルト値として予め検査設定ファイルに保存されているパラメータ値である。
【０１１４】
ここで、ユーザは、個別パラメータとして、「傷レベル」にレシピ対応ローカル変数#kizuを入力し、「セグメントサイズ」にレシピ対応ローカル変数#sizeを入力して（図２８参照）、パラメータにレシピ対応ローカル変数を関連付ける。他のパラメータ、すなわち検出方向や移動量については、予め定められた数値リストの中から所望の数値を選択することによって、一のパラメータ値を設定する。デフォルト値をそのまま使用する際には、パラメータ値の設定を省略することができる。パターンサーチiiユニットについても同様である。すなわち、図２９及び図３０に示すように、ユーザは、パターンサーチiiユニットのプロパティ設定画面（図２９）において、個別パラメータとして「サーチ感度」にレシピ対応ローカル変数#kandoを関連付け、個別パラメータとして「サーチ精度」にレシピ対応ローカル変数#seidoを関連付ける（図３０）。また、他のパラメータについても一のパラメータ値を設定する。
【０１１５】
このように、ユーザは、ＰＣ７０においてフローチャートの入れ替えを行った後（図２６）、画像処理ユニットのパラメータ値の設定を行うことによって（図２７〜図３０）、メンテナンスを完了させることができる。メンテナンスが完了すると、検査用データがＰＣ７０からコントローラ１０へ転送され、画像処理装置１に保存されている検査用データが上書きされ、画像処理装置１の運転が再開される。
なお、図２７〜図３０を用いて説明したメンテナンス方法では、画像処理ユニットの入れ替えと、画像処理ユニットのパラメータ修正、という編集を行うこととしたが、例えば画像処理ユニットのパラメータ修正、特にレシピファイルのみの編集を行うこともできる。この場合、ユーザは、ＰＣ７０において、レシピファイルの編集を行う。例えば図１６に示すレシピファイルのうち、recipe0001.datにおける#kizuの値（現在値６０）を６５に変更する場合を考える。
【０１１６】
ユーザは、ＰＣ７０において、レシピ番号１００１を操作してレシピファイルrecipe0001.datをアクティブにするとともに、傷ユニットのプロパティ設定画面を表示させる（図１６参照）。そして、傷レベルのパラメータ値として６５を選択することによって、パラメータ値を６０から６５へ変更する。その後、ユーザは、プロパティ設定画面を閉じ、図１４に示す「ファイル」の中にある「レシピ保存」ボタン（図示せず）をクリックし、レシピを保存する。そうすると、recipe0001.datにおける#kizuの値が６５になり、品種１のワークを検査するときに、レシピ対応ローカル変数#kizuに代入される値として６５が規定される。レシピの保存が終わると、ＰＣ７０と画像処理装置１を接続し、レシピファイルrecipe0001.datのみの転送を行う。その結果、コントローラ１０に保存されているレシピファイルrecipe0001.datが、新たにＰＣ７０から転送されたレシピファイルrecipe0001.datによって上書きされ、品種１のワークを検査する際には、傷レベルのパラメータ値として６５が割り付けられた上で、画像処理が行われる。
【０１１７】
なお、以上はＰＣ７０においてフローチャートのメンテナンスを行う場合の説明であるが、画像処理装置１のモニタ４０上でメンテナンスを行うこともできる。具体的には、モニタ４０にフローチャートや画像処理ユニットのプロパティ設定画面を表示させ、コンソール５０を用いてメンテナンスを行う。
【０１１８】
図３１は、画像処理装置１のモニタ４０においてメンテナンスを行った際の処理の流れを示すフローチャートである。図３１において、ユーザは、画像処理装置１の運転を停止させるとともに、コンソール５０を操作してモニタ４０上にフローチャートや画像処理ユニットのプロパティ設定画面を表示させる。そして、ＰＣ７０でメンテナンスを行った場合と同様に、ユニットの追加・削除を行い（ステップＳ２１）、パラメータ値の設定（ステップＳ２２）を行う。このとき例えば、扱う品種が増えるような場合には、レシピ設定のコピーを行うことができる。例えば、ユーザはモニタ４０上に図２４（ｂ）に示す画面を表示させ、コピー元のレシピ番号とコピー先のレシピ番号を指定し、実行ボタンをクリックする。そうすると、図１３を用いて説明したときと同様に、コピー先のレシピ番号に対応するレシピファイルが新たに生成される。また、図２４（ｃ）に示すように、レシピ名称の変更を行うこともできる。モニタ４０においてメンテナンスを行う場合であっても、図２７〜図３０を用いて説明したのと同様に、一のフローチャート上で必要な編集を行えばよいので、少ない工数でメンテナンスすることができる。なお、図３１において、パラメータの設定（ステップＳ２２）が終わると、あとは図２２で説明した処理（ステップＳ２〜ステップＳ５）と同様である（ステップＳ２３〜ステップＳ２６）。
【０１１９】
このように、本実施形態に係る画像処理装置１によれば、フローチャートを１つ作成するだけで複数の品種に対応することができるとともに、画像処理ユニットの一部を入れ替えたときであっても、１つのフローチャートについてのみ編集を行うだけでよいので、少ない工数でメンテナンスすることができ、ひいては画像処理装置の使い勝手を向上させることができる。
【０１２０】
［変形例］
図３２及び図３３は、本発明の他の実施の形態に係る画像処理装置におけるメンテナンス方法の概略を説明するための説明図である。上述した本実施形態では、レシピ対応ローカル変数を別途定義した上で、個別処理ユニットの個別パラメータを規定することとしたが（図９参照）、本発明は、必ずしもレシピ対応ローカル変数を別途定義しなくてもよい。具体的には、例えば図３２及び図３３に示すように、個別処理ユニットのパラメータ設定画面においてレシピ対応にするためのチェックボックスを設けてもよい。これにより、図３２及び図３３に示す#kizu、#size、#kando、#seidoは、レシピ対応ローカル変数と同様の機能を発揮する変数にすることができる。
【０１２１】
また、上述した本実施形態では、外部ＰＬＣ６０からレシピ番号を切り換えるレシピ切り換えコマンドが送られてくる場合について説明したが、例えば、検査設定切り換えコマンドが送られてくる場合が混在していてもよい。検査設定切り換えコマンドは、複数ある検査設定の中から、所定の検査設定に切り換えるコマンドである。これにより、画像処理が実行される際に用いられるフローチャート自体が切り換わる。
【０１２２】
図３４は、レシピ切り換えコマンドと検査設定切り換えコマンドとが混在する場合を説明するためのフローチャートである。
【０１２３】
図３４に示すように、コントローラ１０の識別情報受信部１０１（図４）は、外部のＰＬＣ６０などからコマンドを受信すると（ステップＳ３１）、それがレシピ切り換えコマンドか否かを判断する（ステップＳ３２）。それがレシピ切り換えコマンドである場合には（ステップＳ３２：ＹＥＳ）、識別情報受信部１０１によって、レシピ番号がパラメータセット／基準画像割り付け部１０３（図４）へ転送される。その後、ステップＳ３３〜ステップＳ３６までの処理は、図２３を用いて説明したステップＳ１２〜ステップＳ１５までの処理と同様である。
【０１２４】
一方で、コントローラ１０の識別情報受信部１０１（図４）が、受信したコマンドをレシピ切り換えコマンドでないと判断した場合には（ステップＳ３２：ＮＯ）、受信したコマンドが検査設定切り換えコマンドか否かを判断する（ステップＳ３７）。検査設定切り換えコマンドである場合には、検査設定の切り換えが行われ（ステップＳ３８）、検査設定切り換えコマンドでない場合には、他のコマンドであると認識して、他の処理が行われる（ステップＳ３９）。
【０１２５】
このように、画像処理装置１は、受信したコマンドが、識別情報としてレシピを切り換えるコマンドであるか、或いは、画像処理ユニットの処理順序を切り換えるコマンドであるかを識別して判断する機能を有している。すなわち、外部からコマンドを受信したときに、受信したコマンドが（複数ある識別情報のうち一の）識別情報を指定するコマンドであるか、又は、（複数ある画像処理ユニットの処理順序のうち一の）処理順序を指定するコマンドであるかを識別し、識別情報を指定するコマンドである場合には、パラメータ値の割り付けを行う一方、処理順序を指定するコマンドである場合には、処理順序の切り換えを行うことが可能な構成となっている。これにより、これにより、識別情報を指定するコマンドと処理順序を指定するコマンドの双方が画像処理装置１に送られたときであっても、これらのコマンドを正しく認識して、正常に動作することができる。
【０１２６】
また、上述した実施形態では、レシピ対象としてパラメータと基準画像の２つを説明したが、レシピ対象として位置補正基準値も考えられる（図１３参照）。位置補正基準値は、基準画像に対して計測した結果を位置補正の基準の値となるものである。この位置補正基準値も、ワークの品種ごとに異なる値が考えられ、レシピ対象に含めておくことで、少ない工数で位置補正基準値のメンテナンスを行うことができる。
【０１２７】
以上説明したように、画像処理装置１は、検査対象物の品種に応じたレシピ番号が指定されると、個別パラメータ（傷ユニット及び傷iiユニットの傷レベル及びセグメントサイズ、パターンサーチユニット及びパターンサーチiiユニットのサーチ感度及びサーチ精度）のパラメータ値を、指定されたレシピ番号に対応したパラメータ値に切り換えることができる。したがって、フローチャートを１つ作成するだけで複数の品種に対応することができ、メンテナンスの必要性が生じたときであっても、１つのフローチャートについてのみ編集を行うだけでよく、少ない工数でメンテナンスすることができる。その結果、画像処理装置の使い勝手を向上させることができる。
【０１２８】
また、図２に示すように、個別処理ユニットとして規定される画像処理ユニットのパラメータには、個別パラメータだけではなく、共通パラメータ（傷ユニットの検出方向、パターンサーチユニットの検出個数など）が混在している。したがって、品種に応じてパラメータ値を切り換える必要のないパラメータについては、一のパラメータ値を設定するだけで全品種に反映させることができ、少ない工数でメンテナンスを完了させることができる。
【符号の説明】
【０１２９】
１  画像処理装置
１０  コントローラ
１１  主制御部
１２  プログラムメモリ
１３  メインメモリ
１４  通信部
１５  操作入力部
１６  画像入力部
１７ａ，１７ｂ  画像メモリ
１８  画像処理部
１９  画像表示部
２０  ビデオメモリ
３０  カメラ
４０  モニタ
５０  コンソール
６０  ＰＬＣ
７０  ＰＣ
【図１】
0005415182.tif 000002
【図２】
0005415182.tif 000003
【図３】
0005415182.tif 000004
【図４】
0005415182.tif 000005
【図５】
0005415182.tif 000006
【図６】
0005415182.tif 000007
【図７】
0005415182.tif 000008
【図８】
0005415182.tif 000009
【図９】
0005415182.tif 000010
【図１０】
0005415182.tif 000011
【図１１】
0005415182.tif 000012
【図１２】
0005415182.tif 000013
【図１３】
0005415182.tif 000014
【図１４】
0005415182.tif 000015
【図１５】
0005415182.tif 000016
【図１６】
0005415182.tif 000017
【図１７】
0005415182.tif 000018
【図１８】
0005415182.tif 000019
【図１９】
0005415182.tif 000020
【図２０】
0005415182.tif 000021
【図２１】
0005415182.tif 000022
【図２２】
0005415182.tif 000023
【図２３】
0005415182.tif 000024
【図２４】
0005415182.tif 000025
【図２５】
0005415182.tif 000026
【図２６】
0005415182.tif 000027
【図２７】
0005415182.tif 000028
【図２８】
0005415182.tif 000029
【図２９】
0005415182.tif 000030
【図３０】
0005415182.tif 000031
【図３１】
0005415182.tif 000032
【図３２】
0005415182.tif 000033
【図３３】
0005415182.tif 000034
【図３４】
0005415182.tif 000035
【図３５】
0005415182.tif 000036