(57)【特許請求の範囲】
【請求項１】
検査対象物を撮像して画像データを生成するカメラを有し、複数の画像処理の処理順序が規定された処理順序プログラムが記憶され、当該処理順序プログラムに基づいて、当該カメラから取得した画像データを用いて当該複数の画像処理を順次実行して、処理結果に基づき検査対象物の良否を判定して判定信号を出力する画像処理装置において、
前記複数の画像処理のうち少なくとも一つの画像処理に用いられる画像処理用データを記憶する第１のデータ記憶領域および第２のデータ記憶領域を有し、前記第１のデータ記憶領域に記憶されている画像処理用データを用いて前記複数の画像処理を実行する第１の処理部と、
ユーザの操作に基づく操作信号が入力される操作入力部と、
前記第１のデータ記憶領域に記憶されている画像処理用データに対応する画像処理用データを記憶する第３のデータ記憶領域を有し、前記第１の処理部により実行される前記複数の画像処理と並行して、前記操作入力部に入力される操作信号に基づいて前記第３のデータ記憶領域に記憶されている画像処理用データの編集と、該編集された画像処理用データを用いて前記複数の画像処理のうち少なくとも一つの画像処理のシミュレーションとを実行する第２の処理部と、
前記第１の処理部により前記第１のデータ記憶領域に記憶されている画像処理用データを用いて実行される前記複数の画像処理と並行して、前記編集された画像処理用データの前記第３のデータ記憶領域から前記第２のデータ記憶領域への転送を制御し、前記第１の処理部が前記第２のデータ記憶領域に記憶されている前記編集された画像処理用データを用いて前記複数の画像処理を実行するよう前記第１の処理部を制御する制御部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記制御部は、前記第３のデータ記憶領域から読み出した前記編集された画像処理用データを記憶する第４のデータ記憶領域を有し、
前記編集された画像処理用データを前記第１の処理部において継続して実行される画像処理に反映させるときには、前記編集された画像処理用データを前記第３のデータ記憶領域から読み出して前記第４のデータ記憶領域に記憶するとともに、前記第１の処理部に対し、前記第４のデータ記憶領域から前記編集された画像処理用データを読み出して前記第２のデータ記憶領域に記憶するように指示するコマンドを送信するとともに、前記第１の処理部において編集された画像処理用データを用いて画像処理が実行される際には前記第２のデータ記憶領域から当該編集された画像処理用データを読み出すように指示するコマンドを送信することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記第１の処理部および前記第２の処理部は、それぞれ第１のプロセッサおよび第２のプロセッサを有しており、
前記制御部からのコマンドに基づき前記第１のプロセッサが画像処理を継続して実行している最中に、前記第２のプロセッサにより編集された画像処理用データを前記第１のプロセッサにより継続して実行される画像処理に反映させるときには、前記制御部は、前記編集された画像処理用データを前記第３のデータ記憶領域から読み出して前記第４のデータ記憶領域に記憶するとともに、前記第１のプロセッサに対し、画像処理の実行中又は前後の画像処理の間に割り込んで、前記第４のデータ記憶領域から前記編集された画像処理用データを読み出して前記第２のデータ記憶領域に記憶するように指示するコマンドを送信することを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記第２のプロセッサにより編集される画像処理用データは画像データであって、
前記制御部は、前記第１のプロセッサに対し、前記第４のデータ記憶領域から前記編集された画像データを読み出す際には、当該画像データを小単位に分割して、前記第２のデータ記憶領域に順次記憶するように指示するコマンドを送信することを特徴とする請求項３記載の画像処理装置。
【請求項５】
前記第１の処理部および前記第２の処理部における画像処理結果を表示する表示部を備え、
前記第２の処理部は、前記第１の処理部において画像処理が継続して実行されているときには、前記制御部からのコマンドに基づいて、前記第１の処理部における画像処理結果を表示するための制御信号を前記表示部に送信するとともに、前記第２の処理部において前記第３のデータ記憶領域に記憶された画像処理用データが編集され、編集された画像処理用データを用いた画像処理のシミュレーションが実行されたときには、前記制御部からのコマンドに基づいて、前記第２の処理部における画像処理結果を表示するための制御信号を前記表示部に送信することを特徴とする請求項１から４のいずれか記載の画像処理装置。
【請求項６】
前記処理順序プログラムにおいて参照可能な変数の変数値を記憶する変数値記憶領域を有し、
前記制御部は、前記操作信号に基づいて前記変数の変数値が変更されたとき、変更後の変数値を前記変数値記憶領域に記憶するとともに、
実行すべき画像処理を指示するコマンドとともに前記変数の変数値を前記第１の処理部に送信するときに、前記操作信号に基づいて変数値が変更された変数については、変更後の変数値を送信することを特徴とする請求項１から５のいずれか記載の画像処理装置。
【請求項７】
検査対象物を撮像して画像データを生成するカメラを有し、複数の画像処理の処理順序が規定された処理順序プログラムが記憶され、当該処理順序プログラムに基づいて、当該カメラから取得した画像データを用いて当該複数の画像処理を順次実行して、処理結果に基づき検査対象物の良否を判定して判定信号を出力する画像処理装置を用いた画像処理方法において、
前記画像処理装置は、前記複数の画像処理のうち少なくとも一つの画像処理に用いられる画像処理用データを記憶する第１のデータ記憶領域および第２のデータ記憶領域を有し、前記第１のデータ記憶領域に記憶されている画像処理用データを用いて前記複数の画像処理を実行する第１の処理部と、
ユーザの操作に基づく操作信号が入力される操作入力部と、
前記第１のデータ記憶領域に記憶されている画像処理用データに対応する画像処理用データを記憶する第３のデータ記憶領域を有し、前記操作入力部に入力される操作信号に基づいて前記第３のデータ記憶領域に記憶されている画像処理用データを編集し、該編集された画像処理用データを用いて前記複数の画像処理のうち少なくとも一つの画像処理のシミュレーションを実行する第２の処理部と、
前記第１の処理部および前記第２の処理部に対して実行すべき画像処理を指示するコマンドを送信する制御部と、
を備え、
前記制御部が、前記第１の処理部に対し、前記第１のデータ記憶領域に記憶されている画像処理用データを用いて前記複数の画像処理が実行される際には前記第１のデータ記憶領域から当該画像処理用データを読み出すように指示し、前記処理順序プログラムに基づき前記複数の画像処理を継続して実行するように指示するコマンドを送信する第１ステップと、
前記制御部が、前記第１の処理部により実行される前記複数の画像処理と並行して、前記第２の処理部に対し、前記操作信号に基づいて、前記第３のデータ記憶領域に記憶された画像処理用データの編集を指示するコマンドを送信する第２ステップと、
前記制御部が、前記第１の処理部により実行される前記複数の画像処理と並行して、前記第２の処理部に対し、前記操作信号に基づいて、編集された画像処理用データを用いて画像処理のシミュレーションの実行を指示するコマンドを送信する第３ステップと、
前記制御部が、前記第１の処理部により前記第１のデータ記憶領域に記憶されている画像処理用データを用いて実行される前記複数の画像処理と並行して、前記編集された画像処理用データの前記第３のデータ記憶領域から前記第２のデータ記憶領域への転送を制御した後、前記第１の処理部が前記第２のデータ記憶領域に記憶されている前記編集された画像処理用データを用いて前記複数の画像処理を実行するよう前記第１の処理部を制御する第４ステップと、を含むことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査対象物をカメラで撮像して、得られた画像データを用いて計測処理を実行する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
工場など数多くの生産現場では、人の目視に頼っていた検査を自動化・高速化する画像処理装置が導入されている。画像処理装置は、ベルトコンベア等の生産ラインを流れてくるワークをカメラによって撮像し、得られた画像データを用いて、所定領域のエッジ検出や面積計算などの計測処理を実行する。そして、計測処理の処理結果に基づいて、ワークの欠け検出やアライメントマークの位置検出などの検査を行い、ワークの欠けや位置ずれの有無を判定する判定信号を出力する。このように、画像処理装置は、ＦＡセンサの一つとして利用されることがある。
【０００３】
画像処理装置の中には、実行される画像処理の処理順序が予め決められているパッケージ型のものや、ユーザがパソコン上で作成した所望の処理順序を実行する画像処理プログラムを転送し、思い通りの計測処理を行わせるものなどがある。前者は、予め決められた処理順序でしか画像処理を行うことができないため、画像処理の自由度が制限される一方、後者は、所望の計測処理を行わせるには高度なプログラミングスキルと多大な工数を必要とする。これらの課題を解決する画像処理装置として、画像処理の検査項目一連の処理順序をフローチャートで表示し、そのフローチャート上で、ユーザにより処理順序を変更可能にしたものがある（例えば特許文献１参照）。ユーザが所望の処理順序を実現するためには、例えば、ＰＣ上の専用ソフトウェアによりフローチャート上で処理順序をカスタマイズし、カスタマイズされた処理順序を画像処理装置に実行させるための処理順序プログラムを生成した後、その処理順序プログラムを画像処理装置のコントローラに転送する。
【０００４】
このような画像処理装置によれば、高度なプログラミングスキルを必要とすることなく、フローチャート上で、少ない工数で画像処理の処理順序をカスタマイズすることができる。また、複雑な画像処理を行おうとすると、検査項目が数十、数百になる場合もあるが、一連の処理順序がフローチャートで表示されれば、ユーザは全体の画像処理の内容を一見して把握することができるため、フローチャート全体を俯瞰しながら所望のカスタマイズをすることができ、ひいては画像処理の自由度を高めることができる。また、各画像処理をフローチャートに示す処理順序と同期させて実行することによって、撮像して得られた画像データをメモリへ書き込む、計測処理を実行するために画像データをメモリから読み出す、といった動作が同じタイミングで行われることはなく、メモリ競合の問題を防ぐこともできる。さらに、その処理順序に沿ってデバッグを行うことができ、バグ修正を容易化することもできる。
【０００５】
このような画像処理装置の検査設定では、まず、撮像のような必須の画像処理や、エッジ検出や面積計算など、検査に必要な個別の画像処理を検査項目として選択し、それらを所望の順序（例えば上から下へ順番に）に並べて配置し、処理順序を示すフローチャートを作成する。なお、検査項目の配置を入れ替えることによって、上述したようにフローチャート上で処理順序を変更することができる。また、フローチャートの作成・編集は、画像処理装置に接続されたパーソナルコンピュータを使用することもできるし、画像処理装置に接続されたモニタやコンソール等を使用することもできる。
【０００６】
次に、各検査項目についてパラメータ値の設定を行うとともに、例えばパターンサーチなど、特定の検査項目で必要になる登録画像の設定などを行う。具体的に説明すると、例えば撮像では、撮像対象カメラやシャッタースピードなどを指定するためのパラメータ値を設定する。また、エッジ検出や面積計算では、ワークの欠けや位置ずれの有無を判定する判定条件などを設定する。さらに、例えば検査対象物を撮像して得られた画像データの中に特定のパターンが出現するか否か、出現する場合には位置はどこか、を特定するパターンサーチでは、特定のパターンとして基準となる画像を登録画像として予め設定する。このようにして、検査項目の選択・配置によるフローチャートの作成・編集、各検査項目について最適なパラメータ値の設定、必要に応じて最適な登録画像の設定が終わると、検査設定が完了し、作成されたフローチャートに従って、画像処理装置の通常運転が開始される。
【０００７】
ここで、一旦検査設定が完了し、画像処理装置の通常運転が開始された後は、メンテナンスを不要にするため同じパラメータ値や登録画像を使用し続けることが望ましい。しかし、ワークを照らすＬＥＤの経年劣化により撮像照明環境が変化したり、生産ラインを流れてくるワークの種類が変わったりして、パラメータ値や登録画像を編集したい場合がある。加えて、編集後のパラメータ値や登録画像を用いてシミュレーションを行って、編集後のパラメータ値や登録画像の妥当性を検証したい場合がある。一般的な画像処理装置では、上述したエッジ検出や面積計算などの計測処理を実行するプロセッサは１個であるため、ユーザがパラメータ値や登録画像を編集したり、編集後のパラメータ値や登録画像を用いてシミュレーションを行ったりするためには、画像処理装置の通常運転を一時的に停止させる必要があった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０９−２８８５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＦＡセンサとして利用されている画像処理装置の通常運転を一時的に停止させると、生産ラインも一時的に停止させなければならなくなり、生産効率の低下を招いてしまう。特に、画像処理装置の通常運転を停止させて登録画像の編集を行おうとすると、数十秒や数分といったように、それなりの時間を必要とする。具体例を挙げると、登録画像の中に特定パターンとして不要な部分（ノイズなど）がある場合には、ユーザは、まず画像処理装置の運転を一時的に停止させて、画像処理装置に接続されたモニタとコンソールを使用して、その不要な部分をマスク領域（不要な部分を隠すための領域）として設定することにより、より最適な登録画像に編集することができるが、この作業にはそれなりの時間を必要とする。また、編集後の登録画像を用いてシミュレーションまで行うとなると、更なる時間が必要になる。
【００１０】
この点、例えば特開平０８−１２８９６０号公報に開示されているように、ＣＰＵとメモリを２組設けることにより、通常運転を停止させることなく、登録画像の編集を行ったり編集後の登録画像を用いてシミュレーションを行ったりすることができる可能性がある。具体的には、一方のＣＰＵとメモリで通常運転を行い、他方のＣＰＵとメモリで登録画像の編集や編集後の登録画像を用いたシミュレーションを行う。シミュレーションの結果、編集後の登録画像を通常運転で使用したい場合には、今度は他方のＣＰＵとメモリで通常運転を行うように切り替える。その後、一方のＣＰＵとメモリは、他方のＣＰＵとメモリで通常運転が行われている最中、登録画像の編集や編集後の登録画像を用いたシミュレーションを行う。このように、２組のＣＰＵとメモリで通常運転とシミュレーションとを交互に行えば、通常運転を停止させることなく、登録画像の編集を行ったり編集後の登録画像を用いてシミュレーションを行ったりすることができる可能性がある。
【００１１】
しかしながら、２組のＣＰＵとメモリで通常運転とシミュレーションを交互に行うとなると（２組のＣＰＵとメモリでミラーリングするとなると）、同じパフォーマンスのＣＰＵとメモリが２組必要になる。特に、メモリについていえば、一方のメモリと他方のメモリは同等の記憶容量を有していなければならず、その結果、確保しなければならないヒープ領域が増大して、メモリ資源を効率的に活用することが困難である。
【００１２】
本発明は、以上の点に鑑みてなされたものであり、その目的は、メモリ資源を効率的に活用しつつ、通常運転を停止させることなく、登録画像等の編集やシミュレーションを行って、編集後の登録画像等を通常運転に反映させることができ、ひいては生産効率を高めることが可能な画像処理装置及び画像処理方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明に係る画像処理装置は、検査対象物を撮像して画像データを生成するカメラを有し、複数の画像処理の処理順序が規定された処理順序プログラムが記憶され、その処理順序プログラムに基づいて、カメラから取得した画像データを用いて複数の画像処理を順次実行して、処理結果に基づき検査対象物の良否を判定して判定信号を出力する画像処理装置において、複数の画像処理のうち少なくとも一つの画像処理に用いられる画像処理用データを記憶する第１のデータ記憶領域および第２のデータ記憶領域を有し、複数の画像処理を実行する第１の処理部と、画像処理用データを記憶する第３のデータ記憶領域を有し、複数の画像処理のうち少なくとも一つの画像処理を実行する第２の処理部と、第１の処理部および第２の処理部に対して実行すべき画像処理を指示するコマンドを送信する制御部と、ユーザの操作に基づく操作信号が入力される操作入力部と、を備え、制御部は、第１の処理部に対し、第１の処理部において画像処理用データを用いて画像処理が実行される際には第１のデータ記憶領域から画像処理用データを読み出すように指示しつつ、処理順序プログラムに基づき複数の画像処理を継続して実行するように指示するコマンドを送信する一方で、第２の処理部に対し、上述した操作信号に基づいて、第３のデータ記憶領域に記憶された画像処理用データの編集を指示するコマンドを送信するとともに、編集された画像処理用データを用いた画像処理を実行するように指示するコマンドを送信し、編集された画像処理用データを第１の処理部において継続して実行される画像処理に反映させるときには、編集された画像処理用データが第３のデータ記憶領域から第２のデータ記憶領域に転送され、第１の処理部において編集された画像処理用データを用いて画像処理が実行される際には第２のデータ記憶領域から編集された画像処理用データが読み出される。
【００１４】
このような構成によれば、第１の処理部において、必要に応じて第１のデータ記憶領域から画像処理用データを読み出しつつ、処理順序プログラムに基づき複数の画像処理が継続して実行されているとき（通常運転中）に、ユーザは、例えばコンソール等を操作して、第２の処理部を通じて画像処理用データを編集し、編集した画像処理用データを用いて画像処理を実行することができる。そして、編集された画像処理用データを第１の処理部において継続して実行される画像処理に反映させるときには、編集された画像処理用データが第２の処理部の第３のデータ記憶領域から第１の処理部の第２のデータ記憶領域に転送され、第１の処理部においてその編集された画像処理用データを用いて画像処理が実行される際には第２のデータ記憶領域から編集された画像処理用データが読み出される。したがって、第１の処理部における通常運転を停止させることなく、第２の処理部において画像処理用データの編集や編集後の画像処理用データを用いたシミュレーションを行うことができるとともに、編集後の画像処理用データを通常運転に反映させることができ、ひいては生産効率を高めることができる。
【００１５】
また、本発明に係る画像処理装置では、第１の処理部は通常運転用の処理部として、第２の処理部は編集・シミュレーション用の処理部として、それぞれ固定されているので、第２の処理部のスペックは第１の処理部のスペックよりも低いもので足りる（例えば、第３のデータ記憶領域の記憶容量としては、編集した画像処理用データを記憶可能な記憶容量があれば足りる）。その結果、第１の処理部と第２の処理部で同じパフォーマンスのＣＰＵとメモリを準備する必要はなく、メモリ資源を効率的に活用することができる。
【００１６】
ここで、「編集された画像処理用データが第３のデータ記憶領域から第２のデータ記憶領域に転送される」にあたって、その転送主体の如何は問わない。例えば、制御部が、一旦編集された画像処理用データを第３のデータ記憶領域から読み出して所定の記憶領域に記憶した後、それを第２のデータ記憶領域に転送するような構成としてもよい。また、制御部が、一旦編集された画像処理用データを第３のデータ記憶領域から読み出して所定の記憶領域に記憶した後、制御部からのコマンドに基づいて第１の処理部がそれを読み出して、第２のデータ記憶領域に転送するような構成としてもよい。また、第２の処理部が、制御部からのコマンドに基づいて、画像処理用データを第３のデータ記憶領域から読み出して、第２のデータ記憶領域に直接転送するような構成としてもよい。さらに、第１の処理部が、制御部からのコマンドに基づいて、画像処理用データを第３のデータ記憶領域から直接読み出して、第２のデータ記憶領域に直接転送するような構成としてもよい。
【００１７】
また、本発明に係る画像処理装置では、制御部は、第３のデータ記憶領域から読み出した編集された画像処理用データを記憶する第４のデータ記憶領域を有し、編集された画像処理用データを第１の処理部において継続して実行される画像処理に反映させるときには、編集された画像処理用データを第３のデータ記憶領域から読み出して第４のデータ記憶領域に記憶するとともに、第１の処理部に対し、第４のデータ記憶領域から編集された画像処理用データを読み出して第２のデータ記憶領域に記憶するように指示するコマンドを送信するとともに、第１の処理部において編集された画像処理用データを用いて画像処理が実行される際には第２のデータ記憶領域から編集された画像処理用データを読み出すように指示するコマンドを送信するような構成としてもよい。これにより、第１の処理部における通常運転を停止させることなく、第２の処理部において画像処理用データの編集や編集後の画像処理用データを用いたシミュレーションを行うことができるとともに、編集後の画像処理用データを通常運転に反映させることができ、ひいては生産効率を高めることができる。特に、編集された画像処理用データが第３のデータ記憶領域から第２のデータ記憶領域に転送されるにあたって、制御部における第４のデータ記憶領域を介在させることで、画像処理用データが大きな容量であったとしても、制御部において一旦バッファリングすることができるとともに、制御部のコマンドに基づいて第１の処理部が所望のタイミングで第４のデータ記憶領域から画像処理用データを読み出せるようになる。例えば、第１の処理部は、デュアルコアを有するなど、第１の処理部において継続して実行される画像処理と並行して画像処理用データを読み出すことが可能であれば、そのようにしてもよいし、シングルコアを有するなど、第１の処理部において継続して実行される画像処理と並行して画像処理用データを読み出すことが困難であれば、第１の処理部において継続して実行される画像処理の合間に画像処理用データを読み出すようにしてもよい。
【００１８】
また、本発明に係る画像処理装置では、第１の処理部および第２の処理部に、それぞれ第１のプロセッサおよび第２のプロセッサが設けられており、制御部からのコマンドに基づき第１のプロセッサが画像処理を継続して実行している最中に、第２のプロセッサにより編集された画像処理用データを第１のプロセッサにより継続して実行される画像処理に反映させるときには、制御部は、編集された画像処理用データを第３のデータ記憶領域から読み出して第４のデータ記憶領域に記憶するとともに、第１のプロセッサに対し、画像処理の実行中又は前後の画像処理の間に割り込んで、第４のデータ記憶領域から編集された画像処理用データを読み出して第２のデータ記憶領域に記憶するように指示するコマンドを送信するような構成としてもよい。これにより、第１の処理部では、第１のデータ記憶領域にアクセスして画像処理を継続して実行しながら、一方で、合間を縫って編集された画像処理用データを第２のデータ記憶領域に記憶することができる。特に、第１のプロセッサがシングルコアのプロセッサであったとしても、通常運転中に、編集された画像処理用データを第２のデータ記憶領域に記憶することができる。
【００１９】
また、本発明に係る画像処理装置では、第２のプロセッサにより編集される画像処理用データは画像データであって、制御部は、第１のプロセッサに対し、第４のデータ記憶領域から編集された画像データを読み出す際には、画像データを小単位に分割して、第２のデータ記憶領域に順次記憶するように指示するコマンドを送信するような構成としてもよい。これにより、容量が大きな（２次元）画像データなどを記憶する場合であっても、第２のデータ記憶領域に少しずつ記憶することができる。その結果、通常運転を停止させることなく、加えて通常運転のスピードをほとんど低下させることなく、編集後の画像データを通常運転に反映させることができ、ひいては生産効率を高めることができる。
【００２０】
また、本発明に係る画像処理装置では、第１の処理部および前記第２の処理部における画像処理結果を表示する表示部を備え、第２の処理部は、第１の処理部において画像処理が継続して実行されているときには、制御部からのコマンドに基づいて、第１の処理部における画像処理結果を表示するための制御信号を表示部に送信するとともに、第２の処理部において第３のデータ記憶領域に記憶された画像処理用データが編集され、編集された画像処理用データを用いた画像処理が実行されたときには、制御部からのコマンドに基づいて、第２の処理部における画像処理結果を表示するための制御信号を表示部に送信するような構成としてもよい。これにより、ユーザの操作に基づいて、第１の処理部と第２の処理部における画像処理結果を、表示部に簡易に切り替え表示することができる。また、表示部に対して制御信号を送信する第２の処理部において、画像処理用データが編集され、編集された画像処理用データを用いた画像処理が実行されるので、第１の処理部における通常運転中の処理能力低下を防ぐことができる。さらに、一般に、表示部に対して制御信号を送信する第２の処理部が有する第３のデータ記憶領域は、例えばビデオＲＡＭなど記憶容量の少ないメモリにより具現化される。このような場合であっても、上述した構成によれば、第３のデータ記憶領域で画像処理用データを編集し、編集後の画像処理用データは第２のデータ記憶領域へ転送され、再び第３のデータ記憶領域で画像処理用データを編集し、編集後の画像処理用データは第２のデータ記憶領域へ転送され、・・・という処理を繰り返すことによって、複数の画像処理用データを編集する場合であっても第３のデータ記憶領域の容量は少なくて済む（１個の画像処理用データが記憶できる容量があれば足りる場合もある）。このように、上述した構成によれば、第３のデータ記憶領域に一定の使用制限が課せられていても（例えば所定個数の画像処理用データしか記憶できなくても）、実質的に、その使用制限の中で複数（その所定個数以上）の画像処理用データを編集することができる。
【００２１】
また、本発明に係る画像処理装置では、処理順序プログラムにおいて参照可能な変数の変数値を記憶する変数値記憶領域を有し、制御部は、操作信号に基づいて変数の変数値が変更されたとき、変更後の変数値を変数値記憶領域に記憶するとともに、実行すべき画像処理を指示するコマンドとともに変数の変数値を第１の処理部に送信するときに、操作信号に基づいて変数値が変更された変数については、変更後の変数値を送信するような構成としてもよい。これにより、例えばフロー周期のカウントアップ変数など、ユーザが意図的に変えてはならないような変数については通常運転に反映されず、ユーザが意図的に変更した変数についてのみを通常運転に反映させることができる。
【発明の効果】
【００２２】
以上説明したように、本発明によれば、通常運転を停止させることなく、画像処理用データの編集やシミュレーションを行って、編集後の画像処理用データを通常運転に反映させることができ、ひいては生産効率を高めることができる。また、メモリ資源を効率的に活用することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態に係る画像処理装置の概略構成例を示す図である。
【図２】本実施形態に係る画像処理装置におけるコントローラのハードウェア構成例を示すブロック図である。
【図３】本実施形態に係る画像処理装置におけるコントローラの機能構成例を示すブロック図である。
【図４】本実施形態に係る画像処理装置におけるコントローラの動作例を示す説明図である。
【図５】本実施形態に係る画像処理装置におけるコントローラの動作例を示す説明図である。
【図６】本実施形態に係る画像処理装置におけるコントローラの動作例を示す説明図である。
【図７】本実施形態に係る画像処理装置におけるコントローラの動作例を示す説明図である。
【図８】本実施形態に係る画像処理装置の処理動作を示すフローチャートである。
【図９】本実施形態に係る画像処理装置の処理動作を示すフローチャートである。
【図１０】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１１】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１２】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１３】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１４】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１５】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１６】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１７】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１８】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図１９】図８に示す処理動作が行われているときのモニタの表示画面例である。
【図２０】パラメータ値の編集が行われている際のモニタの表示画面例である。
【図２１】ユーザが定義した変数の変数値が編集されている際のモニタの表示画面例である。
【図２２】本発明の他の実施形態に係る画像処理装置のコントローラを説明するためのブロック図である。
【図２３】本発明の他の実施形態に係る画像処理装置のコントローラを説明するためのブロック図である。
【図２４】本発明の他の実施形態に係る画像処理装置のコントローラを説明するためのブロック図である。
【図２５】本発明の他の実施形態に係る画像処理装置のコントローラを説明するためのブロック図である。
【図２６】本発明の他の実施形態に係る画像処理装置のコントローラを説明するためのブロック図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態に係る画像処理装置について、図面に基づいて具体的に説明する。
【００２５】
［概略構成］
図１は、本発明の実施の形態に係る画像処理装置１の概略構成例を示す図である。図１に示すように、画像処理装置１は、エッジ検出や面積計算などの計測処理を実行するコントローラ１０と、検査対象物を撮像する３台のカメラ３０ａ，３０ｂ，３０ｃと、液晶パネル等のモニタ４０と、ユーザがモニタ４０上で各種操作するためのコンソール５０と、を有している。カメラ３０ａ，３０ｂ，３０ｃ、モニタ４０、及びコンソール５０は、コントローラ１０と着脱可能に接続される。コントローラ１０は、カメラ３０ａ，３０ｂ，３０ｃから得られた画像データを用いて画像処理を実行し、外部接続されたＰＬＣ（Programmable Logic Controller）６０に対し、ワークの良否などの判定結果を示す信号として判定信号を出力する。
【００２６】
３台のカメラ３０ａ，３０ｂ，３０ｃは、ＰＬＣ６０から入力される制御信号、例えばカメラ３０ａ，３０ｂ，３０ｃから画像データを取り込むタイミングを規定する撮像トリガ信号に基づいて、検査対象物の撮像を行う。モニタ４０は、検査対象物を撮像して得られた画像データや、その画像データを用いた計測処理の結果を表示するための表示装置である。一般に、ユーザはモニタ４０を視認することによって、画像処理装置１が通常運転中である場合のコントローラ１０の動作状態を確認することができる。コンソール５０は、モニタ４０上でフォーカス位置を移動させたり、メニュー項目を選択したりするための入力装置である。特に、後述するように、本実施形態では登録画像を編集するための入力装置となる。
【００２７】
また、画像処理装置１のコントローラ１０には、画像処理装置１の制御プログラムを生成するためのＰＣ７０が接続されており、このＰＣ７０上で動作するソフトウェアによって、画像処理ユニットの処理順序を規定する処理順序プログラムが生成される。画像処理装置１では、その処理順序に沿って各画像処理ユニットが順次実行される。ＰＣ７０とコントローラ１０とは、通信ネットワークを介して接続されており、ＰＣ７０上で生成された処理順序プログラムは、モニタ４０の表示態様を規定するレイアウト情報などとともにコントローラ１０に転送される。また逆に、コントローラ１０から処理順序プログラムやレイアウト情報などを取り込んで、ＰＣ７０上で編集することもできる。なお、この処理順序プログラムは、ＰＣ７０だけでなく、コントローラ１０においても生成することができる。
【００２８】
［ハードウェア構成］
図２は、本実施形態に係る画像処理装置１におけるコントローラ１０のハードウェア構成例を示すブロック図である。図２に示すように、画像処理装置１におけるコントローラ１０は、各種プログラムに基づき数値計算や情報処理を行うとともに、ハードウェア各部の制御を行うＣＰＵ１１と、起動プログラムや初期化プログラムなどが格納されたＲＯＭ，フラッシュＲＯＭ，ＥＥＰＲＯＭなどのプログラムメモリ１２と、ＣＰＵ１１が各種プログラムを実行する際のワークエリアとして機能するＲＡＭなどの（揮発性或いは不揮発性）メモリ１３と、外部のＰＬＣ６０やＰＣ７０などと通信可能に接続される通信部１４と、コンソール５０からの操作信号が入力される操作入力部１５と、を有している。
【００２９】
また、画像処理装置１は、カメラ３０ａ〜カメラ３０ｃでの撮像により得られた画像データを取り込むＡＳＩＣ（Application Specific Integrated Circuit）などの画像入力部１６と、画像データをバッファリングするメモリ（フレームバッファ）１７と、エッジ検出や面積計算などの計測処理を実行する演算用ＤＳＰなどのプロセッサ１８と、計測処理用に画像データを記憶するメモリ（ワークメモリ）１９と、液晶パネル等のモニタ４０に対して画像を表示させる表示用ＤＳＰなどのプロセッサ２０と、画像を表示させる際に画像データを一時記憶するＶＲＡＭなどのメモリ２１と、を有している。そして、これらの各ハードウェアは、バス等の通信路を介して通信可能に接続されている。
【００３０】
プログラムメモリ１２には、画像入力部１６、プロセッサ１８、及びプロセッサ２０、並びに、通信部１４及び操作入力部１５の各部を、ＣＰＵ１１のコマンド等により制御するための制御プログラムが格納されている。また、本実施形態では、ＰＣ７０において生成され、ＰＣ７０から転送されてきた処理順序プログラムは、プログラムメモリ１２に格納される。なお、メモリ１３に格納されるようにすることもできる。メモリ１３、メモリ１７，メモリ１９、メモリ２１は、ＳＲＡＭやＳＤＲＡＭ等の揮発性メモリで構成されており、コントローラ１０で別個独立したメモリとして設けられている。なお、不揮発性メモリを用いることもできるし、一個のメモリの記憶領域を切り分けて各メモリを構成することもできる。通信部１４は、外部のＰＬＣ６０に接続されたセンサ（光電センサ等）でトリガ入力があったときに、ＰＬＣ６０から撮像トリガ信号を受信するインターフェース（Ｉ／Ｆ）として機能する。また、ＰＣ７０から転送されてくる画像処理装置１の画像処理プログラムやモニタ４０の表示態様を規定するレイアウト情報などを受信するインターフェース（Ｉ／Ｆ）としても機能する。
【００３１】
ＣＰＵ１１は、通信部１４を介してＰＬＣ６０から撮像トリガ信号を受信すると、画像入力部１６に対して撮像指令（コマンド）を送る。また、処理順序プログラムに基づいて、プロセッサ１８やプロセッサ２０に対して、実行すべき画像処理を指示するコマンドを送信する。なお、撮像トリガ信号を生成する装置として、ＰＬＣ６０ではなく、光電センサなどのトリガ入力用のセンサを通信部１４に直接接続することもできる。
【００３２】
操作入力部１５は、ユーザの操作に基づきコンソール５０からの操作信号を受信するインターフェース（Ｉ／Ｆ）として機能する。そして、受信した操作信号はＣＰＵ１１に転送される。モニタ４０には、コンソール５０を用いたユーザの操作内容が表示される。具体的に説明すると、コンソール５０には、モニタ４０上に表示されるカーソルを上下左右に移動させる十字キー、決定ボタン、又はキャンセルボタンなどの各部品が配置されており、これらの各部品を操作することによって、ユーザはモニタ４０上でフローチャートを作成したり、各画像処理ユニットのパラメータ値を編集したり、登録画像を編集したり、シミュレーションを開始させたりすることができる。
【００３３】
画像入力部１６は、上述した画像入力プログラムに従って、画像データの取り込みを行う。具体的には、例えばＣＰＵ１１からカメラ３０ａの撮像指令を受信すると、カメラ３０ａに対して画像データ取り込み信号を送信する。そして、カメラ３０ａで撮像が行われた後、撮像して得られた画像データを取り込む。取り込んだ画像データは、一旦メモリ１７にバッファリング（キャッシュ）され、予め用意しておいた画像変数に代入される。この画像変数は、数値を扱う通常の変数と異なり、対応する画像処理ユニットの入力画像として割り付けることで、計測処理や画像表示の参照先となる変数である。
【００３４】
プロセッサ１８は、画像データに対する計測処理を実行する。具体的には、まず画像入力部１６が上述した画像変数を参照しつつ、メモリ１７から画像データを読み出して、プロセッサ１８を通じてメモリ１９へ内部転送を行う。そして、プロセッサ１８は、メモリ１９に記憶された画像データを読み出して、計測処理を実行する。
【００３５】
プロセッサ２０は、ＣＰＵ１１から送られてきた表示指令（表示コマンド）に基づいて、モニタ４０に対して所定画像（映像）を表示させるための制御信号を送信する。例えば、メモリ１７又はメモリ１９に記憶されている計測処理前又は計測処理後の画像データを読み出して、メモリ２１に一時記憶し（展開し）、モニタ４０に対して制御信号を送信する。また、プロセッサ２０は、コンソール５０を用いたユーザの操作内容をモニタ４０に表示させるための制御信号も送信する。なお、プロセッサ２０は、制御部１００から送られてくる処理順序プログラムが示すフローチャート、画像入力部１６から送られてきた撮像画像などをモニタ４０の一画面に表示するために、これらを合成する機能を有する。
【００３６】
ここで、本実施形態に係る画像処理装置１におけるコントローラ１０では、プロセッサ１８およびメモリ１９は、ＣＰＵ１１からのコマンドに基づいて、複数の画像処理を実行する第１の処理部２００として機能する。また、メモリ１９は、複数の画像処理のうち少なくとも一つの画像処理に用いられる画像処理用データを記憶する第１のデータ記憶領域および第２のデータ記憶領域の一例として機能する。一方、プロセッサ２０およびメモリ２１は、ＣＰＵ１１からのコマンドに基づいて、複数の画像処理のうち少なくとも一つの画像処理を実行する第２の処理部３００として機能する。また、メモリ２１は、上述した画像処理用データを記憶する第３のデータ記憶領域の一例として機能する。そして、ＣＰＵ１１、プログラムメモリ１２、及びメモリ１３は、第１の処理部２００および第２の処理部３００に対して実行すべき画像処理を指示するコマンドを送信する制御部１００として機能する。なお、第１の処理部２００と第２の処理部３００には、制御部１００から受信したコマンドに応じて実行される各画像処理が規定された画像処理プログラムが記憶されている。
【００３７】
また、図２に示すように、第１の処理部２００と第２の処理部３００は、それぞれ制御部１００に電気的に接続されるとともに、両者は制御部１００に対して並列に接続されている。したがって、画像処理装置１では、制御部１００が、処理順序プログラムに基づいて、第１の処理部２００に対して複数の画像処理を継続して実行するように指示するコマンドを送信することによって、通常運転を行う。一方で、制御部１００が、ユーザのコンソール５０の操作に基づいて、第２の処理部３００に対してメモリ２１に記憶された画像処理用データの編集を指示するコマンドを送信するとともに、編集された画像処理用データを用いた画像処理を実行するように指示するコマンドを送信することによって、仮運転（シミュレーション）を行う。
【００３８】
本実施形態に係る画像処理装置１によれば、第１の処理部２００における通常運転を停止させることなく、第２の処理部３００における仮運転を行うことが可能である。特に、検査項目の一つとして重要になるパターンサーチ（特定画像処理の一例）では、基準となる特定パターンとして登録画像が用いられるが、第２の処理部３００における仮運転を行う際に、この登録画像の編集を行うこともでき、また、編集後の登録画像を用いてシミュレーションを行うこともでき、さらには、通常運転を停止させることなく編集後の登録画像を本運転に反映させることができる。以下、コントローラ１０の機能構成例を参照しながら具体的に説明する。
【００３９】
［機能構成］
図３は、本実施形態に係る画像処理装置１におけるコントローラ１０の機能構成例を示すブロック図である。図４から図７は、本実施形態に係る画像処理装置１におけるコントローラ１０の動作例を示す説明図である。
【００４０】
図３に示すように、コントローラ１０は、制御部１００と、第１の処理部２００と、第２の処理部３００とを有している。また、第１の処理部２００は、プロセッサ１８と、第１のデータ記憶領域２１０と第２のデータ記憶領域２２０（とを含むメモリ１９）と、を有している。第２の処理部３００は、プロセッサ２０と、第３のデータ記憶領域３１０（を含むメモリ２１）と、を有している。なお、本実施形態では、図２に示すメモリ１９の記憶領域を２つの記憶領域に分割することによって、第１のデータ記憶領域２１０と第２のデータ記憶領域２２０を具現化している。
【００４１】
また、上述したパターンサーチで用いる登録画像の画像データ（登録画像データ）は、制御部１００によって通常運転開始前に、所定の外部入出力装置（ＵＳＢメモリなど）からメモリ１３に読み込まれ、第１の処理部２００のメモリ１９に転送され、第１の処理部２００によって編集され、第１のデータ記憶領域２１０にロード（記憶）される。或いは、モニタ４０上でユーザがコンソール５０を操作することによって、通常運転開始前に第１の処理部２００において生成され、第１のデータ記憶領域２１０に記憶される。
【００４２】
なお、登録画像データは、ユーザによって予め準備され、少なくとも一つの画像処理に用いられる画像処理用データの一例であるが、これは計測ごとには変化しないデータであるので、通常運転を開始する前に予め編集しておくことによって、計測処理を高速化することができる。登録画像データは、計測領域やマスク領域などを合成した画像データであってもよいし、フィルタ処理，色抽出処理，縮小処理などが施された画像データであってもよいし、ユーザが任意に作成した画像データであってもよい。その他、登録画像データ以外に、画像処理用データとしては、例えばユーザが作成したコンパイル後のプログラムデータであってもよい。他にも、画像処理用データとしては、幾何特徴を含んだデータであってもよい。
【００４３】
図４は、第１の処理部２００において通常運転が行われる様子を示している。具体的には、制御部１００は、処理順序プログラムに基づいて、実行すべき画像処理を指示するコマンドを第１の処理部２００のプロセッサ１８に送信する（図中の矢印参照）。このとき、制御部１００からのコマンドに基づいて、実行すべき画像処理が登録画像データをパラメータとして用いるパターンサーチである場合には、第１のデータ記憶領域２１０から登録画像データを読み出して実行する（図中の網掛け参照）。
【００４４】
図５は、第１の処理部２００において通常運転を停止させることなく、第２の処理部３００において登録画像の編集やシミュレーションが行われる様子を示している。具体的には、制御部１００は、第１の処理部２００のプロセッサ１８に対して複数の画像処理を継続して実行するように指示するコマンドを送信する一方で、ユーザのコンソール５０の操作に基づく操作信号の受信を契機として、第２の処理部３００の第２のプロセッサ２０に対し、第３のデータ記憶領域３１０に記憶された画像処理用データの編集を指示するコマンドを送信するとともに、編集された画像処理用データを用いた画像処理を実行するように指示するコマンドを送信する（図中の矢印参照）。例えば、ユーザがモニタ４０上で編集したい登録画像を選択すると、制御部１００から上述した所定の外部入出力装置（或いは、図２に示す画像入力部１６に接続されたメモリ１７であってもよいし、図２に示す制御部１００のメモリ１３であってもよい）から第３のデータ記憶領域３１０に、登録画像データがロードされる。そして、ユーザがモニタ４０上で、例えば計測領域やマスク領域を設定する（詳細は後述）など、登録画像の編集を行った場合には、制御部１００からのコマンドに基づいて、プロセッサ２０が、第３のデータ記憶領域３１０に記憶されている登録画像データを、計測領域やマスク領域が設定された新たな登録画像データに編集する。
【００４５】
登録画像の編集が終わると、第２の処理部３００においてシミュレーションが行われる。登録画像の編集と同様に、ユーザがモニタ４０上で所定の操作を行うことによって、プロセッサ２０は、第３のデータ記憶領域３１０に記憶されているマスク領域が設定された新たな登録画像データを読み出して、パターンサーチなどの画像処理を行う（図中の網掛け参照）。このとき、編集された登録画像データを用いたパターンサーチだけのシミュレーションを行ってもよいし、処理手順プログラムに規定された画像処理で用いる全ての登録画像データが第３のデータ記憶領域３１０に記憶されていれば、処理手順プログラムに規定された全ての画像処理を実行する全体シミュレーションを行ってもよい。
【００４６】
図６は、第２の処理部３００の第３のデータ記憶領域３１０に記憶されている登録画像データが、第１の処理部２００の第２のデータ記憶領域２２０に転送されている様子を示している。具体的には、編集された画像処理用データを第１の処理部２００において継続して実行される画像処理（通常運転）に反映させたいときには、ユーザがモニタ４０上で所定の操作を行う。そうすると、制御部１００は、第３のデータ記憶領域３１０に記憶されている編集後の登録画像データを読み出して、これをメモリ１３（図２）に記憶する。そして、制御部１００は、第１の処理部２００に対し、メモリ１３から編集された画像処理用データを読み出して第２のデータ記憶領域２２０に記憶するように指示するコマンドを送信する。
【００４７】
このとき、第１の処理部２００では、制御部１００からのコマンドに基づいて、プロセッサ１８が第１のデータ記憶領域２１０にアクセスして複数の画像処理を継続して実行している。したがって、第１の処理部２００のプロセッサ１８は、現在実行中の画像処理に割り込んで（画像処理の実行中に割り込んで）、或いは、複数の画像処理のうち前後の画像処理の合間に割り込んで、メモリ１３から編集された登録画像データを読み出して第２のデータ記憶領域２２０に記憶する。これにより、プロセッサ１８は、第１のデータ記憶領域２１０にアクセスして複数の画像処理を継続して実行することを優先しながら、転送されてきた登録画像データを第２のデータ記憶領域２２０に記憶することができる。
【００４８】
また、登録画像データの容量が大きい場合には、現在実行中の画像処理に割り込んだり、複数の画像処理のうち前後の画像処理の合間に割り込んだりすると、通常運転が停止したり通常運転の処理能力が大幅に低下してしまう虞がある。このような場合には、プロセッサ１８は、制御部１００からのコマンドに基づいて、メモリ１３から編集された登録画像データを読み出す際には、例えばセクタ単位などの小単位に分割して、第２のデータ記憶領域２２０に順次（少しずつ）記憶する。これにより、多少通常運転のスピードが低下したとしても、通常運転が停止したり通常運転の処理能力が大幅に低下したりしてしまうのを防ぐことができる。
【００４９】
また、本実施形態では、第３のデータ記憶領域３１０に記憶されている編集後の登録画像データを、第１の処理部２００外部の記憶領域（例えば画像処理装置１で共用されているメモリなど）ではなく、第１の処理部２００の内部の第２のデータ記憶領域２２０に記憶するようにしている。第２のデータ記憶領域２２０は、主としてプロセッサ１８がアクセス可能な専用のメモリであるので（図２でいえばメモリ１９が相当する）、第１の処理部２００においてパターンサーチなど編集後の登録画像データを用いた画像処理を行う際には、編集後の登録画像データを高速に読み出すことができる。
【００５０】
図７は、第１の処理部２００においてプロセッサ１８が登録画像データを読み出す先として、第１のデータ記憶領域２１０から第２のデータ記憶領域２２０に切り替わっている様子を示している。具体的には、制御部１００は、通常運転として、プロセッサ１８に対してパターンサーチなど編集後の登録画像データを用いた画像処理を行わせる場合には、第１のデータ記憶領域２１０からではなく（図４参照）、第２のデータ記憶領域２２０から編集後の登録画像データを読み出すように指示する。これにより、例えば、現在実行中のフロー１周期が終了して、次のフロー１周期が始まる直前タイミングで、登録画像データを読み出す先が切り替わり、通常運転を停止させることなく、ユーザが編集した登録画像を通常運転に反映させることができる。なお、本実施形態では、第２のデータ記憶領域２２０に記憶されるデータのうち編集後の登録画像データに着目して説明したが、例えば、第２のデータ記憶領域２２０には、編集後の登録画像データと、編集する必要がなかったために編集されない登録画像データとが含まれる場合もある。この場合、編集する必要がなかったために編集されない登録画像データは、第１のデータ記憶領域２１０から第２のデータ記憶領域に転送することができる。また、第１のデータ記憶領域２１０から第２のデータ記憶領域２２０に切り替えるのは、第２のデータ記憶領域２２０への転送が全て完了した後とすることができる。この場合、転送が全て完了した後、第２のデータ記憶領域２２０が通常運転に必要な画像処理用データを提供することになり、第１のデータ記憶領域２１０が編集後の登録画像データを転送する先となる。なお、読み出し先の切り替えについては、ポインタの指定先を切り替えるなどソフトウェアにより行ってもよい。
【００５１】
［処理動作］
図８及び図９は、本実施形態に係る画像処理装置１の処理動作を示すフローチャートである。特に、図９は、図８における再設定の反映（ステップＳ８）を詳細に説明するためのフローチャートである。また、図１０から図１９は、図８に示す処理動作が行われているときのモニタ４０の表示画面例（一部抜粋）である。
【００５２】
図８において、まず、運転開始前の準備工程として、画像処理装置１では検査用データの受信が行われる（ステップＳ１）。具体的に説明すると、例えば汎用のパーソナルコンピュータで構成されるＰＣ７０（図２参照）には、プログラム作成支援ソフトウェアがインストールされており、このソフトウェアが実行されることによって、ＰＣ７０はプログラム作成支援装置として機能する。ユーザは、マウスやキーボードを操作しつつ、モニタ画面上で複数の画像処理を検査項目として選択し、それらを所望の順序に並べて配置し、処理順序を示すフローチャートを作成する。すなわち、コントローラ１０に行わせる一連の画像処理は、画像処理ユニットとしてブロック化されていて、ユーザが画像処理ユニットを実行フロー上に配置するだけで、その画像処理ユニットが、それより前の画像処理ユニットの処理結果に基づいて所定の処理を行うフローシーケンスを作成することができる。
【００５３】
このようなフローチャートは、スタートシンボルにおいて開始し、エンドシンボルにおいて終了し、スタートシンボルからエンドシンボルまでのフローシーケンスがフロー１周期となる。また、フローチャートの作成とともに、各検査項目についてパラメータ値の設定を行ったり、パターンサーチなどの画像処理で用いられ、特定パターンとして基準となる登録画像の設定を行ったりする。登録画像の設定では、既存の登録画像をそのまま使ってもよいが、例えばマスク領域を設定するなどして、より最適な登録画像に編集することが可能である（登録画像の編集についての詳細は後述する）。
【００５４】
このようにして、フローチャートの作成、パラメータ値の設定、登録画像の設定などが終わると、作成されたフローチャートについてはコントローラ１０で解釈できる設定データ（処理順序プログラム）に変換される。そして、ユーザがＰＣ７０のモニタ画面上で所定のボタン等をクリックすることによって、ＰＣ７０からコントローラ１０へ、上述した設定データ、パラメータ値、登録画像のデータ（登録画像データ）などが検査用データとして転送される。そして、画像処理装置１では、この検査用データの受信が行われる（ステップＳ１）。
【００５５】
なお、受信された検査用データは、画像処理装置１の各部に記憶される。具体的には、処理順序プログラムやパラメータ値は制御部１００のメモリ１３に記憶され、登録画像データは、制御部１００のコマンドに基づき第１処理部２００の第１のデータ記憶領域２１０に記憶される。上述したように、パターンサーチ等に必要となる登録画像データを、運転開始前に予め第１のデータ記憶領域２１０に記憶しておくことによって、計測処理を高速に実行することが可能である。
【００５６】
次に、通常運転が開始される（図８のステップＳ２）。具体的には、制御部１００のＣＰＵ１１は、メモリ１３に記憶された処理順序プログラムに基づいて、実行すべき画像処理に用いられるパラメータ値をメモリ１３から読み出すとともに、実行すべき画像処理を指示するコマンドとともに第１の処理部２００のプロセッサ１８に送信する。これを受信したプロセッサ１８は、ＣＰＵ１１から受信したコマンドに基づいて画像処理を実行する際に、ＣＰＵ１１から受信したパラメータ値を、その画像処理の対応するパラメータに割り付ける。また、実行すべき画像処理が、パターンサーチのように登録画像データを用いる画像処理である場合には、第１のデータ記憶領域２１０から登録画像データを読み出す。プロセッサ１８において画像処理が実行されると、その実行結果が制御部１００に送られる。
【００５７】
このように、処理順序プログラムに基づいて、制御部１００から第１の処理部２００へ実行すべき画像処理を指示するコマンド及び必要なパラメータ値が送信され、第１の処理部２００において、必要に応じて登録画像データが読み出され、画像処理が実行された後、第１の処理部２００から制御部１００へ実行結果が送信される、という一連の画像処理が繰り返し実行されることにより、通常運転が行われる。
【００５８】
通常運転中、モニタ４０の表示画面には、例えば図１０に示すような画像（映像）が表示される。図１０は、パターンサーチの実行結果がモニタ４０に表示されている様子を示している。パターンサーチは、特定のパターンを基準となる画像として登録しておき、入力画像の中から、この登録画像に最も似ている部分を検出し、その部分の位置や角度、相関値を計測する処理（画像処理ユニット）である。本実施形態では、登録画像として、「ＪＵＩＣＥ」を含む矩形枠内の画像を採用するとともに、その検出位置を示すパラメータとして矩形枠の重心位置を採用している。また、この登録画像の検出位置は、サーチ領域１００１の左上隅を原点（０，０）とし、右方向に伸びるＸ軸と下方向に延びるＹ軸とが示す座標によって特定される。また、四角枠のサーチ領域１００１は、登録画像に似ている部分があるか否かをサーチする領域である。
【００５９】
図１０に示す例では、サーチ領域１００１内のワーク１０００に対してパターンサーチが実行された結果、登録画像の個数１００２は１個、登録画像の検出位置のＸ座標１００３は２２７．９６８、登録画像の検出位置のＹ座標１００４は１９８．９８６、登録画像が水平方向（図１０でいうとＸ軸方向）から何度傾いたかを示す角度１００５は２０．５０９度、検出された画像が登録画像にどの程度似ているかを示す相関値１００６は９７．７０７、と検出されている。そして、これらのＸ座標１００３，Ｙ座標１００４，角度１００５，相関値１００６に基づいて、ワーク１０００の判定結果１００７は「ＯＫ」と判定されている。
【００６０】
このようにして、生産ライン上を流れてくる複数のワーク１０００に対し、パターンサーチを含む複数の画像処理が実行される。このとき、ユーザは、再設定モードを利用することにより、通常運転を停止させることなく、パターンサーチで用いられる登録画像を編集したり、編集された登録画像を用いてシミュレーションを行ったりすることができる。加えて、通常運転を停止させることなく、編集された登録画像を通常運転に反映させることができる。以下、この再設定モードについて、詳細に説明する。
【００６１】
モニタ４０上でユーザがコンソール５０を所定操作する（例えばメニューバーの「再設定ボタン」をクリックする）ことによって、再設定モードに移行する（図８のステップＳ３）。具体的には、制御部１００のＣＰＵ１１は、操作入力部１５から操作信号を受信したことを契機として、第２の処理部３００に対し、通常運転開始前に第１の処理部２００に送信した登録画像データと同じものを送信する。そうすると、編集用の登録画像データが第３のデータ記憶領域３１０に記憶される。なお、ここでは通常運転開始前に第１の処理部２００に送信した登録画像データと同じものを送信することとしたが、例えば、画像入力部１６を通じてメモリ１７に記憶された画像データを編集用の登録画像データとして送信することもできるし、画像処理装置１に接続された外部入出力装置（ＵＳＢデバイス）等に記憶された画像データを編集用の登録画像データとして送信することもできる。
【００６２】
また、制御部１００のＣＰＵ１１は、モニタ４０に再設定モード用の画像を表示するように指示するコマンドを送信する。その結果、例えば、モニタ４０の表示画面は、図１０に示す画面から図１１に示す画面に切り替わる。図１１の右上端には、「運転中編集」と表示されており、再設定モードに移行した後も通常運転が継続して行われていることを意味している。図１１に示すように、ユーザが作成したフローチャートは、スタートシンボルから下方へ、撮像ユニット，パターンサーチユニット１０１０，キャリブレーションユニット，位置補正ユニット，エッジ位置，・・・と配置されている。また、フローチャートの右側に、ファンクションメニューが表示されており、フローチャートに対して検査項目の追加，切り取り，コピー，削除，グループ化などの編集を行うことができる。
【００６３】
次に、ユーザは登録画像の編集を行う（図８のステップＳ４）。具体的には、制御部１００のＣＰＵ１１は、操作入力部１５から受信する操作信号に基づいて、第２の処理部３００に対し、第３のデータ記憶領域３１０に記憶された登録画像データを編集するようにコマンドを送信する。コマンドを受信した第２の処理部３００のプロセッサ２０は、第３のデータ記憶領域３１０にアクセスして、ここに記憶された登録画像データを編集する。例えば、図１１に示す画面において、コンソール５０を用いてパターンサーチにカーソルを合わせ、実行キーを押すと、図１１に示す画面から図１２に示す画面に切り替わる。図１２に示す画面の左端には、パターンサーチにおいて編集可能な項目が表示されており、入力画像，画像登録，画像設定，サーチ領域，パターン領域１０２０，色抽出，前処理，検出条件１０２１などが編集可能となっている。例えば、ユーザはパターン領域１０２０にカーソルを合わせ、実行キーを押すと、図１２に示す画面から図１３に示す画面に切り替わる。図１３は、パターンサーチ１０１０の設定項目のうちパターン領域１０２０を編集している様子を示している。図１３には、登録画像１０２１として、「ＪＵＩＣＥ」を含む矩形枠（計測領域）内の画像が表示されている。
【００６４】
ここで、登録画像１０２１の内部のうち左上方と右下方には、ノイズがのっている（説明の便宜上、やや大きめのホワイトノイズがのっている）。このようなノイズが登録画像に含まれている場合には、全体的に相関値が低下するなど、好ましい計測結果が得られない。そこで、例えばこのノイズ部分をマスク領域として設定することにより、登録画像をより最適なものに編集することができる。図１３では、１つの計測領域に対してマスク領域を最大４つまで設定することができる（図１３の右方に表示されたマスク領域０〜３）。ユーザは、コンソール５０を用いてマスク領域０にカーソルを合わせてクリックし、ドロップダウンメニューの中からマスク領域の形状として「円」を選択する。そして、上述した右下方のノイズがモニタ４０に表示された円１０３１の内部に含まれるように、その円１０３１の中心位置や半径Ｒを設定する。引き続き、ユーザは、コンソール５０を用いてマスク領域１にカーソルを合わせてクリックし、先ほどと同様に、ドロップダウンメニューの中からマスク領域の形状として「円」を選択し、上述した左上方のノイズがモニタ４０に表示された円１０３２の内部に含まれるように、その円１０３２の中心位置や半径Ｒを設定する。図１４は、左上方のノイズが、モニタ４０に表示された円１０３２の内部に含まれるように、円１０３２の中心位置（０１２８，０２２３）や半径Ｒ（０００７）を設定している様子を示している。これらの設定が終了すると、図１５に示すように、２個のノイズを囲う円１０３１，１０３２の内部については、パターンサーチを行う際に無視される。このような登録画像の編集を行うことにより、登録画像中のノイズに起因した相関値の低下を防ぎ、計測精度を高めることができる。登録画像の編集が終わり、図１５に示すＯＫボタン１０４１をクリックすると、円１０３１，１０３２からなるマスク領域が設定された登録画像が、新たな登録画像データとして第３のデータ記憶領域３１０に記憶される。このように、モニタ４０上に表示されたＯＫボタン１０４１は、ユーザによって編集された新たな登録画像データが、第３のデータ記憶領域３１０に記憶される契機となる部品画像となる。
【００６５】
次に、シミュレーションが行われる（図８のステップＳ５）。具体的には、ユーザがシミュレーションを行うための所定のボタン（図示せず）をクリックすると、制御部１００のＣＰＵ１１は、操作入力部１５から受信する操作信号に基づいて、第２の処理部３００に対し、第３のデータ記憶領域３１０に記憶された登録画像データを用いてシミュレーションを行うように指示するコマンドを送信する。シミュレーションで用いる実験用の画像データとしては、例えば、画像入力部１６を介してメモリ１７に記憶された複数の画像データを用いる。メモリ１７は、カメラ３０ａ〜３０ｃの撮像により生成された画像データを複数蓄積しておく機能を有し、第２の処理部３００においてシミュレーションが行われる際には、それらを実験用の画像データとして提供する。制御部１００は、画像入力部１６を通じて、メモリ１７から過去に撮像された画像データを読み出して、第２の処理部３００のプロセッサ２０に転送する。プロセッサ２０は、制御部１００からのコマンドに基づいて、第３のデータ記憶領域３１０に記憶された編集後の新たな登録画像データ（図８のステップＳ４、図１５参照）を読み出しつつ、画像入力部１６から転送された複数の実験用の画像データを用いて、シミュレーションを行う。
【００６６】
図１６は、複数の実験用の画像データでシミュレーションを行った結果がモニタ４０に表示されている様子を示している。図１６に示す画面は、ユーザがシミュレーション結果を確認したい場合に、コンソール５０を用いてファンクションメニューから履歴ビューア（図示せず）を選択することによって表示される。図１６では、画像変数「&Cam1Img」で特定されるカメラ１（カメラ３０ａ）の撮像により生成された画像データが用いられている。また、画面右半分には、計測回数２７０１回目から２７０４回目までの４枚の入力画像が表示されており、画面左半分の判定結果一覧をみると、いずれも「ＯＫ」となっている。このように、ユーザは履歴ビューアを確認することで、編集した新たな登録画像を用いてシミュレーションを行ったときに、個々の実験用の画像データはどのように判定されるかを、一つ一つ確認していくことができる。また、これらの実験用の画像データの中から、新たな登録画像データの候補を選択することもできる。
【００６７】
図１７から図１９は、シミュレーション結果に対して統計解析を行った様子を示している。図１７から図１９に示す画面は、ユーザがシミュレーション結果に対して統計解析を行いたい場合に、コンソール５０を用いてファンクションメニューから統計解析（図示せず）を選択することによって表示される。図１７では、シミュレーション結果に基づいて、各計測処理に対する判定結果１０５１、計測回数１０５２およびＸ座標の計測値１０５３などが表示されるとともに、計測値の統計量１０５４なども表示される。また、計測値の統計量１０５４については、図１８に示すように、トレンドグラフにして偏差σの３倍を超える計測値がないかどうかを一目で視認することもできるし、図１９に示すように、ヒストグラムにして平均の計測値よりも個々の度数がどちらに偏っているかを一目で視認することもできる。
【００６８】
このように、ユーザは、図１７から図１９に示す統計解析結果を参考にして、編集した登録画像が妥当か否かを検証し、妥当であると判断した場合には、モニタ４０上で図１１に示す画面に戻って、保存ボタン１０１１をクリックした後、終了ボタン１０１２をクリックし、再設定モードを終了する（図８のステップＳ６）。一方、編集した登録画像が妥当でないと判断した場合には、登録画像の編集（図８のステップＳ４）をし直すか、或いは、キャンセルボタン（図示せず）をクリックして再設定モードを終了する。キャンセルボタンをクリックした場合には、画像処理装置１は再設定モードに移行する前の状態に戻る。
【００６９】
一方で、保存ボタン１０１１と終了ボタン１０１２により再設定モードを終了した場合には、再設定の反映が行われる（図８のステップＳ７）。具体的には、図９に示すように、制御部１００は、第３のデータ記憶領域３１０に記憶されている編集後の登録画像データ、すなわち図１５に示すようにマスク領域が設定された登録画像データを、メモリ１３に取り込む（読み出す）。そして、制御部１００からのコマンドに基づいて、第１の処理部２００のプロセッサ１８は、メモリ１３に記憶されている登録画像データを、第１の処理部２００の第２のデータ記憶領域２２０に転送した後（ステップＳ１１）、これを記憶する（ステップＳ１２）。その後、制御部１００は、現在実行中のフロー１周期が終了し、次のフロー１周期が始まる直前のタイミングで、第１の処理部２００においてプロセッサ１８が登録画像データを読み出す先として、第１のデータ記憶領域２１０から第２のデータ記憶領域２２０に切り替えるようなコマンドを送信する（ステップＳ１３）。その結果、画像処理装置１の通常運転を停止させることなく、ユーザが再設定した内容を通常運転に反映させることができる。
【００７０】
なお、図１０や図１６等を用いて説明したように、モニタ４０は、第１の処理部２００および第２の処理部３００における画像処理結果を表示する表示部の一例として機能する。すなわち、第２の処理部３００は、第１の処理部２００において画像処理が継続して実行されているときには、制御部１００からのコマンドに基づいて、第１の処理部２００における画像処理結果を表示するための制御信号をモニタ４０に送信するとともに、第２の処理部３００において第３のデータ記憶領域３１０に記憶された画像処理用データが編集され、編集された画像処理用データを用いた画像処理が実行されたときには、制御部１００からのコマンドに基づいて、第２の処理部３００における画像処理結果を表示するための制御信号を前記表示部に送信する。
【００７１】
また、上述した実施形態では、次のフロー１周期が始まる直前のタイミングで、登録画像データを読み出す先を切り替えるためのコマンドを送信することとしたが、コマンドの送信タイミングは如何なるタイミングであってもよい。例えば、現在実行中のフロー１周期が終了する前に予めコマンドを送信しておき、現在実行中のフロー１周期が終了したら、そのコマンドを実行するようにしてもよい。また、本実施形態では、現在実行中のフローについては最後まで優先的に実行するようにしているが、例えば現在実行中のフロー１周期を強制的に終了して、登録画像データを読み出す先を切り替えて、次のフロー１周期を開始してもよい。
【００７２】
また、再設定した内容が通常運転に反映された後に、再び再設定（２回目の再設定）が行われた場合には、図８のステップＳ６において、再設定モードの終了とともに、第３のデータ記憶領域３１０に記憶されている編集後の新たな登録画像データが、今度は第１の処理部２００の第１のデータ記憶領域２１０に転送される。そして、図８のステップＳ７において、第１の処理部２００において登録画像データを読み出す先として、第２のデータ記憶領域２２０から第１のデータ記憶領域２１０に切り替えられる。
【００７３】
このように、再設定モードにおいてユーザが登録画像データを編集し、新たな登録画像データを生成し、その編集された新たな登録画像データを通常運転に反映させるたびに、第１の処理部２００において登録画像データを読み出す先が入れ替わる。これにより、通常運転を停止させることなく、ユーザは何度でも、登録画像の編集，編集した登録画像を用いたシミュレーション，編集した登録画像の通常運転への反映を繰り返すことができる。最後に、ユーザがモニタ４０上で所定の終了ボタン（図示せず）をクリックした場合には、画像処理装置１は通常運転を終了する（図８のステップＳ８）。以上説明したように、ユーザは通常運転を停止させることなく登録画像を編集することができるが、その他、各検査項目についてのパラメータ値や、ユーザが独自に定義した変数の変数値なども編集することができる。以下、詳細に説明する。
【００７４】
［パラメータ値の編集］
図２０は、パラメータ値の編集が行われている際のモニタ４０の表示画面例である。図２０に示す表示画面は、図１２に示す表示画面において、ユーザがコンソール５０を用いてカーソルを検出条件１０２１に合わせてクリックすると表示される。
【００７５】
図２０に示すように、パターンサーチユニットの検出条件としては、角度範囲（＋方向および−方向），検出個数，設定可能検出個数，サーチ感度１０６１，サーチ精度などを設定することができる。角度範囲は、入力画像中の特定のパターン（登録画像）が回転している場合に、計測する角度の範囲を指定するパラメータであり、検出個数は、パターンサーチ計測で検出する特定のパターンの最大個数を指定するパラメータであり、設定可能検出個数は、設定可能な検出個数を指定するパラメータであり、サーチ感度１０６１は、検出の安定度と処理時間との優先付けを調整するサーチ感度を指定するパラメータであり、サーチ精度は、検出の精度と処理時間との優先付けを調整するサーチ精度を指定するパラメータである。図２０では、これらのうちサーチ感度１０６１にカーソルを合わせてクリックしている様子を示しており、プルダウンメニューとして、低い，より低い，やや低い，普通，やや高い，より高い，高い、という７段階のパラメータ値が表示されている。ユーザは、これらのうち所望のパラメータ値を選択してＯＫボタン１０６２をクリックすると、パラメータ値の編集を行うことができる。
【００７６】
ＯＫボタン１０６２のクリックによりパラメータ値の編集が行われると、制御部１００は、編集後のパラメータ値をメモリ１３に複製する。パラメータ値の編集が行われているときも通常運転は継続しており、通常運転とは別にシミュレーション用にパラメータ値が必要になるからである。例えば図２０において、通常運転におけるサーチ感度１０６１のパラメータ値が「普通」である場合に、ユーザによってサーチ感度１０６１のパラメータ値が「やや高い」に編集されると、制御部１００のＣＰＵ１１は、パラメータ値「やや高い」をメモリ１３に複製する。
【００７７】
その後、制御部１００は、シミュレーションを行う際に、第２の処理部３００に対してパターンサーチを実行させるとき、パターンサーチを実行すべき旨のコマンドとともにパラメータ値「やや高い」を送信する。一方で、第１の処理部２００に対しては、パターンサーチを実行させるとき、パターンサーチを実行すべき旨のコマンドとともにパラメータ値「普通」を送信する。
【００７８】
このように、ユーザが編集したパラメータ値のみをメモリ１３において複製し、シミュレーションに必要な場合には複製したパラメータ値を第２の処理部３００に送信する。そして、シミュレーションの結果、パラメータ値が妥当であれば、ユーザは保存ボタン１０１１および終了ボタン１０１２（図１１参照）をクリックすることによって、再設定モードを終了させ、再設定の反映を行うことができる（図８のステップＳ７参照）。具体的には、制御部１００は、現在実行中のフロー１周期が終了し、次のフロー１周期が始まる直前のタイミングで、複製した方のパラメータ値「やや高い」を送信する。このように、必要なパラメータ値のみメモリ１３において複製すればよいので、メモリ資源を有効に活用しつつ、かつ、通常運転を止めることなく、パラメータ値を編集することができる。なお、複製元となったパラメータ値「普通」については、再設定の反映とともに破棄することができる。
【００７９】
［変数値の編集］
図２１は、ユーザが定義した変数の変数値が編集されている際のモニタ４０の表示画面例である。図２１に示す表示画面は、図１１に示す表示画面において、ユーザがコンソール５０を用いてカーソルを変数設定１０１３に合わせてクリックすると表示される。
【００８０】
ここで、画像処理装置１において、ユーザが定義可能な変数としては、ローカル変数，グローバル変数，画像変数の３個の変数がある。「ローカル変数」は、一時的に数字や文字等を記憶しておくとともに、一の検査設定内で参照可能な変数であり、画像処理ユニットの一の処理順序（フローチャート）において参照し得る変数である。ローカル変数は、コントローラ１０の電源起動時や検査設定切換時に、ユーザによって予め定義された初期値で初期化される。また、特定の画像処理ユニットの実行結果（例えばエッジ位置など）が一時的に記憶された後、その画像処理ユニット以下に配置された画像処理ユニットの実行（例えばエッジ位置とエッジ位置との間の距離など）において参照され得る。「グローバル変数」は、一時的に数字や文字等を記憶しておくとともに、複数の検査設定を跨いで（全検査設定に共通して）参照可能な変数である。すなわち、画像処理ユニットの処理順序（フローチャート）が複数ある場合に、それら複数の処理順序において共通で参照し得る変数である。「画像変数」は、上述のとおりである。
【００８１】
また、ローカル変数，グローバル変数，画像変数は、本実施形態では制御部１００のメモリ１３に記憶されている。したがって、メモリ１３は、処理順序プログラムにおいて参照可能な変数の変数値を記憶する変数値記憶領域の一例として機能する。
【００８２】
図２１は、ローカル変数を編集する際の表示画面例を示しており、スカラ量の変数として#L0000，#L0001，#a，#bなどが定義されている。ユーザは、これらの変数のうち編集したい変数にカーソルを合わせてクリックし、変数値を変更することができる。変数値の編集が終わると、ユーザは閉じるボタン１０７１をクリックにすることにより、変数値の編集を終える。このとき、メモリ１３には、第２の処理部２００においてシミュレーションを行うために、制御部１００のＣＰＵ１１によって編集後の変数値が記憶される。
【００８３】
ここで、変数には、図２１に示すようにユーザが自らの意思によって定義したり変更したりすることが可能な変数だけでなく、例えば実行されたフローの実行回数（何周期が実行されたか）を示すカウントアップ変数なども存在する。このカウントアップ変数は、第１の処理部２００で通常運転を継続している関係上、ユーザが勝手に変更してはならない変数である。
【００８４】
そこで、本実施形態では、図２１に示す各変数に、ユーザがコンソール５０を用いて変更を行ったか否かのフラグが対応付けられており（メモリ１３にフラグの記憶領域が設けられており）、制御部１００のＣＰＵ１１は、このフラグが立っているか否かにより、ユーザの意思により変更された変数であるか否かを識別する。そして、制御部１００のＣＰＵ１１は、第１の処理部２００に対し、変数の変数値を送信するときには、ユーザがコンソール５０を用いて変更を行った変数の変数値についてのみ、実行すべき画像処理を指示するコマンドとともに第１の処理部２００に対して送信する。このように、ユーザが勝手に変更してはならない変数（カウントアップ変数など）については変更されないようにしつつ、ユーザが自らの意思により値を変更した変数についてのみ通常運転に反映させることができるので、システム上のエラーを防ぎつつ、かつ、通常運転を止めることなく、パラメータ値を編集することができる。
【００８５】
［変形例］
図２２から図２６は、本発明の他の実施形態に係る画像処理装置１のコントローラ１０を説明するためのブロック図である。
【００８６】
本発明の実施にあたっては、図２２に示すように、第１のデータ記憶領域２１０と第２のデータ記憶領域２２０を、プロセッサ１８内に内蔵することもできる。つまり、図２に示すプロセッサ１８とメモリ１９を１チップ化することもできる。ただし、１チップ化されたプロセッサは高価になるため、図２に示すハードウェア構成を採用することにより、安価なプロセッサ１８やメモリ１９を利用することができる。
【００８７】
また、本発明の実施にあたっては、図２３に示すように、第１のデータ記憶領域２１０と第２のデータ記憶領域２２０を別個独立の２個のメモリとすることもできる。ただし、２個のメモリを用いると同種部品の部品点数の増加に繋がるため、図２に示すハードウェア構成を採用することにより、同種部品の部品点数を減らして製造コストを抑えることができる。
【００８８】
また、本発明の実施にあたっては、図２４に示すように、第１の処理部２００と第２の処理部３００を、プロセッサ２０やメモリ２１とは別個に設けることもできる。ただし、上述同様、２個のプロセッサ１８，１８’を用いると同種部品の部品点数の増加に繋がるため、図２に示すハードウェア構成を採用することにより、同種部品の部品点数を減らして製造コストを抑えることができる。
【００８９】
加えて、図２に示す第２の処理部３００におけるプロセッサ２０は、モニタ４０にも接続されており、モニタ４０の表示内容を制御する表示制御部としても機能している。したがって、プロセッサ２０からの表示制御信号に基づいて、第１の処理部２００および第２の処理部３００の処理結果をモニタ４０に表示させるとともに、コンソール５０を用いたユーザの操作内容もモニタ４０に表示させることによって、第１の処理部２００の処理結果（通常運転の計測結果）と第２の処理部３００の処理結果（シミュレーションの処理結果）を、ユーザの操作に基づき高速に切り替えることができる。
【００９０】
また、通常運転用のプロセッサ１８は、数十ミリ秒という単位で極めて高速に画像処理を行わなければならないため、高価かつ高性能なプロセッサを用いる必要がある一方、表示用のプロセッサ２０は、数百ミリ秒という単位でモニタ４０に対する表示制御を行えばよい（ユーザが画面遷移を視認できる程度の速さで表示切替を行えばよい）。したがって、上述した本実施形態に係る画像処理装置１（図２参照）では、あえて表示用のプロセッサ２０とメモリ２１の方に、シミュレーションを行う第２の処理部３００としての機能をもたせている。これにより、通常運転用のプロセッサ１８の処理能力をほとんど低下させることなく、通常運転の裏でシミュレーションを行うことができる。
【００９１】
さらに、シミュレーション用のプロセッサと表示用のプロセッサを兼用させるときには、ビデオＲＡＭなど表示用のメモリ２１の使用制限が課せられる。しかし、上述した本実施形態に係る画像処理装置１（図２参照）では、ユーザが編集したい登録画像データを記憶できる領域さえ確保できればシミュレーション可能であるため、この使用制限が弊害になるのを防止できる。具体的には、例えばメモリ２１に記憶できる登録画像データが１枚分である場合には、ユーザがメモリ２１に新たな登録画像データを生成し、実験用の画像データをメモリ１７から読み出しつつシミュレーションを行って、その新たな登録画像データが妥当であれば第１の処理部２００に転送する。次に、再びユーザがメモリ２１に新たな登録画像データを生成し、シミュレーションを行って妥当であれば、その新たな登録画像データを第１の処理部２００に転送する。以下同様にして、新たな登録画像データの生成・第１の処理部２００への転送を、必要な回数だけ繰り返すことにより、メモリ２１に使用制限が課せられていても複数の登録画像の編集を行うことが可能である。なお、全ての登録画像の編集が終了したら、図７を用いて説明したように、登録画像データの読み出し先を切り替えればよい。
【００９２】
また、本発明の実施にあたっては、図２５に示すように、プロセッサ１８としてデュアルコアのプロセッサを用いて、一方のコア１８１およびそれに接続されたメモリ１９に、第１の処理部２００としての機能をもたせるとともに、他方のコア１８２およびそれに接続されたメモリ１９’に、第２の処理部３００としての機能をもたせることもできる。なお、図２６に示すように、プロセッサ１８としてトリプルコアのプロセッサを用いて、制御部１００のＣＰＵ１１の機能も、プロセッサ１８にもたせることもできる。
【符号の説明】
【００９３】
１  画像処理装置
１０  コントローラ
１１  ＣＰＵ
１２  プログラムメモリ
１３  メモリ
１４  通信部
１５  操作入力部
１６  画像入力部
１７  メモリ
１８  プロセッサ
１９  メモリ
２０  プロセッサ
２１  メモリ
３０ａ〜３０ｃ  カメラ
４０  モニタ
５０  コンソール
６０  ＰＬＣ
７０  ＰＣ
【図１】
0005469433.tif 000002
【図２】
0005469433.tif 000003
【図３】
0005469433.tif 000004
【図４】
0005469433.tif 000005
【図５】
0005469433.tif 000006
【図６】
0005469433.tif 000007
【図７】
0005469433.tif 000008
【図８】
0005469433.tif 000009
【図９】
0005469433.tif 000010
【図２２】
0005469433.tif 000011
【図２３】
0005469433.tif 000012
【図２４】
0005469433.tif 000013
【図２５】
0005469433.tif 000014
【図２６】
0005469433.tif 000015
【図１０】
0005469433.tif 000016
【図１１】
0005469433.tif 000017
【図１２】
0005469433.tif 000018
【図１３】
0005469433.tif 000019
【図１４】
0005469433.tif 000020
【図１５】
0005469433.tif 000021
【図１６】
0005469433.tif 000022
【図１７】
0005469433.tif 000023
【図１８】
0005469433.tif 000024
【図１９】
0005469433.tif 000025
【図２０】
0005469433.tif 000026
【図２１】
0005469433.tif 000027