(57)【要約】      （修正有）【課題】ニーズに応じて複数の並列処理を選択的に実行可能な画像処理装置および画像処理プログラムを提供する。【解決手段】並列処理モード選択画面３００は、モード一覧表示３０２と、ＯＫボタン３０４と、キャンセルボタン３０６とを含む。モード一覧表示３０２には、画像処理装置において実行可能な５つの並列処理モードが選択可能に表示される。より具体的には、画像処理装置は、「最速フロー」、「高速トリガ」、「２ラインランダム」、「ノンストップ調整」、「高速ロギング」の５つの並列処理モードを実行可能である。ユーザは、キーボードなどを操作して希望する並列処理モードを選択した上で、ＯＫボタン３０４を押下すると、選択された並列処理モードの実行が開始される。【選択図】図３
2011053787.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
複数の演算処理部と、
被測定物を撮影して画像データを生成するための撮像部に接続され、当該撮像部で撮影された画像データが入力されるカメラインターフェイス部と、
表示部に接続され、当該表示部に表示させる表示用画像データを出力する表示画面出力部と、
外部から入力を受付ける入力部と、
前記画像データを処理する複数の処理単位を記憶するための記憶部と、
前記入力部からの入力により選択された前記処理単位の組み合わせからなる処理手順を登録する処理登録手段と、
前記表示部上に複数の並列処理モードを選択可能に表示するとともに、前記入力部からの並列処理モードの選択を受付けるモード選択手段と、
前記モード選択手段により選択された並列処理モードに従って、対象の前記処理手順に含まれる複数の処理単位の各々を前記複数の演算処理部のいずれかに割り当てる並列化手段とを備える、画像処理装置。
【請求項２】
前記対象の処理手順を単一の演算処理部で処理した場合に要する処理時間と、前記並列化手段により前記対象の処理手順を前記複数の演算処理部で並列処理した場合に要する処理時間との差を前記表示部に表示させるための比較表示出力手段をさらに備える、請求項１に記載の画像処理装置。
【請求項３】
前記比較表示出力手段は、当該処理時間の差を数値表示として出力する、請求項２に記載の画像処理装置。
【請求項４】
前記比較表示出力手段は、当該処理時間の差をグラフ表示として出力する、請求項２に記載の画像処理装置。
【請求項５】
前記並列化手段は、
前記処理手順に含まれる処理項目に関する処理高速化の阻害要因の有無を判断する手段と、
前記処理高速化の阻害要因が存在する場合に、当該阻害要因を解消するための方策を前記表示部に表示させる手段とを含む、請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
前記並列化手段は、
前記対象の処理手順に含まれる複数の処理単位の各々を、複数の並列処理モードの各々に従って前記複数の演算処理部のいずれかに割り当てた場合における、それぞれの並列処理モードについての処理速度に関する情報を推定する手段と、
当該推定されたそれぞれの並列処理モードについての処理速度に関する情報をモード間で比較可能な態様で前記表示部に出力する手段とを含む、請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項７】
前記対象の処理手順に含まれる複数の処理単位の実行順序を変更する並び替え手段をさらに備える、請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項８】
複数の演算処理部および記憶部を有するコンピュータで実行される画像処理プログラムであって、前記コンピュータは、撮像装置、表示装置および入力装置に接続されており、前記記憶部には前記撮像装置により取得された画像データを処理する複数の処理単位が記憶されており、前記画像処理プログラムは、前記コンピュータを、
前記入力部からの入力により選択された前記処理単位の組み合わせからなる処理手順を登録する処理登録手段、
前記表示部上に複数の並列処理モードを選択可能に表示するとともに、前記入力部からの並列処理モードの選択を受付けるモード選択手段、および
前記モード選択手段により選択された並列処理モードに従って、対象の前記処理手順に含まれる複数の処理単位の各々を前記複数の演算処理部のいずれかに割り当てる並列化手段として機能させる、画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の演算処理部を有する画像処理装置およびそれに向けられる画像処理プログラムに関するものである。
【背景技術】
【０００２】
ＦＡ（Factory Automation）分野などにおいては、ワークなどの被測定物上の欠陥や汚れの有無を検査したり、その大きさなどを計測したり、被測定物上の文字や図形などを認識したりする装置として、いわゆる視覚センサが実用化されている。このような視覚センサは、被測定物を撮像することで得られる計測画像に対して、各種の画像処理を行うことで、上述のような処理結果を出力する。
【０００３】
このようなＦＡ分野では、ライン速度の向上や装置コストの低減などのニーズが存在する。このようなニーズに応えるため、１台の画像処理装置に複数のプロセッサを搭載して、並列処理を行う構成が知られている。
【０００４】
たとえば、特開２００２−１６３６３６号公報（特許文献１）には、第１および第２の画像処理システムを有するビジュアル検査装置が開示されている。このビジュアル検査装置は、第１の画像処理システムが計測画像データに基づいて対象物に関する計測を実行し（計測モード）、第２の画像処理システムが対象物に関する計測に必要な設定を実行する（設定モード）。
【０００５】
また、特開２００２−２５１６１０号公報（特許文献２）には、Ｎ個の画像処理プロセッサを有する並列画像処理装置が開示されている。この並列画像処理装置は、１つのデジタル画像データを、処理を必要とする複数の領域に分割して、各領域を画像処理プロセッサに割り当てて並列処理を行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１６３６３６号公報
【特許文献２】特開２００２−２５１６１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
実際の生産ラインでは、各ラインでのニーズや位置付けなどに応じて、要求される機能や性能は様々である。これに対して、上述の先行技術では、特定の機能が予め用意されているだけであり、１台の画像処理装置で様々なニーズに対応するものではなかった。
【０００８】
そこで、この発明は、これらの問題を解決するためになされたものであり、その目的は、ニーズに応じて複数の並列処理を選択的に実行可能な画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【０００９】
この発明のある局面に従う画像処理装置は、複数の演算処理部と、被測定物を撮影して画像データを生成するための撮像部に接続され、当該撮像部で撮影された画像データが入力されるカメラインターフェイス部と、表示部に接続され、当該表示部に表示させる表示用画像データを出力する表示画面出力部と、外部から入力を受付ける入力部と、画像データを処理する複数の処理単位を記憶するための記憶部と、入力部からの入力により選択された処理単位の組み合わせからなる処理手順を登録する処理登録手段と、表示部上に複数の並列処理モードを選択可能に表示するとともに、入力部からの並列処理モードの選択を受付けるモード選択手段と、モード選択手段により選択された並列処理モードに従って、対象の処理手順に含まれる複数の処理単位の各々を複数の演算処理部のいずれかに割り当てる並列化手段とを含む。
【００１０】
好ましくは、本画像処理装置は、対象の処理手順を単一の演算処理部で処理した場合に要する処理時間と、並列化手段により対象の処理手順を複数の演算処理部で並列処理した場合に要する処理時間との差を表示部に表示させるための比較表示出力手段をさらに含む。
【００１１】
さらに好ましくは、比較表示出力手段は、当該処理時間の差を数値表示として出力する。
【００１２】
あるいは、さらに好ましくは、比較表示出力手段は、当該処理時間の差をグラフ表示として出力する。
【００１３】
好ましくは、並列化手段は、処理手順に含まれる処理項目に関する処理高速化の阻害要因の有無を判断する手段と、処理高速化の阻害要因が存在する場合に、当該阻害要因を解消するための方策を表示部に表示させる手段とを含む。
【００１４】
好ましくは、並列化手段は、対象の処理手順に含まれる複数の処理単位の各々を、複数の並列処理モードの各々に従って複数の演算処理部のいずれかに割り当てた場合における、それぞれの並列処理モードについての処理速度に関する情報を推定する手段と、当該推定されたそれぞれの並列処理モードについての処理速度に関する情報をモード間で比較可能な態様で表示部に出力する手段とを含む。
【００１５】
好ましくは、本画像処理装置は、対象の処理手順に含まれる複数の処理単位の実行順序を変更する並び替え手段をさらに含む。
【００１６】
この発明の別の局面に従えば、複数の演算処理部および記憶部を有するコンピュータで実行される画像処理プログラムを提供する。本コンピュータは、撮像装置、表示装置および入力装置に接続されており、記憶部には撮像装置により取得された画像データを処理する複数の処理単位が記憶されている。本画像処理プログラムは、コンピュータを、入力部からの入力により選択された処理単位の組み合わせからなる処理手順を登録する処理登録手段、表示部上に複数の並列処理モードを選択可能に表示するとともに、入力部からの並列処理モードの選択を受付けるモード選択手段、および、モード選択手段により選択された並列処理モードに従って、対象の処理手順に含まれる複数の処理単位の各々を複数の演算処理部のいずれかに割り当てる並列化手段として機能させる。
【発明の効果】
【００１７】
この発明によれば、画像処理装置の適用先のニーズに応じて、撮像装置により取得された画像に対する画像処理を適切な形態で並列処理することができる。
【図面の簡単な説明】
【００１８】
【図１】この発明の実施の形態に従う画像処理装置を含む視覚センサシステムの全体構成を示す概略図である。
【図２】この発明の実施の形態に従う画像処理装置の概略構成図である。
【図３】この発明の実施の形態に従う画像処理装置において提供される並列処理モード選択画面の一例を示す図である。
【図４】この発明の実施の形態に従う画像処理装置において提供される最速フローモードの概要を説明するための図である。
【図５】この発明の実施の形態に従う画像処理装置において提供される高速トリガモードの概要を説明するための図である。
【図６】この発明の実施の形態に従う画像処理装置において提供される２ラインランダムモードの概要を説明するための図である。
【図７】この発明の実施の形態に従う画像処理装置において提供されるノンストップ調整モードの概要を説明するための図である。
【図８】この発明の実施の形態に従う画像処理装置において提供される高速ロギングモードの概要を説明するための図である。
【図９】この発明の実施の形態に従う画像処理装置が提供する最速フローモードの選択時におけるユーザインターフェイス画面の一例を示す図である。
【図１０】この発明の実施の形態に従う画像処理装置が提供する最速フローモードの選択時におけるユーザインターフェイス画面の別の一例を示す図である。
【図１１】この発明の実施の形態に従う画像処理装置が提供する高速トリガモードの選択時におけるユーザインターフェイス画面の一例を示す図である。
【図１２】この発明の実施の形態に従う画像処理装置が提供する高速トリガモードの選択時におけるユーザインターフェイス画面の別の一例を示す図である。
【図１３】この発明の実施の形態に従う画像処理装置において提供される並列処理モード選択を支援するためのユーザインターフェイス画面の一例を示す図である。
【図１４】この発明の実施の形態に従う画像処理装置によって提供される並び替え選択画面の一例を示す図である。
【図１５】この発明の実施の形態に従う画像処理装置において具現化される制御構造の一例を示すブロック図である。
【図１６】この発明の実施の形態に従う処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１９】
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２０】
＜全体装置構成＞
図１は、この発明の実施の形態に従う画像処理装置１００を含む視覚センサシステム１の全体構成を示す概略図である。
【００２１】
図１を参照して、視覚センサシステム１は、生産ラインなどに組み込まれ、被測定物２（以下「ワーク２」とも称す。）上の欠陥や汚れの有無を検査したり、その大きさなどを計測したり、その表面上の文字や図形などを認識したりする。一例として、本実施の形態においては、ワーク２はベルトコンベヤなどの搬送機構６によって搬送され、撮像装置８ａによって順次撮像される。なお、視覚センサシステム１では、撮像装置８ａに加えて、さらに１つ以上（本実施の形態においては、最大で合計４つとする）の撮像装置８ｂが接続可能である。なお、以下の説明では、撮像装置８ａ，８ｂ，・・・を「撮像装置８」とも総称する。撮像装置８によって取得された画像データ（以下「カメラ画像」とも称す。）は、画像処理装置１００へ伝送される。そして、画像処理装置１００は、撮像装置８により撮像されたカメラ画像に対して画像処理を行う。なお、撮像装置８で撮像されるワーク２に対して光を照射する照明機構をさらに設けてもよい。
【００２２】
ワーク２が撮像装置８の撮像範囲に到達したことは、搬送機構６の両端に配置された光電センサ４によって検出される。具体的には、光電センサ４は、同一の光軸上に配置された受光部４ａと投光部４ｂとを含み、投光部４ｂから放射される光がワーク２で遮蔽されることを受光部４ａで検出することによって、ワーク２の到達を検出する。この光電センサ４の検出信号（以下「トリガ信号」とも称す。）は、ＰＬＣ（Programmable Logic Controller）５へ出力される。なお、光電センサ４からのトリガ信号が画像処理装置１００へ直接伝送されるようにしてもよい。
【００２３】
ＰＬＣ５は、光電センサ４などからのトリガ信号を受信するとともに、搬送機構６の制御自体を司る。
【００２４】
視覚センサシステム１は、さらに、画像処理装置１００と、ディスプレイ１０２と、キーボード１０４とを含む。画像処理装置１００は、ＰＬＣ５と、撮像装置８と、ディスプレイ１０２と、キーボード１０４と接続される。なお、キーボード１０４に代えて、あるいは、それに加えて、専用の操作装置（コンソール）を画像処理装置１００に接続可能に構成してもよい。
【００２５】
画像処理装置１００は、ワーク２を含むカメラ画像に対して各種の画像処理を実行するための「測定モード」と、撮像設定などの各種調整を行うための「調整モード」とを有している。測定モードにおいて、画像処理装置１００は、ＰＬＣ５を介して光電センサ４からのトリガ信号を受信すると、撮像装置８に対して撮像指令を与える。この撮像指令に応答して、撮像装置８がワーク２を撮像することで得られたカメラ画像は、画像処理装置１００へ伝送される。代替の処理方法として、撮像装置８に対して連続的に撮像を行わせるとともに、トリガ信号の受信に応答して、必要なカメラ画像のみを画像処理装置１００が取り込むようにしてもよい。
【００２６】
撮像装置８は、一例として、レンズなどの光学系に加えて、ＣＣＤ（Coupled Charged Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサといった、複数の画素に区画された撮像素子を含んで構成される。
【００２７】
画像処理装置１００は、汎用的なアーキテクチャを有しているコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。特に、画像処理装置１００は、複数の演算処理部に相当する、複数のプロセッサコア（以下、単に「コア」とも称す。）を有するＣＰＵを含む。このような汎用的なコンピュータを利用する場合には、本実施の形態に従う機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に従うプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および／またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に従うプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行される場合もある。したがって、本実施の形態に従うプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００２８】
さらに、本実施の形態に従うプログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に従うプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００２９】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００３０】
図２は、この発明の実施の形態に従う画像処理装置１００の概略構成図である。図２を参照して、画像処理装置１００は、ＣＰＵ（Central Processing Unit）１１０と、ＲＡＭ（Random Access Memory）１１２と、表示コントローラ１１４と、システムコントローラ１１６と、Ｉ／Ｏ（Input Output）コントローラ１１８と、ハードディスク１２０と、カメラインターフェイス１２２と、入力インターフェイス１２４と、ＰＬＣインターフェイス１２６と、通信インターフェイス１２８と、データリーダ／ライタ１３０とを含む。これらの各部は、システムコントローラ１１６を中心として、互いにデータ通信可能に接続される。
【００３１】
ＣＰＵ１１０は、複数の演算処理部に相当する複数のコア（第１コア１１０ａおよび第２コア１１０ｂ）を含み、システムコントローラ１１６との間でハードディスク１２０に格納されたプログラム（コード）などを交換して、これらを所定順序で実行することで、各種の演算を実施する。第１コア１１０ａおよび第２コア１１０ｂは、互いに独立して処理が実行可能である。なお、ＣＰＵ１１０に実装されるコアの数は、２個に限られず、技術的に実現可能な範囲で任意の数であってもよい。図２には、単一のＣＰＵ内に複数のコアが実装されている構成（いわゆる、マルチコアプロセッサシステム）を示すが、複数のＣＰＵを実装する構成（いわゆる、マルチプロセッサシステム）を採用してもよい。さらに、マルチプロセッサシステムを構成する各ＣＰＵがマルチコアプロセッサシステムである構成を採用してもよい。すなわち、本発明に係る画像処理装置は、互いに独立して処理を実行可能な演算処理部を有していれば、どのようなアーキテクチャを採用してもよい。
【００３２】
ＲＡＭ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１２０から読み出されたプログラムに加えて、撮像装置８によって取得されたカメラ画像や、カメラ画像に対する処理結果を示すデータ、およびワークデータなどを保持する。
【００３３】
表示コントローラ１１４は、表示装置の典型例であるディスプレイ１０２と接続され、システムコントローラ１１６からの内部コマンドに従って、表示用のデータを生成する。
【００３４】
システムコントローラ１１６は、ＣＰＵ１１０、ＲＡＭ１１２、表示コントローラ１１４、およびＩ／Ｏコントローラ１１８とそれぞれバスを介して接続されており、各部との間でデータ交換などを行うとともに、画像処理装置１００全体の処理を司る。
【００３５】
Ｉ／Ｏコントローラ１１８は、画像処理装置１００に接続される記録媒体や外部機器との間のデータ交換を制御する。より具体的には、Ｉ／Ｏコントローラ１１８は、ハードディスク１２０と、カメラインターフェイス１２２と、入力インターフェイス１２４と、ＰＬＣインターフェイス１２６と、通信インターフェイス１２８と、データリーダ／ライタ１３０と接続される。
【００３６】
ハードディスク１２０は、典型的には、不揮発性の磁気記憶装置であり、ＣＰＵ１１０で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１２０にインストールされるプログラムは、後述するように、メモリカード１０６などに格納された状態で流通する。さらに、ハードディスク１２０には、後述するロギング処理によって、カメラ画像が格納される。なお、ハードディスク１２０に代えて、フラッシュメモリなどの半導体記憶装置やＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）などの光学記憶装置を採用してもよい。
【００３７】
カメラインターフェイス１２２は、ＣＰＵ１１０と撮像装置８との間のデータ伝送を仲介する。より具体的には、カメラインターフェイス１２２は、１つ以上の撮像装置８と接続が可能であり、各撮像装置８からの画像データを一時的に蓄積するための画像バッファ１２２ａ，１２２ｂ，…を含む。なお、画像バッファは、複数の撮像装置８の間で共有してもよいが、各撮像装置８に対応付けて独立に複数配置することが好ましい。カメラインターフェイス１２２は、画像バッファ１２２ａ，１２２ｂ，…の各々に少なくとも１コマ分のカメラ画像のデータが蓄積されると、その蓄積されたデータをＩ／Ｏコントローラ１１８へ転送する。また、カメラインターフェイス１２２は、Ｉ／Ｏコントローラ１１８からの内部コマンドに従って、撮像装置８ａ，８ｂ，…に対して撮像指令を与える。
【００３８】
入力インターフェイス１２４は、ＣＰＵ１１０とキーボード１０４、マウス、タッチパネル、専用コンソールなどの入力装置との間のデータ伝送を仲介する。すなわち、入力インターフェイス１２４は、ユーザが入力装置を操作することで与えられる操作指令を受付ける。
【００３９】
ＰＬＣインターフェイス１２６は、ＣＰＵ１１０とＰＬＣ５との間のデータ伝送を仲介する。より具体的には、ＰＬＣインターフェイス１２６は、ＰＬＣ５によって制御される生産ラインの状態に係る情報やワークに係る情報などをＣＰＵ１１０へ伝送する。
【００４０】
通信インターフェイス１２８は、ＣＰＵ１１０と図示しない他のパーソナルコンピュータやサーバ装置などと間のデータ伝送を仲介する。通信インターフェイス１２８は、典型的には、イーサネット（登録商標）やＵＳＢ（Universal Serial Bus）などからなる。なお、後述するように、メモリカード１０６に格納されたプログラムを画像処理装置１００にインストールする形態に代えて、通信インターフェイス１２８を介して、配信サーバなどからダウンロードしたプログラムを画像処理装置１００にインストールしてもよい。
【００４１】
データリーダ／ライタ１３０は、ＣＰＵ１１０と記録媒体であるメモリカード１０６との間のデータ伝送を仲介する。すなわち、メモリカード１０６には、画像処理装置１００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１３０は、このメモリカード１０６からプログラムを読み出す。また、データリーダ／ライタ１３０は、ＣＰＵ１１０の内部指令に応答して、撮像装置８によって取得されたカメラ画像および／または画像処理装置１００における処理結果などをメモリカード１０６へ書き込む。なお、メモリカード１０６は、ＣＦ（Compact Flash）、ＳＤ（Secure Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体等からなる。
【００４２】
また、画像処理装置１００には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【００４３】
＜概要＞
本実施の形態に従う画像処理装置１００では、カメラ画像に対して、ユーザが任意に選択した少なくとも１つの処理単位（以下「処理項目」または「ユニット」とも記す。）を含む画像処理を実行可能である。この画像処理に含まれる処理項目は、ユーザによって実行順序が定められており、この一連の処理項目によって定義される画像処理の内容を、以下では「フロー」とも称す。すなわち、「フロー」は、ユーザの入力により選択された処理単位の組み合わせを意味する。また、フローを実行することを「計測処理の実行」とも称す。なお、本明細書における処理単位は、特定の用途を有する機能単位であり、入力データと出力データとが定義されている。
【００４４】
このフローの実行にあたり、その中に含まれる処理項目の各々が、ＣＰＵ１１０を構成する複数のコアのいずれかに対して、適宜割り当てられる。画像処理装置１００では、少なくとも処理項目の単位で並列化処理が可能である。特に、本実施の形態に従う画像処理装置１００では、ユーザが状況やニーズに応じて、各コアに対して処理項目をどのように割り当てるかを任意に設定することができる。すなわち、画像処理装置１００では、後述するように、予め複数の並列処理モードが用意されており、ユーザは、これらの並列処理モードのうち１つを任意に選択することができる。すると、選択された並列処理モードに従って、並列化処理が行われる。
【００４５】
図３は、この発明の実施の形態に従う画像処理装置１００において提供される並列処理モード選択画面３００の一例を示す図である。なお、図３に示す並列処理モード選択画面３００は、ディスプレイ１０２上に表示される。
【００４６】
図３を参照して、並列処理モード選択画面３００は、モード一覧表示３０２と、ＯＫボタン３０４と、キャンセルボタン３０６とを含む。モード一覧表示３０２には、画像処理装置１００において実行可能な５つの並列処理モードが選択可能に表示される。より具体的には、画像処理装置１００は、「最速フロー」、「高速トリガ」、「２ラインランダム」、「ノンストップ調整」、「高速ロギング」の５つの並列処理モードを実行可能である。ユーザは、キーボード１０４などを操作して希望する並列処理モードを選択した上で、ＯＫボタン３０４を押下すると、選択された並列処理モードの実行が開始される。
【００４７】
すなわち、並列処理モード選択画面３００は、複数の並列処理モードを選択可能に表示するととともに、ユーザからの並列処理モードの選択を受付ける。
【００４８】
なお、ユーザがキャンセルボタン３０６を押下すると、先の選択内容はキャンセルされる。以下、これらの並列処理モードの詳細について説明する。
【００４９】
＜並列処理モードの概要＞
（１．最速フローモード）
図４は、この発明の実施の形態に従う画像処理装置１００において提供される最速フローモードの概要を説明するための図である。
【００５０】
図４（ａ）は、従来の単一の演算処理部を搭載した画像処理装置が製品（ワーク）に対する出荷前検査などを行う場合のフローを示す。図４（ａ）に示す一例のフローは、処理項目として、カメラ画像入力５００と、サーチ５０１，５０２と、位置ずれ修正５０３と、ラベリング５０４と、キズ汚れ５０５と、エッジ本数５０６と、面積重心５０７とを含む。なお、このようなフローの内容（処理項目の種類および実行順序）は、ユーザが任意に登録することができる。
【００５１】
これらの項目のうち、カメラ画像入力５００が入力処理に相当し、サーチ５０１，５０２および位置ずれ修正５０３が前処理に相当し、ラベリング５０４、キズ汚れ５０５、エッジ本数５０６、および、面積重心５０７が実質的な検査処理に相当する。以下、各処理項目について説明する。
【００５２】
カメラ画像入力５００は、撮像装置８によるワーク２の撮像処理、および画像処理装置１００によるカメラ画像の取り込み処理を含む。なお、カメラ画像入力５００には、画像データの表色系の変換処理なども含み得る。
【００５３】
サーチ５０１および５０２は、ワーク２に印字等される特徴部分を画像パターン（モデル）として予め登録しておき、カメラ画像内でこの登録したモデルと最も一致する部分（位置）を探し出す処理を含む。なお、２つのサーチ５０１および５０２を実行するのは、ワーク２上の複数の特徴点を探し出すことによって、より正確な位置を特定するためである。位置ずれ修正５０３は、サーチ５０１および５０２によるサーチ結果に基づいて、搬送に伴うワーク２の位置ずれや向きずれ（回転）を補正するための処理を含む。たとえば、搬送機構６によるワーク２の搬送に伴って、ワーク２が本来の向きとは異なる向きを向いている場合などにおいて、サーチ５０１および５０２によりワーク２の現在の向きを特定し、続いて、この向きに基づいてカメラ画像を適切な角度だけ回転させるような前処理が実行される。
【００５４】
ラベリング５０４は、カメラ画像内の予め登録した色を有する領域に対して通し番号を付与する処理を含む。たとえば、ワーク２上に特定のマークなどが印刷される場合などに、このラベリング５０４を実行することで、本来印刷すべきマークと同じ数のマークが印刷されているか否かを検査することができる。
【００５５】
キズ汚れ５０５は、カメラ画像内の色のばらつきや変化などに基づいて、ワーク２上のキズや汚れを検出する処理を含む。
【００５６】
エッジ本数５０６は、カメラ画像内の色の変化に基づいてエッジを検出し、その検出したエッジ数やエッジの位置などを取得する処理を含む。たとえば、エッジ本数５０６の結果を用いて、コネクタやＩＣ（Integrated Circuit）などのピン数を検査したり、各ピンの幅や隣接するピン同士の距離を算出したりすることができる。
【００５７】
面積重心５０７は、カメラ画像内で予め登録した色を有する領域を特定し、この特定した領域についての面積や重心位置を算出する処理を含む。たとえば、面積重心５０７の結果を用いて、表面に特定のラベルが貼付されたワーク２に対して、当該ラベルの欠けや位置ずれの有無を検査することができる。
【００５８】
上述したように、位置ずれ修正５０３は、サーチ５０１およびサーチ５０２のそれぞれのサーチ結果に基づいて実行され、ラベリング５０４、キズ汚れ５０５、エッジ本数５０６、および、面積重心５０７は、いずれも互いに独立して実行される。そこで、２つのコアを利用して、図４（ａ）に示すようなフローを処理する場合には、このような処理項目の間の制約条件を満たしつつ、可能な限り多くの処理項目について並列化を行う。
【００５９】
たとえば、図４（ａ）に示すフローは、図４（ｂ）に示すような実行順序で処理されるように並列化される。すなわち、第１コア１１０ａおよび第２コア１１０ｂがそれぞれサーチ５０１およびサーチ５０２を並列的に実行する。さらに、第１コア１１０ａがラベリング５０４を実行している間、第２コア１１０ｂは、キズ汚れ５０５、エッジ本数５０６および面積重心５０７を順次実行する。ここで、ラベリング５０４、キズ汚れ５０５、エッジ本数５０６、および面積重心５０７については、第１コア１１０ａと第２コア１１０ｂとの間で処理に要する時間に不均衡が生じないように、各処理項目がいずれかのコアに適宜割り当てられる。なお、各処理項目に要する時間は、カメラ画像のサイズおよび各種設定値に基づいて、おおよその値が推定される。
【００６０】
さらに、位置ずれ修正５０３については、カメラ画像が２分割された上で、第１コア１１０ａおよび第２コア１１０ｂがそれぞれ対象の部分に対して処理を行うようにしてもよい。たとえば、第１コア１１０ａがカメラ画像の上半分に対して処理を行い、第２コア１１０ｂがカメラ画像の下半分に対して処理を行う。
【００６１】
このように、本実施の形態に従う最速フローモードにおいては、対象のフローに含まれる処理項目を、少なくとも各処理項目の単位で可能な限り別々のコアに同時に処理させるよう割り当てることで、１回のフローの実行に要する処理時間を短縮することができる。すなわち、最も高速に各フローを処理することができる。そのため、最速フローモードでは、１つのワークに対するカメラ画像の取得から画像処理結果の出力までに要する時間を短縮したい生産ラインに適している。
【００６２】
（２．高速トリガモード）
図５は、この発明の実施の形態に従う画像処理装置１００において提供される高速トリガモードの概要を説明するための図である。
【００６３】
図５（ａ）では、トリガ信号の発生毎に撮像装置８によるワーク２の撮像が行われ、この撮像によって得られたカメラ画像が画像処理装置１００へ入力される。そして、このカメラ画像の入力完了後、従来の単一の演算処理部を搭載した画像処理装置が計測処理（上述したような、出荷前検査などのフロー）を実行する。
【００６４】
図５（ａ）に示す例では、撮像装置８によるカメラ画像の取得処理（画像入力）に要する時間に比較して、対応するワーク（計測処理）の実行に要する時間が相対的に長い場合を示す。この図５（ａ）に示す例では、第１回目の画像入力５１１の完了に引き続いて、ＣＰＵが１回目の計測処理５２１を実行する。１回目の計測処理５２１に引き続いて、ＣＰＵが２回目の計測処理５２２を実行できるようにするためには、撮像装置８による２回目の画像入力５１２を、その終了タイミングが１回目の計測処理５２１の終了タイミングと一致するように、開始させる必要がある。なお、第２回目の画像入力５１２の開始タイミングを早めると、計測処理が追いつかないために、後続の第３回目の画像入力５１３においてカメラ画像がオーバフローしてしまう。
【００６５】
すなわち、各計測処理に要する時間がボトルネックとなり、撮像装置８が連続的に撮像できる間隔（最小トリガ間隔）が制限される。そこで、本実施の形態に従う高速トリガモードでは、一連の処理項目を含むフローを１つの単位として、このフローを並列的に実行する。
【００６６】
たとえば、図５（ａ）に示す連続的な処理は、図５（ｂ）に示すような態様で連続的に実行される。すなわち、第１コア１１０ａおよび第２コア１１０ｂは、それぞれ奇数番目および偶数番目の計測処理（フロー）を実行する。この第１コア１１０ａおよび第１コア１１０ｂによる計測処理の連続的な実行タイミングに応じて、撮像装置８による撮像およびカメラ画像の入力が繰返し実行される。
【００６７】
図５（ｂ）に示す並列処理によれば、第１回目の画像入力５１１の完了に引き続いて、第１コア１１０ａが１回目の計測処理５２１を実行する。この第１コア１１０ａによる１回目の計測処理５２１の実行と並行して、１回目の計測処理５２１の完了前に、第２回目の画像入力５１２が開始される。そして、第２回目の画像入力５１２の完了に引き続いて、第２コア１１０ｂが２回目の計測処理５２２を実行する。以下同様にして、第３回目〜第６回目の画像入力５１３〜５１６が順次実行され、この画像入力の完了に伴って、第１コア１１０ａが第３回目および第５回目の計測処理５２３および５２５を実行し、第２コア１１０ｂが第４回目および第６回目の計測処理５２４および５２６を実行する。
【００６８】
このように、本実施の形態に従う高速トリガモードにおいては、ユーザによって登録されるフロー単位で処理を並列化するので、撮像装置８による新たなカメラ画像の取得間隔、すなわち許容されるトリガ間隔を短縮することができる。したがって、各ワーク２に対して必要な処理時間（タクトタイム）を低減できるので、より生産ラインの速度を高めることができる。
【００６９】
（３．２ラインランダムモード）
図６は、この発明の実施の形態に従う画像処理装置１００において提供される２ラインランダムモードの概要を説明するための図である。
【００７０】
図６（ａ）には、１つの撮像装置が接続された従来の単一の演算処理部を搭載した画像処理装置での処理手順を示す。図６（ａ）に示す例では、第１回目の画像入力５３１の完了に引き続いて、ＣＰＵが１回目の計測処理５４１を実行する。この画像入力および計測処理からなる一連のフローが、トリガ信号の発生毎に繰返し実行される。
【００７１】
これに対して、本実施の形態に従う２ラインランダムモードでは、画像処理装置１００に対して、複数の撮像装置８（図１の撮像装置８ａおよび８ｂ）が接続された状態で、互いに独立して、画像入力および計測処理からなる一連のフローが実行される。したがって、１台の画像処理装置１００を用いて、複数のラインをそれぞれ搬送されるワークに対して非同期で検査を行うことができる。すなわち、複数のラインの各々において、対応するフローがランダムに実行可能である。当然のことながら、１つのワークを互いに異なる項目を検査するような処理にも適用可能である。
【００７２】
より具体的には、図６（ｂ）に示すように、第１番目のラインについては、撮像装置８ａの撮像により取得されたカメラ画像の第１回目の画像入力５３１に引き続いて、第１コア１１０ａが１回目の計測処理５４１を実行する。同様にして、第１番目のラインでのトリガ信号の発生毎に、画像入力および計測処理からなる一連のフローが繰返し実行される（画像入力５３２および計測処理５４２、ならびに、画像入力５３３および計測処理５４３）。
【００７３】
この第１コア１１０ａにおいて実行される一連のフローとは非同期で、第１番目のラインについては、撮像装置８ｂの撮像により取得されたカメラ画像の第１回目の画像入力５５１に引き続いて、第２コア１１０ｂが１回目の計測処理５６１を実行する。同様にして、第２番目のラインでのトリガ信号の発生毎に、画像入力および計測処理からなる一連のフローが繰返し実行される（画像入力５５２および計測処理５６２、ならびに、画像入力５５３および計測処理５６３）。
【００７４】
このように、本実施の形態に従う２ラインランダムモードにおいては、非同期で複数のフローを実行できるので、１台の画像処理装置１００を用いて、複数の項目および／または複数のラインを並行して検査等することができる。
【００７５】
（４．ノンストップ調整モード）
図７は、この発明の実施の形態に従う画像処理装置１００において提供されるノンストップ調整モードの概要を説明するための図である。
【００７６】
本実施の形態に従うノンストップ調整モードでは、第１コア１１０ａが一連のフローを繰り返し実行する一方で、第２コア１１０ｂが、フロー調整、結果確認、統計解析などの支援処理を実行する。この第２コア１１０ｂにおける処理は、第１コア１１０ａの動作とは独立して実行される。
【００７７】
より具体的には、図７に示すように、撮像装置８ａの撮像により取得されたカメラ画像の第１回目の画像入力５３１に引き続いて、第１コア１１０ａが１回目の計測処理５４１を実行する。同様にして、トリガ信号の発生毎に、画像入力および計測処理からなる一連の処理が繰返し実行される（画像入力５３２および計測処理５４２、ならびに、画像入力５３３および計測処理５４３）。この第１コア１１０ａにおいて実行される一連のフローとは独立して、第２コア１１０ｂが支援処理５７１を実行する
このように、本実施の形態に従うノンストップ調整モードにおいては、一連のフローの実行とは独立して、フロー調整、結果確認、統計解析などの支援処理を実行できるので、オンライン（フローの実行中）のままフローの調整や設定変更ができる。
【００７８】
このように、本実施の形態に従うノンストップ調整モードにおいては、オンライン中に何らかの設定の不具合などが発見された場合であっても、計測処理を止めることなく、その原因を解析して、設定内容を変更することができる。そのため、ライン停止に伴う機会損失の発生を低減できる。
【００７９】
（５．高速ロギングモード）
図８は、この発明の実施の形態に従う画像処理装置１００において提供される高速ロギングモードの概要を説明するための図である。
【００８０】
図８（ａ）には、従来の単一の演算処理部を搭載した画像処理装置での処理手順を示す。図８（ａ）に示す例では、第１回目の画像入力５３１の完了に引き続いて、ＣＰＵが１回目の計測処理５４１を実行し、さらにロギング処理５８１を実行する。このロギング処理５８１は、この計測処理５４１の対象となったカメラ画像をハードディスク１２０などの記憶媒体へ格納する処理、および／または、画像処理装置の外部にある装置（典型的には、通信インターフェイス１２８を介して接続された、いわゆるＵＳＢメモリなど）への出力を行う処理である。このロギング処理５８１は、データのリード／ライトが必要であるため、ＣＰＵを相対的に多くの時間占有する。そのため、あるフローの終了後、後続のフローを実行できるタイミングが遅延する。
【００８１】
これに対して、図８（ｂ）に示す、本実施の形態に従う高速ロギングモードでは、第１コア１１０ａが従来と同様の一連のフローを実行する一方で、第２コア１１０ｂが、第１コア１１０ａの動作と並行してロギング処理５８１を実行する。
【００８２】
より具体的には、図８（ｂ）に示すように、撮像装置８ａの撮像により取得されたカメラ画像の第１回目の画像入力５３１に引き続いて、第１コア１１０ａが１回目の計測処理５４１を実行する。同様にして、トリガ信号の発生毎に、画像入力および計測処理からなる一連の処理が繰返し実行される（画像入力５３２および計測処理５４２、画像入力５３３および計測処理５４３、…）。この第１コア１１０ａにおいて実行される一連のフローに連動して、第２コア１１０ｂがロギング処理５８１，５８２，…を実行する。なお、ハードディスク１２０への書込速度や通信インターフェイス１２８における伝送速度に比較して、画像処理装置１００の内部バスにおける伝送速度は非常に高いので、カメラ画像入力とロギング処理とを同時に実行しても、バスの占有に伴う速度低下は無視できる。
【００８３】
このように、本実施の形態に従う高速ロギングモードにおいては、一連のフローの実行とは独立して、カメラ画像のロギング処理が実行されるので、一連のフローの実行周期（トリガ間隔）をロギング処理が含まれない場合と実質的に同じに維持でき、タクトタイムを増大させることなく、カメラ画像のロギングを行うことができる。ロギングを連続的に行えることで、万が一、画像処理結果に不具合が生じた場合であっても、その原因究明などを迅速に行うことができる。
【００８４】
＜ユーザインターフェイス＞
（１．最速フローモード）
図９は、この発明の実施の形態に従う画像処理装置１００が提供する最速フローモードの選択時におけるユーザインターフェイス画面４００の一例を示す図である。図１０は、この発明の実施の形態に従う画像処理装置１００が提供する最速フローモードの選択時におけるユーザインターフェイス画面４００の別の一例を示す図である。
【００８５】
図９を参照して、ユーザインターフェイス画面４００は、カメラ接続情報エリア４０２と、検査フローエリア４０４と、カメラ情報エリア４０６と、再計測対象エリア４０８と、フロー分析結果エリア４１０と、タイミングチャートエリア４２０と、処理時間表示エリア４３０とを含む。
【００８６】
カメラ接続情報エリア４０２は、画像処理装置１００に接続される撮像装置８の情報を表示するとともに、ユーザによる設定操作を受付ける。より具体的には、カメラ接続情報エリア４０２は、画像処理装置１００に接続中の撮像装置８の情報を示す「カメラＣＨ」の項目と、デフォルトで選択される撮像装置８を選択するための「初期選択カメラ」の項目とを含む。
【００８７】
検査フローエリア４０４は、現在設定されているフローの内容を表示する。より具体的には、検査フローエリア４０４には、フローに含まれる処理項目がアイコンとともに、その実行順序に従って視覚的に表示される。図９には、上述の図４に対応するフローに含まれる処理項目が例示されている。
【００８８】
さらに、検査フローエリア４０４では、ユーザによるフローの登録内容（処理項目の種類および順序など）の変更が可能である。典型的には、ユーザは、マウスなどを用いていわゆるドラッグ・ドロップ操作を行うことで、処理項目の追加・削除や実行順序の並び替えなどを行う。すなわち、検査フローエリア４０４は、ユーザ操作に応答して、実行順序が定められた複数の処理項目からなるフローを登録する。
【００８９】
カメラ情報エリア４０６は、画像処理に用いるカメラ画像を取得するための撮像装置８における現在の設定値を表示するとともに、ユーザによる撮像装置８に対する設定値の変更操作を受付ける。より具体的には、カメラ情報エリア４０６は、「カメラ形式」、「露光時間」、「取り込みライン」、および「フレーム／フィールド」の項目とを含む。「カメラ形式」の項目は、カメラ画像の取得に用いる撮像装置８の情報（型番など）を示す。「露光時間」の項目は、カメラ画像の取得に用いる撮像装置８におけるシャッタスピードを示す。「取り込みライン」の項目は、撮像装置８において取得されるカメラ画像のうちどの範囲を取り込むかを、撮像装置８の走査線（ライン）の番号で指定する。「フレーム／フィールド」の項目は、ＮＴＳＣ（National Television System Committee）方式などの「飛び越し」走査を行うような撮像方式において、１フィールド単位で処理を行うのか、あるいは、複数フィールドをまとめた１フレーム単位で処理を行うのかを選択する。なお、カメラ情報エリア４０６は、後述する再計測対象エリア４０８において、撮像装置８が画像の取り込み先として指定された場合に有効化される。
【００９０】
本実施の形態に従う画像処理装置１００は、撮像装置８の撮像により取得されるカメラ画像に対して逐次的に画像処理を行うモードに加えて、過去に取得された、もしくは、外部入力される画像に対しても画像処理が可能である。再計測対象エリア４０８は、このような撮像装置８から直接的に入力されるカメラ画像以外の画像を処理の対象とする場合の設定を受付ける。より具体的には、再計測対象エリア４０８は、「カメラ」、「最新ロギング画像」、「画像ファイル」の３つの項目に対応付けられたラジオボタンを含む。ユーザが「カメラ」の項目に対応するラジオボタンを選択すると、画像処理装置１００に接続された撮像装置８により取得されたカメラ画像が処理対象となる。一方、ユーザが「最新ロギング画像」の項目に対応するラジオボタンを選択すると、最も直近にロギングされたカメラ画像が処理対象となる。さらに、ユーザが「画像ファイル」の項目に対応するラジオボタンを選択すると、指定されたディレクトリ（フォルダ）に保存されている画像ファイルが処理対象となる。
【００９１】
フロー分析結果エリア４１０は、専門知識の乏しいユーザであっても、適切なフローの組み立てや調整が行えるように、ヒントや注意点などの支援メッセージを表示する。また、フロー分析結果エリア４１０には、効率的な並列処理が行えないような状況において、警告メッセージを通知する。
【００９２】
タイミングチャートエリア４２０は、選択された並列処理モードによる処理高速化の効果を視覚的に表示する。より具体的には、タイミングチャートエリア４２０は、通常チャート４２２と、高速化チャート４２４とを含む。
【００９３】
通常チャート４２２は、従来の単一の演算処理部を搭載した画像処理装置と同様に、１つのコアのみで設定されたフローを実行する場合の処理タイミングを視覚的に表示する。この通常チャート４２２では、紙面横方向が時間軸を示す。そして、対象のフローに含まれる各処理項目に対応するブロックが、その（予想）処理時間に対応する幅をもって、一連に配置される。
【００９４】
通常チャート４２２と並べて、選択されている最速フローモードの処理タイミングを示す高速化チャート４２４が視覚的に表示される。この高速化チャート４２４では、第１コア１１０ａを示す「ＣＰＵ０」の段と、第２コア１１０ｂを示す「ＣＰＵ１」の段とが設けられており、それぞれのコアで実行される処理タイミングに合わせて、各処理項目に対応するブロックが一連に表示される。
【００９５】
なお、タイミングチャートエリア４２０の下部には、一連のフローに要する処理時間（図９に示す例では、「１２００」ｍｓおよび「２２００」ｍｓ）が視認可能な形態で表示される。
【００９６】
図９から明らかなように、タイミングチャートエリア４２０が表示されることで、ユーザは、単一の演算処理部のみを用いてフローを実行する場合に比較して、複数のコアで並列化処理を行う最速フローモードを選択した場合の処理高速化の効果を一見して把握することができる。さらに、処理時間表示エリア４３０には、それぞれ通常チャート４２２および高速化チャート４２４に対応付けて、処理に要すると推定される時間が対比表示される。
【００９７】
すなわち、タイミングチャートエリア４２０は、対象のフローを単一の演算処理部で処理した場合に要する処理時間と、対象のフローを複数の演算処理部で並列処理した場合に要する処理時間との差を、グラフ態様で表示する。また、処理時間表示エリア４３０は、これらの処理時間の差を数値表示する。
【００９８】
なお、本実施の形態に従う最速フローモードでは、第１コア１１０ａおよび第２コア１１０ｂに対して、処理項目の単位で並列化処理を行うので、処理項目の間で処理時間に不均衡が生じている場合などには、並列化処理による処理高速化の効果が得られにくい。
【００９９】
そこで、本実施の形態に従う画像処理装置１００は、このような処理高速化の阻害要因などが生じていると判断した場合には、ユーザインターフェイス画面４００において、図１０に示すような支援表示を行う。
【０１００】
図１０を参照して、画像処理装置１００は、リソースを効率的に利用できていないと判断すると、ユーザインターフェイス画面４００のフロー分析結果エリア４１０において、その内容をユーザに通知する。より具体的には、図１０に示す例では、２つの「ラベリング」が直列的に実行されるようにフローが設定されており、最初の「ラベリング」の処理時間と、当該「ラベリング」と並列処理される「キズ汚れ」の処理時間との間の時間差が相対的に大きいとすると、第２コア１１０ｂが待ち状態になり、第２コア１１０ｂのリソースを有効に利用することができない。
【０１０１】
このとき、フロー分析結果エリア４１０には「ユニット間の処理時間の差が大きいため、効率的に処理を割り当てられません。」とのメッセージが表示される。ユーザが、カーソルＣＲＳなどを用いてこのメッセージを選択すると、その原因となる処理項目が強調表示４０５される。すなわち、検査フローエリア４０４の「ラベリング」の項目、および、タイミングチャートエリア４２０の「ラベリング」のブロックが強調表示される。
【０１０２】
すなわち、フロー分析結果エリア４１０は、フローに対する処理高速化の阻害要因が存在する場合に、当該阻害要因を解消するための方策をユーザに通知する。
【０１０３】
このような通知および表示態様の変化によって、専門知識の乏しいユーザであっても、処理効率を改善するためのヒントを容易に得ることができる。
【０１０４】
（２．高速トリガモード）
図１１は、この発明の実施の形態に従う画像処理装置１００が提供する高速トリガモードの選択時におけるユーザインターフェイス画面４０１の一例を示す図である。図１２は、この発明の実施の形態に従う画像処理装置１００が提供する高速トリガモードの選択時におけるユーザインターフェイス画面４０１の別の一例を示す図である。
【０１０５】
図１１を参照して、ユーザインターフェイス画面４０１は、カメラ接続情報エリア４０２と、検査フローエリア４０４と、カメラ情報エリア４０６と、再計測対象エリア４０８と、フロー分析結果エリア４１０と、タイミングチャートエリア４４０と、処理時間表示エリア４５０とを含む。
【０１０６】
ユーザインターフェイス画面４０１に含まれる、カメラ接続情報エリア４０２、検査フローエリア４０４、カメラ情報エリア４０６、再計測対象エリア４０８、および、フロー分析結果エリア４１０については、それぞれ図９に示すユーザインターフェイス画面４００に含まれる対応するエリアの内容と同様であるので、詳細な説明は繰返さない。
【０１０７】
タイミングチャートエリア４４０は、選択された並列処理モードによる処理高速化の効果を視覚的に表示する。より具体的には、タイミングチャートエリア４４０は、通常チャート４４２と、高速化チャート４４４とを含む。
【０１０８】
通常チャート４４２は、従来の単一の演算処理部を搭載した画像処理装置と同様に、１つのコアのみで設定されたフローを実行する場合の処理タイミングを視覚的に表示する。すなわち、通常チャート４４２では、紙面横方向が時間軸を示す。そして、撮像装置によるカメラ画像の取得、および、ＣＰＵによる一連のフローの実行に対応するブロックが一連に配置される。このとき、カメラ画像の取得を示す「カメラ」の段には、トリガ信号を受け入れ可能な最短周期に対応付けて、ブロックが配置される。このトリガ信号を受け入れ可能な最短周期は、先行の撮像によって得られた画像に対するフローの実行に要する処理時間に応じて決定される。
【０１０９】
この通常チャート４４２と並べて、選択されている高速トリガモードの処理タイミングを示す高速化チャート４４４が視覚的に表示される。この高速化チャート４４４では、第１コア１１０ａを示す「ＣＰＵ０」の段および第２コア１１０ｂを示す「ＣＰＵ１」の段に加えて、それぞれのコアに対応付けられた「カメラ」の段が設けられている。そして、撮像装置８の撮像によって得られたカメラ画像がいずれのコアで処理されるのかが把握できるように、「カメラ」の段および「ＣＰＵ」の段に、各処理項目に対応するブロックが処理タイミングに合わせて一連に表示される。
【０１１０】
なお、タイミングチャートエリア４４０には、許容されるトリガタイミングが時間軸に対応付けて表示（符号４４６）される。
【０１１１】
図１１から明らかなように、タイミングチャートエリア４４０が表示されることで、ユーザは、単一の演算処理部のみを用いてフローを実行する場合に比較して、複数のコアで並列化処理を行う高速トリガモードを選択した場合の処理高速化の効果を一見して把握することができる。さらに、処理時間表示エリア４５０には、それぞれ通常チャート４４２および高速化チャート４４４に対応付けて、許容されるトリガ時間が対比表示される。
【０１１２】
すなわち、タイミングチャートエリア４４０は、対象のフローを単一の演算処理部で処理した場合の許容されるトリガ間隔と、対象のフローを複数の演算処理部で並列処理した場合の許容されるトリガ間隔との差を、グラフ態様で表示する。また、処理時間表示エリア４３０は、これらのトリガ間隔の差を数値表示する。
【０１１３】
なお、本実施の形態に従う高速トリガモードは、基本的に、１つの撮像装置８によって順次出力されるカメラ画像に対して、複数のコアが交互に画像処理（フロー）を実行することで、トリガ間隔（撮像装置８が撮像を行う間隔）をより短縮する。そのため、１つのフローにカメラ画像の取り込みが複数回含まれている場合などには、並列化処理による処理高速化の効果が得られにくい。
【０１１４】
そこで、本実施の形態に従う画像処理装置１００は、このような処理高速化の阻害要因などが生じていると判断した場合には、ユーザインターフェイス画面４０１において、図１２に示すような支援表示を行う。
【０１１５】
図１２を参照して、画像処理装置１００は、ハードウェアの制約やフローの設定に起因して、最適な並列化が行えないと判断すると、ユーザインターフェイス画面４０１のフロー分析結果エリア４１０において、その内容をユーザに通知する。より具体的には、図１２に示す例では、２つの「カメラ画像入力」が直列的に実行されるようにフローが設定されており、第１コア１１０ａと第２コア１１０ｂとが交互にフローを実行することができない。
【０１１６】
このとき、フロー分析結果エリア４１０には「カメラ画像入力が複数あるため、トリガ間隔を短縮できません。」とのメッセージが表示される。ユーザが、カーソルＣＲＳなどを用いてこのメッセージを選択すると、その原因となる処理項目が強調表示４４８される。より具体的には、検査フローエリア４０４の「カメラ画像入力」の項目、および、タイミングチャートエリア４４０の２番目のカメラ画像入力以降の処理項目に対応するブロックが強調表示される。
【０１１７】
すなわち、フロー分析結果エリア４１０は、フローに対する処理高速化の阻害要因が存在する場合に、当該阻害要因を解消するための方策をユーザに通知する。
【０１１８】
このような通知および表示態様の変化によって、専門知識の乏しいユーザであっても、処理効率を改善するためのヒントを容易に得ることができる。
【０１１９】
（３．その他のモード）
「２ラインランダム」、「ノンストップ調整」および「高速ロギング」の各々についても、上述のユーザインターフェイス画面４００および４０１と同様であるので、詳細な説明は繰返さない。
【０１２０】
＜ユーザ支援機能＞
上述のように、本実施の形態に従う画像処理装置１００は、複数の並列処理モードを任意に選択可能であるが、専門知識の乏しいユーザは、対象の生産ラインなどにおいて、いずれの並列処理モードが最適であるかを一見して把握することができない。そこで、本実施の形態に従う画像処理装置１００は、設定済のフローに対して、いずれの並列処理モードを採用するのが最適であるかを比較表示して、ユーザによる設定を支援する。以下、このユーザ支援機能について説明する。
【０１２１】
図１３は、この発明の実施の形態に従う画像処理装置１００において提供される並列処理モード選択を支援するためのユーザインターフェイス画面６００の一例を示す図である。
【０１２２】
図１３を参照して、ユーザインターフェイス画面６００は、タイミングチャートエリア６１０と、一覧表示エリア６２０とを含む。また、ディスプレイ１０２には、ユーザインターフェイス画面６００と並べて、フロー表示ウィンドウ６５０が表示される。
【０１２３】
フロー表示ウィンドウ６５０には、設定されているフローに含まれる処理項目がアイコンとともに、その実行順序に従って視覚的に一覧表示される。ユーザが、フロー表示ウィンドウ６５０に対して、マウスなどを用いていわゆるドラッグ・ドロップ操作を行うことで、処理項目の追加・削除や実行順序の並び替えなどを行う。すなわち、フロー表示ウィンドウ６５０は、ユーザ操作に応答して、実行順序が定められた複数の処理項目からなるフローを登録する。また、後述するような処理項目の並び替え処理の実行に伴って、フロー表示ウィンドウ６５０には、処理項目の順序の変更が随時反映される。なお、図１３に示す例では、１３個の処理項目を含むフローが示されている。
【０１２４】
タイミングチャートエリア６１０には、設定されているフローを選択された並列処理モードに従って実行する場合に、そのフローに含まれる処理項目の実行タイミングが視覚的に表示される。すなわち、タイミングチャートエリア６１０では、紙面横方向が時間軸を示し、各処理項目に対応するブロックが、その（予想）処理時間に対応する幅をもって、一連に配置される。また、タイミングチャートエリア６１０では各処理項目に対応するブロックに隣接して、処理速度に関する情報が表示される。
【０１２５】
さらに、ユーザが設定するフローにおいては、各処理項目について、その前段および後段における処理項目との間の関係が予め定義されており、これらの関係を情報に基づいて、順番を入れ替えることができない一連の処理項目の間には、依存関係を示すインジケータ６１１〜６１５が表示される。図１３に示す例では、「１．エッジの位置」と「３．位置ずれ修正」との間に依存関係（符号６１１）が存在し、同様に、「２．エッジの位置」と「３．位置ずれ修正」との間に依存関係（符号６１２）が存在することが視覚的に示されている。さらに、「４．モデル辞書」と「７．汎用文字検査」との間に依存関係（符号６１３）が存在し、同様に、「５．モデル辞書」と「７．汎用文字検査」との間に依存関係（符号６１４）が存在することが視覚的に示されている。さらに、「６．計測前処理」と「７．汎用文字検査」との間に依存関係（符号６１５）が存在することが視覚的に示されている。
【０１２６】
一覧表示エリア６２０では、各並列処理モードを選択した場合に予想される処理時間などが、並列化処理を行わない場合に予想される処理時間などと比較表示される。より具体的には、一覧表示エリア６２０は、表示列６２２，６２４，６２６，６２８を含む。
【０１２７】
表示列６２２は、並列化処理を行わない場合の情報を示し、表示列６２４は、高速トリガモードが選択された場合の情報を示し、表示列６２６は、高速ロギングモードが選択された場合の情報を示し、表示列６２８は、最速フローモードが選択された情報を示す。
【０１２８】
また、表示列６２２，６２４，６２６，６２８の各々は、設定されたフロー全体の処理時間を示す「計測時間」、トリガ間隔の許容最小時間を示す「最速タクト」、並列化処理を採用することによる処理時間の短縮量を示す「並列化」、および、発生している不具合などを表示する「エラー（リスク）」の計４つの項目を含む。すなわち、表示列６２２，６２４，６２６，６２８の各々では、対応する並列処理モードが選択された場合に予測される処理の実行状態を示す情報が表示される。
【０１２９】
本実施の形態に従う「並列化」の値としては、並列化処理を行わない場合に、対象のフローの実行に要する処理時間（計測時間）を基準として、各並列処理モードが選択された場合に、対象のフローの実行に要する処理時間（計測時間）の低減率が用いられる。あるいは、並列化処理を行わない場合に許容されるトリガ間隔（最速タクト）を基準として、各並列処理モードが選択された場合に許容されるトリガ間隔（最速タクト）の低減率が用いられる。さらにあるいは、これらの低減率を総合的に評価した値が採用されてもよい。
【０１３０】
基本的には、「並列化」の値としては、フローの実行に要する処理時間が小さくなるほど、あるいは、許容されるトリガ間隔が小さくなるほど、その値が大きく表示されるように設計することが好ましい。これにより、ユーザは、「並列化」の値が最も大きくなる並列処理モードを最適なモードであると直感的に選択することができる。
【０１３１】
このように、画像処理装置１００は、対象のフローに含まれる複数の処理項目の各々を、複数の並列処理モードの各々に従って並列化した場合における、それぞれの並列処理モードについての処理速度に関する情報を推定し、この推定されたそれぞれの並列処理モードについての処理速度に関する情報をモード間で比較可能な態様で表示する。
【０１３２】
さらに、表示列６２８には、より処理時間が短縮できるように、対象のフローに含まれる処理項目の並び替えを指示するための「フロー自動並び替え」ボタン６３０が選択可能に表示される。ユーザがこのボタン６３０を選択すると、図１４に示すような並び替え選択画面７００が表示される。
【０１３３】
図１４は、この発明の実施の形態に従う画像処理装置１００によって提供される並び替え選択画面７００の一例を示す図である。
【０１３４】
図１４を参照して、並び替え選択画面７００は、最速フローモードが選択された場合における、対象のフローに含まれる処理項目の実行順の並び替えを指示する。この並び替え選択画面７００は、処理項目の実行順を並び替えるための複数のルールを含む選択一覧７０２を含む。この選択一覧７０２では、「フロー登録順」、「平均処理速度順」、「最長処理速度順」、および、「最短処理速度順」の４つのうちいずれか１つを選択可能になっている。すなわち、ユーザがいずれかのラジオボタンを選択すると、対応するルールが有効化される。「フロー登録順」が選択された場合には、フローの処理項目として最初に登録された順序に従って並び替えが行われる。「平均処理速度順」が選択された場合には、各処理項目の実際の実行に要した時間の平均値に基づいて、並び替えが行われる。同様に、「最長処理速度順」が選択された場合には、各処理項目について実際の実行に要した時間の最大値に基づいて、並び替えが行われる。また、同様に、「最短処理速度順」が選択された場合には、各処理項目について実際の実行に要した時間の最小値に基づいて、並び替えが行われる。
【０１３５】
このような処理項目の並び替えを実行することで、並列化効率が最も高くなるように、処理項目の順序を最適化できる。なお、上述の「平均処理速度順」、「最長処理速度順」、「最短処理速度順」については、処理速度算出設定７０４に入力される設定値に基づいて、過去の実行実績のうちどの範囲を処理速度の算出に用いるかが指定される。すなわち、図１４に示す例では、処理速度算出設定７０４において「２０」が設定されているので、直近の実行結果から２０回分の実行結果に基づいて、処理速度（実行に要した時間）が算出される。
【０１３６】
さらに、並び替え選択画面７００には、計測処理（フロー）の実行に伴って、処理速度（実行に要した時間）を更新するとともに、更新後の処理速度に基づいて、再度並び替えを行うか否かを指定するチェックボックス７０６を含む。このチェックボックス７０６がチェック（選択）されると、フローに含まれる処理項目がフローの実行によって実測される処理時間に応じて動的に並び替えられる。一方、チェックボックス７０６がチェックされていなければ、ユーザが何らかの操作を行うまで、現在の処理項目の順序は変更されない。
【０１３７】
そして、ユーザがＯＫボタン７０８を選択すると、指定された内容が反映され、キャンセルボタン７１０を選択すると、指定された内容が破棄されて、ユーザインターフェイス画面６００へ戻る。
【０１３８】
このように、画像処理装置１００は、複数のルールのうちユーザが選択するルールに従って、対象のフローに含まれる複数の処理項目の実行順序を変更する（並び替える）。
【０１３９】
＜制御構造＞
次に、上述の画像処理装置１００における各種機能を提供するための制御構造について説明する。
【０１４０】
図１５は、この発明の実施の形態に従う画像処理装置１００において具現化される制御構造の一例を示すブロック図である。図１５に示す各ブロックは、システムコントローラ１１６がハードディスク１２０に格納されたプログラム（コード）をＲＡＭ１１２に展開して、ＣＰＵ１１０に実行させることで提供される。なお、図１５に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図１５に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【０１４１】
図１５を参照して、画像処理装置１００は、その制御構造として、ＧＵＩ（Graphical User Interface）モジュール２０２と、モード選択モジュール２０４と、フロー登録モジュール２０６と、ＵＩ（ユーザインターフェイス）画面生成モジュール２０８と、処理項目保持部２１０と、フロー保持部２１２と、並列化モジュール２１４と、並び替えモジュール２１６と、第１処理部２２２と、第２処理部２２４と、処理時間監視モジュール２２６と、並列化基準保持部２１８とを含む。
【０１４２】
ＧＵＩモジュール２０２は、モード選択モジュール２０４、フロー登録モジュール２０６、およびＵＩ画面生成モジュール２０８などと協働して、ディスプレイ１０２に上述のような各種画面を表示するとともに、入力画面などに対するユーザ操作に応じた指令を受付ける。なお、ＧＵＩモジュール２０２の一部もしくは全部の機能が、ＯＳの基本機能として提供される場合もある。
【０１４３】
モード選択モジュール２０４、ユーザによる並列処理モード選択を受付けるとともに、選択された並列処理モードを並列化モジュール２１４へ通知する。すなわち、モード選択モジュール２０４は、画像処理装置１００に接続されたディスプレイ１０２上に複数の並列処理モードを選択可能に表示する機能、および、ユーザからの並列処理モードの選択を受付ける機能を提供する。より具体的には、モード選択モジュール２０４は、図３に示すような並列処理モード選択画面３００を表示するための描画データをＧＵＩモジュール２０２へ出力するとともに、並列処理モード選択画面３００上で指定された並列処理モードを受付ける。
【０１４４】
フロー登録モジュール２０６は、ユーザによるフローの登録を受付けるとともに、登録されたフローの内容をフロー保持部２１２へ格納する。すなわち、フロー登録モジュール２０６は、ユーザ操作に応答して、実行順序が定められた複数の処理項目からなるフローを登録する機能を提供する。より具体的には、フロー登録モジュール２０６は、処理項目保持部２１０に格納されている処理項目リスト２１０ａを参照して、図１３のフロー表示ウィンドウ６５０を表示するための描画データをＧＵＩモジュール２０２へ出力する。また、フロー登録モジュール２０６は、ユーザ操作に応じて、処理項目リスト２１０ａから指定された情報を選択して、フロー保持部２１２へ順次出力する。
【０１４５】
処理項目保持部２１０は、画像処理装置１００によって実行可能な処理項目の内容を示す情報（コード）やデフォルトの設定値などが記述された処理項目リスト２１０ａを保持している。すなわち、処理項目保持部２１０は、画像データを処理する複数の処理単位を記憶する。なお、この処理項目リスト２１０ａには、処理項目同士の依存関係などの情報も定義されている。
【０１４６】
フロー保持部２１２は、登録されたフローの情報、すなわち、ユーザが選択した処理項目を指定された順序で並べたリストである、フロー定義２１２ａを保持する。このフロー定義２１２ａには、少なくとも各処理項目についての入力先データおよび出力データなどが定義されている。
【０１４７】
並列化モジュール２１４は、フロー保持部２１２に保持されているフロー定義２１２ａに基づいて、対象のフローに含まれる処理項目の各々を第１処理部２２２および第２処理部２２４のいずれかで実行させる。すなわち、並列化モジュール２１４は、ユーザにより選択された並列処理モードに従って、対象のフローに含まれる複数の処理項目の各々を複数の演算処理部のいずれかに割り当てる機能を提供する。より具体的には、並列化モジュール２１４は、割り当て機能２１４ａと、評価機能２１４ｂとを含む。
【０１４８】
割り当て機能２１４ａは、対象のフローに含まれる処理項目の各々を、並列化基準保持部２１８に格納されている並列化基準２１８ａを参照して、第１処理部２２２および第２処理部２２４のいずれか一方へ割り当てる。この並列化基準２１８ａには、処理項目を割り当てるための規則が定義されている。たとえば、第１処理部２２２および第２処理部２２４のそれぞれに割り当てられる処理項目の実行に要する処理時間を評価し、その評価された処理時間の間で不均衡が生じないようにするためのアルゴリズムなどが定義されている。
【０１４９】
また、評価機能２１４ｂは、何らかの規則に従って処理項目が割り当てられた後の状態に対して、並列化基準保持部２１８に格納されている並列化基準２１８ａを参照して、処理高速化が阻害されているか否か、および／または、処理高速化を阻害するような制約の有無などを評価する。すなわち、評価機能２１４ｂは、対象のフローを単一のＣＰＵで処理した場合に要する処理時間と、対象のフローを複数のコアで並列処理した場合に要する処理時間との差を表示するための機能を提供する。
【０１５０】
並列化基準２１８ａは、上述のような規則に加えて、処理高速化が阻害されている状況と判断するための条件、および、各条件に対応付けたヒントや注意点などの支援メッセージを含む。そして、評価機能２１４ｂは、何らかの阻害されている状況や何らかの制約が存在していると判断されると、その内容を示す情報を支援メッセージとともに、ＵＩ画面生成モジュール２０８へ出力する。すなわち、評価機能２１４ｂは、対象のフローに含まれる処理項目に関する処理高速化の阻害要因の有無を判断する機能、および、処理高速化の阻害要因が存在する場合に、当該阻害要因を解消するための方策をユーザに通知する機能を提供する。
【０１５１】
さらに、評価機能２１４ｂは、対象のフローに含まれる複数の処理単位の各々を、複数の並列処理モードの各々に従って複数のコアのいずれかに割り当てた場合における、それぞれの並列処理モードについての処理速度に関する情報を推定する機能、および、当該推定されたそれぞれの並列処理モードについての処理速度に関する情報をモード間で比較可能な態様で表示する機能を提供する。
【０１５２】
並び替えモジュール２１６は、フロー定義２１２ａに記述された複数の処理項目についての実行順序を変更する。すなわち、並び替えモジュール２１６は、複数のルールのうちユーザが選択するルールに従って、対象のフローに含まれる複数の処理項目の実行順序を変更する機能を提供する。より具体的には、並び替えモジュール２１６は、並び替え選択画面７００（図１４参照）上でのユーザ操作に応答して、指定されたルールに従って、処理項目の順序を変更する。このとき、並び替えモジュール２１６は、後述する、処理時間監視モジュール２２６から各処理項目についての実行に要した時間を取得する。
【０１５３】
並列化基準保持部２１８は、上述のような処理項目を並列化するためのアルゴリズムや規則を記述した並列化基準２１８ａを保持する。
【０１５４】
第１処理部２２２および第２処理部２２４は、それぞれ並列化モジュール２１４によって割り当てられた処理項目を実行する。
【０１５５】
処理時間監視モジュール２２６は、第１処理部２２２および第２処理部２２４の各々における処理の実行状態を監視する。すなわち、処理時間監視モジュール２２６は、第１処理部２２２および第２処理部２２４において実行される各処理項目の処理時間を監視するとともに、その値を履歴として保持する。
【０１５６】
＜処理手順＞
次に、上述の画像処理装置１００における処理手順について説明する。
【０１５７】
図１６は、この発明の実施の形態に従う処理手順を示すフローチャートである。
図１６を参照して、画像処理装置１００は、ディスプレイ１０２にフロー登録用画面を表示し（ステップＳ１００）、ユーザによる処理項目の選択を受付ける（ステップＳ１０２）。そして、画像処理装置１００は、ユーザによるフロー登録完了の指示を受けたか否かを判断する（ステップＳ１０４）。ユーザによるフロー登録完了の指示を受けていなければ（ステップＳ１０４においてＮＯ）、ステップＳ１０２以下の処理が繰返される。
【０１５８】
これに対して、ユーザによるフロー登録完了の指示を受けていれば（ステップＳ１０４においてＹＥＳ）、画像処理装置１００は、登録されたフローの内容を保存する（ステップＳ１０６）。
【０１５９】
続いて、画像処理装置１００は、並列化処理が要求されたか否かを判断する（ステップＳ１０８）。並列化処理が要求されていなければ（ステップＳ１０８においてＮＯ）、処理はステップＳ１４０へ進む。
【０１６０】
これに対して、並列化処理が要求されていれば（ステップＳ１０８においてＹＥＳ）、画像処理装置１００は、ディスプレイ１０２に並列処理モード選択画面（図３）を表示し（ステップＳ１１０）、ユーザによる並列処理モードの選択を受付ける（ステップＳ１１２）。続いて、画像処理装置１００は、選択された並列処理モードに従って、保存されている対象のフローに含まれる処理項目の実行順序および実行主体（第１コア１１０ａおよび第２コア１１０ｂのいずれか）を決定する（ステップＳ１１４）。さらに、画像処理装置１００は、ステップＳ１１４において決定した内容に基づいて、単一のコアで対象のフローを実行した場合の処理時間および並列処理で対象のフローを実行した場合の処理時間などを算出し（ステップＳ１１６）、その算出結果に基づいて、ユーザインターフェイス画面を表示する（ステップＳ１１８）。このとき、画像処理装置１００は、処理高速化の阻害要因などが存在していれば、その内容をユーザインターフェイス画面（図９〜図１２に示すフロー分析結果エリア４１０など）に表示する。
【０１６１】
続いて、画像処理装置１００は、ユーザがフロー分析結果エリアを選択したか否かを判断する（ステップＳ１２０）。ユーザがフロー分析結果エリアを選択した場合（ステップＳ１２０においてＹＥＳ）には、画像処理装置１００は、処理高速化の阻害要因となっている処理項目の表示態様を変化させる（ステップＳ１２２）。そして、処理はステップＳ１２４へ進む。
【０１６２】
ユーザがフロー分析結果エリアを選択していない場合（ステップＳ１２０においてＮＯ）には、画像処理装置１００は、ユーザによる並列処理モード比較の指示を受けたか否かを判断する（ステップＳ１２４）。ユーザによる並列処理モード比較の指示を受けていなければ（ステップＳ１２４においてＮＯ）、処理はステップＳ１４０へ進む。
【０１６３】
ユーザによる並列処理モード比較の指示を受けていれば（ステップＳ１２４においてＹＥＳ）、画像処理装置１００は、予め設定された複数の並列処理モードの各々に従って、保存されている対象のフローに含まれる処理項目の実行順序および実行主体を仮想的に決定し、その決定した内容で処理を行った場合の処理時間および処理順序をそれぞれ算出する（ステップＳ１２６）。そして、画像処理装置１００は、ステップＳ１２６における算出結果に基づいて、並列処理モード選択を支援するためのユーザインターフェイス画面を表示する（ステップＳ１２８）。
【０１６４】
続いて、画像処理装置１００は、ステップＳ１２８において表示した並列処理モード選択を支援するためのユーザインターフェイス画面において、ユーザによる対象のフローに含まれる処理項目の並び替えの指示を受けたか否かを判断する（ステップＳ１３０）。ユーザによる対象のフローに含まれる処理項目の並び替えの指示を受けていなければ（ステップＳ１３０においてＮＯ）、処理はステップＳ１４０へ進む。
【０１６５】
ユーザによる対象のフローに含まれる処理項目の並び替えの指示を受けていれば（ステップＳ１３０においてＹＥＳ）、画像処理装置１００は、ディスプレイ１０２に並び替え選択画面（図１４）を表示し（ステップＳ１３２）、ユーザによる並び替え規則の選択を受付ける（ステップＳ１３４）。続いて、画像処理装置１００は、選択された並び替え規則に従って、対象のフローに含まれる処理項目の実行順序を変更する（ステップＳ１３６）。
【０１６６】
その後、画像処理装置１００は、ユーザによる計測処理の開始の指示を受けたか否かを判断する（ステップＳ１４０）。ユーザによる計測処理の開始の指示を受けていれば（ステップＳ１４０においてＹＥＳ）、画像処理装置１００は、現在の設定されている内容でフローの実行を開始する（ステップＳ１４２）。
【０１６７】
ユーザによる計測処理の開始の指示を受けていなければ（ステップＳ１４０においてＮＯ）、画像処理装置１００は、ユーザによる対象のフローの内容の変更の指示を受けたか否かを判断する（ステップＳ１４４）。ユーザによる対象のフローの内容の変更の指示を受けていれば（ステップＳ１４４においてＹＥＳ）、ステップＳ１００以下の処理が繰返される。
【０１６８】
これに対して、ユーザによる対象のフローの内容の変更の指示を受けていなければ（ステップＳ１４４においてＮＯ）、画像処理装置１００は、ユーザによる処理終了の指示を受けたか否かを判断する（ステップＳ１４６）。ユーザによる処理終了の指示を受けていなければ（ステップＳ１４６においてＮＯ）、ステップＳ１４０以下の処理が繰返される。これに対して、ユーザによる処理終了の指示を受けていれば（ステップＳ１４６においてＹＥＳ）、処理は終了する。
【０１６９】
＜作用効果＞
本実施の形態に従う画像処理装置によれば、複数の並列処理モードが用意されており、ユーザがこれらの並列処理モードのうちいずれかを任意に選択すると、選択された並列処理モードに従った並列処理が実現される。実際の生産ラインでは、各ラインでの性能や位置付けなどに応じて、様々なニーズが要求される。このようなニーズとしては、たとえば、計測時間の短縮、タクトタイムの短縮、画像処理装置のコストダウン、ダウンタイムの低減（オンラインメンテナンスの実現）、トラブル時の早期原因究明などが挙げられる。本実施の形態に従う画像処理装置では、これらのニーズに応じた並列処理モードが用意されており、ユーザは、これらのうち適切な並列処理モードを選択するだけで、対象の生産ラインに応じたニーズを満たすことができる。
【０１７０】
また、本実施の形態に従う画像処理装置によれば、予め定められた特定の並列化手法ではなく、複数の並列化手法を任意に選択できるので、より汎用性を高めることができる。そのため、特定の生産ラインに特化したような専用機を採用する場合に比較して、全体としてのコストダウンを実現できる。
【０１７１】
また、本実施の形態に従う画像処理装置によれば、各種のユーザ支援機能が提供されるので、ユーザは、いずれの並列処理モードを選択すればよいのかを一見して把握することができる。すなわち、上述の図１３に示すようなユーザインターフェイス画面６００では、並列処理モードの別にそれぞれの高速化の効果を比較することができる。また、図９に示すようなユーザインターフェイス４００および／または図１１に示すようなユーザインターフェイス４０１では、従来の単一の演算処理部を用いた場合（並列処理を行わない場合）との比較で、並列処理による処理高速化の効果を一見して把握することができる。
【０１７２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７３】
１  視覚センサシステム、２  被測定物、４  光電センサ、４ａ  受光部、４ｂ  投光部、６  搬送機構、８，８ａ，８ｂ，  撮像装置、１００  画像処理装置、１０２  ディスプレイ、１０４  キーボード、１０６  メモリカード、１１０  ＣＰＵ、１１０ａ  第１コア、１１０ｂ  第２コア、１１４  表示コントローラ、１１６  システムコントローラ、１１８  Ｉ／Ｏコントローラ、１２２  カメラインターフェイス、１２２ａ，１２２ｂ，  画像バッファ、１２４  入力インターフェイス、１２６  ＰＬＣインターフェイス、１２８  通信インターフェイス、１３０  データリーダ／ライタ、２０２  ＧＵＩモジュール、２０４  モード選択モジュール、２０６  フロー登録モジュール、２０８  画面生成モジュール、２１０  処理項目保持部、２１０ａ  処理項目リスト、２１２  フロー保持部、２１２ａ  フロー定義、２１４  並列化モジュール、２１４ａ  割り当て機能、２１４ｂ  評価機能、２１６  モジュール、２１８  並列化基準保持部、２１８ａ  並列化基準、２２２  第１処理部、２２４  第２処理部、２２６  処理時間監視モジュール。
【図１】
2011053787.tif 000003
【図２】
2011053787.tif 000004
【図３】
2011053787.tif 000005
【図４】
2011053787.tif 000006
【図５】
2011053787.tif 000007
【図６】
2011053787.tif 000008
【図７】
2011053787.tif 000009
【図８】
2011053787.tif 000010
【図９】
2011053787.tif 000011
【図１０】
2011053787.tif 000012
【図１１】
2011053787.tif 000013
【図１２】
2011053787.tif 000014
【図１３】
2011053787.tif 000015
【図１４】
2011053787.tif 000016
【図１５】
2011053787.tif 000017
【図１６】
2011053787.tif 000018