以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
図1は外観検査システム1の概略を示す概略図である。外観検査システム1は、工場で生産された製品(検査対象物)の外観を検査し、合格品かどうかを判定する画像処理システムである。検査対象物は一般にワークと呼ばれる。外観検査システム1は、画像処理装置2、プログラマブルロジックコントローラ(PLC)3、カメラ4、照明装置5、コンソール9、モニタ10、プログラム作成支援装置11を有している。PLC3はパーソナルコンピュータなどのコンピュータであってもよい。PLC3によって制御されるベルトコンベヤなどの搬送装置7によって検査対象物8が搬送され、照明装置5によって照明された検査対象物8がカメラ4によって撮像される。検査対象物8はワークと呼ばれることもある。画像処理装置2は、たとえば、PLC3からの命令にしたがって、照明装置5の照明条件を切り替えたり、カメラ4に撮像を実行させたりする。
画像処理装置2は検査対象物8の画像から寸法計測や位置検出、面積計算などの各種計測処理を実行する。たとえば、画像処理装置2はカメラ4から得られた画像データを用いて画像処理を実行し、外部接続されたPLC3などの制御機器に対し、検査対象物8の良否などの判定結果を示す信号として判定信号を出力する。
カメラ4は検査対象物8を撮像する撮像素子を有するカメラモジュールを備えている。撮像素子としては、たとえばCMOS(相補型金属酸化膜半導体)やCCD(電荷結合素子)を用いることができる。カメラ4は、PLC3から入力される制御信号、たとえばカメラ4から画像データを取り込むタイミングを規定する撮像トリガ信号に基づいて、検査対象物8の撮像を行う。
モニタ10は液晶パネルや自発光式パネル等の表示装置である。検査対象物8を撮像して得られた画像や、その画像データを用いた計測処理の結果を表示する。モニタ10は、パターンマッチング用の比較データ(規範画像)を作成するために使用される基準画像など、良品から取得された画像を表示してもよい。なお、規範画像はモデル画像と呼ばれてもよい。
コンソール9は、ユーザがモニタ10上で各種操作するため(モニタ10がタッチパネルなら省略可)の入力装置である。コンソール9は、モニタ10上で各メニュー項目を選択したり、パラメータ値を設定したりする。コンソール9は、ポインティングデバイスの一例である。つまり、コンソール9はマウスであってもよい。ユーザは、モニタ10を視認することで、画像処理装置2の運転中の動作状態を確認することができる。また、ユーザは、モニタ10を視認しつつ、コンソール9を操作することによって、必要に応じて各種設定や各種編集を行うことができる。
照明装置5は、検査対象物8を照明する装置である。照明装置5としては、たとえば、光沢を際立たせる同軸落射照明、傷や刻印のエッジが際立つローアングル照明、ブラックライトを当てるブラックライト照明、面照明(検査対象物の透過光または影を観察するための透過照明)、四方八方から拡散光を照射するドーム照明など、各種の照明を行う照明装置が採用されうる。特に、同軸落射照明は、視野全体に略均一に照明を当てる照明手法であり、カメラ4と照明装置5をV字に配置して検査対象物8からの正反射光を受光する照明手法とほぼ同様の効果が得られる利点がある。また、ローアングル照明は、たとえばLED等の投光素子をリング状に配置し、検査対象物8の表面を浅い角度で全周方向から光を照らす照明手法である。検査対象物8の表面に当たった光はカメラ4の方向には反射せず、刻印や傷のエッジ部分で反射した光だけが受光される。すなわち、照射角度が非常に浅い角度であるため、光沢面では反射が弱く、検査対象物8上の僅かな傷やエッジでのみ強い反射が得られ、はっきりとしたコントラストが得られる。
プログラム作成支援装置11は、画像処理装置2が実行する制御プログラムまたは設定データを作成するためのコンピュータ(PC)である。制御プログラムは、以下で説明するような外観検査に関するそれぞれ異なる計測を実行するための複数の計測処理モジュールを有している。画像処理装置2は、設定された順番に沿って各種計測処理モジュールを呼び出して実行する。プログラム作成支援装置11と画像処理装置2とは、通信ケーブルや通信ネットワークを介して接続されている。プログラム作成支援装置11上で生成された制御プログラムやパラメータ値等の設定データは通信ケーブル等を介して画像処理装置2に転送される。また逆に、画像処理装置2から制御プログラムやパラメータ値等の設定データなどを取り込んで、プログラム作成支援装置11が再編集してもよい。
工場において、複数の検査対象物8は、コンベアなどの搬送装置7のライン上を流れてくる。画像処理装置2は、検査対象物8の上方(または側方、下方)に設置されているカメラ4により検査対象物8を撮像し、撮像した画像を基準画像(たとえば良品を撮像した画像)や基準画像から作成したモデル画像と比較して、検査対象物8に傷や欠損等が存在するか否かの判断を行う。検査対象物8に傷や欠損等が存在すると判断した場合には、NG判定となる。一方、検査対象物8に傷や欠損等が存在しないと判断した場合には、OK判定となる。このように、外観検査システム1は、検査対象物8を撮像した画像を用いて、検査対象物8の外観の良否判定を行う。なお、本明細書において外観検査または画像検査は、検査対象物の傷や欠損の有無に基づく良否判定のみならず、検査対象物の有無の判別や、検査対象物の位置決め等を含む。
検査対象物8の外観検査を行う場合、ユーザは検査に用いる各種パラメータの内容(パラメータ値等)を設定する必要がある。パラメータとしては、たとえば、シャッタースピードなどの撮像条件を規定する撮像パラメータ、照度などの照明条件を規定する照明パラメータ、どのような検査を行うかを示す検査条件を規定する計測処理パラメータ(いわゆる検査パラメータ)等がある。外観検査システム1では、良否判定を行う前に、これらの各種パラメータの内容を設定する。
外観検査システム1は、実際に搬送装置7のライン上を次々と流れてくる検査対象物8の外観検査を行うモード、すなわち実際に検査対象物8の良否判定を行う運転モード(Runモード)と、検査に用いられる各種パラメータの内容の設定を行う設定モード(非Runモード)とを有しており、これらのモードを切り替えるためのモード切替手段を有している。ユーザは、運転モードにおいて、搬送装置7のライン上を流れてくる複数の検査対象物8に対して良否判定が繰り返し行われる前に、設定モードにおいて、各種パラメータに対して最適なパラメータ値を設定(調整)する。基本的に、各種パラメータに対してはデフォルト値が設定されており、ユーザがパラメータ値としてデフォルト値が最適であると判断した場合には、特段、パラメータ値を調整する必要はない。しかし、実際のところ、周囲の照明環境、カメラ4の取り付け位置、カメラ4の姿勢ずれ、ピント調整等の相違に起因して、デフォルト値のままではユーザが望む判定結果を得ることができない場合がある。そこで、設定モードにおいて、画像処理装置2のモニタ10上またはプログラム作成支援装置11上にて、運転モードから設定モードに切り換え、各種パラメータの内容を編集できるようになっている。
データストレージ6は、外観検査システム1の設定データや検査結果などをバックアップするNAS(Network Attached Storage)などのストレージである。データストレージ6は、自己が保持している設定データを画像処理装置2に対してリストアする機能を有していてもよい。
クラウド12は、たとえば、データストレージ6に記憶されているデータをバックアップするストレージサーバ(ファイルサーバ)である。クラウド12は、外観検査システム1が設置されている工場の外部に設けられていることから、外部サーバと呼ばれてもよい。なお、データストレージ6は、外観検査システム1が設置されている工場の内部に設置されていてもよいし、工場の外部に設置されていてもよい。PC(パーソナルコンピュータ)13a、13b、13cはデータストレージ6やクラウド12に接続し、設定データや検査結果などを表示装置に表示するコンピュータである。
<外観検査システム1のハードウエア構成>
図2は外観検査システム1のハードウエア構成の一例を示す図である。主制御部21は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウエア各部の制御を行う。たとえば、中間演算処理装置としてのCPU22a、ワークメモリ23aおよびプログラムメモリ24aとを有している。ワークメモリ23aは主制御部21が各種プログラムを実行する際のワークエリアとして機能するRAMなどである。プログラムメモリ24aは、起動プログラムや初期化プログラムなどが格納されたROM、フラッシュROMまたはEEPROMなどである。照明制御部26は主制御部21のCPU22aやPLC3からの命令に基づいて照明装置5に対して照明制御信号を送信する。
画像入力部25はカメラ4での撮像により取得された画像データを取り込むASIC(Application Specific Integrated Circuit)などから構成される。画像入力部25には画像データをバッファリングするためのフレームバッファが含まれていてもよい。具体的に、画像入力部25は、CPU22aからカメラ4の撮像指令を受信すると、カメラ4に対して画像データ取り込み信号を送信する。そして、画像入力部25は、カメラ4で撮像が行われた後、撮像して得られた画像データを取り込む。取り込んだ画像データは、一旦バッファリング(キャッシュ)される。
操作入力部27aは、コンソール9からの操作信号が入力される。操作入力部27aは、ユーザの操作に応じてコンソール9が出力する操作信号を受信するインターフェース(I/F)として機能する。
モニタ10には、コンソール9を用いたユーザの操作内容が表示される。具体的に説明すると、コンソール9を操作することによって、ユーザはモニタ10上で、画像処理の制御プログラムを編集したり、各計測処理モジュールのパラメータ値を編集したり、カメラ4の撮像条件を設定したり、基準画像の中で特徴的な部分を規範画像として登録したり、サーチ領域内をサーチして規範画像に一致した領域を検査領域として設定したりと、様々なことを行うことができる。
表示制御部28aはモニタ10に対して画像やGUIを表示させる表示用DSP(デジタルシグナルプロセッサ)などから構成される。GUIはグラフィカルユーザインタフェースの略称である。表示制御部28aには、画像を表示させる際に画像データを一時記憶するVRAMなどのビデオメモリが含まれていてもよい。表示制御部28aはCPU22から送られてきた表示指令(表示コマンド)に基づいてモニタ10に対して所定の画像(映像)を表示させるための制御信号を送信する。たとえば、表示制御部28aは、計測処理前または計測処理後の画像データを表示するために、モニタ10に対して制御信号を送信する。また、表示制御部28aはコンソール9を用いたユーザの操作内容をモニタ10に表示させるための制御信号も送信する。
通信部29aは、外部のPLC3やプログラム作成支援装置11、データストレージ6などと通信可能に接続される。通信部29aは送信回路と受信回路とを含むネットワーク通信デバイスやシリアル通信デバイスなどである。たとえば、センサ(不図示の光電センサ等)が検査対象物8の到着タイミングを認識するために製造ラインに設置され、かつ、PLC3に接続されている。当該センサは検査対象物8を検知するとトリガ信号を出力する。通信部29aはPLC3から出力されたトリガ信号を受信するインターフェース(I/F)として機能する。トリガ信号はカメラ4に撮像を実行させる制御信号として利用される。また、通信部29は、プログラム作成支援装置11から転送されてくる画像処理装置2の制御プログラムなどを受信するインターフェース(I/F)としても機能する。
画像処理部30は寸法演算やエッジ検出、面積計算などの計測処理を実行する演算用DSPなどから構成される。画像処理部30には計測処理用の画像データを記憶するメモリが含まれていてもよい。画像処理部30は画像データに対する計測処理を実行する。具体的に、画像処理部30は、画像入力部25のフレームバッファから画像データを読み出して、画像処理部30内のメモリへ内部転送を行う。そして、画像処理部30は、そのメモリに記憶された画像データを読み出して、計測処理を実行する。
プログラムメモリ24aは、照明制御部26、画像入力部25、操作入力部27、表示制御部28、通信部29、および画像処理部30の各部を、CPU22aのコマンド等により制御するための制御プログラムを格納している。また、プログラム作成支援装置11から転送されてきた制御プログラムはプログラムメモリ24aに格納される。
CPU22aは、通信部29を介してPLC3から撮像トリガ信号を受信すると、画像入力部25に対して撮像指令(コマンド)を送る。また、CPU22aは、制御プログラムに基づいて、画像処理部30に対して、実行すべき画像処理を指示するコマンドを送信する。なお、撮像トリガ信号を生成する装置として、PLC3ではなく、光電センサなどのトリガ入力用のセンサを通信部29に直接接続してもよい。
これらの各ハードウエアは、バスなどの電気的な通信路(配線)を介し、通信可能に接続されている。
<計測モジュール(画像処理ツール)>
ここでは、外観検査を実行する計測モジュールを画像処理ツールと呼ぶことにする。なお、画像処理ツールは検査ツールや計測ツールと呼ばれてもよい。画像処理ツールには様々なものがあり、主要な画像処理ツールとしては、エッジ位置計測ツール、エッジ角度計測ツール、エッジ幅計測ツール、エッジピッチ計測ツール、エリア計測ツール、ブロブ計測ツール、パターンサーチ計測ツール、傷計測ツールなどがある。
●エッジ位置計測ツール:検査対象物8の画像が表示される画面上において、エッジ位置を検出したい検査領域に対してウインドウを設定することにより、設定された検査領域内で、任意の方向にスキャンして複数のエッジ(明から暗に切り替わる箇所または暗から明に切り替わる箇所)を検出する。検出した複数のエッジから、一のエッジの指定を受け付け、指定を受け付けたエッジの位置を計測する。
●エッジ角度計測ツール:設定を受け付けた検査領域内に2つのセグメントを設定し、それぞれのセグメントで検出したエッジからの検査対象物8の傾斜角度を計測する。傾斜角度は、たとえば時計回りを正とすることができる。
●エッジ幅計測ツール:設定を受け付けた検査領域内で、任意の方向にスキャンして複数のエッジを検出し、検出した複数のエッジ間の幅を計測する。
●エッジピッチ計測ツール:設定を受け付けた検査領域内で、任意の方向にスキャンして複数のエッジを検出する。検出した複数のエッジ間の距離(角度)の最大値/最小値や平均値を計測する。
●エリア計測ツール:カメラ4で撮像した検査対象物8の画像を二値化処理して、白色領域または黒色領域の面積を計測する。たとえば、計測する対象として白色領域または黒色領域の指定をパラメータとして受け付けることにより、白色領域または黒色領域の面積を計測する。
●ブロブ計測ツール:カメラ4で撮像した検査対象物8の画像を二値化処理して、同一の輝度値(255または0)の画素の集合(ブロブ)に対してパラメータとしての数、面積、重心位置等を計測する。
●パターンサーチ計測ツール:比較対象とする画像パターン(モデル画像)を事前に記憶装置に記憶しておき、撮像した検査対象物8の画像の中から記憶してある画像パターンに類似している部分を検出することで、画像パターンの位置、傾斜角度、相関値を計測する。
●傷計測ツール:設定を受け付けた検査領域内で、小領域(セグメント)を移動させて画素値の平均濃度値を算出し、閾値以上の濃度差となった位置を傷が存在すると判定する。
●その他にも、検査領域内の文字情報を切り出して辞書データ等と照合することで文字列を認識するOCR認識ツール、画像上に設定したウインドウ(領域)をシフトさせながら、各ウインドウの位置においてエッジの検出を繰り返す機能を有するトレンドエッジツール、設定したウインドウ内の濃淡の平均、偏差等を計測する機能を有する濃淡ツール、設定したウインドウ内の濃度の平均、偏差等を計測する機能を有する濃度ツールなどもあり、ユーザは検査内容に応じて必要な画像処理ツールを選択することができる。なお、これらの画像処理ツールは、典型的な機能およびその実現方法の代表例を示すものに過ぎない。あらゆる画像処理に対応する画像処理ツールが本願発明の対象になり得る。
<画像処理装置の機能>
図3は画像処理装置2の主要部を示している。画像処理部30のサーチ部33はワークメモリ23aの設定データ40aの検査領域データ42に基づき検査対象物8の画像から計測対象をサーチして計測対象の位置を求める。サーチ部33は基準画像41を用いたマッチング処理により計測対象の位置を求めてもよい。検査領域データ42は、たとえば、基準画像41における模範画像の位置を示す座標データや、模範画像の位置を基準とした計測対象の位置を示す座標データなどであってもよい。寸法演算部34は上記の計測モジュールを有しており、たとえば、設定データ40aに基づき検査対象物8の画像から計測対象の寸法を計測する。
CPU22aの検査部31は画像処理部30で取得された計測結果(例:検査結果35aの寸法データ36)が、設定データ40aに含まれている判定条件(例:合格条件43)を満たしているかどうかを判定する。合格条件は公差のデータであってもよい。検査部31は検査対象物8ごとの検査結果35aをワークメモリ23aに書き込む。検査結果35aは、たとえば、寸法演算部34により取得された寸法データ36を含む。なお、合格と判定された検査対象物8の画像はOK画像37として検査結果35aに含まれていてもよい。不合格と判定された検査対象物8の画像はNG画像38として検査結果35aに含まれていてもよい。アップロード部32は、アップロード条件が満たされると、ワークメモリ23aに保持されている設定データ40aや検査結果35aをデータストレージ6に対して通信部29aを介してアップロード(送信)する。アップロード条件は、たとえば、定期的、検査対象物8ごと、データストレージ6からアップロード要求を受信したことなどである。
<データストレージ6のハードウエア構成>
図4はデータストレージ6のハードウエア構成を示している。すでに説明された構成要素と同一または類似の構成要素には同一の参照符号が付与されている。ただし、参照符号の末尾には構成要素を区別するためのa、b、c・・・文字が付与されている。本明細書において共通する事項が説明されるときは参照符号の末尾に付与されているa、b、c・・・の文字は省略されることがある。
CPU22bはプログラムメモリ24bに記憶されている制御プログラムを実行し、制御プログラムにしたがって画像処理装置2からデータを取得してワークメモリ23bまたはHDD(ハードディスクドライブ)39bに書き込む。通信部29bは画像処理装置2やクラウド12、PC13aへデータを送信する送信回路と、これらからデータを受信する受信回路とを含む通信回路である。CPU22bはクラウド12への転送条件が満たされると、画像処理装置2からバックアップしたデータを、通信部29bを介してクラウド12に送信する。
図5はCPU22bが制御プログラムを実行することで実現する機能を示している。各機能はハードウエア回路により実現されてもよい。判定部50は、通信部29bの受信回路が画像処理装置2から設定データを受信すると、受信された設定データ40aとHDD39bに記憶されている設定データ40bとの間に差があるかを判定する。たとえば、画像比較部51は、画像処理装置2から受信された設定データ40aに含まれている基準画像41とHDD39bに記憶されている設定データ40bに含まれている基準画像とが異なっている場合に、受信された設定データ40aと記憶されている設定データ40bとの間に差があると判定してもよい。情報量比較部52は、受信された設定データ40aの情報量と、記憶されている設定データ40bの情報量とに差がある場合に、設定データ40aと設定データ40bとの間に差があると判定する。タイムスタンプ比較部53は、設定データ40aのタイムスタンプと、設定データ40bのタイムスタンプとに差がある場合に、設定データ40bと設定データ40cとの間に差があると判定してもよい。なお、HDD39bが複数の設定データ40b、40cを記憶している場合、判定部50は、タイプスタンプが最も新しい設定データを比較対象として選択する。設定部54は、画像処理装置2からのデータのバックアップに関する設定し、クラウド12へのデータの転送処理に関する設定を実行する。
判定部50が設定データ40aと設定データ40bとの間に差があると判定すると、転送部57は設定データ40aをクラウド12へ送信する。なお、設定データ40aは、基準画像41、検査領域データ42、合格条件43などの複数のサブデータを有していてもよい。判定部50は、サブデータごとに一致/不一致を判定し、転送部57は不一致と判定されたサブデータだけをクラウド12へ転送してもよい。なお、書込み部56は、バックアップ部55が画像処理装置2から取得したデータをすべてHDD39bに書き込んでもよい。ただし、書込み部56は、一致したサブデータを削除し、その代わりに、HDD39bに保持されている同一の他のデータを参照することを示す参照情報(リンクファイルなど)をHDD39bに格納してもよい。たとえば、画像処理装置2から今回受信した設定データ40cがすでにHDD39bに保持されている過去の設定データ40bと一致している場合、書込み部56は、設定データ40cを参照する参照ファイル(リンクファイル)に置換してもよい。
設定部54は、PC13aからバックアップに関する設定情報(バックアップ設定)を受け付け、設定情報をプログラムメモリ24cまたはHDD39cに記憶させる。なお、設定部54はPC13aに対して設定情報を作成するためのWebユーザインタフェースを提供してもよい。PC13aは、データストレージ6に関連付けられた所定のURLにWebブラウザを通じてアクセスすることで設定情報の作成画面を開き、必要な情報を入力してもよい。設定部54は、検査結果35b、35cに含まれているOK画像37をクラウド12に送信するか否かを設定する第一設定手段として機能してもよい。設定部54は、検査結果35b、35cに含まれているNG画像38をクラウド12に送信するか否かを設定する第二設定手段として機能してもよい。設定部54は、検査結果35b、35cをクラウド12に送信するか否かを設定する第三設定手段として機能してもよい。なお、設定情報を作成するプログラムはPC13aにインストールされていてもよい。この場合、設定部54はPC13aに設けられ、設定情報はPC13aからデータストレージ6のHDD39bなどに書き込まれる。
このようにバックアップ部55は画像処理装置2から設定データ40aや検査結果35aなどを取得する。書込み部56は、判定部50の判定結果にしたがって、設定データ40aや検査結果35aなどを設定データ40b、40cや検査結果35b、35cとしてHDD39bに書き込ででもよい。転送部57は、判定部50の判定結果にしがって設定データ40b、40cや検査結果35b、35cなどをクラウド12へ転送する。なお、転送部57が設定データ40aや検査結果35aをクラウド12へ転送した後で、書込み部56が設定データ40aや検査結果35aをHDD39bに書き込んでもよい。設定データ40aや検査結果35aは一時的にワークメモリ23bに保持されて判定処理を適用されてもよい。
設定部54は、複数のサブデータのうち通信部29bを通じてクラウド12にバックアップされるサブデータを指定する指定手段として機能してもよい。この場合、判定部50は、指定されたサブデータについて差の有無を判定する。転送部57は、指定されたサブデータのうち判定部50により差があると判定されたサブデータをクラウド12に送信する。
書込み部56は、画像処理装置2から設定データをバックアップしたタイミングごとにHDD39bにフォルダ58a、58bを作成して設定データを記憶してもよい。フォルダ58aは、第一バックアップタイミングに画像処理装置2から取得された設定データ40bを記憶する第一フォルダの一例である。フォルダ58bは第一バックアップタイミングよりも後の第二バックアップタイミングに画像処理装置2から取得された設定データ40cを記憶する第二フォルダの一例である。上述したように、フォルダ58bは、第二バックアップタイミングに画像処理装置2から取得された複数のサブデータを記憶している。この複数のサブデータのうち一部が、フォルダ58aに記憶されているいずれかのサブデータと同一である場合もある。この場合に、書込み部56は、フォルダ58bに同一のサブデータを記憶する代わりに、フォルダ58aのサブデータを参照するファイルを書き込む。
<クラウド12の構成>
図6はクラウド12のハードウエア構成を示している。CPU22cはプログラムメモリ24cに記憶されている制御プログラムを実行し、制御プログラムにしたがってデータストレージ6からデータを受信してワークメモリ23cまたはHDD39cに書き込む。通信部29cはデータストレージ6やPC13とデータを送信したり、受信したりする通信回路である。CPU22cはデータストレージ6からログインIDやパスワードなどの認証情報を受信して認証処理を実行し、認証処理に成功すると、ログインIDに関連付けられているフォルダへのデータの書き込みを許可してもよい。上述したデータストレージ6の転送部57は、ログインIDやパスワードをHDD39bから読み出して、クラウド12へ送信する。
<PC13の構成>
図7はPC13のハードウエア構成を示している。CPU22dはプログラムメモリ24dに記憶されている制御プログラムを実行し、制御プログラムにしたがってデータストレージ6の設定情報を作成し、データストレージ6に書き込む。この場合、制御プログラムは設定情報の作成プログラムである。データストレージ6がWebサーバ機能を有し、Webサーバ機能を通じてWebUIを提供している場合、制御プログラムはWebブラウザである。通信部29dはデータストレージ6やクラウド12へデータを送信する送信回路と、これらからデータを受信する受信回路とを含む通信回路である。CPU22dは通信部29dを介して受信したデータをワークメモリ23dまたはHDD39dに書き込む。操作部14はキーボードとポインティングデバイスであり、ユーザからの情報をCPU22dに入力する。ディスプレイ15は液晶表示装置などの表示デバイスであり、CPU22dから出力された情報を表示する。
<設定UI>
図8はバックアップ設定を編集するための設定UI(ユーザインタフェース)60aを示す図である。設定UI60aは、画像処理装置2からバックアップされた設定データや検査結果をクラウド12へバックアップするための設定UIである。画像処理装置2からデータストレージ6へバックアップするための設定は別の設定UIを通じて設定されてもよい。あるいは、画像処理装置2からデータストレージ6へのバックアップと、データストレージ6からクラウド12へのバックアップは、一連のバックアップ処理として実行されてもよい。
CPU22dは設定プログラムにしたがって設定UI60aをディスプレイ15に表示する。あるいは、CPU22dはWebブラウザを通じてデータストレージ6から受信したhtmlファイルなどをディスプレイ15に表示してもよい。メッセージ61は、設定UI60aの概要と、現時点で設定されているバックアップ日時やバックアップ対象などを説明するためのテキストである。ラジオボタン62はクラウド12へのバックアップを実行するかどうかを選択するためのボタンである。キャンセルボタン63は、今回ユーザにより入力または変更された設定内容を破棄することをCPU22dに指示するためのボタンである。確定ボタン64は、今回ユーザにより入力または変更された設定内容を確定することをCPU22dに指示するためのボタンである。CPU22dは確定ボタン64が押されたことを検知すると、変更された設定情報をプログラムメモリ24dまたはHDD39dに書き込む。さらに、CPU22dは設定情報(バックアップ設定)をデータストレージ6に送信し、データストレージ6のHDD39bなどに書き込む。詳細設定ボタン65は設定情報を詳細に設定することをCPU22dに要求するためのボタンである。CPU22dは詳細設定ボタン65が押されたことを検知すると、ディスプレイ15に詳細設定を行うための設定UIを表示する。
図9は詳細設定のための設定UI60bを示している。テキストボックス66はバックアップ時刻を設定するためのボックスである。テキストボックス66は複数のバックアップ時刻の入力を受け付けてもよい。これにより、一日に複数回にわたりバックアップが実行される。バックアップ対象設定部67は、バックアップ対象となる画像処理装置(コントローラ)、設定データおよび検査結果を設定するためのUIである。ここでは省略されているが、設定データに含まれている複数のサブデータのいずれをバックアップするかを指定するためのUIや検査結果に含まれる複数の計測データのうちいずれをバックアップするかを指定するためのUI、クラウド12のURLや認証情報を指定するためのUIなども設定UI60bに含まれてもよい。
<フローチャート>
図10はバックアップ処理を示すフローチャートである。データストレージ6のCPU22bは制御プログラムにしたがって以下処理を実行する。ここでは、画像処理装置2からデータストレージ6へのバックアップとデータストレージ6からクラウド12へのバックアップは一連のバックアップ処理として実行されるものと仮定されている。
S1でCPU22b(バックアップ部55)はPC13aによって編集されたバックアップ設定に含まれているバックアップ時刻とリアルタイムクロックの時刻とを比較し、バックアップ時刻が到来したかどうかを判定する。リアルタイムクロック(RTC)はCPU22bが備える内部時計である。バックアップ時刻が到来すると、CPU22bはS2に進む。
S2でCPU22b(バックアップ部55や書込み部56)は画像処理装置2から設定データ40aや検査結果35aをバックアップする。たとえば、バックアップ部55は画像処理装置2が保持しているすべての設定データ40aと検査結果35aを画像処理装置2から取得してもよいし、バックアップ設定により指定された設定データ40aや検査結果35aの一部を画像処理装置2から取得してもよい。書込み部56は、取得された設定データ40aや検査結果35aをHDD39bに書き込む。
S3でCPU22b(判定部50)は、今回取得された設定データ40a(40c)や検査結果35a(35c)と、前回取得された設定データ40a(40b)や検査結果35a(35b)とを比較し、両者に差分があるかどうかを判定する。ここで、比較対象とされるデータはバックアップ設定によりクラウド12へのバックアップ対象として指定されたデータである。今回のデータと前回のデータとの間に差分があると、CPU22bはS4に進む。この判定処理は、バックアップ設定により指定された複数のバックアップ対象のそれぞれいついて実行される。また、複数のバックアップ対象のうち一つでも差分が検知されると、CPU22bはS4に進む。また、この判定処理には、画像比較部51により実行される画像比較、情報量比較部52により実行される情報量比較、タイムスタンプ比較部53により実行されるタイムスタンプ比較などが含まれてもよい。また、書込み部56は、差分の存在しない設定データや検査結果については前回の設定データや検査結果を参照する参照ファイルに置換してもよい。書込み部56は、サブデータごとに参照フィルへの置き換えを実行してもよい。
S4でCPU22b(転送部57)は、バックアップ対象をクラウド12へ送信する。転送部57は、バックアップ対象のうち、差分の検出されたデータだけをクラウド12へ転送してもよい。これによりクラウド12への通信負荷が削減される。あるいは、転送部57は、バックアップ対象をすべて転送してもよい。この場合、転送部57は、差分の検出されなかったバックアップ対象をそのまま転送せずに、過去のデータと同一であったことを示すデータ(参照ファイル)に置換してから送信してもよい。一般に参照ファイルの情報量は元のデータの情報量よりも少ないため、通信負荷が削減される。
<まとめ1>
図1を用いて説明したように、外観検査システム1は画像処理装置2と、画像処理装置2が実行する画像検査の設定データをバックアップするデータストレージ6とを有する。なお、外観検査システム1は画像処理システムと呼ばれてもよい。図2、図3が示すように、ワークメモリ23aは、画像検査の設定データを記憶する第一記憶手段の一例である。検査部31や画像処理部30は画像処理装置2に接続または一体化された撮像手段(例:カメラ4)により取得されたワークの画像に対して、設定データにしたがった画像検査を実行する検査手段の一例である。アップロード部32や通信部29aは第一記憶手段に記憶されている設定データをデータストレージ6に送信する第一送信手段の一例である。図4、図5が示すように、HDD39bは画像処理装置2の設定データを記憶する第二記憶手段の一例である。通信部29bやバックアップ部55は、画像処理装置2から送信される設定データを受信する受信手段の一例である。判定部50は、通信部29bにより受信された設定データとHDD39bに記憶されている設定データとの間に差があるかを判定する判定手段の一例である。転送部57や通信部29bは、受信された設定データと記憶されている設定データとの間に差があると判定部50が判定すると、外観検査システム1の外部に存在する外部サーバ(例:クラウド12)に対して、受信された設定データを送信する第二送信手段の一例である。このように、本実施例によれば、外観検査システム1のデータをクラウド12に対してバックアップする際の通信負荷が軽減される。
図3が示すように、設定データ40aは、予め良品と判定されたワークから取得され、画像検査の基準として使用される基準画像41を含んでもよい。判定部50は、画像処理装置2から受信された設定データ40a(40c)に含まれている基準画像と、HDD39bに記憶されている設定データ40bに含まれている基準画像とが異なっている場合に、受信された設定データ40a(40c)と記憶されている設定データ40bとの間に差があると判定してもよい。とりわけ、基準画像41は、他の設定データと比較して情報量が多い。そのため、基準画像41の転送を省略することで、通信負荷が軽減される。
判定部50は、画像処理装置2から受信された設定データ40a(40c)の情報量と、HDD39bに記憶されている設定データ40bの情報量とに差がある場合に、受信された設定データと記憶されている設定データとの間に差があると判定してもよい。一般に、二つのデータが異なれば、二つのデータの情報量も異なるからである。
判定部50は、画像処理装置2から受信された設定データ40a(40c)のタイムスタンプと、HDD39bに記憶されている設定データ40bのタイムスタンプとに差がある場合に、受信された設定データと記憶されている設定データとの間に差があると判定してもよい。一般に二つのデータのタイムスタンプが異なれば、二つのデータが異なっている可能性が高いからである。
図3などに示したように、ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31により合格と判定されたワークの画像であるOK画像37を記憶するように構成されていてもよい。さらに、設定部54は、OK画像37を外部サーバに送信するか否かを設定する第一設定手段を有していてもよい。クラウド12が多数のOK画像37を解析することで、ワークの製造精度に余裕があるのかどうかを判定することも可能となろう。
ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31により不合格と判定されたワークの画像であるNG画像38を記憶してもよい。設定部54は、NG画像38を外部サーバに送信するか否かを設定する第二設定手段を有してもよい。クラウド12が多数のNG画像38を解析することで、ワークの製造上の課題を見つけやすくなろう。
設定データ40aは複数のサブデータから構成されていてもよい。設定部54は複数のサブデータのうち通信部29bにより送信されて外部サーバにバックアップされるサブデータを指定する指定手段を有してもよい。判定部50は、設定部54により指定されたサブデータについて差の有無を判定するように構成されていてもよい。転送部57は、設定部54により指定されたサブデータのうち判定部50により差があると判定されたサブデータを外部サーバに送信してもよい。このように設定データの比較は設定データを構成しているサブデータごとに実行されてもよい。
HDD39bは、画像処理装置2から設定データ40aをバックアップしたタイミングごとにフォルダを作成して当該設定データを記憶してもよい。これにより、バックアップされた設定データ40aの管理が容易になろう。
HDD39bは、第一バックアップタイミングに画像処理装置2から取得された設定データ40bを記憶する第一フォルダ(例:フォルダ58a)と、第一バックアップタイミングよりも後の第二バックアップタイミングに画像処理装置2から取得された設定データ40a(40c)を記憶する第二フォルダ(フォルダ58b)とを有してもよい。第二バックアップタイミングに画像処理装置2から取得された複数のサブデータに第一フォルダに記憶されているいずれかのサブデータと同一のサブデータが含まれていることがある。この場合、書込み部56は、第二フォルダに同一のサブデータを記憶する代わりに、第一フォルダのサブデータを参照するファイルを記憶させてもよい。これにより、HDD39bの記憶容量を有効活用することが可能となろう。
ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31によるワークの検査結果35aを記憶するように構成されていてもよい。データストレージ6の設定部54は、検査結果を外部サーバに送信するか否かを設定する第三設定手段をさらに有してもよい。これにより、検査結果の転送を省略して、設定データがクラウド12にバックアップされるようになる。また、検査結果とともに設定データがクラウド12にバックアップされるようになってもよい。
データストレージ6から設定データを外部サーバにバックアップする頻度は、画像処理装置2から設定データをデータストレージ6にバックアップする頻度よりも少なくてもよい。本実施例によれば、現在の設定データと過去の設定データとに差がある場合に、現在の設定データがクラウド12にバックアップされる。これは、両者に差がない場合は、バックアップが実行されない、よって、クラウド12のバックアップ頻度は、データストレージ6のバックアップ頻度よりもすくなくなる。また、データストレージ6が画像処理装置2から設定データをN回バックアップするごとに、データストレージ6はクラウド12に対して設定データを1回転送してもよい。ここで、データストレージ6からクラウド12へ転送されるデータは、N回のバックアップにより取得されたすべてのデータであってもよいし、最新の一回分のデータであってもよい。前者のバックアップは、ネットワークの通信負荷が比較的に低い深夜に実行されてもよい。
データストレージ6とクラウド12との間の通信速度は、画像処理装置2とデータストレージ6との間の通信速度よりも遅くてもよい。このようなケースでは、特に本発明を適用することが望まれるであろう。
データストレージ6はネットワークアタッチストレージ(NAS)であってもよい。また、外部サーバはクラウドであってもよい。
判定部50は、バックアップ部55により取得された現在の設定データと、現在の設定データよりも先にバックアップ部55により取得されてHDD39bに記憶された過去の設定データとの間にある差を検知する検知手段の一例である。転送部57は、判定部50が差を検知すると、外観検査システム1の外部に存在する外部サーバに現在の設定データを書き込む書き込み手段の一例である。プログラム作成支援装置11は、画像処理装置2に接続され、第一記憶手段(ワークメモリ23a)に記憶されている設定データを編集する編集手段(CPU22)を有していてもよい。プログラム作成支援装置11のハードウエア構成はPC13と基本的に同じであってもよい。
<設定支援>
上述したように画像処理装置2の設定データ40はデータストレージ6やクラウド12などのデータサーバに保持されている。したがって、サポート担当者はデータサーバにアクセスできれば、設定データを編集できるだろう。しかし、編集された設定データが正しく動作するかどうかは、画像処理装置2に実際に設定データを設定してワークの検査を実行させて見なければわからない。そこで、本実施例では、クラウド12に画像処理装置2のシミュレータが設けられ、編集された設定データが正しく動作するかどうかがチェックされる。これにより、サポート担当者は、プログラム作成支援装置11やPC13cにリモートログインせずに、ユーザによる設定データの編集を支援できるようになる。
図11は設定支援の流れを示すシーケンス図である。図12はクラウド12の機能を示す図である。各機能はCPU22cがワークメモリ23cに記憶されている制御プログラム(設定サポートプログラム)を実行することで実現される。
S11でユーザのPC13cはサポート要求をクラウド12に送信する。PC13cの代わりにプログラム作成支援装置11やPC13aがサポート要求を送信してもよい。サポート要求は、ユーザ名や検査設定番号、画像処理装置2の機種やネットワークアドレスを特定可能な識別情報など、クラウド12に保持されている設定データを特定可能な情報を含んでもよい。あるいは、クラウド12がユーザの識別情報と画像処理装置2の識別情報との関連付を管理するデータベースを保持していてもよい。この場合に、サポート要求にはユーザの識別情報が含まれていればよい。クラウド12はユーザの識別情報をキーとしてデータベースから画像処理装置2の識別情報を取得してもよい。クラウド12のUI部70の要求受付部71はサポート要求を受信する。たとえば、要求受付部71はPC13cがアクセスしてくると、サポート要求を入力するためのWebページをPC13cに送信してもよい。このWebページはサポート要求を発行するためのボタン(buttonタグなど)などを有していてもよい。また、このWebページは、サポート要求先(サポート担当者)を指定するためのテキストボックスやプルダウンメニューを有していてもよい。このWebページは、画像処理装置2の識別情報を指定するためのテキストボックスやプルダウンメニューを有していてもよい。ユーザはPC13cを通じてサポート要求先や画像処理装置2の識別情報を指定し、サポート要求の発行ボタンを押す。PC13cは、サポート担当者や画像処理装置2の識別情報などを含むサポート要求をクラウド12へ送信する。要求受付部71はサポート要求を受信すると、サポート担当者や画像処理装置2の識別情報を特定するとともに、発行部72にアクセスコードの発行を指示する。
S14でクラウド12の発行部72はアクセスコードを発行し、サポート担当者のPC13bに送信する。アクセスコードは、所定のWebページにアクセスする際に必要な認証情報やURLなどを含んでもよい。所定のWebページは、PC13bが画像処理装置2の設定データを編集するための編集UIを提供するWebページである。PC13bのCPU22bは通信部29bを通じてアクセスコードを受信する。アクセスコードは、たとえば、電子メールやメッセージングサービスなどにより受信されてもよい。PC13bのCPU22bは通信部29bを通じてアクセスコードを受信する。
S15でPC13bのCPU22bは通信部29bを通じてアクセスコードをクラウド12に送信することで編集作業を開始する。たとえば、CPU22bは、電子メールの本文に記述されたアクセスコードのうちURLリンクへのクリックを検知すると、Webブラウザを起動し、URLリンクにしたがってクラウド12へアクセスする。クラウド12の認証部73はPC13bから受信したアクセスコードが、発行部72が発行したアクセスコードと一致しているかどうかを判定する。両者が一致していれば、認証部73はPC13bからのアクセスを許可し、両者が一致していなければ、認証部73はPC13bからのアクセスを禁止する。両者が一致していれば、認証部73はPC13bのアドレスを編集部74に渡す。編集部74は、PC13bのアドレスを宛先として、PC13bに編集UIを提供するためのHTMLファイルなどを送信する。PC13bのCPU22bは通信部29bを通じてHTMLファイルなどを受信するとブラウザプログラムにしたがって編集UIをディスプレイ15に表示する。編集部74は、PC13bにだけ設定データ40の編集権限を付与し、他のPCからの編集を制限してもよい。クラウド12には複数のPC13がアクセス可能であり、ときには同一工場内の複数のPC13が設定データ40の編集を試みることも考えられる。複数のPC13は異なる別の工場に配置されていることもある。そこで、編集部74は、設定データ40の編集権限を一つのPC13(一つのアカウント)にのみ付与する。この編集権限は、サポート要求で指定されている画像処理装置2の設定データを対象とした権限である。サポート担当者は、ディスプレイ15に表示された編集UIにしたがって設定データを編集する。たとえば、合格条件43や検査領域データ42、検査設定パラメータなどが編集される。編集部74は画像処理装置2に保持されている第一設定データを編集して第二設定データを作成する。CPU22bは通信部29bを通じてクラウド12へ編集結果を送信する。クラウド12の編集部74は編集結果を受信すると、設定データ40cに反映させる。
S16でCPU22bは通信部29bを通じてシミュレーション指示を送信する。編集UIにはシミュレーション指示を送信するためのボタンが設けられていてもよい。クラウド12の編集部74はシミュレーション指示を受信すると、編集された設定データ40cと、画像処理装置2から取得されたワーク画像44とをシミュレーション部80に与えてシミュレーションを実行する。ワーク画像44は画像処理装置2に接続されたカメラ4により撮像された検査対象物8の画像である。
S17で編集部74はPC13bにシミュレーション結果を表示するための編集UI90のHTMLファイルなどを送信する。PC13bのCPU22bは編集UI90のHTMLファイルを受信するとWebブラウザを通じて編集UI90をディスプレイ15に表示する。
図13は編集UIのうちシミュレーション結果を示す画面を示す図である。編集UI90は、設定データの編集画面を呼び出すためのボタン91aを有している。編集UI90は、シミュレーションの実行を指示するためのボタン91bを有している。ボタン91bが押されたことを検知すると、編集部74はシミュレーション部80に対して画像処理装置2による外観検査をシミュレーションするプログラムを実行する。演算エンジン81は主に画像処理装置2のCPU22aや画像処理部30などのハードウエアをシミュレーションする。ボタン91bが押されると、シミュレーション部80は演算エンジン81に選択された計測ツールと選択れたワーク画像44を通知し、演算エンジン81に計測ツールにしたがった計測処理を実行させる。演算エンジン81はシミュレーション結果(計測結果)を表示エンジン82に渡す。表示エンジン82は、表示制御部28aをシミュレーションするシミュレータである。つまり、表示エンジン82は、演算エンジン81が出力したシミュレーション結果にしたがって、モニタ10などに表示される検査画面(計測結果の表示画面など)を作成し、編集部74に出力する。編集部74は検査画面を含む編集UI90のHTMLファイルを作成してPC13bに送信する。編集部74の代わりに作成部76がHTMLファイルを作成してもよい。
検査ツール選択部92は検査ツール(計測ツール)を選択するためのUIである。表示領域93aはワーク画像44を表示する領域である。表示領域93bは、複数のワーク画像44のそれぞれの総合判定結果(合格/不合格)を表示する領域である。表示領域93cは、選択された計測ツールがワーク画像44から計測した結果を表示する領域である。表示領域93dは、表示領域93aに表示されたワーク画像44の総合判定結果を示す領域である。総合判定結果とは、複数の計測ツールのそれぞれについての計測結果と合格条件との比較結果をいう。サポート担当者はポインタ97を操作することでいずれかのワーク画像44を選択する。CPU22bは選択結果をクラウド12の編集部74へ送信する。クラウド12の編集部74は選択結果を編集UI90のHTMLファイルに反映してPC13bに送信する。たとえば、編集部74は選択されたワーク画像44のサムネイル画像を作成し、サムネイル画像が編集UI90に表示されるようにHTMLファイルを作成し、HTMLファイルとサムネイル画像をPC13bに送信してもよい。
図14は編集UI90のうち調整ナビゲーションを示す図である。調整ナビゲーションとは、計測ツールを個別に調整するためのUIである。この例では、クラウド12に蓄積されている複数のワーク画像44のうち、対象ツールで不合格となるべきワーク画像44を選択する画像選択部98aと、対象ツールで合格となるべきワーク画像44を選択する画像選択部98bとが例示されている。サポート担当者は、ポインタ97を用いて画像ファイルをドラックアンドドロップすることで、各ワーク画像44を画像選択部98a、画像選択部98bのどちらかに分類する。ボタン91cがポインタ97により押されたことを検知すると、編集部74は、シミュレーションの一つである一括テストを実行するためのUIに遷移する。
図15は編集UI90のうち、一括テストの実行結果を表示するためのUIを示している。表示領域93eは、一括テストを実行されている計測ツールを表示する領域である。ボタン91gは一括テストを演算エンジン81に実行させるためのボタンである。編集部74は、ボタン91gが押されたことを検知すると、演算エンジン81に設定データ40cやワーク画像44を渡してシミュレーションを実行させる。表示領域93fは、テスト対象として選択されたワーク画像44ごとのシミュレーション結果(合否)を示す領域である。ワーク画像44を識別するための番号や取得日時の左右には、編集前の設定データ40cを使用したシミュレーション結果を示すマーク105aと、編集後の設定データ40cを用いたシミュレーション結果を示すマーク105bとが表示されている。これによりサポート担当者は設定データ40cが正しく編集されたことを確認できる。この例では、編集前において合格とされるべきワーク画像が不合格と判定されていたが、編集後にはこのワーク画像が合格と判定されている。つまり、正しく設定データ40cが編集されたことが分かる。
S18でPC13bのCPU22bは通信部29bを通じて設定終了指示をクラウド12へ送信する。サポート担当者はシミュレーション結果を確認して設定データ40cが正しく編集されたことを確認すると、図15に示されたボタン91hを押す。HTTPプロトコルにしたがってボタン91hが押されたことを示す信号(設定終了指示)がPC13bからクラウド12へ送信される。
S19で編集部74はボタン91hが押されたことを検知すると、シミュレーション結果を含む編集結果を送信部77に送信させる。送信部77は、サポート要求を送信してきたPC13cに対して編集結果を送信する。なお、作成部76は、編集前の設定データ40cに基づくシミュレーション結果と、編集後の設定データ40cに基づくシミュレーション結果とを含む編集結果UIを作成し、送信部77に送信させてもよい。
図16は編集結果UI100aを示す図である。編集結果UI100aは、編集前の設定データ40cに基づくシミュレーション結果を示す編集UI90aと、編集後の設定データ40cに基づくシミュレーション結果を示す編集UI90bとを含んでいる。このように、編集前の設定データ40cに基づくシミュレーション結果を示す編集UI90aと、編集後の設定データ40cに基づくシミュレーション結果を示す編集UI90bとがユーザのPC13cにおいて対比可能に表示される。そのため、ユーザはどの設定を編集すると、どのようにシミュレーション結果が変化するかを理解しやすくなろう。ボタン91iは、編集後の設定データ40cを画像処理装置2に適用することをクラウド12に指示するためのボタンである。ボタン91jは編集結果UIの切り替えを指示するためのボタンである。PC13cのCPU22dはボタン91jが押されると、切替指示をクラウド12へ送信する。ボタン91kは編集前の設定データと編集後の設定データとの差分をリスト化して表示するためのボタンである。PC13cのCPU22dはボタン91kが押されると、差分リストの表示指示をクラウド12へ送信する。
S20でCPU22bはボタン91iが押されたことを示す情報(設定反映指示)をクラウド12へ送信する。クラウド12の編集部74は設定反映指示を受信する。なお、設定反映指示は、編集された設定データを画像処理装置2に反映させることの許可を示す許可信号である。
S21で編集部74は編集された設定データ40cを画像処理装置2に送信することで、画像処理装置2が保持している設定データ40aを書き換える。編集部74は画像処理装置2のネットワークアドレスをサポート要求から取得し、設定データ40cの送信先に設定する。クラウド12と画像処理装置2との通信には独自の通信プロトコルが使用されてもよいし、汎用の通信プロトコルが採用されてもよい。
図17は画像処理装置2の機能を示している。すでに説明された箇所には同一の符号が付与されている。CPU22aの設定更新部68は、通信部29aを通じてクラウド12から編集された設定データ40cを受信する。設定更新部68は受信した設定データ40cをワークメモリ23aに書き込む。これにより、編集前の設定データ40aが編集後の設定データ40cに置換される。
<変形例1>
上記の実施例では演算エンジン81と表示エンジン82がクラウド12に搭載されていた。しかし、表示エンジン82はPC13bに搭載されていてもよい。
図18はクラウド12のCPU22cの機能を示している。クラウド12はサポート要求とアクセスコードに関する処理を実行する。つまり、クラウド12はサポート要求を受信すると、アクセスコードを発行してPC13bに送信する。ここで、アクセスコードに含まれるURLなどのアドレスは演算エンジン81を指し示してもよい。演算エンジン81は、PC13bにより指定された画像処理装置2の演算エンジンをシミュレート(エミュレート)し、PC13bにより編集された設定データ40cを用いてシミュレーションを実行する。送信部77は、演算エンジン81により得られたシミュレーション結果をPC13bに送信する。
図19はPC13bの機能を示している。すでに説明された機能には同一の参照符号が付与されている。上述した表示エンジン82や編集部74がPC13bのCPU22dによって実現されている。なお、これらの機能はプログラムメモリ24に記憶されている制御プログラムをCPU22dが実行することで実現される。
取得部75は、アクセスコードを受信すると、クラウド12、画像処理装置2またはデータストレージ6から編集対象の設定データ40cとワーク画像44を取得し、ワークメモリ23に記憶させる。アクセスコードには、設定データ40cとワーク画像44の取得先(アドレスなど)と認証情報などが含まれており、取得部75によって使用される。編集部74は、編集UI90をディスプレイ15に表示させ、操作部14を通じて編集操作やシミュレーションの実行指示などを受け付ける。編集部74は編集操作にしたがって設定データ40cを編集する。操作部14からシミュレーションの実行指示が入力されると、編集部74は、アクセスコードにしたがってクラウド12にアクセスし、クラウド12の演算エンジン81に設定データ40cとワーク画像44を渡し、外観検査のシミュレーションを実行させる。編集部74は、シミュレーション結果(計測結果)をクラウド12から受信すると、シミュレーション結果を表示エンジン82に渡す。表示エンジン82は画像処理装置2の表示制御部をエミュレートする。表示エンジン82はシミュレーション結果を表示するための表示画面データを作成し、編集部74に出力する。編集部74は表示画面データを編集UI90に反映させてディスプレイ15に出力する。また、作成部76もPC13bに搭載されてもよい。作成部76は、編集前の設定データ40cに基づくシミュレーション結果と、編集後の設定データ40cに基づくシミュレーション結果とを含む編集結果UIを作成し、通信部29を通じてPC13cに送信してもよい。編集部74はPC13cから設定反映指示を受信すると、編集された設定データ40cを画像処理装置2に送信することで、画像処理装置2が保持している設定データ40aを書き換える。このように編集部74や表示エンジン82に関する機能はPC13bに搭載されてもよい。
<変形例2>
上記の実施例では予めクラウド12にバックアップされている設定データ40cとワーク画像44が使用されていた。しかし、これらはサポート要求をトリガとして取得されてもよい。また、クラウド12やデータサーバに設定データ40cとワーク画像44がまだバックアップされていないこともある。このような場合にもサポート要求をトリガとして設定データ40cとワーク画像44が取得されてもよい。
図20は設定支援の流れを示すシーケンス図である。図21はクラウド12の機能を示している。すでに説明された箇所には同一の参照符号が付与されている。
・S12で取得部75はサポート要求の対象として指定されている画像処理装置2に、設定データ40cとワーク画像44の取得要求を送信する。画像処理装置2は取得要求を受信する。
・S13で画像処理装置2は取得要求にしたがって設定データ40cとワーク画像44をクラウド12へ送信する。取得部75は画像処理装置2から設定データ40cとワーク画像44を受信し、HDD39cに格納する。
<編集結果UIの切り替え>
図22は、クラウド12のCPU22cまたはデータストレージ6のCPU22bが実行する設定サポート処理を示している。プログラムメモリ24c、24bには、設定サポート処理のためのプログラムが記憶されており、CPU22c、22bによって実行される。ここでは説明の便宜上、CPU22cが動作主体として採用されている。
・S31でCPU22c(要求受付部71)はPC13cから設定サポート要求を受信する。
・S32でCPU22c(取得部75)はサポート対象の画像処理装置2に記憶されている設定データ40cとワーク画像を取得する。なお、設定データ40cとワーク画像は上述のバックアップ処理により取得されてもよい。これらのデータはデータストレージ6を経由して取得されてもよい。
・S33でCPU22c(編集部74)は取得された設定データ40cを編集する。
・S34でCPU22c(シミュレーション部80)は編集された設定データ40cとワーク画像44とを用いて、画像処理装置2が実行する画像検査(外観検査)をシミュレーションする。
・S35でCPU22c(送信部77)は編集された設定データ40cに基づいて画像検査をシミュレーションすることで得られたシミュレーション結果をPC13bやPC13cに送信する。PC13bを操作するサポート担当者はシミュレーション結果を確認することで、設定データ40cを正しく編集できたことを判断できる。PC13cを操作するユーザは、設定データ40cを編集することでどのようなシミュレーション結果が得られたかを確認することができる。
ところで、編集結果UI100aは編集前の設定データに基づくシミュレーション結果と編集後の設定データに基づくシミュレーション結果とを対比しながらユーザやサポート担当者が確認できる点で優れている。しかし、PC13cなどのディスプレイ15のサイズが小さく、対比表示に向いていないことがある。このようなケースでは編集前の検査結果(シミュレーション結果)を単独表示したり、編集後の設定データに基づくシミュレーション結果を単独表示したりすることがユーザやサポート担当者にとって有益であろう。
図23は編集前の設定データに基づくシミュレーション結果を単独表示するための編集結果UI100bを示している。編集結果UI100bでは、編集前の設定データに基づくシミュレーション結果が表示され、編集後の設定データに基づくシミュレーション結果は表示されない。そのため、ディスプレイ15のサイズが小さくても、編集前の設定データに基づくシミュレーション結果を大きく表示することが可能となる。
図24は編集後の設定データに基づくシミュレーション結果を単独表示するための編集結果UI100cを示している。編集結果UI100cでは、編集後の設定データに基づくシミュレーション結果が表示され、編集前の設定データに基づくシミュレーション結果は表示されない。そのため、ディスプレイ15のサイズが小さくても、編集後の設定データに基づくシミュレーション結果を大きく表示することが可能となる。
図25はS35の処理をより詳細に示したフローチャートである。
・S41でCPU22c(送信部77)はシミュレーション結果を表示する。シミュレーション結果は、編集結果UI100a、100b、100cのいずれかにより表示される。ここでは、最初に、作成部76が編集結果UI100aの表示データを作成し、送信部77箱の表示データを送信するものと仮定される。
・S42でCPU22c(切替部120)はPC13cから切替指示を受信したかどうかを判定する。上述したようにボタン91jが押されると、PC13cから切替指示が送信される。切替指示を受信していなければ、CPU22cはS43をスキップしてS44に進む。切替指示を受信すると、CPU22cはS43に進む。
・S43でCPU22c(送信部77)はシミュレーション結果の表示データを別の表示データに切り替えて送信する。
図26は編集結果UI100a、100b、100cの切替順序を示している。切替指示が入力されるたびに、編集結果UI100a=>編集結果UI100b=>編集結果UI100c=>編集結果UI100a・・・といったように巡回的にシミュレーション結果の表示形式が切り替えられる。切替部120は切替指示を受信すると、作成部76に表示データの切替を指示する。作成部76は、編集結果UI100a、100b、100cのどれがPC13cに現在表示されているかを管理している。作成部76は、作成部76に表示データの切替を指示されると、所定の切替順序にしたがって、次の表示データを作成し、送信部77に出力する。たとえば、現在の表示データが編集結果UI100aの表示データであれば、次の表示データは編集結果UI100bの表示データである。送信部77は通信部29cを制御し、作成部76により作成された表示データをPC13cに送信する。
S44でCPU22c(編集部74)は設定反映指示を受信したかどうかを判定する。設定反映指示を受信していなければ、CPU22cはS42に戻る。一方で、設定反映指示を受信したならば、CPU22cはS36に進む。
このように、編集結果UI100a、100b、100cを切り替え可能とすることで、ユーザやサポート担当者は自分の好みに応じて編集結果を確認することが可能となる。
<差分リスト>
図27は編集部74により編集される前の設定データ(第一設定データ)と編集部74により編集された後の設定データ(第二設定データ)との差分リスト160を示している。編集部74は、第一設定データと第二設定データとを比較し、変更された設定内容を抽出し、差分リスト160を作成する。ツール番号は、計測ツールの識別情報である。ツール名は計測ツールの名称である。設定値名称は計測ツールを設定するための制御パラメータの名称である。編集前設定値は、第一設定データにおける設定値である。編集後設定値は、第二設定データにおける設定値である。編集結果UI100a、100b、100cに設けられたボタン91kが押されると、PC13cのCPU22dは差分リストの表示指示をクラウド12に送信する。クラウド12の編集部74は、差分リストの表示指示を受信すると、差分リスト160の表示データを作成し、送信部77を通じてPC13cへ送信する。PC13cのCPU22dは差分リスト160の表示データを受信すると、差分リスト160をディスプレイ15に表示する。ここではPC13cが一例とされているが、PC13cに代えてPC13a、PC13bが採用されてもよい。
ユーザは差分リスト160を確認することで、設定データのうちどの計測ツールのどのパラメータが変更されたかを容易に把握することが可能となる。
<まとめ2>
図1を用いて説明したように、外観検査システム1は画像処理装置2と、画像処理装置2が実行する画像検査の設定データをバックアップするデータストレージ6とを有する。なお、外観検査システム1は画像処理システムと呼ばれてもよい。図2、図3が示すように、ワークメモリ23aは、画像検査の設定データを記憶する第一記憶手段の一例である。画像検査は、ワーク2の画像に対する画像処理であり、ワーク2の寸法計測、ワーク2の位置決め、ワーク2の外観検査などを含む概念である。検査部31や画像処理部30は画像処理装置2に接続または一体化された撮像手段(例:カメラ4)により取得されたワークの画像に対して、設定データにしたがった画像検査を実行する検査手段の一例である。アップロード部32や通信部29aは第一記憶手段に記憶されている設定データをデータストレージ6に送信する第一送信手段の一例である。図4、図5が示すように、HDD39bは画像処理装置2の設定データを記憶する第二記憶手段の一例である。通信部29bやバックアップ部55は、画像処理装置2から送信される設定データを受信する受信手段の一例である。判定部50は、通信部29bにより受信された設定データとHDD39bに記憶されている設定データとの間に差があるかを判定する判定手段の一例である。転送部57や通信部29bは、受信された設定データと記憶されている設定データとの間に差があると判定部50が判定すると、外観検査システム1の外部に存在する外部サーバ(例:クラウド12)に対して、受信された設定データを送信する第二送信手段の一例である。このように、本実施例によれば、外観検査システム1のデータをクラウド12に対してバックアップする際の通信負荷が軽減される。
図3が示すように、設定データ40aは、予め良品と判定されたワークから取得され、画像検査の基準として使用される基準画像41を含んでもよい。判定部50は、画像処理装置2から受信された設定データ40a(40c)に含まれている基準画像と、HDD39bに記憶されている設定データ40bに含まれている基準画像とが異なっている場合に、受信された設定データ40a(40c)と記憶されている設定データ40bとの間に差があると判定してもよい。とりわけ、基準画像41は、他の設定データと比較して情報量が多い。そのため、基準画像41の転送を省略することで、通信負荷が軽減される。
判定部50は、画像処理装置2から受信された設定データ40a(40c)の情報量と、HDD39bに記憶されている設定データ40bの情報量とに差がある場合に、受信された設定データと記憶されている設定データとの間に差があると判定してもよい。一般に、二つのデータが異なれば、二つのデータの情報量も異なるからである。
判定部50は、画像処理装置2から受信された設定データ40a(40c)のタイムスタンプと、HDD39bに記憶されている設定データ40bのタイムスタンプとに差がある場合に、受信された設定データと記憶されている設定データとの間に差があると判定してもよい。一般に二つのデータのタイムスタンプが異なれば、二つのデータが異なっている可能性が高いからである。
図3などに示したように、ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31により合格と判定されたワークの画像であるOK画像37を記憶するように構成されていてもよい。さらに、設定部54は、OK画像37を外部サーバに送信するか否かを設定する第一設定手段を有していてもよい。クラウド12が多数のOK画像37を解析することで、ワークの製造精度に余裕があるのかどうかを判定することも可能となろう。
ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31により不合格と判定されたワークの画像であるNG画像38を記憶してもよい。設定部54は、NG画像38を外部サーバに送信するか否かを設定する第二設定手段を有してもよい。クラウド12が多数のNG画像38を解析することで、ワークの製造上の課題を見つけやすくなろう。
設定データ40aは複数のサブデータから構成されていてもよい。設定部54は複数のサブデータのうち通信部29bにより送信されて外部サーバにバックアップされるサブデータを指定する指定手段を有してもよい。判定部50は、設定部54により指定されたサブデータについて差の有無を判定するように構成されていてもよい。転送部57は、設定部54により指定されたサブデータのうち判定部50により差があると判定されたサブデータを外部サーバに送信してもよい。このように設定データの比較は設定データを構成しているサブデータごとに実行されてもよい。
HDD39bは、画像処理装置2から設定データ40aをバックアップしたタイミングごとにフォルダを作成して当該設定データを記憶してもよい。これにより、バックアップされた設定データ40aの管理が容易になろう。
HDD39bは、第一バックアップタイミングに画像処理装置2から取得された設定データ40bを記憶する第一フォルダ(例:フォルダ58a)と、第一バックアップタイミングよりも後の第二バックアップタイミングに画像処理装置2から取得された設定データ40a(40c)を記憶する第二フォルダ(フォルダ58b)とを有してもよい。第二バックアップタイミングに画像処理装置2から取得された複数のサブデータに第一フォルダに記憶されているいずれかのサブデータと同一のサブデータが含まれていることがある。この場合、書込み部56は、第二フォルダに同一のサブデータを記憶する代わりに、第一フォルダのサブデータを参照するファイルを記憶させてもよい。これにより、HDD39bの記憶容量を有効活用することが可能となろう。
ワークメモリ23aおよびHDD39bは、設定データ40aとともに、検査部31によるワークの検査結果35aを記憶するように構成されていてもよい。データストレージ6の設定部54は、検査結果を外部サーバに送信するか否かを設定する第三設定手段をさらに有してもよい。これにより、検査結果の転送を省略して、設定データがクラウド12にバックアップされるようになる。また、検査結果とともに設定データがクラウド12にバックアップされるようになってもよい。
データストレージ6から設定データを外部サーバにバックアップする頻度は、画像処理装置2から設定データをデータストレージ6にバックアップする頻度よりも少なくてもよい。本実施例によれば、現在の設定データと過去の設定データとに差がある場合に、現在の設定データがクラウド12にバックアップされる。これは、両者に差がない場合は、バックアップが実行されない、よって、クラウド12のバックアップ頻度は、データストレージ6のバックアップ頻度よりもすくなくなる。また、データストレージ6が画像処理装置2から設定データをN回バックアップするごとに、データストレージ6はクラウド12に対して設定データを1回転送してもよい。ここで、データストレージ6からクラウド12へ転送されるデータは、N回のバックアップにより取得されたすべてのデータであってもよいし、最新の一回分のデータであってもよい。前者のバックアップは、ネットワークの通信負荷が比較的に低い深夜に実行されてもよい。
データストレージ6とクラウド12との間の通信速度は、画像処理装置2とデータストレージ6との間の通信速度よりも遅くてもよい。このようなケースでは、特に本発明を適用することが望まれるであろう。
データストレージ6はネットワークアタッチストレージ(NAS)であってもよい。また、外部サーバはクラウドであってもよい。
判定部50は、バックアップ部55により取得された現在の設定データと、現在の設定データよりも先にバックアップ部55により取得されてHDD39bに記憶された過去の設定データとの間にある差を検知する検知手段の一例である。転送部57は、判定部50が差を検知すると、外観検査システム1の外部に存在する外部サーバに現在の設定データを書き込む書き込み手段の一例である。プログラム作成支援装置11は、画像処理装置2に接続され、第一記憶手段(ワークメモリ23a)に記憶されている設定データを編集する編集手段(CPU22)を有していてもよい。プログラム作成支援装置11のハードウエア構成はPC13と基本的に同じであってもよい。
設定サポートシステムは、外観検査システム1の画像処理装置2と、データサーバとを有していてもよい。上記の実施例ではデータサーバはクラウド12により実現されているが、データストレージ6によって実現されてもよい。つまり、上記のクラウド12のCPU22cによって実現される機能はデータストレージ6のCPU22bによって実現されてもよい。なお、画像処理装置2とクラウド12とを含むシステムは、外観検査システム1の設定をサポートする設定サポートシステムと呼ばれてもよい。
画像処理装置2のワークメモリ23aは、画像検査の設定データ40aを記憶する記憶手段の一例である。画像処理部30やCPU22aは、画像処理装置2に接続または一体化された撮像手段により取得されたワークの画像に対して、設定データ40aにしたがった画像検査を実行する検査手段の一例である。取得部75は画像処理装置2の記憶手段に記憶されている設定データ40aとワーク画像44とを取得する取得手段の一例である。編集部74は取得部75により取得された設定データを編集する編集手段の一例である。シミュレーション部80は、編集部74により編集された設定データと、ワーク画像とを用いて、検査手段が実行する画像検査をシミュレーションするシミュレーション手段の一例である。送信部77は、編集部74により編集された設定データに基づいて画像検査をシミュレーションすることで得られたシミュレーション結果を外部のコンピュータ(例:PC13b、PC13c)に送信する送信手段として機能する。外部のコンピュータとは外観検査システム1の外部にあるコンピュータであり、たとえば、PC13a、13b、13cやプログラム作成支援装置11などである。コンピュータはCPUとメモリを備え、CPUがプログラムを実行する情報処理装置である。そのため、タブレットコンピュータやHMI(ヒューマンマシンインタフェース)、表示装置などもコンピュータの一例である。
このように本実施例によれば、ユーザによる外観検査システム1の設定を効率よく支援することが可能となる。たとえば、サポート担当者のPC13bはユーザのPC13cやプログラム作成支援装置11にリモートログインする必要がないため、画像処理装置2の設定を効率よく支援することが可能となる。つまり、ユーザネットワーク環境がリモートログインを制限されたネットワーク環境であってもサポート担当者はユーザをサポートすることが可能となる。また、サポート担当者は編集された設定データ40cを画像処理装置2に設定する前に、事前にシミュレーションにより設定データ40cの編集が正しいかどうかを確認することができる。つまり、サポート担当者は画像処理装置2を設置された工場に足を運ぶことなく、編集された設定データ40cを用いた画像処理装置2の挙動を知ることができる。
クラウド12の作成部76や表示エンジン82は、シミュレーション結果を外部のコンピュータに表示させるための表示データを作成する作成手段の一例である。送信部77や通信部29は、シミュレーション結果を含む表示データを外部のコンピュータに送信するように構成されていてもよい。
外部のコンピュータであるPC13bの作成部76や表示エンジン82は、クラウド12から受信したシミュレーション結果を外部のコンピュータに表示させるための表示データを作成する作成手段の一例である。ディスプレイ15は、作成手段により作成された表示データにしたがってシミュレーション結果を表示する表示手段の一例である。
編集部74は、外部のコンピュータとして機能する複数のクライアント装置のうち一台のクライアント装置にのみ設定データの編集権限を付与するように構成されていてもよい。これにより編集作業の混乱を回避することが可能となる。たとえば、編集部74は、アクセスコードを送信したクライアント装置にのみ設定データの編集権限を付与する。あるいは、編集部74は、クライアント装置の識別情報(クラウド12へのログインアカウント)ごとに編集権限の有無を管理してもよい。
編集部74は、外部のコンピュータとして機能しうる複数のクライアント装置のうち一台のクライアント装置にのみ設定データと関連付けられている他のデータ(例:ワーク画像や基準画像など)の編集権限を付与するように構成されていてもよい。これにより、設定データ以外のデータについても編集作業の混乱を回避することが可能となる。他のデータは、パターンサーチの基準となるパターン画像や文字認識処理を実行するための辞書ファイルなどであってもよい。設定データは、一つ以上の他のデータを参照していることがある。そのため、設定データを編集する際には、この設定データだけでなく、設定データにより参照されている他のデータも編集権限を制限する必要がある。
編集部74は、コンピュータとして機能する複数のクライアント装置のうち一台のクライアント装置にのみ設定データのアクセス権限を付与してもよい。
編集部74は、設定データが参照している他のデータに対するアクセス権限を、当該設定データのアクセス権限を有している当該一台のクライアント装置にのみ付与し、他のクライアント装置にはアクセス権限を付与しないように構成されてもよい。他のデータは、たとえば、パターン画像、辞書ファイル、レシピファイル、ロボットキャリブレーションファイル、特徴描画用の特徴ファイル、Lua設定ファイルなどである。
図11が示すように、複数のクライアント装置のうち、第一クライアント装置(例:PC13c)は、クラウド12にアクセスし、クラウド12を通じて第二クライアント装置(例:PC13b)に設定サポート要求を送信してもよい。あるいは、PC13cは直接的にPC13bに設定サポート要求を送信してもよい。上述したアクセスコードは一種のサポート要求である。アクセスコードはサポート要求に応じてクラウド12により発行されるからである。サポート要求は、画像処理装置2の識別情報を含んでもよい。クラウド12は、画像処理装置2の識別情報にしたがって演算エンジン81や表示エンジン82を起動してもよい。画像処理装置2の機種ごとに、演算エンジン81や表示エンジン82が異なっていることもあるからである。PC13bは設定サポート要求(例:アクセスコード)を受信し、当該設定サポート要求の識別情報(例:クラウド12のURLなど)にしたがってクラウド12にアクセスしてもよい。クラウド12は当該クラウド12にアクセスしてきたPC13bまたはPC13cから画像処理装置2の識別情報(例:アドレス、機種情報、シリアル番号など)を受信してもよい。取得部75は当該識別情報にしたがって画像処理装置2にアクセスして設定データ40cとワーク画像44を取得してもよい。編集部74はPC13bから設定データ40cの編集操作を受け付けて設定データ40cを編集する。シミュレーション部80は編集部74により編集された設定データ40cにしたがって画像検査をシミュレーションする。送信部77はシミュレーション結果をPC13bに送信する。編集部74による設定データ40cの編集が終了すると、PC13bまたはクラウド12の送信部77はPC13cに設定データ40cの編集が終了したことを示す通知を送信してもよい。これにより、サポート要求を送信したユーザは設定データ40cの編集が終了したことを認識できるようになる。
要求受付部71や発行部72はサポート受付手段の一例である。要求受付部71は、PC13cから、画像処理装置2の識別情報の指定または入力を受け付ける。発行部72は画像処理装置2の識別情報に関連付けてアクセスコードを発行する。さらに、発行部72は通信部29cを介して当該アクセスコードを含む設定サポート要求をPC13bに送信してもよい。PC13bはアクセスコードを用いてクラウド12にアクセスする。クラウド12は、アクセスコード関連付けられている画像処理装置2の識別情報を特定し、この識別情報に関連付けられている設定データ40cとワーク画像44の編集権限をPC13bに付与する。
発行部72は、設定データの編集画面にアクセスするためのアドレス情報(例:URL)を設定サポート要求に記述してPC13bに送信してもよい。これによりPC13bは編集画面に対して容易にアクセスできるようになる。
送信部77はPC13cにシミュレーション結果を送信する。編集部74は、PC13cから設定データの更新の許可(例:設定反映指示)を受信すると、PC13bにより編集された設定データを画像処理装置2に書き込んでもよい。これによりユーザは編集された設定データを画像処理装置2に書き込むことを許可できるようになる。また、ユーザが知らない間に設定データが上書きされてしまうことが無くなるであろう。
図1では一つの画像処理装置2が図示されているが、クラウド12は複数の画像処理装置2に接続されていてもよい。編集部74は、複数の画像処理装置2のそれぞれの設定データを編集するように構成されていてもよい。これにより複数の画像処理装置2についてユーザの設定をサポートすることが可能となる。複数の画像処理装置2の機種は異なっていてもよい。この場合、シミュレーション部80は、各機種ごとのシミュレータ(演算エンジン81や表示エンジン82)を有する。編集部74は、サポート要求に基づき機種を特定し、機種に対応するシミュレータのプログラムをプログラムメモリから起動する。サポート要求には、機種の識別情報が含まれていてもよい。
作成部76は、編集部74により編集される前の設定データと編集部74により編集された後の設定データとの差分を表示する表示データを作成してもよい。これにより、設定データのうちのどの項目が編集されたかをユーザは理解しやすくなるであろう。編集結果UI100aはこのような差分を表示する表示データに基づき差分箇所を強調表示してもよい。
編集部74は第一設定データを編集することで第二設定データを作成する。第一設定データは編集前の設定データであり、第二設定データは編集後の設定データである。作成部76は、画像処理装置2の第一設定データに基づいて画像検査を実行して得られた検査結果と、編集部74により第一設定データを編集して作成された第二設定データに基づいて画像検査をシミュレーションすることで得られたシミュレーション結果とを外部のコンピュータに表示させるための表示データを作成する。ここで、検査結果は、編集部74により編集される前の設定データである第一設定データについての検査結果であり、画像処理装置2から取得されてもよい。あるいは、検査結果は、シミュレーション部80が第一設定データを用いてシミュレーションを実行することで求められてもよい。このように編集前の設定データに基づくシミュレーション結果は、画像処理装置2が画像検査を実行することで取得された実際の検査結果であってもよい。なぜなら、ワーク画像と設定データとが同じであれば、画像処理装置2の検査結果と、シミュレーション部80のシミュレーション結果とは一致するからである。送信部77は、編集前の設定データ(第一設定データ)に基づく検査結果(シミュレーション結果)の表示データと、編集後の設定データ(第二設定データ)に基づくシミュレーション結果の表示データを、外部のコンピュータに送信してもよい。これにより、ユーザは、設定データの編集の前後でどのように検査結果が変わるかを理解することができる。つまり、ユーザによる外観検査システムの設定を効率よく支援することが可能となる。
切替部120は、外部のコンピュータから検査結果とシミュレーション結果との切替指示を受け付ける受付手段として機能している。送信部77は、切替指示に応じて外部のコンピュータから検査結果とシミュレーション結果との少なくとも一方を外部のコンピュータに送信する。上述したように、切替指示は、検査結果を単独で表示するための切替指示と、シミュレーション結果を単独で表示するための切替指示と、検査結果とシミュレーション結果とを同時に表示するための切替指示とのうちのいずれかである。図24などでは切替指示を発行するための一つのボタン91jが示されているが、三つの表示態様を選択可能な切替オブジェクト(例:三つのボタン、プルダウンメニュー)などが採用されてもよい。
図1が示すように、プログラム作成支援装置11、PC13a、PC13bは画像処理装置2とともにワークを製造する工場に設置されている第一クライアント装置の一例である。PC13bは工場の外部に設置されている第二クライアント装置の一例である。送信部77は、表示データを第一クライアント装置と第二クライアント装置との両方に送信してもよい。これによりユーザとサポート担当者とが同一のシミュレーション結果を確認できるようになろう。編集部74は、第二クライアント装置であるPC13bから入力された指示に従って設定データを編集する。送信部77は、第二クライアント装置により編集された設定データを画像処理装置2に反映させることの許可を求めるためのオブジェクト(例:ボタン91i)を第一クライアント装置に表示させる表示データを送信してもよい。このようなオブジェクトはHTMLによるボタンタグによって提供されうる。
作成部76や編集部74は、編集される前の設定データと編集された後の設定データとの差分を表示する表示データ(例:差分リスト160の表示データ)を作成してもよい。これによりユーザやサポート担当者は編集の前後で設定データのどの部分が変更されたかを容易に把握することが可能となる。