この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[A.概要]
図1は、この発明の実施の形態に従う画像処理装置を含む視覚センサシステム1の全体構成の一例を示す概略図である。図2は、この発明の実施の形態に従う画像処理装置における全体処理を示す概略図である。
図1を参照して、視覚センサシステム1は、代表的に生産ラインなどに組込まれ、撮像部8によって被測定物(以下「ワーク」とも称す。)2を撮像して得られる画像データを画像処理することで、欠陥などを検査したり、その大きさなどを計測したりする。一例として、本実施の形態においては、ワーク2は、ベルトコンベヤなどの搬送ライン6によって搬送される。すなわち、ワーク2は、搬送ライン6上を所定の搬送方向に所定速度で移動する。
この発明の実施の形態に従う画像処理装置は、異なる露光条件でワーク2を複数回撮像することで複数の画像を取得し、これらの取得した画像がそれぞれ有する色情報および輝度を反映した合成画像を生成する。このような画像合成処理によって、撮像部8が本来有するダイナミックレンジに比較して、より広いダイナミックレンジでの撮像を実現する。
特に、本実施の形態によれば、搬送ライン6上を移動するワーク2についての画像合成処理に適した画像処理装置を提供する。具体的には、本実施の形態に従う画像処理装置は、1枚の合成画像の生成に必要な複数の画像を取得する過程において、ワーク2の移動に追従して、取得されたそれぞれの画像に含まれる目的のワーク2(特定の被測定物)の位置をそれぞれ特定する。そして、この特定結果を利用して、これらの複数の画像についての位置合わせを行った上で、画像合成処理を実行する。これにより、移動するワーク2についても、より適切にダイナミックレンジを拡大した撮像を行うことができる。
図2を参照して、本実施の形態に従う画像処理装置では、撮像処理(ステップS1)、動き追従処理(ステップS2)、画像合成処理(ステップS3)、後処理(ステップS4)が実行される。
ステップS1の撮像処理では、撮像部8を用いて異なる露光条件で複数回撮像を行うことにより、それぞれの撮像タイミングにおける撮像部8の視野の内容を示す複数の画像(以下「入力画像」とも称す。)が取得される。より具体的には、同一の撮像部8を用いて、n種類の露光条件(典型的には、露光時間t1,t2,…,tn)についての一連の撮像によって得られるn個の入力画像IMG1_1,IMG1_2,…,IMG1_nの間では、目的のワーク2の現れる位置が異なったものとなっている。これは、一連の撮像の間に、ワーク2が移動するためである。そのため、これらの入力画像IMG1_1,IMG1_2,…,IMG1_nを、そのまま画像合成処理をしたとしても、目的のダイナミックレンジを拡大した合成画像を生成することができない。
そこで、ステップS2の動き追従処理において、一連の複数回撮像により得られた複数の画像の組である、複数の入力画像に含まれる特定のワーク2の位置がそれぞれ特定される。
続いて、ステップS3の画像合成処理において、複数の入力画像に対応する特定のワーク2の位置を基準とした範囲の画像(以下「部分画像」とも称す。)について、複数の部分画像を合成することでダイナミックレンジを拡大した合成画像が生成される。後述するように、この画像合成処理には、輝度合成処理、階調値変換処理、色合成処理、最終生成処理などが含まれる。
その後、ステップS4の後処理において、この合成画像についての表示処理や計測処理が実行される。
以下の説明では、本実施の形態に従う画像処理装置の構成および画像合成処理について説明した後に、本実施の形態に従う画像処理装置における一つの特徴点である、「動き追従処理」について説明する。本実施の形態においては、「動き追従処理」の実現例として、「モデル登録型」および「逐次抽出型」についてそれぞれ説明する。詳細な内容については後述するが、「モデル登録型」では、予め登録された、目的のワーク2を示す参照画像(パターン)または目的のワーク2の特徴情報を、取得されたそれぞれの画像内で探索(サーチ)することにより、当該目的のワークの位置が特定される。一方、「逐次抽出型」では、異なる露光条件からなる一連の複数回撮像において順次取得される一組の画像について、最初に取得される入力画像内の目的のワーク2の位置を基準として、後続の入力画像について位置合わせが行われる。
[B1.全体装置構成]
再度、図1を参照して、搬送ライン6に対して固定配置された撮像部8は、ワーク2がその視野内に到達すると、後述するようなダイナミックレンジを拡大するための複数回の撮像を開始する。このようなワーク2の到達は、搬送ライン6に設けたセンサによって検出される。典型的には、図1に示すように、搬送ライン6の両サイドに光電センサを配置し、その光電センサからの検出信号(以下、「トリガ信号」とも称す。)に応答して、撮像部8による撮像が開始される。より具体的には、光電センサは、同一の光軸上に配置された受光部4aと投光部4bとからなり、投光部4bから放射される光がワーク2で遮蔽されることを受光部4aが検出することによって、トリガ信号が出力される。なお、画像合成処理が中止されている期間中には、撮像部8は、所定の周期で繰り返し撮像を行うようにしてよい。
なお、このような光電センサは、撮像部8の視野中心にワーク2が位置した状態を検出するように配置されるのが理想的であるが、光電センサでの検出遅れなどを考慮して、撮像部8の視野中心よりも搬送ライン6の上流側に配置されることが多い。このように、光電センサを配置する位置(以下「トリガ位置」とも称す。)は、撮像部8による撮像開始タイミングに影響を与えるので、重要な調整項目である。したがって、本実施の形態に従う画像処理装置は、知識の少ないユーザであっても、このようなトリガ位置を容易に調整できるような機能も提供する。この機能の詳細については、後述する。
なお、ワーク2の移動速度、すなわち搬送ライン6の搬送速度を「ライン速度」とも称す。なお、搬送ライン6のライン速度の変更などを含む各種制御は、図示しないPLC(Programmable Logic Controller)などによって制御されてもよい。
撮像部8による複数回の撮像によって取得された複数の入力画像は、本実施の形態に従う画像処理装置を典型的に具現化するコンピュータ100へ伝送される。本実施の形態においては、主として、カラーの入力画像を扱う処理について説明する。
一例として、撮像部8は、レンズなどの光学系に加えて、CCD(Coupled Charged Device)やCIS(Complementary Metal Oxide Semiconductor Image Sensor)センサといった、複数の画素に区画された撮像素子を含んで構成される。各画素に対応する撮像素子は、入射する光に対して1つまたは複数の分光感度を有している。
より具体的には、撮像部8の撮像素子は、典型的には、各画素について、光の三原色に基づく「赤色」「緑色」「青色」のそれぞれに分光感度を有している。そして、撮像部8の撮像素子は、入射する光についての「赤色」「緑色」「青色」の3色の検出値(R輝度、G輝度、B輝度)を出力する。ここで、たとえば、R輝度は、撮像素子に入射する光のうち、赤色の分光感度に含まれる波長成分に相当する光強度(ある露光時間内に入射した光エネルギー)の大きさを示す。G輝度およびB輝度についても、それぞれ対応の分光感度に含まれる波長成分に相当する光強度の大きさを示す。また、本実施の形態においては、R輝度、G輝度、B輝度は、いずれも8ビット(0〜255階調)の範囲で規定されるものとする。
なお、撮像部が有する分光感度は3つ(3バンド)に限定されることなく、より多くの色に分光感度をもつようにしてもよい。このようなマルチバンドの撮像部を用いることで、より撮像可能な色域を拡大させることができる。あるいは、光の三原色の補色である「シアン」「マゼンダ」「黄色」の3色の検出値(C輝度、M輝度、Y輝度)を分光感度として有していてもよい。また、単板式のCCDなどを用いる場合には、各画素が「赤色」「緑色」「青色」のうちいずれか1色だけについて受光感度を有している場合がある。このような場合には、図示しない補間部によって、「赤色」「緑色」「青色」の各々についての輝度をもつ入力画像を生成してもよい。
また、撮像部8は、撮像時の露光条件(典型的には、露光時間)を変更可能である。この露光条件とは、1回の撮像において撮像素子に入射する光エネルギーを調整するための値であり、代表的に、機械的または電子的なシャッター速度、光学系のしぼり量、および被測定物へ照射する照明強度などによって調整される。本実施の形態では、露光条件の代表例として、被測定物への照明強度は一定であるとして、「露光時間」を調整する構成について例示するが、露光時間に限られず、しぼり量や照明強度などを調整するようにしてもよい。これらの別形態については、後述する。
一方、コンピュータ100は、FD(Flexible Disk)駆動装置111およびCD−ROM(Compact Disk-Read Only Memory)駆動装置113を搭載するコンピュータ本体101と、モニタ102と、キーボード103と、マウス104とを含む。そして、コンピュータ本体101は、予め格納されたプログラムを実行することで、本実施の形態に従う画像処理装置を実現する。
[B2.ハードウェア構成]
図3は、この発明の実施の形態に従うコンピュータ100のハードウェア構成を示す概略構成図である。
図3を参照して、コンピュータ本体101は、図1に示すFD駆動装置111およびCD−ROM駆動装置113に加えて、相互にバスで接続された、CPU(Central Processing Unit)105と、メモリ106と、固定ディスク107と、表示画面出力部108と、カメラインターフェイス部109と、PLCインターフェイス部115と、センサインターフェイス部117とを含む。
FD駆動装置111にはFD112が装着可能であり、CD−ROM駆動装置113にはCD−ROM114が装着可能である。上述したように、本実施の形態に従う画像処理装置は、CPU105がメモリ106などのコンピュータハードウェアを用いて、プログラムを実行することで実現される。一般的に、このようなプログラムは、FD112やCD−ROM114などの記録媒体に格納されて、またはネットワークなどを介して流通する。そして、このようなプログラムは、FD駆動装置111やCD−ROM駆動装置113などにより記録媒体から読取られて、記録装置である固定ディスク107に一旦格納される。さらに、固定ディスク107からメモリ106に読出されて、CPU105により実行される。
CPU105は、プログラムされた命令を逐次実行することで、各種の演算を実施する演算処理部である。メモリ106は、CPU105でのプログラム実行に応じて、各種の情報を一時的に格納する。
表示画面出力部108は、CPU105が出力する情報を表示するための表示部であるモニタ102に接続され、モニタ102に表示させる表示用画像データを出力する。より具体的には、表示画面出力部108は、CPU105からの内部コマンドに従って描画処理を行うことで、画像メモリ上に表示用の画像データを逐次生成する。なお、モニタ102は、一例としてLCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などから構成される。後述するように、本実施の形態に従うモニタ102には、ワーク2を複数回撮像することで生成される合成画像、1回あたりの画像合成処理に要する見込みの処理時間、合成画像の「明るさ」についてのヒストグラムなどが表示される。
カメラインターフェイス部109は、被測定物を撮像して画像データを生成するための撮像部8に接続され、撮像部8で撮像された画像データが入力される。すなわち、カメラインターフェイス部109は、コンピュータ本体101と撮像部8との間のデータ通信を仲介する。より具体的には、カメラインターフェイス部109は、画像バッファ109aと露光時間設定部109bとを含む。画像バッファ109aは、撮像部8で撮像され逐次伝送される入力画像を一旦蓄積し、1回の撮像分の入力画像が蓄積されると、その蓄積されたデータをメモリ106または固定ディスク107へ転送する。露光時間設定部109bは、CPU105からの内部コマンドに従って、それぞれの撮像開始前に撮像部8にコマンドを送信し、撮像部8における露光時間を設定する。
PLCインターフェイス部115は、コンピュータ本体101と図示しないPLCとの間のデータ通信を仲介するための装置である。また、センサインターフェイス部117は、上述した光電センサなどからのトリガ信号を受信して、CPU105へ伝達する。
固定ディスク107は、CPU105が実行するプログラムや入力画像などを格納する不揮発性の記録装置である。
キーボード103およびマウス104は、外部から入力を受付ける入力部である。より具体的には、キーボード103は、入力されるキーに応じたユーザからの指令を受付ける。また、マウス104は、クリックやスライドなどの動作に応じたユーザからの指令を受付ける。
また、コンピュータ100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
[B3.動作モード]
本実施の形態に従う視覚センサシステム1は、ワーク2を複数回撮像することで合成画像を生成するとともに、必要に応じて当該合成画像に対して検査や計測を実行する「稼動モード」と、ワーク2についての画像合成処理に係る設定を行うための「設定モード」とを選択することが可能である。ユーザは、「設定モード」において、モニタ102に表示される画像合成処理によって生成された合成画像を参照しながら、画像合成処理に係る設定を入力する。
[C.画像合成処理]
次に、合成画像を生成するための画像合成処理について説明する。本実施の形態に従う画像合成処理は、主として撮像部8のダイナミックレンジを拡大させるためのものである。
図4は、ワークとして腕時計の裏面を撮像した場合の入力画像の一例を示す図である。
図4(a)は、露光時間が相対的に長い条件下で1回の撮像により取得された入力画像を示し、図4(b)は、露光時間が相対的に短い条件下で1回の撮像により取得された入力画像を示す。なお、図4(a)および図4(b)において、入射する光強度は同じ条件であるとする。図4に示すワークは、金属製の時計本体部と皮革製のバンド部とを含む。両者の反射率は大きく異なるので、各部から放射される光強度(単位時間当たりに放射される光エネルギー)にも大きな差がある。
そのため、露光時間が長くなると、相対的に反射率の高い時計本体部は白飛びを生じてしまい、有効な輝度を取得することができない。すなわち、図4(a)に示すように、時計本体部に記された文字が識別できなくなっていることがわかる。これに対して、露光時間が短くなると、相対的に反射率の低いバンド部から十分に光エネルギーを受光することができず、有効な輝度を取得することができない。すなわち、図4(b)に示すように、バンド部は黒つぶれを生じており、ステッチなどの欠陥が識別できなくなっていることがわかる。
そこで、本実施の形態に従う画像処理装置は、同一のワーク2を異なる露光条件(露光時間)で複数回撮像し、取得された複数の入力画像から合成画像を生成する。入力画像は、撮像部8に入射する光強度の分布を示す値(各色の輝度分布)を含んでおり、本実施の形態に従う画像処理装置は、各画素に対応するそれぞれの入力画像に含まれる光強度を示す値(各色の輝度)と、対応する入力画像の撮像時における露光条件(露光時間)とに基づいて、合成画像の各画素の色情報(以下、「合成色情報」とも称す。)および輝度(以下、「合成輝度」とも称す。)を算出する。そして、合成色情報及び合成輝度に基づいて、合成画像が生成される。
すなわち、合成輝度は、撮像部8の撮像素子に入射する光強度に応じた輝度値に相当し、有効ダイナミックレンジ内で一定以上の輝度分解能を有する。さらに、それぞれの合成輝度から、撮像部8の撮像素子に入射する光強度の分布に応じた輝度値分布が算出される。なお、有効ダイナミックレンジとは、合成輝度の最小値と最大値との差、あるいはこれらの間の範囲を意味する。
概略すると、この合成輝度の算出処理では、各画素について、入力画像のそれぞれにおける光強度を示す値(輝度)が露光時間で規格化される。そして、その規格化された光強度の大きさが適切な範囲にあるものが優先的に採用される。言い換えれば、合成画像における各画素の合成輝度は、複数の入力画像の対応する画素がそれぞれもつ情報のうち、ワーク2から放射される光強度(単位時間当たりに入射する光エネルギー)に適した露光時間で撮像された画素がもつ情報を主成分として算出される。このような処理によって、適切な露光時間で撮像された輝度をもつ画素の集合として、合成画像を生成できる。図4(c)は、本実施の形態に従う画像合成処理によって生成された合成画像の一例を示す図である。図4(c)に示すように、上述の画像合成処理を行うことで、図4(a)のような白飛びや図4(b)に示すような黒つぶれを含まない合成画像を生成できる。
広いダイナミックレンジを有限の階調をもつ1枚の画像で表現するためには、非線形なトーンマッピングをすることが有効である。トーンマッピングには、種々の方法があり、関数を用いて算出される非線形トーンマッピングの代表例としては、対数変換やガンマ補正などがある。あるいは、関数ではなく予め定められたルックアップテーブルを用いることにより任意の形状のトーンマッピングを行うこともできる。一方、トーンマッピングをかけるタイミングとして、加算処理を行った後に処理する場合と、加算処理の前に処理する場合の2つの方法が可能である。つまりトーンマッピングには複数のバリエーションがあり、また、処理タイミングとして2つの方法があることになる。
本実施の形態では、これらの処理の一例として、対数変換を行った後に加算処理を行う場合の構成を示す。
[D1.全体制御構造]
上述したように、本実施の形態に従う画像処理装置は、主として以下の3つの処理を実行する。
(1)ワークを異なる露光時間で複数回撮像する処理(撮像処理)
(2)一連の複数回撮像により得られた複数の入力画像に含まれる特定のワーク2の位置の特定(動き追従処理)
(3)複数の入力画像に含まれる特定のワーク2の位置を基準とした部分画像を合成することでダイナミックレンジを拡大した合成画像の生成(画像合成処理)
そして、画像合成処理は、主として、以下の4つのサブ処理からなる。
(3−1)撮像された入力画像の輝度から合成輝度を算出する処理(輝度合成処理)
(3−2)算出された合成輝度から階調値を算出する処理(階調値変換処理)
(3−3)撮像された入力画像の色情報から合成色情報を算出する処理(色合成処理)
(3−4)合成色情報と階調値とから合成画像を生成する処理(最終生成処理)
以下、まず(1)〜(3)の処理の概略について説明した後、(2)動き追従処理の実現例として、「モデル登録型」および「逐次抽出型」の詳細な内容について説明する。
図5は、この発明の実施の形態に従う画像処理装置の全体制御構造を示す機能ブロック図である。
図5を参照して、本実施の形態に従う画像処理装置は、上述の(1)撮像処理を実現するための制御構造として、撮像制御部200と、選択部202と、画像メモリ204a〜204hとを含み、上述の(2)動き追従処理を実現するための制御構造として、動き追従制御部230と、抽出部205a〜205hとを含み、上述の(3−1)輝度合成処理を実現するための制御構造として、画像情報分離部206a〜206hと、輝度合成部210と、ヒストグラム生成部218とを含み、上述の(3−2)階調値変換処理を実現するための制御構造として、トーンマッピング部214と、明るさ上下限設定部216とを含み、上述の(3−3)色合成処理を実現するための制御構造として、画像情報分離部206a〜206hと、色合成部208を含み、上述の(3−4)最終生成処理を実現するための制御構造として、画像生成部212を含む。
以下、本実施の形態に従う画像処理装置における各処理の内容を各機能ブロックの動作とともに説明する。
(1)撮像処理
図5を参照して、撮像制御部200は、撮像部8を用いて同一のワーク2を異なる露光条件(露光時間)で複数回撮像を行うことにより複数の入力画像を取得する。これらの入力画像は、それぞれの撮像タイミングにおける撮像部8の視野の内容を示すものとなる。撮像制御部200は、ユーザ設定に応じて、どのように露光時間を順次切替えるかについて決定する。より具体的には、本実施の形態に従う撮像部8は、一例として、シャッター速度を任意に設定可能な電子シャッターを有しており、これにより露光時間を任意に変更可能である。その変更可能な露光時間は、一例として「1/125秒」,「1/250秒」,「1/500秒」,「1/1000秒」,「1/2000秒」,「1/4000秒」,「1/8000秒」,「1/16000秒」の8通りを標準として含む。この変更可能な露光時間群は、「1/125秒」を基準(最も遅い値)として、2のべき乗で順次早くなるように設定されている。
撮像制御部200は、予め定められる設定(撮像回数および各撮像における露光時間など)に従って、各撮像前に撮像部8への露光時間の逐次設定と、撮像部8を用いて当該設定された露光時間でワーク2の撮像とを繰返す。さらに、撮像制御部200は、各撮像に同期して、選択部202に選択指令を与え、撮像部8がワーク2を逐次撮像することで生成される入力画像を画像メモリ204a〜204hに逐次的に記憶させる。
選択部202は、撮像部8と、画像メモリ204a〜204hとの間に配置され、撮像制御部200からの選択指令に応じて、画像メモリ204a〜204hのいずれか1つと撮像部8とを電気的に接続する。このような動作によって、これにより、撮像部8がワーク2を撮像することで生成される入力画像は、画像メモリ204a〜204hに逐次的に記憶される。なお、以下では、画像メモリ204a〜204hを総称して「画像メモリ204」とも記す。
画像メモリ204は、撮像部8の露光時間に対応付けて構成されており、対応する特定の露光時間において撮像された入力画像を記憶する。たとえば、画像メモリ204aは、露光時間が「1/125秒」の条件で撮像された入力画像をもっぱら記憶し、画像メモリ204bは、露光時間が「1/250秒」の条件で撮像された入力画像をもっぱら記憶するといった具合である。
なお、後述するように、合成画像を生成する際には、撮像部8に設定可能なすべての露光時間でワーク2を撮像する必要はない。すなわち、ワーク2が放射する光強度に応じて、適切な「明るさ」範囲を含むように、複数の露光時間が設定される。
(2)動き追従処理
動き追従制御部230は、それぞれの露光時間において撮像された入力画像について、目的のワーク2の位置をそれぞれ特定する。そして、動き追従制御部230は、それぞれの特定した位置に基づいて、一連の複数回撮像によって得られる入力画像の組に対して、各画像内に現れている目的のワーク2を基準として位置合わせを行うための指令を抽出部205a〜205hに与える。なお、以下では、抽出部205a〜205hを総称して「抽出部205」とも記す。
抽出部205a〜205hは、動き追従制御部230からの指令に従って、それぞれ対応の画像メモリ204a〜204hに記憶された入力画像のうち、目的のワーク2が現れている領域(部分画像)をそれぞれ抽出して、対応する画像情報分離部206a〜206hへそれぞれ出力する。なお、抽出部205a〜205hがそれぞれ抽出する部分画像の大きさは、いずれも同じである。
あるいは、抽出部205a〜205hは、それぞれ対応の画像メモリ204a〜204hに記憶された入力画像を、動き追従制御部230からの指令に従う相対的な位置ずれ量をもって、応する画像情報分離部206a〜206hへそれぞれ出力する。
(3−1)輝度合成処理
画像情報分離部206a〜206hは、それぞれ抽出部205a〜205hに対応付けられており、対応の抽出部205で抽出された部分画像から、色情報および輝度をそれぞれ抽出する。代表的に、入力画像(すなわち、部分画像)は、各画素に入射する光エネルギーに応じた値である3色の輝度(R輝度、G輝度、B輝度)から構成されるものとする。入力画像の色情報は、これらの3色の輝度を規格化した上で、各輝度の相対関係(相対比)を表わしたものである。また、入力画像の輝度は、各画素に入射する光エネルギーを総合的に表わしたものであり、3色の輝度の平均値(あるいは、総和)に相当する。
そして、画像情報分離部206a〜206hは、抽出した色情報を色合成部208へ出力するとともに、抽出した輝度を色合成部208および輝度合成部210へ出力する。
輝度合成部210は、撮像部8による一連の複数回の撮像(1枚の合成画像を生成するのに必要なすべての撮像)が完了した後、それぞれの部分画像の輝度を対応する露光時間によってそれぞれ規格化した上で、各画素の合成輝度を算出する。上述したように、撮像部8における露光時間を変更することで、撮像に適した光強度の範囲が変動する。すなわち、露光時間が相対的に短ければ、光強度のより大きな範囲の撮像に適し、露光時間が相対的に長ければ、光強度のより小さな範囲の撮像に適する。
そこで、本明細書においては、ワークから放射される光強度の大きさに応じた「明るさ」という指標を用いる。なお、「明るさ」は、撮像部8の性能に依存する相対的な値であり、同じ「明るさ」であっても、撮像素子の感度や光学系の開放値などが異なれば、実際の光強度(もしくは、光エネルギー)は異なったものとなる。
一般的に、撮像部8(撮像素子)に入射する光エネルギーの大きさは、露光時間に比例すると考えられる。そのため、本明細書における「明るさ」としては、代表的に、撮像部8で検出された輝度を露光時間で割り、その値について対数をとったものを採用する。したがって、本明細書における「明るさ」は、単位露光時間あたりの光エネルギー(すなわち、光強度)の大きさを示す指標である。このような「明るさ」を用いることで、撮像部8に設定可能な各露光時間に対応させて、撮像部8による撮像に適した「明るさ」範囲を予め規定することができる。
より具体的には、本実施の形態に従う撮像部8に設定可能な8つの露光時間は、2のべき乗で順次短くなるようになっているので、各露光時間と「明るさ」との対応関係を図6のように定めることができる。
図6は、撮像部8に設定される露光時間と撮像に適した「明るさ」範囲との関係の一例を示す図である。図6を参照して、露光時間が「1/125秒」である場合に撮像に適した「明るさ」範囲を「10〜30」に設定すると、露光時間を1/2倍した「1/250秒」である場合には、撮像に適した「明るさ」範囲を「10」だけ加算した「20〜40」に設定できる。このように逐次設定することで、露光時間を「1/125秒」〜「1/16000秒」の範囲に対応付けて、「10〜100」の「明るさ」範囲をカバーするように設定できる。
また、各「明るさ」範囲を複数の露光時間がカバーするように構成することが好ましい。図6に示す例においては、「明るさ」範囲が10〜90の範囲では、少なくとも2つの露光時間によってカバーするように設定されている。すなわち、たとえばその「明るさ」範囲に「60」を含む露光時間は、「1/1000秒」,「1/2000秒」,「1/4000秒」の3つである。このような設定を行うことで、ユーザが入力する「明るさ」上下限範囲(後述する)が狭い場合であっても、異なる露光時間で複数回の撮像が行なわれるように設定される。
この図6に示す露光時間と「明るさ」範囲との関係は、撮像部8で撮像可能な「明るさ」範囲のうち、ユーザによって必要な「明るさ」範囲が設定されると、当該設定に対応する複数の露光時間の各々での撮像が行なわれるようになる。すなわち、撮像部8に設定可能なすべての露光時間において撮像が行なわれるのではなく、特定の露光時間における撮像のみを行うことで、1枚の合成画像の生成に要する処理時間を短縮することもできる。
より具体的には、ユーザによって、たとえば「明るさ」範囲が「30〜50」に設定された場合には、その範囲内に含まれる「1/250秒」,「1/500秒」,「1/1000秒」の露光時間で1処理あたり3回の撮像が行なわれる。
再度、図5を参照して、輝度合成部210は、ワーク2に対する一連の撮像によって取得された複数の部分画像を用いて、合成画像の各画素の輝度である合成輝度を算出する。より具体的には、輝度合成部210は、合成画像の各画素(座標位置i)に対応するP個の部分画像におけるそれぞれの画素の輝度を露光時間で規格化することで、各画素の合成輝度Eiを算出する。輝度合成部210による合成輝度Eiの算出式は(1)式のようになる。
(1)式において、「ln(g(Zi,j)−lnΔtj)」の項が、各入力画像における輝度を露光時間で規格化した上で、「明るさ」として評価した値に相当する。これは、たとえば同じ輝度「128」であっても、露光時間が相対的に短ければ、その実際の「明るさ」はより大きな値として評価すべきであり、露光時間が相対的に長ければ、その実際の「明るさ」はより小さな値として評価すべきであるという技術思想に基づくものである。すなわち、上記の項は、ln{g(Zi,j)/Δtj}と変形できるように、対応の部分画像の撮像時の露光時間に応じた係数1/Δtjを乗じることで露光時間による規格化(=g(Zi,j)/Δtj)を行い、この規格化した値を用いて合成輝度Eiが算出される。
代表的に、合成輝度Eiは、図6に示す各露光時間と「明るさ」範囲との関係に従って、0〜100の範囲の値として算出される。なお、理解を容易にするために、0〜100の範囲で表しているが、合成して得られる画像の「明るさ」の階調は、1回の撮像で取得される画像がもつ階調(たとえば、8ビット)よりも大きくなることから、データとしては、小数点以下の桁も有する値である(たとえば、16ビットのデータを用いて小数点以下4桁までの値として取扱う)。
上式においては、さらに、重み関数w(Z)と撮像部8の撮像素子の応答関数g(Z)を導入している。図7を参照して、これらの関数について説明する。
図7は、重み関数および応答関数の特性の一例を示す図である。図7(a)は、重み関数w(Z)の特性を示し、図7(b)は、応答関数g(Z)の特性を示す。
図7(a)を参照して、重み関数w(Z)は、撮像部8から出力される輝度の値に応じて、その信頼度を反映するための関数である。すなわち、ある露光時間において、撮像部8から出力される輝度のうち、その下限値(0)または上限値(255)に近い値は、その中間値(128)に近い値に比較して信頼度が低いと考えられる。換言すれば、仮に撮像部8がある露光時間において最も適した「明るさ」をもつ被測定物を撮像すると、その輝度はほぼ中間値になると考えられる。
そこで、このような特性を考慮して、重み関数w(Z)としては、輝度階調値の中間値の近傍に比較して、下限値または上限値の近傍の値がより小さくなるような関数を用いることが好ましい。一例として、本実施の形態では、輝度階調値の中間値が最大値(128)となるとともに、下限値および上限値でそれぞれゼロとなるような三角形状の重み関数を採用する。このような重み関数を採用することで、露光時間毎の入力画像のうち、その輝度が所定範囲内にあるものを優先的に採用して合成輝度が算出される。
また、図7(b)を採用して、応答関数g(Z)は、撮像部8から出力される輝度分布と実際に撮像部8に入力する光エネルギー分布との間の非線形性を補償するための関数である。たとえば、CCDなどの撮像素子では、入力する光エネルギーあるいは光強度と出力される電圧信号との関係は非線形となる。このような非線形特性はガンマ特性などとも称される。応答関数g(Z)は、このようなガンマ特性を補償して、撮像部8から出力される輝度を、実際に撮像部8に入力する光エネルギーに比例するように補正するものである。なお、図7(b)には、簡単化のため、撮像部8から出力される輝度が入力する光エネルギーと比例関係にある場合の応答関数g(Z)を示す。
なお、上式中の定数項の「C」は、各露光時間と「明るさ」範囲との関係を図6のように定めた場合に生じるオフセットを補償するための項であり、各露光時間と「明るさ」範囲との関係に応じて適宜設定することができる。
また、上式中では、ネイピア数「e」を底にした自然対数を用いているが、必ずしも「e」に限定されるものではなく、「2」を底にした対数や「10」を底にした常用対数などを用いてもよい。
再度、図5を参照して、輝度合成部210は、算出した合成輝度Eiをヒストグラム生成部218へ出力する。ヒストグラム生成部218は、合成輝度Eiについてのヒストグラムを生成する。すなわち、ヒストグラム生成部218は、合成輝度Eiの分布をモニタ102に表示させるための分布データを生成する。より具体的には、輝度合成部210は、各画素の合成輝度Eiを所定幅の階級に区分した上で各階級の頻度を算出する。これは、ユーザが、輝度合成部210によって算出される合成輝度Eiのうち相対的に比率の高い範囲を参照しながら、「明るさ」上限値および「明るさ」下限値を初期設定することを支援する。
また、ヒストグラム生成部218は、ユーザ設定に応じて、ヒストグラムの生成処理を中断または再開可能に構成されてもよい。
(3−2)階調値変換処理
トーンマッピング部214は、輝度合成部210で算出された合成輝度Eiをモニタ102に表示すべき階調値に変換する。具体的には、トーンマッピング部214は、各画素の合成輝度Ei(輝度範囲:0〜100;但し、256階調より大きな階調をもつ)を合成画像の対応する画素の階調値Yi(たとえば、0〜255階調値)に割当てることで、合成画像の濃度を決定する。なお、各画素の合成輝度Eiの分解能(ダイナミックレンジ)は、入力画像より高くなるので、合成画像の階調値を入力画像の階調値より細分化することで、より精度の高い合成画像を生成および表示できる。
トーンマッピング部214は、明るさ上下限設定部216によって設定される対応関係に従って、合成輝度Eiから階調値Yiへの変換を実行する。具体的には、トーンマッピング部214は、明るさ上下限設定部216から、階調値への割当てを行うべき「明るさ」上下限の設定値を受けて、当該範囲内の合成輝度Eiを対応する階調値Yiへ変換する。この階調値Yiの分布は、規定の数値範囲内の階調値で示される規定範囲階調値の分布に相当する。
図8は、トーンマッピング部214による割当て処理を説明するための図である。
図8を参照して、説明を簡素化するために、トーンマッピング部214が線形の割当て処理を行う場合について例示する。最も簡単な例としては、輝度範囲が0〜100である合成輝度Eiの比例関係を保ったまま、0〜255の範囲の階調値への割当てである。これにより、モニタが持つ表示能力より大きな階調をもつデータを、モニタの持つ表示能力に合わせた階調(たとえば、8ビット表示)で表示することができる。
上述したように、「明るさ」上限値Emaxと「明るさ」下限値Eminが設定された場合には、トーンマッピング部214は、以下のような式に従って、階調値Yiへの割当てを行う。
Yi=255×(Ei−Emin)/(Emax−Emin)
すなわち、トーンマッピング部214において、合成輝度Eiから階調値Yiへの変換に用いられる対応関係は、「明るさ」上限値Emaxおよび「明るさ」下限値Eminを変更することで、適宜更新されることになる。
なお、「明るさ」上限値Emaxより大きな合成輝度Eiをもつ画素は、すべて最大の階調値(たとえば、255)に変換されるので、その明るさについての情報は失われる。同様に、「明るさ」下限値Eminより小さな合成輝度Eiをもつ画素についても、すべて最小の階調値(たとえば、0)に変換されるので、その明るさについての情報は失われる。したがって、その合成輝度Eiの値が「明るさ」下限値Eminから「明るさ」上限値Emaxの範囲にある画素のみが合成画像上で有効な階調値をもつ画素となる。
以下の説明では、「明るさ」下限値Eminから「明るさ」上限値Emaxの範囲を、『「明るさ」上下限範囲』とも称する。
図9は、「明るさ」上下限範囲の設定に係る処理を説明するための図である。図9を参照して、ヒストグラム生成部218(図5)において生成された、合成画像の「明るさ」についてのヒストグラムがモニタ102に表示される。ユーザは、このモニタ102に表示されるヒストグラムを参照しながら、「明るさ」下限値Eminおよび「明るさ」上限値Emaxを設定する。すなわち、ユーザは、拡大された撮像部8のダイナミックレンジの全範囲を示すヒストグラム上で、合成画像としてモニタ102に表示するべきダイナミックレンジの範囲を設定する。典型的には、撮像対象のワーク2から放射される光強度に応じて、適切な「明るさ」の範囲にある画素が、モニタ102に有効な階調値をもつものとして表示される。
したがって、「明るさ」上下限範囲は、合成輝度Eiの有効ダイナミックレンジに含まれ、かつ、一般的な使用においては、合成輝度Eiの有効ダイナミックレンジよりも狭い範囲に設定される。そして、この「明るさ」上下限範囲内の合成輝度Eiは、既定の数値範囲内の階調値で表される既定範囲階調値である階調値Yiに対応させて変換されて、合成輝度Eiの分布が既定範囲階調値分布に相当する階調値Yiの分布に変換される。
<計算例>
一例として、それぞれ3つの露光時間「1/250秒」,「1/500秒」,「1/1000秒」において撮像が行なわれることで入力画像が取得された場合において、3つの入力画像の座標位置iにおける輝度が、それぞれ「190」,「100」,「50」であるとする。この場合において、当該座標位置iに対応する画素の合成輝度Eiは以下のように算出される。但し、w(190)=65,w(100)=100,w(50)=50である。
Ei=10×{65×(log190+log250−1)+100×(log100+log500−1)+50×(log50+log1000−1)}/(65+100+50)=37
そして、ユーザによって、「明るさ」上限値Emaxが「60」で、「明るさ」下限値Eminが「30」に設定された場合には、合成画像の座標位置iの階調値Yiは以下のように算出される。
Yi=255×(37−30)/(60−30)=25
(3−3)色合成処理
再度図5を参照して、色合成部208は、複数の部分画像の色情報から合成色情報を算出する。後述するように、合成画像は、色合成部208で算出される各画素の合成色情報に、トーンマッピング部214によって算出される対応する階調値(濃度)を乗じて得られる。そのため、色合成部208から出力される合成色情報は、各画素の濃度の情報をもたない、「赤色」、「緑色」、「青色」の相対的な比を示す値となる。
また、色合成部208は、上述の輝度合成部210と同様に、各座標位置に対応する複数の入力画像におけるそれぞれの画素の色情報に基づいて、合成画像の各画素の合成色情報を算出する。より具体的には、色合成部208は、各部分画像の色情報と、その信頼度に応じた重みとを乗算した値を累積加算することで、合成色情報を算出する。
ここで、j番目の部分画像の座標位置i(0≦i≦画素数n)における色情報を(ri,j,gi,j,bi,j)とする。但し、色合成部208は、画像情報分離部206a〜206hから出力される色情報を、ri,j+gi,j+bi,j=1が成立するように予め規格化する。また、j番目の部分画像の座標位置iにおける輝度をZi,jとする。この規格化された色情報および輝度を用いると、合成色情報(ri,gi,bi)の算出式は(2.1)〜(2.3)式のようになる。
ここで、重み関数w(Z)は、図7(a)と同様の特性を有する。すなわち重み関数w(Z)は、撮像部8から出力される輝度の値に応じて、その信頼度を反映するための関数である。この重み関数w(Z)の技術的な意味については、上述したので詳細な説明は繰返さない。
そして、色合成部208は、算出した合成色情報を画像生成部212へ出力する。
(3−4)最終生成処理
画像生成部212は、輝度合成部210およびトーンマッピング部214によって算出された階調値Yiを、対応する合成色情報(ri,gi,bi)に順次乗じることによって、座標位置iの画素の画像情報を順次算出し、これによって合成画像を生成する。
すなわち、合成画像の座標位置iの座標における絶対的な色情報(Ri,Gi,Bi)は、以下のように表わすことができる。
(Ri,Gi,Bi)=Yi×(ri,gi,bi)
以上のような手順に従って、合成画像が最終的に生成される。
なお、上述したように、合成画像は、それぞれの入力画像の一部を抽出して生成されるので、合成画像の大きさは、入力画像の大きさに比較して小さくなる。そのため、モニタ102に入力画像の大きさの表示領域を確保している場合には、合成画像の周辺に予め定められた色情報(たとえば、黒一色または白一色など)を付加して、入力画像と同じ大きさの合成画像を出力するようにしてもよい。
(その他)
撮像制御部200は、撮像開始から1枚の合成画像の生成までに要する見込みの処理時間(合成時間)を算出する。より具体的には、撮像制御部200は、撮像部8による撮像回数、各撮像における露光時間、画像合成処理の処理量などを考慮して合成時間を推定する。ユーザは、この合成時間を参照して、実際の生産ラインに適用可能な設定であるか否かを判断する。
[D2.動き追従処理の概要]
以下、図10および図11を参照して、本実施の形態に従う動き追従処理の概要について説明する。
図10は、この発明の実施の形態に従う動き追従処理による効果を説明するための図である。図11は、この発明の実施の形態に従って生成される合成画像を関連技術により生成された合成画像と比較する図である。
図10(a)を参照して、上述したように、本実施の形態に従う画像合成処理では、1枚の合成画像を生成するために、対象のワークを異なる露光条件で複数回撮像する必要がある。そのため、このワークが搬送ライン6上を移動する場合には、一連の撮像を行っている間に、撮像部8とワークとの相対位置関係が変化する。
一例として、1枚の合成画像を生成するために、ワーク2が位置1に到達したタイミングで、1番目の撮像が開始されたとする。その後、引き続く2番目の撮像が行なわれたタイミングでは、ワーク2は位置2へ移動していたとする。さらにその後、3番目の撮像が行なわれたタイミングでは、ワーク2は位置3へ移動していたとする。
このように、1枚の合成画像に必要な複数の入力画像の取得に要する時間内に、撮像部8の視野内においてワーク2が無視できない程度移動するような場合には、それぞれの入力画像におけるワーク2が写る場所が互いに異なったものとなる。
典型的な一例として、図10(b)に示すように、1番目の撮像により取得された入力画像では、ワーク2の像がそのほぼ中心に位置しているとしても、2番目の撮像により取得された入力画像では、ワーク2の像が搬送ライン6の下流側に位置することになり、さらに3番目の撮像により取得された入力画像では、ワーク2の像は搬送ライン6のさらに下流側に位置することになる。
なお、露光時間がライン速度に比較して比較的短い場合であっても、撮像素子からの画像読出しや各種処理などに所定の時間を要するので、共通の撮像素子で複数回の撮像を行う限りにおいて、一連の撮像に要する時間は比較的長くなり得る。
図10(b)に示すような入力画像に対して、関連技術により画像合成処理を行うと、図11(a)に示すような、ずれた状態の画像が現れることとなる。なお、本実施の形態において解決しようとする「画像のずれ」は、主として、複数回の撮像を行う際の、撮像間での被写体の移動によって生じるものであり、通常のデジタルカメラなどで生じる1回の撮像、すなわちある露光時間内にカメラ本体の位置が変化することで生じる、いわゆる「手ブレ」とは異なるものである。
これに対して、本実施の形態によれば、複数回の撮像によって取得された複数の入力画像のそれぞれに含まれるワーク2の位置を特定し、ワーク2が実質的に同じ位置となるように、それぞれの入力画像を合成するものである。言い換えれば、一連の撮像によって取得された複数の入力画像の間の相対的な位置関係を適宜調整した上で、画像合成処理を実行するとも言える。
このように、複数の入力画像の間で、ワーク2の位置が実質的に同じになるように調整するので、生成される合成画像の大きさは、入力画像の大きさに比較して小さくなる。
[E1.動き追従処理(モデル登録型)の概要]
本実施の形態に従う動き追従処理(モデル登録型)においては、複数の露光条件で複数回撮像を行うことにより得られる入力画像の組に対して、予め登録された、目的のワーク2を示す参照画像(パターン)を各入力画像内で探索(サーチ)処理することにより、目的のワーク2の位置をそれぞれ特定する。なお、目的のワーク2を示す参照画像(パターン)に代えて、または、これに加えて、目的のワーク2の特徴情報(エッジ画像やエッジ位置)を各入力画像内でサーチ処理することにより、目的のワーク2の位置がそれぞれ特定されてもよい。
したがって、本実施の形態に従う動き追従処理(モデル登録型)においては、設定モードにおいて、目的のワーク2を示す参照画像(パターン)、および、目的のワーク2の特徴情報の少なくとも一方が予め登録される。そして、稼動モードにおいて、当該登録された参照画像または特徴情報を対象の入力画像内でサーチすることにより、目的のワーク2の位置がそれぞれ特定される。
図12は、この発明の実施の形態に従う動き追従処理(モデル登録型)の概要を説明するための図である。なお、図12には、説明を簡素化するために、3枚の入力画像に基づいて、1枚の合成画像が生成される場合について例示する。
図12を参照して、まず、「設定モード」において、それぞれの入力画像におけるワーク2の位置を特定するためのモデル画像である参照画像REFが登録される。なお、参照画像REFは、撮像部8で撮像されたカラー画像のままでもよいし、グレイスケール画像に変換されたものであってもよい。さらに、参照画像REFそのものではなく、ワーク2の特徴情報(エッジ画像やエッジ位置)などであってもよい。
特に、本実施の形態に従う動き追従処理(モデル登録型)では、露光条件の別に参照画像REFが登録されることが好ましい。これは、それぞれの露光条件下での撮像によって取得された入力画像において、後述のサーチ処理で有効に認識される特徴情報が異なる場合が多いと考えられるからである。すなわち、たとえば、光強度が相対的に低い部分は、露光時間が相対的に短い条件で取得された入力画像では輝度が低すぎて、優位な情報として扱われないが、露光時間が相対的に長い条件で取得された入力画像では、優位な情報として扱われると考えられる。
そのため、本実施の形態に従う参照画像REFの登録処理(設定モード)では、合成画像を生成するための複数の入力画像を取得するための露光条件と同じ露光条件で、基準とすべきワーク(基準ワーク)を複数回撮像し、それぞれの撮像によって取得された複数の入力画像IMG3から、基準ワークに対応する領域が参照画像REFとして抽出される。すなわち、稼動モードとは別の一連の複数回撮像により得られた入力画像の組から、参照画像として指定された領域がそれぞれ抽出され、当該抽出した複数の参照画像(あるいは、後述するように、抽出した複数の参照画像のそれぞれに含まれる目的のワーク2の特徴情報)がそれぞれの露光条件に対応付けて登録される。そして、動き追従処理におけるサーチ処理には、それぞれの入力画像についての露光条件に対応付けられた参照画像(あるいは、特徴情報)が用いられる。なお、基準ワークは、実質的に静止した状態で撮像部8により撮像される。そして、それぞれの入力画像IMG3から抽出された複数の参照画像REF(もしくは、基準ワークの特徴情報)は、それぞれの露光条件に対応付けて登録される。
その後、稼動モードにおいて、予め定められた、異なる露光条件でワーク2を複数回撮像することで複数の入力画像IMG1が取得される。続いて、それぞれの入力画像IMG1における参照画像REFに基づくサーチ処理が実行され、参照画像REFに対応する位置がそれぞれ特定される。
続いて、それぞれ特定された位置に基づいて、複数の入力画像IMG1から所定の大きさをもつ部分画像IMG2がそれぞれ抽出される。さらに、この抽出された複数の部分画像IMG2に対して、上述したような画像合成処理が実行され、合成画像OUTIMGが生成される。最終的に、この生成された合成画像OUTIMGがモニタ102などに表示される。なお、この表示処理では、入力画像IMG1と合成画像OUTIMGとの大きさの差を補間するための処理などが併せて実行される。
[E2.動き追従処理(モデル登録型)におけるユーザインターフェイス例]
本実施の形態に従う画像合成処理についての理解を容易にするために、図13〜図17を参照して、ユーザインターフェイスの一例について説明する。
図13〜図16は、この発明の実施の形態に従う画像処理装置のモニタ102に表示される「設定モード」における画面表示例を示す図である。図17は、この発明の実施の形態に従う画像処理装置のモニタ102に表示される「稼動モード」における画面表示例を示す図である。なお、CPU105および表示画面出力部108(図3参照)などが協働することで、図13〜図17に示すような設定画面を表示させる。このような画面表示は、OS(Operating System)の一部として組込まれるGUI(Graphical User Interface)プログラムによって実現され、またGUIは、ユーザがキーボード103やマウス104により操作される画面上のカーソルを用いて、さまざまなユーザ設定を行うための環境も提供する。
(設定モード)
「設定モード」では各種設定を行うことが可能であり、図13〜図17に示すように、一例として、「カメラ設定」「HDR設定」「動き追従設定」「画像調整設定」「ホワイトバランス」「キャリブレーション」の計6個のタブが選択可能な画面が表示される。以下の説明では、本実施の形態に従う動き追従処理を含む画像合成処理に係る主たる設定を行うための「HDR設定」タブ410および「動き追従設定」タブ411がそれぞれ選択された場合のユーザインターフェイスについて説明する。なお、その他の初期設定(撮像部8などの設定)は完了しているものとし、設定モードでは、撮像部8の視野には、基準ワークが静止した状態で配置されているものとする。すなわち、撮像部8の撮像によって、基準ワークの像を含む入力画像が取得されているものとする。
図13には、「HDR設定」タブ410が選択された場合に表示される設定モード画面400の一例を示す。この図13に示す設定モード画面400は、露光条件を含む画像合成処理に係る設定(以下「合成処理設定」とも称す。)を決定するためのユーザ操作(入力操作)を受付ける。より具体的には、ユーザは、この設定モード画面400において、対象とするワーク2および周辺環境に適した、「明るさ」上下限範囲(「明るさ」上限値および下限値)を設定する。
設定モード画面400は、ヒストグラム表示エリア420を含む画像合成設定入力エリア430と、撮像設定表示エリア446と、画像表示エリア412と、全体表示エリア414と、表示制御アイコン群413とを含む。
画像合成設定入力エリア430のヒストグラム表示エリア420には、合成画像の「明るさ」についてのヒストグラム423が表示されるとともに、ユーザ設定された「明るさ」上限値および下限値を示すインジケータ422および424がそれぞれ表示される。なお、ヒストグラム423は、ヒストグラム生成部218(図5)によって適時生成される。
また、画像合成設定入力エリア430は、「明るさ」上下限範囲設定エリア440を含む。この「明るさ」上下限範囲設定エリア440には、「明るさ」下限値を設定するためのスライドバー442、および「明るさ」上限値を設定するためのスライドバー444が設けられる。このスライドバー442および444の操作に従って、ユーザ設定された「明るさ」上下限範囲が明るさ上下限設定部216(図5)に入力される。さらに、「明るさ」上下限範囲設定エリア440には、「明るさ」下限値および上限値の直接的な数値入力を受付ける数値入力ボックスも設けられる。
ユーザは、表示されるヒストグラム423を参照しながら、スライドバー442もしくは444の位置をマウスなどによって操作し、または、対応の数値入力ボックスにテンキーなどを操作して直接的に数値を入力するなどして、所望の「明るさ」上下限範囲を設定する。初期値の「明るさ」上下限範囲としては、ヒストグラム423のほぼ全体をカバーできるような範囲が好ましい。なお、これらのユーザ設定に連動して、インジケータ422および424の表示位置が更新される。
このようなユーザによる「明るさ」上下限範囲の設定に応じて、露光条件を含む合成処理設定の内容が決定される。なお、この合成処理設定は、1回の画像合成処理に許容される時間などを条件として決定される場合もある。
撮像設定表示エリア446には、このように決定された合成処理設定の内容が表示される。具体的な一例として、撮像設定表示エリア446には、1回の画像合成に要する入力画像の枚数(撮像枚数)および1回の画像合成に要する時間(合成時間)などが表示される。
画像表示エリア412には、上述のように決定された合成処理設定の内容に従って、撮像および画像合成処理された結果である合成画像が表示される。この画像表示エリア412に表示される合成画像は、稼動モードにおいて検査や計測に用いられる合成画像に相当する。そのため、ユーザもしくは調整員は、この画像表示エリア412の表示を参照して、「明るさ」上下限範囲や周辺環境(特に、照明環境)などを調整する。この画像表示エリア412に表示される合成画像は、リアルタイムで更新されるので、上述のようなユーザ操作によって、「明るさ」上下限範囲が変更されると、当該変更後の「明るさ」上下限範囲を反映した合成画像が表示される。さらに、表示制御アイコン群413に対するユーザ操作に応じて、画像表示エリア412に表示される合成画像のサイズが変更可能となっている。
全体表示エリア414には、画像表示エリア412に表示される画像が表示される。但し、全体表示エリア414には、画像表示エリア412での表示サイズとは独立して、表示対象の画像が常に全体表示される。すなわち、画像表示エリア412には、画像表示エリア412に表示中の画像が画像全体のうちいずれの領域にあるのかを示す。これにより、ユーザは、合成画像の全体を把握しながら、注目すべき部分(領域)を拡大して観察することもできる。
なお、設定モードにおいて、画像表示エリア412に表示される画像は、リアルタイムに更新される合成画像であってもよいし、ユーザが任意に指定したタイミングで生成された合成画像であってもよい。さらに、撮像部8が所定の露光時間で撮像した入力画像がそのまま画像表示エリア412に表示されるようにしてもよい。さらに、図示しないダイアログなどを操作して、画像表示エリア412に表示される画像の種類を任意に選択できるようにすることがより好ましい。
以上のような操作によって、露光条件を含む合成処理設定の内容が決定された後、「動き追従設定」タブ411が選択されると、図14に示すような設定モード画面402が表示される。この図14に示す設定モード画面402は、動き追従処理に係る設定を行うためのユーザ操作を受付ける。
設定モード画面402は、動き追従設定入力エリア450と、撮像設定表示エリア446と、画像表示エリア412と、全体表示エリア414と、表示制御アイコン群413とを含む。動き追従設定入力エリア450を除いて、その他のエリアは、図13に示す設定モード画面400と同様であるので、詳細な説明は繰返さない。
動き追従設定入力エリア450は、動き追従チェックボックス451と、領域設定ボタン453と、ガイド表示ボタン454と、ライン速度入力ボックス457と、ワークサイズ入力ボックス458と、ライン移動方向チェックボックス群459とを含む。
動き追従チェックボックス451は、本実施の形態に係る動き追従処理の有効化/無効化の設定を受付ける。この動き追従チェックボックス451がチェックされることで、動き追従処理が有効化される。
領域設定ボタン453は、基準ワークを撮像することで取得される入力画像のうち、参照画像REFとして抽出するための領域設定を受付ける。なお、本実施の形態においては、入力画像のうち参照画像REFとして抽出するための領域の大きさは、画像合成処理に用いる部分画像の大きさと同一として決定される場合について例示する。すなわち、ユーザが、領域設定ボタン453を選択して設定する領域の大きさと同一の大きさの部分画像がそれぞれの入力画像から抽出され、合成画像が生成される。言い換えれば、入力画像から抽出すべき部分画像の大きさとして予め設定された大きさの領域が参照画像REFとして抽出される。
この領域設定ボタン453が選択されると、図15に示す領域設定画面404が表示される。この図15に示す領域設定画面404には、参照画像REFとして抽出すべき領域の形状を選択するアイコン群460が表示される。ユーザが、これらのアイコン群460のいずれかを選択すると、選択された形状の領域416が画像表示エリア412に表示されている入力画像に重ねて表示される。なお、参照画像REFとして抽出すべき領域416の形状は、基本的に、長方形のみとなるようにしてもよい。
ユーザは、画像表示エリア412に表示される基準ワークを撮像した画像を参照しながら、領域416を適切な大きさおよび位置に設定する。具体的には、ユーザは、画像表示エリア412に表示される領域416に対して、マウス操作(たとえば、クリックおよびドラッグなど)することで、その大きさおよび位置をインタラクティブに変更可能である。すなわち、ユーザ操作に応じて、入力画像から抽出すべき部分画像の大きさとして予め設定された大きさの領域とは独立した大きさの領域が参照画像REFとして抽出される。
さらに、領域設定画面404には、領域416の大きさおよび位置を座標値によって設定するための座標値設定エリア470が設けられる。この座標値設定エリア470には、領域416の対角頂点の座標値(数値)を受付ける数値入力ボックス471,472,474,475と、領域416の位置をシフトするための十字ボタン473,476とが設けられる。
さらに、領域設定画面404には、基準ワークを静止状態に維持する必要があることをユーザに通知する支援メッセージ477も表示される。
この領域設定画面404において、参照画像REFとして抽出すべき領域416の大きさおよび位置をユーザが設定した後、「OK」ボタンを選択することで、図14に示す設定モード画面402に復帰する。なお、参照画像REFとして抽出すべき領域416が既に設定されている場合には、画像表示エリア412にその範囲を示すインジケータをさらに表示するようにしてもよい。
以上のような手順に従って、参照画像REFとして抽出すべき領域416が設定されると、合成処理設定に含まれる露光条件に従って基準ワークを複数回撮像し、それぞれの撮像によって取得された入力画像からそれぞれ領域416が抽出され、参照画像REFとして登録される。
再度、図14を参照して、ガイド表示ボタン454は、目的のワーク2についての合成画像を生成可能な最大範囲の大きさを示すガイドの表示指示を受付ける。このガイド表示ボタン454が選択されると、図16に示すように、画像表示エリア412に表示されている撮像部8により撮像された画像上に、ガイド枠419が表示される。より具体的には、CPU105が上記ガイド枠419の範囲を示す情報(内部コマンド)を表示画面出力部108に対して与えることで、モニタ102にガイド枠419が表示される。
上述したように、本実施の形態に従う画像合成処理では、入力画像の一部が抽出されて合成画像が生成される。そのため、よりユーザフレンドリな画像処理装置を提供する観点からは、先に決定されている合成処理設定の下で、どの範囲まで画像合成処理の対象とすることができるかをユーザに通知することが重要である。そこで、本実施の形態に従う動き追従処理では、合成画像として出力することが可能な最大範囲を示すガイド枠419を表示する。なお、ガイド枠419の大きさは、撮像部8の視野内における被測定物であるワーク2の移動速度(ユーザによって設定)と、合成処理設定に含まれるそれぞれの露光条件下において複数の入力画像を取得するために要する時間(ユーザによって設定された撮影条件によって予め算出)とに基づいて算出される。なお、ワーク2の移動速度とは、ワーク2が移動する速さ(速度の絶対値)および移動方向を含む。すなわち、ガイド枠419は、入力画像のサイズに比較して、ワーク2の移動方向に沿った両端だけ短くなる。
また、ライン速度入力ボックス457、ワークサイズ入力ボックス458、およびライン移動方向チェックボックス群459は、図16に示すガイド枠419を算出するためのパラメータを受付ける。すなわち、ユーザは、ワーク2を搬送する搬送ライン6の実測のライン速度(搬送速度)をライン速度入力ボックス457に数値入力する。なお、実測のライン速度とは、典型的には[mm/s]の単位で規定される。また、ユーザは、合成画像として生成する領域(部分画像IMG2)の実寸法(典型的には、ワーク2の表面における最大の実測サイズ)をワークサイズ入力ボックス458に数値入力する。なお、領域の実寸法とは、典型的には[mm]の単位で規定される。さらに、ユーザは、ワーク2の搬送方向を、対応するライン移動方向チェックボックス群459を選択することで入力する。図14には、一例として、ワーク2が紙面右側から左側へ移動する場合の設定例を示す。
なお、このガイド枠419の大きさの算出処理の詳細な内容については、後述する。
図16に示すように、ユーザは、画像表示エリア412において、撮像部8により撮像された画像上に表示されるガイド枠419を参照して、図15に示すような手順に従って、参照画像REFとして抽出すべき領域416(図16には、設定済の領域416を示す設定枠417を示す)を設定することができる。さらに、ガイド枠419を超えて領域416設定しようとすると、警告メッセージが通知されるようにしてよい。
なお、ガイド枠419は、合成画像として出力することが可能な最大の大きさを示すものであり、その全体が画像表示エリア412に収まっていれば、その表示位置はいずれであってもよい。但し、ガイド枠419は、画像表示エリア412の中心に配置されることが好ましい。
あるいは、図15に示すような手順に従って、参照画像REFとして抽出すべき領域416の最初の設定点を基準にして、ガイド枠419の表示位置を更新するようにしてもよい。
このようなガイド枠419を表示することで、知識の少ないユーザであっても、参照画像REFとして抽出するための領域設定を容易に行うことができる。
以上のように、露光条件を含む合成処理設定が確定し、参照画像が登録されると、「稼動モード」へ移行することが可能となる。
(稼動モード)
「稼動モード」では、搬送ライン6によって、光電センサからトリガ信号が出力されるトリガ位置までワーク2が搬送されると、上述した画像合成処理が開始される。
図17には、あるタイミングで生成された合成画像を表示する稼動モード画面300の一例を示す。この図17に示す稼動モード画面300は、生成された合成画像312を表示する合成画像表示エリア310を含む。なお、この合成画像表示エリア310は、入力画像の全体を表示可能なサイズに設定されており、生成された合成画像312以外の部分には、補間するための黒色表示314がなされる。さらに、合成画像312に対して、図示しない光学的な計測や検査が実行される。
[E3.動き追従処理(モデル登録型)の制御構造]
図18は、図5に示す動き追従制御部230のより詳細な制御構造を示す機能ブロック図である。図18を参照して、動き追従処理(モデル登録型)を提供する動き追従制御部230は、その制御構造として、参照画像登録部231と、参照画像格納部232と、参照画像選択部233と、入力画像選択部234と、サーチ処理部235と、抽出指令生成部236と、異常監視部237と、履歴表示生成部238と、撮像時間算出部239と、ガイド表示生成部240とを含む。以下、図12をも参照しつつ、図18に示す各制御ブロックについて説明する。
参照画像登録部231は、設定モードにおいて、先に決定された合成処理設定に含まれる露光条件に従って、基準ワークを複数回撮像することにより取得される入力画像IMG3(図12)から、参照画像REFとして抽出すべき領域416(図15)を参照画像REFとしてそれぞれ抽出する。そして、参照画像登録部231は、抽出した参照画像REFをそれぞれの露光条件に対応付けて、参照画像格納部232に登録する。
なお、設定モードにおいて取得されるそれぞれの入力画像IMG3(図12)についても、対応するそれぞれの画像メモリ204に記憶されるので、参照画像登録部231は、露光条件毎に、対応する画像メモリ204から入力画像IMG3を選択的に読出す。
また、図12に示すように、この参照画像REFの登録は、静止した基準ワークを撮像して得られる入力画像IMG3に基づいて実行されるので、参照画像REFとして抽出される領域は、いずれの入力画像IMG3についても同一となる。そのため、ユーザにとってみれば、露光条件毎に複数の参照画像REFを登録することを意識することなく、一回の操作によって、参照画像REFの登録処理を完了することができる。
参照画像格納部232は、参照画像登録部231から出力される参照画像REFをその露光条件に対応付けて記憶する。典型的には、参照画像格納部232は、露光条件別にファイルを保持しており、各ファイルに対応する参照画像REFのデータを格納する。
参照画像選択部233は、稼動モードにおいて、後述する入力画像選択部234と同期して、処理される入力画像IMG1(図12)の露光条件に対応する参照画像REFを参照画像格納部232から読出して、サーチ処理部235へ順次出力する。
入力画像選択部234は、稼動モードにおいて、撮像部8による撮像によって入力画像IMG1が対応する画像メモリ204に記憶されると、それぞれの画像メモリ204から入力画像IMG1を選択的に順次読出して、サーチ処理部235および履歴表示生成部238へ出力する。
サーチ処理部235は、入力画像選択部234からの入力画像IMG1に対して、参照画像選択部233からの参照画像REFに基づいてサーチ処理を行い、入力画像IMG1における参照画像REFに対応する位置をそれぞれ特定する。このサーチ処理部235が特定した位置は、サーチ結果として、抽出指令生成部236、異常監視部237、および履歴表示生成部238へ出力される。
抽出指令生成部236は、サーチ処理部235からのサーチ結果(参照画像REFに対応する位置の情報)に基づいて、対象の入力画像IMG1から部分画像IMG2を抽出するための抽出指令を、対応の抽出部205(図5)へ出力する。なお、本実施の形態では、部分画像IMG2の大きさは、参照画像REFとして抽出される領域の大きさと同じものとして扱われる構成について例示するので、抽出指令生成部236は、対象の入力画像IMG1から、参照画像REFと同じ大きさをもつ部分画像IMG2を抽出させる。
異常監視部237は、稼動モードにおいて、サーチ処理部235が入力画像IMG1における参照画像REFに対応する位置の特定に失敗した場合、および、抽出指令生成部236による入力画像IMG1からの部分画像IMG2の抽出が異常と判断された場合などに、ユーザなどに対して、エラー(異常発生情報)を通知する。より具体的には、異常監視部237は、サーチ処理部235から出力されるサーチ結果および抽出指令生成部236から出力される抽出指令に基づいて、異常の有無を判断する。この異常有無の判断および通知されるエラーの内容などの詳細については、後述する。
履歴表示生成部238は、異常監視部237と協同して、稼動モードにおいて何らかの異常が発生した場合に、当該処理におけるそれぞれの部分画像IMG2の位置などの履歴(ログ)をユーザに通知する。
撮像時間算出部239は、予め決定されている合成処理設定に含まれる露光条件に基づいて、1枚の合成画像を生成するために要する複数の入力画像の撮像に要する時間(撮像時間)を算出する。この撮像時間は、最初の露光開始から最後の露光終了までに要する時間に相当し、各撮像に要する露光時間に加え、撮像素子で捕捉された画像の読出時間などが含まれる。
ガイド表示生成部240は、撮像時間算出部239で算出された撮像時間に加え、ユーザ操作によって入力される、ライン速度・領域実寸・移動方向などの値に基づいて、図16に示すガイド表示を行うためのガイド表示情報を出力する。
[E4.動き追従処理(モデル登録型)におけるサーチ処理]
図19を参照して、サーチ処理部235におけるサーチ処理の詳細について説明する。
図19は、この発明の実施の形態に従うサーチ処理の詳細を説明するための図である。図19(a)は、予め登録される参照画像REFを示し、図19(b)は、サーチ処理の具体例を示す。
図19(a)に示すように、設定モードにおいて、静止状態にある基準ワークを撮像して取得される入力画像IMG3のうち、所定領域が参照画像REFとして登録される。そして、稼動モードにおいて、ワーク2を撮像して取得された入力画像IMG1に対して、参照画像REFに基づくサーチ処理が実行される。
このサーチ処理では、図19(b)に示すように、入力画像IMG1のうち参照画像REFと同じもしくは類似した画像が探索される。この探索の結果、図19(b)に示す例では、参照画像REFの対応する領域2352が特定されている。このようなサーチ処理(パターンサーチ、あるいはパターンマッチング)としては、公知の種々の方法を採用することが可能である。一例として、正規化相互相関を利用する方法や、画像に現れるエッジ部分に着目したエッジコードマッチング法などを採用することができる。前者の例としては、「正規化相関演算の単調関数化による高速テンプレートマッチング」、池田他、電気情報通信学会論文誌、D−II Vol.J83−DII No.9 pp.1861−1869、2000年9月などにその一手法が開示されている。
なお、サーチ領域を入力画像IMG1の全体とすることなく、その一部に限定してもよい(図19(b)に示すサーチ領域2351)。特に、本実施の形態に従う視覚センサシステム1では、搬送ライン6を移動するワーク2を撮像するので、このワーク2の移動方向や移動距離を考慮して、そのサーチ領域を限定してもよい。具体的には、同一のワーク2を連続的に撮像した一連の入力画像IMG1に対しては、先のサーチ処理によって特定された位置より下流側の範囲にサーチ領域を限定してもよい。これにより、サーチ処理をより高速化することができる。
また、対象の搬送ライン6によっては、ワーク2が回転しながら搬送される場合もあり、このような場合には、回転を考慮したサーチ処理を行うことが好ましい。なお、このような回転を考慮したサーチ処理が行なわれた場合には、入力画像IMG1から抽出される部分画像IMG2も回転したものとなっていることもある。そのため、画像合成が行なわれる前に、部分画像IMG2自体も所定方向に整列させることが好ましい。
[E5.動き追従処理(モデル登録型)におけるガイド表示処理]
図20および図21を参照して、ガイド表示生成部240におけるガイド表示処理の詳細について説明する。
図20は、この発明の実施の形態に従うガイド枠の算出方法を説明するための図である。図21は、この発明の実施の形態に従う処理タイミングを説明するための図である。
本実施の形態に従う動き追従処理を行うためには、1枚の合成画像を生成するために要する複数の入力画像の撮像に要する時間(撮像時間)内におけるワーク2の移動前後において、いずれも部分画像IMG2が撮像部8の視野内に収まっていなければならない。言い換えれば、部分画像IMG2のワーク2の移動方向における長さと、撮像時間内におけるワーク2の移動距離との合計が、撮像部8の視野のワーク2の移動方向における長さ以下でなければならない。
一例として、3枚の入力画像に基づいて1枚の合成画像が生成される場合における処理タイミングは、図21に示すようになる。この図21では、時刻t1において、1番目の撮像の露光が開始される。この露光は、時刻t1〜t2の間継続する。その後、時刻t2〜t3の間、1番目の露光によって取得された画像が、撮像素子から読出される。すなわち、時刻t1〜t3の間で1番目の撮像が行なわれる。以下同様にして、時刻t3〜t4の間に2番目の撮像が行なわれ、時刻t4〜t6の間に3番目の撮像が行なわれる。そして、1枚の合成画像を生成するために要する複数の入力画像の撮像に要する撮像時間Tは、時刻t1〜t5の期間に相当する。
図20に示すように、搬送ライン6の搬送方向が紙面左右方向であるとし、1枚の合成画像を生成するために要する複数の入力画像の撮像に要する時間(撮像時間)をT[s]、ライン速度をV[mm/s]、入力画像IMG1の搬送方向におけるサイズをW[pix(画素)]、部分画像IMG2の搬送方向における最大の大きさをX[pix]≡Y[mm]とすると、以下の式が成立しなければならない。なお、Xは撮像部8の視野内における画素単位での長さを示し、Yは実寸法を示す。
(W−X)/W=(V×T)/(V×T+Y)
この式をXについて解くと、
X=W×Y/(V×T+Y)
となる。一例として、撮像時間T=0.15[s]、ライン速度V=100[mm/s]、部分画像IMG2の搬送方向における最大の実寸法Y=30[mm]とすると、X=427[pix]となる。
なお、上述の例では、搬送方向が紙面左右方向である場合について例示したが、紙面上下方向であっても同様の手順によって算出できる。なお、撮像部8の視野内において、搬送ライン6がいずれか一方向の搬送方向をもつ限りにおいて、その向きはいずれであってもよい。しかしながら、部分画像IMG2を効率的に抽出することを考慮すると、搬送方向が撮像部8の視野(通常は、方形状)のいずれか一辺と平行となるように、配置するのが好ましい。
また、上述の例において、部分画像IMG2の搬送方向における最大の実寸法Y[mm]を用いたのは、一般的に、ライン速度が実測値である[mm/s]などの単位でしか得られないためである。すなわち、実測値のライン速度を部分画像IMG2の搬送方向における最大の実寸法で換算することで、撮像部8の視野におけるワーク2の移動速度、すなわち[pix/s]の次元をもつライン速度を算出する。また、部分画像IMG2の搬送方向における最大の実寸法を入力する方法に代えて、撮像部8の視野にワーク2と並べて目盛りが付されている物差しなどを配置することで、撮像によって得られた入力画像から、必要な実寸法を測定することもできる。
なお、[pix/s]の次元をもつライン速度を取得できる場合には、部分画像IMG2の搬送方向における最大の実寸法を入力する必要はない。
このような算出処理によって算出された部分画像IMG2の搬送方向における最大長さXが、図16に示すガイド枠の長さとして用いられる。
[E6.動き追従処理(モデル登録型)における並列処理]
再度図21を参照して、本実施の形態に従う画像合成処理においては、1枚の合成画像の生成に要する時間を短縮するために、撮像処理とサーチ処理とを並列的に実行することが好ましい。
より具体的には、図21に示すように、1番目の撮像によって入力画像が取得される時刻t3において、当該1番目の撮像によって取得された入力画像に対するサーチ処理(SQ1)が開始される。この時刻t3においては、撮像部8による2番目の撮像も開始される。サーチ処理に要する時間が、撮像部8における1回分の撮像処理に要する時間よりも短い場合には、3番目の撮像の開始タイミングである時刻t4において、2番目の撮像により取得された入力画像に対するサーチ処理(SQ2)が並列実行できる。
その後、3番目の撮像処理の終了に引き続いて、3番目の撮像により取得された入力画像に対するサーチ処理(SQ3)および画像合成処理(SQ4)が実行される。
このように、撮像処理とサーチ処理とを並列実行することで、全体として、処理に要する時間を、サーチ処理に要する時間分だけ短縮することができる。
[E7.動き追従処理(モデル登録型)における異常監視処理その1]
図22および図23を参照して、稼動モードにおける異常監視(エラー通知)処理の詳細について説明する。
図22は、この発明の実施の形態に従う画像処理装置のモニタ102に表示される「稼動モード」におけるエラー通知の画面表示例を示す図である。図22に示す稼動モード画面302では、合成画像表示エリア310に、異常が発生した場合の状況を示す履歴が表示される。具体的には、合成画像表示エリア310では、複数の入力画像における参照画像に対応する位置の特定の異常を監視する場合には、1枚の合成画像を生成する過程で抽出された部分画像IMG2のそれぞれの領域が、撮像部8の視野と対応付けて表示される。
すなわち、図22に示す例では、1番目の撮像によって取得された入力画像IMG1から抽出された部分画像IMG2およびその領域を示す枠321が表示される。同様に、2〜4番目の撮像によって取得された入力画像IMG1からそれぞれ抽出された部分画像IMG2およびそれらの領域を示す枠322〜324も同時に表示される。なお、図22に示す表示は、履歴表示生成部238(図18)から出力されるデータによって実現される。いわば、複数の入力画像IMG1が多重露光画像のように表示される。
図22に示す例では、4番目の撮像によって取得された入力画像IMG1から抽出された部分画像IMG2が、撮像部8の視野の外にはみ出していることがわかる。すなわち、4番目の撮像によって取得された入力画像からの部分画像の抽出が異常であると判断される。これは、動き追従処理が失敗していることを意味する。
このような場合には、ユーザに対してエラーを通知するために、4番目の撮像によって取得された入力画像に対応する部分画像の領域を示す枠324の表示形態(典型的には、表示色や点滅表示など)を異常の生じていない他の枠の表示形態とは異なったものとする。
このように、1枚の合成画像を生成する過程で抽出された部分画像IMG2の領域の一連の位置が同一画面上に表示されるので、部分画像IMG2の領域が時系列に従って、どのように変化しているのかを一見して把握することができる。
さらに、図22に示す稼動モード画面302では、異常発生の内容をユーザに通知するメッセージ330も表示される。このメッセージ330では、発生した異常の種別毎に区別してエラーが通知される。より具体的には、入力画像IMG1からの部分画像IMG2の抽出が異常である場合(はみ出し枚数)と、入力画像IMG1における参照画像REFに対応する位置の特定(サーチ処理)が異常である場合(サーチ失敗枚数)とに区分され、それぞれの異常が発生した回数(部分画像の枚数)を示す数値が表示される。
なお、図22に示す場合において、モデル画像に対応する領域が探索された場合には、はみ出しとして検知してもよい。
図23は、この発明の実施の形態に従う入力画像IMG1からの部分画像IMG2の抽出が異常となった場合を説明するための図である。
図23(a)に示すように、図19(a)と同様な参照画像REFが予め登録されているものとし、いずれかの露光条件において撮像された入力画像IMG1に対してサーチ処理が実行された結果の一例を図23(b)に示す。図23(b)に示す例では、参照画像REFの対応する領域2352#が特定されているものの、図19(b)に示す例とは異なり、その領域2352#の一部の領域は、入力画像IMG1の範囲外にはみ出している。この領域2352#のはみ出し部分には、画像情報が存在しないので、予め設定されている合成処理設定を満足する合成画像を生成することができない。そのため、このような場合には、処理異常として、エラー通知を行う。
また、サーチ処理によって、参照画像REFの対応する領域を特定することができなかった場合、すなわち、入力画像IMG1内に参照画像REFと同じもしくは類似した画像が含まれない場合にも、予め設定されている合成処理設定を満足する合成画像を生成することができないので、処理異常として、エラー通知を行う。
[E8.動き追従処理(モデル登録型)における異常監視処理その2]
異常監視処理の別形態として、抽出された部分画像IMG2の領域の時間的な位置変化が本来の変化を示すか否かに応じて、異常の有無を判断してもよい。この本来の変化は、典型的には、ワーク2の搬送速度から推定される。以下、図24および図25を参照して、稼動モードにおける異常監視処理の別形態について説明する。
図24は、この発明の実施の形態に従う異常監視処理の別形態について説明する図である。図25は、図24に示す処理を実現するための異常監視部237における制御構造の一例を示す図である。
図24を参照して、たとえば、搬送ライン6の搬送方向が紙面右側から左側であるとすると、被測定物であるワーク2の動きに追従する部分画像IMG2についても、この搬送方向に沿って、その位置が時間的に変化するはずである。すなわち、図24(a)に示すように、1番目の撮像によって得られた入力画像IMG1から抽出された部分画像IMG2の位置(符号1)、2番目の撮像によって得られた入力画像IMG1から抽出された部分画像IMG2の位置(符号2)、といったように、部分画像IMG2の位置は、本来、紙面右側から左側に時系列で移動するはずである。
しかしながら、図24(b)に示すように、4番目の撮像によって得られた入力画像IMG1から抽出された部分画像IMG2の位置(符号4)の位置が、3番目の撮像によって得られた入力画像IMG1から抽出された部分画像IMG2の位置(符号3)に比較して、搬送方向とは逆方向に変化しているような場合には、異常であると判断することができる。このように、抽出された部分画像IMG2の領域の時間的な位置変化に基づいて、異常の有無を判断することもできる。
このような異常の有無を判断する制御構造として、図25に示すように、異常監視部237は、遅延素子2371と、ベクトル減算器2372と、評価部2373とを含む。
遅延素子2371は、抽出指令生成部236(図18)から出力される抽出指令(抽出位置)が入力されるとともに、当該抽出位置の情報を1枚の画像合成処理に要する時間だけ遅延させる。これは、時間的に隣接する画像合成処理の間で、部分画像IMG2の抽出位置を比較するためである。
ベクトル減算器2372は、遅延素子2371からの出力と、抽出指令生成部236からの抽出位置との間のベクトル差分を算出する。なお、ベクトル減算器2372には、少なくとも入力画像IMG1の2次元の座標値が抽出位置として入力されるので、それぞれの座標値に含まれる各成分同士の差分を計算することで、ベクトル差分が算出される。
評価部2373は、ベクトル減算器2372で算出されるベクトル差分の基づいて、異常の有無を判断する。典型的には、ベクトル減算器2372で算出されるベクトル差分のいずれかの成分が「負」値となった場合には、異常であると判断される。
[E9.動き追従処理(モデル登録型)における撮像部の調整]
図16に示すように、撮像部8により撮像された画像上に表示されるガイド枠419を参照して、参照画像REFとして抽出すべき領域416(本実施の形態では、部分画像IMG2として抽出される大きさと同じ)をユーザが容易に設定する方法について例示したが、このガイド枠419を参照することで、撮像部8の視野調整も容易化する。
図26は、この発明の実施の形態に従う視野調整中における画面表示例を示す図である。図27は、この発明の実施の形態に従う各種調整操作を説明するための図である。
撮像部8の視野調整を行う場合には、画像表示エリア412にガイド枠419を表示させるとともに、画像表示エリア412に表示される被測定物のワーク2の大きさがガイド枠419の大きさと比較して適切となるように、撮像部8の位置などを調整する。なお、このとき画像表示エリア412には、所定の露光条件で撮像部8が連続的に撮像する画像をリアルタイムで表示するようにするのが好ましい。
あるセッティングにおいて、撮像部8によって撮像された画像が図26(a)のように表示されたとすると、ガイド枠419に対してワーク2の大きさが小さすぎるので、撮像部8の視野をより狭くすることになる。一方、図26(c)のようにガイド枠419をはみ出してワーク2が表示されたとすると、ガイド枠419に対してワーク2の大きさが大きすぎるので、撮像部8の視野をより広くすることになる。
そして、図26(b)に示すような、ガイド枠419に対して、ワーク2が適度な大きさで表示されるようになるまで、撮像部8の視野が調整される。
この撮像部8の視野調整の方法としては、撮像部8が単焦点レンズであるような場合には、図27(a)に示すように、ワーク2に対する撮像部8の距離を調整することで、視野調整が行なわれる。また、ズームレンズを有する撮像部8#を用いる場合には、図27(b)に示すように、撮像部8#にズームレンズを駆動するための指令を与えることで、視野調整が行なわれる。
なお、図27に示すように、必要に応じて、トリガ信号の発生タイミングを調整するために、光電センサの取付位置を調整してもよい。
[E10.動き追従処理(モデル登録型)における全体処理手順]
図28は、この発明の実施の形態に従う画像処理装置における全体処理(モデル登録型)を示すフローチャートである。図28に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。なお、初期モードは「設定モード」であるとする。
図28を参照して、CPU105は、モード切替え指令を受付けたか否かを判断する(ステップS100)。モード切替え指令を受付けていない場合(ステップS100においてNOの場合)には、CPU105は、設定モード画面を表示する(ステップS102)。続いて、設定モード画面上の「HDR設定」タブ410が選択されたか否かを判断する(ステップS104)。設定モード画面上の「HDR設定」タブ410が選択された場合(ステップS104においてYESの場合)には、CPU105は、合成処理設定サブルーチンを実行する(ステップS106)。
一方、設定モード画面上の「HDR設定」タブ410が選択されていない場合(ステップS104においてNOの場合)には、CPU105は、設定モード画面上の「動き追従設定」タブ411が選択されたか否かを判断する(ステップS108)。設定モード画面上の「動き追従設定」タブ411が選択された場合(ステップS108においてYESの場合)には、CPU105は、動き追従(モデル登録型)設定サブルーチンを実行する(ステップS110)。そして、処理はリターンする。
これに対して、モード切替え指令を受付けた場合(ステップS100においてYESの場合)には、CPU105は、「稼動モード」(モデル登録型)へ移行する(ステップS112)。そして、図32に示す処理が実行される。
(合成処理設定サブルーチン)
図29は、図28に示す合成処理設定サブルーチンにおける処理を示すフローチャートである。図29に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図29を参照して、CPU105は、撮像部8に設定可能なすべての露光時間・撮像回数でワーク2を撮像する(ステップS200)。そして、CPU105は、必要な回数の撮像が完了したか否かを判断する(ステップS202)。必要な回数の撮像が完了していない場合(ステップS202においてNOの場合)には、CPU105は、ステップS200の処理を繰返す。
必要な回数の撮像が完了している場合(ステップS202においてYESの場合)には、CPU105は、画像合成処理サブルーチン(設定モード)を実行する(ステップS204)。この画像合成処理サブルーチン(設定モード)の実行により、撮像により取得された複数の入力画像から合成画像が生成される。そして、CPU105は、生成した合成画像をモニタ102などに表示する(ステップS206)。
続いて、CPU105は、生成された合成画像に含まれる合成輝度Eiに基づいて、ヒストグラムを生成する(ステップS208)。
続いて、CPU105は、ユーザにより、「明るさ」上下限範囲の設定が入力されたか否かを判断する(ステップS210)。「明るさ」上下限範囲の設定が入力されていない場合(ステップS210においてNOの場合)には、入力されるまで待つ。
「明るさ」上下限範囲の設定が入力された場合(ステップS210においてYESの場合)には、CPU105は、入力された「明るさ」上下限範囲をカバーするように、撮像部8による露光時間および撮像回数を含む合成処理設定を決定する(ステップS212)。そして、処理は図28のメインフローに戻る。
(画像合成処理サブルーチン(設定モード))
図30は、図29に画像合成処理サブルーチン(設定モード)における処理を示すフローチャートである。図30に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図30を参照して、CPU105は、図13に示す設定モード画面400を表示する(ステップS300)。続いて、CPU105は、座標位置iを初期値(i=1)に設定し(ステップS302)、撮像された複数の入力画像の座標位置iに対応するそれぞれの画素の色情報および輝度を取得する(ステップS304)。
続いて、CPU105は、複数の入力画像の座標位置iに対応するそれぞれの画素の輝度に基づいて、座標位置iの合成輝度Eiを算出し(ステップS306)、さらに、ユーザ設定された、「明るさ」上下限範囲に基づいて、合成輝度Eiから階調値Yiを算出する(ステップS308)。
同様に、CPU105は、複数の入力画像の座標位置iに対応するそれぞれの画素の輝度および色情報に基づいて、座標位置iの合成色情報(ri,gi,bi)を算出する(ステップS310)。
なお、ステップS306およびS308の処理と、ステップS310の処理とを並列的に実行してもよい。
さらに、CPU105は、算出した階調値Yiを座標位置iの合成色情報(ri,gi,bi)に乗じることで、合成画像の座標位置iの座標における絶対的な色情報(Ri,Gi,Bi)を算出する(ステップS312)。
そして、CPU105は、座標位置iが入力画像に含まれる最後の座標であるか否かを判断する(ステップS314)。座標位置iが入力画像に含まれる最後の座標でない場合(ステップS314においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算して(ステップS316)、ステップS304以下の処理を繰返す。
一方、座標位置iが入力画像に含まれる最後の座標である場合(ステップS314においてYESの場合)には、CPU105は、各座標位置における絶対的な色情報(Ri,Gi,Bi)を含む合成画像を出力する(ステップS318)。そして、処理はリターンする。
(動き追従設定サブルーチン)
図31は、図28に示す動き追従設定(モデル登録型)サブルーチンにおける処理を示すフローチャートである。図31に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図31を参照して、CPU105は、図14に示す設定モード画面402を表示する(ステップS400)。続いて、CPU105は、動き追従チェックボックス451がチェックされているか否かを判断する(ステップS402)。動き追従チェックボックス451がチェックされていない場合(ステップS402においてNOの場合)には、処理は図28のメインフローに戻る。
一方、動き追従チェックボックス451がチェックされている場合(ステップS402においてYESの場合)には、CPU105は、領域設定ボタン453が選択されたか否かを判断する(ステップS404)。領域設定ボタン453が選択された場合(ステップS404においてYESの場合)には、CPU105は、図15に示す領域設定画面404を表示する(ステップS406)。そして、CPU105は、参照画像REFとして抽出すべき領域416の大きさおよび位置を受付ける(ステップS408)。
領域設定ボタン453が選択されていない場合(ステップS404においてNOの場合)、もしくはステップS408の実行後、CPU105は、ガイド表示ボタン454が選択されたか否かを判断する(ステップS410)。ガイド表示ボタン454が選択された場合(ステップS410においてYESの場合)には、CPU105は、図29に示すステップS212において決定された合成処理設定における撮像時間、およびユーザ入力されたライン速度・領域実寸・移動方向の値に基づいて、当該合成処理設定を満足できる最大範囲の大きさを示すガイドの長さを算出する(ステップS412)。さらに、CPU105は、この算出されたガイド長さに応じて、表示中の画像上にガイド枠419を表示する(ステップS414)。
ガイド表示ボタン454が選択されていない場合(ステップS410においてNOの場合)、もしくはステップS414の実行後、CPU105は、ライン速度入力ボックス457へ数値が入力されたか否かを判断する(ステップS416)。ライン速度入力ボックス457へ数値が入力された場合(ステップS416においてYESの場合)には、CPU105は、入力された数値の妥当性を検証した後、ライン速度の設定値として格納する(ステップS418)。
ライン速度入力ボックス457へ数値が入力されていない場合(ステップS416においてNOの場合)、もしくはステップS418の実行後、CPU105は、ワークサイズ入力ボックス458へ数値が入力されたか否かを判断する(ステップS420)。ワークサイズ入力ボックス458へ数値が入力された場合(ステップS420においてYESの場合)には、CPU105は、入力された数値の妥当性を検証した後、ワークサイズの設定値として格納する(ステップS422)。
ワークサイズ入力ボックス458へ数値が入力されていない場合(ステップS420においてNOの場合)、もしくはステップS422の実行後、CPU105は、ライン移動方向チェックボックス群459のいずれかがチェックされたか否かを判断する(ステップS424)。ライン移動方向チェックボックス群459のいずれかがチェックされた場合(ステップS424においてYESの場合)には、CPU105は、チェックされたチェックボックスに対応する方向をライン移動方向の設定値として格納する(ステップS426)。
ライン移動方向チェックボックス群459のいずれかがチェックされていない場合(ステップS424においてNOの場合)、もしくはステップS426の実行後、処理は図28のメインフローに戻る。
(稼動モード)
図32は、この発明の実施の形態に従う画像処理装置における「稼動モード」(モデル登録型)における処理を示すフローチャートである。図32に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図32を参照して、CPU105は、図17に示す稼動モード画面300を表示する(ステップS500)。続いて、CPU105は、光電センサからトリガ信号を受信したか否かを判断する(ステップS502)。すなわち、対象のワーク2が撮像部8の視野内に到達したか否かが判断される。光電センサからトリガ信号を受信していない場合(ステップS502においてNOの場合)には、ステップS502の処理を繰返す。
光電センサからトリガ信号を受信した場合(ステップS502においてYESの場合)には、CPU105は、図29に示すステップS212において決定された合成処理設定に従う露光時間でワーク2を撮像する(ステップS504)。続いて、CPU105は、撮像した露光時間に対応する参照画像を読出し(ステップS506)、読出した参照画像に基づいて入力画像に対してサーチ処理を行う(ステップS508)。
さらに、CPU105は、サーチ処理が成功したか否かを判断する(ステップS510)。サーチ処理が成功しなかった場合(ステップS510においてNOの場合)には、以後の処理は中断し、処理はステップS518へ進む。
サーチ処理が成功した場合(ステップS510においてYESの場合)には、CPU105は、サーチ処理によって特定した参照画像の位置に基づいて、対象の入力画像から部分画像を抽出する(ステップS512)。さらに、CPU105は、合成処理設定に含まれるすべての撮像が終了したか否かを判断する(ステップS514)。合成処理設定に含まれるすべての撮像が終了していない場合(ステップS514においてNOの場合)には、ステップS504以降の処理が繰返される。なお、図21を用いて説明したように、ステップS504の処理と、ステップS506〜S512の処理とを並列的に実行してもよい。
合成処理設定に含まれるすべての撮像が終了した場合(ステップS514においてYESの場合)には、抽出されたそれぞれの部分画像の位置に基づいて、異常発生の有無を判断する(ステップS516)。異常発生と判断された場合(ステップS516においてYESの場合)には、CPU105は、エラーをモニタ102に表示する(ステップS518)。そして、処理は図28のメインフローに戻る。
一方、異常発生が無いと判断された場合(ステップS516においてNOの場合)には、CPU105は、画像合成処理サブルーチン(稼動モード)を実行する(ステップS520)。この画像合成処理サブルーチン(稼動モード)の実行により、複数の入力画像からそれぞれ抽出された複数の部分画像に基づく合成画像が生成される。さらに、CPU105は、生成した合成画像をモニタ102に表示する(ステップS522)。
続いて、CPU105は、生成された合成画像に基づいて検査計測処理を実行する(ステップS524)。なお、検査計測処理の一例としては、たとえば、予め登録された画像パターンに一致する部分を探索するサーチ処理や、ワークのエッジを検出してエッジ間の距離を計測するエッジスキャン処理などが挙げられる。
最終的に、CPU105は、その検査計測処理の結果をモニタ102などに表示する(ステップS526)とともに、PLCなどの外部装置へ出力する(ステップS528)。そして、処理は図28のメインフローに戻る。
(画像合成処理サブルーチン(稼動モード))
図33は、図32に示す画像合成処理サブルーチン(稼動モード)における処理を示すフローチャートである。図33に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図33を参照して、CPU105は、座標位置iを初期値(i=1)に設定し(ステップS600)、撮像された複数の部分画像の座標位置iに対応するそれぞれの画素の色情報および輝度を取得する(ステップS602)。
続いて、CPU105は、複数の部分画像の座標位置iに対応するそれぞれの画素の輝度に基づいて、座標位置iの合成輝度Eiを算出し(ステップS604)、さらに、ユーザ設定された、「明るさ」上下限範囲に基づいて、合成輝度Eiから階調値Yiを算出する(ステップS606)。
同様に、CPU105は、複数の部分画像の座標位置iに対応するそれぞれの画素の輝度および色情報に基づいて、座標位置iの合成色情報(ri,gi,bi)を算出する(ステップS608)。
さらに、CPU105は、算出した階調値Yiを座標位置iの合成色情報(ri,gi,bi)に乗じることで、合成画像の座標位置iの座標における絶対的な色情報(Ri,Gi,Bi)を算出する(ステップS610)。
そして、CPU105は、座標位置iが部分画像に含まれる最後の座標であるか否かを判断する(ステップS612)。座標位置iが部分画像に含まれる最後の座標でない場合(ステップS612においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算して(ステップS614)、ステップS602以下の処理を繰返す。
一方、座標位置iが部分画像に含まれる最後の座標である場合(ステップS612においてYESの場合)には、CPU105は、各座標位置における絶対的な色情報(Ri,Gi,Bi)を含む合成画像を出力する(ステップS616)。そして、処理はリターンする。
[E11.動き追従処理(モデル登録型)を採用した場合の作用効果]
この発明の実施の形態によれば、被測定物であるワークを複数回撮像してダイナミックレンジを拡大した合成画像を生成する場合において、それぞれ取得される入力画像からワークの移動に応じた領域を抽出して、合成画像が生成される。そのため、ワークが搬送ライン上を移動する場合であっても、生成された合成画像における画像ずれの発生を抑制できる。
また、この発明の実施の形態によれば、動き追従処理に向けた、視覚センサシステム1の各部分の配置位置を含む各種設定を行う際には、撮像部で撮像された基準ワークなどの画像上にガイド枠が表示される。このガイド枠は、合成画像として出力することが可能な最大範囲を示す。このようなユーザフレンドリな表示を行うことで、知識の少ないユーザであっても、合成画像の生成に用いる部分画像の大きさや撮像部の視野などを容易かつ適切に設定することができる。
また、この発明の実施の形態によれば、複数の異なる露光条件でワークを撮像して得られるそれぞれの入力画像に対して、動き追従処理(サーチ処理)を行うための参照画像(もしくは、参照情報)が、それぞれの露光条件の別に登録される。それぞれの露光条件下で撮像された入力画像の間では、それぞれに現れる特徴も異なったもとなるが、本実施の形態のように、露光条件別に参照情報を登録することで、より効率的なサーチ処理を行うことができる。
さらに、上述のような露光条件別の参照画像(もしくは、参照情報)の登録は、ユーザが基準ワークを撮像して得られる入力画像上で、参照画像とすべき領域を1回だけ指定することで完了されるので、ユーザに煩わしさを与えることがない。
[E12.動き追従処理(モデル登録型)についての第1変形例]
上述の実施の形態に従う画像処理装置では、基準ワークを撮像した画像そのものを参照画像REFとして予め登録する構成について例示した。このような参照画像そのものに代えて、あるいは参照画像とともに、基準ワークの特徴情報を登録するようにしてよい。このような特徴情報に基づいてサーチ処理を行うことで、サーチ処理に要する時間をより短縮することもできる。
図34は、この発明の実施の形態に従う動き追従処理(モデル登録型)についての第1変形例に対応する参照画像登録部231#のより詳細な制御構造を示す機能ブロック図である。なお、この参照画像登録部231#は、図18に示す参照画像登録部231に対応する。
図34を参照して、参照画像登録部231#は、入力画像選択部2311と、抽出部2312と、特徴情報取得部2313とを含む。
入力画像選択部2311は、画像メモリ204a〜204hにそれぞれ格納される基準ワークを撮像することで取得される入力画像IMG3を選択的に読出し、抽出部2312へ出力する。抽出部2312は、入力画像選択部2311から受けた入力画像IMG3から、ユーザによって指定された、参照画像REFとして抽出すべき領域(図16の領域416に相当)を抽出する。そして、抽出部2312は、この抽出した領域の画像を特徴情報取得部2313へ出力する。
特徴情報取得部2313は、抽出部2312から受けた画像から、サーチ処理に用いるための特徴情報を取得する。この特徴情報としては、エッジパターンやエッジ位置などを含む。そして、特徴情報取得部2313は、この取得した特徴情報を対応する露光条件と対応付けて格納する。
稼動モードにおいては、この露光条件と対応付けて格納された特徴情報が読出され、読出された特徴情報に基づいてサーチ処理が実行される。
その他の構造および制御構造などについては、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
なお、上述の実施の形態では、基準ワークを撮像することで取得される入力画像のうち、参照画像REFとして抽出すべき領域をユーザが設定する構成について例示したが、本第1変形例と同様に、この参照画像REF自体の抽出についても、特徴情報などに基づいて、自動的に抽出されるようにしてもよい。
本第1変形例によれば、サーチ処理をより効率的、かつ短時間に行うことができる。
[E13.動き追従処理(モデル登録型)についての第2変形例]
上述の実施の形態においては、基準ワークを撮像して取得される入力画像IMG3のうち参照画像REFとして登録される領域の大きさを、画像合成処理に用いられる部分画像IMG2の大きさと同一とする場合について例示した。しかしながら、サーチ処理に用いる参照画像REFの大きさおよび位置と、実際に出力されるべき合成画像の大きさおよび位置とは必ずしも一致するとは限らない。
たとえば、ワーク表面のキズ検査などを行う場合を考えると、検査対象の部分は濃淡のない鏡面などであることもある。このような場合には、検査対象の部分の参照画像に基づくサーチ処理がうまく実行できないことも多いと考えられる。そこで、検査対象ではない他の部分の付されている模様などを参照画像として登録しておき、動き追従処理を行うことが好ましい場合もある。
従って、以下では、基準ワークを撮像して取得される入力画像IMG3から参照画像REFとして抽出される領域と、合成画像を生成するために入力画像IMG1からそれぞれ抽出される部分画像IMG2の大きさとを独立に設定可能な構成について例示する。
図35は、この発明の実施の形態に従う動き追従処理(モデル登録型)についての第2変形例に係る設定を行うための設定モード画面402Aを示す図である。
図35に示す設定モード画面402Aは、図14に示す設定モード画面402において、動き追従設定入力エリア450に代えて動き追従設定入力エリア450Aを表示するようにしたものに相当する。動き追従設定入力エリア450Aは、動き追従設定入力エリア450において、領域設定ボタン453に代えて、モデル設定ボタン455および合成領域設定ボタン456を含むようにしたものである。その他のボタン配列などについては、図14に示す設定モード画面402と同様であるので、詳細な説明は繰返さない。
モデル設定ボタン455は、基準ワークを撮像して取得される入力画像IMG3から参照画像REFとして抽出される領域の設定を受付ける。より具体的には、モデル設定ボタン455が選択されると、図36に示すような領域設定画面406が表示される。この領域設定画面406では、上述した図15に示す領域設定画面404と同様の手順によって、ユーザは、基準ワークを撮像して取得される入力画像IMG3から参照画像REFとして抽出される領域418を設定する。
再度図35を参照して、合成領域設定ボタン456が選択されると、図15と同様の設定モード画面402が表示され、ユーザは、合成画像を生成するために入力画像IMG1からそれぞれ抽出される部分画像IMG2の大きさを設定する。
さらに、それぞれの領域が設定されると、両者の間の相対的な位置関係についても登録される。この相対的な位置関係は、サーチ処理によって、入力画像IMG1における参照画像REFに対応する位置が特定された後、合成画像を生成するためにいずれの領域を抽出するのかを判断するために用いられる。
その他の構造および制御構造などについては、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
本第2変形例によれば、多種多様なワークの検査や計測に対応することができる。
[F1.動き追従処理(逐次抽出型)の概要]
本実施の形態に従う動き追従処理(逐次抽出型)においては、複数の露光条件で複数回撮像を行うことにより得られる入力画像の組に対して、ある入力画像内の予め設定された領域を目的のワーク2(特定の被測定物)を示す参照画像として抽出し、当該抽出された参照画像を後続して取得される入力画像内で探索することにより、当該後続の入力画像における目的のワーク2の位置を特定する。すなわち、本実施の形態に従う動き追従処理(逐次抽出型)においては、撮像部8により順次撮像される画像に対して、モデル抽出およびモデル探索が動的に逐次実行される。
図37は、この発明の実施の形態に従う動き追従処理(逐次抽出型)の概要を説明するための図である。なお、図37には、説明を簡素化するために、3枚の入力画像に基づいて、1枚の合成画像が生成される場合について例示する。この例では、一連の撮像によって、入力画像IMG1_1,IMG1_2,IMG1_3の順に画像が得られるとする。なお、入力画像IMG1_1,IMG1_2,IMG1_3は、露光時間が単調に短くなるように露光条件が設定されているものとする。
図37(a)を参照して、入力画像IMG1_1に対して、予め設定された領域が参照画像(パターン1)として抽出される。すなわち、当該領域が目的のワーク2を示す参照画像として設定される。そして、この先に抽出されているパターン1を用いて、入力画像IMG1_2内でサーチ(探索)処理を行うことによって、入力画像IMG1_2における目的のワーク2の位置を特定するとともに、当該特定したワーク2の位置に応じて、入力画像IMG1_2から新たな参照画像(パターン2)を抽出する。
このとき、後段の画像合成処理の前処理として、一連の複数回撮像によって取得される入力画像の組について、最初に取得される入力画像内の目的のワーク2の位置を基準として、後続の入力画像について位置合わせが行われる。すなわち、入力画像IMG1_2内の目的のワーク2の位置に応じて、入力画像IMG1_1と入力画像IMG1_2との間の相対的な位置関係が決定される。典型的には、図37(a)に示すように、入力画像IMG1_1を基準として、入力画像IMG1_2の(入力画像IMG1_1に対する相対的な)位置調整が行われる。
図37(b)を参照して、続いて、後続の入力画像IMG1_3が取得されると、当該後続の入力画像IMG1_3に対して、直近に抽出されたモデル(この場合には、入力画像IMG1_2から抽出されたパターン2)を用いてサーチ処理を行うことによって、入力画像IMG1_3における目的のワーク2の位置を特定する。そして、上述の入力画像IMG1_2と同様に、入力画像IMG1_1を基準として、入力画像IMG1_3の(入力画像IMG1_1に対する相対的な)位置調整が行われる。
以下、同様の処理が一連の撮像によって得られる入力画像の組に対して順次実行される。
このように、撮像部8の撮像により順次取得される入力画像に対して、動的にサーチ処理が繰返されるので、目的のワーク2を示す参照画像(パターン)または目的のワーク2の特徴情報を予め登録しておく必要がない。
言い換えれば、動き追従処理(逐次抽出型)においては、撮像部8による一連の複数回撮像において、1番目に取得される入力画像内の予め設定された領域を目的のワーク2を示す1番目の参照画像(パターン)として抽出する。なお、最初に取得される入力画像から、目的のワーク2を示す参照画像(パターン)として抽出する範囲は、後述するように、ユーザによって設定される。そして、当該1番目のパターンを2番目に取得される入力画像内で探索することにより、当該2番目に取得される入力画像における目的のワーク2の位置を特定する。さらに、当該2番目に取得される入力画像内において探索された当該1番目のパターンの位置に応じた領域を目的のワーク2を示す2番目のパターンとして抽出する。さらに、当該2番目のパターンを3番目に取得される入力画像内で探索することにより、当該3番目に取得される入力画像における目的のワーク2の位置を特定する。
上述したように、一連の撮像によって得られる入力画像の組に対して、パターン抽出と抽出したパターンを用いたサーチ処理が順次実行される。そのため、先に取得された入力画像から抽出される目的のワーク2を示すパターンは、後続の入力画像に含まれる目的のワーク2の画像と、明るさなどの画像処理上で使用されるパラメータについて、近似している必要がある。そのため、本実施の形態に従う動き追従処理(逐次抽出型)においては、複数の露光条件の間での相違量がなるべく少なくなるように、一連の撮像が行われる。典型的には、露光条件の典型例である露光時間についてみれば、図37に示すように、「1/1000秒」→「1/2000秒」→「1/4000秒」というように、露光時間が単調減少するように一連の露光条件が設定されることが好ましい。あるいは、「1/4000秒」→「1/2000秒」→「1/1000秒」というように、露光時間が単調増加するように一連の露光条件が設定されてもよい。
言い換えれば、「1/1000秒」→「1/4000秒」→「1/2000秒」というように露光条件を設定すると、「1/1000秒」の露光時間での撮像によって得られる入力画像と、「1/4000秒」の露光時間での撮像によって得られる入力画像との間では、画像に含まれる「明るさ」が相対的に大きく異なるようになる。そのため、「1/1000秒」の露光時間での撮像によって得られる入力画像から抽出されたパターンを用いて、「1/4000秒」の露光時間での撮像によって得られる入力画像内でサーチをすると、サーチ精度(入力画像間の位置合わせ精度)が低下し得る。
したがって、露光時間をその値の大きさの順序に従って並べた順序で、一連の撮像を行うことが好ましい。このように露光条件を設定することで、サーチ精度(入力画像間の位置合わせ精度)を向上させることができる。
図38は、この発明の実施の形態に従う動き追従処理(逐次抽出型)の全体処理概要を説明するための図である。
図38を参照して、撮像部8が露光時間t1で撮像することで取得される入力画像(最初の入力画像)に対して、予めユーザ設定されているモデル領域がパターンとして抽出される。そして、この抽出されたパターンを用いて、撮像部8が露光時間t2で撮像することで取得される入力画像(2番目の入力画像)に対して、サーチ処理が実行される。そして、このサーチ処理の結果に従って、2番目の入力画像から新たなパターンが抽出(パターンの更新)されるとともに、2番目の入力画像に対する位置調整が行われる。
以下同様にして、一連の撮像によって得られる入力画像の組に対して、サーチ処理およびパターン抽出が逐次的に実行されると、位置調整後の入力画像の組が得られる。
その後、この位置調整後の入力画像の組に対して、画像合成処理が実行される。なお、入力画像の間で相対的な位置調整が行われるので、図38に示すように、画像合成処理に用いることができない範囲(図38の黒ベタの範囲)が生じる。すなわち、実質的には、入力画像の組のうち、画像合成処理に用いられる範囲の画像(部分画像)が抽出されることになる。
そして、画像合成処理によって得られた合成画像に基づく表示処理が実行される。
[F2.動き追従処理(逐次抽出型)における画像合成領域の低減]
上述の図38に示すように、撮像部8の視野範囲内に対する目的のワーク2の移動方向に沿った長さについては、一連の複数回撮像に要する時間とワーク2の移動速度との関係に応じて定まる範囲まで短くなる。一方、ワーク2の移動方向とは直交する方向には、入力画像の位置調整が行われないので、画像合成処理の対象となってしまう。
そこで、本実施の形態に従う画像処理装置では、入力画像のうち合成画像の生成対象とする領域を、ユーザによって設定された方向および領域に限定する機能を搭載していてもよい。すなわち、入力画像のうち合成画像の生成対象とする領域を、目的のワーク2を含む合成画像を生成できる領域に限定することで、画像合成処理に要する時間を低減することができる。これにより、1枚の合成画像を生成するために要する時間を短縮でき、タクトタイムの向上などを実現することができる。以下、このような画像合成領域を低減するための機能について、図39〜図42を参照して、説明する。
図39および図40は、この発明の実施の形態に従う動き追従処理(逐次抽出型)における画像合成領域の低減処理を提供する画面表示例を示す図である。図41は、この発明の実施の形態に従う動き追従処理(逐次抽出型)における画像合成領域の設定操作中の画面表示例を示す図である。図42は、この発明の実施の形態に従う動き追従処理(逐次抽出型)において画像合成領域が低減されている場合に表示される「稼動モード」における画面表示例を示す図である。
動き追従処理(逐次抽出型)における画像合成領域の低減処理に係るユーザインターフェイスとしては、図39および図40に示すような設定モード画面403が提供される。この設定モード画面403は、図14に示す設定モード画面402において、多重表示チェックボックス461が追加されたものに相当する。より具体的には、この多重表示チェックボックス461がチェックされると、ライン移動方向チェックボックス群459におけるチェック内容に応じた方向に、画像表示エリア412に領域調整バーが表示される。すなわち、原則として、ユーザがライン移動方向チェックボックス群459をチェックすることで設定するワーク2の移動方向とは直交する方向に沿って、その領域を調整できるように領域調整バーが表示される。
図39(a)に示す例では、ライン移動方向チェックボックス群459に含まれる4つのチェックボックスのうち、ワーク2が紙面上方向に向かって移動することが設定されているので、紙面左右方向に画像合成領域を調整するための、画像表示エリア412上に領域調整バー462および463がオーバレイ表示される。これらの領域調整バー462および463は、ユーザ操作に従って、紙面左右方向にその位置を変更可能になっており、領域調整バー462と領域調整バー463とで囲まれる範囲が、画像合成領域となる。すなわち、ユーザは、マウス操作などによって、領域調整バー462および/または領域調整バー463を任意に操作することで、図39(b)に示すような画像合成領域を設定できる。
同様に、図40(a)に示す例では、ライン移動方向チェックボックス群459に含まれる4つのチェックボックスのうち、ワーク2が紙面右方向に向かって移動することが設定されているので、紙面上下方向に画像合成領域を調整するための、画像表示エリア412上に領域調整バー464および465がオーバレイ表示される。これらの領域調整バー464および465は、ユーザ操作に従って、紙面上下方向にその位置を変更可能になっており、領域調整バー464と領域調整バー465とで囲まれる範囲が、画像合成領域となる。すなわち、ユーザは、マウス操作などによって、領域調整バー464および/または領域調整バー465を任意に操作することで、図40(b)に示すような画像合成領域を設定できる。
上述の図39および図40に示すように、ユーザが領域調整バーを操作して画像合成領域を設定した後、ワーク2についての一連の撮像を試験的に行う(テストラン)ことでその妥当性を評価することもできる。
すなわち、図39または図40に示す設定モード画面403において、多重表示チェックボックス461が追加されていると、図41に示すように、一連の撮像によって取得された入力画像の組が画像表示エリア412に重畳して表示される。ユーザは、この図41に示すような入力画像の重畳表示を参照して、領域調整バーを適切な位置に設定することで、目的のワーク2が写っている必要十分な範囲を画像合成領域に設定することができる。
なお、図41からわかるように、ワーク2の移動速度および/または撮像間隔によっては、一連の連続撮像の間にワーク2が移動する距離は変動する。そのため、画像合成領域としては、入力画像の一部に設定される矩形状ではなく、図39および図40に示すような、ワーク2の移動方向に沿った全長を含む領域とすることが好ましい。
上述のように画像合成領域が設定されると、「稼動モード」においては、図42に示すような画面が表示される。すなわち、図42に示す稼動モード画面304においては、領域調整バーによって設定された領域についての合成画像が表示されるとともに、それ以外の範囲は、画像合成処理の対象とはされず、無効な領域であることが表示される。典型的には、画像合成領域外の領域は、予め定められた黒色や白色といったベタ塗りの状態で表示される。
上述のように、画像合成領域を低減することで、画像合成処理の対象となる画像のデータ量が削減され、これに伴って、処理量(計算量)が削減されるため、全体の処理が高速化される。
なお、上述の図39〜図41においては、ワーク2が紙面縦方向または紙面横方向のいずれか一方に移動する場合について例示したが、紙面斜め方向に移動する場合などには、ライン移動方向チェックボックス群459に含まれる4つのチェックボックスのうち、ワーク2の移動方向を示す2つの方向(たとえば、紙面左方向と紙面上方向)についてチェックを入れることで、当該ワーク2の移動方向に応じた向きに、一組の領域調整バーが表示されるようにしてもよい。
[F3.動き追従処理(逐次抽出型)におけるモデル領域設定]
図38に示す一連の撮像の1番目に取得される入力画像からのパターンは、当該入力画像に対して予め設定されるモデル領域に従って抽出される。このパターン領域のユーザ設定は、上述の図15に示すような領域設定画面404を用いて行われる。このとき、上述した画像合成領域を低減するための機能によって、画像合成領域が低減されている場合には、この画像合成領域より大きな範囲をモデル領域に設定する必要がないと考えられる。すなわち、画像合成領域は、目的のワーク2についての合成画像の生成に必要十分な範囲に設定されるので、先に設定されている画像合成領域より大きな範囲をモデル領域、すなわち、目的のワーク2が存在する範囲として設定する必要性は低い場合が多い。
そこで、本実施の形態に従う画像処理装置は、上述の画像合成領域の低減処理と連動して、モデル領域を設定する機能を搭載していてもよい。これにより、ユーザから見れば、モデル領域の設定をより効率的に行うことができる。以下、このような画像合成領域と連動してモデル領域を設定するための機能について、図43および図44を参照して、説明する。
図43は、この発明の実施の形態に従う動き追従処理(逐次抽出型)におけるモデル領域の設定機能を提供する画面表示例を示す図である。図44は、この発明の実施の形態に従う動き追従処理(逐次抽出型)におけるモデル領域の設定機能による効果を説明するための図である。
図43(a)は、上述の図40に示す設定モード画面403において、予めモデル領域466が設定されている場合を示す。すなわち、ユーザは、図15に示す領域設定画面404上で操作を行うことで、画像表示エリア412に表示される入力画像に対して、モデル領域466を設定する。その後、上述の画像合成領域を低減するために、領域調整バー464および465が表示されているものとする。
この図43(a)に示す状態で、ユーザが領域調整バー464および/または領域調整バー465を操作して、画像合成領域を低減したとする。すると、この画像合成領域の紙面上下方向の長さの低減に伴って、モデル領域466も紙面上下方向にその長さが低減される。これにより、必要以上に大きな範囲をモデル領域466として抽出することを抑制できる。
すなわち、図44(a)に示すように、入力画像内に占めるワーク2の範囲が相対的に小さい場合には、領域調整バー464および465によって定義される合成画像領域を、ワーク2の範囲に対応させて処理の高速化を図ることが可能となる。図44(b)には、ワーク2の紙面上下方向の幅に対応して、合成画像領域が設定されている場合が示されている。
このとき、ワーク2の示す範囲より相対的に大きな範囲がモデル領域466に設定されている場合には、このモデル領域466についても、変更後の合成画像領域に応じたサイズに変更される。
なお、図43および図44においては、合成画像領域(領域調整バーによって定義される範囲)の一方の長さと、モデル領域466の対応する辺の長さとが一致する場合について例示したが、モデル領域466を合成画像領域より狭い範囲や広い範囲に自動的に設定するようにしてもよい。
上述のように、モデル領域を目的とするワークに応じた範囲に限定することで、抽出されるパターンに目的のワーク2以外の不要な情報が混入することを抑制でき、これにより、サーチ処理の精度を向上させることができる。また、抽出されるパターンの情報量が低減できるので、全体処理を高速化できる。
また、ユーザから見れば、モデル領域の設定をより効率的に行うことができる。
[F4.動き追従処理(逐次抽出型)におけるサーチ領域の効率的な設定]
上述したように、本実施の形態に従う動き追従処理(逐次抽出型)においては、先行の入力画像から抽出されたパターンを用いて、後続の入力画像内でサーチ処理が行われる。ところで、ワーク2は、移動しているので、後続の入力画像内に表れるワーク2の位置は、後続の入力画像内に表れるワーク2の位置に対して、ワーク2の移動方向に沿ってずれていることになる。そこで、このような入力画像内における目的のワーク2の位置変化に応じて、サーチ処理の対象とすべき領域(サーチ領域)を削減することで、サーチ処理に要する時間の短縮およびサーチ精度を向上させることができる。以下、このようなサーチ領域を効率的に設定するための機能について、図45および図46を参照して、説明する。
図45は、この発明の実施の形態に従う動き追従処理(逐次抽出型)におけるサーチ領域の効率的な設定機能を提供する画面表示例を示す図である。図46は、この発明の実施の形態に従う動き追従処理(逐次抽出型)におけるサーチ領域の効率的な設定機能による効果を説明するための図である。
図45は、画像表示エリア412上にサーチ領域が設定されている設定モード画面401を示す。この設定モード画面401においては、1番目に取得される入力画像についてのサーチ領域が入力画像の全体に設定されるとともに、2番目以降に取得される入力画像についてのサーチ領域は、連続する撮像タイミングの間におけるワーク2の移動量に応じて動的に設定される。すなわち、本機能においては、後続して取得される入力画像についてのサーチ処理を、ユーザにより操作に応じて設定された撮像部8の視野内におけるワーク2の移動速度と、ユーザにより設定された露光条件下において一連の入力画像を取得するために要する時間との積によって算出される移動量に応じた領域に限定して行う。
より具体的には、ユーザは、設定モード画面401のライン速度入力ボックス457に対して、ワーク2の移動速度を設定する。この移動速度としては、ユーザは、ワーク2を搬送する搬送ライン6の実測のライン速度(搬送速度)などを入力する。典型的には、実測のライン速度としては、物理的な移動速度である[mm/s]の単位が用いられる。
代替的に、撮像部8の視野におけるライン速度を用いてもよい。具体的には、撮像部8の視野において、ワーク2が単位時間当たりに移動する画素数である[pix/s]の単位を用いてもよい。なお、後述する本機能に係るサーチ領域の限定処理では、単位時間当たりに移動する画素数が必要となるので、ユーザがライン速度(搬送速度)を[mm/s]などの単位で入力した場合であっても、予め設定された、撮像部8の視野範囲に対応する物理的な長さと、当該視野範囲に含まれる画素数との関係から、[pix/s]の単位でのワーク2の移動速度が算出される。
また、ユーザは、ライン移動方向チェックボックス群459に含まれる4つのチェックボックスのうち、撮像部8の視野におけるワーク2の移動方向に対応する向きをチェックする。
すると、本実施の形態に従う画像処理装置は、予め設定されている撮像条件に基づいて、一連の連続撮像に係る撮像間隔(先行の撮像タイミングと後続の撮像タイミングとの差)を算出し、ユーザが設定したワーク2の移動速度にこの撮像間隔を乗じることで、ワーク2の移動量を算出する。そして、本実施の形態に従う画像処理装置は、元のサーチ領域(1番目)を、ワーク2の移動方向に沿って、この算出した移動量だけ短縮した領域を後続の入力画像についてのサーチ領域(2番目)として動的に決定する。以下同様にして、3番目以降に取得される入力画像についても、同様にサーチ領域が動的に決定される。
すなわち、図46(a)に示すように、入力画像内に占めるワーク2の範囲が相対的に小さい場合、および/または、誤サーチを生じ得る他のワークなどが写り込んでいる場合などには、図46(b)に示すように、サーチ領域を適切な範囲に限定することで、サーチ精度を向上させることができる。また、サーチ処理の対象となる画像(情報量)が低減できるので、サーチ処理自体を高速化できる。
なお、上述したようなサーチ領域の効率的な決定機能は、上述した、この発明の実施の形態に従う動き追従処理(モデル登録型)にも適用可能である。動き追従処理(モデル登録型)において適用する場合においても、ユーザは、ワーク2の移動速度およびワーク2の移動方向を設定するだけで、画像処理装置において連続する撮像間でのワーク2の移動量を算出できるので、一連の撮像によって得られる入力画像の組について、それぞれ適切な範囲をサーチ領域に設定できる。
[F5.合成画像領域、モデル領域、サーチ領域の関係]
上述した、合成画像領域、モデル領域、サーチ領域は、基本的には、互いに独立して設定可能である。
図47は、この発明の実施の形態に従う動き追従処理(逐次抽出型)における各領域を説明するための図である。
図47(a)には、入力画像に対して、モデル領域および合成画像領域が設定されている例を示す。上述したように、モデル領域は、合成画像領域の設定にリンクして設定されるが、常にこのような関係が成立しなくともよい。
たとえば、あるワーク上の特定の部分を検査しようとする場合において、本実施の形態に従う動き追従処理の精度を高めるために、当該検査対象の部分とは異なる部分に動き追従処理用のマーク(トラッキング用のマーク)を付与しておくような使用形態が想定される。この場合には、モデル領域としては、トラッキング用のマークが付与されている部分に設定される一方で、合成画像領域としては、検査対象の部分に設定される。
また、図47(b)には、入力画像に対して、モデル領域およびサーチ領域が設定されている例を示す。モデル領域およびサーチ領域についても、互いに独立して設定することができるが、原理的には、サーチ領域は、モデル領域より大きい範囲に設定される。なお、ワーク2の移動方向が特定の方向に定まっている場合には、合成画像領域の範囲にリンクして、サーチ領域を設定してもよい。
[F6.動き追従処理(逐次抽出型)における位置ずれ補正]
上述したように、本実施の形態に従う動き追従処理(逐次抽出型)においては、図37に示すように、入力画像内の目的のワーク2を基準として位置合わせが行われる。この位置合わせについて、連続する撮像タイミングの間におけるワーク2の移動量(理論値)に基づいて、その誤検出の監視および/または誤差の補正を行うことができる。
そこで、本実施の形態に従う画像処理装置は、動き追従処理(逐次抽出型)における位置ずれを補正する機能を搭載していてもよい。これにより、より安定して合成画像を生成することができる。以下、このような位置ずれの補正機能について、図48〜図50を参して、説明する。
図48は、この発明の実施の形態に従う動き追従処理(逐次抽出型)における位置ずれの補正機能の内容を説明するための図である。図49は、図48に対応する移動量の一例を示す図である。図50は、この発明の実施の形態に従う動き追従処理(逐次抽出型)における位置ずれの補正機能に係る機能ブロック図である。
図48(a)を参照して、たとえば、一連の複数回撮像によって、4枚の入力画像IMG1が順次取得されたとする。この入力画像IMG1に対して、サーチ処理が実行され、ワーク2の位置が特定されると、図48(b)に示すように、ワーク2を基準として位置合わせが行われる。以下の説明では、取得順序において隣接する2つの入力画像の間の相対的な位置ずれ量(ベクトル量)に着目する。
すなわち、図48(b)に示すように、1番目の入力画像を基準として(図48(b)では、1番目の入力画像の左上の頂点位置を基準点O1としている)、2番目の入力画像の位置ずれ量(符号521)が算出される。同様に、2番目の入力画像を基準として(図48(b)では、2番目の入力画像の左上の頂点位置を基準点O2としている)、3番目の入力画像の位置ずれ量(符号523)が算出される。また、3番目の入力画像を基準として(図48(b)では、3番目の入力画像の左上の頂点位置を基準点O3としている)、4番目の入力画像の位置ずれ量(符号523)が算出される。以下、同様にして、取得される一組に含まれる入力画像の間の位置ずれ量が算出される。
このように算出される位置ずれ量の各々は、対応する撮像タイミングの時間差に応じた、ワーク2の移動量に相当する。すなわち、1番目の入力画像が取得された撮像タイミングと、2番目の入力画像が取得された撮像タイミングとの時間差に、ワーク2の移動速度を乗じて得られる移動量が、1番目の入力画像と2番目の入力画像との間の位置ずれ量に相当する。そのため、この位置ずれ量の各々が、予想されるワーク2の移動量からずれた場合には、サーチ処理が失敗したと判断することができる。さらに、このような場合には、予想されるワーク2の移動量に応じて、位置ずれ量(対象の入力画像の調整位置)を補正することができる。
すなわち、本位置ずれの補正機能は、撮像部8による一連の複数回撮像において、入力画像内の目的のワーク2を基準として位置合わせを行う場合の、先行の入力画像と後続の入力画像との相対的な位置ずれ量が、ユーザによって設定される撮像部8の視野内におけるワーク2の移動速度と、ユーザによって設定される露光条件下において当該先行および後続の入力画像を取得するために要する時間との積によって算出される移動量から乖離している場合に、当該移動量と対応するように、当該先行の入力画像と当該後続の入力画像との相対的な位置関係を補正する。典型的には、算出される移動量が予め定められた値以上離れているか否かに基づいて、位置関係が補正される。
たとえば、図48(c)には、2番目の入力画像に対する3番目の入力画像の位置ずれ量が他の位置ずれ量より大きくなっており、誤検知であると判断できる。この図48(c)に対応する位置ずれ量の値を図49(a)に示す。
図49(a)を参照して、2番目の入力画像に対する3番目の入力画像(2→3)の位置ずれ量(x,y)=(40,20)となっており、他の入力画像間の位置ずれ量(x,y)=(24,0),(23,1),(24,0)と比較して、乖離していることがわかる。
本位置ずれの補正機能は、このような乖離に基づいて、サーチ処理の失敗を検出するとともに、誤検出であると判断された位置ずれ量を、図49(b)に示すような値に補正する。
以下、上述のような位置ずれの補正機能を具現化する方法として、(1)ワーク2の移動量を用いる方法と、(2)他の位置ずれ量についての統計値を用いる方法について説明する。
(1.ワークの移動量を用いる方法)
本方法では、ユーザが設定するワーク2の移動量および移動方向から、ワーク2が等速直線運動をしているとして、各撮像タイミングにおけるワーク2の移動量を推定する。そして、この推定されたワーク2の移動量を用いて、サーチ処理の失敗の有無、および、補正後の位置ずれ量を算出する。
図50(a)に具体的な処理ブロックの一例を示す。この処理ブロックでは、バッファ502が各入力画像についてのサーチ結果(ワーク2の位置を特定するための情報を含む)を順次格納する。続いて、位置ずれ量算出部504がこのバッファ502に格納されるサーチ結果に基づいて、入力画像間の相対的な位置ずれ量を算出する。この算出された位置ずれ量は、比較部506へ順次入力される。一方、ユーザが設定した露光条件に基づいて、時間算出部510が各撮像タイミングの間の時間差(撮像間隔)を算出する。すると、移動量算出部512が、ユーザが設定したワーク2の移動速度と時間算出部510によって算出された撮像間隔とを乗じて移動量の絶対値を算出するとともに、ユーザが設定したワーク2の移動方向に応じて、算出した移動量(ベクトル)を算出する。すなわち、移動量(絶対値)=(ワーク2の移動速度)×(撮像間隔)の関係に従って、ワーク2の移動量が算出される。この算出された移動量(ベクトル)は、(予想)移動量として比較部506および移動量算出部512へ入力される。
比較部506は、位置ずれ量算出部504から順次入力される位置ずれ量と、対応する(予想)移動量とを比較して、両者の間が乖離しているか否かを判断する。両者の間が乖離していなければ、位置ずれ量算出部504で算出された位置ずれ量がそのまま出力される。一方、両者の間が乖離している場合には、補正量算出部508が(予想)移動量を用いて補正量を算出する。すると、加算部514において、位置ずれ量算出部504で算出された位置ずれ量に補正量が加算され、補正後の位置ずれ量が出力される。
(2.他の位置ずれ量についての統計値を用いる方法)
本方法では、一連の複数回撮像によって得られる複数の入力画像について算出される位置ずれ量の統計値(典型的には、平均値)、もしくは、過去に実行された、一連の複数回撮像での実績値の統計値を用いて、サーチ処理の失敗の有無、および、補正後の位置ずれ量を算出する。
図50(b)に具体的な処理ブロックの一例を示す。この処理ブロックでは、図50(a)に示すブロック図に比較して、時間算出部510および移動量算出部512に代えて、順次算出される位置ずれ量を記憶するバッファ516と、平均値算出部518とが設けられている。バッファ516には、一連の複数回撮像が実行されるたびに算出される、位置ずれ量が順次記憶される。
平均値算出部518は、ある一連の複数回撮像において算出された位置ずれ量の平均値、および/または、複数回に亘って実行済の、同一の入力画像間についての位置ずれ量の平均値を算出する。すなわち、前者の平均値は、ある一連の複数回撮像について、1番目の入力画像と2番目の入力画像との間の位置ずれ量、2番目の入力画像と3番目の入力画像との間の位置ずれ量、3番目の入力画像と4番目の入力画像との間の位置ずれ量、…の平均値を意味する。これに対して、後者の平均値は、たとえば、一連の複数回撮像が繰り返し実行された場合において、1番目の入力画像と2番目の入力画像との間の位置ずれ量についての平均値を意味する。
そして、平均値算出部518において算出される平均値が、ワーク2についての(予想)移動量として使用される。
その他の処理については、図50(a)と同様であるので、詳細な説明は繰返さない。
[F7.動き追従処理(逐次抽出型)における全体処理手順]
図51は、この発明の実施の形態に従う画像処理装置における全体処理(逐次抽出型)を示すフローチャートである。図51に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。なお、初期モードは「設定モード」であるとする。
図51に示すフローチャートは、図28に示すモデル登録型に係る全体処理を示すフローチャートに比較して、ステップS112に代えて、ステップS113を実行するようにし、かつ、ステップS110に代えて、ステップS111を実行するようにしたものである。すなわち、ステップS111において、CPU105は、図52に示す動き追従(モデル登録型)設定サブルーチンを実行する。また、ステップS113において、CPU105は、「稼動モード」(逐次抽出型)へ移行する。そして、後述する図53のフローチャートに示す処理が実行される。その他のステップについては、図28と同様であるので、詳細な説明は繰返さない。
(動き追従設定サブルーチン)
図52は、図51に示す動き追従(逐次抽出型)設定サブルーチンにおける処理を示すフローチャートである。図52に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図52を参照して、CPU105は、図39および図40などに示す設定モード画面403を表示する(ステップS450)。続いて、CPU105は、動き追従チェックボックス451がチェックされているか否かを判断する(ステップS452)。動き追従チェックボックス451がチェックされていない場合(ステップS452においてNOの場合)には、処理は図51のメインフローに戻る。
一方、動き追従チェックボックス451がチェックされている場合(ステップS452においてYESの場合)には、CPU105は、領域設定ボタン453が選択されたか否かを判断する(ステップS454)。領域設定ボタン453が選択された場合(ステップS454においてYESの場合)には、CPU105は、図43などに示す設定モード画面403を表示する(ステップS456)。そして、CPU105は、1番目の入力画像から参照画像(パターン)として抽出すべきモデル領域466の範囲(大きさおよび位置)を受付ける(ステップS458)。
領域設定ボタン453が選択されていない場合(ステップS454においてNOの場合)、もしくはステップS458の実行後、CPU105は、ライン速度入力ボックス457へ数値が入力されたか否かを判断する(ステップS460)。ライン速度入力ボックス457へ数値が入力された場合(ステップS460においてYESの場合)には、CPU105は、入力された数値の妥当性を検証した後、ライン速度の設定値として格納する(ステップS462)。
ライン速度入力ボックス457へ数値が入力されていない場合(ステップS460においてNOの場合)、もしくはステップS462の実行後、CPU105は、ワークサイズ入力ボックス458へ数値が入力されたか否かを判断する(ステップS464)。ワークサイズ入力ボックス458へ数値が入力された場合(ステップS464においてYESの場合)には、CPU105は、入力された数値の妥当性を検証した後、ワークサイズの設定値として格納する(ステップS466)。
ワークサイズ入力ボックス458へ数値が入力されていない場合(ステップS464においてNOの場合)、もしくはステップS466の実行後、CPU105は、ライン移動方向チェックボックス群459のいずれかがチェックされたか否かを判断する(ステップS468)。ライン移動方向チェックボックス群459のいずれかがチェックされた場合(ステップS468においてYESの場合)には、CPU105は、チェックされたチェックボックスに対応する方向をライン移動方向の設定値として格納する(ステップS470)。
ライン移動方向チェックボックス群459のいずれかがチェックされていない場合(ステップS468においてNOの場合)、もしくはステップS470の実行後、多重表示チェックボックス461がチェックされているか否かを判断する(ステップS472)。多重表示チェックボックス461がチェックされていない場合(ステップS472においてNOの場合)には、処理は図51のメインフローに戻る。
一方、多重表示チェックボックス461がチェックされている場合(ステップS472においてYESの場合)には、CPU105は、ライン移動方向チェックボックス群459のチェック状態に応じて、設定モード画面403の画像表示エリア412上に、画像合成領域を定義するための領域調整バーを表示する(ステップS474)。そして、CPU105は、ユーザによって領域調整バーの位置が変更されたか否かを判断する(ステップS476)。ユーザによって領域調整バーの位置が変更された場合(ステップS476においてYESの場合)には、CPU105は、変更後の領域調整バーの位置に従って、画像合成領域を更新するとともに、モデル領域の範囲を連動して更新する(ステップS478)。ユーザによって領域調整バーの位置が変更されていない場合(ステップS476においてNOの場合)、もしくはステップS478の実行後、処理は図51のメインフローに戻る。
(稼動モード)
図53は、この発明の実施の形態に従う画像処理装置における「稼動モード」(逐次抽出型)における処理を示すフローチャートである。図53に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図53を参照して、CPU105は、図42に示すような稼動モード画面304を表示する(ステップS550)。続いて、CPU105は、光電センサからトリガ信号を受信したか否かを判断する(ステップS552)。すなわち、対象のワーク2が撮像部8の視野内に到達したか否かが判断される。光電センサからトリガ信号を受信していない場合(ステップS552においてNOの場合)には、ステップS552の処理を繰返す。
光電センサからトリガ信号を受信した場合(ステップS552においてYESの場合)には、CPU105は、図29に示すステップS212において決定された合成処理設定に従う1番目の露光時間でワーク2を撮像する(ステップS554)。そして、CPU105は、撮像により取得された入力画像のうち、予め設定されているモデル領域をパターンとして抽出する(ステップS556)。
続いて、CPU105は、図29に示すステップS212において決定された合成処理設定に従う次の露光時間でワーク2を撮像する(ステップS558)。続いて、CPU105は、サーチ領域の限定が有効化されているか否かを判断する(ステップS560)。サーチ領域の限定が有効化されている場合(ステップS560においてYESの場合)には、CPU105は、ユーザによって設定されているワーク2の移動速度および撮像間隔などに基づいて決定される範囲に、サーチ領域を限定する(ステップS562)。
サーチ領域の限定が有効化されていない場合(ステップS560においてNOの場合)、もしくはステップS562の実行後、CPU105は、直近の撮像によって得られた入力画像から抽出されているパターンについて、新たな取得された入力画像に対してサーチ処理を行う(ステップS564)。そして、CPU105は、サーチ結果から、入力画像内のワーク2の位置を特定するとともに、目的のワーク2を基準とした位置合わせが行われるように、取得した入力画像の相対位置を調整する(ステップS566)。続いて、CPU105は、サーチ結果に従って、取得した入力画像内からワーク2を示す新たなパターンを抽出する(ステップS568)。
その後、CPU105は、合成処理設定に含まれるすべての撮像が終了したか否かを判断する(ステップS570)。合成処理設定に含まれるすべての撮像が終了していない場合(ステップS570においてNOの場合)には、ステップS558以降の処理が繰返される。
合成処理設定に含まれるすべての撮像が終了した場合(ステップS570においてYESの場合)には、CPU105は、取得順序において隣接する2つの入力画像の間の相対的な位置ずれ量の各々について、サーチ処理失敗の有無判断、および、位置ずれ補正を行う(ステップS572)。続いて、CPU105は、位置調整後の一連の入力画像から、ユーザによって設定されている合成画像領域内の画像をそれぞれ抽出し(ステップS574)、この抽出した画像の組について、画像合成処理サブルーチン(稼動モード)を実行する(ステップS576)。この画像合成処理サブルーチン(稼動モード)の実行により、複数の入力画像から抽出されたそれぞれの画像に基づく合成画像が生成される。さらに、CPU105は、生成した合成画像をモニタ102に表示する(ステップS578)。
続いて、CPU105は、生成された合成画像に基づいて検査計測処理を実行する(ステップS580)。なお、検査計測処理の一例としては、たとえば、予め登録された画像パターンに一致する部分を探索するサーチ処理や、ワークのエッジを検出してエッジ間の距離を計測するエッジスキャン処理などが挙げられる。
最終的に、CPU105は、その検査計測処理の結果をモニタ102などに表示する(ステップS582)とともに、PLCなどの外部装置へ出力する(ステップS584)。そして、処理は図51のメインフローに戻る。
[F8.動き追従処理(逐次抽出型)を採用した場合の作用効果]
このように、撮像部8の撮像により順次取得される入力画像に対して、動的にサーチ処理が繰返されるので、目的のワーク2を示す参照画像(パターン)または目的のワーク2の特徴情報を予め登録しておく必要がない。
特に、登録されたモデルと目的とするワークの現在の状態との間にずれが生じた場合であっても、動的にモデルが抽出されるので、照明環境などの変化に対する耐性を高めることができる。
なお、この逐次処理型の動き追従処理においても、モデル登録型と同様に、撮像処理とサーチ処理とを並列実行することで、処理に要する時間を、サーチ処理に要する時間分だけ短縮することができる。さらに、逐次抽出型の動き追従処理においてはサーチ処理だけでなく、サーチ用のパターン抽出処理も撮像処理と並列実行することができる。
[G1.ユーザ支援機能]
上述したような動き追従処理を含む画像合成処理では、撮像部8の視野、光電センサの検出位置(トリガ位置)、撮像回数、ライン速度、ワーク2のサイズなどの多くのパラメータを調整して、適切な撮像状態に設定する必要がある。上述したように、ユーザによるこのような調整を支援する機能として、図16および図26に示すような設定モードにおけるガイド表示や、図22に示すような稼動モードにおけるエラー通知などが提供される。このような機能に加えて、搬送ライン6上に実際のワーク2を流して、試行錯誤的にこれらのパラメータを調整したいというニーズも存在する。そこで、この発明の実施の形態に従う画像処理装置に対して、このような試行錯誤的な調整を支援するための機能を付加してもよい。
本支援機能を概略すると、先に決定されている合成処理設定に含まれる複数の異なる撮像条件に従う複数回の撮像を、被測定物であるワーク2が搬送ライン6のトリガ位置(基準位置)を通過したタイミングで開始することで取得された複数の入力画像を、撮像部8の視野内におけるワーク2の移動方向(搬送方向)についての方向および縮尺を一致させて表示する。
図54は、この発明の実施の形態に従う画像処理装置において提供される動き追従処理に係る設定を行うための設定モード画面402Bを示す図である。
図54に示す設定モード画面402Bは、図14に示す設定モード画面402において、動き追従設定入力エリア450に代えて動き追従設定入力エリア450Bを表示するようにしたものに相当する。動き追従設定入力エリア450Bは、動き追従設定入力エリア450において、外部トリガ同期重畳表示チェックボックス452を含むようにしたものである。その他のボタン配列などについては、図14に示す設定モード画面402と同様であるので、詳細な説明は繰返さない。
外部トリガ同期重畳表示チェックボックス452は、動き追従処理の有効化/無効化の設定を受付ける。この動き追従チェックボックス451がチェックされることで、本支援機能が有効化される。すなわち、動き追従チェックボックス451がチェックされることで、光電センサからトリガ信号を受信したタイミング、すなわちワーク2がトリガ位置を通過したタイミングで、先に決定されている合成処理設定の撮像条件に従って、撮像部8によりワーク2が順次撮像される。そして、それぞれの撮像によって取得された複数の入力画像が撮像部8の視野に対応付けて重畳して表示される。
一例として、図54に示される例では、搬送ライン6を流れるワーク2に対して、3回の撮像が行なわれ、それぞれの撮像によって取得された入力画像491,492,493が、画像表示エリア412に重ねて表示される。この入力画像491,492,493の搬送方向における最大の長さが、1枚の合成画像を生成するために必要な複数の入力画像の撮像に要する撮像時間の間にワーク2が移動する距離に相当する。この撮像時間の間にワーク2が移動する距離が、撮像部8の視野内に収まるように、撮像部8の視野やトリガ位置が調整される(図27参照)。
なお、撮像部8の視野内におけるワーク2の移動方向(搬送方向)についての方向および縮尺を一致させて表示する一例として、図54には、複数の入力画像を重ねて表示する形態を示したが、このような形態に代えて、たとえば、搬送方向と直交する紙面左端を基準にして、紙面上下方向にそれぞれの入力画像を整列表示してもよい。
その他の構造および制御構造などについては、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
上述の支援機能によれば、搬送ラインに実際にワークを流した状態を確認しつつ、各種パラメータの調整を行うことができる。そのため、それぞれの搬送ラインに適した調整をより容易に行うことができる。
[G2.しぼり量の調整による露光条件の変更]
上述の実施の形態では、異なる露光条件を得る手段として、撮像部8の撮像時における露光時間を調整する構成について例示した。一方、以下の変形例においては、光学系のしぼり量を調整する構成について説明する。
一般的に、光学系のしぼり量は、レンズの焦点距離を有効口径で除算した値であるF値で定義される。このF値の大きさは、撮像素子に入射する光強度の二乗に反比例する。したがって、図6に示すような露光条件と「明るさ」範囲との関係を実現するためには、各撮像におけるF値を「10」,「10/√2」,「5」,…といった順に変更すればよい。この場合、(1)式に示す露光時間による規格化(=g(Zi,j)/Δtj)と同様の処理は、F値の二乗を乗じることで実現される。
なお、本変形例に示すように、しぼり量を順次変更する場合には、ワーク2に対する照明強度は一定とし、かつ各撮像における露光時間も一定(たとえば、1/4000秒)とする。
その他の処理については、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
本変形例によれば、異なる露光条件で複数回撮像を行う際の各撮像における露光時間を一定に保つことができる。厳密に言えば、露光時間がワーク2の移動速度に比較して長くなった場合には、1回の撮像(露光)中におけるワーク2の移動量も無視できなくなり得る。これに対して、本変形例では、いずれの露光条件であっても、露光時間が一定に保たれるので、露光時間の変更に伴う入力画像内におけるワーク2の撮像精度を高めることができる。
[G3.照明強度の調整による露光条件の変更]
上述の実施の形態では、異なる露光条件を得る手段として、撮像部8の撮像時における露光時間を調整する構成について例示した。一方、以下のさらに別の変形例においては、ワーク2に照射する照明強度を調整する構成について説明する。
一般的に、搬送ライン上で検査や計測の対象とするワーク2は、自発光することはない。すなわち、ワーク2がLED(Light Emitting Diode)などの発光体であったとしても、キズなどの検査は非発光状態で行なわれる。そのため、ワーク2から放射される光強度は、当該ワーク2に入射する照明光に依存して決まることになる。そこで、撮像部8の露光条件という意味において、撮像部8の撮像対象であるワーク2に対して照射する照明光の強度を調整することで、異なる露光条件を実現することができる。
図55は、この発明の実施の形態に従う画像処理装置に用いられる撮像部8の撮像面を示す平面図である。図55に示す撮像部8は、撮像素子への光を取込むレンズ81と、レンズ81の周囲に配置された複数の発光部82とを含む。発光部82は、典型的には、白色LEDなどの比較的波長範囲の広い光源が用いられる。さらに、撮像部8には、図示しない電力調整部から発光部82を点灯するための電力が供給される。この発光部82を点灯するための電力は、後述するような条件に従って、撮像(露光タイミング)と同期して順次変更される。
発光部82から照射される光強度は、供給される電力[W]に比例すると考えられるので、ワーク2から放射される光強度も発光部82に供給される電力に比例するとみなすことができる。たとえば、発光部82に固定値4[W]を供給しつつ、露光時間を1/500[秒],1/1000[秒],1/2000[秒]と順次変更して撮像した場合に取得される入力画像の組と、露光時間を1/2000[秒]に固定しつつ、発光部82に供給する電力を1[W],2[W],4[W]と順次変更して撮像した場合に取得される入力画像の組とは、実質的に一致するものと考えられる。なお、発光部82以外の照明光の影響は、無視できるものとする。
図56は、この発明の実施の形態に従う発光部82の照明強度(供給電力)と撮像に適した「明るさ」範囲との関係の一例を示す図である。図56を参照して、発光部82の照明強度、すなわち発光部82へ供給する電力を2倍ずつ順次増加させることで、図5と同様の露光条件の切替えを実現できる。
さらに、このように取得された複数の入力画像に基づいて合成画像を生成する場合における合成輝度Eiの算出式は、上述の(1)式と同様な(3)式のようになる。
(3)式において、「ln(g(Zi,j)−lnΔpj)」の項が、各入力画像における輝度を照明強度で規格化した上で、「明るさ」として評価した値に相当する。なお、その他の画像合成処理は、上述の実施の形態と同様であるので、詳細な説明は繰返さない。
図57は、この発明の実施の形態に従う処理タイミングを説明するための図である。図57を参照して、本変形例では、1枚の合成画像の生成に用いられる複数の入力画像を取得する際には、各撮像における露光時間は一定値に保たれる。すなわち、トリガ信号を受けて時刻t11から撮像が開始され、時刻t11〜t12の間、露光が継続する。他の撮像における露光時間についても、この露光時間と同じ値に維持される。
このように、本変形例によれば、異なる露光条件で複数回撮像を行う際の各撮像における露光時間を一定に保つことができる。本変形例では、いずれの露光条件であっても、露光時間が一定に保たれるので、露光時間の変更に伴う入力画像内におけるワーク2の撮像精度を高めることができる。
[G4.組み合わせによる露光条件の変更]
上述の実施の形態において説明した露光時間の調整、上述したしぼり量の調整、および上述した照明強度の調整のうち、任意の複数のものを組み合わせて、異なる露光条件を実現してもよい。
[H.その他の実施の形態]
本発明に係るプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
また、本発明に係るプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明に係るプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記憶された記録媒体とを含む。
さらに、本発明に係るプログラムによって実現される機能の一部または全部を専用のハードウェアによって構成してもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。