図1は、本発明の実施形態による撮像装置100の構成例を示すブロック図である。撮像装置100は、デジタルカメラ、デジタルビデオカメラ、カメラ機能付き携帯電話、カメラ付きコンピュータなどのカメラ機能を備える電子機器である。撮像装置100は、光学系101、撮像素子102、CPU103、一次記憶装置104、画像処理装置105、記録媒体106、二次記憶装置107、表示部108及び操作部109を有する。
光学系101は、レンズ、シャッタ及び絞りを有し、CPU103の制御によって被写体の光を撮像素子102に結像させる。撮像素子102は、CCDイメージセンサ又はCMOSイメージセンサなどであり、光学系101を通って結像した光を電気信号に変換する。撮像素子102は、光を電気信号に変換する複数の光電変換素子によって構成されており、1つの光電変換素子に対応する電気信号を画素と呼ぶ。
CPU103は、入力された信号や予め記憶されたプログラムに従い、撮像装置100を構成する各部を制御することにより、撮像装置100の機能を実現する。一次記憶装置104は、例えばRAMのような揮発性メモリであり、一時的なデータを記憶し、CPU103の作業用に使われる。また、一次記憶装置104に記憶されている情報は、画像処理装置105で利用されたり、記録媒体106へ記録されたりもする。
画像処理装置105は、撮像素子102で変換された電気信号を処理することにより、撮影画像を生成する。画像処理装置105は、電気信号を連続的に処理して複数枚の撮影画像を生成し、これら撮影画像の一枚を1フレームとして複数フレームにより構成される入力動画像を生成することができる。
記録媒体106は、一次記憶装置104に記憶されている撮影画像のデータなどを記録する。なお、記録媒体106は、例えば半導体メモリカードのように撮像装置100から取り外し可能であり、記録されたデータはパーソナルコンピュータなどに装着してデータを読み出すことが可能である。つまり、撮像装置100は、記録媒体106の着脱機構及び読み書き機能を有する。二次記憶装置107は、例えばEEPROMのような不揮発性メモリであり、撮像装置100を制御するためのプログラム(ファームウェア)や各種の設定情報を記憶し、CPU103によって利用される。
表示部108は、撮影時のビューファインダ画像の表示、撮影画像の表示、対話的な操作のためのGUI画像などの表示を行う。操作部109は、ユーザの操作を受け付けてCPU103へ入力情報を伝達する入力デバイス群であり、例えばボタン、レバー、タッチパネル等、又は音声や視線などを用いた入力機器である。
撮像装置100は、画像処理装置105が撮影画像又は動画像に適用する画像処理のパターンを複数有し、パターンを撮像モードとして操作部109から設定可能である。画像処理装置105は、いわゆる現像処理と呼ばれる画像処理、撮影モードに応じた色調の調整なども行う。なお、画像処理装置105の機能の少なくとも一部は、CPU103がプログラムを実行することにより実現してもよい。また、CPU103、一次記憶装置104、画像処理装置105、記録媒体106、二次記憶装置107を備えた情報処理装置が、撮像装置100が撮影した画像を取得して、現像処理及び撮影モードに応じた色調の調整などを行ってもよい。
図2は、シネマグラフを生成する画像処理方法の流れを示すフローチャートである。まず、ステップS101では、画像処理装置(移動体抽出部)105は、撮像素子102により生成された入力動画像から移動体を抽出する。具体的には、画像処理装置105は、動画像とは別にあらかじめ撮影された撮影画像と動画像の各フレームとの差分を算出し、差分が閾値を超える画素を差分画素とし、近接する差分画素のうち色や輝度が類似する周囲の画素を移動体として抽出する。つまり、移動体とは、色や輝度が類似する近接した画素の集合であり、動画像に記録された物体の一部である。動画像に記録された移動体は一つ又は複数であってもよく、動画像の一部又は全部のフレームに含まれていてもよい。ユーザが動画像から選択した1つのフレーム又は画像処理装置105が自動的に選択した1つのフレームを用いて、動画像の各フレームとの差分を算出しても構わない。
次に、ステップS102では、画像処理装置105は、ステップS101で抽出した複数の移動体のうち、シネマグラフにおいて動画像として再生する対象を移動体として選択する。移動体の選択は、表示部108に対して複数の移動体を順次又は同時に表示して、操作部109によりユーザが選択することにより行われる。画像処理装置105は、ユーザが選択した移動体と近接する移動体を選択結果に加えると、選択操作が難しい小さな移動体やユーザが見落とした移動体を含めることができる。
次に、ステップS103では、画像処理装置105は、ステップS102で選択された一つ又は複数の移動体に対して、動画像として再生するフレーム区間を選択する。再生するフレーム区間の選択は、表示部108に対して複数のフレームを順次又は同時に表示して、操作部109によりユーザが選択することにより行われる。画像処理装置105は、ユーザが選択したフレームと近接するフレームを選択結果に加えたり、フレームを合成又は編集したものを加えたりすることで、繰り返し再生時に、再生区間の終了フレームと開始フレームとの差分による違和感を低減できる。再生するフレーム区間は、移動体毎に異なってもよい。ただし、移動体毎に異なるフレーム区間を選択すると、移動体間で動作が食い違い、違和感のあるシネマグラフとなる場合がある。
図19(a)及び(b)は、移動体毎に異なるフレーム区間を選択することより、移動体間で動作が食い違うことで違和感が生じるシネマグラフの一例を示す。影302は、テーブル301の影である。ボール303は、テーブル301上で弾んでいる。影304は、ボール303の影である。図19(a)において、フレームF1からフレームF7は、動画像の一部である。ボール303及びボールの影304は、離れているため、異なる移動体として処理される。ボール303は、フレームF1及びF5の類似度が高いので、フレームF1が開始フレーム、フレームF5が終了フレームとして選択される。一方、ボールの影304は、フレームF3及びF7の類似度が高いので、フレームF3が開始フレーム、フレームF7が終了フレームとして選択される。図19(b)は、その選択されたフレームF1〜F5のボール303の動画像とフレームF3〜F7のボールの影304の動画像を合成したシネマグラフである。このシネマグラフでは、ボール303の動きとホールの影304の動きとが合っていないため違和感が生じる。例えば、フレームF1では、ボール303は下方に位置するのに、ボールの影304はボール303が上方に位置する時の影である。また、フレームF3では、ボール303は上方に位置するのに、ボールの影304はボール303が下方に位置する時の影である。このように、関連のある移動体間で異なる開始フレーム及び終了フレームを選択すると、移動体間の動作の不整合による違和感を生じる場合がある。本実施形態では、このような違和感を画像処理装置105により低減する処理を図4に示し、詳細を後述する。
図2に戻り、次に、ステップS104では、画像処理装置(静止画像生成部)105は、入力動画像を基に、静止させる背景又は前景を代表静止画像として生成する。代表静止画像の生成は、表示部108に対して複数のフレームを順次又は同時に表示して、操作部109によりユーザが選択することにより行われる。代表静止画像は一つ又は複数のレイヤによって構成され、各レイヤは一部又は全部の画素によって構成される。画像処理装置105は、ユーザが選択したフレームと近接するフレームに変更したり、フレームを合成又は編集したものを生成したりすることで、不要な移動体を除去したり、ノイズを低減することができる。
次に、ステップS105では、画像処理装置(合成部)105は、ステップS103で選択又は生成された再生フレーム区間の動画像と、ステップS104で生成された代表静止画像を合成する。それぞれの移動体は、代表静止画像のレイヤの前面、背面又は途中に配置されてもよい。
図3は、図2の処理を説明するためのフレームF1〜F12の動画像の一例を示す図である。レール201は、ループを含むレールである。影202は、ループ201の影である。フレームF3において、移動体203及び204が存在し、移動体205は、移動体203の影であり、移動体203との関連度が高い。移動体206は、移動体204の影であり、移動体204との関連度が高い。フレームF5において、移動体207は、移動体203の影であり、移動体203との関連度が高い。移動体208は、移動体204の影であり、移動体204との関連度が高い。フレームF7において、移動体209は、移動体203の影であり、移動体203との関連度が高い。移動体210は、移動体204の影であり、移動体204との関連度が高い。フレームF9において、移動体211は、移動体203の影であり、移動体203との関連度が高い。移動体212は、移動体204の影であり、移動体204との関連度が高い。
フレームF3では、移動体205は移動体203の影であり、移動体206は移動体204の影である。フレームF4では、移動体205及び206が交差し、移動体205及び206の面積、形状、色及び輝度の差異が小さい場合には、移動体205及び206の区別がつかなくなる。そのため、フレームF5の移動体207及び208は、フレームF3の移動体205及び206とは別の移動体として認識されてしまう。
同様に、フレームF6では、移動体207及び208が交差し、移動体207及び208の面積、形状、色及び輝度の差異が小さい場合には、移動体207及び208の区別がつかなくなる。そのため、フレームF7の移動体209及び210は、フレームF5の移動体207及び208とは別の移動体として認識されてしまう。
同様に、フレームF8では、移動体209及び210が交差し、移動体201及び210の面積、形状、色及び輝度の差異が小さい場合には、移動体209及び210の区別がつかなくなる。そのため、フレームF9の移動体211及び212は、フレームF7の移動体209及び210とは別の移動体として認識されてしまう。
したがって、図2のステップS101では、画像処理装置105は、10個の移動体203〜212を別の移動体として抽出する。ステップS102では、画像処理装置105は、移動体203〜212から合成に利用する移動体を選択する。
図4は、図2のステップS103の処理の詳細を示すフローチャートであり、移動体間で動作が食い違うことにより起こる違和感を低減するための処理を示す。ステップS201では、画像処理装置105は、ステップS102で選択された移動体間の関連度を算出する。関連度の算出は、一つ又は複数のフレームを利用して行われる。画像処理装置105は、関連する移動体間の関連度が高く、関連しない移動体間の関連度が低くなるように関連度を算出することで、移動体間で異なるフレーム区間を再生した場合に起こる違和感を予測することができる。つまり、移動体間の関連度が高ければ違和感が強く、移動体間の関連度が低ければ違和感が弱い。
図10は、図3の例に対して、図4のステップS201で算出する移動体間の関連度の一例を示す。関連度として、移動体203〜212間の移動体交差o、移動体接触t、軌跡交差p、奥行交差c、座標極値d、速度極値sが算出される。画像処理装置105がこのような関連度を算出する手順を、図5〜図8を参照しながら後述する。
図4に戻り、ステップS202では、画像処理装置(関連判定部)105は、移動体間の関連度が閾値よりも高ければそれらの移動体が関連する移動体であると判定し、移動体間の関連度が閾値よりも低ければそれらの移動体が関連しない移動体であると判定する。関連する移動体と判定された場合には、以降の処理において、関連する移動体が1つの移動体として取り扱われる。関連する移動体は、近接していても離れていても構わない。また、ある移動体が複数の移動体と関連する場合には、関連する全ての移動体を1つの移動体として取り扱う。
図11は、ステップS202で、図10の関連度を基に判定された関連の判定結果の一例を示す。“TRUE”は、第1の移動体及び第2の移動体の間に関連ありの判定結果を示し、“FALSE”は、第1の移動体及び第2の移動体の間に関連なしの判定結果を示す。図11の例では、移動体203は、全ての移動体との関連が“TRUE”(関連あり)と判定されており、10個の移動体203〜212の全てが1つの移動体として取り扱われる。
図4に戻り、ステップS203では、画像処理装置105は、それぞれの移動体に対して、動画像として再生する開始フレームから終了フレームまでを指す再生区間の候補を選出する。具体的には、画像処理装置(再生区間生成部)105は、第1の移動体及び第2の移動体の間に関連がないと判定された場合には、入力動画像を基に第1の移動体の再生フレーム区間の動画像及び第2の移動体の再生フレーム区間の動画像を別々に生成する。これに対し、第1の移動体及び第2の移動体の間に関連があると判定された場合には、画像処理装置(再生区間生成部)105は、入力動画像を基に第1の移動体及び第2の移動体を含む共通の1個の再生フレーム区間の動画像を生成する。
図12は、ステップS203で、図3の例に対して、画像処理装置105が選出した再生区間の候補の一例を示す。図12の例では、フレームF1〜F11の再生区間、フレームF2〜F10の再生区間、フレームF3〜F9の再生区間、フレームF4〜F8の再生区間、フレームF5〜F7の再生区間が候補として選出されている。ステップS203の処理の詳細は、図9を参照しながら後述する。
図4に戻り、ステップS204では、画像処理装置105は、移動体毎に再生区間を選択する。具体的には、画像処理装置105は、ステップS203において複数の再生区間の候補が選出された場合には、表示部108に対して再生区間を順次又は同時に再生させ、操作部109によるユーザの選択により、再生区間を選択する。画像処理装置105は、ユーザが選択した再生区間と近接する再生区間に変更したり、再生区間を合成又は編集したものを、再生区間として選択してもよい。
また、画像処理装置105は、再生区間の長さや他の移動体との関連度に応じて、再生区間の候補を除外した上で、表示部108に表示すれば、ユーザが再生区間を選択する手間を軽減できる。例えば、2つ以上の再生区間の候補を直接内包する再生区間の候補を除外した上で、他の再生区間の候補に直接内包される再生区間の候補を除外する方法が挙げられる。図12において、フレームF1〜F11の再生区間の候補は、フレームF2〜F10の再生区間の候補を直接内包しており、フレームF2〜F10の再生区間の候補は、フレームF3〜F9の再生区間の候補を直接内包している。そのため、フレームF2〜F10の再生区間の候補及びフレームF3〜F9の再生区間の候補が除外される。同様の除外処理により、残る再生区間の候補は、フレームF1〜F11の再生区間の候補のみとなる。
また、フレームF12以降にフレームF2〜F11が繰り返された場合、フレームF1〜F21が再生区間の候補として選出される。一方、フレームF1〜F21は、フレームF1〜F11とフレームF11〜F21を直接内包するため除外され、フレームF1〜F11とフレームF11〜F21が再生区間の候補として選出される。
図5は、図4のステップS201において移動体間の関連度を算出する処理を示すフローチャートである。ステップS301では、画像処理装置105は、関連度算出の準備を行う。ステップS301の処理の詳細は、図6を参照しながら後述する。
次に、ステップS302では、画像処理装置105は、第1の移動体を示すインデックスidSを0に初期化する。次に、ステップS303では、画像処理装置105は、第2の移動体を示すインデックスidDをidS+1に設定する。次に、ステップS304では、画像処理装置105は、第1の移動体idS及び第2の移動体idDの関連度を算出する。ステップS304の処理の詳細は、図7及び図8を参照しながら後述する。
次に、ステップS305では、画像処理装置105は、第2の移動体を示すインデックスidDをインクリメントする。次に、ステップS306では、画像処理装置105は、第2の移動体idDの候補が最後の候補であるか否かを判定する。最後の候補でない場合には、ステップS304に戻り、関連度の算出を行う。最後の候補である場合には、ステップS307へ進む。
ステップS307では、画像処理装置105は、第1の移動体を示すインデックスidSをインクリメントする。次に、ステップS308では、画像処理装置105は、第1の移動体idSの候補が最後の候補であるか否かを判定する。最後の候補でない場合には、ステップS303に戻り、第2の移動体を示すインデックスidDをidS+1に設定する。最後の候補である場合には、処理を終了する。
画像処理装置105は、上記のステップS301〜S308の処理により、図3の例に対して、図10に示した関連度の一例を算出することができる。
図6は、図5のステップS301の関連度算出準備処理の詳細を示すフローチャートである。ステップS401では、画像処理装置105は、フレームを示すインデックスf及び移動体を示すインデックスidを0に初期化する。
次に、ステップS402では、画像処理装置105は、ステップS101で抽出された移動体の画像から、移動体idであれば‘1’、移動体idでなければ‘0’を示すフレームf毎の二値画像B(id,f)を生成する。この時、画像処理装置105は、二値画像B(id,f)に対して膨張処理及び収縮処理を繰り返すことで、移動体の一部が移動体として抽出されない中抜けを補うとともに移動体の境界を広げる。画像処理装置105は、移動体の境界を広げることで、同一フレームにおいてある移動体と別の移動体との交差を判定することができる。
図13(a)〜(h)は、図3に対応し、ステップS402において画像処理装置105が生成した移動体の二値画像B(id,f)の一例を示す。図13(a)は、フレームF3における移動体203の二値画像を示す。図13(b)は、フレームF3における移動体204の二値画像を示す。図13(c)は、フレームF3における移動体205の二値画像を示す。図13(d)は、フレームF3における移動体206の二値画像を示す。
図13(e)は、フレームF4における移動体203の二値画像を示す。図13(f)は、フレームF4における移動体204の二値画像を示す。図13(g)は、フレームF4における移動体205の二値画像を示す。図13(h)は、フレームF4における移動体206の二値画像を示す。なお、各二値画像の移動体の中央に示された白丸は、各移動体の中心座標を示しており、実際の画素値は‘1’である。
図3のフレームF4に示すように、移動体205及び206が交差している。したがって、フレームF4において、移動体205と移動体206の区別がつかないため、ステップS402で生成した図13(g)の二値画像及び図13(h)の二値画像には、移動体205及び206の両方を含めている。また、図3のフレームF6の移動体207及び208も区別がつかないため、同様の二値画像が生成される。
図6に戻り、ステップS403では、画像処理装置105は、移動体idの二値画像の中心座標(位置)L(id,f)をフレームf毎に求める。図14(a)〜(d)は、ステップS403において画像処理装置105が求めた中心座標の軌跡の一例を示す。図14(a)は、移動体203の中心座標の軌跡を示す。図14(b)は、移動体204の中心座標の軌跡を示す。図14(c)は、移動体205の中心座標の軌跡を示す。図14(d)は、移動体206の中心座標の軌跡を示す。
ステップS404では、画像処理装置105は、移動体idの中心座標の移動速度V(id,f)をフレームf毎に算出する。図15(a)〜(d)は、ステップS404において画像処理装置105が算出した中心座標の移動速度V(id,f)の一例を示す。図15(a)は、移動体203の移動速度を示す。図15(b)は、移動体204の移動速度を示す。図15(c)は、移動体205の移動速度を示す。図15(d)は、移動体206の移動速度を示す。図15(c)及び(d)には、移動体207〜212の移動速度を合わせて示したが、移動体207〜212の移動速度はそれぞれ独立した線分となっている。
ステップS405では、画像処理装置105は、移動体idまでの距離を奥行D(id,f)としてフレームf毎に算出する。画像処理装置105は、二枚の撮影画像を基に各画素の視差を求めることで、奥行D(id,f)を算出することができる。視差が小さければ奥行D(id,f)が浅く、視差が大きければ奥行D(id,f)が深い。
ステップS406では、画像処理装置105は、移動体を示すインデックスidをインクリメントする。次に、ステップS407では、画像処理装置105は、移動体idの候補が最後の候補であるか否かを判定する。最後の候補でない場合には、ステップS402に戻り、二値画像を生成する。最後の候補である場合には、ステップS408に進む。
ステップS408では、画像処理装置105は、フレームを示すインデックスfをインクリメントする。次に、ステップS409では、画像処理装置105は、フレームfが最後のフレームであるか否かを判定する。最後のフレームでない場合には、ステップS402に戻り、二値画像を生成する。最後のフレームである場合には、処理を終了する。
図7は、図5のステップS304の処理の詳細を示すフローチャートである。ステップS501では、画像処理装置105は、フレームを示すインデックスf、第1及び第2の移動体が交差したフレーム数o、第1及び第2の移動体が接触したフレーム数t、第1及び第2の移動体の軌跡が交差したことを示すパラメータpを0に初期化する。
次に、ステップS502では、画像処理装置105は、ステップS402で生成した二値画像から、第1の移動体の軌跡を示す二値画像P1、第2の移動体の軌跡を示す二値画像P2、フレームfにおける第1の移動体又は第2の移動体を示す二値画像Mを生成する。画像処理装置105は、二つの二値画像を基に、画素毎に論理和を算出することで、移動体が通過したか否か、又は移動体が存在するか否かを二値画像として示すことができる。
図16(a)及び(b)は、ステップS502において画像処理装置105が生成した二値画像Mの一例を示す。図16(a)は、フレームF3における二値画像Mを示し、移動体203及び204を含む。図16(b)は、フレームF4における二値画像Mを示し、移動体203及び204を含む。
図7に戻り、ステップS503では、画像処理装置105は、第1の移動体の二値画像B(idS,f)から第1の移動体が存在する座標の数b1を算出する。同様に、画像処理装置105は、第2の移動体の二値画像B(idD,f)から第2の移動体が存在する座標の数b2、第1の移動体又は第2の移動体を示す二値画像Mから第1の移動体又は第2の移動体の存在する座標の数mを算出する。
同一フレームの各画素に存在する移動体は、第1の移動体又は第2の移動体であり、ステップS402で行う膨張処理によって移動体の境界が広がった領域でのみ交差を判定できる。ステップS502及びS503では、フレームfにおける第1の移動体の二値画像及びフレームf+1における第2の移動体の二値画像を利用したり、フレームf+1における第1の移動体の二値画像及びフレームfにおける第2の移動体の二値画像を利用できる。これにより、交差の検出精度を高めることができる。
次に、ステップS504では、画像処理装置105は、座標数b1と座標数b2の和が座標数mと等しいか否かを判定する。等しい場合には、ステップS508に進み、等しくない場合には、ステップS505に進む。
図16(a)において、二値画像Mを示す座標の数mは、図13(a)における移動体203を示す座標数b1と図13(b)における移動体204を示す座標数b2の和と等しい。これは、フレームF3において移動体203と移動体204は交差していないことを示している。この場合、ステップS504からステップS508に進む。
一方、図16(b)において、二値画像Mを示す座標の数mは、図13(e)における移動体203を示す座標数b1と図13(f)における移動体204を示す座標数b2の和より小さい。これは、フレームF4において、移動体203と移動体204が交差していることを示している。この場合、ステップS504からステップS505に進む。
ステップS505では、画像処理装置105は、移動体が交差したフレーム数oをインクリメントし、第1の移動体の奥行D(idS,f)と第2の移動体の奥行D(idD,f)の差分の絶対値hを算出する。
次に、ステップS506では、画像処理装置105は、奥行の差分の絶対値hが閾値THよりも大きいか判定する。大きい場合には、第1及び第2の移動体が接触していないと判定し、ステップS508へ進み、大きくない場合には、第1及び第2の移動体が接触していると判定し、ステップS507に進む。ステップS507では、画像処理装置105は、移動体が接触したフレーム数tをインクリメントする。その後、ステップS508へ進む。
ステップS508では、画像処理装置105は、フレームを示すインデックスfをインクリメントする。次に、ステップS509では、画像処理装置105は、フレームfが最後のフレームであるか否かを判定する。最後のフレームでない場合には、ステップS502に戻る。最後のフレームである場合には、ステップS510に進む。
ステップS510では、画像処理装置105は、第1の移動体の軌跡を示す二値画像P1及び第2の移動体の軌跡を示す二値画像P2の論理和により、第1の移動体又は第2の移動体の軌跡を示す二値画像Nを生成する。
図17(a)〜(c)は、ステップS510において画像処理装置105が生成した二値画像Nの一例を示す。図17(a)は、ステップS502で生成した移動体203の軌跡を示す二値画像P1を示す。図17(b)は、ステップS502で生成した移動体204の軌跡を示す二値画像P2を示す。図17(c)は、ステップS510で生成した二値画像Nを示す。二値画像Nは、二値画像P1及び二値画像P2の論理和の画像である。
図7に戻り、ステップS511では、画像処理装置105は、第1の移動体の軌跡を示す二値画像P1を基に第1の移動体が存在する座標の数p1を算出する。同様に、画像処理装置105は、第2の移動体の軌跡を示す二値画像P2を基に第2の移動体が存在する座標の数p2を算出し、第1の移動体又は第2の移動体の軌跡を示す二値画像Nを基に第1の移動体又は第2の移動体が存在する座標の数nを算出する。
次に、ステップS512では、画像処理装置105は、座標数p1と座標数p2の和が座標数nと等しいか否かを判定する。等しい場合には、処理を終了し、等しくない場合には、ステップS513に進む。ステップS513では、画像処理装置105は、移動体の軌跡が交差したことを示すパラメータpに1を設定し、処理を終了する。
図17(c)の二値画像Nを示す座標の数nは、図17(a)の移動体203を示す座標数p1と図17(b)の移動体204を示す座標数p2の和より小さい。これは、フレームF1〜F12において、移動体203と移動体204の軌跡が交差していることを示している。この場合、ステップS512からステップS513に進む。
図8は、図5のステップS304の別の処理を示すフローチャートである。ステップS601では、画像処理装置105は、フレームを示すインデックスf、第1及び第2の移動体までの奥行が交差したフレーム数cを0に初期化する。さらに、画像処理装置105は、第1及び第2の移動体の座標が極値をとるフレームが一致するフレーム数d、第1及び第2の移動体の移動速度が極値をとるフレームが一致するフレーム数sを0に初期化する。
次に、ステップS602では、画像処理装置105は、第1の移動体までの奥行及び第2の移動体までの奥行が交差したか否かを判定する。具体的には、画像処理装置105は、フレームf及びフレームf+1における第1の移動体の奥行D(idS,f),D(idS,f+1)とフレームf及びフレームf+1における第2の移動体の奥行D(idD,f),D(idD,f+1)を基に判定する。
次に、ステップS603では、画像処理装置105は、第1の移動体及び第2の移動体までの奥行の交差の有無を確認する。交差した場合には、ステップS604に進み、交差していない場合には、ステップS605に進む。ステップS604では、画像処理装置105は、奥行が交差したフレーム数cをインクリメントする。その後、ステップS605に進む。
ステップS605では、画像処理装置105は、フレームf+1の第1の移動体の中心座標L(idS,f+1)からフレームfの第1の移動体の中心座標L(idS,f)を減算した第1の減算値を算出する。そして、画像処理装置105は、フレームfの第1の移動体の中心座標L(idS,f)からフレームf−1の第1の移動体の中心座標L(idS,f−1)を減算した第2の減算値を算出する。そして、画像処理装置105は、第1の減算値及び第2の減算値を基に、第1の移動体の座標に関する極値判定値L1を算出する。
次に、ステップS606では、画像処理装置105は、フレームf+1の第2の移動体の中心座標L(idD,f+1)からフレームfの第2の移動体の中心座標L(idD,f)を減算した第3の減算値を算出する。そして、画像処理装置105は、フレームfの第2の移動体の中心座標L(idD,f)からフレームf−1の第2の移動体の中心座標L(idD,f−1)を減算した第4の減算値を算出する。そして、画像処理装置105は、第3の減算値及び第4の減算値を基に、第2の移動体の座標に関する極値判定値L2を算出する。
次に、ステップS607では、画像処理装置105は、極値判定値L1が0より小さく、かつ極値判定値L2が0より小さいかの条件を満たすか否かを判定する。すなわち、画像処理装置105は、同一フレームで第1の移動体及び第2の移動体の座標が極値をとっているか否かを判定する。条件を満たす場合には、同一フレームで第1の移動体及び第2の移動体の座標が極値をとっていない場合であるので、ステップS609へ進む。条件を満たしていない場合には、同一フレームで第1の移動体及び第2の移動体の座標が極値をとっている場合であるので、ステップS608へ進む。ステップS608では、画像処理装置105は、第1及び第2の移動体の座標の極値が一致したフレーム数dをインクリメントする。その後、ステップS609へ進む。なお、移動体の座標は、二次元により表されるため、いずれかの座標軸又は両方の座標軸を用いて極値の判定を行ってもよい。
ステップS609では、画像処理装置105は、フレームf+1の第1の移動体の移動速度V(idS,f+1)からフレームfの第1の移動体の移動速度V(idS,f)を減算した第5の減算値を算出する。そして、画像処理装置105は、フレームfの第1の移動体の移動速度V(idS,f)からフレームf−1の第1の移動体の移動速度V(idS,f−1)を減算した第6の減算値を算出する。そして、画像処理装置105は、第5の減算値及び第6の減算値を基に、第1の移動体の移動速度に関する極値判定値V1を算出する。
次に、ステップS610では、画像処理装置105は、フレームf+1の第2の移動体の移動速度V(idD,f+1)からフレームfの第2の移動体の移動速度V(idD,f)を減算した第7の減算値を算出する。そして、画像処理装置105は、フレームfの第2の移動体の移動速度V(idD,f)からフレームf−1の第2の移動体の移動速度V(idD,f−1)を減算した第8の減算値を算出する。そして、画像処理装置105は、第7の減算値及び第8の減算値を基に、第2の移動体の移動速度に関する極値判定値V2を算出する。
次に、ステップS611では、画像処理装置105は、極値判定値V1が0より小さく、かつ極値判定値V2が0より小さいかの条件を満たすか否かを判定する。すなわち、画像処理装置105は、第1の移動体及び第2の移動体の移動速度が極値をとっているか否かを判定する。条件を満たす場合には、第1の移動体及び第2の移動体の移動速度が極値をとっていない場合であるので、ステップS613へ進む。条件を満たしていない場合には、第1の移動体及び第2の移動体の移動速度が極値をとっている場合であるので、ステップS612へ進む。ステップS612では、画像処理装置105は、第1及び第2の移動体の移動速度の極値が一致したフレーム数sをインクリメントする。その後、ステップS613へ進む。
図15(a)の移動体203の移動速度は、フレームF1、フレームF4、フレームF6、フレームF8、フレームF11で極値をとっている。図15(b)の移動体204の移動速度は、フレームF4、フレームF6、フレームF8で極値をとっている。このため、移動体203と移動体204の移動速度の極値が一致したフレーム数sは3となる。
また、図15(c)の移動体205の移動速度及び図15(d)の移動体206の移動速度は、フレームF4で極値をとっている。移動体205と移動体203、204、206の移動速度の極値が一致したフレーム数sは1となる。移動体206と移動体203、204、205の移動速度の極値が一致したフレーム数sは1となる。
図8に戻り、ステップS613では、画像処理装置105は、フレームを示すインデックスfをインクリメントする。次に、ステップS614では、画像処理装置105は、フレームfが最後のフレームであるか否かを判定する。最後のフレームでない場合には、ステップS602に戻り、最後のフレームである場合には、処理を終了する。
以上のように、図7の処理では、移動体が交差したフレーム数o、移動体が接触したフレーム数t、移動体の軌跡が交差したことを示すパラメータpが算出される。また、図8の処理では、奥行が交差したフレーム数c、移動体の座標の極値が一致したフレーム数d、移動体の移動速度の極値が一致したフレーム数sが算出される。
画像処理装置105は、移動体が交差したフレーム数oを利用することで、同一フレームにおける第1及び第2の移動体の交差の有無を検出することができる。つまり、画像処理装置105は、交差する第1の移動体と第2の移動体の間に関連がないと判定できる。
また、画像処理装置105は、移動体が接触したフレーム数tを利用することで、同一フレームにおける第1及び第2の移動体の接触の有無を検出することができる。また、画像処理装置105は、奥行が交差したフレーム数cを利用することで、第1の移動体までの奥行及び第2の移動体までの奥行の交差の有無を判定し、同一フレームにおける第1及び第2の移動体までの奥行が同じか異なるかを判定できる。この場合、画像処理装置105は、同一フレームで第1及び第2の移動体が接触するが、奥行が異なる場合には、第1の移動体が第2の移動体を遮蔽するだけであり、第1及び第2の移動体間に関連がないと判定できる。
また、画像処理装置105は、移動体の軌跡が交差したことを示すパラメータpを利用することで、第1及び第2の移動体の軌跡の交差を検出することができる。この場合、画像処理装置105は、軌跡が交差する第1の移動体と第2の移動体の間に関連があると判定できる。
また、画像処理装置105は、移動体の座標の極値が一致したフレーム数dを利用することで、第1の移動体及び第2の移動体の座標が極値をとるフレームの一致の有無を判定し、離れた場所に位置する第1の移動体と第2の移動体の間の関連を判定できる。例えば、画像処理装置105は、移動体の座標の極値が一致したフレーム数dが1以上である場合には、第1の移動体及び第2の移動体の座標が極値をとるフレームの一致がありと判定され、第1及び第2の移動体の間に関連ありと判定できる。
また、画像処理装置105は、移動体の移動速度の極値が一致したフレーム数sを利用することで、第1の移動体及び第2の移動体の移動速度が極値をとるフレームの一致の有無を判定し、離れた場所に位置する第1及び第2の移動体の間の関連を判定できる。例えば、画像処理装置105は、移動体の移動速度の極値が一致したフレーム数sが1以上である場合には、第1の移動体及び第2の移動体の移動速度が極値をとるフレームの一致がありと判定され、第1及び第2の移動体の間に関連ありと判定できる。
図4のステップS202では、画像処理装置105は、上記の関連度のうちの一つ又は複数を用いて、第1の移動体と第2の移動体との間の関連の有無を判定する。例えば、いずれかの関連度が0より大きい場合に、第1の移動体及び第2の移動体が関連していると判定できる。画像処理装置105は、このような判定方法により、図10の関連度を基に図11の判定結果を生成する。
図9は、図4のステップS203の処理の詳細を示すフローチャートであり、移動体に対して動画像として再生する開始フレームから終了フレームまでの再生区間の候補を選出する手順を示す。
まず、ステップS701では、画像処理装置105は、フレームを示すインデックスf及び移動体を示すインデックスidを0に初期化する。次に、ステップS702では、画像処理装置105は、移動体idの二値画像B(id,f)とフレームfの画像I(f)とを乗算することにより、移動体idの画像I(id,f)を生成する。
図18(a)及び(b)は、ステップS702において画像処理装置105が生成した移動体203〜212の画像の一例を示す。図18(a)はフレームF3における画像を示し、図18(b)はフレームF4における画像を示している。図4のステップS202では、画像処理装置105は、移動体203〜212に関連があると判定される。そのため、図9のステップS702では、画像処理装置105は、移動体203〜212を一つの移動体として扱っている。
図9に戻り、ステップS703では、画像処理装置105は、フレームを示すインデックスをインクリメントする。次に、ステップS704では、画像処理装置105は、フレームfが最後のフレームか否かを判定する。最後のフレームでない場合には、ステップS702に戻り、最後のフレームである場合には、ステップS705に進む。
ステップS705では、画像処理装置105は、フレームを示すインデックスfを0に初期化する。次に、ステップS706では、画像処理装置105は、フレームを示すインデックスgをf+1に設定する。次に、ステップS707では、画像処理装置105は、フレームfにおける移動体idの画像I(id,f)とフレームgにおける移動体idの画像I(id,g)の類似度を算出する。例えば、画像処理装置105は、画像I(id,f)及びI(id,g)について、画素毎に輝度の差分絶対値を算出し、移動体idが存在する画素数で平均値を求めることにより、画像I(id,f)及びI(id,g)の類似度を算出する。このように求めた類似度は、数値が小さいほど類似している。
図18(a)のフレームF3における画像と同様の結果が、フレームF9において得られる。このため、ステップS707では、フレームF3及びF9の画像の類似度が小さくなり、図12に示すように、開始フレームF3と終了フレームF9の再生区間が候補として選出される。
図9に戻り、ステップS708では、画像処理装置105は、フレームを示すインデックスgをインクリメントする。次に、ステップS709では、画像処理装置105は、フレームgが最後のフレームであるか否かを判定する。最後のフレームでない場合には、ステップS706に戻り、最後のフレームである場合には、ステップS710に進む。
ステップS710では、画像処理装置105は、フレームを示すインデックスfをインクリメントする。次に、ステップS711では、画像処理装置105は、フレームfが最後のフレームであるか否かを判定する。最後のフレームでない場合には、ステップS706に戻り、最後のフレームである場合には、ステップS712に進む。
ステップS712では、画像処理装置105は、移動体を示すインデックスidをインクリメントする。次に、ステップS713では、画像処理装置105は、移動体idの候補が最後の候補であるか否かを判定する。最後の候補でない場合には、ステップS702に戻り、最後の候補である場合には、処理を終了する。このように選択した再生フレーム区間の候補から、図4のステップS204により移動体毎に再生フレーム区間を選択する。
本実施形態によれば、複数の移動体の動画像と静止画像を合成する際に、関連のある移動体間で動作が食い違うことによる違和感を低減することができる。
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
上記の実施の形態では、画像処理装置の一例として撮像装置(カメラ)を挙げたが、画像処理装置は、例えば、パソコン、タブレット端末、スマートフォン、モニタ、スキャナ、又はプリンタなどであってもよい。
また、上記の実施の形態の機能を制御方法(画像処理方法)として、この制御方法を画像処理装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムを画像処理装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPUなど)がプログラムを読み出して実行する処理である。