以下、図面を参照しながら本発明の好適な実施の形態について説明する。
<実施例1>
本発明の実施例1は、ユーザーにより指定された基準となる動きブレに基づき、画像の動きブレを制御する。以下、実施例1について説明する。
図1は、本実施例の動きブレ制御技術を撮像装置100に応用した場合の構成例を示すブロック図である。以下、実施例1の構成例について図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は、図2で後述する動きブレ画像生成部200を内蔵し、記録部108に記憶されている画像に対して動きブレを付与した動きブレ画像を生成する。
記録部108は、着脱可能なメモリカード等である。記録部108は、画像処理部107で処理された画像データを、RAM103を介し、記録画像として記録する。また、記録部108に記録している画像データを読み出して、RAM103を介し、画像処理部107に出力する事もできる。表示部109は、LCD等の表示デバイスであり、RAM103に一時的に記憶されている画像や記録部108に記録されている画像の表示、ユーザーからの指示を受け付けるための操作ユーザーインターフェイスの表示等を行う。指示入力部110は、タッチパネルやマウス等であり、ユーザーによる指示を入力する。
以上、撮像装置100の構成と、基本動作について説明したが、撮像装置100の構成は必ずしも図1の構成に限定されない。また、図1の各構成は、必ずしも1つのハードウェアで実現する必要はない。例えば複数のハードウェアが処理を分担・協働して1つの手段として機能してもよいし、また1つのハードウェアがプログラム等に応じて異なる処理を行うことで、複数の手段として機能してもよい。
次に、本実施例の特徴である画像処理部107の動作について、詳細に説明を行う。本実施例では、露光時間が短い複数の撮像画像を用いて動きブレ画像を生成する例について説明する。
まず、画像処理部107に内蔵された、実施例1における動きブレ画像生成部200の構成例について、図2を参照して説明する。実施例1における動きブレ画像生成部200は、記録部108に記録した画像データに対して、動きブレを付与し、動きブレ画像を生成する。
図2は、動きブレ画像生成部200の構成例を示す図である。動きブレ画像生成部200は、動きベクトル算出部201、基準動きベクトル特定部202、動きブレ変換特性算出部203及び動きブレ付与部204を含む。
次に、動きブレ画像生成部200の処理について、図3のフローチャートを参照して説明する。
図3のステップS301において、制御部101は撮像部105が撮像(撮影)動作をする際の露光時間を決定する。そして、撮像部105は決定した露光時間に基づき複数枚画像を撮像し、撮像した複数枚の画像を記録部108に記録する。本実施例では、撮像フレームレートとして毎秒60枚の画像を撮像する例について説明する。つまり、撮像部105は1/60秒毎に1枚の画像を撮像する。露光時間は、指示入力部110を介し、ユーザーが決定しても良いし、制御部101が自動露出制御により決定しても良い。自動露出制御による露光時間の決定方法は、例えば、撮像部105が撮像した撮像画像の所定領域毎の測光値に基づき露光時間を決定する方法が挙げられる。尚、露光時間は、通常の1枚だけの撮影による流し撮り撮影をする場合の画像の適正露光時間よりも短い時間とし、その分絞りを開くことによって動体ブレの少ない複数の画像を撮像するものとする。
撮像画像の例について図4を参照して説明する。図4は、撮影者が走っている犬を追従するように撮像装置を振り、フォローしながら連写撮影をする例を示す。図4(A)はNフレーム目の撮像画像、図4(B)はN+1フレーム目の撮像画像を示す。尚、Nは正の整数である。また、短い露光時間で撮像しているため、撮像画像に大きな動きブレは発生していない。
フォロー撮影時において、撮像装置を走っている犬に追従させて正確に振ることは困難である。特に、被写体の動きが速かったり、動きが予測できなかったりする場合は、非常に困難である。図4の例では、走っている犬に対して撮像装置が振り遅れてしまった場合の撮像画像を示し、N+1フレーム目の撮像画像の犬が、Nフレーム目の撮像画像に比べ左に移動してしまっている。
図3のステップS302において、動きブレ画像生成部200は、ステップS301において撮像(撮影)したNフレーム目の撮像画像の動きブレ画像を生成し表示部109に出力し表示する。ステップS302の動きブレ画像生成処理の詳細については、図5を用いて後述する。ステップS302において表示部109に動きブレ画像を表示した後所定時間以内にユーザーは指示入力部110を介して動きブレの調整(修正)をするための指示をすることができる。具体的には例えば表示画面に表示されている画像内の少なくとも一部領域をマウス等のUI(ユーザーインターフェース)を使ってクリックする。あるいはユーザーが表示画面に表示されている画像内の一部領域をタッチすることによって動きブレ調整(修正)のための指示をすることができる。つまり画面内のどの被写体に対して動きブレ調整をするかを示す指示をすることができる。このとき複数点をタッチしたりマウスでクリックしてもよいし、ドラッグ操作によって領域を囲んでもよい。更に、このときにユーザーは動きブレ量の指示(動きブレ設定)もすることができる。これらを含めて動きブレを調整(修正)するための指示と呼ぶ。また、上記のようにユーザーにより指定された領域を基準領域と呼ぶ。
図3のステップS303において、ステップS302で表示部109に動きブレ画像を表示してから所定時間内に指示入力部110を介して動きブレの調整(修正)をするための指示がなされたか判別する。ステップS303において、動きブレの調整(修正)をするための指示を所定時間以内に受け付けない場合は終了となる。ステップS303において、動きブレの調整(修正)をするための指示を受け付けた場合は、ステップS304に進む。S304において、動きブレ画像生成部200は、受け付けた動きブレに関するユーザー指示に基づき、指定された被写体の動きブレを修正し、動きブレ画像を表示部109に出力し表示させる。ステップS304の動きブレの調整方法については、後述する。ユーザーはステップS304で表示部109に表示された修正後の動きブレ画像を確認し、指示入力部110を介して動きブレの調整が完了したという指示をすることができる。
図3のステップS305において、制御部101は、指示入力部110を介して動きブレの調整(修正)が完了したという指示があったか否か判別する。ステップS305において、動きブレの調整(修正)が完了したという指示を受け付けた場合は終了となる。ステップS305において、動きブレの調整(修正)が完了したという指示を受け付けない場合は、図3のステップS304に戻り、動きブレ調整(修正)を繰り返す。
次に、図3のステップS302における自動動きブレ画像生成の詳細について、図5のフローチャートを参照して説明する。
図5のステップS501において、制御部101が目標動きブレを算出する。目標動きブレとは、露光時間が何秒相当の動きブレを目標とするか示す情報である。この目標動きブレにより、動きブレの長さが変わる。例えば、1/60秒相当の動きブレの長さは1/120秒相当の動きブレの長さの2倍となる。本実施例においては、目標動きブレを1/60秒相当の動きブレとする。
図5のステップS502において、動きベクトル算出部201は、記録部108に記録した複数枚の撮像画像間の動きベクトルを算出し、基準動きベクトル特定部202及び動きブレ付与部204に出力する。ここで、ステップS502の動きベクトルの算出方法について、図6、図7及び図8を参照して説明する。
図6は、動きベクトル算出部201によるステップS502の動きベクトルの算出処理フローの詳細を示すフローチャートである。また、図7は、ブロックマッチング法による動きベクトルの算出方法を説明する図である。尚、本実施例では、動きベクトルの算出手法例として、ブロックマッチング法について説明するが、動きベクトルの算出手法はこれに限ったものではない。例えば、オプティカルフロー手法でも良い。
図6のステップS601において、動きベクトル算出部201は、記録部108に記録した例えば2枚の撮像画像を読み出すことによって取得する。なお、記録部108に一旦記録された複数画像を取得する代わりに、撮像素子から直接複数画像を取得してもよい。そして、Nフレーム目の撮像画像を基準撮像画像に設定し、時間的に後のN+1フレーム目の撮像画像を参照撮像画像に設定する。
図6のステップS602において、図7のように、基準撮像画像701において、N×N画素の基準ブロック702を配置する。
図6のステップS603において、図7のように、参照撮像画像703において、基準撮像画像701の基準ブロック702と同座標704の周囲(N+n)×(N+n)画素を探索範囲705に設定する。
図6のステップS604において、参照撮像画像703の探索範囲705に存在する異なる座標のN×N画素の参照ブロックと基準撮像画像701の基準ブロック702の相関演算を行い、相関値を算出する。相関値は、基準ブロック702及び参照ブロックの画素に対する、画像間差分絶対値和に基づき算出する。つまり、差分絶対値和の値が最も小さい座標が、最も相関値が高い座標となる。尚、相関値の算出方法は、差分絶対値和に限ったものではない。例えば、差分二乗和や正規相互相関値に基づき、相関値を算出しても良い。図7の例では、参照ブロック706が最も相関が高いことを示している。
図6のステップS605において、最も高い相関値を示す参照ブロック座標に基づき動きベクトルを算出する。図7の例では、基準撮像画像701の基準ブロック702の中心座標704から前記参照ブロック706の中心座標の差を動きベクトルとする。
図6のステップS606において、図7の基準ブロック702を移動させながら、ステップS602、ステップS603、ステップS604及びステップS605の処理を繰り返し、基準撮像画像701の全画素の動きベクトルを算出する。尚、全画素の動きベクトルを算出する代わりに、離間した間欠的な所定画素毎に動きベクトルを算出してもよい。
以上のような方法に基づき算出した撮像画像間の動きベクトルの例を図8に示す。図8は、図4(A)Nフレーム目の撮像画像を基準撮像画像に設定し、図4(B)N+1フレーム目の撮像画像を参照撮像画像に設定した場合の動きベクトルを示す図である。図8の矢印が動きベクトルを示し、矢印の長さが動きベクトルの長さ、矢印の方向が動きベクトルの方向を示す。図8の例では画素毎の動きベクトルではなく、間欠的な代表的な動きベクトルのみを簡略的に示している。
図8の例では、撮像装置100を向かって右から左に振り、左に向かって走っている犬を若干振り遅れながらフォロー撮影している。そのため、背景の静止物は右方向の動きベクトルとして検出し、走っている犬についても左方向の動きベクトルが検出されてしまっている。
次に図5に戻り、次のステップS503に進む。S503の段階ではユーザーによる動きブレの修正はまだしないので、基準動きベクトル特定部202はスルーし、動きブレ変換特性算出部203における動作を実行する。すなわち、ステップS501で算出された前記目標動きブレに基づき、ステップS502で算出された前記動きベクトルを動きブレ付与情報に変換するための特性を算出する。動きブレ付与情報とは、水平方向の動きブレ量と垂直方向の動きブレ量から成り、動きブレ付与部204が動きブレを付与する際の最終的な動きブレの方向と動きブレ量(長さ)を決める情報である。この動きブレ変換特性の算出方法について図9を参照して説明する。図9は、動きブレ変換特性を示す図である。尚、動きベクトルは水平方向と垂直方向の動きベクトル成分により決まる2次元の方向と移動量から成るが、本実施例では説明の簡略化のため、動きベクトルの水平方向の成分(移動量)を水平方向の動きブレ量に変換する変換特性を示している。2次元の方向と移動量から成る動きベクトルを用いた動きブレ量変換方法及び変換特性も同様の処理により算出するものとし、説明は省略する。
図9における動きブレ変換特性L901は例えば式(1)で表され、ステップS501で算出された前記目標動きブレが例えば1/60秒相当の場合の動きブレ変換特性である。
水平方向の動きブレ量 = 水平方向の移動量 ・・・式(1)
撮像画像のフレームレートは毎秒60枚であるため、水平方向の移動量は、1/60秒間における移動量となる。動きブレ変換特性L901は、1/60秒間における移動量に相当する動きブレ量を算出している。
また、図9における動きブレ変換特性L902は例えば式(2)で表され、目標動きブレが1/120秒相当の場合の動きブレ変換特性である。
水平方向の動きブレ量 = 1/2 × 水平方向の移動量 ・・・式(2)
動きブレ変換特性L902は、1/60秒間における移動量の半分である1/120秒間における移動量に相当する動きブレ量を算出している。
このように動きブレ変換特性を変えることにより、動きブレ量をコントロールすることが可能となる。
次に図5のステップS504に進み、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そしてステップS505で動きブレ画像を表示部109に出力する。
次に図5のステップS504における動きブレ付与の方法について、図10及び図11を参照して詳しく説明する。図10は動きブレ付与部204によるステップS504の動きブレ付与の処理フローを示すフローチャートであり図11は動きブレ付与部204による動きブレ付与の方法を説明する図である。
図10のステップS1001において、動きブレ付与部204は、動きベクトル算出部201が算出した画素毎の動きベクトルを、動きブレ変換特性算出部203が算出した動きブレ変換特性に基づき変換することにより、画素毎に動きブレ付与情報を算出する。動きブレ付与情報の例を図11に示す。図11においてL1101は、着目画素Aの動きブレ付与情報を示す。また、この例の場合、動きブレ付与情報L1101は、画素Aから画素B及び画素Cを通り、画素Dまで到達する動きブレ付与情報であり、水平方向の動きブレ量が4画素、垂直方向の動きブレ量が4画素として表されている。
図10のステップS1002において、動きブレ付与部204は、後述する加算画像及び加算回数マップを初期化する。加算画像は、画素値0に初期化される。また、加算回数マップは、加算回数0回に初期化される。
図10のステップS1003において、動きブレ付与部204は、動きブレ付与情報に基づき加算画像の画素値(初期値0)と撮像画像の画素値を画素毎に加算する。そして、図10のステップS1004において、動きブレ付与部204は、動きブレ付与情報に基づき加算回数マップの加算回数に1を加算(カウントアップ)する。
画素値の加算方法及び加算回数の加算方法に関して図11を参照して説明する。
動きブレ付与部204は、式(3)に示す通り、加算画像における着目画素Aの加算画素値Aaddpvに撮像画像の着目画素Aの画素値Apvを加算し、加算画素値Aaddpvを更新する。そして、式(4)に示す通り、加算回数マップにおける加算回数Acntに1を加算する。
Aaddpv=Aaddpv+Apv・・・式(3)
Acnt=Acnt+1・・・式(4)
また、動きブレ付与部204は、式(5)に示す通り、加算画像における画素Bの加算画素値Baddpvに撮像画像の着目画素Aの画素値Apvを加算し、加算画素値Baddpvを更新する。そして、式(6)に示す通り、加算回数マップにおける加算回数Bcntに1を加算する。
Baddpv=Baddpv+Apv・・・式(5)
Bcnt=Bcnt+1・・・式(6)
同様に、動きブレ付与部204は、式(7)に示す通り、加算画像における画素Cの加算画素値Caddpvに撮像画像の着目画素Aの画素値Apvを加算し、加算画素値Caddpvを更新する。そして、式(8)に示す通り、加算回数マップにおける加算回数Ccntに1を加算する。
Caddpv=Caddpv+Apv・・・式(7)
Ccnt=Ccnt+1・・・式(8)
最後に、動きブレ付与部204は、式(9)に示す通り、加算画像における画素Dの加算画素値Daddpvに撮像画像の着目画素Aの画素値Apvを加算し、加算画素値Daddpvを更新する。そして、式(10)に示す通り、加算回数マップにおける加算回数Dcntに1を加算する。
Daddpv=Daddpv+Apv・・・式(9)
Dcnt=Dcnt+1・・・式(10)
このように、動きブレ付与情報が通過する画素A、画素B、画素C及び画素Dに対して、着目画素Aの画素値の加算及び加算回数のカウントアップを行う。
図10のステップS1005において、動きブレ付与部204は、ステップS1003及びステップS1004における動きブレ付与情報に基づく画素値の加算及び加算回数のカウントアップを撮像画像の全画素分繰り返し、加算画像と加算回数マップを生成する。
図10のステップS1006において、動きブレ付与部204は、加算画像の加算画素値を加算回数マップの加算回数で画素毎に除算することにより、加算画素値を正規化する。この除算処理により加算した画素値の平均値を算出することができる。
図10のステップS1007において、動きブレ付与部204は、ステップS1006における加算画素値の正規化処理を全画素分繰り返し、動きブレ画像を生成する。
以上、図5のステップS504における動きブレの付与方法について説明した。
次に図5のステップS505において、図5のステップS504で動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。
以上により、図3のステップS302における自動動きブレ画像生成の処理が終了する。
次に、図3のステップS303でユーザーによる動きブレ調整(修正)の指示があった場合のステップS304における動きブレ調整(修正)の方法について、図12のフローチャートを参照して詳しく説明する
図12のステップS1201において、制御部101は、指示入力部110を介し、ユーザーによる動きブレ調整指示としての指定基準領域(すなわち画像の中の動きブレを修正すべき被写体領域)の指示を受け付ける。また、図12のステップS1202において、制御部101は、指示入力部110を介し、ユーザーによる動きブレ調整指示としての指定基準領域における指定動きブレ(すなわち指定された被写体領域に対する動きブレの修正量)の指示を受け付ける。
次に動きブレ調整(修正)指示を受け付ける方法に関して図13を参照して説明する。
図13(A)は動きブレ調整(修正)前画像を示し、図13(B)は動きブレ調整(修正)後画像を示す。図13(A)動きブレ調整(修正)前画像は、図3のステップS302における自動動きブレ画像生成後に表示部109に表示した動きブレ画像である。ユーザーは表示部109に表示された動きブレ画像を確認し、動きブレ画像の調整が必要か否かを判断する(図3のステップS303の前に行われるユーザーによる判断)。ここで、図13(A)動きブレ調整前画像の例では、背景だけではなく、主被写体の走っている犬までブレてしまっている。これは、走っている犬を若干振り遅れながらフォロー撮影しているため、図4のように走っている犬が撮像画像間で移動し、この移動を動きと検出し動きベクトルに基づき自動で動きブレを付与しているためである。
一般的に、流し撮り画像は主被写体がブレずに静止し、背景がブレている画像の方が主被写体のスピード感が際立ち好ましいとされている。本実施例ではユーザーは、図13(A)動きブレ調整前画像のような動きブレ画像を確認したら、タッチパネルによるタッチ操作、又は、マウスによるクリック操作により動きブレ画像の調整(修正)を指示することができる。具体的には、図13(A)L1301に示すように、ユーザーは動きブレの調整(修正)をしたい領域をタッチ操作又はクリック操作する。その際に、本実施例ではタッチ操作のやり方やクリック操作のやり方に基づき、指定基準領域の動きブレを小さく調整するのか、大きく調整するのかを指定することもできる。
例えば、ユーザーがシングルタッチ又はシングルクリックで指定した場合、制御部101は、指定基準領域の指定動きブレとして、動きブレを所定量小さくする(あるいはゼロにする)指示として受け付ける。また、ユーザーがダブルタッチ又はダブルクリックで指定した場合、制御部101は、指定基準領域の指定動きブレとして、動きブレを所定量大きくする指示として受け付ける。
例えば、図13(A)動きブレ調整前画像において、犬の動きブレを小さく調整する場合、ユーザーは走っている犬をシングルクリックで指定する。すると、制御部101が指定した座標を指定基準領域として受け付けると共に、指定基準領域の指定動きブレとして動きブレを所定量小さくする(あるいはゼロにする)指示として受け付ける。尚、後述の説明では、ユーザーが走っている犬をシングルクリックして指定し、犬の動きブレを所定量小さく調整する例について説明する。
尚、制御部101が受け付ける指定基準領域は、ユーザーが指定した一点の座標だけではなく、例えばユーザーが走っている犬全体を丸く囲う指定を行った場合、制御部101は、その囲われた領域を指定基準領域として受け付けても良い。
以上のようにして図12のステップS1202の指定動きブレの受付が終了したら、次に図12のステップS502において、動きベクトル算出部201は、記録部108に記録された複数の撮像画像間の動きベクトルを再び算出する。具体的には、動きベクトル算出部201は、図4(A)Nフレーム目の撮像画像と図4(B)N+1フレーム目の撮像画像を取得し、図8のような動きベクトルを算出する。尚、図12のステップS502における動きベクトルの算出方法は、図5のステップS502と同様の処理により算出するものとし、説明は省略する。また、図3のステップS302の動きブレ画像生成処理の際に算出した動きベクトルを記録部108などに一旦記憶しておき、図12のステップS502において再利用しても良い。
次に図12のステップS1203において、基準動きベクトル特定部202がステップS1201において制御部101が受け付けた指定基準領域と動きベクトル算出部201が算出した動きベクトルに基づき、基準動きベクトルを特定する。具体的には、図8において、指定基準領域(犬)の動きベクトルL801を基準動きベクトルとして特定する。尚、指定基準領域内に複数の動きベクトルが存在する場合は、指定基準領域内の動きベクトルのヒストグラム(頻度分布)を取得し、最も頻度の高い動きベクトルを基準動きベクトルとして自動設定する。
次に図12のステップS1204において、動きブレ変換特性算出部203は、目標動きブレ、基準動きベクトル及び指定動きブレに基づき動きブレ変換特性を算出する。動きブレ変換特性の算出方法について図14を参照して説明する。図14の動きブレ変換特性は、制御部101が1/60秒相当の動きブレを目標動きブレとして算出した場合の動きブレ変換特性の例を示している。尚、動きベクトルは水平方向と垂直方向の動きベクトル成分により決まる2次元の方向と移動量から成るが、本実施例では説明の簡略化のため、動きベクトルの水平方向の移動量を水平方向の動きブレ量に変換する変換特性を示している。2次元の方向と移動量から成る動きベクトルを用いた動きブレ量変換方法及び変換特性も同様の処理により算出するものとし、説明は省略する
図14(A)動きブレ変換特性において、破線のL901が目標動きブレが1/60秒相当の場合の動きブレ変換特性を示す。動きブレ変換特性L901は、図3のステップS302において動きブレ変換特性算出部203が算出した動きブレ変換特性であり、この動きブレ変換特性に基づき生成した動きブレ画像が図13(A)動きブレ調整(修正)前画像である。動きブレ変換特性算出部203は、基準動きベクトル(図8の動きベクトルL801)及び指定動きブレ(例えば動きブレをゼロにする指示)に基づき、動きブレ変換特性L901をオフセットすることにより動きブレ変換特性L1401を算出する。具体的には、図8における基準動きベクトルL801の方向が水平方向左、長さが5画素だとすると、基準動きベクトルに対応する動きブレ量が0になるように、動きブレ変換特性L901を左方向に5画素オフセットし、動きブレ変換特性L1401を算出する。
次に図12のステップS504において、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そして、動きブレ画像を表示部109に出力する。図12のステップS504における動きブレの付与方法は、図5のステップS504と同様の処理により付与するものとし、説明は省略する。
次に図12のステップS505において、図12のステップS504において動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。この動きブレ画像を図13(B)に示す。図13(B)動きブレ調整後画像は、図13(A)動きブレ調整前画像に比べ、犬が静止し、背景の動きブレが大きくなっている。これは、ユーザーが指定した犬を指定基準領域とし、指定基準領域における基準動きベクトルの動きブレ量が0になるような動きブレ変換特性L1401に基づき、画面全体の指定基準領域以外の画像に対しても動きブレを付与したためである。このようにユーザーが指定した指定基準領域の基準動きベクトルと指定動きブレに基づき動きブレ変換特性を変更することにより、好みの動きブレになるようにブレ修正することが可能となる。すなわち前記被写体と背景の動きブレの関係を適宜修正可能となる。なお、指定基準領域以外の画像とは指定基準領域以外のすべての領域の画像であってもよいし、指定基準領域とは異なる一部の領域の画像であってもよい。
以上、図3のステップS304における動きブレ調整(修正)に関して説明した。
次に、図3のステップS304における動きブレ調整(修正)の変形例について説明する。
本変形例では、撮像装置から見て奥行き方向に長い被写体の動きブレを調整する例について説明する。
まず、本変形例における撮影処理(図3のステップS301)に関して図15を参照して説明する。
図15は、撮影者が、走っている車を追従するように撮像装置を振り、フォローしながら連写撮影をしている例を示す。図15(A)はNフレーム目の撮像画像、図15(B)はN+1フレーム目の撮像画像を示す。尚、Nは正の整数である。また、短い露光時間で撮像しているため、撮像画像に大きな動きブレは発生していない。
フォロー撮影時において、撮像装置を走っている車に追従させて振ることは困難である。特に、被写体の動きが速かったり、動きが予測できなかったりする場合は、非常に困難である。図15の例では、走っている車に対して撮像装置が振り遅れてしまった場合の撮像画像を示し、N+1フレーム目の撮像画像の車が、Nフレーム目の撮像画像に比べ左に移動してしまっている。
次に、図3のステップS302における自動動きブレ画像生成について、図15、図16及び図17を参照して説明する。
図15のような撮像画像に基づき、動きベクトル算出部201が算出した動きベクトルを図16に示す。図16は、図15(A)Nフレーム目の撮像画像を基準撮像画像に設定し、図15(B)N+1フレーム目の撮像画像を参照撮像画像に設定した場合の動きベクトルを示す図である。図16の例では画素毎の動きベクトルは示さず、間欠的な代表的な動きベクトルのみに簡略化し示している。
図16の例では、撮像装置を向かって右から左に振り、走っている車を若干振り遅れながらフォロー撮影しているため、背景の静止物については右方向の動きベクトルが検出され、走っている車については左方向の動きベクトルが検出されている。ここで、車のように撮像装置から見て奥行き方向に長い被写体の場合、撮像画像間の移動量は撮像装置から被写体までの距離に応じて変わるため、同じ車だとしても領域毎に移動量が異なる。そのため、図16の例では、車のフロント領域については左方向の動きベクトルが検出されており、車のリア領域については動きベクトルが検出されていない。
図15の撮像画像に対して、図3のステップS302における自動動きブレ画像生成処理により動きブレを付与した動きブレ画像を図17(A)に示す。図17(A)動きブレ調整前画像は、図16に示す動きベクトルと図9におけるL901の動きブレ変換特性に基づき、目標動きブレとして1/60秒相当の動きブレを付与した動きブレ画像である。ここで、図17(A)動きブレ調整前画像の例では、背景だけではなく、主被写体である走っている車のフロント領域がブレてしまっている。
次に、図3のステップS304における動きブレ調整(修正)処理により、図17(A)動きブレ調整前画像における車全体の動きブレを小さくし、背景の動きブレを大きくする方法について図12、図14及び図17を参照して説明する。
まず、図17(A)動きブレ調整前画像において、ブレてしまっている車のフロント領域の動きブレを小さくする方法について説明する。
図12のステップS1201及びステップS1202において、図17(A)動きブレ調整前画像に対し、図17(A)L1701に示すように、ユーザーがブレてしまっている車のフロント領域(フロントバンパー)をシングルクリックにより指定する。その指定に基づき、制御部101は、フロントバンパーを指定基準領域として受け付け、また、シングルクリック操作を動きブレを小さくする(あるいはゼロにする)指定動きブレとして受け付ける。
図12のステップS1203において、基準動きベクトル特定部202は、ステップS1201において制御部101が受け付けた指定基準領域と動きベクトル算出部201が算出する動きベクトルに基づき、基準動きベクトルを特定する。具体的には、図16において、指定基準領域であるフロントパンパーの動きベクトルL1601を基準動きベクトルとして特定する。
図12のステップS1204において、動きブレ変換特性算出部203は、目標動きブレ、基準動きベクトル及び指定動きブレに基づき動きブレ変換特性を算出する。動きブレ変換特性の算出方法について図14を参照して説明する。図14(A)動きブレ変換特性において、破線のL901は目標動きブレが1/60秒相当の場合の動きブレ変換特性を示す。動きブレ変換特性L901は、図3のステップS302において動きブレ変換特性算出部203が算出した動きブレ変換特性であり、この動きブレ変換特性に基づき生成した動きブレ画像が図17(A)動きブレ調整前画像である。動きブレ変換特性算出部203は、基準動きベクトル及び指定動きブレに基づき、動きブレ変換特性L901をオフセットすることにより動きブレ変換特性L1401を算出する。
具体的には、図16における基準動きベクトルの方向が水平方向左、長さが5画素だとすると、基準動きベクトルに対応する動きブレ量が0になるように、動きブレ変換特性L901を左方向に5画素オフセットし、動きブレ変換特性L1401を算出する。尚、必ずしも基準動きベクトルに対応する動きブレ量が0にならなくても良い。例えば、基準動きベクトルと略同一の動きベクトルに対応する動きブレ量が小さくなる動きブレ変換特性(例えば4画素オフセット)でも良い。
図12のステップS504において、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そして動きブレ画像を表示部109に出力する。
図12のステップS505において、図12のステップS504において動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。この動きブレ画像を図17(B)に示す。
図17(B)動きブレ調整後画像は、図17(A)動きブレ調整前画像に比べ、車のフロント領域は静止したが、逆に車のリア領域がブレてしまっている。また、背景の動きブレは大きくなっている。これは、ユーザーが指定した車のフロント領域を指定基準領域とし、指定基準領域における基準動きベクトルの動きブレ量が0になるような動きブレ変換特性L1401に基づき動きブレを付与したためである。このように撮像装置から見て奥行き方向に長い被写体の場合、撮像画像間の移動量は撮像装置から被写体までの距離に応じて変わるため、車のフロント領域は静止したとしても、距離差のあるリア領域はブレてしまう。したがってこの状態では図3のステップS305において調整完了の指示は出せないのでステップS304に戻る。
そこで、次に、図17(B)動きブレ調整後画像において、ブレてしまっている車のリア領域の動きブレも小さくするための方法について図12、図14及び図18を参照して説明する。図18(A)動きブレ調整前画像は、図17(B)動きブレ調整後画像と同様に、図16に示す動きベクトルと図14(A)におけるL1401の動きブレ変換特性に基づき、目標動きブレが1/60秒相当の動きブレを付与した動きブレ画像である。
図12のステップS1201及びステップS1202において、図18(A)動きブレ調整前画像において、図18(A)L1801に示すように、ユーザーはブレてしまっている車のリア領域(給油口)をシングルクリックにより指定する。その指定に基づき、制御部101は、給油口を指定基準領域として受け付け、また、シングルクリック操作を動きブレを小さくする指定動きブレとして受け付ける。
図12のステップS1203において、基準動きベクトル特定部202は、ステップS1201において制御部101が受け付けた指定基準領域と動きベクトル算出部201が算出する動きベクトルに基づき、基準動きベクトルを特定する。具体的には、図16において、指定基準領域である給油口の動きベクトルL1602を基準動きベクトルとして特定する。ここで、基準動きベクトル特定部202は、先に受け付けた指定基準領域であるフロントバンパーの動きベクトルL1601と新たに受け付けた指定基準領域である給油口の動きベクトルL1602の2本の動きベクトルを基準動きベクトルとして特定する。
図12のステップS1204において、動きブレ変換特性算出部203は、目標動きブレ、基準動きベクトル2本及び指定動きブレに基づき動きブレ変換特性を再度算出する。動きブレ変換特性の再算出方法について図14を参照して説明する。図14(B)動きブレ変換特性において、破線のL1401は図14(A)における動きブレ変換特性L1401と同等の動きブレ変換特性を示す。動きブレ変換特性L1401に基づき生成した動きブレ画像が図18(A)動きブレ調整前画像である。
動きブレ変換特性算出部203は、2本の基準動きベクトルに対応する動きブレ量が小さくなるように、動きブレ変換特性L1401における所定移動量範囲の動きブレ量を0にすることにより動きブレ変換特性L1402を算出する。具体的には、図16における基準動きベクトルL1601の方向が水平方向左、長さが5画素であり、基準動きベクトルL1602の長さが0画素だとすると、水平移動量が―5から0の範囲の動きブレ量が0になるように動きブレ変換特性L1402を算出する。
図12のステップS504において、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そして動きブレ画像を表示部109に出力する。
次に図12のステップS505において、図12のステップS504において動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。この動きブレ画像を図18(B)に示す。
図18(B)動きブレ調整後画像は、車のフロント領域及びリア領域が静止し、背景がブレている。これは、ユーザーが指定した車のフロント領域及びリア領域を指定基準領域とし、指定基準領域における基準動きベクトルの動きブレ量が0になるような動きブレ変換特性L1402に基づき動きブレを付与したためである。このように撮像装置から見て奥行き方向に長い被写体の場合、2つの指定基準領域を指定することにより図14(B)のような動きブレ変換特性L1402を算出することによって、距離差のある被写体全体が静止する動きブレ画像を生成することができる。すなわち前記被写体と背景の動きブレの関係を適宜修正可能となる。
次に、図18(B)動きブレ調整後画像などにおいて、更に背景の動きブレを大きくしたい場合の動きブレの修正方法について図12、図14及び図19を参照して説明する。図19(A)動きブレ調整前画像は、図18(B)動きブレ調整後画像と同様のものである。即ち図16に示す動きベクトルと図14(B)におけるL1402の動きブレ変換特性に基づき、目標動きブレが1/60秒相当の動きブレとなるような動きブレを付与した動きブレ画像の例である。しかし以降の変形例は例えば図13(B)のような画像に対しても適用できることは言うまでもない。
例えば図3のS305で調整が完了していない場合S304で更に調整する場合を想定する。図12のステップS1201及びステップS1202において、図19(A)動きブレ調整前画像において、図19(A)L1901に示すように、ユーザーが背景領域(ビル)をもっとブラしたい場合がある。その場合、L1901のタッチまたはマウスクリックをブラしたい動きブレ量分だけドラックすることにより動きブレ量を指定する。その指定に基づき、制御部101は、ドラック開始座標であるビルを指定基準領域として受け付け、また、ドラックの長さを指定動きブレとして受け付ける。
図12のステップS1203において、基準動きベクトル特定部202は、ステップS1201において制御部101が受け付けた指定基準領域と動きベクトル算出部201が算出する動きベクトルに基づき、基準動きベクトルを特定する。具体的には、図16において、指定基準領域であるビルの動きベクトルL1603を基準動きベクトルとして特定する。
図12のステップS1204において、動きブレ変換特性算出部203は、目標動きブレ、基準動きベクトル及び指定動きブレに基づき動きブレ変換特性を算出する。動きブレ変換特性の算出方法について図14を参照して説明する。例えば図19(A)において背景が基準領域として指定された場合、図14(B)の動きブレ変換特性L1402をベースとして変形した図14(C)動きブレ変換特性を用いる。破線のL1402は図14(B)における動きブレ変換特性L1402と同等の動きブレ変換特性を示す。動きブレ変換特性L1402に基づき生成した動きブレ画像が図19(A)動きブレ調整前画像である。
本実施例では動きブレ変換特性算出部203は、図19(A)でL1901に示すように、クリックしドラッグ操作することによって基準動きベクトルを指定する。そして指定された基準動きベクトルによる動きブレ量が指定動きブレになるように、動きブレ変換特性L1402における傾きを変更することにより動きブレ変換特性L1403を算出する。具体的には、図16における基準動きベクトルL1603の方向が水平方向右、長さが10画素であり、図19(A)でL1901に示す指定動きブレが水平方向右25画素だとする。すると水平移動量が右10画素の動きブレ量が25画素になるように動きブレ変換特性L1403を算出する。なお、仮に図13(B)のような画像に対して背景を基準領域として指定し、動きブレ量も指定した場合には図14(A)のL1401をベースにして動きブレ変換特性の傾きを変更すればよい。
図12のステップS504において、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そして動きブレ画像を表示部109に出力する。
図12のステップS505において、図12のステップS504において動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。この動きブレ画像を図19(B)に示す。
図19(B)動きブレ調整後画像においては、図19(B)動きブレ調整前画像に比べ、背景の動きブレが大きくなっている。これは、ユーザーが指定したビルを指定基準領域とし、指定基準領域における基準動きベクトルの動きブレ量がドラックした長さ(指定動きブレ)になるような動きブレ変換特性L1403に基づき動きブレを付与したためである。ユーザーは、このようにドラックの位置と長さ方向を指定することにより、好みの動きブレに調整することが可能となる。すなわち前記被写体と背景の動きブレの関係を適宜修正可能となる。
尚、実施例1においては、動きブレが小さい画像を複数枚撮像し、動きブレを付与することにより、動きブレを制御する例について説明をしたが、動きブレの制御方法はこれに限ったものではない。例えば、動きブレが大きい長秒露光画像を撮像し、動きブレを低減することにより、動きブレを制御しても良い。動きブレを低減する方法については、例えば、ブラインド・デコンボリューション手法といったような公知の技術を用い、説明は省略する。
ちなみに、ブラインド・デコンボリューション手法は、画像における動きブレの特性を解析し、動きブレ特性の逆特性を画像に対してコンボリューションすることにより動きブレを低減する手法である。
尚、実施例1において、指定動きブレとして動きブレ量の指定を受け付ける例について説明したが、指定動きブレとして受け付ける情報はこれに限ったものではない。例えば、指定動きブレとして動きブレ方向の指定を受け付けても良い。この場合、動きブレ変換特性算出部203は、基準動きベクトルに対応する動きブレの方向を指定動きブレの方向に変換する特性を算出する。これにより、動きブレの方向を調整することが可能となる。
<実施例2>
次に実施例2について説明する。実施例2は、動きベクトルの分布状態に応じて決定した基準動きベクトルに基づき画像の動きブレを修正する例である。以下、実施例2について説明する。
実施例2では、実施例1の図2における動きブレ画像生成部200の構成及び動作が実施例1と異なる。尚、実施例1と同じ符号のものは実施例1と同様の動作、処理を行うものであり、説明は省略する。
実施例2の撮像装置100の動作及び処理は、実施例1と同様のため説明は省略する。
次に、実施例2の特徴である動きブレ画像生成部2000の構成例について、図20を参照して説明する。実施例2における動きブレ画像生成部2000は、記録部108に記録した画像データに対して、動きブレを付与し、動きブレ画像を生成する。
図20は、動きブレ画像生成部2000の構成例を示す図である。動きブレ画像生成部2000は、動きベクトル算出部201、基準動きベクトル特定部2001、動きブレ変換特性算出部203及び動きブレ付与部204を有する。尚、実施例2における動きブレ画像生成部2000は、基準動きベクトル特定部2001の動作が実施例1における基準動きベクトル特定部202と異なる。動きベクトル算出部201、動きブレ変換特性算出部203及び動きブレ付与部204については、実施例1と同様の動作、処理を行うものであり、説明は省略する。
次に、動きブレ画像生成部2000の処理について、図21のフローチャートを参照して説明する。
図21のステップS301において、制御部101は撮像部105が撮像する露光時間を決定する。そして、撮像部105は決定した露光時間に基づき複数枚画像を撮像し、記録部108に記録する。本実施例では、撮像フレームレートとして毎秒60枚の画像を撮像する例について説明する。つまり、撮像部105は1/60秒毎に1枚の画像を撮像する。撮像画像は例えば図4のような画像であるとする。
図21のステップS2101において、動きブレ画像生成部2000は、図21のステップS301において撮像したNフレーム目の撮像画像の動きブレを制御し、動きブレ画像を生成して表示部109に出力し表示する。ステップS2101の動きブレ画像生成処理の詳細については、後述する。
図21のステップS303において、動きブレを調整するためのユーザーの指示が動きブレ画像がS2101で表示されてから所定時間内にあったか判別する。図21のステップS303において、動きブレを調整するための指示が前記所定時間内になかった場合は終了となる。図21のステップS303でYesの場合、図21のステップS304に進む。そして動きブレ画像生成部2000は、受け付けた動きブレに関するユーザー指示に基づき、動きブレを調整(修正)し、修正後の動きブレ画像を表示部109に出力し表示する。図21のステップS304の動きブレの調整(修正)方法については、実施例1と同様の処理のため説明を省略する。
ユーザーが図21のステップS304において表示部109に表示された修正後の動きブレ画像を確認して指示入力部110を介し、動きブレの調整完了の指示をした場合には、図21のステップS305において、それを判別する。図21のステップS305において、動きブレの調整が完了したという指示を受け付けた場合は終了となる。図21のステップS305において、動きブレの調整が完了したという指示を受け付けない場合は、図21のステップS304に戻り、動きブレ調整(修正)を繰り返す。
次に、図21のステップS2101における自動で動きブレを付与する処理の詳細について、図22のフローチャートを参照して説明する。
なお、図22において、図5と同じ符番のステップは図5のステップと同様の動作を行う。
図22のステップS501において、制御部101が目標動きブレを算出する。本実施例においては、目標動きブレを1/60秒相当の動きブレとする。
図22のステップS502において、動きベクトル算出部201は、例えば記録部108に記録した複数の撮像画像間の動きベクトルを自動的に算出し、基準動きベクトル特定部2001及び動きブレ付与部204に出力する。算出した動きベクトルの例は図8に示されるようなものである。
図22のステップS2201において、基準動きベクトル特定部2001は、図22のステップS502において算出した動きベクトルに基づき、基準動きベクトルを特定する。基準動きベクトルの特定方法に関して、図23を参照して説明する。図23は、動きベクトルに基づき基準動きベクトルを特定する処理を示すフローチャートである。
図23のステップS2301において、基準動きベクトル特定部2001は、図22のステップS502において動きベクトル算出部201が算出した動きベクトルのヒストグラム(頻度分布)を算出する。具体的には、基準動きベクトル特定部2001は、図8のような動きベクトルに基づき、図24のような動きベクトルのヒストグラムを算出する。尚、動きベクトルは水平方向と垂直方向の動きベクトル成分により決まる2次元の方向と移動量から成るが、本実施例では説明の簡略化のため、水平方向の動きベクトルの移動量のヒストグラムを示している。2次元の方向と移動量から成る動きベクトルを用いた基準動きベクトルの特定方法も同様の処理により算出するものとし、説明は省略する。
図23のステップS2302において、基準動きベクトル特定部2001は、ステップS2301において算出した動きベクトルのヒストグラムに基づき、ヒストグラムの山のグループ分けを行う。ヒストグラムの山のグループ分け方法は、例えば、「大津の閾値処理」(Otsu Method)といったような公知の方法を用いればよく、説明は省略する。図24の例では、グループG2401とグループG2402の2グループに分けている。
図23のステップS2303において、基準動きベクトル特定部2001は、ヒストグラムの山のグループのうち、最も移動量が小さいグループを選択する。図24の例では、グループG2401を選択する。具体的には、各グループ内に移動量又は方向の異なる動きベクトルが属する場合は、各グループ内において最もカウント数が大きい最頻移動量を各グループの代表とし、各グループの代表の最頻移動量が最も小さいグループを選択する。
図23のステップS2304において、基準動きベクトル特定部2001は、ステップS2303において選択したヒストグラムの山のグループに属する動きベクトルに基づき、基準動きベクトルを特定する。選択されたグループ内に移動量又は方向の異なる動きベクトルが属する場合は、選択されたグループ内において最もカウント数が大きい最頻動きベクトルを基準動きベクトルとして特定する。図24の例では、グループG2401における移動量が―5の動きベクトルを基準動きベクトルとして特定する。
以上、図22のステップS2201における基準動きベクトルの特定方法について説明した。
図22に戻りステップS503において、動きブレ変換特性算出部203は、目標動きブレ及び基準動きベクトルに基づき動きブレ変換特性を算出する。具体的には、図12のステップS1204の処理と同様の処理により、基準動きベクトルに対応する動きブレ量が0になるように、図14(A)に示すような動きブレ変換特性L901を左方向に5画素オフセットし、動きブレ変換特性L1401を算出する。
図22のステップS504において、動きブレ付与部204は、動きブレ変換特性算出部203が算出した動きブレ変換特性と動きベクトル算出部201が算出した画素毎の動きベクトルに基づき撮像画像に動きブレを付与する。そして動きブレ画像を表示部109に出力する。
図5のステップS505において、図5のステップS504において動きブレ付与部204が生成した動きブレ画像を表示部109に表示する。
以上、図21のステップS2101における動きブレ画像生成の処理について説明した。
尚、実施例2において、基準動きベクトル特定部2001は、ヒストグラムの山のグループのうち、最も移動量が小さいグループを選択し、基準動きベクトルを特定する例について説明したが、基準動きベクトルの特定方法はこれに限ったものではない。例えば、最も移動量が小さいグループとその次に小さい移動量のグループの2つのグループの移動量の両方を用いて基準動きベクトルを特定しても良い。動きブレ変換特性算出部203は、このように選択した2本の基準動きベクトルに対応する動きブレ量が0になるように動きブレ変換特性を算出する。これにより、移動量が異なる2つの被写体の動きブレを低減することができる。
尚、実施例2において、基準動きベクトル特定部2001は、グループ内に移動量又は方向の異なる複数動きベクトルが属する場合は、その中から1本の基準動きベクトルを特定し、動きブレ変換特性を算出する例について説明した。しかしながら、動きブレ変換特性の算出方法は、これに限ったものではない。例えば、図24におけるグループG2401内の動きベクトル全てを基準動きベクトルとして特定し、全ての基準動きベクトルに対応する動きブレ量が0になるように動きブレ変換特性を算出しても良い。これにより、図16の走っている車のように、同一被写体の中で異なる動きベクトルを持つ被写体(例えば、奥行き方向に長い被写体)の全体を静止させることができる。
尚、実施例2において、基準動きベクトル特定部2001は、動きベクトルのヒストグラムに基づき基準動きベクトルを特定する例について説明したが、基準動きベクトルの特定方法はこれに限ったものではない。例えば、撮像装置100がフォーカス位置を合わせた合焦領域の動きベクトルを基準動きベクトルとして自動的に特定しても良い。
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
例えば実施例では撮像装置に着脱可能な記録部から読み出された複数の画像を取得して、それらの複数の画像を用いて撮像装置内で動きブレ画像を形成したが、上記の記録部は着脱可能なものでなくてもよいし、クラウドなどに設けた外部の記録部でもよい。また、上記のような記録部を撮像措置ではなく外部の情報処理装置に接続して記録部から読み出された画像を用いて情報処理装置内で動きブレ画像を形成してもよい。
また、実施例では複数の画像に基づき動きブレを自動生成して、1枚の画像に対して動きブレを付与しているが1枚の画像だけを用いてブレを付与してもよい。即ち、その1枚の画像に対して例えばユーザーが指定した領域に所定方向または所定量の動きブレを付与するようにしてもよいことは言うまでもない。
また、本発明における制御の一部または全部を上述した実施例の機能を実現するプログラム(ソフトウェア)をネットワーク又は各種記憶媒体を介して撮像装置や情報処理装置に供給するようにしてもよい。そしてその撮像装置や情報処理装置におけるコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行するようにしてもよい。その場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することとなる。