A.実施例:
A−1.画像処理装置の構成:
次に、本発明の実施の形態を実施例に基づき説明する。図1は、実施例における画像処理装置としての計算機200の構成を示すブロック図である。
計算機200は、例えば、パーソナルコンピュータであり、計算機200のコントローラとしてのCPU210と、RAMなどの揮発性記憶装置220と、ハードディスクドライブなどの不揮発性記憶装置230と、マウスやキーボードなどの操作部260と、液晶ディスプレイなどの表示部270と、通信部280と、を備えている。計算機200は、通信部280を介して、印刷装置300やビデオカメラ400などの外部装置と通信可能に接続される。
揮発性記憶装置220は、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域222を提供する。不揮発性記憶装置230には、コンピュータプログラム232と、1以上の動画像ファイル234と、が格納されている。
コンピュータプログラム232は、本実施例では、印刷装置300を制御するためのプリンタドライバプログラムであり、CD−ROMなどに格納される形態や、サーバからダウンロードされる形態で提供される。CPU210は、コンピュータプログラム232を実行することにより、後述する画像処理を実行する画像処理部100として機能する。
動画像ファイル234は、例えば、MPEG(Moving Picture Experts Groupの略)形式や、AVI(Audio Video Interleaveの略)形式などの公知の動画用のファイルフォーマットに従って、動画像データが格納されたファイルである。
A−2.計算機200(画像処理部100)の動作
計算機200のCPU210(画像処理部100)は、プリンタドライバの一機能として、動画像データを用いて合成画像を生成する画像処理を実行することができる。この画像処理は、例えば、図示しないユーザインタフェース画面(以下、UI画面とも呼ぶ)を介して当該合成画像を生成するモードでの動作指示がユーザから受け付けられた場合に実行される。
図2は、本実施例の画像処理のフローチャートである。S10では、CPU210は、表示部270に、所定のUI画面WDを表示する。図3は、UI画面WDの一例を示す図である。
図3のUI画面WDは、ウインドウSW1、SW2と、ボタンBT1〜BT4と、動画操作部MCと、フレーム画像群指定部FSと、チェックボックスCB1と、スライドバーSBと、入力フィールドNFと、を含んでいる。
ウインドウSW1には、処理対象の動画像データによって表される動画像(以下、処理対象の動画像とも呼ぶ)や合成画像(後述)が表示される。ウインドウSW2には、処理対象の動画像データの解析結果(後述)が表示される。
ボタンBT1は、処理対象の動画像データをユーザが指定するためのボタンである。ボタンBT2は、後述するサムネイル画像の表示を指示するためのボタンである。ボタンBT3は、合成画像の表示、すなわち、合成画像の印刷前のプレビューを指示するボタンである。ボタンBT4は、合成画像の印刷を指示するボタンである。
動画操作部MCは、処理対象の動画像のウインドウSW1への表示を操作するためのボタン群、例えば、再生、停止、早送り、巻き戻しなどの操作のためのボタンを含む。フレーム画像群指定部FSは、処理対象の動画像に含まれる特定のフレーム画像群(後述)を指定するためのボタン群、例えば、開始フレーム画像選択ボタンFS1と、終了フレーム画像選択ボタンFS2と、自動選択ボタンFS3と、を含む。
チェックボックスCB1は、合成画像の生成に関する設定の一つとして、合成画像の背景を削除するか否かの設定を行うために用いられる。チェックボックスCB1がONにされると、生成すべき合成画像から背景が削除され、チェックボックスCB1がOFFにされると、生成すべき合成画像に背景が残される(後述)。
入力フィールドNFには、合成画像の生成に用いられるフレーム画像の個数が入力される。スライドバーSBは、動画操作部MCと同様に、処理対象の動画像のウインドウSW1への表示を操作するために用いられる。ユーザは、バーBR上に位置するスライダSDを操作することによって、ウインドウSW1に表示されるフレーム画像を指定することができる。
S15では、CPU210は、処理対象の動画像データがユーザによって指定されたか否かを判断する。ユーザによって図3のボタンBT1が押下されると、図示しないファイル選択画面が表示される。ユーザは、当該ファイル選択画面を介して、揮発性記憶装置220に格納された1個の動画像ファイル234を選択する。選択された動画像ファイル234に格納された動画像データが、処理対象の動画像データとして指定される。なお、図3のフィールドAFには、選択された動画像ファイル234のパス名が表示される。
処理対象の動画像データが指定されていない場合には(S15:NO)、CPU210は、処理対象の動画像データが指定されるまで待機する。処理対象の動画像データが指定された場合には(S15:YES)、S20において、CPU210は、指定された動画像データを揮発性記憶装置220から取得して、バッファ領域222に格納する。
図4は、動画像データについて説明する図である。図4(A)に示すように、動画像データMIは、時系列の順番に並ぶ複数個のフレーム画像FIを表す複数個のフレーム画像データを含んでいる。本実施例では、各フレーム画像データは、フレーム画像の画素ごとの色をYCbCr色空間の色値を用いて表す画像データである。
処理対象の動画像は、例えば、スポーツの試合を撮影した動画像である。図4(B)に示すように、処理対象の動画像は、複数個のシーンを含み得る。複数個のシーンは、例えば、被写体動作シーンSC1と、静止シーンSC2と、背景移動シーンSC3と、を含んでいる。被写体動作シーンSC1は、画像内の背景がほぼ停止しているが、画像内の被写体(人物、車など)が動いているシーンである。静止シーンSC2は、画像内の背景および被写体が静止しているシーンである。背景移動シーンSC3は、画像内の背景が動いているシーンである。
これらの3種類のシーンでは、シーンに含まれるフレーム画像の動き量が互いに異なる。ここで、ある特定のフレーム画像の動き量は、例えば、特定のフレーム画像と、特定のフレーム画像とは時系列の順番が異なるフレーム画像と、の間の差分で表すことができる。本実施例では、時系列の順番がk番目(kは1以上の整数)のフレーム画像の動き量ΔLは、k番目のフレーム画像と、(k+1)番目のフレーム画像と、の間の輝度値Yの差分を用いて表される。2個のフレーム画像の間の輝度値Yの差分は、各画素の輝度値Yの差分の絶対値を算出し、当該絶対値を全ての画素について合計した値である。
図4(C)には、処理対象の動画像に含まれる複数個のフレーム画像のそれぞれの動き量の時系列の変化を示すグラフが示されている。図4(C)に示すように、静止シーンSC2では、画像内の動きがほとんどないので、動き量が比較的小さくなる。具体的には、静止シーンSC2に含まれる各フレーム画像の動き量は、下側閾値THbより小さくなる。背景移動シーンSC3では、画像の全体に対する動いている領域の面積比が比較的大きくなるので、動き量が比較的大きくなる。具体的には、背景移動シーンSC3に含まれる各フレーム画像の動き量は、上側閾値THuより大きくなる。上側閾値THuは、下側閾値THbより大きな閾値である。被写体動作シーンSC1では、画像の全体に対する動いている領域の面積比が、静止シーンSC2より大きく、かつ、背景移動シーンSC3より小さくなる。したがって、被写体動作シーンSC1に含まれる各フレーム画像の動き量は、下側閾値THb以上、かつ、上側閾値THu以下になる。これらの閾値THb、THuは、実際に多数の動画像の動き量を算出した結果と、シーンの種類と、を比較することによって、予め決定された値である。
図2のS25では、CPU210は、処理対象の動画像データを用いて、処理対象の動画像を解析する動画解析処理を実行する。図5,図6は、動画解析処理のフローチャートである。
S100では、CPU210は、注目フレーム画像を選択する。注目フレーム画像は、処理対象の動画像に含まれる複数個のフレーム画像の中から、1個ずつ時系列の順番に選択される。S105では、CPU210は、注目フレーム画像の次のフレーム画像があるか否かを判断する。
注目フレーム画像の次のフレーム画像がある場合には(S105:YES)、S110にて、CPU210は、上述した注目フレーム画像の動き量ΔL、すなわち、注目フレーム画像と次のフレーム画像との間の輝度値Yの差分を算出する。S115では、CPU210は、注目フレーム画像の動き量ΔLが、上述した下側閾値THb以上であるか否かかが判断される。注目フレーム画像の動き量ΔLが下側閾値THb以上である場合には(S115:YES)、CPU210は、S120にて、開始フレーム画像は記録済みであるか否かを判断する。開始フレーム画像は、1個のシーンに含まれる複数個のフレーム画像(すなわち、1個のシーンを表すフレーム画像群)のうち、時系列の順番が最初のフレーム画像である。
開始フレーム画像が記録済みでない場合には(S120:NO)、S125にて、CPU210は、現在の注目フレーム画像を開始フレーム画像として記録する。開始フレーム画像が記録されると、CPU210は、S100に戻って、次の注目フレーム画像を選択する。開始フレーム画像が記録済みである場合には(S120:YES)、CPU210は、S125をスキップし、S100に戻って、次の注目フレーム画像を選択する。
注目フレーム画像の動き量ΔLが下側閾値THbより小さい場合には(S115:NO)、S130にて、CPU210は、開始フレーム画像は記録済みであるか否かを判断する。
開始フレーム画像が記録済みである場合には(S130:YES)、S135にて、CPU210は、現在の注目フレーム画像を終了フレーム画像として記録する。この結果、開始フレーム画像と終了フレーム画像との両方が記録されて、開始フレーム画像から終了フレーム画像までの複数個のフレーム画像が、候補フレーム画像群として特定される。すなわち、候補フレーム画像群によって表される1個の候補シーンが特定される。CPU210は、S140にて、特定された候補シーン(すなわち、候補フレーム画像群)を記録する。S145では、CPU210は、開始および終了フレーム画像の記録を初期化して、S100に戻る。すなわち、開始および終了フレーム画像は記録されていない状態になる。開始フレーム画像が記録済みでない場合には(S130:NO)、CPU210は、S135〜S145をスキップし、S100に戻る。
注目フレーム画像の次のフレーム画像がない場合には(S105:NO)、S150にて、CPU210は、開始フレーム画像は記録済みであるか否かを判断する。開始フレーム画像が記録済みである場合には(S150:YES)、S155にて、CPU210は、現在の注目フレーム画像を終了フレーム画像として記録する。この結果、開始フレーム画像と終了フレーム画像との両方が記録されて、1個の候補シーンが特定される。CPU210は、S160にて、特定された候補シーンを記録して、図6のS165に処理を進める。開始フレーム画像が記録済みでない場合には(S150:NO)、CPU210は、S155、S160をスキップし、S165に処理を進める。
S165に移行した段階で、動き量ΔLが閾値THb以上である複数個のフレーム画像から成る1個以上の候補フレーム画像群が特定される。すなわち、処理対象の動画像に含まれる上述した被写体動作シーンSC1と背景移動シーンSC3との少なくともいずれかを表す1個以上の候補シーンが特定される。
図6のS165では、CPU210は、特定された1個以上の候補シーンから、1個の注目候補シーンを選択する。S170では、CPU210は、注目候補シーンを表す候補フレーム画像群は、動き量ΔLが上側閾値THuより大きいフレーム画像を含むか否かを判断する。動き量ΔLが上側閾値THuより大きいフレーム画像が含まれる場合には(S170:YES)、S188にて、CPU210は、注目候補シーンを候補シーンから除外して、S190に処理を進める。この結果、この動画解析処理によって、動き量ΔLが上側閾値THuより大きいフレーム画像を含まないフレーム画像群は、候補フレーム画像群として特定され、動き量ΔLが上側閾値THuより大きいフレーム画像を含むフレーム画像群は、候補フレーム画像群として特定されない。換言すれば、上述した背景移動シーンSC3は、候補シーンから除外され、被写体動作シーンSC1のみが、候補シーンとして特定される。本実施例では、詳細は後述するように、被写体の動きを表現する合成画像が生成されるので、合成画像の生成に用いられるシーン(フレーム画像群)としては、被写体動作シーンSC1が好ましく、背景移動シーンSC3は好ましくない。この動画解析処理によれば、被写体の動きを表現する合成画像を生成するために適さないフレーム画像が、合成画像の生成に使用されることを抑制することができる。
動き量ΔLが上側閾値THuより大きいフレーム画像が含まれない場合には(S170:NO)、S175にて、CPU210は、注目候補シーンの時間は、時間の閾値THtより大きいか否かを判断する。具体的には、注目候補シーンを表す候補フレーム画像群において、時系列の順番が最初のフレーム画像から時系列の順番が最後のフレーム画像までの時間の間隔が閾値THtを超えるか否かが判断される。注目候補シーンの時間が、時間の閾値THtより大きい場合には(S175:YES)、S188にて、CPU210は、注目候補シーンを候補シーンから除外して、S190に処理を進める。この結果、この動画解析処理によって、最初のフレーム画像から最後のフレーム画像までの時間の間隔が閾値THtを超えるフレーム画像群は、候補フレーム画像群として特定されない。本実施例の合成画像では、例えば、スポーツを行う人物などの比較的短い間隔の動きを表現することを意図している。このために、合成画像の生成に用いられるシーン(フレーム画像群)としては、時間が過度に長いシーンは好ましくない。すなわち、最初のフレーム画像から最後のフレーム画像までの時間の間隔が過度に長いフレーム画像群は、被写体の動きを表現する合成画像の生成に用いるには不適切である可能性が比較的高い。この動画解析処理によれば、被写体の動きを表現する合成画像を生成するために適さないフレーム画像が、合成画像の生成に使用されることを抑制することができる。
注目候補シーンの時間が、時間の閾値THt以下である場合には(S175:NO)、S180にて、CPU210は、注目候補シーンを表す候補フレーム画像群から、代表フレーム画像を決定する。例えば、注目候補シーンを表す候補フレーム画像群に含まれる2以上のフレーム画像のうち、動き量ΔLが最大のフレーム画像が、代表フレーム画像に決定される。図4(C)の例では、点P1で示す動き量ΔLを有するフレーム画像が代表フレーム画像に決定される。動き量ΔLが最大であるフレーム画像は、注目候補シーンの特徴的な画像である可能性が高いからである。
これに代えて、図4(C)のグラフにおいて、動き量ΔLが最大である点P1を含むピークと、当該ピークより時間が1つ前のピークと、の間の谷の部分に位置する点P2で示す動き量ΔLを有するフレーム画像が代表フレーム画像に決定されても良い。動き量ΔLが最大であるフレーム画像は、ブレが発生している可能性があるので、動き量ΔLが最大であるフレーム画像に比較的近く、かつ、動き量ΔLが比較的小さいフレーム画像が、より代表フレーム画像にふさわしい場合があるからである。
S185では、CPU210は、代表フレーム画像を表すフレーム画像データに対して、縮小処理を実行して、サムネイル画像を表すサムネイル画像データを生成する。
S190では、CPU210は、全ての候補シーンを処理したか否かを判断する。未処理の候補シーンが存在する場合には(S190:NO)、CPU210は、S165に戻って、未処理の候補シーンを注目候補シーンとして選択する。全ての候補シーンが処理された場合には(S190:YES)、CPU210は、各フレーム画像の動き量ΔLのグラフ(図4(C)参照)を表示する画面データを生成して、動画解析処理を終了する。
図2に戻って説明を続ける。動画解析処理が終了すると、S30では、CPU210は、解析結果を表示する。具体的には、図3のUI画面WDのウインドウSW2に、各フレーム画像の動き量ΔLのグラフが表示される。ウインドウSW2には、さらに、特定された1個以上の候補フレーム画像群(候補シーン)を示すマーカSP、EPが、表示される。マーカSPは、各候補フレーム画像群の最初のフレーム画像の時間的な位置を示すマーカである。マーカEPは、各候補フレーム画像群の最後のフレーム画像の時間的な位置を示すマーカである。ウインドウSW2に示された解析結果から、動画解析処理によって、3個の候補シーンCC1〜CC3が特定されたことが解る。
さらに、UI画面WD内のサムネイル画像の表示を指示するボタンBT2がユーザによって押下されると、動画解析処理の解析結果の一部として、各候補シーンの代表フレーム画像を表すサムネイル画像の一覧を含むUI画面(図示省略)が表示される。ユーザは、当該UI画面を介して、一のサムネイル画像を指定することによって、合成画像の生成に用いるべき候補フレーム画像群(候補シーン)を指定することができる。
S35では、CPU210は、処理対象の動画像データの変更指示を受け取ったか否かを判断する。動画像データの変更指示は、S15の動画像データの指定と同様に、UI画面WDのボタンBT1をユーザが操作することによって行われる。
動画像データの変更指示を受け取った場合には(S35:YES)、CPU210は、S20に戻って、新たな動画像データを取得する。動画像データの変更指示を受け取っていない場合には(S35:NO)、S40にて、CPU210は、処理対象の動画像の一部の範囲の指定指示、すなわち、処理対象の動画像に含まれる複数個のフレーム画像のうちの一部の特定のフレーム画像群を指定するユーザの操作を受け取ったか否かを判断する。
特定のフレーム画像群を指定する操作は、図3のUI画面WDの上述したフレーム画像群指定部FSに対する操作である。特定のフレーム画像群を指定するユーザの操作は、具体的には、指定すべきフレーム画像群における時系列の順番が最初のフレーム画像(すなわち、開始フレーム画像)と、時系列の順番が最後のフレーム画像(すなわち、終了フレーム画像)と、をそれぞれ指定する操作を含む。開始フレーム画像の指定は、例えば、指定すべきフレーム画像がウインドウSW1に表示された状態で、開始フレーム画像選択ボタンFS1を押下する操作である。同様に、終了フレーム画像の指定は、例えば、指定すべきフレーム画像がウインドウSW1に表示された状態で、終了フレーム画像選択ボタンFS2を押下する操作である。このように、開始フレーム画像と終了フレーム画像とを指定することによって、ユーザは、容易に、所望のフレーム画像群を指定することができる。
動画像の範囲の指定指示を受け取った場合には(S40:YES)、S45にて、CPU210は、指定指示によって指定された範囲、すなわち、指定された特定のフレーム画像群を記録しておく。動画像の範囲の指定指示を受け取っていない場合には(S40:NO)、S45はスキップされる。
S50では、CPU210は、サムネイル画像の指定指示を受け取ったか否かを判断する。すなわち、CPU210は、上述したサムネイル画像の一覧を含むUI画面を介して、一のサムネイル画像を指定する指示をユーザから受け取ったか否かを判断する。サムネイル画像の指定指示を受け取った場合には(S50:YES)、S55にて、CPU210は、指定されたサムネイル画像を記録しておく。サムネイル画像の指定指示を受け取っていない場合には(S50:NO)、S55はスキップされる。
S60では、CPU210は、自動選択指示を受け取ったか否かを判断する。すなわち、CPU210は、図3のUI画面WDの自動選択ボタンFS3がユーザによって押下されたか否かを判断する。自動選択指示を受け取った場合には(S60:YES)、CPU210は、S70に処理を進める。自動選択指示を受け取っていない場合には(S60:NO)、S65にて、CPU210は、プレビュー指示または印刷指示を受け取ったか否かを判断する。すなわち、CPU210は、図3のUI画面WDのプレビュー指示ボタンBT3または印刷指示ボタンBT4が押下されたか否かを判断する。プレビュー指示または印刷指示を受け取った場合には(S65:YES)、CPU210は、S70に処理を進める。プレビュー指示および印刷指示のいずれも受け取っていない場合には(S65:NO)、CPU210は、S35に処理を戻す。
S70では、CPU210は、使用シーン選択処理を実行する。使用シーン選択処理は、S25によって特定された複数個の候補シーンの中から、合成画像の生成に用いるべきシーン(使用シーンとも呼ぶ)を選択する処理である。使用シーン選択処理は、複数個の候補シーンを表す複数個の候補フレーム画像群の中から、使用シーンを表す1個のフレーム画像群(使用フレーム画像群とも呼ぶ)を選択する処理である、と言うこともできる。
図7は、使用シーン選択処理のフローチャートである。S200では、CPU210は、図2のS55にて、ユーザによって指定されたサムネイル画像が記録されているか否かを判断する。サムネイル画像が記録されている場合には(S200:YES)、S205にて、CPU210は、指定されたサムネイル画像に対応する候補シーンを使用シーンとして選択して、使用シーン選択処理を終了する。指定されたサムネイル画像に対応する候補シーンは、代表フレーム画像の縮小画像が指定されたサムネイル画像である候補シーンである。換言すれば、サムネイル画像を指定するユーザの操作があった場合には、指定された一のサムネイル画像に対応する候補シーンを表す候補フレーム画像群が、使用フレーム画像群として優先的に選択される。したがって、ユーザの意図に沿った使用フレーム画像群を優先的に選択することができる。
サムネイル画像が記録されていない場合には(S200:NO)、S210では、CPU210は、図2のS45にて、指定指示によって指定された範囲(指定範囲とも呼ぶ)が記録されているか否かを判断する。指定範囲が記録されている場合には(S210:YES)、S215にて、CPU210は、指定範囲内の候補シーンを処理対象に決定する。具体的には、CPU210は、S25の動画解析処理によって特定された1個以上の候補シーンを表す1個以上の候補フレーム画像群のうち、ユーザによって指定された特定のフレーム画像群に含まれる候補フレーム画像群を、最終的な候補フレーム画像群に決定する。すなわち、ユーザによって指定された特定のフレーム画像群に含まれない候補フレーム画像群は、候補フレーム画像群から除外され、特定のフレーム画像群に含まれる候補フレーム画像群が、使用フレーム画像群として優先的に選択されることになる。この結果、CPU210は、ユーザの意図に沿った適切な候補フレーム画像群を処理対象として特定することができる。
指定範囲が記録されていない場合には(S210:NO)、S220にて、CPU210は、S25にて特定された全ての候補シーンを処理対象に決定する。すなわち、S25の動画解析処理によって特定された1個以上の候補シーンを表す1個以上の候補フレーム画像群の全てが、最終的な候補フレーム画像群に決定される。この結果、CPU210は、ユーザの操作がない場合であっても、適切な候補フレーム画像群を処理対象として特定することができる。
S230では、CPU210は、処理対象の候補シーンごとに、動き量の合計値を算出する。すなわち、処理対象の候補シーンを表す候補フレーム画像群に含まれる2以上のフレーム画像の動き量ΔLの合計値SLが、処理対象の候補シーンごとに算出される。
S240では、CPU210は、算出された動き量ΔLの合計値SLが最大である候補シーンを使用シーンとして選択する。すなわち、算出された動き量ΔLの合計値SLが最大である候補シーンを表すフレーム画像群が、使用フレーム画像群として選択される。被写体の動きを表現する合成画像を生成するためには、動き量ΔLが大きいフレーム画像が使用さえることが好ましいと考えられる。よりダイナミックな被写体の動きを表現する合成画像が生成され得るからである。したがって、この使用シーン選択処理によれば、被写体の動きを表現する合成画像を生成するために適したフレーム画像を含む使用フレーム画像群を適切に選択することができる。
使用シーン選択処理が終了すると、図2のS75では、CPU210は、使用フレーム選択処理を実行する。使用フレーム選択処理は、使用フレーム画像群に含まれる複数個のフレーム画像の中から、M個の使用フレーム画像を選択する処理である。なお、使用フレーム画像が選択される個数Mは、図3のUI画面WDの入力フィールドNFに入力された合成フレーム数N(Nは2以上の整数)に2を加えた個数に設定される(M=N+2、Mは4以上の整数)。ここで、合成フレーム数Nに、2を加えるのは、詳細は後述する合成処理において、背景を削除するために、前後1枚ずつのフレーム画像を参照するからである。
図8は、使用フレーム選択処理のフローチャートである。S300では、CPU210は、使用フレーム画像群の開始フレーム画像を基準フレーム画像に設定する。S305では、CPU210は、1個の注目フレーム画像を選択する。注目フレーム画像は、使用フレーム画像群に含まれ、かつ、時系列の順番が基準フレーム画像より後である複数個のフレーム画像から、時系列の順番に選択される。
S310では、CPU210は、基準フレーム画像と注目フレーム画像との間の動き量ΔVLを算出する。動き量ΔVLには、基準フレーム画像と、注目フレーム画像と、の間の輝度値Yの差分が用いられる。
S315では、CPU210は、算出された動き量ΔVLが、所定の閾値THm以上であるか否かを判断する。動き量ΔVLが、所定の閾値THm以上である場合には(S315:YES)、S320にて、CPU210は、現在の基準フレーム画像を、使用フレーム画像として選択する。
S325では、CPU210は、現在の注目フレーム画像を、新たな基準フレーム画像に設定する。S330では、CPU210は、選択すべき個数であるM個の使用フレーム画像が選択されたか否かを判断する。M個の使用フレーム画像が選択されていない場合には(S330:NO)、CPU210は、S335に処理を進める。M個の使用フレーム画像が選択されている場合には(S330:YES)、使用フレーム選択処理は終了される。
動き量ΔVLが、所定の閾値THm未満である場合には(S315:NO)、CPU210は、S320〜330をスキップして、S335に処理を進める。
S335では、CPU210は、使用フレーム画像群に含まれるフレーム画像であり、かつ、時系列の順番が現在の注目フレーム画像の次のフレーム画像があるか否かを判断する。次のフレーム画像がある場合には(S335:YES)、CPU210は、S305に戻って、当該次のフレーム画像を新たな注目フレーム画像として選択する。
次のフレーム画像がない場合には(S335:NO)、S340にて、CPU210は、現在の閾値THmを所定量だけ(例えば、初期値の10%ずつ)小さな値に変更する。S345では、CPU210は、処理を初期化して、S300に処理を戻す。すなわち、選択済みの使用フレーム画像の記録は全て消去されて、最初から使用フレーム画像の選択がやり直される。
以上説明した使用フレーム選択処理によれば、時系列に連続する2個の使用フレーム画像の間の動き量が閾値THm以上になるように、2以上の使用フレーム画像が選択される。この結果、時系列に連続する2個の使用フレーム画像の間の動き量が過度に小さくなることが抑制される。例えば、仮に、使用フレーム画像群から、時間間隔が等間隔になるように単純に使用フレーム画像が選択される場合には、例えば、比較的被写体が動く速度が遅い部分から選択された時系列に連続する2個の使用フレーム画像の間の動き量が過度に小さくなる可能性がある。時系列に連続する2個の使用フレーム画像の間の動き量が過度に小さい場合には、2個の使用フレーム画像は、ほぼ同じフレーム画像となるので、フレーム画像間の重なりが過度に大きくなる。この結果、これらの2個の使用フレーム画像を合成しても、被写体の動きを適切に表現できない可能性が高くなる。本実施例では、このような不都合を抑制して、合成画像の生成に用いられる適切な使用フレーム画像を選択することができる。また、合成画像においてフレーム画像間の重なりが過度に大きくならないので、合成画像を印刷する場合の印刷材(例えば、インクやトナー)の使用量を低減することができる。
使用フレーム選択処理が終了すると、図2のS80では、CPU210は、合成処理を実行する。合成処理は、使用フレーム選択処理によって選択されたM個の使用フレーム画像を表すM個の使用フレーム画像データを用いて、被写体の動きを表現する1個の合成画像を生成する処理である。
図9は、合成処理のフローチャートである。S400では、CPU210は、生成すべき合成画像CI1の初期画像をバッファ領域222上に準備する。合成画像CI1の初期画像は、例えば、1個のフレーム画像データと同じサイズの画像であって、当該画像に含まれる全ての画素の値(例えば、YCbCr値)が、初期値(例えば、(Y、Cb、Cr)=(0、0、0))である画像である。換言すれば、S400にて、合成画像CI1を生成するためのメモリ領域がバッファ領域222上に確保される。
S405では、CPU210は、使用フレーム選択処理によって選択されたM個の使用フレーム画像の中から、3個の注目フレーム画像、すなわち、第1〜第3注目フレーム画像を選択する。図10は、合成処理の説明図である。図10では、一例として5個の使用フレーム画像UF1〜UF5(図10(A))がフレーム選択処理によって選択され、かつ、背景を削除することが指示されている場合の例が示されている。この使用フレーム画像UF1〜UF5は、図の煩雑を避けるために、想定される被写体(例えば、スポーツをする人物)よりも簡単な球体を被写体BAとする画像とされている。5個の使用フレーム画像UF1〜UF5は、被写体BAが左から右に動く使用シーンを示す使用フレーム画像群である。このように、使用シーンにおいて動いている被写体を動体とも呼ぶ。
1回目のS405では、時系列の順番が1〜3番目の3個の使用フレーム画像UF1〜UF3が、第1〜第3注目フレーム画像として選択される。また、2回目のS405では、時系列の順番が2〜4番目の3個の使用フレーム画像UF2〜UF4が、第1〜第3注目フレーム画像として選択される。一般的に言えば、n回目(nは1以上N以下の整数)のS405では、時系列の順番がn〜(n+2)番目の3個の使用フレーム画像が、第1〜第3注目フレーム画像として選択される。
S410では、CPU210は、生成すべき合成画像において、背景を削除するか否かを判断する。図3のUI画面WDのチェックボックスCB1がONにされることによって、背景の削除が指示されている場合には、CPU210は、背景を削除すると判断する。UI画面WDのチェックボックスCB1がOFFにされている場合には、CPU210は、背景を削除しないと判断する。
背景を削除する場合には(S410:YES)、S415にて、CPU210は、第1注目フレーム画像と第2の注目フレーム画像との間の差分画素を示す二値画像を生成する。ここで、2個のフレーム画像の間の差分画素は、一の注目フレーム画像内の複数個の画素のうち、他の注目フレーム画像内の対応する画素(すなわち、同じ位置の画素)との輝度値Yの差分の絶対値が、所定の閾値THyより大きい画素である。CPU210は、第1注目フレーム画像内の複数個の画素を、差分画素と差分画素ではない画素と、に分類することによって、二値画像(以下、第1の二値画像とも呼ぶ)を生成する。図10(B)には、使用フレーム画像UF1〜UF3が、第1〜第3の注目フレーム画像である場合に生成される第1の二値画像D12、すなわち、2個の使用フレーム画像UF1、UF2の間の差分画素DP12を示す第1の二値画像D12が示されている。図10(B)に示すように、第1の二値画像D12では、2個の使用フレーム画像UF1、UF2のいずれかにおいて、被写体BAが位置していた領域が、差分画素DP12が位置する領域として抽出されている。
S425では、CPU210は、第2注目フレーム画像と第3の注目フレーム画像との間の差分画素を示す二値画像(以下、第2の二値画像とも呼ぶ)を生成する。図10(B)には、使用フレーム画像UF1〜UF3が、第1〜第3の注目フレーム画像である場合に生成される第2の二値画像D23、すなわち、2個の使用フレーム画像UF2、UF3の間の差分画素DP23を示す第2の二値画像D23が示されている。図10(B)に示すように、第2の二値画像D23では、2個の使用フレーム画像UF2、UF3のいずれかにおいて、被写体BAが位置していた領域が、差分画素DP23が位置する領域として抽出されている。
S430では、CPU210は、2つの二値画像D12、D23の論理積を画素ごとに算出して、動体領域を検出する。具体的には、2つの二値画像D12、D23の論理積を画素ごとに取ることによって、動体画素MPを示す二値画像MB(図10(C))が生成される。二値画像MB内の複数個の画素のうち、第1の二値画像D12の対応する画素が差分画素に分類され、かつ、第2の二値画像D23の対応する画素が差分画素に分類されている画素は、動体画素MPに分類される。また、二値画像MB内の複数個の画素のうち、第1の二値画像D12の対応する画素、および、第2の二値画像D23の対応する画素の少なくとも一方が差分画素に分類されていない画素は、動体画素MPではない画素に分類される。この結果、図10(C)に示すように、第2注目フレーム画像(図10(C)の例では、使用フレーム画像UF2)内の動体BAの領域が、二値画像MB内の動体画素MPによって構成される動体領域として検出される。
S430では、CPU210は、第2注目フレーム画像から動体画像を処理画像として抽出する。図10(C)の例では、第2注目フレーム画像としての使用フレーム画像UF2から、二値画像MB内の複数個の動体画素MPに対応する動体画像MI2(図10(D))が抽出される。
背景を削除しない場合には(S410:NO)、CPU210は、S415〜S430の背景を削除するための処理を行わずに、S445にて、CPU210は、第2注目フレーム画像の全体を処理画像として決定する。
S435では、時系列の順番に応じて、処理画像の輝度調整率を決定する。合成フレーム数をN(Nは2以上の整数)とすると、n番目の処理画像の輝度調整率AJは、以下の式(1)を用いて算出される。
AJ=(N−n)/N ...(1)
1番目の処理画像が最も輝度調整率が高く、時系列の順番が大きくなるほど、輝度調整率は、低くなる。そして、最後の処理画像(すなわち、N番目の処理画像)では、輝度調整率は0となる。すなわち、最後の処理画像には、輝度の調整は行われない。
S440では、算出された輝度調整率AJを用いて処理画像(すなわち、背景が削除された使用フレーム画像、または、背景が削除されていな使用フレーム画像)の輝度を調整する。具体的には、処理画像の各画素の輝度Yに、(1+AJ)を乗じることによって調整済みの処理画像を生成する。輝度調整率AJが大きいほど、輝度Yが高く調整されるので、輝度調整率AJが大きいほど、処理画像の濃度が低くなることが解る。
S445では、CPU210は、調整済みの処理画像を、生成中の合成画像に書き込む。例えば、1番目の処理画像は、S400で準備された合成画像の初期画像上に上書きされる。そして、2番目の処理画像は、1番目の処理画像のみが書き込まれた合成画像上に上書きされる。
S450では、CPU210は、未処理の使用フレーム画像はあるか否かを判断する。時系列の順番が最後の使用フレーム画像が、現在の第3注目フレーム画像である場合には、未処理の使用フレーム画像はないと判断される。時系列の順番が最後の使用フレーム画像が、現在の第3注目フレーム画像でない場合には、未処理の使用フレーム画像があると判断される。
未処理の使用フレーム画像がある場合には(S450:YES)、CPU210は、S405に戻る。したがって、合成フレーム数がNである場合には、S405〜S445の処理が、N回だけ繰り返される。例えば、図10の例では、5個の使用フレーム画像UF1〜UF5があるので、すなわち、使用フレーム画像の個数M=5、合成フレーム数N=3であるので、S405〜S445の処理が、3回繰り返される。この結果、図10(D)に示すように、3個の動体画像MI2〜MI3が生成され、これらの3個の動体画像MI2〜MI3が合成された合成画像CI1が生成される。なお、合成画像CI1は、被写体を中心とした所定の大きさにトリミングされても良い。
図11は、合成画像の一例を示す図である。図11(A)には、図10の例、すなわち、使用フレーム画像UF1〜UF5(図10(A))がフレーム選択処理によって選択され、かつ、背景を削除することが指示されている場合に生成される合成画像CI1が示されている。合成画像CI1では、上述した被写体BAが右から左へと動く様子が、被写体BAの濃度が互いに異なる3個の被写体BA〜BA3によって表現されている。図11(B)には、使用フレーム画像UF1〜UF5(図10(A))がフレーム選択処理によって選択され、かつ、背景を削除することが指示されていない場合に生成される合成画像CI2が示されている。合成画像CI2は、使用フレーム画像UF1〜UF5の背景BGが表現されている点が、合成画像CI1とは異なる。なお、背景BGを削除する場合には、動きのある被写体だけを強調した合成画像を生成することができる。また、合成画像を印刷する場合の印刷材(例えば、インクやトナー)の使用量を低減することができる。
以上説明した合成処理によれば、CPU210は、使用フレーム画像UF2〜UF4(背景が削除された使用フレーム画像、または、背景が削除されていな使用フレーム画像)の輝度を、時系列の順番に従って段階的に変化するように調整している(S435、S440)。そして、CPU210は、輝度が調整済みの使用フレーム画像UF2〜UF4を用いて、合成画像CI1、CI2を生成する(S445)。したがって、CPU210は、被写体BAの動きが解りやすく表現された合成画像CI1、CI2を生成することができる。また、一部分の濃度が下げられることで、合成画像を印刷する場合の印刷材(例えば、インクやトナー)の使用量を低減することができる。なお、図10、図11に例示された使用フレーム画像UF1〜UF5や合成画像CI1、CI2は、図の煩雑を避けるために簡単な画像が用いられているが、例えば、スポーツを撮影した動画像を処理対象とすれば、スポーツを行う人物の動き、例えば、ゴルフクラブ、ラケット、バットなどを振る人物の動きを表す適切な合成画像が生成される。
合成処理が終了すると、図2のS85では、CPU210は、合成画像を出力する。例えば、S70〜S85の処理へと進んだ契機が、プレビュー指示(S65)である場合には、CPU210は、合成画像を表す合成画像データを用いて、合成画像をウインドウSW1に表示する。また、S70〜S85の処理へと進んだ契機が、印刷指示(S65)である場合には、CPU210は、合成画像データを用いて印刷ジョブを生成して、当該印刷ジョブを印刷装置300に送信する。この結果、印刷装置300によって合成画像が印刷される。また、また、S70〜S85の処理へと進んだ契機が、自動選択指示(S60)である場合には、CPU210は、上述した合成画像のウインドウSW1への表示、あるいは、合成画像を印刷するための印刷ジョブの印刷装置300への送信のいずれかを実行する。
合成画像の出力が終了すると、CPU210は、S35に処理を戻す。この結果、例えば、CPU210は、UI画面WDを介して、ユーザから各種の指示、例えば、上述した動画像の変更指示やサムネイル画像の指定指示を待つ状態に戻る。
以上説明した本実施例によれば、動画解析処理(図5、図6)において、複数個のフレーム画像のうちの注目フレーム画像と他のフレーム画像との間の差分に基づいて、注目フレーム画像の動き量ΔLが検出される(図5のS110)。そして、複数個のフレーム画像の動き量ΔLの時系列の変化に基づいて、複数個のフレーム画像から、1以上の候補シーンを表す1以上の候補フレーム画像群が特定される(図5のS115〜S145)。そして、使用シーン選択処理(図7)において、1以上の候補フレーム画像群の中から、1個の使用フレーム画像群が選択される。そして、使用フレーム選択処理(図8)において使用フレーム画像群から2以上の使用フレーム画像を表す2以上の使用フレーム画像データUF1〜UF5が選択される。さらに、合成処理(図9)において、2以上の使用フレーム画像データUF1〜UF5を用いて、被写体BAの動きを表現する1個の合成画像CI1、CI2が生成される。この結果、例えば、上述したように、静止シーンSC2、背景移動シーンSC3のように、被写体の動きを表現する合成画像の生成に適さないシーンを表すフレーム画像群から、使用フレーム画像が選択されることが抑制される。そして、被写体動作シーンSC1のように、被写体の動きを表現する合成画像の生成に適したシーンを表すフレーム画像群から、使用フレーム画像が選択される可能性を高くすることができる。したがって、被写体の動きを表現する合成画像の生成に用いるべきフレーム画像を適切に決定することができる。そして、最終的に適切な合成画像を生成することができる。
また、動画像に含まれるフレーム画像の個数は、膨大である場合もあり得る。上述したように、被写体の動きを表現する合成画像の生成に用いるのに適さないシーン(すなわち、フレーム画像群)も存在する。このために、ユーザに合成画像の生成に用いるフレーム画像を選択させると、ユーザの負担が過大になる可能性があり、かつ、適切なフレーム画像が選択されない可能性があった。本実施例では、このようなユーザに負担をかけることもなく、適切なフレーム画像を選択することができる。
B.変形例:
(1)上記実施例の使用シーン選択処理(図7)では、フレーム画像の動き量ΔLの合計値SLが、処理対象の候補シーンごとに算出され(S230)、動き量ΔLの合計値SLが最大である候補シーンが使用シーンとして選択される(S240)。これに代えて、別の手法を用いて、使用シーンが選択されても良い。
図12は、変形例の使用シーン選択処理のフローチャートである。図12のS230Bでは、CPU210は、候補シーンの動き量の微分値の最大値を、候補シーンごとに特定する。すなわち、候補シーンを表す候補フレーム画像群に含まれる2以上のフレーム画像の動き量ΔLの単位時間辺りの変化量の最大値が、候補フレーム画像群ごとに特定される。
より具体的には、時系列の順番がm番目のフレーム画像について、動き量ΔLの単位時間辺りの変化量は、例えば、{ΔL(m)−Δ(m+1)}の絶対値で表される。CPU210は、動き量ΔLの単位時間辺りの変化量を候補フレーム画像群に含まれる全てのフレーム画像について算出する。そして、CPU210は、これらの単位時間辺りの変化量の最大値を候補フレーム画像群ごとに特定する。
S240では、CPU210は、単位時間辺りの変化量の最大値が最大である候補シーンを使用シーンとして選択する。すなわち、単位時間辺りの変化量の最大値が最大である候補シーンを表すフレーム画像群が、使用フレーム画像群として選択される。図12の他のステップの処理は、図7の使用シーン選択処理の同一符号のステップと同じである。
本変形例によれば、被写体の動き量が大きく変化しているシーンが使用シーンに選択される。このようなシーンも被写体の動きを表現する合成画像を生成するために適していると考えられる。したがって、本変形例によっても、被写体の動きを表現する合成画像を生成するために適したフレーム画像を含む使用フレーム画像群を適切に選択することができる。
一般的には、動き量ΔLの合計値SLが最大であること(実施例)や単位時間辺りの変化量の最大値が最大であること(変形例)のように、被写体の動き量や動く速度などの動きに関する量が比較的大きいことを示す所定の条件に基づいて、使用フレーム画像群が選択されることが好ましい。例えば、動き量ΔLのピークの個数、時系列に連続する2個のフレーム画像間の画素ごとの移動量を示すフローベクトルのベクトル量の合計値、などが最大であることを条件に、使用フレーム画像群が選択されても良い。
(2)上記実施例の合成処理(図9)では、合成すべき処理画像の画素の値を、生成中の合成画像の画素の値に置換(上書き)することによって、合成画像を生成している。これに代えて、合成すべき処理画像の画素の値を、生成中の合成画像の画素の値に加算することによって、合成画像を生成しても良い。置換によって合成画像を生成する場合には、加算によって合成画像を生成するよりも見やすい合成画像を生成することができる。加算によって合成画像を生成する場合には、置換によって合成画像を生成するよりも被写体の動きが解りやすい合成画像を生成することができる。
(3)上記実施例の図2の画像処理のS40において、動画像の範囲、すなわち、特定のフレーム画像群の指定は、ユーザが開始フレーム画像と終了フレーム画像を指定することによって行われているが、これに限らず、一方のフレーム画像をユーザが指定し、他方のフレーム画像は自動的に指定されてもよい。例えば、ユーザが開始フレーム画像を指定すると、自動的に終了フレーム画像が指定されることによって、動画像の範囲が指定されても良い。自動的に指定される終了フレーム画像は、例えば、動画解析処理によって特定された1個以上の候補シーンの終了フレーム画像のうち、ユーザによって指定された開始フレーム画像より時系列の順番が後である終了フレーム画像であっても良い。ユーザによって指定された開始フレーム画像より時系列の順番が後である終了フレーム画像が複数個存在する場合には、例えば、これらの複数個の終了フレーム画像のうち、時系列の順番が最初の終了フレーム画像が自動的に指定される。これにより、ユーザによって指定された開始フレーム画像から自動的に指定された終了フレーム画像までが、1つの候補シーンであり、かつ、使用シーンとして選択される。
(4)上記実施例の合成処理では、時系列の順番が後の使用フレーム画像ほど濃度が高くなるように、輝度が調整されている(図9のS440)。これに代えて、例えば、代表フレーム画像に最も近い使用フレーム画像の濃度が最も高くなり、代表フレーム画像から時系列の順番が前後に離れた使用フレーム画像ほど濃度が低くなるように、輝度が調整されても良い。
(5)上記実施例の動画解析処理では、2個の時系列に連続するフレーム画像間の輝度値Yの差分の絶対値を、動き量ΔLとして用いている。これに代えて、動き量は、時系列の順番が2以上離れた2個のフレーム画像に基づいて算出されても良い。また、2個のフレーム画像間の差分は、輝度値Yの差分に限らず、他の色値(例えば、RGB値)の差分であっても良い。
(6)上記実施例では、フレーム画像ごとに算出される動き量のみをに基づいて、候補シーンが特定されている。フレーム画像ごとに算出される動き量に加えて、動画像に関連付けて記録された音を用いて、候補シーンが特定されてもよい。例えば、音量あるいは音質が大きく変化するタイミングを考慮して、候補シーンが特定されても良い。あるいは、フレーム画像間の色相の変化量を控除して、候補シーンが特定されても良い。
(7)閾値THbや閾値THuは、例えば、ユーザによって変更可能としてもよい。S30で表示される解析結果で、候補シーンがゼロの場合等に、ユーザの操作により変更した閾値に従い、再度、動画解析処理が実行されてもよい。
(8)複数個の使用フレーム画像は、時系列の順序が連続する2個の使用フレーム画像間の時間間隔が等間隔になるように選択されてもよい。このように使用フレーム画像を選択することで、時間的変化がユーザに視覚的にわかりやすい合成画像を出力することができる。
(9)図2の画像処理を実現する画像処理装置は、計算機200に限らず、種々の装置であってよい。例えば、プリンタ、ビデオカメラ、スキャナなどの画像関連機器の内部のコンピュータ、汎用のパーソナルコンピュータ、ネットワークに接続されたサーバ、スマートフォンなどの携帯端末等を採用可能である。ビデオカメラやビデオカメラ付きの携帯端末が採用される場合には、例えば、動画像を撮影後に、ビデオカメラやビデオカメラ付きの携帯端末は、図2の画像処理を実行して合成画像データを生成し、該合成画像データをプリンタに送信する。そして、プリンタにて合成画像が印刷される。サーバが採用される場合には、例えば、サーバは、携帯端末、計算機、プリンタなどのクライアントから動画像データを取得し、図2のS25、S70、S75、S80の処理を実行して、合成画像を表す合成画像データを生成する。そして、生成された合成画像データがサーバからクライアントへと送信される。また、ネットワークを介して互いに通信可能な複数個のコンピュータが、画像処理に要する機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
(10)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、実施例の画像処理の一部または全部の処理は、ASICなどのハードウェアによって実行されても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。