以下、図面を用いて実施形態を説明する。
図1は、画像処理装置および画像処理方法の一実施形態を示す。図1の破線の矢印は、信号等の情報の流れを示す。この実施形態の画像処理装置IMPは、被写体OBJを互いに異なる位置から同時に撮像するステレオカメラ等の撮像装置CAMに搭載される。例えば、撮像装置CAMは、被写体OBJを所定のフレームレートで撮像する。撮像装置CAMは、レンズLEN1を介して被写体を撮像する撮像素子ISEN1と、レンズLEN2を介して被写体OBJを撮像する撮像素子ISEN2と、撮像素子ISEN1、ISEN2を駆動する駆動部DRVと、画像処理装置IMPとを有する。
撮像素子ISEN1、ISEN2は、例えば、CMOSイメージセンサであり、複数の画素が行列状に配置された画素アレイの行毎にシャッタ動作を実行するローリングシャッタ方式で駆動される。例えば、駆動部DRVは、撮像素子ISEN1内に行列状に配置された複数の画素および撮像素子ISEN2内に行列状に配置された複数の画素に対して露光の開始および露光により得られる画素信号の読み出しを行毎に順番に実行する。これにより、撮像素子ISEN1、ISEN2で撮像された画像IMG1、IMG2が画像処理装置IMPに転送される。
なお、駆動部DRVと撮像素子ISEN1、ISEN2との間に示す括弧内のタイミング図は、撮像素子ISEN1、ISEN2内に行列状に配置された複数の画素から信号(露光により蓄積された電荷に対応する画素信号)が行毎に読み出される様子を示す。タイミング図の縦軸のL1、・・・Lc、・・・Leは、各撮像素子ISEN1、ISEN2の行(複数の画素が行列状に配置された画素アレイの行)を示し、タイミング図の横軸のt0、t1、tc、teは、時刻を示す。
例えば、行L1は、各撮像素子ISEN1、ISEN2の上から1番目の行を示し、行Leは、各撮像素子ISEN1、ISEN2の下から1番目の行を示す。行Lcは、各撮像素子ISEN1、ISEN2の中央(行L1と行Leとの中間)の行を示す。また、向きD1は、駆動部DRVが撮像素子ISEN1から画素信号を行毎に読み出す際の行の配列方向の走査の向きを示し、向きD2は、駆動部DRVが撮像素子ISEN2から画素信号を行毎に読み出す際の行の配列方向の走査の向きを示す。
図1に示す例では、撮像素子ISEN1は、画素アレイの上側の行から画素アレイの下側の行に向けて露光を行毎に実行し、撮像素子ISEN2は、画素アレイの下側の行から画素アレイの上側の行に向けて露光を行毎に実行する。例えば、時刻t0に、撮像素子ISEN1の行L1の画素および撮像素子ISEN2の行Leの画素に対して露光が開始される。
そして、時刻t1に、駆動部DRVは、撮像素子ISEN1の行L1および撮像素子ISEN2の行Leから画素信号をそれぞれ読み出す。以降、駆動部DRVは、撮像素子ISEN1の行Leまで、画素信号を行毎に順次読み出し、かつ、撮像素子ISEN2の行L1まで、画素信号を行毎に順次読み出す。これにより、1フレームの画像IMG(IMG1、IMG2)が撮像素子ISEN(ISEN1、ISEN2)から読み出される。
このように、駆動部DRVは、画素信号の読み出しを行毎に順番に実行する際の行の配列方向の走査の向きを撮像素子ISEN1、ISEN2で互いに逆にして、画像IMG1、IMG2を撮像素子ISEN1、ISEN2からそれぞれ読み出す。なお、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きD1、D2は、駆動部DRVに予め設定されていてもよいし、画像処理装置IMPの制御により駆動部DRVに設定されてもよい。
撮像素子ISEN1の行の配列方向の走査の向きD1と撮像素子ISEN2の行の配列方向の走査の向きD2とを互いに逆にして撮像素子ISEN1、ISEN2から読み出された画像IMG1、IMG2は、画像処理装置IMPに転送される。
ローリングシャッタ方式での撮像で得られる画像IMG1、IMG2では、図1のタイミング図に示すように、露光のタイミングが行毎に異なるため、手ぶれ、被写体の移動等により、行間で歪みが発生する場合がある。以下、ローリングシャッタ方式に起因する行間の歪みは、ローリング歪みとも称される。ローリング歪みは、画像処理装置IMPで補正される。
画像処理装置IMPは、撮像素子ISEN1、ISEN2で撮像された画像IMG1、IMG2を処理する。画像処理装置IMPは、第1視差算出部10、第2視差算出部20、第1動きベクトル算出部30および補正部40を有する。第1視差算出部10は、撮像素子ISEN1の行の配列方向の走査の向きD1と撮像素子ISEN2の行の配列方向の走査の向きD2とを互いに逆にして撮像素子ISEN1、ISEN2から読み出された画像IMG1、IMG2を、取得する。
なお、画像処理装置IMP内に示す括弧内の図は、撮像素子ISEN1、ISEN2からそれぞれ読み出された画像IMG1、IMG2を示す。図1に示す画像IMG1、IMG2は、画角内を左から右に移動する被写体OBJ(画像IMG1内の被写体OBJ1、画像IMG2内の被写体OBJ2)を撮像素子ISEN1、ISEN2で撮像した画像である。図1では、説明を分かりやすくするために、被写体OBJは、細長い矩形状であるとする。
画像IMG1上の被写体OBJ1の位置は、画角の下に向かうほど、破線の図形で示す本来の位置に対して右側にずれる。また、画像IMG2上の被写体OBJ2の位置は、画角の上に向かうほど、破線の図形で示す本来の位置に対して右側にずれる。画像IMG1上の被写体OBJ1と画像IMG2上の被写体OBJ2の左右方向のずれは、互いに異なる位置に配置されたレンズLEN1、LEN2を介して被写体OBJを撮像したことにより生じる。
第1視差算出部10は、画像IMG1に含まれる被写体OBJ1の位置(画像IMG1上の被写体OBJ1の位置)と画像IMG2に含まれる被写体OBJ2の位置(画像IMG2上の被写体OBJ2の位置)との差を示す第1視差DPFを行毎に算出する。そして、第1視差算出部10は、算出した第1視差DPFを第1動きベクトル算出部30に転送する。図1に示す例では、第1視差DPFは、下側の行ほど小さくなる。なお、第1視差DPFは、レンズLEN1、LEN2から被写体OBJまでの距離およびレンズLEN1、LEN2間の距離に応じて発生する真の視差と、ローリング歪みによって発生する被写体OBJの位置のずれ(以下、偽の視差とも称する)とを含む。以下、第1視差DPFは、見かけの視差DPFとも称される。
ここで、撮像素子ISEN1、ISEN2の互いに対応する行のうち、撮像素子ISEN1と撮像素子ISEN2とで同じタイミングで露光された行(同じ時刻に画素信号の読み出しが実行された行)では、偽の視差は発生しない。したがって、撮像素子ISEN1と撮像素子ISEN2とで同じ時刻に画素信号の読み出しが実行された行では、第1視差DPFは、レンズLEN1、LEN2から被写体OBJまでの距離およびレンズLEN1、LEN2間の距離に応じて発生する真の視差を示す。以下、画素信号の読み出しが実行される時刻は、読み出し時刻とも称される。
第2視差算出部20は、撮像素子ISEN1と撮像素子ISEN2と被写体OBJとの位置関係に応じて発生する視差に相当する第2視差DPSを、複数の画像IMG1および複数の画像IMG2の少なくとも一方に基づいて行毎に算出する。そして、第2視差算出部20は、算出した第2視差DPSを第1動きベクトル算出部30に転送する。なお、撮像素子ISEN1と撮像素子ISEN2と被写体OBJとの位置関係に応じて発生する視差は、例えば、レンズLEN1、LEN2から被写体OBJまでの距離およびレンズLEN1、LEN2間の距離に応じて発生する真の視差である。以下、第2視差DPSは、真の視差DPSとも称される。
例えば、撮像装置CAMが被写体OBJを所定のフレームレートで撮像する場合、画像処理装置IMPは、各フレームの画像IMG(IMG1、IMG2)を順次受ける。これにより、例えば、第2視差算出部20は、互いに異なる時刻に撮像された複数の画像IMG1および互いに異なる時刻に撮像された複数の画像IMG2を受ける。
そして、第2視差算出部20は、互いに異なる時刻に撮像された2つの画像IMG1上の被写体OBJ1の位置と各行の読み出し時刻とに基づいて、各行の読み出し時刻を時刻t1に揃えた場合の被写体OBJ1の画像IMG1上の位置を算出する。同様に、第2視差算出部20は、互いに異なる時刻に撮像された2つの画像IMG2上の被写体OBJ2の位置と各行の読み出し時刻とに基づいて、各行の読み出し時刻を時刻t1に揃えた場合の被写体OBJ2の画像IMG2上の位置を算出する。
そして、第2視差算出部20は、各行の読み出し時刻を時刻t1に揃えた場合の被写体OBJ1の画像IMG1上の位置と各行の読み出し時刻を時刻t1に揃えた場合の被写体OBJ2の画像IMG2上の位置とに基づいて、第2視差DPSを行毎に算出する。なお、各行の読み出し時刻は、時刻t1以外の任意の時刻(例えば、時刻tc)に揃えられてもよい。
また、第2視差算出部20は、画像IMG1の各行の読み出し時刻に画像IMG2の各行の読み出し時刻を合わせた場合の被写体OBJ2の画像IMG2上の位置を算出してもよい。例えば、第2視差算出部20は、画像IMG2の行L1、・・・、Leの読み出し時刻を時刻t1、・・・、teにした場合の被写体OBJ2の画像IMG2上の位置を算出してもよい。この場合、第2視差算出部20は、画像IMG1上の被写体OBJ1の位置と、画像IMG1の各行の読み出し時刻に画像IMG2の各行の読み出し時刻を合わせた場合の被写体OBJ2の画像IMG2上の位置とに基づいて、第2視差DPSを行毎に算出する。
なお、第2視差算出部20は、撮像素子ISEN1、ISEN2の互いに対応する行の読み出し時刻(例えば、行L1では時刻t1、te)の差である読み出し時間差が予め決められた第1の時間以下の行に対しては、第2視差DPSを算出する処理を省いてもよい。これは、読み出し時間差が予め決められた第1の時間以下の行では、見かけの視差DPFを真の視差として処理してもローリング歪みの補正精度に与える影響が小さいためである。読み出し時間差が予め決められた第1の時間以下の行に対して、第2視差DPSを算出する処理を省くことにより、1画面分の第2視差DPSを算出する処理にかかる時間を短縮することができる。
例えば、第1の時間が互いに隣接する行の読み出し時刻の差(タイミング図のΔt)である場合、読み出し時間差が第1の時間以下の行は、時刻tcに画素信号の読み出しが実行される行Lcである。この場合、第2視差算出部20は、撮像素子ISEN1、ISEN2の複数の行のうちの行Lcを除く行について、第2視差DPSをそれぞれ算出する。また、第1の時間が互いに隣接する行の読み出し時刻の差(タイミング図のΔt)の2倍の時間である場合、読み出し時間差が第1の時間以下の行は、行Lcと、行Lcに隣接する2つの行(行Lcの上の行と行Lcの下の行と)との合計3つの行である。この場合、第2視差算出部20は、撮像素子ISEN1、ISEN2の複数の行のうち、行Lcに隣接する行と行Lcとを除く行について、第2視差DPSをそれぞれ算出する。
第1動きベクトル算出部30は、読み出し時間差と第1視差DPFと第2視差DPSとに基づいて、被写体OBJの動きベクトルである第1動きベクトルMV1を行毎に算出する。第1動きベクトルMV1は、第1視差DPF、第2視差DPS、撮像素子ISEN1の読み出し時刻tRおよび撮像素子ISEN2の読み出し時刻tLを用いて、式(1)で表される。
MV1=(DPF−DPS)/(tR−tL) ・・・(1)
なお、図1に示すタイミング図では、読み出し時間差(=tR−tL)は、各行で異なる。第1動きベクトル算出部30は、算出した第1動きベクトルMV1を補正部40に転送する。被写体OBJが撮像素子ISEN1、ISEN2の画素アレイの行方向に対して平行に等速で移動する場合、第1動きベクトルMV1は、画像IMG1と画像IMG2とで同じ動きベクトルとなる。以下、第1動きベクトルMV1は、共通動きベクトルMV1とも称される。
なお、式(1)では、読み出し時間差が0の場合、第1動きベクトルMV1は算出されない。したがって、第1動きベクトル算出部30は、読み出し時間差が第1の時間より大きい行について、第1動きベクトルMV1を、第1視差DPF、第2視差DPSおよび読み出し時間差に基づいてそれぞれ算出してもよい。すなわち、第1動きベクトル算出部30は、読み出し時間差が第1の時間以下の行に対しては、第1動きベクトルMV1を算出する処理を省いてもよい。この場合、画像処理装置IMPは、読み出し時間差が第1の時間以下の行(例えば、行Lc)における被写体OBJの動きを示す第2動きベクトルを、複数の第1視差DPF(複数のフレームでの第1視差DPF)に基づいて算出してもよい。
補正部40は、露光の開始の時刻および読み出し時刻が行毎に異なることに起因する画像IMG1、IMG2のそれぞれの歪み(ローリング歪み)を第1動きベクトルMV1に基づいて補正し、補正画像IMGC1、IMGC2をそれぞれ生成する。例えば、補正画像IMGC1、IMGC2は、画像を合成する画像合成処理部、3次元画像処理を実行する3次元画像処理部等の後段の処理部に転送される。なお、補正画像IMGC1は、画像IMG1のローリング歪みを補正した画像であり、補正画像IMGC2は、画像IMG2のローリング歪みを補正した画像である。
例えば、補正部40は、ローリング歪みの補正量を示す補正ベクトルを、第1動きベクトルMV1および読み出し時刻に基づいて行毎に算出する。そして、補正部40は、画像IMG1、IMG2上の被写体OBJ1、OBJ2の位置を補正ベクトルに基づいて行毎に補正して、画像IMG1、IMG2のそれぞれのローリング歪みを補正し、補正画像IMGC1、IMGC2をそれぞれ生成する。
例えば、画像IMG1を補正する際の補正ベクトルCVrは、第1動きベクトルMV1、読み出し時刻tRおよび補正の基準となる時刻tREFを用いて、式(2)で表される。なお、式(2)の”*”は、乗算を示す。
CVr=−1*MV1*(tR−tREF) ・・・(2)
同様に、画像IMG2を補正する際の補正ベクトルCVlは、第1動きベクトルMV1、読み出し時刻tL、補正の基準となる時刻tREFを用いて、式(3)で表される。
CVl=−1*MV1*(tL−tREF) ・・・(3)
読み出し時刻を時刻t1に揃えた補正画像IMGC1、IMGC2が生成される場合、式(2)および式(3)の時刻tREFに、時刻t1が代入される。この場合、第1動きベクトルMV1が算出されない行(例えば、行Lc)に対しては、補正部40は、時刻t1の被写体OBJの位置を、複数の第1視差DPFに基づいて算出する。複数の第1視差DPFは、例えば、補正対象の画像IMG1、IMG2から算出された第1視差DPF、補正対象の画像IMG1、IMG2より前に撮像された画像IMG1、IMG2から算出された第1視差DPFである。読み出し時刻を時刻t1に揃えた補正画像IMGC1、IMGC2では、被写体OBJ(OBJ1、OBJ2)は、例えば、図1に示す画像IMG1、IMG2内の破線の図形で示した位置に補正される。
また、読み出し時刻を時刻tcに揃えた補正画像が生成される場合、式(2)および式(3)の時刻tREFに、時刻tcが代入される。この場合、第1動きベクトルMV1が算出されない行Lcの補正量を算出する処理を省くことができる。例えば、行Lcの補正量は、行Lcが補正の基準となるため、0である。
なお、画像処理装置IMPの構成は、図1に示す例に限定されない。例えば、第1動きベクトル算出部30は、補正部40内に設けられてもよい。この場合、補正部40は、式(2)および式(3)の第1動きベクトルMV1に式(1)の第1動きベクトルMV1を代入して得られる式に基づいて、補正ベクトルCV(CVr、CVl)を算出してもよい。
また、画像処理装置IMPは、読み出し時間差が第1の時間以下の行(例えば、行Lc)における被写体OBJの動きを示す第2動きベクトルを、第1視差DPFに基づいて算出する第2動きベクトル算出部を有してもよい。この場合、補正部40は、第1視差DPFに基づいて算出した第2動きベクトルと第1動きベクトルMV1とを合成した合成動きベクトルを、第1動きベクトルMV1の代わりに用いて補正ベクトルCVを算出してもよい。例えば、合成動きベクトルにおける第2動きベクトルの割合は、第2動きベクトルが算出された行と各行との位置関係(距離)に応じて算出される。
また、補正部40は、例えば、被写体OBJが所定のフレームレートで撮像された場合、フレーム間の動きベクトルと第1動きベクトルMV1とを合成した合成動きベクトルを、第1動きベクトルMV1の代わりに用いて補正ベクトルCVを算出してもよい。合成動きベクトルは、例えば、フレーム間の動きベクトルと第1動きベクトルMV1とを平均して算出される。
また、画像処理装置IMPは、駆動部DRVの動作を制御する制御部を有してもよい。例えば、制御部は、撮像素子ISEN1、ISEN2の行Lcが最初に露光されるように駆動部DRVを制御してもよい。この場合、撮像素子ISEN1では、画素信号の読み出しは、行Lcから行L1まで行毎に順次実行され、行L1まで実行された後、行Leから行Lcの1つ下の行まで順次実行される。撮像素子ISEN2では、画素信号の読み出しは、行Lcから行Leまで行毎に順次実行され、行Leまで実行された後、行L1から行Lcの1つ上の行まで順次実行される。
あるいは、駆動部DRVは、撮像素子ISEN1、ISEN2の行Lcを最初に露光するように予め設定されていてもよい。
以上、図1に示す実施形態では、撮像素子ISEN1、ISEN2からの画素信号の読み出しは、行の配列方向の走査の向きを互いに逆にして実行される。これにより、撮像素子ISEN1、ISEN2の互いに対応する行の読み出し時刻に差(読み出し時間差)が生じる。また、画像処理装置IMPは、撮像素子ISEN1、ISEN2から得られる画像IMG1、IMG2に基づいて、第1視差DPF(ローリング歪みを含む見かけの視差DPF)および第2視差DPS(真の視差DPS)を算出する。
そして、画像処理装置IMPは、第1視差DPF、第2視差DPSおよび読み出し時間差に基づいて第1動きベクトルMV1を算出し、第1動きベクトルMV1に基づいて画像IMG1、IMG2のローリング歪みを補正する。なお、読み出し時間差は、例えば、被写体OBJを所定のフレームレートで撮像する場合のフレーム間隔より、短い。
このため、第1動きベクトルMV1を算出する際の時間間隔(時間分解能)は、フレーム間の動きベクトルを算出する際の時間間隔に比べて小さい。動きベクトルを算出する際の時間間隔が小さくなるほど、動きベクトルに基づいて算出される補正量の誤差は、減少する。したがって、この実施形態では、画像IMG1、IMG2のローリング歪みを補正する際の誤差を、フレーム間の動きベクトルに基づいてローリング歪みを補正する場合に比べて小さくできる。すなわち、この実施形態では、画像の歪みを精度よく補正できる。
また、この実施形態では、ローリング歪みを補正するための専用部品(例えば、ビームスプリッタ)を撮像装置CAMに搭載せずにローリング歪みを補正できるため、撮像装置CAMの製造コストを低減できる。
図2は、画像処理装置および画像処理方法の別の実施形態を示している。この実施形態の画像処理装置IMP2は、撮像装置CAM2に搭載される。撮像装置CAM2は、図1に示した画像処理装置IMPの代わりに画像処理装置IMP2を有することを除いて、図1に示した撮像装置CAMと同一または同様である。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図2の破線の矢印は、信号等の情報の流れを示す。
撮像装置CAM2は、レンズLEN1を介して被写体を撮像する撮像素子ISEN1と、レンズLEN2を介して被写体OBJを撮像する撮像素子ISEN2と、撮像素子ISEN1、ISEN2を駆動する駆動部DRVと、画像処理装置IMP2とを有する。撮像素子ISEN1、ISEN2および駆動部DRVは、画像処理装置IMP2内のバスBUSに接続される。
駆動部DRVは、画素信号の読み出しを行毎に順番に実行する際の行の配列方向の走査の向きを撮像素子ISEN1、ISEN2で互いに逆にして、画像IMG1、IMG2を撮像素子ISEN1、ISEN2からそれぞれ読み出す。例えば、駆動部DRVは、画素信号の読み出しを、撮像素子ISEN1と撮像素子ISEN2とで共通のクロックを用いて実行する。
撮像素子ISEN1の行の配列方向の走査の向きと撮像素子ISEN2の行の配列方向の走査の向きとを互いに逆にして撮像素子ISEN1、ISEN2から読み出された画像IMG1、IMG2は、画像処理装置IMP2内のバスBUSに転送される。また、駆動部DRVは、読み出し時刻等を示す読み出し時間情報TINFを画像処理装置IMP2内のバスBUSに転送する。
画像処理装置IMP2は、制御部CNTL、視差算出部PALC、共通動きベクトル算出部MVCAL1、奥行き動きベクトル算出部MVCAL2、補正部CORR、合成率算出部RCAL、画像合成部SYN、記録部RECおよび表示部DIPを有する。さらに、画像処理装置IMP2は、メモリFMEM、MEMおよびバスBUSを有する。
制御部CNTL、視差算出部PALC、共通動きベクトル算出部MVCAL1、奥行き動きベクトル算出部MVCAL2、補正部CORR、合成率算出部RCAL、画像合成部SYN、記録部REC、表示部DIPは、バスBUSに接続される。また、メモリFMEM、MEMは、バスBUSに接続される。
メモリFMEMは、撮像素子ISEN1、ISEN2で撮像された画像IMG1、IMG2を記憶するフレームメモリである。また、メモリMEMは、第1視差DPF、第2視差DPS、共通動きベクトルMV1、奥行き動きベクトルMV2、読み出し時間情報TINF、補正画像IMGC1、IMGC2等を記憶する。
制御部CNTLは、駆動部DRVの動作を制御する。例えば、制御部CNTLは、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きが互いに逆になるように、駆動部DRVを制御する。なお、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きは、駆動部DRVに予め設定されていてもよい。
視差算出部PALCは、撮像素子ISEN1、ISEN2で撮像された画像IMG1、IMG2をフレームメモリFMEMからバスBUSを介して受け、第1視差DPFおよび第2視差DPSをバスBUSを介してメモリMEMに転送する。例えば、視差算出部PALCは、第1視差DPFを算出する第1視差算出部PALC1と、第2視差DPSを算出する第2視差算出部PALC2とを有する。第1視差算出部PALC1および第2視差算出部PALC2は、図1に示した第1視差算出部10および第2視差算出部20と同一または同様である。
例えば、第1視差算出部PALC1は、補正対象の画像IMG1、IMG2をフレームメモリFMEMからバスBUSを介して受け、補正対象の画像IMG1、IMG2に基づいて、第1視差DPFを算出する。また、第2視差算出部PALC2は、補正対象の画像IMG1、IMG2と、補正対象の画像IMG1、IMG2より前に撮像された画像IMG1、IMG2とを、フレームメモリFMEMからバスBUSを介して受ける。そして、第2視差算出部PALC2は、複数の画像IMG1(互いに異なる時刻に撮像された複数の画像IMG1)と複数の画像IMG2(互いに異なる時刻に撮像された複数の画像IMG2)とに基づいて、第2視差DPSを算出する。
共通動きベクトル算出部MVCAL1は、第1視差DPF、第2視差DPSおよび読み出し時間差に基づいて共通動きベクトルMV1(第1動きベクトルMV1)を算出する第1動きベクトル算出部の一例である。共通動きベクトル算出部MVCAL1は、図1に示した第1動きベクトル算出部30と同一または同様である。例えば、共通動きベクトル算出部MVCAL1は、第1視差DPF、第2視差DPSおよび読み出し時間情報TINFをメモリMEMからバスBUSを介して受ける。
そして、共通動きベクトル算出部MVCAL1は、読み出し時間情報TINFに含まれる各行の読み出し時刻に基づいて読み出し時間差を算出する。また、共通動きベクトル算出部MVCAL1は、第1視差DPF、第2視差DPSおよび読み出し時間差に基づいて、共通動きベクトルMV1を算出する。そして、共通動きベクトル算出部MVCAL1は、共通動きベクトルMV1をバスBUSを介してメモリMEMに転送する。
奥行き動きベクトル算出部MVCAL2は、読み出し時間差が第1の時間以下の行における被写体の動きを示す第2動きベクトルMV2(以下、奥行き動きベクトルとも称する)を、第1視差DPFに基づいて算出する第2動きベクトル算出部の一例である。奥行き動きベクトル算出部MVCAL2は、複数の第1視差DPFをメモリMEMからバスBUSを介して受け、奥行き動きベクトルMV2をバスBUSを介してメモリMEMに転送する。複数の第1視差DPFは、例えば、補正対象の画像IMG1、IMG2から算出された第1視差DPFと、補正対象の画像IMG1、IMG2より前に撮像された画像IMG1、IMG2から算出された第1視差DPFである。奥行き動きベクトルMV2の算出方法は、図5で説明する。
補正部CORRは、画像IMG1、IMG2のそれぞれの歪み(ローリング歪み)を共通動きベクトルMV1および奥行き動きベクトルMV2に基づいて補正し、補正画像IMGC1、IMGC2をそれぞれ生成する。例えば、補正部CORRは、補正対象の画像IMG1、IMG2、共通動きベクトルMV1および奥行き動きベクトルMV2を、メモリMEMからバスBUSを介して受け、補正画像IMGC1、IMGC2をバスBUSを介してメモリMEMに転送する。補正部CORRは、図5に示すように、読み出し時間差が第1の時間以下の行に対しては、奥行き動きベクトルMV2に基づいてローリング歪みを補正する。補正部CORRのその他の動作は、図1に示した補正部40と同一または同様である。
合成率算出部RCALは、補正画像IMGC1、IMGC2および読み出し時間情報TINFをメモリMEMからバスBUSを介して受ける。そして、合成率算出部RCALは、補正画像IMGC1と補正画像IMGC2とを合成する際の補正画像IMGC1の比率αを、各行に対して画素信号の読み出しが実行される時刻と基準の時刻との差である差分時間に基づいて決定する。以下、補正画像IMGC1の比率αは、合成率αとも称される。
例えば、合成率算出部RCALは、補正画像IMGC2をレンズLEN1を視点とした画像に変換する。レンズLEN1を視点とした画像に変換する視点変換により、視点変換後の補正画像IMGC2では、一部の領域に画素の欠落が発生する。画素の欠落が発生した領域は、合成時に使用されないように処理される。なお、以下では、視点変換後の補正画像IMGC2は、補正画像IMGC2a、または、画像IMGC2aとも称される。
また、補正画像IMGC1と補正画像IMGC2とを合成する場合、本来見えないはずの隠面が混ざる現象(ゴースト滲み)が発生するおそれがある。このため、補正画像IMGC1の比率αは、レンズLEN2を視点とした場合の隠面の量が多くなるほど、大きくなるように設定される。なお、隠面は、例えば、レンズLEN2を視点とした場合に、被写体OBJ等の裏側に位置し、レンズLEN2からは見えない部分である。
この実施形態では、ゴースト滲みを抑制するために、合成率算出部RCALは、画像IMG1の画素値(画素の明るさ等を示す値)と画像IMG2の画素値との差と、差分時間(画素信号の読み出し時刻と基準の時刻との差)とに基づいて、合成率αを決定する。例えば、合成率αは、画像IMG1の画素信号の読み出し時刻と基準の時刻との差の絶対値TDLと、1画面分の画素信号の読み出しにかかる時間TFULと、ゴースト抑制率RINHと、欠落判定値FLGとを用いて、式(4)で表される。
α=1−{(TDL/TFUL)*(1−RINH)*FLG} ・・・(4)
なお、1画面分の画素信号の読み出しにかかる時間TFULは、例えば、図1に示したタイミング図では、時刻t1と時刻teとの差である。
また、ゴースト抑制率RINHは、例えば、補正画像IMGC1の所定ブロックの画素と補正画像IMGC2の所定ブロックの画素との類似度を示すブロック一致量に基づいて設定される。なお、ゴースト抑制率RINHは、例えば、画像IMG1の所定ブロックの画素と画像IMG2の所定ブロックの画素との類似度を示すブロック一致量に基づいて設定されてもよい。
ブロック一致量は、例えば、差分絶対値和(SAD:Sum of Absolute Difference)、差分二乗和等である。例えば、合成率算出部RCALは、補正画像IMGC1の所定ブロックの画素と補正画像IMGC2の所定ブロックの画素とのブロックマッチングを実行し、ブロック一致量を算出する。なお、合成率算出部RCALは、視差を測定する際に用いられるブロックマッチング等により算出されるブロック一致量がメモリMEM等に記憶される場合、メモリMEM等からブロック一致量を取得してもよい。そして、合成率算出部RCALは、ブロック一致量に基づいてゴースト抑制率RINHを設定する。
例えば、差分絶対値和が0の場合(完全一致)、ゴースト抑制率RINHは、0である。また、差分絶対値和が所定の閾値を超える場合(非一致)、ゴースト抑制率RINHは、1である。差分絶対値和が0より大きく、かつ、所定の閾値以下の場合、ゴースト抑制率RINHは、例えば、差分絶対値和を所定の閾値で除算した値に設定される。
このように、ゴースト抑制率RINHは、例えば、レンズLEN2を視点とした場合の隠面が大きくなるほど、大きな値に設定される。これにより、レンズLEN2を視点とした場合の隠面の量が多くなるほど、補正画像IMGC1の比率αは、大きくなる。この結果、画像処理装置IMP2では、補正画像IMGC1と補正画像IMGC2とを合成した合成画像に、本来見えないはずの隠面が混ざる現象(ゴースト滲み)が発生することを抑制できる。
また、欠落判定値FLGは、補正画像IMGC2の視点変換により欠落した画素の有無に応じて、0または1に設定される。例えば、合成率αが所定の単位ブロック毎に算出される場合、画素の欠落が発生した単位ブロックでは、欠落判定値FLGは、0に設定され、画素の欠落が発生していない単位ブロックでは、欠落判定値FLGは、1に設定される。例えば、単位ブロックは、ブロックマッチング等に用いられる所定ブロックの行方向の幅と同じ幅で各行を分けたブロックである。
合成率算出部RCALで算出された合成率αは、画像合成部SYNに転送される。例えば、合成率算出部RCALは、補正画像IMGC1、IMGC2および合成率αを画像合成部SYNに転送する。
画像合成部SYNは、補正画像IMGC1と補正画像IMGC2とを補正画像IMGC1の比率αに基づいて合成する。これにより、補正画像IMGC1と補正画像IMGC2とを合成した合成画像IMGSが生成される。例えば、単位ブロックの合成画像IMGSは、合成率α、補正画像IMGC1、視点変換後の補正画像IMGC2aを用いて、式(5)で表される。
IMGS=IMGC1*α+IMGC2a*(1−α) ・・・(5)
このように、画像合成部SYNは、補正画像IMGC1と視点変換後の補正画像IMGC2aとを合成率αに基づいて合成し、合成画像IMGSをバスBUSに転送する。
すなわち、合成率算出部RCALおよび画像合成部SYNは、読み出し時刻と基準の時刻との差に基づいて合成率αを決定し、補正画像IMGC1と補正画像IMGC2とを合成率αに基づいて合成する合成部の一例である。
記録部RECは、合成画像IMGS等を記録する。表示部DIPは、ディスプレイ等の表示装置に、合成画像IMGS等を表示する。
なお、画像処理装置IMP2の構成は、図2に示す例に限定されない。例えば、合成率算出部RCALは、画像合成部SYN内に設けられてもよい。また、合成率算出部RCALおよび画像合成部SYNは、視点変換後の補正画像IMGC1と補正画像IMGC2とを合成した合成画像IMGSを生成してもよい。視点変換後の補正画像IMGC1と補正画像IMGC2との合成処理は、合成率算出部RCAL等の説明において、符号IMGC1、LEN1、IMGC2、LEN2を符号IMGC2、レンズLEN2、IMGC1、LEN1と読み替えることにより説明される。
また、画素の欠落が発生した領域および隠面は、前後のフレームの補正画像IMGC2等を用いて補間されてもよい。この場合、合成率算出部RCALは、式(4)において、ゴースト抑制率RINHを0とし、かつ、欠落判定値FLGを1として、合成率αを決定してもよい。
また、画像処理装置IMP2は、3次元画像処理を実行する3次元画像処理部に、補正画像IMGC1、IMGC2を転送してもよい。また、画像処理装置IMP2は、補正画像IMGC1と視点変換後の補正画像IMGC2とを合成した合成画像IMGSと、視点変換後の補正画像IMGC1と補正画像IMGC2とを合成した合成画像IMGSとを、3次元画像処理部に転送してもよい。あるいは、画像処理装置IMP2は、3次元画像処理部を有してもよい。
図3は、図2に示した撮像素子ISEN1、ISEN2からの画素信号の読み出し方法の一例を示す。図3に示すタイミング図では、3つのフレームFRM(FRM1、FRM2、FRM3)の画像IMG1、IMG2の読み出しタイミングを示す。タイミング図の縦軸のL1、Lc、Leは、各撮像素子ISEN1、ISEN2の行(複数の画素が行列状に配置された画素アレイの行)を示し、タイミング図の横軸は、時刻を示す。タイミング図の符号VDは、垂直同期信号の周期(フレームの周期)に対応する。なお、図3では、図を見やすくするために、各行の境界線の記載を省略している。
撮像素子ISEN1のタイミング図は、図1に示した撮像素子ISEN1のタイミング図と同一または同様であり、撮像素子ISEN2のタイミング図は、図1に示した撮像素子ISEN2のタイミング図と同一または同様である。例えば、撮像素子ISEN1は、画素アレイの上側の行から画素アレイの下側の行に向けて露光を行毎に実行し、撮像素子ISEN2は、画素アレイの下側の行から画素アレイの上側の行に向けて露光を行毎に実行する(図3の破線の矢印)。
図3に示す例では、撮像素子ISEN1と撮像素子ISEN2との間の読み出し時間差TDFは、行Lcに近づくほど小さくなり、行Lcで0になる。図3に示す読み出し時間差において、実線は撮像素子ISEN1の読み出し時刻(図2で説明した式(1)の時刻tR)を示し、破線は撮像素子ISEN2の読み出し時刻(式(1)の時刻tL)を示す。
図4は、図2に示した視差算出部PALCにより算出される第1視差の一例を示す。図4に示す例では、被写体OBJは、画角内を左から右に移動する。この場合、画像IMG1上の被写体OBJ1の位置は、画角の下に向かうほど、破線の図形で示す本来の位置に対して右側にずれる。また、画像IMG2上の被写体OBJ2の位置は、画角の上に向かうほど、破線の図形で示す本来の位置に対して右側にずれる。図1で説明したように、画像IMG1上の被写体OBJ1と画像IMG2上の被写体OBJ2の左右方向のずれは、互いに異なる位置に配置されたレンズLEN1、LEN2を介して被写体OBJを撮像したことにより生じる。
視差算出部PALCの第1視差算出部PALC1は、画像IMG1上の被写体OBJ1の位置と画像IMG2上の被写体OBJ2の位置との差を示す第1視差DPF(見かけの視差DPF)を行毎に算出する。図4の一番下に示す画像IMG1、IMG2は、画像IMG1と画像IMG2とを重ね合わせた場合の被写体OBJ1、OBJ2を示す。図4に示す座標は、説明を分かりやすくするために付けた任意の座標である。
見かけの視差DPF1は、被写体OBJの一番上側の見かけの視差を示し、見かけの視差DPF2は、画像IMG(IMG1、IMG2)の中央の行Lcに対応する部分の見かけの視差を示す。そして、見かけの視差DPF3は、被写体OBJの一番下側の見かけの視差を示す。例えば、見かけの視差DPF1、DPF2、DPF3は、それぞれ−11、−8、−5である。このように、図4に示す例では、見かけの視差DPFの絶対値は、下側の行ほど小さくなる。
なお、第2視差(真の視差)DPSは、図1で説明したように、複数の画像IMG1(例えば、図3に示した)および複数の画像IMG2の少なくとも一方に基づいて行毎に算出される。例えば、図3に示したフレームFRM2では、真の視差は、フレームFRM1の画像IMG1、IMG2とフレームFRM2の画像IMG1、IMG2とに基づいて行毎に算出される。
ここで、読み出し時間差TDFが0の行(例えば、行Lc)では、見かけの視差DPF2は、レンズLEN(LEN1、LEN2)から被写体OBJまでの距離およびレンズLEN1、LEN2間の距離に応じて発生する真の視差を示す。したがって、画像処理装置IMP2は、読み出し時間差TDFが0の行(例えば、行Lc)では、三角測量の原理を用いて、レンズLENから被写体OBJまでの距離を算出できる。例えば、レンズLENから被写体OBJまでの距離Dは、レンズLEN1、LEN2間の距離L10、撮像素子ISEN1とレンズLEN1との距離f、第1視差DPFを用いて、式(6)で表される。
D=L10*f/DPF ・・・(6)
例えば、奥行き動きベクトル算出部MVCAL2は、レンズLENから被写体OBJまでの距離DをフレームFRM毎に算出する。そして、奥行き動きベクトル算出部MVCAL2は、例えば、図5に示すように、2つのフレームFRMで算出した距離Dを用いて、奥行き動きベクトルMV2を算出する。
図5は、奥行き動きベクトルMV2を用いた被写体OBJの位置の算出方法の一例を示す。なお、図5では、撮像素子ISEN1の画素アレイ上に投影される被写体OBJの行方向の位置を算出する例を説明する。被写体OBJの位置を示す座標A(X1、D1)、M(Xs、Ds)、B(X2、D2)は、レンズLEN1の中心を座標の原点とした場合の被写体OBJの位置を示す。各座標のXは、撮像素子ISEN1の画素アレイの行方向に沿う軸の位置を示し、各座標のDは、撮像素子ISEN1からレンズLEN1に向かう方向(画素アレイに対して垂直に交わる方向)に沿う軸の位置を示す。以下、画素アレイに対して垂直に交わる方向は、奥行き方向とも称される。
例えば、座標A(X1、D1)は、被写体OBJの各部分を示す複数の座標のうち、図3に示したフレームFRM1における画像IMG1の行Lc(読み出し時間差TDFが0の行)に対応する部分の位置を示す。また、座標B(X2、D2)は、被写体OBJの各部分を示す複数の座標のうち、図3に示したフレームFRM2における画像IMG1の行Lc(読み出し時間差TDFが0の行)に対応する部分の位置を示す。
座標M(Xs、Ds)は、移動中の被写体OBJにおける画像IMG1の行Lc(読み出し時間差TDFが0の行)に対応する部分の位置を示す。例えば、座標M(Xs、Ds)は、フレームFRM1における画像IMG1の行Lcが読み出された時刻から時間βが経過した場合の被写体OBJ(より詳細には、画像IMG1の行Lcに対応する部分)の位置を示す。時間βは、フレーム間隔(垂直同期信号の周期VD)に対する相対的な時間を示す。
移動中の被写体OBJの座標M(Xs、Ds)のX座標は、X座標X1、X2および時間βを用いて、式(7)で表され、座標M(Xs、Ds)のD座標は、D座標D1、D2および時間βを用いて、式(8)で表される。
Xs=(1−β)*X1+β*X2 ・・・(7)
Ds=(1−β)*D1+β*D2 ・・・(8)
また、図5の位置x1、xs、x2は、例えば、撮像素子ISEN1の画素アレイの中央の行(例えば、図3に示した行Lc)上の被写体OBJの位置を示す。すなわち、位置x1、xs、x2は、画像IMG1の中央の行(例えば、図3に示した行Lc)上の被写体OBJの位置に対応する。
位置x1は、被写体OBJの座標が座標A(X1、D1)の場合の画素アレイ上の被写体OBJの位置を示し、位置x2は、被写体OBJの座標が座標B(X2、D2)の場合の画素アレイ上の被写体OBJの位置を示す。位置xsは、被写体OBJの座標が座標M(Xs、Ds)の場合の画素アレイ上の被写体OBJの位置を示す。画素アレイ上の被写体OBJの位置xは、レンズLEN1の中心と画像IMG1の画素アレイとの間の距離fと被写体OBJの座標(X、D)を用いて、式(9)で表される。
x=f/D*X ・・・(9)
したがって、位置xsは、式(7)に示したXsおよび式(8)に示したDsを式(9)のX、Dにそれぞれ代入することにより算出される。補正画像IMGC上の被写体OBJの位置は、補正の基準となる時刻(図1で説明した式(2)の時刻tREF)に応じた値を式(9)のβに代入することにより算出される。例えば、時間βが0.5の場合、位置xsは、座標A(X1、D1)および座標B(X2、D2)を用いて、式(10)で表される。
xs=f/(D1+D2)*(X1+X2) ・・・(10)
なお、奥行き方向の移動が考慮されない場合、例えば、フレームFRM1とフレームFRM2との中間に対応する時刻での画像IMG上の被写体OBJの位置xs’は、画像IMG上の被写体OBJの移動量に基づいて算出される。この場合、位置xs’は、位置x1、x2および時間βを用いて、式(11)で表される。
xs’=(1−β)*x1+β*x2 ・・・(11)
例えば、時間βが0.5の場合、位置xs’は、位置x1、x2を用いて、式(12)で表される。
xs’=0.5*(x1+x2) ・・・(12)
被写体OBJが奥行き方向に移動した場合、任意の時刻での画像IMG上の被写体OBJの位置を式(11)に基づいて算出した場合の精度は、画像IMG上の被写体OBJの位置を式(10)を用いて算出した場合に比べて低下する。換言すれば、この実施形態では、式(10)に基づいて位置xsを算出できるため、ローリング歪みの補正精度を向上できる。
例えば、奥行き動きベクトル算出部MVCAL2は、読み出し時間差TDFが第1の時間以下の行における被写体OBJの動きを示す奥行き動きベクトルMV2として、座標A(X1、D1)および座標B(X2、D2)を算出する。そして、補正部CORRは、座標A(X1、D1)および座標B(X2、D2)に基づいて、座標M(Xs、Ds)を算出する。なお、奥行き動きベクトル算出部MVCAL2は、奥行き動きベクトルMV2として、座標M(Xs、Ds)を算出してもよい。
また、補正部CORRは、読み出し時間差TDFが第1の時間以下の行における画像IMG1上の被写体OBJの補正後の位置として、位置xsを座標M(Xs、Ds)に基づいて算出する。なお、読み出し時間差TDFが第1の時間以下の行における画像IMG2上の被写体OBJの補正後の位置(位置xs)も、画像IMG1と同様に算出される。
なお、奥行き動きベクトルMV2は、撮像素子ISEN1と撮像素子ISEN2とで異なるベクトルとなる可能性がある。例えば、被写体OBJが奥行き方向に移動する場合、撮像素子ISEN1から見える奥行き動きベクトルMV2と撮像素子ISEN2から見える奥行き動きベクトルMV2とは互いに異なる。被写体OBJが奥行き方向に移動しない場合、撮像素子ISEN1から見える奥行き動きベクトルMV2と撮像素子ISEN2から見える奥行き動きベクトルMV2とは互いに同じである。
図6は、図2に示した画像処理装置IMP2による画像の合成方法の一例を示す。図6の補正画像IMGC(IMGC1、IMGC2)内に示す破線は、補正前の被写体OBJを示す。また、補正画像IMGC(IMGC1、IMGC2)内に示す矢印は、図1で説明した補正ベクトルCV(CVr、CVl)に対応する。
補正部CORRは、読み出し時間差TDFが第1の時間より大きい行については、図1で説明したように、補正ベクトルCVr、CVlに基づいて、画像IMG1、IMG2のローリング歪みをそれぞれ補正する。また、補正部CORRは、読み出し時間差TDFが第1の時間以下の行については、図5で説明したように、奥行き動きベクトルMV2に基づいて、画像IMG1、IMG2のローリング歪みをそれぞれ補正する。これにより、補正画像IMGC1、IMGC2は、生成される。
そして、合成率算出部RCALは、補正画像IMGC2をレンズLEN1を視点とした画像IMGC2aに変換する。視点変換後の補正画像IMGC2a内に示す破線は、視点変換前の被写体OBJを示す。視点変換により、画素の欠落が発生した領域(例えば、図6の補正画像IMGC2a内に破線で示した領域)は、合成時に使用されないように処理される。なお、画素の欠落が発生した領域は、前後のフレームFRMの補正画像IMGC2を用いて補間されてもよい。この場合、補間された領域は、合成時に使用されてもよい。
また、合成率算出部RCALは、補正画像IMGC1と補正画像IMGC2とを合成する際の補正画像IMGC1の比率α(合成率α)を、図2で説明した式(4)に基づいて算出する。
画像合成部SYNは、図2で説明した式(5)に基づいて、補正画像IMGC1と補正画像IMGC2aとを合成率αに基づいて合成し、合成画像IMGSを生成する。図6に示す合成画像IMGSは、画像IMG1のローリング歪みを補正した画像に対応する。なお、視点変換後の補正画像IMGC1と補正画像IMGC2とを合成した合成画像IMGSは、画像IMG2のローリング歪みを補正した画像に対応する。
図6に示す例では、合成率αを算出する際の基準の時刻は、画像IMG1から最初に読み出された行(例えば、行1)の読み出し時刻である。なお、以下では、画像IMG1の行L1の読み出し時刻に対する画像IMG1の各行の読み出し時刻の差は、画像IMG1の遅延時間とも称される。また、画像IMG1の行L1の読み出し時刻に対する画像IMG2の各行の読み出し時刻の差は、画像IMG2の遅延時間とも称される。
画像IMG1、IMG2の中央の行Lcより上側の各行では、画像IMG1の遅延時間は、画像IMG2の遅延時間より小さい。また、画像IMG1、IMG2の中央の行Lcより下側の各行では、画像IMG1の遅延時間は、画像IMG2の遅延時間より大きい。例えば、画像IMG1の遅延時間が小さくなるほど、補正画像IMGC1と補正画像IMGC2aとを合成する際の補正画像IMGC1の比率αは、大きくなる。換言すれば、画像IMG1の遅延時間が大きくなるほど、補正画像IMGC1と補正画像IMGC2aとを合成する際の補正画像IMGC2aの比率(=1−α)は、大きくなる。
したがって、図6に示す合成画像IMGSでは、合成画像IMGSの中央の行Lcから上側の行(例えば、行L1)に向かうほど、補正画像IMGC1の比率αは、大きくなる。また、合成画像IMGSでは、合成画像IMGSの中央の行Lcから下側の行(例えば、行Le)に向かうほど、補正画像IMGC1の比率αは、小さくなる。
ローリング歪みの量は、読み出し開始からの遅延時間に比例する。このため、ローリング歪みの量は、遅延時間が小さいほど小さい。したがって、遅延時間が小さいほど、ローリング歪みを補正する際の補正量(例えば、補正ベクトルCV)は、小さくなる。したがって、この実施形態では、補正画像IMGC1と補正画像IMGC2aとを合成する際、補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くすることにより、各画像IMG1、IMG2での補正誤差による影響を小さくできる。この結果、ローリング歪みの補正精度を向上することができる。
図7は、図2に示した画像処理装置IMP2の動作の一例を示す。図7に示す動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。図7では、画像IMG1のローリング歪みを補正した画像に対応する合成画像IMGSを生成する処理について説明する。画像IMG2のローリング歪みを補正した画像に対応する合成画像IMGSを生成する処理は、ステップS250の視点変換が補正画像IMGC1に対して実行されることを除いて、図7に示す動作と同一または同様である。
ステップS100では、図2、図3等で説明したように、制御部CNTLは、駆動部DRVを制御して、画像IMG1、IMG2を撮像素子ISEN1、ISEN2からそれぞれ読み出す。撮像素子ISEN1、ISEN2から読み出された画像IMG1、IMG2は、例えば、フレームメモリFMEMに記憶される。
ステップS200では、図2、図4等で説明したように、視差算出部PALCの第1視差算出部PALC1は、第1視差(見かけの視差)DPFを行毎に算出する。
ステップS210では、図2等で説明したように、視差算出部PALCの第2視差算出部PALC2は、第2視差(真の視差)DPSを行毎に算出する。例えば、図3に示したフレームFRM2の画像IMG1、IMG2が補正の対象である場合、第2視差算出部PALC2は、フレームFRM1の各画像IMG1、IMG2とフレームFRM2の各画像IMG1、IMG2とをフレームメモリFMEMから受ける。
そして、第2視差算出部PALC2は、フレームFRM1、FRM2の各画像IMG1上の被写体OBJの位置と各行の読み出し時刻とに基づいて、各行の読み出し時刻を任意の時刻t1に揃えた場合の被写体OBJの画像IMG1上の位置を算出する。同様に、第2視差算出部PALC2は、フレームFRM1、FRM2の各画像IMG2上の被写体OBJの位置と各行の読み出し時刻とに基づいて、各行の読み出し時刻を任意の時刻t1に揃えた場合の被写体OBJの画像IMG2上の位置を算出する。
第2視差算出部PALC2は、各行の読み出し時刻を任意の時刻t1に揃えた場合の被写体OBJの画像IMG1、IMG2上の位置に基づいて、第2視差DPSを行毎に算出する。なお、各行の読み出し時刻は、時刻t1以外の任意の時刻(例えば、時刻te)に揃えられてもよい。
ステップS220では、図2等で説明したように、共通動きベクトル算出部MVCAL1は、読み出し時間差TDFが第1の時間より大きい行について、共通動きベクトルMV1(第1動きベクトルMV1)をそれぞれ算出する。例えば、共通動きベクトル算出部MVCAL1は、図1で説明した式(1)を用いて、共通動きベクトルMV1を算出する。
ステップS230では、図2、図5等で説明したように、奥行き動きベクトル算出部MVCAL2は、読み出し時間差TDFが第1の時間以下の行について、奥行き動きベクトルMV2(第2動きベクトルMV2)を第1視差DPFに基づいて算出する。
ステップS240では、図2、図6等で説明したように、補正部CORRは、画像IMG1、IMG2のそれぞれのローリング歪みを共通動きベクトルMV1および奥行き動きベクトルMV2に基づいて補正する。例えば、補正部CORRは、読み出し時間差TDFが第1の時間より大きい行については、図1で説明した式(2)および式(3)により算出される補正ベクトルCVr、CVlを用いて、画像IMG1、IMG2のそれぞれのローリング歪みを補正する。また、読み出し時間差TDFが第1の時間以下の行については、補正部CORRは、図1で説明した式(7)、式(8)および式(9)を用いて、画像IMG1、IMG2のそれぞれのローリング歪みを補正する。これにより、補正画像IMGC1、IMGC2が生成される。
ステップS250では、図2、図6等で説明したように、合成率算出部RCALは、補正画像IMGC2をレンズLEN1を視点とした画像IMGC2aに変換する。
ステップS300では、図2等で説明したように、合成率算出部RCALは、補正画像IMGC1と補正画像IMGC2とを合成する際の補正画像IMGC1の比率α(合成率α)を、所定の単位ブロック毎に算出する。例えば、合成率算出部RCALは、図2で説明した式(4)を用いて、合成率αを所定の単位ブロック毎に算出する。
ステップS310では、図2、図6等で説明したように、画像合成部SYNは、補正画像IMGC1と補正画像IMGC2a(視点変換後の補正画像IMGC2)とを合成率αに基づいて合成する。例えば、画像合成部SYNは、図2で説明した式(5)を用いて、補正画像IMGC1と補正画像IMGC2aとを合成した合成画像IMGSを生成する。
ステップS320では、図2等で説明したように、画像合成部SYNは、合成画像IMGSをバスBUSに出力する。これにより、合成画像IMGSは、記録部REC、表示部DIP、3次元画像処理部等に転送される。
なお、画像処理装置IMP2の動作は、図7に示す例に限定されない。例えば、補正部CORRは、共通動きベクトルMV1と奥行き動きベクトルMV2とを合成した合成動きベクトルを、共通動きベクトルMV1の代わりに用いて補正ベクトルCVを算出してもよい。例えば、奥行き動きベクトルMV2が合成される範囲、割合等は、奥行き動きベクトルMV2が算出された行と各行との位置関係(距離)に応じて算出される。あるいは、奥行き動きベクトルMV2が合成される範囲、割合等は、動体を検出する処理の結果に基づいて算出されてもよい。
また、補正部CORRは、フレームFRM間の動きベクトルと共通動きベクトルMV1とを合成した合成動きベクトルを、共通動きベクトルMV1の代わりに用いて補正ベクトルCVを算出してもよい。合成動きベクトルは、例えば、フレームFRM間の動きベクトルと共通動きベクトルMV1とを平均して算出される。
以上、図2から図7に示した実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、この実施形態では、撮像素子ISEN1、ISEN2からの画素信号の読み出しを、行の配列方向の走査の向きを互いに逆にして実行する。そして、画像処理装置IMP2は、撮像素子ISEN1、ISEN2から得られる画像IMG1、IMG2に基づいて、第1視差DPF(ローリング歪みを含む見かけの視差DPF)および第2視差DPS(真の視差DPS)を算出する。
画像処理装置IMP2は、読み出し時間差TDFが第1の時間より大きい行については、第1視差DPF、第2視差DPSおよび読み出し時間差TDFに基づいて共通動きベクトルMV1を算出する。また、画像処理装置IMP2は、読み出し時間差TDFが第1の時間以下の行について、第1視差DPFに基づいて奥行き動きベクトルMV2を算出する。
そして、画像処理装置IMP2は、共通動きベクトルMV1および奥行き動きベクトルMV2に基づいて画像IMG1、IMG2のローリング歪みを補正する。フレームFRMの周期VDより短い読み出し時間差TDFに基づいて共通動きベクトルMV1が算出されるため、共通動きベクトルMV1を算出する際の時間間隔(時間分解能)は、フレーム間の動きベクトルを算出する際の時間間隔に比べて小さい。したがって、この実施形態では、画像IMG1、IMG2のローリング歪みを補正する際の誤差を、フレーム間の動きベクトルに基づいてローリング歪みを補正する場合に比べて小さくできる。すなわち、この実施形態では、画像の歪みを精度よく補正できる。
また、画像処理装置IMP2は、例えば、補正画像IMGC1と補正画像IMGC2a(視点変換後の補正画像IMGC2)とを合成し、画像IMG1のローリング歪みを補正した画像に対応する合成画像IMGSを生成する。この実施形態では、補正画像IMGC1と補正画像IMGC2aとを合成する際、補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くすることにより、各画像IMG1、IMG2での補正誤差による影響を小さくできる。この結果、ローリング歪みの補正精度を向上することができる。
図8は、画像処理装置および画像処理方法の別の実施形態を示している。この実施形態の画像処理装置IMP3は、撮像装置CAM3に搭載される。撮像装置CAM3は、図2に示した画像処理装置IMP2の代わりに画像処理装置IMP3を有することを除いて、図2に示した撮像装置CAM2と同一または同様である。図1から図7で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図8の破線の矢印は、信号等の情報の流れを示す。
撮像装置CAM3は、レンズLEN1を介して被写体を撮像する撮像素子ISEN1と、レンズLEN2を介して被写体OBJを撮像する撮像素子ISEN2と、撮像素子ISEN1、ISEN2を駆動する駆動部DRVと、画像処理装置IMP3とを有する。撮像素子ISEN1、ISEN2および駆動部DRVは、画像処理装置IMP3内のバスBUSに接続される。
画像処理装置IMP3は、図2に示した制御部CNTLの代わりに制御部CNTL2を有することを除いて、図2に示した画像処理装置IMP2と同一または同様である。例えば、画像処理装置IMP3は、制御部CNTL2、視差算出部PALC、共通動きベクトル算出部MVCAL1、奥行き動きベクトル算出部MVCAL2、補正部CORR、合成率算出部RCAL、画像合成部SYN、記録部RECおよび表示部DIPを有する。さらに、画像処理装置IMP3は、メモリFMEM、MEMおよびバスBUSを有する。
制御部CNTL2は、駆動部DRVの動作を制御する。例えば、制御部CNTL2は、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きが互いに逆になるように、駆動部DRVを制御する。さらに、制御部CNTL2は、読み出し時間差TDFが第1の時間より大きい複数の行で、読み出し時間差TDFの絶対値が互いに同じになるように、駆動部DRVを制御する。撮像素子ISEN1、ISEN2からの画素信号の読み出し方法は、図9で説明する。
なお、画像処理装置IMP3の動作は、撮像素子ISEN1、ISEN2からの画素信号の読み出し方法(図7に示したステップS100)を除いて、図7に示した動作と同一または同様である。また、画像処理装置IMP3の構成は、図8に示す例に限定されない。
図9は、図8に示した撮像素子ISEN1、ISEN2からの画素信号の読み出し方法の一例を示す。図9に示すタイミング図では、3つのフレームFRM(FRM1、FRM2、FRM3)の画像IMG1、IMG2の読み出しタイミングを示す。図9では、説明を分かりやすくするために、読み出し時間差TDFが第1の時間以下の行を、行Lc(中央の行)の1行とする。タイミング図の縦軸のL1、Lc、Leは、各撮像素子ISEN1、ISEN2の行(複数の画素が行列状に配置された画素アレイの行)を示し、タイミング図の横軸は、時刻を示す。なお、図9では、図を見やすくするために、図3と同様に、各行の境界線の記載を省略している。
撮像素子ISEN1のタイミング図は、画素アレイの行L1(上から1番目の行)から行Lc(中央の行)までは、図3に示した撮像素子ISEN1のタイミング図と同一または同様である。すなわち、画素アレイの行Lcの1つ下の行から行Le(下から1番目の行)までの露光および画素信号の読み出しのタイミングは、図3に示した撮像素子ISEN1のタイミング図が示すタイミングと異なる。
同様に、撮像素子ISEN2のタイミング図は、画素アレイの行Leから行Lcまでは、図3に示した撮像素子ISEN2のタイミング図と同一または同様である。すなわち、画素アレイの行Lcの1つ上の行から行L1までの露光および画素信号の読み出しのタイミングは、図3に示した撮像素子ISEN2のタイミング図が示すタイミングと異なる。
例えば、駆動部DRVは、撮像素子ISEN1からの画素信号の読み出しを、画素アレイの行L1から行Lcまで行毎に実行する。そして、駆動部DRVは、行Lcから画素信号を読み出した後に、残りの行に対して、画素アレイの行Leから上側の行に向けて画素信号の読み出しを行毎に実行する。
また、駆動部DRVは、撮像素子ISEN2からの画素信号の読み出しを、画素アレイの行Leから行Lcまで行毎に実行する。そして、駆動部DRVは、行Lcから画素信号を読み出した後に、残りの行に対して、画素アレイの行L1から下側の行に向けて画素信号の読み出しを行毎に実行する。
このように、駆動部DRVは、行Lcから画素信号を読み出した後に、走査の向きを変更して、残りの行に対する画素信号の読み出しを行毎に実行する。これにより、行Lc以外の行では、撮像素子ISEN1と撮像素子ISEN2との間の読み出し時間差TDFは、互いに同じになる。
すなわち、制御部CNTL2は、共通動きベクトルMV1を算出する際に使用される読み出し時間差TDF(図1で説明した式(1)の分母”tR−tL”)が行毎に変動することを防止できる。画像処理装置IMP3は、行Lc以外の複数の行で互いに同じ読み出し時間差TDFを使用して共通動きベクトルMV1を算出できるため、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
なお、読み出し時間差TDFが第1の時間以下の行が複数存在する場合、駆動部DRVは、読み出し時間差TDFが第1の時間以下の全ての行から画素信号を読み出した後に、走査の向きを変更して、残りの行に対する画素信号の読み出しを行毎に実行する。
図10は、図8に示した画像処理装置IMP3による画像の合成方法の一例を示す。図10の補正画像IMGC(IMGC1、IMGC2)内に示す破線は、補正前の被写体OBJを示す。また、補正画像IMGC(IMGC1、IMGC2)内に示す矢印は、図1で説明した補正ベクトルCV(CVr、CVl)に対応する。
補正部CORRは、読み出し時間差TDFが第1の時間より大きい行については、図1で説明したように、補正ベクトルCVr、CVlに基づいて、画像IMG1、IMG2のローリング歪みをそれぞれ補正する。また、補正部CORRは、読み出し時間差TDFが第1の時間以下の行については、図5で説明したように、奥行き動きベクトルMV2に基づいて、画像IMG1、IMG2のローリング歪みをそれぞれ補正する。これにより、補正画像IMGC1、IMGC2は、生成される。
合成率算出部RCALは、図6で説明したように、補正画像IMGC2をレンズLEN1を視点とした画像IMGC2aに変換する。視点変換後の補正画像IMGC2a内に示す破線は、視点変換前の被写体OBJを示す。また、合成率算出部RCALは、補正画像IMGC1と補正画像IMGC2とを合成する際の補正画像IMGC1の比率α(合成率α)を、図2で説明した式(4)に基づいて算出する。
画像合成部SYNは、図6で説明したように、補正画像IMGC1と補正画像IMGC2aとを合成率αに基づいて合成し、合成画像IMGSを生成する。図10に示す合成画像IMGSは、画像IMG1のローリング歪みを補正した画像に対応する。
図10に示す合成画像IMGSおいても、図6に示した合成画像IMGSと同様に、合成画像IMGSの中央の行Lcから上側の行(例えば、行L1)に向かうほど、補正画像IMGC1の比率αは、大きくなる。また、合成画像IMGSの中央の行Lcから下側の行(例えば、行Le)に向かうほど、補正画像IMGC1の比率αは、小さくなる。補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くして合成画像IMGSが生成されるため、各画像IMG1、IMG2での補正誤差による影響を小さくすることができる。この結果、ローリング歪みの補正精度を向上することができる。
以上、図8から図10に示した実施形態においても、図2から図7に示した実施形態と同様の効果を得ることができる。例えば、画像処理装置IMP3は、読み出し時間差TDF等に基づいて算出される共通動きベクトルMV1と第1視差DPFに基づいて算出される奥行き動きベクトルMV2とに基づいて画像IMG1、IMG2のローリング歪みを補正する。これにより、画像処理装置IMP3は、読み出し時間差TDFより大きい時間間隔であるフレーム間での動きベクトルに基づいてローリング歪みを補正する場合に比べて、画像IMG1、IMG2のローリング歪みを補正する際の誤差を小さくできる。すなわち、画像の歪みを精度よく補正することができる。
また、画像処理装置IMP3は、正画像IMGC1と補正画像IMGC2aとを合成する際、補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くする。これにより、各画像IMG1、IMG2での補正誤差による影響を小さくすることができ、ローリング歪みの補正精度を向上することができる。
また、この実施形態では、制御部CNTL2は、読み出し時間差TDFが第1の時間より大きい複数の行で、読み出し時間差TDFの絶対値が互いに同じになるように、駆動部DRVを制御する。これにより、この実施形態では、共通動きベクトルMV1を算出する際に使用される読み出し時間差TDFが行毎に変動することを防止でき、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
図11は、画像処理装置および画像処理方法の別の実施形態を示している。この実施形態の画像処理装置IMP4は、撮像装置CAM4に搭載される。撮像装置CAM4は、図2に示した画像処理装置IMP2の代わりに画像処理装置IMP4を有することを除いて、図2に示した撮像装置CAM2と同一または同様である。図1から図10で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図11の破線の矢印は、信号等の情報の流れを示す。
撮像装置CAM4は、レンズLEN1を介して被写体を撮像する撮像素子ISEN1と、レンズLEN2を介して被写体OBJを撮像する撮像素子ISEN2と、撮像素子ISEN1、ISEN2を駆動する駆動部DRVと、画像処理装置IMP4とを有する。撮像素子ISEN1、ISEN2および駆動部DRVは、画像処理装置IMP4内のバスBUSに接続される。
画像処理装置IMP4は、図2に示した制御部CNTLの代わりに制御部CNTL3を有することを除いて、図2に示した画像処理装置IMP2と同一または同様である。例えば、画像処理装置IMP4は、制御部CNTL3、視差算出部PALC、共通動きベクトル算出部MVCAL1、奥行き動きベクトル算出部MVCAL2、補正部CORR、合成率算出部RCAL、画像合成部SYN、記録部RECおよび表示部DIPを有する。さらに、画像処理装置IMP4は、メモリFMEM、MEMおよびバスBUSを有する。
制御部CNTL3は、駆動部DRVの動作を制御する。例えば、制御部CNTL3は、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きが互いに逆になるように、駆動部DRVを制御する。さらに、制御部CNTL3は、撮像素子ISEN1における画素信号の読み出しを開始する行および撮像素子ISEN2における画素信号の読み出しを開始する行を、行の配列方向における被写体OBJの位置に基づいてそれぞれ設定する。以下、画素信号の読み出しを開始する行は、読み出し開始行とも称される。
例えば、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)と、読み出し時間差TDFが第1の時間以下の行とが一致するように、撮像素子ISEN1、ISEN2の読み出し開始行をそれぞれ設定する。画像IMG1、IMG2上の被写体OBJの位置は、撮像装置CAM4の機能に含まれるオートフォーカス制御、自動露出制御、動体追尾、顔検出等の処理により、検出される。したがって、画像処理装置IMP4は、画像IMG1、IMG2上の被写体OBJの位置を示す情報を、撮像装置CAM4内の所定のブロック(例えば、オートフォーカス制御を実行するブロック)から取得する。
そして、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行を、読み出し時間差TDFが第1の時間以下の行に設定する。また、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行と、撮像素子ISEN1の読み出し開始行とに基づいて、撮像素子ISEN2の読み出し開始行を設定する。例えば、制御部CNTL3は、撮像素子ISEN1の読み出し開始行と撮像素子ISEN2の読み出し開始行との中間が画像IMG1、IMG2上の被写体OBJの位置に対応する行になるように、撮像素子ISEN2の読み出し開始行を設定する。
駆動部DRVは、制御部CNTL3により設定された撮像素子ISEN1、ISEN2のそれぞれの読み出し開始行から画素信号を最初に読み出す。なお、撮像素子ISEN1、ISEN2からの画素信号の読み出し方法は、図12および図13で説明する。ここで、画像処理装置IMP4の動作は、撮像素子ISEN1、ISEN2からの画素信号の読み出し方法(図7に示したステップS100)を除いて、図7に示した動作と同一または同様である。また、画像処理装置IMP4の構成は、図11に示す例に限定されない。
図12は、図11に示した撮像素子ISEN1、ISEN2からの画素信号の読み出し方法の一例を示す。図12に示すタイミング図では、3つのフレームFRM(FRM1、FRM2、FRM3)の画像IMG1、IMG2の読み出しタイミングを示す。図12では、説明を分かりやすくするために、読み出し時間差TDFが第1の時間以下の行を、行Liおよび行Lkの2行とする。タイミング図の縦軸のL1、Li、Lj、Lk、Leは、各撮像素子ISEN1、ISEN2の行(複数の画素が行列状に配置された画素アレイの行)を示し、タイミング図の横軸は、時刻を示す。なお、図12では、図を見やすくするために、図3と同様に、各行の境界線の記載を省略している。
行L1は、画素アレイの上から1番目の行であり、撮像素子ISEN1の読み出し開始行である。行Liは、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行である。なお、画像IMG1、IMG2上の被写体OBJの位置に対応する行は、読み出し時間差TDFが第1の時間以下の行に設定される。すなわち、図12に示す例では、読み出し時間差TDFが第1の時間以下の行Liは、被写体OBJの位置に合わせて、画像IMG1、IMG2の中央の行より上側に移動する。行Ljは、撮像素子ISEN1の読み出し開始行L1と、画像IMG1、IMG2上の被写体OBJの位置に対応する行Liとに基づいて算出された撮像素子ISEN2の読み出し開始行である。
駆動部DRVは、撮像素子ISEN1からの画素信号の読み出しを、画素アレイの行L1から行Liまで行毎に実行し、撮像素子ISEN2からの画素信号の読み出しを、画素アレイの行Ljから行Liまで行毎に実行する。そして、駆動部DRVは、行Liから画素信号を読み出した後、撮像素子ISEN1、ISEN2のいずれかで画素信号が読み出された行をスキップして、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
例えば、駆動部DRVは、行Liから画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Ljの1つ下の行から行Lkまで行毎に実行する。また、駆動部DRVは、行Liから画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行Leから行Lkまで行毎に実行する。なお、行Lkからの画素信号の読み出しは、撮像素子ISEN1、ISEN2で同じタイミングで実行される。すなわち、行Lkは、読み出し時間差TDFが第1の時間以下の行である。
例えば、行Lkからの画素信号の読み出しが終了した時点で、撮像素子ISEN1、ISEN2から読み出された画素信号は、合わせて1画面分になる。このように、駆動部DRVは、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出す。例えば、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出すのにかかる時間は、撮像素子ISEN1、ISEN2の一方が1画面分の画素信号を読み出すのにかかる時間(図2で説明した式(4)の時間TFUL)の約半分である。
また、駆動部DRVは、行Lkから画素信号を読み出した後、残りの行の読み出し時間差TDFの絶対値が互いに同じになるように、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
例えば、駆動部DRVは、行Lkから画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Ljの1つ上の行から行Liの1つ下の行まで行毎に実行する。その後、駆動部DRVは、撮像素子ISEN1からの画素信号の読み出しを、行Leから行Lkの1つ下の行まで行毎に実行する。
また、駆動部DRVは、行Lkから画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行L1から行Liの1つ上の行まで行毎に実行する。その後、駆動部DRVは、撮像素子ISEN2からの画素信号の読み出しを、行Ljの1つ下の行から行Lkの1つ上の行まで行毎に実行する。
これにより、1画面分の画像信号は、撮像素子ISEN1、ISEN2のそれぞれから読み出される。また、行Li、Lk以外の行では、撮像素子ISEN1と撮像素子ISEN2との間の読み出し時間差TDFは、互いに同じになる。したがって、画像処理装置IMP4においても、図9で説明したように、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
このように、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置に対応する行Liを、読み出し時間差TDFが第1の時間以下の行に設定する。これにより、ローリング歪みが奥行き動きベクトルMV2に基づいて補正される領域(奥行き方向の移動が考慮される領域)を被写体OBJの位置に合わせることができる。この結果、この実施形態では、被写体OBJが奥行き方向に移動した場合でも、画像IMG1、IMG2上の被写体OBJのローリング歪みを精度よく補正できる。
また、制御部CNTL3は、行Liから画素信号が読み出された後、撮像素子ISEN1、ISEN2のいずれかで画素信号が読み出された行をスキップして撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続するように駆動部DRVを制御する。これにより、制御部CNTL3は、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出すのにかかる時間を、撮像素子ISEN1、ISEN2の一方が1画面分の画素信号を読み出すのにかかる時間の約半分にできる。この結果、例えば、補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くして合成画像IMGSが生成される場合、比率の高い画像の遅延時間を小さくすることができる。
図13は、図11に示した制御部CNTL3による読み出し制御の一例を示す。図13に示す動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。図13では、説明を分かりやすくするために、第1の時間は、互いに隣接する行の読み出し時刻の差(図1に示したタイミング図のΔt)より小さいとする。すなわち、図13では、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行を1行とし、読み出し時間差TDFが第1の時間以下の行は連続しないものとして説明する。
ステップS102では、図11で説明したように、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置を特定する。例えば、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置を示す情報(オートフォーカス制御等の実行により得られる情報)を、撮像装置CAM4内の所定のブロック(オートフォーカス制御等を実行するブロック)から取得する。そして、制御部CNTL3は、撮像装置CAM4から取得した情報に基づいて、画像IMG1、IMG2上の被写体OBJの位置を特定する。
ステップS104では、図11で説明したように、制御部CNTL3は、撮像素子ISEN1の読み出し開始行および撮像素子ISEN2の読み出し開始行を、被写体OBJの位置(行の配列方向の位置)に基づいてそれぞれ設定する。
ステップS110では、制御部CNTL3は、駆動部DRVを制御して、撮像素子ISEN1、ISENからの画像IMG1、IMG2の読み出しを開始する。例えば、駆動部DRVは、ステップS104で設定された撮像素子ISEN1、ISEN2のそれぞれの読み出し開始行から画素信号をそれぞれ読み出す。なお、撮像素子ISEN1の走査の向きは、撮像素子ISEN1の読み出し開始行から撮像素子ISEN2の読み出し開始行に向かう方向である。また、撮像素子ISEN2の走査の向きは、撮像素子ISEN2の読み出し開始行から撮像素子ISEN1の読み出し開始行に向かう方向である。
ステップS112では、制御部CNTL3は、撮像素子ISEN1、ISEN2で同一の行を同時に読み出したか判定する。例えば、制御部CNTL3は、撮像素子ISEN1、ISEN2を駆動する共通のクロックにおいて、同一のクロックサイクルで同一の行の画素信号が撮像素子ISEN1、ISEN2から読み出された場合、同一の行を同時に読み出したと判定する。ここで、撮像素子ISEN1、ISEN2で同時に読み出される行は、ステップS102で特定した被写体OBJの位置に対応する行である。
撮像素子ISEN1、ISEN2で同一の行を同時に読み出した場合、制御部CNTL3の処理は、ステップS120に移る。一方、同一の行が撮像素子ISEN1、ISEN2で同時に読み出されていない場合、制御部CNTL3の処理は、ステップS112に戻る。すなわち、制御部CNTL3は、撮像素子ISEN1、ISEN2で同一の行を同時に読み出すまで、ステップS120の実行を待機する。
ステップS120では、図12で説明したように、制御部CNTL3は、撮像素子ISEN1、ISEN2のいずれかで画素信号が読み出された行をスキップして、画素信号の読み出しを継続するように、駆動部DRVを制御する。例えば、駆動部DRVは、撮像素子ISEN2で画素信号が読み出された行をスキップして、撮像素子ISEN1からの画素信号の読み出しを行毎に実行する。また、駆動部DRVは、撮像素子ISEN1、ISEN2のいずれからも画素信号が読み出されていない行に対して、撮像素子ISEN2からの画素信号の読み出しを行毎に実行する。なお、撮像素子ISEN1の走査の向きと、撮像素子ISEN2の走査の向きとは、互いに逆である。
ステップS122では、制御部CNTL3は、撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせて、1画面分になるか判定する。撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせて1画面分になる場合、制御部CNTL3の処理は、ステップS130に移る。一方、撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせても1画面分に満たない場合、制御部CNTL3の処理は、ステップS122に戻る。すなわち、制御部CNTL3は、撮像素子ISEN1から画素信号が読み出された行と撮像素子ISEN2から画素信号が読み出された行とを合わせた範囲が1画面分以上になるまで、ステップS130の実行を待機する。
ステップS130では、図12で説明したように、制御部CNTL3は、駆動部DRVを制御して、残りの行の読み出し時間差TDFの絶対値が互いに同じになるように、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
ステップS132では、制御部CNTL3は、撮像素子ISEN1、ISEN2の各々で、全ての行に対する画素信号の読み出しが完了したか判定する。すなわち、制御部CNTL3は、1画面分の画素信号が撮像素子ISEN1、ISEN2の各々で読み出されたか判定する。全ての行に対する画素信号の読み出しが完了していない場合、制御部CNTL3の処理は、ステップS132に戻る。一方、全ての行に対する画素信号の読み出しが完了した場合、制御部CNTL3の処理(制御部CNTL3による読み出し制御)は、終了する。例えば、図13に示す動作が終了した後、画像処理装置IMP4は、図7に示したステップS200を実行する。
なお、画素信号の読み出し方法は、図13に示す例に限定されない。例えば、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行(読み出し時間差TDFが第1の時間以下の行)が複数存在する場合、制御部CNTL3は、ステップS112において、以下に示す判定を実行する。制御部CNTL3は、撮像素子ISEN1、ISEN2の両方で画素信号が読み出された行が存在し、読み出し時間差TDFが所定の閾値以上か判定する。所定の閾値は、互いに隣接する行の読み出し時刻の差(図1に示したタイミング図のΔt)と、第1の時間とに基づいて設定される。例えば、所定の閾値は、第1の時間からΔt(互いに隣接する行の読み出し時刻の差)を減算した値である。
以上、図11から図13に示した実施形態においても、図8から図10に示した実施形態と同様の効果を得ることができる。例えば、ローリング歪みの補正精度を向上することができる。また、共通動きベクトルMV1を算出する際に使用される読み出し時間差TDFが行毎に変動することを防止でき、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
さらに、この実施形態では、制御部CNTL3は、画像IMG1、IMG2上の被写体OBJの位置(行の配列方向の位置)に対応する行を、読み出し時間差TDFが第1の時間以下の行に設定する。これにより、ローリング歪みが奥行き動きベクトルMV2に基づいて補正される領域(奥行き方向の移動が考慮される領域)を被写体OBJの位置に合わせることができる。この結果、この実施形態では、被写体OBJが奥行き方向に移動した場合でも、画像IMG1、IMG2上の被写体OBJのローリング歪みを精度よく補正できる。
図14は、画像処理装置および画像処理方法の別の実施形態を示している。この実施形態の画像処理装置IMP5は、撮像装置CAM5に搭載される。撮像装置CAM5は、図2に示した画像処理装置IMP2の代わりに画像処理装置IMP5を有することを除いて、図2に示した撮像装置CAM2と同一または同様である。図1から図13で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図14の破線の矢印は、信号等の情報の流れを示す。
撮像装置CAM5は、レンズLEN1を介して被写体を撮像する撮像素子ISEN1と、レンズLEN2を介して被写体OBJを撮像する撮像素子ISEN2と、撮像素子ISEN1、ISEN2を駆動する駆動部DRVと、画像処理装置IMP5とを有する。撮像素子ISEN1、ISEN2および駆動部DRVは、画像処理装置IMP5内のバスBUSに接続される。
画像処理装置IMP5は、図2に示した制御部CNTLの代わりに制御部CNTL4を有することを除いて、図2に示した画像処理装置IMP2と同一または同様である。例えば、画像処理装置IMP5は、制御部CNTL4、視差算出部PALC、共通動きベクトル算出部MVCAL1、奥行き動きベクトル算出部MVCAL2、補正部CORR、合成率算出部RCAL、画像合成部SYN、記録部RECおよび表示部DIPを有する。さらに、画像処理装置IMP5は、メモリFMEM、MEMおよびバスBUSを有する。
制御部CNTL4は、駆動部DRVの動作を制御する。例えば、制御部CNTL4は、撮像素子ISEN1、ISEN2の行の配列方向の走査の向きが互いに逆になるように、駆動部DRVを制御する。さらに、制御部CNTL4は、読み出し時間差TDFが第1の時間以下の行が所定の間隔(以下、第1間隔とも称する)で複数発生するように、駆動部DRVを制御する。
例えば、制御部CNTL4は、読み出し時間差TDFが第1の時間以下の行が第1間隔で複数発生するように、撮像素子ISEN1の読み出し開始行およびスキップ先と撮像素子ISEN2の読み出し開始行およびスキップ先とを設定する。スキップ先は、例えば、撮像素子ISEN1、ISEN2のいずれかで画素信号が読み出された行をスキップする際に使用される。スキップの回数は、第1間隔に基づいて算出される。あるいは、読み出し時間差TDFが第1の時間以下の行の数(読み出し時間差TDFが第1の時間以下の行が連続する場合は、連続する行のグループを1つとカウント)に基づいて算出される。
読み出し時間差TDFが第1の時間以下の行の数または第1間隔は、画像処理装置IMP5に予め通知される。あるいは、読み出し時間差TDFが第1の時間以下の行の数または第1間隔は、画像処理装置IMP5に予め設定される。
撮像素子ISEN1のスキップ先は、撮像素子ISEN1の読み出し開始行と第1間隔とに基づいて算出される。また、撮像素子ISEN2の読み出し開始行およびスキップ先は、撮像素子ISEN1のスキップ先と第1間隔とに基づいて算出される。例えば、撮像素子ISEN1の1番目のスキップ先は、撮像素子ISEN1の読み出し開始行に第1間隔を加算して算出される。また、2番目のスキップ先は、1番目のスキップ先に第1間隔を加算して算出される。この場合、撮像素子ISEN1のスキップ先の間隔は、第1間隔と同じである。なお、スキップ先は、第1間隔の大きさによっては、撮像素子ISEN1の読み出し開始行に、第1間隔を整数倍した値を加算した行から前後する場合もある。
駆動部DRVは、制御部CNTL4により設定された撮像素子ISEN1の読み出し開始行およびスキップ先と撮像素子ISEN2の読み出し開始行およびスキップ先とに基づいて、画素信号を行毎に読み出す。なお、撮像素子ISEN1、ISEN2からの画素信号の読み出し方法は、図15および図16で説明する。ここで、画像処理装置IMP5の動作は、撮像素子ISEN1、ISEN2からの画素信号の読み出し方法(図7に示したステップS100)を除いて、図7に示した動作と同一または同様である。また、画像処理装置IMP5の構成は、図14に示す例に限定されない。
図15は、図14に示した撮像素子ISEN1、ISEN2からの画素信号の読み出し方法の一例を示す。図15に示すタイミング図では、3つのフレームFRM(FRM1、FRM2、FRM3)の画像IMG1、IMG2の読み出しタイミングを実線の矢印で示す。図15では、説明を分かりやすくするために、読み出し時間差TDFが第1の時間以下の行を、行Lm、Lo、Lqの3行とする。タイミング図の縦軸のL1、Lm、Ln、Lo、Lp、Lq、Leは、各撮像素子ISEN1、ISEN2の行(複数の画素が行列状に配置された画素アレイの行)を示し、タイミング図の横軸は、時刻を示す。なお、図15では、図を見やすくするために、図3と同様に、各行の境界線の記載を省略している。
行L1は、画素アレイの上から1番目の行であり、撮像素子ISEN1の読み出し開始行である。行Lm、Lo、Lqは、読み出し時間差TDFが第1の時間以下の行である。行Lmと行Loとの間隔、および、行Loと行Lqとの間隔は、第1間隔である。行Lnは、撮像素子ISEN2の読み出し開始行である。なお、行Lnの1つ下の行は、撮像素子ISEN1の1番目のスキップ先である。そして、行Lpは、撮像素子ISEN1の2番目のスキップ先である。なお、行Lpの1つ上の行は、撮像素子ISEN2の1番目のスキップ先である。そして、行Leは、画素アレイの下から1番目の行であり、撮像素子ISEN2の2番目のスキップ先である。
駆動部DRVは、撮像素子ISEN1からの画素信号の読み出しを、画素アレイの行L1から行Lmまで行毎に実行し、撮像素子ISEN2からの画素信号の読み出しを、画素アレイの行Lnから行Lmまで行毎に実行する。そして、駆動部DRVは、行Lmから画素信号を読み出した後、撮像素子ISEN1、ISEN2の1番目のスキップ先にスキップして、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
例えば、駆動部DRVは、行Lmから画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Lnの1つ下の行から行Loまで行毎に実行する。また、駆動部DRVは、行Lmから画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行Lpの1つ上の行から行Loまで行毎に実行する。そして、駆動部DRVは、行Loから画素信号を読み出した後、撮像素子ISEN1、ISEN2の2番目のスキップ先にスキップして、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
例えば、駆動部DRVは、行Loから画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Lpから行Lqまで行毎に実行する。また、駆動部DRVは、行Loから画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行Leから行Lqまで行毎に実行する。これにより、例えば、行Lqからの画素信号の読み出しが終了した時点(例えば、時刻tc)で、撮像素子ISEN1、ISEN2から読み出された画素信号は、合わせて1画面分になる。このように、駆動部DRVは、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出す。例えば、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出すのにかかる時間は、撮像素子ISEN1、ISEN2の一方が1画面分の画素信号を読み出すのにかかる時間(図2で説明した式(4)の時間TFUL)の約半分である。
また、駆動部DRVは、行Lqから画素信号を読み出した後、残りの行の読み出し時間差TDFの絶対値が互いに同じになるように、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
例えば、駆動部DRVは、行Lqから画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Lnの1つ上の行から行Lmの1つ下の行まで行毎に実行する。その後、駆動部DRVは、撮像素子ISEN1からの画素信号の読み出しを、行Lpの1つ上の行から行Loの1つ下の行まで行毎に実行する。そして、駆動部DRVは、行Loの1つ下の行から画素信号を読み出した後、撮像素子ISEN1からの画素信号の読み出しを、行Leから行Lqの1つ下の行まで行毎に実行する。
また、駆動部DRVは、行Lqから画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行L1から行Lmの1つ上の行まで行毎に実行する。その後、駆動部DRVは、撮像素子ISEN2からの画素信号の読み出しを、行Lnの1つ下の行から行Loの1つ上の行まで行毎に実行する。そして、駆動部DRVは、行Loの1つ上の行から画素信号を読み出した後、撮像素子ISEN2からの画素信号の読み出しを、行Lpから行Lqの1つ上の行まで行毎に実行する。
これにより、1画面分の画像信号は、撮像素子ISEN1、ISEN2のそれぞれから読み出される。また、行Lm、Lo、Lq以外の行では、撮像素子ISEN1と撮像素子ISEN2との間の読み出し時間差TDFは、互いに同じになる。したがって、画像処理装置IMP5においても、図9で説明したように、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
このように、制御部CNTL4は、読み出し時間差TDFが第1の時間以下の行が第1間隔で複数発生するように、撮像素子ISEN1の読み出し開始行およびスキップ先と撮像素子ISEN2の読み出し開始行およびスキップ先とを設定する。これにより、例えば、被写体OBJが画像IMG1、IMG2上に不規則に複数存在する場合、画像IMG1、IMG2上の複数の被写体OBJのローリング歪みを奥行き動きベクトルMV2に基づいて補正できる確率を向上できる。この結果、この実施形態では、複数の被写体OBJが奥行き方向に移動した場合でも、画像IMG1、IMG2上の被写体OBJのローリング歪みを精度よく補正できる。
また、制御部CNTL4は、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出すように、駆動部DRVを制御する。これにより、制御部CNTL4は、1画面分の画像信号を撮像素子ISEN1と撮像素子ISEN2とで分担して読み出すのにかかる時間を、撮像素子ISEN1、ISEN2の一方が1画面分の画素信号を読み出すのにかかる時間の約半分にできる。この結果、例えば、補正画像IMGC1、IMGC2aのうち、遅延時間の小さい方の画像の比率を高くして合成画像IMGSが生成される場合、比率の高い画像の遅延時間を小さくすることができる。
図16は、図14に示した制御部CNTL4による読み出し制御の一例を示す。図16に示す動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。図16では、説明を分かりやすくするために、第1の時間は、互いに隣接する行の読み出し時刻の差(図1に示したタイミング図のΔt)より小さいとする。すなわち、図16では、読み出し時間差TDFが第1の時間以下の行は連続しないものとして説明する。また、図13で説明した動作と同一または同様な動作については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
ステップS106では、図14で説明したように、制御部CNTL4は、撮像素子ISEN1の読み出し開始行およびスキップ先と撮像素子ISEN2の読み出し開始行およびスキップ先とを設定する。なお、撮像素子ISEN1の読み出し開始行およびスキップ先と撮像素子ISEN2の読み出し開始行およびスキップ先は、図14で説明したように、読み出し時間差TDFが第1の時間以下の行の数または第1間隔に基づいて算出される。
ステップS110では、制御部CNTL4は、駆動部DRVを制御して、撮像素子ISEN1、ISENからの画像IMG1、IMG2の読み出しを開始する。
ステップS112では、制御部CNTL4は、撮像素子ISEN1、ISEN2で同一の行を同時に読み出したか判定する。撮像素子ISEN1、ISEN2で同時に読み出される行は、読み出し時間差TDFが第1の時間以下の行(図15に示した例では、行Lm、Lo、Lq)である。
撮像素子ISEN1、ISEN2で同一の行を同時に読み出した場合、制御部CNTL4の処理は、ステップS122に移る。一方、同一の行が撮像素子ISEN1、ISEN2で同時に読み出されていない場合、制御部CNTL4の処理は、ステップS112に戻る。すなわち、制御部CNTL4は、撮像素子ISEN1、ISEN2で同一の行を同時に読み出すまで、ステップS122の実行を待機する。
ステップS122では、制御部CNTL4は、撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせて、1画面分になるか判定する。撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせて1画面分になる場合、制御部CNTL4の処理は、ステップS130に移る。一方、撮像素子ISEN1、ISEN2から画素信号が読み出された行を合わせても1画面分に満たない場合、制御部CNTL4の処理は、ステップS124に移る。ステップS124の処理が終了した後、制御部CNTL4の処理は、ステップS112に戻る。すなわち、制御部CNTL4は、撮像素子ISEN1から画素信号が読み出された行と撮像素子ISEN2から画素信号が読み出された行とを合わせた範囲が1画面分以上になるまで、ステップS130の実行を待機する。
ステップS124では、図15で説明したように、制御部CNTL4は、スキップ先が示す行にスキップして画素信号の読み出しを継続するように、駆動部DRVを制御する。例えば、1回目のスキップでは、駆動部DRVは、撮像素子ISEN1の1番目のスキップ先にスキップして、撮像素子ISEN1からの画素信号の読み出しを行毎に実行する。同様に、駆動部DRVは、撮像素子ISEN2の1番目のスキップ先にスキップして、撮像素子ISEN2からの画素信号の読み出しを行毎に実行する。なお、撮像素子ISEN1の走査の向きと、撮像素子ISEN2の走査の向きとは、互いに逆である。ステップS124の後、制御部CNTL4の処理は、ステップS112に戻る。
ステップS130では、図15で説明したように、制御部CNTL4は、駆動部DRVを制御して、残りの行の読み出し時間差TDFの絶対値が互いに同じになるように、撮像素子ISEN1、ISEN2からの画素信号の読み出しを継続する。
ステップS132では、制御部CNTL4は、撮像素子ISEN1、ISEN2の各々で、全ての行に対する画素信号の読み出しが完了したか判定する。全ての行に対する画素信号の読み出しが完了していない場合、制御部CNTL4の処理は、ステップS132に戻る。一方、全ての行に対する画素信号の読み出しが完了した場合、制御部CNTL4の処理(制御部CNTL4による読み出し制御)は、終了する。例えば、図16に示す動作が終了した後、画像処理装置IMP5は、図7に示したステップS200を実行する。
なお、画素信号の読み出し方法は、図16に示す例に限定されない。例えば、読み出し時間差TDFが第1の時間以下の行が連続する場合、制御部CNTL4は、ステップS112において、以下に示す判定を実行する。制御部CNTL4は、撮像素子ISEN1、ISEN2の両方で画素信号が読み出された行が連続して存在し、読み出し時間差TDFが所定の閾値以上か判定する。所定の閾値は、互いに隣接する行の読み出し時刻の差(図1に示したタイミング図のΔt)と、第1の時間とに基づいて設定される。例えば、所定の閾値は、第1の時間からΔt(互いに隣接する行の読み出し時刻の差)を減算した値である。
以上、図14から図16に示した実施形態においても、図8から図10に示した実施形態と同様の効果を得ることができる。例えば、ローリング歪みの補正精度を向上することができる。また、共通動きベクトルMV1を算出する際に使用される読み出し時間差TDFが行毎に変動することを防止でき、共通動きベクトルMV1の算出精度が複数の行でばらつくことを抑制できる。
さらに、この実施形態では、制御部CNTL4は、読み出し時間差TDFが第1の時間以下の行が第1間隔で複数発生するように、駆動部DRVを制御する。これにより、この実施形態では、複数の被写体OBJが奥行き方向に移動した場合でも、画像IMG1、IMG2上の被写体OBJのローリング歪みを精度よく補正できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
画像処理装置において、
行列状に配置された複数の画素を有する第1の撮像素子から第1の走査方向に読み出された画素信号に基づく第1画像と、行列状に配置された複数の画素を有する第2の撮像素子から前記第1の走査方向と反対の第2の走査方向に読み出された画素信号に基づく第2画像とを取得し、前記第1画像に含まれる被写体の位置と前記第2画像に含まれる前記被写体の位置との差を示す第1視差を行毎に算出する第1視差算出部と、
前記第1の撮像素子と前記第2の撮像素子と前記被写体との位置関係に応じて発生する第2視差を、複数の前記第1画像および複数の前記第2画像の少なくとも一方に基づいて行毎に算出する第2視差算出部と、
前記第1の撮像素子および前記第2の撮像素子の互いに対応する行の前記画素信号の読み出しの時間差と前記第1視差と前記第2視差とに基づいて、前記被写体の第1動きベクトルを行毎に算出する第1動きベクトル算出部と、
前記第1画像および前記第2画像のそれぞれの歪みを前記第1動きベクトルに基づいて補正し、第1補正画像および第2補正画像をそれぞれ出力する補正部と
を備えていることを特徴とする画像処理装置。
(付記2)
付記1に記載の画像処理装置において、
前記第2視差算出部は、前記読み出しの時間差が第1の時間以下の行に対しては、前記第2視差を算出する処理を省略し、
前記第1動きベクトル算出部は、前記読み出しの時間差が前記第1の時間以下の行に対しては、前記第1動きベクトルを算出する処理を省略する
ことを特徴とする画像処理装置。
(付記3)
付記2に記載の画像処理装置において、
前記読み出しの時間差が前記第1の時間以下の行における前記被写体の動きを示す第2動きベクトルを、前記第1視差に基づいて算出する第2動きベクトル算出部を備え、
前記補正部は、前記第1画像および前記第2画像のそれぞれの歪みを前記第1動きベクトルおよび前記第2動きベクトルに基づいて補正し、前記第1補正画像および前記第2補正画像をそれぞれ出力する
ことを特徴とする画像処理装置。
(付記4)
付記1ないし付記3のいずれか1項に記載の画像処理装置において、
前記第1補正画像と前記第2補正画像とを合成する際の前記第1補正画像の比率を、各行に対して前記画素信号の読み出しが実行される時刻と基準の時刻との差である差分時間に基づいて決定し、前記第1補正画像と前記第2補正画像とを前記第1補正画像の比率に基づいて合成する合成部を備えていることを特徴とする画像処理装置。
(付記5)
付記4に記載の画像処理装置において、
前記合成部は、前記第1補正画像の画素値と前記第2補正画像の画素値との差と前記差分時間とに基づいて、前記第1補正画像の比率を決定する
ことを特徴とする画像処理装置。
(付記6)
付記2ないし付記5のいずれか1項に記載の画像処理装置において、
前記読み出しの時間差が前記第1の時間より大きい複数の行で、前記読み出しの時間差の絶対値が互いに同じになるように、前記第1の撮像素子および前記第2の撮像素子からの前記画素信号の読み出しを制御する制御部を備えていることを特徴とする画像処理装置。
(付記7)
付記2ないし付記5のいずれか1項に記載の画像処理装置において、
前記第1の撮像素子における前記画素信号の読み出しを開始する行および前記第2の撮像素子における前記画素信号の読み出しを開始する行を、行の配列方向における前記被写体の位置に基づいてそれぞれ設定する制御部を備えていることを特徴とする画像処理装置。
(付記8)
付記2ないし付記5のいずれか1項に記載の画像処理装置において、
前記読み出しの時間差が前記第1の時間以下の行が所定の間隔で複数発生するように、前記第1の撮像素子および前記第2の撮像素子からの前記画素信号の読み出しを制御する制御部を備えていることを特徴とする画像処理装置。
(付記9)
付記7または付記8に記載の画像処理装置において、
前記制御部は、前記読み出しの時間差が前記第1の時間より大きい複数の行で、前記読み出しの時間差の絶対値が互いに同じになるように、前記第1の撮像素子および前記第2の撮像素子からの前記画素信号の読み出しを制御することを特徴とする画像処理装置。
(付記10)
画像処理方法において、
行列状に配置された複数の画素を有する第1の撮像素子から第1の走査方向に読み出された画素信号に基づく第1画像と、行列状に配置された複数の画素を有する第2の撮像素子から前記第1の走査方向と反対の第2の走査方向に読み出された画素信号に基づく第2画像とを取得し、前記第1画像に含まれる被写体の位置と前記第2画像に含まれる前記被写体の位置との差を示す第1視差を行毎に算出し、
前記第1の撮像素子と前記第2の撮像素子と前記被写体との位置関係に応じて発生する第2視差を、複数の前記第1画像および複数の前記第2画像の少なくとも一方に基づいて行毎に算出し、
前記第1の撮像素子および前記第2の撮像素子の互いに対応する行の前記画素信号の読み出しの時間差と前記第1視差と前記第2視差とに基づいて、前記被写体の第1動きベクトルを行毎に算出し、
前記第1画像および前記第2画像のそれぞれの歪みを前記第1動きベクトルに基づいて補正し、第1補正画像および第2補正画像をそれぞれ出力する
ことを特徴とする画像処理方法。
(付記11)
行列状に配置された複数の画素を有する第1の撮像素子と、
行列状に配置された複数の画素を有する第2の撮像素子と、
前記第1の撮像素子および前記第2の撮像素子からの前記画素信号の読み出しを実行する駆動部と、
前記第1の撮像素子から第1の走査方向に読み出された画素信号に基づく第1画像と、前記第2の撮像素子から前記第1の走査方向と反対の第2の走査方向に読み出された画素信号に基づく第2画像とを取得し、前記第1画像に含まれる被写体の位置と前記第2画像に含まれる前記被写体の位置との差を示す第1視差を行毎に算出する第1視差算出部と、
前記第1の撮像素子と前記第2の撮像素子と前記被写体との位置関係に応じて発生する第2視差を、複数の前記第1画像および複数の前記第2画像の少なくとも一方に基づいて行毎に算出する第2視差算出部と、
前記第1の撮像素子および前記第2の撮像素子の互いに対応する行の前記画素信号の読み出しの時間差と前記第1視差と前記第2視差とに基づいて、前記被写体の第1動きベクトルを行毎に算出する第1動きベクトル算出部と、
前記第1画像および前記第2画像のそれぞれの歪みを前記第1動きベクトルに基づいて補正し、第1補正画像および第2補正画像をそれぞれ出力する補正部と
を備えていることを特徴とする撮像装置。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。