この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[実施の形態]
<全体装置構成>
図1は、この発明の実施の形態に従う画像処理装置を含む視覚センサシステム1の全体構成を示す概略図である。
図1を参照して、視覚センサシステム1は、代表的に生産ラインなどに組込まれ、被測定物(以下「ワーク」とも称す。)における欠陥などを光学的に検査したり、その大きさなどを光学的に計測したりする。一例として、この発明の実施の形態においては、ワーク2は、ベルトコンベヤなどの搬送機構6によって搬送され、搬送されたワーク2は、撮像装置8によって順次撮影される。撮像装置8によって撮影された画像データ(以下「入力画像データ」とも称す。)は、本実施の形態に従う画像処理装置を実現する代表例であるコンピュータ100へ伝送される。本実施の形態においては、主として、カラーの入力画像データを扱う処理について説明する。
なお、撮像装置8で撮影されるワーク2に対して光を照射する照明機構をさらに設けてもよい。
また、ワーク2が撮像装置8の撮影範囲に到達したことは、搬送機構6の両端に配置された光電センサによって検出される。具体的には、光電センサは、同一の光軸上に配置された受光部4aと投光部4bとからなり、投光部4bから放射される光がワーク2で遮蔽されることを受光部4aで検出することによって、ワーク2の到達を検出する。なお、搬送機構6の制御自体は、図示しないPLC(Programmable Logic Controller)などによって制御される。
撮像装置8は、上述した光電センサによってワーク2の到着が検出されると、これに応じてワーク2の撮影を開始する。あるいは、連続的に撮影を行っておき、ワーク2の到着が検出されると、後述するワーク2の検査や計測を行なうようにしてもよい。
一例として、撮像装置8は、レンズなどの光学系に加えて、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった、複数の画素に区画された撮像素子を含んで構成される。各画素に対応する撮像素子は、入射する光に対して1つまたは複数の分光感度を有している。
より具体的には、撮像装置8の撮像素子は、一例として、各画素について、光の三原色に基づく「赤色」「緑色」「青色」のそれぞれに分光感度を有している。そして、撮像装置8の撮像素子は、入射する光についての「赤色」「緑色」「青色」の3色の検出値(R輝度、G輝度、B輝度)を出力する。ここで、たとえば、R輝度は、撮像素子に入射する光のうち、赤色の分光感度に含まれる波長成分に相当する光のエネルギー(光強度)の大きさを示す。G輝度およびB輝度についても、それぞれ対応の分光感度に含まれる波長成分に相当する光のエネルギー(光強度)の大きさを示す。また、本実施の形態においては、R輝度、G輝度、B輝度は、いずれも8ビット(0〜255階調)の範囲で規定されるものとする。
なお、撮像素子が有する分光感度は3つ(3バンド)に限定されることなく、より多くの色に分光感度をもつようにしてもよい。このようなマルチバンドの撮像素子を用いることで、より撮像可能な色域を拡大させることができる。あるいは、光の三原色の補色である「シアン」「マゼンダ」「黄色」の3色の検出値(C輝度、M輝度、Y輝度)を分光感度として有していてもよい。また、単板式のCCDなどを用いる場合には、各画素が「赤色」「緑色」「青色」のうち1色だけについて受光感度を有している場合がある。このような場合には、図示しない補間部によって、「赤色」「緑色」「青色」の各々についての輝度をもつ入力画像データを生成してもよい。
特に、本実施の形態に従う撮像装置8は、撮影時の露光量を変更可能である。この露光量とは、各撮像時において撮像素子に入射する光エネルギーを調整するための値であり、代表的に、光学系のしぼり量や機械的または電子的なシャッター速度によって調整される。本実施の形態では、露光量の代表例として「露光時間」を調整する構成について例示するが、露光時間に限られず、しぼり量などを調整するようにしてもよい。
一方、コンピュータ100は、FD(Flexible Disk)駆動装置111およびCD−ROM(Compact Disk-Read Only Memory)駆動装置113を搭載するコンピュータ本体101と、モニタ102と、キーボード103と、マウス104とを含む。そして、コンピュータ本体101は、予め格納されたプログラムを実行することで、本実施の形態に従う画像処理装置を実現する。
<ハードウェア構成>
図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との間のデータ通信を仲介するための装置であり、画像バッファ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)などから構成される。後述するように、本実施の形態に従うモニタ102は、ワーク2を撮影して生成される合成画像、1回あたりの処理に要する見込みの処理時間、合成画像を構成する画素の輝度についてのヒストグラムなどを表示する。
マウス104は、クリックやスライドなどの動作に応じたユーザからの指令を受付ける。キーボード103は、入力されるキーに応じたユーザからの指令を受付ける。
また、コンピュータ100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
<動作モード>
本実施の形態に従う視覚センサシステム1は、ワーク2を撮影することで生成される合成画像データを用いて実際に検査や計測を実行する「稼動モード」と、ワーク2についての合成処理に係る設定を行なうための「設定モード」とを選択することが可能である。
ユーザは、「設定モード」において、モニタ102に表示される合成画像データに基づく合成画像を参照しながら、適切な撮影条件を設定する。また、「稼動モード」では、実際に生産ラインを流れるワーク2を撮影して得られる合成画像データを生成し、この合成画像データに対して検査や計測が行われる。
<画像合成処理>
次に、合成画像データを生成するための画像合成処理について説明する。本実施の形態に従う画像合成処理は、主として撮像装置8のダイナミックレンジを拡大させるためのものである。
図3は、ワークとして腕時計の裏面を撮影した場合の入力画像データを示す図である。
図3(a)は、露光時間が相対的に長い条件下で1回の撮影により得られた撮影画像を示し、図3(b)は、露光時間が相対的に短い条件下で1回の撮影により得られた撮影画像を示す。なお、図3(a)および図3(b)において、入射する光の強度は同じ条件である。図3に示すワークは、金属製の時計本体部と皮革製のバンド部とを含む。両者の反射率は大きく異なるので、各部から放射される光パワー(単位時間当たりに放射される光エネルギー)にも大きな差がある。
そのため、露光時間が長くなると、相対的に反射率の高い時計本体部は白飛びを生じてしまい、輝度情報を取得することができない。すなわち、図3(a)に示すように、時計本体部に記された文字が識別できなくなっていることがわかる。これに対して、露光時間が短くなると、相対的に反射率の低いバンド部から十分に光エネルギーを受光することができず、有効な輝度情報を取得することができない。すなわち、図3(b)に示すように、バンド部は黒つぶれを生じており、ステッチなどの欠陥が識別できなくなっていることがわかる。
そこで、本実施の形態に従う画像処理装置は、同一のワークを異なる露光量(露光時間)で複数回撮影し、撮影された複数の入力画像データから合成画像データを生成する。入力画像データは、撮像装置8の各画素に入射する光強度を示す値(各色の輝度)を含んでおり、本実施の形態に従う画像処理装置は、各画素に対応するそれぞれの入力画像データの光強度を示す値(各色の輝度)と、対応する入力画像データの撮影時の露光量とに基づいて、合成画像データの各画素の色情報(以下、「合成色情報」とも称す。)および輝度情報(以下、「合成輝度情報」とも称す。)を算出する。そして、合成色情報及び合成輝度情報に基づいて、合成画像データが生成される。
概略すると、この合成輝度情報の算出処理では、入力画像データそれぞれにおける対応する画素における光強度を示す値(輝度)を露光量で規格化した上で、その規格化された輝度が適切であるものが優先的に採用される。言い換えれば、合成画像データにおける各画素の合成輝度情報は、複数の入力画像データの対応する画素がそれぞれもつ情報のうち、ワークから放射される光パワー(単位時間当たりに入射する光エネルギー)に適した露光量で撮影された画素がもつ情報を主成分として算出される。このような処理によって、適切な露光量で撮影された輝度をもつ画素の集合として、合成画像データを生成できる。図3(c)は、本実施の形態に従う画像合成処理によって生成された合成画像データの一例を示す図である。図3(c)に示すように、上述の画像合成処理を行なうことで、図3(a)のような白飛びや図3(b)に示すような黒つぶれを含まない合成画像データを生成できる。
広いダイナミックレンジを有限の階調をもつ1枚の画像(合成輝度情報)で表現するためには、非線形なトーンマッピングをすることが有効である。トーンマッピングには、種々の方法があり、関数を用いて算出される非線形トーンマッピングの代表例としては、対数変換やガンマ補正などがある。あるいは、関数ではなく予め定められたルックアップテーブルを用いることにより任意の形状のトーンマッピングを行なうこともできる。一方、トーンマッピングをかけるタイミングとして、加算処理を行った後に処理する場合と、加算処理の前に処理する場合の2つの方法が可能である。つまりトーンマッピングには複数のバリエーションがあり、また、処理タイミングとして2つの方法があることになる。
本実施の形態では、これらの処理の一例として、対数変換を行った後に加算処理を行なう場合の構成を示す。また、後述する本実施の形態の第3変形例では、加算処理を行なった後に、対数変換を行なう構成を例示し、後述する本実施の形態の第4変形例では、加算処理を行なった後に、ガンマ補正を行なう構成を例示する。本発明は、これらの処理の組み合わせに限定されることなく、他の公知または周知の処理を用いた他の組み合わせを採用することができる。
本実施の形態に従う画像合成処理は、主として以下の4つの処理によって実現される。
(1)ワークを異なる露光量で順次撮影する処理(撮影処理)
(2)撮影された入力画像データの輝度情報から合成輝度情報を算出する処理(輝度合成処理)
(3)撮影された入力画像データの色情報から合成色情報を算出する処理(色合成処理)
(4)合成色情報と合成輝度情報とから合成画像データを生成する処理(生成処理)
特に、本実施の形態に従う画像処理装置は、上述の(2)および(3)の処理を、(1)の撮影処理と同時並行的に実行することで、合成画像データの生成に要する時間を短縮する。以下では、本実施の形態に従う画像処理装置における画像処理処理についての理解を容易にするために、上述の(1)のすべての処理が完了した後に、上述の(2)〜(4)の処理を一括して実行する構成(一括処理方式)について説明した後、本実施の形態に従う画像処理装置における画像処理方法について説明する。
<I.一括処理方式に係る制御構造>
図4は、この発明に関連する一括処理方式の画像処理装置の制御構造を示す機能ブロック図である。
図4を参照して、本発明に関連する一括処理方式の画像処理装置は、上述の(1)撮影処理を実現するための制御構造として、撮影制御部200と、選択部202と、画像メモリ204a〜204hと、画像情報抽出部206a〜206hとを含み、上述の(2)輝度合成処理を実現するための制御構造として、輝度合成部210と、トーンマッピング部214と、明るさ上下限設定部216と、ヒストグラム生成部218とを含み、上述の(3)色合成処理を実現するための制御構造として、色合成部208を含み、上述の(4)生成処理を実現するための制御構造として、画像生成部212を含む。さらに、一括処理方式の画像処理装置は、処理時間算出部222を含む。
以下、一括処理方式の画像処理装置における各処理の内容を各機能ブロックの動作とともに説明する。
(1)撮影処理
図4を参照して、撮影制御部200は、撮像装置8に同一のワークを異なる露光量で複数回撮影させることにより複数の入力画像データを生成する。撮影制御部200は、ユーザ設定に応じて、どのように露光量を変更するかについて決定する。より具体的には、本実施の形態に従う撮像装置8は、一例として、シャッター速度を任意に設定可能な電子シャッターを有しており、これにより露光時間を任意に変更可能となる。その変更可能な露光時間は、一例として「1/10秒」,「1/20秒」,「1/40秒」,「1/80秒」,「1/160秒」,「1/320秒」,「1/640秒」,「1/1280秒」の8通りを標準として含む。この変更可能な露光時間群は、「1/10秒」を基準(最も遅い値)として、2のべき乗で順次早くなるように設定されている。
撮影制御部200は、予め定められる撮影回数および各撮影における露光量に従って、各撮影前に撮像装置8の露光時間を順次設定し、各設定された露光時間において撮像装置8を用いてワークを順次撮影させる。さらに、撮影制御部200は、各撮影に同期して、選択部202に選択指令を与え、撮像装置8がワークを順次撮影することで生成される入力画像データを画像メモリ204a〜204hに逐次的に格納させる。
選択部202は、撮像装置8と、画像メモリ204a〜204hとの間に配置され、撮影制御部200からの選択指令に応じて、画像メモリ204a〜204hのいずれか1つと撮像装置8とを電気的に接続する。このような動作によって、これにより、撮像装置8がワークを撮影することで生成される入力画像データは、画像メモリ204a〜204hに逐次的に格納される。なお、以下では、画像メモリ204a〜204hを総称して「画像メモリ204」とも記す。
画像メモリ204は、撮像装置8の露光時間に対応付けて構成されており、対応する特定の露光時間において撮影された入力画像データを格納する。たとえば、画像メモリ204aは、露光時間が「1/10秒」の条件で撮影された入力画像データのみを格納し、画像メモリ204bは、露光時間が「1/20秒」の条件で撮影された入力画像データのみを格納するといった具合である。
画像情報抽出部206a〜206hは、それぞれ画像メモリ204a〜204hに対応付けられており、対応の画像メモリ204に格納された入力画像データから、色情報および輝度情報をそれぞれ抽出する。代表的に、入力画像データが各画素に入射する光強度を示す値である3色の輝度(R輝度、G輝度、B輝度)からなるものとすると、入力画像データの色情報は、これらの3色の輝度を規格化した上で、各輝度の相対関係(相対比)を表わしたものである。また、入力画像データの輝度情報は、各画素に入射する光強度を総合的に表わしたものであり、3色の輝度の平均値(あるいは、総和)に相当する。
そして、画像情報抽出部206a〜206hは、抽出した色情報を色合成部208へ出力するとともに、抽出した輝度情報を色合成部208および輝度合成部210へ出力する。
(2)輝度合成処理
(2−1)合成輝度算出
輝度合成部210は、撮像装置8による一連の撮影(予め設定された露光時間におけるすべての撮影)が完了した後、それぞれの入力画像データの輝度情報を対応する露光量によってそれぞれ規格化した上で、各画素の合成輝度を算出する。上述したように、撮像装置8における露光時間を変更することで、撮影に適した光パワーの範囲が変動する。すなわち、露光時間が相対的に短ければ、光パワーのより大きな範囲の撮影に適し、露光時間が相対的に長ければ、光パワーのより小さな範囲の撮影に適する。
そこで、本明細書においては、ワークから放射される光エネルギーの大きさを示す「明るさ」という指標を用いる。なお、「明るさ」は、撮像装置8の性能に依存する相対的な値であり、同じ「明るさ」であっても、撮像素子の感度や光学系の開放値などが異なれば、実際の光エネルギーは異なったものとなる。
一般的に、撮像装置8(撮像素子)に入射する光エネルギーの大きさは、露光時間に比例すると考えられる。そのため、本明細書における「明るさ」としては、代表的に、撮像装置8で検出された輝度を露光時間で割り、その値について対数をとったものを採用する。したがって、本明細書における「明るさ」は、単位露光時間あたりの光エネルギー(光パワー)の大きさを示す指標である。このような「明るさ」を用いることで、撮像装置8に設定可能な各露光時間に対応させて、撮像装置8による撮影に適した「明るさ」範囲を予め規定することができる。
より具体的には、本実施の形態に従う撮像装置8に設定可能な8つの露光時間は、2のべき乗で順次短くなるようになっているので、各露光時間と「明るさ」との対応関係を図5のように定めることができる。
図5は、撮像装置8に設定される露光時間と撮影に適した「明るさ」範囲との関係の一例を示す図である。
図5を参照して、露光時間が「1/10秒」である場合に撮影に適した「明るさ」範囲を「10〜30」に設定すると、露光時間を1/2倍した「1/20秒」である場合には、撮影に適した「明るさ」範囲を「10」だけ加算した「20〜40」に設定できる。このように順次設定することで、露光時間を「1/10秒」〜「1/1280秒」の範囲に対応付けて、「10〜100」の「明るさ」範囲をカバーするように設定できる。なお、この「明るさ」範囲は撮像装置8の性能に依存する相対的な値であり、同じ「明るさ」であっても、撮像素子の感度や光学系の開放値などが異なれば、実際の明るさは異なったものとなる。
また、各「明るさ」範囲を複数の露光時間がカバーするように構成することが好ましい。図5に示す例においては、「明るさ」範囲が10〜90の範囲では、少なくとも2つの露光時間によってカバーするように設定されている。すなわち、たとえば「明るさ」が「50」に対応する露光時間は、「1/40秒」,「1/80秒」,「1/160秒」の3つである。このような設定を行なうことで、ユーザが入力する「明るさ」上下限値の範囲(後述する)が狭い場合であっても、異なる露光時間で複数回の撮影が選択されるようになる。
この図5に示す露光時間と「明るさ」範囲との関係は、撮像装置8で撮影可能な「明るさ」範囲のうち、ユーザによって必要な「明るさ」範囲が設定されると、当該設定に対応する複数の露光時間の各々での撮影が行なわれるようになる。すなわち、撮像装置8に設定可能なすべての露光時間において撮影が行なわれるのではなく、特定の露光時間における撮影のみを行なうことで、画像合成処理に係る処理時間を短縮することもできる。
より具体的には、ユーザによって、「明るさ」範囲が「30〜60」に設定された場合には、その範囲内に含まれる「1/20秒」,「1/40秒」,「1/80秒」の露光時間で1処理あたり3回の撮影が行なわれる。
再度、図4を参照して、輝度合成部210は、ワークに対する一連の撮影によって得られた複数の入力画像データを用いて、合成画像データの各画素の輝度である合成輝度を算出する。より具体的には、輝度合成部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は、図5に示す各露光時間と「明るさ」範囲との関係に従って、0〜100の範囲の値として算出される。なお、理解を容易にするために、0〜100の範囲で表しているが、合成して得られる画像の「明るさ」の階調は、1回の撮影で得られる画像がもつ階調(たとえば、8ビット)よりも大きくなることから、データとしては、小数点以下の桁も有する値である(たとえば、16ビットのデータを用いて小数点以下4桁までの値として取扱う)。
上式においては、さらに、重み関数w(Z)と撮像装置8の撮像素子の応答関数g(Z)を導入している。図6を参照して、これらの関数について説明する。
図6は、重み関数および応答関数の特性の一例を示す図である。図6(a)は、重み関数w(Z)の特性を示し、図6(b)は、応答関数g(Z)の特性を示す。
図6(a)を参照して、重み関数w(Z)は、撮像装置8から出力される輝度の値に応じて、その信頼度を反映するための関数である。すなわち、ある露光量において、撮像装置8から出力される輝度のうち、その下限値(0)または上限値(255)に近い値は、その中間値(128)に近い値に比較して信頼度が低いと考えられる。換言すれば、仮に撮像装置8がある露光量において最も適した「明るさ」をもつ被測定物を撮影すると、その輝度はほぼ中間値になると考えられる。
そこで、このような特性を考慮して、重み関数w(Z)としては、輝度階調値の中間値の近傍に比較して、下限値または上限値の近傍の値がより小さくなるような関数を用いることが好ましい。一例として、本実施の形態では、輝度階調値の中間値が最大値(128)となるとともに、下限値および上限値でそれぞれゼロとなるような三角形状の重み関数を採用する。このような重み関数を採用することで、露光時間毎の入力画像データのうち、その輝度が所定範囲内にあるものを優先的に採用して合成輝度が算出される。
また、図6(b)を採用して、応答関数g(Z)は、撮像装置8から出力される輝度と実際に撮像装置8に入力する光エネルギーとの間の非線形性を補償するための関数である。たとえば、CCDなどの撮像素子では、入力する光エネルギーあるいは光量と出力される電圧信号との関係は非線形となる。このような非線形特性はガンマ特性などとも称される。応答関数g(Z)は、このようなガンマ特性を補償して、撮像装置8から出力される輝度を、実際に撮像装置8に入力する光エネルギーに比例するように補正するものである。なお、図6(b)には、簡単化のため、撮像装置8から出力される輝度が入力する光エネルギーと比例関係にある場合の応答関数g(Z)を示す。
なお、上式中の定数項の「C」は、各露光時間と「明るさ」範囲との関係を図5のように定めた場合に生じるオフセットを補償するための項であり、各露光時間と「明るさ」範囲との関係に応じて適宜設定することができる。
また、上式中では、ネイピア数「e」を底にした自然対数を用いているが、必ずしも「e」に限定されるものではなく、「2」を底にした対数や「10」を底にした常用対数などを用いてもよい。
(2−2)トーンマッピング
再度、図4を参照して、輝度合成部210は、算出した合成輝度Eiをトーンマッピング部214へ出力する。トーンマッピング部214は、合成輝度Eiに基づいて合成画像データを生成するための輝度情報を算出する。具体的には、トーンマッピング部214は、各合成輝度Ei(輝度範囲:0〜100;但し、256階調より大きな階調をもつ)を合成画像データの輝度範囲(たとえば、0〜255階調値)に割り当てることで、合成画像データの輝度情報を算出する。なお、各合成輝度Eiの分解能(ダイナミックレンジ)は、入力画像データより高くなるので、合成画像データの輝度範囲を入力画像データより多階調化することで、より精度の高い合成画像データを生成できる。
特に、トーンマッピング部214は、後述するようにユーザによる「明るさ」上下限の設定に応じて、合成輝度Eiのうち所定範囲を合成画像データの輝度範囲に割り当てる。
図7は、トーンマッピング部214による割り当て処理を説明するための図である。
図7を参照して、説明を簡素化するために、トーンマッピング部214が線形の割り当て処理を行なう場合について例示する。最も簡単な例としては、輝度範囲が0〜100である合成輝度Eiの比例関係を保ったまま、0〜255の範囲の階調値への割り当てである。これにより、モニタが持つ表示能力より大きな階調をもつデータを、モニタの持つ表示能力に合わせた階調(たとえば、8ビット表示)で表示することができる。
上述したように、ユーザによって「明るさ」上限値Bmaxと「明るさ」下限値Bminが設定された場合には、トーンマッピング部214は、以下のような式に従って、輝度Yiへの割り当てを行なう。
Yi=255×(Ei−Bmin)/(Bmax−Bmin)
(計算例)
一例として、それぞれ3つの露光時間「1/20秒」,「1/40秒」,「1/80秒」において撮影が行なわれることで入力画像データが取得された場合において、3つの入力画像データの座標位置iにおける輝度が、それぞれ「190」,「100」,「50」であるとする。この場合において、当該座標位置iに対応する画素の合成輝度Eiは以下のように算出される。但し、W(190)=65,W(100)=100,W(50)=50である。
Ei=10×{65×(log190+log20−8)+100×(log100+log40−8)+50×(log50+log80−8)}/(65+100+50)=40
そして、ユーザによって、「明るさ」上限値Bmaxが「60」で、「明るさ」下限値Bminが「30」に設定された場合には、合成画像データの輝度Yiは以下のように算出される。
Yi=255×(40−30)/(60−30)=85
(2−3)ヒストグラム生成
再度、図4を参照して、輝度合成部210は、算出した合成輝度Eiをヒストグラム生成部218へも出力する。ヒストグラム生成部218は、合成輝度Eiについてのヒストグラムを生成する。すなわち、ヒストグラム生成部218は、各画素の合成輝度Eiを所定幅の階級に区分した上で画素数を積算していく。これは、ユーザが、輝度合成部210によって算出される合成輝度Eiのうち相対的に比率の高い範囲を参照しながら、上述の「明るさ」上限値および「明るさ」下限値を設定することを助ける。
また、ヒストグラム生成部218は、後述するユーザ設定に応じて、ヒストグラムの生成処理を中断または再開可能に構成される。
(3)色合成処理
図4を参照して、色合成部208は、複数の入力画像データの色情報から合成色情報を算出する。後述するように、合成画像データの各画素は、色合成部208で算出される合成色情報に、輝度合成部210およびトーンマッピング部214によって算出される合成輝度情報を乗じて得られるため、色合成部208から出力される合成色情報は、「赤色」、「緑色」、「青色」の相対的な比を示す値となる。
また、色合成部208は、上述の輝度合成部210と同様に、各座標位置に対応する複数の入力画像データにおけるそれぞれの画素の色情報に基づいて、合成画像データの各画素の合成色情報を算出する。より具体的には、色合成部208は、各入力画像データの色情報と、その信頼度に応じた重みとを乗算した値を累積加算することで、合成色情報を算出する。
ここで、j番目の入力画像データの座標位置i(0≦i≦画素数n)における色情報を(ri,j,gi,j,bi,j)とする。但し、色合成部208は、画像情報抽出部206a〜206hから出力される色情報を、ri,j+gi,j+bi,j=1が成立するように規格化する。また、j番目の入力画像データの座標位置iにおける輝度をZi,jとする。この規格化された色情報および輝度を用いると、合成色情報(ri,gi,bi)の算出式は(2.1)〜(2.3)式のようになる。
ここで、重み関数w(Z)は、図6(a)と同様の特性を有する。すなわち重み関数w(Z)は、撮像装置8から出力される輝度の値に応じて、その信頼度を反映するための関数である。この重み関数w(Z)の技術的な意味については、上述したので詳細な説明は繰返さない。
そして、色合成部208は、算出した合成色情報を画像生成部212へ出力する。
(4)生成処理
画像生成部212は、輝度合成部210およびトーンマッピング部214によって算出された輝度Yiを、対応する合成色情報(ri,gi,bi)に順次乗じることによって、座標位置iの画素の画像情報を順次算出し、これによって合成画像データを生成する。
すなわち、合成画像データの座標位置iの座標における絶対的な色情報(Ri,Gi,Bi)は、以下のように表わすことができる。
(Ri,Gi,Bi)=Yi×(ri,gi,bi)
以上のような手順に従って、合成画像データが生成される。
<II.並行処理方式に係る制御構造>
図8は、この発明の実施の形態に従う画像処理装置の制御構造を示す機能ブロック図である。
図8を参照して、この発明の実施の形態に従う画像処理装置は、上述の(1)撮影処理を実現するための制御構造として、撮影制御部300と、画像メモリ302とを含み、上述の(2)輝度合成処理を実現するための制御構造として、輝度情報更新部306と、分子メモリ307Nと、分母メモリ307Dと、輝度情報合成部310と、トーンマッピング部214と、明るさ上下限設定部216と、ヒストグラム生成部218とを含み、上述の(3)色合成処理を実現するための制御構造として、色情報更新部304と、Rメモリ305Rと、Gメモリ305Gと、Bメモリ305Bと、色情報合成部308とを含み、上述の(4)生成処理を実現するための制御構造として、画像生成部212を含む。さらに、本実施の形態に従う画像処理装置は、処理時間算出部322を含む。
なお、画像メモリ302、分子メモリ307N、分母メモリ307D、Rメモリ305R、Gメモリ305G、およびBメモリ305Bは、本実施の形態に従う画像処理装置の記憶部であるメモリ106または固定ディスク107にそれぞれの領域が確保されることで、実現される。画像メモリ302は、撮像装置8の撮像素子の画素サイズに対応した2次元配列を3プレーン分(R,G,B)含む構成となっており、その他のメモリの各々は、撮像装置8の撮像素子の画素サイズに対応した2次元配列になっている。なお、図8と本発明との関係については、分子メモリ307Nおよび分母メモリ307Dに格納される内部変数が「第1内部変数」に対応し、Rメモリ305R、Gメモリ305G、Bメモリ305Bに格納される内部変数が「第2内部変数」に対応する。そして、「1枚分の画像データを格納する領域」が画像メモリ302に相当し、「第1内部変数を格納する領域」が「分子メモリ307N、分母メモリ307D」に相当する。
以下、並行処理方式を採用する本実施の形態に従う画像処理装置における各処理の内容を各機能ブロックの動作とともに説明する。
(1)撮影処理
図8を参照して、撮影制御部300は、撮像装置8に同一のワークを異なる露光量で複数回撮影させることにより複数の入力画像データを生成する。より具体的には、撮影制御部200は、予め定められる撮影回数および各撮影における露光量に従って、各撮影前に撮像装置8の露光時間を設定し、各設定された露光時間における撮像装置8でワークを順次撮影させる。ある露光量において撮影された1つの入力画像データは、カメラインターフェイス部109の画像バッファ109a(図1)に一旦蓄積された後、画像メモリ302へ転送される。上述したように、画像メモリ302は、1つの入力画像データを格納できるサイズに構成されており、1つの入力画像データが画像メモリ302に格納される毎に、後述する輝度情報更新部306および色情報更新部304における処理が開始される。
なお、入力画像データが画像メモリ302に格納された後、撮像装置8によって引き続く撮影が行なわれて入力画像データが新たに生成されると、当該入力画像データは画像メモリ302に上書きして格納される。そのため、後述する輝度情報更新部306および色情報更新部304における1回の処理は、撮像装置8による撮影とは独立して並行処理され、新たな入力画像データが生成されるまでに完了するように構成される。
(2)輝度合成処理
本実施の形態に従う画像処理装置は、撮像装置8によるワークの撮影が行なわれる毎に、合成画像データの合成輝度情報の算出に用いられる内部関数を順次更新し、一連の撮影の完了後に当該内部関数の値に基づいて、合成輝度情報を算出する。
より具体的には、図8を参照して、分子メモリ307Nには、上述の(1)式の分子の内部変数が格納され、分母メモリ307Dには、上述の(1)式の分母の内部変数が格納される。そして、輝度情報更新部306は、画像メモリ302に新たな入力画像データが格納される毎に、上述の(1)式の分子および分母にそれぞれ含まれる積算処理を実行することで、分子メモリ307Nおよび分母メモリ307Dにそれぞれ格納される内部変数を更新する。一例として、ワークをP回撮影することで生成されるP枚の入力画像データに基づいて、1つの合成画像データが合成される場合を考えると、輝度情報更新部306における各入力画像データの生成時における処理は、以下のようになる。
輝度情報更新部306は、1枚目の入力画像データが生成されると、(3.1)式に示されるように、当該入力画像データの座標位置i(0≦i≦画素数n)における輝度Zi,1および対応の露光時間Δt1を用いて、座標位置iについての分子暫定値A(1) iを算出する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを算出する。なお、合成画像データの生成に係る一連の撮影が開始される前には、分子メモリ307Nおよび分母メモリ307Dはゼロリセットされているものとする。
引き続いて、2枚目の入力画像データが生成されると、輝度情報更新部306は(3.2)式に示されるように、当該入力画像データの座標位置iにおける輝度Zi,2および対応の露光時間Δt2を用いて、分子暫定値A(1) iを分子暫定値A(2) iに更新する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを分子暫定値B(2) iに更新する。
さらに、同様の処理がP枚分の入力画像データについて繰返される。このP枚分の入力画像データについての更新処理の完了後、分子メモリ307Nおよび分母メモリ307Dには、(3.3)式に示されるように、それぞれ分子暫定値A(P) iおよび分母暫定値B(P) iが格納された状態となる。ここで、分子暫定値A(P) iおよび分母暫定値B(P) iは、それぞれ(1)式の分子および分母に相当する。
分子暫定値A(P) iおよび分母暫定値B(P) iが算出された後、輝度情報合成部310は、以下の(4)式に示される演算を実行して、合成輝度Eiを算出する。この輝度情報合成部310により算出された合成輝度Eiは、トーンマッピング部214およびヒストグラム生成部218へ出力される。
トーンマッピング部214では、上述したのと同様のトーンマッピング処理が実行され、合成輝度情報が算出される。そして、この算出された合成輝度情報は、画像生成部212へ出力される。また、ヒストグラム生成部218では、上述したヒストグラム生成処理が実行される。なお、トーンマッピング部214およびヒストグラム生成部218における動作および処理については、上述したので、詳細な説明は繰返さない。
(3)色合成処理
本実施の形態に従う画像処理装置は、上述の輝度合成処理と並行して、合成画像データの合成色情報の算出に用いられる内部関数を順次更新し、一連の撮影の完了後に当該内部関数の値に基づいて、合成色情報を算出する。
より具体的には、図8を参照して、Rメモリ305Rには、上述の(2.1)式の分子の内部変数が格納され、Gメモリ305Gには、上述の(2.2)式の分子の内部変数が格納され、Bメモリ305Bには、上述の(2.3)式の分子の内部変数が格納される。なお、上述の(2.1)〜(2.3)式の分母は、上述の(1)式の分母と同じであるので、後述するように、分母メモリ307Dに格納される内部変数が利用される。そして、色情報更新部304は、画像メモリ302に新たな入力画像データが格納される毎に、上述の(2.1)〜(2.3)式の分子にそれぞれ含まれる積算処理を実行することで、それぞれRメモリ305R、Gメモリ305G、Bメモリ305Bに格納される内部変数を更新する。一例として、ワークをP回撮影することで生成されるP枚の入力画像データに基づいて、1つの合成画像データが合成される場合を考えると、色情報更新部304における各入力画像データの生成時における処理は、以下のようになる。
色情報更新部304は、1枚目の入力画像データが生成されると、(5.1)式に示されるように、当該入力画像データの座標位置i(0≦i≦画素数n)における輝度Zi,1および色情報をri,1を用いて、座標位置iについてのR暫定値r(1) iを算出する。同時に、色情報更新部304は、当該入力画像データの座標位置iにおける輝度Zi,1および色情報をgi,1を用いて、座標位置iについてのG暫定値g(1) iを算出する。また同様に、色情報更新部304は、当該入力画像データの座標位置iにおける輝度Zi,1および色情報をbi,1を用いて、座標位置iについてのB暫定値b(1) iを算出する。なお、合成画像データの生成に係る一連の撮影が開始される前には、Rメモリ305R、Gメモリ305G、Bメモリ305Bはゼロリセットされているものとする。
引き続いて、2枚目の入力画像データが生成されると、色情報更新部304は(5.2)式に示されるように、当該入力画像データの座標位置iにおける輝度Zi,2および色情報をri,2を用いて、R暫定値r(1) iをR暫定値r(2) iに更新する。同時に、色情報更新部304は、当該入力画像データの座標位置iにおける輝度Zi,2および色情報をgi,2を用いて、G暫定値r(1) iをG暫定値r(2) iに更新する。また同様に、色情報更新部304は、当該入力画像データの座標位置iにおける輝度Zi,2および色情報をbi,2を用いて、B暫定値r(1) iをB暫定値r(2) iに更新する。
さらに、同様の処理がP枚分の入力画像データについて繰返される。このP枚分の入力画像データについての更新処理の完了後、Rメモリ305R、Gメモリ305G、Bメモリ305Bには、(5.3)式に示されるように、それぞれR暫定値r(P) i、G暫定値g(P) i、B暫定値b(P) iが格納された状態となる。ここで、R暫定値r(P) i、G暫定値g(P) i、B暫定値b(P) iは、それぞれ(2.1)〜(2.3)式の分子に相当する。
R暫定値r(P) i、G暫定値g(P) i、B暫定値b(P) iが算出された後、色情報合成部308は、分母メモリ307Dに格納されている分母暫定値B(P) iを参照して、以下の(6)式に示される演算を実行して、合成色情報(ri,gi,bi)を算出する。さらに、色情報合成部308は、算出した合成色情報を画像生成部212へ出力する。
(4)生成処理
画像生成部212は、トーンマッピング部214から出力された輝度Yiと、対応する合成色情報(ri,gi,bi)とを順次乗じることによって、合成画像データを生成する。なお、画像生成部212における動作および処理については、上述したので、詳細な説明は繰返さない。
以上のような手順に従って、合成画像データが生成される。
<処理時間>
本実施の形態に従う画像処理装置による合成画像データの生成に要する時間を、上述の一括処理方式の画像処理装置による合成画像データの生成に要する時間と比較して説明する。
図9は、この発明の実施の形態に従う画像処理装置における処理時間を説明するための図である。図9(a)は、入力画像データの生成に係る処理を示し、図9(b)は、一括処理方式の画像処理装置における合成画像データの生成に係る処理を示し、図9(c)は、本実施の形態に従う画像処理装置における合成画像データの生成に係る処理を示す。なお、図9では、理解を容易にするために、3つの入力画像から合成画像データが生成される場合について例示する。
図9(a)に示すように、撮像装置8によるワークの1回分の撮影に係る処理は、画像処理装置から撮像装置8への露光時間の設定、撮像装置8による実際の撮影(露光)、および撮像装置8から画像処理装置への撮影画像の伝送、といった3つの処理を含む。図9に示す場合には、異なる複数(3つ)の露光時間のそれぞれについて、上記の処理が繰返される。なお、3回分の撮影の開始タイミングをそれぞれ時刻t1,t2,t3としている。
図9(b)を参照して、一括処理方式の画像処理装置では、各回の撮影が完了し、次の撮影を行なうための露光時間の設定開始とほぼ同時に、当該撮影によって生成された入力画像データの画像バッファ109a(図2)から画像メモリ204(図4)への転送がそれぞれ開始される(時刻t1,t2,t3)。さらに、最後の入力画像データの転送が完了すると、合成処理が開始される(時刻t4)。一括処理方式の画像処理装置では、上述の(1)式および(2.1)〜(2.3)式に示す演算処理が一括して実行されるので、相対的に演算処理量が多くなり、合成画像データの生成に要する時間が長くなる。
一方、図9(c)を参照して、本実施の形態に従う画像処理装置においても、各回の撮影が完了すると、当該撮影によって生成された入力画像データの画像バッファ109a(図2)から画像メモリ302(図8)への転送がそれぞれ開始される(時刻t1,t2,t3)。さらに、入力画像データの転送後のそれぞれにおいて、輝度情報更新部306および色情報更新部304(図8)による内部変数の更新処理がそれぞれ実行される。すなわち、入力画像データが生成される毎に、図9(b)に示される合成処理に含まれる一部の処理が断片的に実行される。その結果、最後の入力画像データの転送が完了すると、当該最後の入力画像データに基づく内部変数の更新が行なわれた後、それぞれの内部変数に基づいて、合成輝度情報および合成色情報が算出された上で、合成画像データが生成される。
以上のように、本実施の形態に従う画像処理装置によれば、入力画像データが生成される毎に、合成画像データを生成するために必要な内部変数を順次更新しておくことで、合成画像データの生成に要する時間を分散することができる。その結果、1つの合成画像データの生成に要する時間を、一括処理方式の画像処理装置に比較して短縮することができ。
なお、処理時間算出部322(図8)は、上述の図9に示すような関係に基づいて、1つの合成画像データの生成に要する見込みの処理時間を算出する。より具体的には、処理時間算出部322は、撮影制御部200からの情報に基づいて、撮像装置8による撮影回数および各撮影における露光時間などを考慮して、処理時間を推定する。なお、図9(c)に示す最終的な合成画像データの生成処理(上述の(4)式や(6)式などの演算処理)に係る処理データ量は、1つの合成画像データの生成に用いる入力画像データの数に依存することなく一定であるため、図9(c)に示す合成処理に要する時間はほぼ一定となる。この処理時間算出部322で算出された見込み処理時間は、ユーザに向けて表示される。
<画面表示例>
図10は、この発明の実施の形態に従う画像処理装置のモニタに表示される「設定モード」における画面表示例を示す図である。
図10を参照して、「設定モード」が選択されると、モニタ102には設定モード画面400が表示される。なお、CPU105および図示しないグラフィックボードなどが協働することで、モニタ102に設定モード画面400を表示させる。このような画面表示は、OS(Operating System)の一部として組込まれるGUI(Graphical User Interface)プログラムによって実現され、またGUIは、ユーザがキーボード103やマウス104により操作される画面上のカーソルを用いて、さまざまなユーザ設定を行なうための環境も提供する。
設定モード画面400には、設定値入力エリア410と、ヒストグラム表示エリア420と、合成画像表示エリア430と、撮影情報表示エリア440と、表示モード選択エリア450とを含む。
設定値入力エリア410には、「明るさ」上限値を設定するためのスライドバー412、「明るさ」下限値を設定するためのスライドバー414が配置される。このスライドバー412および414の操作によって設定される「明るさ」上下限値は、上述した明るさ上下限設定部216(図8)に入力される。そして、この「明るさ」上下限値に応じて、図5に示す関係に基づいて必要な露光時間が選択され、撮像装置8における撮影回数および露光時間が変更される。
ヒストグラム表示エリア420には、ヒストグラム生成部218(図8)で生成されたヒストグラムが視覚的に表示される。さらに、このヒストグラム上には、上述のスライドバー412,414の操作によって設定される「明るさ」上下限値に対応する位置に、それぞれの値に対応する位置表示がなされる。
合成画像表示エリア430には、設定された「明るさ」上下限値に応じて生成される合成画像データに基づく合成画像が表示される。この合成画像表示エリア430に表示される合成画像は、稼動モードにおいて検査や計測に用いられる合成画像データを表示するものであり、ユーザは、この合成画像表示エリア430の表示を参照して、ワークに対する照明条件や「明るさ」上下限値などの設定を調整する。
また、合成画像表示エリア430の表示画像は、画像生成部212(図8)によって合成画像データが生成される毎に更新される。そのため、ユーザに対して、実質的に合成画像を動画のように表示することができる。
撮影情報表示エリア440には、「撮影時間」、「撮影回数」、「シャッター速度」が表示される。「撮影時間」は、処理時間算出部322(図8)によって算出される、1つの合成画像データの生成に要する見込みの処理時間である。また、「撮影回数」は、合成画像データの生成に必要な撮影回数(すなわち、入力画像データの枚数)を表示し、「シャッター速度」は、撮像装置8に設定されている(あるいは、設定可能な)露光時間の最大値と最小値とを表示する。すなわち、表示される「撮影時間」は、1つの合成画像データの生成に用する処理周期を示す。
表示モード選択エリア450には、ヒストグラム表示エリア420におけるヒストグラムの表示/非表示を選択するラジオボタン454が表示される。ラジオボタン454によって、ヒストグラムの非表示が選択されると、ヒストグラム表示エリア420におけるヒストグラム表示が行なわれない。
さらに、設定モード画面400には、「OK」ボタン462と、「CANCEL」ボタン464とが配置されており、ユーザが「OK」ボタン462を選択すると、各項目において設定された値が固定ディスク107などに格納された上で「稼動モード」に移行する。一方、ユーザが「CANCEL」ボタン464を選択すると、各項目において設定された値が固定ディスク107などに格納されずに「稼動モード」に移行する。
<「明るさ」上下限値の設定>
撮影制御部300(図8)は、ユーザが設定する「明るさ」上下限値に応じて、図5に示す関係を参照して、撮影回数および各撮影における露光時間を決定する。このとき、トーンマッピング部214が、合成輝度の対応する範囲を合成画像データの輝度範囲に割り当てるので、ワークのうち任意の「明るさ」をもつ領域に着目した合成画像を表示することもできる。
たとえば、指定された「明るさ」の下限値を「0」とし、上限値を「255」に割り当てて、0〜255階調の画像として表示することができる。
図11は、この発明の実施の形態に従う画像処理装置における「明るさ」上下限値と合成画像との関係の一例を示す図である。なお、ワークは、図3と同一の腕時計の裏面とした。
図11(a)に示すように、ヒストグラムに有効な画素が現れる範囲を「明るさ」上下限値に設定することで、反射率が大きく異なる金属製の時計本体部および皮革製のバンド部が明瞭に撮影されていることがわかる。
一方、図11(b)に示すように、主として皮革製のバンド部に相当する画素の範囲を「明るさ」上下限値に設定すると、皮革製のバンド部はより明瞭に撮影されるが、金属製の時計本体部については、白飛びが生じていることがわかる。逆に、図11(c)に示すように、主として金属製の時計本体部に相当する画素の範囲を「明るさ」上下限値に設定すると、金属製の時計本体部はより明瞭に撮影されるが、皮革製のバンド部については、黒つぶれが生じていることがわかる。
また、図11(d)に示すように、ヒストグラムの全範囲を「明るさ」上下限値に設定すると、画像全体について明瞭に撮影されているが、図11(a)に比較すると、コントラストが低下していることがわかる。
このように、ユーザは対象とするワークに応じて、適切な「明るさ」上下限値を調整することで、検査や計測に適した合成画像データを生成させることができる。
<処理手順>
図12は、この発明の実施の形態に従う画像処理装置における合成画像データの生成処理を示すフローチャートである。図12に示すフローチャートは、CPU105が固定ディスク107などに予め格納されたプログラムをメモリ106に読出して実行することにより実現される。
図12を参照して、CPU105は、ユーザ設定される「明るさ」上下限値を受付ける(ステップS100)。ユーザは、設定モード画面400(図10)上の表示されるスライドバー412および/または414を操作して、所望の「明るさ」上下限値を設定する。なお、何らのユーザ操作もなされていない場合には、デフォルト値(例えば、0〜100の範囲など)が「明るさ」上下限値として設定される。さらに、CPU105は、設定された「明るさ」上下限値に基づいて、撮影回数および各撮影における露光時間(露光量)を決定する(ステップS102)。さらに、CPU105は、内部変数を格納する分子メモリ307N、分母メモリ307D、Rメモリ305R、Gメモリ305G、およびBメモリ305Bをゼロリセットする(ステップS104)。
続いて、CPU105は、カメラインターフェイス部109(図2)を介して、ステップS102において決定した露光時間のうち第1の露光時間を撮像装置8に対して設定し(ステップS106)、ワークの撮影を実行させる。その後、CPU105は、画像バッファ109a(図2)に蓄積される入力画像データを画像メモリ302(図8)へ転送する(ステップS108)。
入力画像データの転送後、CPU105は、当該入力画像データに基づいて、分子メモリ307N、分母メモリ307D、Rメモリ305R、Gメモリ305G、およびBメモリ305Bに格納される内部変数を更新する(ステップS110)。同時に、CPU105は、ステップS102において決定した露光時間のうち未設定の露光時間が存在するか否かを判断し(ステップS112)、未設定の露光時間が存在する場合(ステップS112においてYESの場合)には、未設定の露光時間のうちいずれかを撮像装置8に対して設定し(ステップS114)、ワークの撮影を実行させる。
さらに、CPU105は、ステップS105において設定したすべての露光時間についての一連の撮影が完了したか否かを判断する(ステップS116)。一連の撮影が完了していない場合(ステップS116においてNOの場合)には、CPU105は、ステップS108以下の処理を再度実行する。
一連の撮影が完了している場合(ステップS116においてYESの場合)には、CPU105は、当該時点において分子メモリ307N、分母メモリ307D、Rメモリ305R、Gメモリ305G、およびBメモリ305Bに格納されている内部変数に基づいて、合成輝度および合成色情報を算出する(ステップS118)とともに、算出した合成輝度Eiについてのヒストグラムを生成する(ステップS120)。このヒストグラムは、設定モード画面400のヒストグラム表示エリア420に表示される。
さらに、CPU105は、ステップS118において算出した合成輝度を、ステップS100において設定された「明るさ」上下限値に従って、所定の輝度範囲に割り当てることで、合成輝度情報を算出する(ステップS122)。最終的に、CPU105は、ステップS118において算出した合成色情報と、ステップS120において算出した合成輝度情報とに基づいて、合成画像データを生成する(ステップS124)。そして、この合成画像データに基づく合成画像は、設定モード画面400の合成画像表示エリア430に表示され、あるいは固定ディスク107(図2)に格納されたり、外部出力されたりする。
<本実施形態の作用効果>
この発明の実施の形態によれば、撮像装置8による撮影と並行して、撮影済みの入力画像データの輝度情報および色情報についての積算処理が実行されるので、一連の撮影が完了した後に実行すべき演算処理量を低減できる。そのため、撮影終了後に膨大な演算処理を行なう必要がなく、合成画像データの生成に要する処理時間を短縮できる。
[実施の形態の第1変形例]
上述の本実施の形態に従う画像処理装置では、カラーの入力画像データからカラーの合成画像データを生成する構成について例示したが、モノクロ(グレイスケール)の入力画像データからモノクロの合成画像データを生成することも可能である。
図13は、この発明の実施の形態の第1変形例に従う画像処理装置の制御構造を示す機能ブロック図である。
図13を参照して、この発明の実施の形態の第1変形例に従う画像処理装置は、図8に示す本実施の形態に従う画像処理装置の制御構造において、色情報更新部304、Rメモリ305R、Gメモリ305G、Bメモリ305B、色情報合成部308、および画像生成部212を除いたものに相当する。
すなわち、本実施の形態の第1変形例に従う画像処理装置では、上述の(3)色合成処理および(4)生成処理が不要となり、トーンマッピング部214が算出する合成輝度情報がそのまま合成画像データとして出力される。
図13に示す各部位の動作および処理内容については、上述したものと同様であるので、詳細な説明は繰返さない。
[実施の形態の第2変形例]
上述の本実施の形態に従う画像処理装置では、各画素が3色の輝度(R輝度、G輝度、B輝度)を出力する構成について例示した。すなわち、撮像装置8から出力される入力画像データの各画素が色情報を有している場合に適用できる構成について例示した。
一方、この発明の実施の形態の第2変形例では、主として単板式のCCDを用いたときのように、各画素が3色の分光感度のうち1色の分光感度のみを有している場合に、より好ましい構成について例示する。
図14は、この発明の実施の形態の第2変形例に従う画像処理装置の制御構造を示す機能ブロック図である。図15は、この発明の実施の形態の第2変形例に従う画像処理装置に接続される撮像装置8Aの構成を示す図である。図16は、図15に示す撮像装置8Aにより生成される入力画像データの補間処理を説明するための図である。
図14を参照して、この発明の実施の形態の第2変形例に従う画像処理装置は、図8に示す本実施の形態に従う画像処理装置の制御構造において、色情報更新部304、Rメモリ305R、Gメモリ305G、Bメモリ305B、色情報合成部308、および画像生成部212を取り除くとともに、画像補間部324、画像メモリ326と、色情報抽出部328、および輝度情報抽出部330を付加したものに相当する。
また、図15を参照して、撮像装置8Aは、行列状の画素に区画された撮像素子を含み、各画素は、赤色(R)、緑色(G)、青色(B)のいずれかの分光感度が割り当てられている。そのため、撮像装置8Aの各画素からは、単色の分光感度に含まれる波長成分に相当する光のエネルギー量(光強度)を示す値(輝度)が出力される。図16に示すような補間処理を行なうことで、このような撮像装置8Aからの信号に基づいて、入力画像データが生成される。
図16を参照して、撮像装置8Aから出力される輝度を分光感度別(色別)に分離し、各画素を各色プレーンの対応する座標に割り当てると、図16(a)〜図16(c)に示す、Rプレーン、Gプレーン、Bプレーンが生成される。
図16(a)に示すRプレーン上において、赤色の分光感度をもつ画素同士は、1画素分ずつ離れて配置されている。そのため、赤色の分光感度を持たない画素、すなわち赤色の輝度情報が存在しない画素の輝度については、当該画素に隣接する画素の輝度を用いた補間処理により算出される。たとえば、画素R1と画素R3との間に存在する各画素の輝度については、(画素R1の輝度+画素R3の輝度)/2などのように算出される。
以下、図16(b)に示すGプレーンおよび図16(c)に示すBプレーンについても、同様の補間処理が実行される。
再度、図14を参照して、本実施の形態の第2変形例に従う画像処理装置は、上述した本実施の形態の第1変形例に従う画像処理装置における処理と同様に、まず、入力画像データの色情報を考慮することなく合成輝度Eiを算出する。ここで、合成輝度Eiは、単色プレーン上の輝度に相当する。そして、本実施の形態の第2変形例に従う画像処理装置は、この合成輝度Eiを用いて、上述の図16に示したような補間処理を行なうことで、3プレーン分の輝度情報をもつカラーの画像データを擬似的に生成する。さらに、この擬似的に生成されたカラーの画像データを用いて、上述と同様の処理によって合成画像データを生成する。
より具体的には、撮影制御部300、画像メモリ302、輝度情報更新部306、分子メモリ307N、分母メモリ307D、および輝度情報合成部310は、図13に示す本実施の形態の第1変形例に従う画像処理装置と同様の処理を実行し、座標位置i(1≦i≦画素数n)についての合成輝度Eiを算出する。この座標位置iについての合成輝度Eiは、画像補間部324へ出力される。
画像補間部324は、図15に示すような撮像装置8Aの撮像素子の分光感度についてのマップ325を参照して、上述したような補間処理を実行する。すなわち、画像補間部324は、色情報を持たない単色プレーン上の画像データである合成輝度Eiを受けて、R,G,Bの3プレーンの画像データを生成する。画像補間部324で生成された画像データは、画像メモリ326へ一旦格納される。
この画像メモリ326に格納された画像データに基づいて、輝度情報抽出部330および色情報抽出部328が合成画像データを生成するための処理を実行する。すなわち、輝度情報抽出部330は、画像メモリ326に格納された画像データから各画素の合成輝度を抽出し、トーンマッピング部214およびヒストグラム生成部218へ出力する。また、色情報抽出部328は、画像メモリ326に格納された画像データから各画素の色情報(合成色情報)を抽出し、画像生成部212へ出力する。
トーンマッピング部214では、上述したのと同様のトーンマッピング処理が実行され、合成輝度情報が算出される。そして、この算出された合成輝度情報は、画像生成部212へ出力される。また、ヒストグラム生成部218では、上述したヒストグラム生成処理が実行される。さらに、画像生成部212は、トーンマッピング部214から出力された合成輝度情報と、色情報抽出部328からの合成色情報とに基づいて、合成画像データを生成する。なお、トーンマッピング部214、ヒストグラム生成部218および画像生成部212における動作および処理については、上述したので、詳細な説明は繰返さない。
以上のような手順に従って、合成画像データが生成される。
この発明の実施の形態の第2変形例では、単板式のCCDなどのように、各画素が単色の分光感度をもつような場合であっても、カラーの合成画像データをより短い時間で生成することができる。
[実施の形態の第3変形例]
上述の本実施の形態に従う画像処理装置では、(1)式に示されるように、各画素の輝度を規格化した値(=g(Zi,j)/Δtj)の対数をとった上で、重み付きの加重平均を算出(加算処理)することで、各画素の合成輝度Eiを算出する例について説明した。このような算出方法に代えて、各画素の輝度を規格化した値についての重み付きの加重平均を算出(加算処理)した上で、対数をとって各画素の合成輝度Eiを算出してもよい。以下、このような算出方法を用いる場合について例示する。なお、本第3変形例に従う画像処理装置では、各画素の合成輝度Eiの算出式が異なる点、およびそれに伴って、輝度情報更新部306(図8,図13,図14)による分子メモリ307Nおよび分母メモリ307Dの更新処理の内容が異なる点を除いて、上述の本字実施の形態に従う画像処理装置における構成および処理と同様であるので、詳細な説明は繰返さない。
具体的には、本第3変形例に従う各画素の合成輝度Eiの算出式は、(7)式のようになる。
(7)式において、「(g(Zi,j)/Δtj)」の項が、各入力画像データにおける各画素の輝度を露光時間で規格化した上で、「明るさ」として評価した値に相当する。そして、この規格化した値に対して重み付きの加重平均を算出(加算処理)した上で、対数が計算される。
上述の実施の形態と同様に、撮像装置8によるワークの撮影が行なわれる毎に、合成画像データの合成輝度情報の算出に用いられる内部関数が順次更新され、一連の撮影の完了後に当該内部関数の値に基づいて合成輝度情報を算出する。
より具体的には、ワークをP回撮影することで生成されるP枚の入力画像データに基づいて、1つの合成画像データが合成される場合を考えると、輝度情報更新部306(図8,図13,図14)における各入力画像データの生成時における処理は、以下のようになる。
輝度情報更新部306は、1枚目の入力画像データが生成されると、(8.1)式に示されるように、当該入力画像データの座標位置i(0≦i≦画素数n)における輝度Ziを対応の露光時間Δt1を規格化した値を用いて、座標位置iについての分子暫定値A(1) iを算出する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを算出する。
引き続いて、2枚目の入力画像データが生成されると、輝度情報更新部306は(8.2)式に示されるように、当該入力画像データの座標位置iにおける輝度Zi,2および対応の露光時間Δt2を用いて、分子暫定値A(1) iを分子暫定値A(2) iに更新する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを分子暫定値B(2) iに更新する。
さらに、同様の処理がP枚分の入力画像データについて繰返される。このP枚分の入力画像データについての更新処理の完了後、分子メモリ307Nおよび分母メモリ307Dには、(8.3)式に示されるように、それぞれ分子暫定値A(P) iおよび分母暫定値B(P) iが格納された状態となる。
分子暫定値A(P) iおよび分母暫定値B(P) iが算出された後、輝度情報合成部310(図2)は、以下の(9)式に示される演算を実行して、合成輝度Eiを算出する。
以上のような処理に従って、合成画像データの合成輝度Eiを算出できる。
この発明の実施の形態の第3変形例では、合成輝度を最終的に出力する直前に対数演算を1回だけ実行すればよく、比較的長い時間を要する処理を簡素化できるので、より演算処理を簡素化し、かつ演算処理に要する時間を短縮することができる。
[実施の形態の第4変形例]
上述の本実施の形態に従う画像処理装置では、(1)式に示されるように、各画素の輝度を規格化した値(=g(Zi,j)/Δtj)の対数をとった上で、重み付きの加重平均を算出(加算処理)することで、各画素の合成輝度Eiを算出する例について説明した。このような算出方法に代えて、各画素の輝度を規格化した値についての重み付きの加重平均を算出(加算処理)した上で、ガンマ補正(γべき乗)を行って各画素の合成輝度Eiを算出してもよい。以下、このような算出方法を用いる場合について例示する。なお、本第4変形例に従う画像処理装置では、各画素の合成輝度Eiの算出式が異なる点、およびそれに伴って、輝度情報更新部306(図8,図13,図14)による分子メモリ307Nおよび分母メモリ307Dの更新処理の内容が異なる点を除いて、上述の本字実施の形態に従う画像処理装置における構成および処理と同様であるので、詳細な説明は繰返さない。
具体的には、本第4変形例に従う各画素のガンマ補正後の合成輝度Oiの算出式は、(10.1)のようになり、合成輝度Eiの算出式は、(10.2)式のようになる。
(10.1)式において、γはガンマ補正量を調整するための変数であり、aおよびbは任意に設定可能な定数である。ガンマ補正は、上述の実施の形態の第3変形例に示すような対数変換と、線形変換との中間的な補正特性を示し、その補正量は、γの大きさで定まる。すなわち、γ=1のときは、線形変換(重み付きの加重平均そのもの)となり、γ→0のときは、対数変換と近似した補正特性を示す。また、0<γ<1のときは、線形変換と対数変換との間の中間的な補正特性を示す。
(10.2)式において、「(g(Zi,j)/Δtj)」の項が、各入力画像データにおける各画素の輝度を露光時間で規格化した上で、「明るさ」として評価した値に相当する。そして、この規格化した値に対して重み付きの加重平均を算出される。
上述の実施の形態と同様に、撮像装置8によるワークの撮影が行なわれる毎に、合成画像データの合成輝度情報の算出に用いられる内部関数が順次更新され、一連の撮影の完了後に当該内部関数の値に基づいて合成輝度情報を算出する。
より具体的には、ワークをP回撮影することで生成されるP枚の入力画像データに基づいて、1つの合成画像データが合成される場合を考えると、輝度情報更新部306(図8,図13,図14)における各入力画像データの生成時における処理は、以下のようになる。
輝度情報更新部306は、1枚目の入力画像データが生成されると、(11.1)式に示されるように、当該入力画像データの座標位置i(0≦i≦画素数n)における輝度Ziを対応の露光時間Δt1を規格化した値を用いて、座標位置iについての分子暫定値A(1) iを算出する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを算出する。
引き続いて、2枚目の入力画像データが生成されると、輝度情報更新部306は(11.2)式に示されるように、当該入力画像データの座標位置iにおける輝度Zi,2および対応の露光時間Δt2を用いて、分子暫定値A(1) iを分子暫定値A(2) iに更新する。同時に、輝度情報更新部306は、当該入力画像データの座標位置iにおける輝度Zi,1を用いて、分母暫定値B(1) iを分子暫定値B(2) iに更新する。
さらに、同様の処理がP枚分の入力画像データについて繰返される。このP枚分の入力画像データについての更新処理の完了後、分子メモリ307Nおよび分母メモリ307Dには、(11.3)式に示されるように、それぞれ分子暫定値A(P) iおよび分母暫定値B(P) iが格納された状態となる。
分子暫定値A(P) iおよび分母暫定値B(P) iが算出された後、輝度情報合成部310(図2)は、以下の(12)式に示される演算を実行して、合成輝度Eiに対してガンマ補正を行なって得られる合成輝度Oiを算出する。
以上のような処理に従って、合成画像データのガンマ補正後の合成輝度Oiを算出できる。
この発明の実施の形態の第4変形例では、γべき乗の演算を最終的に出力する直前に1回だけ実行すればよく、より演算処理を簡素化し、かつ演算処理に要する時間を短縮することができる。また、γの値を任意に設定できるため、撮影環境や照明環境などに応じた適切にガンマ補正を行った画像を得ることができる。
[その他の実施の形態]
本発明に係るプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
また、本発明に係るプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明に係るプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記憶された記録媒体とを含む。
さらに、本発明に係るプログラムによって実現される機能の一部または全部を専用のハードウェアによって構成してもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 視覚センサシステム、2 ワーク、4a 受光部、4b 投光部、6 搬送機構、8,8A 撮像装置、100 コンピュータ、101 コンピュータ本体、102 モニタ、103 キーボード、104 マウス、106 メモリ、107 固定ディスク、109 カメラインターフェイス部、109a 画像バッファ、109b 露光時間設定部、111 FD駆動装置、113 CD−ROM駆動装置、115 PLCインターフェイス部、117 センサインターフェイス部、200,300 撮影制御部、202 選択部、204,204a〜204h 画像メモリ、206a〜206h 画像情報抽出部、208 色合成部、210 輝度合成部、212 画像生成部、214 トーンマッピング部、216 明るさ上下限設定部、218 ヒストグラム生成部、222,322 処理時間算出部、302,326 画像メモリ、304 色情報更新部、305B,305G,305R,307D,307N メモリ、306 輝度情報更新部、308 色情報合成部、310 輝度情報合成部、324 画像補間部、325 マップ、328 色情報抽出部、330 輝度情報抽出部。