(57)【特許請求の範囲】
【請求項１】
動画に含まれる複数のフレームのうちの第１のフレームと、前記第１のフレームからＦｉｎｔフレーム（Ｆｉｎｔは自然数）離れた第２のフレームと、の間の動きベクトルの大きさが第１の閾値以上となるＦｉｎｔを識別する識別手段と、
前記複数のフレームについて、Ｆｉｎｔフレーム間隔で動きベクトルを検出する第１の検出手段と、
前記検出された動きベクトルに基づいて、前記動画の画面を、被写体が移動している動領域と被写体が静止している静領域とに分割する分割手段と、
前記複数のフレームのうちの所定のフレームの前記静領域に対応する領域と、前記複数のフレームそれぞれの前記動領域に対応する領域とを合成することにより、静止画を生成する生成手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記識別手段は、Ｆｉｎｔを初期値から徐々に大きくしながら前記第１のフレームと前記第２のフレームとの間の動きベクトルの大きさが前記第１の閾値以上になるまで当該動きベクトルの検出を繰り返すことにより、当該動きベクトルの大きさが前記第１の閾値以上となるＦｉｎｔを識別する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記識別手段は、Ｆｉｎｔの前記初期値を、前記動画に関連付けられた情報に基づいて決定する
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記動画に関連付けられた前記情報は、前記動画を撮影した撮像装置により前記動画の撮影前に撮影されたライブ画像から検出された、手振れに起因する手振れ動きベクトルに対する被写体の動きに起因する被写体動きベクトルの大きさの比率に対応する情報であり、
前記比率が第１の値よりも大きい第２の値の場合、Ｆｉｎｔの前記初期値は、前記比率が前記第１の値の場合よりも大きい値に決定される
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第１のフレームは、前記所定のフレームである
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記第１の検出手段は、前記複数のフレームのうちのＦｉｎｔフレーム間隔のフレームそれぞれについて、複数の領域それぞれから動きベクトルを検出し、
前記分割手段は、
前記検出された動きベクトルのうち、手振れに起因する手振れ動きベクトルを識別し、
前記検出された動きベクトルのうち、前記手振れ動きベクトルを除いた被写体動きベクトルの大きさ成分を、領域ごとに合算し、
前記合算により得られる合算値が第２の閾値以上の領域を前記動領域として判定し、前記合算値が前記第２の閾値未満の領域を前記静領域として判定する
ことを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
請求項１乃至６のいずれか１項に記載の画像処理装置と、
前記動画を撮影する撮影手段と、
を備えることを特徴とする撮像装置。
【請求項８】
前記動画の撮影前にライブ画像を撮影するライブ撮影手段と、
前記ライブ画像から、手振れに起因する手振れ動きベクトルと被写体の動きに起因する被写体動きベクトルとを検出する第２の検出手段と、
前記手振れ動きベクトルに対する前記被写体動きベクトルの大きさの比率に対応する情報を前記動画に関連付ける関連付け手段と、
を更に備えることを特徴とする請求項７に記載の撮像装置。
【請求項９】
前記動画の撮影前にライブ画像を撮影するライブ撮影手段と、
前記ライブ画像から、被写体の動きに起因する被写体動きベクトルを検出する第３の検出手段と、
前記被写体動きベクトルの大きさに基づいて前記動画の撮影のためのフレームレートを設定する設定手段と、
を更に備え、
前記設定手段は、前記被写体動きベクトルの大きさが第３の値よりも大きい第４の値の場合、前記被写体動きベクトルの大きさが前記第３の値の場合よりも、前記フレームレートを大きい値に設定する
ことを特徴とする請求項７に記載の撮像装置。
【請求項１０】
画像処理装置が実行する画像処理方法であって、
動画に含まれる複数のフレームのうちの第１のフレームと、前記第１のフレームからＦｉｎｔフレーム（Ｆｉｎｔは自然数）離れた第２のフレームと、の間の動きベクトルの大きさが第１の閾値以上となるＦｉｎｔを識別する識別工程と、
前記複数のフレームについて、Ｆｉｎｔフレーム間隔で動きベクトルを検出する第１の検出工程と、
前記検出された動きベクトルに基づいて、前記動画の画面を、被写体が移動している動領域と被写体が静止している静領域とに分割する分割工程と、
前記複数のフレームのうちの所定のフレームの前記静領域に対応する領域と、前記複数のフレームそれぞれの前記動領域に対応する領域とを合成することにより、静止画を生成する生成工程と、
を備えることを特徴とする画像処理方法。
【請求項１１】
コンピュータを請求項１乃至６のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、撮像装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
カメラでの撮影手法の１つに、「スローシャッター」がある。この撮影手法は、別名、バルブ撮影又は長秒露光とも呼ばれる。この撮影手法は、通常撮影と比べて長時間（例えば１０秒間）露光を行うことにより、動いている被写体に対して時間軸方向での合成効果を与え、通常撮影とは異なる映像表現を実現するものである。
【０００３】
また、十分な流し撮り効果を得るために、流し撮り撮影中に動きベクトル検出を行い、動いていると認識された背景領域のブレ量を増大させる技術も知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−８０８４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
カメラを手で持ってスローシャッター撮影を行う場合、露光中に手振れによりカメラ姿勢が変化しやすく、最終的に得られる画像において、動く被写体のみならず静止した被写体や背景までもがブレてしまう可能性が高い。そのため、スローシャッター撮影を行う際は、三脚を用いてカメラ姿勢を固定するのが一般的である。しかしながら、三脚を撮影場所まで持ち運んで設置することは、ユーザに大きな負担をかけるものであった。
【０００６】
また、特許文献１の技術は、露出条件に関わらずスローシャッター効果に似た効果を得ることを可能にするものであるが、この効果は被写体の実際の動きに対応するものではないため、スローシャッター撮影の代わりになるものではない。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、手振れの発生する条件下で撮影を行う場合であっても、静止領域の画像ブレを軽減しつつ、スローシャッター効果を持つ画像を生成することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、動画に含まれる複数のフレームのうちの第１のフレームと、前記第１のフレームからＦｉｎｔフレーム（Ｆｉｎｔは自然数）離れた第２のフレームと、の間の動きベクトルの大きさが第１の閾値以上となるＦｉｎｔを識別する識別手段と、前記複数のフレームについて、Ｆｉｎｔフレーム間隔で動きベクトルを検出する第１の検出手段と、前記検出された動きベクトルに基づいて、前記動画の画面を、被写体が移動している動領域と被写体が静止している静領域とに分割する分割手段と、前記複数のフレームのうちの所定のフレームの前記静領域に対応する領域と、前記複数のフレームそれぞれの前記動領域に対応する領域とを合成することにより、静止画を生成する生成手段と、を備えることを特徴とする画像処理装置を提供する。
【０００９】
なお、その他の本発明の特徴は、添付図面及び以下の発明を実施するための形態における記載によって更に明らかになるものである。
【発明の効果】
【００１０】
本発明によれば、手振れの発生する条件下で撮影を行う場合であっても、静止領域の画像ブレを軽減しつつ、スローシャッター効果を持つ画像を生成することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】撮像装置の一例であるデジタルカメラ１０１の構成を示すブロック図。
【図２】画像処理装置の一例であるスマートフォン２０１の構成を示すブロック図。
【図３】スローシャッター効果処理のフローチャート。
【図４】処理対象フレーム選出処理（Ｓ３０２）の詳細を示すフローチャート。
【図５】Ｓ４０１の処理を例示する図。
【図６Ａ】手振れフレーム除外処理（Ｓ４０２）の詳細を示すフローチャート。
【図６Ｂ】カメラ姿勢情報に基づいて手振れフレームを検出して除外する様子を例示する図。
【図７】フレーム間隔決定処理（Ｓ３０４）の詳細を示すフローチャート。
【図８】動領域／静領域分割処理（Ｓ３０５）の詳細を示すフローチャート。
【図９】Ｓ８０１の処理を例示する図。
【図１０】動きベクトル閾値処理（Ｓ８０２）を例示する図。
【図１１】動きベクトル閾値処理（Ｓ８０２）の結果を例示する図。
【図１２】動きベクトル強度合算処理（Ｓ８０３）を例示する図。
【図１３】ＬＰＦ処理（Ｓ８０４）の結果として得られる動きベクトル量マップを例示する図。
【図１４】動静領域マップを例示する図。
【図１５】動領域フレーム合成処理（Ｓ３０６）の詳細を示すフローチャート。
【図１６】結果画像を例示する図。
【図１７】デジタルカメラ１０１のＥＶＦ動作のフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明の実施形態を説明する。なお、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。また、実施形態の中で説明されている特徴の組み合わせすべてが、本発明に必須とは限らない。
【００１３】
［第１の実施形態］
図１は、撮像装置の一例であるデジタルカメラ１０１の構成を示すブロック図である。デジタルカメラ１０１は、電源スイッチ１０２、撮像部１０３、姿勢センサ１０４、ＣＰＵ１０５、画像処理プロセッサ１０６、及びメモリ１０７を備える。メモリ１０７は、制御プログラム領域１０８及び作業用メモリ領域１０９を含む。また、デジタルカメラ１０１は、通信部１１０、表示部１１１、入力部１１２、及びメモリカード１１３を備える。メモリカード１１３は、動画ファイル１１４を格納することができる。また、デジタルカメラ１０１は、デジタルカメラとして一般的なその他の構成（不図示）も備えるものとする。
【００１４】
ユーザが電源スイッチ１０２を操作することにより電源をＯＮにすると、ＣＰＵ１０５は、制御プログラム領域１０８に格納されたプログラムを実行することにより、デジタルカメラ１０１に備わった各種機能を制御する。これにより、デジタルカメラ１０１は、デジタルカメラとして動作するようになる。
【００１５】
ユーザが入力部１１２を介して撮影指示を入力すると、ＣＰＵ１０５の制御に従い、撮像部１０３が撮像を行い、画像処理プロセッサ１０６が現像処理や圧縮エンコードなどを行う。ＣＰＵ１０５は、こうして得られた動画を、動画ファイル１１４としてメモリカード１１３に記録する。この時、姿勢センサ１０４は、撮像中のデジタルカメラ１０１の姿勢情報（カメラ姿勢情報）を取得する。ＣＰＵ１０５は、カメラ姿勢情報を動画ファイル１１４にメタデータとして記録する。これにより、動画ファイル１１４とカメラ姿勢情報とが関連付けられる。
【００１６】
表示部１１１は、ユーザが撮影済みの画像を確認したり、ユーザが入力部１１２を介して指示を入力したりする際に、ユーザインタフェースとして機能する。通信部１１０は、ＷｉＦｉなどの無線通信により、スマートフォンなどの外部機器に対して、撮影済みの画像データを送信する。
【００１７】
図２は、画像処理装置の一例であるスマートフォン２０１の構成を示すブロック図である。スマートフォン２０１は、撮影済みの動画データからスローシャッター効果を持つ静止画（スローシャッター画像）を生成する機能を持つ。なお、本実施形態においては、動画データを生成する装置とスローシャッター画像を生成する装置とが別個の装置であるが、１つの装置が動画データの生成及びスローシャッター画像の生成の両方を実行するように構成されていてもよい。例えば、デジタルカメラ１０１が、スローシャッター画像を生成する機能を備えていてもよい。また、スマートフォン２０１の代わりに、パーソナルコンピュータが、スローシャッター画像を生成する機能を備えていてもよい。
【００１８】
スマートフォン２０１は、ＣＰＵ２０２、及びメモリ２０３を備える。メモリ２０３は、制御プログラム領域２０４及び作業用メモリ領域２０５を含む。また、スマートフォン２０１は、通信部２０６、表示部２０７、入力部２０８、及びＳＳＤ２０９（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を備える。ＳＳＤ２０９は、動画ファイル２１０及びスローシャッター画像２１１（静止画ファイル）を格納することができる。また、スマートフォン２０１は、スマートフォンとして一般的なその他の構成（不図示）も備えるものとする。
【００１９】
ユーザが入力部２０８を介して動画ファイル２１０を指定し、スローシャッター効果処理の実行を指示すると、ＣＰＵ２０２は、制御プログラム領域２０４に格納されたプログラムを実行することにより、スローシャッター効果処理を実行する。ＣＰＵ２０２は、スローシャッター効果処理により生成された静止画データを、スローシャッター画像２１１として保存する。なお、ユーザは、スローシャッター効果処理の間に、スローシャッター効果を確認しながら、効果の調整を行うことができる。この場合、静止画データは、作業用メモリ領域２０５に一時的に格納され、表示部２０７に表示される。
【００２０】
図３は、スローシャッター効果処理のフローチャートである。本フローチャートの各ステップの処理は、特に断らない限り、スマートフォン２０１のＣＰＵ２０２が、制御プログラム領域２０４に格納されたプログラムを実行することにより実現される。
【００２１】
Ｓ３０１で、ＣＰＵ２０２は、動画ファイル２１０を作業用メモリ領域２０５へと読み込む。スマートフォン２０１は、事前に動画ファイル１１４をデジタルカメラ１０１から取得して、ＳＳＤ２０９に動画ファイル２１０として格納しているものとする。
【００２２】
Ｓ３０２で、ＣＰＵ２０２は、動画ファイル２１０に含まれる全フレームの中から、スローシャッター効果処理に適したフレーム（処理対象フレーム）を選出する。処理対象フレーム選出処理の詳細については後述する。Ｓ３０３で、ＣＰＵ２０２は、結果画像（スローシャッター効果処理により最終的に生成されるスローシャッター画像）の静領域に用いるフレームを選択するための、静領域フレーム選択処理を行う。本実施形態では、ＣＰＵ２０２は、Ｓ３０２において選出された処理対象フレームの中から、入力部２０８を通じてユーザにより指定されたフレームを静領域フレームとして選択するものとする。以下の説明では、Ｓ３０３において選択された静領域フレームのフレーム番号を「Ｎｓ」と記載する。
【００２３】
Ｓ３０４で、ＣＰＵ２０２は、後述する動領域／静領域分割処理における動きベクトル検出に用いるフレーム間隔を決定する。フレーム間隔決定処理の詳細については後述する。Ｓ３０５で、ＣＰＵ２０２は、動領域／静領域分割処理を行う。動領域／静領域分割処理は、動画の画面を、動領域（被写体が移動している領域）と静領域（被写体が静止している領域）とに分割する処理である。ここで、動画の画面は撮影画角に対応する領域であってもよいし、その領域から切り取られた一部の領域であってもよい。動領域／静領域分割処理の詳細については後述する。
【００２４】
Ｓ３０６で、ＣＰＵ２０２は、動領域フレーム合成処理を行う。動領域フレーム合成処理の詳細については後述する。Ｓ３０７で、ＣＰＵ２０２は、結果画像を表示部２０７に表示させる。その後、ＣＰＵ２０２は、本フローチャートの処理を終了する。
【００２５】
図４は、処理対象フレーム選出処理（Ｓ３０２）の詳細を示すフローチャートである。Ｓ４０１で、ＣＰＵ２０２は、動画データの全フレームのうち、撮影期間における最初と最後の所定期間（例えば、数秒）に対応するフレームを処理対象から除外する。図５は、Ｓ４０１の処理を例示する図である。ここでは、最初と最後の１秒に相当するフレームを処理対象から除外するものとする。一般的に、動画撮影を開始するときと、終了するときには、開始指示及び終了指示のためのボタン操作などが発生し、カメラ姿勢が大きく変化してしまう。そのため、これらの期間におけるフレームにはブレが生じ、スローシャッター画像としては不適切な可能性が高い。そこで、これらのフレームを処理対象から除外する。
【００２６】
なお、ここでは、最初と最後の所定期間のフレームを除外することとしたが、本実施形態はこれに限定されない。例えば、最初又は最後の一方のみ、所定期間のフレームを除外してもよい。また、操作部材の工夫により手振れが発生しにくい場合には、この期間を短くしてもよい。或いは、除外期間（所定期間の長さ）をユーザが選択可能なユーザインタフェースを設け、ユーザ指示に従って除外期間を決定するように構成してもよい。
【００２７】
Ｓ４０２で、ＣＰＵ２０２は、手振れフレーム除外処理を行う。図６Ａは、手振れフレーム除外処理（Ｓ４０２）の詳細を示すフローチャートである。
【００２８】
Ｓ６０１で、ＣＰＵ２０２は、動画ファイル２１０のメタデータとして、カメラ姿勢情報が存在するか否かを判定する。カメラ姿勢情報が存在する場合、ＣＰＵ２０２は、処理をＳ６０２に進める。カメラ姿勢情報が存在しない場合、ＣＰＵ２０２は、処理をＳ６０３に進める。
【００２９】
Ｓ６０２で、ＣＰＵ２０２は、カメラ姿勢情報を参照し、各フレームの撮影時にカメラ姿勢が大きく変化したフレーム（姿勢変化量が第３の閾値以上のタイミングに撮影されたフレーム）を手振れフレームとして検出する。そして、ＣＰＵ２０２は、検出された手振れフレームを処理対象から除外する。図６Ｂは、カメラ姿勢情報に基づいて手振れフレームを検出して除外する様子を例示する図である。図６Ｂに示すように、カメラ姿勢が大きく変化した期間のフレームが検出され、処理対象から除外される。
【００３０】
Ｓ６０３で、ＣＰＵ２０２は、動画のフレーム間の動きベクトル量を画像解析により検出し、動きベクトル量に基づいて、手振れフレームを検出する。ＣＰＵ２０２は、こうして検出した手振れフレームを、処理対象から除外する。
【００３１】
なお、本実施形態における動きベクトル検出の方式としては勾配法を用いることとするが、動きベクトル検出の方式はこれに限定されない。一例として、本実施形態では、ＣＰＵ２０２は、各フレームごとに、フレーム内の複数の動きベクトルを方向と量に基づいてグループへの分類を行う。そして、ＣＰＵ２０２は、一番数の多い動きベクトルを含むグループを、手振れによる動きベクトルのグループと判定する。そして、ＣＰＵ２０２は、判定されたグループベクトルの長さが閾値以上の場合に、対応するフレームを手振れフレームとして検出する。
【００３２】
以上の処理により、動画の全フレームのうちの一部のフレームが、処理対象フレームとして選出される。即ち、これまでの処理により除外されなかったフレームが、最終的に処理対象フレームとして選出される。
【００３３】
次に、図７を参照して、フレーム間隔決定処理（Ｓ３０４）の詳細について説明する。Ｓ７０１で、ＣＰＵ２０２は、変数ｎを１に初期化する。なお、図７のＳ７０１には、「（又は、ｎ＝ＦｉｎｔＥＶＦ）」とも記載されているが、これについては第２の実施形態において説明する。Ｓ７０２で、ＣＰＵ２０２は、図３のＳ３０３において選択された静領域フレームＮｓとフレーム（Ｎｓ＋ｎ）との間の動きベクトルを、画面内の複数の領域それぞれについて検出する。
【００３４】
Ｓ７０３で、ＣＰＵ２０２は、Ｓ７０２において検出された複数の動きベクトルの最大値が閾値Ｔｈ１以上であるか否かを判定する。最大値が閾値Ｔｈ１以上の場合、ＣＰＵ２０２は処理をＳ７０６に進め、そうでない場合、ＣＰＵ２０２は処理をＳ７０４に進める。Ｓ７０４で、ＣＰＵ２０２は、ｎが閾値Ｔｈ２以上であるか否かを判定する。ｎが閾値Ｔｈ２以上の場合、ＣＰＵ２０２は処理をＳ７０６に進め、そうでない場合、ＣＰＵ２０２は処理をＳ７０５に進める。Ｓ７０５で、ＣＰＵ２０２は、ｎに１を加算し、処理をＳ７０２に戻す。Ｓ７０６で、ＣＰＵ２０２は、動領域／静領域分割処理における動きベクトル検出に用いるフレーム間隔Ｆｉｎｔ（Ｆｉｎｔは自然数）を、Ｎｓ＋ｎに決定する。
【００３５】
以上の処理により、静領域フレームＮｓと、静領域フレームＮｓからＦｉｎｔフレーム離れたフレームと、の間の動きベクトルの大きさが閾値Ｔｈ１以上（第１の閾値以上）となるフレーム間隔Ｆｉｎｔを識別することができる。このようにフレーム間隔Ｆｉｎｔを識別（決定）する理由は、動きベクトルの大きさが動領域／静領域分割処理の精度に影響するからである。例えば、車のテールライトの軌跡を滑らかに合成処理するためには、合成元の隣接フレーム間の時間が短いほど（即ち、フレームレートが高いほど）好ましい。しかしながら、この場合、隣接フレーム間の動きベクトルが小さくなり、動きベクトルの検出精度が低下し、動領域と静領域の区別の精度が低下する可能性がある。そのため、ＣＰＵ２０２は、フレーム間隔決定処理により、動きベクトルの最大値が閾値Ｔｈ１以上になるように、フレーム間隔Ｆｉｎｔを決定する。閾値Ｔｈ１は、この目的に沿うように、ある程度大きな値に設定される。
【００３６】
なお、ＣＰＵ２０２は、Ｓ７０５において、ｎに２以上の値を加算してもよい。この場合、フレーム間隔を細かく調整できない代わりに、フレーム間隔決定処理に要する時間が短縮される。いずれにしても、ＣＰＵ２０２は、静領域フレームＮｓと比較するフレームの番号Ｎｓ＋ｎ（＝Ｆｉｎｔ）を徐々に大きくしながら、最終的に動きベクトルの大きさが閾値Ｔｈ１以上となるＦｉｎｔを識別する。
【００３７】
また、静領域フレームＮｓの値が大きい場合、ＣＰＵ２０２は、比較対象のフレームを逆方向に移動してもよい。即ち、ＣＰＵ２０２は、Ｓ７０２の「フレーム（Ｎｓ＋ｎ）」を「フレーム（Ｎｓ−ｎ）」に読み替えて処理を行ってもよい。
【００３８】
また、図７においては、動きベクトルの検出の基準となるフレームは静領域フレームＮｓであるものとしたが、本実施形態はこれに限定されない。一般化すると、ＣＰＵ２０２は、第１のフレームと、第１のフレームからＦｉｎｔフレーム離れた第２のフレームと、の間の動きベクトルの大きさが第１の閾値以上となるＦｉｎｔを識別すればよい。
【００３９】
また、ＣＰＵ２０２は、図７に示すフレーム間隔決定処理を実行する代わりに、動領域の被写体の移動速度やフレームレートに関わらず、フレーム間隔として所定の２以上の値を用いてもよい。この場合であっても、隣接フレーム間で動きベクトルを検出する場合よりも動きベクトルが大きくなることが期待できるので、動領域と静領域の区別の精度が向上することが期待できる。
【００４０】
次に、図８を参照して、動領域／静領域分割処理（Ｓ３０５）の詳細について説明する。Ｓ８０１で、ＣＰＵ２０２は、Ｓ３０３において選択された静領域フレームＮｓを基準として、Ｓ３０４において決定されたフレーム間隔Ｆｉｎｔごとに動きベクトルを検出する。即ち、Ｎｓ−Ｆｉｎｔ＊ａ，・・・，Ｎｓ−Ｆｉｎｔ＊２，Ｎｓ−Ｆｉｎｔ，Ｎｓ，Ｎｓ＋Ｆｉｎｔ，Ｎｓ＋Ｆｉｎｔ＊２，・・・，Ｎｓ＋Ｆｉｎｔ＊ｂと記載した時に、ＣＰＵ２０２は、隣接して記載されているフレーム間の動きベクトルを検出する。ここで、ａは、Ｎｓ−Ｆｉｎｔ＊ａ≧０を満たす最大の整数であり、ｂは、Ｎｓ＋Ｆｉｎｔ＊ｂ≦（処理対象フレームの最終フレーム番号）を満たす最大の整数である。但し、Ｓ３０２において処理対象として選出されなかったフレームについては、動きベクトルの検出対象から除外される。ここでの動きベクトル検出処理は、フレーム間隔Ｆｉｎｔが用いられることを除き、Ｓ６０３における処理と同等である。ＣＰＵ２０２は、ここでの動きベクトル検出結果を、後述する動領域フレーム合成処理において利用できるようにするために、作業用メモリ領域２０５に記録しておく。
【００４１】
なお、ここでは静領域フレームＮｓを基準とするものとして説明を行ったが、本実施形態はこれに限定されない。一般化すると、ＣＰＵ２０２は、複数の処理対象フレームについて、Ｆｉｎｔフレーム間隔で動きベクトルを検出すればよい。
【００４２】
図９は、Ｓ８０１の処理を例示する図である。図中の川の部分については、川の流れによる動領域の動きベクトルが比較的大きなベクトルとして検出されている。その他の静領域については、比較的小さい値の同じ大きさのベクトルが同一方向に多数存在することが検出されている。図９から理解できるように、ＣＰＵ２０２は、動きベクトルを検出する際に、フレームの複数の領域それぞれについて検出を行う。検出対象の複数の領域の決定方法は特に限定されないが、領域の数が多いほど（各領域が小さいほど）静領域／動領域の分割精度が向上する。
【００４３】
Ｓ８０２で、ＣＰＵ２０２は、動きベクトル閾値処理により、Ｓ８０１において動きベクトルを検出した全フレームについて、手振れに起因する動きベクトル（手振れ動きベクトル）を削除する。
【００４４】
図１０は、動きベクトル閾値処理（Ｓ８０２）を例示する図である。図１０はヒストグラムであり、横軸はベクトルの大きさ成分（動き量）を示し、縦軸はベクトルの個数を示す。手振れ動きベクトルは、一定方向に一定の大きさを持つベクトルが多数発生する特徴を有する。また、Ｓ３０２の処理対象フレーム選出処理により、大きな手振れによる動きベクトルを持つフレームは処理対象から除外されているため、多数発生するベクトルのうち、比較的小さい（短い）ものが手振れ動きベクトルであると推定される。図１０においては、ヒストグラムの２つの山のうち、大きい山（動き量が小さい山）が手振れ動きベクトルであると判定することができる。このピークから２倍の位置などを閾値として、大きさ成分がこの閾値未満のベクトルを削除することにより、動物体による動きベクトル（被写体動きベクトル）のみを検出することが可能になる。換言すると、ＣＰＵ２０２は、動きベクトルの大きさ成分の度数分布に基づいて、手振れ動きベクトルを識別するための閾値を決定する。
【００４５】
なお、手振れ動きベクトルは、方向がほぼ一定であるという性質も持つ。そのため、ＣＰＵ２０２は、動きベクトルを方向別にグループ化してもよい（例えば、方向を８分割する）。この場合、ＣＰＵ２０２は、各グループについてヒストグラムを求め、大きさ成分が小さい位置への集中度合（小さい動きベクトルの集中度合）が最大のグループの方向を、手振れ方向と判定する。そして、ＣＰＵ２０２は、判定された手振れ方向のグループの中から、大きさ成分の閾値に基づいて手振れ動きベクトルを識別する。
【００４６】
図１１は、動きベクトル閾値処理（Ｓ８０２）の結果を例示する図である。図１１に示されるように、動領域の動きベクトルのみが削除されずに残っている。
【００４７】
Ｓ８０３で、ＣＰＵ２０２は、動きベクトル強度合算処理を行う。具体的には、ＣＰＵ２０２は、Ｓ８０１において動きベクトルを検出した全フレームの動きベクトル量（大きさ成分）を、領域ごとに合算する。この処理は、動領域と静領域とを分割するための処理であるため、ＣＰＵ２０２は、ベクトルの方向成分については考慮せず、量（大きさ成分）のみの合算値を取得する。図１２は、動きベクトル強度合算処理（Ｓ８０３）を例示する図である。図１２においては、動きベクトル量が大きい位置ほど白く、小さい位置ほど黒く示されている。
【００４８】
Ｓ８０４で、ＣＰＵ２０２は、合算強度に対してＬＰＦ処理（ローパスフィルタ処理）を実行する。なお、この処理は、動きベクトルの解像度が全ピクセルで無い場合などに、特に有効である。そのため、ＣＰＵ２０２は、動ベクトル検出処理精度などに応じて、Ｓ８０４の処理を省略しても構わない。
【００４９】
図１３は、ＬＰＦ処理（Ｓ８０４）の結果として得られる動きベクトル量マップを例示する図である。図１３においては、動きベクトル量が大きい位置ほど白く、小さい位置ほど黒く示されている。
【００５０】
Ｓ８０５で、ＣＰＵ２０２は、閾値処理により動きベクトル量マップを二値化することにより、動静領域マップを生成する。ここで用いる閾値（第２の閾値）としては、動きベクトルを合算したフレーム数などに依存した値を用いるものとする。図１４は、このようにして求められた動静領域マップを例示する図である。図１４に示すように、動領域である川の部分が白で、静領域である他の部分が黒で表現される。即ち、ＣＰＵ２０２は、大きさ成分の合算値が閾値以上の領域を動領域として判定し、大きさ成分の合算値が閾値未満の領域を静領域として判定する。
【００５１】
図１５は、動領域フレーム合成処理（Ｓ３０６）の詳細を示すフローチャートである。Ｓ１５０１で、ＣＰＵ２０２は、Ｓ３０３において選択された静領域フレームを作業用メモリ領域２０５へと読み込む。Ｓ１５０２で、ＣＰＵ２０２は、処理対象フレームのインデックスＮを１にセットする。
【００５２】
Ｓ１５０３で、ＣＰＵ２０２は、フレームＮと静領域フレームとの間で対応点抽出処理を行い、フレームＮを静領域フレームへと合成する際のシフト量を算出する。対応点抽出処理において、ＣＰＵ２０２は、Ｓ８０１において作業用メモリ領域２０５に記録した動きベクトル検出結果を用いる。なお、現在の処理対象フレームであるフレームＮについてＳ８０１において動きベクトル検出を実施していない場合、ＣＰＵ２０２は、線形補間演算を実施する。即ち、ＣＰＵ２０２は、フレームＮに隣接する、Ｓ８０１において動きベクトル検出が実施されたフレームのベクトル検出結果及び対応点シフト量を用いて、線形補間演算により、フレームＮの対応点シフト量の予測値を算出する。これにより、演算の負荷を軽減することができる。但し、このような予測値を算出する代わりに、ＣＰＵ２０２は、Ｓ８０１において動きベクトル検出が実施されていないフレームについて、動きベクトル検出を実施することにより対応点シフト量を算出してもよい。
【００５３】
Ｓ１５０４で、ＣＰＵ２０２は、Ｓ１５０３において算出したシフト量に基づいてフレームＮをシフトして、フレームＮの動領域を静領域フレームに合成する。このとき、ＣＰＵ２０２は、動静領域マップ（図１４）を参照することにより、フレームＮの動領域を識別する。なお、合成処理時の画素値合算の比率については、本実施形態においては、日中撮影時の反射光に適したものとして、合成を行うフレーム数で割り算した値を用いることとする。しかしながら、画素値合算の比率はこれに限定されない。例えば、夜間撮影されたことが判定された場合には、動物体が発光体の場合に適した例として、フレーム数で割り算しない値を用いてもよい。
【００５４】
Ｓ１５０５で、ＣＰＵ２０２は、フレームＮが処理対象フレームの中での最終フレームであるか否かを判定する。フレームＮが最終フレームでない場合、ＣＰＵ２０２は、Ｓ１５０６においてＮを１つインクリメントした後、再度Ｓ１５０３へと処理を進める。このように、Ｓ３０４において決定されたフレーム間隔Ｆｉｎｔよりも高い密度のフレームを用いて動領域の合成を行うことにより、滑らかな合成結果を得ることができる。フレームＮが最終フレームの場合、ＣＰＵ２０２は、本フローチャートの処理を終了して図３のフローチャートに戻る。
【００５５】
なお、図１５においては、全処理対象フレームそれぞれの動領域に対応する領域を合成することにより、結果画像の動領域に対応する領域を生成するものとしたが、本実施形態はこれに限定されない。一般化すると、ＣＰＵ２０２は、処理対象フレームのうちのＹフレーム（ＹはＸより大きい整数）それぞれの動領域に対応する領域を合成することにより、結果画像の動領域に対応する領域を生成する。この場合でも、ＹがＸより大きいので（即ち、動領域のための合成対象フレーム数が静領域のための合成対象フレーム数よりも多いので）、静領域の画像ブレの抑制と、動領域に対するスローシャッター効果とを両立することができる。
【００５６】
図１６は、動領域フレーム合成処理により得られる結果画像を例示する図である。動静領域マップに従って、各フレームの動領域を静領域フレームに合成することにより、静領域についてはブレを生じさせずに解像感を維持したまま、動領域についてスローシャッター撮影のように滑らかに動きが表現されている結果画像を生成することができる。
【００５７】
以上説明したように、第１の実施形態によれば、スマートフォン２０１は、Ｆｉｎｔフレーム離れた２つのフレーム間の動きベクトルの大きさが閾値Ｔｈ１以上となるＦｉｎｔを識別する。そして、スマートフォン２０１は、動画からＦｉｎｔフレーム間隔で検出した動きベクトルに基づいて、動画の撮影画角に対応する領域を動領域と静領域とに分割する。そして、スマートフォン２０１は、複数のフレームのうちのＸフレーム（Ｘは１以上の整数）それぞれの静領域に対応する領域と、複数のフレームのうちのＹフレーム（ＹはＸより大きい整数）それぞれの動領域に対応する領域とを合成する。これにより、手振れの発生する条件下で撮影を行う場合であっても、動領域と静領域とを高精度で分割し、静止領域の画像ブレを軽減しつつ、スローシャッター効果を持つ画像を生成することが可能となる。
【００５８】
［第２の実施形態］
第２の実施形態では、デジタルカメラ１０１による動画撮影前のライブ撮影動作（ＥＶＦ動作）を利用して、フレーム間隔決定処理（図７）の処理負荷を軽減したり、動領域を滑らかに合成することを可能にしたりする構成について説明する。本実施形態において、デジタルカメラ１０１及びスマートフォン２０１の基本的な構成は第１の実施形態と同様である（図１及び図２参照）。以下、主に第１の実施形態と異なる点について説明する。
【００５９】
図１７は、デジタルカメラ１０１のＥＶＦ動作のフローチャートである。本フローチャートの各ステップの処理は、特に断らない限り、デジタルカメラ１０１のＣＰＵ１０５が、制御プログラム領域１０８に格納されたプログラムを実行することにより実現される。
【００６０】
Ｓ１７０１で、ＣＰＵ１０５は、撮像部１０３により撮像され画像処理プロセッサ１０６により現像処理されたライブ画像を取得する。Ｓ１７０２で、ＣＰＵ１０５は、姿勢センサ１０４からデジタルカメラ１０１の姿勢情報を取得する。Ｓ１７０３で、ＣＰＵ１０５は、Ｓ１７０２において取得したカメラ姿勢情報を、作業用メモリ領域１０９に一時的に記録された前回のカメラ姿勢情報と比較し、大きな姿勢変化があるか否かを判定する。大きな姿勢変化がある場合、ＣＰＵ１０５は処理をＳ１７０６に進め、大きな姿勢変化がない場合、ＣＰＵ１０５は処理をＳ１７０４に進める。大きな姿勢変化があった場合には、ライブ画像が後述のフレーム間隔初期値ＦｉｎｔＥＶＦの決定処理に適していないため、Ｓ１７０４及びＳ１７０５の処理がスキップされる。
【００６１】
Ｓ１７０４で、ＣＰＵ１０５は、Ｓ１７０１において取得したライブ画像と、作業用メモリ領域１０９に一時的に記録された前回のライブ画像との間の動きベクトル（手振れ動きベクトル及び被写体動きベクトル）を検出する。なお、本実施形態における動きベクトル検出の方式としては勾配法を用いることとするが、動きベクトル検出の方式はこれに限定されない。一例として、本実施形態では、ＣＰＵ１０５は、フレーム内の複数の動きベクトルを方向と量に基づいてグループへの分類を行う。そして、ＣＰＵ１０５は、一番数の多い動きベクトルを含むグループを、手振れ動きベクトルのグループと判定し、それ以外のグループを、被写体動きベクトルのグループと判定する。
【００６２】
Ｓ１７０５で、ＣＰＵ１０５は、手振れ動きベクトルに対する被写体動きベクトルの大きさ（例えば、被写体動きベクトルのグループに含まれる動きベクトルの最大値）の比率を算出する。そして、ＣＰＵ１０５は、算出した比率に基づいて、予め設定されたテーブルを参照することにより、フレーム間隔初期値ＦｉｎｔＥＶＦを決定する（ＦｉｎｔＥＶＦが以前に決定されている場合、更新が行われる）。例えば、手振れ動きベクトルに対する被写体動きベクトルの大きさの比率が１０倍であるなど、その判別が比較的容易である場合を考える。この場合、動領域／静領域分割処理（図８）において動画から動きベクトルを検出する処理においても同様に、１フレーム間隔で手振れ動きベクトルと被写体動きベクトルとを容易に判別できる。そのため、このような場合には、ＣＰＵ１０５は、ＦｉｎｔＥＶＦを１に設定する。手振れ動きベクトルに対する被写体動きベクトルの大きさの比率が小さくなるに従い、短いフレーム間隔ではこれらの判別が難しくなる。そのため、テーブルには、小さい比率に対応するＦｉｎｔＥＶＦには大きな値が設定されている。例えば、１倍のときは１０、２倍の時は９、３倍の時は８、・・・というように値が設定されている。なお、テーブルは、動画のフレームレート毎に用意されていてもよい。
【００６３】
Ｓ１７０６で、ＣＰＵ１０５は、Ｓ１７０１で取得したライブ画像を表示部１１１に表示する。Ｓ１７０７で、ＣＰＵ１０５は、Ｓ１７０１で取得したライブ画像及びＳ１７０２で取得したカメラ姿勢情報を作業用メモリ領域１０９に一時的に記録する。Ｓ１７０８で、ＣＰＵ１０５は、入力部１１２を介してユーザから撮影指示が行われたか否かを判定する。撮影指示が行われていない場合、ＣＰＵ１０５は処理をＳ１７０１に戻す。撮影指示が行われた場合、ＣＰＵ１０５はＥＶＦ動作を終了し、動画の撮影を行う。ＣＰＵ１０５は、撮影した動画に対して、ＦｉｎｔＥＶＦを関連付けて記録する。動画に関連付けられたＦｉｎｔＥＶＦは、図７のＳ７０１においてｎの初期値として使用される。これにより、手振れ動きベクトルに対する被写体動きベクトルの大きさの比率が小さい場合であっても、図７の処理において動きベクトルの大きさが閾値Ｔｈ１以上となるフレーム間隔Ｆｉｎｔを少ない試行回数で識別することが可能となる。これにより、フレーム間隔決定処理（図７）の処理負荷が軽減される。
【００６４】
なお、ＣＰＵ１０５は、Ｓ１７０５において、被写体動きベクトルの大きさに基づいて動画の撮影のためのフレームレートを設定してもよい。例えば、被写体動きベクトルの大きさが例えば画面幅の１／５であった場合、せいぜい４つのフレーム画像から合成処理を行うことになる。そのため、現在の被写体については動領域を滑らかに合成することが困難である可能性がある。そこで、ＣＰＵ１０５は、動画のフレームレートを上げる設定変更を行う。これにより、被写体の同じ距離の移動に対して合成に使用可能なフレーム数が増えるため、より滑らかな合成が可能になる。反対に、被写体動きベクトルが小さい場合、ＣＰＵ１０５は、動画のフレームレートを下げる設定変更を行う。これにより、同じ数のフレーム間隔のフレーム間において検出される動きベクトルを大きくすることができる。
【００６５】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６６】
２０１…スマートフォン、２０２…ＣＰＵ、２０３…メモリ、２０４…制御プログラム領域、２０５…作業用メモリ領域、２０６…通信部、２０７…表示部、２０８…入力部、２０９…ＳＳＤ
【図１】
0006667372.tif 000002
【図２】
0006667372.tif 000003
【図３】
0006667372.tif 000004
【図４】
0006667372.tif 000005
【図５】
0006667372.tif 000006
【図６Ａ】
0006667372.tif 000007
【図６Ｂ】
0006667372.tif 000008
【図７】
0006667372.tif 000009
【図８】
0006667372.tif 000010
【図９】
0006667372.tif 000011
【図１０】
0006667372.tif 000012
【図１１】
0006667372.tif 000013
【図１２】
0006667372.tif 000014
【図１３】
0006667372.tif 000015
【図１４】
0006667372.tif 000016
【図１５】
0006667372.tif 000017
【図１６】
0006667372.tif 000018
【図１７】
0006667372.tif 000019