以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
図1は外観検査システムの一例を示す図である。ライン1は検査対象物であるワーク2を搬送する搬送ベルトなどである。照明装置3はフォトメトリックステレオ法にしたがって検査対象物を照明する照明手段の一例である。カメラ4はフォトメトリックステレオ法にしたがって前記照明された検査対象物からの反射光を受光して輝度画像を生成する撮像手段の一例である。画像処理装置5は、カメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルを算出し、複数の輝度画像から算出された法線ベクトルに基づく画素値により構成された傾き画像と、当該傾き画像の縮小画像とについて、注目画素に隣接する隣接画素の法線ベクトルを用いて注目画素の画素値を積み上げ演算し、画素値を有する検査画像を生成し、検査画像を用いて検査対象物の良否を判定する外観検査装置である。傾き画像は法線ベクトル画像と呼ばれることもある。画像処理装置5は輝度画像から反射率画像(アルベド画像)を作成してもよい。表示部7は検査に関連する制御パラメータを設定するためのユーザインタフェースや傾き画像、反射率画像、検査画像などを表示する。入力部6は、コンソール、ポインティングデバイス、キーボードなどであり、制御パラメータを設定するために使用される。画像処理装置5と照明装置3は信号線8によって接続されている。画像処理装置5とカメラ4は信号線9によって接続されている。
とりわけ、図1によればカメラ4と照明装置3とが独立して移動可能なようにそれぞれ異なるフレームによって支持されている。このように照明装置3は、カメラ4から独立して移動可能となっているため、ワーク2から照明装置3までの距離を自在に調整できるようになっている。つまり、ワーク2の種類や置き方に応じて照明装置3をワーク2から遠ざけて配置させることで、カメラ4は正反射光を強く受光できるようになる。また、照明装置3をワーク2に近づけて配置することでカメラ4は拡散反射光を強く受光できるようになる。なお、同一のフレームによってカメラ4と照明装置3とが指示されていてもよい。この場合には、照明装置3の取り付け位置を調整するためのクランプ機構などで照明装置3をフレームに固定すればよい。
<フォトメトリクスステレオの原理>
一般的なフォトメトリックステレオ法では、図2に示すように、ワーク2に対して4方向から照明光L1〜L4を切り替えながら照射し、4枚の輝度画像を生成する。各輝度画像を撮影する際に使用される照明光の方向は一方向だけである。なお、輝度画像は複数の画素により構成されており、4枚の輝度画像において座標が一致する4つの画素は同一のワーク表面に対応している。4つの画素の画素値(輝度値)I1、I2、I3、I4と、法線ベクトルnとの間には図2示した式1が成り立つ。ここでρは反射率である。Lは各方向からの照明光の光量であり、既知である。ここでは4方向とも光量は同一である。Sは照明方向行列であり、既知である。この数式を解くことで各座標(ワーク表面)ごとの反射率ρと法線ベクトルnが求められる。その結果、反射率画像と傾き画像とが得られる。
本実施形態では、さらに、傾き画像から高さ成分を抽出しワークの形状を示す形状画像を検査画像として作成する。検査画像は、図2に示し式2である積み上げ演算式により求められる。ここで、znはn回目の積み上げ結果であり、ワーク表面の形状を示している。x、yは画素の座標を示している。nは何回目の繰り返し計算であるかを示している。pは水平方向の傾き成分を示し、qは垂直方向の傾き成分を示している。p、qは法線ベクトルnから求められる。wは重みである。また、1回目の積み上げ演算では1/1の傾き画像を用い、2回目の積み上げには1/2の縮小傾き画像を用い、3回目の積み上げには1/4の縮小傾き画像を用いる。縮小画像を作成する際にはガウシアン処理を施してから縮小処理が施されてもよい。
本実施形態では積み上げ演算において特徴サイズというパラメータを採用する。特徴サイズは積み上げ演算において使用される縮小画像の成分に対する重みを与えるパラメータである。特徴サイズはワーク2の表面形状の大きさを示すパラメータである。たとえば、特徴サイズが1であればxy方向で注目画素に隣接した4つの画素についての重みが最も大きくされて積み上げ演算される。特徴サイズが2であればxy方向で注目画素に隣接した8つの画素についての重みが最も大きく設定されて積み上げ演算が実行される。ただし、8つの画素を用いて演算することは演算量の増大を招くため、上述した縮小画像を作成して演算に使用する。つまり、8つの隣接画素を用いる代わりに、傾き画像を1/2に縮小して演算を実行する。これにより、ある注目画素について縮小画像における4つの画素を演算に考慮すればよいことになる。これは特徴サイズが4、8、16、32と増加したときもそれに応じた縮小画像を作成し、特徴サイズに対応した縮小画像について重みを最大に設定することで、同様の演算負荷の軽減効果が得られる。
図3は積み上げ演算の一例を示している。この例では法線ベクトルnから求められた2枚の傾き画像(水平方向の傾き成分pの画像と垂直方向の傾き成分qの画像)を入力としている。まず、縮小度の大きい傾き画像で全体の形状を積み上げ、それよりも縮小度の小さい画像で細部形状を積み上げる。これにより短時間で全体の形状を復元できるようになる。図3によれば、たとえば、1/32の縮小画像について式2により注目画素についてワーク表面の形状を示すパラメータであるzを算出する。重みwは特徴サイズに応じて決定される。縮小画像を構成する1つ1つの画素を注目画素として積み上げ演算をイタレーション(繰り返し処理)する。zの初期値はゼロである。次に式2にしたがって1/16の縮小画像についてzを算出する。ここでは、1/32の演算結果に対して1/16の縮小画像の傾き成分が積み上げられる。同様にして、1/8縮小画像から1/1画像まで積み上げ演算が実行される。
図4は各特徴サイズごと重みの一例を示している。横軸は解像度レベル(縮小度)を示し、縦軸は重みを示している。図4からわかるように、特徴サイズ1では縮小度が最も小さいレベル0(1/1画像)の重みが最大となる。これにより微細な形状を積み上げることが可能となる。特徴サイズ2ではレベル1(1/2画像)の重みが最大となる。これによりさらに大きなサイズの形状を積み上げることが可能となる。このように各重みは、特徴サイズに対応したレベルでピークが生じるように決定される。
形状画像の復元方法としては、上記の積み上げ演算の他に公知のフーリエ変換積分法を採用することもできる(A Method for Enforcing Integrability in Shape from Shading Algorithms, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.10, No.4 July 1988)。当該方法においても計算プロセスにおいて縮小画像を生成し、重み付け成分を調整することにより抽出する特徴サイズを変更することが可能である。
図5は特徴サイズの違いに応じた検査画像の一例を示している。特徴サイズ4では細部の形状が抽出されており、特徴サイズ64では全体の形状が抽出されており、特徴サイズ16ではこれらの中間的なサイズの形状が抽出されていることがわかる。このように小さな特徴サイズは細かい傷を検査するのに役立ち、大きな特徴サイズは物体の有無の判別に適しており、中間の特徴サイズは凹凸文字のOCRなどに適している。つまり検査ツールに応じて適切な特徴サイズを選択することで検査精度を向上させることが可能となる。
図6はフォトメトリックステレオ法による検査画像の作成工程を示す図である。輝度画像601〜604はそれぞれ照明方向の異なる照明光によりワーク2を照明して取得された輝度画像である。なお、輝度画像600は4方向から同時に照明して得られた輝度画像である。それぞれ照明方向の異なる照明光によりワーク2を照明して取得された複数の輝度画像から演算によりワーク表面の法線ベクトルが求められる。傾き画像611は、輝度画像601〜604から求められた法線ベクトルのX方向の傾き成分を画素値とした傾き画像である。傾き画像612は、輝度画像601〜604から求められた法線ベクトルのY方向の傾き成分を画素値とした傾き画像である。反射率画像610は、輝度画像601〜604から求められた法線ベクトルから、ワーク表面の傾きによる輝度値の変動分を除去し、ワーク表面の反射率を画像にした反射率画像である。検査画像621〜623は傾き画像611、612から求められたそれぞれ特徴サイズの異なる画像である。なお、検査画像621〜623も傾き成分に基づく画素により構成されているため、傾き画像の一種である。このような手順でワーク2の検査画像が生成される。なお、検査ツールに依存して全方向照明画像である輝度画像600や反射率画像610が検査画像として採用されてもよい。全方向照明画像とは、照明装置3が備える複数の光源をすべて点灯させて取得された輝度画像のことである。
<テクスチャ情報>
テクスチャ情報とはワーク2の表面の反射率ρに基づく情報である。式1によって反射率ρが求められる、つまり4枚の輝度画像から1枚の反射率画像が得られる。反射率画像はワーク表面の反射率ρに比例した画素値を有する画像である。図7に示すように、4枚の輝度画像701〜704から法線ベクトルを算出し、算出された法線ベクトルと複数の輝度画像の各々対応する画素の輝度値に基づいて各画素の反射率に比例した画素値を算出することで反射率画像であるテクスチャ画像711、712が求められる。この生成方法としては4枚の輝度画像の画素平均によってテクスチャ画像を求める方法や、4枚の輝度画像からハレーションを除去してから画素平均によってテクスチャ画像を求める方法などがある。テクスチャ画像711は画像平均によって求められたものであり、テクスチャ画像712はハレーション除去によって求められたものの一例である。4枚の輝度画像において座標が一致する画素が4つ存在する。4つの画素のうち画素値が1番大きい画素を除外したり、画素値の大きい順に1番目からN番目(Nは3以下の自然数)までの画素を除外したりすることでハレーションを除去することが可能である。ハレーションは高い輝度として画像に現れるからである。テクスチャ画像711、712はともに反射率に基づく画素により構成されているため、反射率画像の一種である。
<機能ブロック>
図8は検査装置のブロック図である。この例では照明装置3、カメラ4および画像処理装置5がそれぞれ個別の筐体に収容されているが、これは一例に過ぎず、適宜に一体化されてもよい。照明装置3は、フォトメトリックステレオ法にしたがって検査対象物を照明する照明手段の一例であり、光源群801とこれを制御する照明コントローラ802を備えている。複数の発光素子で1つのセグメントが構成され、さらに複数のセグメントによって光源群801が構成されていてもよい。セグメントの数は一般的には4つであるが、3つ以上であればよい。これは3方向以上の照明方向からワーク2を照明できれば、フォトメトリックステレオ法により検査画像を生成できるからである。図1に示したように照明装置3の外形はリング状をしていてもよい。また、照明装置3は、それぞれ分離した複数の照明ユニットにより構成されていてもよい。たとえば、市場にはワーク2を撮影するために使用される照明ユニットが存在しているが、これらはフォトメトリックステレオ用に開発されたものではない。ただし、このような照明ユニットを複数個用意するとともに、これらを制御する照明コントローラを接続することで、照明装置3を構成してもよい。照明コントローラ802は、画像処理装置5からの制御コマンドに応じて光源群801の点灯タイミングや照明パターン(点灯パターン)を制御する。照明コントローラ802は照明装置3に内蔵されているものとして説明するが、カメラ4に内蔵されていてもよいし、画像処理装置5に内蔵されていてもよいし、これらからは独立した筐体に収容されていてもよい。
カメラ4はフォトメトリックステレオ法にしたがって照明された検査対象物からの反射光を受光して輝度画像を生成する撮像手段の一例であり、画像処理装置5からの制御コマンドに応じて撮像処理を実行する。カメラ4はワーク2の輝度画像を作成して画像処理装置5に転送してもよいし、撮像素子から得られる輝度信号を画像処理装置5に転送し、画像処理装置5が輝度画像を生成してもよい。輝度信号は輝度画像の元になる信号であるため、広義には輝度信号も輝度画像である。
画像処理装置5は、コンピュータの一種であり、CPUやASICなどのプロセッサ810と、RAM、ROM、可搬記憶媒体などの記憶装置820と、ASICなどの画像処理部830と、ネットワークインタフェースなどの通信部850とを有している。プロセッサ810は検査ツールの設定や、制御パラメータの調整、検査画像の生成・再生成・更新を担当する。フォトメトリック処理部811は、カメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルnを算出し、複数の輝度画像から算出された法線ベクトルnに基づく画素値を有する傾き画像と、傾き画像の縮小画像とについて、注目画素に隣接する隣接画素の法線ベクトルnを用いて当該注目画素の画素値を積み上げ演算し、当該画素値を有する検査画像を生成する演算手段(検査画像生成手段)として機能する。なお、具体的には上述した数式などを使用して検査画像が生成される。照明制御部812は、照明コントローラ802に対して制御コマンドを送信することで点灯パターンや照明切り替えタイミングなどを制御する。撮像制御部813は、カメラ4を制御する。UI管理部814は、検査ツールを設定するためのユーザインタフェース(UI)や検査画像を生成するために必要となるパラメータを設定するためのUIなどを表示部7に表示し、入力部6から入力された情報したがって検査ツールやパラメータを設定する。とりわけ、特徴サイズ設定部815は積み上げ演算において使用される縮小画像の成分に対する重みwを与えるパラメータである特徴サイズを設定する設定手段として機能する。画像選択部816は複数の輝度画像や複数の検査画像、複数の傾き画像、複数の反射率画像のうち表示すべき画像などを選択したりする。画像選択部816はカメラ4により取得された複数の輝度画像および検査画像のうち保存対象もしくは出力対象となる画像を選択してもよい。検査ツール設定部817は画像選択部816により選択された検査画像に対して検査ツールを設定する。検査ツール設定部817は、たとえば、基準画像に対して傷検査領域を設定したり、文字認識領域を設定したりする。基準画像設定部818は良品から取得された検査画像である基準画像を設定する。表示制御部851は輝度画像と検査画像を切り替えて表示部7に表示させたり、または、輝度画像と検査画像とを同時に表示させたりする。また表示制御部851は制御パラメータが調整されると表示部7に表示されている画像を当該制御パラメータが反映された画像に更新する。検査ツール設定部817は、表示制御部851、特徴サイズ設定部815、画像選択部816、基準画像設定部818および条件設定部819を内包していてもよい。画像処理部830は基準画像を用いて検査画像にパターンサーチを実行し、検査画像に検査領域(例:傷検査領域や文字認識領域など)を設定する検査領域設定手段として機能する。検査領域は、たとえば、文字認識領域である。条件設定部819は画像を表示部7や通信部850に接続された外部機器に出力する条件や、可搬記憶媒体などに保存する条件を設定する。判定部840は検査画像を用いてワーク2の良否を判定する判定手段として機能する。たとえば、判定部840は画像処理部830において検査画像を用いて実行された検査の結果を受け取って検査結果が良品条件(公差など)を満たしているかどうかを判定する。
記憶装置820は、カメラ4によって取得された輝度画像のデータである輝度画像データ821、フォトメトリック処理部811により生成された傾き画像データ822や反射率画像データ823を記憶する。また、記憶装置820は各種の設定データやユーザインタフェースを生成するためのプログラムコードなども記憶している。記憶装置820は特徴サイズがそれぞれ異なる検査画像を記憶して保持していてもよい。また、記憶装置820は検査画像に加え、検査画像の元になった傾き画像データや反射率画像データを記憶してもよい。これらはワーク2の誤判定が見つかったときに、検査画像、傾き画像または反射率画像のいずれに問題があったのかを特定して、その制御パラメータを修正するのに役立つであろう。
画像処理部830は、フォトメトリック処理部811によって生成された検査画像(傾き画像データ822や反射率画像データ823)を用いて外観検査を実行する。傷検査部831は、それぞれ異なる特徴サイズ用いて生成された複数の検査画像の傷検査領域において傷検査を実行する。OCR部832はそれぞれ異なる特徴サイズ用いて生成された複数の検査画像に対して文字認識処理を実行する文字認識処理手段として機能する。傷検査部831やOCR部832は記憶装置820に記憶されている検査画像(傾き画像データ822や反射率画像データ823)を読み出し、文字認識領域において検査を実行し、検査結果を記憶装置820に書き込んだり、判定部840に渡したりしてもよい。判定部840はこの検査結果に基づきワーク2の良否を判定する。
<設定モード>
検査システムには検査ツールを設定する設定モードと、設定された検査ツールにしたがってワーク2の外観検査を実行する検査モード(運転モード)とを有しいている。ここでは設定モードの一例について説明する。
図9は設定モードに関するフローチャートである。入力部6を通じて設定モードの開始が指示されると、プロセッサ810のUI管理部814は検査ツールを設定するためのUIを表示部7に表示する。
図10はUIの一例を示している。UI管理部814が表示部7に表示するUI1000には、検査結果の保存先を指定するプルダウンメニュー1001や検査ツールの名称を入力するテキストボックス1002が設けられている。UI管理部814は実行ボタンの押し下げを検出すると次のUIを表示する。
図11に示すUI1100には、検査ツールを設定するためのガイダンス1101と、カメラ4に撮像を指示する計測実行ボタン1102と、カメラ4により撮像された画像を表示する表示領域1103と、カメラ設定の開始を指示するカメラ設定ボタン1104を有している。なお、画像選択部1105は、表示領域1103に表示する画像や検査に使用する画像を選択するためのボタンである。この例では画像選択部1105によって、形状1、形状2、テクスチャおよびノーマルのうちいずれか1つの画像が択一的に選択される。計測実行ボタン1102が操作されると、撮像制御部がカメラ4に撮像を指示する。UI管理部814はカメラ4により取得された輝度画像を表示領域1103にレンダリングする。なお、画像選択部1105によって別の画像が選択されると、UI管理部814は画像選択部1105によって選択された画像を表示領域1103にレンダリングする。このようにユーザは画像選択部1105を操作するか、入力部6を通じて画像の切り替えを指示することで表示領域1103に表示される画像を切り替えることができる。カメラ設定ボタン1104が操作されると、UI管理部814は次のUIに切り替える。
S901でUI管理部814はカメラ4を設定するためUIを表示部7に表示し、カメラ設定を実行する。図12はカメラ設定UI1200の一例を示している。カメラ設定タブ1201には、カメラの機種を設定するプルダウンメニュー1202、画像サイズを設定するプルダウンメニュー1203、シャッタースピードを設定するプルダウンメニュー1204、カメラの感度を設定するスライダー1205などを有している。なお、計測実行ボタン1102が操作されると、UI管理部814は、その時点で設定されている撮像パラメータにしたがってカメラ4によって取得された輝度画像を表示領域1103に表示する。これによりユーザは設定したパラメータが適切かどうかを判定できる。
S902でUI管理部814はフォトメトリック処理を設定するためUIを表示部7に表示し、設定を実行する。たとえば、カメラ設定UI1200に設けられているフォトメトリックステレオ設定タブ1210が操作されたこと検知すると、UI管理部814は、図13に示すように、フォトメトリックステレオ設定タブ1210を有効に切り替える。有効に切り替えるとは、ユーザ操作可能な状態にフォトメトリックステレオ設定タブ1210の表示状態を切り替えることをいう。フォトメトリックステレオ設定タブ1210には、画像を選択するためのプルダウンメニュー1301と、特徴サイズ設定部1302とが含まれている。この例では、それぞれ特徴サイズが異なる3つの検査画像(形状1、形状2、形状3)のいずれかを選択できるものとする。プルダウンメニュー1301によって選択された画像ごとに特徴サイズ設定部1302により特徴サイズが設定される。
フォトメトリックステレオ設定タブ1210に点灯パターンを選択するための選択部が配置されてもよい。また、一回の照明あたりの発光量を指定する指定部が設けられてもよい。
S903でUI管理部814は検査ツールを設定するためのUIを表示部7に表示し、設定を実行する。図14は検査ツールを設定するUI1400の一例である。画像選択ボタン1401は、複数ある検査画像のうち検査に使用する検査画像を選択するためのボタンである。検査カテゴリー選択ボタン1402は、複数ある検査カテゴリーのうち検査ツールとして追加すべきツールのカテゴリーを選択するためのボタンである。認識対象設定ボタン1403は複数ある認識対象のうち1つを選択するためのボタンである。この例では、検査画像として「形状1」が選択され、カテゴリーとして「認識」が選択され、認識処理として「文字認識」が選択されている。追加ボタン1404が操作されると、UI管理部814は次のUIに切り替える。図15は基準画像登録UI1500を示している。基準画像登録UI1500には、上述した計測実行ボタン1102、表示領域1103に加え、登録ボタン1501が配置されている。登録ボタン1501が操作されると、UI管理部814は計測実行ボタン1102によって取得され、表示領域1103に表示されている画像を基準画像として登録する。登録が完了すると、UI管理部814は次のUIに切り替える。
図16は計測領域設定UI1600を示している。計測領域設定UI1600の表示領域1103には基準画像1601と、計測領域を示すフレーム1602が配置される。UI管理部814は入力部6からの指示に応じてフレーム1602の位置とサイズを変更する。ユーザは基準画像1601のうち計測対象としたい部分の位置とサイズに合わせてフレーム1602の位置とサイズを調整する。なお、さらに、UI管理部814は、文字の切り出し設定や、認識すべき文字の具体例(文字画像)と文字画像に対応する文字キャラクタを登録するための辞書設定などを実行してもよい。
次に傷検査ツールについて説明する。図17に示すように、検査カテゴリー選択ボタン1402によって傷検査が選択されると、UI管理部814は、検査内容選択ボタン1701を表示する。この例では、検査内容選択ボタン1701によって傷の総面積を計測するツールが選択されている。追加ボタン1404が操作されると、UI管理部814はUIを切り替える。
図18は計測領域設定UI1800を示している。計測領域設定UI1800には、計測領域(傷検査領域)を示すフレーム1802が配置される。フレーム1802の形状は変更可能であり、たとえば、形状を選択するためのプルダウンメニュー1801によって複数の形状のうちいずれかの形状が選択される。UI管理部814はプルダウンメニュー1801によって選択された形状のフレーム1802を表示領域1103にレンダリングする。UI管理部814は入力部6からの指示に応じてフレーム1802の位置とサイズを変更する。
図19は傷の検出条件を設定するための設定UI1900を示している。設定UI1900には、傷の検出方向を選択するためのプルダウンメニュー1901と、傷のセグメントサイズを指定するためのボックス1902と、傷のレベルを指定するためのスライダー1903が配置されている。設定UI1900により設定された傷検出条件に基づいて傷検査領域内(フレーム1802内)で傷検査部831が傷を検出したときは、UI管理部814が傷の位置に傷検出マーク1910を表示してもよい。これにより、ユーザは、傷検出条件が適切かどうかを判断できよう。
<検査モード>
図20は検査モードを示すフローチャートである。入力部6を通じて検査モードの開始が指示されると、プロセッサ810が動作モードを検査モードに移行させる。
S2001でプロセッサ810は設定された点灯パターンにしたがって照明方向を切り替えながらワーク2の画像を撮像して取得する。具体的には、照明制御部812が、記憶装置820に保持されている設定データを参照して点灯パターンを特定し、点灯パターンを指定するためのコマンドを照明コントローラ802に送出する。撮像制御部813は記憶装置820に保持されている設定データを参照してカメラ4に関する制御パラメータ(シャッタースピードや感度など)を特定し、これを指定するコマンドをカメラ4に送信する。フォトメトリック処理部811は照明の開始を指示するためのトリガー信号を照明コントローラ802に送信するとともに、これと連動して撮像の開始を指示するためのトリガー信号をカメラ4に送信する。照明コントローラ802はトリガー信号に同期して照明方向を切り替える。たとえば、照明コントローラ802はコマンドにより指定された点灯パターンにしたがって4つの照明方向について1つずつ順番に対応する発光素子を点灯させる。照明コントローラ802はコマンドと点灯パターンとの対応関係をメモリなどに保持していてもよい。トリガー信号は照明開始時に1つだけ発行されてもよいし、切り替えタイミングにおいても発行されてもよい。カメラ4は制御パラメータにしたがってワーク2を撮像し、輝度画像を画像処理装置5に転送する。このようにして、たとえば、1つの照明方向につき1枚の輝度画像が生成される。
S2002でプロセッサ810は複数の輝度画像から法線ベクトルnと反射率ρとを求める。上述したようにフォトメトリック処理部811は複数の輝度画像の画素値について式1を適用し、法線ベクトルnと反射率ρとを求める。
S2003でプロセッサ810は設定された特徴サイズにしたがって検査画像を生成する。上述したようにフォトメトリック処理部811は特徴サイズに対応する重みWを重みテーブルなどから決定し、式2を用いて積み上げ演算を実行して検査画像(傾き画像)を生成する。このように、フォトメトリック処理部811は複数の輝度画像からワーク2の表面の法線ベクトルnに基づく画素値を有する傾き画像を生成してもよい。なお、それぞれ値の異なる複数の特徴サイズを設定されている場合、フォトメトリック処理部811は設定された複数の特徴サイズのそれぞれについて検査画像を生成してもよい。また、フォトメトリック処理部811は上述した手法により反射率画像やテクスチャ画像を生成してもよい。たとえば、フォトメトリック処理部811は複数の輝度画像からワーク2の表面の法線ベクトルnとともにワーク2の表面の反射率ρを算出し、当該反射率ρに基づく画素値を有する反射率画像を生成してもよい。ここでは検査の対象とされる画像が生成され、検査の対象とさていない画像については生成が省略されてもよい。
S2004でプロセッサ810は検査画像を表示部7に表示する。UI管理部814は検査画像とともに、輝度画像、傾き画像、反射率画像を表示部7に同時または選択的に表示してもよい。選択的に表示する場合、UI管理部814は入力部6からの切り替え指示にしたがって、たとえば、4つの輝度画像を順番に切り替え表示してもよい。たとえば、入力部6のうちコンソールに設けられた特定のキーが画像の切替ボタンとして割り当てられていてもよい。
S2005でプロセッサ810は画像処理部830に検査の実行を指示する。画像処理部830は検査を指示されると、予め設定された検査ツールを起動して検査画像に対して検査を実行する。たとえば、傷検査部831は設定された計測領域や検出条件にしたがって傷のレベルを判別し、検査結果(傷のレベル)を判定部840に転送する。なお、傷検査部831は、上述した基準画像を用いてパターンサーチを実行して検査領域を設定し、検査領域において検査を実行してもよい。また、OCR部832は、予め設定された文字認識設定にしたがって検査画像に対して文字認識処理を実行し、文字認識結果を判定部840に転送する。OCR部832も上述した基準画像を用いてパターンサーチを実行して検査領域(文字認識領域)を設定し、検査領域において検査を実行してもよい。
S2006でプロセッサ810の判定部840は検査結果と判定閾値とを比較して、ワーク2が良品であるかどうかを判定する。たとえば、傷検査とOCRの両方を実行するように設定されている場合、判定部840は傷検査部831の検査結果とOCR部832の文字認識結果との両方が合格レベルにあるときに、ワーク2を良品と判定する。
<画像保存設定>
図21は検査フローを設定するUI2100の一例を示している。UI管理部814はUI2100を表示部7に表示させ、検査フローのスタートからエンドまでの間に実行される複数の工程を入力部6から入力される指示にしたがって設定して行く。この例では、撮像工程、パターンサーチ工程、位置補正工程および傷検査工程が検査フローに追加されている。たとえば、入力部6を通じて検査フローのエンドが指定されると、UI管理部814はエンドにおいて検査履歴を蓄積するように設定してもよい。検査履歴とは、検査結果や検査に使用された画像などである。
なお、各工程を追加するときにUI管理部814は各工程で使用される画像の選択を、入力部6を通じて受け付けてもよい。たとえば、ユーザは入力部6を通じて撮像工程に対しては照明方向と異なる4つの輝度画像や傾き画像、反射率画像などを取得対象として指定し、パターンサーチ工程に対してはいずれかの輝度画像(全方向照明画像など)をサーチ対象として指定し、傷検査工程に対しては傾き画像から生成された検査画像などを検査対象として指定してもよい。本実施例では撮像工程にて撮像された複数の輝度画像から生成された複数の形状画像や反射率画像を後段の検査工程に出力することができるため、ユーザは、共通の撮像工程から生成された複数の検査画像を各画像の特性に応じた様々な検査に応用することができる。
図22は履歴を蓄積する条件を設定するUI2200の一例を示している。蓄積条件を識別するための識別情報を設定する設定部2201は複数ある識別情報から設定対象となる識別情報を選択するためのプルダウンメニューによって構成されている。この例では設定部2201において「0:」という識別情報の蓄積条件が選択されている。蓄積条件としては、たとえば、検査結果が良品ではないときにのみ画像を蓄積するといった条件や、検査結果に依存せずに各ワークごとに常に画像を蓄積するといった条件などがある。ここでは、プロセッサ810は詳細設定ボタンなどが押されたことを検知すると条件設定部819を起動する。条件設定部819は、たとえば、常に画像を保存または出力するモードと、判定部840により検査対象物が良品ではないと判定されたときに画像を保存または出力するモードとのうちいずれかを設定してもよい。画像選択部2202は蓄積条件が満たされたときに保存する画像を選択する。ここでは画像選択部2202によって「すべて」と「指定」とを選択することができる。保存先選択部2203は、画像の保存先(例:内蔵メモリ、メモリカードなどの可搬メディアやFTPサーバなどのネットワークストレージ)を選択するためのプルダウンメニューによって構成されている。
図23は画像選択部2202で「指定」が選択されたときにUI管理部814が表示部7に表示させるUI2300の一例を示している。この例では、検査フローにおいて扱われるすべての種類の画像のうち実際に保存すべき画像を選択するためのチェックボックス2301が設けられている。形状1、2は特徴サイズが異なる検査画像(傾き画像)である。テクスチャは反射率画像である。ノーマルは全方向照明により取得された画像である。4つの矢印は照明方向を示すアイコンである。つまり矢印マークによって照明方向が異なる4つの輝度画像が区別されている。チェックボックスにチェックされた画像が保存対象として設定される。
ところで、プロセッサ810は判定部840が判定を終了した後で画像を保存または出力する条件が満たされているかどうかを判断する判断手段を備えていてもよい。すなわち、検査フローのエンド部において、プロセッサ810は、条件設定部819により設定された蓄積条件や出力条件が満たされているかどうかを判断してもよい。
図24は画像出力工程2401を検査フローに追加する例を示している。上述した実施例では検査フローの最後に画像を出力するように設定したが、この例では入力部6から入力されるユーザ指示にしたがってUI管理部814が検査フローの任意の位置に画像出力工程2401を設定する。このように、プロセッサ810は、判定部840が判定を終了する前に位置する画像出力工程2401で画像を保存または出力する条件が満たされているかどうかを判断してもよい。画像出力工程2401に関連する蓄積設定等は図21ないし図23を用いて説明したのと同様であってもよいし、異なってもよい。
図25は蓄積設定(出力設定)に関するUIの別の例を示している。画像出力工程2401が入力部6により選択された状態で、さらに入力部6により設定を開始する指示が入力されると、UI管理部814はUI2501を表示する。画像変数2502は出力すべき画像を選択する画像選択部として機能し、この例では検査フローにおける各工程に付与されている画像変数によって出力すべき画像が指定される。つまり、各工程ごとに出力すべき画像を選択できる。UI2501において画像の出力枚数や画像形式なども設定されてもよい。出力先選択部2503は画像の出力先(例:内蔵メモリ、メモリカードなどの可搬記憶メディアやFTPサーバなどのネットワークストレージ)を選択するためのプルダウンメニューである。
図26は画像を選択するUI2600の一例である。UI2501において詳細設定ボタンが押し下げられると、UI管理部814はUI2600を表示する。UI2600ではすべての画像を保存するか、個別指定するかを選択するためのラジオボタンや、画像を個別に選択するためのチェックボックスなどが配置されている。この例では、ラジオボタンにより個別指定が選択されているため、チェックボックスが有効となり、チェックボックスを通じていくつかの画像が選択されている。このように、複数の輝度画像、検査画像、全方向照明画像および複数の輝度画像を合成して得られた合成輝度画像から保存対象もしくは出力対象となる画像が選択されてもよい。また、それぞれ特徴サイズが異なる複数の検査画像から保存対象もしくは出力対象となる画像を選択できるようにUI2600が構成されてもよい。また、複数の輝度画像、検査画像および検査対象物の表面の反射率を画素値とした反射率画像から保存対象もしくは出力対象となる画像を選択できるようにUI2600が構成されてもよい。
<照明装置の構成>
図27(A)は照明装置3の斜視図である。図27(B)は照明装置3の上面図である。図27(C)は照明装置3の底面図である。図27(D)は照明装置3の側面図である。照明装置3の筐体は上ケース2701と下ケース2702を有している。下ケース2の下部には複数の光源(LEDなどの発光素子)のそれぞれが出力する光を拡散させる光拡散部材2703が配置されている。図27(A)や図27(C)が示すように上ケース2701や下ケース2702と同様に光拡散部材2703も円環状を成している。図27(B)や図27(D)が示すように上ケース2701の上面にはコネクタ2704が設けられている。コネクタ2704には照明装置3に格納されている照明コントローラ802と画像処理装置5とが通信するためのケーブルが接続される。
図28(A)は照明装置3に格納されている制御基板2801とLED基板2802とを示す側面図である。制御基板2801は点灯制御部が実装された第二基板の一例である。LED基板2802は複数の光源が実装された第一基板の一例である。図28(B)はLED基板2802の上面図である。図28(C)は照明装置3のうちLED2803の付近を拡大した断面図である。図28(D)はLED基板2802の底面図である。図28(E)はLED基板2802のうちLED2803の付近を拡大した側面図である。
制御基板2801には照明コントローラ802やコネクタ2704が配置されている。光源群801を構成するLEDなどの発光素子はLED基板2802に搭載されている。図28(B)が示すように、本実施例は4つのLED基板2802が設けられている。4つのLED基板2802のそれぞれには4つのLED2803が配置されているものとする。これにより光源群801は16個の発光素子により構成されている。図28(C)、図28(D)および図28(E)が示すように、複数のLED2803のうち隣り合った2つのLED2803の間には遮光部材2805が配置されている。多数のLED2803を密接に配置すると、隣り合った2つのLED2803からそれぞれ照射される照明光が光拡散部材2703の同一の領域を通過することがある。この場合、点灯パターンに応じて一方のLED2803を非点灯とし、かつ、他方のLED2803を点灯した場合と、他方のLED2803を非点灯とし、かつ、一方のLED2803を点灯した場合とで、ワーク2の表面には同一の照明方向から同一の光量で照明光が照射されてしまう。これでは高い精度で検査画像を生成することが難しくなる。そこで、隣り合った2つのLED2803の間に遮光部材2805を配置することで、隣り合った2つのLED2803について光量の均一性と光源の独立性とのバランスを取っている。図28(C)が示すようにLED2803の光の射出方向2821と、主な照明方向2822とは一致していない。そこで、反射鏡2804を配置することでLED2803から射出される光を光拡散部材2703の方向へ偏向している。これによりLED2803が発光した光を効率よくワーク2へ照射できるようになろう。この例では射出方向2821と反射鏡2804の反射方向とが概ね直交しているが、これは光拡散部材2703の断面形状が円弧を成しており(図28(C))、円弧に関する角度(中心角)が約90度になっているからである。このように中心角を大きくすることで、照明装置3をワーク2に対して遠ざけたり、近づけたりしてもワーク2の表面に対してほぼ均一な平行光を照射しやすくなる。
<照明装置の回路構成>
図29は照明装置3の回路構成の一例を示している。この例では光源群801を構成する4つのLEDグループのうち1つのグループを示している。4つのLED2803a〜LED2803dは直列に接続されている。電圧が可変の可変電源2900は照明コントローラ802によって指定される電圧値(例:2V〜20V)の電圧を生成して出力する。可変定電流源2901は、照明コントローラ802によって指定される電流値(例:0A〜1A)となるようにLEDグループに流れる電流を調整する。このような電流制御方式を採用することでリニアリティの高い調光を実現しやすくなる。また、可変定電流源2901は、可変定電流源2901に印加されている電圧の値を検出して照明コントローラ802にフィードバックし、過電圧から可変定電流源2901を保護している。LED2803a〜LED2803dのそれぞれには並列にスイッチ2903a〜LED2803dが接続されている。照明コントローラ802の点灯制御部2911はこれらのスイッチ2903a〜LED2803dを個別に開閉させることで、LED2803a〜LED2803dのそれぞれを個別に点灯と非点灯とを切り替えることができる。このように、LED2803a〜LED2803dのそれぞれに並列にスイッチ2903a〜LED2803dを接続することで、LED2803a〜LED2803dのいずれか1つを点灯させたり、すべてを点灯させたりするといった個別点灯が可能となる。これは様々な点灯パターンを実現するのに役立っている。なお、点灯制御部2911は可変定電流源2901とグランドとの間に挿入されたメインスイッチ2903eのオン/オフを切り替えることで1つのLEDグループ単位での点灯制御を実行する。通信部2910は点灯パターンを指示する制御信号や点灯の開始を指示するトリガー信号を画像処理装置5の照明制御部812から受信し、点灯制御部2911に渡す。点灯制御部2911は、制御信号に対応する点灯パターンデータ2920を記憶部803から読み出し、点灯パターンデータ2920にしたがってスイッチ2903a〜LED2803dを制御する。点灯パターンデータ2920には、複数の光源のうち1回の点灯タイミングで同時に点灯する光源の識別情報や複数の光源の点灯順序を示す情報などが含まれていてもよい。たとえば、16個のLEDは4ビットの識別情報によって区別可能である。点灯パターンデータ2920には、照明方向の数(分割数)を示す情報が含まれていてもよい。照明方向の数は基本的に4であるが、8であってもよい。点灯パターンデータ2920には、点灯幅(1回の点灯タイミングで同時に点灯する光源の数)を示す情報が含まれてもよい。たとえば、基本的な点灯幅では4つのLEDが点灯する。これに対して、1/2の点灯幅では2個のLEDが点灯し、1/4の点灯幅では1個のLEDが点灯する。点灯パターンデータ2920には、すべてのLEDが点灯するタイミングを指定する情報が含まれてもよい。たとえば、フォトメトリックステレオ法にしたがった点灯を実行する前に全点灯が指示されたり、フォトメトリックステレオ法にしたがった点灯を実行した後に全点灯が指示されたりしてもよい。また、点灯パターンデータ2920には、点灯開始位置を示す情報が含まれていてもよい。たとえば、16個のLEDのうち、最初に点灯すべきLEDを示す識別情報が含まれていてもよい。この場合、最初に点灯すべきLEDから時計回りの照明方向にしたがって点灯すべきLEDが変更されてゆく。なお、点灯パターンデータ2920は、1つの点灯サイクルにおける点灯回数(1回〜16回)を示す情報や点灯すべきLEDの識別情報(0x000〜0xFFFF)によって構成されていてもよい。点灯パターンデータ2920には、1つのLEDあたりの照明光量や点灯時間(露光時間)、点灯間隔を示すインターバル時間などが含まれてもよい。このように点灯制御部2911は記憶部803に記憶された点灯パターンデータ2920であって信号線8を介して受信した制御信号によって特定される点灯パターンデータ2920にしたがって複数のLED2803を点灯させる。よって、各LEDごとに信号線8を配置する場合と比較して、大幅に信号線の数を削減できるようになる。
図30は点灯制御のタイミングシーケンスを示す図である。時刻t1で制御信号を受信すると点灯制御部2911は点灯パターンに応じて電圧値を決定して可変電源2900に設定する。可変電源2900が出力する電圧が目標電圧に安定するまでには時間がかかるため、最初に電圧設定が実行される。これにより点灯の応答性が向上する。
時刻t2で点灯制御部2911は点灯パターンに応じてスイッチ2903a〜LED2803dのオンオフを個別に設定する。つまり、点灯パターンにより点灯することが指示されているLEDに対して並列に接続されているスイッチがオンに切り替えられ、点灯パターンにより非点灯を指示されているLEDに対して並列に接続されているスイッチがオフに切り替えられる。
時刻t3でトリガー信号を受信すると点灯制御部2911はメインスイッチ2903eをオンに切り替える。これにより、点灯パターンにしたがってLEDが点灯する。なお、点灯するLEDの数に応じて(過電圧フィードバックに応じて)点灯制御部2911はLEDグループに印加される電圧を調整する。時刻t4でこの電圧調整が終了する。
時刻t5で点灯制御部2911はメインスイッチ2903eをオフに切り替え、点灯したLEDを消灯させる。点灯制御部2911は次の点灯サイクルに備えて可変電源2900の電圧を十分に高く設定する。可変電源2900の電圧を十分に高く設定することで点灯指令に対する点灯の応答性が向上する。とりわけ、フォトメトリックステレオ法では多数の輝度画像を取得する必要があるため、1回の撮影に要する時間を短縮することが求められる。とりわけ、ワーク2が移動しているときには、各輝度画像でのワーク2の位置がずれてしまうため、撮影時間が長くなればなるほど検査画像の精度が落ちてしまう。よって、照明装置3の応答性の向上がこれらの課題を緩和する。
<点灯パターン>
図31は点灯パターンの一例を示す図である。点灯パターンP1は16個のLEDを用いて4つの照明方向からの照明を実現するパターンである。点灯パターンP2は16個のLEDを用いて8つの照明方向からの照明を実現するパターンである。4つの照明方向からの輝度画像と比較して8つの照明方向からの輝度画像では、法線ベクトルnや反射率の演算精度が向上するため、検査画像の精度が向上するといったメリットがある。また、照明方向を増やすことで、斜め方向に存在するエッジの検出精度や円形ワークの外形検出精度が向上する。点灯パターンP3は16個のLEDを用いて4つの照明方向からの照明を実現するパターンである。点灯パターンP1と比較して点灯パターンP3では1回の点灯で点灯するLEDの数が半分になっている。光源面積が小さくなるため、ワーク2への光源の映り込みを低減できる。点灯パターンP4は16個のLEDを用いて8つの照明方向からの照明を実現するパターンである。点灯パターンP2と比較して点灯パターンP4では1回の点灯で点灯するLEDの数が2倍になっている。これは、検査画像の精度とともに光量も要求されるケースで有利となる。点灯パターンP5は、基本パターンである点灯パターンP1の前後に全点灯を追加したパターンである。全方向から照明して取得された2枚の輝度画像はワーク2の移動量を推定する上で役に立つ。これによりワーク2を移動させながら撮影を実行する場合にも精度よく輝度画像内でのワーク2の位置を補正しながら、検査画像を作成できるようになろう。点灯パターンP6は点灯パターンP1において時計回りに1つだけ点灯開始位置をシフトした点灯パターンである。本実施例では照明装置3がカメラ4から独立して移動できるため、カメラ4の設置方向と照明装置3の設置方向とがずれていることがある。また、一度固定した照明装置3の位置を修正することは簡単ではない。そこで、カメラ4の設置方向と照明装置3の設置方向とのずれの分だけ照明装置3の点灯開始位置を修正することで、輝度画像において想定されている照明方向と実際の照明方向とを一致させることができる。
<点灯パターン照明位置の調整>
図32は点灯開始位置を調整するためのUI3200の一例を示している。検査ツール設定部817は上述した点灯開始位置を調整するための調整部を備えており、表示部7にUI3200を設定する。UI3200は輝度画像を表示する表示領域1103と点灯開始位置を調整するための調整ボタン3201を有している。検査ツール設定部817は輝度画像について想定されている照明方向を示すためのアイコンである矢印3202を輝度画像に対して重畳させて表示する。これにより、輝度画像について想定されている照明方向と実際の照明方向とが一致しているかどうかを確認しやすくなる。ユーザは入力部6を通じて調整ボタン3201を操作する。検査ツール設定部817はこの調整操作を検知し、調整量を照明制御部812に通知する。照明制御部812は点灯開始位置の調整量を照明コントローラ802に送信する。照明コントローラ802の点灯制御部2911は通信部2910を通じて調整量を受け取ると、記憶部803に保存する。これにより、点灯制御部2911は点灯パターンデータ2920によって指定されている点灯パターンにおける点灯開始位置を調整量に応じて修正する。なお、調整が正しいかどうかを判別するために、検査ツール設定部817は撮像制御部813を通じてカメラ4に撮像を実行させて、輝度画像を取得させ、表示領域1103に表示させてもよい。このように検査ツール設定部817は点灯すべきLEDが変更されたときは輝度画像を更新して表示してもよい。なお、図32が示すように、表示制御部851は表示領域1103に表示される輝度画像を切り替えて表示部7に表示してもよい。これにより照明方向の異なるすべての輝度画像において照明方向を正しく設定できるようになろう。図33は、点灯開始位置を調整するためのUI3300の一例を示している。図33が示すように検査ツール設定部817は表示領域1103に4つの輝度画像を並べて表示してもよい。これによりユーザは4つの輝度画像を切り替える手間を省けるようになろう。
<まとめ>
本実施例によれば、フォトメトリック処理部811は、フォトメトリックステレオ法にしたがってカメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルを算出し、複数の輝度画像から算出された法線ベクトルに基づく画素値により構成された傾き画像と、当該傾き画像の縮小画像とについて、注目画素に隣接する隣接画素の法線ベクトルを用いて当該注目画素の画素値を積み上げ演算し、当該画素値を有する検査画像を生成する。とりわけ、本実施例によれば、積み上げ演算において使用される縮小画像の成分に対する重みを与えるパラメータである特徴サイズを設定する特徴サイズ設定部815を設けている。このように特徴サイズという概念を導入することで、フォトメトリックステレオの原理を用いて取得された画像から検査用画像を生成する際のパラメータを容易に設定できるようになる。
特徴サイズ設定部815はそれぞれ値の異なる複数の特徴サイズを設定してもよい。この場合、フォトメトリック処理部811は、特徴サイズ設定部815により設定された複数の特徴サイズのそれぞれについて検査画像を生成してもよい。検査ツールの種類に応じて適切な特徴サイズが異なることが考えられる。よって、それぞれ値の異なる複数の特徴サイズに応じて検査画像を生成することは、検査に対応したより適切な検査画像を選択する上で有利であろう。
傷検査部831はそれぞれ異なる特徴サイズ用いて生成された複数の検査画像に対して傷検査を実行し、判定部840は、傷検査部831の検査結果を用いてワーク2の良否を判定してもよい。複数の検査画像に対して傷検査を実行することで、予め1つの検査画像を選択する必要がなくなり、ユーザにとっては便利であろう。OCR部832はそれぞれ異なる特徴サイズ用いて生成された複数の検査画像に対して文字認識処理を実行し、判定部840はOCR部832の文字認識結果を用いてワーク2の良否を判定してもよい。複数の検査画像に対して文字認識処理を実行することで、予め1つの検査画像を選択する必要がなくなり、ユーザにとっては便利であろう。
本来はフォトメトリックステレオ法によりワーク2の高さを示す高さ画像を生成することができる。しかし、ワーク2の表面の高さを計測するためには、かなり厳密にカメラ4と照明装置3の位置関係を設定する必要がある。一方で、フォトメトリックステレオ法により得られた画像のうち高さの情報を使用せずに形状の情報やテクスチャ(模様)の情報を使用することも可能である。たとえば、傷検査やOCRに高さ画像を使用するのであれば、カメラ4と照明装置3の厳密な設定は不要である。このように正確な高さデータの不要な検査ツールであれば、カメラ4と照明装置3の配置条件を緩和することができる。なお、照明方向は3方向以上であればよい。
フォトメトリック処理部811はカメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルとともにワーク2の表面の反射率を算出し、当該反射率に基づく画素値により構成された反射率画像を生成し、判定部840は反射率画像を用いてワーク2の良否を判定してもよい。これは反射率画像が検査に適している検査ツールも存在するからである。フォトメトリック処理部811はカメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルに基づく画素値により構成された傾き画像を生成し、判定部840は傾き画像を用いてワーク2の良否を判定してもよい。これは傾き画像が検査に適している検査ツールも存在するからである。判定部840は輝度画像を用いてワーク2の良否を判定してもよい。傾き画像や反射率画像に加工する前の輝度画像が検査に適している検査ツールも存在するからである。判定部840は、それぞれ照明方向が異なる複数の輝度画像のうち少なくとも1つの輝度画像を用いてワーク2の良否を判定してもよい。照明方向の違いによって明確になるような傷なども存在するため、そのような傷の検出にはある方向からワーク2を照明することで得られた輝度画像が好適であろう。
判定部840は照明装置3のすべて光源を同時に点灯してカメラ4により取得された輝度画像を用いてワーク2の良否を判定してもよい。いわゆる全方向照明画像を用いることでワーク2の良否が判定されてもよい。たとえば、ワーク2のある部分の面積計算や端子の長さの測定などは、全方向照明画像が好適なことがある。
判定部840はそれぞれ照明方向が異なる複数の輝度画像を合成して生成された合成輝度画像を用いてワーク2の良否を判定してもよい。合成輝度画像は全方向照明画像に類似した画像となる。よって、全方向照明画像に代えて合成輝度画像を用いることで、全方向照明画像を取得することなく、検査を実行することが可能となろう。全方向照明画像が必要な場合、それぞれ照明方向が異なる4枚の輝度画像と、同時に4方向から照明して得られた1枚の全方向照明画像とを取得しなければならない。つまり、5回の照明と5回の撮像とが必要となる。一方で、合成輝度画像を使用すれば、4回の照明と4回の撮像とを実行すればよい。このように合成輝度画像を採用することで、短時間で複数の検査画像を処理する必要があるときにはプロセッサ810の処理負荷を軽減できる。また、画像の取得枚数が多くなればなるほどライン1の搬送速度を低下させる必要が生じるが、本実施例では、画像の取得枚数を削減できるため、ライン1の搬送速度の高速化も可能である。
記憶装置820は検査画像を記憶して保持してもよい。判定部840または画像処理部830は記憶装置820から検査画像を読み出して検査を実行し、検査結果に基づいてワーク2の良否を判定してもよい。なお、記憶装置820は内蔵メモリや可搬型記憶メディア、ネットワークストレージのいずれであってもよい。たとえば、可搬型記憶メディア、ネットワークストレージに検査画像を記憶すれば、検査画像を生成した装置とは異なる装置において検査処理を実行することも可能となろう。
記憶装置820はそれぞれ値の異なる特徴サイズを適用して生成された複数の検査画像を記憶してもよい。記憶装置820は、検査画像に加え、傾き画像および反射率画像のうち少なくとも一方を記憶してもよい。画像選択部816は複数の検査画像から1つの検査画像を選択してもよい。また、検査ツール設定部817は画像選択部816により選択された検査画像に対して検査ツールを設定してもよい。それぞれ値の異なる特徴サイズを適用して生成された複数の検査画像のうち検査に不要なものも存在しうる。よって、ユーザは検査ツールに応じて検査画像を設定してもよい。
図15などを用いて説明したように、画像処理部830は良品から取得された基準画像を用いてパターンサーチを実行して検査領域を設定してもよい。判定部840は検査領域において実行された検査の結果を用いてワーク2の良否を判定してもよい。検査領域は、たとえば、文字認識領域である。
図11、図21ないし図26を用いて説明したように、画像選択部816はカメラ4により取得された複数の輝度画像および検査画像のうち保存対象もしくは出力対象となる画像を選択してもよい。また、画像選択部816は複数の輝度画像、検査画像、照明装置3が備える複数の光源をすべて点灯させて取得された輝度画像および複数の輝度画像を合成して得られた合成輝度画像から保存対象もしくは出力対象となる画像を選択してもよい。さらに、画像選択部816はそれぞれ特徴サイズが異なる複数の検査画像から保存対象もしくは出力対象となる画像を選択してもよい。さらに、画像選択部816は複数の輝度画像、検査画像およびワーク2の表面の反射率を画素値とした反射率画像から保存対象もしくは出力対象となる画像を選択してもよい。このように検査に関連する画像を適宜選択できるようにすることで、所望の画像を保存または出力することが容易となろう。
画像を保存または出力する条件を設定する条件設定部819がさらに設けられてもよい。たとえば、図22や図26を用いて説明したように、条件設定部819は常に画像を保存または出力するモードと判定部840によりワーク2が良品ではないと判定されたときに画像を保存または出力するモードとのうちいずれかを設定してもよい。図21ないし図26を用いて説明したように、プロセッサ810は、判定部840が判定を終了した後でまたは前に画像を保存または出力する条件が満たされているかどうかを判断してもよい。たとえば、検査フローにおいて検査が終了した時点で画像を保存するかどうかが判断されてもよいし、検査フローのいずれかの工程で画像を保存するかどうかが判断されてもよい。とりわけ、後者の場合は検査フローの途中で生じる中間画像についても保存することが可能となろう。このような中間画像は検査に失敗した原因を探り、制御パラメータを調整する際に役立つであろう。
本実施例によれば、照明装置3は、略環状に配置された複数のLED2803と、複数のLED2803のそれぞれが出力する光を拡散させる光拡散部材2703と、点灯開始を指示されると所定の点灯パターンにしたがって複数の光源を点灯させる点灯制御部2911とを有している。とりわけ、照明装置3はカメラ4とは独立して移動することでワーク2に対する距離を調整する。これによりワークの種類や置き方に応じて照明装置3をワークから遠ざけて正反射光を利用したり、照明装置3をワークに近づけて拡散反射光を利用したりできるようになる。なお、点灯制御部2911などの照明コントローラ802は照明装置3の外部に配置されてもよい。
図28(C)〜図28(E)を用いて説明したように、複数のLED2803のうち隣り合った2つのLED2803の間には遮光部材2805が設けられてもよい。これにより隣り合った2つのLED2803について光量の均一性と光源の独立性とのバランスが維持される。
照明装置3は、複数のLED2803が実装された第一基板であるLED基板2802と、点灯制御部2911が実装された第二基板である制御基板2801とを有していてもよい。基板を分離することで複数のLED2803の発熱の影響を緩和できる。
図27や図28を用いて複数のLED2803が円環状に配置される例を説明した。円環状配置は各照明方向から平行光を実現する上で有利である。なお、円環状は一例にすぎず、正多角形的な配置などが配置されてもよい。たとえば、16個のLED2803が正十六角形の各頂点に配置されてもよい。
照明装置3は、複数のLED2803の点灯パターンを記憶した記憶部803を有していてもよい。点灯制御部2911は、制御信号やトリガー信号により点灯開始を指示されると記憶部803に記憶された点灯パターンにしたがって複数のLED2803を点灯させてもよい。このように点灯制御部2911は記憶部803に記憶された点灯パターンデータ2920であって信号線8を介して受信した制御信号によって特定される点灯パターンデータ2920にしたがって複数のLED2803を点灯させてもよい。よって、各LEDごとに信号線8を配置する場合と比較して、大幅に信号線の数を削減できるようになる。たとえば、16個のLED2803を画像処理装置5から制御しようとすると少なくとも17本の信号線が必要となる。しかしながら、本実施例では点灯パターンを指示する制御信号を伝送できる信号線8を採用できるため、信号線の数を減らすことが可能となり、画像処理装置5と照明装置3とを接続するケーブルのコストを削減できる。
記憶部803は、それぞれ同時に点灯する光源の数が異なる複数の点灯パターン(P1やP3など)を記憶していてもよい。これにより光量を簡単に半分または2倍に変更することが可能となる。記憶部803は、それぞれ照明方向の数が異なる複数の点灯パターン(P1やP2など)を記憶していてもよい。これにより照明方向の異なる輝度画像を容易に得られるようになる。記憶部803は、それぞれ4方向から順番に検査対象物を照明する複数の点灯パターン(P1やP3、P5、P6)や8方向から順番に検査対象物を照明する点灯パターン(P2やP4)を記憶していてもよい。これにより光量を簡単に半分または2倍に変更することが可能となる。記憶部803は、複数の光源のすべてを同時に点灯させる点灯パターン(P5など)を記憶しておいてもよい。これにより簡単に全方向照明画像を得られるようになる。画像処理部830の推定部833は全方向照明画像からワーク2の位置を推定する。点灯パターンP5が示すように照明制御部812および撮像制御部813は第1タイミングにおいて複数のLED2803のすべてを同時に点灯させてカメラ4に第1の輝度画像を取得させる。また、点灯パターンP5が示すように、照明制御部812および撮像制御部813は第Nタイミング(点灯パターンP5では6番目のタイミング)において複数のLED2803のすべてを同時に点灯させてカメラ4段に第2の輝度画像を取得させる。推定部833は第1の輝度画像と第2の輝度画像とからワーク2の移動量を推定する。つまり、推定部833は、点灯パターンP5のうち第1タイミングの輝度画像と第6タイミングの輝度画像とから第2タイミングないし第5タイミングの輝度画像におけるワーク2の位置を推定する。フォトメトリック処理部811は、推定部833から各タイミングでのワーク2の移動量を取得して、第2タイミングないし第5タイミングの輝度画像におけるワーク2の位置が一致するように各輝度画像を補正し、補正した輝度画像から検査画像を作成する。ワーク2の位置を推定するには、全方向照明画像が有利であるため、点灯パターンP5のように複数のLED2803のすべてを同時に点灯させることを含む点灯パターンが必要となる。
図29を用いて説明したように、複数のLED2803は、所定数(例:4個)のLED2803ごとに光源グループを形成しており、各光源グループにおいて複数のLED2803が直列に接続されていてもよい。複数のLED2803a〜2803dのそれぞれには点灯制御部2911によってオン/オフを切り替え可能なスイッチ2903a〜2903dが並列に接続されている。これにより、点灯パターンに応じて自在に複数のLED2803a〜2803dの点灯と非点灯とを切り替えることが可能となる。つまり、様々な点灯パターンを採用できる。
図29を用いて説明したように、点灯制御部2911は、複数のLED2803に電圧を供給する可変電源2900と、複数のLED2803に流れる電流を調整する可変定電流源2901と、可変定電流源2901のオン/オフを切り替えるメインスイッチ2903eを制御してもよい。つまり、図30を用いて説明したように、点灯制御部2911は、可変電源が供給する電圧が十分に高くなってから、点灯パターンに応じて複数のLED2803のそれぞれに並列に接続されているスイッチを切り替え、メインスイッチ2903eをオンに切り替えて点灯パターンに応じて複数のLED2803のいずれかを点灯させてもよい。これにより点灯の高い応答性と電力効率の向上とを達成できるであろう。点灯制御部2911は、可変定電流源2901に過電圧が印加されないように可変定電流源2901からフィードバックされる電圧値に応じて可変電源2900の電圧を制御してもよい。これにより可変定電流源2901を過電圧から保護できるようになろう。
図2などを用いて説明したように、照明装置3は、それぞれ光量が等しい光源のペアを少なくとも2つ含んでいる。図2においては、照明光L1と照明光L2とはそれぞれ光量が等しく、照明方向も180度異なっており、ペアを構成している。同様に、照明光L3と照明光L4とはそれぞれ光量が等しく、照明方向も180度異なっており、ペアを構成している。このように少なくとも2つの光源ペアを用意することで、精度よく、ワークの各表面の法線ベクトルや反射率を算出できるようになる。図30などを用いて説明した点灯パターンについてもこのような光源ペアが形成されている。たとえば、点灯パターンP1、P3、P5、P6では2つの光源ペアが設けられており、点灯パターンP2、P4では4つの光源ペアが設けられている。