以下、図面を参照して、各実施形態について説明する。
(第1の実施形態)
まず、第1の実施形態について説明する。図1は、第1の実施形態に係る撮像装置のハードウェア構成を示すブロック図である。
図1に示すように、撮像装置100は、フィルタ10と、レンズ20と、イメージセンサ30と、CPU(Central Processing Unit)40と、メモリ50と、通信I/F60と、ディスプレイ70と、メモリカードスロット80とを有する。
イメージセンサ30、CPU40、メモリ50、通信I/F60、ディスプレイ70及びメモリカードスロット80は、バスにより接続される。
図1に示す例において、フィルタ10に向かう矢印は、光の入射を表す。フィルタ10は、撮像装置100の光学系に設置される。なお、撮像装置100の光学系は、レンズ20及びイメージセンサ30等から構成される。すなわち、フィルタ10は、レンズ20の内部や撮像装置100の開口部に設置されてもよいし、レンズ20とイメージセンサ30との間に設置されてもよい。
フィルタ10は被写体で反射した光を入射し、当該入射した光は、フィルタ10及びレンズ20を透過する。フィルタ10及びレンズ20を透過した光は、イメージセンサ30に到達し、イメージセンサ30によって受光される。イメージセンサ30は、受光した光を電気信号に変換(光電変換)することによって、複数の画素から構成される画像を生成する。以下の説明においては、イメージセンサ30によって生成される画像を便宜的に撮像画像と称する。
なお、イメージセンサ30は、例えばCCD(Charge Coupled Device)イメージセンサ及びCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等により実現される。イメージセンサ30は、例えば赤色(R)の波長帯域の光を検出するセンサ(Rセンサ)、緑色(G)の波長帯域の光を検出するセンサ(Gセンサ)及び青色(B)の波長帯域の光を検出するセンサ(Bセンサ)を有し、それぞれのセンサにより対応する波長帯域の光を受光して、各波長帯域(色成分)に対応するセンサ画像(R画像、G画像及びB画像)を生成する。すなわち、上記した撮像画像には、R画像、G画像及びB画像の各センサ画像が含まれる。
CPU40は、撮像装置100の動作を統括的に制御するハードウェアプロセッサである。具体的には、CPU40は、メモリ50等に記憶されたプログラムを実行し、撮像装置100全体の動作を制御する。
メモリ50は、HDD(Hard Disk Drive)やNAND型フラッシュメモリ等の書き換え可能な不揮発性の記憶デバイスである。メモリ50は、例えば撮像装置100の制御に関するプログラムや処理に使用される各種データ等を記憶する。
通信I/F60は、例えば外部機器との通信や、ユーザによる各種指示の入力を制御するインタフェースである。ディスプレイ70は、液晶ディスプレイやタッチパネル等を含む。メモリカードスロット80は、例えばSDメモリカード及びSDHCメモリカード等の可搬記憶媒体を挿入して利用することができるように構成されている。メモリカードスロット80に記憶媒体が挿入された場合、当該記憶媒体に対するデータの書き込み及び読み出しが実行され得る。
次に、図2を参照して、フィルタ10の一例について説明する。フィルタ10は、カラーフィルタであり、特定の波長帯域の光を透過する。図2に示す例では、フィルタ10は、第1フィルタ領域11及び第2フィルタ領域12を含む。
図2に示すように、フィルタ10の中心は撮像装置100の光学中心と一致している。第1フィルタ領域11及び第2フィルタ領域12は、それぞれ光学中心に対して非点対称である形状を有している。換言すれば、第1フィルタ領域11及び第2フィルタ領域12は、光学中心であるフィルタ領域の中心点(重心位置の点)を対称点とするときに、点対称形にならないように構成される。なお、第1フィルタ領域11及び第2フィルタ領域12は、重複せず、かつ、フィルタ10の全領域を構成している。
図2に示す例では、第1フィルタ領域11及び第2フィルタ領域12は、それぞれ円形のフィルタ10が光学中心を通る線分で分割された半円の形状を有している。また、第1フィルタ領域11は例えばイエロー(Y)のフィルタ領域であり、第2フィルタ領域12は例えばシアン(C)のフィルタ領域である。この場合、第1フィルタ領域11は、赤色の波長帯域の光と緑色の波長帯域の光とを透過し、青色の波長帯域の光を減衰させる。また、第2フィルタ領域12は、緑色の波長帯域の光と青色の波長帯域の光とを透過し、赤色の波長帯域の光を減衰させる。
フィルタ10は、2以上のカラーフィルタ領域を有する。カラーフィルタ領域の各々は、撮像装置100の光学中心に対して非点対称な形状である。1のカラーフィルタ領域を透過する光の波長帯域の一部と、他のカラーフィルタ領域を透過する光の波長帯域の一部は、例えば重複する。すなわち、1のカラーフィルタ領域を透過する光の波長帯域は、例えば他のカラーフィルタ領域が透過する光の波長帯域を含んでいてもよい。
このようなフィルタ10を介して被写体が撮像された場合には、それぞれぼけ関数が異なる各波長帯域に対応するセンサ画像(R画像、G画像及びB画像)が生成される。ぼけ関数とは、点光源を被写体として撮像した像のぼけの形状を表す関数であり、点拡がり関数(PSF:Point Spread Function)とも称される。
なお、第1フィルタ領域11と第2フィルタ領域12とは、任意の波長帯域の透過率を変更するフィルタ、任意方向の偏光光を通過させる偏光フィルタまたは任意の波長帯域の集光パワーを変更するマイクロレンズであってもよい。具体的には、任意の波長帯域の透過率を変更するフィルタは、原色フィルタ(RGB)、補色フィルタ(CMY)、色補正フィルタ(CC−RGB/CMY)、赤外線または紫外線カットフィルタ、NDフィルタ、遮蔽板であってもよい。第1フィルタ領域11と第2フィルタ領域12とがマイクロレンズである場合は、レンズ20により光線の集光の分布に偏りが生じることでぼけ関数が変化する。
ここで、図3は、上記した第1フィルタ領域11がイエロー(Y)のフィルタ領域であり、第2フィルタ領域12がシアン(C)のフィルタ領域である場合の当該第1フィルタ領域11及び第2フィルタ領域の透過率特性の例を示す。図3においては、上記したように第1フィルタ領域11が赤色の光と緑色の光を透過し、青色の光を減衰させることが示されている。また、図3においては、第2フィルタ領域12が緑色の光と青色の光を透過し、赤色の光を減衰させることが示されている。
図4は、本実施形態に係る撮像装置100の機能構成の一例を示す。図4に示すように、撮像装置100は、撮像部110及び画像処理部120を含む。撮像部110は、撮像光学系に相当し、上述したフィルタ10、レンズ20及びイメージセンサ30を含む。
画像処理部120は、撮像部110によって撮像された被写体を含む画像から当該被写体までの距離を算出する機能部である。本実施形態において、画像処理部120の一部または全ては、CPU40等のコンピュータにプログラムを実行させること、すなわちソフトウェアによって実現されるものとする。コンピュータに実行させるプログラムは、コンピュータ読み取り可能な記憶媒体に格納して頒布されてもよいし、ネットワークを通じて撮像装置100にダウンロードされてもよい。なお、画像処理部120の一部または全ては、IC(Integrated Circuit)等のハードウェアによって実現されもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
イメージセンサ30は、フィルタ10及びレンズ20を透過した光を光電変換し、電気信号を画像処理部120に送る。図4においてはフィルタ10とイメージセンサ30との間にレンズ20が設けられる構成が示されているが、上記したようにレンズ20とイメージセンサ30との間にフィルタ10が設けられてもよいし、レンズ20が複数ある場合には、2つのレンズの間にフィルタ10が設けられてもよい。また、フィルタ10は、レンズ20の内部に設けられていてもよいし、レンズ20の面上に設けられてもよい。すなわち、フィルタ10は、イメージセンサ30がフィルタ10を透過した光を受光して画像を生成することが可能な位置に設けられていればよい。
イメージセンサ30は、第1センサ31、第2センサ32及び第3センサ33を含む。例えば第1センサ31は赤色の波長帯域の光を検出するRセンサであり、第2センサ32は緑色の波長帯域の光を検出するGセンサであり、第3センサ33は青色の波長帯域の光を検出するBセンサである。
第1センサ31、第2センサ32及び第3センサ33の各々は、検出された光に基づいてセンサ画像を生成する。具体的には、第1センサ31は、当該第1センサ31によって検出された赤色の波長帯域の光に基づいてR画像を生成する。第2センサ32は、当該第2センサ32によって検出された緑色の波長帯域の光に基づいてG画像を生成する。第3センサ33は、当該第3センサ33によって検出された青色の波長帯域の光に基づいてB画像を生成する。これにより、イメージセンサ30は、R画像、G画像及びB画像を含む撮像画像を生成することができる。
ここで、第2センサ32は、上記したように第1フィルタ領域11及び第2フィルタ領域12の両方を透過した緑色の波長帯域の光を検出する。このため、第2センサ32によって生成されるG画像は、他の画像(R画像及びB画像)より明るく、ノイズの少ない画像であり、フィルタ10が設けられたことによる影響が少ない画像であるといえる。一方、第1センサ31によって生成されるR画像及び第2センサ33によって生成されるB画像は、第1フィルタ領域11及び第2フィルタ領域12の一方のフィルタ領域を透過した光から生成される画像であるため、G画像とは異なる。
上記したように第1センサ31、第2センサ32及び第3センサ33によって生成されたR画像、G画像及びB画像を含む撮像画像(イメージセンサ30によって生成された画像)は、イメージセンサ30から画像処理部120に対して出力される。
図4に示すように、画像処理部120は、センサ制御部121、距離算出部122及び収差情報格納部123を含む。
センサ制御部121は、イメージセンサ30を制御し、当該イメージセンサ30から出力された撮像画像(R画像、G画像及びB画像)を取得する。なお、センサ制御部121によって取得される撮像画像に含まれるR画像、G画像及びB画像は、それぞれぼけ関数が異なる画像であり、例えばぼけ関数が非点対称に変更された対象画像及びぼけ関数が点対称である基準画像を含む。
距離算出部122は、後述するぼけ補正カーネルに基づいて異なるぼけを付加した対象画像と基準画像との相関に応じて、撮像画像に含まれる被写体までの距離を算出する(つまり、被写体までの距離情報を取得する)。
ここで、撮像画像(R画像、G画像及びB画像)は、上記した撮像光学系の収差の影響を受けている。このため、本実施形態において、被写体までの距離は、撮像光学系の収差の影響を考慮して算出されるものとする。
収差情報格納部123には、撮像光学系の収差を補正しながら被写体までの距離を算出する際に用いられる情報(以下、収差情報と表記)が予め格納されている。
なお、図4においては、画像処理部120が撮像装置100に含まれるものとして説明したが、画像処理部120は、撮像装置100とは別個の装置(画像処理装置)として実現されても構わない。
以下、図5のフローチャートを参照して、本実施形態に係る撮像装置100の処理手順の一例について説明する。なお、図5に示す処理は、撮像装置100に含まれる画像処理部120によって実行される。
ここで、撮像装置100において例えば被写体が撮像された場合、上記したように当該被写体を含む撮像画像がイメージセンサ30から出力される。
この場合、センサ制御部121は、上記したイメージセンサ30から出力された撮像画像を取得する(ステップS1)。なお、ステップS1において取得された撮像画像は、上記した第1センサ31、第2センサ32及び第3センサ33の各々によって生成されたセンサ画像(R画像、G画像及びB画像)を含む。このセンサ画像のうちの少なくとも1つは、フィルタ10によってぼけ関数が非点対称に変更されている。すなわち、フィルタ10のフィルタ領域(第1フィルタ領域11及び第2フィルタ領域12)は、イメージセンサ30で受光される光のうち、任意の光を減衰させることや、光線の集光の分布に偏りを生じさせることで、センサ画像のぼけ関数を変更することができる。なお、図2において説明したフィルタ10の例では、B画像及びR画像がフィルタ10によってぼけ関数が非点対称に変更された画像に相当する。
次に、センサ制御部121は、ステップS1において取得された撮像画像から対象画像を取得する(ステップS2)。本実施形態において、対象画像は、例えばフィルタ10が有する第1フィルタ領域11で減衰(吸収)され、第2フィルタ領域12を透過した光を受光して生成されたセンサ画像であり、例えばB画像である。B画像は、半円形のぼけ関数を有しており、ぼけ形状は半円形状となる。
以下の説明では、対象画像がB画像である場合について説明するが、対象画像は、第2フィルタ領域12で減衰され、第1フィルタ領域11を透過した光を受光して生成されたセンサ画像(R画像)であってもよい。
また、センサ制御部121は、ステップS1において取得された撮像画像から基準画像を取得する(ステップS3)。本実施形態において、基準画像は、例えばフィルタ10が有する第1フィルタ領域11及び第2フィルタ領域12を透過した光を受光して生成されたセンサ画像であり、例えばG画像である。G画像は、円形のぼけ関数を有しており、ぼけ形状は円形状となる。
ここで、図6を参照して、被写体までの距離と画像において生じるぼけ形状(ぼけ関数)との関係を説明する。図6の左列は、それぞれ撮像装置100を上方向(つまり、フィルタ10の分割方向に平行なY軸の正方向)から見た場合におけるレンズ20及びフィルタ10の組み合わせとイメージセンサ30と被写体との位置関係を示している。図6の中列と右列は、それぞれ左列において示している被写体を撮像したときにイメージセンサ30上に形成される対象画像(B画像)及び基準画像(G画像)のぼけ形状を表している。
なお、以下の説明においては、撮像装置100においてピントが合う位置(以下、ピント位置と表記)から被写体までの距離を距離dと称する。なお、距離dは、ピント位置を基準(0)として、撮像装置100に対して被写体の位置がピント位置よりも遠い場合には正の値となり、撮像装置100に対して被写体の位置がピント位置よりも近い場合には負の値となるものとする。
まず、被写体の位置がピント位置よりも遠い、つまり、距離d>0の場合を想定する。この場合、被写体にはピントが合っていないため、図6の上段に示すように、対象画像においても基準画像においてもぼけが生じる。
また、距離d>0の場合の対象画像のぼけ形状201aは、例えば点対称な基準画像のぼけ形状202aと比較して右側に偏った非点対称な形状となる。基準画像(G画像)のぼけ形状202aが点対称形状であるのは、フィルタ10が有する第1フィルタ領域11と第2フィルタ領域12がほぼ均等に緑色の光を透過させるためのである。一方、対象画像(B画像)のぼけ形状201aが非点対称形状(右側に偏った形状)であるのは、フィルタ10が有する第1フィルタ領域11が青色の光を減衰させ、第2フィルタ領域12が青色の光を透過させるためのである。
本実施形態において説明するぼけ形状とは、特定の画素を含む所定の範囲において生じているぼけの形状をいう。以下の説明においても同様である。
次に、被写体の位置がピント位置に一致する、つまり、距離d=0の場合を想定する。図6の中段に示すように、距離d=0の場合には、対象画像においても基準画像においてもぼけは生じない。
更に、被写体の位置がピント位置よりも近い、つまり、距離d<0の場合を想定する。この場合、図6の下段に示すように、被写体にはピントが合っていないため、対象画像においても基準画像においてもぼけが生じる。
また、上記したように対象画像(B画像)は第2フィルタ領域12を主に透過した光(青色の光)に基づいて生成される画像であるが、距離d<0の場合の対象画像のぼけ形状201bは、図6の下段に示すように、例えば基準画像のぼけ形状202bと比較して左側に偏った形状となる。
すなわち、ぼけ形状201bは、上記したぼけ形状201aと同様に非点対称形状であり、Y軸方向に平行な直線を軸にしてぼけ形状201aを反転した形状となる。
一方、この場合における基準画像のぼけ形状202bは、上記した基準画像のぼけ形状202aと同様の点対称形状となる。
上記したように対象画像においては、距離dに応じてぼけ形状が変化する。具体的には、対象画像のぼけ形状は、距離d>0であれば基準画像のぼけ形状の左側が欠けた半円のような形状(非点対称形状)に変化し、距離d<0であれば基準画像のぼけ形状の右側が欠けた半円のような形状(非点対称形状)に変化する。
また、図6においては示されていないが、対象画像及び基準画像におけるぼけ形状の大きさ(幅)は、距離|d|に依存する。なお、図7は、対象画像のぼけ形状の大きさが距離|d|に応じて変化することを示している。また、図8は、基準画像のぼけ形状の大きさが距離|d|に応じて変化することを示している。すなわち、ぼけ形状の大きさは、距離|d|が大きいほど大きく(幅が広く)なる。
ここで、本実施形態においては上記したように第1フィルタ領域11及び第2フィルタ領域12を有するフィルタ10を介して光を受光することによってそれぞれぼけ関数が異なるセンサ画像が生成されるが、当該センサ画像(対象画像及び基準画像)においては当該フィルタ10に起因するぼけとは異なるレンズ収差(撮像光学系の収差)に起因するぼけ(画像劣化)が生じる場合がある。
このようにレンズ収差の影響を受けている対象画像及び基準画像に基づいて被写体までの距離が算出されると、当該距離の算出精度が低下する可能性がある。よって、被写体までの距離の算出においては、レンズ収差の影響を除去(補正)する必要がある。なお、レンズ収差には様々なものが存在するが、本実施形態においては、例えば像面湾曲によって生じる収差を対象とする。
ところで、被写体までの距離の算出に対して直接影響しない(つまり、対象画像及び基準画像のぼけ形状に影響を与えない)収差に関しては、当該距離の算出処理の前に除去することが好ましい。被写体までの距離の算出に対して直接影響しない収差には、例えば倍率色収差及び歪曲収差が含まれる。
再び図5に戻ると、距離算出部122は、収差情報格納部123に格納されている収差情報に基づいて、対象画像及び基準画像における倍率色収差及び歪曲収差を補正する(ステップS4)。
なお、倍率色収差とは、光の波長帯域(色成分)による屈折率の差から結像位置が異なる色収差をいう。この倍率色収差によれば、画像において像高方向の色ずれが生じる。また、歪曲収差によれば、被写体平面状の形状と像面(画像)上の形状とが相似にならないという位置ずれが生じる。
ここで、収差情報格納部123に格納されている収差情報には、例えば画像中の局所領域に対応する水平方向及び垂直方向の補正量(ずれ量)を保持する倍率色収差及び歪曲収差用の補正テーブル(以下、第1補正テーブルと表記)が含まれる。
ステップS4においては、このような第1補正テーブルを参照することによって、対象画像及び基準画像に対して倍率色収差により生じている色ずれ及び歪曲収差により生じている位置ずれが補正される。
本実施形態においては倍率色収差及び歪曲収差の両方を補正するものとして説明したが、収差の影響によっては、例えば倍率色収差及び歪曲収差の一方のみを補正する構成としてもよいし、倍率色収差及び歪曲収差の両方を補正しない構成としてもよい。具体的には、例えば焦点距離が小さい(画角が広い)レンズでは歪曲収差の影響が大きいのに対し、焦点距離が大きい(望遠)レンズでは歪曲収差の影響よりも倍率色収差の影響の方が大きい。このため、例えばレンズの焦点距離が予め定められた値よりも小さい場合には歪曲収差を補正する構成とし、当該レンズの焦点距離が予め定められた値よりも大きい場合には倍率色収差を補正する構成とするようにしてもよい。なお、倍率色収差または歪曲収差を補正するか否かについては、その他のレンズの特性(当該レンズの部材等)に応じて決定されてもよい。
ステップS4の処理が実行されると、対象画像及び基準画像(撮像画像)を構成する画素毎にステップS5以降の処理を実行する。以下、ステップS5以降の処理の対象となる画素を対象画素として説明する。以下の説明において、対象画像のぼけ形状とは、対象画像を構成する対象画素を含む所定の範囲内のぼけの形状であり、基準画像のぼけ形状とは、基準画像を構成する対象画素を含む所定の範囲内のぼけの形状であるものとする。
この場合、距離算出部122は、対象画像に異なるぼけを付加することで、当該対象画像のぼけ形状を補正(変更)した補正画像を生成する(ステップS5)。
ここで、対象画像と基準画像とのぼけ形状は、上記したように撮像画像に含まれる被写体までの距離dに応じて変化する。このため、本実施形態では、撮像画像に含まれる被写体までの距離が任意の距離dであると仮定し、異なる距離d毎に作成した複数のぼけ補正カーネル(ぼけ変更フィルタ)を用意する。この複数のぼけ補正カーネルを用いて対象画像のぼけ形状を補正した補正画像を生成することによって、当該生成した補正画像と基準画像との相関がより高くなるぼけ補正カーネルを特定し、当該特定されたぼけ補正カーネルに対応する距離dを求めることで被写体までの距離を算出する。なお、ぼけ補正カーネルは、対象画像のぼけ形状を基準画像のぼけ形状に補正するための畳み込み関数である。
以下、上記したステップS5における補正画像の生成処理について具体的に説明する。まず、フィルタ10の影響を受けていない画像(センサ画像)について考える。この場合、センサ画像Ixに含まれる被写体からピント位置までの距離をdとすると、センサ画像Ixは、ぼけの少ない理想的なセンサ画像Iyと、上記したように距離dに応じて変化するセンサ画像のぼけ関数f(d)を用いて、以下の式(1)で表すことができる。
なお、上記したセンサ画像のぼけ関数f(d)は、撮像装置100の開口形状と距離dとによって決定される。距離dについては、上記したようにピント位置を基準として、被写体がピント位置よりも遠くに存在する場合はd>0、被写体がピント位置よりも近くに存在する場合はd<0となる。撮像装置100の開口形状が円形状(点対称形状)である場合には、ぼけ関数f(d)の形状はピント位置の前後で変化はないため、ぼけ関数f(d)は距離dの大きさ|d|によってぼけの幅が変化するガウス関数として表現できる。なお、ぼけ関数f(d)は、距離dの大きさ|d|によってぼけの幅が変化するプルボックス関数として表現してもよい。
次に、フィルタ10の影響を受けている画像(対象画像及び基準画像)について考える。ここで、対象画像Ixoは、式(1)と同様に、開口形状とフィルタ領域との特性から決定されるぼけ関数fo(d)を用いて、以下の式(2)で表すことができる。
また、基準画像Ixrは、式(1)と同様に、開口形状とフィルタ領域との特性から決定するぼけ関数fr(d)を用いて、以下の式(3)で表すことができる。
ここで、図2に示すフィルタ10(第1フィルタ領域11及び第2フィルタ領域12)の場合、対象画像(B画像)のぼけ関数fo(d)は、第1フィルタ領域11での光減衰の影響により、上記した図6において説明したようにピント位置であるd=0の前後で異なる形状に変化する。また、上記した図7に示すように、対象画像のぼけ関数fo(d)は、被写体がピント位置よりも遠方にあるd>0の場合に、x>0で第1のフィルタ領域での光減衰に応じて、減衰したぼけの幅|d|のガウス関数となる。同様に、対象関数のぼけ関数fo(d)は、被写体がピント位置よりも近方にあるd<0の場合に、x<0で第1フィルタ領域11での光減衰に応じて、減衰したぼけの幅|d|のガウス関数となる。
一方、図2に示したフィルタ10の場合、基準画像(G画像)は第1フィルタ領域11及び第2フィルタ領域12の影響を受けないため、当該基準画像のぼけ関数fr(d)=f(d)となる。
対象画像Ixoにぼけを付加して、対象画像Ixoのぼけ形状を基準画像Ixrのぼけ形状と一致させるためのぼけ関数を、ぼけ補正カーネルfc(d)と定義する。この場合、上記した基準画像Ixrは、ぼけ補正カーネルfc(d)及び対象画像Ixoを用いて、以下の式(4)で表すことができる。
式(4)のぼけ補正カーネルfc(d)は、上記した式(2)〜式(4)により、基準画像Ixrのぼけ関数fr(d)と対象画像Ixoのぼけ関数fo(d)とを用いて、以下の式(5)のように表すことができる。
式(5)のfo −1(d)は、対象画像のぼけ関数fo(d)の逆フィルタである。本実施形態においては、これらにより、基準画像Ixrと対象画像Ixoとのぼけ関数から解析してぼけ補正カーネルfc(d)を算出することが可能となる。対象画像Ixoのぼけ形状(ぼけ関数)は、ぼけ補正カーネルfc(d)を用いて、任意の距離dを想定した様々なぼけ形状に補正することができる。
ここで、図9は、上記したぼけ補正カーネルの例を示す。なお、図9においては、距離d<0の場合の対象画像のぼけ関数にぼけを付加するぼけ補正カーネルが示されている。
図9に示すぼけ補正カーネルfc(d)は、第1フィルタ領域11と第2フィルタ領域12とを分割する線分の中心点を通り、かつ、当該線分に対して垂直方向の直線状(直線付近)に分布するぼけ関数に相当する。
対象画像Ixoのぼけ形状を任意の距離dにおけるぼけ補正カーネルfc(d)を用いて補正した補正画像をIx´o(d)とすると、補正画像Ix´o(d)は、以下の式(6)で表すことができる。
上記したステップS5において、距離算出部122は、このような式(6)により、任意の距離dに対応するぼけ関数fc(d)を用いて対象画像Ixoにぼけ付加し、補正画像Ix´o(d)を生成することができる。
再び図5に戻ると、距離算出部122は、ステップS5において生成された補正画像Ix´o(d)と基準画像Ixrとを比較し、補正画像Ix´o(d)と基準画像Ixrとのぼけ形状の一致度を計算する(ステップS6)。ステップS6においては、後述するように光学系の収差に基づいてぼけ形状の一致度が計算される。なお、ぼけ形状の一致度としては、対象画素を中心とする任意サイズの矩形領域における補正画像Ix´oと基準画像Ixrとの相関が計算されればよい。このぼけ形状の一致度の計算には、例えばSSD(Sum of Squared Difference)、SAD(Sum of Absolute Difference)、NCC(Normalized Cross-Correlation)、ZNCC(Zero-mean Normalized Cross-Correlation)、Color Alignment Measure、エッジ画像のZNCC等を利用することができる。本実施形態においては、明るさの変動にロバストなZNCCを利用するものとする。
次に、距離算出部122は、ステップS6において算出された一致度に基づいて、補正画像Ix´o(d)と基準画像Ixrとのぼけ形状が一致しているか否かを判定する(ステップS7)。なお、ぼけ形状が一致するとは、当該ぼけ形状が完全に一致する場合だけではなく、一致度が所定の閾値以上である場合を含めてもよい。また、後述するZNCCを利用した指標を一致度として用いる場合には、ステップS7における判定処理において、当該指標値が閾値未満である場合にぼけ形状が一致すると判定されてもよい。
補正画像Ix´o(d)と基準画像Ixrとのぼけ形状が一致していると判定された場合(ステップS7のYES)、補正画像Ix´o(d)における距離dが撮像画像に含まれる被写体までの距離として算出される。
一方、補正画像Ix´o(d)と基準画像Ixrとのぼけ形状が一致していないと判定された場合(ステップS7のNO)、上記したステップS5に戻って処理が繰り返される。この場合、上記したぼけ補正カーネルfc(d)における距離dを変えてステップS5の処理が実行される。
なお、図5ではステップS7において補正画像Ix´o(d)と基準画像Ixrとのぼけ形状が一致していると判定された場合に処理が終了されるものとして説明したが、例えば仮定する全ての距離dについて一致度を算出し、当該一致度が最も高い距離dを被写体までの距離として算出するようにしてもよい。
換言すれば、距離算出部122は、補正画像Ix´o(d)と基準画像Ixrとで相関が最も高くなる距離dを求めることにより、被写体までの距離を算出することができる。
なお、ここでは対象画素についてステップS5以降の処理が実行される場合について説明したが、当該対象画素について被写体までの距離が算出された場合には、当該対象画素以外の画素についてもステップS5以降の処理が実行される。これにより、撮像画像(RGB画像)中に含まれる全ての被写体までの距離を算出することができる。
以下、上記した図5に示すステップS6における一致度の計算処理について具体的に説明する。ステップS6においては、イメージセンサ30によって生成された撮像画像に含まれる基準画像Ixrと、距離dを仮定した(つまり、ぼけ補正カーネルfc(d)を用いて対象画像Ixoにぼけを付加した)補正画像Ix´o(d)とから生成されるRGB画像の対象画素を中心とする局所領域(上記した任意サイズの矩形領域)で、指標L(d)を計算する。上記したように基準画像IxrがG画像IG、対象画像IxoがB画像IBであるものとすると、指標L(d)は以下の式(7)により計算される。
なお、式(7)において、I´B(d)はぼけ補正カーネルfc(d)を用いてB画像IBのぼけ形状を補正した補正画像であり、IGはG画像(基準画像)である。また、∇Iは、ぼけ画像Iのエッジ画像である。このような式(7)における指標L(d)は、値が小さいほど画像の一致度が高いことを示している。すなわち、本実施形態においては、この指標L(d)を一致度として用いることができる。
ここで、上記したように実際のレンズ20には収差が存在し、本実施形態における被写体までの距離の算出(推定)精度を低下させる場合がある。なお、被写体までの距離の算出に対して直接影響がある収差としては上記した像面湾曲を想定している。像面湾曲とは、例えば球面レンズの影響で集光面が湾曲し、像面が球面になる単色収差をいう。
以下、図10A及び10Bを参照して、像面湾曲の原理について説明する。図10Aは、本実施形態におけるフィルタ10が設けられていない場合の像面湾曲によって生じる収差の影響について説明するための図である。図10Bは、本実施形態におけるフィルタ10が設けられている場合の像面湾曲によって生じる収差の影響を説明するための図である。
上記したように単色収差である像面湾曲は、平面物体を撮像するとイメージセンサの中央にピントが合っていたとしても、撮像画像の端でピントがずれてぼけが生じるという現象である。
本実施形態におけるフィルタ10が設けられていない場合には、レンズは波長帯域によらず全ての光を透過させるので、図10Aに示すように、対象画像(B画像)と基準画像(G画像)とで観測されるぼけ関数は同様の形状となる。
一方、本実施形態におけるフィルタ10が設けられている場合(つまり、一部の波長帯域を遮断する第1フィルタ領域11が存在する場合)には、図10Bに示すように、像面湾曲の影響で対象画像(B画像)のぼけ関数が変化する。
上記したように像面湾曲は本来単色収差であるが、図10Bに示すぼけ関数の変化は、フィルタ10の挿入により色収差となって発生したものである。
本実施形態においては、このように発生する色収差の影響を緩和(補正)しながら、精度の高い一致度を計算し、誤差の少ない距離推定を実現するために、以下の式(8)により上記した指標L(d)を計算する。なお、式(8)におけるcが像面湾曲によるずれの補正量である。
ここで、図11Aは、像面湾曲によって生じる収差を補正していない場合の指標値、すなわち、上記した式(7)を用いて計算された指標値(指標L(d))の分布を示す。一方、図11Bは、像面湾曲によって生じる収差を補正した場合の指標値、すなわち、上記した式(8)を用いて算出された指標値の分布を示す。
像面湾曲によって生じる収差を補正していない場合には、図11Aに示すように、指標値の最小値(すなわち、一致度が最も高いd)が真値に対してずれている。
これに対して、図11Bに示すように、例えば上記した像面湾曲によるずれの補正量が定義された像面湾曲用の補正テーブル(以下、第2補正テーブルと表記)を用いて指標値と距離dの対応関係を変更する(ずらす)ことによって、像面湾曲によるずれを補正することができる。なお、この第2補正テーブルは上記した収差情報として収差情報格納部123に予め格納されているものとする。
ここで、この像面湾曲によって生じる収差の補正処理は各画素で行われるため、画像全体の(つまり、画像を構成する画素毎に補正量が定義された)第2補正テーブルが用意されているものとする。第2補正テーブルは、事前に評価パターンを撮像し、平面からのずれ量を計測しておくことで作成されるものとする。このように得られる計測点から画像全体のずれ量を求めるためには、多項式近似曲線やゼルニケ多項式等のモデル近似を用いる。なお、モデル係数がわかれば展開により画像全体の補正量が計算可能である。このため、上記した収差情報として収差情報格納部123に格納されている第2補正テーブルは、モデル係数であってもよいし、展開後の全画素の補正値でもよい。
なお、像面湾曲によって生じる収差は、被写体までの距離(撮像距離)に応じて変化する場合があるため、当該距離に応じて第2補正テーブルを切り替える構成としても構わない。この場合には、例えば以下の式(9)により指標L(d)を計算するものとする。
この式(9)においては、c(d)が像面湾曲によるずれの補正量であり、当該補正量を距離dに応じて変化させる。c(d)は、距離に応じた第2補正テーブルを複数用意して、当該複数の第2補正テーブルのうち距離dに最も近い距離に応じた第2補正テーブルを参照することによって特定されてもよいし、当該距離dに近い距離に応じた複数の第2補正テーブルから線形補間により求めてもよいし、または、距離方向に対するモデル近似により展開された値としてもよい。
上記したように本実施形態においては、撮像光学系の収差(レンズ収差)の影響を受けた撮像画像(第1画像)に含まれる、ぼけ関数が非点対称に表された例えば青色(第1色成分)の対象画像(第2画像)と、ぼけ関数が点対称に表された例えば緑色(第2色成分)の基準画像(第3画像)とを取得し、対象画像に対して複数の異なるぼけを付加して得られる複数の画像(補正画像)と基準画像との相関に応じて、撮像画像に含まれる被写体までの距離を算出する。なお、本実施形態において、被写体までの距離を算出するための画像間の相関は撮像光学系の収差に基づいて計算されるが、当該撮像光学系の収差には、フィルタ10を用いて撮像された被写体までの距離の算出に対して影響を与える像面湾曲によって生じる収差が含まれる。
すなわち、本実施形態においては、撮像装置100の光学系に設置したフィルタ10に応じて変更された対象画像のぼけ形状を、距離dを仮定したぼけ補正カーネル(対象画像のぼけ関数を基準画像のぼけ関数に補正するための畳み込み関数)により補正した補正画像を生成し、当該生成した補正画像と基準画像との相関がより高くなる距離dを求めることで、撮像画像に含まれる被写体(撮像画像に写る被写体)までの距離を算出する際に、事前に計測した像面湾曲によるずれを補正する。
なお、ぼけ補正カーネルは対象画像のぼけ関数と基準画像のぼけ関数とを解析することによって算出することが可能であり、本実施形態においては、任意の距離の被写体のぼけを補正するための複数のぼけ補正カーネルが予め用意されているものとする。
本実施形態においては、このような構成により、レンズ収差(像面湾曲)により生じるずれを補正しながら、ぼけ関数とサンプリング位置が一致する画像の相関を用いて距離を算出するため、精度の高い距離情報を得ることが可能となり、誤差の少ない距離推定を実現することができる。更に、本実施形態においては、空間情報の畳み込み結果であるぼけ情報を利用するため、距離推定の結果が安定的であり、繰り返しパターンや陰面等の影響を受けることのない距離推定を実現することができる。
なお、本実施形態においては、上記したように算出された被写体までの距離(距離情報)に基づいて加工された距離画像等を生成することが可能である。具体的には、距離画像としては、例えば被写体までの距離に応じて、手前に存在する被写体ほど明るく、奥に存在する被写体ほど暗くなるような画像を生成することができる。
更に、本実施形態においては、被写体までの距離の算出に用いられる対象画像及び基準画像に対して事前に倍率色収差により生じている色ずれまたは歪曲収差により生じている位置ずれを補正することが可能であるため、より精度の高い距離情報を得ることができる。
なお、本実施形態においては第2フィルタ領域12がシアンのフィルタ領域であるものとして説明したが、上記した図5に示す処理のように対象画像をB画像、基準画像をG画像とする場合には、第2フィルタ領域12は緑色及び青色の波長帯域の光を透過するものであれば他のフィルタ領域であっても構わない。
例えば第2フィルタ領域12が全ての波長帯域の光を透過する透明なフィルタ領域等である場合には、緑色の波長帯域の光と同様に、赤色の波長帯域の光も第1フィルタ領域11及び第2フィルタ領域12の両方を透過する。この場合には、R画像を基準画像としてもよい。また、G画像及びR画像の両方を基準画像として、当該G画像及びR画像のそれぞれに対して指標(一致度)を算出し、当該指標の加重平均を用いて被写体までの距離が算出されるようにしてもよい。
また、本実施形態において説明したように第1フィルタ領域がイエローのフィルタ領域であり、第2フィルタ領域12がシアンのフィルタ領域である場合には、赤色の波長帯域の光は第1フィルタ領域11を透過し、第2フィルタ領域12で減衰されるため、R画像のぼけ関数もB画像のぼけ数と同様に非点対称に変更される。この場合には、B画像ではなく、R画像を対象画像としてもよい。なお、R画像のぼけ関数(ぼけ形状)は、B画像のぼけ形状をY軸方向に平行な直線を軸にして反転した形状となる。
なお、本実施形態におけるフィルタ10には、点対称形でなければ、任意の領域数のフィルタ領域が存在していてもよい。また、フィルタ10は、センサ画像のぼけ関数を変更することが可能であれば、1つのフィルタ領域により構成されていてもよいし、複数のフィルタ領域により構成されていてもよい。
また、本実施形態において、第1のフィルタ領域11及び第2のフィルタ領域12はフィルタ10を任意の直線で分割した形状であり、当該直線は光学中心を通過する。このような構成によれば、ぼけ補正カーネルの次元を削減することができ、かつ、光量調整のための遮蔽物等の絞り機構が挿入された場合であってもセンサ画像のぼけ関数を変更可能な構造とすることができる。
また、本実施形態においてイメージセンサ30は第1センサ31(Rセンサ)、第2センサ32(Gセンサ)及び第3センサ33(Bセンサ)を有するものとして説明したが、イメージセンサ30は、2以上のセンサを有し、フィルタ10を光が通過することにより、ぼけ関数が非点対称に変更された対象画像と、少なくとも1種類以上のセンサ画像である基準画像等を生成することが可能なように構成されていればよい。2以上のセンサとは、例えば、RGBセンサのうち、RセンサとGセンサ、GセンサとBセンサ、RセンサとBセンサ、RセンサとGセンサとBセンサ等の2以上のセンサの組み合わせをいう。すなわち、イメージセンサ30は、例えば2以上のセンサのうち、いずれかのセンサが対象画像を生成し、他のセンサが基準画像を生成するように構成されていればよい。
また、本実施形態においてはイメージセンサ30がRGBセンサを備えるものとして主に説明したが、イメージセンサ30が有するセンサの波長帯域はこれらに限られるものではない。
(第2の実施形態)
次に、第2の実施形態について説明する。なお、本実施形態に係る撮像装置のハードウェア構成、フィルタ及び機能構成は、前述した第1の実施形態と同様であるため、適宜、図1、図2及び図4等を用いて説明する。また、以下の説明においては、前述した第1の実施形態と同様の部分についてはその詳しい説明を省略し、当該第1の実施形態と異なる部分について主に述べる。
前述した第1の実施形態においては倍率色収差を補正するものとして説明したが、当該第1の実施形態では、距離に応じて変動する倍率色収差には対応していない。
そこで、本実施形態においては、被写体までの距離を算出するタイミングで倍率色収差補正を行う点で、前述した第1の実施形態とは異なる。
以下、図12のフローチャートを参照して、本実施形態に係る撮像装置100の処理手順の一例について説明する。なお、図12に示す処理は、撮像装置100に含まれる画像処理部120によって実行される。
まず、前述した図5に示すステップS1〜S3の処理に相当するステップS11〜S13の処理が実行される。
次に、距離算出部122は、収差情報格納部123に格納されている収差情報(第1補正テーブル)に基づいて、対象画像及び基準画像における倍率色収差を補正する(ステップS14)。
なお、ステップS14の処理が実行された場合には前述した図5に示すステップS5〜S7の処理に相当するステップS15〜S17の処理が実行されるが、ステップS14においては、当該ステップS15及びS16において用いられる距離dに応じた補正量により倍率色収差により生じている色ずれを補正するものとする。
この場合における距離dに応じた補正量は、例えば距離に応じた複数の第1補正テーブルを用意しておき、当該複数の第1補正テーブルのうち距離dに最も近い距離に応じた第1補正テーブルを参照することによって特定されてもよいし、当該距離dに近い距離に応じた複数の第1補正テーブルから線形補間により求めてもよいし、または、距離方向に対するモデル近似により展開された値としてもよい。
なお、本実施形態においては距離dに応じた補正量により倍率色収差を補正する構成であるため、ステップS17において補正画像Ix´o(d)と基準画像Ixrとのぼけ形状が一致していないと判定された場合(ステップS17のNO)、ステップS14に戻って処理が繰り返される。
本実施形態においては、上記した処理が実行されることによって、被写体までの距離を算出するタイミングで距離dに応じた補正量により倍率色収差を補正することが可能となる。
また、前述した第1の実施形態においては対象画像及び基準画像を構成する各画素についてステップS5以降の処理が実行されるものとして説明したが、本実施形態においては、対象画像及び基準画像を構成する各画素についてステップS14以降の処理が実行される。
なお、図12においては省略されているが、前述した第1の実施形態において説明した歪曲収差を補正する処理がステップS13の処理の後等に実行されるようにしても構わない。
上記したように本実施形態においては、倍率色収差による影響が距離に応じて変動する点を考慮して当該倍率色収差を補正することにより、より精度の高い距離情報を得ることが可能となり、誤差の少ない距離推定を実現することができる。
(第3の実施形態)
次に、第3の実施形態について説明する。前述した第1の実施形態においてはセンサ画像(例えば、G画像)を基準画像とするものとして説明したが、本実施形態は、いずれかのセンサ画像にぼけを付加した画像を基準画像とする点で、前述した第1の実施形態とは異なる。なお、本実施形態に係る撮像装置のハードウェア構成は、前述した第1の実施形態と同様であるため、適宜、図1を用いて説明する。また、以下の説明においては、前述した第1の実施形態と同様の部分についてはその詳しい説明を省略し、当該第の1実施形態と異なる部分について主に述べる。
まず、図13を参照して、本実施形態におけるフィルタ10の一例について説明する。ここでは、前述した第1の実施形態におけるフィルタ10と異なる点について説明する。
図13に示すように、本実施形態におけるフィルタ10は、第1フィルタ領域13及び第2フィルタ領域14を含む。
本実施形態において、第1フィルタ領域13及び第2フィルタ領域14は、イメージセンサ30のRGBセンサのいずれかの波長帯域において異なる透過率特性を有している。具体的には、第1フィルタ領域13は黄色の色補正フィルタ(CC−Y)であり、第2フィルタ領域14はシアンの色補正フィルタ(CC−C)であるものとして説明する。
図14は、上記した第1フィルタ領域13及び第2フィルタ領域14の透過率特性の例を示す。
図14に示すように、第1フィルタ領域13は、赤色の光と、緑色の光と、青色の光との全ての波長帯域の光を透過する。また、第2フィルタ領域14は、赤色の光と、緑色の光と、青色の光との全ての波長帯域の光を透過する。
しかしながら、第1フィルタ領域13と第2フィルタ領域14とでは、各波長帯域の透過率が異なる。なお、第1フィルタ領域13と第2フィルタ領域14とは、任意の波長帯域の透過率を変更するフィルタや、任意方向の偏光光を通過させる偏光フィルタまたは任意の波長帯域の集光パワーを変更するマイクロレンズであってもよい。具体的には、任意の波長帯域の透過率を変更するフィルタは、原色フィルタ(RGB)、補色フィルタ(CMY)、色補正フィルタ(CC−RGB/CMY)、赤外線または紫外線カットフィルタ、NDフィルタ、遮蔽板であってもよい。第1フィルタ領域13と第2フィルタ領域13とがマイクロレンズである場合は、レンズ20により光線の集光の分布に偏りが生じることでぼけ関数が変化する。
本実施形態に係る撮像装置100は、上記した構成のフィルタ10を介して任意の被写体を撮像することによって、当該被写体までの距離を示す距離情報を得ることができる。
なお、本実施形態に係る撮像装置100の機能構成は前述した第1の実施形態と同様であるが、本実施形態において、画像処理部120に含まれる距離算出部122は、予め用意されている複数のぼけ補正カーネルに基づいて異なるぼけを付加した対象画像(補正画像)と、いずれかのセンサ画像(対象画像)にぼけを付加した基準画像との相関に応じて、撮像画像に含まれる被写体までの距離を算出する。
以下、図15のフローチャートを参照して、本実施形態に係る撮像装置100の処理手順の一例について説明する。なお、図15に示す処理は、撮像装置100に含まれる画像処理部120によって実行される。
まず、前述した図5に示すステップS1の処理に相当するステップS21の処理が実行される。
次に、センサ制御部121は、ステップS21において取得された撮像画像から対象画像を取得する(ステップS22)。
ここで、対象画像のぼけ関数は、フィルタ10(第1フィルタ領域13及び第2フィルタ領域14)により非点対称に変化している。この結果、被写体の位置がピント位置よりも遠くに存在する場合(d>0)と、被写体の位置がピント位置よりも近くに存在する場合(d<0)とで、対象画像のぼけは、非点対称形のぼけとなり、また、ピント位置の前後で異なる形状となる。具体的には、第1センサ31(Rセンサ)、第2センサ32(Gセンサ)及び第3センサ33(Bセンサ)の各波長帯域で観測される光が、第1のフィルタ領域13と第2フィルタ領域13とのどちらをより多く通過してきたかで、対象画像のぼけ形状の偏りが定まる。なお、被写体の位置がピント位置に存在する場合(d=0)は、対象画像はぼけのない画像となる。
なお、図13に示すフィルタ10の場合、第1フィルタ領域13及び第2フィルタ領域14により、赤色の波長帯域の光と、緑色の波長帯域の光と、青色の波長帯域の光との全てが減衰し、通過してイメージセンサ30で受光される。このため、本実施形態においては、ステップS21において取得された撮像画像に含まれるセンサ画像の全て(R画像、G画像及びB画像)が対象画像となり得る。なお、対象画像は、R画像、G画像及びB画像の全ての画像でなくてもよい。センサ制御部121は、撮像画像に含まれる複数のセンサ画像から選択されたセンサ画像を対象画像として取得する。
フィルタ10を通過する光のうち、青色の光は、CC−Cフィルタ(第2フィルタ領域13)よりもCC−Yフィルタ(第1のフィルタ領域)でより吸収され、減衰する。このため、被写体の位置がピント位置よりも遠くに存在する場合(d>0)では、B画像には円形状と比較して右側に偏ったぼけが生じ、被写体の位置がピント位置よりも近くに存在する場合(d<0)では、B画像には円形状と比較して左側に偏ったぼけが生じる。
また、フィルタ10を通過する光のうち、赤色の光は、CC−Yフィルタ(第1フィルタ領域13)よりもCC−Cフィルタ(第2フィルタ領域14)でより吸収され、減衰する。このため、被写体の位置がピント位置よりも遠くに存在する場合(d>0)では、R画像には円形状と比較して左側に偏ったぼけが生じ、被写体の位置がピント位置よりも近くに存在する場合(d<0)では、R画像には円形状と比較して右側に偏ったぼけが生じる。
また、フィルタ10を通過する光のうち、緑色の光は、CC−Cフィルタ(第2のフィルタ領域14)よりもCC−Yフィルタ(第1フィルタ領域13)でより吸収され、減衰する。このため、被写体の位置がピント位置よりも遠くに存在する場合(d>0)では、G画像には円形状と比較して右側に偏ったぼけが生じ、被写体の位置がピント位置よりも近くに存在する場合(d<0)では、G画像には円形状と比較して左側に偏ったぼけが生じる。
なお、以下の説明においては、ステップS22においては撮像画像に含まれるセンサ画像(R画像、G画像及びB画像)の全てが対象画像として取得されたものとして説明する。
ステップS22の処理が実行されると、図5に示すステップS4の処理に相当するステップS23の処理が実行される。
次に、対象画像(撮像画像)を構成する画素毎にステップS24以降の処理が実行される。以下、ステップS24以降の処理の対象となる画素を対象画素として説明する。以下の説明において、対象画像のぼけ形状とは、対象画素を構成する画素を含む所定の範囲内のぼけの形状であるものとする。
この場合、距離算出部122は、ステップ22において取得された対象画像のうちの少なくとも1つの対象画像(以下、第1対象画像と表記)のぼけ形状を任意形状のぼけに補正した基準画像を生成する(ステップS24)。
ステップS24において、距離算出部122は、被写体まで距離が任意の距離dであると仮定し、当該距離dについて作成したぼけ補正カーネルを用いて、第1対象画像のぼけ形状を補正した基準画像を生成する。なお、第1対象画像のぼけ形状を任意形状のぼけに補正する処理は、図5に示すステップS5の処理と同様である。
以下の説明においては、ステップS24において生成された基準画像のぼけ形状が円形状であるものとして説明するが、当該基準画像のぼけ形状は任意のセンサ画像(対象画像)のぼけ形状でもよいし、これらとは異なる他の形状であってもよい。
ここで、任意に選択された第1対象画像Ixoのぼけ形状を補正して基準画像を生成するぼけ補正カーネルf´c(d)は、上述した式(5)における基準画像のぼけ関数fr(d)をf´r(d)とすることで、以下の式(10)のように表すことができる。
また、第1対象画像Ixoのぼけを補正した基準画像Ix´r(d)は、式(10)によって表されるぼけ補正カーネルf´c(d)を用いて、以下の式(11)で表すことができる。
本実施形態においては、上記したように被写体までの距離がdであると仮定した場合の基準画像Ix´r(d)を生成することができる。
次に、距離算出部122は、ステップS22において取得された対象画像のうちの第1対象画像以外の対象画像(以下、第2対象画像と表記)のぼけ形状を補正した補正画像を生成する(ステップS25)。なお、第2対象画像のぼけ形状を補正する処理は、図5に示すステップS5の処理と同様である。
具体的には、任意に選択された第2対象画像にぼけを付加して、当該第2対象画像のぼけ形状をステップS24において生成された基準画像のぼけ形状と一致させるためのぼけ補正カーネルf´c(d)は、上述した式(10)により求めることができる。距離算出部122は、求めたぼけ補正カーネルf´c(d)を用いて、第2対象画像のぼけ形状を補正した補正画像を生成する。
ここで、ぼけ補正カーネルf´c(d)を用いて第2対象画像Ixoのぼけ形状を補正した補正画像をIx´o(d)とすると、補正画像Ix´o(d)は、以下の式(12)で表すことができる。
本実施形態においては、上記したように被写体までの距離がdであると仮定した場合の補正画像Ix´o(d)を生成することができる。
なお、上記したステップS24及びS25の処理は、ステップS22において取得された対象画像の組み合わせ毎に実行される。具体的には、上記したように撮像画像に含まれるR画像、G画像及びB画像の各々が対象画像として取得されている場合には、例えば、第1対象画像をG画像、第2対象画像をR画像としてステップS24及びS25が実行され、第1対象画像をB画像、第2対象画像をG画像としてステップS24及びS25の処理が実行され、第1対象画像をR画像、第2対象画像をB画像としてステップS24及びS25の処理が実行される。
次に、距離算出部122は、ステップS25において生成された補正画像Ix´o(d)と基準画像Ix´r(d)とを比較し、補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状の一致度を計算する(ステップS26)。ステップS26においては、後述するように光学系の収差に基づいてぼけ形状の一致度が計算される。
以下、ステップS26における一致度の計算処理について具体的に説明する。ぼけ形状の一致度の計算には、例えばSSD、SAD、NCC、ZNCC、Color Alignment Measure、エッジ画像のZNCC等を利用することができるが、ここでは、明るさの変動にロバストなZNCCを利用する場合について説明する。
ステップS26においては、距離dを仮定した基準画像Ix´r(d)と補正画像Ix´o(d)とから構成されるRGB画像の対象画素を中心とする局所領域で、指標L(d)を計算する。上記したようにステップS24及びS25の処理が対象画像(R画像、G画像及びB画像)の組み合わせ毎に実行されている場合には、指標L(d)は以下の式(13)により計算される。
なお、式(13)において、I´R(d)は、ぼけ補正カーネルf´c(d)を用いてR画像IRのぼけ形状を補正した補正画像または基準画像である。I´G(d)及びI´B(d)は、I´R(d)のR画像をG画像及びB画像としたものである。また、∇Iは、ぼけ画像Iのエッジ画像である。このような式(13)における指標L(d)は、値が小さいほど画像の一致度が高いことを示している。本実施形態においては、この指標L(d)を一致度として用いることができる。
なお、式(13)においては、センサ画像(色)の組み合わせの重みを算術平均としたが、フィルタ10(第1フィルタ領域13及び第2フィルタ領域14)の透過率特性や各センサ(第1センサ31、第2センサ32及び第3センサ33)の分光感度特性を考慮した加重平均としてもよい。
ここで、実際のレンズ20には収差が存在し、本実施形態にける被写体までの距離の算出(推定)精度を低下させる場合がある。なお、被写体までの距離の算出に対して直接影響がある収差としては像面湾曲を想定している。像面湾曲の原理等については前述した第1の実施形態において説明した通りであるため、ここではその詳しい説明を省略する。
本実施形態においては、像面湾曲によって生じる収差(色収差)の影響を緩和(補正)しながら、精度の高い一致度を計算し、誤差の少ない距離推定を実現するために、以下の式(14)により上記した指標L(d)を計算する。なお、式(14)におけるcRG、cGB及びcBRは、像面湾曲によるずれの補正量である。
ここで、図16Aは、像面湾曲によって生じる収差を補正していない場合の指標値、すなわち、上記した式(13)を用いて計算された指標値(指標L(d))の分布を示す。一方、図16Bは、像面湾曲によって生じる収差を補正した場合の指標値、すなわち、上記した式(14)を用いて算出された指標値の分布を示す。
像面湾曲によって生じる収差を補正していない場合には、図16Aに示すように、センサ画像の組み合わせ毎の指標値の最小値(すなわち、一致度が最も高いd)が真値に対してずれている。
ここで、本実施形態にいては、上記した像面湾曲によるずれの補正量が定義された像面湾曲用の補正テーブル(以下、第3補正テーブルと表記)がセンサ画像の組み合わせ毎に予め用意されているものとする。なお、この第3補正テーブルは、収差情報として収差情報格納部123に予め格納されていればよい。
これによれば、図16Bに示すように、センサ画像の組み合わせ毎に用意されている第3補正テーブル(つまり、R−Gの補正テーブル、G−Bの補正テーブル、B−Rの補正テーブル)を用いて指標値と距離dの対応関係を変更する(ずらす)ことによって、像面湾曲によるずれを補正することができる。
ここで、像面湾曲によって生じる収差の補正処理は各画素で行われるため、画像全体の第3補正テーブルが用意されているものとする。第3補正テーブルは、事前に評価パターンを撮像し、平面からのずれ量を計測しておくことで作成されるものとする。このように得られる計測点から画像全体のずれ量を求めるためには、多項式近似曲線やゼルニケ多項式等のモデル近似を用いる。なお、モデル係数がわかれば展開により画像全体の補正量が計算可能である。このため、上記した収差情報として収差情報格納部123に格納されている第3補正テーブルは、モデル係数であってもよいし、展開後の全画素の補正値でもよい。
なお、像面湾曲によって生じる収差は、被写体までの距離(撮像距離)に応じて変化する場合があるため、当該距離に応じて第3補正テーブルを切り替える構成としても構わない。この場合には、例えば以下の式(15)により指標L(d)を計算するものとする。
この式(15)においては、cRG(d)、cGB(d)及びcBR(d)が像面湾曲によるずれの補正量であり、当該補正量を距離dに応じて変化させる。cRG(d)、cGB(d)及びcBR(d)は、距離に応じた第3補正テーブルを複数用意して、当該複数の第3補正テーブルのうち距離dに最も近い距離に応じた第3補正テーブルを参照することによって特定されてもよいし、当該距離dに近い距離に応じた複数の第3補正テーブルから線形補間により求めてもよいし、また、距離方向に対するモデル近似により展開された値としてもよい。
距離算出部122は、ステップS26において算出された一致度に基づいて、補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致しているか否かを判定する(ステップS27)。上記したようにZNCCを利用した指標L(d)を一致度として用いる場合には、当該指標L(d)が閾値未満であれば、補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致していると判定する。
補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致していると判定された場合(ステップS27のYES)、距離dが撮像画像に含まれる被写体までの距離として算出される。
一方、補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致していないと判定された場合(ステップS27のNO)、上記したステップS24に戻って処理が繰り返される。この場合、異なる距離dで基準画像及び補正画像が生成される。
なお、図15ではステップS27において補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致していると判定された場合に処理が終了されるものとして説明したが、例えば仮定する全ての距離dについて一致度を算出し、当該一致度が最も高い距離d(例えば、指標L(d)が最小となる距離d)を被写体までの距離として算出するようにしてもよい。
換言すれば、距離算出部122は、補正画像Ix´o(d)と基準画像Ix´r(d)とで相関が最も高くなる距離dを求めることにより、被写体までの距離を算出することができる。
なお、ここでは対象画素についてステップS24以降の処理が実行される場合について説明したが、当該対象画素について被写体までの距離が算出された場合には、当該対象画素以外の画素についてもステップS24以降の処理が実行される。これにより、撮像画像(RGB画像)中に含まれる全ての被写体までの距離を算出することができる。
上記したように本実施形態においては、第2対象画像に対して複数の異なるぼけを付加して得られる補正画像と第1対象画像(第3画像)にぼけを付加して得られる基準画像(第5画像)との相関に応じて被写体までの距離を算出する。具体的には、本実施形態においては、フィルタ10に応じて変更された複数の対象画像のぼけ形状を距離dを仮定した任意のぼけ形状に補正した基準画像と補正画像とを生成し、当該基準画像と補正画像との相関がより高くなる距離dを求めることで被写体までの距離を算出する。
本実施形態においては、このような構成により、前述した第1の実施形態と同様に精度の高い距離情報を得ることが可能となり、誤差の少ない距離推定を実現することが可能となる。
(第4の実施形態)
次に、第4の実施形態について説明する。なお、本実施形態に係る撮像装置のハードウェア構成、フィルタ及び機能構成は、前述した第1の実施形態と同様であるため、適宜、図1、図2及び図4等を用いて説明する。また、以下の説明においては、前述した第1の実施形態と同様の部分についてはその詳しい説明を省略し、当該第1の実施形態と異なる部分について主に述べる。
前述した第3の実施形態においては倍率色収差を補正するものとして説明したが、当該第3の実施形態では、距離に応じて変動する倍率色収差には対応していない。
そこで、本実施形態においては、被写体までの距離を算出するタイミングで倍率色収差補正を行う点で、前述した第1の実施形態とは異なる。
以下、図17のフローチャートを参照して、本実施形態に係る撮像装置100の処理手順の一例について説明する。なお、図17に示す処理は、撮像装置100に含まれる画像処理部120によって実行される。
まず、前述した図15に示すステップS21及びS22の処理に相当するステップS31及びS32の処理が実行される。
次に、距離算出部122は、収差情報格納部123に格納されている収差情報(第1補正テーブル)に基づいて、対象画像間における倍率色収差を補正する(ステップS33)。
なお、ステップS33の処理が実行された場合には前述した図15に示すステップS24〜S27の処理に相当するステップS34〜S37の処理が実行されるが、ステップS33においては、当該ステップS34及びS35において用いられる距離dに応じた補正量により倍率色収差により生じている色ずれを補正するものとする。
この場合における距離dに応じた補正量は、例えば距離に応じた複数の第1補正テーブルを用意しておき、当該複数の第1補正テーブルのうち距離dに最も近い距離に応じた第1補正テーブルを参照することによって特定されてもよいし、当該距離dに近い距離に応じた複数の第1補正テーブルから線形補間により求めてもよいし、または、距離方向に対するモデル近似により展開された値としてもよい。
なお、本実施形態においては、距離dに応じた補正量により倍率色収差を補正する構成であるため、ステップS37において補正画像Ix´o(d)と基準画像Ix´r(d)とのぼけ形状が一致していないと判定された場合(ステップS37のNO)、ステップS33に戻って処理が繰り返される。
本実施形態においては、上記した処理が実行されることによって、被写体までの距離を算出するタイミングで距離dに応じた補正量により倍率色収差を補正することが可能となる。
また、前述した第3の実施形態においては対象画像を構成する各画素についてステップS24以降の処理が実行されるものとして説明したが、本実施形態においては、対象画像を構成する各画素についてステップS33以降の処理が実行される。
なお、図17においては省略されているが、前述した第1の実施形態において説明した歪曲収差を補正する処理がステップS32の処理の後等に実行されるようにしても構わない。
上記したように本実施形態においては、倍率色収差による影響が距離に応じて変動する点を考慮して当該倍率色収差を補正することにより、より精度の高い距離情報を得ることが可能となり、誤差の少ない距離推定を実現することができる。
以上述べた少なくとも1つの実施形態によれば、精度の高い距離情報を得ることが可能な画像処理装置、撮像装置及び方法を提供することができる。
なお、上記した処理手順、制御手順、具体的名称、各種のデータやパラメータ等を含む情報は、特記する場合を除いて任意に変更することができる。また、図示された装置の各構成要素は、機能概念的なものであり、必ずしも物理的に図示されているように構成されていることを要しない。すなわち、装置の分散または統合の具体的形態は、図示されたものに限られず、その全部または一部を各種の負担や使用状況等に応じて、任意の単位で機能的または物理的に分散または統合することができる。
また、上記した各実施形態に係る撮像装置100に含まれる画像処理部120の機能は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることで実現することが可能である。実行されるプログラム(画像処理プログラム)は、上述した各機能を含むモジュール構成となっている。また、実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、CD−R、DVD等のコンピュータ読み取り可能な記憶媒体に記録されて提供してもよいし、ROM等に予め組み込んで提供してもよい。
(応用例)
以下、前述のような構成を有する撮像装置100が適用される応用例についていくつか説明する。
図18は、撮像装置100を含む移動体300の機能構成例を示す。移動体300は、例えば、自動運転機能を有する自動車、無人航空機、自律型の移動ロボット等として実現され得る。無人航空機は、人が乗ることができない飛行機、回転翼航空機、滑空機、飛行船であって、遠隔操作または自動操縦により飛行させることができるものであり、例えば、ドローン(マルチコプター)、ラジコン機、農薬散布用ヘリコプター等を含む。自律型の移動ロボットは、無人搬送車(Automated Guided Vehicle:AGV)のような移動ロボット、床を掃除するための掃除ロボット、来場者に各種案内を行うコミュニケーションロボット等を含む。移動体300は更に、ロボット本体が移動するものだけでなく、ロボットアームのような、ロボットの一部分の移動・回転用の駆動機構を有する産業用ロボットも含まれ得る。
図18に示すように、移動体300は、例えば、撮像装置100と制御信号生成部301と駆動機構302とを有する。撮像装置100のうちの少なくとも撮像部110は、例えば、移動体300またはその一部分の進行方向の被写体を撮像するように設置される。
図19に示すように、移動体300が自動車300Aである場合、撮像部110は、前方を撮像するいわゆるフロントカメラとして設置され得るほか、バック時に後方を撮像するいわゆるリアカメラとしても設置され得る。もちろん、これら両方が設置されてもよい。また、撮像部110は、いわゆるドライブレコーダーとしての機能を兼ねて設置されるものであってもよい。すなわち、撮像部110は、録画機器であってもよい。
次いで、図20は、移動体300がドローン300Bである場合の例を示す。ドローン300Bは、駆動機構302に相当するドローン本体310と4つのプロペラ部311,312,313,314とを備える。各プロペラ部311,312,313,314はプロペラとモータとを有する。モータの駆動がプロペラに伝達されることによって、プロペラが回転し、その回転による揚力によってドローン300Bが浮上する。ドローン本体310の、例えば下部には、撮像部110(あるいは、撮像部110を含む撮像装置100)が搭載されている。
また、図21は、移動体300が自律型の移動ロボット300Cである場合の例を示す。移動ロボット300Cの下部には、駆動機構302に相当する、モータや車輪等を含む動力部320が設けられている。動力部320は、モータの回転数や車輪の向きを制御する。移動ロボット300Cは、モータの駆動が伝達されることによって、路面または床面に設置する車輪が回転し、当該車輪の向きが制御されることにより任意の方向に移動することができる。撮像部110は、例えば、人型の移動ロボット300Cの頭部に、前方を撮像するように設置され得る。なお、撮像部110は、後方や左右を撮像するように設置されてもよいし、複数の方位を撮像するように複数設置されてもよい。また、センサ等を搭載するためのスペースが少ない小型ロボットに少なくとも撮像部110を設けて、被写体の位置を推定することにより、デッドレコニングを行うこともできる。
なお、移動体300の一部分の移動及び回転を制御する場合、図22に示すように、撮像部110は、例えば、ロボットアーム300Dで把持される物体を撮像するように、ロボットアーム300Dの先端等に設置されてもよい。画像処理部120は、把持しようとする物体の三次元形状やその物体が置かれている位置を推定する。これにより、物体の正確な把持動作を行うことができる。
制御信号生成部301は、撮像装置100から出力される被写体の位置に基づいて、駆動機構302を制御するための制御信号を出力する。駆動機構302は、制御信号により、移動体300または移動体の一部分を駆動する。駆動機構302は、例えば、移動体300またはその一部分の移動、回転、加速、減速、推力(揚力)の加減、進行方向の転換、通常運転モードと自動運転モード(衝突回避モード)の切り替え、及びエアバック等の安全装置の作動のうちの少なくとも一つを行う。駆動機構302は、例えば、被写体までの距離が閾値未満である場合、移動、回転、加速、推力(揚力)の加減、物体に近寄る方向への方向転換、及び自動運転モード(衝突回避モード)から通常運転モードへの切り替えのうちの少なくとも一つを行ってもよい。
自動車300Aの駆動機構302は、例えばタイヤである。ドローン300Bの駆動機構302は、例えばプロペラである。移動ロボット300Cの駆動機構302は、例えば脚部である。ロボットアーム300Dの駆動機構302は、例えば撮像部110が設けられた先端を支持する支持部である。
移動体300は、更に画像処理部120からの被写体の位置に関する情報(距離情報)が入力されるスピーカやディスプレイを備えていてもよい。スピーカやディスプレイは、被写体の位置に関する音声または画像を出力する。スピーカやディスプレイは、撮像装置100と有線または無線で接続されている。更に、移動体300は、画像処理部120からの被写体の位置に関する情報が入力される発光部を有していてもよい。発光部は、例えば、画像処理部120からの被写体の位置に関する情報に応じて点灯したり消灯したりする。
別の例として、例えば、移動体300がドローンである場合、上空から、地図(物体の三次元形状)の作成、ビルや地形の構造調査、ひび割れや電線破断等の点検等が行われる際に、撮像部110は対象を撮影した画像を取得し、被写体との距離が閾値以上であるか否かを判定する。制御信号生成部301は、この判定結果に基づいて、点検対象との距離が一定になるようにドローンの推力を制御するための制御信号を生成する。ここで、推力には揚力も含まれる。駆動機構302が、この制御信号に基づいてドローンを動作させることにより、ドローンを点検対象に並行して飛行させることができる。移動体300が監視用のドローンである場合、監視対象の物体との距離を一定に保つようにドローンの推力を制御するための制御信号を生成してもよい。
また、ドローンの飛行時に、撮像部110は地面方向を撮影した画像を取得し、地面との距離が閾値以上であるか否かを判定する。制御信号生成部301は、この判定結果に基づいて、地面からの高さが指定された高さになるようにドローンの推力を制御するための制御信号を生成する。駆動機構302が、この制御信号に基づいてドローンを動作させることにより、ドローンを指定された高さで飛行させることができる。農薬散布用ドローンであれば、ドローンの地面からの高さを一定に保つことで、農薬を均等に散布しやすくなる。
また、移動体300がドローンまたは自動車である場合、ドローンの連係飛行や自動車の連隊走行時に、撮像部110は、周囲のドローンや前方の自動車を撮影した画像を取得し、当該ドローンや自動車までの距離が閾値以上であるか否かを判定する。制御信号生成部301は、この判定結果に基づいて、その周囲のドローンや前方の自動車との距離が一定になるように、ドローンの推力や自動車の速度を制御するための制御信号を生成する。駆動機構302が、この制御信号に基づいてドローンや自動車を動作させることにより、ドローンの連係飛行や自動車の連隊走行を容易に行うことができる。移動体300が自動車である場合、ドライバーが閾値を設定できるように、ユーザインタフェースを介してドライバーの指示を受理することで、閾値を変化させてもよい。これにより、ドライバーが好む車間距離で自動車を走行させられる。あるいは、前方の自動車との安全な車間距離を保つために、自動車の速度に応じて閾値を変化させてもよい。安全な車間距離は、自動車の速度によって異なる。そこで、自動車の速度が速いほど閾値を長く設定することができる。また、移動体300が自動車である場合に、進行方向の所定の距離を閾値に設定しておき、その閾値の手前に物体が現れた場合にブレーキが自動で作動したり、エアバック等の安全装置が自動で作動したりするための制御信号を生成するように制御信号生成部301を構成するとよい。この場合、自動ブレーキやエアバック等の安全装置が駆動機構302に設けられる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。