(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0019】
以下、図面を参照しつつ、本発明の一実施形態に係る像振れ補正システム、プログラム及び方法について説明する。
【0020】
<1.ゴルフスイング分析システムの概略>
図1に、本実施形態に係る像振れ補正システムである、ゴルフスイング分析システム100を示す。ゴルフスイング分析システム100は、ゴルフスイングを動画として撮影し、これを画像処理することでゴルファーの動作を分析するためのシステムであり、撮影された動画から手振れに代表される像振れを補正する機能を有している。ゴルフスイング分析システム100は、主として、携帯電話1と、携帯電話1からインターネット6を介して接続可能なサーバ2とから構成される。携帯電話1には、カメラ10が搭載されている。ユーザは、このカメラ10を用いてゴルフスイングを動画として撮影し、サーバ2は、これを携帯電話1から受け取り、分析する。なお、ここでいうユーザとは、ゴルフスイングの分析結果を必要とするゴルファーやインストラクター等の総称である。以下、携帯電話1及びサーバ2のハードウェア構成について説明した後、これらの動作について説明する。
【0021】
<2.携帯電話のハードウェア構成>
本実施形態における携帯電話1は、カメラ機能付きのスマートフォンであり、ゴルフスイングの分析用のプログラム1Aがインストールされている。このプログラム1Aは、サーバ2と通信しながら、携帯電話1に後述する動作を実行させるためのアプリケーションソフトウェアであり、インターネット6を介してダウンロード可能である。
【0022】
携帯電話1は、カメラ10の他、表示部11、入力部12、記憶部13、制御部14、及び通信部15を有しており、これらの部10〜15は、バス線16を介して相互に通信可能である。表示部11は、液晶ディスプレイ等で構成され、後述する画面等をユーザに対し表示する。入力部12は、タッチパネルや操作ボタン等で構成され、ユーザからの操作を受け付ける。記憶部13は、内蔵型のフラッシュメモリや取り外し可能なSDカード等で構成されており、上述のプログラム1Aは、ここに格納されている。通信部15は、携帯電話通信網を介しての他の電話との音声通信や、インターネット6を介しての各種サーバ(サーバ2を含む)とのデータ通信を可能にする他、専用のケーブルを介しての他の情報端末との通信も可能にする。制御部14は、CPU、ROMおよびRAM等で構成されており、記憶部13内に格納されているプログラム1Aを読み出して実行することにより、仮想的に撮影案内部14A及びサイズ調整部14Bとして動作する。各部14A,14Bの動作については、後述する。
【0023】
<3.サーバのハードウェア構成>
サーバ2は、ゴルフスイングの分析用のプログラム2Aがインストールされたアプリケーションサーバである。このプログラム2Aは、携帯電話1と通信しながら、サーバ2に後述する動作を実行させるためのアプリケーションソフトウェアであり、CD−ROM等のコンピュータで読み取り可能な記録媒体20からインストール可能である。
【0024】
サーバ2は、表示部21、入力部22、記憶部23、制御部24、及び通信部25を有しており、これらの部21〜25は、バス線26を介して相互に通信可能である。表示部21は、液晶ディスプレイ等で構成され、必要な画面等をユーザに対し表示する。入力部22は、マウスやキーボード、タッチパネル等で構成され、ユーザからの操作を受け付ける。記憶部23は、ハードディスク等で構成されており、上述のプログラム2Aは、ここに格納されている。通信部25は、インターネット6を介しての他の情報端末(携帯電話1を含む)とのデータ通信を可能にする。制御部24は、CPU、ROMおよびRAM等で構成されている。制御部24は、記憶部23内に格納されているプログラム2Aを読み出して実行することにより、仮想的に背景設定部24A、第1補正部24B、判定部24C、第2補正部24D及び分析部24Eとして動作する。各部24A〜24Eの動作については、後述する。
【0025】
<4.ゴルフスイング分析処理>
以下、
図2を参照しつつ、携帯電話1及びサーバ2によるゴルフスイング分析処理について説明する。
まず、ユーザは、ゴルフ練習場等においてゴルフスイングを改善したいと考えたときに、携帯電話1上でこれを支援するためのプログラム1Aを起動する(ステップS1)。これを受けて、携帯電話1の撮影案内部14Aは、表示部11上に、
図3に示すような撮影画面W1を表示させる(ステップS2)。撮影画面W1内には、カメラ10が捉えるスルー画像が表示されるとともに、このスルー画像に重ねて2つの案内枠W2,W3が表示される。中央の案内枠W2は、ゴルファー70の握るゴルフクラブ7のグリップ71を捉えるべき領域を示す枠でありであり、右下の案内枠W3は、ゴルフクラブ7のヘッド72を捉えるべき領域を示す枠である。従って、ユーザは、これらの案内枠W2,W3を参考にすることで、カメラ10の撮像範囲内においてゴルファー70を捉えるべき凡その位置やアングルを容易に理解することができる。なお、これらの案内枠W2,W3は、カメラ10を縦長に持った上で、カメラ10の撮像範囲内の所定の位置(本実施形態では、中央付近)でゴルファー70を捉えるように案内するような位置に表示される。また、撮影画面W1上には、案内枠W2,W3に加え、これらの意味するところを示す情報、例えば、「中央の枠内にプレイヤーの手元を写し、右下の枠内にゴルフクラブのヘッドを写してください。」と言ったメッセージが表示されてもよい。
【0026】
続いて、ユーザは、以上のガイダンスに従って、カメラ10の撮像範囲内の適切な位置でゴルファー70を捉えた後、カメラ10でゴルフスイングを写す動画を撮影する(ステップS3)。このとき、ユーザは、手に持ったカメラ10を極力動かさないように注意しながら、アドレスからフィニッシュまでの一連の動作を撮影する。なお、ゴルフスイングは、一般に、アドレス、トップ、インパクト、フィニッシュの順に進む。アドレスとは、ゴルフクラブ7のヘッド72をボール近くに配置した初期の状態を意味し、トップとは、アドレスからゴルフクラブ7をテイクバックし、最もヘッド72が振り上げられた状態を意味し、インパクトとは、トップからゴルフクラブ7が振り下ろされ、ヘッド72がボールと衝突した瞬間の状態を意味し、フィニッシュとは、インパクト後、ゴルフクラブ7を前方へ振り抜いた状態を意味する。撮影された動画は、記憶部13内に保存される。
【0027】
撮影が終わると、携帯電話1のサイズ調整部14Bは、必要に応じて、撮影された動画の画像サイズを縮小する(ステップS4)。具体的には、サイズ調整部14Bは、撮影された動画のアスペクト比を判断し、アスペクト比が所定値と異なると判断される場合(例えば、縦16:横9である場合)には、アスペクト比が所定値(本実施形態では、縦4:横3)となるように、動画に含まれる各フレームの上下方向(長手方向)の端辺から所定%の領域を切り取る。画像サイズが一定以上の比率で縦長である場合には、各フレームの上下の所定%の領域には、ゴルファー70やゴルフクラブ7が写っていないと考えられるからである。さらに、サイズ調整部14Bは、以上の動画のピクセル数を判断し、これが所定値よりも大きいと判断される場合(例えば、縦1440×横1080である場合)には、これを所定値(本実施形態では、縦640×横480)となるように、動画に含まれる各フレームを圧縮する。なお、このとき、圧縮後の画素値に小数点が生じないよう、内挿処理にて、各色成分(R,G,B)に関し画素値を整数化することが好ましい。
【0028】
続いて、携帯電話1の通信部15は、以上の動画をインターネット6を介してサーバ2に送信する(ステップS5)。一方、サーバ2側では、通信部25がこれを受信し、その後、背景設定部24A、第1補正部24B、判定部24C及び第2補正部24Dが、携帯電話1から送られてきたこの動画に対し像振れ補正処理を実行する(ステップS6)。像振れ補正処理の詳細については、後述する。
【0029】
像振れ補正処理が終了すると、サーバ2の分析部24Eが、像振れ補正後の動画を画像処理することで、ゴルフスイングの分析を行う(ステップS7)。なお、ゴルフスイングを捉えた動画に基づいてゴルフスイングを分析するアルゴリズムについては、様々なものが公知である。従って、ここでは詳細な説明を省略するが、例えば、伸ばすべきところで腕が曲がっていないか、顔が正しい方向を向いているか等の、インストラクターの知見に基づいて作成されたチェックポイントについての診断がされ得る。なお、ゴルフのスイングフォームの効果的な学習のためには、アドレス、トップ、インパクト、フィニッシュ等の特定の主要なタイミングでのフォームに注目することが好ましい。従って、例えば、分析部24Eは、像振れ補正後の動画からこのような特定のタイミングでのフレームを特定した後、このようなチェックすべきフレーム内に写るゴルフクラブ7やゴルファー70のシルエットを抽出することで、以上のような診断を行う。
【0030】
以上の分析の結果は、サーバ2の通信部25から携帯電話1の通信部15に送信され(ステップS8)、携帯電話1の表示部11上に表示される(ステップS9)。従って、ユーザは、分析の結果を確認し、正しいスイングフォームの習得に役立てることができる。なお、分析の結果は、スイングの点数、長所・短所、ゴルファー70に見合った練習メニュー等として表現され得る。
【0031】
<5.像振れ補正処理>
以下、
図4を参照しつつ、像振れ補正処理について説明する。なお、詳細は後述するとおりであるが、まず大まかに説明すると、像振れ補正処理では、動画のフレーム内で、分析の対象となるゴルファー70及びゴルフクラブ7が存在しない背景領域が設定され(ステップS21〜S26)、この背景領域に対して1回目の補正ルーチンが実行される(ステップS27)。なお、背景領域を設定するのは、カメラ10の動きによる像振れを正確に評価するために、ゴルファー70及びゴルフクラブ7の動きの影響を受けない領域を設定するためである。そして、その後、1回目の補正ルーチンの実行後の動画においても像振れが依然として大きいと考えられる場合には(ステップS28)、2回目の補正ルーチンが実行される(ステップS29)。以下では、携帯電話1から送られてきた動画に含まれる複数のフレームを、F
1,F
2,・・・,F
n(nは、フレームの枚数)と表す。
【0032】
まず、ステップS21として、背景設定部24Aは、フレームF
1,F
2,・・・,F
nの中から、仮のアドレス及び仮のインパクトのフレームを決定する。具体的には、背景設定部24Aは、i=1,2,・・・,n−1に対し、F
i+1の案内枠W3内の画像と、F
iの案内枠W3内の画像との差分画像G
iを生成する。案内枠W3とは、上記のとおり、ゴルフクラブ7のヘッド72及びボールを捉える領域の枠である。また、差分画像G
iとは、案内枠W3内の各画素について、F
i+1における画素値からF
iにおける画素値を減算した値をその画素の画素値とする画像である。なお、ここでの画素値の計算は、色成分(R,G,B)毎に行われる。そして、各差分画像G
iについて、全画素の全色成分に関する画素値の絶対値の合計値を算出し、この合計値が最大となるi=aを特定し、このときのフレームF
aを仮のアドレスフレームとする。そして、その後、動画のヘッダ等に含まれるFPS(frame per second)の情報を参照して、ここから所定時間後(約2秒後)のi=pを特定し、このときのフレームF
pを仮のインパクトフレームとする。
【0033】
続くステップS22では、背景設定部24Aは、仮のアドレスフレームF
a上でのゴルフクラブ7のヘッド72(より正確には、シャフト73の下端)の座標を検出する。具体的には、背景設定部24Aは、仮のアドレスフレームF
a上でエッジを検出する。エッジの検出方法については、様々なものが公知であるため、ここでは詳細な説明を省略するが、例えば、Sobelオペレータを用いることができる。本実施形態では、エッジとして検出される画素が所定個数を越えるまで、エッジの検出に用いられる閾値を下げていく。背景設定部24Aは、エッジ画素の画素値を255(白)とし、それ以外の画素値を0(黒)とする画像(以下、エッジ画像)を生成する(
図5参照)。
【0034】
その後、背景設定部24Aは、エッジ画像上でハフ変換により直線を検出し、最大の投票数を得た角度θ及び距離ρに対応する直線をゴルフクラブ7のシャフト73に対応する直線83とする。そして、エッジ画像上で右下のコーナー8に最も近い直線83上のエッジ画素を、シャフト73の下端に対応する画素として仮設定する。しかしながら、直線83上のエッジ画素には、シャフト73ではなく背景の画素を表すものも含まれ得る。従って、仮設定された画素から直線83に沿ってエッジ画素が所定数(例えば、10画素)以上連続している場合に限り、その画素をシャフト73の下端の画素として最終決定する。一方、エッジ画素が所定数連続しなかった場合には、エッジ画像上で右下のコーナー8に次に近い直線83上のエッジ画素が同様に探索される。なお、右下のコーナー8が基準とされるのは、ヘッド72がこの点の近くに存在すると予想されるからである。
【0035】
以上のとおり、仮のアドレスフレームF
a上でのヘッド72の座標が検出されると、背景設定部24Aは、次にステップS23として、仮のアドレスフレームF
a上でのゴルファー70の手元75の座標を検出する。具体的には、背景設定部24Aは、エッジ画像上でシャフト73の下端の画素から直線83に沿って上方へ画素を探索してゆき、エッジ画素でない画素が最初に現れたときに、最後に検出されたエッジ画素を手元75に対応する画素とする。ただし、誤検出を避けるべく、以下の式1を満たす場合には、探索を続ける。式1の成立は、手元75とヘッド72の位置が近すぎることを意味している。
【0036】
Y
hand−H/2>c*(Y
club−H/2) (式1)
なお、cは、0<c≦1以下の定数であり、Y
handは、手元75のY座標、Y
clubは、ヘッド72のY座標であり、Hは、エッジ画像の縦の画素数である。なお、Y軸は、エッジ画像の縦軸として定義される(上端においてY=0であり、下向きが正である)。また、X軸は、エッジ画像の横軸として定義される(左端においてX=0であり、右向きが正である)。また、X及びY方向のどちらにおいても、隣接画素間の距離は1である。なお、X軸及びY軸の定義は、エッジ画像だけでなく、フレームF
i等のその他の画像にも共通する定義である。
【0037】
そして、式1を満たすと判断された場合には、それ以後の探索は、Y=H/2の位置から直線83に沿って下方へ進められる。このとき、背景設定部24Aは、最初に検出されたエッジ画素を手元75に対応する画素とする。
【0038】
次に、ステップS24として、背景設定部24Aは、仮のアドレスフレームF
aと仮のインパクトフレームF
pとの差分画像Dを作成する。この差分画像Dは、様々な方法で生成し得るが、例えば、各画素について、HSV色空間内での色相、彩度及び明度に関するF
a,F
p間の距離を適当に重み付して足し合わせた値(以下、色距離)をその画素の画素値とする画像を生成し、さらにこれを二値化した画像とすることができる。この二値化では、所定の閾値よりも大きな色距離を有する画素の画素値を1(黒)とし、それ以外の画素の画素値を0(白)とする。また、このとき、ノイズの影響を小さくするため、黒が連続する領域が所定の大きさに満たない場合には、その領域内の画素の画素値を0(白)に変換することもできる。
図6は、このような方法で生成された差分画像Dを示している。
【0039】
その後、背景設定部24Aは、差分画像D上でのゴルファー70の頭部の座標を検出する。具体的には、差分画像D上で頭部が現れると予想される領域81内で、最も上に現れる黒の画素の座標を頭部の位置とする。頭部が現れると予想される領域81とは、例えば、差分画像Dの画像サイズが縦640×横480である場合には、
X方向の範囲=X
hand−50〜X
hand+50
Y方向の範囲=100〜Y
hand
とする矩形領域とすることができる。なお、X
handは、手元75のX座標である。
【0040】
続くステップS25では、背景設定部24Aは、差分画像D上でのゴルファー70の腰の座標を検出する。具体的には、差分画像D上で腰が現れると予想される領域82内で、最も左に現れる黒の画素の座標を腰の位置とする。腰が現れると予想される領域82とは、例えば、差分画像Dの画像サイズが縦640×横480である場合には、
X方向の範囲=0〜X
hand
Y方向の範囲=Y
hand−100〜Y
hand
とする矩形領域とすることができる。
【0041】
ヘッド72、手元75、頭部及び腰を示す以上の特徴点が検出されると、続くステップS26では、背景設定部24Aは、これらの座標に基づいて、全てのフレームF
1,F
2,・・・,F
n内においてゴルファー70が存在するマスク領域84を決定する(
図7参照)。具体的には、まず、マスク領域84を取り囲む矩形領域85を決定する。この矩形領域85は、フレームF
iの画像サイズが縦640×横480である場合には、
X方向の範囲=X
waist−3〜X
hand+70
Y方向の範囲=Y
head−3〜Y
hand+1.7(Y
club−Y
hand)
とする矩形領域とすることができる。なお、X
waistは、腰のX座標であり、Y
headは、頭のY座標である。
【0042】
続いて、背景設定部24Aは、
図7に示すように、予め決められている形状のマスク領域84の上下左右の端部が矩形領域85の上下左右の辺に接するように、マスク領域84をX及びY方向に適宜膨張させる。これにより、ゴルファー70を覆うマスク領域84の位置及び形状が確定する。
【0043】
また、背景設定部24Aは、所定の幅を有し、ヘッド72のやや下方から斜め方向に手元75の位置まで延びる直線状の領域を設定し、これをマスク領域86とする。そして、全てのフレームF
1,F
2,・・・,F
n内においてマスク領域84,86のいずれでもない領域を、背景領域87として設定する。以下、フレームF
1,F
2,・・・,F
nおいて背景領域87が占める領域を、それぞれ背景領域E
1,E
2,・・・,E
nとする。
【0044】
背景領域E
1,E
2,・・・,E
nの設定が終了すると、第1補正部24Bが、
図8に示す1回目の補正ルーチンを実行する(ステップS27)。なお、
図4に示すように、1回目の補正ルーチンの開始前には、この補正ルーチンの中で使用される2つのパラメータB
1,B
2の初期値が設定される。パラメータB
1,B
2の詳細については、1回目の補正ルーチンの詳細なアルゴリズムとともに、
図8を用いて後述される。そして、ステップS27の補正ルーチンの結果、フレームF
1,F
2,・・・,F
n間の位置のズレが解消され、新たなフレームK
1,K
2,・・・,K
nが生成される。K
1,K
2,・・・,K
nは、それぞれ1回目の補正ルーチンによる像振れ補正後のフレームF
1,F
2,・・・,F
nである。なお、先頭のフレームF
1が位置のズレを修正するための基準とされるため、K
1=F
1である。
【0045】
その後、ステップS28では、判定部24Cが、ステップS26で決定された背景領域87において、フレームK
1,K
2,・・・,K
n間の差分が所定値以上であるか否かを判定する。具体的には、判定部24Cは、i=1,2,・・・,n−1に対し、K
i+1の背景領域87内の画像と、K
iの背景領域87内の画像との差分画像J
iを生成する。以下では、フレームK
iの背景領域87を、背景領域M
iと表すこととする。なお、差分画像J
iとは、背景領域87内の各画素について、K
i+1における画素値からK
iにおける画素値を減算した値をその画素の画素値とする画像である。また、ここでの画素値の計算は、色成分(R,G,B)毎に行われる。
【0046】
続いて、判定部24Cは、各差分画像J
iについて、全色成分の画素値の絶対値の合計値が所定値以上となる画素数Lをカウントする。ここで、差分画像J
iは、背景領域87内におけるフレームK
i+1,K
i間の差分、すなわち、背景領域M
i+1,M
iの像間の差分を示すものであるから、完全に像振れが解消されていれば、差分画像J
i内の各画素において、全色成分の画素値の絶対値の合計値は0になるはずである。従って、画素数Lとは、隣接フレームK
i+1,K
i間の像振れによる差分、すなわち、隣接フレームK
i+1,K
i間の位置のズレの程度を表す指標となる。よって、全ての差分画像J
iについての画素数Lを合計すると、フレームK
1,K
2,・・・,K
n間の全体での位置のズレの程度を表す指標が得られる。そこで、判定部24Cは、全ての差分画像J
iについての画素数Lの合計値が所定値以上であるか否かを判断する。これは、フレームK
1,K
2,・・・,K
nが全体として十分に像振れ補正されているかを判断していることに等しい。
【0047】
そして、ステップS28でフレームK
1,K
2,・・・,K
n間の差分が所定値以上であると判断された場合には、1回目の補正ルーチンで像振れが十分に解消されなかったことになるため、2回目の補正ルーチンが実行される(ステップS29)。一方、フレームK
1,K
2,・・・,K
n間の差分が所定値よりも小さいと判断された場合には、1回目の補正ルーチンで十分に像振れが解消されたことになるため、2回目の補正ルーチンが実行されることなく、像振れ補正処理は終了する。2回目の補正ルーチンの詳細については、後述する。
【0048】
<5−1.1回目の補正ルーチン>
以下、上述のステップS27に係る1回目の補正ルーチンの詳細について説明する。
まず、第1補正部24Bは、最初のフレームF
1の背景領域E
1上で特徴点を検出する(ステップS31)。本実施形態では、Harrisのコーナー検出法が利用されるが、他のアルゴリズムを採用することもできる。具体的には、本実施形態では、背景領域E
1内の各画素について、RGBの成分毎のHarrisオペレータの値が検出され、これらの値の加算値が閾値B
1と比較される。そして、この閾値B
1よりも大きい加算値を有する画素が、特徴点として検出される。ただし、ここでは、背景領域E
1内に互いに一定以上近接した特徴点が存在する場合には、それらの特徴点のうち、以上の加算値が最大のもの以外を特徴点として認識しないようにすることが好ましい。
【0049】
次に、第1補正部24Bは、ステップS31において背景領域E
1上で十分な数(本実施形態では、3)の特徴点が検出されたか否かを判断する(ステップS32)。そして、十分な数の特徴点が検出されたと判断される場合には、処理を次に進め、そうでない場合には、1回目の補正ルーチンを強制終了させる。背景領域E
1上に十分な数の特徴点が存在しない場合には、後の処理が失敗する、又は十分な像振れ補正の効果を得られないことが予想されるからである。
【0050】
続くステップS33は、現在選択されているiの値に対する背景領域E
i(i≧2)上で特徴点を検出するステップである。ステップS33は、
図8に示すように、背景領域E
i上で十分な数(本実施形態では、3)の特徴点が検出され続ける限り、i=2,3,・・・,nに対し順に繰り返し実行される。すなわち、第1補正部24Bは、背景領域E
i(i≧2)上に十分な数の特徴点が存在しているか否かを判断し(ステップS34)、十分な数存在していると判断される場合には、最後の背景領域E
nに達するまで、次の背景領域E
i+1に対し同様にステップS33を実行する。一方、ステップS34において背景領域E
i上に十分な数の特徴点が存在していないと判断される場合には、1回目の補正ルーチンを強制終了させる。背景領域E
2,E
3,・・・,E
n上に十分な数の特徴点が存在しない場合にも、後の処理が失敗する、又は十分な像振れ補正の効果を得られないことが予想されるからである。
【0051】
なお、本実施形態のステップS33では、Lucas-Kanade法により特徴点が抽出される。具体的には、ここでは、背景領域E
i内において、背景領域E
i-1内の各特徴点が追跡され、これに対応する対応点が検出される。続いて、第1補正部24Bは、検出された各対応点と、これに対応する背景領域E
i-1上の元の特徴点との距離を算出し、この距離を閾値B
2と比較する。そして、元の特徴点との距離が閾値B
2よりも小さいと判断された対応点のみを、真の対応点とする。隣接フレームF
i-1,F
i上の特徴点と対応点との距離が大き過ぎる場合には、そのような位置のズレは像振れによるものとは考えにくいからである。なお、閾値B
2の初期値は、例えば、4ピクセルとすることができる。以後、第1補正部24Bは、閾値B
2の基準をクリアした真の対応点のみを、背景領域E
i上の特徴点として認識する。また、ここでは、対応点の誤検出をさらに避けるべく、各対応点の周囲の局所領域と、元の特徴点の周囲の局所領域との間でテンプレートマッチングを行い、これらの像が類似している場合にのみ、その対応点を真の対応点とすることもできる。
【0052】
以上の処理の結果、全ての背景領域E
1,E
2,・・・,E
n上に十分な数の特徴点が抽出された場合には、処理はステップS35に進められる。ステップS35は、背景領域E
1,E
2,・・・,E
n上の特徴点の座標に基づいて、フレームF
1,F
2,・・・,F
n間の位置のズレを補正するステップである。具体的には、第1補正部24Bは、i=2,3,・・・,nに対し、背景領域E
i上の特徴点の座標を背景領域E
1上の対応する特徴点(ステップS33での追跡関係を辿った特徴点)の座標に変換するためのアフィン変換行列を算出する。その後、第1補正部24Bは、フレームF
iに含まれる各画素の座標を算出されたアフィン変換行列を用いて変換することにより、最初のフレームF
1に対する位置のズレが補正されたフレームF
iであるフレームK
iを生成する。なお、上述したとおり、このフレームK
iは、
図4に示す像振れ補正処理の最終生成物になるとは限らない。ステップS28の判定の結果によっては、さらに2回目の補正ルーチンが実行されるからである。
【0053】
<5−2.2回目の補正ルーチン>
以下、上述のステップS29に係る2回目の補正ルーチンの詳細について説明する。この2回目の補正ルーチンは、上述したとおり、1回目の補正ルーチンだけではフレームF
1,F
2,・・・,F
n間の像振れが十分に解消されなかった場合に、1回目の補正ルーチンによる中間生成物であるフレームK
1,K
2,・・・,K
n間に残っている像振れをさらに除去するための処理である。また、
図4に示すように、この2回目の補正ルーチンは、1回目の補正ルーチンが強制終了してしまったため、フレームF
1,F
2,・・・,F
nに対し像振れ補正が施されていない場合にも実行される。しかしながら、以下では、簡単のため、このような場合をも含めて、2回目の補正ルーチンの対象となるフレームを、フレームK
1,K
2,・・・,K
nと呼ぶことにする。また、1回目の補正ルーチンと2回目の補正ルーチンとは、像振れ補正のための主要なアルゴリズムは同じであるため、以下では、1回目の補正ルーチンとの差異を中心として、2回目の補正ルーチンについて説明する。
【0054】
まず、第2補正部24Dは、最初のフレームK
1の背景領域87(すなわち、背景領域M
1)上に十分な数(本実施形態では、5)の特徴点が存在しているか否かを判断し(ステップS41)、十分な数存在していると判断される場合には、処理をステップS45に進める。なお、ここでいう「十分な数」とは、1回目の補正ルーチンのステップS32,S34における「十分な数」よりも大きくなるように設定されている。2回目の補正ルーチンにおいては、1回目の補正ルーチンよりも多くの特徴点が検出されるようにすることで、最終的に補正の精度を向上させるためである。これは、後述するステップS46においても同様である。そして、背景領域M
1(背景領域E
1と同じ)上に十分な数の特徴点が存在していないと判断される場合には、第2補正部24Dは、背景領域M
1上で十分な数の特徴点が得られるよう閾値B
1を下げた上で(ステップS42)、ステップS31と同様のアルゴリズムにより、背景領域M
1上で特徴点を検出する(ステップS43)。このとき、第2補正部24Dは、
図9に示すとおり、背景領域M
1上に十分な数の特徴点が現れるまで、閾値B
1を段階的に下げながら、ステップS43を繰り返す。ただし、閾値B
1を下限まで下げても、背景領域M
1上に十分な数の特徴点が現れない場合には、処理はステップS44に進められ、ユーザに向けて「手振れが大き過ぎます。再度撮影して下さい。」等のエラーメッセージが出力される。なお、
図2にはステップS44が実行される場合の処理の流れは示されていないが、このエラーメッセージは、サーバ2から携帯電話1に送信され、表示部11上に表示される。一方、閾値B
1を下げたことで背景領域M
1上に十分な数の特徴点が得られた場合には、処理はステップS45に進められる。
【0055】
ステップS45では、第2補正部24Dは、上述のステップS33と同様のアルゴリズムにより、現在選択されているiの値に対する背景領域M
i(i≧2)上で特徴点を検出する。また、ステップS45も、ステップS33と同様に、ステップS34と同様のステップS46により、背景領域M
i上で十分な数(本実施形態では、5)の特徴点が検出され続ける限り、i=2,3,・・・,nに対し順に繰り返し実行される。ただし、2回目の補正ルーチンは、1回目の補正ルーチンとは異なり、同じiの値に対する背景領域M
i上に十分な数の特徴点が存在しないと一度判定されただけでは、強制終了はされない。すなわち、2回目の補正ルーチンでは、ステップS46で十分な数の特徴点がないと判断される場合に、同じ背景領域M
i上で特徴点が再検出される。
【0056】
具体的には、第2補正部24Dは、ステップS46で背景領域M
i上に十分な数の特徴点がないと判断されると、背景領域M
i上で十分な数の特徴点が得られるよう閾値B
2を下げた上で(ステップS47)、同じ背景領域M
iに対しステップS45を実行する。また、このとき、第2補正部24Dは、
図9に示すとおり、背景領域M
i上に十分な数の特徴点が現れるまで、閾値B
2を段階的に下げながら、ステップS45を繰り返す。ただし、閾値B
2を下限まで下げても、背景領域M
i上に十分な数の特徴点が現れない場合には、処理はステップS48に進められる。なお、本実施形態において、閾値を下げるとは、特徴点が検出され易くなる方向に閾値を変更することである。従って、本実施形態では、ピクセル数で表される特徴点と対応点の距離である閾値B
2の値は大きくなるように変更されるが、これも閾値を下げていることになる。
【0057】
ステップS48とこれに続くステップS49は、閾値B
2を下限まで下げたにも関わらず、背景領域M
i上に未だ十分な数の特徴点が得られない場合に実行されるステップである。従って、第2補正部24Dは、背景領域M
i上で十分な数の特徴点が得られるよう閾値B
1を下げた上で(ステップS48)、ステップS45とは異なるアルゴリズムにより、背景領域M
i上で特徴点を検出する(ステップS49)。具体的には、ステップS31,S41と同様のアルゴリズムが用いられる。また、このときも、第2補正部24Dは、
図9に示すとおり、背景領域M
i上に十分な数の特徴点が現れるまで、閾値B
1を段階的に下げながら、ステップS49を繰り返す。ただし、閾値B
1についても下限まで下げたにも関わらず、背景領域M
i上に十分な数の特徴点が現れない場合には、処理はステップS44に進められ、エラーメッセージが出力される。一方、閾値B
1及び/又は閾値B
2を下げたことで背景領域M
i上に十分な数の特徴点が得られた場合には、処理は次の背景領域M
i+1に対するステップS45に進められる。
【0058】
以上の処理の結果、全ての背景領域M
1,M
2,・・・,M
n上に十分な数の特徴点が抽出された場合には、処理はステップS50に進められる。ステップS50は、ステップS35と同様のアルゴリズムにより、背景領域M
1,M
2,・・・,M
n上の特徴点の座標に基づいて、フレームK
1,K
2,・・・,K
n間の位置のズレを補正するステップである。具体的には、第2補正部24Dは、i=2,3,・・・,nに対し、背景領域M
i上の特徴点の座標を背景領域M
1上の対応する特徴点(ステップS45での追跡関係を辿った特徴点)の座標に変換するためのアフィン変換行列を算出する。ただし、背景領域M
1上に対応する特徴点が存在しない場合には、背景領域M
i上の特徴点の座標を追跡元フレーム上の対応する特徴点の座標に変換するためのアフィン変換行列を算出する。なお、追跡元フレームとは、ステップS45での追跡関係を辿れる限り辿ったフレームである。その後、第2補正部24Dは、フレームK
iに含まれる各画素の座標を算出されたアフィン変換行列を用いて変換することにより、最初のフレームK
1又は追跡元フレームに対する位置のズレが補正されたフレームK
iを生成する。
【0059】
<6.特徴>
本発明によれば、スポーツのプレイヤーの動作を撮影した動画に含まれる複数のフレームF
1,F
2,・・・,F
n内において、プレイヤーの存在しない背景領域87が設定される。背景領域87を設定するのは、カメラ10の動きによる像振れを正確に評価するために、プレイヤーの動きの影響を受けない領域を設定するためである。そして、この背景領域87に注目して、複数のフレームF
1,F
2,・・・,F
n間の位置のズレを補正する補正処理が実行される。その後、依然として補正処理後の複数のフレーム間の位置のズレが大きい場合には、すなわち、像振れが大き過ぎたために、1回目の補正処理で十分に像振れを解消できなかった場合には、2回目の補正処理が実行される。従って、必要とされる場合にのみ、処理負荷が増加することとなる。その結果、スポーツのプレイヤーの動作を撮影した動画の像振れを精度良く補正しつつも、処理負荷を合理的に抑えることができる。
【0060】
<7.変形例>
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて、種々の変更が可能である。例えば、以下の変更が可能である。また、以下の変形例の要旨は、適宜組み合わせることができる。
【0061】
<7−1>
上記実施形態では、ゴルフスイングの撮影、及び画像サイズの縮小が携帯電話1側で実行され、像振れ補正、及びゴルフスイングの分析がサーバ2側で実行されるようになっていた。しかしながら、携帯電話1側で撮影から像振れ補正までが実行されるようにしてもよいし、さらにサーバ2を省略し、携帯電話1側で撮影から分析処理までが実行されるようにしてもよい。あるいは、撮影のみを携帯電話1で行った後、縮小前の動画を携帯電話1からサーバ2に送信し、サーバ2側で画像サイズの縮小を行ってもよい。ただし、通信負荷を下げる観点からは、画像サイズの縮小後の動画を送信することが好ましい。このように上述した様々な処理を実行する主体は、携帯電話1とサーバ2とに適宜振り分けることができる。
【0062】
<7−2>
システム100のハードウェア構成は、上記したものに限られない。例えば、携帯電話のようなインターネット通信機能を有するカメラ以外のカメラで撮影し、これをパーソナルコンピュータ(以下、PC)に取り込んで、PCからサーバ2に送信するようにしてもよい。また、PCにサーバ2と同様のプログラムをインストールしておき、PCで分析するようにしてもよい。
【0063】
<7−3>
携帯電話1やサーバ2の処理能力が十分に高い場合等には、ステップS4における上下領域の切り取り処理及び/又は圧縮の処理は、適宜、省略可能である。
【0064】
<7−4>
ステップS28において、フレームK
1,K
2,・・・,K
n間の位置のズレを評価する方法は、上述したものに限られない。例えば、全ての差分画像J
1,J
2,・・・,J
n-1の全ての画素の画素値の絶対値を加算した値が、所定値以上であるか否かを判定することにより、フレームK
1,K
2,・・・,K
nが全体として十分に像振れ補正されているか否かを判断してもよい。
【0065】
<7−5>
上記実施形態では、背景領域87を自動検出するために仮のアドレスフレームと仮のインパクトフレームを用いたが、トップやフィニッシュのフレーム等、アドレス及びインパクト以外のフレームを用いて背景領域87を検出するようにしてもよい。また、背景領域87を自動検出するために、仮のアドレスフレーム等から検出される特徴点は、ゴルファーの頭部や腰に限らず、例えば、足や肩であってもよい。
【0066】
<7−6>
上記実施形態では、ステップS48の後、ステップS49を経てステップS46に戻ることとしたが、ステップS48の後、ステップ49を省略し、ステップS43に進むようにしてもよい。これにより、特徴点の追跡関係が全てのフレームK
1,K
2,・・・,K
nを通して途絶えることがなくなり、フレームK
1,K
2,・・・,K
n全体での像ブレ補正の精度が向上する。