(57)【特許請求の範囲】
【請求項１】
撮像装置本体の動きを示す第１の動き検出情報を出力する第１の出力手段と、
前記撮像装置によって撮影された複数の画像に基づいて、被写体の動きを示す第２の動き検出情報を出力する第２の出力手段と、
前記第１の動き検出情報に基づいて、前記第２の動き検出情報が示す前記被写体の動きに係る移動量を補正する補正手段と、
前記補正手段により補正された移動量に基づいて、主被写体の動きベクトルを算出する算出手段と、を備える
ことを特徴とする画像処理装置。
【請求項２】
前記補正手段は、複数のフレームの画像の前記被写体の動きに係る移動量を、各々のフレームに対応する前記第１の動き検出情報に基づいて補正する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記算出手段は、前記複数のフレームの画像の、前記補正後の前記被写体の動きに係る移動量の度数を加算し、前記加算により得られる度数分布に基づいて、前記主被写体の動きベクトルを算出する
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記算出手段は、前記移動量の加算により得られる度数分布と、前記第１の動き検出情報が示す撮像装置本体の動きとに基づいて、前記主被写体の動きに係る移動量を抽出して、前記主被写体の動きベクトルを算出する
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記算出手段は、前記第１の動き検出情報が示す撮像装置本体の動きに係る移動量を背景の移動量とし、前記加算後の度数分布に現れるピークのうち、前記背景の移動量に対応するピークとは異なるピークに対応する移動量を前記主被写体の動きに係る移動量として抽出する
ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記算出手段は、
前記複数のフレームのうち、最新のフレームに対応する前記移動量の度数分布から前記主被写体の移動量を検出できるかを判定し、
前記最新のフレームに対応する前記移動量の度数分布から前記主被写体の移動量を検出できない場合に、移動量の加算後の度数分布から前記主被写体の移動量を抽出できるまで、前記最新のフレームの画像に対応する移動量に過去のフレームに対応する前記補正後の移動量を順次加算する
ことを特徴とする請求項４または請求項５に記載の画像処理装置。
【請求項７】
前記第１の出力手段は、前記第１の動き検出情報として角速度を出力するジャイロセンサである
ことを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記第２の出力手段は、前記複数の撮影された画像をブロックに分割し、各ブロックを画素単位で比較することによって、前記被写体の動きを示す第２の動き検出情報を出力する
ことを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
撮像装置本体の動きを示す第１の動き検出情報を出力する工程と、
前記撮像装置によって撮影された複数の画像に基づいて、被写体の動きを示す第２の動き検出情報を出力する工程と、
前記第１の動き検出情報に基づいて、前記第２の動き検出情報が示す前記被写体の動きに係る移動量を補正する工程と、
補正された前記移動量に基づいて、主被写体の動きベクトルを算出する工程と、
を有する
ことを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びその制御方法に関する。
【背景技術】
【０００２】
移動している被写体のスピード感を表現する撮影技術として、流し撮り撮影がある。流し撮り撮影は、撮影者が被写体の動きに合わせてカメラをパンニングすることにより、移動している被写体を静止させて背景は流すことを目的とする。流し撮り撮影においては、撮影者が被写体の動きに合わせてパンニングをする必要があるが、パンニング速度が速すぎたり遅すぎたりすることで、被写体の移動速度とパンニング速度の間に差が発生してしまうと、被写体までブレた画像になることも多い。
【０００３】
ユーザの流し撮り撮影の補助を行う機能として、シフトレンズの移動により被写体の移動速度とパンニング速度の差を吸収する流し撮りアシスト機能が提案されている。特許文献１は、ジャイロセンサのブレ検出と画像の動きベクトルから被写体を検出し、検出された被写体を画像中央に位置させるための補正量を算出し、光軸シフトレンズの移動で補正して流し撮り撮影を行う撮像装置を開示している。
【０００４】
また、画像から動きベクトルを検出する技術として、連続して撮影された画像を比較することで検出する手法が提案されている。例えば、特許文献２は、動きベクトルを検出するブロックマッチングの対象となる参照ブロックと候補ブロックをサーチエリア内で候補ブロックの位置をずらしながら画素値を比較して動きベクトルを検出する装置を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３１７８４８号公報
【特許文献２】特開平８−８８８５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１が開示する装置は、検出された動きベクトルで動き補償を行った後、サーチエリアを小さくして動きベクトルの検出ステップを繰り返す。しかし、この装置を適用した場合、主となる被写体（以下、「主被写体」と記述する）がサーチエリアに対して小さいと、主被写体のみならず、背景の動きベクトルも検出されてしまう。したがって、検出された動きベクトルから主被写体の動きベクトルを判別することが困難となる。その結果、主被写体の角速度を正確に求めることができなくなり、流し撮りアシスト機能が十分に働かなくなってしまう。
【０００７】
本発明は、主被写体が小さい場合でも、主被写体の動きベクトルを精度良く算出できる画像処理装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態の画像処理装置は、撮像装置本体の動きを示す第１の動き検出情報を出力する第１の出力手段と、前記撮像装置によって撮影された複数の画像に基づいて、被写体の動きを示す第２の動き検出情報を出力する第２の出力手段と、前記第１の動き検出情報に基づいて、前記第２の動き検出情報が示す前記被写体の動きに係る移動量を補正する補正手段と、前記補正手段により補正された移動量に基づいて、主被写体の動きベクトルを算出する算出手段と、を備える。
【発明の効果】
【０００９】
本発明の画像処理装置によれば、主被写体が小さい場合でも、主被写体の動きベクトルを精度良く算出できる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の画像処理装置の構成を示す図である。
【図２】撮影された画像から被写体の移動量を算出する処理を説明する図である。
【図３】実施例１の画像処理装置の動作処理を説明するフローチャートである。
【図４】被写体の移動量の補正量の単位の変換処理の例を説明する図である。
【図５】被写体の移動量の度数分布の例を示す図である。
【図６】実施例２の画像処理装置の動作処理を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
（実施例１）
図１は、実施例１の画像処理装置の構成を示す図である。
画像処理装置は、第１の動き検出部１００、第１メモリ１０２、第２の動き検出部１０１、第２メモリ１０３、動きベクトル算出部１０４を備える。第１の動き検出部１００は、撮像装置本体の移動量を示す角速度を検出し、検出した角速度のデータを第１の動き検出情報として出力する第１の出力手段として機能する。第１の動き検出部１００は、例えばジャイロセンサなどの角速度センサである。第１メモリ１０２は、第１の動き検出部１００が出力した角速度のデータのうち、任意の期間に検出された全てのデータを一時的に記憶する。第１メモリ１０２は、例えば、ＲＡＭ等の揮発性装置である。第２の動き検出部１０１は、連続して撮影された画像を比較することで、被写体の移動量を算出し、第２の動き検出情報として出力する第２の出力手段として機能する。第２メモリ１０３は、例えばＲＡＭのような揮発性装置であり、第２の動き検出部１０１によって検出された移動量のうち、任意の期間に検出されたすべてのデータが一時的に記憶される。
【００１２】
図２は、撮影された画像から被写体の移動量を算出する処理を説明する図である。
図２（Ａ）は、連続して撮影された画像からブロック毎の移動量を検出する処理を示す。この処理は、第２の動き検出部１０１によって実行される。第２の動き検出部１０１は、連続して撮影された画像をブロックに分割し、各ブロックを画素単位で比較することによって、被写体の移動量を検出する。Ｎ−１フレームの参照ブロックの座標を（ｘ，ｙ）とする。Ｎフレームの候補ブロックをＮ−１フレームの参照ブロックの座標に対して１画素ずつずらしながらブロック内の画素値の差分を足し合わせたものを相関値とする。相関値が０に最も近くなる座標を（ｘ−ａ，ｙ−ｂ）とすると、移動量αは、（ａ，ｂ）となる。
【００１３】
図２（Ｂ）は、参照ブロックの配置例を示す。本実施例では、８×８＝６４個のブロックを画像全体に配置した時の配置例が示される。図２（Ｃ）には、図２（Ｂ）の参照ブロックのうち、点線で囲まれた４×３のブロックについて検出された移動量が矢印で示される。図２（Ｃ）中の移動量を示す矢印のうち、信頼性の低い移動量が点線で示される。例えば、参照ブロックおよび候補ブロックがエッジなどの特徴のある画素値を含まない場合、どの座標で相関値を算出しても同じような値となる。この場合には、移動量を求めることができないか、もしくは信頼性の低い値となる。したがって、第２の動き検出部１０１が、算出された移動量の信頼性を判定するようにしてもよい。すなわち、第２の動き検出部１０１は、コントラストが低いために相関値を得られなかった場合と、ブロックが高周波な画像のために相関値を得られなかった場合に、算出される移動量の信頼性が低いと判定する。
【００１４】
図１の説明に戻る。動きベクトル算出部１０４は、まず、第１メモリ１０２から撮像装置の角速度を読み込む。次に、動きベクトル算出部１０４は、第２メモリ１０３から被写体の移動量を読み込む。そして、動きベクトル算出部１０４は、以下の処理を実行する制御手段として機能する。すなわち、動きベクトル算出部１０４は、読み込んだ角速度データと被写体の移動量データとに基づいて、主となる被写体（以下、単に「主被写体」と記述する）の移動量を抽出し、主被写体の動きベクトルを算出する。
【００１５】
図３は、実施例１の画像処理装置の動作処理を説明するフローチャートである。
実施例１においては、動きベクトル算出部１０４は、所定の期間に対応する複数のフレームの画像の被写体の移動量を、各々のフレームに対応する第１の動き検出情報に基づいて補正する。
【００１６】
まず、ステップＳ３００ａにおいて、動きベクトル算出部１０４が、第１メモリ１０２から撮像装置の角速度（第１の動き検出情報）を取得し、第２メモリ１０３から被写体の移動量（第２の動き検出情報）を取得する。そして、動きベクトル算出部１０４が、補正角速度の算出処理を実行する。補正角速度は、被写体の移動量の補正量である。
【００１７】
ｉフレームの補正量γi は、基準となる角速度ω＊0 とｉフレーム目の角速度ω＊i とを用いて、以下の式１で表わされる。
γi ＝ω＊i −ω＊0 ・・・式１
本実施例では、第１メモリ１０２に記憶されている撮像装置の角速度のうち、最新の値をω＊0 として用いる。なお、第１メモリ１０２に記憶されているｎフレーム分の撮像装置の角速度から任意の値をω＊0 として選択してもよいし、記憶されているｎフレーム分の撮像装置の角速度から平均値を算出し、算出した平均値をω＊0 としてもよい。
【００１８】
次に、ステップＳ３０１ａにおいて、動きベクトル算出部１０４が、ステップＳ３００ａで算出した補正量の単位を、角速度の単位［ｒａｄ／ｓｅｃ］から移動量の単位［ｐｉｘｅｌ］に変換する。
【００１９】
図４は、被写体の移動量の補正量の単位の変換処理の例を説明する図である。
被写体がｔ秒の間に点Ａから点Ｂへ移動したことに応じて、センサ上に結像した被写体像が点Ｃから点Ｄへと移動したものとする。点Ｃと点Ｄとの距離をν［ｐｉｘｅｌ］、焦点距離をｆ［ｍｍ］、センサの画素ピッチをｐ［ｍｍ／ｐｉｘｅｌ］とした時、像面上の被写体の角速度ω＊［ｒａｄ／ｓｅｃ］は、以下の式２で表わされる。
ｔａｎ（ω＊×ｔ）＝（ν×ｐ）／ｆ・・・式２
【００２０】
変換後の補正量ξｉ［ｐｉｘｅｌ］は、式２の移動距離ν［ｐｉｘｅｌ］と像面上の被写体の角速度ω＊［ｒａｄ／ｓｅｃ］を補正量ξｉ［ｐｉｘｅｌ］と補正量γｉ［ｒａｄ／ｓｅｃ］にそれぞれ置き換えた以下の式３で表わされる。
ξｉ＝（ｆ／ｐ）×ｔａｎ（γｉ×ｔ）・・・式３
【００２１】
図３の説明に戻る。ステップＳ３０２ａにおいて、動きベクトル算出部１０４が、度数分布を作成する。図３（Ｂ）は、度数分布の作成処理を説明するフローチャートである。まず、ステップＳ３００ｂにおいて、動きベクトル算出部１０４が、ステップＳ３０１ａで単位変換された補正量ξｉを用いて、被写体の移動量を補正する。
【００２２】
ｉフレーム目の補正後の移動量ＭCｉは、補正量ξｉとｉフレーム目の移動量Ｍｉを用いて以下の式４で表わされる。
ＭCi＝Ｍｉ−ξｉ・・・式４
【００２３】
次に、ステップＳ３０１ｂにおいて、動きベクトル算出部１０４が、ステップＳ３００ｂで補正された移動量ＭCiに対応する度数に１を加算する。なお、ステップＳ３００ｂとステップＳ３０１ｂの処理は、それぞれのブロックに対して行う。本実施例では、６４個のブロックを配置しているので、ステップＳ３００ｂとステップＳ３０１ｂの処理は、６４回ずつ実施される。つまり、１フレームにおいて全ての移動量に対応する度数を合計すると６４となる。
【００２４】
本実施例では、動きベクトル算出部１０４は、任意の期間に検出された全てのフレームに対して、ステップＳ３００ａからステップＳ３０２ａの処理を実行する。その結果、移動量の度数は、任意の検出期間に検出された全ての移動量から計算される。例えば、ｎが１０フレームの場合、全ての移動量に対応する度数を合計すると６４０となる。このように、複数のフレームにわたって移動量に対応する度数を加算していくことで、小さな被写体に相当する移動量に検出可能なピークを持つ度数分布を作成することができる。
【００２５】
ステップＳ３０３ａにおいて、動きベクトル算出部１０４が、ステップＳ３０２ａで作成した度数分布から主被写体の移動量を判定する。度数分布には、背景の移動量に対するピークと主被写体の移動量に対するピークの二つが現れる。背景の移動量は、式２を用いて像面上の角速度に変換すると、基準となる角速度ω＊０と一致する。この関係に基づいて、動きベクトル算出部１０４は、度数分布に表れる二つのピークのうち、撮像装置の角速度に一致する方を背景の移動量であると判定する。動きベクトル算出部１０４は、残った方のピークを主被写体の移動量であると判定する。これにより、主被写体の移動量が抽出され、この被写体の動きベクトルが算出される。
【００２６】
図５は、被写体の移動量の度数分布の例を示す図である。
図５（Ａ）は、１フレーム分のデータに対して度数分布の作成処理を行った後の度数分布を示す。図５（Ｂ）は、１０フレーム分のデータに対して度数分布の作成処理を行った後の度数分布を示す。度数分布の横軸は、補正後の移動量を示す。度数分布の縦軸は、各移動量の出現頻度を示す。なお、点線は、検出閾値を表わしている。度数分布からピークを読み取る際にノイズを拾わないように、一般にある閾値を設定して検出を行う。このとき、図５（Ａ）に示すように、主被写体が小さい場合、主被写体の移動量の出現頻度が検出閾値を超えない。つまり、度数分布には、背景の移動量のピークしか現れない。そこで、図５（Ｂ）が示すように、１０フレーム分のデータから度数分布を作成すると、主被写体の移動量の出現頻度が検出閾値を超える。つまり、度数分布に背景の移動量に対するピークと主被写体の移動量に対するピークが現れる。このようにして、撮像装置の角速度を用いて被写体の移動量を補正することで、任意の期間に検出された全ての移動量から主被写体の動きベクトルを算出することが可能になる。つまり、被写体が小さい場合でも、動きベクトルを算出することができる。
【００２７】
（実施例２）
図６は、実施例２の画像処理装置の動作処理を説明するフローチャートである。
任意の期間に検出された全ての移動量から主被写体の動きベクトルを算出する方法では、任意の期間のすべてのフレームから度数分布を作成する必要があるので、被写体が小さくない場合に余分な処理時間がかかる。したがって、実施例２の画像処理装置は、度数分布を作成する期間を、主被写体の移動量が検出されたか否かに応じて変更する。具体的には、画像処理装置は、最新のフレームに対応する移動量の度数分布から主被写体の移動量を検出できるかを判定する。画像処理装置は、上記度数分布から主被写体の移動量を検出できない場合に、移動量の加算後の度数分布から主被写体の移動量を抽出できるまで、最新のフレームの画像に対応する移動量に過去のフレームに対応する補正後の移動量を順次加算する。
【００２８】
ステップＳ６００、図３のステップＳ３００ａと同様である。
次に、ステップＳ６０１において、動きベクトル算出部１０４が、ステップＳ６００で算出した補正量の単位を、角速度の単位［ｒａｄ／ｓｅｃ］から移動量の単位［ｐｉｘｅｌ］に変換する。単位の変換には、前述した式３を用いる。
【００２９】
本実施例では、基準となる角速度ω＊０として、第１メモリ１０２に記憶されている撮像装置の角速度のうち、最新の値を用いる。ただし、第２メモリ１０３に記憶されている被写体の移動量のうち、最新の移動量を使って度数分布を作成する場合は、被写体の移動量を補正する必要がないので、補正量の計算を行わない。また、補正量の単位変換も行わない。動きベクトル算出部１０４は、最新の移動量を使って作成した度数分布から主被写体の移動量を検出できなかった場合に、１フレームずつ直前のフレームを参照して度数分布の作成を行う。動きベクトル算出部１０４は、過去のフレームを使って度数分布を作成する場合のみ、ステップＳ６００およびステップＳ６０１の処理を実行する。
【００３０】
ステップＳ６０２において、動きベクトル算出部１０４が、度数分布を作成する。続いて、ステップＳ６０３において、動きベクトル算出部１０４が、ステップＳ６０２で作成した度数分布から、主被写体の移動量を判定する。判定方法については実施例１と同様であるので、説明を省略する。判定の結果、主被写体の移動量を検出することができた場合は、処理を終了する。被写体の移動量を検出できなかった場合、動きベクトル算出部１０４は、第１メモリ１０２から１フレーム前の撮像装置の角速度を読み込み、第２のメモリ１０３から１フレーム前の被写体の移動量を読み込む。動きベクトル算出部１０４は、読み込まれた撮像装置の角速度データに対して、ステップＳ６００およびステップＳ６０１の処理を実行する。
【００３１】
次に、動きベクトル算出部１０４が、ステップＳ６０２において、最新のフレームから現在処理を行っているフレームまでについての全ての移動量から度数分布を作成する。そして、ステップＳ６０３において、この度数分布から主被写体の移動量を再度判定する。これらの処理は主被写体の移動量が検出されるまで繰り返される。もしくは、第１メモリ１０２および第２メモリ１０３に記憶されている全てのフレームを処理するまで繰り返される。
【００３２】
以上説明したように、動きベクトル算出部１０４が、度数分布を作成する期間を、主被写体の移動量が検出されたか否かに応じて変更することで、被写体が小さくない場合に余分な処理時間をかけずに動きベクトルを算出することが可能になる。つまり、被写体が小さい場合でも動きベクトルを算出することができ、かつ、小さくない被写体の動きベクトルを余分な処理時間をかけずに算出することができる。以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００３３】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３４】
１００  第１の動き検出部
１０１  第２の動き検出部
１０２  第１メモリ
１０３  第２メモリ
１０４  動きベクトル算出部
【図１】
0006602089.tif 000002
【図２】
0006602089.tif 000003
【図３】
0006602089.tif 000004
【図４】
0006602089.tif 000005
【図５】
0006602089.tif 000006
【図６】
0006602089.tif 000007