(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-11
(45)【発行日】2022-07-20
(54)【発明の名称】画像処理装置、画像処理方法、および画像処理プログラム
(51)【国際特許分類】
G06T 1/00 20060101AFI20220712BHJP
G06F 3/048 20220101ALI20220712BHJP
G06F 3/0482 20130101ALI20220712BHJP
【FI】
G06T1/00 300
G06F3/048
G06F3/0482
(21)【出願番号】P 2016130485
(22)【出願日】2016-06-30
【審査請求日】2019-04-05
【審判番号】
【審判請求日】2020-11-25
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】永田 耕平
(72)【発明者】
【氏名】井尻 隆史
(72)【発明者】
【氏名】中岡 象平
【合議体】
【審判長】畑中 高行
【審判官】五十嵐 努
【審判官】樫本 剛
(56)【参考文献】
【文献】特開2014-203309(JP,A)
【文献】村上 慶,画像処理ライブラリ HALCON,画像ラボ,日本工業出版株式会社,2008年4月10日,第19巻,第4号,pp.71-76
(58)【調査した分野】(Int.Cl.,DB名)
G06T1/00-1/40
G06T3/00-5/50
G06T9/00-9/40
G06F3/048-3/0489
(57)【特許請求の範囲】
【請求項1】
画像処理装置であって、
複数の処理部と、
処理設定に従って画像処理を実行する実行制御部と、
予め準備された複数の処理項目から前記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供する設定部とを備え、
前記設定部は、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されており、
前記第2順序指定項目に関連付けられている前記複数の処理項目は、前記画像処理装置に接続され得る撮像部から画像を取得する処理を含み、
前記実行制御部は、
前記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始し、
前記第2順序指定項目の実行順序が到来すると、
前記撮像部が撮像中であるか否かを示す信号が
、前記撮像部が撮像中である状態から前記撮像部が撮像中でない状態に移行したという条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々を順次、前記複数の処理部のいずれかに割り当て、当該処理項目集合を割り当てた処理部に、当該処理項目集合に関連付けられている各処理項目の処理を直列的に順次実行させる、画像処理装置。
【請求項2】
前記ユーザインターフェイスは、前記第2順序指定項目が、当該第2順序指定項目に関連付けられている複数の処理項目集合よりも上層になるように、前記第2順序指定項目と当該処理項目集合とを階層的に表示する、請求項1に記載の画像処理装置。
【請求項3】
前記第2順序指定項目は、当該第2順序指定項目に関連付け得る処理項目集合の範囲を定める開始処理項目と終了処理項目とで構成されており、
前記実行制御部は、前記第2順序指定項目の実行順序が到来すると、
前記撮像部が撮像中であるか否かを示す信号が
、前記撮像部が撮像中である状態から前記撮像部が撮像中でない状態に移行したという条件を満たす度に、前記開始処理項目と前記終了処理項目との間に設定された処理項目集合の各々の処理を順次開始する、請求項1または2に記載の画像処理装置。
【請求項4】
前記複数の処理項目は、検査対象物を撮像して得られた画像内において、当該検査対象物を表わす領域をサーチする処理を含む、請求項1~3のいずれか1項に記載の画像処理装置。
【請求項5】
複数の処理部を備える画像処理装置によって処理設定に従って実行される画像処理方法であって、
予め準備された複数の処理項目から前記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供するステップを備え、前記ユーザインターフェイスは、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されており、
また、前記第2順序指定項目に関連付けられている前記複数の処理項目は、前記画像処理装置に接続され得る撮像部から画像を取得する処理を含み、さらに、
前記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始するステップと、
前記第2順序指定項目の実行順序が到来すると、
前記撮像部が撮像中であるか否かを示す信号が
、前記撮像部が撮像中である状態から前記撮像部が撮像中でない状態に移行したという条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々を順次、前記複数の処理部のいずれかに割り当て、当該処理項目集合を割り当てた処理部に、当該処理項目集合に関連付けられている各処理項目の処理を直列的に順次実行させるステップとを備える、画像処理方法。
【請求項6】
複数の処理部を備える画像処理装置によって処理設定に従って実行される画像処理プログラムであって、
前記画像処理プログラムは、コンピュータに、
予め準備された複数の処理項目から前記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供するステップを実行させ、前記ユーザインターフェイスは、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されており、
また、前記第2順序指定項目に関連付けられている前記複数の処理項目は、前記画像処理装置に接続され得る撮像部から画像を取得する処理を含み、さらに、
前記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始するステップと、
前記第2順序指定項目の実行順序が到来すると、
前記撮像部が撮像中であるか否かを示す信号が
、前記撮像部が撮像中である状態から前記撮像部が撮像中でない状態に移行したという条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々を順次、前記複数の処理部のいずれかに割り当て、当該処理項目集合を割り当てた処理部に、当該処理項目集合に関連付けられている各処理項目の処理を直列的に順次実行させるステップとを実行させる、画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、画像処理の実行順序を指定することが可能な画像処理装置、画像処理方法、および画像処理プログラムに関するものである。
【背景技術】
【0002】
FA(Factory Automation)分野において、ワークなどの検査対象物を自動で検査するための技術が普及している。当該技術に関し、特開2015-232479号公報(特許文献1)は、照明光源でワークを照らすことによりワークを検査するための検査装置を開示している。
【0003】
ワークの検査処理は、様々な画像処理の組み合わせによって実現される。このような画像処理の組み合わせをユーザ自身で設定するためのユーザインターフェイスを提供するアプリケーションが開発されている。当該アプリケーションに関し、特開2014-203309号公報(特許文献2)は、「ユーザが有している特定のアプリケーション画像処理についての知識を利用して、より効率かつ高速な画像処理を実現できる」画像処理装置を開示している。特許文献2によれば、ユーザは、異なる画像処理が定義された複数の処理項目の中から所望の処理項目を選択し、当該処理項目をユーザインターフェイス上に並べて配置し、その並び順に応じた実行順序に従って各処理項目が実行される。ユーザは、処理項目の組み合わせを変えることで任意の検査処理を実現することができる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-232479号公報
【文献】特開2014-203309号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
FA分野においては、ワークを連続的に検査するために、ワークの撮像処理と得られた画像に対する所定の画像処理との一連の処理が繰り返し実行されることがある。特許文献2によれば、ユーザは、当該一連の処理の各々を並列処理させるように処理項目を組み合わせることができる。当該一連の処理の各々を並列処理したときに、1つの撮像部に対して複数の撮像処理を重複させないことが望まれている。すなわち、重複できない処理を同時に実行しないように、設定された各処理を実行することが望まれている。
【課題を解決するための手段】
【0006】
ある局面に従うと、画像処理装置は、処理設定に従って画像処理を実行する実行制御部と、予め準備された複数の処理項目から上記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供する設定部とを備える。上記設定部は、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されている。上記実行制御部は、上記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始し、上記第2順序指定項目の実行順序が到来すると、予め定められた信号が予め定められた条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々の処理を順次開始する。
【0007】
好ましくは、上記ユーザインターフェイスは、上記第2順序指定項目が、当該第2順序指定項目に関連付けられている複数の処理項目集合よりも上層になるように、上記第2順序指定項目と当該処理項目集合とを階層的に表示する。
【0008】
好ましくは、上記第2順序指定項目は、当該第2順序指定項目に関連付け得る処理項目集合の範囲を定める開始処理項目と終了処理項目とで構成されている。上記設定部は、上記第2順序指定項目の実行順序が到来すると、予め定められた信号が予め定められた条件を満たす度に、上記開始処理項目と上記終了処理項目との間に設定された処理項目集合の各々の処理を順次開始する。
【0009】
好ましくは、上記複数の処理項目は、検査対象物を撮像して得られた画像内において、当該検査対象物を表わす領域をサーチする処理を含む。
【0010】
好ましくは、上記複数の処理項目は、上記画像処理装置に接続され得る撮像部から画像を取得する処理を含む。
【0011】
好ましくは、上記予め定められた信号は、上記撮像部が撮像中であるか否かを示す。上記予め定められた条件は、上記撮像部が撮像中である状態から上記撮像部が撮像中でない状態に移行したことにより満たされる。
【0012】
他の局面に従うと、処理設定に従って画像処理を実行する画像処理方法は、予め準備された複数の処理項目から上記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供するステップを備える。上記ユーザインターフェイスは、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されている。上記画像処理方法は、さらに、上記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始するステップと、上記第2順序指定項目の実行順序が到来すると、予め定められた信号が予め定められた条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々の処理を順次開始するステップとを備える。
【0013】
他の局面に従うと、処理設定に従って画像処理を実行する画像処理プログラムは、コンピュータに、予め準備された複数の処理項目から上記処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供するステップを実行させる。上記ユーザインターフェイスは、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる、第1順序指定項目および第2順序指定項目を指定可能に構成されている。上記画像処理プログラムは、上記コンピュータに、さらに、上記第1順序指定項目の実行順序が到来すると、当該第1順序指定項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始するステップと、上記第2順序指定項目の実行順序が到来すると、予め定められた信号が予め定められた条件を満たす度に、当該第2順序指定項目に関連付けられている複数の処理項目集合の各々の処理を順次開始するステップとを実行させる。
【発明の効果】
【0014】
ある局面において、重複できない処理を同時に実行しないように、設定された各処理を実行することができる。
【0015】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0016】
【
図1】画像処理装置を含む画像処理システムの全体構成を示す概略図である。
【
図2】画像処理装置の機能構成を示す模式図である。
【
図3】画像処理装置が提供する処理設定作成に係るユーザインターフェイスを示す図である。
【
図4】画像処理装置が提供する撮像処理の多段化に係るユーザインターフェイスの一例を示す図である。
【
図6】
図5に示される処理フローに伴う各コアへの処理の割り当ての推移を示す図である。
【
図7】取得処理が重複している様子を示す図である。
【
図8】
図5および
図6に示される多段処理の実行により撮像されるワークを示す図である。
【
図9】画像処理装置が提供する処理の並列化に係るユーザインターフェイスの一例を示す図である。
【
図11】並列処理時において各コアに割り当てられている処理を時系列に示す図である。
【
図12】画像処理装置に実装される画像処理プログラムの構成を示す模式図である。
【
図13】画像処理装置が設定モードにおいて実行する設定処理を表わすフローチャートである。
【
図14】画像処理装置が測定モードにおいて実行する測定処理を表わすフローチャートである。
【
図15】応用例に従う画像処理装置が提供する撮像処理の多段化に係るユーザインターフェイスの一例を示す図である。
【
図16】複数の多段化項目が設定された場合の処理フローを示す図である。
【
図17】
図16に示される処理フローに伴う各コアへの処理の割り当ての推移を示す図である。
【
図18】本応用例に従う多段処理で撮像されているワークWを示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各変形例は、適宜選択的に組み合わされてもよい。
【0018】
<A.画像処理システム1の構成>
まず、本発明の実施の形態に係る画像処理装置100を含む画像処理システム1の全体構成について説明する。
図1は、本実施の形態に係る画像処理装置100を含む画像処理システム1の全体構成を示す概略図である。
【0019】
図1を参照して、画像処理システム1は、主要なコンポーネントとして、視覚センサとも称される画像処理装置100と、画像処理装置100に接続された撮像部8と、画像処理装置100と通信可能なPLC(Programmable Logic Controller)5とを含む。一例として、表示部102と一体的に構成された画像処理装置100を示す。
【0020】
画像処理装置100は、生産ラインなどに組み込まれ、検査対象物(以下、「ワークW」ともいう。)上の欠陥や汚れの有無の検査、ワークWの大きさや配置向きなどの計測、ワークW表面上の文字や図形などの認識といった画像処理を実行する。すなわち、画像処理装置100は、ワークWを撮像することで生成された画像データに対する画像処理を実行する。画像処理システム1においては、ワークWはベルトコンベヤなどの搬送機構6によって搬送され、撮像部8によって順次撮像される。PLC5は、画像処理装置100と連係して、搬送機構6などの制御を実行する。
【0021】
撮像部8は、一例として、レンズなどの光学系に加えて、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった、複数の画素に区画された撮像素子を含んで構成される。撮像部8による撮像によって取得された画像データ(以下、「カメラ画像」ともいう。)は、画像処理装置100へ伝送される。そして、画像処理装置100は、撮像部8により撮像されたカメラ画像に対して画像処理を行う。撮像部8によって撮像されるワークWに対して光を照射する照明装置をさらに設けてもよい。より多くの撮像部8を接続できるように画像処理装置100を構成してもよい。
【0022】
画像処理装置100は、撮像部8からのカメラ画像に対して予め設定された画像処理を実行するための「測定モード」と、画像処理の内容を設定や調整するための「設定モード」とを少なくとも有している。「設定モード」において、ユーザは、画像処理を実現するための処理項目およびその実行順序などを画像処理装置100に対して設定できる。この画像処理に係る設定手順などの詳細については後述する。
【0023】
<B.画像処理装置100の構成>
次に、
図1に示す画像処理システム1に含まれる画像処理装置100の全体構成について説明する。
図2は、本実施の形態に係る画像処理装置100の機能構成を示す模式図である。
【0024】
図2を参照して、画像処理装置100は、典型的には、汎用的なコンピュータアーキテクチャに従う構造を有しており、予めインストールされたプログラムをプロセッサが実行することで、後述するような各種の画像処理を実現する。
【0025】
より具体的には、画像処理装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ110と、RAM(Random Access Memory)112と、表示コントローラ114と、システムコントローラ116と、I/O(Input Output)コントローラ118と、ハードディスク120と、カメラインターフェイス122と、入力インターフェイス124と、PLCインターフェイス126と、通信インターフェイス128と、メモリカードインターフェイス130とを含む。これらの各部は、システムコントローラ116を中心として、互いにデータ通信可能に接続される。
【0026】
プロセッサ110は、複数の処理部に相当する複数のプロセッサコア(コア110A~110D)を有する。プロセッサ110は、システムコントローラ116との間でプログラム(コード)などを交換して、これらを所定順序で実行することで、目的の演算処理を実現する。
【0027】
コア110A~110Dは、互いに独立して命令を実行可能である。プロセッサ110に実装されるコアの数は、4個に限られず、技術的に実現可能な範囲の複数個であればよい。
図2には、単一のプロセッサ内に複数のコアが実装されている構成(いわゆる、マルチコアプロセッサシステム)を示すが、複数のプロセッサを実装する構成(いわゆる、マルチプロセッサシステム)を採用してもよい。さらに、マルチプロセッサシステムを構成するプロセッサの一部または全部がマルチコアプロセッサシステムを採用していてもよい。すなわち、本実施の形態に係る画像処理装置は、互いに独立して処理を実行可能な複数の処理部を有していれば、どのようなアーキテクチャを採用してもよい。
【0028】
システムコントローラ116は、プロセッサ110、RAM112、表示コントローラ114、およびI/Oコントローラ118とそれぞれバスを介して接続されており、各部との間でデータ交換などを行うとともに、画像処理装置100全体の処理を司る。
【0029】
RAM112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク120から読み出されたプログラムや、撮像部8によって取得されたカメラ画像(画像データ)、カメラ画像に対する処理結果、およびワークデータなどを保持する。
【0030】
表示コントローラ114は、表示部102と接続されており、システムコントローラ116からの内部コマンドに従って、各種の情報を表示するための信号を表示部102へ出力する。表示部102は、一例として、液晶ディスプレイや有機EL(Electro Luminescence)ディスプレイや有機ELなどを含む。
【0031】
I/Oコントローラ118は、画像処理装置100に接続される記録媒体や外部機器との間のデータ交換を制御する。より具体的には、I/Oコントローラ118は、ハードディスク120と、カメラインターフェイス122と、入力インターフェイス124と、PLCインターフェイス126と、通信インターフェイス128と、メモリカードインターフェイス130と接続される。
【0032】
ハードディスク120は、典型的には、不揮発性の磁気記憶装置であり、プロセッサ110で実行される画像処理プログラム150に加えて、各種設定値などが格納される。このハードディスク120にインストールされる画像処理プログラム150は、メモリカード106などに格納された状態で流通する。さらに、ハードディスク120には、カメラ画像が格納される。なお、ハードディスク120に代えて、フラッシュメモリなどの半導体記憶装置やDVD-RAM(Digital Versatile Disk Random Access Memory)などの光学記憶装置を採用してもよい。
【0033】
カメラインターフェイス122は、ワークW(検査対象物)を撮像することで生成された画像データを受け付ける入力部に相当し、プロセッサ110と撮像部8との間のデータ伝送を仲介する。より具体的には、カメラインターフェイス122は、1つ以上の撮像部8と接続が可能であり、プロセッサ110からカメラインターフェイス122を介して撮像部8に撮像指示が出力される。これにより、撮像部8は、被写体を撮像し、生成された画像をカメラインターフェイス122を介してプロセッサ110に出力する。
【0034】
入力インターフェイス124は、プロセッサ110とキーボード104、マウス、タッチパネル、専用コンソールなどの入力装置との間のデータ伝送を仲介する。すなわち、入力インターフェイス124は、ユーザが入力装置を操作することで与えられる操作指令を受け付ける。
【0035】
PLCインターフェイス126は、プロセッサ110とPLC5との間のデータ伝送を仲介する。より具体的には、PLCインターフェイス126は、PLC5によって制御される生産ラインの状態に係る情報やワークWに係る情報などをプロセッサ110へ伝送する。
【0036】
通信インターフェイス128は、プロセッサ110と図示しない他のパーソナルコンピュータやサーバ装置などとの間のデータ伝送を仲介する。通信インターフェイス128は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。なお、後述するように、メモリカード106に格納されたプログラムを画像処理装置100にインストールする形態に代えて、通信インターフェイス128を介して、配信サーバなどからダウンロードしたプログラムを画像処理装置100にインストールしてもよい。一例として、通信インターフェイス128は、撮像部8の状態を表わす信号を撮像部8やPLC5などから受信する。当該信号は、撮像部8が撮像中であるか否かを示す。
【0037】
メモリカードインターフェイス130は、プロセッサ110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行される画像処理プログラム150などが格納された状態で流通し、メモリカードインターフェイス130は、このメモリカード106から画像処理プログラム150を読み出す。また、メモリカードインターフェイス130は、プロセッサ110の内部指令に応答して、撮像部8によって取得されたカメラ画像および/または画像処理装置100における処理結果などをメモリカード106へ書き込む。なお、メモリカード106は、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記録媒体や、CD-ROM(Compact Disk Read Only Memory)などの光学記録媒体等からなる。
【0038】
上述のような汎用的なコンピュータアーキテクチャに従う構造を有するコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係る画像処理プログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行される場合もある。したがって、本実施の形態に係る画像処理プログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0039】
さらに、本実施の形態に係る画像処理プログラムは、他のプログラムの一部に組み込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組み合わせられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係る画像処理プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【0040】
なお、代替的に、画像処理プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0041】
<C.概要>
本実施の形態に係る画像処理装置100は、異なる処理が予め定義されている複数の処理項目の内から任意の処理項目の選択を受け付けるユーザインターフェイスを提供する。ユーザは、ユーザインターフェイスにおいて任意の処理項目を選択および配置することができる。画像処理装置100は、選択された処理項目の組み合わせおよび配置の並び順に従った実行順序で各処理項目を実行する。処理項目の設定によって定義される画像処理の内容を、以下では「処理設定」とも称する。すなわち、「処理設定」は、ユーザの入力により選択された処理項目の組み合わせを意味する。なお、本明細書における処理項目は、特定の用途を有する機能単位(「処理項目」または「ユニット」)であり、各処理項目について、処理対象および処理結果を特定することができるようになっている。
【0042】
本実施の形態に係る画像処理装置100においては、ユーザの知見を利用して画像処理をより効率化かつ高速化できるように、目的の画像処理を構成する処理項目の並列的な実行をより簡単に設定するためのユーザインターフェイスが提供される。並列化対象の処理項目は、特定の処理項目によって関連付けられることにより指定される。このような、並列化対象の処理項目を指定するための項目を、以下では「並列化項目」とも称する。
【0043】
また、本実施の形態においては、1つの撮像部に対する撮像処理が重複しないように画像の取得処理を順次実行しつつ、後続の画像処理を並列化するように処理項目の実行順序を指定することができる。このような実行順序を指定するための項目を、以下では「多段化項目」とも称する。多段化項目が各処理項目に設定されることで、重複できない撮像処理が順次実行されつつ、後続の画像処理は並列処理される。このような多段化項目の設定によって実行される処理を、以下では「多段処理」ともいう。
【0044】
並列化項目だけでなく、多段化項目が設定できることで、画像処理の設計の自由度がさらに改善される。すなわち、通常、画像の取得処理と後続の画像処理との一連の処理に対しては、撮像処理が重複するため並列化項目を設定できない。この場合、ユーザは、一連の処理の各々を直列的に実行することとなる。しかしながら、本実施の形態に従う画像処理装置100には、画像の取得処理を順次実行しつつ、後続の各画像処理を並列化するための多段化項目が予め準備されている。そのため、任意のタイミングで撮像処理を実行することができ、かつ、後続の画像処理については処理時間を短縮することができる。
【0045】
<D.処理設定を作成するためのユーザインターフェイス>
次に、本実施の形態に係る画像処理装置100が提供する処理設定作成に係るユーザインターフェイスについて説明する。
図3は、本実施の形態に係る画像処理装置100が提供する処理設定作成に係るユーザインターフェイス300を示す図である。
【0046】
画像処理装置100は、
図3に示されるように、予め定義された複数の処理項目のうち画像データに対する画像処理に用いる1つ以上の処理項目の選択、およびその選択された処理項目の実行順序の指定を受け付けるためのユーザインターフェイス300を少なくとも提供する。一例として、選択可能な処理項目の1つには、画像処理装置100に接続され得る撮像部8(
図1参照)から画像を取得するための取得処理が定義されている。また、選択可能な処理項目の1つには、検査対象物を撮像して得られた画像内において、当該検査対象物を表わす領域をサーチするための画像処理が定義されている。
【0047】
より具体的に、ユーザが目的の画像処理を実現するための処理設定を作成する手順について説明する。ユーザインターフェイス300は、設定済項目表示領域302と、処理項目選択領域304と、カメラ画像表示領域306と、処理項目挿入/追加ボタン308と、実行順序入替ボタン310とを含む。設定済項目表示領域302には、現在設定されている処理設定の内容がグラフィカルに表示される。処理項目選択領域304には、追加可能な処理項目を示すアイコンがその名称とともに一覧表示される。
【0048】
ユーザは、ユーザインターフェイス300の処理項目選択領域304において、目的の画像処理に必要な処理項目を選択する((1)処理項目を選択)とともに、設定済項目表示領域302において選択した処理項目を追加すべき位置(順序)を選択する(追加位置)。そして、ユーザが処理項目挿入/追加ボタン308を選択する((3)挿入/追加ボタンを押す)と、処理項目が追加される((4)処理項目が追加される)。処理項目追加後の処理設定の内容は、設定済項目表示領域302に反映される。
【0049】
ユーザは、この処理を適宜繰り返すことで目的の画像処理を実現するための処理設定を作成する。また、ユーザは、処理設定の作成中または作成完了後に、設定済項目表示領域302において処理項目を選択した上で、実行順序入替ボタン310を選択することで、実行順序を適宜変更することもできる。
【0050】
このような操作によって、ユーザは、目的の画像処理に必要な処理設定を作成できる。この処理設定の作成は、設定モードにおいて実行される。
【0051】
その後、測定モードにおいて指示されると、指定された処理設定の実行が開始される。より具体的には、処理設定の作成が完了する(典型的には、作成された処理設定が保存される)と、その保存された処理設定に対応する命令列が生成される。この命令列がプロセッサにおいて実行されることで、目的の画像処理が実現される。なお、この命令列は、プロセッサに与えられるネイティブコードであってもよいし、OSやミドルウェアに対して与えられる内部コマンドであってもよいし、これらを混合したものであってもよい。すなわち、画像処理装置100は、対話処理によって受け付けられた画像処理についての設定に従って、複数のプロセッサコア(処理部)に対する命令列を生成する。
【0052】
<E.多段処理>
(E1.多段化項目)
次に、画像の取得処理の重複しないように後続の画像処理を並列化するための上述の多段化項目について詳細に説明する。ユーザインターフェイス300において、ユーザは、多段化対象の処理項目を明示的に設定することができる。多段化対象の処理項目は、多段化項目に関連付けられることにより指定される。多段化項目は、ユーザインターフェイス300の処理項目選択領域304に表示される処理項目の一つとして予め準備されている。
【0053】
図4は、本実施の形態に係る画像処理装置100が提供する撮像処理の多段化に係るユーザインターフェイスの一例を示す図である。ステップS1に示されるように、初期状態においては処理項目が設定されてない。この状態において、処理項目選択領域304に表示される多段化項目のアイコンをユーザが選択することで、ステップS2に示されるように、多段化ブロック350が設定済項目表示領域302に追加される。
【0054】
多段化ブロック350は、多段処理の開始を示す多段化項目352と、多段処理の終了を示す多段化項目354との組を含む。多段化項目352と多段化項目354との間には、複数の多段化タスクを設定することができる。多段化ブロック350に含まれる多段化タスクの数は、ユーザによって任意に変更され得る。すなわち、ユーザの操作によって、指定された多段化ブロック350に対して、多段化タスクの追加または削除が行われる。
図4の例では、多段化項目352,354の間に3つの多段化タスク362,372,382が設定されている。
【0055】
各多段化タスクには、任意の処理項目を追加することができる。たとえば、ステップS3に示されるように、多段化タスク362には、撮像部から画像を取得するための取得項目364と、当該画像からワークなどの検査対象物をサーチする画像処理項目366とが処理項目集合360として追加されている。多段化タスク372には、取得項目374と画像処理項目376とが処理項目集合370として追加されている。多段化タスク382には、取得項目384と画像処理項目386とが処理項目集合380として追加されている。このように、各多段化タスクには、1つ以上の処理項目の組み合わせからなる処理項目集合が関連付けられる。1つの処理項目集合は、単一のプロセッサコアで直列的に順次実行される処理項目の集合を表わす。
【0056】
図4に示されるように、多段化ブロック350は、典型的には、ツリー構造を用いて階層的に表示される。一例として、ユーザインターフェイス300は、多段化項目352,354を処理項目集合360,370,380よりも上層になるように表示する。これにより、ユーザは、多段化対象の処理項目集合を容易に把握することができる。
【0057】
また、処理項目集合360,370,380のそれぞれに関連付けられている各処理項目は、同一の階層になるように表示される。これにより、ユーザは、直列的に処理される処理項目を容易に把握することができる。
【0058】
(E2.多段処理のフロー)
測定モードにおいて、画像処理装置100は、ユーザインターフェイス300に設定された多段化項目に基づいて、当該多段化項目に関連付けられている処理項目集合の各々を多段処理する。より具体的には、画像処理装置100は、多段化項目の実行順序が到来すると、予め定められた信号が予め定められた条件を満たす度に、当該多段化項目に関連付けてられている複数の処理項目集合の各々の処理を順次開始する。
【0059】
以下では、
図5および
図6を参照して、このような多段処理のフローについて説明する。
図5は、多段処理のフローを表わす図である。
図6は、
図5に示される処理フローに伴う各コアへの処理の割り当ての推移を示す図である。
【0060】
上述の
図4で説明した通り、ユーザインターフェイス300において、撮像部8から画像を取得するための取得処理と、得られた画像内から検査対象物をサーチする画像処理との一連の処理項目集合360,370,380が多段処理対象として設定されているとする。画像処理装置100は、次の撮像開始を示すトリガー信号をPLC5(
図1参照)から受け付ける度に、多段化項目352(開始処理項目)と多段化項目354(終了処理項目)との間に設定された処理項目集合360,370,380の各々の処理を順次開始する。
【0061】
典型的には、撮像部8が撮像中であるか否かがPLC5によって定期的に撮像部8に問い合わされ、PLC5は、撮像部8が撮像中で無いことを確認した上で必要なタイミングで次の撮像処理の開始を示すトリガー信号を画像処理装置100に送信する。典型的には、PLC5は、撮像部8が撮像中である状態から撮像部8が撮像中でない状態になったことに基づいて、撮像処理の開始を示すトリガー信号を画像処理装置100に送信する。画像処理装置100は、当該トリガー信号をPLC5から受信する度に、多段処理対象の処理項目集合の実行を開始する。すなわち、画像処理装置100は、撮像部8が撮像中である状態から撮像部8が撮像中でない状態に移行する度に、多段処理対象の処理項目集合を順次実行する。
【0062】
より具体的な処理フローとして、時刻T1において、多段化項目の実行順序が到来すると、画像処理装置100は、PLC5(
図1参照)から出力されるトリガー信号を受け付けたことに基づいて、処理項目集合360の取得処理31Aをコア110Aに割り当てる。すなわち、画像処理装置100は、外部設定としての多段化項目の実行開始タイミングが到来すると、処理項目集合370の取得処理31B(第2取得処理)の実行開始に先立って、処理項目集合360の取得処理31A(第1取得処理)の実行を開始する。
【0063】
時刻T2において、取得処理31Aが終了したとする。画像処理装置100は、取得処理31Aの完了に引き続いて、コア110Aでの画像処理32Aの実行を開始し、取得処理31Aの完了後に、コア110Bでの取得処理31Bの実行を開始する。より具体的には、画像処理装置100は、取得処理31Aの終了を検知したことに基づいて、取得処理31Aをコア110Aに割り当てる。また、画像処理装置100は、撮像の開始を示すトリガー信号を外部装置としてのPLC5から受信したことに基づいて、コア110Bでの取得処理31Bの実行を開始する。このように、取得処理31A,31Bがトリガー信号に基づいて順次実行されることで、1つの撮像部に対する撮像処理が重複することを防ぐことができる。また、画像処理32Aおよび取得処理31Bについては並列処理されるので、処理時間が短縮される。
【0064】
トリガー信号について具体的に説明する。PLC5は、撮像部8が撮像中の状態を監視し、撮像部8が撮像中であるか否かを撮像部8に定期的に問い合わす。PLC5は、撮像部8が撮像中である状態から撮像部8が撮像中でない状態になったことに基づいて、撮像処理の開始を示すトリガー信号を画像処理装置100に送信する。画像処理装置100は、外部装置としてのPLC5から当該トリガー信号を受信すると、コア110Bでの取得処理31Bの実行を開始する。
【0065】
時刻T3において、取得処理31Bが終了したとする。画像処理装置100は、取得処理31Bが終了したことに基づいて、後続の画像処理32Bと、取得処理31Cとの実行を開始する。すなわち、画像処理装置100は、画像処理32Aが完了したか否かに関わらず、取得処理31Bの完了に引き続いて画像処理32Bを実行するとともに、取得処理31Cの実行を開始する。より具体的には、画像処理装置100は、画像処理32Bをコア110Bに割り当てる。また、画像処理装置100は、撮像の開始を示すトリガー信号を受け付けたことに基づいて、取得処理31Cをコア110Cに割り当てる。
【0066】
時刻T4において、取得処理31Cが終了したとする。画像処理装置100は、取得処理31Cの完了に引き続いて、後続の画像処理32Cをコア110Cに割り当てる。
【0067】
図7は、取得処理が重複している様子を示す図である。
図7に示されるように、取得処理33Aが終了する前に取得処理33Bが実行されると、撮像部による撮像処理が重複してしまう。同様に、取得処理33Bが終了する前に取得処理33Cが実行されると、撮像部による撮像処理が重複してしまう。本実施の形態に従うユーザインターフェイス300においては、撮像処理が重複しないように各画像処理を並列処理するように指定できる多段処理項目が予め準備されているので、撮像処理の重複を防ぐことができる。
【0068】
図8は、
図5および
図6に示される多段処理の実行により撮像されるワークWを示す図である。多段処理により撮像処理が順次実行されるので、撮像部8は、ワークWの異なる領域を撮像することができる。一例として、多段処理による1回目の撮像処理によりワークWの領域70Aが撮像される。多段処理による2回目の撮像処理によりワークWの領域70Bが撮像される。多段処理による3回目の撮像処理によりワークWの領域70Cが撮像される。このように、第1撮像処理に続く画像処理を実行する前に次の第2撮像処理を実行できるので、撮像間隔が短くなり、任意のタイミングで撮像処理が実行される。
【0069】
以上のように、画像処理装置100は、多段化項目の実行順序が到来すると、トリガー信号を受け付ける度に、多段化項目に関連付けてられている複数の処理項目集合の各々の処理を順次開始する。なお、上述では、画像処理装置100がPLC5からトリガー信号を受け付けたことを条件に、各処理項目集合の取得処理が順に開始される例について説明を行ったが、各処理項目集合の取得処理の開始条件は、これに限定されない。たとえば、画像処理装置100は、撮像中であるか否かを撮像部8に定期的に問い合わせ、当該問い合わせの応答として得られた信号が撮像部8の撮像中でないことを示したことを条件に、各処理項目集合の取得処理を開始してもよい。あるいは、撮像部8自体が撮像を終了したことを条件にトリガー信号を発してもよい。
【0070】
<F.並列処理>
(F1.並列化項目)
次に、処理項目の実行順序を指定するための上述の並列処理について詳細に説明するユーザインターフェイス300において、ユーザは、並列化対象の処理項目を明示的に設定することができる。多段化対象の処理項目は、並列化項目に関連付けられることにより指定される。並列化項目は、ユーザインターフェイス300の処理項目選択領域304に表示される処理項目の一つとして予め準備されている。
【0071】
図9は、本実施の形態に係る画像処理装置100が提供する処理の並列化に係るユーザインターフェイスの一例を示す図である。ステップS11に示されるように、初期状態または何らかの処理項目が設定されている状態において、処理項目選択領域304に表示されるアイコンをユーザが選択することで、設定済項目表示領域302において、並列化ブロック450が処理設定に追加される。
【0072】
並列化ブロック450は、並列処理の開始を示す並列化項目452と、並列処理の終了を示す並列化項目454との組を含む。並列化項目452と並列化項目454との間には、複数の並列化タスクを設定することができる。並列化ブロック450に含まれる並列化タスクの数は、ユーザによって任意に変更され得る。すなわち、ユーザの操作によって、指定された並列化ブロック450に対して、並列化タスクの追加または削除が行われる。
図9の例では、並列化項目452,454の間に2つの並列化タスク462,472が設定されている。
【0073】
各並列化タスクには、任意の処理項目を追加することができる。たとえば、ステップS3に示されるように、並列化タスク462には、画像内において検査対象物を表わす領域をサーチする画像処理項目464,466が処理項目集合460として追加されている。並列化タスク472には、画像処理項目474,476が処理項目集合470として追加されている。このように、各並列化タスクには、1つ以上の処理項目の組み合わせからなる処理項目集合が複数関連付けられる。1つの処理項目集合は、単一のプロセッサコアで順次処理される処理項目の集合を表わす。
【0074】
図9に示されるように、並列化ブロック450は、典型的には、ツリー構造を用いて階層的に表示される。一例として、ユーザインターフェイス300は、並列化項目452,454を処理項目集合460,470よりも上層になるように表示する。これにより、ユーザは、並列化対象の処理項目集合を容易に把握することができる。
【0075】
また、処理項目集合460,470に関連付けられている各処理項目は、同一の階層になるように表示される。これにより、ユーザは、直列的に処理される処理項目を容易に把握することができる。
【0076】
(F2.並列処理のフロー)
測定モードにおいて、画像処理装置100は、ユーザインターフェイス300に設定された並列化項目に基づいて、当該並列化項目に関連付けられている処理項目集合の各々を並列処理する。より具体的には、画像処理装置100は、並列化項目(第1順序指定項目)の実行順序が到来すると、当該並列化項目に関連付けてられている複数の処理項目集合の各々の処理を同時に開始する。
【0077】
以下では、
図10および
図11を参照して、並列処理のフローについて説明する。
図10は、並列処理のフローを表わす図である。
図11は、並列処理時において各コアに割り当てられている処理を時系列に示す図である。
【0078】
時刻T11において、並列化項目の実行順序が到来すると、画像処理装置100は、処理項目集合460の画像処理41Aをコア110Aに割り当てるとともに、処理項目集合470の画像処理42Aをコア110Bに割り当てる。すなわち、画像処理装置100は、外部設定としての並列化項目の実行開始タイミングが到来すると、画像処理41Aおよび画像処理42Aを並列処理する。
【0079】
時刻T12において、画像処理41Aが終了したとする。画像処理装置100は、画像処理41Aの完了に引き続いて、後続の画像処理42Aをコア110Aに割り当て、画像処理42Aの実行を開始する。このように、1つの処理項目集合460として設定されている画像処理41A,42Aは直列的に順次実行される。
【0080】
時刻T13において、画像処理41Bが終了したとする。画像処理装置100は、画像処理41Bの完了に引き続いて、後続の画像処理42Bをコア110Bに割り当て、画像処理42Bの実行を開始する。このように、1つの処理項目集合470として設定されている画像処理41B,42Bは直列的に順順次実行される。
【0081】
<G.画像処理プログラムの機能構成>
次に、本実施の形態に係る画像処理プログラムの機能構成について説明する。
図12は、本実施の形態に係る画像処理装置100に実装される画像処理プログラム150の構成を示す模式図である。
【0082】
図12を参照して、画像処理プログラム150は、基本的なコンポーネントとして、設定部152と、実行制御部154と、ライブラリ160とを含む。
【0083】
設定部152は、予め準備された複数の処理項目から処理設定170に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定を受け付けるユーザインターフェイスを提供する。すなわち、設定部152は、ユーザ操作に従って、ユーザが所望の画像処理の処理設定170を作成するための対話型のユーザインターフェイスを提供する。より具体的には、設定部152は、上述の
図3,4,9に示されるようなユーザインターフェイスを表示部102に表示するとともに、ユーザ操作に従って処理設定170を生成する。生成された処理設定170は、RAM112(
図2参照)などに確保されたワーク領域に一時的に格納される。
【0084】
実行制御部154は、設定部152が受け付けた処理項目の設定(処理設定170)に従って各処理項目を実行する。より具体的には、実行制御部154は、並列化項目の実行順序が到来した場合には、当該並列化項目に関連付けられている複数の処理項目集合の各々の処理を同時に開始する。また、実行制御部154は、多段化項目の実行順序が到来した場合にはと、撮像の開始を示すトリガー信号を受け付ける度に、当該多段化項目に関連付けてられている複数の処理項目集合の各々の処理を順次開始する。実行制御部154は、並列化項目や多段化項目などの実行順序の指定項目が関連付けられていない処理項目については、処理設定170に設定された処理順に従って直列的に順次実行する。
【0085】
典型的には、実行制御部154は、予め用意されたライブラリ160を参照することで、各処理項目に関連付けられている処理を実行する。すなわち、
図3に示すユーザインターフェイス300の処理項目選択領域304(
図3参照)に一覧表示される処理項目にそれぞれ対応するライブラリプログラムがライブラリ160に含まれており、実行制御部154は、必要なライブラリプログラムを呼出すことで、指定された処理項目に対応する画像処理を実行する。このようなライブラリ160を採用することで、処理項目の追加や改良をより容易に行うことができる。
【0086】
なお、
図12には、所定設定、スケジュール、および画像処理の実行の全ての処理を実行可能な単一の画像処理プログラム150を例示したが、複数のプログラムが連係して、これらの機能を実現するようにしてもよい。たとえば、処理設定および命令列の生成に係る処理については、パーソナルコンピュータ上で実行され、その実行の結果生成される命令列が画像処理装置へ転送されて実行されるという機能を分担するような実装形態を採用することもできる。この場合には、パーソナルコンピュータでは、設定部152に相当する部を含むプログラムが実行され、画像処理装置100では、実行制御部154およびライブラリ160を含むプログラムが実行されることになる。このような実装形態についても、本発明の技術的範囲に含まれることは自明である。
【0087】
<H.フローチャート>
図13および
図14を参照して、画像処理システム1の制御構造について説明する。
図13は、画像処理装置100が設定モードにおいて実行する設定処理を表わすフローチャートである。
図14は、画像処理装置100が測定モードにおいて実行する測定処理を表わすフローチャートである。
【0088】
以下では、設定モードにおける設定処理の制御フローと、測定モードにおける測定処理の制御フローについて順に説明する。
【0089】
[H1.設定処理の制御フロー]
まず、
図13を参照して、画像処理装置100が設定モードにおいて実行する設定処理の制御フローについて説明する。
【0090】
図13に示される処理は、たとえば、画像処理装置100のプロセッサ110(
図2参照)がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、コントローラ5(
図1参照)またはその他のハードウェアによって実行されてもよい。
【0091】
ステップS110において、プロセッサ110は、処理項目の設定画面を表示するユーザ操作を受け付けたか否かを判断する。プロセッサ110は、処理項目の設定画面を表示するユーザ操作を受け付けたと判断した場合(ステップS110においてYES)、制御をステップS112に切り替える。そうでない場合には(ステップS110においてNO)、プロセッサ110は、ステップS110の処理を再び実行する。
【0092】
ステップS112において、プロセッサ110は、上述の設定部152(
図12参照)として、処理項目を設定するためのユーザインターフェイス300(
図3参照)を提供する。当該ユーザインターフェイス300は、たとえば、画像処理装置100の表示部102(
図1参照)に表示される。
【0093】
ステップS114において、プロセッサ110は、上述の設定部152(
図12参照)として、ユーザインターフェイス300において、予め準備された複数の処理項目から処理設定に含ませる1つ以上の処理項目の選択、および、選択された処理項目の実行順序の指定をユーザ操作で受け付ける。
【0094】
ステップS120において、プロセッサ110は、処理設定を保存するための操作を受け付けたか否かを判断する。一例として、プロセッサ110は、ユーザインターフェイス300の保存ボタンが押下を検知した場合に、処理設定を保存するための操作を受け付けたと判断する。プロセッサ110は、処理設定を保存するための操作を受け付けた判断した場合(ステップS120においてYES)、制御をステップS122に切り替える。そうでない場合には(ステップS120においてNO)、プロセッサ110は、制御をステップS114に戻す。
【0095】
ステップS122において、プロセッサ110は、ユーザインターフェイス300に設定された設定項目を処理設定に反映する。これにより、ユーザインターフェイス300に設定された内容が処理設定として保存される。
【0096】
[H2.測定処理の制御フロー]
図14を参照して、画像処理装置100が測定モードにおいて実行する測定処理の制御フローについて説明する。
【0097】
図14に示される処理は、たとえば、画像処理装置100のプロセッサ110(
図2参照)がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、コントローラ5(
図1参照)またはその他のハードウェアによって実行されてもよい。
【0098】
ステップS150において、プロセッサ110は、ワークなどの検査対象物の測定指示を受け付けたか否かを判断する。プロセッサ110は、検査対象物の測定指示を受け付けたと判断した場合(ステップS150においてYES)、制御をステップS152に切り替える。そうでない場合には(ステップS150においてNO)、プロセッサ110は、ステップS150の処理を再び実行する。
【0099】
ステップS152において、プロセッサ110は、上述の設定モードで保存された処理設定から最初の処理項目を読み出す。当該処理項目は、ユーザインターフェイス300の設定済項目表示領域302(
図3参照)の最上部に設定された処理項目に相当する。
【0100】
ステップS160において、プロセッサ110は、読み出された処理項目が処理の実行順序を指定するための処理項目(たとえば、並列化項目や多段化項目)であるか否かを判断する。プロセッサ110は、読み出された処理項目が処理の実行順序を指定するための処理項目であると判断した場合(ステップS160においてYES)、制御をステップS170に切り替える。そうでない場合には(ステップS160においてNO)、プロセッサ110は、制御をステップS162に切り替える。
【0101】
ステップS162において、プロセッサ110は、上述の実行制御部154(
図12参照)として、読み出された処理項目で定義される処理を実行する。
【0102】
ステップS170において、プロセッサ110は、読み出された処理項目が並列化項目であるか否かを判断する。プロセッサ110は、読み出された処理項目が並列化項目であると判断した場合(ステップS170においてYES)、制御をステップS172に切り替える。そうでない場合には(ステップS170においてNO)、プロセッサ110は、制御をステップS180に切り替える。
【0103】
ステップS172において、プロセッサ110は、実行制御部154として、並列化項目に関連付けられている処理項目集合の各々をプロセッサ110内のコアのいずれかに割り当て、当該処理項目集合の各々を並列処理する。当該並列処理の方法は、
図10,
図11で説明した通りである。
【0104】
ステップS180において、プロセッサ110は、読み出された処理項目が多段化項目であるか否かを判断する。プロセッサ110は、読み出された処理項目が多段化項目であると判断した場合(ステップS180においてYES)、制御をステップS182に切り替える。そうでない場合には(ステップS180においてNO)、プロセッサ110は、制御をステップS190に切り替える。
【0105】
ステップS182において、プロセッサ110は、実行制御部154として、撮像処理中でないことを示すトリガー信号をPLC5(
図1参照)から受け付ける度に、多段化項目に関連付けてられている複数の処理項目集合の各々の処理を順次開始する。当該多段処理の方法は、
図5,
図6で説明した通りである。
【0106】
ステップS190において、プロセッサ110は、ステップS162,S172,S182で実行された処理によってワークに対する測定結果が得られたか否かを判断する。プロセッサ110は、ワークに対する測定結果が得られたと判断した場合(ステップS190においてYES)、制御をステップS192に切り替える。そうでない場合には(ステップS190においてNO)、プロセッサ110は、制御をステップS200に切り替える。
【0107】
ステップS192において、プロセッサ110は、画像処理装置100の表示部102(
図1参照)に測定結果を表示する。表示される測定結果としては、たとえば、検査対象物の寸法に関する検査結果や、検査対象物の外観に関する検査結果などが挙げられる。一例として、ワークがコネクタである場合には、寸法の検査結果として、コネクタのピンの長さが正常であるか否かを示す結果や、コネクタのピン間の距離が正常であるか否かを示す結果などが出力される。外観の検査結果として、コネクタのピン部分に欠陥や汚れがあるか否かを示す結果などが出力される。
【0108】
ステップS200において、プロセッサ110は、処理設定に含まれる処理項目が全て実行されたか否かを判断する。プロセッサ110は、処理設定に含まれる処理項目が全て実行されたと判断した場合(ステップS200においてYES)、
図13に示される測定処理を終了する。そうでない場合には(ステップS200においてNO)、プロセッサ110は、制御をステップS160に戻す。
【0109】
ステップS202において、プロセッサ110は、処理設定から次に実行する処理項目を読み出す。
【0110】
<I.応用例>
次に、本実施の形態に係る画像処理装置100の応用例について説明する。
【0111】
上述では、画像処理装置100に1つの撮像部8が接続されている前提で説明を行ったが、本応用例においては、画像処理装置100に複数の撮像部8が接続される。撮像部8が1つである場合には撮像処理を重複させることはできないが、撮像部8が複数ある場合には撮像部8の各々で撮像処理を同時に実行させることができる。本応用例については、複数の撮像部8の各々に多段化処理を実行させるための処理項目が予め準備されている。
【0112】
図15は、応用例に従う画像処理装置100が提供する撮像処理の多段化に係るユーザインターフェイス300の一例を示す図である。初期状態または何らかの処理項目(たとえば、画像を取得するための取得項目351)が設定されている状態において、処理項目選択領域304に表示される手動並列化のアイコンをユーザが選択することで、設定済項目表示領域302において多段化ブロック350が追加される。
【0113】
多段化ブロック350は、多段処理の開始を示す多段化項目352と、多段処理の終了を示す多段化項目354との組を含む。多段化項目352と多段化項目354との間には、画像処理装置100に接続され得る撮像部の数を上限として、複数のサブ多段化項目を設定することができる。
図15の例では、サブ多段化項目356,357で挟まれている多段化タスク362,372,382が第1多段化対象として指定され、サブ多段化項目358,359で挟まれている多段化タスク392,402が第2多段化対象として指定されている。
【0114】
図16は、複数の多段化項目が設定された場合の処理フローを示す図である。
図17は、
図16に示される処理フローに伴う各コアへの処理の割り当ての推移を示す図である。なお、上述の
図2においてはプロセッサ110(
図2参照)においては4つのコア110A~110Dで構成されていたが、以下では、プロセッサ110が5つのコア110A~110Eで構成されているとする。また、画像処理装置100には、2つの第1撮像部と第2撮像部が接続されているとする。
【0115】
図16に示される取得処理51Aおよび画像処理52Aは、上述の
図15に示される処理項目集合360に相当する。取得処理51Bおよび画像処理52Bは、上述の
図15に示される処理項目集合370に相当する。取得処理51Cおよび画像処理52Cは、上述の
図15に示される処理項目集合380に相当する。取得処理51Dおよび画像処理52Dは、上述の
図15に示される処理項目集合390に相当する。取得処理51Eおよび画像処理52Eは、上述の
図15に示される処理項目集合400に相当する。
【0116】
時刻T21において、画像処理装置100は、第1撮像部が撮像中でないことを示すトリガー信号をPLC5から受け付けたことに基づいて、コア110Aに取得処理51Aを割り当てる。これにより、第1撮像部から画像を取得するための取得処理51Aが開始される。
【0117】
時刻T22において、画像処理装置100は、第2撮像部が撮像中でないことを示すトリガー信号をPLC5から受け付けたことに基づいて、取得処理51Aの終了を待たずして、コア110Dに取得処理51Dを割り当てる。これにより、第2撮像部から画像を取得する取得処理51Dが開始される。その結果、第2撮像部における取得処理51Dは、第1撮像部における取得処理51Aと並列に処理されることとなる。
【0118】
時刻T23において、取得処理51Aが終了したとする。画像処理装置100は、取得処理51Aの完了に引き続いて、後続の画像処理52Aと、取得処理51Bとの実行を同時に開始する。より具体的には、画像処理装置100は、画像処理52Aをコア110Aに割り当てる。また、画像処理装置100は、第1撮像部における撮像の開始を示すトリガー信号を受け付けたことに基づいて、取得処理51Bをコア110Bに割り当てる。このように、取得処理51A,51Bがトリガー信号に基づいて順次実行されることで、第1撮像部で撮像処理が重複することはない。
【0119】
時刻T24において、取得処理51Dが終了したとする。画像処理装置100は、取得処理51Dの完了に引き続いて、後続の画像処理52Dと、取得処理51Eとの実行を同時に開始する。より具体的には、画像処理装置100は、画像処理52Dをコア110Dに割り当てる。また、画像処理装置100は、第2撮像部における撮像の開始を示すトリガー信号を受け付けたことに基づいて、取得処理51Eをコア110Eに割り当てる。このように、取得処理51D,51Eがトリガー信号に基づいて順次実行されることで、第2撮像部で撮像処理が重複することはない。
【0120】
時刻T25において、取得処理51Bが終了したとする。画像処理装置100は、取得処理51Bの完了に引き続いて、後続の画像処理52Bと、取得処理51Cとの実行を同時に開始する。より具体的には、画像処理装置100は、画像処理52Bをコア110Bに割り当てる。また、画像処理装置100は、第1撮像部における撮像の開始を示すトリガー信号を受け付けたことに基づいて、取得処理51Cをコア110Cに割り当てる。
【0121】
時刻T26において、取得処理51Eが終了したとする。画像処理装置100は、取得処理51Eの完了に引き続いて、後続の画像処理52Eをコア110Eに割り当て、画像処理52Eの実行を開始する。
【0122】
時刻T27において、取得処理51Cが終了したとする。画像処理装置100は、取得処理51Cの完了に引き続いて、後続の画像処理52Cをコア110Cに割り当て、画像処理52Cの実行を開始する。
【0123】
図18は、本応用例に従う多段処理で撮像されているワークWを示す図である。第1多段化処理の対象として設定された処理項目集合360,370,380(
図15参照)でワークWの領域70A~70Cが順次撮像される。第2多段化処理の対象として設定された処理項目集合390,400(
図15参照)でワークWの領域72A,72Bが順次撮像される。上述のように多段化対象が複数設定されることで、複数の撮像部8A,8Bのそれぞれについて任意のタイミングで撮像処理を実行することができる。
【0124】
<J.利点>
以上のようにして、画像処理装置100においては、各処理を並列化するための並列化項目と、撮像の開始を示すトリガー信号を受け付ける度に各処理を順次実行する多段化項目とが予め準備されている。並列化項目だけでなく、多段化項目が設定できることで、画像処理の設計の自由度が改善される。すなわち、通常、画像の取得処理と後続の画像処理との一連の処理に対しては、撮像処理が重複するため並列化項目を設定できない。この場合、ユーザは、一連の処理の各々を直列的に実行することとなる。しかしながら、本実施の形態に従う画像処理装置100には、撮像の開始を示すトリガー信号を受け付ける度に各一連の処理を順次実行するための多段化項目が予め準備されている。そのため、任意のタイミングで撮像処理を実行することができ、かつ、後続の画像処理については処理時間を短縮することができる。
【0125】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0126】
1 画像処理システム、5 コントローラ、6 搬送機構、8,8A,8B 撮像部、31A~31C,33A~33C,51A~51E 取得処理、32A~32C,41A,41B,42A,42B,52A~52E 画像処理、70A~70C,72A,72B 領域、100 画像処理装置、102 表示部、104 キーボード、106 メモリカード、110 プロセッサ、110A~110E コア、112 RAM、114 表示コントローラ、116 システムコントローラ、118 I/Oコントローラ、120 ハードディスク、122 カメラインターフェイス、124 入力インターフェイス、126 インターフェイス、128 通信インターフェイス、130 メモリカードインターフェイス、150 画像処理プログラム、152 設定部、154 実行制御部、160 ライブラリ、170 処理設定、300 ユーザインターフェイス、302 設定済項目表示領域、304 処理項目選択領域、306 カメラ画像表示領域、308 追加ボタン、310 ボタン、350 多段化ブロック、351,364,374,384 取得項目、352,354 多段化項目、356,357,358,359 サブ多段化項目、360,370,380,390,400,460,470 処理項目集合、362,372,382,392,402 多段化タスク、366,376,386,464,466,474,476 画像処理項目、450 並列化ブロック、452,454 並列化項目、462,472 並列化タスク。