以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
図1は外観検査システムの一例を示す図である。ライン1は検査対象物であるワーク2を搬送する搬送ベルトなどである。照明装置3はフォトメトリックステレオ法にしたがって検査対象物を照明する照明手段の一例である。カメラ4はフォトメトリックステレオ法にしたがって前記照明された検査対象物からの反射光を受光して輝度画像を生成する撮像手段の一例である。とりわけ、カメラ4は、非線形なトーンカーブ特性に基づいて反射光を輝度値に変換することにより輝度画像を生成する。画像処理装置5は、カメラ4により取得された複数の輝度画像からワーク2の表面の法線ベクトルを算出し、複数の輝度画像から算出された法線ベクトルに基づく画素値により構成された傾き画像と、当該傾き画像の縮小画像とについて、注目画素に隣接する隣接画素の法線ベクトルを用いて注目画素の画素値を積み上げ演算し、画素値を有する検査画像を生成し、検査画像を用いて検査対象物の良否を判定する外観検査装置である。傾き画像は法線ベクトル画像と呼ばれることもある。画像処理装置5は輝度画像から反射率画像(アルベド画像)を作成してもよい。表示部7は検査に関連する制御パラメータを設定するためのユーザインタフェースや傾き画像、反射率画像、検査画像などを表示する。入力部6は、コンソール、ポインティングデバイス、キーボードなどであり、制御パラメータを設定するために使用される。
<フォトメトリクスステレオの原理>
一般的なフォトメトリックステレオ法では、図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から法線ベクトルを算出し、算出された法線ベクトルと複数の輝度画像の各々対応する画素の輝度値に基づいて各画素の反射率に比例した画素値を算出することで反射率画像である1枚のテクスチャ画像711が求められる。この生成方法としては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を用いて当該注目画素の画素値を積み上げ演算し、当該画素値を有する検査画像を生成する演算手段(検査画像生成手段)として機能する。なお、具体的には上述した数式などを使用して検査画像が生成される。フォトメトリック処理部811はカメラ4における入力(受光量)と出力(輝度値)とが線形となるように輝度画像を補正する補正部861を有している。調整部862は入力部6からの指示に応じて輝度画像の明るさを調整する。照明制御部812は、照明コントローラ802に対して制御コマンドを送信することで照明パターンや照明切り替えタイミングなどを制御する。撮像制御部813は、カメラ4を制御する。UI管理部814は、検査ツールを設定するためのユーザインタフェース(UI)や検査画像を生成するために必要となるパラメータを設定するためのUIなどを表示部7に表示し、入力部6から入力された情報したがって検査ツールやパラメータを設定する。とりわけ、特徴サイズ設定部815は積み上げ演算において使用される縮小画像の成分に対する重みwを与えるパラメータである特徴サイズを設定する設定手段として機能する。画像選択部816は複数の輝度画像や複数の検査画像、複数の傾き画像、複数の反射率画像のうち表示すべき画像などを選択したりする。画像選択部816はカメラ4により取得された複数の輝度画像および検査画像のうち保存対象もしくは出力対象となる画像を選択してもよい。検査ツール設定部817は画像選択部816により選択された検査画像に対して検査ツールを設定する。基準画像設定部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により設定された傷検出条件に基づいて傷検査部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が構成されてもよい。
<線形性の補正>
フォトメトリックステレオ法では異なる方向から照明して最低3枚(一般的には4枚)の輝度画像を取得する必要がある。照明光は異なる方向からワーク2へ照射される。そのため、ワーク表面の形状や材質によっては、ある照明方向からは飽和(白とびや黒つぶれ)が発生することなく正しく輝度画像を取得できたとしても、他の照明方向からは正しく輝度画像を取得できないことがある。これではワーク表面の法線ベクトルなどを正しく求めることができない。
輝度画像において白とびなどの飽和を抑制するには、HDR(ハイダイナミックレンジ)合成が有効である。ただし、一般的なHDR撮影では露光時間を変えて複数回の撮影が必要となる。たとえば、短い露光時間と長い露光時間で撮像した2つの輝度画像を合成して一つの照明方向についての輝度画像を生成することが考えられる。4つの照明方向からワーク2に照明光を照射する場合、合計では8回の撮像が必要になる。これは輝度画像の撮影処理時間の増加を招く。
一方でマルチスロープHDRでは1回の撮像によりダイナミックレジンを拡張することができるといったメリットがある。しかし、マルチスロープHDRでは撮像素子に入射する光の受光量と、その受光量に対して出力される輝度値との関係が非線形になってしまう。これはフォトメトリックステレオ法では大きなデメリットとなり、フォトメトリックステレオ法ではマルチスロープHDRが採用されていない原因となっていた。
図27は受光量と輝度値との関係を示す図である。図中のnormalは受光量と輝度値との関係が線形となる一般的な撮像素子の特性を示している。mHDRはマルチスロープHDRを実行する撮像素子についての受光量と輝度値との特性を示している。normalでは受光量と輝度値との関係が線形となるが、mHDRではこの関係が非線形となってしまう。受光量と輝度値との関係が非線形となると、輝度画像から求められる法線ベクトルnや反射率ρも正確でなくなってしまうため、正確な検査画像を生成できなくなってしまう。たとえば、ワーク2の表面に印刷された模様が誤って立体的な形状として表面形状画像(傾き画像)に表れてしまうことがある。よって、受光量と輝度値との関係を線形に補正する補正部861が必要となる。なお、受光量と輝度値との関係はカメラ4に採用される撮像素子の個体ごとに異なることがあるため、個体差に応じた補正が必要となることもある。そこで、本実施例では、補正部861がカメラ4における受光量と輝度値との関係が線形となるように輝度画像を補正する。これにより、フォトメトリックステレオの原理を用いて取得された輝度画像から正確な検査画像が得られるようになる。
補正部861は記憶装置820に予め記憶されている補正データ824を用いて輝度画像データを補正する。補正データ824は、対数曲線の関数や低輝度領域と高輝度領域とでそれぞれ異なる傾きの直線の関数、受光量と輝度値との対応関係を示すトーンカーブ特性などを示すデータである。たとえば、補正部861は対数曲線の関数に対して輝度画像の各画素の輝度値を代入することで、補正された輝度値を取得する。同様に補正部861は低輝度領域と高輝度領域とでそれぞれ異なる傾きの直線の関数に対して輝度画像の各画素の輝度値を代入することで、補正された輝度値を取得してもよい。図27に示したように、低輝度領域では線形性が得られているが、高輝度領域では線形性が得られていない場合に、高輝度領域の輝度値を増加させることで、低輝度領域から高輝度領域の全範囲にわたって十分な線形性が得られるようになる。また、カメラ4に搭載されている撮像素子の個体差が原因となる非線形性に対処してもよい。工場出荷時に予めカメラ4の撮像素子のトーンカーブ特性を取得して補正データ824として記憶装置820に記憶させておく。補正データ824はトーンカーブ特性を示すデータそのものでもあってもよいし、トーンカーブ特性を線形に補正する補正テーブルであってもよい。補正部861はこの補正データ824を参照して輝度値を補正する。このように補正に必要となる関数や数値などのデータは予め記憶装置820に記憶されている。
このようにマルチスロープHDRを採用することで画像の取得時間を増加させることなく、白とびや黒つぶれを緩和することが可能となる。また、補正部861によって受光量と輝度値との対応関係を線形に補正することで、マルチスロープHDRのデメリットを緩和できる。つまり、フォトメトリックステレオ法でもマルチスロープHDRが採用できるようになる。
<明るさの調整>
ところで白とびや飽和画素を削減する方法としては輝度画像の明るさを調整する方法がある。UI管理部814の表示制御部851はカメラ4により取得された輝度画像を表示部7に表示させる。さらにUI管理部814の検査ツール設定部817は輝度画像の明るさを調整するためのUIを表示し、UIを通じて入力された調整値を調整部862に渡す。調整部862はこの調整値に応じて輝度画像の各輝度値を調整する。これにより白とびや黒つぶれを軽減してもよい。
図28は明るさ調整のためのUIの一例を示している。表示制御部851はUI2800aにおいてそれぞれ照明方向の異なる4つの輝度画像を並べて表示している。そのうち、左方向から照明を行って取得した輝度画像のうち破線2801で囲んだ部分に白とびが発生している。しかしながら、これが白とびであるかどうかをユーザが判断することは簡単ではない。そこで、表示制御部851はUI2800bに表示している画像について画素値が飽和している画素(白とび画素や黒つぶれ画素)を求め、これらを強調表示(例:赤色表示や点滅表示など)してもよい。白とび画素や黒つぶれ画素を明確にするために、表示制御部851は白とび画素や黒つぶれ画素をそれぞれ異なる色(例:赤色と青色など)に着色してもよい。
表示制御部851は、白とび画素や黒つぶれ画素の強調表示とともにまたは強調表示に代えて、白とび画素の比率や黒つぶれ画素の比率を通知部2803に表示してもよい。比率は飽和している画素と飽和している画素との割合であってもよいし、画像を構成しているすべての画素に対する飽和画素の割合であってもよい。表示制御部851は、複数の輝度画像のそれぞれにおいて白とび画素の数と黒つぶれ画素の数をカウントし、白とび画素の数の最大値から白とび画素の比率を算出し、黒つぶれ画素の数の最大値から黒つぶれ画素の比率を算出し、これを通知部2803に表示してもよい。この場合、表示領域1103に表示される画像の種類を問わずに、通知部2803には白とび画素の比率や黒つぶれ画素の比率が表示される。
図29は輝度画像から生成される検査画像において強調表示を適用する例を示している。それぞれ照明方向の異なる4つの輝度画像2901up、2901down、2901left、2901rightのうち斜線で示した部分に白とびが発生している。図29において矢印2903は照明方向を示している。フォトメトリック処理部811はこれの輝度画像を用いて表面形状画像やテクスチャ画像などを作成する。しかし、ユーザはこれらの検査画像から白とびや黒つぶれを把握することは困難である。検査画像は輝度を示すものではなく法線ベクトル(傾き)などを示すものだからである。そこで、表示制御部851は輝度画像において白とび画素や黒つぶれ画素の位置(座標)を求め、検査画像2902を構成する画素のうち、輝度画像における白とび画素や黒つぶれ画素の位置に一致する位置の画素を強調表示してもよい。図29では3つの輝度画像で発生している白とび画素を検査画像2903において強調表示している。これにより、ユーザは検査画像を見ても白とび画素や黒つぶれ画素の発生を認識できるようになる。なお、表示制御部851は、合成輝度画像を構成している画素について輝度画像における飽和画素の位置と数を求め、飽和画素を合成輝度画像において強調表示してもよい。ところで、フォトメトリック処理部811はそれぞれ照明方向が異なる複数の輝度画像において座標が共通する複数の画素の画素値を平均化して平均画像を生成する平均画像生成手段として機能してもよい。表示制御部851が複数の輝度画像においていずれかの画素で画素値が飽和しているときに、平均画像において当該画素と座標が一致している画素を強調表示してもよい。
表示制御部851は、複数の輝度画像のいずれかで画素値が飽和(白とびまたは黒つぶれ)している画素が存在するときに、複数の輝度画像のうち他の輝度画像においても当該画素と座標の一致する画素について強調表示してもよい。これは、表示制御部851が複数の輝度画像を一枚ずつ切り替えて表示する際に有効であろう。つまり、複数の輝度画像のうち現在表示している輝度画像については飽和画素が存在していなくても、非表示となっている輝度画素に生じている飽和画素の存在を明示することが可能となる。
<グローバルシャッター>
ところでカメラ4のシャッター方式としてはローリングシャッター方式とよばれる電子シャッターが一般的である。図30(A)が示すようにローリングシャッター方式の撮像素子では露光中には画像信号を取り出すことができない。そのため、画像の取得に要する処理時間が長い。フォトメトリックステレオ法では、多数の輝度画像を取得するために全体での画像取得時間が長くなることはきわめて問題である。さらに、ローリングシャッター方式の撮像素子で移動体を撮像すると、移動体が歪んで写ってしまうことがある。とりわけ、フォトメトリックステレオ法では、ワーク2が歪んで写ってしまうと、検査画像を正しく生成できなくなってしまう。これは輝度画像から求められる法線ベクトルなどの誤差が大きくなってしまうからである。
これらの課題が顕著となる場合にはカメラ4に対してグローバルシャッター方式を採用してもよい。図30(B)が示すようにグローバルシャッター方式の撮像素子では露光と画像信号の取り込みとを並列に実行できるため、画像取得時間を短縮できる。また、グローバルシャッター方式の撮像素子ではワーク2が移動していてもワーク2が歪んで写りにくくなるメリットもある。
<白とびや黒つぶれの影響>
図31は飽和画素と検査画像との関係を示す図である。輝度画像3101は白とび画素が多い輝度画像である。検査画像3111は白とびが多い輝度画像3101から生成された表面形状画像である。輝度画像3102は白とびや黒つぶれのない輝度画像である。検査画像3112は白とびや黒つぶれのない輝度画像3102から生成された表面形状画像である。輝度画像3103は黒つぶれ画素が多い輝度画像である。検査画像3113は黒つぶれが多い輝度画像3103から生成された表面形状画像である。輝度画像3101〜3103を比較するとある程度は白とびや黒つぶれの発生を認識できるが、検査画像3111〜3113ではもはや白とびや黒つぶれの発生を認識することは不可能である。よって、輝度画像において白とびや黒つぶれが発生している場合は、検査画像においても白とびや黒つぶれを強調表示することで、ユーザに対して白とびや黒つぶれの発生を認識させやすくなろう。
<まとめ>
本実施例によれば、フォトメトリック処理部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が判定を終了した後でまたは前に画像を保存または出力する条件が満たされているかどうかを判断してもよい。たとえば、検査フローにおいて検査が終了した時点で画像を保存するかどうかが判断されてもよいし、検査フローのいずれかの工程で画像を保存するかどうかが判断されてもよい。とりわけ、後者の場合は検査フローの途中で生じる中間画像についても保存することが可能となろう。このような中間画像は検査に失敗した原因を探り、制御パラメータを調整する際に役立つであろう。
図27ないし図31を用いて説明したように、補正部861がカメラ4における受光量と当該受光量に対応する輝度値とが線形となるように輝度画像を補正してもよい。これにより、フォトメトリック処理部811が複数の輝度画像を合成してワーク2の表面の傾きまたは反射率に応じた複数の画素値を精度よく生成できるようになろう。その結果、検査画像を用いて検査対象物の良否を判定する判定部840の判定精度も向上しよう。
補正部861は対数曲線の関数や低輝度領域と高輝度領域とでそれぞれ異なる傾きの直線の関数を用いて輝度画像を補正してもよい。また、補正部861は記憶装置820に記憶されたトーンカーブ特性に基づいて輝度画像を補正してもよい。さらに、補正部861は記憶装置820に記憶された補正テーブルに基づいて輝度画像を補正してもよい。受光量と輝度値との関係はカメラ4に依存するため、予めカメラ4の特性を図っておくことで適切な補正データを作成することが可能である。このようなカメラ4にとって適切な補正データを使用することで効率よく線形性を確保できるようになる。
表示制御部851が表示部7に表示している輝度画像の明るさを調整する調整部862がさらに設けられてもよい。表示制御部851は輝度画像を構成している複数の画素のうち画素値が飽和している画素を強調表示することで、ユーザは調整部862による明るさの調整結果を容易に判別できるようになろう。表示制御部851はそれぞれ照明方向が異なる複数の輝度画像を並べて表示してもよい。これにより、各輝度画像における白とびや黒つぶれを対比することが可能となろう。表示制御部851は複数の輝度画像のそれぞれで画素値が飽和している画素を強調表示してもよい。画素値が飽和している(白とびや黒つぶれしている)ことがわかりくい場合に、このような強調表示は有効であろう。表示制御部851は、複数の輝度画像のいずれかで画素値が飽和している画素が存在するときに、複数の輝度画像のうち他の輝度画像においても当該画素と座標の一致する画素について強調表示してもよい。表示制御部851が複数の輝度画像を1枚ずつ切り替えて表示するときには、一度にすべて輝度画像を対比することができない。そこで、いずれか1つの輝度画像に白とびや黒つぶれが生じているときには、他の輝度画像においても白とびや黒つぶれを強調表示することで、ユーザが白とびや黒つぶれの発生を容易に認識できるようになろう。検査画像を生成する際に使用された複数の輝度画像においていずれかの画素で画素値が飽和しているときに、表示制御部851は、検査画像において当該画素と座標が一致している画素を強調表示してもよい。図31を用いて説明したように検査画像においては白とびや黒つぶれの発生を認識することは困難である。そこで、検査画像において強調表示を採用することで、ユーザが白とびや黒つぶれの発生を容易に認識できるようになろう。フォトメトリック処理部811はそれぞれ照明方向が異なる複数の輝度画像において座標が共通する複数の画素の画素値を平均化して平均画像(平均輝度画像)を生成してもよい。複数の輝度画像においていずれかの画素で画素値が飽和しているときに、表示制御部851は、検査画像において当該画素と座標が一致している画素を強調表示してもよい。これにより合成後の輝度画像においても白とびや黒つぶれを認識しやすくなろう。カメラ4はグローバルシャッターを備えていてもよい。フォトメトリックステレオ法では多数の輝度画像を取得するため、画像の取得時間が長くなりやすい。とくにHDRを適用すると画像取得時間が倍増する。そこで、グローバルシャッターを採用することで、画像取得時間を短縮しつつ、輝度画像におけるワーク2の歪みを低減することが可能となろう。