本発明のカメラモジュールは、それぞれが少なくとも1枚のレンズを含む複数のレンズ部と、前記複数のレンズ部に一対一に対応し、対応する前記レンズ部の光軸方向に対して略垂直な受光面をそれぞれ備える複数の撮像領域と、前記複数の撮像領域からそれぞれ出力される複数の撮像信号が入力される撮像信号入力部と、前記複数の撮像信号のうちの少なくとも1つの撮像信号を複数のブロックに分割するブロック分割部と、前記撮像信号を用いて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算する視差演算部と、前記視差に基づいて前記複数の撮像信号を補正し画像を合成する視差補正部と、を有する。
物体像の位置は、被写体距離に応じて相対的に変化する。すなわち、被写体距離が小さくなると、視差が大きくなる。そのため、距離が異なる複数の被写体を同時に撮像すると、被写体毎に視差が異なる。本発明のカメラモジュールによれば、ブロック毎の視差を演算し、このブロック毎の視差に基づき視差の影響が低減するように撮像信号を補正した後、画像合成する。これにより、距離が異なる複数の被写体を同時に撮像するときにおいても、適宜それぞれの被写体の視差を補正して、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記複数のレンズ部と前記複数の撮像領域との相対距離を変化させるアクチュエータと、前記視差に基づきアクチュエータを制御する焦点制御部と、を更に有することが好ましい。
この好ましい構成によれば、視差に基づきアクチュエータを動作させ、自動焦点制御することにより、1回のアクチュエータ動作で合焦させることができるので、高速に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいてコントラストを演算するコントラスト演算部を更に有し、前記焦点制御部は、前記視差と前記コントラストとに基づき前記アクチュエータを制御することが好ましい。
この好ましい構成によれば、高速な視差に基づく自動焦点制御と高精度なコントラストに基づく自動焦点制御とを併用するので、高速で高精度に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記焦点制御部は、前記アクチュエータを複数回制御し、初回は前記視差に基づき前記アクチュエータを制御し、2回目以降は前記コントラストに基づき前記アクチュエータを制御することが好ましい。
この好ましい構成によれば、最初に視差に基づいてアクチュエータを動作させ自動焦点制御を行う。続いて、コントラストに基づいてアクチュエータを動作させ自動焦点制御を行う。視差に基づく自動焦点制御は、1回のアクチュエータ動作で合焦するため、高速である。一方、コントラストに基づく自動焦点制御は、画像から直接合焦を判断するため、アクチュエータのばらつきなどに左右されず、精度がよい。したがって、最初に視差に基づく自動焦点制御により高速に粗調整し、次いでコントラストに基づく自動焦点制御により高精度な微調整をするので、高速で高精度に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記焦点制御部は、前記コントラストに基づき前記アクチュエータを制御したときの前記アクチュエータに対する操作量を学習することが好ましい。
この好ましい構成によれば、コントラストに基づく自動焦点制御において実行したアクチュエータ操作量に基づき、操作量関数を補正するような学習を行う。これにより、アクチュエータのばらつきなどがあっても操作量関数がより正確に補正されるので、初回の視差に基づく自動焦点制御がより正確になり、次回以降のコントラストに基づく自動焦点制御による微調整の回数が減少するため、より高速な自動焦点制御を実現できる。
上記の本発明のカメラモジュールにおいて、前記ブロック分割部は、前記少なくとも1つの撮像信号に基づいて複数の画像領域の輪郭を検出し、前記輪郭により前記複数の画像領域に分割されるように、前記少なくとも1つの撮像信号を複数のブロックに分割することが好ましい。
この好ましい構成によれば、輪郭を検出し、ブロックに分割し、ブロック毎の視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。これにより、適切にブロック化を行うことができるので、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号に基づいて前記輪郭の視差である輪郭視差を求める輪郭視差演算部が付加され、前記視差演算部は、前記輪郭視差に基づいて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算することが好ましい。
この好ましい構成によれば、輪郭の視差を検出し、この視差に基づきブロックごとに視差の視差を演算し、この視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。従って、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記ブロック分割部は、前記少なくとも1つの撮像信号を矩形状の複数のブロックに分割することが好ましい。
この好ましい構成によれば、ブロックごとに視差の視差を演算し、この視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。従って、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号に基づき前記複数のブロックごとに前記視差の精度を示す少なくとも1つの視差精度評価値を演算する視差評価値演算部を更に有し、前記視差補正部は、前記複数のブロックごとに前記視差と前記視差精度評価値とに基づいて前記複数の撮像信号を補正し画像を合成することが好ましい。
分割したブロック内に被写体距離が異なる複数の物体が含まれることがあり、その場合、物体像毎に視差が異なる。この好ましい構成では、ブロック毎に演算した視差がどれだけ精度があるかを判断し、この精度に基づき撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記複数のブロックごとに前記視差精度評価値に基づき当該ブロックを少なくとも2つに分割するかどうかを決定し、分割すべきと判断されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを判断し、精度がないブロックは複数の視差が混在するとし少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいて前記複数のブロックごとにコントラストの大きさを示す第1の視差精度評価値を演算することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかをコントラストによって演算評価し、コントラストによって撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数のブロックに分割された前記撮像信号を用いて、前記複数のブロックごとに、少なくとも2つの前記レンズ部がそれぞれ形成する像を前記視差だけ移動した像がどれだけ相関があるかを示す第2の視差精度評価値を演算することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関があるかを演算評価し、相関によって撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記複数のブロックごとに前記第2の視差精度評価値が小さいとき当該ブロックを少なくとも2つに分割し、分割されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関であるかを示す第2の視差精度評価値を用いて評価する。そして、第2の視差精度評価値が小さい、すなわち相関が小さいと判断されたブロックは少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいて前記複数のブロックごとにコントラストの大きさを示す第1の視差精度評価値と、前記複数のブロックに分割された前記撮像信号を用いて、前記複数のブロックごとに、少なくとも2つの前記レンズ部がそれぞれ形成する像を前記視差だけ移動した像がどれだけ相関があるかを示す第2の視差精度評価値を演算し、前記視差補正部は、前記複数のブロックごとに前記第1の視差精度評価値が大きくかつ前記第2の視差精度評価値が小さいとき当該ブロックを少なくとも2つに分割し、分割されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎にコントラストの大きさを示す第1の視差精度評価値と演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関であるかを示す第2の視差精度評価値とを用いて評価する。そして、第1の視差精度評価値が大きい、すなわちコントラストが大きい、かつ第2の視差精度評価値が小さい、すなわち相関が小さいと判断されたブロックは少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号入力部は、前記複数の撮像信号を複数のフィールドごとに入力し、前記視差演算部は、前記複数のフィールドのそれぞれについて、前記ブロック毎の視差を演算することが好ましい。
この好ましい構成によれば、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求められ、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、上記の好ましい構成において、前記複数のレンズ部に一対一に対応し、複数色のフィルタが配置されたカラーフィルタをさらに備え、前記複数のレンズ部のうち、前記フィールドの走査方向に平行に配置された少なくとも2つのレンズ部に対応して、同色のフィルタが配置されていることがさらに好ましい。
このさらに好ましい構成によれば、動く被写体の撮影時に各フィールドの撮影時間が異なることにより、各フィールドの画像が異なる場合においても、各フィールドごとの視差をより正確に求めることができる。
上記の本発明のカメラモジュールにおいて、撮影画像とは異なる別画像を保存する別画像保存部を更に有し、前記視差補正部は、前記視差に基づき前記撮像信号を補正した画像と前記別画像とを組み合わせることが好ましい。
この好ましい構成によれば、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から正しく画像を抽出できるため、きれいにこれらの画像を組み合わせることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記視差が大きいほど前記撮像信号を補正した画像の割合を大きく前記別画像の割合を小さくなるように組み合わせることが好ましい。
この好ましい構成によれば、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。
また、本発明にかかる電子機器は、上記の本発明のカメラモジュールを備えたことを特徴とする。
また、本発明にかかるプログラムは、それぞれが少なくとも1枚のレンズを含む複数のレンズ部と、前記複数のレンズ部に一対一に対応し、対応する前記レンズ部の光軸方向に対して略垂直な受光面をそれぞれ備える複数の撮像領域と、前記複数の撮像領域からそれぞれ出力される複数の撮像信号が入力される撮像信号入力部と、入力された撮像信号の画像処理を行う画像処理部とを備えたカメラモジュールにおいて、前記画像処理部の動作を制御するプログラムであって、前記複数の撮像信号のうちの少なくとも1つの撮像信号を複数のブロックに分割するブロック分割処理と、前記撮像信号を用いて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算する視差演算処理と、前記視差に基づいて前記複数の撮像信号を補正し画像を合成する視差補正処理とを、前記画像処理部に実行させることを特徴とする。
また、本発明にかかるプログラム記録媒体は、上記のプログラムを記録した、コンピュータによる読み取りが可能なプログラム記録媒体である。
本発明のプログラムまたはプログラム記録媒体によれば、ブロック毎の視差を演算し、このブロック毎の視差に基づき、視差の影響が低減するように撮像信号を補正した後、画像合成する。これにより、距離が異なる複数の被写体を同時に撮像するときにおいても、適宜それぞれの被写体の視差を補正して、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
以下、本発明の具体的な実施の形態について、図面を用いて説明する。
(実施の形態1)
本発明の実施の形態1に係るカメラモジュールは、エッジを検出し、ブロックに分割し、ブロック毎の視差に基づき視差補正することにより、全画像領域できれいな画像を得る。また、視差に基づく自動焦点制御により粗調整を行い、高精度なコントラストに基づく自動焦点制御により微調整を行うことにより、高速で高精度に自動焦点制御できる。また、微調整量を学習し、次回の粗調整の精度を向上する。
本発明の実施の形態1に係るカメラモジュールについて、図面を参照しながら説明する。
図1は、本発明の実施の形態1に係るカメラモジュールの構成を示す断面図である。図1において、カメラモジュール101は、レンズモジュール部110、および回路部120を有する。
レンズモジュール部110は、鏡筒111、上部カバーガラス112、レンズ113、アクチュエータ固定部114、およびアクチュエータ可動部115を有する。回路部120は、基板121、パッケージ122、撮像素子123、パッケージカバーガラス124、およびシステムLSI(以下、SLSIと記す)125を有する。
鏡筒111は、円筒状であり、その内壁面は光の乱反射を防止するためにつやが消された黒色であり、樹脂を射出成形し形成される。上部カバーガラス112は、円盤状であり、透明樹脂から形成され、鏡筒111の上面に接着剤などにより固着され、その表面は摩擦などによる損傷を防止する保護膜と、入射光の反射を防止する反射防止膜とが設けられている。
図2は、本発明の実施の形態1に係るカメラモジュールのレンズ113の上面図である。レンズ113は、略円盤状であり、ガラスや透明樹脂から形成され、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dが碁盤目状に配置される。第1〜第4のレンズ部113a〜113dの配置方向に沿って、図2に示すようにX軸及びY軸を設定する。第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dにおいて、被写体側から入射した光は、撮像素子123側へ射出し、撮像素子123上に4つの像を結像する。
アクチュエータ固定部114は、鏡筒111の内壁面に接着剤などにより固着される。アクチュエータ可動部115は、レンズ113の外周縁に接着剤などにより固着される。アクチュエータ固定部114およびアクチュエータ可動部115は、ボイスコイルモータを構成する。アクチュエータ固定部114は永久磁石(図示せず)と強磁性体ヨーク(図示せず)とを有し、アクチュエータ可動部115はコイル(図示せず)を有する。アクチュエータ可動部115は、アクチュエータ固定部114に対し、弾性体(図示せず)により弾性支持される。アクチュエータ可動部115のコイルに通電することにより、アクチュエータ可動部115がアクチュエータ固定部114に対して相対的に移動し、レンズ113と撮像素子123との光軸に沿った相対距離が変化する。
基板121は、樹脂基板から構成され、上面に鏡筒111がその底面を接して接着剤などにより固着される。このようにして、レンズモジュール部110と回路部120とが固定され、カメラモジュール101を構成する。
パッケージ122は、金属端子を有する樹脂からなり、鏡筒111の内側において、基板121の上面にその金属端子部が半田づけ等されて固着される。撮像素子123は、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子124dから構成される。第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子124dは、それぞれCCDセンサやCMOSセンサのような固体撮像素子であり、これらの受光面の中心が、それぞれ第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dの光軸中心と略一致するように、また各撮像素子の受光面が対応するレンズ部の光軸と略垂直になるようにして配置される。
第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各端子は、パッケージ122の内側の底部の金属端子にワイヤーボンディングにより金線127で接続され、基板121を介して、SLSI125と電気的に接続される。第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面に、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dから射出された光がそれぞれ結像し、フォトダイオードにより光の情報から変換された電気の情報が、SLSI125に出力される。
図3は、本発明の実施の形態1に係るカメラモジュールの回路部120の上面図である。パッケージカバーガラス124は、平板状であり、透明樹脂により形成され、パッケージ122の上面に接着などにより固着される。パッケージカバーガラス124の上面には、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、第4のカラーフィルタ124d、および遮光部124eが蒸着などにより配置される。また、パッケージカバーガラス124の下面には、赤外遮断フィルタ(図示せず。以下、IRフィルタと記す)が蒸着などにより配置される。
図4は、本発明の実施の形態1に係るカメラモジュールのカラーフィルタの特性図であり、図5は、本発明の実施の形態1に係るカメラモジュールのIRフィルタの特性図である。第1のカラーフィルタ124aは、図4のGで示した主に緑色を透過する分光透過特性を有し、第2のカラーフィルタ124bは、図4のBで示した主に青色を透過する分光透過特性を有し、第3のカラーフィルタ124cは、図4のRで示した主に赤色を透過する分光透過特性を有し、第4のカラーフィルタは、図4のGで示した主に緑色を透過する分光透過特性を有する。また、IRフィルタは、図5のIRで示した赤外光を遮断する分光透過特性を有する。
したがって、第1のレンズ部113aの上部から入射した物体光は、第1のレンズ部113aの下部から射出され、第1のカラーフィルタ124aおよびIRフィルタにより主に緑色が透過し、第1の撮像素子123aの受光部に結像するため、第1の撮像素子123aは物体光のうち緑色成分を受光する。また、第2のレンズ部113bの上部から入射した物体光は、第2のレンズ部113bの下部から射出され、第2のカラーフィルタ124bおよびIRフィルタにより主に青色が透過し、第2の撮像素子123bの受光部に結像するため、第2の撮像素子123bは物体光のうち青色成分を受光する。また、第3のレンズ部113cの上部から入射した物体光は、第3のレンズ部113cの下部から射出され、第3のカラーフィルタ124cおよびIRフィルタにより主に赤色が透過し、第3の撮像素子123cの受光部に結像するため、第3の撮像素子123cは物体光のうち赤色成分を受光する。更に、第4のレンズ部113dの上部から入射した物体光は、第4のレンズ部113dの下部から射出され、第4のカラーフィルタ124dおよびIRフィルタにより主に緑色が透過し、第4の撮像素子123dの受光部に結像するため、第4の撮像素子123dは物体光のうち緑色成分を受光する。
SLSI125は、後述の方法で、アクチュエータ可動部115のコイルの通電を制御し、撮像素子123を駆動し、撮像素子123からの電気情報を入力し、各種画像処理を行い、上位CPUと通信を行い、外部に画像出力する。
次に、被写体距離と視差との関係を説明する。本発明の実施の形態1に係るカメラモジュールは、4つのレンズ部(第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113d)を有するため、4つのレンズ部がそれぞれ形成する4つの物体像の相対的位置が、被写体距離に応じて変化する。
図6は、本発明の実施の形態1に係るカメラモジュールにおいて、無限遠にある物体像の位置を説明するための図である。図6においては、簡単のため、第1のレンズ部113a、第1の撮像素子123a、第2のレンズ部113b、第2の撮像素子123bのみを記す。無限遠の物体10からの光の第1のレンズ部113aへの入射光L1と、第2のレンズ部113bへの入射光L2とは平行である。このため、第1のレンズ部113aと第2のレンズ部113bとの距離と、第1の撮像素子123a上の物体像11aと第2の撮像素子123b上の物体像11bとの距離は等しい。
ここで、第1のレンズ部113aの光軸、第2のレンズ部113bの光軸、第3のレンズ部113cの光軸、および第4のレンズ部113dの光軸が、それぞれ第1の撮像素子123aの受光面の中心、第2の撮像素子123bの受光面の中心、第3の撮像素子123cの受光面の中心、および第4の撮像素子123dの受光面の中心と略一致するように配置されている。従って、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面の中心と、各受光面にそれぞれ結像される無限遠の物体像との相対的位置関係は、全ての撮像素子について同一である。すなわち、視差はない。
図7は、本発明の実施の形態1に係るカメラモジュールにおいて、有限距離の位置にある物体像の位置を説明するための図である。図7において、簡単のため、第1のレンズ部113a、第1の撮像素子123a、第2のレンズ部113b、第2の撮像素子123bのみを記す。有限距離の物体12からの光の第1のレンズ部113aへの入射光L1と第2のレンズ部113bへの入射光L2とは平行ではない。従って、第1のレンズ部113aと第2のレンズ部113bとの距離に比べて、第1の撮像素子123a上の物体像13aと第2の撮像素子123b上の物体像13bとの距離は長い。そのため、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面の中心と、各受光面にそれぞれ結像される有限距離の物体像との相対的位置関係は、撮像素子ごとに異なる。すなわち、視差がある。
物体像12までの距離(被写体距離)をA、第1のレンズ部113aと第2のレンズ部113bとの距離をD、レンズ部113a,113bの焦点距離をfとすると、図7の直角を挟む2辺の長さがA、Dの直角三角形と、直角を挟む2辺の長さがf、Δの直角三角形とが相似であることより、視差Δは、下記式(1)のように表される。その他のレンズ部間についても同様の関係が成立する。このように、被写体距離に応じて4つのレンズ部113a,113b,113c,113dがそれぞれ形成する4つの物体像の相対的位置が変化する。例えば、被写体距離Aが小さくなると、視差Δが大きくなる。
Δ=f・D/A ・・・(1)
次に、コントラストと焦点距離との関係を説明する。
図8(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、合焦時(焦点調整が合っているとき)の画像とコントラスト評価値との関係を説明する図であり、図8(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、非合焦時(焦点調整が合っていないとき)の画像とコントラスト評価値との関係を説明する図である。
図8(A)及び図8(B)の各左図は、左半分が白色、右半分が黒色の矩形を撮影したときの画像である。図8(A)の左図のように、合焦時は、撮影画像の輪郭がはっきりし、コントラストが大きい。一方、図8(B)の左図のように、非合焦時は、撮影画像の輪郭がぼやけ、コントラストが小さい。
図8(A)及び図8(B)の各右図は、左図の情報信号にバンドパスフィルタ(BPF)を作用させたときの結果を示している。横軸はX軸方向位置であり、縦軸はBPF後の出力値である。図8(A)の右図のように、合焦時は、BPF後の信号振幅が大きく、図8(B)の右図のように、非合焦時はBPF後の信号振幅が小さい。ここで、このBPF後の信号振幅をどれだけコントラストが大きいかを示すコントラスト評価値と定義する。すると、図8(A)の右図のように、合焦時はコントラスト評価値が大きく、図8(B)の右図のように、非合焦時はコントラスト評価値が小さい。
図9は、本発明の実施の形態1に係るカメラモジュールのレンズ位置とコントラスト評価値との関係を説明する図である。ある物体を撮影するとき、レンズ113と撮像素子123との距離が小さいとき(z1のとき)、非合焦であるためコントラスト評価値が小さい。レンズ113と撮像素子123との距離を徐々に大きくすると、コントラスト評価値が徐々に大きくなり、合焦時(z2のとき)はコントラスト評価値が極大となる。さらに、レンズ113と撮像素子123との距離を徐々に大きくすると(z3のとき)、非合焦となり、コントラスト評価値が小さくなる。このように、合焦時において、コントラスト評価値は極大となる。
次に、本発明の実施の形態1に係るカメラモジュールの動作を説明する。図10は、本発明の実施の形態1に係るカメラモジュールのブロック図である。SLSI125は、システム制御部131、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部135、および入出力部136を有する。また、回路部120は、前述の構成に加えて、アンプ126を有する。
アンプ126は、アクチュエータ操作量出力部134からの出力に応じた電圧をアクチュエータ可動部115のコイルに印加する。
システム制御部131は、CPU(中央演算処理装置:Central Processing Unit)、メモリなどから構成され、SLSI125の全体を制御する。撮像素子駆動部132は、ロジック回路などから構成され、撮像素子123を駆動する信号を発生し、この信号に応じた電圧を撮像素子123に印加する。
撮像信号入力部133は、第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dから構成される。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、それぞれCDS回路(相関二重サンプリング回路:Correlated Double Sampling Circuit)、AGC(自動利得制御器:Automatic Gain Controller)、ADC(アナログ/ディジタル変換器:Analog Digital Converter)が直列に接続されて構成され、それぞれ第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dに接続され、これらからの電気信号が入力され、CDS回路により固定ノイズを除去し、AGCによりゲインを調整し、ADCによりアナログ信号からディジタル値に変換し、システム制御部131のメモリに書き込む。
アクチュエータ操作量出力部134は、DAC(デジタルディジタル/アナログ変換器:Digital Analog Converter)から構成され、アクチュエータ可動部115のコイルに印加すべき電圧に応じた電圧信号を出力する。
画像処理部135は、ロジック回路、またはDSP、あるいはこれらの両者を含んで構成され、システム制御部131のメモリ情報を利用し、所定のプログラム制御に従って各種画像処理を行う。画像処理部135は、エッジ検出部141、ブロック分割部142、視差演算部143、視差補正部144、視差式自動焦点制御部145、アクチュエータ制御部146、コントラスト式自動焦点制御部147、自動焦点制御用コントラスト評価値演算部148、およびアクチュエータ操作量関数補正部149を有する。
入出力部136は、上位CPU(図示せず)との通信や、上位CPU、外部メモリ(図示せず)、および液晶などの外部表示装置(図示せず)へ画像信号を出力する。
図11は、本発明の実施の形態1に係るカメラモジュールの動作を示すフローチャートである。SLSI125のシステム制御部131により、カメラモジュール101は、このフローチャートのとおりに動作される。
ステップS100において、動作を開始する。例えば、上位CPU(図示せず)が、シャッターボタンなどが押されたことを検知し、入出力部136を介し、カメラモジュールに動作の開始を命令することにより、カメラモジュール101は、動作を開始する。次に、ステップS110を実行する。
ステップS110において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS121を実行する。
ステップS121とステップS122とにおいて、エッジ検出部141は、システム制御部131のメモリ上データを利用し、エッジを検出する。そして、その結果をシステム制御部131のメモリに書き込む。詳細は以下の通りである。
ステップS121において、エッジ検出用コントラスト評価値を演算する。この演算は、第1の撮像信号のみについて行う。下記式(2)のように、ラプラシアンを演算し、さらに下記式(3)のように空間的にLPF(ローパスフィルタ)を作用させたものを、エッジ検出用コントラスト評価値C2(x,y)とする。図13(A)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明する元画像であり、図13(B)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明するエッジ検出用コントラスト評価値の画像である。式(2)(3)により、図13(A)の元画像のエッジ検出用コントラスト評価値C2(x,y)を計算すると、図13(B)のようになる。なお、図13(B)は、式(3)の絶対値が大きい場所を黒で表示している。次に、ステップS122を実行する。
C1(x,y)=I1(x−1,y)+I1(x+1,y)+I1(x,y−1)+I1(x,y+1)−4I1(x,y)
・・・(2)
C2(x,y)=C1(x−1,y−1)+C1(x,y−1)+C1(x+1,y−1)
+C1(x−1,y)+C1(x,y)+C1(x+1,y)
+C1(x−1,y+1)+C1(x,y+1)+C1(x+1,y+1)・・・(3)
ステップS122において、エッジを検出する。図13(C)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明するエッジの画像である。図13(B)のエッジ検出用コントラスト評価値C2(x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知することにより、図13(C)のようなエッジを検出できる。次に、ステップS130を実行する。
ステップS130において、ブロック分割部142は、システム制御部131のメモリ上のデータを利用し、ブロックに分割する。そして、その結果をシステム制御部131のメモリに書き込む。図13(C)のように、エッジに囲まれた領域にB0、B1、…、Bi、…、Bnのように番号を付与する。なお、ノイズなどによるエッジの誤検出や消失の防止のために、膨張アルゴリズムや収縮アルゴリズムを用いて、エッジを補正してもよい。次に、ステップS140を実行する。
ステップS140において、視差演算部143は、システム制御部131のメモリ上のデータを利用し、各ブロック毎の視差値を演算する。そして、システム制御部131のメモリに書き込む。まず、各ブロック(B0、B1、…、Bi、…、Bn)毎に、視差評価値(R0(k)、R1(k)、…、Ri(k)、…、Rn(k)。k=0、1、…、m)を演算する。図14は、本発明の実施の形態1に係るカメラモジュールにおいて、視差評価値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS130で求められたi番目のブロックである。I4で示される領域は、Biをx方向にkだけ、y方向にkだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x,y)について、下記式(4)に示される絶対値差分総和を視差評価値Ri(k)として演算する。
Ri(k)=ΣΣ|I1(x,y)−I4(x−k,y−k)| ・・・(4)
この視差評価値Ri(k)は、i番目のブロックBiの第1の画像信号I1と、x、y方向にそれぞれ(k、k)だけ離れた領域における第4の画像信号I4がどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。図15は、本発明の実施の形態1に係るカメラモジュールの視差と視差評価値との関係を説明する図である。図15のように、視差評価値Ri(k)はkの値によって変化し、k=Δiのとき極小値を持つ。これは、第4の画像信号I4のi番目のブロックBiをx、y方向にそれぞれ(−Δi、−Δi)だけ移動させて得られるブロックの画像信号は、第1の画像信号I1と最も相関がある(最も似ている)ことを示す。したがって、i番目のブロックについての第1の撮像信号I1と第4の撮像信号I4とのx、y方向の視差が(Δi、Δi)であることが分かる。以下、このΔiを、i番目のブロックBiの視差値Δiと呼ぶ。このように、i=0からi=nまでの全てのブロックBiの視差値Δiを求める。次に、ステップS151を実行する。
ステップS151とステップS152とにおいて、プレビュー用の画像を出力する。
ステップS151において、視差補正部144は、システム制御部131のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部131のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像信号123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像信号123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたため、下記式(5)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)、および第4の撮像信号I4(x−Δi,y−Δi)の平均とする。また、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、下記式(6)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x−Δi,y)とする。さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、下記式(7)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y−Δi)とする。なお、視差値Δiとしては、画素座標(x、y)を含むブロックBiの視差値Δiを利用する。次に、ステップS152を実行する。
G(x,y)=[I1(x,y)+I4(x−Δi,y−Δi)]/2 ・・・(5)
B(x,y)=I2(x−Δi,y) ・・・(6)
R(x,y)=I3(x,y−Δi) ・・・(7)
ステップS152において、画像を出力する。入出力部136は、システム制御部131のメモリ上のデータであるG(x,y),B(x,y),R(x,y)を、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。なお、G(x,y),B(x,y),R(x,y)の代わりに、例えば、輝度、色差信号などの出力を出力してもよい。また、ホワイトバランスやγ補正などの画像処理後の値を出力してもよい。次に、S161を実行する。
ステップS161とステップS162とS163とにおいて、視差値を用いた自動焦点制御を行う。
ステップS161において、視差式自動焦点制御部145は、システム制御部131のメモリ上のデータに基づき、自動焦点制御用ブロックを選択する。そして、その結果をシステム制御部131のメモリに書き込む。例えば画像領域の中心付近の少なくとも1つのブロック(例えば、3つのブロックBj1、Bj2、およびBj3)を選択する。なお、これらのブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを選択してもよい。次に、ステップS162を実行する。
ステップS162において、アクチュエータの位置指令を演算する。上記の例であれば、下記式(8)のように、ブロックBj1、Bj2、およびBj3の視差値Δj1、Δj2、およびΔj3の平均を自動焦点制御用視差値Δafとする。なお、ブロックの面積やより中心に近いかどうかなどの情報により、適宜重み付けしてもよい。さらに、下記式(9)のように、アクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きの位置の指令を示す。次に、ステップS163を実行する。
Δaf=(Δj1+Δj2+Δj3)/3 ・・・(8)
Xact=kx・Δaf ・・・(9)
ステップS163において、アクチュエータ制御部146は、下記式(10)で示した操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。また、後述の操作量関数の学習のために、アクチュエータ操作量をVact0として保存する。次に、ステップS164を実行する。
Vact=ka・Xact+kb ・・・(10)
Vact0=Vact ・・・(10’)
ステップS164において、アクチュエータを動作させる。アクチュエータ操作量出力部134は、アンプ126を介したのちアクチュエータ可動部115のコイル(図示せず)に印加される電圧がVactになるように出力する電圧信号を変更する。次に、ステップS171を実行する。
ステップS171とステップS172とステップS173とステップS174とステップS175とステップS176とにおいて、コントラスト式自動焦点制御部147は、コントラストを用いた自動焦点制御を行う。前述の図9ように、合焦位置ではコントラスト評価値が極大となる。この原理を用いて、コントラスト評価値が極大となるアクチュエータ操作量を探索する。
ステップS171において、アクチュエータ操作量の補正なしの自動焦点制御用コントラスト評価値を作成する。ステップS171は、ステップS171cとステップS171dとから成る。まず、ステップS171cを実行する。
ステップS171cにおいて、撮影を実行する。この動作は、ステップS110と同様であるが、第1の撮像素子123aからの撮像信号I1のうち、S161で選択された自動焦点制御用ブロックの撮像信号I1のみを転送しても良い。その場合、全ての撮像信号を転送することと比較し、転送時間を短縮できる。次に、ステップS171dを実行する。
ステップS171dにおいて、自動焦点制御用コントラスト評価値演算部148は、システム制御部131のメモリ上のデータを用いて、自動焦点制御用コントラスト評価値を作成する。この演算は、自動焦点制御用ブロックについての第1の撮像信号I1のみについて行う。下記式(11)のように、ラプラシアンの絶対値を演算し、下記式(12)のように空間的にLPF(ローパスフィルタ)を作用させ、これを下記式(13)のように自動焦点制御用ブロック内で平均して自動焦点用コントラスト評価値C5を得る。ここで、Nは、自動焦点制御用ブロック内のC4(x,y)の数である。そして、下記式(14)のように、このときのコントラスト評価値C5をC50として、システム制御部131のメモリに書き込む。次に、ステップS172を実行する。
C3(x,y)=|I1(x−1,y)+I1(x+1,y)+I1(x,y−1)+I1(x,y+1)−4I1(x,y)|
・・・(11)
C4(x,y)=C3(x−1,y−1)+C3(x,y−1)+C3(x+1,y−1)
+C3(x−1,y)+C3(x,y)+C3(x+1,y)
+C3(x−1,y+1)+C3(x,y+1)+C3(x+1,y+1) ・・・(12)
C5=ΣC4(x,y)/N ・・・(13)
C50=C5 ・・・(14)
ステップS172において、アクチュエータ操作量の正側補正時の自動焦点制御用コントラスト評価値を作成する。ステップS172は、ステップS172a、ステップS172b、ステップS172c、およびステップS172dから成る。まず、ステップS172aを実行する。
ステップS172aにおいて、下記式(15)のように、補正なし時のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)Vact0にdVactを加えたものを正側補正時のアクチュエータ操作量Vactとし、下記式(16)のように、Vactpとしてメモリに保存する。次に、ステップS172b、ステップS172c、およびステップS172dを実行する。
Vact=Vact0+dVact ・・・(15)
Vactp=Vact ・・・(16)
ステップS172bにおいて、アクチュエータを動作させ、ステップS172cにおいて、撮影を実行し、ステップS172dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップS172bはステップS164と同様な動作を行う。また、ステップS172c、ステップS172dは、ステップ171c、ステップS171dと同様な動作を行い、下記式(17)のように、コントラスト評価値C5を正側補正後の自動焦点用コントラスト評価値C5pとし、システム制御部131のメモリに書き込む。次に、ステップS173を実行する。
C5p=C5 ・・・(17)
ステップS173において、アクチュエータ操作量の負側補正時の自動焦点制御用コントラスト評価値を作成する。ステップS173は、ステップS173a、ステップS173b、ステップS173c、およびステップS173dから成る。まず、ステップS173aを実行する。
ステップS173aにおいて、下記式(18)のように、補正なし時のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)Vact0からdVactを減じたものを負側補正時のアクチュエータ操作量Vactとし、下記式(19)のように、Vactnとしてメモリに保存する。次に、ステップS173b、ステップS173c、およびステップS173dを実行する。
Vact=Vact0−dVact ・・・(18)
Vactn=Vact ・・・(19)
ステップS173bにおいて、アクチュエータを動作させ、ステップS173cにおいて、撮影を実行し、ステップS173dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(20)のように、コントラスト評価値C5を負側補正後の自動焦点用コントラスト評価値C5nとし、システム制御部131のメモリに書き込む。次に、ステップS174を実行する。
C5n=C5 ・・・(20)
ステップS174において、焦点制御用コントラスト評価値を評価する。C50、C5p、C5nを比較し、どれが最大値であるかによって分岐する。
C50が最大値のとき、以下の動作を行い、次にステップS181を実行する。図16(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、補正なし時にコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(A)のように、補正なしのアクチュエータ操作量Vact0が自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(21)のように、最終的なアクチュエータ操作量VactfをVact0とする。
Vactf=Vact0(C50が最大のとき) ・・・(21)
C5pが最大値のとき、以下の動作を行い、次にステップS175を実行する。図16(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、正側補正後のコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(B)のように、正側補正後のアクチュエータ操作量Vactp、あるいは、さらに正側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を正側に補正し、極大値を探索する。なお、下記式(22)のように、C5pを前回値としてC5ppとして保存する。
C5pp=C5p ・・・(22)
C5nが最大値のとき、以下の動作を行い、次にステップS176を実行する。図16(C)は、本発明の実施の形態1に係るカメラモジュールにおいて、負側補正後のコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(C)のように、負側補正後のアクチュエータ操作量Vactn、あるいは、さらに負側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を負側に補正し、極大値を探索する。なお、下記式(23)のように、C5nを前回値としてC5npとして保存する。
C5np=C5p ・・・(23)
ステップS175において、さらなる正側補正時の自動焦点用コントラスト評価値の作成と評価を行う。ステップS175は、ステップS175a、ステップS175b、ステップS175c、ステップS175d、およびステップS175eから成る。まず、ステップS175aを実行する。
ステップS175aにおいて、下記式(24)のように、前回の正側補正後のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)VactpにdVactを加えたものを正側補正時のアクチュエータ操作量Vactとし、下記式(25)のように、Vactpとしてメモリに保存する。次に、ステップS175b、ステップS175c、およびステップS175dを実行する。
Vact=Vactp+dVact ・・・(24)
Vactp=Vact ・・・(25)
ステップS175bにおいて、アクチュエータを動作させ、ステップS175cにおいて、撮影を実行し、ステップS175dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(26)のように、コントラスト評価値C5を正側補正後の自動焦点用コントラスト評価値C5pとして、システム制御部131のメモリに書き込む。次に、ステップS175eを実行する。
C5p=C5 ・・・(26)
ステップS175eにおいて、焦点制御用コントラスト評価値を評価する。C5pp、C5pを比較し、どれが最大値であるかによって分岐する。
C5ppが最大値のとき、以下の動作を行い、次にステップS181を実行する。図17(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる正側補正をしたとき、この正側補正前でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図17(A)のように、前回の正側補正後のアクチュエータ操作量Vactp−dVactが自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(27)のように、最終的なアクチュエータ操作量VactfをVactp−dVactとする。
Vactf=Vactp−dVact(C5ppが最大値のとき) ・・・(27)
C5pが最大値のとき、以下の動作を行い、次にステップS175aを実行する。図17(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる正側補正をしたとき、この正側補正後でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図17(B)のように、今回の正側補正後のアクチュエータ操作量Vactp、あるいは、さらに正側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を正側に補正し、極大値を探索する。なお、下記式(28)のように、C5pを前回値としてC5ppとして保存する。
C5pp=C5p ・・・(28)
ステップS176において、さらなる負側補正時の自動焦点用コントラスト評価値の作成と評価を行う。ステップS176は、ステップS176a、ステップS176b、ステップS176c、ステップS176d、およびステップS176eから成る。まず、ステップS176aを実行する。
ステップS176aにおいて、下記式(29)のように、前回の負側補正後のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)VactpからdVactを減じたものを負側補正時のアクチュエータ操作量Vactとし、下記式(30)のように、Vactnとしてメモリに保存する。次に、ステップS176b、ステップS176c、およびステップS176dを実行する。
Vact=Vactn−dVact ・・・(29)
Vactn=Vact ・・・(30)
ステップS176bにおいて、アクチュエータを動作させ、ステップS176cにおいて、撮影を実行し、ステップS176dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(31)のように、コントラスト評価値C5を負側補正後の自動焦点用コントラスト評価値C5nとして、システム制御部131のメモリに書き込む。次に、ステップS176eを実行する。
C5n=C5 ・・・(31)
ステップS176eにおいて、焦点制御用コントラスト評価値を評価する。C5np、C5nを比較し、どれが最大値であるかによって分岐する。
C5npが最大値のとき、以下の動作を行い、次にステップS181を実行する。図18(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる負側補正をしたとき、この負側補正前でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図18(A)のように、前回の負側補正後のアクチュエータ操作量Vactp+dVactが自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(32)のように、最終的なアクチュエータ操作量VactfをVactp+dVactとする。
Vactf=Vactp+dVact(C5npが最大値のとき) ・・・(32)
C5nが最大値のとき、以下の動作を行い、次にステップS176aを実行する。図18(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる負側補正をしたとき、この負側補正後でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図18(B)のように、今回の負側補正後のアクチュエータ操作量Vactn、あるいは、さらに負側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を負側に補正し、極大値を探索する。なお、下記式(33)のように、C5nを前回値としてC5npとして保存する。
C5np=C5n ・・・(33)
ステップS181とステップS182とステップS183とステップS184とステップS185とにおいて、最終的な撮影と画像出力を行う。
ステップS181において、下記式(34)のように、アクチュエータ操作量Vactとして、上記で得た最終的なアクチュエータ操作量Vactfを設定する。次に、ステップS182を実行する。
Vact=Vactf ・・・(34)
S182において、アクチュエータを動作させる。このステップは、ステップS164と同様に動作させる。次に、ステップS183を実行する。
ステップS183において、撮影を行う。このステップは、ステップS110と同様に動作させる。次に、ステップS184を実行する。
ステップS184において、各ブロックを、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。このステップは、ステップS151と同様に動作させる。次に、ステップS185を実行する。
ステップS185において、画像出力する。このステップは、S152と同様に動作させる。次に、ステップS190を実行する。
ステップS190において、アクチュエータ操作量関数補正部149は、コントラスト式自動焦点制御の補正値に基づき操作量関数を補正する。即ち、下記式(35)のように、操作量関数の係数kbを補正し、システム制御部131のメモリに書かれた値を変更する。次回の撮影時はこの値を利用する。次に、ステップS199を実行する。
kb=kb+kc・(Vactf−Vact0) ・・・(35)
ステップS199において、処理を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
第1の実施の形態のカメラモジュールでは、ステップS161、ステップS162、ステップS163、ステップS164のように、自動焦点制御用視差値Δafに基づきアクチュエータ位置指令Xactを作成し、アクチュエータ操作量Vactを演算し、アクチュエータ固定部114のコイルに電圧を印加しアクチュエータを動作させ、自動焦点制御する。このことにより、1回のアクチュエータ動作で合焦するため、高速に自動焦点制御できる。
また、第1の実施の形態のカメラモジュールでは、まず、ステップS161、ステップS162、ステップS163、ステップS164において、視差に基づきアクチュエータを動作させ自動焦点制御を行う。続いて、ステップS171、ステップS172、ステップS173、ステップS174、ステップS175、ステップS176において、コントラストに基づきアクチュエータを動作させ自動焦点制御を行う。視差に基づく自動焦点制御は、1回のアクチュエータ動作で合焦するため、高速である。一方、コントラストに基づく自動焦点制御は、画像から直接合焦を判断するため、アクチュエータのばらつきなどに左右されず、精度がよい。したがって、高速な視差に基づく自動焦点制御により粗調整し、高精度なコントラストに基づく自動焦点制御により微調整するため、高速で高精度に自動焦点制御できる。
また、第1の実施の形態のカメラモジュールでは、ステップS190において、コントラストに基づく自動焦点制御において補正されたアクチュエータ操作量(Vactf−Vact0)に基づき、操作量関数の係数kbを補正するような学習を行う。このことにより、アクチュエータのばらつきなどがあっても操作量関数をより正確に補正し、視差に基づく自動焦点制御がより正確になり、次回のコントラストに基づく自動焦点制御による微調整の回数を減少できるため、より高速な自動焦点制御を実現する。
式(1)のように被写体距離Aに応じて第1〜第4のレンズ部113a〜113dがそれぞれ形成する4つの物体像の相対的位置が変化する。すなわち、被写体距離Aが小さくなると、視差Δが大きくなる。そのため、距離が異なる複数の被写体を同時に撮影するとき、被写体毎に視差Δが異なる。第1の実施の形態のカメラモジュールでは、ステップS130において、全画像領域をブロックに分割し、ステップS140において、ブロック毎の視差を演算し、ステップS184において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
また、第1の実施の形態のカメラモジュールでは、ステップS121、ステップS122において、エッジを検出し、ステップS130において、ブロックに分割する。このことにより、適切にブロック化を行うことができるため、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
なお、第1の実施の形態のカメラモジュールにおいて、演算された視差をそのまま利用したが、適宜リミットしてもよい。レンズ特性よっては被写体距離Aがある値よりも小さいとき、画像が不鮮明となる。そのため、この値を被写体距離Aの最小値と定めれば、視差Δの最大値を定められる。この値よりも大きい視差は、誤差であるとして無視してもよい。また、このような場合、視差評価値が2番目に小さい値を視差として採用してもよい。
また、第1の実施の形態のカメラモジュールでは、視差を第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算したが、本発明はこれに限定されない。例えば、紫色の被写体は緑色成分が少なく、青色成分、赤色成分を多く含むため、第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算できない場合、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差を演算してもよい。また、第1の視差信号I1(主に緑色を示す)と第4の視差信号I4(主に緑色を示す)とから視差が演算不能であり、かつ、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差が演算不能であれば、視差の影響がないものとみなし、視差なしとすればよい。
また、第1の実施の形態のカメラモジュールをカメラに搭載するとき、上側に第2の撮像素子123aが、下側に第3の撮像素子123cが配置されるように、第1〜第4の撮像素子123a〜123dを配置することにより、上側が青色に敏感となり、下側が赤色に敏感となるので、風景写真の色再現をより自然にできる。
また、視差評価値に目立つ極値が2つあるときは、より大きい方の視差を採用してもよい。このようなブロックには、被写体と背景が含まれており、被写体距離と背景距離とが異なるため、極値が2つ現れる。背景距離と比較して被写体距離は小さいため、背景の視差と比較して被写体の視差は大きい。ここで、大きい方の視差を採用すれば、背景の視差の影響は低減できないが、画質に直接影響する被写体の視差の影響を低減できる。
また、画像出力のタイミングは、上記に限定されず、適宜プレビュー出力をしてもよい。例えば、ステップS110の撮影後、視差補正なしの画像を出力してもよい。また、ステップS130のブロック分割において、1つのブロックを分割した際にその結果を反映し、プレビュー画面を更新してもよい。
また、実施の形態1のカメラモジュールは、S164において視差によりアクチュエータを動作させ、その後S171、S172、S173、S175、S182においてコントラストによりアクチュエータを動作させるが、視差によりのみアクチュエータを動作させてもよい。焦点深度が深いレンズを利用した場合は、レンズと撮像素子の距離には多少の誤差が許容されるため、コントラストによりアクチュエータを動作させ、精度を向上する必要がないからである。
また、実施の形態1のカメラモジュールは、S190において補正量関数を補正する、すなわちコントラストに基づきアクチュエータを動作させたときの操作量に基づき学習を行うが、このステップが省略されてもよい。実施の形態1のカメラモジュールのアクチュエータは、ボイスコイル型であり、温度変化や姿勢変化によりレンズの移動量が変化するため、学習により精度が著しく向上するが、ステッピングモータを利用した場合には、温度変化や姿勢変化によりレンズ移動量の変化が小さいため、学習を省略してもよい。
また、視差による焦点制御を行うがアクチュエータを動作させない場合があってもよい。例えば、レンズと撮像素子の相対距離をあらかじめ無限遠を撮影時に合焦する距離とし、視差が小さいときはアクチュエータを動作させる必要がないとみなし、アクチュエータを動作させなくてもよい。
また、適宜、ブロック分割を繰り返し、ブロックを更新する動作を付加してもよい。例えば、実施の形態1において、S183のおいて撮影を行った後、S121、S122、およびS130を行いブロックを更新し、その後ステップS184において視差補正してもよい。
(実施の形態2)
本発明の実施の形態2に係るカメラモジュールは、複数画像のコントラストを用いてエッジの視差を検出し、この視差に基づき全画像領域の視差を演算し、この視差に基づき視差の影響を低減するように画像合成し視差補正することにより、全画像領域で視差の影響が低減されたきれいな画像を得る。
本発明の実施の形態2に係るカメラモジュールについて、図面を参照しながら説明する。
図19は、本発明の実施の形態2に係るカメラモジュールの構成を示す断面図である。カメラモジュール201の回路部220のSLSI225以外は、実施の形態1と同様であり、実施の携帯1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図20は、本発明の実施の形態2に係るカメラモジュールのブロック図である。SLSI225は、システム制御部231、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部235、および入出力部136を有する。また、回路部220は、前述の構成に加えて、アンプ126を有する。
システム制御部231は、CPU、メモリなどから構成され、SLSI225の全体を制御する。
画像処理部235は、ロジック回路、またはDSP、あるいは両者を含んで構成され、システム制御部231のメモリ情報を利用し、各種画像処理を行う。画像処理部235は、コントラスト演算部241、自動焦点制御部242、エッジ視差演算部243、全画像領域視差演算部244、視差補正部245を有する。
撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、入出力部136、およびアンプ126は、実施の形態1と同様であり、説明を省略する。
図21は、本発明の実施の形態2に係るカメラモジュールの動作を示すフローチャートである。SLSI225のシステム制御部231により、カメラモジュール201は、このフローチャートのとおりに動作する。
ステップS200において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタンなどが押されたことを検知し、入出力部136を介し、カメラモジュールに動作の開始を命令することにより、カメラモジュール201は、動作を開始する。次に、ステップS211を実行する。
ステップS211、ステップS212、ステップS213、ステップS214、ステップS215、ステップS216、およびステップS217において、複数回の撮影を行い、コントラスト評価値を演算し、撮像信号とコントラスト評価値を保存する。
ステップS211において、下記式(36)のように、カウンタiを初期化する。次に、ステップS212を実行する。
i=0 ・・・(36)
ステップS212において、アクチュエータ位置指令Xactを作成する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きの位置の指令を示す。次に、ステップS213を実行する。
Xact=kx2・i ・・・(37)
ステップS213において、下記式(38)のように、アクチュエータ位置指令Xactに基づき制御量関数を用いてアクチュエータ制御量Vactを演算する。次に、ステップS214を実行する。
Vact=ka・Xact+kb ・・・(38)
ステップS214において、アクチュエータを動作させる。この動作は、実施の形態1のステップS162の動作と同様であり、説明を省略する。次に、ステップS215を実行する。
ステップS215において、撮影を行い、撮像信号を保存する。システム制御部231の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(i,x,y)、第2の撮像信号I2(i,x,y)、第3の撮像信号I3(i,x,y)、および第4の撮像信号I4(i,x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図22は、本発明の実施の形態2に係るカメラモジュールの撮像信号の座標を説明する図である。I1(i,x,y)は、i番目に撮影された水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。また、iはカウンタであり、i+1回目の撮影の画像であることを示す。第2の撮像信号I2(i,x,y)、第3の撮像信号I3(i,x,y)、第4の撮像信号I4(i,x,y)も同様である。すなわち、I2(i,x,y)、I3(i,x,y)、およびI4(i,x,y)は、それぞれi+1番目に撮影された水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。また、iはカウンタであり、i+1回目の撮影の画像であることを示す。次に、ステップS126を実行する。
ステップS216において、コントラスト演算部241は、システム制御部231のメモリ上のデータを用いて、コントラスト評価値の演算と保存を行う。この演算は、第1の撮像信号I1についてのみ行う。下記式(39)のように、ラプラシアンを演算し、さらに下記式(40)のように空間的にLPF(ローパスフィルタ)を作用させたものをコントラスト評価値C2(i,x,y)とする。そして、これをシステム制御部231のメモリに書き込む。次に、ステップS217を実行する。
C1(i,x,y)=I1(i,x−1,y)+I1(i,x+1,y)+I1(i,x,y−1)+I1(i,x,y+1)−4I1(i,x,y)
・・・(39)
C2(i,x,y)=C1(i,x−1,y−1)+C1(i,x,y−1)+C1(i,x+1,y−1)
+C1(i,x−1,y)+C1(i,x,y)+C1(i,x+1,y)
+C1(i,x−1,y+1)+C1(i,x,y+1)+C1(i,x+1,y+1) ・・・(40)
ステップS217において、撮影枚数をチェックし、分岐する。まず、下記式(41)のように、カウンタiを1だけ増加させる,カウンタiが撮影枚数Npより小さければ、次にステップS212を実行する。カウンタiが撮影枚数Npに等しければ、次に、ステップS221を実行する。
i=i+1 ・・・(41)
ステップS221、およびステップS222において、自動焦点制御部242は、システム制御部231のメモリ上のデータを用いて、合焦位置で撮影された画像を選択する。
ステップS221において、自動焦点用ブロックを作成する。画像領域の中央付近の長方形状のブロックを自動焦点用ブロックとする。なお、このブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを作成してもよい。次に、ステップS222を実行する。
ステップS222において、合焦位置で撮影された画像を選択する。図9で説明したように、合焦位置で撮影された画像は、コントラストが極大となる。この原理に基づき、合焦位置で撮影された画像を選択する。まず、下記式(42)のように、各撮影におけるコントラスト評価値C2(i,x,y)の自動焦点用ブロックでの平均を自動焦点制御用コントラスト評価値C3とする。なお、Σは、自動焦点用ブロックでの総和を表す。次に、C3(i)のうちの最大値を与えるiを、合焦カウンタ値ipとし、合焦位置での画像を示す。次に、ステップS230を実行する。
C3(i)=|ΣC2(i,x,y)|/N ・・・(42)
ip:C3(i)で最大値を与えるi ・・・(43)
ステップS230において、エッジ視差演算部243は、システム制御部231のメモリ上のデータを用いて、エッジを検出し、その視差を検出する。実施の形態1のステップS122と同様に、合焦位置での画像を利用し、コントラスト評価値C2(ip,x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知する。
次に、エッジ上の点(xe,ye)について、(xe,ye)を中心とする長方形のブロックを設定し、撮影した全ての画像に対し、下記式(44)のように、コントラスト評価値C2(i,x,y)の絶対値の総和をC4(i,xe,ye)とする。ここで、Σは設定した長方形ブロックでの総和を表す。そして、図9で説明した原理に基づき、下記式(45)のように、エッジ上の点(xe,ye)での合焦位置を示すipe(xe,ye)をC4(i,xe,ye)の最大値を与えるiとする。ここで、式(9)、式(37)を利用し、エッジ上の点(xe,ye)での視差Δ(xe,ye)は、下記式(46)に表される。次に、ステップS240を実行する。
C4(i,xe,ye)=Σ|C2(i,x,y)| ・・・(44)
ipe(xe,ye):C4(i,xe,ye)で最大値を与えるi ・・・(45)
Δ(xe,ye)=(kx2/kx)ipe(xe,ye) ・・・(46)
ステップS240において、エッジ視差演算部244は、システム制御部231のメモリ上のデータを用いて、エッジ上の点(xe,ye)での視差Δ(xe,ye)から全画像領域での視差Δ(x,y)を演算する。ほぼ同一のエッジ上の視差Δ(xe,ye)で囲まれた領域の視差Δ(x,y)として、このエッジ上での視差Δ(xe,ye)を採用する。次に、ステップS250を実行する。
ステップS250において、視差補正部245は、システム制御部231のメモリ上のデータを用いて、全領域での視差Δ(x,y)を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部231のメモリに書き込む。第1の撮像素子123a、および第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像信号123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像信号123cは、主に 物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。(x、y)における第1の撮像素子123aと第4の撮像素子123dの視差が(Δ(x,y)、Δ(x,y))であると予測されたため、下記式(47)のように、(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(ip,x,y)、および第4の撮像信号I4(ip,x−Δ(x,y),y−Δ(x,y))の平均とする。また、(x、y)における第1の撮像素子123aと第2の撮像素子123bの視差が(Δ(x,y)、0)であると予測されたため、下記式(48)のように、(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(ip,x−Δ(x,y),y)とする。さらに、(x、y)における第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δ(x,y))であると予測されたため、下記式(49)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(ip,x,y−Δ(x,y))とする。次に、ステップS260を実行する。
G(x,y)=[I1(ip,x,y)+I4(ip,x−Δ(x,y),y−Δ(x,y))]/2 ・・・(47)
B(x,y)=I2(ip,x−Δ(x,y),y) ・・・(48)
R(x,y)=I3(ip,x,y−Δ(x,y)) ・・・(49)
ステップS260において、画像出力する。このステップは、実施の形態1のS152と同様に動作させる。次に、ステップS299を実行する。
ステップS299において、処理を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
複数画像のコントラストを用いてエッジの視差を検出し、この視差に基づき全画像領域の視差を演算し、この視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
なお、実施の形態2のカメラモジュールにおいて、エッジの視差を複数回の撮影のコントラスト評価値を用いて求めたが、本発明はこれに限定されない。例えば、求めるエッジ上の点を中心とするブロックを設定し、実施の形態1で用いた方法でこのブロックの視差を求め、この視差を採用してもよい。また、エッジ上の点の幾つかを合体させ、点ではなく、線として視差を演算してもよい。また、線状のエッジを端点や分岐点において分割し複数の線分とし、その視差を演算してもよい。また、この線分の周りを含むブロックを作成し、実施の形態1で用いた方法でこのブロックの視差を求めてよい。また、コントラスト評価値から求めた視差と実施の形態1で用いた方法で求めた視差を組み合わせてもよい。例えば、平均の視差を用いたり、アクチュエータ操作量関数の係数を学習してもよい。
また、実施の形態1および実施の形態2において、エッジ情報によりブロックに分割したが、本発明はこれに限定されない。例えば、複数の矩形ブロックに分割してもよい。
(実施の形態3)
本発明の実施の形態3に係るカメラモジュールは、撮像領域をブロックに分割し、ブロック毎の視差を演算し、ブロック毎に演算したコントラスト値と視差だけ移動した像の相関とに基づき視差を評価する。相関が大きくコントラストが大きいときは、求めた視差が正しいと判断し、視差に基づき通常の視差補正を行う。そして、相関が小さくコントラストが小さいときは求めた視差が低精度である判断し、低コントラスト用の視差補正を行う。さらに、相関が小さくコントラストが大きいときは、複数の距離の被写体が含まれるため求めた視差が正しくないと判断し、ブロックを再分割する。このようにして、全画像領域できれいな画像を得る。
以下、本発明の実施の形態3に係るカメラモジュールについて、図面を参照しながら説明する。
図23は、本発明の実施の形態3に係るカメラモジュールの構成を示す断面図である。カメラモジュール301の回路部320のSLSI325以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図24は、本発明の実施の形態3に係るカメラモジュールのブロック図である。SLSI225は、システム制御部331、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部335、および入出力部136を有する。また、回路部320は、前述の構成に加えて、アンプ126を有する。
画像処理部335は、ロジック回路、またはDSP(ディジタル信号プロセッサ:Digital Signal Processor)、あるいはこれらの両者を含んで構成され、システム制御部331のメモリ情報を利用し、各種画像処理を行う。画像処理部335は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、および低相関用視差補正部349を有する。
図25は、本発明の実施の形態3に係るカメラモジュールの動作を示すフローチャートである。SLSI325のシステム制御部331により、カメラモジュール301は、このフローチャートのとおりに動作する。
ステップS3000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール301に動作の開始を命令することにより、カメラモジュール301は、動作を開始する。次に、ステップS3100を実行する。
ステップS3100において、自動焦点制御部341は、自動焦点制御を実行する。図26は、本発明の実施の形態3に係る自動焦点制御の動作を示すフローチャートである。図26のフローチャートは、ステップS3100の動作の詳細を示す。
ステップS3100の自動焦点制御では、まず、ステップS3121を実行する。
ステップS3121において、カウンタiを0に初期化する。次に、ステップS3122を実行する。
ステップS3122において、アクチュエータの位置指令を演算する。下記式(50)のように、カウンタiを用いてアクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きが正である位置の指令を示す。ここで、kxは、設定された値である。次に、ステップS3123を実行する。
Xact=kx・i ・・・(50)
ステップS3123において、下記式(51)で示した操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。ここで、ka、およびkbは、それぞれ設定された値である。次に、ステップS3124を実行する。
Vact=ka・Xact+kb ・・・(51)
ステップS3124において、アクチュエータを動作させる。アクチュエータ操作量出力部134は、アンプ126を介したのちアクチュエータ可動部115のコイル(図示せず)に印加される電圧がVactになるように、出力する電圧信号を変更する。次に、ステップS3125を実行する。
ステップS3125において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS3126を実行する。
ステップS3126において、自動焦点制御用ブロックを設定する。画像領域の中心付近の矩形状の領域を自動焦点制御用ブロックとする。なお、このブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを設定してもよい。なお、単一のブロックではなく複数のブロックを選択し、複数のブロックにおいて後述の自動焦点制御用コントラスト評価値の平均を用いてもよい。また、複数のブロックにおいて後述の自動焦点制御用コントラスト評価値を演算し、後に少なくとも1つのブロックを自動焦点制御用ブロックとして選択してもよい。次に、ステップS3127を実行する。
ステップS3127において、システム制御部331のメモリ上のデータを用いて、自動焦点制御用コントラスト評価値を作成する。この演算は、第1の撮像信号I1の自動焦点制御用ブロックの画素についで行う。下記式(52)のように、x方向とy方向の2階微分の和であるラプラシアンの絶対値を演算し、下記式(53)のように空間的にLPF(ローパスフィルタ。Low Pass Filter)を作用させ、これを下記式(54)のように自動焦点制御用ブロック内で平均して自動焦点用コントラスト評価値C3を得る。ここで、Nafは、自動焦点制御用ブロックの画素数である。次に、ステップS3128を実行する。
C1(x,y)=|I1(x−1,y)+I1(x+1,y)+I1(x,y−1)+I1(x,y+1)−4I1(x,y)|
・・・(52)
C2(x,y)=C1(x−1,y−1)+C1(x,y−1)+C1(x+1,y−1)
+C1(x−1,y)+C1(x,y)+C1(x+1,y)
+C1(x−1,y+1)+C1(x,y+1)+C1(x+1,y+1) ・・・(53)
C3=ΣC2(x,y)/Naf ・・・(54)
ステップS3128において、下記式(55)のように、コントラスト評価値C3をC3(i)として、システム制御部331のメモリに書き込む。次に、ステップS3129を実行する。
C3(i)=C3 ・・・(55)
ステップS3129において、下記式(56)のように、カウンタiに1を加える。次に、ステップS3130を実行する。
i=i+1 ・・・(56)
ステップS3130において、カウンタiをしきい値Safと比較し、その結果により分岐する。カウンタiがしきい値Safより小さいとき(ステップS3130の比較結果がY)、次に、ステップ3122を実行する。一方、カウンタiがしきい値Saf以上のとき(ステップS3130の比較結果がN)、次に、ステップS3140を実行する。このように、ステップS3121においてカウンタiを0に初期化し、ステップS3129においてカウンタiに1を加え、ステップS3130においてカウンタiで分岐を行うことにより、S3122からS3128までの処理をSaf回だけ繰り返す。
ステップS3140において、コントラスト評価値C3の評価を行う。図9のように、合焦位置では、コントラスト評価値C3が最大となる。下記式(57)のように、この最大値を与えるカウンタ値iを、コントラスト最大値を与えるカウンタ値iafとする。次に、ステップS3151を実行する。
iaf=C3の最大値を与えるi ・・・(57)
ステップS3151において、アクチュエータの位置指令を演算する。下記式(58)のように、コントラスト最大値を与えるカウンタ値iafを用いてアクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きが正の位置の指令を示す。次に、ステップS3152を実行する。
Xact=kx・iaf ・・・(58)
ステップS3152において、操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。この動作は、ステップS3123と同様であり、説明を省略する。次に、ステップS3153を実行する。
ステップS3153において、アクチュエータを動作させる。この動作は、ステップS3124と同様であり、説明を省略する。次に、ステップS3160を実行する。
ステップS3160において、自動焦点制御を終了し、メインルーチンへ戻る。従って、次に、図25のステップS3200を実行する。
ステップS3200において、視差補正を実行する。図27は、本発明の実施の形態1に係る視差補正の動作を示すフローチャートである。図27のフローチャートは、ステップS3200の動作の詳細を示す。
ステップS3200の視差補正では、まず、ステップS3220を実行する。
ステップS3220において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS3230を実行する。
ステップS3230において、ブロック分割部342は、システム制御部331のメモリ上のデータを利用し、ブロック分割を行う。そして、その結果をシステム制御部331のメモリに書き込む。図28は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロック分割を説明する図である。図28のように、第1の撮像信号I1を、横方向にM個のブロックに、縦方向にN個のブロックに、総数でM×N個に分割し、それぞれのブロックをBiで示す。ここで、iは0からM×N−1まで変化する。次に、ステップS3240を実行する。
ステップS3240において、視差演算部343は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差値を演算する。そして、システム制御部331のメモリに書き込む。まず、各ブロック(B0、B1、…、Bi、…、BMN−1)毎に、視差評価値(R0(k)、R1(k)、…、Ri(k)、…、RMN−1(k)。k=0、1、…、kmax)を演算する。図29は、本発明の実施の形態3に係るカメラモジュールにおいて、視差評価値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS3230で求められたi番目のブロックである。I4で示される領域は、Biからx方向にkだけ、y方向にkだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x−k,y−k)について、下記式(59)に示される絶対値差分総和を視差評価値Ri(k)として演算する。
Ri(k)=ΣΣ|I1(x,y)−I4(x−k,y−k)| ・・・(59)
この視差評価値Ri(k)は、i番目のブロックBiの第1の画像信号I1と、x、y方向にそれぞれ(k、k)だけ離れた領域における第4の画像信号I4がどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。図15のように、視差評価値Ri(k)はkの値によって変化し、k=Δiのとき極小値を持つ。これは、第4の画像信号I4のi番目のブロックBiをx、y方向にそれぞれ(−Δi、−Δi)だけ移動させて得られる画像信号は、第1の画像信号I1と最も相関がある(最も似ている)ことを示す。したがって、i番目のブロックBiについての第1の撮像信号I1と第4の撮像信号I4とのx、y方向の視差が(Δi、Δi)であることが分かる。以下、このΔ(i,j)を、i番目のブロックB(i,j)の視差値Δ(i,j)と呼ぶ。このように、i=0からi=M×N−1までBiの視差値Δiを求める。次に、ステップS3251を実行する。
ステップS3251において、相関演算部344は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差精度評価用相関値を演算する。そして、結果をシステム制御部131のメモリに書き込む。図30は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用相関値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS1230で求められたi番目のブロックである。I4で示される領域は、Biをx方向にΔiだけ、y方向にΔiだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x−Δi,y−Δi)について、下記式(60)のように、視差精度評価用相関値R2iとする。ここで、ΣΣはブロックBi内での総和を示し、avgはブロックBi内での加算平均を示す。次に、ステップS3252を実行する。
R2i=ΣΣ{I1(x,y)−avg(I1(x,y))}×{I4(x−Δi,y−Δi)−avg(I4(x−Δi,y−Δi))}
/√ΣΣ{I1(x,y)−avg(I1(x,y))}2
/√ΣΣ{I4(x−Δi,y−Δi)−avg(I4(x−Δi,y−Δi))}2 ・・・(60)
ステップS3252において、視差精度評価用相関値R2iに基づき各ブロックBiごとの視差補正方式を選択する。下記式(61)のように、視差精度評価用相関値R2iがしきい値R20より大きいとき、視差補正方式フラッグFiに通常視差補正を示す1を代入し、システム制御部331のメモリに保存する。次に、ステップS3261を実行する。
Fi=1 (R2i>R20) ・・・(61)
ステップS3261において、コントラスト演算部345は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差精度評価用コントラスト値を演算する。そして、システム制御部331のメモリに書き込む。下記式(62)のように、x方向とy方向の2階微分の和であるラプラシアンの絶対値を演算し、下記式(63)のように空間的にLPF(ローパスフィルタ。Low Pass Filter)を作用させ、これを下記式(64)のように各ブロックBi内で平均して視差精度評価用コントラスト評価値C6iを得て、システム制御部331のメモリに書き込む。ここで、NBiは、ブロックBiの画素数である。なお、コントラスト評価値は式(62)から式(64)に限定されず、コントラストを表現できるものであればよく、例えば、式(62)において、ラプラシアンの変わりに1次微分を用いたり、ラプラシアンの絶対値ではなくx、yそれぞれの2階微分の絶対値の和を用いてもよい。また、式(63)以外の形式のLPFを用いてもよい。さらに、式(64)の結果に対して、I1の大きさの平均で除するなどの正規化をしてもよい。次に、ステップS3262を実行する。
C4(x,y)=|I1(x−1,y)+I1(x+1,y)+I1(x,y−1)+I1(x,y+1)−4I1(x,y)|
・・・(62)
C5(x,y)=C4(x−1,y−1)+C4(x,y−1)+C4(x+1,y−1)
+C4(x−1,y)+C4(x,y)+C4(x+1,y)
+C4(x−1,y+1)+C4(x,y+1)+C4(x+1,y+1) ・・・(63)
C6i=ΣC5(x,y)/NBi ・・・(64)
ステップS3262において、視差精度評価用コントラスト評価値C6iに基づき各ブロックBiごとの視差補正方式を選択する。ここで、ステップS3262において、ステップS3251で視差補正方式フラッグFiに1が代入されないブロックにおいてのみ評価を行う。そのため、ステップS3261において、視差補正方式フラッグFi=1のブロックBiでは、視差精度評価用コントラスト値C6iの演算を省略してもよい。下記式(65)のように、視差精度評価用コントラスト評価値C6iがしきい値C60より小さいとき、視差補正方式フラッグFiに低コントラスト用視差補正を示す2を代入し、システム制御部331のメモリに保存する。また、下記式(66)のように、視差精度評価用コントラスト評価値C6iがしきい値C60以上のとき、視差補正方式フラッグFiに低相関用視差補正を示す3を代入し、システム制御部331のメモリに保存する。次に、ステップS3271を実行する。
Fi=2 (C6i<C60、かつ、Fi=1ではない) ・・・(65)
Fi=3 (C6i>=C60、かつ、Fi=1ではない) ・・・(66)
ステップS3271において、視差補正方式フラッグとブロックのサイズの大きさにより、ブロックの再分割が必要か否かを判断し、その判断結果に応じて分岐する。少なくとも1つのブロックの視差補正方式フラッグFiが3であり、かつ、全てのブロックBiの中で最小のブロックの画素数がS0より大きいとき、ブロックの再分割が必要であると判断し(ステップS1271の判断結果がYes)、次に、ステップS3272を実行する。全てのブロックの視差補正方式フラッグFiが1または2のとき、あるいは、全てのブロックBiの中で最小のブロックの画素数がS0以下のとき、ブロックの再分割が不要と判断し(ステップS3271の判断結果がNo)、次に、ステップS3280を実行する。
ステップS3272において、ブロック再分割部346は、システム制御部331のメモリ上のデータを利用し、ブロックを再分割する。図31(A)は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロックの再分割の前の状態を説明する図であり、図31(B)は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロックの再分割の後の状態を説明する図である。図31において、簡単のため、ブロックが4つであり、視差補正方式フラッグFiに低相関用視差補正を示す3が代入されているブロックB2(図31(A))を4つのブロックB2、B4、B5、B6に分割する例(図31(B))が示されている。ブロックB2を再分割のした後のブロックを示す番号は、分割したブロックの番号(2)と、未使用の番号(4、5、6)をあてはめる。次に、S3240を実行する。
このように、低相関(Fi=3)であるブロックを再分割し(ステップS3272)、再分割したブロックに対する視差を演算し(ステップS3240)、相関を演算し評価し(ステップS3251、ステップS3252)、コントラストを演算し評価し(ステップS3261、ステップS3262)、ブロックを再分割するかどうか判断し(ステップS3271)さらに、低相関(Fi=3)であるブロックを再分割する(ステップS3272)動作を、全てのブロックのうちで最小のブロックのサイズがS0になるまで、あるいは全てのブロックの視差補正方式フラッグFiが1または2になるまで、繰り返す。なお、ステップS3240からステップS3272において、ブロックの再分割によりブロックのサイズやブロックの番号が変更されるため、それらのステップの動作が適宜変更される。
以上の処理により、上記のステップS3271の判断結果がNとなった時点(すなわちステップS3280の実行を開始する時点)では、ステップS3272において分割されたブロックを含め、全てのブロックBiに対する視差補正方式フラッグFiには、通常視差補正を示す1、低コントラスト用視差補正を示す2、あるいは低相関用視差補正を示す3が代入されている。ステップS3280において、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349は、システム制御部331のメモリ上のデータを利用し、各ブロック毎に視差方正方式フラッグFiの値に応じたの視差補正を行い画像を合成し、その結果をシステム制御部331のメモリに書き込む。
ステップS3280において視差補正方式フラッグFi=1のブロックでは、視差精度評価用相関値R2iが大きい。図32は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用相関値R2iと視差補正方式フラッグFiの関係を説明する図である。ステップS3251において求めた視差精度評価用相関値R2iは、i番目のブロックBi内の第1の撮像信号I1(x,y)とx方向とy方向に視差Δiだけ移動した第4の撮像信号I4(x−Δi,y−Δi)が一致するとき1となり、両者がランダムノイズのときのようにランダムに異なる場合0となり、両者が白黒反転のような関係にあるとき−1となる。このように、両者が似ているとき視差精度評価用相関値R2iが大きく1に近くなり、両者が似ていないとき、視差精度評価用相関値R2iが小さく1から離れる。ここで、図32のように、しきい値R20を1に近い値(例えば0.9)に設定し、これより視差精度評価用相関値R2iが大きいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x−Δi,y−Δi)が似ていると判断できる。これは、i番目のブロックBiにおいて、視差Δiの精度が高く、かつ、第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x−Δi,y−Δi)との間で同一に距離の被写体のみが存在することを示す。そのため、第4の撮像信号I4をx方向にΔiだけ移動し、y方向にΔiだけ移動することにより、i番目のブロックBiにおける撮像信号を再現できる。さて、第2の撮像信号I2はx方向にのみ視差の影響があり、第3の撮像信号I3はy方向にのみ視差の影響があるため、第2の撮像信号I2をx方向にΔiだけ移動することによりブロックBiにおける青色の撮像信号を再現でき、第3の撮像信号I3をy方向にΔiだけ移動することによりブロックBiにおける赤色の撮像信号を再現できる。
そこで、視差補正方式フラッグFi=1のブロックでは、通常視差補正部347は、システム制御部331のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像素子123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像素子123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。i番目のブロックBiにおいて、第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたため、下記式(67)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)、および第4の撮像信号I4(x−Δi,y−Δi)の平均とする。このように平均をとることにより、ランダムノイズの影響を低減できる。また、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、下記式(68)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x−Δi,y)とする。さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、下記式(69)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y−Δi)とする。
G(x,y)=[I1(x,y)+I4(x−Δi,y−Δi)]/2 ・・・(67)
B(x,y)=I2(x−Δi,y) ・・・(68)
R(x,y)=I3(x,y−Δi) ・・・(69)
ステップS3280において視差補正方式フラッグFi=2のブロックでは、視差精度評価用相関値R2iが小さく、視差精度評価用コントラスト評価値C6iが小さい。図33は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用コントラスト評価値と視差補正方式フラッグの関係を説明する図である。ステップS3261において求めた視差精度評価用コントラスト評価値C6は、i番目のブロックBi内の第1の撮像信号I1(x,y)がはっきりした、すなわち濃淡の変化が大きい画像を示すとき大きくなり、ぼやけた、すなわち濃淡の変化が少ない画像を示すとき0に近くなる。ここで、図33のように、しきい値C60を設定し、これより視差精度評価用コントラスト評価値が小さいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)の示す画像は濃淡が小さく、変化に乏しい画像である。そのため、信号成分に対するノイズ成分が大きくなり、視差Δiの精度が悪いと判断できる。また、濃淡が小さい画像であるため、再現する画像に多少の誤差が含まれても実用上問題ない。そこで、主に第1の撮像信号I1(x,y)の情報に基づき色を再現する。なお、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、あるいは第4の撮像信号I4(x,y)の情報に基づき色を再現してよい。ただし、赤色、青色と比較し、緑色に最も視覚感度が高いため、物体光の緑色成分の情報を持つ第1の撮像信号I1(x,y)、あるいは第4の撮像信号I4(x,y)に基づくことが好ましい。また、視差Δiの精度が悪いため、第1の撮像信号I1(x,y)、あるいは第4の撮像信号I4(x,y)を単独で用いることが好ましい。
そこで、視差補正方式フラッグFi=2のブロックでは、低コントラスト用視差補正部348は、システム制御部331のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像素子123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像素子123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。i番目のブロックBiにおいて、第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたが誤差が大きいと予想されるため、下記式(70)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)とする。また、下記式(71)のように、青色の強度を示すB(x,y)を、第1の撮像信号I1(x,y)に比例係数kBを乗じたものとする。ここで、比例係数kBは、定数とする。なお、比例係数kBはブロックBiごとに変更してもよく、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する第2の撮像信号I2(x,y)
のブロックBiの中央の値の比や、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する視差Δiだけx方向に移動した第2の撮像信号I2(x−Δi,y)のブロックBiの中央の値の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する第2の撮像信号I2(x,y)の平均の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する視差Δiだけx方向に移動した第2の撮像信号I2(x−Δi,y)の平均の比でもよい。さらに、下記式(72)のように、赤色の強度を示すR(x,y)を、第1の撮像信号I1(x,y)に比例係数kRを乗じたものとする。ここで、比例係数kRは、定数とする。なお、比例係数kRはブロックBiごとに変更してもよく、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する第3の撮像信号I3(x,y)
のブロックBiの中央の値の比や、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する視差Δiだけy方向に移動した第3の撮像信号I3(x,y−Δi)のブロックBiの中央の値の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する第3の撮像信号I3(x,y)の平均の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する視差Δiだけy方向に移動した第3の撮像信号I3(x,y−Δi)の平均の比でもよい。なお、濃淡が小さいため、多少の誤差が含まれてもわからないことを考慮すれば、視差補正方式フラッグFi=1のときと同様に、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、式(68)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x−Δi,y)とし、さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、式(69)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y−Δi)としてもよい。
G(x,y)=I1(x,y) ・・・(70)
B(x,y)=I1(x,y)*kB ・・・(71)
R(x,y)=I1(x,y)*kR ・・・(72)
ステップS3280において視差補正方式フラッグFi=3のブロックでは、視差精度評価用相関値R2iが小さく、視差精度評価用コントラスト評価値C6iが大きい。図32のように、しきい値R20を1に近い値(例えば0.9)に設定し、これより視差精度評価用相関値R2iが小さいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x−Δi,y−Δi)が似ていないと判断できる。これは、i番目のブロックBiにおいて、異なる被写体距離の被写体が複数含まれ、視差Δiが全ての被写体に対応できないことを示す。
そこで、視差補正方式フラッグFi=3のブロックでは、低相関用視差補正部349は、システム制御部331のメモリ上のデータを利用し、ブロックをさらにエッジを用いて複数のブロックに再分割し、視差補正を行い、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。図34は、本発明の実施の形態3に係る低相関用視差補正部349の動作を示すフローチャートである。
ステップS3310において、低相関用視差補正部349の動作を開始する。次に、ステップS3320を実行する。
ステップS3320において、エッジ検出用コントラスト評価値を演算する。この演算は、第1の撮像信号I1のみについて行う。下記式(73)のように、ラプラシアンを演算し、さらに下記式(74)のように空間的にLPF(ローパスフィルタ)を作用させたものを、エッジ検出用コントラスト評価値C8(x,y)とする。図35(A)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明する元画像であり、図35(B)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明するエッジ検出用コントラスト評価値の画像である。式(73)(74)により、図35(A)の元画像のエッジ検出用コントラスト評価値C8(x,y)を計算すると、図35(B)のようになる。なお、図35(B)は、式(74)の絶対値が大きい場所を黒で表示している。次に、ステップS3330を実行する。
C7(x,y)=I1(x−1,y)+I1(x+1,y)+I1(x,y−1)+I1(x,y+1)−4I1(x,y)
・・・(73)
C8(x,y)=C7(x−1,y−1)+C7(x,y−1)+C7(x+1,y−1)
+C7(x−1,y)+C7(x,y)+C7(x+1,y)
+C7(x−1,y+1)+C7(x,y+1)+C7(x+1,y+1) ・・・(74)
ステップS3330において、エッジを検出する。図35(C)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明するエッジの画像である。図35(B)のエッジ検出用コントラスト評価値C2(x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知することにより、図35(C)のようなエッジを検出できる。次に、ステップS3340を実行する。
ステップS3340において、ブロックを再分割する。図35(C)のように、エッジに囲まれた領域にBi、Bj、Bj+1、・・・Bj+nのように番号を付与する。なお、j、j+1、・・・、j+nはブロックを示す番号として未使用のものである。ここで、図35において、簡単のため、ブロックBiを5つのブロックに再分割する例を示しており、n=3である。なお、ノイズなどによるエッジの誤検出や消失の防止のために、膨張アルゴリズムや収縮アルゴリズムを用いて、エッジを補正してもよい。次に、ステップS3350を実行する。
ステップS3350において、各ブロック毎の視差値を演算する。この動作は、ステップS3240と同様であり、説明を省略する。次に、ステップS3360を実行する。
ステップS3360において、視差を補正し、画像を合成する。この動作は、通常視差補正部347の動作と同様であり、説明を省略する。次に、ステップS3370を実行する。
ステップS3670において、低相関用視差補正の動作を終了する。
以上のように、ステップS3280を動作させ、次に、ステップS3290を実行する。
ステップS3290において、視差補正を終了し、メインルーチンへ戻る。すなわち、次に、図25に示すステップS3800を実行する。
ステップS3800において、画像を出力する。入出力部136は、システム制御部331のメモリ上のデータであるG(x,y),B(x,y),R(x,y)を、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。なお、G(x,y),B(x,y),R(x,y)の代わりに、例えば、輝度、色度信号などの出力を出力してもよい。また、ホワイトバランスやγ補正などの画像処理後の値を出力してもよい。さらに、可逆圧縮やJPEG等のような非可逆圧縮をしたデータを出力してもよい。また、それらの複数を出力してもよい。次に、S3900を実行する。
ステップS3900において、動作を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
式(1)のように被写体距離Aに応じて第1〜第4のレンズ部113a〜113dがそれぞれ形成する4つの物体像の相対的位置が変化する。すなわち、被写体距離Aが小さくなると、視差Δが大きくなる。そのため、距離が異なる複数の被写体を同時に撮影するとき、被写体毎に視差Δが異なる。実施の形態3のカメラモジュールでは、ステップS3230において、全画像領域をブロックに分割し、ステップS3240において、ブロック毎の視差を演算し、ステップS3280において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
実施の形態3のカメラモジュールでは、ステップS3230において、全画像領域を矩形状のブロックに分割し、ステップS3240において、ブロック毎の視差を演算し、ステップS3280において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
また、ステップS3230において分割したブロック内に被写体距離が異なる複数の物体が含まれることがあり、その場合、物体像毎に視差が異なる。実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算し、ステップS3252において視差精度評価用相関値R2iを評価することにより視差Δiの精度を評価し、ステップS3261において視差精度評価用コントラスト評価値C6iを演算し、ステップS3262において視差精度評価用コントラスト評価値C6iを評価することにより視差Δiの精度を評価し、視差補正方式フラッグFiを設定し、視差補正の方式を決定する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3261において視差精度評価用コントラスト評価値C6iを演算し、ステップS3262においてブロック毎に演算した視差Δiがどれだけ精度があるかをブロック毎の視差精度評価用コントラスト評価値C6iコントラストの大小によって判断し、コントラストが大きいとき視差補正方式フラッグFi=1としステップS3280において通常視差補正を行い、コントラストが小さいとき視差補正方式フラッグFi=2としてステップS3280において低コントラスト用の視差補正を行う。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。ステップS3252において視差精度評価用相関値R2iが大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さいときステップS3280において低相関用視差補正を行う。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。視差精度評価用相関値R2iの大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さいときステップS3272、およびステップS3280の低相関用視差補正部349においてブロックを再分割し再分割したブロック毎に視差補正を行う。すなわち、低相関と判断されたブロックを再分割する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。ステップS3261において視差精度評価用コントラスト評価値C6iを演算する。視差精度評価用コントラスト評価値C6iは、演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、どれだけコントラストが高いかを表す値である。視差精度評価用相関値R2iが大きくかつ視差精度評価用コントラスト評価値C6iが大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さくかつ視差精度評価用コントラスト評価値C6iが小さいときステップS3280において低コントラスト用視差補正を行い、視差精度評価用相関値R2iが小さくかつ視差精度評価用コントラスト評価値C6iが大きいときステップS3272、およびステップS3280の低相関用視差補正部349においてブロックを再分割し再分割したブロック毎に視差補正を行う。すなわち、低相関でありかつ高コントラストであると判断されたブロックを再分割する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
なお、実施の形態3において、画像出力のタイミングは、上記に限定されず、適宜プレビュー出力をしてもよい。例えば、実施の形態3において、ステップS3100において自動焦点制御を行う途中で、視差補正なしの画像を出力してもよい。また、ステップS3271の後、視差補正が可能なブロックのみ視差補正を行い、その他のブロックは視差補正を行わずに、プレビュー画面を更新してもよい。
また、実施の形態3において、ステップS3320で式(74)のようにエッジ検出用コントラスト評価値C8(x,y)を演算し、ステップS3330で0クロスからエッジを検出したが、これに限定されない。例えば、ブロック内のヒストグラムを作成し、極小値をしきい値として2値化によりブロック分割してもよい。ここで、複数のしきい値を持ってもよい。また、1回微分の絶対値を用いてエッジ検出してもよい。
(実施の形態4)
本発明の実施の形態4は、インターレース読み込みをする場合に、それぞれのフィールド毎に視差を求め画像合成し、それぞれのフィールド毎の合成画像を合成し最終画像とする。このようにして、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求められ、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
以下、本発明の実施の形態4に係るカメラモジュールについて、図面を参照しながら説明する。
図36は、本発明の実施の形態4に係るカメラモジュールの構成を示す断面図である。カメラモジュール401の回路部420のSLSI425以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図37は、本発明の実施の形態4に係るカメラモジュールのブロック図である。SLSI425は、システム制御部431、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部435、および入出力部136を有する。また、回路部420は、前述の構成に加えて、アンプ126を有する。
画像処理部435は、ロジック回路、またはDSP(ディジタル信号プロセッサ。Digital Signal Processor)、あるいはこれらの両者を含んで構成され、システム制御部431のメモリ情報を利用し、各種画像処理を行う。画像処理部435は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349、フレーム画像作成部451を有する。
図38(A)〜図38(D)は、本発明の実施の形態4のカメラモジュールに係るフィールド画像を説明する図である。画像全体は、図38(A)に示すように、第1のフィールド画像と第2のフィールド画像が交互に配置される。まず、第1のフィールド画像を構成する撮像信号が転送され、次に第2のフィールド画像を構成する撮像信号が転送される。通常の白黒画像では、これらを1ラインずつ交互に配置することにより画像全体を再現する。図38(B)のように画像全体(フレーム画像)の幅がL、高さがHであるとき、図38(C)および図38(D)のように、第1のフィールド画像、および第2のフィールド画像の幅はそれぞれLであり、高さはH/2である。
図39は、本発明の実施の形態4に係るカメラモジュールの動作を示すフローチャートであり、図40は、本発明の実施の形態4に係るカメラモジュールの動作を示すタイムチャートである。SLSI425のシステム制御部431により、カメラモジュール401は、このフローチャートとタイムチャートに示されるとおりに動作される。
ステップS4000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール401に動作の開始を命令することにより、カメラモジュール401は、動作を開始する。次に、ステップS4100を実行する。
ステップS4100において、自動焦点制御部341は、自動焦点制御を実行する。この動作は、実施の形態3のステップS3100と同様であり説明を省略する。ただし、図40に示すように、第1のフィールドのみを転送し、第1のフィールド画像のみを使用するため、適宜変更が加えられる。そのため、画像全体(第1のフィールド、および第2のフィールド)を転送する場合と比較し、転送に要する時間が略半分になるため、その分だけ自動焦点制御の時間を短縮できる。次に、ステップS4200を実行する。
ステップS4200において、第1のフィールドの視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。ただし、図40に示すように、第1のフィールドのみを転送し、第1のフィールド画像のみを使用し、第1のフィールドの赤色の強度を示すRf1(x,y)、緑色の強度を示すGf1(x,y)、および青色の強度を示すBf1(x,y)を作成するように、適宜変更が加えられる。次にステップS4300を実行する。
ステップS4300において、第2のフィールドの視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。ただし、図40に示すように、第2のフィールドのみを転送し、第2のフィールド画像のみを使用し、第2のフィールドの赤色の強度を示すRf2(x,y)、緑色の強度を示すGf2(x,y)、および青色の強度を示すBf2(x,y)を作成するように、適宜変更が加えられる。次にステップS4400を実行する。
ステップS4400において、フレーム画像(画像全体)を作成する。下記式(75)のように、第1フレームの赤色の強度を示すRf1(x,y)をフレーム画像の偶数行の赤色の強度を示すR(x,2*y)とし、下記式(76)のように、第2フレームの赤色の強度を示すRf2(x,y)をフレーム画像の奇数行の赤色の強度を示すR(x,2*y+1)とする。また、下記式(77)のように、第1フレームの緑色の強度を示すGf1(x,y)をフレーム画像の偶数行の緑色の強度を示すG(x,2*y)とし、下記式(78)のように、第2フレームの緑色の強度を示すGf2(x,y)をフレーム画像の奇数行の緑色の強度を示すG(x,2*y+1)とする。また、下記式(79)のように、第1フレームの青色の強度を示すBf1(x,y)をフレーム画像の偶数行の青色の強度を示すB(x,2*y)とし、下記式(80)のように、第2フレームの青色の強度を示すBf2(x,y)をフレーム画像の奇数行の青色の強度を示すB(x,2*y+1)とする。ここで、xは0からLまで変化させ、yは0からH/2−1まで変化させる。次に、ステップS4800を実行する。
R(x,2*y)=Rf1(x,y) ・・・(75)
R(x,2*y+1)=Rf2(x,y) ・・・(76)
G(x,2*y)=Gf1(x,y) ・・・(77)
G(x,2*y+1)=Gf2(x,y) ・・・(78)
B(x,2*y)=Bf1(x,y) ・・・(79)
B(x,2*y+1)=Bf2(x,y) ・・・(80)
ステップS4800において、画像を出力する。この動作は実施の形態3と同様であり、説明を省略する。次に、S4900を実行する。
ステップS4900において、動作を終了する。
上記のように構成し動作させることにより、実施の形態4のカメラモジュールは、実施の形態3と同様の効果を有する。
また、実施の形態4のカメラモジュールは、インターレース読み込みをする場合に、ステップS4200において第1のフィールドの視差を求め、求められた視差に基づいて視差補正を行って画像(Rf1,Gf1,Bf1)を作成する。また、ステップS4300において第2のフィールドの視差を求め、求められた視差に基づいて視差補正を行って画像(Rf2,Gf2,Bf2)を作成する。さらに、ステップS4400において、それぞれのフィールド毎の合成画像を合成し、最終画像とする。このようにして、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求めることができる。これにより、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
なお、実施の形態4のカメラモジュールはフィールドの数が2であったが、これに限定されない。より多いフィールド(例えば、3フィールド、4フィールド)であってもよい。
なお、実施の形態4のカメラモジュールは、それぞれのフィールドの画像を作成したが、フレーム画像の領域をあらかじめ用意し、直接代入してもよい。また、それぞれのフィールドの視差情報などを保持し、フィールド画像を作成せず、直接フレーム画像を作成してもよい。
また、実施の形態4のカメラモジュールは、図41(A)および図41(B)にそれぞれ示すように、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、および第4のカラーフィルタ124dのうち、X方向に隣接する2つのカラーフィルタが、主に緑色を透過する分光透過特性を有しても良い。なお、図41(A)〜図41(C)では、それぞれのカラーフィルタが透過する色をR,G,Bの記号で図中に示した。図41(A)または図41(B)の構成によれば、撮像素子123においてX方向に隣接する2つの撮像素子(すなわち、第1の撮像素子123aと第2の撮像素子123b、または、第3の撮像素子123cと第4の撮像素子123d)が、物体光における緑色の成分を受光することとなる。
あるいは、図41(C)に示すように、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、および第4のカラーフィルタ124dを配置し、X方向に隣接する2つのカラーフィルタ(この例では第2のカラーフィルタ124bと第3のカラーフィルタ124c)が、主に緑色を透過する分光透過特性を有するようにしても良い。なお、図41(C)に示すように4つのカラーフィルタが配置されている場合、レンズ113における第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dは、これらのカラーフィルタの中心に光軸が一致するように配置される。同様に、撮像素子123における第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dも、レンズ部113における各レンズ部の配置に併せて配置される。ここで、第1の撮像信号I1と第2の撮像信号I2とから視差を求めるように、適宜変更が加えられる。
本実施形態のカメラモジュール401において、図41(A)〜図41(C)に示すようなカラーフィルタ配置を採用することにより、以下のような利点がある。第1の撮像信号I1と第2の撮像信号I2との比較により視差を求めるため、視差の発生する方向がx方向のみであり、各フィールド間をまたがることがない。そのため、より正確な視差を求めることができる。
なお、図41(A)〜図41(C)は、あくまでも好ましいカラーフィルタ配置の例を示したものであって、本発明の実施形態をこれに限定するものではない。例えば、BとRのカラーフィルタの位置が逆であっても良い。
(実施の形態5)
本発明の実施の形態5は、視差が小さい、すなわち被写体距離が大きいブロックを背景であると認識し、あらかじめ保存された背景画像等の別画像と置き換える。このようにして、視差に基づき補正した画像と別画像とを組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。
以下、本発明の実施の形態5に係るカメラモジュールについて、図面を参照しながら説明する。
図42は、本発明の実施の形態15に係るカメラモジュールの構成を示す断面図である。カメラモジュール501の回路部520のSLSI525以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図43は、本発明の実施の形態5に係るカメラモジュールのブロック図である。SLSI525は、システム制御部531、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部535、入出力部136、および背景画像保存部551を有する。また、回路部520は、前述の構成に加えて、アンプ126を有する。
画像処理部535は、ロジック回路、またはDSP(ディジタル信号プロセッサ:Digital Signal Processor)、あるいは両者を含んで構成され、システム制御部331のメモリ情報を利用し、各種画像処理を行う。画像処理部335は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349、および背景画像置換部552を有する。
背景画像保存部551は、RAMやフラッシュメモリのような書き換え可能なメモリから構成され、画像情報が記憶され、適宜、外部から入出力部136、およびシステム制御部531を介し、書き換えられる。
図44は、本発明の実施の形態5に係るカメラモジュールの動作を示すフローチャートである。SLSI525のシステム制御部531により、カメラモジュール501は、このフローチャートに示されるとおりに動作される。
ステップS5000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール501に動作の開始を命令することにより、カメラモジュール501は、動作を開始する。次に、ステップ54100を実行する。
ステップS5100において、自動焦点制御部341は、自動焦点制御を実行する。この動作は、実施の形態3のステップS3100と同様であり説明を省略する。次に、ステップS5200を実行する。
ステップS5200において、視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。次に、ステップS5300を実行する。
ステップS5300において、背景を置き換える。下記式(81)(82)(83)のように、視差Δiがしきい値Δshよりも大きい画素は、画像の変更を行わない。一方、下記式(84)(85)(86)のように、視差Δiがしきい値Δsh以下の画素は、背景画像保存部551に保存された画像(Rback,Gback,Bback)と置き換える。なお、ΔiはステップS5200で求められたブロックBiの視差を示す。次に、ステップS5800を実行する。
R(x,y)=R(x,y)(Δi>Δsh) ・・・(81)
G(x,y)=G(x,y)(Δi>Δsh) ・・・(82)
B(x,y)=B(x,y)(Δi>Δsh) ・・・(83)
R(x,y)=Rback(x,y)(Δi≦Δsh) ・・・(84)
G(x,y)=Gback(x,y)(Δi≦Δsh) ・・・(85)
B(x,y)=Bback(x,y)(Δi≦Δsh) ・・・(86)
ステップS5800において、画像を出力する。この動作は実施の形態3と同様であり、説明を省略する。次に、S5900を実行する。
ステップS5900において、動作を終了する。
上記のように構成し動作させることにより、実施の形態5のカメラモジュールは、実施の形態3と同様の効果を有する。
本発明の実施の形態5は、ステップS5300において、視差Δiが小さい、すなわち被写体距離が大きいブロックBiを背景であると認識し、あらかじめ保存された背景画像(Rback,Gback,Bback)と置き換える。このようにして、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。図45(A)〜図45(C)は、本発明の実施の形態5に係るカメラモジュールの背景置換を説明する図である。実施の形態5によれば、例えば、図45(A)のような背景が山である人物像を撮影した場合、人物像の視差Δiは大きく背景の山の視差Δiは小さい。ここで、視差のしきい値Δshを人物像の視差と山の視差との間に設定すれば、背景の山の画素を背景画像保存部に保存された海の背景画像(図45(B)。Rback,Gback,Bback)と置き換えることにより、図45(C)に示すように、背景が海である人物像の画像を作成できる。
(実施の形態6)
本発明にかかる電子機器の一実施形態を図46(A)および図46(B)に示す。図46(A)および図46(B)に示すように、本発明にかかる電子機器の一実施形態としてのカメラ付き携帯電話600は、スピーカ601、アンテナ602、液晶ディスプレイ603、キー部605、マイクロフォン606を備えており、ヒンジ部604によって折りたたみが可能である。また、携帯電話600は、図46(B)に示すように、液晶ディスプレイ603の背面側にレンズモジュール110を内蔵し、静止画や動画の撮影が可能である。
なお、本発明にかかる電子機器は、携帯電話に限らず、車載用カメラや、ディジタルカメラやカメラ付きPDA等としても実施可能である。
以上、本発明のいくつかの実施形態を説明したが、これらはあくまでも例示であって、本発明の実施に際しては、以下のとおり、種々の変更が可能である。
例えば、実施の形態1から実施の形態5のカメラモジュールにおいて、演算された視差をそのまま利用したが、適宜リミットしてもよい。レンズ特性によっては被写体距離Aがある値よりも小さいとき、画像が不鮮明となる。そのため、この値を被写体距離Aの最小値と定めれば、視差Δの最大値を定められる。この値よりも大きい視差は、誤差であるとして無視してもよい。また、このような場合、視差評価値が2番目に小さい値を視差として採用してもよい。
また、実施の形態1から実施の形態5のカメラモジュールでは、視差を第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算したが、本発明はこれに限定されない。例えば、紫色の被写体は緑色成分が少なく、青色成分、赤色成分を多く含むため、第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算できないことがある。この場合、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差を演算してもよい。また、第1の視差信号I1(主に緑色を示す)と第4の視差信号I4(主に緑色を示す)とから視差が演算不能であり、かつ、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差が演算不能であれば、視差の影響がないものとみなし、視差なしとすればよい。
また、実施の形態1から実施の形態5のカメラモジュールをカメラに搭載するとき、撮影時に上側になる方に第2の撮像素子123aが、下側になる方に第3の撮像素子123cが配置されるように、第1〜第4の撮像素子123a〜123dを配置することにより、上側が青色に敏感となり、下側が赤色に敏感となるので、風景写真の色再現をより自然にできる。
また、視差評価値に目立つ極値が2つあるときは、より大きい方の視差を採用してもよい。このようなブロックには、被写体と背景が含まれており、被写体距離と背景距離とが異なるため、極値が2つ現れる。背景距離と比較して被写体距離は小さいため、背景の視差と比較して被写体の視差は大きい。ここで、大きい方の視差を採用すれば、背景の視差の影響は低減できないが、画質に直接影響する被写体の視差の影響を低減できる。
また、実施の形態1から実施の形態5において、撮像素子123は、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子から構成され、撮像信号入力部133は、第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dから構成された。しかし、撮像素子123を1つの撮像素子で構成し、この受光面上の異なる位置に第1〜第4のレンズ部113a〜113dによる4つの像を形成しても良い。また、撮像信号入力部133が1つの撮像素子123からの信号が入力される1つの撮像信号入力部から構成されてもよい。この場合、システム制御部131、231、331、431、531のメモリ上に置かれたデータから適宜領域を選択し、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4とすればよい。
また、実施の形態1から実施の形態5において、視差評価値Ri(k)として式(4)、(59)のような差分絶対値総和を用いたがこれに限定されない。例えば、差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和を第1の撮像信号I1からブロック内の平均を差分したものの二乗値の総和の平方根で除し第4の撮像信号I4からブロック内の平均を差分したものの二乗値の総和の平方根で除したものを利用してもよい。
また、視差評価値Ri(k)として、式(60)や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの乗算結果の総和を用いてよい。ただし、第1から第5の実施の形態の視差評価値Ri(k)は相関が大きい(似ている)ほど小さくなるため、図15のように極小値を与えるkが視差Δiを与えたが、式(60)などを用いたとき相関が大きい(似ている)ほど値が大きくなるため、極大値を与えるkを視差Δiにするなどの適宜変更が必要である。
また、実施の形態1から実施の形態5において、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ113c、および第4のレンズ部113dの光軸の中心を互いに結んで得られる矩形が正方形になるように配置されたがこれに限定されない。この矩形のx方向の長さとy方向の長さが異なってもよい。この場合、例えば、ステップS140、およびステップS3240において視差を求めるとき、ステップS151、ステップS184、ステップS250、およびステップS3280において視差補正をするときなど適宜変更を要する。すなわち、x方向とy方向とで同一のkを用いるのではなく、前述の矩形のx方向の長さとy方向の長さとの比を保つようにkを変更する。
また、実施の形態1から実施の形態5において、視差は整数として求めたが、これに限定されない。直線補間などにより、ステップS140、ステップS240、およびステップS3240において視差を小数まで求め、ステップS184、S250、およびステップS3280においてそれぞれ直線補間を利用し視差補正してもよい。
また、実施の形態1から実施の形態5において、焦点制御を省略し、アクチュエータを構成に含まず、ブロック分割と視差補正を行ってもよい。非常に焦点深度が深いレンズを利用した場合は、レンズと撮像素子の距離には多少の誤差が大きく許容されるため、アクチュエータを動作させる必要がない。
また、実施の形態1から実施の形態5において、第1の撮像信号I1は主に緑色成分を示し、第2の撮像信号I2は主に青色成分を示し、第3の撮像信号I3は主に赤色成分を示し、第4の撮像素子123dは主に緑色成分を示し、第1の撮像信号I1と第4の撮像信号I4とを比較し視差を検知し、視差補正を行ったが、これに限定されない。例えば、レンズとカラーフィルタの設計を変更し、第1の撮像信号I1が主に緑色成分を示し、第2の撮像信号I2は主に緑色成分を示し、第3の撮像信号は主に青色成分を示し、第4の撮像信号I4は主に赤色成分を示すように変更してもよい。この場合、下記式(87)のように視差評価関数を変更し、下記式(88)(89)(90)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I1(x,y)−I2(x−k,y)| ・・・(87)
G(x,y)=[I1(x,y)+I2(x−Δi,y)]/2 ・・・(88)
B(x,y)=I3(x,y−Δi) ・・・(89)
R(x,y)=I4(x,y−Δi) ・・・(90)
また、第1の撮像信号I1が主に緑色成分を示し、第2の撮像信号I2は主に青色成分を示し、第3の撮像信号は主に緑色成分を示し、第4の撮像信号I4は主に赤色成分を示すように変更してもよい。この場合、下記式(91)のように視差評価関数を変更し、下記式(92)(93)(94)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I1(x,y)−I3(x,y−k)| ・・・(91)
G(x,y)=[I1(x,y)+I3(x,y−Δi)]/2 ・・・(92)
B(x,y)=I2(x−Δi,y) ・・・(93)
R(x,y)=I4(x−Δi,y−Δi) ・・・(94)
また、実施の形態1から実施の形態5において、格子状に4つの撮像領域を設けたがこれに限定されない。例えば、第1の撮像素子、第2の撮像素子、第3の撮像素子、第4の撮像素子が1直線上になるように配置し、第1の撮像信号I1が主に青色を示し、第2の撮像信号I2が主に緑色を示し、第3の撮像信号I3が主に緑色を示し、第4の撮像信号が主に赤色を示すように変更してもよい。この場合、下記式(95)のように視差評価関数を変更し、下記式(96)(97)(98)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I2(x,y)−I3(x−k,y)| ・・・(95)
G(x,y)=[I2(x,y)+I3(x−Δi,y)]/2 ・・・(96)
B(x,y)=I1(x+Δi,y) ・・・(97)
R(x,y)=I4(x−2*Δi,y) ・・・(98)
また、実施の形態1から実施の形態5において、4つの撮像領域を設けたがこれに限定されない。例えば、3つの撮像領域を持ち、第1の撮像素子、第2の撮像素子、第3の撮像素子が1直線上になるように配置し、第1の撮像信号I1が主に青色を示し、第2の撮像信号I2が主に緑色を示し、第3の撮像信号I3が主に赤色を示すように変更してもよい。この場合、下記式(99)、(100)のように視差評価関数を変更し、下記式(101)のように緑色成分Gを作成し、式(99)を用いて求めた視差Δiを利用し下記式(102)のように青色成分Bを作成し、式(100)を用いて求めた視差Δiを利用し下記式(103)のように赤色成分Rを作成し、視差補正するなどの変更が必要である。また、式(99)(100)の代わりに、式(60)のような形式を使用してもよい。
Ri(k)=ΣΣ|I2(x,y)−I1(x+k,y)| ・・・(99)
Ri(k)=ΣΣ|I2(x,y)−I3(x−k,y)| ・・・(100)
G(x,y)=I2(x,y) ・・・(101)
B(x,y)=I1(x+Δi,y) ・・・(102)
R(x,y)=I3(x−*Δi,y) ・・・(103)
また、3つの撮像領域を持ち、第1の撮像素子の右に(x軸の正の位置に)第2の撮像素子が配置され、第1の撮像素子の下に(y軸の正の位置に)第3の撮像素子を配置し、第1の撮像信号I1が主に緑色を示し、第2の撮像信号I2が主に青色を示し、第3の撮像信号I3が主に赤色を示すように変更してもよい。この場合、下記式(104)、(105)のように視差評価関数を変更し、下記式(106)のように緑色成分Gを作成し、式(104)を用いて求めた視差Δiを利用し下記式(107)のように青色成分Bを作成し、式(105)を用いて求めた視差Δiを利用し下記式(108)のように赤色成分Rを作成し、視差補正するなどの変更が必要である。また、式(104)(105)の代わりに、式(60)のような形式を使用してもよい。
Ri(k)=ΣΣ|I1(x,y)−I1(x−k,y)| ・・・(104)
Ri(k)=ΣΣ|I1(x,y)−I3(x,y−k)| ・・・(105)
G(x,y)=I1(x,y) ・・・(106)
B(x,y)=I2(x−Δi,y) ・・・(107)
R(x,y)=I3(x,y−Δi) ・・・(108)
実施の形態1、実施の形態3から実施の形態5のカメラモジュールにおいて、ブロックにおける視差Δiを用いて視差補正を行ったが、ブロック毎の視差Δiを用いて各画素の視差Δ(x,y)を定め、この各画素の視差Δ(x,y)を用いて視差補正を行ってもよい。
本発明のカメラモジュールは、それぞれが少なくとも1枚のレンズを含む複数のレンズ部と、前記複数のレンズ部に一対一に対応し、対応する前記レンズ部の光軸方向に対して略垂直な受光面をそれぞれ備える複数の撮像領域と、前記複数の撮像領域からそれぞれ出力される複数の撮像信号が入力される撮像信号入力部と、前記複数の撮像信号のうちの少なくとも1つの撮像信号を複数のブロックに分割するブロック分割部と、前記撮像信号を用いて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算する視差演算部と、前記視差に基づいて前記複数の撮像信号を補正し画像を合成する視差補正部と、を有する。
物体像の位置は、被写体距離に応じて相対的に変化する。すなわち、被写体距離が小さくなると、視差が大きくなる。そのため、距離が異なる複数の被写体を同時に撮像すると、被写体毎に視差が異なる。本発明のカメラモジュールによれば、ブロック毎の視差を演算し、このブロック毎の視差に基づき視差の影響が低減するように撮像信号を補正した後、画像合成する。これにより、距離が異なる複数の被写体を同時に撮像するときにおいても、適宜それぞれの被写体の視差を補正して、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記複数のレンズ部と前記複数の撮像領域との相対距離を変化させるアクチュエータと、前記視差に基づきアクチュエータを制御する焦点制御部と、を更に有することが好ましい。
この好ましい構成によれば、視差に基づきアクチュエータを動作させ、自動焦点制御することにより、1回のアクチュエータ動作で合焦させることができるので、高速に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいてコントラストを演算するコントラスト演算部を更に有し、前記焦点制御部は、前記視差と前記コントラストとに基づき前記アクチュエータを制御することが好ましい。
この好ましい構成によれば、高速な視差に基づく自動焦点制御と高精度なコントラストに基づく自動焦点制御とを併用するので、高速で高精度に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記焦点制御部は、前記アクチュエータを複数回制御し、初回は前記視差に基づき前記アクチュエータを制御し、2回目以降は前記コントラストに基づき前記アクチュエータを制御することが好ましい。
この好ましい構成によれば、最初に視差に基づいてアクチュエータを動作させ自動焦点制御を行う。続いて、コントラストに基づいてアクチュエータを動作させ自動焦点制御を行う。視差に基づく自動焦点制御は、1回のアクチュエータ動作で合焦するため、高速である。一方、コントラストに基づく自動焦点制御は、画像から直接合焦を判断するため、アクチュエータのばらつきなどに左右されず、精度がよい。したがって、最初に視差に基づく自動焦点制御により高速に粗調整し、次いでコントラストに基づく自動焦点制御により高精度な微調整をするので、高速で高精度に自動焦点制御できる。
上記の本発明のカメラモジュールにおいて、前記焦点制御部は、前記コントラストに基づき前記アクチュエータを制御したときの前記アクチュエータに対する操作量を学習することが好ましい。
この好ましい構成によれば、コントラストに基づく自動焦点制御において実行したアクチュエータ操作量に基づき、操作量関数を補正するような学習を行う。これにより、アクチュエータのばらつきなどがあっても操作量関数がより正確に補正されるので、初回の視差に基づく自動焦点制御がより正確になり、次回以降のコントラストに基づく自動焦点制御による微調整の回数が減少するため、より高速な自動焦点制御を実現できる。
上記の本発明のカメラモジュールにおいて、前記ブロック分割部は、前記少なくとも1つの撮像信号に基づいて複数の画像領域の輪郭を検出し、前記輪郭により前記複数の画像領域に分割されるように、前記少なくとも1つの撮像信号を複数のブロックに分割することが好ましい。
この好ましい構成によれば、輪郭を検出し、ブロックに分割し、ブロック毎の視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。これにより、適切にブロック化を行うことができるので、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号に基づいて前記輪郭の視差である輪郭視差を求める輪郭視差演算部が付加され、前記視差演算部は、前記輪郭視差に基づいて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算することが好ましい。
この好ましい構成によれば、輪郭の視差を検出し、この視差に基づきブロックごとに視差の視差を演算し、この視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。従って、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記ブロック分割部は、前記少なくとも1つの撮像信号を矩形状の複数のブロックに分割することが好ましい。
この好ましい構成によれば、ブロックごとに視差の視差を演算し、この視差に基づき視差の影響を低減するように撮像信号を補正した後、画像合成する。従って、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号に基づき前記複数のブロックごとに前記視差の精度を示す少なくとも1つの視差精度評価値を演算する視差評価値演算部を更に有し、前記視差補正部は、前記複数のブロックごとに前記視差と前記視差精度評価値とに基づいて前記複数の撮像信号を補正し画像を合成することが好ましい。
分割したブロック内に被写体距離が異なる複数の物体が含まれることがあり、その場合、物体像毎に視差が異なる。この好ましい構成では、ブロック毎に演算した視差がどれだけ精度があるかを判断し、この精度に基づき撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記複数のブロックごとに前記視差精度評価値に基づき当該ブロックを少なくとも2つに分割するかどうかを決定し、分割すべきと判断されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを判断し、精度がないブロックは複数の視差が混在するとし少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいて前記複数のブロックごとにコントラストの大きさを示す第1の視差精度評価値を演算することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかをコントラストによって演算評価し、コントラストによって撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数のブロックに分割された前記撮像信号を用いて、前記複数のブロックごとに、少なくとも2つの前記レンズ部がそれぞれ形成する像を前記視差だけ移動した像がどれだけ相関があるかを示す第2の視差精度評価値を演算することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関があるかを演算評価し、相関によって撮像信号の補正の方法を変更する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記複数のブロックごとに前記第2の視差精度評価値が小さいとき当該ブロックを少なくとも2つに分割し、分割されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎に演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関であるかを示す第2の視差精度評価値を用いて評価する。そして、第2の視差精度評価値が小さい、すなわち相関が小さいと判断されたブロックは少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記視差評価値演算部は、前記複数の撮像信号のうち少なくとも1つの撮像信号に基づいて前記複数のブロックごとにコントラストの大きさを示す第1の視差精度評価値と、前記複数のブロックに分割された前記撮像信号を用いて、前記複数のブロックごとに、少なくとも2つの前記レンズ部がそれぞれ形成する像を前記視差だけ移動した像がどれだけ相関があるかを示す第2の視差精度評価値を演算し、前記視差補正部は、前記複数のブロックごとに前記第1の視差精度評価値が大きくかつ前記第2の視差精度評価値が小さいとき当該ブロックを少なくとも2つに分割し、分割されたブロックにおいて分割後のブロックの視差に基づき画像を合成することが好ましい。
この好ましい構成によれば、ブロック毎にコントラストの大きさを示す第1の視差精度評価値と演算した視差がどれだけ精度があるかを視差だけ移動した像がどれだけ相関であるかを示す第2の視差精度評価値とを用いて評価する。そして、第1の視差精度評価値が大きい、すなわちコントラストが大きい、かつ第2の視差精度評価値が小さい、すなわち相関が小さいと判断されたブロックは少なくとも2つのブロックに分割する。これにより、常に最適なブロックサイズで画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
上記の本発明のカメラモジュールにおいて、前記撮像信号入力部は、前記複数の撮像信号を複数のフィールドごとに入力し、前記視差演算部は、前記複数のフィールドのそれぞれについて、前記ブロック毎の視差を演算することが好ましい。
この好ましい構成によれば、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求められ、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、上記の好ましい構成において、前記複数のレンズ部に一対一に対応し、複数色のフィルタが配置されたカラーフィルタをさらに備え、前記複数のレンズ部のうち、前記フィールドの走査方向に平行に配置された少なくとも2つのレンズ部に対応して、同色のフィルタが配置されていることがさらに好ましい。
このさらに好ましい構成によれば、動く被写体の撮影時に各フィールドの撮影時間が異なることにより、各フィールドの画像が異なる場合においても、各フィールドごとの視差をより正確に求めることができる。
上記の本発明のカメラモジュールにおいて、撮影画像とは異なる別画像を保存する別画像保存部を更に有し、前記視差補正部は、前記視差に基づき前記撮像信号を補正した画像と前記別画像とを組み合わせることが好ましい。
この好ましい構成によれば、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から正しく画像を抽出できるため、きれいにこれらの画像を組み合わせることができる。
上記の本発明のカメラモジュールにおいて、前記視差補正部は、前記視差が大きいほど前記撮像信号を補正した画像の割合を大きく前記別画像の割合を小さくなるように組み合わせることが好ましい。
この好ましい構成によれば、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。
また、本発明にかかる電子機器は、上記の本発明のカメラモジュールを備えたことを特徴とする。
また、本発明にかかるプログラムは、それぞれが少なくとも1枚のレンズを含む複数のレンズ部と、前記複数のレンズ部に一対一に対応し、対応する前記レンズ部の光軸方向に対して略垂直な受光面をそれぞれ備える複数の撮像領域と、前記複数の撮像領域からそれぞれ出力される複数の撮像信号が入力される撮像信号入力部と、入力された撮像信号の画像処理を行う画像処理部とを備えたカメラモジュールにおいて、前記画像処理部の動作を制御するプログラムであって、前記複数の撮像信号のうちの少なくとも1つの撮像信号を複数のブロックに分割するブロック分割処理と、前記撮像信号を用いて、前記ブロックごとに、前記複数のレンズ部がそれぞれ形成する像間の視差を演算する視差演算処理と、前記視差に基づいて前記複数の撮像信号を補正し画像を合成する視差補正処理とを、前記画像処理部に実行させることを特徴とする。
また、本発明にかかるプログラム記録媒体は、上記のプログラムを記録した、コンピュータによる読み取りが可能なプログラム記録媒体である。
本発明のプログラムまたはプログラム記録媒体によれば、ブロック毎の視差を演算し、このブロック毎の視差に基づき、視差の影響が低減するように撮像信号を補正した後、画像合成する。これにより、距離が異なる複数の被写体を同時に撮像するときにおいても、適宜それぞれの被写体の視差を補正して、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
以下、本発明の具体的な実施の形態について、図面を用いて説明する。
(実施の形態1)
本発明の実施の形態1に係るカメラモジュールは、エッジを検出し、ブロックに分割し、ブロック毎の視差に基づき視差補正することにより、全画像領域できれいな画像を得る。また、視差に基づく自動焦点制御により粗調整を行い、高精度なコントラストに基づく自動焦点制御により微調整を行うことにより、高速で高精度に自動焦点制御できる。また、微調整量を学習し、次回の粗調整の精度を向上する。
本発明の実施の形態1に係るカメラモジュールについて、図面を参照しながら説明する。
図1は、本発明の実施の形態1に係るカメラモジュールの構成を示す断面図である。図1において、カメラモジュール101は、レンズモジュール部110、および回路部120を有する。
レンズモジュール部110は、鏡筒111、上部カバーガラス112、レンズ113、アクチュエータ固定部114、およびアクチュエータ可動部115を有する。回路部120は、基板121、パッケージ122、撮像素子123、パッケージカバーガラス124、およびシステムLSI(以下、SLSIと記す)125を有する。
鏡筒111は、円筒状であり、その内壁面は光の乱反射を防止するためにつやが消された黒色であり、樹脂を射出成形し形成される。上部カバーガラス112は、円盤状であり、透明樹脂から形成され、鏡筒111の上面に接着剤などにより固着され、その表面は摩擦などによる損傷を防止する保護膜と、入射光の反射を防止する反射防止膜とが設けられている。
図2は、本発明の実施の形態1に係るカメラモジュールのレンズ113の上面図である。レンズ113は、略円盤状であり、ガラスや透明樹脂から形成され、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dが碁盤目状に配置される。第1〜第4のレンズ部113a〜113dの配置方向に沿って、図2に示すようにX軸及びY軸を設定する。第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dにおいて、被写体側から入射した光は、撮像素子123側へ射出し、撮像素子123上に4つの像を結像する。
アクチュエータ固定部114は、鏡筒111の内壁面に接着剤などにより固着される。アクチュエータ可動部115は、レンズ113の外周縁に接着剤などにより固着される。アクチュエータ固定部114およびアクチュエータ可動部115は、ボイスコイルモータを構成する。アクチュエータ固定部114は永久磁石(図示せず)と強磁性体ヨーク(図示せず)とを有し、アクチュエータ可動部115はコイル(図示せず)を有する。アクチュエータ可動部115は、アクチュエータ固定部114に対し、弾性体(図示せず)により弾性支持される。アクチュエータ可動部115のコイルに通電することにより、アクチュエータ可動部115がアクチュエータ固定部114に対して相対的に移動し、レンズ113と撮像素子123との光軸に沿った相対距離が変化する。
基板121は、樹脂基板から構成され、上面に鏡筒111がその底面を接して接着剤などにより固着される。このようにして、レンズモジュール部110と回路部120とが固定され、カメラモジュール101を構成する。
パッケージ122は、金属端子を有する樹脂からなり、鏡筒111の内側において、基板121の上面にその金属端子部が半田づけ等されて固着される。撮像素子123は、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子124dから構成される。第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子124dは、それぞれCCDセンサやCMOSセンサのような固体撮像素子であり、これらの受光面の中心が、それぞれ第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dの光軸中心と略一致するように、また各撮像素子の受光面が対応するレンズ部の光軸と略垂直になるようにして配置される。
第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各端子は、パッケージ122の内側の底部の金属端子にワイヤーボンディングにより金線127で接続され、基板121を介して、SLSI125と電気的に接続される。第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面に、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dから射出された光がそれぞれ結像し、フォトダイオードにより光の情報から変換された電気の情報が、SLSI125に出力される。
図3は、本発明の実施の形態1に係るカメラモジュールの回路部120の上面図である。パッケージカバーガラス124は、平板状であり、透明樹脂により形成され、パッケージ122の上面に接着などにより固着される。パッケージカバーガラス124の上面には、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、第4のカラーフィルタ124d、および遮光部124eが蒸着などにより配置される。また、パッケージカバーガラス124の下面には、赤外遮断フィルタ(図示せず。以下、IRフィルタと記す)が蒸着などにより配置される。
図4は、本発明の実施の形態1に係るカメラモジュールのカラーフィルタの特性図であり、図5は、本発明の実施の形態1に係るカメラモジュールのIRフィルタの特性図である。第1のカラーフィルタ124aは、図4のGで示した主に緑色を透過する分光透過特性を有し、第2のカラーフィルタ124bは、図4のBで示した主に青色を透過する分光透過特性を有し、第3のカラーフィルタ124cは、図4のRで示した主に赤色を透過する分光透過特性を有し、第4のカラーフィルタは、図4のGで示した主に緑色を透過する分光透過特性を有する。また、IRフィルタは、図5のIRで示した赤外光を遮断する分光透過特性を有する。
したがって、第1のレンズ部113aの上部から入射した物体光は、第1のレンズ部113aの下部から射出され、第1のカラーフィルタ124aおよびIRフィルタにより主に緑色が透過し、第1の撮像素子123aの受光部に結像するため、第1の撮像素子123aは物体光のうち緑色成分を受光する。また、第2のレンズ部113bの上部から入射した物体光は、第2のレンズ部113bの下部から射出され、第2のカラーフィルタ124bおよびIRフィルタにより主に青色が透過し、第2の撮像素子123bの受光部に結像するため、第2の撮像素子123bは物体光のうち青色成分を受光する。また、第3のレンズ部113cの上部から入射した物体光は、第3のレンズ部113cの下部から射出され、第3のカラーフィルタ124cおよびIRフィルタにより主に赤色が透過し、第3の撮像素子123cの受光部に結像するため、第3の撮像素子123cは物体光のうち赤色成分を受光する。更に、第4のレンズ部113dの上部から入射した物体光は、第4のレンズ部113dの下部から射出され、第4のカラーフィルタ124dおよびIRフィルタにより主に緑色が透過し、第4の撮像素子123dの受光部に結像するため、第4の撮像素子123dは物体光のうち緑色成分を受光する。
SLSI125は、後述の方法で、アクチュエータ可動部115のコイルの通電を制御し、撮像素子123を駆動し、撮像素子123からの電気情報を入力し、各種画像処理を行い、上位CPUと通信を行い、外部に画像出力する。
次に、被写体距離と視差との関係を説明する。本発明の実施の形態1に係るカメラモジュールは、4つのレンズ部(第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113d)を有するため、4つのレンズ部がそれぞれ形成する4つの物体像の相対的位置が、被写体距離に応じて変化する。
図6は、本発明の実施の形態1に係るカメラモジュールにおいて、無限遠にある物体像の位置を説明するための図である。図6においては、簡単のため、第1のレンズ部113a、第1の撮像素子123a、第2のレンズ部113b、第2の撮像素子123bのみを記す。無限遠の物体10からの光の第1のレンズ部113aへの入射光L1と、第2のレンズ部113bへの入射光L2とは平行である。このため、第1のレンズ部113aと第2のレンズ部113bとの距離と、第1の撮像素子123a上の物体像11aと第2の撮像素子123b上の物体像11bとの距離は等しい。
ここで、第1のレンズ部113aの光軸、第2のレンズ部113bの光軸、第3のレンズ部113cの光軸、および第4のレンズ部113dの光軸が、それぞれ第1の撮像素子123aの受光面の中心、第2の撮像素子123bの受光面の中心、第3の撮像素子123cの受光面の中心、および第4の撮像素子123dの受光面の中心と略一致するように配置されている。従って、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面の中心と、各受光面にそれぞれ結像される無限遠の物体像との相対的位置関係は、全ての撮像素子について同一である。すなわち、視差はない。
図7は、本発明の実施の形態1に係るカメラモジュールにおいて、有限距離の位置にある物体像の位置を説明するための図である。図7において、簡単のため、第1のレンズ部113a、第1の撮像素子123a、第2のレンズ部113b、第2の撮像素子123bのみを記す。有限距離の物体12からの光の第1のレンズ部113aへの入射光L1と第2のレンズ部113bへの入射光L2とは平行ではない。従って、第1のレンズ部113aと第2のレンズ部113bとの距離に比べて、第1の撮像素子123a上の物体像13aと第2の撮像素子123b上の物体像13bとの距離は長い。そのため、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dの各受光面の中心と、各受光面にそれぞれ結像される有限距離の物体像との相対的位置関係は、撮像素子ごとに異なる。すなわち、視差がある。
物体像12までの距離(被写体距離)をA、第1のレンズ部113aと第2のレンズ部113bとの距離をD、レンズ部113a,113bの焦点距離をfとすると、図7の直角を挟む2辺の長さがA、Dの直角三角形と、直角を挟む2辺の長さがf、Δの直角三角形とが相似であることより、視差Δは、下記式(1)のように表される。その他のレンズ部間についても同様の関係が成立する。このように、被写体距離に応じて4つのレンズ部113a,113b,113c,113dがそれぞれ形成する4つの物体像の相対的位置が変化する。例えば、被写体距離Aが小さくなると、視差Δが大きくなる。
Δ=f・D/A ・・・(1)
次に、コントラストと焦点距離との関係を説明する。
図8(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、合焦時(焦点調整が合っているとき)の画像とコントラスト評価値との関係を説明する図であり、図8(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、非合焦時(焦点調整が合っていないとき)の画像とコントラスト評価値との関係を説明する図である。
図8(A)及び図8(B)の各左図は、左半分が白色、右半分が黒色の矩形を撮影したときの画像である。図8(A)の左図のように、合焦時は、撮影画像の輪郭がはっきりし、コントラストが大きい。一方、図8(B)の左図のように、非合焦時は、撮影画像の輪郭がぼやけ、コントラストが小さい。
図8(A)及び図8(B)の各右図は、左図の情報信号にバンドパスフィルタ(BPF)を作用させたときの結果を示している。横軸はX軸方向位置であり、縦軸はBPF後の出力値である。図8(A)の右図のように、合焦時は、BPF後の信号振幅が大きく、図8(B)の右図のように、非合焦時はBPF後の信号振幅が小さい。ここで、このBPF後の信号振幅をどれだけコントラストが大きいかを示すコントラスト評価値と定義する。すると、図8(A)の右図のように、合焦時はコントラスト評価値が大きく、図8(B)の右図のように、非合焦時はコントラスト評価値が小さい。
図9は、本発明の実施の形態1に係るカメラモジュールのレンズ位置とコントラスト評価値との関係を説明する図である。ある物体を撮影するとき、レンズ113と撮像素子123との距離が小さいとき(z1のとき)、非合焦であるためコントラスト評価値が小さい。レンズ113と撮像素子123との距離を徐々に大きくすると、コントラスト評価値が徐々に大きくなり、合焦時(z2のとき)はコントラスト評価値が極大となる。さらに、レンズ113と撮像素子123との距離を徐々に大きくすると(z3のとき)、非合焦となり、コントラスト評価値が小さくなる。このように、合焦時において、コントラスト評価値は極大となる。
次に、本発明の実施の形態1に係るカメラモジュールの動作を説明する。図10は、本発明の実施の形態1に係るカメラモジュールのブロック図である。SLSI125は、システム制御部131、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部135、および入出力部136を有する。また、回路部120は、前述の構成に加えて、アンプ126を有する。
アンプ126は、アクチュエータ操作量出力部134からの出力に応じた電圧をアクチュエータ可動部115のコイルに印加する。
システム制御部131は、CPU(中央演算処理装置:Central Processing Unit)、メモリなどから構成され、SLSI125の全体を制御する。撮像素子駆動部132は、ロジック回路などから構成され、撮像素子123を駆動する信号を発生し、この信号に応じた電圧を撮像素子123に印加する。
撮像信号入力部133は、第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dから構成される。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、それぞれCDS回路(相関二重サンプリング回路:Correlated Double Sampling Circuit)、AGC(自動利得制御器:Automatic Gain Controller)、ADC(アナログ/ディジタル変換器:Analog Digital Converter)が直列に接続されて構成され、それぞれ第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dに接続され、これらからの電気信号が入力され、CDS回路により固定ノイズを除去し、AGCによりゲインを調整し、ADCによりアナログ信号からディジタル値に変換し、システム制御部131のメモリに書き込む。
アクチュエータ操作量出力部134は、DAC(デジタルディジタル/アナログ変換器:Digital Analog Converter)から構成され、アクチュエータ可動部115のコイルに印加すべき電圧に応じた電圧信号を出力する。
画像処理部135は、ロジック回路、またはDSP、あるいはこれらの両者を含んで構成され、システム制御部131のメモリ情報を利用し、所定のプログラム制御に従って各種画像処理を行う。画像処理部135は、エッジ検出部141、ブロック分割部142、視差演算部143、視差補正部144、視差式自動焦点制御部145、アクチュエータ制御部146、コントラスト式自動焦点制御部147、自動焦点制御用コントラスト評価値演算部148、およびアクチュエータ操作量関数補正部149を有する。
入出力部136は、上位CPU(図示せず)との通信や、上位CPU、外部メモリ(図示せず)、および液晶などの外部表示装置(図示せず)へ画像信号を出力する。
図11は、本発明の実施の形態1に係るカメラモジュールの動作を示すフローチャートである。SLSI125のシステム制御部131により、カメラモジュール101は、このフローチャートのとおりに動作される。
ステップS100において、動作を開始する。例えば、上位CPU(図示せず)が、シャッターボタンなどが押されたことを検知し、入出力部136を介し、カメラモジュールに動作の開始を命令することにより、カメラモジュール101は、動作を開始する。次に、ステップS110を実行する。
ステップS110において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS121を実行する。
ステップS121とステップS122とにおいて、エッジ検出部141は、システム制御部131のメモリ上データを利用し、エッジを検出する。そして、その結果をシステム制御部131のメモリに書き込む。詳細は以下の通りである。
ステップS121において、エッジ検出用コントラスト評価値を演算する。この演算は、第1の撮像信号のみについて行う。下記式(2)のように、ラプラシアンを演算し、さらに下記式(3)のように空間的にLPF(ローパスフィルタ)を作用させたものを、エッジ検出用コントラスト評価値C2(x,y)とする。図13(A)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明する元画像であり、図13(B)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明するエッジ検出用コントラスト評価値の画像である。式(2)(3)により、図13(A)の元画像のエッジ検出用コントラスト評価値C2(x,y)を計算すると、図13(B)のようになる。なお、図13(B)は、式(3)の絶対値が大きい場所を黒で表示している。次に、ステップS122を実行する。
C1(x,y)=I1(x-1,y)+I1(x+1,y)+I1(x,y-1)+I1(x,y+1)-4I1(x,y)
・・・(2)
C2(x,y)=C1(x-1,y-1)+C1(x,y-1)+C1(x+1,y-1)
+C1(x-1,y)+C1(x,y)+C1(x+1,y)
+C1(x-1,y+1)+C1(x,y+1)+C1(x+1,y+1)・・・(3)
ステップS122において、エッジを検出する。図13(C)は、本発明の実施の形態1に係るカメラモジュールのエッジ検出を説明するエッジの画像である。図13(B)のエッジ検出用コントラスト評価値C2(x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知することにより、図13(C)のようなエッジを検出できる。次に、ステップS130を実行する。
ステップS130において、ブロック分割部142は、システム制御部131のメモリ上のデータを利用し、ブロックに分割する。そして、その結果をシステム制御部131のメモリに書き込む。図13(C)のように、エッジに囲まれた領域にB0、B1、…、Bi、…、Bnのように番号を付与する。なお、ノイズなどによるエッジの誤検出や消失の防止のために、膨張アルゴリズムや収縮アルゴリズムを用いて、エッジを補正してもよい。次に、ステップS140を実行する。
ステップS140において、視差演算部143は、システム制御部131のメモリ上のデータを利用し、各ブロック毎の視差値を演算する。そして、システム制御部131のメモリに書き込む。まず、各ブロック(B0、B1、…、Bi、…、Bn)毎に、視差評価値(R0(k)、R1(k)、…、Ri(k)、…、Rn(k)。k=0、1、…、m)を演算する。図14は、本発明の実施の形態1に係るカメラモジュールにおいて、視差評価値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS130で求められたi番目のブロックである。I4で示される領域は、Biをx方向にkだけ、y方向にkだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x,y)について、下記式(4)に示される絶対値差分総和を視差評価値Ri(k)として演算する。
Ri(k)=ΣΣ|I1(x,y)-I4(x-k,y-k)| ・・・(4)
この視差評価値Ri(k)は、i番目のブロックBiの第1の画像信号I1と、x、y方向にそれぞれ(k、k)だけ離れた領域における第4の画像信号I4がどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。図15は、本発明の実施の形態1に係るカメラモジュールの視差と視差評価値との関係を説明する図である。図15のように、視差評価値Ri(k)はkの値によって変化し、k=Δiのとき極小値を持つ。これは、第4の画像信号I4のi番目のブロックBiをx、y方向にそれぞれ(−Δi、−Δi)だけ移動させて得られるブロックの画像信号は、第1の画像信号I1と最も相関がある(最も似ている)ことを示す。したがって、i番目のブロックについての第1の撮像信号I1と第4の撮像信号I4とのx、y方向の視差が(Δi、Δi)であることが分かる。以下、このΔiを、i番目のブロックBiの視差値Δiと呼ぶ。このように、i=0からi=nまでの全てのブロックBiの視差値Δiを求める。次に、ステップS151を実行する。
ステップS151とステップS152とにおいて、プレビュー用の画像を出力する。
ステップS151において、視差補正部144は、システム制御部131のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部131のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像信号123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像信号123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたため、下記式(5)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)、および第4の撮像信号I4(x-Δi,y-Δi)の平均とする。また、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、下記式(6)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x-Δi,y)とする。さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、下記式(7)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y-Δi)とする。なお、視差値Δiとしては、画素座標(x、y)を含むブロック
Biの視差値Δiを利用する。次に、ステップS152を実行する。
G(x,y)=[I1(x,y)+I4(x-Δi,y-Δi)]/2 ・・・(5)
B(x,y)=I2(x-Δi,y) ・・・(6)
R(x,y)=I3(x,y-Δi) ・・・(7)
ステップS152において、画像を出力する。入出力部136は、システム制御部131のメモリ上のデータであるG(x,y),B(x,y),R(x,y)を、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。なお、G(x,y),B(x,y),R(x,y)の代わりに、例えば、輝度、色差信号などの出力を出力してもよい。また、ホワイトバランスやγ補正などの画像処理後の値を出力してもよい。次に、S161を実行する。
ステップS161とステップS162とS163とにおいて、視差値を用いた自動焦点制御を行う。
ステップS161において、視差式自動焦点制御部145は、システム制御部131のメモリ上のデータに基づき、自動焦点制御用ブロックを選択する。そして、その結果をシステム制御部131のメモリに書き込む。例えば画像領域の中心付近の少なくとも1つのブロック(例えば、3つのブロックBj1、Bj2、およびBj3)を選択する。なお、これらのブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを選択してもよい。次に、ステップS162を実行する。
ステップS162において、アクチュエータの位置指令を演算する。上記の例であれば、下記式(8)のように、ブロックBj1、Bj2、およびBj3の視差値Δj1、Δj2、およびΔj3の平均を自動焦点制御用視差値Δafとする。なお、ブロックの面積やより中心に近いかどうかなどの情報により、適宜重み付けしてもよい。さらに、下記式(9)のように、アクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きの位置の指令を示す。次に、ステップS163を実行する。
Δaf =(Δj1+Δj2+Δj3)/3 ・・・(8)
Xact=kx・Δaf ・・・(9)
ステップS163において、アクチュエータ制御部146は、下記式(10)で示した操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。また、後述の操作量関数の学習のために、アクチュエータ操作量をVact0として保存する。次に、ステップS164を実行する。
Vact=ka・Xact+kb ・・・(10)
Vact0=Vact ・・・(10’)
ステップS164において、アクチュエータを動作させる。アクチュエータ操作量出力部134は、アンプ126を介したのちアクチュエータ可動部115のコイル(図示せず)に印加される電圧がVactになるように出力する電圧信号を変更する。次に、ステップS171を実行する。
ステップS171とステップS172とステップS173とステップS174とステップS175とステップS176とにおいて、コントラスト式自動焦点制御部147は、コントラストを用いた自動焦点制御を行う。前述の図9ように、合焦位置ではコントラスト評価値が極大となる。この原理を用いて、コントラスト評価値が極大となるアクチュエータ操作量を探索する。
ステップS171において、アクチュエータ操作量の補正なしの自動焦点制御用コントラスト評価値を作成する。ステップS171は、ステップS171cとステップS171dとから成る。まず、ステップS171cを実行する。
ステップS171cにおいて、撮影を実行する。この動作は、ステップS110と同様であるが、第1の撮像素子123aからの撮像信号I1のうち、S161で選択された自動焦点制御用ブロックの撮像信号I1のみを転送しても良い。その場合、全ての撮像信号を転送することと比較し、転送時間を短縮できる。次に、ステップS171dを実行する。
ステップS171dにおいて、自動焦点制御用コントラスト評価値演算部148は、システム制御部131のメモリ上のデータを用いて、自動焦点制御用コントラスト評価値を作成する。この演算は、自動焦点制御用ブロックについての第1の撮像信号I1のみについて行う。下記式(11)のように、ラプラシアンの絶対値を演算し、下記式(12)のように空間的にLPF(ローパスフィルタ)を作用させ、これを下記式(13)のように自動焦点制御用ブロック内で平均して自動焦点用コントラスト評価値C5を得る。ここで、Nは、自動焦点制御用ブロック内のC4(x,y)の数である。そして、下記式(14)のように、このときのコントラスト評価値C5をC50として、システム制御部131のメモリに書き込む。次に、ステップS172を実行する。
C3(x,y)=|I1(x-1,y)+I1(x+1,y)+I1(x,y-1)+I1(x,y+1)-4I1(x,y)|
・・・(11)
C4(x,y)=C3(x-1,y-1)+C3(x,y-1)+C3(x+1,y-1)
+C3(x-1,y)+C3(x,y)+C3(x+1,y)
+C3(x-1,y+1)+C3(x,y+1)+C3(x+1,y+1) ・・・(12)
C5=ΣC4(x,y)/N ・・・(13)
C50=C5 ・・・(14)
ステップS172において、アクチュエータ操作量の正側補正時の自動焦点制御用コントラスト評価値を作成する。ステップS172は、ステップS172a、ステップS172b、ステップS172c、およびステップS172dから成る。まず、ステップS172aを実行する。
ステップS172aにおいて、下記式(15)のように、補正なし時のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)Vact0にdVactを加えたものを正側補正時のアクチュエータ操作量Vactとし、下記式(16)のように、Vactpとしてメモリに保存する。次に、ステップS172b、ステップS172c、およびステップS172dを実行する。
Vact=Vact0+dVact ・・・(15)
Vactp=Vact ・・・(16)
ステップS172bにおいて、アクチュエータを動作させ、ステップS172cにおいて、撮影を実行し、ステップS172dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップS172bはステップS164と同様な動作を行う。また、ステップS172c、ステップS172dは、ステップ171c、ステップS171dと同様な動作を行い、下記式(17)のように、コントラスト評価値C5を正側補正後の自動焦点用コントラスト評価値C5pとし、システム制御部131のメモリに書き込む。次に、ステップS173を実行する。
C5p=C5 ・・・(17)
ステップS173において、アクチュエータ操作量の負側補正時の自動焦点制御用コントラスト評価値を作成する。ステップS173は、ステップS173a、ステップS173b、ステップS173c、およびステップS173dから成る。まず、ステップS173aを実行する。
ステップS173aにおいて、下記式(18)のように、補正なし時のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)Vact0からdVactを減じたものを負側補正時のアクチュエータ操作量Vactとし、下記式(19)のように、Vactnとしてメモリに保存する。次に、ステップS173b、ステップS173c、およびステップS173dを実行する。
Vact=Vact0-dVact ・・・(18)
Vactn=Vact ・・・(19)
ステップS173bにおいて、アクチュエータを動作させ、ステップS173cにおいて、撮影を実行し、ステップS173dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(20)のように、コントラスト評価値C5を負側補正後の自動焦点用コントラスト評価値C5nとし、システム制御部131のメモリに書き込む。次に、ステップS174を実行する。
C5n=C5 ・・・(20)
ステップS174において、焦点制御用コントラスト評価値を評価する。C50、C5p、C5nを比較し、どれが最大値であるかによって分岐する。
C50が最大値のとき、以下の動作を行い、次にステップS181を実行する。図16(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、補正なし時にコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(A)のように、補正なしのアクチュエータ操作量Vact0が自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(21)のように、最終的なアクチュエータ操作量VactfをVact0とする。
Vactf=Vact0(C50が最大のとき) ・・・(21)
C5pが最大値のとき、以下の動作を行い、次にステップS175を実行する。図16(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、正側補正後のコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(B)のように、正側補正後のアクチュエータ操作量Vactp、あるいは、さらに正側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を正側に補正し、極大値を探索する。なお、下記式(22)のように、C5pを前回値としてC5ppとして保存する。
C5pp=C5p ・・・(22)
C5nが最大値のとき、以下の動作を行い、次にステップS176を実行する。図16(C)は、本発明の実施の形態1に係るカメラモジュールにおいて、負側補正後のコントラスト評価値が最大となるときのアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図16(C)のように、負側補正後のアクチュエータ操作量Vactn、あるいは、さらに負側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を負側に補正し、極大値を探索する。なお、下記式(23)のように、C5nを前回値としてC5npとして保存する。
C5np=C5p ・・・(23)
ステップS175において、さらなる正側補正時の自動焦点用コントラスト評価値の作成と評価を行う。ステップS175は、ステップS175a、ステップS175b、ステップS175c、ステップS175d、およびステップS175eから成る。まず、ステップS175aを実行する。
ステップS175aにおいて、下記式(24)のように、前回の正側補正後のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)VactpにdVactを加えたものを正側補正時のアクチュエータ操作量Vactとし、下記式(25)のように、Vactpとしてメモリに保存する。次に、ステップS175b、ステップS175c、およびステップS175dを実行する。
Vact=Vactp+dVact ・・・(24)
Vactp=Vact ・・・(25)
ステップS175bにおいて、アクチュエータを動作させ、ステップS175cにおいて、撮影を実行し、ステップS175dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(26)のように、コントラスト評価値C5を正側補正後の自動焦点用コントラスト評価値C5pとして、システム制御部131のメモリに書き込む。次に、ステップS175eを実行する。
C5p=C5 ・・・(26)
ステップS175eにおいて、焦点制御用コントラスト評価値を評価する。C5pp、C5pを比較し、どれが最大値であるかによって分岐する。
C5ppが最大値のとき、以下の動作を行い、次にステップS181を実行する。図17(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる正側補正をしたとき、この正側補正前でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図17(A)のように、前回の正側補正後のアクチュエータ操作量Vactp-dVactが自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(27)のように、最終的なアクチュエータ操作量VactfをVactp-dVactとする。
Vactf=Vactp-dVact(C5ppが最大値のとき) ・・・(27)
C5pが最大値のとき、以下の動作を行い、次にステップS175aを実行する。図17(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる正側補正をしたとき、この正側補正後でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図17(B)のように、今回の正側補正後のアクチュエータ操作量Vactp、あるいは、さらに正側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を正側に補正し、極大値を探索する。なお、下記式(28)のように、C5pを前回値としてC5ppとして保存する。
C5pp=C5p ・・・(28)
ステップS176において、さらなる負側補正時の自動焦点用コントラスト評価値の作成と評価を行う。ステップS176は、ステップS176a、ステップS176b、ステップS176c、ステップS176d、およびステップS176eから成る。まず、ステップS176aを実行する。
ステップS176aにおいて、下記式(29)のように、前回の負側補正後のアクチュエータ操作量(アクチュエータ固定部114のコイルへの印加電圧)VactpからdVactを減じたものを負側補正時のアクチュエータ操作量Vactとし、下記式(30)のように、Vactnとしてメモリに保存する。次に、ステップS176b、ステップS176c、およびステップS176dを実行する。
Vact=Vactn-dVact ・・・(29)
Vactn=Vact ・・・(30)
ステップS176bにおいて、アクチュエータを動作させ、ステップS176cにおいて、撮影を実行し、ステップS176dにおいて、自動焦点制御用コントラスト評価値を作成する。ステップ172b、ステップS172c、ステップS172dと同様な動作を行い、下記式(31)のように、コントラスト評価値C5を負側補正後の自動焦点用コントラスト評価値C5nとして、システム制御部131のメモリに書き込む。次に、ステップS176eを実行する。
C5n=C5 ・・・(31)
ステップS176eにおいて、焦点制御用コントラスト評価値を評価する。C5np、C5nを比較し、どれが最大値であるかによって分岐する。
C5npが最大値のとき、以下の動作を行い、次にステップS181を実行する。図18(A)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる負側補正をしたとき、この負側補正前でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図18(A)のように、前回の負側補正後のアクチュエータ操作量Vactp+dVactが自動焦点制御用コントラスト値C5のほぼ極大値を与えるため、下記式(32)のように、最終的なアクチュエータ操作量VactfをVactp+dVactとする。
Vactf=Vactp+dVact(C5npが最大値のとき) ・・・(32)
C5nが最大値のとき、以下の動作を行い、次にステップS176aを実行する。図18(B)は、本発明の実施の形態1に係るカメラモジュールにおいて、さらなる負側補正をしたとき、この負側補正後でのコントラスト評価値が最大となるアクチュエータ操作量とコントラスト評価値の関係を説明する図である。図18(B)のように、今回の負側補正後のアクチュエータ操作量Vactn、あるいは、さらに負側に補正した後のアクチュエータ操作量Vactが、自動焦点制御用コントラスト評価値C5のほぼ極大値を与えるため、さらにアクチュエータ操作量を負側に補正し、極大値を探索する。なお、下記式(33)のように、C5nを前回値としてC5npとして保存する。
C5np=C5n ・・・(33)
ステップS181とステップS182とステップS183とステップS184とステップS185とにおいて、最終的な撮影と画像出力を行う。
ステップS181において、下記式(34)のように、アクチュエータ操作量Vactとして、上記で得た最終的なアクチュエータ操作量Vactfを設定する。次に、ステップS182を実行する。
Vact=Vactf ・・・(34)
S182において、アクチュエータを動作させる。このステップは、ステップS164と同様に動作させる。次に、ステップS183を実行する。
ステップS183において、撮影を行う。このステップは、ステップS110と同様に動作させる。次に、ステップS184を実行する。
ステップS184において、各ブロックを、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。このステップは、ステップS151と同様に動作させる。次に、ステップS185を実行する。
ステップS185において、画像出力する。このステップは、S152と同様に動作させる。次に、ステップS190を実行する。
ステップS190において、アクチュエータ操作量関数補正部149は、コントラスト式自動焦点制御の補正値に基づき操作量関数を補正する。即ち、下記式(35)のように、操作量関数の係数kbを補正し、システム制御部131のメモリに書かれた値を変更する。次回の撮影時はこの値を利用する。次に、ステップS199を実行する。
kb=kb+kc・(Vactf-Vact0) ・・・(35)
ステップS199において、処理を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
第1の実施の形態のカメラモジュールでは、ステップS161、ステップS162、ステップS163、ステップS164のように、自動焦点制御用視差値Δafに基づきアクチュエータ位置指令Xactを作成し、アクチュエータ操作量Vactを演算し、アクチュエータ固定部114のコイルに電圧を印加しアクチュエータを動作させ、自動焦点制御する。このことにより、1回のアクチュエータ動作で合焦するため、高速に自動焦点制御できる。
また、第1の実施の形態のカメラモジュールでは、まず、ステップS161、ステップS162、ステップS163、ステップS164において、視差に基づきアクチュエータを動作させ自動焦点制御を行う。続いて、ステップS171、ステップS172、ステップS173、ステップS174、ステップS175、ステップS176において、コントラストに基づきアクチュエータを動作させ自動焦点制御を行う。視差に基づく自動焦点制御は、1回のアクチュエータ動作で合焦するため、高速である。一方、コントラストに基づく自動焦点制御は、画像から直接合焦を判断するため、アクチュエータのばらつきなどに左右されず、精度がよい。したがって、高速な視差に基づく自動焦点制御により粗調整し、高精度なコントラストに基づく自動焦点制御により微調整するため、高速で高精度に自動焦点制御できる。
また、第1の実施の形態のカメラモジュールでは、ステップS190において、コントラストに基づく自動焦点制御において補正されたアクチュエータ操作量(Vactf-Vact0)に基づき、操作量関数の係数kbを補正するような学習を行う。このことにより、アクチュエータのばらつきなどがあっても操作量関数をより正確に補正し、視差に基づく自動焦点制御がより正確になり、次回のコントラストに基づく自動焦点制御による微調整の回数を減少できるため、より高速な自動焦点制御を実現する。
式(1)のように被写体距離Aに応じて第1〜第4のレンズ部113a〜113dがそれぞれ形成する4つの物体像の相対的位置が変化する。すなわち、被写体距離Aが小さくなると、視差Δが大きくなる。そのため、距離が異なる複数の被写体を同時に撮影するとき、被写体毎に視差Δが異なる。第1の実施の形態のカメラモジュールでは、ステップS130において、全画像領域をブロックに分割し、ステップS140において、ブロック毎の視差を演算し、ステップS184において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
また、第1の実施の形態のカメラモジュールでは、ステップS121、ステップS122において、エッジを検出し、ステップS130において、ブロックに分割する。このことにより、適切にブロック化を行うことができるため、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
なお、第1の実施の形態のカメラモジュールにおいて、演算された視差をそのまま利用したが、適宜リミットしてもよい。レンズ特性よっては被写体距離Aがある値よりも小さいとき、画像が不鮮明となる。そのため、この値を被写体距離Aの最小値と定めれば、視差Δの最大値を定められる。この値よりも大きい視差は、誤差であるとして無視してもよい。また、このような場合、視差評価値が2番目に小さい値を視差として採用してもよい。
また、第1の実施の形態のカメラモジュールでは、視差を第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算したが、本発明はこれに限定されない。例えば、紫色の被写体は緑色成分が少なく、青色成分、赤色成分を多く含むため、第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算できない場合、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差を演算してもよい。また、第1の視差信号I1(主に緑色を示す)と第4の視差信号I4(主に緑色を示す)とから視差が演算不能であり、かつ、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差が演算不能であれば、視差の影響がないものとみなし、視差なしとすればよい。
また、第1の実施の形態のカメラモジュールをカメラに搭載するとき、上側に第2の撮像素子123aが、下側に第3の撮像素子123cが配置されるように、第1〜第4の撮像素子123a〜123dを配置することにより、上側が青色に敏感となり、下側が赤色に敏感となるので、風景写真の色再現をより自然にできる。
また、視差評価値に目立つ極値が2つあるときは、より大きい方の視差を採用してもよい。このようなブロックには、被写体と背景が含まれており、被写体距離と背景距離とが異なるため、極値が2つ現れる。背景距離と比較して被写体距離は小さいため、背景の視差と比較して被写体の視差は大きい。ここで、大きい方の視差を採用すれば、背景の視差の影響は低減できないが、画質に直接影響する被写体の視差の影響を低減できる。
また、画像出力のタイミングは、上記に限定されず、適宜プレビュー出力をしてもよい。例えば、ステップS110の撮影後、視差補正なしの画像を出力してもよい。また、ステップS130のブロック分割において、1つのブロックを分割した際にその結果を反映し、プレビュー画面を更新してもよい。
また、実施の形態1のカメラモジュールは、S164において視差によりアクチュエータを動作させ、その後S171、S172、S173、S175、S182においてコントラストによりアクチュエータを動作させるが、視差によりのみアクチュエータを動作させてもよい。焦点深度が深いレンズを利用した場合は、レンズと撮像素子の距離には多少の誤差が許容されるため、コントラストによりアクチュエータを動作させ、精度を向上する必要がないからである。
また、実施の形態1のカメラモジュールは、S190において補正量関数を補正する、すなわちコントラストに基づきアクチュエータを動作させたときの操作量に基づき学習を行うが、このステップが省略されてもよい。実施の形態1のカメラモジュールのアクチュエータは、ボイスコイル型であり、温度変化や姿勢変化によりレンズの移動量が変化するため、学習により精度が著しく向上するが、ステッピングモータを利用した場合には、温度変化や姿勢変化によりレンズ移動量の変化が小さいため、学習を省略してもよい。
また、視差による焦点制御を行うがアクチュエータを動作させない場合があってもよい。例えば、レンズと撮像素子の相対距離をあらかじめ無限遠を撮影時に合焦する距離とし、視差が小さいときはアクチュエータを動作させる必要がないとみなし、アクチュエータを動作させなくてもよい。
また、適宜、ブロック分割を繰り返し、ブロックを更新する動作を付加してもよい。例えば、実施の形態1において、S183のおいて撮影を行った後、S121、S122、およびS130を行いブロックを更新し、その後ステップS184において視差補正してもよい。
(実施の形態2)
本発明の実施の形態2に係るカメラモジュールは、複数画像のコントラストを用いてエッジの視差を検出し、この視差に基づき全画像領域の視差を演算し、この視差に基づき視差の影響を低減するように画像合成し視差補正することにより、全画像領域で視差の影響が低減されたきれいな画像を得る。
本発明の実施の形態2に係るカメラモジュールについて、図面を参照しながら説明する。
図19は、本発明の実施の形態2に係るカメラモジュールの構成を示す断面図である。カメラモジュール201の回路部220のSLSI225以外は、実施の形態1と同様であり、実施の携帯1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図20は、本発明の実施の形態2に係るカメラモジュールのブロック図である。SLSI225は、システム制御部231、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部235、および入出力部136を有する。また、回路部220は、前述の構成に加えて、アンプ126を有する。
システム制御部231は、CPU、メモリなどから構成され、SLSI225の全体を制御する。
画像処理部235は、ロジック回路、またはDSP、あるいは両者を含んで構成され、システム制御部231のメモリ情報を利用し、各種画像処理を行う。画像処理部235は、コントラスト演算部241、自動焦点制御部242、エッジ視差演算部243、全画像領域視差演算部244、視差補正部245を有する。
撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、入出力部136、およびアンプ126は、実施の形態1と同様であり、説明を省略する。
図21は、本発明の実施の形態2に係るカメラモジュールの動作を示すフローチャートである。SLSI225のシステム制御部231により、カメラモジュール201は、このフローチャートのとおりに動作する。
ステップS200において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタンなどが押されたことを検知し、入出力部136を介し、カメラモジュールに動作の開始を命令することにより、カメラモジュール201は、動作を開始する。次に、ステップS211を実行する。
ステップS211、ステップS212、ステップS213、ステップS214、ステップS215、ステップS216、およびステップS217において、複数回の撮影を行い、コントラスト評価値を演算し、撮像信号とコントラスト評価値を保存する。
ステップS211において、下記式(36)のように、カウンタiを初期化する。次に、ステップS212を実行する。
i=0 ・・・(36)
ステップS212において、アクチュエータ位置指令Xactを作成する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きの位置の指令を示す。次に、ステップS213を実行する。
Xact=kx2・i ・・・(37)
ステップS213において、下記式(38)のように、アクチュエータ位置指令Xactに基づき制御量関数を用いてアクチュエータ制御量Vactを演算する。次に、ステップS214を実行する。
Vact=ka・Xact+kb ・・・(38)
ステップS214において、アクチュエータを動作させる。この動作は、実施の形態1のステップS162の動作と同様であり、説明を省略する。次に、ステップS215を実行する。
ステップS215において、撮影を行い、撮像信号を保存する。システム制御部231の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(i,x,y)、第2の撮像信号I2(i,x,y)、第3の撮像信号I3(i,x,y)、および第4の撮像信号I4(i,x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図22は、本発明の実施の形態2に係るカメラモジュールの撮像信号の座標を説明する図である。I1(i,x,y)は、i番目に撮影された水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。また、iはカウンタであり、i+1回目の撮影の画像であることを示す。第2の撮像信号I2(i,x,y)、第3の撮像信号I3(i,x,y)、第4の撮像信号I4(i,x,y)も同様である。すなわち、I2(i,x,y)、I3(i,x,y)、およびI4(i,x,y)は、それぞれi+1番目に撮影された水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。また、iはカウンタであり、i+1回目の撮影の画像であることを示す。次に、ステップS126を実行する。
ステップS216において、コントラスト演算部241は、システム制御部231のメモリ上のデータを用いて、コントラスト評価値の演算と保存を行う。この演算は、第1の撮像信号I1についてのみ行う。下記式(39)のように、ラプラシアンを演算し、さらに下記式(40)のように空間的にLPF(ローパスフィルタ)を作用させたものをコントラスト評価値C2(i,x,y)とする。そして、これをシステム制御部231のメモリに書き込む。次に、ステップS217を実行する。
C1(i,x,y)=I1(i,x-1,y)+I1(i,x+1,y)+I1(i,x,y-1)+I1(i,x,y+1)-4I1(i,x,y)
・・・(39)
C2(i,x,y)=C1(i,x-1,y-1)+C1(i,x,y-1)+C1(i,x+1,y-1)
+C1(i,x-1,y)+C1(i,x,y)+C1(i,x+1,y)
+C1(i,x-1,y+1)+C1(i,x,y+1)+C1(i,x+1,y+1) ・・・(40)
ステップS217において、撮影枚数をチェックし、分岐する。まず、下記式(41)のように、カウンタiを1だけ増加させる。カウンタiが撮影枚数Npより小さければ、次にステップS212を実行する。カウンタiが撮影枚数Npに等しければ、次に、ステップS221を実行する。
i=i+1 ・・・(41)
ステップS221、およびステップS222において、自動焦点制御部242は、システム制御部231のメモリ上のデータを用いて、合焦位置で撮影された画像を選択する。
ステップS221において、自動焦点用ブロックを作成する。画像領域の中央付近の長方形状のブロックを自動焦点用ブロックとする。なお、このブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを作成してもよい。次に、ステップS222を実行する。
ステップS222において、合焦位置で撮影された画像を選択する。図9で説明したように、合焦位置で撮影された画像は、コントラストが極大となる。この原理に基づき、合焦位置で撮影された画像を選択する。まず、下記式(42)のように、各撮影におけるコントラスト評価値C2(i,x,y)の自動焦点用ブロックでの平均を自動焦点制御用コントラスト評価値C3とする。なお、Σは、自動焦点用ブロックでの総和を表す。次に、C3(i)のうちの最大値を与えるiを、合焦カウンタ値ipとし、合焦位置での画像を示す。次に、ステップS230を実行する。
C3(i)=|ΣC2(i,x,y)|/N ・・・(42)
ip:C3(i)で最大値を与えるi ・・・(43)
ステップS230において、エッジ視差演算部243は、システム制御部231のメモリ上のデータを用いて、エッジを検出し、その視差を検出する。実施の形態1のステップS122と同様に、合焦位置での画像を利用し、コントラスト評価値C2(ip,x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知する。
次に、エッジ上の点(xe,ye)について、(xe,ye)を中心とする長方形のブロックを設定し、撮影した全ての画像に対し、下記式(44)のように、コントラスト評価値C2(i,x,y)の絶対値の総和をC4(i,xe,ye)とする。ここで、Σは設定した長方形ブロックでの総和を表す。そして、図9で説明した原理に基づき、下記式(45)のように、エッジ上の点(xe,ye)での合焦位置を示すipe(xe,ye)をC4(i,xe,ye)の最大値を与えるiとする。ここで、式(9)、式(37)を利用し、エッジ上の点(xe,ye)での視差Δ(xe,ye)は、下記式(46)に表される。次に、ステップS240を実行する。
C4(i,xe,ye)=Σ|C2(i,x,y)| ・・・(44)
ipe(xe,ye):C4(i,xe,ye)で最大値を与えるi ・・・(45)
Δ(xe,ye)=(kx2/kx)ipe(xe,ye) ・・・(46)
ステップS240において、エッジ視差演算部244は、システム制御部231のメモリ上のデータを用いて、エッジ上の点(xe,ye)での視差Δ(xe,ye)から全画像領域での視差Δ(x,y)を演算する。ほぼ同一のエッジ上の視差Δ(xe,ye)で囲まれた領域の視差Δ(x,y)として、このエッジ上での視差Δ(xe,ye)を採用する。次に、ステップS250を実行する。
ステップS250において、視差補正部245は、システム制御部231のメモリ上のデータを用いて、全領域での視差Δ(x,y)を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部231のメモリに書き込む。第1の撮像素子123a、および第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像信号123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像信号123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。(x、y)における第1の撮像素子123aと第4の撮像素子123dの視差が(Δ(x,y)、Δ(x,y))であると予測されたため、下記式(47)のように、(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(ip,x,y)、および第4の撮像信号I4(ip,x-Δ(x,y),y-Δ(x,y))の平均とする。また、(x、y)における第1の撮像素子123aと第2の撮像素子123bの視差が(Δ(x,y)、0)であると予測されたため、下記式(48)のように、(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(ip,x-Δ(x,y),y)とする。さらに、(x、y)における第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δ(x,y))であると予測されたため、下記式(49)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(ip,x,y-Δ(x,y))とする。次に、ステップS260を実行する。
G(x,y)=[I1(ip,x,y)+I4(ip,x-Δ(x,y),y-Δ(x,y))]/2 ・・・(47)
B(x,y)=I2(ip,x-Δ(x,y),y) ・・・(48)
R(x,y)=I3(ip,x,y-Δ(x,y)) ・・・(49)
ステップS260において、画像出力する。このステップは、実施の形態1のS152と同様に動作させる。次に、ステップS299を実行する。
ステップS299において、処理を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
複数画像のコントラストを用いてエッジの視差を検出し、この視差に基づき全画像領域の視差を演算し、この視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
なお、実施の形態2のカメラモジュールにおいて、エッジの視差を複数回の撮影のコントラスト評価値を用いて求めたが、本発明はこれに限定されない。例えば、求めるエッジ上の点を中心とするブロックを設定し、実施の形態1で用いた方法でこのブロックの視差を求め、この視差を採用してもよい。また、エッジ上の点の幾つかを合体させ、点ではなく、線として視差を演算してもよい。また、線状のエッジを端点や分岐点において分割し複数の線分とし、その視差を演算してもよい。また、この線分の周りを含むブロックを作成し、実施の形態1で用いた方法でこのブロックの視差を求めてよい。また、コントラスト評価値から求めた視差と実施の形態1で用いた方法で求めた視差を組み合わせてもよい。例えば、平均の視差を用いたり、アクチュエータ操作量関数の係数を学習してもよい。
また、実施の形態1および実施の形態2において、エッジ情報によりブロックに分割したが、本発明はこれに限定されない。例えば、複数の矩形ブロックに分割してもよい。
(実施の形態3)
本発明の実施の形態3に係るカメラモジュールは、撮像領域をブロックに分割し、ブロック毎の視差を演算し、ブロック毎に演算したコントラスト値と視差だけ移動した像の相関とに基づき視差を評価する。相関が大きくコントラストが大きいときは、求めた視差が正しいと判断し、視差に基づき通常の視差補正を行う。そして、相関が小さくコントラストが小さいときは求めた視差が低精度である判断し、低コントラスト用の視差補正を行う。さらに、相関が小さくコントラストが大きいときは、複数の距離の被写体が含まれるため求めた視差が正しくないと判断し、ブロックを再分割する。このようにして、全画像領域できれいな画像を得る。
以下、本発明の実施の形態3に係るカメラモジュールについて、図面を参照しながら説明する。
図23は、本発明の実施の形態3に係るカメラモジュールの構成を示す断面図である。カメラモジュール301の回路部320のSLSI325以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図24は、本発明の実施の形態3に係るカメラモジュールのブロック図である。SLSI225は、システム制御部331、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部335、および入出力部136を有する。また、回路部320は、前述の構成に加えて、アンプ126を有する。
画像処理部335は、ロジック回路、またはDSP(ディジタル信号プロセッサ:Digital Signal Processor)、あるいはこれらの両者を含んで構成され、システム制御部331のメモリ情報を利用し、各種画像処理を行う。画像処理部335は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、および低相関用視差補正部349を有する。
図25は、本発明の実施の形態3に係るカメラモジュールの動作を示すフローチャートである。SLSI325のシステム制御部331により、カメラモジュール301は、このフローチャートのとおりに動作する。
ステップS3000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール301に動作の開始を命令することにより、カメラモジュール301は、動作を開始する。次に、ステップS3100を実行する。
ステップS3100において、自動焦点制御部341は、自動焦点制御を実行する。図26は、本発明の実施の形態3に係る自動焦点制御の動作を示すフローチャートである。図26のフローチャートは、ステップS3100の動作の詳細を示す。
ステップS3100の自動焦点制御では、まず、ステップS3121を実行する。
ステップS3121において、カウンタiを0に初期化する。次に、ステップS3122を実行する。
ステップS3122において、アクチュエータの位置指令を演算する。下記式(50)のように、カウンタiを用いてアクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きが正である位置の指令を示す。ここで、kxは、設定された値である。次に、ステップS3123を実行する。
Xact=kx・i ・・・(50)
ステップS3123において、下記式(51)で示した操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。ここで、ka、およびkbは、それぞれ設定された値である。次に、ステップS3124を実行する。
Vact=ka・Xact+kb ・・・(51)
ステップS3124において、アクチュエータを動作させる。アクチュエータ操作量出力部134は、アンプ126を介したのちアクチュエータ可動部115のコイル(図示せず)に印加される電圧がVactになるように、出力する電圧信号を変更する。次に、ステップS3125を実行する。
ステップS3125において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS3126を実行する。
ステップS3126において、自動焦点制御用ブロックを設定する。画像領域の中心付近の矩形状の領域を自動焦点制御用ブロックとする。なお、このブロックは必ずしも中央付近である必要はなく、カメラを操作するユーザの意思などを反映し(例えば、センサで視点方向を検出し)、ブロックを設定してもよい。なお、単一のブロックではなく複数のブロックを選択し、複数のブロックにおいて後述の自動焦点制御用コントラスト評価値の平均を用いてもよい。また、複数のブロックにおいて後述の自動焦点制御用コントラスト評価値を演算し、後に少なくとも1つのブロックを自動焦点制御用ブロックとして選択してもよい。次に、ステップS3127を実行する。
ステップS3127において、システム制御部331のメモリ上のデータを用いて、自動焦点制御用コントラスト評価値を作成する。この演算は、第1の撮像信号I1の自動焦点制御用ブロックの画素について行う。下記式(52)のように、x方向とy方向の2階微分の和であるラプラシアンの絶対値を演算し、下記式(53)のように空間的にLPF(ローパスフィルタ。Low Pass Filter)を作用させ、これを下記式(54)のように自動焦点制御用ブロック内で平均して自動焦点用コントラスト評価値C3を得る。ここで、Nafは、自動焦点制御用ブロックの画素数である。次に、ステップS3128を実行する。
C1(x,y)=|I1(x-1,y)+I1(x+1,y)+I1(x,y-1)+I1(x,y+1)-4I1(x,y)|
・・・(52)
C2(x,y)=C1(x-1,y-1)+C1(x,y-1)+C1(x+1,y-1)
+C1(x-1,y)+C1(x,y)+C1(x+1,y)
+C1(x-1,y+1)+C1(x,y+1)+C1(x+1,y+1) ・・・(53)
C3=ΣC2(x,y)/Naf ・・・(54)
ステップS3128において、下記式(55)のように、コントラスト評価値C3をC3(i)として、システム制御部331のメモリに書き込む。次に、ステップS3129を実行する。
C3(i)=C3 ・・・(55)
ステップS3129において、下記式(56)のように、カウンタiに1を加える。次に、ステップS3130を実行する。
i=i+1 ・・・(56)
ステップS3130において、カウンタiをしきい値Safと比較し、その結果により分岐する。カウンタiがしきい値Safより小さいとき(ステップS3130の比較結果がY)、次に、ステップ3122を実行する。一方、カウンタiがしきい値Saf以上のとき(ステップS3130の比較結果がN)、次に、ステップS3140を実行する。このように、ステップS3121においてカウンタiを0に初期化し、ステップS3129においてカウンタiに1を加え、ステップS3130においてカウンタiで分岐を行うことにより、S3122からS3128までの処理をSaf回だけ繰り返す。
ステップS3140において、コントラスト評価値C3の評価を行う。図9のように、合焦位置では、コントラスト評価値C3が最大となる。下記式(57)のように、この最大値を与えるカウンタ値iを、コントラスト最大値を与えるカウンタ値iafとする。次に、ステップS3151を実行する。
iaf=C3の最大値を与えるi ・・・(57)
ステップS3151において、アクチュエータの位置指令を演算する。下記式(58)のように、コントラスト最大値を与えるカウンタ値iafを用いてアクチュエータの位置指令Xactを演算する。なお、位置指令Xactは、無限遠像の合焦位置を基準とし、被写体に向かう向きが正の位置の指令を示す。次に、ステップS3152を実行する。
Xact=kx・iaf ・・・(58)
ステップS3152において、操作量関数を用いてアクチュエータ操作量(アクチュエータ可動部115のコイルへの印加電圧)Vactを演算する。この動作は、ステップS3123と同様であり、説明を省略する。次に、ステップS3153を実行する。
ステップS3153において、アクチュエータを動作させる。この動作は、ステップS3124と同様であり、説明を省略する。次に、ステップS3160を実行する。
ステップS3160において、自動焦点制御を終了し、メインルーチンへ戻る。従って、次に、図25のステップS3200を実行する。
ステップS3200において、視差補正を実行する。図27は、本発明の実施の形態1に係る視差補正の動作を示すフローチャートである。図27のフローチャートは、ステップS3200の動作の詳細を示す。
ステップS3200の視差補正では、まず、ステップS3220を実行する。
ステップS3220において、撮影を実行する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を随時出力する。第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dは、撮像素子駆動部132が発生する信号に同期して、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dが出力する各画像のアナログ信号である撮像信号を入力し、CDSにより固定ノイズを除去し、AGCにより自動的に入力ゲインを調整し、ADCによりアナログ信号をディジタル値に変換し、第1の撮像信号I1(x,y)、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、および第4の撮像信号I4(x,y)として、システム制御部131の所定アドレスのメモリにディジタル値を書き込む。図12は、本発明の実施の形態1に係るカメラモジュールの撮像信号の座標を説明する図である。I1(x,y)は、水平方向にx番目、垂直方向にy番目の第1の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、第4の撮像信号I4(x,y)も同様である。すなわち、I2(x,y)、I3(x,y)、およびI4(x,y)は、それぞれ水平方向にx番目、垂直方向にy番目の第2の撮像信号、第3の撮像信号、および第4の撮像信号であることを示す。入力される画像の縦方向の画素数がH、横方向の画素数がLであり、それぞれの総画素数はH×Lであり、xは0からL−1まで変化し、yは0からH−1まで変化する。次に、ステップS3230を実行する。
ステップS3230において、ブロック分割部342は、システム制御部331のメモリ上のデータを利用し、ブロック分割を行う。そして、その結果をシステム制御部331のメモリに書き込む。図28は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロック分割を説明する図である。図28のように、第1の撮像信号I1を、横方向にM個のブロックに、縦方向にN個のブロックに、総数でM×N個に分割し、それぞれのブロックをBiで示す。ここで、iは0からM×N−1まで変化する。次に、ステップS3240を実行する。
ステップS3240において、視差演算部343は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差値を演算する。そして、システム制御部331のメモリに書き込む。まず、各ブロック(B0、B1、…、Bi、…、BMN-1)毎に、視差評価値(R0(k)、R1(k)、…、Ri(k)、…、RMN-1(k)。k=0、1、…、kmax)を演算する。図29は、本発明の実施の形態3に係るカメラモジュールにおいて、視差評価値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS3230で求められたi番目のブロックである。I4で示される領域は、Biからx方向にkだけ、y方向にkだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x-k,y-k)について、下記式(59)に示される絶対値差分総和を視差評価値Ri(k)として演算する。
Ri(k)=ΣΣ|I1(x,y)-I4(x-k,y-k)| ・・・(59)
この視差評価値Ri(k)は、i番目のブロックBiの第1の画像信号I1と、x、y方向にそれぞれ(k、k)だけ離れた領域における第4の画像信号I4がどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。図15のように、視差評価値Ri(k)はkの値によって変化し、k=Δiのとき極小値を持つ。これは、第4の画像信号I4のi番目のブロックBiをx、y方向にそれぞれ(-Δi、-Δi)だけ移動させて得られる画像信号は、第1の画像信号I1と最も相関がある(最も似ている)ことを示す。したがって、i番目のブロックBiについての第1の撮像信号I1と第4の撮像信号I4とのx、y方向の視差が(Δi、Δi)であることが分かる。以下、このΔ(i,j)を、i番目のブロックB(i,j)の視差値Δ(i,j)と呼ぶ。このように、i=0からi=M×N−1までBiの視差値Δiを求める。次に、ステップS3251を実行する。
ステップS3251において、相関演算部344は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差精度評価用相関値を演算する。そして、結果をシステム制御部131のメモリに書き込む。図30は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用相関値の演算領域を説明する図である。Biで示される(I1としても示されている)領域は、第1の撮像信号I1からステップS1230で求められたi番目のブロックである。I4で示される領域は、Biをx方向にΔiだけ、y方向にΔiだけ移動した領域である。そして、それぞれの領域の全画像信号I1(x,y)、I4(x-Δi,y-Δi)について、下記式(60)のように、視差精度評価用相関値R2iとする。ここで、ΣΣはブロックBi内での総和を示し、avgはブロックBi内での加算平均を示す。次に、ステップS3252を実行する。
R2i=ΣΣ{I1(x,y)-avg(I1(x,y))}×{I4(x-Δi,y-Δi)-avg(I4(x-Δi,y-Δi))}
/√ΣΣ{I1(x,y)-avg(I1(x,y))}2
/√ΣΣ{I4(x-Δi,y-Δi)-avg(I4(x-Δi,y-Δi))}2 ・・・(60)
ステップS3252において、視差精度評価用相関値R2iに基づき各ブロックBiごとの視差補正方式を選択する。下記式(61)のように、視差精度評価用相関値R2iがしきい値R20より大きいとき、視差補正方式フラッグFiに通常視差補正を示す1を代入し、システム制御部331のメモリに保存する。次に、ステップS3261を実行する。
Fi=1 (R2i>R20) ・・・(61)
ステップS3261において、コントラスト演算部345は、システム制御部331のメモリ上のデータを利用し、各ブロック毎の視差精度評価用コントラスト値を演算する。そして、システム制御部331のメモリに書き込む。下記式(62)のように、x方向とy方向の2階微分の和であるラプラシアンの絶対値を演算し、下記式(63)のように空間的にLPF(ローパスフィルタ。Low Pass Filter)を作用させ、これを下記式(64)のように各ブロックBi内で平均して視差精度評価用コントラスト評価値C6iを得て、システム制御部331のメモリに書き込む。ここで、NBiは、ブロックBiの画素数である。なお、コントラスト評価値は式(62)から式(64)に限定されず、コントラストを表現できるものであればよく、例えば、式(62)において、ラプラシアンの変わりに1次微分を用いたり、ラプラシアンの絶対値ではなくx、yそれぞれの2階微分の絶対値の和を用いてもよい。また、式(63)以外の形式のLPFを用いてもよい。さらに、式(64)の結果に対して、I1の大きさの平均で除するなどの正規化をしてもよい。次に、ステップS3262を実行する。
C4(x,y)=|I1(x-1,y)+I1(x+1,y)+I1(x,y-1)+I1(x,y+1)-4I1(x,y)|
・・・(62)
C5(x,y)=C4(x-1,y-1)+C4(x,y-1)+C4(x+1,y-1)
+C4(x-1,y)+C4(x,y)+C4(x+1,y)
+C4(x-1,y+1)+C4(x,y+1)+C4(x+1,y+1) ・・・(63)
C6i=ΣC5(x,y)/NBi ・・・(64)
ステップS3262において、視差精度評価用コントラスト評価値C6iに基づき各ブロックBiごとの視差補正方式を選択する。ここで、ステップS3262において、ステップS3251で視差補正方式フラッグFiに1が代入されないブロックにおいてのみ評価を行う。そのため、ステップS3261において、視差補正方式フラッグFi=1のブロックBiでは、視差精度評価用コントラスト値C6iの演算を省略してもよい。下記式(65)のように、視差精度評価用コントラスト評価値C6iがしきい値C60より小さいとき、視差補正方式フラッグFiに低コントラスト用視差補正を示す2を代入し、システム制御部331のメモリに保存する。また、下記式(66)のように、視差精度評価用コントラスト評価値C6iがしきい値C60以上のとき、視差補正方式フラッグFiに低相関用視差補正を示す3を代入し、システム制御部331のメモリに保存する。次に、ステップS3271を実行する。
Fi=2 (C6i<C60、かつ、Fi=1ではない) ・・・(65)
Fi=3 (C6i>=C60、かつ、Fi=1ではない) ・・・(66)
ステップS3271において、視差補正方式フラッグとブロックのサイズの大きさにより、ブロックの再分割が必要か否かを判断し、その判断結果に応じて分岐する。少なくとも1つのブロックの視差補正方式フラッグFiが3であり、かつ、全てのブロックBiの中で最小のブロックの画素数がS0より大きいとき、ブロックの再分割が必要であると判断し(ステップS1271の判断結果がYes)、次に、ステップS3272を実行する。全てのブロックの視差補正方式フラッグFiが1または2のとき、あるいは、全てのブロックBiの中で最小のブロックの画素数がS0以下のとき、ブロックの再分割が不要と判断し(ステップS3271の判断結果がNo)、次に、ステップS3280を実行する。
ステップS3272において、ブロック再分割部346は、システム制御部331のメモリ上のデータを利用し、ブロックを再分割する。図31(A)は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロックの再分割の前の状態を説明する図であり、図31(B)は、本発明の実施の形態3に係るカメラモジュールにおいて、ブロックの再分割の後の状態を説明する図である。図31において、簡単のため、ブロックが4つであり、視差補正方式フラッグFiに低相関用視差補正を示す3が代入されているブロックB2(図31(A))を4つのブロックB2、B4、B5、B6に分割する例(図31(B))が示されている。ブロックB2を再分割のした後のブロックを示す番号は、分割したブロックの番号(2)と、未使用の番号(4、5、6)をあてはめる。次に、S3240を実行する。
このように、低相関(Fi=3)であるブロックを再分割し(ステップS3272)、再分割したブロックに対する視差を演算し(ステップS3240)、相関を演算し評価し(ステップS3251、ステップS3252)、コントラストを演算し評価し(ステップS3261、ステップS3262)、ブロックを再分割するかどうか判断し(ステップS3271)さらに、低相関(Fi=3)であるブロックを再分割する(ステップS3272)動作を、全てのブロックのうちで最小のブロックのサイズがS0になるまで、あるいは全てのブロックの視差補正方式フラッグFiが1または2になるまで、繰り返す。なお、ステップS3240からステップS3272において、ブロックの再分割によりブロックのサイズやブロックの番号が変更されるため、それらのステップの動作が適宜変更される。
以上の処理により、上記のステップS3271の判断結果がNとなった時点(すなわちステップS3280の実行を開始する時点)では、ステップS3272において分割されたブロックを含め、全てのブロックBiに対する視差補正方式フラッグFiには、通常視差補正を示す1、低コントラスト用視差補正を示す2、あるいは低相関用視差補正を示す3が代入されている。ステップS3280において、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349は、システム制御部331のメモリ上のデータを利用し、各ブロック毎に視差方正方式フラッグFiの値に応じたの視差補正を行い画像を合成し、その結果をシステム制御部331のメモリに書き込む。
ステップS3280において視差補正方式フラッグFi=1のブロックでは、視差精度評価用相関値R2iが大きい。図32は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用相関値R2iと視差補正方式フラッグFiの関係を説明する図である。ステップS3251において求めた視差精度評価用相関値R2iは、i番目のブロックBi内の第1の撮像信号I1(x,y)とx方向とy方向に視差Δiだけ移動した第4の撮像信号I4(x-Δi,y-Δi)が一致するとき1となり、両者がランダムノイズのときのようにランダムに異なる場合0となり、両者が白黒反転のような関係にあるとき−1となる。このように、両者が似ているとき視差精度評価用相関値R2iが大きく1に近くなり、両者が似ていないとき、視差精度評価用相関値R2iが小さく1から離れる。ここで、図32のように、しきい値R20を1に近い値(例えば0.9)に設定し、これより視差精度評価用相関値R2iが大きいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x-Δi,y-Δi)が似ていると判断できる。これは、i番目のブロックBiにおいて、視差Δiの精度が高く、かつ、第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x-Δi,y-Δi)との間で同一に距離の被写体のみが存在することを示す。そのため、第4の撮像信号I4をx方向にΔiだけ移動し、y方向にΔiだけ移動することにより、i番目のブロックBiにおける撮像信号を再現できる。さて、第2の撮像信号I2はx方向にのみ視差の影響があり、第3の撮像信号I3はy方向にのみ視差の影響があるため、第2の撮像信号I2をx方向にΔiだけ移動することによりブロックBiにおける青色の撮像信号を再現でき、第3の撮像信号I3をy方向にΔiだけ移動することによりブロックBiにおける赤色の撮像信号を再現できる。
そこで、視差補正方式フラッグFi=1のブロックでは、通常視差補正部347は、システム制御部331のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像素子123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像素子123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。i番目のブロックBiにおいて、第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたため、下記式(67)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)、および第4の撮像信号I4(x-Δi,y-Δi)の平均とする。このように平均をとることにより、ランダムノイズの影響を低減できる。また、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、下記式(68)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x-Δi,y)とする。さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、下記式(69)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y-Δi)とする。
G(x,y)=[I1(x,y)+I4(x-Δi,y-Δi)]/2 ・・・(67)
B(x,y)=I2(x-Δi,y) ・・・(68)
R(x,y)=I3(x,y-Δi) ・・・(69)
ステップS3280において視差補正方式フラッグFi=2のブロックでは、視差精度評価用相関値R2iが小さく、視差精度評価用コントラスト評価値C6iが小さい。図33は、本発明の実施の形態3に係るカメラモジュールにおいて、視差精度評価用コントラスト評価値と視差補正方式フラッグの関係を説明する図である。ステップS3261において求めた視差精度評価用コントラスト評価値C6は、i番目のブロックBi内の第1の撮像信号I1(x,y)がはっきりした、すなわち濃淡の変化が大きい画像を示すとき大きくなり、ぼやけた、すなわち濃淡の変化が少ない画像を示すとき0に近くなる。ここで、図33のように、しきい値C60を設定し、これより視差精度評価用コントラスト評価値が小さいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)の示す画像は濃淡が小さく、変化に乏しい画像である。そのため、信号成分に対するノイズ成分が大きくなり、視差Δiの精度が悪いと判断できる。また、濃淡が小さい画像であるため、再現する画像に多少の誤差が含まれても実用上問題ない。そこで、主に第1の撮像信号I1(x,y)の情報に基づき色を再現する。なお、第2の撮像信号I2(x,y)、第3の撮像信号I3(x,y)、あるいは第4の撮像信号I4(x,y)の情報に基づき色を再現してよい。ただし、赤色、青色と比較し、緑色に最も視覚感度が高いため、物体光の緑色成分の情報を持つ第1の撮像信号I1(x,y)、あるいは第4の撮像信号I4(x,y)に基づくことが好ましい。また、視差Δiの精度が悪いため、第1の撮像信号I1(x,y)、あるいは第4の撮像信号I4(x,y)を単独で用いることが好ましい。
そこで、視差補正方式フラッグFi=2のブロックでは、低コントラスト用視差補正部348は、システム制御部331のメモリ上のデータを利用し、ブロックごとに、そのブロックに対応する視差値を用いて視差補正したのち、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。第1の撮像素子123aおよび第4の撮像素子123dは、主に物体光の緑色成分を受光するため、第1の撮像信号I1、および第4の撮像信号I4は、物体光の緑色成分の情報信号である。また、第2の撮像素子123bは、主に物体光の青色成分を受光するため、第2の撮像信号I2は、物体光の青色成分の情報信号である。さらに、第3の撮像素子123cは、主に物体光の赤色成分を受光するため、第3の撮像信号I3は、物体光の赤色成分の情報信号である。i番目のブロックBiにおいて、第1の撮像素子123aと第4の撮像素子123dとの視差が(Δi、Δi)であると予測されたが誤差が大きいと予想されるため、下記式(70)のように、画素座標(x、y)における緑色の強度を示すG(x,y)を、第1の撮像信号I1(x,y)とする。また、下記式(71)のように、青色の強度を示すB(x,y)を、第1の撮像信号I1(x,y)に比例係数kBを乗じたものとする。ここで、比例係数kBは、定数とする。なお、比例係数kBはブロックBiごとに変更してもよく、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する第2の撮像信号I2(x,y) のブロックBiの中央の値の比や、第1の撮像信号I1(x,y) のブロックBiの中央の値に対する視差Δiだけx方向に移動した第2の撮像信号I2(x-Δi,y) のブロックBiの中央の値の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する第2の撮像信号I2(x,y)の平均の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する視差Δiだけx方向に移動した第2の撮像信号I2(x-Δi,y)の平均の比でもよい。さらに、下記式(72)のように、赤色の強度を示すR(x,y)を、第1の撮像信号I1(x,y)に比例係数kRを乗じたものとする。ここで、比例係数kRは、定数とする。なお、比例係数kRはブロックBiごとに変更してもよく、第1の撮像信号I1(x,y)のブロックBiの中央の値に対する第3の撮像信号I3(x,y) のブロックBiの中央の値の比や、第1の撮像信号I1(x,y) のブロックBiの中央の値に対する視差Δiだけy方向に移動した第3の撮像信号I3(x,y-Δi) のブロックBiの中央の値の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する第3の撮像信号I3(x,y)の平均の比や、ブロックBiの第1の撮像信号I1(x,y)の平均に対する視差Δiだけy方向に移動した第3の撮像信号I3(x,y-Δi)の平均の比でもよい。なお、濃淡が小さいため、多少の誤差が含まれてもわからないことを考慮すれば、視差補正方式フラッグFi=1のときと同様に、第1の撮像素子123aと第2の撮像素子123bの視差が(Δi、0)であると予測されたため、式(68)のように、画素座標(x、y)における青色の強度を示すB(x,y)を、第2の撮像信号I2(x-Δi,y)とし、さらに、第1の撮像素子123aと第3の撮像素子123cの視差が(0、Δi)であると予測されたため、式(69)のように、(x、y)における赤色の強度を示すR(x,y)を、第3の撮像信号I3(x,y-Δi)としてもよい。
G(x,y)=I1(x,y) ・・・(70)
B(x,y)=I1(x,y)*kB ・・・(71)
R(x,y)=I1(x,y)*kR ・・・(72)
ステップS3280において視差補正方式フラッグFi=3のブロックでは、視差精度評価用相関値R2iが小さく、視差精度評価用コントラスト評価値C6iが大きい。図32のように、しきい値R20を1に近い値(例えば0.9)に設定し、これより視差精度評価用相関値R2iが小さいとき、i番目のブロックBi内の第1の撮像信号I1(x,y)と視差Δiだけ移動した第4の撮像信号I4(x-Δi,y-Δi)が似ていないと判断できる。これは、i番目のブロックBiにおいて、異なる被写体距離の被写体が複数含まれ、視差Δiが全ての被写体に対応できないことを示す。
そこで、視差補正方式フラッグFi=3のブロックでは、低相関用視差補正部349は、システム制御部331のメモリ上のデータを利用し、ブロックをさらにエッジを用いて複数のブロックに再分割し、視差補正を行い、画像合成する。そして、その結果をシステム制御部331のメモリに書き込む。図34は、本発明の実施の形態3に係る低相関用視差補正部349の動作を示すフローチャートである。
ステップS3310において、低相関用視差補正部349の動作を開始する。次に、ステップS3320を実行する。
ステップS3320において、エッジ検出用コントラスト評価値を演算する。この演算は、第1の撮像信号I1のみについて行う。下記式(73)のように、ラプラシアンを演算し、さらに下記式(74)のように空間的にLPF(ローパスフィルタ)を作用させたものを、エッジ検出用コントラスト評価値C8(x,y)とする。図35(A)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明する元画像であり、図35(B)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明するエッジ検出用コントラスト評価値の画像である。式(73)(74)により、図35(A)の元画像のエッジ検出用コントラスト評価値C8(x,y)を計算すると、図35(B)のようになる。なお、図35(B)は、式(74)の絶対値が大きい場所を黒で表示している。次に、ステップS3330を実行する。
C7(x,y)=I1(x-1,y)+I1(x+1,y)+I1(x,y-1)+I1(x,y+1)-4I1(x,y)
・・・(73)
C8(x,y)=C7(x-1,y-1)+C7(x,y-1)+C7(x+1,y-1)
+C7(x-1,y)+C7(x,y)+C7(x+1,y)
+C7(x-1,y+1)+C7(x,y+1)+C7(x+1,y+1) ・・・(74)
ステップS3330において、エッジを検出する。図35(C)は、本発明の実施の形態3に係るカメラモジュールの低相関用視差補正部349のエッジ検出を説明するエッジの画像である。図35(B)のエッジ検出用コントラスト評価値C2(x,y)の0クロス(値が正から負に変化する点、および値が負から正に変化する点)を検知することにより、図35(C)のようなエッジを検出できる。次に、ステップS3340を実行する。
ステップS3340において、ブロックを再分割する。図35(C)のように、エッジに囲まれた領域にBi、Bj、Bj+1、・・・Bj+nのように番号を付与する。なお、j、j+1、・・・、j+nはブロックを示す番号として未使用のものである。ここで、図35において、簡単のため、ブロックBiを5つのブロックに再分割する例を示しており、n=3である。なお、ノイズなどによるエッジの誤検出や消失の防止のために、膨張アルゴリズムや収縮アルゴリズムを用いて、エッジを補正してもよい。次に、ステップS3350を実行する。
ステップS3350において、各ブロック毎の視差値を演算する。この動作は、ステップS3240と同様であり、説明を省略する。次に、ステップS3360を実行する。
ステップS3360において、視差を補正し、画像を合成する。この動作は、通常視差補正部347の動作と同様であり、説明を省略する。次に、ステップS3370を実行する。
ステップS3670において、低相関用視差補正の動作を終了する。
以上のように、ステップS3280を動作させ、次に、ステップS3290を実行する。
ステップS3290において、視差補正を終了し、メインルーチンへ戻る。すなわち、次に、図25に示すステップS3800を実行する。
ステップS3800において、画像を出力する。入出力部136は、システム制御部331のメモリ上のデータであるG(x,y),B(x,y),R(x,y)を、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。なお、G(x,y),B(x,y),R(x,y)の代わりに、例えば、輝度、色度信号などの出力を出力してもよい。また、ホワイトバランスやγ補正などの画像処理後の値を出力してもよい。さらに、可逆圧縮やJPEG等のような非可逆圧縮をしたデータを出力してもよい。また、それらの複数を出力してもよい。次に、S3900を実行する。
ステップS3900において、動作を終了する。
以上のように構成し、動作させることにより、以下の効果を有する。
式(1)のように被写体距離Aに応じて第1〜第4のレンズ部113a〜113dがそれぞれ形成する4つの物体像の相対的位置が変化する。すなわち、被写体距離Aが小さくなると、視差Δが大きくなる。そのため、距離が異なる複数の被写体を同時に撮影するとき、被写体毎に視差Δが異なる。実施の形態3のカメラモジュールでは、ステップS3230において、全画像領域をブロックに分割し、ステップS3240において、ブロック毎の視差を演算し、ステップS3280において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
実施の形態3のカメラモジュールでは、ステップS3230において、全画像領域を矩形状のブロックに分割し、ステップS3240において、ブロック毎の視差を演算し、ステップS3280において、ブロック毎の視差に基づき視差の影響を低減するように画像合成することで視差補正する。これにより、距離が異なる複数の被写体を同時に撮影するときにおいても、適宜それぞれの被写体の視差を補正し、全画像領域で視差の影響が低減されたきれいな画像を得ることができる。
また、ステップS3230において分割したブロック内に被写体距離が異なる複数の物体が含まれることがあり、その場合、物体像毎に視差が異なる。実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算し、ステップS3252において視差精度評価用相関値R2iを評価することにより視差Δiの精度を評価し、ステップS3261において視差精度評価用コントラスト評価値C6iを演算し、ステップS3262において視差精度評価用コントラスト評価値C6iを評価することにより視差Δiの精度を評価し、視差補正方式フラッグFiを設定し、視差補正の方式を決定する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3261において視差精度評価用コントラスト評価値C6iを演算し、ステップS3262においてブロック毎に演算した視差Δiがどれだけ精度があるかをブロック毎の視差精度評価用コントラスト評価値C6iコントラストの大小によって判断し、コントラストが大きいとき視差補正方式フラッグFi=1としステップS3280において通常視差補正を行い、コントラストが小さいとき視差補正方式フラッグFi=2としてステップS3280において低コントラスト用の視差補正を行う。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。ステップS3252において視差精度評価用相関値R2iが大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さいときステップS3280において低相関用視差補正を行う。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。視差精度評価用相関値R2iの大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さいときステップS3272、およびステップS3280の低相関用視差補正部349においてブロックを再分割し再分割したブロック毎に視差補正を行う。すなわち、低相関と判断されたブロックを再分割する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
また、実施の形態3のカメラモジュールでは、ステップS3251において視差精度評価用相関値R2iを演算する。視差精度評価用相関値R2iは、ブロック毎に演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、視差だけ移動した像がどれだけ相関があるかを表す値である。ステップS3261において視差精度評価用コントラスト評価値C6iを演算する。視差精度評価用コントラスト評価値C6iは、演算した視差がどれだけ精度があるかを表す視差制度評価値の一つであり、どれだけコントラストが高いかを表す値である。視差精度評価用相関値R2iが大きくかつ視差精度評価用コントラスト評価値C6iが大きいときステップS3280において通常視差補正を行い、視差精度評価用相関値R2iが小さくかつ視差精度評価用コントラスト評価値C6iが小さいときステップS3280において低コントラスト用視差補正を行い、視差精度評価用相関値R2iが小さくかつ視差精度評価用コントラスト評価値C6iが大きいときステップS3272、およびステップS3280の低相関用視差補正部349においてブロックを再分割し再分割したブロック毎に視差補正を行う。すなわち、低相関でありかつ高コントラストであると判断されたブロックを再分割する。これにより、ブロック毎に最適な補正方法で画像を補正できるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
なお、実施の形態3において、画像出力のタイミングは、上記に限定されず、適宜プレビュー出力をしてもよい。例えば、実施の形態3において、ステップS3100において自動焦点制御を行う途中で、視差補正なしの画像を出力してもよい。また、ステップS3271の後、視差補正が可能なブロックのみ視差補正を行い、その他のブロックは視差補正を行わずに、プレビュー画面を更新してもよい。
また、実施の形態3において、ステップS3320で式(74)のようにエッジ検出用コントラスト評価値C8(x,y)を演算し、ステップS3330で0クロスからエッジを検出したが、これに限定されない。例えば、ブロック内のヒストグラムを作成し、極小値をしきい値として2値化によりブロック分割してもよい。ここで、複数のしきい値を持ってもよい。また、1回微分の絶対値を用いてエッジ検出してもよい。
(実施の形態4)
本発明の実施の形態4は、インターレース読み込みをする場合に、それぞれのフィールド毎に視差を求め画像合成し、それぞれのフィールド毎の合成画像を合成し最終画像とする。このようにして、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求められ、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
以下、本発明の実施の形態4に係るカメラモジュールについて、図面を参照しながら説明する。
図36は、本発明の実施の形態4に係るカメラモジュールの構成を示す断面図である。カメラモジュール401の回路部420のSLSI425以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図37は、本発明の実施の形態4に係るカメラモジュールのブロック図である。SLSI425は、システム制御部431、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部435、および入出力部136を有する。また、回路部420は、前述の構成に加えて、アンプ126を有する。
画像処理部435は、ロジック回路、またはDSP(ディジタル信号プロセッサ。Digital Signal Processor)、あるいはこれらの両者を含んで構成され、システム制御部431のメモリ情報を利用し、各種画像処理を行う。画像処理部435は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349、フレーム画像作成部451を有する。
図38(A)〜図38(D)は、本発明の実施の形態4のカメラモジュールに係るフィールド画像を説明する図である。画像全体は、図38(A)に示すように、第1のフィールド画像と第2のフィールド画像が交互に配置される。まず、第1のフィールド画像を構成する撮像信号が転送され、次に第2のフィールド画像を構成する撮像信号が転送される。通常の白黒画像では、これらを1ラインずつ交互に配置することにより画像全体を再現する。図38(B)のように画像全体(フレーム画像)の幅がL、高さがHであるとき、図38(C)および図38(D)のように、第1のフィールド画像、および第2のフィールド画像の幅はそれぞれLであり、高さはH/2である。
図39は、本発明の実施の形態4に係るカメラモジュールの動作を示すフローチャートであり、図40は、本発明の実施の形態4に係るカメラモジュールの動作を示すタイムチャートである。SLSI425のシステム制御部431により、カメラモジュール401は、このフローチャートとタイムチャートに示されるとおりに動作される。
ステップS4000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール401に動作の開始を命令することにより、カメラモジュール401は、動作を開始する。次に、ステップS4100を実行する。
ステップS4100において、自動焦点制御部341は、自動焦点制御を実行する。この動作は、実施の形態3のステップS3100と同様であり説明を省略する。ただし、図40に示すように、第1のフィールドのみを転送し、第1のフィールド画像のみを使用するため、適宜変更が加えられる。そのため、画像全体(第1のフィールド、および第2のフィールド)を転送する場合と比較し、転送に要する時間が略半分になるため、その分だけ自動焦点制御の時間を短縮できる。次に、ステップS4200を実行する。
ステップS4200において、第1のフィールドの視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。ただし、図40に示すように、第1のフィールドのみを転送し、第1のフィールド画像のみを使用し、第1のフィールドの赤色の強度を示すRf1(x,y)、緑色の強度を示すGf1(x,y)、および青色の強度を示すBf1(x,y)を作成するように、適宜変更が加えられる。次にステップS4300を実行する。
ステップS4300において、第2のフィールドの視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。ただし、図40に示すように、第2のフィールドのみを転送し、第2のフィールド画像のみを使用し、第2のフィールドの赤色の強度を示すRf2(x,y)、緑色の強度を示すGf2(x,y)、および青色の強度を示すBf2(x,y)を作成するように、適宜変更が加えられる。次にステップS4400を実行する。
ステップS4400において、フレーム画像(画像全体)を作成する。下記式(75)のように、第1フレームの赤色の強度を示すRf1(x,y)をフレーム画像の偶数行の赤色の強度を示すR(x,2*y)とし、下記式(76)のように、第2フレームの赤色の強度を示すRf2(x,y)をフレーム画像の奇数行の赤色の強度を示すR(x,2*y+1)とする。また、下記式(77)のように、第1フレームの緑色の強度を示すGf1(x,y)をフレーム画像の偶数行の緑色の強度を示すG(x,2*y)とし、下記式(78)のように、第2フレームの緑色の強度を示すGf2(x,y)をフレーム画像の奇数行の緑色の強度を示すG(x,2*y+1)とする。また、下記式(79)のように、第1フレームの青色の強度を示すBf1(x,y)をフレーム画像の偶数行の青色の強度を示すB(x,2*y)とし、下記式(80)のように、第2フレームの青色の強度を示すBf2(x,y)をフレーム画像の奇数行の青色の強度を示すB(x,2*y+1)とする。ここで、xは0からLまで変化させ、yは0からH/2−1まで変化させる。次に、ステップS4800を実行する。
R(x,2*y)=Rf1(x,y) ・・・(75)
R(x,2*y+1)=Rf2(x,y) ・・・(76)
G(x,2*y)=Gf1(x,y) ・・・(77)
G(x,2*y+1)=Gf2(x,y) ・・・(78)
B(x,2*y)=Bf1(x,y) ・・・(79)
B(x,2*y+1)=Bf2(x,y) ・・・(80)
ステップS4800において、画像を出力する。この動作は実施の形態3と同様であり、説明を省略する。次に、S4900を実行する。
ステップS4900において、動作を終了する。
上記のように構成し動作させることにより、実施の形態4のカメラモジュールは、実施の形態3と同様の効果を有する。
また、実施の形態4のカメラモジュールは、インターレース読み込みをする場合に、ステップS4200において第1のフィールドの視差を求め、求められた視差に基づいて視差補正を行って画像(Rf1,Gf1,Bf1)を作成する。また、ステップS4300において第2のフィールドの視差を求め、求められた視差に基づいて視差補正を行って画像(Rf2,Gf2,Bf2)を作成する。さらに、ステップS4400において、それぞれのフィールド毎の合成画像を合成し、最終画像とする。このようにして、各フィールドごとに視差演算を行うことにより、動く被写体の撮影時に各フィールドの撮影時間が異なることにより各フィールドの画像が異なる場合においても、各フィールドごとの視差を正しく求めることができる。これにより、この視差を用いて画像合成することができるため、全画像領域で視差の影響がさらに低減されたきれいな画像を得ることができる。
なお、実施の形態4のカメラモジュールはフィールドの数が2であったが、これに限定されない。より多いフィールド(例えば、3フィールド、4フィールド)であってもよい。
なお、実施の形態4のカメラモジュールは、それぞれのフィールドの画像を作成したが、フレーム画像の領域をあらかじめ用意し、直接代入してもよい。また、それぞれのフィールドの視差情報などを保持し、フィールド画像を作成せず、直接フレーム画像を作成してもよい。
また、実施の形態4のカメラモジュールは、図41(A)および図41(B)にそれぞれ示すように、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、および第4のカラーフィルタ124dのうち、X方向に隣接する2つのカラーフィルタが、主に緑色を透過する分光透過特性を有しても良い。なお、図41(A)〜図41(C)では、それぞれのカラーフィルタが透過する色をR,G,Bの記号で図中に示した。図41(A)または図41(B)の構成によれば、撮像素子123においてX方向に隣接する2つの撮像素子(すなわち、第1の撮像素子123aと第2の撮像素子123b、または、第3の撮像素子123cと第4の撮像素子123d)が、物体光における緑色の成分を受光することとなる。
あるいは、図41(C)に示すように、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、および第4のカラーフィルタ124dを配置し、X方向に隣接する2つのカラーフィルタ(この例では第2のカラーフィルタ124bと第3のカラーフィルタ124c)が、主に緑色を透過する分光透過特性を有するようにしても良い。なお、図41(C)に示すように4つのカラーフィルタが配置されている場合、レンズ113における第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dは、これらのカラーフィルタの中心に光軸が一致するように配置される。同様に、撮像素子123における第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子123dも、レンズ部113における各レンズ部の配置に併せて配置される。ここで、第1の撮像信号I1と第2の撮像信号I2とから視差を求めるように、適宜変更が加えられる。
本実施形態のカメラモジュール401において、図41(A)〜図41(C)に示すようなカラーフィルタ配置を採用することにより、以下のような利点がある。第1の撮像信号I1と第2の撮像信号I2との比較により視差を求めるため、視差の発生する方向がx方向のみであり、各フィールド間をまたがることがない。そのため、より正確な視差を求めることができる。
なお、図41(A)〜図41(C)は、あくまでも好ましいカラーフィルタ配置の例を示したものであって、本発明の実施形態をこれに限定するものではない。例えば、BとRのカラーフィルタの位置が逆であっても良い。
(実施の形態5)
本発明の実施の形態5は、視差が小さい、すなわち被写体距離が大きいブロックを背景であると認識し、あらかじめ保存された背景画像等の別画像と置き換える。このようにして、視差に基づき補正した画像と別画像とを組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。
以下、本発明の実施の形態5に係るカメラモジュールについて、図面を参照しながら説明する。
図42は、本発明の実施の形態5に係るカメラモジュールの構成を示す断面図である。カメラモジュール501の回路部520のSLSI525以外は、実施の形態1と同様であり、実施の形態1と同様の部材には同一の符号を付してそれらについての説明を省略する。
図43は、本発明の実施の形態5に係るカメラモジュールのブロック図である。SLSI525は、システム制御部531、撮像素子駆動部132、撮像信号入力部133、アクチュエータ操作量出力部134、画像処理部535、入出力部136、および背景画像保存部551を有する。また、回路部520は、前述の構成に加えて、アンプ126を有する。
画像処理部535は、ロジック回路、またはDSP(ディジタル信号プロセッサ:Digital Signal Processor)、あるいは両者を含んで構成され、システム制御部331のメモリ情報を利用し、各種画像処理を行う。画像処理部335は、自動焦点制御部341、ブロック分割部342、視差演算部343、相関演算部344、コントラスト演算部345、ブロック再分割部346、通常視差補正部347、低コントラスト用視差補正部348、低相関用視差補正部349、および背景画像置換部552を有する。
背景画像保存部551は、RAMやフラッシュメモリのような書き換え可能なメモリから構成され、画像情報が記憶され、適宜、外部から入出力部136、およびシステム制御部531を介し、書き換えられる。
図44は、本発明の実施の形態5に係るカメラモジュールの動作を示すフローチャートである。SLSI525のシステム制御部531により、カメラモジュール501は、このフローチャートに示されるとおりに動作される。
ステップS5000において、動作を開始する。例えば、上位CPU(図示せず)がシャッターボタン(図示せず)などが押されたことを検知し、入出力部136を介し、カメラモジュール501に動作の開始を命令することにより、カメラモジュール501は、動作を開始する。次に、ステップ54100を実行する。
ステップS5100において、自動焦点制御部341は、自動焦点制御を実行する。この動作は、実施の形態3のステップS3100と同様であり説明を省略する。次に、ステップS5200を実行する。
ステップS5200において、視差補正を実行する。この動作は、実施の形態3のステップS3200と同様であり説明を省略する。次に、ステップS5300を実行する。
ステップS5300において、背景を置き換える。下記式(81)(82)(83)のように、視差Δiがしきい値Δshよりも大きい画素は、画像の変更を行わない。一方、下記式(84)(85)(86)のように、視差Δiがしきい値Δsh以下の画素は、背景画像保存部551に保存された画像(Rback,Gback,Bback)と置き換える。なお、ΔiはステップS5200で求められたブロックBiの視差を示す。次に、ステップS5800を実行する。
R(x,y)=R(x,y) (Δi>Δsh) ・・・(81)
G(x,y)=G(x,y) (Δi>Δsh) ・・・(82)
B(x,y)=B(x,y) (Δi>Δsh) ・・・(83)
R(x,y)=Rback(x,y) (Δi≦Δsh) ・・・(84)
G(x,y)=Gback(x,y) (Δi≦Δsh) ・・・(85)
B(x,y)=Bback(x,y) (Δi≦Δsh) ・・・(86)
ステップS5800において、画像を出力する。この動作は実施の形態3と同様であり、説明を省略する。次に、S5900を実行する。
ステップS5900において、動作を終了する。
上記のように構成し動作させることにより、実施の形態5のカメラモジュールは、実施の形態3と同様の効果を有する。
本発明の実施の形態5は、ステップS5300において、視差Δiが小さい、すなわち被写体距離が大きいブロックBiを背景であると認識し、あらかじめ保存された背景画像(Rback,Gback,Bback)と置き換える。このようにして、視差に基づき補正した画像と別画像を組み合わせることにより、補正した画像から視差が大きい部分の画像を正しく抽出できるため、きれいにこれらの画像を組み合わせることができる。図45(A)〜図45(C)は、本発明の実施の形態5に係るカメラモジュールの背景置換を説明する図である。実施の形態5によれば、例えば、図45(A)のような背景が山である人物像を撮影した場合、人物像の視差Δiは大きく背景の山の視差Δiは小さい。ここで、視差のしきい値Δshを人物像の視差と山の視差との間に設定すれば、背景の山の画素を背景画像保存部に保存された海の背景画像(図45(B)。Rback,Gback,Bback)と置き換えることにより、図45(C)に示すように、背景が海である人物像の画像を作成できる。
(実施の形態6)
本発明にかかる電子機器の一実施形態を図46(A)および図46(B)に示す。図46(A)および図46(B)に示すように、本発明にかかる電子機器の一実施形態としてのカメラ付き携帯電話600は、スピーカ601、アンテナ602、液晶ディスプレイ603、キー部605、マイクロフォン606を備えており、ヒンジ部604によって折りたたみが可能である。また、携帯電話600は、図46(B)に示すように、液晶ディスプレイ603の背面側にレンズモジュール110を内蔵し、静止画や動画の撮影が可能である。
なお、本発明にかかる電子機器は、携帯電話に限らず、車載用カメラや、ディジタルカメラやカメラ付きPDA等としても実施可能である。
以上、本発明のいくつかの実施形態を説明したが、これらはあくまでも例示であって、本発明の実施に際しては、以下のとおり、種々の変更が可能である。
例えば、実施の形態1から実施の形態5のカメラモジュールにおいて、演算された視差をそのまま利用したが、適宜リミットしてもよい。レンズ特性によっては被写体距離Aがある値よりも小さいとき、画像が不鮮明となる。そのため、この値を被写体距離Aの最小値と定めれば、視差Δの最大値を定められる。この値よりも大きい視差は、誤差であるとして無視してもよい。また、このような場合、視差評価値が2番目に小さい値を視差として採用してもよい。
また、実施の形態1から実施の形態5のカメラモジュールでは、視差を第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算したが、本発明はこれに限定されない。例えば、紫色の被写体は緑色成分が少なく、青色成分、赤色成分を多く含むため、第1の撮像信号I1(主に緑色を示す)と第4の撮像信号I4(主に緑色を示す)とから演算できないことがある。この場合、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差を演算してもよい。また、第1の視差信号I1(主に緑色を示す)と第4の視差信号I4(主に緑色を示す)とから視差が演算不能であり、かつ、第2の撮像信号I2(主に青色を示す)と第3の撮像信号I3(主に赤色を示す)とから視差が演算不能であれば、視差の影響がないものとみなし、視差なしとすればよい。
また、実施の形態1から実施の形態5のカメラモジュールをカメラに搭載するとき、撮影時に上側になる方に第2の撮像素子123aが、下側になる方に第3の撮像素子123cが配置されるように、第1〜第4の撮像素子123a〜123dを配置することにより、上側が青色に敏感となり、下側が赤色に敏感となるので、風景写真の色再現をより自然にできる。
また、視差評価値に目立つ極値が2つあるときは、より大きい方の視差を採用してもよい。このようなブロックには、被写体と背景が含まれており、被写体距離と背景距離とが異なるため、極値が2つ現れる。背景距離と比較して被写体距離は小さいため、背景の視差と比較して被写体の視差は大きい。ここで、大きい方の視差を採用すれば、背景の視差の影響は低減できないが、画質に直接影響する被写体の視差の影響を低減できる。
また、実施の形態1から実施の形態5において、撮像素子123は、第1の撮像素子123a、第2の撮像素子123b、第3の撮像素子123c、および第4の撮像素子から構成され、撮像信号入力部133は、第1の撮像信号入力部133a、第2の撮像信号入力部133b、第3の撮像信号入力部133c、および第4の撮像信号入力部133dから構成された。しかし、撮像素子123を1つの撮像素子で構成し、この受光面上の異なる位置に第1〜第4のレンズ部113a〜113dによる4つの像を形成しても良い。また、撮像信号入力部133が1つの撮像素子123からの信号が入力される1つの撮像信号入力部から構成されてもよい。この場合、システム制御部131、231、331、431、531のメモリ上に置かれたデータから適宜領域を選択し、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4とすればよい。
また、実施の形態1から実施の形態5において、視差評価値Ri(k)として式(4)、(59)のような差分絶対値総和を用いたがこれに限定されない。例えば、差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの差分の二乗値の総和を第1の撮像信号I1からブロック内の平均を差分したものの二乗値の総和の平方根で除し第4の撮像信号I4からブロック内の平均を差分したものの二乗値の総和の平方根で除したものを利用してもよい。
また、視差評価値Ri(k)として、式(60)や、第1の撮像信号I1からブロック内の平均を差分したものと第4の撮像信号I4からブロック内の平均を差分したものとの乗算結果の総和を用いてよい。ただし、第1から第5の実施の形態の視差評価値Ri(k)は相関が大きい(似ている)ほど小さくなるため、図15のように極小値を与えるkが視差Δiを与えたが、式(60)などを用いたとき相関が大きい(似ている)ほど値が大きくなるため、極大値を与えるkを視差Δiにするなどの適宜変更が必要である。
また、実施の形態1から実施の形態5において、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ113c、および第4のレンズ部113dの光軸の中心を互いに結んで得られる矩形が正方形になるように配置されたがこれに限定されない。この矩形のx方向の長さとy方向の長さが異なってもよい。この場合、例えば、ステップS140、およびステップS3240において視差を求めるとき、ステップS151、ステップS184、ステップS250、およびステップS3280において視差補正をするときなど適宜変更を要する。すなわち、x方向とy方向とで同一のkを用いるのではなく、前述の矩形のx方向の長さとy方向の長さとの比を保つようにkを変更する。
また、実施の形態1から実施の形態5において、視差は整数として求めたが、これに限定されない。直線補間などにより、ステップS140、ステップS240、およびステップS3240において視差を小数まで求め、ステップS184、S250、およびステップS3280においてそれぞれ直線補間を利用し視差補正してもよい。
また、実施の形態1から実施の形態5において、焦点制御を省略し、アクチュエータを構成に含まず、ブロック分割と視差補正を行ってもよい。非常に焦点深度が深いレンズを利用した場合は、レンズと撮像素子の距離には多少の誤差が大きく許容されるため、アクチュエータを動作させる必要がない。
また、実施の形態1から実施の形態5において、第1の撮像信号I1は主に緑色成分を示し、第2の撮像信号I2は主に青色成分を示し、第3の撮像信号I3は主に赤色成分を示し、第4の撮像素子123dは主に緑色成分を示し、第1の撮像信号I1と第4の撮像信号I4とを比較し視差を検知し、視差補正を行ったが、これに限定されない。例えば、レンズとカラーフィルタの設計を変更し、第1の撮像信号I1が主に緑色成分を示し、第2の撮像信号I2は主に緑色成分を示し、第3の撮像信号は主に青色成分を示し、第4の撮像信号I4は主に赤色成分を示すように変更してもよい。この場合、下記式(87)のように視差評価関数を変更し、下記式(88)(89)(90)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I1(x,y)-I2(x-k,y)| ・・・(87)
G(x,y)=[I1(x,y)+I2(x-Δi,y)]/2 ・・・(88)
B(x,y)=I3(x,y-Δi) ・・・(89)
R(x,y)=I4(x,y-Δi) ・・・(90)
また、第1の撮像信号I1が主に緑色成分を示し、第2の撮像信号I2は主に青色成分を示し、第3の撮像信号は主に緑色成分を示し、第4の撮像信号I4は主に赤色成分を示すように変更してもよい。この場合、下記式(91)のように視差評価関数を変更し、下記式(92)(93)(94)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I1(x,y)-I3(x,y-k)| ・・・(91)
G(x,y)=[I1(x,y)+I3(x,y-Δi)]/2 ・・・(92)
B(x,y)=I2(x-Δi,y) ・・・(93)
R(x,y)=I4(x-Δi,y-Δi) ・・・(94)
また、実施の形態1から実施の形態5において、格子状に4つの撮像領域を設けたがこれに限定されない。例えば、第1の撮像素子、第2の撮像素子、第3の撮像素子、第4の撮像素子が1直線上になるように配置し、第1の撮像信号I1が主に青色を示し、第2の撮像信号I2が主に緑色を示し、第3の撮像信号I3が主に緑色を示し、第4の撮像信号が主に赤色を示すように変更してもよい。この場合、下記式(95)のように視差評価関数を変更し、下記式(96)(97)(98)のように視差補正するなどの変更が必要である。
Ri(k)=ΣΣ|I2(x,y)-I3(x-k,y)| ・・・(95)
G(x,y)=[I2(x,y)+I3(x-Δi,y)]/2 ・・・(96)
B(x,y)=I1(x+Δi,y) ・・・(97)
R(x,y)=I4(x-2*Δi,y) ・・・(98)
また、実施の形態1から実施の形態5において、4つの撮像領域を設けたがこれに限定されない。例えば、3つの撮像領域を持ち、第1の撮像素子、第2の撮像素子、第3の撮像素子が1直線上になるように配置し、第1の撮像信号I1が主に青色を示し、第2の撮像信号I2が主に緑色を示し、第3の撮像信号I3が主に赤色を示すように変更してもよい。この場合、下記式(99)、(100)のように視差評価関数を変更し、下記式(101)のように緑色成分Gを作成し、式(99)を用いて求めた視差Δiを利用し下記式(102)のように青色成分Bを作成し、式(100)を用いて求めた視差Δiを利用し下記式(103)のように赤色成分Rを作成し、視差補正するなどの変更が必要である。また、式(99)(100)の代わりに、式(60)のような形式を使用してもよい。
Ri(k)=ΣΣ|I2(x,y)-I1(x+k,y)| ・・・(99)
Ri(k)=ΣΣ|I2(x,y)-I3(x-k,y)| ・・・(100)
G(x,y)=I2(x,y) ・・・(101)
B(x,y)=I1(x+Δi,y) ・・・(102)
R(x,y)=I3(x-*Δi,y) ・・・(103)
また、3つの撮像領域を持ち、第1の撮像素子の右に(x軸の正の位置に)第2の撮像素子が配置され、第1の撮像素子の下に(y軸の正の位置に)第3の撮像素子を配置し、第1の撮像信号I1が主に緑色を示し、第2の撮像信号I2が主に青色を示し、第3の撮像信号I3が主に赤色を示すように変更してもよい。この場合、下記式(104)、(105)のように視差評価関数を変更し、下記式(106)のように緑色成分Gを作成し、式(104)を用いて求めた視差Δiを利用し下記式(107)のように青色成分Bを作成し、式(105)を用いて求めた視差Δiを利用し下記式(108)のように赤色成分Rを作成し、視差補正するなどの変更が必要である。また、式(104)(105)の代わりに、式(60)のような形式を使用してもよい。
Ri(k)=ΣΣ|I1(x,y)-I1(x-k,y)| ・・・(104)
Ri(k)=ΣΣ|I1(x,y)-I3(x,y-k)| ・・・(105)
G(x,y)=I1(x,y) ・・・(106)
B(x,y)=I2(x-Δi,y) ・・・(107)
R(x,y)=I3(x,y-Δi) ・・・(108)
実施の形態1、実施の形態3から実施の形態5のカメラモジュールにおいて、ブロックにおける視差Δiを用いて視差補正を行ったが、ブロック毎の視差Δiを用いて各画素の視差Δ(x,y)を定め、この各画素の視差Δ(x,y)を用いて視差補正を行ってもよい。