この発明は、撮像装置に関する。
静止画手ぶれ補正技術は、静止画撮影における手ぶれを軽減する技術であり、手ぶれを検出する要素と、その検出結果に基づいて画像を補正する要素とによって実現される。
手ぶれを検出する方法には、手ぶれセンサ(角速度センサ)を用いる方法と、画像を解析して検出する電子式とがある。画像を補正する方法には、光学系の駆動により補正を行なう光学式手ぶれ補正と、画像処理により補正を行なう電子式手ぶれ補正とがある。
静止画手ぶれ補正に対しては、センサで手ぶれを検出しその検出結果に基づいて光学式手ぶれ補正を行なう方法と、センサで手ぶれを検出しその検出結果に基づいて電子式手ぶれ補正を行なう方法と、画像を解析して手ぶれを検出しその検出結果に基づいて電子式手ぶれ補正を行なう方法とがある。
画像を解析して手ぶれを検出しその検出結果に基づいて電子式手ぶれ補正を行なう方法は、完全電子式の手ぶれ補正と呼ばれている。完全電子式の手ぶれ補正で実用化されている方式としては、図16に示すように、通常の露光時間T1を分割して得られる、露光時間がT2の複数の短時間露光画像G1〜G4を、それらの画像特徴により位置合わせして合成し、1枚の静止画像を生成する方式(画像加算式手ぶれ補正)がある。
画像加算式手ぶれ補正では、各短時間露光画像が位置合わせによって完全に一致せしめられた場合、手ぶれ量は、分割画像1枚分の露光時間に軽減される。しかしながら、画像加算式手ぶれ補正では、1枚目の短時間露光画像G1の露光開始から最後の短時間露光画像G4の露光終了までの期間は、通常露光の場合に比べて長くなるため、その間の被写体のぶれの程度が大きくなるという欠点がある。さらに、画像処理による位置合わせに失敗した場合、通常露光よりも手ぶれ量が大きくなるという欠点がある。
特開平9−261526号公報 「撮像装置」 低輝度条件においては手ぶれしないような露光時間で連写して、複数画像相互のずれを補正してから露光不足の画像群を合成することで、ぶれのない適切な露出の画像を得る。
特開2004−221992号公報 「撮像装置およびプログラム」 順次撮影して得られた複数の画像を合成することにより、露出補正された合成画像を得る第1の撮影モードと、1回の撮影により合成画像に相当する画像を得る第2の撮影モードとの撮影が可能な撮像装置であって、撮影時の条件(被写体の明るさ、焦点距離、絞り、感度)に応じて、第1の撮影モードおよび第2の撮影モードのうちの一方の撮影モードを設定する制御手段を備えている。
特許第3349129号公報 「撮像装置」 撮像素子の感度制御、複数画像の加算による感度制御および隣接する画素を加算することによる感度制御の3つの制御手段を持つことを特徴とする撮像装置。被写体ぶれを認識した際に、背景部は複数画像加算を行ない、動被写体については撮像素子のゲイン制御と画素加算を適応的に制御することで、感度を調整する。
この発明は、分割露光に基づく静止画撮影時において、複数の短時間露光画像の位置合わせ精度の向上化が図れるようになる撮像装置を提供することを目的とする。
また、この発明は、分割露光中の手ぶれによる合成画像の画質の劣化を低減することができる撮像装置を提供することを目的とする。
請求項1に記載の発明は、静止画撮影時に、予め導出された露光期間を複数回に分割して露光を行なうことにより、複数の短時間露光画像を取得する短時間露光画像取得手段、短時間露光画像取得手段によって取得された1番目の短時間露光画像を基準画像とし、短時間露光画像取得手段によって取得された2番目以降の各短時間露光画像を座標変換対象画像として、基準画像と各座標変換対象画像との間の動きベクトルを、両者の画像データに基づいて検出するとともに、検出した動きベクトルの信頼性を判定する第1の動きベクトル検出手段、撮像装置本体に取り付けられた動き検出センサ、短時間露光画像取得手段によって各短時間露光画像が取得される際に、動き検出センサの出力に基づいて、上記基準画像と上記各座標変換対象画像との間の動きベクトルを検出する第2の動きベクトル検出手段、上記各座標変換対象画像毎に、第1の動きベクトル検出手段によって検出された基準画像とその座標変換対象画像との間の動きベクトルの信頼性判定結果を調べ、信頼性判定結果が信頼性有りである場合には、第1の動きベクトル検出手段によって検出された基準画像と当該座標変換対象画像との間の動きベクトルを用いて、当該座標変換対象画像を基準画像に位置合わせするために、当該座標変換対象画像の座標を変換し、信頼性判定結果が信頼性無しである場合には、第2の動きベクトル検出手段によって検出された基準画像と当該座標変換対象画像との間の動きベクトルを用いて、当該座標変換対象画像の座標を変換する座標変換手段、ならびに座標変換手段によって得られる座標変換後の各座標変換対象画像および基準画像からなる複数の画像を合成する画像合成手段を備えていることを特徴とする。
請求項2に記載の発明は、静止画撮影時に、予め導出された露光期間を複数回に分割して露光を行なうことにより、複数の短時間露光画像を取得する短時間露光画像取得手段、撮像装置本体に取り付けられた動き検出センサ、短時間露光画像取得手段によって各短時間露光画像が取得される際に、動き検出センサの出力に基づいて、各分割露光期間毎に、その分割露光期間における手ぶれの大きさを検出するとともに、検出した手ぶれの大きさが所定値未満であるか否かを判定する手ぶれ判定手段、ならびに短時間露光画像取得手段によって取得された各短時間露光画像のうち、手ぶれ判定手段によってその分割露光期間における手ぶれの大きさが所定値未満であると判定された単時間露光画像のみを位置合わせして合成する合成手段を備えていることを特徴とする。
請求項3に記載の発明は、請求項2に記載の発明において、合成手段によって得られた合成画像の輝度を、予め定められた露光分割数と手ぶれ判定手段によって手ぶれの大きさが所定値未満であると判定された短時間露光画像の数とに基づいて、補正する輝度調節手段を備えていることを特徴とする。
請求項4に記載の発明は、請求項2乃至請求項3に記載の発明において、短時間露光画像取得手段によって取得された各短時間露光画像の全てに対する手ぶれの大きさが所定値以上である場合には、各短時間露光画像のうちの1枚の画像の輝度を、予め定められた露光分割数に基づいて補正することにより、静止画撮像画像を得る手段を備えていることを特徴とする。
請求項5に記載の発明は、静止画撮影時に、予め導出された露光期間を複数回に分割して露光を行なうことにより、複数の短時間露光画像を取得し、取得した複数の短時間露光画像を位置合わせして合成する手段を備えた撮像装置において、撮像装置本体に取り付けられた動き検出センサ、各短時間露光画像を取得する際には、動き検出センサの出力に基づいて、各分割露光期間毎に、分割露光開始時点から現時点までの手ぶれの大きさを所定時間毎に検出する手ぶれ検出手段、ならびに分割露光中において、手ぶれ検出手段によって検出された手ぶれの大きさが所定値以上になったときには、当該分割露光期間での露光を中断して、最適分割露光時間より短い露光時間で短時間露光画像を取得し、現在までの分割露光回数が予め定められた露光分割数に達していない場合には、次の分割露光に移行する露光時間制御手段を備えていることを特徴とする撮像装置。
請求項6に記載の発明は、請求項5に記載の発明において、最適分割露光時間より短い露光時間で短時間露光画像を取得した場合には、位置合わせおよび画像合成を行なう前に、当該短時間露光画像の輝度を、最適分割露光時間と実露光時間とに基づいて、補正する輝度調節手段を備えていることを特徴とする。
請求項7に記載の発明は、静止画撮影時に、予め導出された露光期間を複数回に分割して露光を行なうことにより、複数の短時間露光画像を取得する短時間露光画像取得手段、撮像装置本体に取り付けられた動き検出センサ、短時間露光画像取得手段によって各短時間露光画像が取得される際に、動き検出センサの出力に基づいて、各分割露光期間毎に、その分割露光期間における手ぶれの大きさを検出する手ぶれ検出手段、短時間露光画像取得手段によって取得された各短時間露光画像のうち、手ぶれ判定手段によってその分割露光期間における手ぶれの大きさが最も小さかった単時間露光画像を基準画像とし、他の各短時間露光画像を座標変換対象画像として、基準画像と各座標変換対象画像との間の動きベクトルを、両者の画像データに基づいて検出する動きベクトル検出手段、上記各座標変換対象画像毎に、動きベクトル検出手段によって検出された基準画像とその座標変換対象画像との間の動きベクトルに基づいて、当該座標変換対象画像を基準画像に位置合わせするために、当該座標変換対象画像の座標を変換座標する座標変換手段、ならびに座標変換手段によって得られた座標変換後の各座標変換対象画像および基準画像からなる複数の画像を合成する画像合成手段を備えていることを特徴とする。
請求項1または請求項7に記載の発明によれば、分割露光に基づく静止画撮影時において、複数の短時間露光画像の位置合わせ精度の向上化が図れるようになる。
請求項2乃至請求項6に記載の発明によれば、分割露光中の手ぶれによる合成画像の画質の劣化を低減することができるようになる。
以下、図面を参照して、この発明をデジタルカメラに適用した場合の実施例について説明する。
実施例1では、分割露光に基づく静止画撮影モード時において、1番目の短時間露光画像と2番目以降の各短時間露光画像との間の動きベクトルを、角速度センサの出力に基づいて算出するとともに画像処理によって検出する。そして、画像処理によって検出された動きベクトルの信頼性が低い場合には、角速度センサの出力に基づいて算出された動きベクトルを用いて画像の位置合わせを行なう。
〔1〕デジタルカメラの構成についての説明
図1は、デジタルカメラの構成を示している。
撮像素子(CCD)2は、レンズ1を通して入射した光学像を光電変換し、電気信号として出力する。撮像素子2の出力信号(RGB信号)は、CDS回路とAGC回路とを備えたカメラ回路3に送られる。カメラ回路3に入力した撮像素子2の出力信号は、CDS回路で相関二重サンプリング処理された後、AGC回路で最適な振幅にゲイン調整される。カメラ回路3の出力信号は、A/D変換器4によってデジタル映像信号に変換される。デジタル映像信号は、画像メモリ5に書き込まれる。撮影制御回路11は、被写体の明るさを測定する測光回路から得られた明るさの情報に基づいて、撮像素子2の最適な露光時間を設定する。
角速度センサ41、51は、カメラの角速度を検出するために設けられている。一方の角速度センサ41はカメラのパン方向の角速度を、他方の角速度センサ51はカメラのチルト方向の角速度をそれぞれ検出する。各角速度センサ41、51の出力信号は、それぞれアンプ42、52によって増幅された後、A/D変換器43、53によってデジタルデータに変換される。両A/D変換器43、53の出力は、動きベクトル検出部60に送られる。動きベクトル検出部60は、後述するように、手ぶれ補正撮影モード時において、両A/D変換器43、53の出力に基づいて、画像のぶれ量(動きベクトル)を算出する。動きベクトル検出部60は、マイコン10によって制御される。
画像メモリ5は、メモリ制御回路12を介してマイコン10によって制御される。また、撮影制御回路11は、マイコン10によって制御される。マイコン10には、シャッターボタン21および手ぶれ補正ON/OFFスイッチ22が接続されている。手ぶれ補正ON/OFFスイッチ22によって、手ぶれ補正撮影モードと通常撮影モードの設定が行なわれる。以下、通常撮影モードが設定されている場合と手ぶれ補正撮影モードが設定されている場合とにわけて動作を説明する。
〔1−1〕通常撮影モード
通常撮影モードが設定されている場合の動作について説明する。シャッターボタン21が押下げられていない場合には、一定間隔(例えば1/60秒)で撮影された画像データが画像メモリ5に書き込まれた後、NTSCエンコーダ6によりNTSC信号に変換されてモニタ7に表示される。これを、スルー表示と呼ぶことにする。シャッターボタン21が押下げられると、静止画の撮影を開始し、そのタイミングで撮影された画像データが画像メモリ5に書き込まれた後、モニタ7に表示されるとともに、画像圧縮回路8によってJPEG形式にエンコードされ、画像ファイルとしてメモリカード9に保存される。
〔1−2〕手ぶれ補正撮影モード
手ぶれ補正撮影モードが設定されている場合の動作について説明する。手ぶれ補正撮影モードが設定されている場合においては、画像メモリ5に書き込まれた画像データは、手ぶれ補正回路30に転送される。
シャッターボタン21が押下げられていない場合には、一定間隔(例えば1/60秒)で撮影された画像データが画像メモリ5に書き込まれた後、手ぶれ補正回路30に転送される。手ぶれ補正回路30に転送された画像データは、NTSCエンコーダ6を介してモニタ7に送られる。
シャッターボタン21が押下げられた場合には、マイコン10は、被写体の明るさ、設定されているISO感度または絞り値等から最適と考えられる露光時間を導出するとともに、撮影制御回路11に対して、最適と考えられる露光時間を複数回(例えば、8回)に分割して露光(連続撮影)を行なうように指示する。分割露光により得られた複数の短時間露光画像データは、それぞれ画像メモリ5に記憶され、順次、手ぶれ補正回路30に転送される。具体的には、短時間露光画像データは、手ぶれ補正回路30内の動き検出回路31および座標変換回路33に送られる。
動きベクトル検出部60は、分割露光により連続撮影が行なわれている際において、各速度センサ41、51の出力に基づいて、分割露光により得られた複数の短時間露光画像のうち、最初に取得される1番目の短時間露光画像と、2番目以降に取得される各短時間露光画像との間の動きベクトルWB を順次算出する。
動き検出回路31は、分割露光により得られた複数の短時間露光画像のうち、最初に入力される1番目の短時間露光画像と、それ以降に入力される各短時間露光画像との間の動きベクトルWA を、それらの画像データに基づいて順次算出するとともに、算出した動きベクトルの信頼性が高いか低いか(有効か無効か)も順次判定する。
動き検出回路31によって算出された動きベクトルWA が動き検出回路31において有効と判定された場合には、動き検出回路31によって検出された動きベクトルWA が、動きベクトル切替部32を介して座標変換回路33に送られる。一方、動き検出回路31によって算出された動きベクトルWA が動き検出回路31において無効と判定された場合には、動きベクトル検出部60によって算出された動きベクトルWB が、動きベクトル切替部32を介して座標変換回路33に送られる。
座標変換回路33は、2番目以降の短時間露光画像データの座標を、動きベクトル切替部32から送られてきた動きベクトルに基づいて、1番目の短時間露光画像とのずれがなくなるように、座標変換する。画像合成回路34は、座標変換回路33によって座標変換が行なわれた2番目以降の短時間露光画像データを、1番目の短時間露光画像またはそれまでに合成された画像の画素値と加算して、画像メモリ35に格納する。つまり、短時間露光画像間の位置ずれを補正して、加算合成した画像が画像メモリ35に格納される。
予め定められた露光分割数をNとすると、各短時間露光画像は、露光時間が通常露光の1/Nと短いため、手ぶれ量も通常露光の1/Nとなる。そして、短時間露光画像間の位置ずれが補正された後に短時間露光画像が加算合成されるので、合成画像の手ぶれ量は、通常露光の1/Nに低減される。合成画像は、NTSCエンコーダ6を介してモニタ7に表示されるとともに、画像圧縮回路8を介してメモリカード9に保存される。
〔2〕動きベクトル検出部60についての説明
角速度センサ41、51を用いてカメラの分割露光時期と同期させることで、撮影開始と共に所定のサンプリング間隔dt[sec] でパン方向およびチルト方向の角速度を計測し、撮影終了までのデータを得る。サンプリング間隔dt[sec] は、たとえば、1msecである。
図2に示すように、例えば、カメラのパン方向の角速度θ’[deg/sec] は、角速度センサ41によって電圧Vg [mV]に変換された後、アンプ42によって増幅される。アンプ42から出力される電圧Va [mV] はA/D変換器43によってデジタル値DL [step]に変換される。デジタル値として得られたデータを角速度に変換するには、センサ感度S[mV/deg/sec]、アンプ倍率K[ 倍] 、A/D変換係数L[mV/step] を用いる。
角速度センサ41によって得られる電圧値Vg [mV]は、角速度θ’[deg/sec] の値と比例する。このときの比例定数はセンサ感度Sであるので、Vg [mV]は、次式(1)で表される。
Vg =Sθ’…(1)
また、アンプ42は電圧値を増幅するだけなので、増幅された電圧Va [mV] は、次式(2)で表される。
Va =KVg …(2)
アンプ42で増幅された電圧値Va [mV] はA/D変換され、n[step](例えば、−512〜512)のデジタル値DL [step]を使って表現される。A/D変換係数をL[mV/step] とすると、デジタル値DL [step]は、次式(3)で表される。
DL =Va /L…(3)
上記式(1)〜(3)を用いることで、次式(4)に示すように、センサデータDL から角速度を求めることができる。
θ’=(L/KS)DL …(4)
撮影中の角速度データから、撮影された画像上でどれだけのぶれが生じたかを計算することができる。この画像上でのみかけの動きを動きベクトルと呼ぶ。
角速度データの1つのサンプル値から次のサンプル値までにカメラに生じた回転量をθ[deg] とする。この間、角速度一定でカメラが回転すると仮定し、サンプリング周波数をf =1/dt[Hz]とすると、θ[deg] は次式(5)で表される。
θ=θ’/f=(L/KSf)DL …(5)
図3に示すように、r[mm]を焦点距離(35[mm]フィルム換算)とすると、カメラの回転量θ[deg] から画面上の移動量d[mm]が次式(6)により求められる。
d=rtanθ…(6)
ここで求められた移動量d[mm]は、35[mm]フィルム換算時の手ぶれの大きさで、単位は[mm]である。実際に計算処理するときには、画像の大きさをデジタルカメラの画像の大きさの単位[pixel] で考えなければならない。
35[mm]フィルム換算の画像と、デジタルカメラで撮影した[pixel] 単位の画像は縦横比も異なるので、次のように計算を行う。図4に示すように、35[mm]フィルム換算時は画像サイズの横×縦が36[mm]×24[mm]と決まっている。デジタルカメラで撮影した画像の大きさをX[pixel] ×Y[pixel] とし、水平方向(パン方向)のぶれをx[pixel] 、垂直方向(チルト方向)のぶれをy[pixel] とすると、変換式は次式(7)、(8)となる。
x=dx (X/36)=rtanθx (X/36)…(7)
y=dy (Y/24)=rtanθy (Y/24)…(8)
上記式(7)、(8)には、dとθに添字のxとyが使用されているが、添字xは水平方向の値であることを、添字yは垂直方向の値であることを示している。
上記式(1)〜(8)をまとめると、水平方向(パン方向)のぶれx[pixel] 、垂直方向(チルト方向)のぶれy[pixel] は、次式(9)、(10)で表される。
x=rtan{(L/KSf)DLx}X/36…(9)
y=rtan{(L/KSf)DLy}Y/24…(10)
この変換式(9)、(10)を用いることで、デジタル値として得られたカメラの各軸の角速度データから画像のぶれ量(動きベクトル)を求めることができる。
分割露光により得られる複数の短時間露光画像のうち、最初に得られる1番目の短時間露光画像と、2番目以降に得られる各短時間露光画像との間の動きベクトルWB は、1番目の短時間露光画像を撮影するための分割露光の中間時点(または開始時点)から、2番目以降の各短時間露光画像を撮影するための分割露光の中間時点(または開始時点)までに得られた各サンプル点毎の動きベクトル(x,y)を順番に結んでいくことにより得られる。
例えば、1番目の短時間露光画像を撮影するための分割露光の中間時点から、2番目の短時間露光画像を撮影するための分割露光の中間時点までに得られた各サンプル点毎の動きベクトルを、(x0 ,y0 )、(x1 ,y1 )、…、(xM ,yM )とすると、1番目の短時間露光画像データと2番目の短時間露光画像データとの間の動きベクトルWB は、次式(11)で表される。
〔3〕動き検出回路31についての説明
動き検出回路31は、手ぶれ補正撮影モードにおいて、基準画像と現画像との画像間の動きベクトルを検出するとともに、その動きベクトルが有効であるか無効であるかを判定する。つまり、「動きベクトル検出および有効性判定処理」を実行する。なお、基準画像は分割露光された複数の短時間露光画像のうちの1番目の短時間露光画像であり、現画像は2番目以降の短時間露光画像(座標変換対象画像)である。
〔3−1〕動きベクトル検出方法の概要説明
動き検出回路31は、代表点マッチング法に基づいて、動きベクトル等を算出する。図5に示すように、各フレームの映像エリア100内に、複数の動きベクトル検出領域E1 〜E9 が設定されている。各動きベクトル検出領域E1 〜E9 の大きさは同じである。また、各動きベクトル検出領域E1 〜E9 は、図5に示すように、各小領域eに分割されている。この例では、各動きベクトル検出領域E1 〜E9 が48の小領域e分割されている。各小領域eは、例えば、32画素×32画素の大きさである。図6に示すように、各小領域eそれぞれに、複数のサンプリング点Sと、1つの代表点Rとが設定されている。
現画像における小領域e内の各サンプリング点Sの映像信号レベル(輝度レベル)と、基準画像における対応する小領域e内の代表点Rの映像信号レベル(輝度レベル)との差(各サンプリング点Sにおける相関値)が、各動きベクトル検出領域E1 〜E9 ごとに求められる。
そして、各動きベクトル検出領域E1 〜E9 ごとに、動きベクトル検出領域内の全ての小領域e間において、代表点Rに対する偏位が同じサンプリング点どうしの相関値が累積加算される。したがって、各動きベクトル検出領域E1 〜E9 ごとに、1つの小領域e内のサンプリング点Sの数に応じた数の累積相関値が求められる。
そして、各動きベクトル検出領域E1 〜E9 内において、累積相関値が最小となる点(累積相関値の最小位置Pmin)の偏位、すなわち相関性が最も高い偏位が、当該動きベクトル検出領域E1 〜E9 の動きベクトルMとして抽出される。
この実施例では、各動きベクトル検出領域E1 〜E9 毎に、累積相関値の最小位置Pminよび累積相関値の最小値Vminが求められるとともに、各動きベクトル検出領域E1 〜E9 毎に、累積相関値の平均値Vaveが求められる。また、この実施例では、各動きベクトル検出領域E1 〜E9 毎に、累積相関値がVmin+α(αは例えば2に設定される)以下となる位置の個数(累積相関値が最小値に近い値となる位置の個数)Nminが求められる。
〔3−2〕動きベクトルの有効性判定方法の概要説明
各動きベクトル検出領域E1 〜E9 毎に、その領域で検出される動きベクトルの有効性を判定し、その判定結果に基づいて、全体動きベクトルの有効性を判定する。
まず、各動きベクトル検出領域E1 〜E9 毎の動きベクトルの有効性を、次のようにして判定する。つまり、動きベクトル検出領域内の画像のコントラストが低い場合には、当該動きベクトル検出領域の動きベクトルを無効とする。動きベクトル検出領域内の画像のコントラストが高い場合でも、動きベクトル検出領域内に手ぶれ以外の動く物体等が存在するなど複数の動きが存在する場合には、当該動きベクトル検出領域の動きベクトルを無効とする。動きベクトル検出領域内に複数の動きが存在しない場合でも、動きベクトル検出領域内に同じような模様が存在している場合には、当該動きベクトル検出領域の動きベクトルを無効とする。
そして、有効領域(有効と判定された動きベクトル検出領域)の数が0の場合には、全体動きベクトルを無効とする。有効領域(有効と判定された動きベクトル検出領域)の数が1以上である場合には、有効領域の動きベクトルを用いて、全体動きベクトルを算出する。ただし、有効領域数が1以上である場合でも、各有効領域の動きベクトルに類似性が無い場合には、全体動きベクトルを無効とする。
〔3−3〕動き検出回路31によって実行される「動きベクトル検出および有効性判定処理」の手順についての説明
図7および図8は、動き検出回路31によって実行される「動きベクトル検出および有効性判定処理」の手順を示している。
kは、動きベクトル検出領域E1 〜E9 を示す変数であり、1〜Kの値をとる。この例では、K=9である。また、Fkは、kで示される動きベクトル検出領域において検出される動きベクトルが有効であるか無効であるかを示すフラグであり、有効であれば1となり、無効であれば0となる。Fwは、全体動きベクトルが有効であるか無効であるかを示すフラグであり、有効であれば1となり、無効であれば0となる。
まず、k=1を設定する(ステップS101)。kに対応する動きベクトル検出領域に対してステップS102〜S112の処理を行なう。
つまり、上述した代表点マッチング法に基づいて、当該動きベクトル検出領域に対する累積相関値を算出する(ステップS102)。上述したように、累積相関値は、1つの小領域e内のサンプリング点Sの数に応じた数だけ得られる。そして、累積相関値の最小位置Pmin、累積相関値の最小値Vmin、累積相関値の平均値Vaveおよび累積相関値が最小値に近い値となる位置の個数Nminが求められる(ステップS103〜S106)。
次に、当該動きベクトル検出領域内の画像のコントラストが低いか否かを判定するために、累積相関値の平均値Vaveが閾値TH1より小さいか否かを判別する(ステップS107)。
Vave<TH1である場合には、コントラストが低いと判別する。これは、コントラストが低い場合には、輝度差が小さいので、累積相関値の平均値Vaveが小さくなるからである。閾値TH1は実験により決定される。
コントラストが低い場合には、正確な動きベクトルを検出できないので、Vave<TH1である場合には、有効領域フラグFkを0にする(ステップS112)。そして、kを1だけインクリメントする(ステップS113)。k>Kであるか否かを判別する(ステップS114)。k≦Kであれば、ステップS102に戻る。k>Kであれば、ステップS115に移行する。
上記ステップS107において、Vave≧TH1と判別した場合には、当該動きベクトル検出領域内に複数の動きが存在するか否かを判定するために、累積相関値の平均値Vaveを累積相関値の最小値Vminで除算した値(Vave/Vmin)が、閾値TH2より小さいか否かを判別する(ステップS108)。
Vave/Vmin<TH2である場合には、当該動きベクトル検出領域内に複数の動きが存在すると判定する。これは、複数の動きが存在する場合には、完全なマッチング位置がないため、累積相関値の最小値Vminが大きくなるという原理に基づく。また、平均値Vaveを最小値Vminで除算することで、被写体のコントラストに依存しないようにする。閾値TH2は実験により決定される。
複数の動きが存在する場合には、正確な動きベクトルを検出できないので、Vave/Vmin<TH2である場合には、有効領域フラグFkを0にする(ステップS112)。そして、kを1だけインクリメントする(ステップS113)。k>Kであるか否かを判別する(ステップS114)。k≦Kであれば、ステップS102に戻る。k>Kであれば、ステップS115に移行する。
上記ステップS108において、Vave/Vmin≧TH2と判別した場合には、当該動きベクトル検出領域内に同じような模様が存在しているか否かを判定するために、累積相関値が最小値に近い値となる位置の個数Nminが複数あるか否かを判別する(ステップS109)。
累積相関値が最小値に近い値となる位置の個数Nminが複数ある場合(Nmin>1)には、当該動きベクトル検出領域内に同じような模様が存在すると判定する。当該動きベクトル検出領域内に同じような模様が存在する場合には、動きベクトルの信頼性は低いので、Nmin>1である場合には、有効領域フラグFkを0にする(ステップS112)。そして、kを1だけインクリメントする(ステップS113)。k>Kであるか否かを判別する(ステップS114)。k≦Kであれば、ステップS102に戻る。k>Kであれば、ステップS115に移行する。
上記ステップS109において、Nmin=1と判別した場合には、累積相関値の最小位置Pminに基づいて、動きベクトルMkを算出した後(ステップS110)、有効領域フラグFkを1にする(ステップS111)。そして、kを1だけインクリメントする(ステップ113)。k>Kであるか否かを判別する(ステップ114)。k≦Kであれば、ステップS102に戻る。k>Kであれば、ステップS115に移行する。
ステップS115では、有効領域(Fk=1とされた動きベクトル検出領域)の数が0であるか否かを判別する。
有効領域の数が1以上存在する場合には、有効領域(Fk=1とされた動きベクトル検出領域)の動きベクトルMkを抽出する(ステップS116)。抽出した動きベクトルMkの平均ベクトルMaveを算出する(ステップS117)。次に、次式(12)に基づいて、有効領域間での動きベクトルMkのばらつきAを算出する(ステップS118)。
A=〔{|Mk−Mave|/Maveのノルム}の総和〕/有効領域数 …(12)
そして、ばらつきAが閾値TH3より大きいか否かを判別する(ステップS119)。 ばらつきAが閾値TH3以下(A≦TH3)であれば、全体動きベクトル有効フラグFwを1にするとともに(ステップS120)、画像全体の動きベクトル(全体動きベクトル)WA を、ステップS117で算出された平均ベクトルMaveとする(ステップS121)。そして、今回の「動きベクトル検出および有効性判定処理」を終了する。
上記ステップS115において有効領域の数が0であると判別した場合または上記ステップS119においてばらつきAが閾値TH3より大きいと判別した場合には、全体動きベクトル有効フラグFwを0にするとともに(ステップS122)、画像全体の動きベクトル(全体動きベクトル)WA を0とする(ステップS123)。そして、今回の「動きベクトル検出および有効性判定処理」を終了する。
〔4〕デジタルカメラの全体的な動作についての説明
図9は、デジタルカメラの全体的な動作を示している。
まず、静止画の撮影が開始されたか否かを判別する(ステップS301)。つまり、シャッターボタン21が押下げられたか否かを判別する。静止画の撮影が開始されていない場合には、一括露光により画像Iを取得し(ステップS302)、得られた画像Iをスルー表示する(ステップS303)。そして、ステップS301に戻る。
上記ステップS301において、静止画の撮影が開始されたと判別した場合には、手ぶれ補正撮影モードが設定されているか否かを判別する(ステップS304)。手ぶれ補正撮影モードが設定されていない場合には、一括露光により、画像Iを取得する(ステップS305)。取得した画像Iを画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS306)。そして、ステップS301に戻る。
上記ステップS304において、手ぶれ補正撮影モードが設定されていると判別した場合には、分割露光を行なって1番目の短時間露光画像U1 を取得して保存するとともに、動きベクトル検出部60は角速度センサ41、51の出力に基づく動きベクトルx,yの測定を開始する(ステップS306)。次に、分割露光が行なわれた回数を記憶する変数iに2を設定した後(ステップS307)、分割露光を行なってi番目の短時間露光画像Ui を取得する(ステップS308)。
動きベクトル検出回路60は、角速度センサ41、51の出力に基づいて、1番目の短時間露光画像U1 と上記ステップS308で取得したi番目の短時間露光画像Ui との間の動きベクトルWB を算出する(ステップS309)。また、動き検出回路31は、1番目の短時間露光画像U1 を基準画像とし、上記ステップS308で取得したi番目の短時間露光画像Ui を現画像として、図7及び図8で説明した「動きベクトル検出および有効性判定処理」を行なう(ステップS310)。
全体動きベクトルの有効フラグFwが1であるか否かを判別する(ステップS311)。全体動きベクトルの有効フラグFwが1である場合には、上記ステップS308で取得したi番目の短時間露光画像Ui を1番目の短時間露光画像U1 に位置合わせするために、座標変換回路33は、上記ステップS310で検出された全体動きベクトルWA を用いて、短時間露光画像Ui を座標変換する(ステップS312)。そして、画像合成回路34は、座標変換後の短時間露光画像Ui ’を、「既に得られた合成画像」に加算合成する(ステップS314)。
座標変換後の短時間露光画像Ui ’が2番目の短時間露光画像Ui を座標変換した画像である場合には、「既に得られた合成画像」は1番目の短時間露光画像U1 となり、座標変換後の短時間露光画像Ui ’が3番目以降の短時間露光画像Ui を座標変換した画像である場合には、「既に得られた合成画像」は前回のステップS314で得られた合成画像となる。
上記ステップS311において、全体動きベクトルの有効フラグFwが0である場合には、上記ステップS308で取得したi番目の短時間露光画像Ui を1番目の短時間露光画像U1 に位置合わせするために、座標変換回路33は、上記ステップS309で検出された動きベクトルWB を用いて、短時間露光画像Ui を座標変換する(ステップS313)。そして、画像合成回路34は、座標変換後の短時間露光画像Ui ’を、「既に得られた合成画像」に加算合成する(ステップS314)。
ステップS314の処理が終了すると、iを1だけインクリメントする(ステップS315)。そして、i>N(Nは予め定められた露光分割数)か否かを判別する(ステップS316)。
i≦Nであれば、ステップS308に戻り、ステップS308〜S316の処理を行なう。
上記ステップS316でi>Nであると判別された場合には、分割露光がN回行なわれたと判断し、ステップS314で得られた合成画像を画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS317)。そして、ステップS301に戻る。
上記実施例では、「動きベクトル検出および有効性判定処理」において全体動きベクトルWA が無効であると判別された場合には、角速度センサ41、51の出力に基づいて算出された動きベクトルWB を用いて、短時間露光画像Ui を座標変換しているので、位置合わせ精度が高くなる。つまり、位置合わせの失敗による手ぶれ量および被写体のぶれ量の増加を回避できるようになる。
実施例2では、各分割露光時に角速度センサに基づいて、各分割露光期間における手ぶれの大きさを測定し、測定された手ぶれの大きさが所定値以上である場合には、当該分割露光によって得られた短時間露光画像を採用しないようにする。手ぶれの大きさが所定値未満であった短時間露光画像のみを位置合わせして合成した後、不足した輝度を補うために輝度を補正する。
〔1〕デジタルカメラの構成についての説明
図10は、デジタルカメラの構成を示している。
図10において、図1に対応するものには、同じ符号を付してある。実施例2では、
手ぶれ補正撮影モードで静止画撮影を行なう場合の動作が、実施例1と異なっている。
手ぶれ補正撮影モードが設定されている場合においては、画像メモリ5に書き込まれた画像データは、手ぶれ補正回路30Aに転送される。シャッターボタン21が押下げられていない場合には、一定間隔(例えば1/60秒)で撮影された画像データが画像メモリ5に書き込まれた後、手ぶれ補正回路30Aに転送される。手ぶれ補正回路30Aに転送された画像データは、NTSCエンコーダ6を介してモニタ7に送られる。
シャッターボタン21が押下げられた場合には、マイコン10は、撮影制御回路11に対して、最適露光時間を複数回(例えば、8回)に分割して露光(連続撮影)を行なうように指示する。分割露光により得られた複数の短時間露光画像データは、それぞれ画像メモリ5に記憶され、順次、手ぶれ補正回路30Aに転送される。具体的には、短時間露光画像データは、手ぶれ補正回路30A内の動き検出回路31および座標変換回路33に送られる。
手ぶれ検出および判定部70は、角速度センサ41、51の出力に基づいて、各分割露光期間毎に、その露光期間における手ぶれの大きさDを検出し、検出した手ぶれの大きさDが所定値以上か否かを判定して、その判定結果を手ぶれ補正回路30A内の動き検出回路31および座標変換回路33に送る。ある分割露光期間の手ぶれの大きさDは、当該分割露光期間の開始時点から終了時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)(x,y)(上記式(7)、(8)参照)に基づいて算出される。
例えば、ある分割露光期間の開始時点から終了時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)を、(x0 ,y0 )、(x1 ,y1 )、…、(xM ,yM )とすると、当該分割露光期間の手ぶれの大きさDは、次式(13)で表される。
検出した手ぶれの大きさが所定値未満である場合には、当該分割露光によって得られた短時間露光画像データは有効な短時間露光画像データとして扱われ、検出した手ぶれの大きさが所定値以上である場合には、当該分割露光によって得られた短時間露光画像データは無効の短時間露光画像データとして扱われる。そして、後述するように、動き検出回路31、座標変換回路33および画像合成回路34によって、有効な短時間露光画像データのみが合成される。
動き検出回路31は、分割露光されかつ有効(手ぶれの大きさが所定値未満である)と判定された複数の短時間露光画像のうち、最初に有効と判定された短時間露光画像と、それ以降に有効と判定された各短時間露光画像との間の動きベクトルWA を順次算出して、座標変換回路33に送る。動き検出回路31の動作は、実施例1とほぼ同様であるが、全体動きベクトルWA が有効であるか無効であるかの判定を行なう必要はない。したがって、動き検出回路31は、例えば、図7及び図8で示された処理のうち、S120、S122、S124〜S127のステップを省略した処理を実行することにより、全体動きベクトルWA を検出する。
座標変換回路33は、2番目以降に有効と判定された短時間露光画像の座標を、動き検出回路31によって検出された動きベクトルに基づいて、最初に有効と判定された短時間露光画像とのずれがなくなるように、座標変換する。画像合成回路34は、座標変換回路33によって座標変換が行なわれた短時間露光画像を、最初に有効と判定された短時間露光画像またはそれまでに合成された画像の画素値と加算して、画像メモリ35に格納する。つまり、有効と判定された短時間露光画像の位置ずれを補正して、加算合成した画像が画像メモリ35に格納される。
輝度調節回路36は、有効と判定された短時間露光画像の枚数がmである場合には、予め定められた露光分割数をN(この例ではN=8)として、画像合成回路34によって得られた合成画像の輝度をN/m倍する。輝度調節回路36によって輝度が調節された合成画像は、NTSCエンコーダ6を介してモニタ7に表示されるとともに、画像圧縮回路8を介してメモリカード9に保存される。
〔2〕デジタルカメラの全体的な動作についての説明
図11は、デジタルカメラの全体的な動作を示している。
まず、静止画の撮影が開始されたか否かを判別する(ステップS401)。つまり、シャッターボタン21が押下げられたか否かを判別する。静止画の撮影が開始されていない場合には、一括露光により画像Iを取得し(ステップS402)、得られた画像Iをスルー表示する(ステップS403)。そして、ステップS401に戻る。
上記ステップS401において、静止画の撮影が開始されたと判別した場合には、手ぶれ補正撮影モードが設定されているか否かを判別する(ステップS404)。手ぶれ補正撮影モードが設定されていない場合には、一括露光により、画像Iを取得する(ステップS405)。取得した画像Iを画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS406)。そして、ステップS401に戻る。
上記ステップS404において、手ぶれ補正撮影モードが設定されていると判別した場合には、有効と判定された短時間露光画像の枚数を記憶するための変数mを1に設定するとともに(ステップS407)、分割露光が行なわれた回数を記憶するための変数iを1に設定した後(ステップS408)、分割露光を行なって短時間露光画像Ui を取得して保存する(ステップS409)。手ぶれ検出および判定部70は、角速度センサ41、51の出力に基づいて当該分割露光期間での手ぶれの大きさを検出するとともに手ぶれの大きさが所定値未満であるか否かを判定する(ステップS410)。
手ぶれの大きさが所定値以上であると判定(無効判定)した場合には、i=N(Nは露光分割数)であるか否かを判別する(ステップS411)。i=Nでなければ、iを1だけインクリメントする(ステップS412)。そして、ステップS409に戻り、次の分割露光を行なう。
上記ステップS410において、手ぶれの大きさが所定値未満であると判定(有効判定)した場合には、i=Nであるか否かを判別する(ステップS413)。i=Nでなければ、ステップS409によって得られた短時間露光画像Ui をBase画像として設定した後(ステップS414)、iを1だけインクリメントする(ステップS415)。そして、分割露光を行なって短時間露光画像Ui を取得して保存する(ステップS416)。手ぶれ検出および判定部70は、角速度センサ41、51の出力に基づいて当該分割露光期間での手ぶれの大きさを検出するとともに手ぶれの大きさが所定値未満であるか否かを判定する(ステップS417)。
ステップS417において、手ぶれの大きさが所定値未満であると判定(有効判定)した場合には、動き検出回路31は、Base画像とステップS416で取得した短時間露光画像Ui との間の動きベクトルWA を検出する(ステップS418)。次に、座標変換回路33は、上記ステップS416で取得した短時間露光画像Ui をBase画像に位置合わせするために、上記ステップS418で検出した動きベクトルWA を用いて、短時間露光画像Ui を座標変換する(ステップS419)。そして、画像合成回路34は、座標変換後の短時間露光画像Ui ’を、「既に得られた合成画像」に加算合成する(ステップS420)。
座標変換後の短時間露光画像Ui ’がBase画像の次に有効と判定された短時間露光画像(2番目に有効と判定された短時間露光画像)Ui を座標変換した画像である場合には、「既に得られた合成画像」はBase画像となり、座標変換後の短時間露光画像Ui ’が3番目以降に有効と判定された短時間露光画像Ui である場合には、「既に得られた合成画像」は前回のステップS420で得られた合成画像となる。
ステップS420の処理が終了すると、mを1だけインクリメントする(ステップS421)。この後、iを1だけインクリメントする(ステップS422)。そして、i>Nか否かを判別する(ステップS423)。i≦Nであれば、ステップS416に戻り、ステップS416以降の処理を再度実行する。
上記ステップS417において、手ぶれの大きさが所定値以上であると判定(無効判定)した場合には、今回の分割露光で取得した短時間露光画像Ui を合成対象画像から除外するために、ステップS422に移行し、iを1だけインクリメントする。そして、i>Nか否かを判別する(ステップS423)。i≦Nであれば、ステップS416に戻り、ステップS416以降の処理を再度実行する。
上記ステップS423でi>Nであると判別された場合には、分割露光がN回行なわれたと判断し、ステップS420で得られた合成画像の輝度を輝度調節回路36によって、N/m倍する(ステップS425)。そして、輝度調節が行なわれた合成画像を、画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS426)。そして、ステップS401に戻る。
上記ステップS411または上記ステップS413においてi=Nと判定された場合には、つまり、N回分の分割露光で取得した短時間露光画像の全てにおいて手ぶれの大きさが所定値以上と判別された場合または最終回以外の分割露光で取得した短時間露光画像の全てにおいて手ぶれの大きさが所定値以上と判別された場合には、最終回の分割露光で取得した短時間露光画像を合成画像とした後(ステップS424)、ステップS425に進み、合成画像(最終の短時間露光画像)の輝度をN/m倍する。この場合は、m=1である。そして、輝度調節が行なわれた最終の短時間露光画像を、画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS426)。そして、ステップS401に戻る。
上記実施例では、手ぶれ補正モードで静止画撮影を行なった場合には、N回分の分割露光で取得した短時間露光画像のうち、手ぶれの大きさが所定値未満と判別された短時間露光画像のみが合成された後、輝度調節が行なわれることにより、撮影画像が得られるので、手ぶれによる合成画像の画質の劣化を低減できるようになる。
実施例3では、各分割露光中において、角速度センサに基づいて所定時間間隔で当該分割露光の開始時点から現在までの手ぶれを測定し、測定された手ぶれが所定値以上となったときには、当該分割露光を中断して、次の分割露光に移行する。露光が途中で停止された短時間露光画像については、その画像の実露光時間と最適分割露光時間とに基づいて、当該短時間露光画像の輝度を調節する。具体的には、当該短時間露光画像の輝度を(最適分割露光時間/実露光時間)倍する。露光が途中で中断されなかった短時間露光画像と露光が途中で中断されかつ輝度調節が行なわれた短時間露光画像とからなる複数の画像を合成する。
〔1〕デジタルカメラの構成についての説明
図12は、デジタルカメラの構成を示している。
図12において、図1に対応するものには、同じ符号を付してある。実施例3では、手ぶれ補正撮影モードで静止画撮影を行なう場合の動作が、実施例1と異なっている。
手ぶれ補正撮影モードが設定されている場合においては、画像メモリ5に書き込まれた画像データは、手ぶれ補正回路30Bに転送される。シャッターボタン21が押下げられていない場合には、一定間隔(例えば1/60秒)で撮影された画像データが画像メモリ5に書き込まれた後、手ぶれ補正回路30Bに転送される。手ぶれ補正回路30Bに転送された画像データは、NTSCエンコーダ6を介してモニタ7に送られる。
シャッターボタン21が押下げられた場合には、マイコン10は、撮影制御回路11に対して、最適露光時間を複数回(例えば、8回)に分割して露光(連続撮影)を行なうように指示する。分割露光により得られた複数の短時間露光画像データは、それぞれ画像メモリ5に記憶され、順次、手ぶれ補正回路30Bに転送される。具体的には、短時間露光画像データは、手ぶれ補正回路30B内の輝度調節回路37に送られる。
手ぶれ検出および判定部80は、角速度センサ41、51の出力に基づいて、各分割露光期間において、その分割露光開始時点から現時点までの手ぶれの大きさDを所定時間毎に検出し、検出した手ぶれの大きさDが所定値以上か否かを判定して、その判定結果をマイコン10に送る。マイコン10は、分割露光の途中において、手ぶれの大きさDが所定値以上であるという判定結果を受け取ると、当該分割露光を中止して、次の分割露光を開始させる。
ある分割露光期間における露光開始時点から現時点までの手ぶれの大きさDは、当該分割露光期間の開始時点から現時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)(x,y)(上記式(7)、(8)参照)に基づいて算出される。
例えば、ある分割露光期間の開始時点から現時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)を、(x0 ,y0 )、(x1 ,y1 )、…、(xM ,yM )とすると、当該分割露光期間の手ぶれの大きさDは、次式(14)で表される。
露光が途中で中断されずに、最適分割露光時間に等しい露光時間で撮影された短時間露光画像は、輝度調節回路37をスルーして、動き検出回路31および座標変換回路33に送られる。一方、露光が途中で中断されたことにより、最適分割露光時間より短い露光時間で撮影された短時間露光画像については、輝度調節回路37により、その輝度が調節される。具体的には、当該短時間露光画像の実露光時間に対する最適分割露光時間の比をγとすると、当該短時間露光画像の輝度がγ倍される。このγは、マイコン10から輝度調節回路37に与えられる。輝度調節回路37によって輝度調節が行なわれた画像は、動き検出回路31および座標変換回路33に送られる。
動き検出回路31は、分割露光された複数の短時間露光画像のうち、最初に入力された1番目の短時間露光画像と、2番目以降に入力される各短時間露光画像との間の動きベクトルWA を順次算出する。動き検出回路31の動作は、実施例1とほぼ同様であるが、全体動きベクトルWA が有効であるか無効であるかの判定を行なう必要はない。したがって、動き検出回路31は、例えば、図7及び図8で示された処理のうち、S120、S122、S124〜S127のステップを省略した処理を実行することにより、全体動きベクトルWA を検出する。
座標変換回路33は、2番目以降の短時間露光画像データの座標を、動き検出回路31によって検出された動きベクトルWA に基づいて、1番目の短時間露光画像とのずれがなくなるように、座標変換する。画像合成回路34は、座標変換回路33によって座標変換が行なわれた2番目以降の短時間露光画像データを、1番目の短時間露光画像またはそれまでに合成された画像の画素値と加算して、画像メモリ35に格納する。つまり、短時間露光画像間の位置ずれを補正して、加算合成した画像が画像メモリ35に格納される。画像メモリ35に格納された合成画像は、NTSCエンコーダ6を介してモニタ7に表示されるとともに、画像圧縮回路8を介してメモリカード9に保存される。
〔2〕デジタルカメラの全体的な動作についての説明
図13は、デジタルカメラの全体的な動作を示している。
まず、静止画の撮影が開始されたか否かを判別する(ステップS501)。つまり、シャッターボタン21が押下げられたか否かを判別する。静止画の撮影が開始されていない場合には、一括露光により画像Iを取得し(ステップS502)、得られた画像Iをスルー表示する(ステップS503)。そして、ステップS501に戻る。
上記ステップS501において、静止画の撮影が開始されたと判別した場合には、手ぶれ補正撮影モードが設定されているか否かを判別する(ステップS504)。手ぶれ補正撮影モードが設定されていない場合には、一括露光により、画像Iを取得する(ステップS505)。取得した画像Iを画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS506)。そして、ステップS501に戻る。
上記ステップS504において、手ぶれ補正撮影モードが設定されていると判別した場合には、1番目の短時間露光画像U1 を取得するために、分割露光を行なう(ステップS507)。この分割露光中において、手ぶれ検出および判定部80は、角速度センサ41、51の出力に基づいて当該分割露光の開始時点から現在までの手ぶれの大きさを検出するとともに手ぶれの大きさが所定値以上であるか否かを判定する(ステップS508)。
手ぶれの大きさが所定値未満であると判定した場合には、当該分割露光の開始時点からの経過時間が最適分割露光時間に達したかを判別する(ステップS509)。最適分割露光時間に達してない場合には、ステップS507に戻り、露光を継続したまま、再度ステップ508以降の処理を行なう。
上記ステップS509において、当該分割露光の開始時点からの経過時間が最適分割露光時間に達した場合には、当該分割露光における露光を終了する(ステップS510)。そして、ステップS513に移行する。この場合には、得られた短時間露光画像U1 は、輝度調節回路37をスルーして、動き検出回路31および座標変換回路33に送られる。
上記ステップS508において、手ぶれの大きさが所定値以上であると判定した場合には、当該分割露光における露光を中断させる(ステップS511)。この場合には、露光時間が最適分割露光時間より短くなる。得られた短時間露光画像U1 は、輝度調節回路37によって輝度が調節された後(ステップS512)、ステップS513に移行する。輝度調節回路37によって輝度が調節された短時間露光画像U1 は、動き検出回路31および座標変換回路33に送られる。
ステップS513では、分割露光が行なわれた回数を記憶する変数iに2を設定する。そして、i番目の短時間露光画像Ui を取得するために、分割露光を行なう(ステップS514)。この分割露光中においても、手ぶれ検出および判定部80は、角速度センサ41、51の出力に基づいて当該分割露光の開始時点から現在までの手ぶれの大きさを検出するとともに手ぶれの大きさが所定値以上であるか否かを判定する(ステップS515)。
手ぶれの大きさが所定値未満であると判定した場合には、当該分割露光の開始時点からの経過時間が最適分割露光時間に達したかを判別する(ステップS516)。最適分割露光時間に達してない場合には、ステップS514に戻り、露光を継続したまま、再度ステップ515以降の処理を行なう。
上記ステップS516において、当該分割露光の開始時点からの経過時間が最適分割露光時間に達した場合には、当該分割露光における露光を終了する(ステップS517)。そして、ステップS520に移行する。この場合には、得られた短時間露光画像Ui は、輝度調節回路37をスルーして、動き検出回路31および座標変換回路33に送られる。
上記ステップS515において、手ぶれの大きさが所定値以上であると判定した場合には、当該分割露光における露光を中断させる(ステップS518)。この場合には、露光時間が最適分割露光時間より短くなる。得られた短時間露光画像Ui は、輝度調節回路37によって輝度が調節された後(ステップS519)、ステップS520に移行する。輝度調節回路37によって輝度が調節された短時間露光画像Ui は、動き検出回路31および座標変換回路33に送られる。
ステップS520では、動き検出回路32により、1番目の短時間露光画像U1 とi番目の短時間露光画像Ui との間の動きベクトルWA を検出する。次に、座標変換回路33は、i番目の短時間露光画像Ui を1番目の短時間露光画像U1 に位置合わせするために、上記ステップS520で検出した動きベクトルWA を用いて、短時間露光画像Ui を座標変換する(ステップS521)。そして、画像合成回路34は、座標変換後の短時間露光画像Ui ’を、「既に得られた合成画像」に加算合成する(ステップS522)。
座標変換後の短時間露光画像Ui ’が2番目の短時間露光画像Ui を座標変換した画像である場合には、「既に得られた合成画像」は1番目の短時間露光画像U1 となり、座標変換後の短時間露光画像Ui ’が3番目以降の短時間露光画像Ui を座標変換した画像である場合には、「既に得られた合成画像」は前回のステップS522で得られた合成画像となる。
ステップS522の処理が終了すると、iを1だけインクリメントする(ステップS523)。そして、i>N(Nは露光分割数)か否かを判別する(ステップS524)。
i≦Nであれば、ステップS514に戻り、ステップS514〜S524の処理を行なう。
上記ステップS524でi>Nであると判別された場合には、分割露光がN回行なわれたと判断し、ステップS522で得られた合成画像を画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS525)。そして、ステップS501に戻る。
上記実施例では、分割露光中において、分割露光開始時点からの手ぶれの大きさが所定値以上になると、当該分割露光を中断し、次の分割露光に移行しているので、分割露光内での手ぶれが軽減され、手ぶれ補正効果が向上する。
実施例4では、各分割露光時に角速度センサの出力に基づいて、各分割露光期間における手ぶれを測定する。全ての分割露光終了後に、露光期間内の手ぶれが最も小さかった短時間露光画像を基準画像(Base画像) とする。そして、基準画像(Base画像) と、他の短時間露光画像との間の動きベクトルを検出し、検出した動きベクトルに基づいて、位置合わせを行なって、全ての短時間露光画像を合成する。
分割露光期間内の手ぶれの大きさが最も小さかった短時間露光画像を基準画像としているのは、次のような理由による。分割露光期間内の手ぶれが大きい短時間露光画像を位置合わせの基準となるべき基準画像とすると、基準画像の特徴点がぼけるため、位置合わせの精度が低下する。そこで、実施例4では、分割露光期間内の手ぶれが最も小さかった短時間露光画像を基準画像とすることにより、位置合わせ精度を高め、手ぶれ補正効果の向上化を図っている。
〔1〕デジタルカメラの構成についての説明
図14は、デジタルカメラの構成を示している。
図14において、図1に対応するものには、同じ符号を付してある。実施例4では、
手ぶれ補正撮影モードで静止画撮影を行なう場合の動作が、実施例1と異なっている。
手ぶれ補正撮影モードが設定されている場合においては、画像メモリ5に書き込まれた画像データは、手ぶれ補正回路30Cに転送される。シャッターボタン21が押下げられていない場合には、一定間隔(例えば1/60秒)で撮影された画像データが画像メモリ5に書き込まれた後、手ぶれ補正回路30Cに転送される。手ぶれ補正回路30Cに転送された画像データは、NTSCエンコーダ6を介してモニタ7に送られる。
シャッターボタン21が押下げられた場合には、マイコン10は、撮影制御回路11に対して、最適露光時間を複数回(例えば、8回)に分割して露光(連続撮影)を行なうように指示する。分割露光により得られた複数の短時間露光画像データは、それぞれ画像メモリ5に記憶される。
手ぶれ検出部90は、角速度センサ41、51の出力に基づいて、各分割露光期間毎にその分割露光期間における手ぶれの大きさDを検出し、検出した手ぶれDをマイコン10に送る。ある分割露光期間の手ぶれの大きさDは、当該分割露光期間の開始時点から終了時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)(x,y)(上記式(7)、(8)参照)に基づいて算出される。
例えば、ある分割露光期間の開始時点から終了時点までに得られた各サンプル点毎の画像のぶれ量(動きベクトル)を、(x0 ,y0 )、(x1 ,y1 )、…、(xM ,yM )とすると、当該分割露光期間の手ぶれの大きさDは、次式(15)で表される。
分割露光による連続撮影が終了すると、マイコン10は、分割露光によって得られた複数枚(この例ではN枚)の短時間露光画像のうち、露光期間内の手ぶれの大きさDが最も小さかった画像を基準画像(Base画像) として設定する。そして、まず、Base画像を、手ぶれ補正回路30C内の動き検出回路31および座標変換回路33に送る。そして、この後、他の短時間露光画像を順次、動き検出回路31および座標変換回路33に送る。
動き検出回路31は、Base画像と、他の短時間露光画像との間の動きベクトルWA を順次算出して、座標変換回路33に送る。動き検出回路31の動作は、実施例1とほぼ同様であるが、全体動きベクトルWA が有効であるか無効であるかの判定を行なう必要はない。したがって、動き検出回路31は、例えば、図7及び図8で示された処理のうち、S120、S122、S124〜S127のステップを省略した処理を実行することにより、全体動きベクトルWA を検出する。
座標変換回路33は、マイコン10によって画像メモリ5から2番目以降に送られてきた短時間露光画像データの座標を、動き検出回路31によって検出された動きベクトルに基づいて、マイコン10によって画像メモリ5から最初に送られてきたBase画像とのずれがなくなるように、座標変換する。画像合成回路34は、座標変換回路33によって座標変換が行なわれた短時間露光画像データを、Base画像またはそれまでに合成された画像の画素値と加算して、画像メモリ35に格納する。つまり、短時間露光画像データの位置ずれを補正して、加算合成した画像が画像メモリ35に格納される。画像メモリ35に格納された合成画像は、NTSCエンコーダ6を介してモニタ7に表示されるとともに、画像圧縮回路8を介してメモリカード9に保存される。
〔2〕デジタルカメラの全体的な動作についての説明
図15は、デジタルカメラの全体的な動作を示している。
まず、静止画の撮影が開始されたか否かを判別する(ステップS601)。つまり、シャッターボタン21が押下げられたか否かを判別する。静止画の撮影が開始されていない場合には、一括露光により画像Iを取得し(ステップS602)、得られた画像Iをスルー表示する(ステップS603)。そして、ステップS601に戻る。
上記ステップS601において、静止画の撮影が開始されたと判別した場合には、手ぶれ補正撮影モードが設定されているか否かを判別する(ステップS604)。手ぶれ補正撮影モードが設定されていない場合には、一括露光により、画像Iを取得する(ステップS605)。取得した画像Iを画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS606)。そして、ステップS601に戻る。
上記ステップS604において、手ぶれ補正撮影モードが設定されていると判別した場合には、分割露光が行なわれた回数を記憶するための変数iを1に設定した後(ステップS607)、分割露光を行なって短時間露光画像Ui を取得して保存する(ステップS608)。また、手ぶれ検出部90は、角速度センサ41、51の出力に基づいて当該分割露光期間での手ぶれの大きさDi を算出して、マイコン10に送る(ステップS609)。
次に、i=N(Nは露光分割数)であるか否かを判別する(ステップS610)。i=Nでなければ、iを1だけインクリメントする(ステップS611)。そして、ステップS608に戻る。
上記ステップS610において、i=Nと判別された場合には、つまり、N回の分割露光により、1番目からN番目までの短時間露光画像データおよび手ぶれの大きさが取得された場合には、手ぶれの最小値を記憶するための変数Dminに無限大を表す値を設定する(ステップS612)。
そして、マイコン10は、変数iを1に設定した後(ステップS613)、i番目の短時間露光画像Ui を撮影した時の手ぶれの大きさDi がDminより小さいか否かを判別する(ステップS614)。Di <Dminであれば、Dmin=Di に設定するとともに、Base画像=Ui に設定した後(ステップS615)、ステップS616に移行する。上記ステップS614において、Di ≧Dminであれば、ステップS616に移行する。
ステップS616では、i=Nであるか否かを判別する。i=Nでなければ、iを1だけインクリメントする(ステップS617)。そして、ステップS614に戻る。<
上記ステップS614〜S616の処理がN回行なわれると、露光期間内の手ぶれが最も小さかった短時間露光画像がBase画像として設定されることになる。また、ステップS616において、i=Nと判別されるので、マイコン10は、まず、Base画像を動き検出回路31および座標変換回路33に転送した後、他の短時間露光画像を、順次、動き検出回路31および座標変換回路33に転送する。
以下においては、画像メモリ5から動き検出回路31および座標変換回路33に転送されるN枚の短時間露光画像を、転送される順番に、Q1 、Q2 、…、QN と呼ぶことにする。
変数nを2に設定する(ステップS618)。動き検出回路31は、Base画像と短時間露光画像Qn との間の動きベクトルWA を検出する(ステップS619)。次に、座標変換回路33は、短時間露光画像Qn をBase画像に位置合わせするために、上記ステップS619で検出した動きベクトルWA を用いて、短時間露光画像Qn を座標変換する(ステップS620)。そして、画像合成回路34は、座標変換後の短時間露光画像Qn ’を、「既に得られた合成画像」に加算合成する(ステップS621)。
座標変換後の短時間露光画像Qn ’が2番目に転送されてきた短時間露光画像Qn (Base画像の次に転送されてきた短時間露光画像Qn )を座標変換した画像である場合には、「既に得られた合成画像」はBase画像となり、座標変換後の短時間露光画像Qn ’が3番目以降に転送されてきた短時間露光画像Qn を座標変換した画像である場合には、「既に得られた合成画像」は前回のステップS621で得られた合成画像となる。
ステップS621の処理が終了すると、nを1だけインクリメントする(ステップS622)。そして、n>Nか否かを判別する(ステップS623)。n≦Nであれば、ステップS619に戻り、ステップS619以降の処理を再度実行する。
上記ステップS623において、n>Nであると判別された場合には、ステップS621で得られた合成画像を画像圧縮回路8によって圧縮してメモリカード9に保存するとともに、取得した画像Iをモニタ7に表示する(ステップS624)。そして、ステップS601に戻る。
上記実施例では、動き検出センサとして、角速度センサを用いている。そして、上記実施例1〜実施例4においては、角速度センサとして、ピッチセンサ41と、ヨーセンサ51とが設けられている。実施例2〜実施例4においては、角速度センサとして、ロールセンサのみを設けるようにしてもよい。また、角速度センサとして、ピッチセンサ、ヨーセンサおよびロールセンサの3つのセンサを設けるようにしてもよい。また、動き検出センサとしては、上記角速度センサの他、例えば角加速度センサを用いることもできる。
また、実施例2と実施例3とを組合せることはできないが、それ以外の組合せであれば、実施例1〜実施例4を任意に組み合わせるようにしてもよい。
実施例1のデジタルカメラの構成を示すブロック図である。
角速度センサ41の出力を増幅するアンプ42およびアンプ出力をデジタル値に変換するA/D変換器43を示すブロック図である。
デジタルカメラの回転量θ[ deg]と画面上の移動量d[mm]との関係を示す模式図である。
35[mm]フィルム換算の画像サイズと、デジタルカメラの画像サイズとを示す模式図である。
映像エリア内に設定された複数の動きベクトル検出領域E1 〜E9 を示す模式図である。
動きベクトル検出領域内の小領域eを示す模式図である。
動き検出回路31によって実行される「動きベクトル検出および有効性判定処理」の手順の一部を示すフローチャートである。
動き検出回路31によって実行される「動きベクトル検出および有効性判定処理」の手順の一部を示すフローチャートである。
デジタルカメラの全体的な動作を示すフローチャートである。
実施例2のデジタルカメラの構成を示すブロック図である。
デジタルカメラの全体的な動作を示すフローチャートである。
実施例3のデジタルカメラの構成を示すブロック図である。
デジタルカメラの全体的な動作を示すフローチャートである。
実施例4のデジタルカメラの構成を示すブロック図である。
デジタルカメラの全体的な動作を示すフローチャートである。
従来の完全電子式の手ぶれ補正方法を説明するための模式図である。
符号の説明
2 撮像素子
5 画像メモリ
10 マイコン
11 撮影制御回路
12 メモリ制御回路
21 シャッターボタン
22 手ぶれ補正ON/OFFスイッチ
30、30A、30B、30C 手ぶれ補正回路
31 動き検出回路
32 動きベクトル切替部
33 座標変換回路
34 画像合成回路
35 画像メモリ
36、37 輝度調節回路
41、51 角速度センサ
60 動きベクトル検出部
70、80 手ぶれ検出および判定部
90 手ぶれ検出部