以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
(第1の実施形態)
本発明の第1の実施形態は、ライブビューなどの準備撮影中において、画像から算出した被写体の動き情報と、撮像装置に備えられた角速度センサーを用いて検出した撮像装置本体の動き情報との比較結果に基づいて、動きブレの報知を行う。
図1は、本発明の第1の実施形態に係わる撮像装置100の構成を示すブロック図である。
図1において、制御部101は、例えばCPUであり、撮像装置100が備える各ブロックに対する制御プログラムを後述のROM102より読み出し、後述のRAM103に展開して実行する。これにより、制御部101は、撮像装置100が備える各ブロックの動作を制御する。
ROM102は、電気的に消去・記録可能な不揮発性メモリであり、撮像装置100が備える各ブロックの動作プログラムに加え、各ブロックの動作に必要なパラメータ等を記憶する。
RAM103は、書き換え可能な揮発性メモリであり、制御部101等が実行するプログラムの展開や、撮像装置100が備える各ブロックの動作で生成等されたデータの一時的な記憶等に用いられる。
光学系(撮影レンズ)104は、ズームレンズ、フォーカスレンズを含むレンズ群で構成され、被写体像を後述の撮像部105の撮像面上に結像させる。
撮像部105は、例えばCCDやCMOSセンサー等の撮像素子を備え、光学系104により撮像部105の撮像面上に結像された光学像を光電変換し、得られたアナログ画像信号をA/D変換部106に出力する。
A/D変換部106は、入力されたアナログ画像信号をデジタル画像データに変換する。A/D変換部106から出力されたデジタル画像データは、RAM103に一時的に記憶される。
画像処理部107は、RAM103に記憶されている画像データに対して、ホワイトバランス調整、色補間、ガンマ処理など、様々な画像処理を適用する。また、画像処理部107は、後述の動きブレ報知画像生成部300を備え、RAM103に記憶されている画像に対して、動きブレが容易に確認できる画像プレーンを重畳し、動きブレ報知画像を生成する。
記録部108は、着脱可能なメモリカード等である。記録部108は、画像処理部107で処理された画像データを、RAM103を介し、記録画像として記録する。
表示部109は、LCD等の表示デバイスであり、RAM103に記憶されている画像や記録部108に記録されている画像の表示、ユーザーからの指示を受け付けるための操作ユーザーインターフェイスの表示等を行う。また、表示部109は、準備撮影中に構図合わせ等のために撮像部105が撮像した画像を表示する。指示入力部110は、タッチパネルやマウス等であり、ユーザーによる指示を入力する。
角速度センサー111は、例えばジャイロセンサーなどであって、撮像装置100の移動量や移動方向を表す角速度を周期的に検出し、電気信号に変換して画像処理部107へ出力する。以上、撮像装置100の構成と基本動作について説明した。
次に、撮像装置100の処理について図2のフローチャートを参照して説明する。本フローチャートの各ステップは、制御部101の指示により撮像装置100の各部が実行する。
ユーザーが撮像装置100の電源を入れると、ステップS201において、制御部101はデジタルカメラ100の電源が入れられたことに応じて、光学系104、撮像部105を制御して準備撮影を開始する。準備撮影期間中は、撮像装置100は逐次画像を撮像して逐次取得し、取得した撮影画像は表示部109の表示デバイスに表示される。ユーザーは逐次表示される準備撮影画像を確認しながら構図合わせなどを行うことができる。なお、後述するステップS202、S203、S204、S205及びS206の処理は準備撮影期間中に行われる。
ステップS202において、ユーザーは指示入力部110を用いて本撮影時の露光時間を設定する。なお、本撮影時の露光時間は制御部101が自動で設定してもよい。
ステップS203において、制御部101は、動きブレ報知がON設定かOFF設定かを判断する。動きブレ報知のONかOFFかの設定は、例えば、ユーザーが指示入力部110を用いて設定するものとし、一度設定すれば設定値が保持されるものとする。
ステップS203において動きブレ報知がON設定の場合は、ステップS204へ進み、動きブレ報知がOFF設定の場合は、ステップS206へ進む。そして、ステップS206において、準備撮影画像を表示部109に表示する。
ステップS204において、制御部101は、角速度センサー111において撮像装置100の一定の方向への動き、すなわち、撮影者によるカメラのパンニング動作が検出されたか否かを判定する。パンニング動作が検出された場合には、流し撮りの準備撮影が開始されたと判定し、ステップS205へ進む。そして、ステップS206において、動きブレ報知画像を表示部109に表示する。パンニング動作が検出されない場合には、ステップS206へ進む。そして、ステップS206において、準備撮影画像を表示部109に表示する。
ステップS205において、動きブレ報知画像生成部300が準備撮影画像に対して動きブレ報知プレーンを重畳した動きブレ報知画像を生成する。
ステップS207において、ユーザーは表示部109に表示された画像を見ながらシャッターチャンス時にシャッターボタンを押下する。表示部109に動きブレ報知画像を表示している場合は、ユーザーは、流し撮りの準備撮影中において容易に主被写体のブレの状態(ブレ量)や、カメラの適切なパンニング速度に対する目安を確認することができる。もし、カメラのパンニング速度が、主被写体の移動速度と合致していない場合は、ユーザーはカメラのパンニング速度を調整してからシャッターボタンを押下することにより、流し撮りを適切に行うことができる。
ステップS207においてシャッターボタンが押下されると、撮像装置100は本撮影を行い、本撮影画像を記録部108に記録する。
次に、図3は、画像処理部107が備える動きブレ報知画像生成部300の構成を示す図である。図3において、動きブレ報知画像生成部300は、動きベクトル算出部301、換算動きブレ算出部302、カメラ動きベクトル算出部303、動きベクトル比較部304、動きブレ報知プレーン作成部305、画像重畳部306を備える。
このように構成される動きブレ報知画像生成部300の動作について説明する。図4は、動きブレ報知画像生成部300が動きブレ報知画像を生成する処理を示すフローチャートである。
ステップS401において、動きブレ報知画像生成部300には、撮像装置100が準備撮影中に撮像した準備撮影画像が入力される。準備撮影画像の例を図5(a)に示す。本実施形態では、図5(a)に示すように、右から左に走っている犬501を流し撮りで撮影する例について説明する。この場合、流し撮り時のカメラのパンニング動作も、右から左への動きとなる。
ステップS402において、動きブレ報知画像生成部300の動きベクトル算出部301は、動き情報として準備撮影画像の画像間における動きベクトルを算出する。動きベクトルとは、準備撮影画像の画像間における被写体の水平方向の移動量と垂直方向の移動量をベクトルとして表したものである。動きベクトルの算出方法について、図6及び図7を参照して説明する。
図6は、動きベクトル算出部301による動きベクトルの算出処理を示すフローチャートである。なお、本実施形態では、動きベクトルの算出手法としてブロックマッチング法を例に挙げて説明するが、動きベクトルの算出手法はこの例に限定されず、例えば勾配法でもよい。
ステップS601において、動きベクトル算出部301には、時間的に隣接する2枚の準備撮影画像が入力される。そして、動きベクトル算出部301は、M番目のフレームの準備撮影画像を基準フレームに設定し、M+1番目のフレームの準備撮影画像を参照フレームに設定する。
ステップS602において、動きベクトル算出部301は、図7のように、基準フレーム701において、N×N画素の基準ブロック702を配置する。
ステップS603において、動きベクトル算出部301は、図7のように、参照フレーム703に対し、基準フレーム701の基準ブロック702の中心座標と同じ座標の点704の周囲の(N+n)×(N+n)画素を、探索範囲705として設定する。
ステップS604において、動きベクトル算出部301は、参照フレーム703の探索範囲705内に存在するN×N画素の参照ブロック706を探索範囲705内で移動させながら、基準フレーム701の基準ブロック702との相関演算を行い、相関値を算出する。相関値は、基準ブロック702及び参照ブロック706の画素に対するフレーム間差分絶対値和に基づき算出する。つまり、フレーム間差分絶対値和の値が最も小さい座標が、最も相関値が高い座標となる。なお、相関値の算出方法は、フレーム間差分絶対値和を求める方法に限定されず、例えばフレーム間差分二乗和や正規相互相関値に基づく相関値を算出する方法でもよい。図7の例では、図7に示した参照ブロック706の位置が最も相関が高いことを示しているものとする。
ステップS605において、動きベクトル算出部301は、ステップS604で求めた最も高い相関値を示す参照ブロックの座標に基づき動きベクトルを算出する。図7の例の場合、参照フレーム703の探索範囲705の中で、基準フレーム701の基準ブロック702の中心座標に対応した座標704と、参照ブロック706の中心座標とに基づき動きベクトルが求められる。つまり、座標704から参照ブロック706の中心座標までの座標間距離と方向が動きベクトルとして求められる。
ステップS606において、動きベクトル算出部301は、基準フレーム701の全画素について動きベクトルを算出したか否かを判定する。動きベクトル算出部301は、ステップS606において全画素の動きベクトルを算出していないと判定した場合には、ステップS602に処理を戻す。そして、ステップS602では、動きベクトルが算出されていない画素を中心として前述した基準フレーム701にN×N画素の基準ブロック702が配置される。そして、以下前述同様に、ステップS603からステップS605の処理が行われる。すなわち、動きベクトル算出部301は、図7の基準ブロック702を移動させながら、ステップS602からステップS605までの処理を繰り返して、基準フレーム701の全画素の動きベクトルを算出する。
動きベクトルの例を図5(b)、(c)に示す。図5(b)、(c)では、それぞれ、動きベクトルの方向が(b)右向き、(c)左向きの場合を例にとって図示している。図では、動きベクトルの方向が一定の場合で図示しているが、領域毎に動きベクトルの方向が異なる場合でも構わないことは言うまでもない。
また、本実施形態での流し撮り補助表示においては、主被写体領域での動きブレの状態に着目しているため、背景領域における動きブレの補助表示は不要である。このため、算出した動きベクトルの絶対値が、カメラ動きベクトル算出部303が算出するカメラ本体の動きを表すカメラ動きベクトルの絶対値に比べて小さい領域にのみ、動きブレ報知を行うよう制御する場合を図示している。なお、動きブレ報知を行う対象領域の決定は、既知の方法を用いた主被写体判別を行い、動きベクトルの算出処理や動きブレ報知処理を、主被写体領域に対してのみ行うよう制御してもよい。
ここで、理想通りの流し撮りができている場合、すなわち、主被写体の移動速度とカメラのパンニング速度とが完全に合致している場合には、主被写体である犬501の領域に対する動きベクトルの大きさはゼロとなる。しかし、実際には、被写体の移動速度に対して、カメラのパンニング速度が速すぎたり、遅すぎたりするために、主被写体に対して動きブレが生じてしまう場合がある。
なお、動きベクトル算出部301は、全画素の動きベクトルを算出するのではなく、所定画素毎に動きベクトルを算出してもよい。
以上の処理により、動きベクトル算出部301は、時間的に隣接する準備撮影画像間における動きベクトルを算出する。以上、動きベクトル算出部301が動きベクトルを算出する処理について説明した。
図4の説明に戻って、ステップS403において、換算動きブレ算出部302は、撮影条件(独立した撮影パラメータ)として、図2のステップS202で設定した本撮影の露光時間及び準備撮影における画像間の時間間隔を取得する。
ステップS404において、換算動きブレ算出部302は、ステップS403で取得した本撮影の露光時間及び準備撮影における画像間の時間間隔に基づき、ステップS402で算出した画素毎の動きベクトルを本撮影の動きブレに換算する。
本撮影の動きブレに換算する方法について、図8を参照して説明する。図8は、準備撮影における動きベクトルと、本撮影の動きブレに換算した換算動きブレを示す図である。図8では、撮影条件として、準備撮影の画像間の時間間隔は1/60秒、本撮影の露光時間は1/120秒と1/30秒を例として示している。
換算動きブレ算出部302は、式(1)及び式(2)に示すような換算式に基づき、画素毎の動きベクトルを本撮影の動きブレに換算する。
CONV_GAIN=EXP_TIME/INT_TIME …式(1)
CONV_BLUR=VEC_LEN×CONV_GAIN …式(2)
ここで、式(1)において、CONV_GAINは準備撮影の動きベクトルを本撮影の動きベクトルに換算するための換算ゲインを示し、EXP_TIMEは本撮影の露光時間を示し、INT_TIMEは準備撮影の画像間の時間間隔を示す。また、式(2)において、CONV_BLURは本撮影の換算動きブレを示し、VEC_LENは準備撮影における動きベクトルの長さを示す。
式(1)において、換算ゲインは本撮影の露光時間を準備撮影の画像間の時間間隔で除算することにより算出する。そして、式(2)において、本撮影の換算動きブレは、動きベクトルの長さに換算ゲインを乗算することにより算出する。
具体的には、図8のように準備撮影における動きベクトルの長さが10画素の場合、本撮影の露光時間が1/120秒の換算動きブレは、換算ゲインが1/2倍になるため5画素となる。また、本撮影の露光時間が1/30秒の換算動きブレは、換算ゲインが2倍になるため20画素となる。
図4のステップS405において、カメラ動きベクトル算出部303は、角速度センサー111から、撮像装置100の角速度情報を取得し、その結果を画像上の動き情報に変換して、撮像装置100の動いている方向を表すカメラ動きベクトルを算出する。角速度を画像上の動き情報に変換するための近似変換式を式(3)及び式(4)に示す。
MOV_yawはヨー方向の移動量を示し、MOV_pitchはピッチ方向の移動量を示す。また、fは焦点距離を示し、ω_yawはヨー方向の角速度を示し、ω_pitchはピッチ方向の角速度を示し、fpsは準備撮影のフレームレートを示し、ppは撮像部105の画素ピッチを示す。式(3)及び式(4)に示す変換式では、準備撮影における画像間の時間間隔で撮像装置100が移動した角度と焦点距離に基づき撮像面上の移動量を算出し、画素ピッチで除算することにより画像上の移動量(移動画素数)を算出している。なお、ここで算出した画像上の移動量は、画素毎に異なる移動量ではなく、全画素一様な移動量である。
カメラ動きベクトル算出部303は、ヨー方向の移動量を水平方向の移動量、ピッチ方向の移動量を垂直方向の移動量とみなし、全画素一様のカメラ動きベクトルとして動きベクトル比較部304に出力する。
なお、カメラ動きベクトル算出部303は、背景領域における被写体の動きベクトルに基づいてカメラ動きベクトルを算出するようにしてもよい。すなわち、背景領域の被写体が静止していると見なすと、背景領域において算出された被写体の動きベクトルの始点と終点を逆転させたものが、カメラ動きベクトルに対応する。
図4のステップS406において、動きベクトル比較部304は、換算動きベクトル算出部302が算出した被写体の動きベクトルと、カメラ動きベクトル算出部303が算出したカメラ動きベクトルとの比較を行う。ここでの処理内容について、図5を用いて具体的に説明する。
図5(d)、(e)に示したのは、それぞれ、図5(b)、(c)に対応する動きベクトルの比較の方法を図示したものである。図5(d)、(e)において、502はカメラ動きベクトルを例示しており、503、504は、被写体の動きベクトルを例示している。動きベクトルの始点を揃えて図示した場合のベクトルの成す角をθで表す。なお、撮像装置の動きベクトル502はその大きさを所定の単位に正規化して図示しているものとする。本実施形態では、右から左へ走る犬に追従してカメラをパンニングしているため、カメラ動きベクトルは左向きである。
次に、動きベクトルの比較によって、カメラのパンニング速度に対する判定を行う方法について説明する。
図5(b)では、主被写体である犬501が、図5(a)よりも右側にずれていることで示されている通り、カメラのパンニング速度が、主被写体の移動速度と合致する適切なパンニング速度よりも速い場合に対応している。この場合、図5(d)に示した通り、カメラ動きベクトル502と被写体の動きベクトル503とが反対方向(角度θの絶対値が90度より大きい)となる。
図5(c)では、主被写体である犬501が、図5(a)よりも左側にずれていることで示されている通り、カメラのパンニング速度が、主被写体の移動速度と合致する適切なパンニング速度よりも遅い場合に対応している。この場合、図5(e)に示した通り、カメラ動きベクトル502と被写体の動きベクトル503とが同方向(角度θの絶対値が90度より小さい)となる。
動きベクトル比較部304は、上記の比較処理を、主被写体領域に対応する被写体の動きベクトルに対して順次行い、比較結果(適切なパンニング速度よりも速いか、遅いか)を流し撮りブレ報知プレーン作成部305へ出力する。
図4のステップS407において、動きブレ報知プレーン作成部305は、ステップS406において判定した動きベクトルの比較結果に基づき、動きブレを報知するための画像プレーンを作成する。
図4のステップS408において、画像重畳部306は、準備撮影画像にステップS407において作成した動きブレ報知プレーンを重畳し、動きブレ報知画像を生成する。
ここで、動きブレ報知画像の生成方法について、図9を参照して説明する。図9では、動きブレの報知画像として2つの例を示している。
図9(a)、(b)は、動きブレ枠表示により動きブレを報知する例を示しており、図9(a)、(b)は、それぞれ、図5(b)、(c)に対応している。
ここで、動きブレ枠表示による動きブレ報知画像の生成方法について説明する。動きブレ報知プレーン作成部305は、ステップS406における比較結果に基づいて、各分割領域に含まれる画素のうち、適切なパンニング速度よりも速いことを示す換算動きブレの画素数と、適切なパンニング速度よりも遅いことを示す換算動きブレの画素数とを比較する。動きブレ報知プレーン作成部305は、画素数の多い方の動きブレの状態を、その分割領域内での被写体動きブレの状態として判定し、その結果に基づいて、動きブレ枠901を作成する。すなわち、動きブレ枠は、適切なパンニング速度よりも速いか、遅いかによって表示様式を変える。例えば、図9(a)では、パンニング速度が、適切なパンニング速度よりも速いので、動きブレ枠を実線で表示する。また、図9(b)では、パンニング速度が、適切なパンニング速度よりも遅いので、動きブレ枠を点線で表示する。これらの表示により、ユーザーが現在のパンニング速度が速すぎるか、遅すぎるかを把握することができる。動きブレ報知プレーン作成部305は、動きブレ枠901を動きブレ報知プレーンとして作成し、準備撮影画像に重畳することにより図9(a)、(b)のような動きブレ報知画像を生成する。
図9(c)、(d)は、動きブレが発生したエッジ(輪郭)を強調表示(表示形態)することにより動きブレを報知する例を示しており、図9(c)、(d)は、それぞれ、図5(b)、(c)に対応している。ここで、動きブレエッジの強調表示による動きブレ報知画像の生成方法について説明する。
動きブレ報知プレーン作成部305は、準備撮影画像のエッジ強度を検出する。エッジ強度の算出は、ソーベルフィルタなどの既存の方法を用いるものとし、説明は省略する。そして、動きブレ報知プレーン作成部305は、エッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出する。抽出した画素に対して、図9(c)、(d)の902に示すように動きブレエッジを強調表示するような動きブレ報知プレーンを作成し、準備撮影画像に重畳することにより図9(c)のような動きブレ報知画像を生成する。図9(c)の902の例では、動きブレエッジを太くする例を示している。
加えて、動きブレ報知プレーン作成部305は、ステップS406における比較結果に基づいて、対象画素の動きブレの状態が、適切なパンニング速度よりも速いことを示すか、適切なパンニング速度よりも遅いことを示すかを判定し、その結果に応じてエッジ強調の強調度合いを変える。例えば、図9(c)では、パンニング速度が、適切なパンニング速度よりも速いので、動きブレエッジを実線で太く表示する。また、図9(d)では、パンニング速度が、適切なパンニング速度よりも遅いので、動きブレエッジを点線で太く表示する。
強調表示方法の他の例としては、エッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出し、抽出した画素を着色するような強調表示が挙げられる。この場合、動きベクトルの比較結果に基づいて、パンニング速度が適正値より速いか遅いかで、色を変えて着色するようにすればよい。
以上、動きブレ報知画像生成部300が動きブレ報知画像を生成する処理について説明した。
本実施形態では、動きブレ報知の方法として、動きブレ枠表示、動きブレエッジの強調表示の2つの例について説明したが、動きブレ報知の方法はこれに限られるものではない。例えば、平坦な領域も含め、動きブレが発生している領域を強調表示してもよい。具体的には、動きブレ報知プレーン作成部305は、画素毎の換算動きブレが所定値以上の画素を、動きブレの方向に応じて色を変えて塗るような強調表示を行う。このようにエッジ領域だけではなく、エッジ領域以外の領域も強調表示を行うことにより、被写体全体が強調表示されるため、より動きブレを確認しやすくなる。
また、動きブレ報知の方法として、カメラの動きベクトルの方向と被写体の動きベクトルの方向とが所定の角度以上異なる領域に対しては、動きブレ報知を行わないよう制御してもよい。このようにすることで、走っている人物の胴体と手足のように、領域間で動きの方向の異なる被写体に対して流し撮りを行う際に、撮影者が着目してカメラを追従させている領域のみに動きブレ報知が表示されるようになり、撮影者が着目領域の動きブレを確認しやすくなる。
本実施形態では、動きブレの報知方法として、表示部109に動きブレを報知する表示を行う例について説明したが、動きブレの報知方法はこれに限られるものではない。例えば、音により動きブレを報知してもよい。具体的には、画素毎の換算動きブレのうち、所定値以上の換算動きブレを示す画素数が画面全体に占める割合が所定割合以上の場合に、動きブレ報知音を発生させる。加えて、動きブレの方向の比較結果に基づいて、発生させる報知音を変えるようにする。
(第2の実施形態)
以下、図10を用いて、本発明の第2の実施形態の撮像装置について説明する。第1の実施形態では、被写体の動きベクトルと、カメラ本体の動きベクトルとの方向を比較することによって、動きブレの報知を制御する場合について説明した。これに対し、第2の実施形態では、被写体の動きベクトルの方向に基づいて、動きブレの報知を制御する場合について説明する。なお、第1の実施形態と同じ機能を有する要素には第1の実施形態と同じ符号を付し、説明を省略する。
図10は、第2の実施形態における動きブレ報知画像生成部300の構成を示す図である。動きブレ報知画像生成部300は、動きベクトル算出部301、換算動きブレ算出部302、動きブレ報知プレーン作成部305、画像重畳部306を備える。第1の実施形態における図3に示した構成と比べて、カメラの動き情報を取得するための構成が除かれている点が異なる。
撮像装置100の処理フローは、図2に示した第1の実施形態の場合と同様であるため、説明は省略する。ただし、動きブレ報知画像生成部300が動きブレ報知画像を生成する処理内容が第1の実施形態の場合とは異なるため、その内容について説明する。
図11は、動きブレ報知画像生成部300が動きブレ報知画像を生成する処理のフローチャートである。図11のステップS1101~ステップS1104の各ステップにおける処理は、第1の実施形態での図4のステップS401~ステップS404の各ステップにおける処理内容と同様であるため、説明は省略する。
図11のステップS1105において、動きブレ報知プレーン作成部305は、ステップS1104で算出した動きベクトルの方向に基づいて、動きブレを報知するための画像プレーンを作成する。
ステップS1106において、画像重畳部306は、準備撮影画像にステップS1105において作成した動きブレ報知プレーンを重畳し、動きブレ報知画像を生成する。
ここで、動きブレ報知画像の生成方法について、図12を参照して説明する。図12(a)、(b)は、本実施形態における準備撮影画像と、算出した動きベクトルを例示している。図示した通り、主被写体の部分領域毎に動きベクトルの方向が異なる場合を例にとっている。
図12(c)は、動きブレ枠表示により動きブレを報知する例を示す。ここで、動きブレ枠表示による動きブレ報知画像の生成方法について説明する。ステップS1105において、動きブレ報知プレーン作成部305は、分割領域内の画素毎の換算動きブレのうち、所定値以上の換算動きブレを示す画素数が分割領域全体に占める割合を算出する。その割合が所定割合以上の分割領域に対して、図12(c)に示すような動きブレ枠1201を動きブレ報知プレーンとして作成する。ただし、動きブレ報知プレーン作成部305は、動きブレの方向に応じて、動きブレ枠の表示様式を変える。具体的には、動きブレ報知プレーン作成部305は、分割領域内の画素毎の換算動きブレのうち、所定値以上の換算動きブレに対して、動きブレの方向(動きベクトルの方向)の平均値を算出し、その平均値に基づいて動きブレ報知の表示様式を決定する。例えば、図9(c)では、動きブレ方向が水平方向である場合に動きブレ枠を実線で、それ以外の方向である場合に動きブレ枠を点線で表示している。
図12(d)は、動きブレが発生したエッジを強調表示することにより動きブレを報知する例を示す。ここで、動きブレエッジの強調表示による動きブレ報知画像の生成方法について説明する。ステップS1105において、動きブレ報知プレーン作成部305は、準備撮影画像のエッジ強度を検出する。エッジ強度の算出は、ソーベルフィルタなどの既存の方法を用いるものとし、説明は省略する。そして、動きブレ報知プレーン作成部305は、エッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出する。抽出した画素に対して、図12(d)の1202に示すように動きブレエッジを強調表示するような動きブレ報知プレーンを作成し、準備撮影画像に重畳することにより図12(d)のような動きブレ報知画像を生成する。
ただし、動きブレ報知プレーン作成部305は、対象画素の動きブレの方向に応じて、エッジの強調表示の表示様式を変える。例えば、図12(d)の例では、動きブレ方向が水平方向である場合にエッジの強調表示を実線で、それ以外の方向である場合にエッジの強調表示を点線で表示している。
強調表示方法の他の例としては、エッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出し、抽出した画素を赤色や青色などの強調表示色で塗るような強調表示が挙げられる。この場合においても、動きブレの方向に応じて、強調表示色を変える。例えば、水平方向の動きブレであれば赤色、垂直方向の動きブレであれば青色で着色するように制御する。また、動きベクトルの角度を所定の区間(例えば30度毎)に分割し、分割した区間毎に着色する色を予め設定しておき、動きベクトルの方向に応じて予め設定した色で着色するようにしてもよい。
以上、本実施形態における動きブレ報知画像の生成方法について説明した。このように、動きブレの方向に基づいて、動きブレの報知表示を制御することにより、ユーザーは被写体の動きブレが所望の状態となっているかを簡単に確認することができる。例えば、流し撮りの場合にカメラのパンニング方向とは異なる方向の動きブレが検出された場合には、手振れなどの影響が有ることを確認することができる。また、被写体の部分領域毎に動きブレの方向が異なる場合に、ユーザーの着目領域における動きブレの方向を確認することができる。
(第3の実施形態)
以下、本発明の第3の実施形態について説明する。本実施形態は、準備撮影中において、画像から算出した動き情報を本撮影相当の動きブレに換算し、動きブレの報知を行う。
本実施形態における撮像装置の構成及びその全体動作は、図1、図2に示した第1の実施形態の撮像装置100の構成及び全体動作と同様であるため、説明を省略する。
図13は、画像処理部107が備える動きブレ報知画像生成部1300の構成を示す図である。図13において、動きブレ報知画像生成部1300は、動きベクトル算出部1301、画像動き情報変換部1302、領域分割部1303、第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307、画像重畳部1308を備える。
次に、このように構成される動きブレ報知画像生成部1300の動作について説明する。図14は、動きブレ報知画像生成部1300が動きブレ報知画像を生成する処理を示すフローチャートである。
図14のステップS1401において、動きブレ報知画像生成部1300には、撮像装置100が準備撮影中に撮像した準備撮影画像が入力される。本実施形態では、図15に示すように左に走る走者1501を流し撮りする例について説明する。図15(a)は流し撮りの成功例を示す図である。走者1501にブレは確認できず、背景領域にはカメラワークによるブレが確認できる。図15(b)は走者1501にブレが残ってしまった流し撮りの失敗例を示す図である。また、図15(c)は本撮影よりも短秒露光時間で撮影した撮影準備画像を示す。
ステップS1402において、動きブレ報知画像生成部1300の動きベクトル算出部1301は、動き情報として準備撮影画像の画像間における動きベクトルを算出する。動きベクトルとは、準備撮影画像の画像間における被写体の水平方向の移動量と垂直方向の移動量をベクトルとして表したものである。動きベクトル算出部1301における動きベクトルの算出方法は、図6、図7を用いて前述した第1の実施形態における算出方法と同様であるため、説明を省略する。
ここで、図15(c)のように被写体が移動している場合の動きベクトルの代表例を図15(d)に示す。図15(d)の例では、走っている走者1501は左方向の動きベクトルとして検出され、それ以外の背景はカメラワークによるカメラの動き方向とは逆の右方向の動きベクトルとして検出される。
図14のステップS1403において、画像動き情報変換部1302は、角速度センサー111が検出した角速度情報を画像上の動き情報に変換する。角速度を画像上の動き情報に変換するための近似変換式は、第1の実施形態で前述した式(3)及び式(4)と同じである。
画像動き情報変換部1302は、式(3)及び式(4)により算出されたヨー方向の移動量を水平方向の移動量、ピッチ方向の移動量を垂直方向の移動量とみなし、全画素一様の動きベクトルとして領域分割部1303に出力する。
図14のステップS1404において、動きベクトル算出部1301で算出した画素毎の動きベクトルと、画像動き情報変換部1302で算出した全画素一様の動きベクトルを用いて画像の領域を分割する。
画像分割の方法について図16を参照して説明する。図16は横軸が動きベクトルの絶対値、縦軸が頻度を示しており、動きベクトル算出部1301で算出した画素毎の動きベクトルの絶対値毎の頻度を示すヒストグラムである。画像動き情報変換部1302で算出した全画素一様の動きベクトルの絶対値(画像動きベクトル絶対値)から所定の値WIDTHだけ差し引いた値を領域分割閾値とする。領域分割閾値以下の動きベクトル絶対値を有する画素を第1領域、領域分割閾値以上の動きベクトル絶対値を有する画素を第2領域として、それぞれの動きベクトルを第1領域換算動きブレ算出部1304と第2領域換算動きブレ算出部1305に出力する。
ここで、所定の値WIDTHは撮影者が定めた固定値でもよいし、画像動きベクトル絶対値の周囲のヒストグラムの分布に基づいて設定してもよい。例えば、第2の領域の動きベクトル絶対値の平均値が画像動きベクトル絶対値になるようなWIDTHの設定をしてもよい。また、図16の横軸を動きベクトルの絶対値としたが、ある方向のみに着目したい場合、横軸をある方向の単位ベクトルと動きベクトルの内積値としてもよい。例えば水平左向きの方向(-1,0)のみに注目したい場合、動きベクトル算出部1301で求めた各画素の動きベクトル(x,y)と(-1,0)の内積値と、画像動き情報変換部1302で算出した全画素一様の動きベクトル(x’,y’)と(-1,0)の内積値を用いてもよい。
図14のステップS1405において、第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305は、撮影条件として、図2のステップS202で設定した本撮影の露光時間及び準備撮影における画像間の時間間隔を取得する。
ステップS1406において、第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305は、ステップS1403で取得した本撮影の露光時間及び準備撮影における画像間の時間間隔に基づき、ステップS1402で算出した画素毎の動きベクトルを本撮影の動きブレに換算する。本撮影の動きブレに換算する方法は、第1の実施形態において、図8を用いて算出した方法と同様である。つまり、前述した式(1)、式(2)を用いて、CONV_BLURを算出する。
ステップS1407において、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、ステップS1404において算出した画素毎の換算動きブレに基づき、動きブレを報知するための画像プレーンを作成する。
ステップS1408において、画像重畳部1308は、準備撮影画像にステップS1407において作成した動きブレ報知プレーンを重畳し、動きブレ報知画像を生成する。
ここで、動きブレ報知画像の生成方法について、図17を参照して説明する。図17は、動きブレ報知画像として3つの例を示している。準備撮影中に動きブレ報知画像を表示部109に表示することにより、ユーザーは動きブレを容易に確認することができる。さらに、ユーザーは領域分割部1303で分割した領域それぞれに報知画像を生成するか、どちらか一方にのみ報知画像を生成するかを選ぶことができる。それぞれに報知画像を生成する場合、報知画像の色や大きさや向きを変えて区別することにより、ユーザーは異なる動きをする領域毎にブレの程度を容易に確認することができる。
図17(a)は、アイコン表示により動きブレを報知する例を示す。ここで、アイコン表示による動きブレ報知画像の生成方法について説明する。ステップS1408において、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、画素毎の換算動きブレのうちそれぞれ異なる所定の範囲内の換算動きブレを示す画素数が画面全体に占める割合を算出する。その割合がそれぞれ所定割合以上の場合に、図17(a)に示すような動きブレアイコン1001を第1領域動きブレ報知プレーンとして作成し、動きブレアイコン1002を第2領域動きブレ報知プレーンとして作成する。そして、準備撮影画像に重畳することにより図17(a)のような動きブレ報知画像を生成する。
図17(b)は、動きブレ枠表示により動きブレを報知する例を示す。ここで、動きブレ枠表示による動きブレ報知画像の生成方法について説明する。ステップS1408において、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、画素毎の換算動きブレのうちそれぞれ異なる所定の範囲内の換算動きブレを示す画素数が画面全体に占める割合を算出する。その割合がそれぞれ所定割合以上の分割領域に対して、図17(b)に示すような動きブレ枠1003を第1領域動きブレ報知プレーンとして作成し、動きブレ枠1004を動き第2領域ブレ報知プレーンとして作成する。そして、準備撮影画像に重畳することにより図17(b)のような動きブレ報知画像を生成する。
図17(c)は、動きブレが発生したエッジを強調表示することにより動きブレを報知する例を示す。ここで、動きブレエッジの強調表示による動きブレ報知画像の生成方法について説明する。ステップS1408において、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、準備撮影画像のそれぞれの領域においてエッジ強度を検出する。エッジ強度の算出は、ソーベルフィルタなどの既存の方法を用いるものとし、説明は省略する。そして、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、それぞれのエッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出する。抽出した画素に対して、図17(c)の1005に示すような第1領域動きブレエッジ強調線、1006に示すような第2領域動きブレエッジ強調線を、それぞれ第1領域ブレ報知プレーン、第2領域ブレ報知プレーンとして作成する。この第1領域ブレ報知プレーン、第2領域ブレ報知プレーンを準備撮影画像に重畳することにより図17(c)のような動きブレ報知画像を生成する。図17(c)の例では、動きブレエッジの色の濃さを変える例を示している。強調表示する方法の他の例としては、第1領域と第2領域のそれぞれにおいて、それぞれエッジ強度が所定値以上、且つ、換算動きブレが所定値以上の画素を抽出し、抽出した画素をそれぞれ赤と青に塗るような強調表示や、太さを変える強調表示などが挙げられる。
以上、動きブレ報知画像生成部300が動きブレ報知画像を生成する処理について説明した。
本実施形態では、換算動きブレが所定値以上の場合に動きブレを報知する例について説明したが、換算動きブレが所定値以下の場合に報知してもよい。これにより、動きブレを動感として表現したい長秒露光撮影の場合に、動きブレの不足を準備撮影期間中に確認しやすくなる。
本実施形態では、動きブレ報知の方法として、動きブレアイコン表示、動きブレ枠表示、動きブレエッジの強調表示の3つの例について説明したが、動きブレ報知の方法はこれに限られるものではない。例えば、平坦な領域も含め、動きブレが発生している領域を強調表示してもよい。具体的には、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307は、画素毎の換算動きブレが所定値以上の画素をそれぞれ赤と青に塗るような強調表示を行う。このようにエッジ領域だけではなく、エッジ領域以外の領域も強調表示を行うことにより、被写体全体が強調表示されるため、より動きブレを確認しやすくなる。
本実施形態では、動きブレの報知方法として、表示部109に動きブレを報知する表示を行う例について説明したが、動きブレの報知方法としてはこれに限られるものではない。例えば、音により動きブレを報知してもよい。具体的には、画素毎の換算動きブレのうち、所定値以上の換算動きブレを示す画素数が画面全体に占める割合が所定割合以上の場合に、動きブレ報知音を発生させる。
(第4の実施形態)
本発明の第4の実施形態は、準備撮影中において、撮像装置の動き情報ではなく、撮影中のズーム操作による焦点距離の変化(焦点距離検出)を本撮影相当の動きブレに換算し、動きブレを報知する領域を分割する。
なお、第1乃至第3の実施形態と同じ符号の要素は第1乃至第3の実施形態と同様の動作、処理を行うものとして、説明は省略する。
図18は、第4の実施形態における撮像装置の構成を示すブロック図である。図18において、撮像装置1100は、第1の実施形態の撮像装置100と画像処理部1101の構成が異なる。画像処理部1101以外の構成及び動作は撮像装置100と同様であるものとし、説明は省略する。
図19は、本実施形態における画像処理部1101が備える動きブレ報知画像生成部1200の構成を示す図である。動きブレ報知画像生成部1200は、動きベクトル算出部1301、画像動き情報推定部1201、領域分割部1303、第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307、画像重畳部1308を備える。画像動き情報変換部1201以外の動作及び処理は第3の実施形態と同様であるため説明は省略する。
次に、動きブレ報知画像生成部1200が動きブレ報知画像を生成する処理について、図20のフローチャートを参照して説明する。図20のフローチャートは、ステップS2001のみが、第3の実施形態の図14のフローチャートと異なる。
図20のステップS2001において、画像動き情報推定部1201は、各画素の焦点距離の変化から、ズーム動作による画像上の動き情報を推定する。各画素の焦点距離の変化から画像上の動き情報を推定するための近似変換式を式(5)に示す。
ここで、MOV_f(x,y)は画像中の座標(x,y)における像高方向の変化を示す。また、f_preは準備撮影画像の露光開始時の焦点距離を示し、f_postは準備撮影画像の露光終了時の焦点距離を示す。Hight(x,y)は画像中の座標(x,y)におけるピクセル単位の像高値を示す。式(5)に示す変換式では、準備撮影における画像間の時間間隔で移動した焦点距離の変化率に基づき撮像面上の像高方向の移動量を算出している。画像動き情報推定部1201は、これを各画素の推定動きベクトルとして領域分割部1202に出力する。
領域分割部1202では画像動き情報推定部1201で推定した画素毎の像高方向の動きベクトルと動きベクトル算出部1301で算出した画素毎の動きベクトルを比較し、類似度の高い画素と類似度の低い画素で領域を分割する。例えば、画像動き情報推定部1201で推定した動きベクトルをV1、動きベクトル算出部1301で算出した動きベクトルをV2としたとき、二つのベクトルの内積が閾値未満である領域を第1の領域、閾値以上である領域を第2の領域として領域分割し、それぞれの動きベクトルV1,V2を第1領域換算動きブレ算出部1304と第2領域換算動きブレ算出部1305に出力する。その後の第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307、画像重畳部1308の動作は第3の実施形態と同様であるため、説明は省略する。
以上、動きブレ報知画像生成部1200が動きブレ報知画像を生成する処理について説明した。
このようにして撮影中のズーム操作によるブレの領域と、それとは異なる動きをする被写体の領域を撮影者が容易に区別することができる。
(第5の実施形態)
本発明の第5の実施形態では、準備撮影中において、撮像装置と被写体の距離に応じて動きブレを報知する領域を分割する。
図21は、第5の実施形態における撮像装置1400の構成を示すブロック図である。図21において、撮像装置1400は、第1の実施形態の撮像装置100と測距部1401、主被写体検出部1402を有する点と、画像処理部1403の構成が異なる点が異なる。測距部1401、主被写体検出部1402、画像処理部1403以外の構成及び動作は撮像装置100と同様であるものとし、説明は省略する。
測距部1401は、撮影時の被写体までの距離情報を取得し距離マップを生成する。距離マップとは、撮影した画像の画素単位での被写体までの距離情報を示す二次元情報である。測距方法は既存の方法を用いるものとし、説明は省略する。
主被写体検出1402は、撮像した画像中から特定の被写体、例えば人物の顔といった被写体の座標を検出する。被写体検出は既存の方法を用いるとし、説明は省略する。
図22は、第5の実施形態における画像処理部1403が備える動きブレ報知画像生成部1500の構成を示す図である。動きブレ報知画像生成部1500は、動きベクトル算出部1301、領域分割部1501、第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307、画像重畳部1308を備える。領域分割部1501以外の動作及び処理は第3の実施形態と同様であるため、説明は省略する。
次に、動きブレ報知画像生成部1500が動きブレ報知画像を生成する処理について、図23のフローチャートを参照して説明する。図23のフローチャートは、ステップS2301,S2302のみが、第3の実施形態の図14のフローチャートと異なる。
図23のステップS2301において、撮像装置1400の測距部1401で生成された距離マップと主被写体検出部1402で検出された主被写体座標が、領域分割部1501に入力される。
次に、ステップS2302において、領域分割部1501は距離マップを参照し各画素における撮像装置1400から被写体までの距離値と、主被写体座標の距離値を取得する。各画素の距離値と、主被写体座標の距離値の差を算出し、距離値の差が所定の値よりも小さい画素を第1の領域とし、距離値の差が所定の値以上の画素を第2の領域として領域を分割する。そして、それぞれの領域の動きベクトルを第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305に出力する。その後の第1領域換算動きブレ算出部1304、第2領域換算動きブレ算出部1305、第1領域動きブレ報知プレーン作成部1306、第2領域動きブレ報知プレーン作成部1307、画像重畳部1308の動作は第3の実施形態と同様であるため、説明は省略する。
以上、動きブレ報知画像生成部1500が動きブレ報知画像を生成する処理について説明した。
このようにして主被写体の領域とそうでない被写体の領域を、撮影者が容易に区別しながら動きブレの状態を確認することができる。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
(他の実施形態)
また本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現できる。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現できる。