以下、本発明の実施の形態に係る撮像装置について、図面を参照しながら説明する。
(実施の形態1)
本発明の実施の形態1に係る撮像装置によれば、転送範囲決定部が、撮像信号の転送範囲を適宜変更する。特に、撮像領域の略全領域で生成される撮像信号を転送範囲とする場合と撮像領域の略半分の領域(転送順の早い領域)で生成される撮像信号を転送範囲とする場合とを切り替える。すなわち、高速性が要求されるような場合では、撮像領域の略半分の領域(転送順の早い領域)で生成される撮像信号を転送範囲とする。このことにより、高速性が必要な場合は、転送を半分の領域で生成される撮像信号に限定するため、全領域の場合と比較し、転送に要する時間が半減される。したがって、高速な視差演算、距離演算を可能にする撮像装置を実現することができる。
以下、本発明の実施の形態1に係る撮像装置について、図面を参照しながら説明する。
図1は、本発明の実施の形態1に係る撮像装置の構成を示す断面図である。図1に示すように、撮像装置101は、レンズモジュール部110、および回路部120を有する。
レンズモジュール部110は、鏡筒111、上部カバーガラス112、およびレンズ113を有する。回路部120は、基板121、パッケージ122、撮像素子123、パッケージカバーガラス124、および半導体回路素子であるシステムLSI(以下、SLSIと記す)125を有する。
鏡筒111は、円筒状であり、その内壁面は光の乱反射を防止するためにつやが消された黒色であり、樹脂を射出成形し形成される。上部カバーガラス112は、円盤状であり、透明樹脂から形成され、鏡筒111の上部の内壁に接着剤などにより固着され、その表面は摩擦などによる損傷を防止する保護膜と、入射光の反射を防止する反射防止膜とが設けられている。
図2は、本発明の実施の形態1に係る撮像装置のレンズの構成を示す平面図である。レンズ113は、略円盤状であり、ガラスや透明樹脂から形成され、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dが2行2列で碁盤目状に配置される。第1〜第4のレンズ部113a〜113dの配置方向に沿って、図2に示すようにx軸及びy軸を設定する。第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dにおいて、被写体側から入射した光は、撮像素子123側へ射出され、撮像素子123上に4つの像が結像される。なお、図2に示すように、第1のレンズ部113aの光軸と第2のレンズ部113bの光軸は、水平方向(x軸方向)はDだけ離れており、垂直方向(y軸方向)は一致する。第1のレンズ部113aの光軸と第3のレンズ部113cの光軸は、水平方向(x軸方向)は一致しており、垂直方向(y軸方向)はDだけ離れている。第3のレンズ部113cの光軸と第4のレンズ部113dの光軸は、水平方向(x軸方向)はDだけ離れており、垂直方向(y軸方向)は一致する。
基板121は、樹脂基板から構成され、上面に鏡筒111がその底面を接して接着剤などにより固着される。このようにして、レンズモジュール部110と回路部120とが固定され、撮像装置101を構成する。
パッケージ122は、金属端子を有する樹脂からなり、鏡筒111の内側において、基板121の上面にその金属端子部が半田づけ等されて固着される。
撮像素子123は、プログレッシブCCDセンサであり、撮像素子123の受光面が第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dの光軸と略垂直になるようにして配置される。撮像素子123の各端子は、パッケージ122の内側の底部の金属端子にワイヤーボンディングにより金線127で接続され、基板121を介して、SLSI125と電気的に接続される。撮像素子123の受光面に、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dから射出された光がそれぞれ結像し、その光の情報がフォトダイオードにより電気の情報へ変換され、その電気の情報がSLSI125に転送される。
図3Aは、本発明の実施の形態1に係る撮像装置の回路部の構成を示す平面図である。パッケージカバーガラス124は、平板状であり、透明樹脂により形成され、パッケージ122の上面に接着などにより固着される。パッケージカバーガラス124の上面には、第1のカラーフィルタ124a、第2のカラーフィルタ124b、第3のカラーフィルタ124c、第4のカラーフィルタ124d、および遮光部124eが蒸着などにより配置される。また、パッケージカバーガラス124の下面には、反射防止膜が蒸着などにより配置される。
図3Bは、本発明の実施の形態1に係る撮像装置の撮像素子の構成を示す平面図である。図3Bに示すように、撮像素子123は、第1の撮像領域123a、第2の撮像領域123b、第3の撮像領域123c、および第4の撮像領域123dで構成されている。これらの第1〜第4の撮像領域123a〜123dは、それぞれの受光面が、第1〜第4のレンズ部113a〜113dの光軸と略垂直になるようにして2行2列で配置される。これらの各撮像領域123a〜123dにて撮像信号が生成される。
上述したように、本実施の形態では、1個の撮像素子が複数の撮像領域を有しているが、本発明の撮像装置はこれに限定されるわけではなく、その他の態様で複数の撮像領域を有するようにしてもよい。したがって、例えば1個の撮像素子が1個の撮像領域となり、そのような撮像素子を複数設けることによって、複数の撮像領域を有するような態様であってもよい。
図4は、本発明の実施の形態1に係るカメラモジュールのカラーフィルタの特性図である。第1のカラーフィルタ124a、および第2のカラーフィルタ124bは、図4のIRで示した主に近赤外光を透過する分光透過特性(波長λ1を中心とする透過特性。例えば、λ1=870nm)を有し、第3のカラーフィルタ124c、および第4のカラーフィルタ124dは、図4のGで示した主に緑色光を透過する分光透過特性(波長λ2を中心とする透過特性。例えば、λ2=500nm)を有する。
したがって、第1のレンズ部113aの上部から入射した物体光は、第1のレンズ部113aの下部から射出され、第1のカラーフィルタ124aにより主に近赤外光が透過し、第1の撮像領域123aの受光部に結像するため、第1の撮像領域123aは物体光のうち近赤外光成分を受光する。また、第2のレンズ部113bの上部から入射した物体光は、第2のレンズ部113bの下部から射出され、第2のカラーフィルタ224b主に近赤外光が透過し、第2の撮像領域123bの受光部に結像するため、第2の撮像領域123bは物体光のうち近赤外光成分を受光する。また、第3のレンズ部113cの上部から入射した物体光は、第3のレンズ部113cの下部から射出され、第3のカラーフィルタ224cにより主に緑色光が透過し、第3の撮像領域123cの受光部に結像するため、第3の撮像領域123cは物体光のうち緑色光成分を受光する。更に、第4のレンズ部113dの上部から入射した物体光は、第4のレンズ部113dの下部から射出され、第4のカラーフィルタ224dにより主に緑色光が透過し、第4の撮像領域123dの受光部に結像するため、第4の撮像領域123dは物体光のうち緑色光成分を受光する。
SLSI125は、後述の方法で、撮像素子123を駆動し、撮像素子123からの電気情報を入力し、各種演算を行い、上位CPUと通信を行い、外部に画像情報や距離情報などを出力する。なお、SLSI125は、電源(例えば3.3V)とグランド(例えば、0V)に接続される。
次に、被写体距離と視差との関係を説明する。本発明の実施の形態1に係る撮像装置は、4つのレンズ部(第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113d)を有するため、4つのレンズ部がそれぞれ形成する4つの物体像の相対的位置が、被写体距離に応じて変化する。
図5は、本発明の実施の形態1に係る撮像装置において、無限遠にある物体像の位置を説明するための図である。図5においては、簡単のため、レンズ部113において、第1のレンズ部113a、および第2のレンズ部113bのみを記す。無限遠の物体10からの光の第1のレンズ部113aへの入射光L1と、第2のレンズ部113bへの入射光L2とは平行である。このため、第1のレンズ部113aと第2のレンズ部113bとの距離と、撮像素子123上の物体像11aと物体像11bとの距離は等しい。すなわち、視差はない。
図6は、本発明の実施の形態1に係る撮像装置において、有限距離の位置にある物体像の位置を説明するための図である。図6において、簡単のため、レンズ部113において、第1のレンズ部113a、および第2のレンズ部113bのみを記す。有限距離の物体12からの光の第1のレンズ部113aへの入射光L1と第2のレンズ部113bへの入射光L2とは平行ではない。従って、第1のレンズ部113aと第2のレンズ部113bとの距離に比べて、撮像素子123上の物体像13aと物体像13bとの距離は長い。すなわち、視差がある。
物体像12までの距離(被写体距離)をA、第1のレンズ部113aと第2のレンズ部113bとの距離をD、レンズ部113a,113bの焦点距離をfとすると、図5の直角を挟む2辺の長さがA、Dの直角三角形と、直角を挟む2辺の長さがf、Δの直角三角形とが相似であることより、視差値Δは、下記式1のように表される。
Δ=f・D/A … 式1
その他のレンズ部間についても同様の関係が成立する。このように、被写体距離に応じて4つのレンズ部113a,113b,113c,113dがそれぞれ形成する4つの物体像の相対的位置が変化する。例えば、被写体距離Aが小さくなると、視差値Δが大きくなる。
次に、本発明の実施の形態1に係る撮像装置の動作を説明する。図7は、本発明の実施の形態1に係る撮像装置の構成を示すブロック図である。SLSI125は、システム制御部131、撮像素子駆動部132、撮像信号入力部133、前処理部134、入力バッファ135、演算部136、出力バッファ137、および入出力部138を有する。入力バッファ135は、第1の入力バッファ135a、第2の入力バッファ135b、第3の入力バッファ135c、および第4の入力バッファ135dを有する。演算部136は、演算バッファ141、視差演算部142、距離演算部143、および転送範囲決定部144を有する。演算バッファ141は、第1の演算バッファ141a、および第2の演算バッファ141bを有する。出力バッファ137は、第1の出力バッファ137a、および第2の出力バッファ137bを有する。
システム制御部131は、CPU(中央演算処理装置:Central Processing Unit)、
ロジック回路などから構成され、SLSI125の全体を制御する。
撮像素子駆動部132は、ロジック回路などから構成され、撮像素子123を駆動する信号を発生し、この信号に応じた電圧を撮像素子123に印加する。
撮像信号入力部133は、CDS回路(相関二重サンプリング回路:Correlated Double Sampling Circuit)、AGC(自動利得制御器:Automatic Gain Controller)、ADC(アナログ/ディジタル変換器:Analog Digital Converter)が直列に接続されて構成され、撮像素子123からの電気信号が入力され、CDS回路により固定ノイズを除去し、AGCによりゲインを調整し、ADCによりアナログ信号からディジタル値に変換し撮像信号I0とする。
転送範囲決定部144は、後述の方法で、転送範囲フラッグFOを決定する。転送範囲フラッグFO=1(第1の動作モード)のとき、撮像領域の全領域で生成される撮像信号が転送範囲となり、転送範囲フラッグFO=2(第2の動作モード)のとき、撮像領域の半分の領域で生成される撮像信号が転送範囲となる。なお、転送範囲フラッグは、FO=1に初期化されている。
上記の撮像素子駆動部132は、転送範囲決定部144にて決定された転送範囲に係る撮像信号を撮像信号入力部133に転送するように撮像素子123を駆動する。これにより、撮像素子123から撮像信号入力部133へ特定の転送範囲に係る撮像信号が転送されることになる。
図8は、本発明の実施の形態1に係る撮像装置の撮像信号の切り出し位置を説明するための図である。図9は、本発明の実施の形態1に係る撮像装置の撮像信号の転送を示すタイミングチャートである。転送範囲フラッグFO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であるため、図8(a)のように、水平方向にH0画素、垂直方向にV0画素の撮像信号を転送する。すなわち、撮像信号入力部133に入力される撮像信号I0(x,y)は、x方向にH0画素、y方向にV0画素を持ち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0-1)の順に入力され、順次、前処理部134に転送される。図9(a)のように、垂直同期信号21aの立ち上がりエッジから一定期間後に、信号23aのハイレベルのタイミングでCCDセンサのフォトダイオードから垂直転送CCDへ電荷が転送され、信号24aのハイレベルで、順次垂直CCD、水平CCD内を電荷が転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。
一方、転送範囲フラッグFO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であるため、図8(b)のように、水平方向にH0画素、垂直方向にV0/2画素の撮像信号を転送する。すなわち、撮像信号入力部133から入力される撮像信号I0(x,y)は、x方向にH0画素、y方向にV0/2画素を持ち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0/2-1)の順に入力され、順次、前処理部134に転送される。図8(b)において、上半分のハッチがない部分は転送する画素(転送範囲である領域)を示し、下半分のハッチ部は転送しない画素(転送範囲でない領域)を示す。図9(b)のように、垂直同期信号21bの立ち上がりエッジから一定期間後に、信号22bのハイレベルで垂直CCD内に残された電荷を水平CCDに掃き出し、信号23bのハイレベルのタイミングでCCDセンサのフォトダイオードから垂直転送CCDへ電荷が転送され、信号24bのハイレベルで、順次垂直CCD、水平CCD内を電荷が転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。なお、FO=2の場合の転送範囲は、FO=1の場合の転送範囲の半分のうち最初に転送される方が設定される。
転送範囲フラッグFO=1(第1の動作モード)のときの電荷の転送時間(信号24aがハイレベルを取る期間)と比較し、転送範囲フラッグFO=2(第2の動作モード)のときの電荷の転送時間(信号24bがハイレベルを取る期間)は略半分であるため、画像1枚を転送する時間間隔が短縮化される。なお、FO=1(第1の動作モード)のときの電荷の掃き出しを行わず、FO=2(第2の動作モード)のときにのみ電荷の掃き出しを行うため、FO=1(第1の動作モード)では電荷の掃き出しの時間が不要であり、FO=1(第1の動作モード)での画像1枚を転送する時間間隔の増大を防止する。また、FO=2(第2の動作モード)のときの電荷の掃き出しは、前回転送されなかった垂直CCDのみ(すなわち、実施の形態1ではV0/2列)で十分であり、そのことにより、全列の垂直CCDの掃き出しを行うときと比較し、画像1枚を転送する時間間隔の増大を最小限に抑制することができる。
前処理部134は、ロジック回路などから構成され、撮像信号I0から画像を切り出し、強度補正処理を行い、順次、入力バッファ135に転送する。FO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であるため、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4を作成し、順次、入力バッファ135に転送する。第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4は、それぞれ第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部114dによって結像された被写体像によって得られたものである。図8(a)、および下記式2のように、撮像信号I0を原点(x01,y01)、x方向にH1画素、y方向にV1画素だけ切り出し、第1の強度補正係数ks1で補正したものを第1の撮像信号I1とする。また、図8(a)、および下記式3のように、撮像信号I0を原点(x02,y02)、x方向にH1画素、y方向にV1画素だけ切り出し、第2の強度補正係数ks2で補正したものを第2の撮像信号I2とする。また、図8(a)、および下記式4のように、撮像信号I0を原点(x03,y03)、x方向にH1画素、y方向にV1画素だけ切り出し、第3の強度補正係数ks3で補正したものを第3の撮像信号I3とする。また、図8(a)、および下記式5のように、撮像信号I0を原点(x04,y04)、x方向にH1画素、y方向にV1画素だけ切り出し、第4の強度補正係数ks4で補正したものを第4の撮像信号I4とする。
I1(x,y) = ks1(x,y) * I0(x+x01,y+y01) … 式2
I2(x,y) = ks2(x,y) * I0(x+x02,y+y02) … 式3
I3(x,y) = ks3(x,y) * I0(x+x03,y+y03) … 式4
I4(x,y) = ks4(x,y) * I0(x+x04,y+y04) … 式5
第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)は、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4の座標(x,y)における強度補正係数を示し、検査工程などにおいて特定チャートを撮影し決定され、EEPROMやフラッシュメモリに保存される。なお、各画素の係数を持たずに、代表点のみを持ち、その代表点を用いて線形補間により第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)を求めてもよい。また、近似式を策定しその係数のみを持ち、各座標の第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)を作成してもよい。また、レンズの光軸のずれなどを校正するために、適宜、座標変換を行ってもよい。
一方、FO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であるため、第1の撮像信号I1、および第2の撮像信号I2を作成し、順次、入力バッファ135に転送する。FO=1のとき(全領域を転送するとき)と比較し、第3の撮像信号I3、および第4の撮像信号I4に関する処理が省略される。第1の撮像信号I1、および第2の撮像信号I2に関する処理は同様であるため、説明を省略する。
FO=1のとき、第1の入力バッファ135aは、DRAM(Dynamic Random Access Memory)などから構成され、第1の撮像信号I1を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第2の入力バッファ135bは、DRAMなどから構成され、第2の撮像信号I2を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第3の入力バッファ135cは、DRAMなどから構成され、第3の撮像信号I3を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第4の入力バッファ135dは、DRAMなどから構成され、第4の撮像信号I4を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。
一方、FO=2のとき、第1の撮像信号I1、および第2の撮像信号I2を作成し、順次、入力バッファ135に入力する。FO=1のとき(全領域を転送するとき)と比較し、第3の入力バッファ135c、および第4の入力バッファ135dに関する処理が省略される。第1の入力バッファ135a、および第2の入力バッファ135bに関する処理は同様であるため、説明を省略する。
演算部136は、SRAM(Static Random Access Memory)から構成された第1の演算バッファ141a、第2の演算バッファ141bと、ロジック回路やCPUなどから構成された視差演算部142と、ロジック回路やCPUなどから構成された距離演算部143と、ロジック回路やCPUから構成された転送範囲決定部144と、から構成される。FO=1のとき、演算部136は、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4をブロック単位で読み込み第1の演算バッファ141a、第2の演算バッファ141bに保存し、視差演算部142において第1の演算バッファ141a、および第2の演算バッファ141bのデータなどに基づき視差を演算し、距離演算部143において求められた視差に基づき距離を演算し、求められた距離データを出力バッファ137に転送する。
一方、FO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であり、したがって、第1の撮像信号I1、および第2の撮像信号I2のみが転送されているため、演算部136は、第1の撮像信号I1、および第2の撮像信号I2をブロック単位で読み込み第1の演算バッファ141a、第2の演算バッファ141bに保存し、視差演算部142において第1の演算バッファ141a、および第2の演算バッファ141bのデータなどに基づき視差を演算し、距離演算部143において求められた視差に基づき距離を演算し、求められた距離データを出力バッファ137に転送する。
出力バッファ137は、DRAMなどから構成され、入力バッファ135から転送された画像データと演算部136から転送された距離データとを保存し、入出力部138に順次転送する。
入出力部138は、上位CPU(図示せず)との通信や、上位CPU、外部メモリ(図示せず)、および液晶ディスプレイなどの外部表示装置(図示せず)へ画像データ、および距離データを出力する。
図10Aは、本発明の実施の形態1に係る撮像装置の動作を示すフローチャートである。SLSI125のシステム制御部131により、撮像装置101は、このフローチャートのとおりに動作される。
ステップS1010において、撮像装置101は動作を開始する。例えば、上位CPU(図示せず)が、入出力部136を介し、撮像装置101に動作の開始を命令することにより、撮像装置101は、動作を開始する。次に、ステップS1020Aを実行する。
ステップS1020Aにおいて、転送範囲の初期化処理を行う。本実施の形態では、この初期化処理により、転送範囲フラッグFO=1(第1の動作モード)が設定される。次に、ステップS1030を実行する。
ステップS1030において、撮像信号を入力する。システム制御部131の命令により、撮像素子駆動部132が電子シャッターや転送を行うための信号を撮像素子123に対して随時出力する。その結果、転送範囲フラッグFO=1(第1の動作モード)のとき、撮像信号入力部133は、撮像信号I0(x,y)を、x方向にH0画素、y方向にV0画素だけ、すなわち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0-1)の順に入力し、順次、前処理部134に転送する。前処理部134は、撮像信号I0から画像を切り出し、強度補正処理を行い、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4を作成し、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4を、それぞれ、順次、第1の入力バッファ135a、第2の入力バッファ135b、第3の入力バッファ135c、および第4の入力バッファ135dに転送する。
一方、転送範囲フラッグFO=2(第2の動作モード)のとき、撮像信号入力部133は、撮像信号I0(x,y)を、x方向にH0画素、y方向にV0/2画素だけ、すなわち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0/2-1)の順に入力し、順次、前処理部134に転送する。前処理部134は、撮像信号I0から画像を切り出し、強度補正処理を行い、第1の撮像信号I1、および第2の撮像信号I2を作成し、第1の撮像信号I1、および第2の撮像信号を、それぞれ、順次、第1の入力バッファ135a、および第2の入力バッファ135bに転送する。次に、ステップS1040を実行する。
ステップS1040において、第1の入力バッファ135aに保存されている第1の撮像信号I1を第1の出力バッファ137aに転送し、第1の出力バッファ137aは、画像データとして保存する。次に、ステップS1100Aを実行する。
ステップS1100Aにおいて、距離データを作成し、順次、第2の出力バッファ137bに転送する。また、転送範囲を決定し、転送範囲フラッグFOを設定する。この動作の詳細は後述する。次に、ステップS1910を実行する。
ステップS1910において、外部にデータを出力する。入出力部138は、第1の出力バッファ137a上の画像データ、および第2の出力バッファ137b上の距離データを、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。次に、S1920を実行する。
ステップS1920において、動作を終了するかどうかを判断する。例えば、システム制御部131は、入出力部136を介し、上位CPU(図示せず)と通信し、動作を終了するかどうかの命令を要求する。そして、上位CPUが終了を命令すれば動作を終了し、次に、ステップS1930を実行する。一方、上位CPUが終了を命令しなければ動作を継続し、次に、ステップS1030を実行する。すなわち、上位CPUが終了を命令しない限り、ステップS1030、ステップS1040、ステップS1100A、およびステップS1910のループの実行を継続する。
ステップS1930において、動作を終了する。
次に、ステップS1100Aにおける動作の詳細を説明する。図11Aは、本発明の実施の形態1に係る撮像装置の演算部の動作を示すフローチャートである。図11Aのフローチャートは、ステップS1100Aの動作の詳細を示す。ステップS1100Aの演算では、まず、ステップS1110を実行する。
ステップS1110において、演算の動作を開始する。次に、ステップS1200を実行する。
ステップS1200において、視差演算を実行する。図12は、本発明の実施の形態1に係る撮像装置の視差演算の動作を示すフローチャートである。図12のフローチャートは、ステップS1200の動作の詳細を示す。ステップS1200の演算では、まず、ステップS1210を実行する。
ステップS1210において、視差演算の動作を開始する。次に、ステップS1220を実行する。
ステップS1220において、転送範囲フラッグFOによって分岐する。転送範囲フラッグFO=1のとき(S1220でY)、転送範囲が撮像領域の全領域で生成される撮像信号となり、次に、ステップS1230aを実行する。一方、転送範囲フラッグFO=2のとき(S1220でN)、転送範囲が撮像領域の半分の領域で生成される撮像信号となり、次に、ステップ1230bを実行する。
ステップS1230aにおいて、第1の撮像信号と第2の撮像信号とを利用した視差演算を実行する。図13は、本発明の実施の形態1に係る撮像装置の第1の撮像信号と第2の撮像信号とを利用した視差演算の動作を示すフローチャートである。図13のフローチ
ャートは、ステップS1230aの動作の詳細を示す。ステップS1230の演算では、まず、ステップS1310を実行する。
ステップS1310において、第1の撮像信号と第2の撮像信号とを利用した視差演算の動作を開始する。次に、ステップS1320を実行する。
ステップS1320において、ブロックインデックスibに0を設定して初期化処理を行う。次に、ステップS1330を実行する。
ステップS1330において、ブロックを選択する。図14は、本発明の実施の形態1に係る撮像装置の第1の撮像信号と第2の撮像信号とを利用した視差演算における第1の撮像信号の分割ブロックと演算順番を説明する図であり、図15は、本発明の実施の形態1に係る撮像装置の第1の撮像信号と第2の撮像信号とを利用した視差演算における第2の撮像信号の分割ブロックと演算順番を説明する図である。図14において、第1の撮像信号I1は、x方向にHB画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、各ブロックはx方向、y方向ともに重なる部分はない。図15において、第2の撮像信号I2は、x方向に(HB+SB)画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、x方向について、隣のブロックと重なる。一方、y方向について、隣のブロックと重ならない。また、図15において、右側のブロックにおいてx方向に(HB+SB)画素を取ることができないブロックは、適宜x方向の右端が削除される。なお、実施の形態1では、以下、HB=32、VB=32の例を示す。
図14、および図15において、各ブロックの上段に記述された数字はブロックインデックスibを示す。また、図14、および図15において、各ブロックの下段に記述された座標(ibx、iby)は、各ブロックがx方向にibx番目、y方向にiby番目のブロックであることを示す。ここで、ibxは0からNh−1まで、ibyは0からVh−1まで存在する。ステップS1320において、図14、および図15でブロックインデックスibで示されるブロック(座標(ibx、iby)で示されるブロック)が選択される。次に、ステップS1340を実行する。
ステップS1340において、撮像信号を転送する。ステップS1340において、選択されたブロックの第1の撮像信号I1を第1の演算バッファ141aに転送する。そして、第1の演算バッファ141aの座標(x,y)における値をBc1(x,y)とする。ここで、HB=32、VB=32であるため、x=0〜31、y=0〜31である。ステップS1340において、選択されたブロックの第2の撮像信号I2を第2の演算バッファ141bに転送する。そして、第2の演算バッファ141bの座標(x,y)における値をBc2(x,y)とする。ここで、HB=32、VB=32であるため、x=0〜31+SB、y=0〜31である。例えば、ib=0のとき、第1の演算バッファ141aには、座標(0,0)と座標(31,31)とで囲まれる1024画素の撮像信号I1が転送される。また、第2の演算バッファ141bには、図15において右斜上となる斜線が描かれた座標(0,0)と座標(31+SB,31)とで囲まれる(1024+32*SB)画素の撮像信号I2が転送される。次に、ib=1のとき、第1の演算バッファ141aには、座標(32,0)と座標(63,31)とで囲まれる1024画素の撮像信号I1が転送される。また、第2の演算バッファ141bには、図15において右斜下となる斜線が描かれた座標(32,0)と座標(63+SB,31)とで囲まれる(1024+32*SB)画素の撮像信号I2が必要だが、ib=0と重なる部分(座標(32,0)と座標(31+SB,31)で囲まれる32*SB画素の領域)はすでに第2の演算バッファ141bに転送されているため、新たに座標(32+SB,0)と座標(63+SB,31)とで囲まれる1024画素のみを第2の演算バッファ141bに転送する。これにより、転送時間の増大を防止できる。次に、ステップS1350を実行する。
ステップS1350において、視差演算を実行する。まず、視差評価値R(k)を演算する。ここで、kは画像をどれだけずらすかを示すずらし量であり、k=0、1、2、・・・、SBのように変化させる。図16は、本発明の実施の形態1に係る撮像装置において、第1の撮像信号と第2の撮像信号を利用したときの視差演算における視差評価値の演算領域を説明する図である。図16において、データBc1で格納されている領域は、第1の演算バッファ141a中の領域である。また、データBc2で示される領域は、図16においてBc1で示されるブロックからx方向にずらし量kだけ移動した第2の演算バッファ141b中の領域である。そして、ずらし量k=0からSBについて、下記式6に示される絶対値差分総和(SAD:Sum of Absolute Differences)を演算し、視差評価値R(k)とする。
R(k) = ΣΣ|Bc1(x,y)-Bc2(x+k,y)| … 式6
この視差評価値R(k)は、第1の演算バッファ141aのデータBc1と、x方向にkだけ離れた領域における第2の演算バッファ141bのデータBc2とがどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。ここで、第1の演算バッファ141aのデータBc1は、第1の撮像信号I1を転送したものであり、第2の演算バッファ141bのデータBc2は、第2の撮像信号I2を転送したものであるため、視差評価値R4(k)は、第1の撮像信号I1と対応する第2の撮像信号I2とがどれだけ相関があるかを示す。
図17は、本発明の実施の形態1に係る撮像装置の第1の撮像信号と第2の撮像信号を利用したときの視差演算における視差と視差評価値との関係を説明する図である。図17のように、視差評価値R(k)はずらし量kの値によって変化し、ずらし量k=Δのとき極小値を持つ。第1の演算バッファ141aのデータBc1は、第1の演算バッファ141aのデータBc1をx方向にkだけ移動した領域に存在する第2の演算バッファ141bのデータBc2と最も相関がある(最も似ている)ことを示す。したがって、第1の演算バッファ141aのデータBc1と第2の演算バッファ141bのデータBc2とのx方向の視差がΔであることが分かる。ここで、このΔをこのブロックでの視差値Δと呼ぶ。
次に、視差値Δの信頼度を演算する。図18は、本発明の実施の形態1に係る撮像装置において、第1の撮像信号と第2の撮像信号を利用したときの視差演算における視差評価値の信頼度の演算領域を説明する図である。データBc1が格納されている領域は、第1の演算バッファ141a中の領域である。データBc2が格納されている領域は、Bc1をx方向にΔだけ移動した第2の演算バッファ141b中の領域である。そして、下記式7のように、それぞれの領域のデータBc1(x,y)、Bc2(x+Δ,y)について、正規化相関係数を信頼度Eとする。
E(1,2)(ibx,iby) = ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc2(x+Δ,y)-avg(Bc2(x+Δ,y))}]
/ √ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc1(x,y)-avg(Bc1(x,y))}
/ √ΣΣ[{Bc2(x+Δ,y)-avg(Bc2(x+Δ,y))}
*{Bc2(x+Δ,y)-avg(Bc2(x+Δ,y))}] … 式7
そして、この信頼度Eを、第1の撮像信号と第2の撮像信号とを利用した視差演算にお
いて、座標(ibx,iby)で示される32x32画素のブロックにおける視差値Δ(1,2)(ibx,iby)の信頼度E(1,2)(ibx,iby)として保存する。(1,2)は、第1の撮像信号と第2の撮像信号とを利用した視差値、および信頼度であることを示す。(ibx,iby)は、ブロックインデックスibで示されるブロックを示し、図14において各ブロックの下段に示される座標である。次に、ステップS1360を実行する。
ステップS1360において、ブロックインデックスibに1を加える。次に、ステップS1370を実行する。
ステップS1370において、第1の撮像信号と第2の撮像信号とを利用した視差演算を終了するかどうかを判断する。ブロックインデックスibがNh*Nv未満のとき、次のブ
ロックの視差を演算するために、次に、ステップS1330を実行する。一方、ブロックインデックスibがNh*Nv以上のとき、全てのブロックの視差を演算したと判断し、次に
、ステップS1380を実行する。
ステップS1380において、第1の撮像信号と第2の撮像信号とを利用した視差演算を終了し、上位ルーチンへ戻る。このようにして、第1の撮像信号と第2の撮像信号とを利用した視差演算において、ブロックインデックスibで示される32x32画素のブロックについて、32x32画素の分解能で視差値Δ(1,2)(ibx,iby)とその信頼度Ef(1,2)(ibx,iby)とが求められた。ここで、(1,2)は第1の撮像信号と第2の撮像信号とを利用していることを示し、(ibx,iby)は図14において各ブロックの下段に示される座標である(ibxは0からNh−1まで、ibyはNv−1まで変化する)。次に、図12のステップS1240aを実行する。
ステップS1240aにおいて、第3の撮像信号と第4の撮像信号とを利用した視差演算を実行する。このステップは、ステップS1230aにおいて、第1の撮像信号I1を第3の撮像信号I3に変更し、第2の撮像信号I2を第4の撮像信号I4に変更したものと同様である。すなわち、第3の撮像信号I3をブロックに分割し、第1の演算バッファ141aに転送し、第4の撮像信号I4をブロックに分割し、第2の演算バッファ141bに転送し、ステップS1230aと同様の動作を行い、32x32画素の分解能で視差値Δ(3,4)(ibx,iby)とその信頼度E(3,4)(ibx,iby)とを求める。ここで、(3,4)は第3の撮像信号と第4の撮像信号とを利用していることを示し、(ibx,iby)は図14の各ブロックの下段に示される座標を示す(図14のように、ibxは0からNh−1まで、ibyは0からNv−1まで変化する)。次に、ステップS1250aを実行する。
ステップS1250aにおいて、視差を選択する。それぞれのブロックに対し、信頼度E(1,2)(ibx,iby)、およびE(3,4)(ibx,iby)を比較し、最大の信頼度を与える視差をそのブロックでの視差値Δ(ibx,iby)とする。また、そのときの信頼度をE(ibx,iby)とする。次に
、ステップS1260を実行する。
ステップS1230bにおいて、第1の撮像信号と第2の撮像信号とを利用した視差演算を実行する。このステップは、ステップS1230aと同様であり、説明を省略する。ただし、求められる視差、および信頼度を、それぞれのブロックでの視差値Δ(ibx,iby)、および信頼度E(ibx,iby)とする。次に、ステップS1260を実行する。
ステップS1260において、視差演算を終了し、上位ルーチンへ戻る。このようにして、各ブロックにおける視差値Δ(ibx,iby)が求められた。ここで、(ibx,iby)は図14の各ブロックの下段に示される座標であり、ibxは0からNh−1まで、ibyはNv−1まで変化する。転送範囲フラッグFO=1(第1の動作モード)のとき、第1の撮像信号I1と第2の撮像信号I2とによる視差(近赤外光による視差)の信頼度と第3の撮像信号I3と第4の撮像信号I4とのよる視差(緑色光による視差)の信頼度とを比較し、信頼度が高い視差を採用した。一方、転送範囲フラッグFO=2(第2の動作モード)のとき、選択は行わず、第1の撮像信号I1と第2の撮像信号I2とによる視差(近赤外光による視差)を採用した。次に、ステップS1700を実行する。
ステップS1700において、距離演算部143は、距離演算を行い、その結果を、順次、第2の出力バッファ137bに、距離データとして転送する。式1を距離Aについて解くと、下記式8のように示される。したがって、視差値Δ(ibx,iby)を持つブロックにおける被写体の距離A(ibx,iby)は、下記式9のように演算される。そして、距離データA(ibx,iby)を第2出力バッファ137bに転送する。
A = f・D/Δ … 式8
A(ibx,iby) = f・D/Δ(ibx,iby) … 式9
次に、ステップS1800を実行する。
ステップS1800において、転送範囲決定部144は、転送範囲を決定し、転送範囲フラッグを設定する。下記式10のように、各ブロック(ibx,iby)での信頼度E(ibx,iby)の最小値がある設定された値より小さいとき、転送範囲フラッグFO=1とする。一方、各ブロック(ibx,iby)での信頼度E(ibx,iby)の最小値がある設定された値以上のとき、転送範囲フラッグFO=2とする。
FO=1 (min(E(ibx,iby)) < E0のとき)
FO=2 (min(E(ibx,iby)) ≧ E0のとき) … 式10
次に、ステップS1900を実行する。
ステップS1900において、演算動作を終了し、上位ルーチンへ戻る。次に、ステップS1910を実行する。
本発明の撮像装置を以上のように構成し、動作させることにより、以下の効果を有する。
本発明の実施の形態1に係る撮像装置によれば、転送範囲決定部144が撮像信号から作成される信頼度E(ibx,iby)に基づき、信頼度E(ibx,iby)が小さいとき、転送範囲フラッグFO=1(第1の動作モード)とし、信頼度E(ibx,iby)が大きいとき、転送範囲フラッグFO=2とする(転送範囲を半分の領域とする)。このことにより、信頼度E(ibx,iby)が大きいとき、高速性を上げる余裕があると判断し、出力フラッグFO=2(第2の動作モード)とすることにより、高速な視差演算、距離演算を可能とする撮像装置を実現する。一方、信頼度(ibx,iby)が小さいとき、精度がさらに必要であると判断し、出力フラッグFO=1(第1の動作モード)とすることにより、高精度な視差演算、距離演算を可能とする撮像装置を実現する。
このように、本実施の形態の撮像装置の場合、信頼度Eに応じて転送範囲を変更すべく、動作モードの切替を行っている。ここで、信頼度Eは、被写体の動き等に応じて変化し得る値である。したがって、本実施の形態の撮像装置は、被写体の動き等の被写体に関する情報に応じて転送範囲を変更しているともいえる。
また、本発明の撮像装置において、FO=2(第1の動作モード)のとき、転送順の早い略半分の領域とする。すなわち、図9(b)24bのように、転送に要する時間を半分にし、垂直CCDに残った電荷は22bの期間で水平CCDに掃き出すことにより、転送に要する時間を半減し、高速な視差演算、距離演算を可能にする撮像装置を実現する。
なお、実施の形態1の撮像装置において、FO=1(第1の動作モード)のとき、転送する撮像信号の垂直方向をV0画素、FO=2(第2の動作モード)のとき、転送する撮像信号の垂直方向をV0/2画素としたが、若干の変更があってもよい。例えば、FO=2(第2の動作モード)の転送範囲の垂直方向を0画素目からy01+V1-1とすれば、さらに転送時間を低減できる。また、レンズのばらつきが大きく、各光軸のずれが大きい場合には、FO=2(第2の動作モード)の転送範囲の垂直方向をVO/2より大きくすれば、その分だけ原点の調整の余裕が大きくなる。
また、実施の形態1の撮像装置において、信頼度E(ibx,iby)により転送範囲を変更したが、本発明はこれに限定されない。本発明の要諦は、転送範囲を変更することにより、速度と精度との関係が適当なものになるように、視差演算、距離演算をすることにある。なお、上位CPUの命令により、転送範囲を変更してもよい。例えば、上位CPUが画像データを用いて、転送範囲を変更してもよい。あるいは、ユーザが指定する被写体情報に基づいて、転送範囲を上位CPUが命令してもよい。
図10Bは、本発明の実施の形態1に係る撮像装置の動作の変形例を示すフローチャートである。また、図11Bは、本発明の実施の形態1に係る撮像装置の演算部の動作の変形例を示すフローチャートである。この図11Bのフローチャートでは、図10Bにおける演算処理(S1100B)の詳細な処理の流れが示されている。
この変形例では、被写体に関する情報に基づくことなく、転送範囲が決定される。すなわち、撮像信号がどのような画像に関する信号であるかに関係なく、所定の基準にしたがって、転送範囲が決定されることになる。例えば、第1の動作モードと第2の動作モードとが交互に入れ替わったり、全動作中で第1の動作モード(又は第2の動作モード)が占める割合が所定の割合になるように動作モードの切替を行ったりする。
変形例における転送範囲の決定は、図10BのフローチャートにおけるステップS1020Bにて実行される。そして、ステップS1100Bの演算処理においては、図11Bに示すように、上述した開始処理(S1110)、視差演算(S1200)、距離演算(S1700)、および終了処理(S1900)を実行する。この変形例では、ステップS1020Bにおいて転送範囲が決定されるため、図11Aに示されているステップS1800の転送範囲の決定処理を行う必要はない。
なお、ユーザが転送範囲を適宜設定することができるようにしてもよい。そのためには、例えば、ユーザが操作可能なスイッチなどを介してユーザから転送範囲設定(動作モード切替)の指示が出された場合に、その指示を受けた上位CPUが撮像装置に対して転送範囲の設定(動作モードの切替)を行うように命令する等すればよい。
また、実施の形態1の撮像装置において、転送範囲フラッグの初期値をFO=1(第1の動作モード)としたが、FO=2(第2の動作モード)としてもよい。
また、実施の形態1の撮像装置において、第1の演算バッファの大きさを32x32画素(水平方向に32画素、および垂直方向に32画素)としたが、これに限定されない。例えば、4x4画素、8x8画素、16x16画素でもよい。また、適宜大きさを変更してもよい。また、複数の大きさのブロックの視差を求め、選択してもよい。さらに、矩形状のブロックではなく、エッジなどを抽出してブロック分割してもよい。また、ブロックの視差を求めることに限定されず、エッジである線分の視差を求めてもよい。
また、実施の形態1の撮像装置において、第1の撮像信号I1を第1の出力バッファ137aに転送し、入出力部138から出力したが、他の撮像信号(第2の撮像信号I2、第3の撮像信号I3、あるいは第4の撮像信号I4)を出力してもよい。また、複数の撮像信号を出力してもよい。さらに、撮像信号の条件により、入出力部138から出力する撮像信号を変更してもよい。例えば、それぞれの撮像信号を比較し、最も明るい撮像信号(撮像信号の大きさの平均が最も大きいなどにより判定されたもの)、あるいは最も輪郭がはっきりしているもの(微分値の平均や最大値が最も大きいなどにより判定されたもの)などを出力するように変更してもよい。
また、実施の形態1の撮像装置において、撮像素子としてCCDセンサを用いたが、他の撮像素子(例えば、CMOSセンサ)を用いてもよい。
また、実施の形態1の撮像素子において、撮像素子123としてプログレッシブCCDのみならず、インターレースCCDを利用してもよい。図19は、本発明の実施の形態1に係る撮像装置の変形のフィールド画像を説明する図である。例えば、3つのフィールドを持つインターレースCCDを利用した場合、画像全体は、図19(a)に示すように、第1のフィールド画像と第2のフィールド画像と第3のフィールド画像とが順に配置される。まず、第1のフィールド画像を構成する撮像信号が転送され、次に第2のフィールド画像を構成する撮像信号が転送され、次に第3のフィールド画像を構成する撮像信号が転送される。通常の白黒画像では、これらを1ラインずつ順に配置することにより画像全体を再現する。図19(b)のように画像全体(フレーム画像)の幅がH0、高さがV0であるとき、図19(c)、(d)、(e)のように、第1のフィールド画像、第2のフィールド画像、および第3のフィールド画像の幅はそれぞれH0であり、高さはV0/3である。
図20は、本発明の実施の形態1に係る撮像装置の変形の撮像信号の転送を示すタイミングチャートである。転送範囲フラッグFO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であるため、図8(a)のように、水平方向にH0画素、垂直方向にV0画素の撮像信号を転送する。すなわち、撮像信号入力部133に入力される撮像信号I0(x,y)は、x方向にH0画素、y方向にV0画素を持ち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0-1)の順に入力され、順次、前処理部134に転送される。図20(a)のように、1フレームに1回だけ発生する信号20cが発生し、1フィールドに1回だけ垂直同期信号21cが発生する。3フィールドのインターレースCCDでは、信号20cの1つあたり3つの垂直同期信号21cが発生する。垂直同期信号21cの立ち上がりエッジから一定期間後に、信号23cのハイレベルのタイミングでCCDセンサのフォトダイオードから垂直転送CCDへ電荷が転送され、信号24aのハイレベルで、順次垂直CCD、水平CCD内を電荷が転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。なお、信号20c発生直後は第1のフィールドの撮像信号が転送され(24c1で示された期間)、次に、第2のフィールドの撮像信号が転送され(24c2で示された期間)、次に、第3のフィールドの撮像信号が転送される(24c3で示された期間)。
一方、転送範囲フラッグFO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であるため、図8(b)のように、水平方向にH0画素、垂直方向にV0/2画素の撮像信号を転送する。すなわち、撮像信号入力部133に入力される撮像信号I0(x,y)は、x方向にH0画素、y方向にV0/2画素を持ち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(H0-1,V0/2-1)の順に入力され、順次、前処理部134に転送される。図20(b)のように、1フレームに1回だけ発生する信号20dが発生し、1フィールドに1回だけ垂直同期信号21dが発生する。3フィールドのインターレースCCDでは、信号20dの1つあたり3つの垂直同期信号21dが発生する。垂直同期信号21dの立ち上がりエッジから一定期間後に、信号22dのハイレベルで垂直CCD内に残された電荷を水平CCDに掃き出し、信号23dのハイレベルのタイミングでCCDセンサのフォトダイオードから垂直転送CCDへ電荷が転送され、信号24dのハイレベルで、順次垂直CCD、水平CCD内を電荷が転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。なお、信号20d発生直後は第1のフィールドの撮像信号が転送され(24d1で示された期間)、次に、第2のフィールドの撮像信号が転送され(24d2で示された期間)、次に、第3のフィールドの撮像信号が転送される(24d3で示された期間)。このため、転送範囲フラッグFO=1(第1の動作モード)のときの電荷の転送時間(信号24aがハイレベルを取る期間)と比較し、転送範囲フラッグFO=2(第2の動作モード)のときの電荷の転送時間(信号2baがハイレベルを取る期間)は略半分であるため、画像1枚を転送する時間間隔が短縮される。
さらに、全てのフィールド画像を用いずに1つのフィールド画像のみを使用すれば、さらに画像1枚を転送する時間間隔が短縮される。転送範囲フラッグとしてFO=3の状態も設け、転送範囲フラッグFO=3のとき、転送範囲が半分の領域であり(転送領域は図8(b))、第1のフィールドのみの画像を転送する。すなわち、撮像信号入力部133から入力される撮像信号I0(x,y)は、x方向にH0画素、y方向にV0/6画素を持ち、I0(0,0)((x,y)=(0,0))、I0(1,0)、I0(2,0)、・・・、I0(0,3)、I0(1,3)、I0(2,3)、・・・、I0(H0-1,V0/2-3)の順に入力され、順次、前処理部134に転送される。図20(c)のように、信号20dが発生するタイミングと垂直同期信号21dが発生するタイミングは略同一である。垂直同期信号21dの立ち上がりエッジから一定期間後に、信号22dのハイレベルで垂直CCD内に残された電荷を水平CCDに掃き出し、信号23dのハイレベルのタイミングでCCDセンサのフォトダイオードから垂直転送CCDへ電荷が転送され、信号24dのハイレベルで、順次垂直CCD、水平CCD内を電荷が転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。なお、常に、第1のフィールドの撮像信号のみが転送される(24e1で示された期間)ため、転送範囲フラッグFO=1(第1の動作モード)のときの電荷の転送時間(信号24aがハイレベルを取る期間)と比較し、転送範囲フラッグFO=3(転送範囲が半分の領域で第1のフィールド画像のみを転送する)のときの電荷の転送時間(信号24aがハイレベルを取る期間)は略1/6倍となり、画像1枚を転送する時間間隔が短縮される。
ここで、1枚のフィールドのみを転送することにより、垂直方向の画素数は減少するが、水平方向の画素数は減少しない。視差が発生する方向は水平方向であり、視差演算の精度悪化は小さい。したがって、1枚のフィールドのみを転送する場合は、視差演算の精度を保持しつつ、高速化が可能である。
ここで、視差演算の高速性が必要な場合は転送範囲フラッグFO=3(第3の動作モード)に設定して転送範囲を撮像領域の半分の領域で生成される撮像信号とし、常に第1のフィールドのみを転送する。また、高速性と高精度性とがある程度必要な場合は転送範囲フラッグFO=2(第2の動作モード)に設定して転送範囲を撮像領域の半分の領域で生成される撮像信号とし、第1フレームから第3フレームまでを転送する。また、高精度性が必要な場合は転送範囲フラッグFO=1(第1の動作モード)に設定して転送範囲を撮像領域の全領域で生成される撮像信号とし、第1フレームから第3フレームまでを転送する。このように動作することにより、状況に応じ高速性と高精度性とを適宜変更できる。
なお、視差演算の高速性及び/または高精度性が必要か否かは、被写体に関する情報に基づいてSLSI125が判断する。すなわち、例えば上述したようにして求められた信頼度Eの値に応じて、SLSI125が高速性及び/または高精度性が必要か否かを判断し、その判断結果にしたがって、SLSI125が第1〜第3の動作モードのいずれかを選択する。
なお、転送範囲を撮像領域の全領域で生成される撮像信号として第1のフィールドのみを転送する場合を付加することにより、さらに緻密に状況に対応できる。また、第1のフィールドの代わりに、第2のフィールド、あるいは第3のフィールドを転送してもよい。
(実施の形態2)
本発明の実施の形態1に係る撮像装置は、主に近赤外光成分を透過するカラーフィルタ(第1のカラーフィルタ124a、および第2のカラーフィルタ124b)、および主に緑色光成分を透過するカラーフィルタ(第3のカラーフィルタ124c、および第4のカラーフィルタ124d)がそれぞれ水平に配置され、それらに対応する撮像成分同士(第1の撮像信号I1と第2の撮像信号I2、および第3の撮像信号I3と第4の撮像信号I4)を比較し、視差を演算し、この視差に基づき距離を演算した。これに対し、本発明の実施の形態2に係る撮像装置は、主に近赤外光成分を透過するカラーフィルタ、および主に緑色光成分を透過するカラーフィルタがそれぞれ対角に配置され、それらに対応する撮像成分同士を比較し、視差を演算し、この視差に基づき距離を演算する。
以下、本発明の実施の形態2に係る撮像装置について、図面を参照しながら説明する。
図21は、本発明の実施の形態2に係る撮像装置の構成を示す断面図である。図21において、撮像装置201は、レンズモジュール部110、および回路部220を有する。
レンズモジュール部110は、鏡筒111、上部カバーガラス112、およびレンズ113を有する。回路部220は、基板121、パッケージ122、撮像素子223、パッケージカバーガラス224、およびシステムLSI(以下、SLSIと記す)225を有する。
鏡筒111、上部カバーガラス112、およびレンズ113は、実施の形態1と同様で
あり、説明を省略する。
基板121、およびパッケージ122は、実施の形態1と同様であり、説明を省略する。
撮像素子223は、固体撮像素子であるCMOSセンサであり、撮像素子223の受光面が第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dの光軸と略垂直になるようにして配置される。撮像素子223の各端子は、パッケージ122の内側の底部の金属端子にワイヤーボンディングにより金線227で接続され、基板121を介して、SLSI125と電気的に接続される。撮像素子223の受光面に、第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部113dから射出された光がそれぞれ結像し、その光の情報がフォトダイオードにより電気の情報へ変換され、その電気の情報がSLSI125に転送される。
図22は、本発明の実施の形態2に係る撮像装置の回路部の構成を示す平面図である。パッケージカバーガラス224は、平板状であり、透明樹脂により形成され、パッケージ122の上面に接着などにより固着される。パッケージカバーガラス224の上面には、第1のカラーフィルタ224a、第2のカラーフィルタ224b、第3のカラーフィルタ224c、第4のカラーフィルタ224d、および遮光部224eが蒸着などにより配置される。また、パッケージカバーガラス224の下面には、反射防止膜が蒸着などにより配置される。
撮像素子223は、実施の形態1の場合と同様に、第1の撮像領域223a、第2の撮像領域223b、第3の撮像領域223c、および第4の撮像領域223dで構成されている。これらの第1〜第4の撮像領域223a〜223dは、それぞれの受光面が、第1〜第4のレンズ部113a〜113dの光軸と略垂直になるようにして2行2列で配置される。なお、実施の形態1の場合と同様に、1個の撮像素子が1個の撮像領域となり、そのような撮像素子を複数設けることによって、複数の撮像領域を有するようにしてもよい。
図23は、本発明の実施の形態2に係るカメラモジュールのカラーフィルタの特性図である。第2のカラーフィルタ224b、および第3のカラーフィルタ224cは、図23のIRで示した主に近赤外光を透過する分光透過特性(波長λ1を中心とする透過特性。例えば、λ1=870nm)を有し、第1のカラーフィルタ224a、および第4のカラーフィルタ224dは、図23のGで示した主に緑色光を透過する分光透過特性(波長λ2を中心とする透過特性。例えば、λ2=500nm)を有する。
したがって、第1のレンズ部113aの上部から入射した物体光は、第1のレンズ部113aの下部から射出され、第1のカラーフィルタ224aにより主に緑色光が透過し、第1の撮像領域223aの受光部に結像するため、第1の撮像領域223aは物体光のうち緑色光成分を受光する。また、第2のレンズ部113bの上部から入射した物体光は、第2のレンズ部113bの下部から射出され、第2のカラーフィルタ224b主に近赤外光が透過し、第2の撮像領域223bの受光部に結像するため、第2の撮像領域223bは物体光のうち近赤外光成分を受光する。また、第3のレンズ部113cの上部から入射した物体光は、第3のレンズ部113cの下部から射出され、第3のカラーフィルタ224cにより主に近赤外光が透過し、第3の撮像領域223cの受光部に結像するため、第3の撮像領域223cは物体光のうち近赤外光成分を受光する。更に、第4のレンズ部113dの上部から入射した物体光は、第4のレンズ部113dの下部から射出され、第4のカラーフィルタ224dにより主に緑色光が透過し、第4の撮像領域223dの受光部に結像するため、第4の撮像領域223dは物体光のうち緑色光成分を受光する。
SLSI225は、後述の方法で、撮像素子223を駆動し、撮像素子223からの電気情報を入力し、各種演算を行い、上位CPUと通信を行い、外部に画像情報や距離情報などを出力する。なお、SLSI225は、電源(例えば3.3V)とグランド(例えば、0V)に接続される。
次に、本発明の実施の形態2に係る撮像装置の動作を説明する。図24は、本発明の実施の形態2に係る撮像装置の構成を示すブロック図である。SLSI225は、システム制御部231、撮像素子駆動部232、撮像信号入力部233、前処理部234、入力バッファ135、演算部236、出力バッファ137、および入出力部138を有する。撮像素子駆動部232は、第1の撮像素子駆動部232a、および第2の撮像素子駆動部232bを有する。入力バッファ135は、第1の入力バッファ135a、第2の入力バッファ135b、第3の入力バッファ135c、および第4の入力バッファ135dを有する。演算部236は、演算部バッファ241、視差演算部242、距離演算部143、および転送範囲決定部144を有する。演算バッファ241は、第1の演算バッファ241a、および第2の演算バッファ241bを有する。出力バッファ137は、第1の出力バッファ137a、および第2の出力バッファ137bを有する。
システム制御部231は、CPU(中央演算処理装置:Central Processing Unit)、ロジック回路などから構成され、SLSI225の全体を制御する。
撮像素子駆動部232は、ロジック回路などから構成され、撮像素子223を駆動する信号を発生し、この信号に応じた電圧を撮像素子223に印加する。この撮像素子駆動部232は、第1の撮像素子駆動部232a、および第2の撮像素子駆動部232bから構成され、後述の転送範囲フラッグFO=1(第1の動作モード)のとき、第1の撮像素子駆動部232aが動作し、転送範囲フラッグFO=2(第2の動作モード)のとき、第2の撮像素子駆動部232bが動作する。このように、あらかじめ2種類の回路(撮像素子駆動部)を用意することにより、転送範囲の変更(動作モードの切替)を容易にすることができる。
撮像信号入力部233は、CDS回路(相関二重サンプリング回路:Correlated Double Sampling Circuit)、AGC(自動利得制御器:Automatic Gain Controller)、ADC(アナログ/ディジタル変換器:Analog Digital Converter)が直列に接続されて構成され、撮像素子223からの電気信号が入力され、CDS回路により固定ノイズを除去し、AGCによりゲインを調整し、ADCによりアナログ信号からディジタル値に変換し、後述のように、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4とする。
転送範囲決定部144は、後述の方法で、転送範囲フラッグFOを決定する。転送範囲フラッグFO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であることを示し、転送範囲フラッグFO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であることを示す。なお、転送範囲フラッグは、FO=1に初期化されている。
図25は、本発明の実施の形態2に係る撮像装置の撮像信号の切り出し位置を説明するための図である。図26は、本発明の実施の形態2に係る撮像装置の撮像信号の転送を示すタイミングチャートである。転送範囲フラッグFO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であるため、図25(a)のように、第1の撮像信号I1に対応する領域(原点が(x01,y01)で、水平画素がH1画素で、垂直画素がV1画素の領域)、第2の撮像信号I2に対応する領域(原点が(x02,y02)で、水平画素がH1画素で、垂直画素がV1画素の領域)、第3の撮像信号I3に対応する領域(原点が(x03,y03)で、水平画素がH1画素で、垂直画素がV1画素の領域)、および第4の撮像信号I4に対応する領域(原点が(x04,y04)で、水平画素がH1画素で、垂直画素がV1画素の領域)を転送する。図26(a)のように、垂直同期信号21fの立ち上がりエッジから一定期間後に、信号24fのハイレベルで、撮像信号が順次転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。すなわち、24f1で示される期間において第1の撮像信号I1がI1(0,0)、I1(1,0)、I1(2,0)、・・・、I1(H1-1、V1-1)の順に入力され、24f2で示される期間において第2の撮像信号I2がI2(0,0)、I2(1,0)、I2(2,0)、・・・、I2(H1-1、V1-1)の順に入力され、24f3で示される期間において第3の撮像信号I3がI3(0,0)、I3(1,0)、I3(2,0)、・・・、I3(H1-1、V1-1)の順に入力され、および24f4で示される期間において第4の撮像信号I4がI4(0,0)、I4(1,0)、I4(2,0)、・・・、I4(H1-1、V1-1)の順に入力され、前処理部234に転送される。
転送範囲フラッグFO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であるため、図25(b)のように、第2の撮像信号I2に対応する領域(原点が(x02,y02)で、水平画素がH1画素で、垂直画素がV1画素の領域)、および第3の撮像信号I3に対応する領域(原点が(x03,y03)で、水平画素がH1画素で、垂直画素がV1画素の領域)を転送する。図26(b)のように、垂直同期信号21fの立ち上がりエッジから一定期間後に、信号24fのハイレベルで、撮像信号が順次転送され、撮像信号入力部133においてアナログ信号からディジタル信号の撮像信号として変換入力される。すなわち、24g2で示される期間において第2の撮像信号I2がI2(0,0)、I2(1,0)、I2(2,0)、・・・、I2(H1-1、V1-1)の順に入力され、および24g3で示される期間において第3の撮像信号I3がI3(0,0)、I3(1,0)、I3(2,0)、・・・、I3(H1-1、V1-1)の順に入力され、前処理部234に転送される。
転送範囲フラッグFO=1(第1の動作モード)のときの電荷の転送時間(信号24fがハイレベルを取る期間)と比較し、転送範囲フラッグFO=2(第2の動作モード)のときの電荷の転送時間(信号24fがハイレベルを取る期間)は略半分であるため、画像1枚を転送する時間間隔が短縮される。
前処理部234は、ロジック回路などから構成され、撮像信号の強度補正処理を行い、順次、入力バッファ135に転送する。
FO=1のとき、転送範囲が撮像領域の全領域で生成される撮像信号であるため、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4の強度を補正し、順次、入力バッファ135に転送する。第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号は、それぞれ第1のレンズ部113a、第2のレンズ部113b、第3のレンズ部113c、および第4のレンズ部114dによって結像された被写体像によって得られたものである。下記式11のように、第1の撮像信号I1を第1の強度補正係数ks1で補正し、下記式12のように、第2の撮像信号I2を第2の強度補正係数ks2で補正し、下記式13のように、第3の撮像信号I3を第3の強度補正係数ks3で補正し、さらに、下記式14のように、第4の撮像信号I4を第4の強度補正係数ks4で補正する。
I1(x,y) = ks1(x,y) * I1(x,y) … 式11
I2(x,y) = ks2(x,y) * I2(x,y) … 式12
I3(x,y) = ks3(x,y) * I3(x,y) … 式13
I4(x,y) = ks4(x,y) * I4(x,y) … 式14
なお、第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)のそれぞれは、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4の座標(x,y)における強度補正係数を示し、検査工程などにおいて特定チャートを撮影して決定され、EEPROMやフラッシュメモリに保存される。なお、各画素の係数を持たずに、代表点のみを持ち、その代表点を用いて線形補間により第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)を求めてもよい。また、近似式を策定しその係数のみを持ち、各座標の第1の強度補正係数ks1(x,y)、第2の強度補正係数ks2(x,y)、第3の強度補正係数ks3(x,y)、および第4の強度補正係数ks4(x,y)を作成してもよい。また、レンズの光軸のずれなどを校正するために、適宜、座標変換を行ってもよい。
一方、FO=2のとき、転送範囲が撮像領域の半分の領域で生成される撮像信号であるため、第2の撮像信号I2、および第3の撮像信号I3を作成し、順次、入力バッファ135に転送する。FO=1のとき(第1の動作モード)と比較し、第1の撮像信号I2、および第4の撮像信号I4に関する処理が省略される。第2の撮像信号I2、および第3の撮像信号I3に関する処理は同様であるため、説明を省略する。
FO=1のとき、第1の入力バッファ135aは、DRAM(Dynamic Random Access Memory)などから構成され、第1の撮像信号I1を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第2の入力バッファ135bは、DRAMなどから構成され、第2の撮像信号I2を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第3の入力バッファ135cは、DRAMなどから構成され、第3の撮像信号I3を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。第4の入力バッファ135dは、DRAMなどから構成され、第4の撮像信号I4を順次読み込み、H1*V1画素(x方向にH1画素、y方向にV1画素)のデータを保存する。
一方、FO=2のとき、第2の撮像信号I2、および第3の撮像信号I3を作成し、順次、入力バッファ135に入力する。FO=1のとき(全領域を転送するとき)と比較し、第1の入力バッファ135a、および第4の入力バッファ135dに関する処理が省略される。第2の入力バッファ135b、および第3の入力バッファ135cに関する処理は同様であるため、説明を省略する。
演算部236は、SRAMから構成された第1の演算バッファ241a、第2の演算バッファ241bと、ロジック回路やCPUなどから構成された視差演算部242と、ロジック回路やCPUなどから構成された距離演算部143と、ロジック回路やCPUなどから構成された転送範囲決定部144と、から構成される。演算部236は、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4をブロック単位で読み込み、第1の演算バッファ241a、第2の演算バッファ241bに保存する。そして、視差演算部242において第1の演算バッファ241a、および第2の演算バッファ241bのデータなどに基づき視差を演算し、距離演算部143において求められた視差に基づき距離を演算し、求められた距離データを出力バッファ137に転送する。
出力バッファ137、および入出力部138は、実施の形態1と同様であり、説明を省略する。
図27は、本発明の実施の形態2に係る撮像装置の動作を示すフローチャートである。SLSI225のシステム制御部231により、撮像装置201は、このフローチャートのとおりに動作される。
ステップS2010において、動作を開始する。例えば、上位CPU(図示せず)が、入出力部136を介し、撮像装置201に動作の開始を命令することにより、撮像装置201は、動作を開始する。次に、ステップS2020を実行する。
ステップS2020において、転送範囲の初期化処理を行う。本実施の形態では、この初期化処理により、転送範囲フラッグFO=1(第1の動作モード)が設定される。次に、ステップS2030を実行する。
ステップS2030において、撮像信号を入力する。システム制御部231の命令により、撮像素子駆動部232が転送を行うための信号を随時出力する。転送範囲フラッグFO=1(第1の動作モード)のとき、第1の撮像信号駆動部232aが動作する。この場合、撮像信号入力部233は、第1の撮像信号I1(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I1(0,0)((x,y)=(0,0))、I1(1,0)、I1(2,0)、・・・、I1(H1-1,V1-1)の順に入力し、順次、前処理部234に転送する。次に、第2の撮像信号I2(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I2(0,0)((x,y)=(0,0))、I2(1,0)、I2(2,0)、・・・、I2(H1-1,V1-1)の順に入力し、順次、前処理部234に転送する。次に、第3の撮像信号I3(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I3(0,0)((x,y)=(0,0))、I3(1,0)、I3(2,0)、・・・、I3(H1-1,V1-1)の順に入力し、順次、前処理部234に転送する。次に、第4の撮像信号I4(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I4(0,0)((x,y)=(0,0))、I4(1,0)、I4(2,0)、・・・、I4(H1-1,V1-1)の順に入力し、順次、前処理部234に転送する。前処理部234は、強度補正処理を行い、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4を作成し、第1の撮像信号I1、第2の撮像信号、第3の撮像信号、および第4の撮像信号を、それぞれ、順次、第1の入力バッファ135a、第2の入力バッファ135b、第3の入力バッファ135c、および第4の入力バッファ135dに転送する。
一方、転送範囲フラッグFO=2(第2の動作モード)のとき、第2の撮像信号駆動部232bが動作し、撮像信号入力部233は、第2の撮像信号I2(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I2(0,0)((x,y)=(0,0))、I2(1,0)、I2(2,0)、・・・、I2(H1-1,V1-1)の順に入力し、順次、前処理部234に転送し、第3の撮像信号I3(x,y)を、x方向にH1画素、y方向にV1画素だけ、すなわち、I3(0,0)((x,y)=(0,0))、I3(1,0)、I3(2,0)、・・・、I3(H1-1,V1-1)の順に入力し、順次、前処理部234に転送する。前処理部234は、強度補正処理を行い、第2の撮像信号I2、および第3の撮像信号I3を作成し、第2の撮像信号I2、および第3の撮像信号I3を、それぞれ、順次、第2の入力バッファ135b、および第3の入力バッファ135cに転送する。
ステップS2040において、第2の入力バッファ135aに保存されている第2の撮像信号I2を第1の出力バッファ137aに転送し、第1の出力バッファ137aは、画像データとして保存する。次に、ステップS2100を実行する。
ステップS2100において、距離データを作成し、順次、第2の出力バッファ137bに転送する。また、転送範囲を決定し、転送範囲フラッグFOを設定する。この動作の詳細は後述する。次に、ステップS2910を実行する。
ステップS2910において、外部にデータを出力する。入出力部138は、第1の出力バッファ137a上の画像データ、および第2の出力バッファ137b上の距離データを、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。次に、S2920を実行する。
ステップS2920において、動作を終了するかどうかを判断する。例えば、システム制御部231は、入出力部136を介し、上位CPU(図示せず)と通信し、動作を終了するかどうかの命令を要求する。そして、上位CPUが終了を命令すれば動作を終了し、次に、ステップS2930を実行する。一方、上位CPUが終了を命令しなければ動作を継続し、次に、ステップS2030を実行する。すなわち、上位CPUが終了を命令しない限り、ステップS2030、ステップS2040、ステップS2100、およびステップS2910のループの実行を継続する。
ステップS2930において、動作を終了する。
次に、ステップS2100における動作の詳細を説明する。図28は、本発明の実施の形態2に係る撮像装置の演算部の動作を示すフローチャートである。図28のフローチャートは、ステップS2100の動作の詳細を示す。ステップS2100の演算では、まず、ステップS2110を実行する。
ステップS2110において、演算の動作を開始する。次に、ステップS2200を実行する。
ステップS2200において、視差演算を実行する。図29は、本発明の実施の形態2に係る撮像装置の視差演算の動作を示すフローチャートである。図29のフローチャートは、ステップS2200の動作の詳細を示す。ステップS2200の演算では、まず、ステップS2210を実行する。
ステップS2210において、視差演算の動作を開始する。次に、ステップS2220を実行する。
ステップS2220において、転送範囲フラッグFOによって分岐する。転送範囲フラッグFO=1のとき(S2220でY)、転送範囲が撮像領域の全領域で生成される撮像信号となり、次に、ステップS2230aを実行する。一方、転送範囲フラッグFO=2のとき(S2220でN)、転送範囲が撮像領域の半分の領域で生成される撮像信号となり、次に、ステップ2230bを実行する。
ステップS2230aにおいて、第2の撮像信号と第3の撮像信号とを利用した視差演算を実行する。図30は、本発明の実施の形態2に係る撮像装置の第2の撮像信号と第3の撮像信号とを利用した視差演算の動作を示すフローチャートである。図30のフローチャートは、ステップS2230aの動作の詳細を示す。ステップS2230aの演算では、まず、ステップS2310を実行する。
ステップS2310において、第2の撮像信号と第3の撮像信号とを利用した視差演算の動作を開始する。次に、ステップS2320を実行する。
ステップS2320において、ブロックインデックスibに0に初期化する。次に、ステップS2330を実行する。
ステップS2330において、ブロックを選択する。図31は、本発明の実施の形態2に係る撮像装置の第2の撮像信号と第3の撮像信号とを利用した視差演算における第2の撮像信号の分割ブロックと演算順番を説明する図であり、図32は、本発明の実施の形態2に係る撮像装置の第2の撮像信号と第3の撮像信号とを利用した視差演算における第3の撮像信号の分割ブロックと演算順番を説明する図である。図31において、第2の撮像信号I2は、x方向にHB画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、各ブロックはx方向、y方向ともに重なる部分はない。図32において、第3の撮像信号I3は、図32(b)のような(HB+SB)*(VB+SB)-SB*SB画素のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。また、図32において、図32(b)のようなブロックを取ることができないブロック(例えば、左上や右下や左下のブロック)は、適宜取れない部分が削除される(例えば、左上のブロックはHB*VBの長方形状のブロックとなる)。なお、実施の形態2では、以下、HB=32、VB=32の例を示す。図31、および図32において、各ブロックの上段に記述された数字はブロックインデックスibを示す。また、図31、および図32おいて、各ブロックの下段に記述された座標(ibx、iby)は、各ブロックがx方向にibx番目、y方向にiby番目のブロックであることを示す。ここで、ibxは0からNh−1まで、ibyは0からVh−1まで存在する。ステップS2330において、図31、および図32において、ブロックインデックスibで示されるブロック(座標(ibx、iby)で示されるブロック)が選択される。次に、ステップS2340を実行する。
ステップS2340において、撮像信号を転送する。ここでは、ステップS2330において選択されたブロックの第2の撮像信号I2を第1の演算バッファ241aに転送する。演算バッファの座標(x,y)における値をBc1(x,y)とする。ここで、HB=32、VB=32であるため、x=0〜31、y=0〜31である。ステップS2340において、さらに、選択されたブロックの第3の撮像信号I3を第2の演算バッファ241bに転送する。演算バッファの座標(x,y)における値をBc2(x,y)とする。ここで、HB=32、VB=32であるため、x=31-SB〜31、y=0〜31+SBである。例えば、ib=ibtのとき、第1の演算バッファ241aには、座標(H1-1,0)と座標(H1-32,31)とで囲まれる1024画素の撮像信号I1が転送され、第2の演算バッファ241bには、図32において右斜上となる斜線が描かれた座標(H1-10,0)と座標(H1-32-SB,31+SB)とで囲まれる(1024+2*32*SB)画素の撮像信号I3が転送される。次に、ib=ibt+1のとき、第1の演算バッファ241aには、座標(H1-33,32)と座標(H1-64,63)とで囲まれる1024画素の撮像信号I1が転送される。また、第2の演算バッファ241bでは、図32において右斜上となる斜線が描かれた座標(H1-33,32)と座標(H1-64-SB,63+SB)とで囲まれる(1024+2*32*SB)画素の撮像信号I3が必要だが、ib=ibtと重なる部分(座標(H1-33,32)と座標(H1-32-SB,31+SB)で囲まれる2*32*SB画素の領域)はすでに第2の演算バッファ241bに転送されているため、新たに座標(H1-33-SB,31+SB)と座標(H1-64-SB,63+SB)とで囲まれる2048画素のみを第2の演算バッファ241bに転送する。これにより、転送時間を低減できる。次に、ステップS2350を実行する。
ステップS2350において、視差演算を実行する。まず、視差評価値R(k)を演算する。ここで、kは画像をどれだけずらすかを示すずらし量であり、k=0、1、2、・・・、SBのように変化させる。図33は、本発明の実施の形態2に係る撮像装置の第2の撮像信号と第3の撮像信号を利用したときの視差演算における視差評価値の演算領域を説明する図である。図33のように、データBc1が格納されている領域は、第1の演算バッファ241a中の領域である。データBc2が格納されている領域は、図33においてBc1で示されるブロックからx方向に負の向きでずらし量kだけ、y方向に正の向きでずらし量kだけ移動した第2の演算バッファ241b中の領域である。そして、ずらし量k=0からSBについて、下記式15に示される絶対値差分総和(SAD。Sum of Absolute Differences)を演算し、視差評価値R(k)とする。
R(k) = ΣΣ|Bc1(x,y)-Bc2(x-k,y+k)| … 式15
この視差評価値R(k)は、第1の演算バッファ241aのデータBc1と、x方向に負の向きでkだけ、y方向に正の向きでkだけ離れた領域における第2の演算バッファ241bのデータBc2とがどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。ここで、第1の演算バッファ241aのデータBc1は、第2の撮像信号I2を転送したものであり、第2の演算バッファ241bのデータBc2は、第3の撮像信号I3を転送したものであるため、視差評価値R(k)は、第2の撮像信号I2と対応する第3の撮像信号I3とがどれだけ相関があるかを示す。
図17のように、視差評価値R(k)はずらし量kの値によって変化し、ずらし量k=Δのとき極小値を持つ。第1の演算バッファ241aのデータBc1は、第1の演算バッファ241aのデータBc1をx方向に負の向きにkだけ、y方向に正の向きにkだけ移動した領域に存在する第2の演算バッファ241bのデータBc2と最も相関がある(最も似ている)ことを示す。したがって、第1の演算バッファ241aのデータBc1と第2の演算バッファ241bのデータBc2との視差がΔであることが分かる。ここで、このΔをこのブロックでの視差値Δと呼ぶ。
次に、視差値Δの信頼度を演算する。図34は、本発明の実施の形態2に係る撮像装置の第2の撮像信号と第3の撮像信号を利用したときの視差演算における視差評価値の信頼度の演算領域を説明する図である。データBc1が格納されている領域は、第1の演算バッファ241a中の領域である。データBc2が格納されている領域は、データBc1をx方向に負の向きにΔだけ、y方向に正の向きにΔだけ移動した第2の演算バッファ241b中の領域である。そして、下記式16のように、それぞれの領域のデータBc1(x,y)、Bc2(x-Δ,y+Δ)について、正規化相関係数を信頼度Eとする。
E(2,3)(ibx,iby) = ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc2(x-Δ,y+Δ)-avg(Bc2(x-Δ,y+Δ))}]
/ √ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc1(x,y)-avg(Bc1(x,y))}
/ √ΣΣ[{Bc2(x-Δ,y+Δ)-avg(Bc2(x-Δ,y+Δ))}
*{Bc2(x-Δ,y+Δ)-avg(Bc2(x-Δ,y+Δ))}] … 式16
そして、この視差値Δの信頼度Eを、第2の撮像信号と第3の撮像信号とを利用した視差演算において、座標(ibx,iby)で示される32x32画素のブロックにおける視差値Δ(2,3)(ibx,iby)とその信頼度E(2,3)(ibx,iby)として保存する。(2,3)は、第2の撮像信号と第3の撮像信号とを利用した視差値、および信頼度であることを示す。(ibx,iby)は、ブロックインデックスibで示されるブロックを示し、図31において各ブロックの下段に示される座標である。次に、ステップS2360を実行する。
ステップS2360において、ブロックインデックスibに1を加える。次に、ステップS2370を実行する。
ステップS2370において、第2の撮像信号と第3の撮像信号とを利用した視差演算を終了するかどうかを判断する。ブロックインデックスibがNh*Nv未満のとき、次のブロックの視差を演算するために、次に、ステップS2330を実行する。一方、ブロックインデックスibがNh*Nv以上のとき、全てのブロックの視差を演算したと判断し、次に、ステップS2380を実行する。
ステップS2380において、第2の撮像信号と第3の撮像信号とを利用した視差演算を終了し、上位ルーチンへ戻る。このようにして、第2の撮像信号と第3の撮像信号とを利用した視差演算において、ブロックインデックスibで示される32x32画素のブロックについて、32x32画素の分解能で視差値Δ(2,3)(ibx,iby)とその信頼度E(2,3)(ibx,iby)とが求められた。ここで、(2,3)は第2の撮像信号と第3の撮像信号とを利用していることを示し、(ibx,iby)は図31において各ブロックの下段に示される座標である(ibxは0からNh−1まで、ibyはNv−1まで変化する)。次に、図29のステップS2240aを実行する。
ステップS2240aにおいて、第1の撮像信号と第4の撮像信号とを利用した視差演算を実行する。図35は、本発明の実施の形態2に係る撮像装置の第1の撮像信号と第4の撮像信号とを利用した視差演算の動作を示すフローチャートである。図35のフローチャートは、ステップS2240aの動作の詳細を示す。ステップS2240aの演算では、まず、ステップS2410を実行する。
ステップS2410において、第1の撮像信号と第4の撮像信号とを利用した視差演算の動作を開始する。次に、ステップS2420を実行する。
ステップS2420において、ブロックインデックスibに0に初期化する。次に、ステップS2430を実行する。
ステップS2430において、ブロックを選択する。第1の撮像信号のブロック分割は、ステップS2330の第2の撮像信号のブロック分割と同様であり、説明を省略する。ただし、ブロックインデックスibは後述の図36と同様となるように変更される。図36は、本発明の実施の形態2に係る撮像装置の第1の撮像信号と第4の撮像信号とを利用した視差演算における第4の撮像信号の分割ブロックと演算順番を説明する図である。図31の第2の撮像信号I2と同様に、第1の撮像信号I1は、x方向にHB画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、各ブロックはx方向、y方向ともに重なる部分はない。図36おいて、第4の撮像信号I4は、図36(b)のような(HB+SB)*(VB+SB)-SB*SB画素のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。また、図36において、図36(b)のようなブロックを取れないブロック(例えば、右上や右下や左下のブロック)は、適宜取れない部分が削除される(例えば、右上のブロックはHB*VBの長方形状のブロックとなる)。なお、実施の形態2では、以下、HB=32、VB=32の例を示す。
図36において、各ブロックの上段に記述された数字はブロックインデックスibを示す。また、図36おいて、各ブロックの下段に記述された座標(ibx、iby)は、各ブロックがx方向にibx番目、y方向にiby番目のブロックであることを示す。ここで、ibxは0からNh−1まで、ibyは0からVh−1まで存在する。ステップS2320において、図36において、ブロックインデックスibで示されるブロック(座標(ibx、iby)で示されるブロック)が選択される。次に、ステップS2440を実行する。
ステップS2440、撮像信号を転送する。ここでは、ステップS2430において選択されたブロックの第1の撮像信号I1を第1の演算バッファ241aに転送する。第1の演算バッファ241aの座標(x,y)における値をBc1(x,y)とする。ここで、HB=32、VB=32であるため、x=0〜31、y=0〜31である。ステップS2430において、選択されたブロックの第4の撮像信号I4を第2の演算バッファ241bに転送する。第2の演算バッファ241bの座標(x,y)における値をBc2(x,y)とする。ここで、HB=32、VB=32であるため、x=0〜31+SB、y=0〜31+SBである。例えば、ib=ibtのとき、第1の演算バッファ241aには、座標(0,0)と座標(31,31)とで囲まれる1024画素の撮像信号I1が転送され、第2の演算バッファ241bには、図36において右斜下となる斜線が描かれた座標(0,0)と座標(31+SB,31+SB)とで囲まれる(1024+2*32*SB)画素の撮像信号I4が転送される。次に、ib=ibt+1のとき、第1の演算バッファ241aには、座標(32,32)と座標(63,63)とで囲まれる1024画素の撮像信号I1が転送される。また、第2の演算バッファ241bでは、図36において右斜下となる斜線が描かれた座標(32,32)と座標(63+SB,63+SB)とで囲まれる(1024+2*32*SB)画素の撮像信号I4が必要だが、ib=ibtと重なる部分(座標(32,32)と座標(31+SB,31+SB)で囲まれる2*32*SB画素の領域)はすでに第2の演算バッファ241bに転送されているため、新たに座標(32+SB,32+SB)と座標(63+SB,63+SB)とで囲まれる2048画素のみを第2の演算バッファ241bに転送すればよい。次に、ステップS2450を実行する。
ステップS2450において、視差演算を実行する。まず、視差評価値R(k)を演算する。ここで、kは画像をどれだけずらすかを示すずらし量であり、k=0、1、2、・・・、SBのように変化させる。図37は、本発明の実施の形態2に係る撮像装置の第1の撮像信号と第4の撮像信号を利用したときの視差演算における視差評価値の演算領域を説明する図である。図37のように、データBc1が格納されている領域は、第1の演算バッファ241a中の領域である。データBc2が格納されている領域は、図37においてBc1で示されるブロックからx方向に正の向きでずらし量kだけ、y方向に正の向きでずらし量kだけ移動した第2の演算バッファ241b中の領域である。そして、ずらし量k=0からSBについて、下記式17に示される絶対値差分総和(SAD。Sum of Absolute Differences)を演算し、視差評価値R(k)とする。
R(k) = ΣΣ|Bc1(x,y)-Bc2(x+k,y+k)| … 式17
この視差評価値R(k)は、第1の演算バッファ241aのデータBc1と、x方向に正の向きでkだけ、y方向に正の向きでkだけ離れた領域における第2の演算バッファ241bのデータBc2とがどれだけ相関があるかを示し、値が小さいほど相関が大きい(よく似ている)ことを示す。ここで、第1の演算バッファ241aのデータBc1は、第1の撮像信号I1を転送したものであり、第2の演算バッファ241bのデータBc2は、第4の撮像信号I4を転送したものであるため、視差評価値R(k)は、第1の撮像信号I1と対応する第4の撮像信号I4とがどれだけ相関があるかを示す。
図17のように、視差評価値R(k)はずらし量kの値によって変化し、ずらし量k=Δのとき極小値を持つ。第1の演算バッファ241aのデータBc1は、第1の演算バッファ241aのデータBc1をx方向に正の向きにkだけ、y方向に正の向きにkだけ移動した領域に存在する第2の演算バッファ241bのデータBc2と最も相関がある(最も似ている)ことを示す。したがって、第1の演算バッファ241aのデータBc1と第2の演算バッファ241bのデータBc2との視差がΔであることが分かる。ここで、このΔをこのブロックでの視差値Δと呼ぶ。
次に、視差値Δの信頼度を演算する。図38は、本発明の実施の形態2に係る撮像装置の第1の撮像信号と第4の撮像信号を利用したときの視差演算における視差評価値の信頼度の演算領域を説明する図である。データBc1が格納されている領域は、第1の演算バッファ241a中の領域である。データBc2が格納されている領域は、データBc1をx方向に正の向きにΔだけ、y方向に正の向きにΔだけ移動した第2の演算バッファ241b中の領域である。そして、下記式18のように、それぞれの領域のデータBc1(x,y)、Bc2(x+Δ,y+Δ)について、正規化相関係数を信頼度Eとする。
E(1,4)(ibx,iby) = ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc2(x+Δ,y+Δ)-avg(Bc2(x+Δ,y+Δ))}]
/ √ΣΣ[{Bc1(x,y)-avg(Bc1(x,y))}
*{Bc1(x,y)-avg(Bc1(x,y))}
/ √ΣΣ[{Bc2(x+Δ,y+Δ)-avg(Bc2(x+Δ,y+Δ))}
*{Bc2(x+Δ,y+Δ)-avg(Bc2(x+Δ,y+Δ))}] … 式18
そして、この視差値Δの信頼度Eを、第1の撮像信号と第4の撮像信号とを利用した視差演算において、座標(ibx,iby)で示される32x32画素のブロックにおける視差値Δ(1,4)(ibx,iby)とその信頼度E(1,4)(ibx,iby)として保存する。(1,4)は、第1の撮像信号と第4の撮像信号とを利用した視差値、および信頼度であることを示す。(ibx,iby)は、ブロックインデックスibで示されるブロックを示し、図31において各ブロックの下段に示される座標である。次に、ステップS2460を実行する。
ステップS2460において、ブロックインデックスibに1を加える。次に、ステップS2470を実行する。
ステップS2470において、第1の撮像信号と第4の撮像信号とを利用した視差演算を終了するかどうかを判断する。ブロックインデックスibがNh*Nv未満のとき、次のブロックの視差を演算するために、次に、ステップS2430を実行する。一方、ブロックインデックスibがNh*Nv以上のとき、全てのブロックの視差を演算したと判断し、次に、ステップS2480を実行する。
ステップS2480において、第1の撮像信号と第4の撮像信号とを利用した視差演算を終了し、上位ルーチンへ戻る。このようにして、第1の撮像信号と第4の撮像信号とを利用した視差演算において、ブロックインデックスibで示される32x32画素のブロックについて、32x32画素の分解能で視差値Δ(1,4)(ibx,iby)とその信頼度E(1,4)(ibx,iby)とが求められた。ここで、(1,4)は第1の撮像信号と第4の撮像信号とを利用していることを示し、(ibx,iby)は図31において各ブロックの下段に示される座標である(ibxは0からNh−1まで、ibyはNv−1まで変化する)。次に、図29のステップS2250aを実行する。
ステップS2250aにおいて、視差を選択する。それぞれのブロックに対し、信頼度E(2,3)(ibx,iby)、およびE(1,4)(ibx,iby)を比較し、最大の信頼度を与える視差をそのブロックでの視差値Δ(ibx,iby)とする。また、そのときの信頼度をE(ibx,iby)とする。次に、ステップS2260を実行する。
ステップS2230bにおいて、第2の撮像信号と第3の撮像信号とを利用した視差演算を実行する。このステップは、ステップS2230aと同様であり、説明を省略する。ただし、求められる視差、および信頼度を、それぞれのブロックでの視差値Δ(ibx,iby)、および信頼度E(ibx,iby)とする。次に、ステップS2260を実行する。
ステップS2260において、視差演算を終了し、上位ルーチンへ戻る。このようにして、各ブロックにおける視差値Δ(ibx,iby)が求められた。ここで、(ibx,iby)は図31の各ブロックの下段に示される座標であり、ibxは0からNh−1まで、ibyはNv−1まで変化する。本実施の形態では、フラッグFO=1(第1の動作モード)のとき、第2の撮像信号I2と第3の撮像信号I3とによる視差(近赤外光による視差)の信頼度と第1の撮像信号I1と第4の撮像信号I4とのよる視差(緑色光による視差)の信頼度とを比較し、信頼度が高い視差を採用した。一方、転送範囲フラッグFO=2(第2の動作モード)のとき、信頼度による選択を行わず、第2の撮像信号I2と第3の撮像信号I3とによる視差(近赤外光による視差)を採用した。次に、ステップS2700を実行する。
ステップS2700において、距離演算部143は、距離演算を行い、その結果を、順次、第2の出力バッファ137bに、距離データとして転送する。このステップS2700の動作は、実施の形態1のステップS1700と同様であり、説明を省略する。次に、ステップS2800を実行する。
ステップS2800において、転送範囲決定部144は、転送範囲を決定し、転送範囲フラッグを設定する。このステップS2800の動作は、実施の形態1のステップS1800と同様であり、説明を省略する。次に、ステップS2900を実行する。
ステップS2900において、演算動作を終了し、上位ルーチンへ戻る。次に、ステップS2910を実行する。
本実施の形態の撮像装置を以上のように構成し、動作させることにより、実施の形態1と同様の効果を有する。すなわち、本発明の実施の形態2に係る撮像装置によれば、転送範囲決定部144が撮像信号から作成される信頼度E(ibx,iby)に基づき、信頼度E(ibx,iby)が小さいとき、転送範囲フラッグFO=1(第1の動作モード)とし、信頼度E(ibx,iby)が大きいとき、転送範囲フラッグFO=2(第2の動作モード)とする。このことにより、信頼度E(ibx,iby)が大きいとき、高速性を上げる余裕があると判断し、出力フラッグFO=2(第2の動作モード)とすることにより、高速な視差演算、距離演算を可能とする撮像装置を実現する。一方、信頼度(ibx,iby)が小さいとき、精度がさらに必要であると判断し、出力フラッグFO=1(第1の動作モード)とすることにより、高精度な視差演算、距離演算を可能とする。
また、対角に配置されたレンズ部(第2のレンズ部113bと第3のレンズ部113c、および第1のレンズ部113aと第4のレンズ部114d)に対応する撮像信号(第2の撮像信号I2と第3の撮像信号I3、および第1の撮像信号I1と第4の撮像信号)を利用し視差演算することにより、水平方向に伸びた形状を有する被写体(例えば、車両前方の停止線)の視差を精度よく検知できる。
なお、実施の形態2の撮像装置において、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号の大きさは、それぞれ水平方向にH1画素、垂直方向にV1画素であり、この領域の全てを用いて視差演算を行ったが、ある程度余裕を持たせてもよい。すなわち、視差演算に利用する撮像信号を、水平方向にH1画素、垂直方向にV1画素よりも小さくしてもよい。
また、実施の形態2の撮像装置において、信頼度E(ibx,iby)により転送範囲を変更したが、本発明はこれに限定されない。本発明の要諦は、転送範囲を変更することにより、速度と精度との関係が最適な視差演算、距離演算をすることにある。なお、上位CPUの命令により、転送範囲を変更してもよい。例えば、上位CPUが画像データを用いて、転送範囲を変更してもよい。あるいは、ユーザが指定する被写体情報に基づいて、転送範囲を上位CPUが命令してもよい。
なお、実施の形態1の場合と同様に、撮像信号に基づくことなく、転送範囲が決定されるようにしてもよい。
また、実施の形態2の撮像装置において、転送範囲フラッグの初期値をFO=1(転送範囲が全領域)としたが、FO=2(転送範囲が半分の領域)としてもよい。
また、実施の形態2の撮像装置において、第1の演算バッファの大きさを32x32画素(水平方向に32画素、および垂直方向に32画素)としたが、これに限定されない。例えば、4x4画素、8x8画素、16x16画素でもよい。また、適宜大きさを変更してもよい。また、複数の大きさのブロックの視差を求め、選択してもよい。さらに、矩形状のブロックではなく、エッジなどを抽出してブロック分割してもよい。また、ブロックの視差を求めることに限定されず、エッジである線分の視差を求めてもよい。
また、実施の形態2の撮像装置において、第2の撮像信号I2を第1の出力バッファ137aに転送し、入出力部138から出力したが、他の撮像信号(第1の撮像信号I1、第3の撮像信号I3、あるいは第4の撮像信号I4)を出力してもよい。また、複数の撮像信号を出力してもよい。さらに、撮像信号の条件により、入出力部138から出力する撮像信号を変更してもよい。例えば、それぞれの撮像信号を比較し、最も明るい撮像信号(撮像信号の大きさの平均が最も大きいなどにより判定されたもの)、あるいは最も輪郭がはっきりしているもの(微分値の平均や最大値が最も大きいなどにより判定されたもの)などを出力するように変更してもよい。
また、実施の形態2の撮像装置において、CMOSセンサである撮像素子223とSLSI225とを別体としたが、SLSI225をCMOSプロセスにより構成し、撮像素子223とSLSI225とを同一半導体基板上に構成してもよい。このことにより、別体で構成するときと比較し、基板121上の配線などを省略できるため、低コスト化を実現できる。また、耐ノイズ性を向上できる。
なお、図25(a)において、第1の撮像信号I1に対応する領域(I1で示された領域)、第2の撮像信号I2に対応する領域(I2で示された領域)、第3の撮像信号I3に対応する領域(I3で示された領域)、および第4の撮像信号I4に対応する領域(I4で示された領域)は、それぞれ撮像素子の中心に対して対称に描画されているが、対称でなくてもよいことは言うまでもない。レンズ113の製造ばらつきやレンズモジュール110の組み立て精度などにより、第1のレンズ部113aの光軸中心、第2のレンズ部113bの光軸中心、第3のレンズ部113cの光軸中心、および第4のレンズ部113dの光軸中心がそれぞれ対応する撮像信号の同一の画素に対応するように、組み立て後の調整などにより、撮像信号I1の原点(x01,y01)、撮像信号I2の原点(x02,y02)、撮像信号I3の原点(x03,y03)、および撮像信号I4の原点(x04,y04)を設定し、SLSI225内や基板121上にフラッシュメモリやEEPROMなどを実装し情報を保持し、適宜使用すればよい。
また、実施の形態2の撮像装置は、任意の位置(図25のように、撮像信号I1では、原点が(x01,y01))から任意の大きさ(図25のように、撮像信号I1では、水平方向の画素がH1画素、垂直方向の画素がV1画素)の撮像信号を得ている。ここで、垂直方向にのみ任意の位置を指定できるものであれば、以下のような変形を行う。図39は、本発明の実施の形態2に係る撮像装置の変形の撮像信号の切り出し位置を説明するための図である。図39は、第1の撮像素子I1に対応する領域(I1で示された領域)は、第2の撮像素子I2に対応する領域よりも、垂直方向で負の方向にあり(すなわち、第1の撮像信号I1の原点のy座標y01と第2の撮像信号I2の原点のy座標y02との間に、y01<y02の関係があり)、第3の撮像素子I3に対応する領域(I3で示された領域)は、第4の撮像素子I4に対応する領域よりも、垂直方向で負の方向にある(すなわち、第3の撮像信号I3の原点のy座標y03と第4の撮像信号I4の原点のy座標y04との間に、y03<y04の関係がある)場合を示す。FO=1(第1の動作モード)のとき、図39(a)のように、水平方向にH0画素、垂直方向にy座標がy=y01〜y02+V1-1のV1+y02-y01画素の領域(右下がりの斜線部で示された領域)、および水平方向にH0画素、垂直方向にy座標がy=y03〜y04+V1-1のV1+y04-y03画素の領域(右上がりの斜線部で示された領域)を読み出し、適宜前処理を行い、第1の撮像信号I1、第2の撮像信号I2、第3の撮像信号I3、および第4の撮像信号I4に対応する領域を使用する。FO=2(第2の動作モード)のとき、図39(b)のように、水平方向にH0画素、垂直方向にy座標がy=y02〜y02+V1-1のV1画素の領域(右下がりの斜線部で示された領域)、および水平方向にH0画素、垂直方向にy座標がy=y03〜y03+V1-1のV1画素の領域(右上がりの斜線部で示された領域)を読み出し、適宜前処理を行い、第2の撮像信号I2、および第3の撮像信号I3を使用する。
転送範囲フラッグFO=1(第1の動作モード)のときに要する垂直方向の読み出し画素数V1+y02-y01(上部の右下がりの斜線部で示された領域の垂直方向の読み出し画素数)、およびV1+y04-y03(下部の右上がりの斜線部で示された領域の垂直方向の読み出し画素数)を、転送範囲フラッグFO=2(第2の動作モード)のときに要する垂直方向の読み出し画素数V1(上部の右下がりの斜線部で示された領域の垂直方向の読み出し画素数)、およびV1(下部の右上がりの斜線部で示された領域の垂直方向の読み出し画素数)まで低減し、すなわち、y02-y01+y04-y03画素だけ低減し、その分だけ画像の転送に要する時間を短縮できる。このことにより、信頼度E(ibx,iby)が大きいとき、高速性を上げる余裕があると判断し、出力フラッグFO=2(第2の動作モード)とすることにより、高速な視差演算、距離演算を可能とする撮像装置を実現する。一方、信頼度E(ibx,iby)が小さいとき、精度がさらに必要であると判断し、出力フラッグFO=1(第1の動作モード)とすることにより、高精度な視差演算、距離演算を可能とする。
なお、例えば転送範囲フラッグFO=3(第3の動作モード)として、第1の撮像信号I1と第4の撮像信号I4とを利用した視差演算のみを行う場合を付加してもよい。この場合、FO=3のとき、図39(c)のように、水平方向にH0画素、垂直方向にy座標がy=y01〜y01+V1-1のV1画素の領域(右下がりの斜線部で示された領域)、および水平方向にH0画素、垂直方向にy座標がy=y04〜y04+V1-1のV1画素の領域(右上がりの斜線部で示された領域)を読み出し、適宜前処理を行い、第1の撮像信号I1、および第4の撮像信号I4を使用する。読み出し位置を変更しなければ、FO=2とFO=3とに対応するためには、図39(a)のようにそれぞれの垂直方向の幅(2×V1)以上を読み出さなければならないが、FO=2とFO=3との切り替えのように、動作モードによって、読み出しを開始する垂直方向の位置を適宜変更し、垂直方向の読み出し画素は変更しない(2×V1に保つ)ことにより、画素転送に要する時間の増大を防止する。
また、図39において、右下がりの斜線部で示された領域と右上がりの斜線部で占められた領域の各行を交互に読み出してもよい。例えば、図39(a)において、y=y01、y03、y01+1、y03+1、y01+2、y03+1、・・・、y01+V1-1、y03+V1-1の順に読み出してもよい。ローリングシャッタ形式のCMOSセンサを使用する場合、右下がりの斜線部で示された領域を読み出した後、右上がりの斜線部で占められた領域を読み出すと、第2の撮像信号I2の撮像された時刻と第3の撮像信号が撮像された時刻とが異なる。そのため、被写体の動作が速いとき、誤差絶対値総和の演算に利用する撮像信号が異なるため、求められる視差の精度が低下する。ローリングシャッタ形式のCMOSセンサを使用する場合、右下がりの斜線部で示された領域と右上がりの斜線部で占められた領域の各行を交互に読み出すことにより、被写体の動作が速いときであっても、誤差絶対値総和の演算に利用する撮像信号が撮像信号の撮像時間がほぼ一致するため、高精度に視差演算できる。
また、ローリングシャッタ形式のCMOSセンサを使用する場合、それぞれの撮像領域を1画素ずづ順に読み出せば、さらに撮像時間の影響を低減し、高精度な視差演算を実現する。すなわち、FO=1(第1の動作モード)のとき、(x02,y02)、(x03,y03)、(x01,y01)、(x04,y04)、(x02+1,y02)、(x03+1,y03)、(x01+1,y01)、(x04+1,y04)、(x02+2,y02)、(x03+2,y03)、(x01+2,y01)、(x04+2,y04)、・・・、(x02+H1-1,y02)、(x03+H1-1,y03)、(x01+H1-1,y01)、(x04+H1-1,y04)、(x02,y02+1)、(x03,y03+1)、(x01,y01+1)、(x04,y04+1)、(x02+1,y02+1)、(x03+1,y03+1)、(x01+1,y01+1)、(x04+1,y04+1)、・・・、(x02,y02+V1-1)、(x03,y03+V1-1)、(x01,y01+V1-1)、(x04,y04+V1-1)、(x02+1,y02+V1-1)、(x03+1,y03+V1-1)、(x01+1,y01+V1-1)、(x04+1,y04+V1-1)、・・・、(x02+H1-1,y02+V1-1)、(x03+H1-1,y03+V1-1)、(x01+H1-1,y01+V1-1)、(x04+H1-1,y04+V1-1)の順に転送してもよい。なお、上述のように視差演算時に対応する組の撮像信号(第2の撮像信号I2と第3の撮像信号、および第1の撮像信号I1と第4の撮像信号I4)を順に読み出すことにより、さらに撮像時間のずれの影響を低減できる。一方、FO=2(第2の動作モード)のとき、(x02,y02)、(x03,y03)、(x02+1,y02)、(x03+1,y03)、(x02+2,y02)、(x03+2,y03)、・・・、(x02+H1-1,y02)、(x03+H1-1,y03)、(x02,y02+1)、(x03,y03+1)、(x02+1,y02+1)、(x03+1,y03+1)、・・・、(x02,y02+V1-1)、(x03,y03+V1-1)、(x02+1,y02+V1-1)、(x03+1,y03+V1-1)、・・・、(x02+H1-1,y02+V1-1)、(x03+H1-1,y03+V1-1)の順に転送してもよい。
このように、転送範囲に係る撮像領域が、生成する撮像信号の一部を撮像信号入力部233へ交互に転送することを繰り返すことによって、生成する撮像信号の全てを撮像信号入力部233へ転送するようにしてもよい。
(実施の形態3)
本発明の実施の形態1および実施の形態2に係る撮像装置は、例えば視差演算の高速性が必要な場合に2組の撮像信号を転送せず1組の撮像信号のみを転送することにより、転送に要する時間を低減し、高速に視差演算、距離演算している。これに対し、実施の形態3に係る撮像装置は、1組の撮像信号のうち、視差演算する範囲を限定し、その限定された部分のみを転送することにより、転送に要する時間を低減し、高速に視差演算、距離演算を行う。
以下、本発明の実施の形態3に係る撮像装置について、図面を参照しながら説明する。
図40は、本発明の実施の形態3に係る撮像装置の構成を示す断面図である。図40において、撮像装置は、レンズモジュール部310、および回路部320を有する。
レンズモジュール部310は、鏡筒311、上部カバーガラス312、およびレンズ313を有する。回路部320は、基板321、パッケージ322、撮像素子323、パッケージカバーガラス324、およびシステムLSI(以下、SLSIと記す)325を有する。
鏡筒311、および上部カバーガラス312は、それぞれ実施の形態1の鏡筒111、および上部カバーガラス312と同様であり、説明を省略する。
図41は、本発明の実施の形態3に係る撮像装置のレンズの構成を示す平面図である。レンズ313は、略円盤状であり、ガラスや透明樹脂から形成され、第1のレンズ部313a、および第2のレンズ部313bが配置される。第1のレンズ部313a、およびレンズ部313bの配置方向に沿って、図41に示すようにx軸を設定し、x軸に垂直にy軸を設定する。第1のレンズ部313a、および第2のレンズ部313bにおいて、被写体側から入射した光は、撮像素子323側へ射出し、撮像素子323上に2つの像を結像する。なお、図41のように、第1のレンズ部313aの光軸と第2のレンズ部313bの光軸とは、水平方向(x軸方向)はDだけ離れており、垂直方向(y軸方向)は一致している。
基板321、およびパッケージ322は、実施の形態1の基板121、およびパッケージ122とそれぞれ同様であり、説明を省略する。
撮像素子323は、CMOSセンサであり、撮像素子323の受光面が第1のレンズ部313a、および第2のレンズ部313bの光軸と略垂直になるようにして配置される。撮像素子323の各端子は、パッケージ322の内側の底部の金属端子にワイヤーボンディングにより金線327で接続され、基板321を介して、SLSI325と電気的に接続される。撮像素子323受光面に、第1のレンズ部313a、および第2のレンズ部313bから射出された光がそれぞれ結像し、その光の情報がフォトダイオードにより電気の情報へ変換され、その電気の情報がSLSI325に転送される。
図42は、本発明の実施の形態3に係る撮像装置の回路部の構成を示す平面図である。パッケージカバーガラス324は、平板状であり、透明樹脂により形成され、パッケージ322の上面に接着などにより固着される。また、パッケージカバーガラス324の上面、下面、あるいは両面には、反射防止膜が蒸着などにより配置される。
SLSI325は、後述の方法で、撮像素子323を駆動し、撮像素子323からの電気情報を入力し、各種演算を行い、上位CPUと通信を行い、外部に画像情報や距離情報などを出力する。なお、SLSI325は、電源(例えば3.3V)とグランド(例えば、0V)に接続される。
次に、本発明の実施の形態3に係る撮像装置の動作を説明する。図43は、本発明の実施の形態3に係る撮像装置の構成を示すブロック図である。SLSI325は、システム制御部331、撮像素子駆動部332、撮像信号入力部333、前処理部334、入力バッファ335、演算部336、出力バッファ337、および入出力部338を有する。入力バッファ335は、第1の入力バッファ335a、および第2の入力バッファ335bを有する。演算部336は、演算部バッファ341、視差演算部342、距離演算部343、および転送範囲決定部344を有する。演算バッファ341は、第1の演算バッファ341a、および第2の演算バッファ341bを有する。出力バッファ337は、第1の出力バッファ337a、および第2の出力バッファ337bを有する。
システム制御部331は、CPU(中央演算処理装置:Central Processing Unit)、ロジック回路などから構成され、SLSI325の全体を制御する。
撮像素子駆動部332は、ロジック回路などから構成され、撮像素子323を駆動する信号を発生し、この信号に応じた電圧を撮像素子323に印加する。
撮像信号入力部333は、CDS回路(相関二重サンプリング回路:Correlated Double Sampling Circuit)、AGC(自動利得制御器:Automatic Gain Controller)、ADC(アナログ/ディジタル変換器:Analog Digital Converter)が直列に接続されて構成され、撮像素子323からの電気信号が入力され、CDS回路により固定ノイズを除去し、AGCによりゲインを調整し、ADCによりアナログ信号からディジタル値に変換する。
前処理部334は、ロジック回路などから構成され、強度補正処理を行い、順次、入力バッファ335に転送する。なお、レンズの光軸のずれなどを校正するために、適宜、座標変換を行ってもよい。
演算部336は、SRAM(Static Random Access Memory)から構成された第1の演算バッファ341a、第2の演算バッファ341bと、ロジック回路やCPUなどから構成された視差演算部342と、ロジック回路やCPUなどから構成された距離演算部343と、ロジック回路やCPUから構成された転送範囲決定部344と、から構成される。演算部336は、第1の撮像信号I1、および第2の撮像信号I2をブロック単位で読み込み、それぞれ第1の演算バッファ341a、第2の演算バッファ341bに保存し、視差演算部342において第1の演算バッファ341a、および第2の演算バッファ341bのデータなどに基づき視差を演算し、距離演算部343において求められた視差に基づき距離を演算し、求められた距離データを出力バッファ337に転送する。
出力バッファ337は、DRAMなどから構成され、入力バッファ335から転送された画像データと演算部336から転送された距離データとを保存し、入出力部338に順次転送する。
入出力部338は、上位CPU(図示せず)との通信や、上位CPU、外部メモリ(図示せず)、および液晶ディスプレイなどの外部表示装置(図示せず)へ画像データ、および距離データを出力する。
図44は、本発明の実施の形態3に係る撮像装置の動作を示すフローチャートである。SLSI325のシステム制御部331により、撮像装置301は、このフローチャートのとおりに動作される。
ステップS3010において、動作を開始する。例えば、上位CPU(図示せず)が、入出力部336を介し、撮像装置301に動作の開始を命令することにより、撮像装置301は、動作を開始する。次に、ステップS3020を実行する。
ステップS3020において、転送範囲の初期化を行う。本実施の形態では、撮像領域の全領域で生成される撮像信号を転送範囲に設定する。そして、各ブロック(ibx,iby)の転送範囲フラッグFO(ibx,iby)=を全て1とする。
図45は、本発明の実施の形態3に係る撮像装置の撮像信号の切り出し位置を説明するための図である。撮像素子323の撮像領域の大きさは水平方向にH0画素、垂直方向にV0画素である。第1のレンズ部313aによって結像された被写体像を撮像する領域は、図45においてI1で示されるように、(x01,y01)を原点とする水平方向にH1画素、垂直方向にV1画素であり、第1の撮像信号I1としてSLSI325に入力される。また、第2のレンズ部313bによって結像された被写体像を撮像する領域は、図45においてI2で示されるように、(x02,y02)を原点とする水平方向にH1画素、垂直方向にV1画素であり、第2の撮像信号としてSLSI325に入力される。第1の撮像信号I1に対応する領域、および第2の撮像信号I2に対応する領域は、それぞれ多数のブロックの領域に分割されている。
図46は、本発明の実施の形態3に係る撮像装置の第1の撮像信号と第2の撮像信号とを利用した視差演算における第1の撮像信号の分割ブロックと演算順番と転送範囲フラッグとを説明する図であり、図47は、本発明の実施の形態3に係る撮像装置の第1の撮像信号と第2の撮像信号とを利用した視差演算における第2の撮像信号の分割ブロックと演算順番と転送範囲フラッグとを説明する図である。図46において、第1の撮像信号I1は、x方向にHB画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、各ブロックはx方向、y方向ともに重なる部分はない。図47において、第2の撮像信号I2は、x方向に(HB+SB)画素、y方向にVB画素の長方形状のブロックに分割され、x方向にHB画素、y方向にVB画素ずれて配置され、x方向にNh個、y方向にNv個のブロックを持つ。そのため、x方向について、隣のブロックと重なる。一方、y方向について、隣のブロックと重ならない。また、図47において、右側のブロックにおいてx方向に(HB+SB)画素を取れないブロックは、適宜x方向の右端が削除される。なお、実施の形態3では、以下、HB=32、VB=32の例を示す。
図46、および図47において、各ブロックの上段に記述された数字はブロックインデックスibを示す。また、図46、および図47において、各ブロックの中段に記述された座標(ibx、iby)は、各ブロックがx方向にibx番目、y方向にiby番目のブロックであることを示す。ここで、ibxは0からNh−1まで、ibyは0からVh−1まで存在する。また、図46、および図47において、各ブロックの下段には転送範囲フラッグFO(ibx,iby)が示され、転送範囲フラッグFO(ibx,iby)=1であれば動作を意味し、該当するブロックの撮像信号を転送し視差演算する。一方、転送範囲フラッグFO(ibx,iby)=0であれば停止を意味し、該当するブロックの撮像信号を転送せず視差演算しない。
ステップS3020において、各ブロック(ibx,iby)の転送範囲フラッグFO(ibx,iby)=を全て1とし、転送範囲を撮像領域の全領域で生成される撮像信号として初期化する。次に、ステップS3030を実行する。
ステップS3030において、撮像信号を入力する。システム制御部331の命令により、撮像素子駆動部332が電子シャッターや転送を行うための信号を随時出力する。転送範囲フラッグFO(ibx,iby)=1のブロック(動作のブロック)の撮像領域の撮像信号を順に入力し、順次、前処理部334に転送する。前処理部334は、第1の撮像信号I1、および第2の撮像信号I2の強度補正処理を行い、順次入力バッファ335に転送する。第1の撮像信号I1を、順次、第1の入力バッファ335aに転送し、第2の撮像信号I2を、順次、第2の入力バッファ335bに転送する。第1の撮像信号I1、および第2の撮像信号I2は、それぞれ第1のレンズ部313a、および第2のレンズ部313bによって結像された被写体像によって得られたものである。下記式19のように、第1の撮像信号I1を第1の強度補正係数ks1で補正し、および下記式20のように、第2の撮像信号I2を第2の強度補正係数ks2で補正する。
I1(x,y) = ks1(x,y) * I1(x,y) … 式19
I2(x,y) = ks2(x,y) * I2(x,y) … 式20
なお、第1の強度補正係数ks1(x,y)、および第2の強度補正係数ks2(x,y)は、第1の撮像信号I1、および第2の撮像信号I2の座標(x,y)における強度補正係数を示し、検査工程などにおいて特定チャートを撮影し決定され、EEPROMやフラッシュメモリに保存される。なお、各画素の係数を持たずに、代表点のみを持ち、その代表点を用いて線形補間により第1の強度補正係数ks1(x,y)、および第2の強度補正係数ks2(x,y)を求めてもよい。また、近似式を策定しその係数のみを持ち、各座標の第1の強度補正係数ks1(x,y)、および第2の強度補正係数ks2(x,y)を作成してもよい。また、レンズの光軸のずれなどを校正するために、適宜、座標変換を行ってもよい。次に、ステップS3040を実行する。
ステップS3040において、第1の入力バッファ335aに保存されている第1の撮像信号I1を第1の出力バッファ337aに転送し、第1の出力バッファ337aは、画像データとして保存する。なお、転送範囲フラッグFO(ibx,iby)=1のブロック(動作のブロック)おいて撮像信号I1をそのまま転送し、転送範囲フラッグFO(ibx,iby)=0のブロック(停止のブロック)おいて転送すべき撮像信号I1がないため該当する画像データを全て黒とするなどの処理を行う。次に、ステップS3100を実行する。
ステップS3100において、距離データを作成し、順次、第2の出力バッファ337bに転送する。また、転送範囲を決定し、転送範囲フラッグFO(ibx,iby)を設定する。この動作の詳細は後述する。次に、ステップS3910を実行する。
ステップS3910において、外部にデータを出力する。入出力部338は、第1の出力バッファ337a上の画像データ、および第2の出力バッファ337b上の距離データを、上位CPU(図示せず)や外部表示装置(図示せず)に出力する。なお、適宜転送範囲フラッグFO(ibx,iby)を出力してもよい。次に、S3920を実行する。
ステップS3920において、動作を終了するかどうかを判断する。例えば、システム制御部331は、入出力部336を介し、上位CPU(図示せず)と通信し、動作を終了するかどうかの命令を要求する。そして、上位CPUが終了を命令すれば動作を終了し、次に、ステップS3930を実行する。一方、上位CPUが終了を命令しなければ動作を継続し、次に、ステップS3030を実行する。すなわち、上位CPUが終了を命令しない限り、ステップS3030、ステップS3040、ステップS3100、およびステップS3910のループの実行を継続する。
ステップS3930において、動作を終了する。
次に、ステップS3100における動作の詳細を説明する。図48は、本発明の実施の形態3に係る撮像装置の演算部の動作を示すフローチャートである。図48のフローチャートは、ステップS3100の動作の詳細を示す。ステップS3100の演算では、まず、ステップS3110を実行する。
ステップS3110において、演算の動作を開始する。次に、ステップS3200を実行する。
ステップS3200において、視差演算を実行する。図49は、本発明の実施の形態3に係る撮像装置の視差演算の動作を示すフローチャートである。図49のフローチャートは、ステップS3200の動作の詳細を示す。ステップS3200では、第1の撮像信号と第2の撮像信号とを利用した視差演算を行う。ステップS3200の演算では、まず、ステップS3310を実行する。
ステップS3310において、視差演算の動作を開始する。次に、ステップS3320を実行する。
ステップS3320において、ブロックインデックスibに0に初期化する。次に、ステップS3330を実行する。
ステップS3330において、ブロックを選択する。図46、および図47において、ブロックインデックスibで示されるブロック(座標(ibx、iby)で示されるブロック)が選択される。次に、ステップS3335を実行する。
ステップS3335において、転送範囲であるかどうかを判断し、分岐する。ブロックインデックスibで示されるブロック(座標(ibx,iby)で示されるブロック)において転送範囲フラッグFO(ibx,iby)=1(動作のブロック)のとき、次に、ステップS3340を実行する。一方、ブロックインデックスibで示されるブロック(座標(ibx,iby)で示されるブロック)において転送範囲フラッグFO(ibx,iby)=0(停止のブロック)のとき、次に、ステップS3360を実行する。このように、転送範囲フラッグFO(ibx,iby)=1(動作のブロック)のブロックにおいて、後述のステップS3340において撮像信号を転送し、後述のステップS3350において視差演算を行い、後述のステップS3360を実行する。一方、転送範囲フラッグFO(ibx,iby)=0(停止のブロック)のブロックにおいて、撮像信号を転送と視差演算とを行わず、後述のステップS3360を実行する。
ステップS3340において、撮像信号を転送する。このステップS3340の動作は、実施の形態1のステップS1340の動作と同様であり、説明を省略する。ただし、第2の撮像信号について、転送を省略できる部分は、ブロックの重なりがあり、かつそのブロックにおいて転送範囲フラッグFO(ibx,iby)=1(動作のブロック)であった部分(すなわち、転送された部分)のみである。次に、ステップS3350を実行する。
ステップS3350において、視差演算を実行する。このステップS3350の動作は、実施の形態1のステップS1350の動作と同様であり、説明を省略する。ただし、信頼度の演算を行う必要はなく、実施の形態1でΔ(1,2)(ibx,iby)で示される視差を、ブロックインデックスibで示されるブロック(座標(ibx,iby)で示されるブロック)の視差値Δ(ibx,iby)とする。次に、ステップS3360を実行する。
ステップS3360において、ブロックインデックスibに1を加える。次に、ステップS3370を実行する。
ステップS3370において、視差演算を終了するかどうかを判断する。ブロックインデックスibがNh*Nv未満のとき、次のブロックの視差を演算するために、次に、ステップS3330を実行する。一方、ブロックインデックスibがNh*Nv以上のとき、全てのブロックの視差を演算したと判断し、次に、ステップS3380を実行する。
ステップS3380において、視差演算を終了し、上位ルーチンへ戻る。このようにして、ブロックインデックスibで示される32x32画素のブロックについて、32x32画素の分解能で視差値Δ(ibx,iby)が求められた。ここで、(ibx,iby)は図46において各ブロックの中段に示される座標である(ibxは0からNh−1まで、ibyはNv−1まで変化する)。次に、図48のステップS3700を実行する。
ステップS3700において、距離演算部343は、距離演算を行い、その結果を、順次、第2の出力バッファ337bに、距離データとして転送する。このステップS3700の動作は、実施の形態1のステップS1700の動作を同様であり、説明を省略する。ただし、距離演算は、転送範囲フラッグFO(ibx,iby)=1(動作のブロック)についてのみ行う。なお、転送範囲フラッグFO(ibx,iby)=0(停止のブロック)に負数を代入すれば、上位CPUに転送範囲フラッグFO(ibx,iby)の情報転送をしなくても、上位CPUは転送された距離データA(ibx,iby)のうち負数が代入されたブロックについては、視差演算、距離演算がなされなかったブロックであると判断できるため、通信の負荷を低減できる。次に、ステップS3800を実行する。
ステップS3800において、転送範囲決定部344は、転送範囲を決定し、各ブロック(ibx,iby)の転送範囲フラッグFO(ibx,iby)を設定する。図50は、本発明の実施の形態3に係る撮像装置の転送範囲を説明する図である。なお、図50において、簡単のため、ブロック数が小さいものを示しているが、ブロック数がこの図に限定されるものではない。転送範囲決定部344は、第1の撮像信号I1から構成される画像の各ブロックのうち、人物の顔面を含むブロックをFO(ibx,iby)=1(動作のブロック)とし、人物の顔面を含まないブロックをFO(ibx,iby)=0(停止のブロック)とする。図50において、図50(a)の座標(0,0)や座標(1,0)で示されるブロックのような白抜きのブロックは転送範囲フラッグFO(ibx,iby)=1(動作のブロック)を示し、例えば、図50(b)(c)(d)の座標(0,0)や座標(1,0)で示されるブロックのような斜線ハッチが掛けられたブロックは転送範囲フラッグFO(ibx,iby)=0(停止のブロック)を示す。
例えば、カメラモジュールである撮像装置301が起動されて最初に撮像される撮像信号I1は、ステップ3020において、全てのブロックの転送範囲フラッグFO(ibx,iby)=1となるように初期化されるため、図50(a)のように、第1のレンズ部313aに対応する撮像領域の全ての範囲が転送されている。転送範囲決定部344は、人物の顔面の部分を判断し、図50(b)のように、顔面を含むブロックは転送範囲フラッグFO(ibx,iby)=1(白抜きのブロック)に保ち、顔面を含まないブロックは転送範囲フラッグFO(ibx,iby)=0(斜線ハッチが掛けられたブロック)となるように、図50(a)のような転送範囲ブラッグFO(ibx,iby)を変更する。
なお、人物の顔面を検知する方法としては公知のものを利用することができる。例えば、人物の前面に本実施の形態の撮像装置を配置する場合では、卵型のエッジ(顔面の輪郭に相当するエッジ)を有し、その内部に2つの黒点(目に相当する2つの点)を有する画像内の領域を人物の顔面として検知すればよい。
また、図50(b)のような転送範囲フラッグFO(ibx,iby)の分布を持つときに、人物の顔面が移動すると、図50(c)のように顔面の一部が転送範囲FO(ibx,iby)=0(停止のブロック)に移動する。その場合、図50(b)では顔面が含まれたためFO(ibx,iby)=1(白抜きのブロック。動作のブロック)であったが、図50(c)では顔面が含まれなくなったブロックを、図50(d)の3800Aのように、転送範囲フラッグFO(ibx,iby)=0(斜線ハッチが掛けられたブロック)に変更する。さらに、図50(b)では顔面が含まれなかったためFO(ibx,iby)=0(斜線ハッチが掛けられたブロック。停止のブロック)であったが、図50(c)では顔面が含まれるようになったブロックを、図50(d)の3800Bのように、転送範囲フラッグFO(ibx,iby)= 1(白抜きのブロック。動作のブロック)に変更する。次に、ステップS3900を実行する。
ステップS3900において、演算動作を終了し、上位ルーチンへ戻る。次に、ステップS3910を実行する。
本実施の形態の撮像装置を以上のように構成し、動作させることにより、以下の効果を有する。
転送範囲を常に撮像領域の全領域で生成される撮像信号とする場合、常に全ての画素を転送する分だけ転送時間が必要であり、その転送時間の分だけ高速化に限界があった。本発明の実施の形態3に係る撮像装置によれば、図50(b)(d)のように、人物の顔面を含むブロックの転送範囲フラッグFO(ibx,iby)=1とし、人物の顔面を含むブロックのみの撮像信号を転送する。車載用の乗員監視に利用した場合、注視すべき被写体は人物の顔であり、顔の距離測定が必要である。そこで、顔部分の領域のみに転送を限定することにより、全画素を転送する場合と比較し転送量を低減し、高速な視差演算、距離演算を可能にする撮像装置を実現する。例えば、図50(b)(d)では、全てのブロックが48個に対し、撮像信号を転送するブロックを14個に低減できる。
なお、実施の形態3の撮像装置においては、上述したように、撮像領域の一部の領域で生成される撮像信号(全ブロック中の特定のブロックに係る撮像信号)を転送範囲に設定している。そして、その転送範囲は適宜変更されることになる。換言すると、複数の動作モードが適宜切り替えられることになる。
また、実施の形態3の撮像装置においては、初期状態として全ての画像領域を転送範囲に設定しているが、あらかじめ中心付近の画像領域のみを転送範囲としてもよい。適切な位置に撮像装置を取り付ければ、人物の顔面は画像の中心にあることがほとんどであるため、初期状態として中心付近のみを転送し、適宜、転送範囲を変更すればよい。このことにより、転送領域は常に撮像領域の一部の領域で生成される撮像信号とすることができるため、常に転送時間を短縮でき、高速に視差演算、距離演算できる。
また、実施の形態3の撮像装置において、第3の演算バッファの大きさを32x32画素(水平方向に32画素、および垂直方向に32画素)としたが、これに限定されない。例えば、4x4画素、8x8画素、16x16画素でもよい。また、適宜大きさを変更してもよい。また、複数の大きさのブロックの視差を求め、選択してもよい。さらに、矩形状のブロックではなく、エッジなどを抽出してブロック分割してもよい。また、ブロックの視差を求めることに限定されず、エッジである線分の視差を求めてもよい。
また、実施の形態3の撮像装置において、第1の撮像信号I1を第1の出力バッファ337aに転送し、入出力部338から出力したが、第2の撮像信号I2を出力してもよい。また、複数の撮像信号を出力してもよい。
また、実施の形態3の撮像装置において、人物の顔面を含むブロックのみを転送したが、さらに限定し、例えば顔面のうち目を含むブロックのみを転送する等してもよい。
また、実施の形態3の撮像装置において、人物の顔面を含むブロックのみを転送したが、例えば撮像信号のうち路面に相当する領域以外の領域に係る撮像信号のみを転送する等してもよい。図51は、本発明の実施の形態3に係る撮像装置の変形の転送範囲を説明する図である。例えば、カメラモジュールである撮像装置301が起動され、ステップS3020において全てのブロックの転送範囲フラッグFO(ibx,iby)=1となるように初期化されるため、初期に撮像される撮像信号I1は、図51(a)のように、第1のレンズ部313aに対応する撮像領域の全ての領域で生成される撮像信号が転送される。転送範囲決定部344は、路面ではない部分を判断し、図51(b)のように、路面ではない被写体(前方の自動車、人物、および自車)を含むブロックは転送範囲フラッグFO(ibx,iby)=1(白抜きのブロック。動作のブロック)に保ち、路面であるブロックは出力範囲フラッグFO(ibx,iby)=0(斜線ハッチが掛けられたブロック。停止のブロック)に変更する。
なお、路面に相当する領域を検知する方法としては公知のものを利用することができる。例えば、次のようにその検知を行うことができる。自動車の前面に本発明の撮像装置を配置し、レンズの光軸が路面と平行になるように調整し、前方の距離を測定する場合、被写体距離A1は、下記式21のように示される。式21において、θはレンズの光軸と路面との角度、Zは撮像装置が配置された路面からの高さを示す。そして、各ブロックにおける視差値Δ(ibx,iby)から演算された距離A(ibx,iby)が式21で演算された距離A1と略一致する場合、そのブロックに撮像された被写体は路面であると判断する。
A1=Z/tanθ … 式21
転送範囲を常に撮像領域の全領域で生成される撮像信号とする場合、常に全ての画素を転送する分だけ転送時間が必要であり、その転送時間の分だけ高速化に限界があった。本発明の実施の形態3に係る撮像装置の変形によれば、図51(b)のように、路面ではない被写体を含むブロックの転送範囲フラッグFO(ibx,iby)=1とし、路面ではない被写体を含むブロックのみの撮像信号を転送する。このことにより、車載用の前方監視に利用した場合、注視すべき被写体は路面以外の例えば、前方の車、人物、およびその他の構造物であり、それらの距離測定が必要である。そこで、路面以外の領域のみに転送を限定することにより、全画素を転送する場合と比較し転送量を低減し、高速な視差演算、距離演算を可能にする撮像装置を実現する。例えば、図51(b)では、全てのブロックが72個に対し、撮像信号を転送するブロックを15個に低減できる。
また、実施の形態3の撮像装置において、人物の顔面を含むブロックのみを転送したが、撮像信号のうち動作がある被写体が含まれる領域のみを転送してもよい。図52は、本発明の実施の形態3に係る撮像装置の変形の転送範囲を説明する図である。図52(a)および図52(b)は動画像の連続する2つのフレーム画像である。図52(a)において、右から2つ目から3つ目のブロックに位置する人物が、次のフレームでは図52(b)のように右から3つ目から4つ目のブロックに位置する。このような場合、図52(c)のように、次のフレームで転送すべきブロックとして、動きがある人物が位置するブロック(右から3つ目から4つ目のブロック)と、同一の動きが継続し人物が移動すると推測されるブロック(右から5つ目のブロック)とする。すなわち、図52(b)の次のフレームの転送範囲フラッグFO(ibx,iby)を、動きがある人物が位置するブロック(右から3つ目から4つ目のブロック)、および同一の動きが継続し人物が移動すると推測されるブロック(右から5つ目のブロック)を転送範囲フラッグFO(ibx,iby)=1(白抜きのブロック。動作のブロック)とし、それ以外のブロックを転送範囲フラッグFO(ibx,iby)=0(斜線ハッチが掛けられたブロック。停止のブロック)とする(図52(c)参照)。
ここで、第1の撮像信号I1における連続する2つのフレーム画像の差分の絶対値の総和DtDiff(下記式22)が大きいブロックを動作する被写体が含まれるブロックとすればよい。
DtDiff = ΣΣI1(x,y)(t0)-I1(x,y)(t0+dt) … 式22
なお、I1(x,y)(t0)は、時刻t0、座標(x,y)における第1の撮像信号I1を示し、I1(x,y)(t0+dt)は、時刻t0+dt、座標(x,y)における第1の撮像信号I1を示す。
転送範囲を常に撮像領域の全領域で生成される撮像信号とする場合、常に全ての画素を転送する分だけ転送時間が必要であり、その転送時間の分だけ高速化に限界があった。本発明の実施の形態3に係る撮像装置の変形によれば、図52(c)のように、動作する被写体(図52では人物が示されている)を含むブロックの転送範囲フラッグFO(ibx,iby)=1とする。車載用の前方監視に利用した場合、注視すべき被写体は動作する被写体、例えば、前方の車、人物、動物などであり、それらの距離測定が必要である。そこで、動作する被写体の領域のみに転送を限定することにより、全画素を転送する場合と比較し転送量を低減し、高速な視差演算、距離演算を可能にする撮像装置を実現する。例えば、図52(c)では、全てのブロックが48個に対し、撮像信号を転送するブロックを12個に低減できる。
なお、被写体の動作の速さに基づき転送範囲を決定することが好ましい。被写体の動作の速さに係らず転送範囲を常に被写体の像の周りの一定の領域とする場合、被写体の動作が速くなると、被写体がこの領域に含まれず視差の精度が悪化する場合がある。図52(c)のように、被写体の動作を予測し、次のフレームで動くであろうと予測される領域も含め転送する。すなわち、被写体の動作の速さに基づいて転送範囲決定部344が転送範囲を決定する。このように、被写体の動作の速さに応じて転送範囲の大きさが適切に決定されることにより、被写体が転送範囲に含まれるようになるため、高精度な視差演算、距離演算を可能にする撮像装置を実現することができる。
ここで、被写体の動作の速さは、各フレーム間の画像を比較する等によって転送範囲決定部344により検出される。
なお、被写体の動作が速いときは転送範囲を大きくすることが好ましい。すなわち、動作が速いときは、次のフレームで動くであろうと予測される範囲を大きくし、常に被写体が転送領域に含まれるようにすることにより、高精度な視差演算、距離演算を可能にする撮像装置を実現する。
また、転送範囲に含まれる画素数、すなわちブロック数を、複数のフレームにわたって略同一となるようにすることが好ましい。例えば、図52(c)に示すように、転送範囲に含まれるブロックが12個に設定された場合であれば、12個という数が複数のフレームで保持されるように撮像装置が動作してもよい。
被写体の動作の速さのみにより転送範囲を決定すると、動作が速い被写体が全領域中に多く含まれる場合では、転送量が増大するという事態が生じ得る。そこで、動作が速い被写体が全領域中に多く含まれる場合に、転送範囲に含まれる画素数を一定とし、その画素数を複数のフレームにわたって保持するようにする。そのために、例えば、被写体の動作が速いか否かを判定するための閾値を大きく設定して被写体を絞り込む等の処理を行う。これにより、転送範囲に含まれる画素数が一定に保持される。そのため、転送量の増大を防止することができ、高速な視差演算、距離演算を可能にする撮像装置を実現することができる。
このように、複数のフレームにわたって転送範囲に含まれる画素数が一定に保たれることが好ましいが、必ずしも当該画素数が複数のフレームで同一でなくてもよく、転送速度等に応じてその数が多少増減しても構わない。
以上、本発明のいくつかの実施形態を説明したが、これらはあくまでも例示であって、本発明の実施に際しては、以下のとおり、種々の変更が可能である。
実施の形態1から実施の形態3の撮像装置は、転送範囲フラッグFOをSLSI125、225、および325が決定したが、SLSI以外が決定してもよい。また、SLSIの機能を複数のLSIに分割し、基板上に実装してもよい。
また、実施の形態1から実施の形態3の撮像装置において、演算された視差をそのまま利用したが、適宜リミットしてもよい。レンズ特性によっては被写体距離Aがある値よりも小さいとき、画像が不鮮明となることがある。そのため、この値を被写体距離Aの最小値と定めれば、視差の最大値を定められる。この値よりも大きい視差は、誤差であるとして無視してもよい。また、このような場合、視差評価値が2番目に小さい値を視差として採用してもよい。また、視差評価値に目立つ極値が2つあるときは、より大きい方の視差を採用してもよい。このような場合、該当ブロックには、被写体と背景が含まれており、被写体距離と背景距離とが異なるため、極値が2つ現れる。このうち障害物検知に大きな影響を与える、より大きな視差を採用してもよい。
第1の実施の形態の撮像装置では、第1のカラーフィルタ124aと第2のカラーフィルタ124bとが主に赤外光を透過し、第3のカラーフィルタ124cと第4のカラーフィルタ124dとが主に緑色光を透過している。また、第2の実施の形態の撮像装置では、第2のカラーフィルタ224bと第3のカラーフィルタ224cとが主に赤外光を透過し、第1のカラーフィルタ224aと第4のカラーフィルタ224dとが主に緑色光を透過している。しかしながら、これは例示であって、本発明はこれに限定されない。したがって、それぞれ異なる波長域を透過してもよい。例えば、赤色光、青色光、遠赤外光、近紫外光などを透過してもよい。また、片側のカラーフィルタを省略してもよい。また、片方の組がある特定のカラーフィルタが配置され、片方の組がベイヤ配列のフィルタを撮像素子上に配置してもよい。また、それぞれの組のカラーフィルタ特性は同一で、F値や焦点距離が異なっていてもよい。
本発明の撮像装置の場合、視差演算を行う必要があるため、各動作モードにおいては、4つの撮像領域のうち少なくとも2つの撮像領域で生成される撮像信号を転送範囲としている。このように、少なくとも2つの撮像領域で生成される撮像信号を転送範囲とする必要はあるものの、それらの撮像領域は任意のものでよい。したがって、実施の形態1の撮像装置においては、撮像領域の全領域と上半分の領域(第1のレンズ部113a、および第2のレンズ部113bに対応する領域)とを切り替えているが、全領域と下半分の領域(第3のレンズ部113c、および第4のレンズ部113dに対応する領域)とを切り替えてもよい。また、上半分の領域(第1のレンズ部113a、および第2のレンズ部113bに対応する領域)と下半分の領域(第3のレンズ部113c、および第4のレンズ部113dに対応する領域)とを切り替えてもよい。
また、実施の形態2の撮像装置においては、撮像領域の全領域と対角右上がりの領域(第2のレンズ部113b、および第3のレンズ部113cに対応する領域)とを切り替えているが、全領域と対角右下がり(第1のレンズ部113a、および第4のレンズ部113dに対応する領域)とを切り替えてもよい。また、対角右上がりの領域(第2のレンズ部113b、および第3のレンズ部113cに対応する領域)と対角右下がり(第1のレンズ部113a、および第4のレンズ部113dに対応する領域)とを切り替えてもよい。
また、実施の形態1から実施の形態3において、視差評価値R(k)として式6に示すような差分絶対値総和(SAD)を用いたが、本発明はこれに限定されない。差分の二乗値の総和、第1の撮像信号I1からブロック内の平均を差分したものと第2の撮像信号I2からブロック内の平均を差分したものとの差分の二乗値の総和、第1の撮像信号I1からブロック内の平均を差分したものと第2の撮像信号I2からブロック内の平均を差分したものとの差分の二乗値の総和、または、第1の撮像信号I1からブロック内の平均を差分したものと第2の撮像信号I2からブロック内の平均を差分したものとの差分の二乗値の総和を第1の撮像信号I1からブロック内の平均を差分したものの二乗値の総和の平方根で除し第2の撮像信号I2からブロック内の平均を差分したものの二乗値の総和の平方根で除したものなどを視差評価値R(k)として利用してもよい。
なお、実施の形態1から実施の形態3において、ブロックを矩形状に分割したが、これに限定されない。例えば、エッジを検出し、エッジに基づき非矩形状のブロックに分割してもよい。また、ブロック毎の領域の視差を求めずに、エッジを複数の線分に分割し、この線分の視差を求めてもよい。また、あるブロックにおいて求められた視差を評価し、ブロックを分割したり結合したりしてもよい。
上記説明から、当業者にとっては、本発明の多くの改良や他の実施形態が明らかである。従って、上記説明は、例示としてのみ解釈されるべきであり、本発明を実行する最良の態様を当業者に教示する目的で提供されたものである。本発明の精神を逸脱することなく、その構造及び/又は機能の詳細を実質的に変更できる。