この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[A.概要]
この発明の実施の形態に従う画像処理装置は、異なる露光条件で対象物(以下「ワーク」とも称す。)を複数回撮像することで複数の画像データ(以下「入力画像データ」とも称す。)を取得し、これらの取得した入力画像データがそれぞれ有する画素情報(色情報および輝度)を反映した合成画像データを生成する。このような画像合成処理によって、撮像部が固有に有しているダイナミックレンジ(検出感度に応じた階調範囲)に比較して、より広いダイナミックレンジをもつ画像データ(以下「合成画像データ」とも称す。)を生成する。
特に、本実施の形態によれば、より広いダイナミックレンジをもつ合成画像データを対象として直接的に各種の画像処理装置(後処理)を行なうとともに、その後処理によって得られた画像データ(以下「後処理後画像データ」とも称す。)を、出力先の階調範囲に適合したダイナミックレンジをもつ画像データ(以下「出力画像データ」とも称す。)に変換する。この後処理は、典型的には、撮像されたワークに関する検出または計測を容易化するための画像処理である。この後処理では、合成画像データが有するダイナミックレンジを維持したまま処理が行なわれる。そのため、後処理後画像データの生成時には、合成画像データの有する画素情報は失われない。なお、以下の説明では、後処理後画像データの生成処理と、後処理後画像データから出力画像データへの変換処理とを、「後処理」と総称する場合もある。
これにより、ダイナミックレンジを拡大した合成画像データを用いてより精度の高い画像処理を行なうことができるとともに、出力先の能力に応じた表示や処理などを行なうことができる。
以下、本実施の形態に従う画像処理装置の構成および合成画像データを生成するための画像合成処理について説明した後に、本実施の形態に従う画像処理装置で実施される各種の後処理について説明する。
[B.全体装置構成]
図1は、この発明の実施の形態に従う画像処理装置を含む視覚センサシステム1の全体構成を示す概略図である。
図1を参照して、視覚センサシステム1は、代表的に生産ラインなどに組込まれ、ワーク2における欠陥などを光学的に検出したり、その大きさなどを光学的に計測したりする。一例として、ワーク2は、ベルトコンベヤなどの搬送ライン6によって搬送される。なお、搬送開始や停止および搬送速度の変更といった搬送ライン6に対する制御は、図示しないPLC(Programmable Logic Controller)などによって行なうようにしてもよい。
搬送ライン6に対して所定の相対位置に配置された撮像部8は、ワーク2がその視野内に到達すると、複数回の撮像を開始する。このようなワーク2の到達は、搬送ライン6に設けたセンサによって検出される。典型的には、図1に示すように、搬送ライン6の両サイドに光電センサを配置し、その光電センサからの検出信号(以下「トリガ信号」とも称す。)に応答して、撮像部8による撮像が開始される。より具体的には、光電センサは、同一の光軸上に配置された受光部4aと投光部4bとからなり、投光部4bから放射される光がワーク2で遮蔽されることを受光部4aが検出することによって、トリガ信号が出力される。なお、画像合成処理が中止されている期間中には、撮像部8は、所定の周期で繰り返し撮像を行なうようにしてよい。
撮像部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階調)の範囲で規定されるものとする。すなわち、撮像部8は、その検出感度に応じた256の階調範囲で規定される画素情報をもつ入力画像データを出力する。もちろん、撮像部8から出力される入力画像データが有する画素情報は、より多くの情報量、たとえば、10ビットもしくは12ビットであってもよい。
さらに、撮像部が有する分光感度は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は、予め格納されたプログラムを実行することで、本実施の形態に従う画像処理装置を実現する。
[C.ハードウェア構成]
図2は、この発明の実施の形態に従うコンピュータ100のハードウェア構成を示す概略構成図である。
図2を参照して、コンピュータ本体101は、図1に示すFD駆動装置111およびCD−ROM駆動装置113に加えて、相互にバスで接続された、CPU(Central Processing Unit)105と、メモリ106と、固定ディスク107と、カメラインターフェイス部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でのプログラム実行に応じて、各種の情報を一時的に格納する。
カメラインターフェイス部109は、コンピュータ本体101と撮像部8との間のデータ通信を仲介する。より具体的には、カメラインターフェイス部109は、画像バッファ109aと露光時間設定部109bとを含む。画像バッファ109aは、撮像部8で撮像され逐次伝送される入力画像データを一旦蓄積し、1回の撮像分の入力画像データが蓄積されると、その蓄積されたデータをメモリ106または固定ディスク107へ転送する。露光時間設定部109bは、CPU105からの内部コマンドに従って、それぞれの撮像開始前に撮像部8にコマンドを送信し、撮像部8における露光時間を設定する。
PLCインターフェイス部115は、コンピュータ本体101と図示しないPLCとの間のデータ通信を仲介するための装置である。また、センサインターフェイス部117は、上述した光電センサなどからのトリガ信号を受信して、CPU105へ伝達する。
固定ディスク107は、CPU105が実行するプログラムや入力画像データなどを格納する不揮発性の記憶装置である。
コンピュータ本体101に接続されるモニタ102は、CPU105が出力する情報を表示するための表示部であって、一例としてLCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などから構成される。
マウス104は、クリックやスライドなどの動作に応じたユーザからの指令を受付ける。キーボード103は、入力されるキーに応じたユーザからの指令を受付ける。なお、入力装置としては、キーボード103およびマウス104に限られることなく、タッチデバイスや押ボタンなどを用いることもできる。
[D.動作モード]
本実施の形態に従う視覚センサシステム1は、ワーク2を複数回撮像することで合成画像データを生成するとともに、必要に応じて当該合成画像データに対して検出や計測を実行する「稼動モード」と、ワーク2についての画像合成処理に係る設定を行なうための「設定モード」とを選択することが可能である。ユーザは、「設定モード」において、生成された合成画像データをモニタ102上で参照しながら、画像合成処理に係る設定を調整することができる。
[E.画像合成処理]
次に、合成画像データを生成するための画像合成処理について説明する。本実施の形態に従う画像合成処理は、主として、撮像部8における固有のダイナミックレンジより広いダイナミックレンジを有する画像データを合成するためのものである。
図3は、ワークとして腕時計の裏面を撮像した場合の入力画像データを示す図である。
図3(a)は、露光時間が相対的に長い条件下で1回の撮像により取得された入力画像データを示し、図3(b)は、露光時間が相対的に短い条件下で1回の撮像により取得された入力画像データを示す。なお、図3(a)および図3(b)において、入射する光強度は同じ条件であるとする。図3に示すワークは、金属製の時計本体部と皮革製のバンド部とを含む。両者の反射率は大きく異なるので、各部から放射される光強度(単位時間当たりに放射される光エネルギー)にも大きな差がある。
そのため、露光時間が長くなると、相対的に反射率の高い時計本体部は白飛びを生じてしまい、有効な画素情報を取得することができない。すなわち、図3(a)に示すように、時計本体部に記された文字が識別できなくなっていることがわかる。これに対して、露光時間が短くなると、相対的に反射率の低いバンド部から十分に光エネルギーを受光することができず、こちらについても有効な画素情報を取得することができない。すなわち、図3(b)に示すように、バンド部は黒つぶれを生じており、ステッチなどの欠陥が識別できなくなっていることがわかる。
そこで、本実施の形態に従う画像処理装置は、同一のワーク2を異なる露光条件(露光時間)で複数回撮像し、取得された複数の入力画像データから合成画像データを生成する。入力画像データは、撮像部8に入射する光強度の分布を示す画素情報(各色の輝度を示す階調値)を含んでおり、本実施の形態に従う画像処理装置は、各画素に対応するそれぞれの入力画像データに含まれる光強度を示す値(各色の輝度を示す階調値)と、対応する入力画像データの撮像時における露光条件(露光時間)とに基づいて、合成画像データの各画素の色情報(以下「合成色情報」とも称す。)および輝度(以下「合成輝度」とも称す。)を算出する。そして、合成色情報及び合成輝度に基づいて、合成画像データが生成される。
すなわち、合成輝度は、撮像部8の撮像素子に入射する光強度に応じた輝度値に相当し、有効ダイナミックレンジ内で一定以上の輝度分解能を有する。なお、有効ダイナミックレンジとは、合成輝度の最小値と最大値との差、あるいはこれらの間の範囲を意味する。
概略すると、この合成輝度の算出処理では、各画素について、入力画像データのそれぞれにおける光強度を示す値(輝度)が露光時間で規格化される。そして、その規格化された光強度の大きさが適切な範囲にあるものが優先的に採用される。言い換えれば、合成画像データにおける各画素の合成輝度は、複数の入力画像データの対応する画素がそれぞれもつ情報のうち、ワーク2から放射される光強度(単位時間当たりに入射する光エネルギー)に適した露光時間で撮像された画素がもつ情報を主成分として算出される。このような処理によって、適切な露光時間で撮像された輝度をもつ画素の集合として、合成画像データを生成できる。図3(c)は、本実施の形態に従う画像合成処理によって生成された合成画像データの一例を示す図である。図3(c)に示すように、上述の画像合成処理を行なうことで、図3(a)のような白飛びや図3(b)に示すような黒つぶれを含まない合成画像データを生成できる。
[F.処理概要]
図4および図5は、この発明の実施の形態に従う画像処理装置における処理概要を説明するための概念図である。図4は、後続処理として検出/計測処理が実行される場合の例を示し、図5は、後続処理としてモニタなどへの表示処理が実行される場合の例を示す。
図4および図5を参照して、本実施の形態に従う画像処理装置は、撮像部8に対して、異なる露光条件で複数回撮像を行なうことで、複数の入力画像データを取得する。入力画像データの各々は、撮像部8の検出感度に応じた階調範囲(ダイナミックレンジ)で規定される画素情報を有する。
そして、これらの複数の入力画像データに対して、画像合成処理を行なうことで、ダイナミックレンジが拡大された合成画像データが生成される。すなわち、合成画像データは、各入力画像データが有する画素情報の階調範囲より広い階調範囲(ダイナミックレンジ)で規定される画素情報を有する。
さらに、この合成画像データを対象として、撮像されたワークに関する検出または計測を容易化するための後処理を行なうことにより、後処理後画像データが生成される。この後処理後画像データは、合成画像データが有する画素情報の階調範囲と同じ階調範囲(ダイナミックレンジ)で規定される画素情報を有する。
さらに、一般的には、生成された後処理後画像データのうち、すべての画素情報ではなく、ユーザが指定した所定範囲に存在する画素情報のみを有効に含む出力画像データが生成される。このとき、出力先の後続処理やデバイスの階調範囲(ダイナミックレンジ)が制限されていれば、出力画像データのダイナミックレンジも出力先に適合するように制限される。すなわち、後処理後画像データの有する情報量を削減した上で、出力画像データが生成されることになる。言い換えれば、後処理画像データを合成画像データの階調範囲(ダイナミックレンジ)より狭い階調範囲で規定される画素情報を有する出力画像データに変換される。
たとえば、図4に示すように、出力画像データを検出処理または計測処理などの後続処理へ出力する場合には、出力画像データの各画素が有する画素情報は、当該検出/計測処理における処理可能階調に適合される。そして、この出力画像データに対して、検出処理や計測処理が実行される。
また、図5に示すように、出力画像データをモニタ102などの表示装置に出力する場合には、出力画像データの各画素が有する画素情報は、当該表示装置における表示可能階調に適合される。
より具体的には、本実施の形態においては、入力画像データおよび出力画像データがいずれも各色8ビット(256階調)の情報量を有し、合成画像データが各色32ビット(4.29×109階調)の情報量を有するものとする。
このように、情報量を削減した後の出力画像データに対して各種の後処理を行なう場合には、合成画像処理によって得られた明るさの情報量を十分に活用することができない。
そこで、本実施の形態に従う画像処理装置は、各種の後処理を行なうことが必要なアプリケーションにおいて、出力画像データではなくより多くの情報量を有する合成画像データに対して当該後処理を適用し、その処理結果を出力画像データとして出力する。
このような処理手順を採用することで、画像合成処理によって得られたより多くの情報量をそのまま活用することができるとともに、出力先の能力に応じた表示や処理などを行なうことができる。
なお、出力先デバイスには、上述するようなモニタ102に加えて、他の画像処理装置、プリンタ装置、プロッタ装置、情報発信装置などが含まれる。
[G.処理内容]
本実施の形態に従う画像処理装置は、主として以下の処理を実行する。
(1)ワークを異なる露光時間で複数回撮像する処理(撮像処理)
(2)撮像された入力画像データの輝度から合成輝度を算出する処理(輝度合成処理)
(3)撮像された入力画像データの色情報から合成色情報を算出する処理(色合成処理)
(4)合成色情報と合成輝度とから合成画像データを生成する処理(画像合成処理)
(5)合成画像データに各種の画像処理を実行した上で、その結果を出力画像データとして出力する処理(後処理)
(6)(必要に応じて)出力画像データを用いて、前記撮像されたワークに関する検出処理または計測処理を実行する処理(検出/計測処理)
以下、まず(1)〜(4)の処理の概略について説明した後、典型的な(5)後処理の例として、合成画像データに基づいて画像データ比較を行なうことで画像データを生成する処理、および合成画像データに含まれる画素情報についての特徴量を反映した画像データを生成する処理について説明する。
[H.全体制御構造]
図6は、この発明の実施の形態に従う画像処理装置の全体制御構造を示す機能ブロック図である。
図6を参照して、画像処理装置は、上述の(1)撮像処理を実現するための制御構造として、撮像制御部200と、選択部202と、画像バッファ204a〜204hとを含み、上述の(2)輝度合成処理を実現するための制御構造として、画像情報抽出部206a〜206hと、輝度合成部210と、ヒストグラム生成部214とを含み、上述の(3)色合成処理を実現するための制御構造として、画像情報抽出部206a〜206hと、色合成部208を含み、上述の(4)画像合成処理を実現するための制御構造として、画像合成部212を含み、上述の(5)後処理を実現するための制御構造として、後処理部230A(あるいは、後処理部230Bまたは230C)を含み、上述の(6)検出/計測処理を実現するための制御構造として検出/計測部240を含む。
以下、本実施の形態に従う画像処理装置における各処理の内容を各機能ブロックの動作とともに説明する。
(1)撮像処理
図6を参照して、撮像制御部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)輝度合成処理
画像情報抽出部206a〜206hは、それぞれ画像バッファ204a〜204hに対応付けられており、対応の画像バッファ204に記憶されている入力画像データから、色情報および輝度をそれぞれ抽出する。代表的に、入力画像データは、各画素に入射する光エネルギーに応じた値である3色の輝度(R輝度、G輝度、B輝度)を含むものとする。入力画像データの色情報は、これらの3色の輝度を規格化した上で、各輝度の相対関係(相対比)を表わしたものである。また、入力画像データの輝度は、各画素に入射する光エネルギーを総合的に表わしたものであり、3色の輝度の平均値(あるいは、総和)に相当する。
そして、画像情報抽出部206a〜206hは、抽出した色情報を色合成部208へ出力するとともに、抽出した輝度を色合成部208および輝度合成部210へ出力する。
輝度合成部210は、撮像部8による一連の複数回の撮像(1枚の合成画像データを生成するのに必要なすべての撮像)が完了した後、それぞれの入力画像データの輝度を対応する露光時間によってそれぞれ規格化した上で、各画素の合成輝度として算出する。上述したように、撮像部8における露光時間を変更することで、撮像に適した光強度の範囲が変動する。すなわち、露光時間が相対的に短ければ、光強度のより大きな範囲の撮像に適し、露光時間が相対的に長ければ、光強度のより小さな範囲の撮像に適する。
そこで、本明細書においては、ワークから放射される光強度の大きさに応じた「明るさ」という指標を用いる。なお、「明るさ」は、撮像部8の性能に依存する相対的な値であり、同じ「明るさ」であっても、撮像素子の感度や光学系の開放値などが異なれば、実際の光強度(もしくは、光エネルギー)は異なったものとなる。
一般的に、撮像部8(撮像素子)に入射する光エネルギーの大きさは、露光時間に比例すると考えられる。そのため、本明細書における「明るさ」としては、代表的に、撮像部8で検出された輝度を露光時間で割り、その値について対数をとったものを採用する。したがって、本明細書における「明るさ」は、単位露光時間あたりの光エネルギー(すなわち、光強度)の大きさを示す指標である。このような「明るさ」を用いることで、撮像部8に設定可能な各露光時間に対応させて、撮像部8による撮像に適した「明るさ」範囲を予め規定することができる。
より具体的には、本実施の形態に従う撮像部8に設定可能な8つの露光時間は、2のべき乗で順次短くなるようになっているので、各露光時間と「明るさ」との対応関係を図7のように定めることができる。
図7は、撮像部8に設定される露光時間と撮像に適した「明るさ」範囲との関係の一例を示す図である。図7を参照して、露光時間が「1/125秒」である場合に撮像に適した「明るさ」範囲を「10〜30」に設定すると、露光時間を1/2倍した「1/250秒」である場合には、撮像に適した「明るさ」範囲を「10」だけ加算した「20〜40」に設定できる。このように逐次設定することで、露光時間を「1/125秒」〜「1/16000秒」の範囲に対応付けて、「10〜100」の「明るさ」範囲をカバーするように設定できる。
また、複数の露光時間がカバーするように、それぞれの「明るさ」範囲を設定することが好ましい。図7に示す例においては、「明るさ」範囲が10〜90のいずれの位置においても、少なくとも2つの露光時間によってカバーするように設定されている。すなわち、たとえばその「明るさ」範囲に「60」を含む露光時間は、「1/1000秒」,「1/2000秒」,「1/4000秒」の3つである。このような設定を行なうことで、異なる露光時間で複数回の撮像が行なわれるように設定される。
この図7に示す露光時間と「明るさ」範囲との関係は、撮像部8で撮像可能な「明るさ」範囲のうち、ユーザによって必要な「明るさ」範囲が設定されると、当該設定に対応する複数の露光時間の各々での撮像が行なわれるようになる。すなわち、撮像部8に設定可能なすべての露光時間において撮像が行なわれるのではなく、特定の露光時間における撮像のみを行なうことで、1枚の合成画像データの生成に要する処理時間を短縮することもできる。
より具体的には、ユーザによって、たとえば「明るさ」範囲が「30〜50」に設定された場合には、その範囲内に含まれる「1/250秒」,「1/500秒」,「1/1000秒」の露光時間で1処理あたり3回の撮像が行なわれる。
再度、図6を参照して、輝度合成部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は、図7に示す各露光時間と「明るさ」範囲との関係に従って、0〜100の範囲の値として算出される。なお、理解を容易にするために、0〜100の範囲で表しているが、合成して得られる画像データの「明るさ」の階調範囲は、1回の撮像で取得される画像データがもつ階調範囲よりも広くなることから、データとしては、小数点以下の桁も有する値である(たとえば、32ビットのデータを用いて小数点以下4桁ないし5桁までの値として取扱う)。
上式においては、さらに、重み関数w(Z)と撮像部8の撮像素子の応答関数g(Z)を導入している。図8を参照して、これらの関数について説明する。
図8は、重み関数および応答関数の特性の一例を示す図である。図8(a)は、重み関数w(Z)の特性を示し、図8(b)は、応答関数g(Z)の特性を示す。
図8(a)を参照して、重み関数w(Z)は、撮像部8から出力される輝度の値に応じて、その信頼度を反映するための関数である。すなわち、ある露光時間において、撮像部8から出力される輝度のうち、その下限値(0)または上限値(255)に近い値は、その中間値(128)に近い値に比較して信頼度が低いと考えられる。換言すれば、仮に撮像部8がある露光時間において最も適した「明るさ」をもつ対象物を撮像すると、その輝度はほぼ中間値になると考えられる。
そこで、このような特性を考慮して、重み関数w(Z)としては、輝度の変動範囲における中間値の近傍に比較して、下限値または上限値の近傍の値がより小さくなるような関数を用いることが好ましい。一例として、本実施の形態では、輝度の変動範囲の中間値が最大値(128)となるとともに、下限値および上限値でそれぞれゼロとなるような三角形状の重み関数を採用する。このような重み関数を採用することで、露光時間毎の入力画像データのうち、その輝度が所定範囲内にあるものを優先的に採用して合成輝度が算出される。
また、図8(b)を採用して、応答関数g(Z)は、撮像部8から出力される輝度分布と実際に撮像部8に入力する光エネルギー分布との間の非線形性を補償するための関数である。たとえば、CCDなどの撮像素子では、入力する光エネルギーあるいは光強度と出力される電圧信号との関係は非線形となる。このような非線形特性はガンマ特性などとも称される。応答関数g(Z)は、このようなガンマ特性を補償して、撮像部8から出力される輝度を、実際に撮像部8に入力する光エネルギーに比例するように補正するものである。なお、図8(b)には、簡単化のため、撮像部8から出力される輝度が入力する光エネルギーと比例関係にある場合の応答関数g(Z)を示す。
なお、上式中の定数項の「C」は、各露光時間と「明るさ」範囲との関係を図7のように定めた場合に生じるオフセットを補償するための項であり、各露光時間と「明るさ」範囲との関係に応じて適宜設定することができる。
また、上式中では、ネイピア数「e」を底にした自然対数を用いているが、必ずしも「e」に限定されるものではなく、「2」を底にした対数や「10」を底にした常用対数などを用いてもよい。
再度、図6を参照して、輝度合成部210は、算出した合成輝度Eiをヒストグラム生成部214へ出力する。ヒストグラム生成部214は、合成輝度Eiについてのヒストグラムを生成する。すなわち、ヒストグラム生成部214は、合成輝度Eiの分布をモニタ102に表示させるための分布データを生成する。より具体的には、輝度合成部210は、各画素の合成輝度Eiを所定幅の階級に区分した上で各階級の頻度を算出する。これは、ユーザが、輝度合成部210によって算出される合成輝度Eiのうち相対的に比率の高い範囲を参照しながら、「明るさ」上限値および「明るさ」下限値を初期設定することを支援する。
また、ヒストグラム生成部214は、ユーザ設定に応じて、ヒストグラムの生成処理を中断または再開可能に構成されてもよい。
(3)色合成処理
色合成部208は、複数の入力画像データの色情報から合成色情報を算出する。後述するように、合成画像データは、色合成部208で算出される各画素の合成色情報に、輝度合成部210によって算出される対応する画素の合成輝度Eiを乗じて得られる。そのため、色合成部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)は、図8(a)と同様の特性を有する。すなわち重み関数w(Z)は、撮像部8から出力される輝度の値に応じて、その信頼度を反映するための関数である。この重み関数w(Z)の技術的な意味については、上述したので詳細な説明は繰返さない。
そして、色合成部208は、算出した合成色情報を画像合成部212へ出力する。
(4)画像合成処理
画像合成部212は、輝度合成部210によって算出された合成輝度Eiを、対応する合成色情報(ri,gi,bi)に順次乗じることによって、座標位置iの画素の画像情報を順次算出し、これによって合成画像データを生成する。
すなわち、合成画像データの座標位置iの座標における絶対的な色情報(Ri,Gi,Bi)は、以下のように表わすことができる。
(Ri,Gi,Bi)=Ei×(ri,gi,bi)
以上のような手順に従って、合成画像データが最終的に生成される。
(5)後処理
後処理部230A,230B,230Cは、画像合成部212から出力される合成画像データを対象として、撮像されたワーク2に関する検出または計測を容易化するための後処理を行なうことにより後処理後画像データを生成し、さらに、後処理後画像データのダイナミックレンジを低減することで出力画像データを生成する。この後処理の内容については、後述の[J]項にて詳述する。
(6)計測/検出処理
検出/計測部240は、後処理部230A,230B,230Cから出力される出力画像データを用いて、撮像されたワーク2に関する検出処理または計測処理を実行する。なお、検出処理および計測処理としては、公知の画像処理技術を用いることができる。すなわち、たとえば、撮像されたワークに対して、予め登録されたモデルに基づくパターンサーチや欠陥検出といった処理、ならびに、撮像されたワークの大きさ・傾き・位置などを計測する処理などが用いられる。
検出/計測部240は、検出処理または計測処理によって得られた結果(結果画像データや検出/計測値)を出力する。
(その他)
撮像制御部200は、撮像開始から1枚の合成画像データの生成までに要する見込みの処理時間(合成時間)を算出する。より具体的には、撮像制御部200は、撮像部8による撮像回数、各撮像における露光時間、画像合成処理の処理量などを考慮して合成時間を推定する。ユーザは、この合成時間を参照して、実際の生産ラインに適用可能な設定であるか否かを判断する。
[I.ユーザインターフェイス例]
本実施の形態に従う画像合成処理についての理解を容易にするために、図9および図10を参照して、モニタ102(図1)に表示される画像合成処理に係るユーザインターフェイスの一例について説明する。
図9および図10は、この発明の実施の形態に従う画像処理装置のモニタ102に表示される「設定モード」における画面表示例を示す図である。なお、CPU105および図示しないグラフィックボードなどが協働することで、図9および図10に示すようなユーザインターフェイスを提供する。このような画面表示は、OS(Operating System)の一部として組込まれるGUI(Graphical User Interface)プログラムによって実現され、またGUIは、ユーザがキーボード103やマウス104により操作される画面上のカーソルを用いて、さまざまなユーザ設定を行なうための環境も提供する。
「設定モード」では各種設定を行なうことが可能であり、図9および図10に示すように、一例として、「カメラ設定」「HDR設定」「HDR設定2」「明度追従設定」「画像調整設定」「ホワイトバランス」「キャリブレーション」といった計7個のタブが選択可能な画面が表示される。以下の説明では、本実施の形態に従う画像合成処理に係る主な設定を行なうための「HDR設定」タブ410および「HDR設定2」タブ411がそれぞれ選択された場合のユーザインターフェイスについて説明する。なお、その他の初期設定(撮像部8などの配置や初期設定)は完了しているものとする。すなわち、撮像部8の撮像によって、基準ワークの像を含む複数の入力画像データが取得されているものとする。
図9には、「HDR設定」タブ410が選択された場合に表示される設定画面400の一例を示す。この図9に示す設定画面400は、露光条件を含む画像合成処理に係る設定(以下「合成処理設定」とも称す。)を受付ける。
設定画面400は、モード設定エリア416と、撮像設定エリア420と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とを含む。
モード設定エリア416には、ダイナミックレンジを拡大するための画像合成処理を示す「HDRモード」と、さらにコントラストを高めた画像合成処理を示す「ハイコントラストモード」がラジオボタン形式で選択可能に表示される。
撮像設定エリア420には、生成されている合成画像データの「明るさ」についてのヒストグラム422が表示されるとともに、ユーザ設定された「明るさ」上限値および下限値を示すインジケータ426および424がそれぞれ表示される。なお、ヒストグラム422は、ヒストグラム生成部214(図6)によって適宜生成される。
また、撮像設定エリア420には、「明るさ」下限値を設定するためのスライドバー434、および「明るさ」上限値を設定するためのスライドバー436が変更可能に表示される。このスライドバー434および436に対するユーザ操作に従って、「明るさ」上下限範囲が適宜変更される。さらに、撮像設定エリア420には、「明るさ」下限値および上限値の直接的な数値入力を受付ける数値入力ボックス430も表示される。
このスライドバー434もしくは436、または数値入力ボックス430に対するユーザ操作によって設定される「明るさ」上下限範囲(「明るさ」上限値および「明るさ」下限値)に応じて、撮像条件を含む合成処理設定、および図4に示す合成画像データのうち出力画像データとすべき範囲(表示レンジ)が設定される。すなわち、ユーザは、表示されるヒストグラム422を参照しながら、所望の「明るさ」上下限範囲を設定する。初期値の「明るさ」上下限範囲としては、ヒストグラム422のほぼ全体をカバーできるような範囲が好ましい。
撮像設定表示エリア418には、このように決定された合成処理設定値の内容が表示される。具体的な一例として、撮像設定表示エリア418には、1回の画像合成に要する入力画像の枚数(撮像枚数)および1回の画像合成に要する時間(合成時間)などが表示される。
画像表示エリア412には、上述のように決定された合成処理設定値に従って、撮像および画像合成処理されることで生成される合成画像データに基づく画像表示がなされる。この画像表示エリア412には、稼動モードにおいて検出や計測に用いられる合成画像データに相当する画像が表示される。そのため、ユーザ等は、この画像表示エリア412に表示される画像を参照して、「明るさ」上下限範囲などを調整する。また、表示制御アイコン群413に対するユーザ操作に応じて、画像表示エリア412における画像の表示サイズが変更可能となっている。
全体表示エリア414には、画像表示エリア412に表示されている画像と同じ画像が縮小表示される。但し、全体表示エリア414には、画像表示エリア412での表示サイズとは独立して、表示対象の画像が常に全体表示される。すなわち、画像表示エリア412には、画像表示エリア412に表示中の画像が画像全体のうちいずれの領域にあるのかを示す。これにより、ユーザは、合成画像の全体を把握しながら、注目すべき部分(領域)を拡大して観察することもできる。
なお、後述する合成画像データに対する後処理の実行を希望しないユーザは、図9に示す設定画面400において必要な設定を完了させることができる。
図10には、「HDR設定2」タブ411が選択された場合に表示される設定画面401の一例を示す。この図10に示す設定画面401は、合成画像データに対する後処理に係る設定(以下「後処理設定」とも称す。)を受付ける。
設定画面401は、合成設定エリア440と、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とを含む。
合成設定エリア440には、本実施の形態に従う各種の後処理を選択するためのプルダウンボックスが表示される。このプルダウンボックスには、典型例として、「なし」、「差分抽出」、「エッジ抽出」、「バンドパスフィルタ」、「色抽出」の合計5つの項目が選択可能に表示される。このうち、「なし」の項目が選択されると、本実施の形態に従う後処理は無効化される。一方、他の4つの項目のいずれかが選択されると、選択された項目の後処理が合成画像データに対して実行される。なお、他の後処理としては、ハイパスフィルタやローパスフィルタなどを採用することもできる。
表示設定エリア419には、画像表示エリア412および全体表示エリア414に表示すべき画像を選択するためのプルダウンメニュー(図示しない)が表示される。このプルダウンメニューには、「HDR画像」、「モデル画像」、「差分画像」、「1枚目入力画像」、「2枚目入力画像」、・・・、「n枚目入力画像」といった項目が選択可能に表示される。
「HDR画像」が選択されると、画像合成処理によって得られた合成画像データに基づく画像表示がなされる。
「モデル画像」および「差分画像」は、合成設定エリア440において「差分抽出」が選択された場合に限って選択可能である。そして、「モデル画像」が選択されると、「差分抽出」処理に係る予め登録されたモデル画像が表示される。また、「差分画像」が選択されると、「差分抽出」処理によって得られた差分画像データに基づく画像表示がなされる。
「1枚目入力画像」、「2枚目入力画像」、・・・、「n枚目入力画像」は、画像合成処理に用いられる撮像部8によって取得された複数の入力画像データの「1番目」、「2番目」、・・・、「n番目」に基づく画像表示がなされる。
なお、設定画面401に含まれる、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とについては、設定画面400と同様であるので、詳細な説明は繰返さない。
[J.後処理]
以下、後処理の典型例として、差分抽出処理、エッジ抽出処理、バンドパスフィルタ処理、色抽出処理について説明する。
(j1.差分抽出処理)
<1.構成>
以下、図10に示す設定画面401の合成設定エリア440において「差分抽出」が選択された場合に実行される後処理として、差分抽出処理について説明する。この差分抽出処理は、予め登録されたモデル画像データと画像合成処理により生成された合成画像データとの色差分を抽出する処理である。すなわち、生成された合成画像データと予め登録されたモデル画像データとを比較することで、合成画像データについてのモデル画像データに対する画像差分を算出する処理である。
このような差分抽出処理は、同一の製品が連続的に製造されている生産ラインなどにおいて、欠陥などが発生したワークを検出する場合などに用いられる。
図11は、この発明の実施の形態に従う後処理部230A(図6)の制御構造を示す機能ブロック図である。図11を参照して、後処理部230Aは、セレクタ2301と、前処理部2302と、差分抽出部2303と、モデル抽出部2304と、モデル格納部2305と、サーチ部2306と、マッピング部2307と、ヒストグラム生成部2308とを含む。
セレクタ2301は、画像合成部212(図6)から出力される合成画像データを入力し、その合成画像データを、ユーザ設定に応じて、前処理部2302およびサーチ部2306、もしくはモデル抽出部2304へ選択的に出力する。すなわち、通常の差分抽出処理においては、セレクタ2301は、入力された合成画像データを前処理部2302およびサーチ部2306へ出力するが、モデル画像データに登録時(後述する)には、入力された合成画像データをモデル抽出部2304へ出力する。
モデル抽出部2304は、合成画像データに対して、ユーザが設定する(その操作については後述する)モデル領域に含まれる部分画像データを抽出して、モデル画像データとしてモデル格納部2305へ出力する。モデル格納部2305は、モデル抽出部2304から受けたモデル画像データを格納するとともに、必要に応じて、格納しているモデル画像データをサーチ部2306および/または差分抽出部2303へ出力する。
前処理部2302およびサーチ部2306は、後述する位置修正処理を行なうための機能ブロックである。より具体的には、セレクタ2301から新たな合成画像データが出力されると、サーチ部2306はモデル格納部2305に格納されているモデル画像データとの間で最も類似度の高い部分をサーチし、そのサーチ結果を前処理部2302へ出力する。前処理部2302は、サーチ部2306からのサーチ結果に従って、合成画像データの位置および/またはサイズを修正するための画像変換を行なった上で、変換後の合成画像データを差分抽出部2303へ出力する。なお、前処理部2302およびサーチ部2306による位置修正処理は、ユーザ設定に応じて無効化される場合もある。
差分抽出部2303は、前処理部2302から入力された(変換後の)合成画像データと、モデル格納部2305から入力されたモデル画像データとの間で差分を抽出することで、差分画像データ(後処理後画像データ)を生成する。より具体的には、差分抽出部2303は、合成画像データの座標位置iにおける色情報(Ri,Gi,Bi)と、モデル画像データの対応する座標位置iにおける色情報(R(m) i,G(m) i,B(m) i)との色差ベクトルを算出し、さらにこの色差ベクトルの絶対値を、差分画像データの座標位置iにおける明度Viとして算出する。このようにして、差分抽出部2303は、すべての画素について算出した明度Viを含む差分画像データを出力する。なお、差分抽出部2303は、入力される合成画像データのもつ階調範囲(各色32ビット)と同等の階調範囲をもつ明度Viを出力する。
マッピング部2307は、差分抽出部2303で算出された差分値(すなわち、明度Vi)をより狭い所定の階調範囲に制限して、出力画像データとして出力する。具体的には、マッピング部2307は、各画素の明度Viを対応する座標位置iにおける階調値Yi(たとえば、0〜255階調値)に割当てることで、合成画像データの濃淡値(明度)を決定する。一般的に、各画素の明度Viの階調範囲は、階調値Yiの階調範囲より広い。すなわち、マッピング部2307は、所定の階調範囲の値をもつ明度Viをより狭い階調範囲の階調値Yiに変換する。
図12は、図11に示すマッピング部2307によるマッピング処理を説明するための図である。図12を参照して、差分画像データの各画素が有するの明度Viをその比例関係を保ったまま、0〜255の範囲の階調値へ変換する場合の処理について例示する。後述するように、ユーザによってマッピングの範囲(明度上限値Vmaxと明度下限値Vmin)が設定された場合には、マッピング部2307は、以下のような変換式に従って階調値Yiへの割当てを行なう。
(i)Vi<Vmin:Yi=0
(ii)Vmin≦Vi≦Vmax:Yi=255×(Vi−Vmin)/(Vmax−Vmin)
(iii)Vmax<Vi:Yi=255
このように、マッピング部2307において、明度Viから階調値Yiへの変換に用いられる対応関係は、明度上限値Vmaxおよび明度下限値Vminを変更することで、適宜更新されることになる。
なお、説明を簡素化するために、図12には線形のマッピング処理を行なう場合について例示するが、人間の視感度などに応じて、非線形のマッピング処理を採用してもよい。その一例として、以下のような変換式を用いてもよい。
(ii’)Vmin≦Vi≦Vmax:Yi=255×log{(Vi−Vmin)}/log{(Vmax−Vmin)}
このような非線形の変換式を採用することで、明度の高すぎる画素を相対的に低い階調値に変換するとともに、明度の低すぎる画素を相対的に高い階調値に変換するので、白飛びや黒つぶれを少なくすることができる。
上述の変換式に示されるように、明度上限値Vmaxより大きな明度Viをもつ画素は、すべて最大の階調値(たとえば、255)に制限(保持)されるので、その明度についての情報は失われる。同様に、明度下限値Vminより小さな明度Viをもつ画素についても、すべて最小の階調値(たとえば、0)に制限(保持)されるので、その明度についての情報は失われる。したがって、その明度Viの値が明度下限値Vminから明度上限値Vmaxの範囲にある画素のみが出力画像データ上で有効な階調値をもつ画素となる。すなわち、マッピング部2307は、差分画像データが有する明度Viのうち、その値が所定範囲内であるものを階調範囲における有効な値に割当てる。言い換えれば、マッピング部2307は、ユーザによって明度上限値Vmaxおよび明度下限値Vminが設定されると、その明度Viの値が明度下限値Vminと一致する画素に対して階調値Yiにおける下限値(0)を割当て、その明度Viの値が明度上限値Vmaxと一致する画素に対して階調値Yiにおける上限値(255)を割当てる。
図11に戻って、ヒストグラム生成部2308は、差分画像データに含まれる画素の明度Viについてのヒストグラムを生成する。すなわち、ヒストグラム生成部2308は、差分画像データに含まれる画素の明度Viの分布をモニタ102に表示させるための分布データを生成する。より具体的には、ヒストグラム生成部2308は、各画素の明度Viを所定幅の階級に区分した上で各階級の頻度を算出する。このヒストグラム生成部2308により生成されるヒストグラムを参照することで、ユーザは、どの範囲の明度をもつ画素を出力画像データとして出力すべきかを容易に設定することができる。
撮像部8により撮像される入力画像データに基づいて生成された合成画像データの色情報と、予め登録されたモデル画像データの色情報とが完全に一致することはまれであると想定される。そのため、このような色情報の誤差と思われる部分については、明度下限値Vminの値を適切に設定してマスクすることが好ましい。一方、どのような欠陥が発生し得るのか予めわからない場合も多いと想定される。すなわち、明度上限値Vmaxをどの程度の値に設定すべきかを差分画像を見ただけでは分からない場合もあると考えられる。
そこで、本実施の形態に従う画像処理装置においては、差分画像データに含まれる画素の明度の分布状態をユーザに提供することで、明度上限値Vmaxおよび明度下限値Vminをより容易に適切な範囲に設定できるようにする。
<2.ユーザインターフェイス例>
上述した差分抽出処理についての理解を容易にするために、図13および図14を参照して、モニタ102(図1)に表示される差分抽出処理に係るユーザインターフェイスの一例について説明する。
図13および図14は、この発明の実施の形態に従う画像処理装置のモニタ102に表示される差分抽出処理の選択時における画面表示例を示す図である。
図13には、図10に示す合成設定エリア440において、フィルタ処理プルダウンボックス441で「差分抽出」の項目が選択された場合に表示される設定画面402の一例を示す。この図13に示す設定画面402は、合成設定エリア440Aと、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とを含む。なお、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とについては、上述の図10に示す設定画面401と同様であるので、詳細な説明は繰返さない。
合成設定エリア440Aは、図10に示す合成設定エリア440に、差分モデル登録ボタン442と、位置修正画像プルダウンボックス444と、修正モデル登録ボタン445と、位置修正チェックボックス447と、ヒストグラム表示エリア450とを加えたものに相当する。
差分モデル登録ボタン442は、差分抽出処理に用いるモデル画像データを登録するための指令を受付ける。なお、モデル画像データが未だ登録されていない場合には、差分モデル登録ボタン442に隣接して、「差分モデルが登録されていません」というメッセージ443が表示される。この差分モデル登録ボタン442が選択されると、図14に示すモデル画像データを登録するための領域設定画面403に遷移する。
図14を参照して、領域設定画面403には、モデル画像データとして抽出すべき領域の形状を選択するアイコン群480が表示される。ユーザが、これらのアイコン群480のいずれかを選択すると、選択された形状の領域482が画像表示エリア412に表示されている合成画像に重ねて表示される。なお、モデル画像データとして抽出すべき領域482の形状は、基本的に、長方形のみとなるようにしてもよい。
ユーザは、モデル画像データとして登録すべき基準ワークを撮像して合成画像データを生成するとともに、この合成画像データに基づいて画像表示エリア412に表示される画像を参照しながら、領域482を適切な大きさおよび位置に設定する。具体的には、ユーザは、画像表示エリア412に表示される領域482に対して、マウス操作(たとえば、クリックおよびドラッグなど)することで、その大きさおよび位置をインタラクティブに変更可能である。
この領域設定画面403において、モデル画像データとして抽出すべき領域482の大きさおよび位置をユーザが設定した後、「OK」ボタンを選択することで、モデル抽出部2304(図11)がこのユーザが設定した領域482に含まれる部分画像データを抽出し、モデル格納部2305(図11)に格納する。そして、図13に示す設定画面402に復帰する。
再度図13を参照して、位置修正チェックボックス447、位置修正画像プルダウンボックス444、および修正モデル登録ボタン445は、後述する位置修正処理に用いられる設定を受付ける。詳細については後述する。
ヒストグラム表示エリア450には、差分抽出処理によって得られた差分画像データの明度についてのヒストグラム(図示しない)が表示される。すなわち、ヒストグラム生成部2308(図11)が生成するヒストグラムは、ヒストグラム表示エリア450内に表示される。
ヒストグラム表示エリア450内には、ユーザ設定された明度上限値Vmaxおよび明度下限値Vminを示すインジケータ454および456がそれぞれ表示される。さらに、ヒストグラム表示エリア450に関連付けて、明度上限値Vmaxおよび明度下限値Vminの直接的な数値入力を受付ける数値入力ボックス460と、明度下限値Vminを設定するためのスライドバー464と、明度上限値Vmaxを設定するためのスライドバー466とが表示される。
スライドバー464もしくは466、または数値入力ボックス460に対するユーザ操作によって設定される明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)に応じて、差分抽出処理によって得られる差分画像データに対して、マッピング処理がなされる。すなわち、スライドバー464もしくは466、または数値入力ボックス460を介して設定された明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)は、マッピング部2307(図11)へ与えられる。
<3.差分抽出処理の処理例>
次に、図15〜図18を参照して、本実施の形態に従う差分抽出処理について説明する。図15は、この発明の実施の形態に従う差分抽出処理に用いられる合成画像データの一例を示す図である。図16は、図15(a)に示す画像を対象にした場合における画面表示例を示す図である。図17は、図15(b)に示す画像を対象にした場合における画面表示例を示す図である。図18は、図17に示す画面において明度上下限範囲を変更した場合における画面表示例を示す図である。
以下の説明では、基準ワークとして、図15(a)に示すようなコネクタを撮像して得られた合成画像データをモデル画像データとして登録したものとする。そして、登録されたモデル画像データと同様の合成画像データが得られた場合の処理と、図15(b)に示すような、コネクタの表面の一部に欠陥が生じたワークを撮像して合成画像データを得た場合の処理とを対比して説明する。
図13に示す設定画面402において、差分モデル登録ボタン442が選択されてモデル画像データが登録されると、メッセージ443(図13)の表示が消えて、差分抽出処理が実行される。なお、このとき、表示設定エリア419において「差分画像」の項目が自動的に選択されるようにしてもよい。
表示設定エリア419において「差分画像」の項目が選択されることで、画像表示エリア412には、差分抽出処理によって得られた差分画像データに基づく画像表示がなされる。
まず、基準ワークとほぼ同様の外観を有する、欠陥が存在しないワークを撮像した場合には、図15(a)とほぼ同様の合成画像データが得られる。この場合には、各画素における色差ベクトルが相対的に小さいので、差分画像データに含まれる明度成分は相対的に小さくなる。すなわち、図16のヒストグラム表示エリア450に示すように、明度の値が相対的に小さい領域に多くの画素が集中して分布することになる。このような明度の値の相対的に小さい成分は、ほとんど有効な情報を持たない。
そこで、明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)をこれらの明度の値が相対的に小さい領域と重複しないように設定すると、画像表示エリア412には、階調値が全面にわたってほぼ「0」の画像(すなわち、真っ黒な画像)が表示される。
次に、欠陥が存在するワークを撮像した場合には、図15(b)に示すような合成画像データが得られる。この場合には、欠陥部分に含まれる各画素についての色差ベクトルが相対的に大きくなるので、差分画像データに含まれる明度成分は相対的に小さくなる。すなわち、図17のヒストグラム表示エリア450に示すように、他の画素に比較して、明度の値が相対的に大きな成分458が現れる。このような成分458が欠陥部分に相当する情報を持つことになる。そこで、このような成分458をまたぐように明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)を設定することで、欠陥部分に相当する部分が可視化される。すなわち、画像表示エリア412には、モデル画像データとの間の差分情報が浮かび上がる。なお、画像表示エリア412に表示される欠陥部分の階調値は、明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)と成分458との相対的な関係によって定まる。すなわち、ヒストグラム452上において、明度上限値Vmaxが成分458に近接して設定されると、欠陥部分は相対的に明るく表示され、一方、明度下限値Vminが成分458に近接して設定されると、欠陥部分は相対的に暗く表示される。
別の使用形態として、欠陥部分と正常部分とを区別するだけであれば、明度の値が相対的に小さい領域に集中して分布している誤差成分と成分458との間に、明度上限値Vmaxおよび明度下限値Vminのいずれをも設定してもよい。
図18を参照して、この場合には、その明度の値が明度下限値Vminより小さい画素はすべて階調値が「0」として表示され、その明度の値が明度上限値Vmaxより大きい画素はすべて階調値が「255」として表示される。その結果、画像表示エリア412においては、欠陥部分に相当する領域が「白色」で表示されるとともに、その他の領域が「黒色」で表示されることになる。
<4.位置補正処理の処理例>
次に、図19〜図21を参照して、差分抽出処理において実行される位置補正処理について説明する。図19は、この発明の実施の形態に従う差分抽出処理における位置補正処理において用いられる合成画像データの一例を示す図である。図20は、図19(b)に示す画像を対象にした場合における画面表示例を示す図である。図21は、この発明の実施の形態に従う差分抽出処理における補正モデルの登録時における画面表示例を示す図である。以下の説明では、基準ワークとして、図19(a)に示すようなコネクタを撮像して得られた合成画像データをモデル画像データとする。
ワークがベルトコンベヤなどの搬送ラインによって搬送される場合には、何らかの外乱を受けて、その向きがモデル画像データを登録した時点の基準ワークの向きとは異なった向き、もしくは異なった撮像位置となることがある。たとえば、ワークが撮像時に図19(b)に示すようにその向きが本来の向きからずれてしまった場合を考える。このような場合には、ワークから取得された画像データに基づいて生成される合成画像データに含まれる各画素は、モデル画像データの対応する画素とは異なったものとなる。
すなわち、図20に示すように、モデル画像データの登録に用いられた基準ワークの位置と対象のワークとの間の位置ずれ分が、そのまま差分画像データとして抽出される。そのため、正しい検査を行なうためには、対象のワークについての位置ずれを予め登録されたモデル画像データに一致するように、位置修正を行なう必要がある。
そこで、本実施の形態に従う画像処理装置においては、上述したようにサーチ処理を用いて、ワークを撮像して得られる入力画像データに対して位置修正を行なう。すなわち、サーチを行なうためのモデル画像データ(以下「位置修正モデル画像データ」とも称す。)を登録しておき、入力画像データもしくは生成後の合成画像データとこの登録された位置修正モデル画像データとの間の相関値が最も高くなる位置を探し出し、その対応関係に基づいて、入力画像データもしくは合成画像データに対して画像変換(向き変更および/またはサイズ変更)が行なわれる。なお、上述の差分抽出処理に用いられるモデル画像データと、この位置修正処理に用いられる位置修正モデル画像データとを同じものとすることもできるが、サーチ精度を高めるためには、ワークの特徴部分に重点をおいて1つまたは複数の位置修正モデル画像データを登録することが好ましい。そこで、本実施の形態に従う画像処理装置においては、差分抽出処理に用いられるモデル画像データとは独立して、位置修正モデル画像データを登録可能になっている。
なお、位置修正処理には、サーチ処理を用いる方法に代えて、エッジなどの輪郭情報を用いる方法や、ラベルの重心面積を用いる方法などを採用することができる。
図20を参照して、上述のような位置修正処理は、合成設定エリア440Aの設定画面407において、ユーザが位置修正チェックボックス447を選択(チェック)することで有効化される。位置修正チェックボックス447の選択後、ユーザは、位置修正画像プルダウンボックス444を用いて、位置修正モデル画像データの抽出対象の画像データを選択する。この位置修正画像プルダウンボックス444では、位置抽出処理に用いるためのモデル画像データが抽出された合成画像データがデフォルトとして選択される。さらに、位置修正画像プルダウンボックス444では、異なる露光条件下(たとえば、「明るさ」範囲が異なる場合や、画像合成に用いた枚数が異なる場合など)で生成された合成画像データを任意に選択可能である。さらに、位置修正画像プルダウンボックス444では、合成画像データを生成するために用いた複数の入力画像データのうち、いずれか1枚の入力画像データを選択することもできる。このように、位置修正モデル画像データを任意の画像データから抽出することができるので、サーチ処理に要する時間を短縮したり、サーチ処理により適した位置修正モデル画像データを設定したりすることができる。
また、修正モデル登録ボタン445は、位置修正処理に用いる位置修正モデル画像データを登録するための指令を受付ける。なお、位置修正モデル画像データが未だ登録されていない場合には、修正モデル登録ボタン445に隣接して、「位置修正モデルが登録されていません」というメッセージ446が表示される。修正モデル登録ボタン445が選択されると、図21に示すモデル画像データを登録するための領域設定画面408に遷移する。
図21を参照して、領域設定画面408は、図14に示す領域設定画面403と同様の操作インターフェイスを有しており、位置修正モデル画像データとして抽出すべき領域の形状を選択するアイコン群480が表示される。また、画像表示エリア412には、位置修正画像プルダウンボックス444(図20)において選択した画像が表示される。
ユーザは、画像表示エリア412に表示される画像を参照しながら、位置修正モデル画像データとすべき範囲に対応付けて、領域484を適切な大きさおよび位置に設定する。この領域設定画面408において、位置修正モデル画像データとして抽出すべき領域484の大きさおよび位置をユーザが設定した後、「OK」ボタンを選択することで、モデル抽出部2304(図11)がこのユーザが設定した領域482に含まれる部分画像データを位置修正モデル画像データとして抽出し、モデル格納部2305に格納する。そして、図20に示す設定画面407に復帰する。
上述のように、位置修正モデル画像データが登録されると、サーチ部2306(図11)が合成画像データのうち登録された位置修正モデル画像データとの間で最も類似度の高い部分をサーチする。そして、そのサーチ結果に基づいて、前処理部2302(図11)が入力された合成画像データに対して画像変換を行なうことで、その位置および/またはサイズを修正する。そして、この修正後の合成画像データに対して、差分抽出部2303(図11)が差分抽出処理を実行する。
このように位置修正処理を行なうことで、図19(b)に示すような合成画像データに対しても、図17または図18に示すような差分画像データを得ることができる。
(j2.エッジ抽出処理)
<1.構成>
以下、図10に示す設定画面401の合成設定エリア440において「エッジ抽出」が選択された場合に実行される後処理として、空間フィルタ処理の典型例であるエッジ抽出処理について説明する。なお、エッジ抽出処理以外の空間フィルタ処理についても同様の構成および処理手順を適用可能である。この空間フィルタ処理は、より具体的には、処理対象の画像データ(合成画像データ)に含まれる各画素および当該画素に隣接する画素が有する画素情報に基づいて、当該画素についての特徴量を算出する処理である。すなわち、合成画像データに含まれる各画素および当該画素に隣接する画素が有する画素情報から、当該画素に対応する後処理後画像データの各画素が有する画素情報が算出される。
このエッジ抽出処理では、2次元的に配置された画像データに対して、その階調値などの変化量(以下「エッジ強度」とも称す。)が抽出される。なお、処理対象の画像データの各画素に対応付けて算出されたエッジ強度を配置した2次元データを「エッジ画像データ」とも称す。このようなエッジ抽出処理は、ワーク上に生じる欠陥などの検出や、ワークに対する位置合わせなどに用いられる。
図22は、この発明の実施の形態に従う後処理部230B(図6)の制御構造を示す機能ブロック図である。図22を参照して、後処理部230Bは、エッジ抽出部2311と、マッピング部2312と、ヒストグラム生成部2313とを含む。
エッジ抽出部2311は、画像合成部212(図6)から出力される合成画像データに対してエッジ抽出処理を実行する。このエッジ抽出処理を実現するアルゴリズムとしては、種々の方法が提案および実用化されている。典型的には、ラプラシアンフィルタなどが用いられる。エッジ抽出部2311は、算出した各画素についてのエッジ強度の情報を含むエッジ画像データ(後処理後画像データ)をマッピング部2312およびヒストグラム生成部2313へ出力する。すなわち、エッジ抽出部2311は、入力される合成画像データの座標位置iに対応して、エッジ強度EDiを順次算出する。なお、エッジ抽出部2311は、入力される合成画像データのもつ階調範囲(各色32ビット)と同等の階調範囲をもつエッジ強度EDiを出力する。
マッピング部2312は、エッジ画像データの各画素のエッジ強度EDiを対応する座標位置iにおける階調値Yi(たとえば、0〜255階調値)に割当てることで、合成画像データの濃淡値(明度)を決定する。一般的に、各画素のエッジ強度EDiの階調範囲は、階調値Yiの階調範囲より広い。なお、マッピング部2312におけるマッピング処理については、上述した図12と同様である。
すなわち、ユーザによってマッピングの範囲(エッジ強度上限値EDmaxとエッジ強度下限値EDmin)が設定された場合には、マッピング部2312は、以下のような変換式に従って階調値Yiへの割当てを行なう。
(i)Yi<EDmin:Yi=0
(ii)EDmin≦Yi≦EDmax:Yi=255×(EDi−EDmin)/(EDmax−EDmin)
(iii)EDmax<Yi:Yi=255
このように、マッピング部2312において、エッジ強度EDiから階調値Yiへの変換に用いられる対応関係は、エッジ強度上限値EDmaxおよびエッジ強度下限値EDminを変更することで、適宜更新されることになる。
上述の変換式に示されるように、エッジ強度上限値EDmaxより大きなエッジ強度EDiをもつ画素は、すべて最大の階調値(たとえば、255)に制限(保持)されるので、そのエッジ強度についての情報は失われる。同様に、エッジ強度下限値EDminより小さなエッジ強度EDiをもつ画素についても、すべて最小の階調値(たとえば、0)に制限(保持)されるので、そのエッジ強度についての情報は失われる。したがって、そのエッジ強度EDiの値がエッジ強度下限値EDminからエッジ強度上限値EDmaxの範囲にある画素のみが出力画像データ上で有効な階調値をもつ画素となる。すなわち、マッピング部2312は、エッジ画像データが有するエッジ強度EDiのうち、その値が所定範囲内であるものを階調範囲における有効な値に割当てる。言い換えれば、マッピング部2312は、ユーザによってエッジ強度上限値EDmaxおよびエッジ強度下限値EDminが設定されると、そのエッジ強度EDiの値がエッジ強度下限値EDminと一致する画素に対して階調値Yiにおける下限値(0)を割当て、そのエッジ強度EDiの値がエッジ強度上限値EDmaxと一致する画素に対して階調値Yiにおける上限値(255)を割当てる。
図22に戻って、ヒストグラム生成部2313は、エッジ画像データに含まれる画素のエッジ強度EDiについてのヒストグラムを生成する。すなわち、ヒストグラム生成部2313は、エッジ画像データに含まれる画素のエッジ強度EDiの分布をモニタ102に表示させるための分布データを生成する。より具体的には、ヒストグラム生成部2313は、各画素のエッジ強度EDiを所定幅の階級に区分した上で各階級の頻度を算出する。このヒストグラム生成部2313により生成されるヒストグラムを参照することで、ユーザは、どの範囲のエッジ強度をもつ画素を出力画像データとして出力すべきかを容易に設定することができる。
これは、撮像部8により撮像される入力画像データに基づいて生成された合成画像データから抽出されたエッジ画像データのエッジ強度の程度を予め予測することは困難である。そこで、本実施の形態に従う画像処理装置においては、エッジ画像データに含まれる画素のエッジ強度の分布状態をユーザに提供することで、対象となるワーク毎にエッジ強度範囲(エッジ強度下限値EDminおよびエッジ強度上限値EDmax)を適切な範囲に設定できるようにする。
<2.ユーザインターフェイス例>
上述したエッジ抽出処理についての理解を容易にするために、図23を参照して、モニタ102(図1)に表示されるエッジ抽出処理に係るユーザインターフェイスの一例について説明する。
図23は、この発明の実施の形態に従う画像処理装置のモニタ102に表示されるエッジ抽出処理の選択時における画面表示例を示す図である。
図23には、図10に示す合成設定エリア440において、フィルタ処理プルダウンボックス441で「エッジ抽出」の項目が選択された場合に表示される設定画面501の一例を示す。フィルタ処理プルダウンボックス441において「エッジ抽出」の項目が選択されることで、エッジ抽出部2311(図22)が合成画像データに対してエッジ抽出処理を実行する。
図23に示す設定画面501は、合成設定エリア440Bと、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とを含む。なお、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とについては、上述の図10に示す設定画面401と同様であるので、詳細な説明は繰返さない。
合成設定エリア440Bは、図10に示す合成設定エリア440に、ヒストグラム表示エリア520を加えたものに相当する。ヒストグラム表示エリア520には、エッジ抽出処理によって得られたエッジ画像データのエッジ強度についてのヒストグラムが表示される。すなわち、ヒストグラム生成部2313(図22)が生成するヒストグラム522は、ヒストグラム表示エリア520内に表示される。
ヒストグラム表示エリア520内には、ユーザ設定されたエッジ強度上限値EDmaxおよびエッジ強度下限値EDminを示すインジケータ524および526がそれぞれ表示される。さらに、ヒストグラム表示エリア520に関連付けて、エッジ強度上限値EDmaxおよびエッジ強度下限値EDminの直接的な数値入力を受付ける数値入力ボックス530と、エッジ強度下限値EDminを設定するためのスライドバー534と、エッジ強度上限値EDmaxを設定するためのスライドバー536とが表示される。
スライドバー534もしくは536、または数値入力ボックス530に対するユーザ操作によって設定されるエッジ強度上下限範囲(エッジ強度上限値EDmaxおよびエッジ強度下限値EDmin)に応じて、エッジ抽出処理によって得られるエッジ画像データに対して、マッピング処理がなされる。すなわち、スライドバー534もしくは536、または数値入力ボックス530を介して設定されたエッジ強度上下限範囲(エッジ強度上限値EDmaxおよびエッジ強度下限値EDmin)は、マッピング部2312(図22)へ与えられる。
<3.エッジ抽出処理の処理例>
図23および図24においては、上述の図15(a)に示すようなコネクタを撮像して得られた合成画像データに対してエッジ抽出処理を実行した結果を示す。
図23には、ヒストグラム表示エリア520において、エッジ強度上下限範囲(エッジ強度上限値EDmaxおよびエッジ強度下限値EDmin)をヒストグラム522の主成分に対して、相対的にエッジ強度が高い範囲に設定している場合を示す。図24には、ヒストグラム表示エリア520において、エッジ強度上下限範囲(エッジ強度上限値EDmaxおよびエッジ強度下限値EDmin)をヒストグラム522の主成分をまたぐように設定している場合を示す。
図23に示す例においては、エッジ画像データに含まれる大部分の画素がもつエッジ強度の値がエッジ強度下限値EDminより小さいので、画像表示エリア412には、全体的に暗めのエッジ画像が表示される。一方、図24に示す例においては、エッジ画像データに含まれる大部分の画素がもつエッジ強度の値がエッジ強度上下限範囲に収まるので、画像表示エリア412には、図22に比較して、より全体的に明るめのエッジ画像が表示される。但し、この場合には、ワークの中心部分には、白飛び(一種のハレーション)が生じている。
このように、エッジ強度上下限範囲を変更することで、画像表示エリア412に表示されるエッジ画像が随時変化するので、ワークの目的とする部分に応じて、適切な明度をもって画像表示を行なうことができる。
(j3.バンドパスフィルタ処理)
<1.構成>
以下、図10に示す設定画面401の合成設定エリア440において「バンドパスフィルタ」が選択された場合に実行される後処理として、画像に含まれる特定の周波数成分のみを抽出するバンドパスフィルタ処理について説明する。
このバンドパスフィルタ処理を用いることで、特定領域の周波数成分を抽出することができ、これにより、特定のエッジを抽出したり、画像のシェーディングをカットしたりすることができる。
このようなバンドパスフィルタ処理は、典型的には、1つの入力画像データに対して、異なる2つのウィンドウサイズで平滑化(フィルタリング)処理した画像データ同士の差分を算出することで実現することができる。代替の方法として、画像データに対してフーリエ変換を行なうことで、同様のバンドパスフィルタ処理を実現することもできる。
以下の説明においては、1つの合成画像データを異なる2つのウィンドウサイズで平滑化処理する構成について例示する。すなわち、以下に説明するバンドパスフィルタ処理においては、合成画像データに対して第1の平滑化処理を行なうことで第1の平滑化画像データを生成するとともに、第1の平滑化処理とは異なる第2の平滑化処理を行なうことで第2の平滑化画像データを生成し、さらに両者の間で画像差分を算出することで出力画像データデータを生成する。
図25は、この発明の実施の形態に従う後処理部230C(図6)の制御構造を示す機能ブロック図である。図25を参照して、後処理部230Cは、画像バッファ2321と、第1平滑化部2322と、第2平滑化部2323と、差分抽出部2324と、マッピング部2325と、ヒストグラム生成部2326とを含む。
画像バッファ2321は、画像合成部212(図6)から出力される合成画像データを一時的に格納する。この画像バッファ2321に格納された合成画像データは、第1平滑化部2322および第2平滑化部2323の両方からアクセス可能となっている。
第1平滑化部2322および第2平滑化部2323は、いずれも、画像バッファ2321に格納されている合成画像データに対してそれぞれ設定されたウィンドウサイズで平滑化処理を行なう。この平滑化処理とは、合成画像データに対して設定されたウィンドウサイズで複数のウィンドウを設定し、各ウィンドウに含まれる画素の間で平均化処理を行なうものである。このウィンドウサイズは、言い換えれば、対応するウィンドウに含まれる画素の範囲を意味する。たとえば、ウィンドウサイズが3×3であれば、各ウィンドウには、9個の画素が含まれることになる。そして、第1平滑化部2322および第2平滑化部2323がそれぞれ出力した平滑化後の画像データは、差分抽出部2324へ出力される。
すなわち、第1平滑化部2322および第2平滑化部2323からそれぞれ出力される画像データは、対応するウィンドウサイズに相当する周波数フィルタを通過した画像データに相当する。言い換えれば、第1平滑化部2322は、遮断周波数f1のローパスフィルタとして機能し、第2平滑化部2323は、遮断周波数f2のローパスフィルタとして機能する。
差分抽出部2324は、第1平滑化部2322から入力された第1画像データと、第2平滑化部2323から入力された第2画像データとの間で差分を抽出することで、差分画像データ(後処理後画像データ)を生成する。より具体的には、差分抽出部2324は、第1画像データの座標位置iにおける色情報(R(1) i,G(1) i,B(1) i)と、第2画像データの対応する座標位置iにおける色情報(R(2) i,G(2) i,B(2) i)との各色成分における差を算出する。このようにして、差分抽出部2324は、すべての画素について各画素についての色差ベクトルを算出する。さらに、差分抽出部2324は、算出した色差ベクトルの絶対値を対応する座標位置iにおける明度Viとして算出する。このようにして、差分抽出部2324は、すべての画素について算出した明度Viを含む差分画像データを出力する。なお、差分抽出部2324は、入力される合成画像データのもつ階調範囲(各色32ビット)と同等の階調範囲をもつ明度Viを出力する。
このように、第1画像データと第2画像データとの差分を算出することで、出力される差分画像データは、合成画像データを遮断周波数f1と遮断周波数f2との間の帯域フィルタに通過させた画像に相当する。なお、第2平滑化部2323において平滑化処理を行なわないようにすると、差分抽出部2324から出力される差分画像データは、合成画像データを遮断周波数f1のハイパスフィルタに通過させた画像に相当するようになる。
図26は、この発明の実施の形態に従うバンドパスフィルタ処理の各ステージにおける画像データの一例を示す図である。たとえば、図26(a)に示すような合成画像データが画像バッファ2321に入力されたとする。図26(b)には、図26(a)に示すような合成画像データに対して、あるウィンドウサイズが設定されたバンドパスフィルタ処理の出力結果である出力画像データの一例を示す。このような出力画像データの生成過程において、より小さなウィンドウサイズを設定された第1平滑化部2322からは、図26(a)に示すような合成画像データに対して平滑化処理が実行され、図26(c)に示すような平滑化後の画像データが出力される。一方、より大きなウィンドウサイズを設定された第2平滑化部2323からは、図26(a)に示すような合成画像データに対して平滑化処理が実行され、図26(c)に示すような平滑化後の画像データが出力される。この図26(c)に示す画像データと図26(d)に示す画像データとの間で差分がとられることで、図26(b)に示すような出力画像データが生成される。
マッピング部2325は、差分画像データの各画素の明度Viを対応する座標位置iにおける階調値Yi(たとえば、0〜255階調値)に割当てることで、合成画像データの濃淡値(明度)を決定する。一般的に、各画素の明度Viの階調範囲は、階調値Yiの階調範囲より広い。なお、マッピング部2325におけるマッピング処理については、上述した図12と同様である。
すなわち、ユーザによってマッピングの範囲(明度上限値Vmaxと明度下限値Vmin)が設定された場合には、マッピング部2325は、以下のような変換式に従って階調値Yiへの割当てを行なう。
(i)Yi<Vmin:Yi=0
(ii)Vmin≦Yi≦Vmax:Yi=255×(Vi−Vmin)/(Vmax−Vmin)
(iii)Vmax<Yi:Yi=255
このように、マッピング部2325において、明度Viから階調値Yiへの変換に用いられる対応関係は、明度上限値Vmaxおよび明度下限値Vminを変更することで、適宜更新されることになる。
図25に戻って、ヒストグラム生成部2326は、差分画像データに含まれる画素の明度Viについてのヒストグラムを生成する。すなわち、ヒストグラム生成部2326は、差分画像データに含まれる画素の明度Viの分布をモニタ102に表示させるための分布データを生成する。より具体的には、ヒストグラム生成部2326は、各画素の明度Viを所定幅の階級に区分した上で各階級の頻度を算出する。このヒストグラム生成部2326により生成されるヒストグラムを参照することで、ユーザは、どの範囲の明度をもつ画素を出力画像データとして出力すべきかを容易に設定することができる。
<2.ユーザインターフェイス例>
上述したバンドパスフィルタ抽出処理についての理解を容易にするために、図27を参照して、モニタ102(図1)に表示されるバンドパスフィルタ処理に係るユーザインターフェイスの一例について説明する。
図27は、この発明の実施の形態に従う画像処理装置のモニタ102に表示されるバンドパスフィルタ処理の選択時における画面表示例を示す図である。
図27には、図10に示す合成設定エリア440において、フィルタ処理プルダウンボックス441で「バンドパスフィルタ」の項目が選択された場合に表示される設定画面601の一例を示す。フィルタ処理プルダウンボックス441において「バンドパスフィルタ」の項目が選択されることで、合成画像データに対して上述したようなバンドパスフィルタ処理が開始される。
図27に示す設定画面601は、合成設定エリア440Cと、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とを含む。なお、表示設定エリア419と、撮像設定表示エリア418と、画像表示エリア412と、表示制御アイコン群413と、全体表示エリア414とについては、上述の図10に示す設定画面401と同様であるので、詳細な説明は繰返さない。
合成設定エリア440Cは、図10に示す合成設定エリア440に、ウィンドウサイズ設定ボックス631および632と、ヒストグラム表示エリア620を加えたものに相当する。
ウィンドウサイズ設定ボックス631および632は、それぞれ第1平滑化部2322および第2平滑化部2323(いずれも図25)における平滑化処理に用いられるウィンドウサイズの数値入力を受付ける。すなわち、ウィンドウサイズ設定ボックス631に対して入力される数値S1は、第1平滑化部2322に与えられる。そして、第1平滑化部2322は、S1×S1のウィンドウサイズで平滑化処理を実行する。同様に、ウィンドウサイズ設定ボックス632に対して入力される数値S2は、第2平滑化部2323に与えられる。そして、第2平滑化部2323は、S2×S2のウィンドウサイズで平滑化処理を実行する。
ヒストグラム表示エリア620には、バンドパスフィルタ処理によって得られた差分画像データの明度についてのヒストグラムが表示される。すなわち、ヒストグラム生成部2326(図25)が生成するヒストグラム622は、ヒストグラム表示エリア620内に表示される。
ヒストグラム表示エリア620内には、ユーザ設定された明度下限値Vminおよび明度上限値Vmaxを示すインジケータ624および626がそれぞれ表示される。さらに、ヒストグラム表示エリア620に関連付けて、明度上限値Vmaxおよび明度下限値Vminの直接的な数値入力を受付ける数値入力ボックス630と、明度下限値Vminを設定するためのスライドバー634と、明度上限値Vmaxを設定するためのスライドバー636とが表示される。
スライドバー634もしくは636、または数値入力ボックス630に対するユーザ操作によって設定される明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)に応じて、バンドパスフィルタ処理によって得られる差分画像データに対して、マッピング処理がなされる。すなわち、スライドバー634もしくは636、または数値入力ボックス630を介して設定された明度上下限範囲(明度上限値Vmaxおよび明度下限値Vmin)は、マッピング部2325(図25)へ与えられる。
(j4.色抽出処理)
図10に示す設定画面401の合成設定エリア440において「色抽出」が選択された場合に実行される後処理として、画像に含まれる特定の色成分を有する画素(領域)を抽出する色抽出処理について説明する。
この色抽出処理は、一種の色フィルタ処理に相当し、入力された合成画像データにおいて、ユーザが指定した色と一致もしくは当該色に近接する色情報を有する画素の位置を特定する。このような色抽出処理を用いることで、指定された色をもつ画素についての面積測定処理やラベリング処理などを行なうことができる。
なお、ユーザが指定する色情報としては、「赤色」「緑色」「青色」の濃淡値を用いるRGB表色系に加えて、HSB(Hue Saturation Brightness)表色系を用いてもよい。合成画像データに対してこのような色抽出処理を行なうことで、モニタ102では表現できないわずかな色の違いであっても、区別して色抽出を行なうことができる。
[K.処理手順]
図28は、この発明の実施に形態に従う画像処理装置における全体処理手順を示すフローチャートである。図29は、この発明の実施に形態に従う画像処理装置におけるマッピング処理の手順を示すフローチャートである。図30は、この発明の実施に形態に従う画像処理装置における差分抽出処理の手順を示すフローチャートである。図31は、この発明の実施に形態に従う画像処理装置におけるエッジ抽出処理の手順を示すフローチャートである。図32は、この発明の実施に形態に従う画像処理装置におけるバンドパスフィルタ処理の手順を示すフローチャートである。図28〜図32に示すフローチャートにおける各ステップは、典型的には、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。なお、画像合成処理に係る撮像回数および各撮像における露光時間などは予め設定されているものとする。
また、入力画像データは、n個の画素から構成され、その座標位置を変数i(1≦i≦n)として表わすものとする。
(k1.全体処理)
図28を参照して、まず、CPU105は、撮像部8に指令を与えて、予め設定された露光時間群のうちいずれか1つの露光時間でワーク2を撮像させる(ステップS2)とともに、撮像部8から送られてくる入力画像データをメモリ106などに一時的に格納する(ステップS4)。続いて、CPU105は、予め設定された露光時間群のすべてについての撮像が完了したか否かを判断する(ステップS6)。予め設定された露光時間群の一部についての撮像が未了である場合(ステップS6においてNOの場合)には、CPU105は、予め設定された露光時間群のうち撮像が未了であるいずれかの露光時間をセットし(ステップS8)、ステップS2以下の処理を繰返す。
これに対して、予め設定された露光時間群のすべてについての撮像が完了している場合(ステップS6においてYESの場合)には、CPU105は、変数iを初期化(i←1)し(ステップS10)、メモリ106など一時的に格納されている複数の入力画像データについて、座標位置iに対応する画素が有する色情報および輝度をそれぞれ読出す(ステップS12)。続いて、CPU105は、読出された複数の入力画像データの座標位置iに対応する画素がそれぞれ有する輝度に基づいて、座標位置iの合成輝度Eiを算出する(ステップS14)。同時並行的に、CPU105は、読出された複数の入力画像データの座標位置iに対応する画素がそれぞれ有する輝度および色情報に基づいて、座標位置iの合成色情報(ri,gi,bi)を算出する(ステップS16)。
そして、CPU105は、ステップS14において算出した座標位置iの合成輝度Eiと、ステップS16において算出した座標位置iの合成色情報(ri,gi,bi)とを乗じることで、座標位置iの絶対的な色情報(Ri,Gi,Bi)を算出する(ステップS18)。
続いて、CPU105は、現在の座標位置iが入力画像データに含まれる最終位置(n番目)であるか否かを判断する(ステップS20)。現在の座標位置iが入力画像データに含まれる最終位置ではない場合(ステップS20においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算(i←i+1)して(ステップS22)、ステップS12以下の処理を繰返す。
現在の座標位置iが入力画像データに含まれる最終位置である場合(ステップS20においてYESの場合)には、CPU105は、後処理として、差分抽出処理が選択されているか否かを判断する(ステップS24)。差分抽出処理が選択されている場合(ステップS24においてYESの場合)には、CPU105は、図30に示す差分抽出処理を実行する(ステップS26)。その後、処理は終了する。
これに対して、差分抽出処理が選択されていない場合(ステップS24においてNOの場合)には、CPU105は、後処理として、エッジ抽出処理が選択されているか否かを判断する(ステップS28)。エッジ抽出処理が選択されている場合(ステップS28においてYESの場合)には、図31に示すエッジ抽出処理を実行する(ステップS30)。その後、処理は終了する。
これに対して、エッジ抽出処理が選択されていない場合(ステップS28においてNOの場合)には、CPU105は、後処理として、バンドパスフィルタ処理が選択されているか否かを判断する(ステップS32)。バンドパスフィルタ処理が選択されている場合(ステップS32においてYESの場合)には、CPU105は、図32に示すバンドパスフィルタ処理を実行する(ステップS34)。その後、処理は終了する。
これに対して、バンドパスフィルタ処理が選択されていない場合(ステップS32においてNOの場合)には、CPU105は、後処理として、色抽出処理が選択されているか否かを判断する(ステップS36)。色抽出処理が選択されている場合(ステップS36においてYESの場合)には、CPU105は、ユーザ操作に従って色抽出処理を実行し、その結果を後続処理へ出力、および/または、モニタ102に表示する(ステップS38)。その後、処理は終了する。
これに対して、色抽出処理が選択されていない場合(ステップS36においてNOの場合)には、CPU105は、図29に示すマッピング処理を実行する(ステップS40)。すなわち、CPU105は、より多くの階調値をもつ合成画像データを所定の階調範囲の出力画像データに変換する。そして、CPU105は、この生成した出力画像データをモニタ102に表示する(ステップS42)。その後、処理は終了する。
(k2.マッピング処理)
次に、図29を参照して、マッピング処理について例示する。なお、図29に示すマッピング処理は、図28に示すステップS40に加えて、図30に示す差分抽出処理、図31に示すエッジ抽出処理、図32に示すバンドパスフィルタ処理においてそれぞれ利用されるサブルーチンである。したがって、マッピング対象の物理値(合成輝度Ei,明度Vi,エッジ強度EDiなど)を処理対象値Xiとして表わし、マッピング範囲を定める上限値および下限値をそれぞれMAXおよびMINとして表わす。
図29を参照して、まず、CPU105は、変数iを初期化(i←1)する(ステップS100)。続いて、CPU105は、処理対象値Xiを読出し(ステップS102)、さらに、ユーザ設定される上限値MAXおよび下限値MINを読出す(ステップS104)。
そして、CPU105は、Yi=255×(Xi−MIN)/(MAX−MIN)の演算式に従って階調値Yiを算出する(ステップS106)。続いて、CPU105は、算出した階調値Yi<について、階調値Yi<0が成立するか否かを判断する(ステップS108)。階調値Yi<0が成立する場合(ステップS108においてYESの場合)には、CPU105は、階調値Yiに「0」をセット(Yi←0)する(ステップS110)。
これに対して、階調値Yi<0が成立しない場合(ステップS108においてNOの場合)には、CPU105は、階調値Yi>255が成立するか否かを判断する(ステップS112)。階調値Yi>255が成立する場合(ステップS112においてYESの場合)には、CPU105は、階調値Yiに「255」をセット(Yi←255)する(ステップS114)。
階調値Yi>255が成立しない場合(ステップS112においてNOの場合)、またはステップS110もしくはステップS114の実行後、CPU105は、算出した階調値Yiの値をマッピング処理の結果として出力する(ステップS116)。さらに、CPU105は、現在の座標位置iが処理対象値Xiの最終値であるか否かを判断する(ステップS118)。現在の座標位置iが処理対象値Xiの最終値ではない場合(ステップS118においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算(i←i+1)して(ステップS120)、ステップS102以下の処理を繰返す。
これに対して、現在の座標位置iが処理対象値Xiの最終値である場合(ステップS118においてYESの場合)には、CPU105は、現在の処理終了し、元の処理に戻る。
(k3.差分抽出処理)
次に、図30を参照して、差分抽出処理について説明する。なお、モデル画像データは予め登録されているものとする。また、後述する位置修正処理が有効化されている場合には、位置修正モデル画像データも予め登録されているものとする。
図30を参照して、CPU105は、まず、位置修正処理が有効化されているか否かを判断する(ステップS200)。すなわち、CPU105は、図10に示す位置修正チェックボックス447がチェックされているか否かを判断する。位置修正処理が有効化されていない場合(ステップS200においてNOの場合)には、処理はステップS210へ進む。
これに対して、位置修正処理が有効化されている場合(ステップS200においてYESの場合)には、CPU105は、位置修正モデル画像データを読出す(ステップS202)。続いて、CPU105は、読出した位置修正モデル画像に基づいて、合成画像データに対してサーチ処理を実行する(ステップS204)。そして、CPU105は、サーチ処理が成功したか否かを判断する(ステップS206)。サーチ処理が失敗した場合(ステップS206においてNOの場合)には、CPU105は、サーチ処理が失敗した旨の通知を行なった上で、処理を終了する。
これに対して、サーチ処理が成功した場合(ステップS206においてYESの場合)には、CPU105は、合成画像データに対して、サーチ処理の結果に基づく画像変換を行なう(ステップS208)。より具体的には、CPU105は、合成画像データとモデル画像データとが対応して配置されるように、合成画像データの向きおよび/またはサイズを変更する。そして、処理はステップS210へ進む。
ステップS210において、CPU105は、変数iを初期化(i←1)する。続いて、CPU105は、合成画像データ(もしくは、画像変換後の合成画像データ)の座標位置iにおける色情報(Ri,Gi,Bi)を読出す(ステップS212)とともに、モデル画像データの座標位置iにおける色情報(R(m) i,G(m) i,B(m) i)を読出す(ステップS214)。さらに、CPU105は、読出した色情報(Ri,Gi,Bi)と色情報(R(m) i,G(m) i,B(m) i)との差分の色情報(Ri−R(m) i,Gi−G(m) i,Bi−B(m) i)を算出する(ステップS216)。
そして、CPU105は、算出した差分の色情報の明度Viを算出する(ステップS218)。具体的には、Vi=√{(Ri−R(m) i)2+(Gi−G(m) i)2+(Bi−B(m) i)2}の計算式に従って、明度Viが算出される。続いて、CPU105は、算出した明度Viに対してマッピング処理を実行する(ステップS220)。すなわち、CPU105は、算出した明度Viに対して図29に示すマッピング処理を実行する。
その後、CPU105は、マッピング処理により得られる階調値Yiを出力画像データの座標位置iにおける成分値として出力する(ステップS222)。さらに、CPU105は、現在の座標位置iが合成画像データに含まれる最終位置であるか否かを判断する(ステップS224)。現在の座標位置iが合成画像データに含まれる最終位置ではない場合(ステップS224においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算(i←i+1)して(ステップS226)、ステップS214以下の処理を繰返す。
これに対して、現在の座標位置iが第1画像データおよび第2画像データに含まれる最終位置である場合(ステップS224においてYESの場合)には、CPU105は、生成された出力画像データを後続処理へ出力、および/または、モニタ102に表示する(ステップS228)。その後、処理は終了する。
(k4.エッジ抽出処理)
次に、図31を参照して、エッジ抽出処理について説明する。図31に示すエッジ抽出処理においては、ラプラシアンフィルタを用いる場合の処理について例示する。なお、説明の便宜上、合成画像データの座標位置を2次元の座標(k,l)(但し、1≦k≦XX;1≦l≦YY;k×l=n)として表わすものとする。
図31を参照して、CPU105は、変数kおよび変数lを初期化(k←1,l←1,)する(ステップS300)。
続いて、ステップS302〜S334において、座標位置(k,l)の画素についての空間フィルタ処理が実行される。
すなわち、CPU105は、変数SUMを初期化(SUM←0)し(ステップS302)、変数aおよび変数bを初期化(a←−1,b←−1,)する(ステップS304)する。続いて、CPU105は、合成画像データの座標位置(k+a,l+b)における色情報(Rk+a,l+b,Gk+a,l+b,Bk+a,l+b)を読出す(ステップS306)とともに、その色情報の明度Viを算出する(ステップS308)。具体的には、Vi=√(Rk+a,l+b 2+Gk+a,l+b 2+Bk+a,l+b 2)の計算式に従って、明度Vk+a,l+bが算出される。
さらに、CPU105は、ステップS308において算出した明度Vk+a,l+bに重み係数W(a,b)を乗じた値を変数SUMに加算する(SUM←SUM+Vk+a,l+b×W(a,b))(ステップS310)。なお、重み係数W(a,b)は、以下のような値をとる。
W(−1,−1)=−1,W(0,−1)=−1,W(1,−1)=−1
W(−1,0)=−1,W(0,0)=8,W(1,0)=−1,
W(−1,1)=−1,W(0,1)=−1,W(1,1)=−1,
その後、CPU105は、現在の変数aに「1」を加算(a←a+1)して(ステップS312)、変数a≦1が成立するか否かを判断する(ステップS314)。変数a≦1が成立する場合(ステップS314においてYESの場合)には、ステップS306以下の処理が繰返される。
これに対して、変数a≦1が成立しない場合(ステップS314においてNOの場合)には、CPU105は、現在の変数bに「1」を加算(b←b+1)して(ステップS316)、変数b≦1が成立するか否かを判断する(ステップS318)。変数b≦1が成立する場合(ステップS318においてYESの場合)には、CPU105は、変数bを初期化(b←−1)し(ステップS320)、ステップS306以下の処理を繰返す。
これに対して、変数b≦1が成立しない場合(ステップS318においてNOの場合)には、CPU105は、現在の変数SUMの値をエッジ強度EDk,lとして出力する(ステップS322)。続いて、CPU105は、算出したエッジ強度EDk,lに対してマッピング処理を実行する(ステップS324)。すなわち、CPU105は、算出したエッジ強度EDk,lに対して図29に示すマッピング処理を実行する。そして、CPU105は、マッピング処理により得られる階調値Yiを出力画像データの座標位置(k,l)における成分値として出力する(ステップS326)。
CPU105は、現在の変数kに「1」を加算(k←k+1)して(ステップS328)、変数k≦XXが成立するか否かを判断する(ステップS330)。変数k≦XXが成立する場合(ステップS330においてYESの場合)には、ステップS302以下の処理が繰返される。
これに対して、変数k≦XXが成立しない場合(ステップS330においてNOの場合)には、現在の変数lに「1」を加算(l←l+1)して(ステップS332)、変数l≦YYが成立するか否かを判断する(ステップS334)。変数l≦YYが成立する場合(ステップS334においてYESの場合)には、変数kを初期化(k←−1)し(ステップS336)、ステップS302以下の処理を繰返す。
これに対して、変数l≦YYが成立しない場合(ステップS334においてNOの場合)には、生成された出力画像データを後続処理へ出力、および/または、モニタ102に表示する(ステップS338)。その後、処理は終了する。
(k5.バンドパスフィルタ処理)
次に、図32を参照して、バンドパスフィルタ処理について説明する。図32を参照して、CPU105は、ユーザ設定されるウィンドウサイズS2およびS2を読出す(ステップS400)。続いて、CPU105は、合成画像データに対して、S1×S1のウィンドウサイズで平滑化処理を実行して、第1画像データを生成する(ステップS402)。同時並行的に、CPU105は、合成画像データに対して、S2×S2のウィンドウサイズで平滑化処理を実行して、第2画像データを生成する(ステップS404)。
その後、CPU105は、変数iを初期化(i←1)する(ステップS406)。続いて、CPU105は、第1画像データの座標位置iにおける色情報(R(1) i,G(1) i,B(1) i)を読出す(ステップS408)とともに、第2画像データの座標位置iにおける色情報(R(2) i,G(2) i,B(2) i)を読出す(ステップS410)。さらに、CPU105は、読出した色情報(R(1) i,G(1) i,B(1) i)と色情報(R(2) i,G(2) i,B(2) i)との差分の色情報(R(1) i−R(2) i,G(1) i−G(2) i,B(1) i−B(2) i)を算出する(ステップS412)。
そして、CPU105は、算出した差分の色情報の明度Viを算出する(ステップS414)。具体的には、Vi=√{(R(1) i−R(2) i)2+(G(1) i−G(2) i)2+(B(1) i−B(2) i)2}の計算式に従って、明度Viが算出される。続いて、CPU105は、算出した明度Viに対してマッピング処理を実行する(ステップS416)。すなわち、CPU105は、算出した明度Viに対して図29に示すマッピング処理を実行する。
その後、CPU105は、マッピング処理により得られる階調値Yiを出力画像データの座標位置iにおける成分値として出力する(ステップS418)。さらに、CPU105は、現在の座標位置iが第1画像データおよび第2画像データに含まれる最終位置であるか否かを判断する(ステップS420)。現在の座標位置iが第1画像データおよび第2画像データに含まれる最終位置ではない場合(ステップS420においてNOの場合)には、CPU105は、現在の座標位置iに「1」を加算(i←i+1)して(ステップS422)、ステップS408以下の処理を繰返す。
これに対して、現在の座標位置iが第1画像データおよび第2画像データに含まれる最終位置である場合(ステップS420においてYESの場合)には、CPU105は、生成された出力画像データを後続処理へ出力、および/または、モニタ102に表示する(ステップS424)。その後、処理は終了する。
[L.変形例1]
上述の実施の形態においては、マッピング処理において、ユーザがマッピング範囲を定める上限値および下限値を設定する構成について例示したが、生成されたヒストグラムに基づいて、マッピング範囲を自動的に設定してもよい。より具体的には、ヒストグラムに現れる主成分を特定するとともに、その分散度合いを算出し、それに応じた位置および幅をマッピング範囲に設定する。
[M.変形例2]
上述の実施の形態においては、合成画像データの全体に対して、各種の後処理を適用する構成について例示したが、合成画像データの一部の部分画像データについてのみ上述のような後処理を実行してもよい。この場合には、図14に示すようなユーザインターフェイス上で、ユーザが合成画像データのうち処理対象の領域を設定することになる。なお、このように部分画像データに対して、各種の後処理が実行される場合には、出力画像データのサイズも指定された部分画像データに大きさに応じたものとなる。
[N.その他の実施の形態]
本発明に係るプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
また、本発明に係るプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明に係るプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記憶された記憶媒体とを含む。
さらに、本発明に係るプログラムによって実現される機能の一部または全部を専用のハードウェアによって構成してもよい。
[O.本実施の形態に従う作用効果]
この発明の実施の形態によれば、撮像部が撮像することで取得される入力画像データ(たとえば、各色8ビット階調)を合成して、より広い階調範囲の画素情報をもつ合成画像データ(たとえば、各色32ビット階調)を生成した上で、この合成画像データの有する情報量を低減することなく、各種の後処理を実行する。そのため、差分抽出処理、エッジ抽出処理、バンドパスフィルタ処理、色抽出処理といった画像処理をより高い精度で行なうことができる。
さらに、この発明の実施の形態によれば、上述のような画像処理の結果得られた画像を、出力先の後続処理および/またはデバイスに応じた階調範囲に適合して出力する。そのため、出力先の後続処理またはデバイスに対して特別な性能が必要となることはない。そのため、既存の検出処理または計測処理を行なう画像処理モジュールや、各種装置との間で高い親和性をもつことができる。
すなわち、処理可能階調が制約されるような検出/計測モジュール(典型的には、レガシーなソフトウェア)が組み込まれている、ダイナミックレンジを拡大した合成画像データによる精度の高い画像処理を実現できる。
また、この発明の実施の形態によれば、より多くの情報を有する合成画像データを扱うにもかかわらず、検出処理または計測処理での演算処理量(処理時間)が増大することを回避できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。