DataTennis.NET

データテニス ドットネット

【OpenCVを使ったスポーツ画像解析4(モーショントラッキング)】テニスコートのラインの自動検出

公開日:
最終更新日:2018/07/27

      2018/07/27

モーショントラッキングの続きです。

先回【OpenCVを使ったスポーツ画像解析3(モーショントラッキング)】選手やテニスボールの移動を自動で検出して移動軌跡をトラッキングでテニスボールや選手の移動をトラッキングをできるようにしました。

次は、テニスコートのラインを自動検出できるようにしたいと思います。
元画像は↓です。

(2018/4/26)申し訳ありません。画像は削除しました。

まず、画像を2値化します。

(2018/4/26)申し訳ありません。画像は削除しました。

2値化した画像の白い領域を輪郭検出すると↓のような画像となります。
テニスコート以外の領域もたくさん輪郭検出されます。

(2018/4/26)申し訳ありません。画像は削除しました。

テニスコートだけを検出するために、輪郭図形の中で面積が最大のものだけ抽出して表示するようにします。
中央のネットが邪魔をして綺麗な台形を検出できず、いびつな形となっています。
ですが、4隅の点座標がわかればいいので、この図形でこのまま解析を続けます。

(2018/4/26)申し訳ありません。画像は削除しました。

approxには全点の座標データが格納されており、そこから、下記やり方で4隅の点を検出します。
・左下 x座標が一番小さい点を抽出
・右下 x座標が一番大きい点を抽出
・左上 一番左上に近い点を抽出するために、135°回転させた座標軸で一番大きい点を抽出
・右上 一番右上に近い点を抽出するために、45°回転させた座標軸で一番大きい点を抽出

4点をつなぐと次のような画像となります。

(2018/4/26)申し訳ありません。画像は削除しました。

検出した線はダブルスコートなので、シングルスコートに変換します。
ダブルスコートの線長は10.97m
シングルスコートの線長は8.23m
なので、その比率をとって、シングルスコートの4隅の点を算出します。

4点をつなぐと次のような画像となります。

(2018/4/26)申し訳ありません。画像は削除しました。

実際の線に対して少しずれがありますが、まあまあの精度でシングルスコートのラインを検出することができました。

スポーツ画像解析リンク
・【OpenCVを使ったスポーツ画像解析1】テニス選手の移動量や軌跡をデータ化する
・【OpenCVを使ったスポーツ画像解析2】フェデラー選手の移動軌跡をグラフ化してみました
・【OpenCVを使ったスポーツ画像解析3】選手やテニスボールの移動を自動で検出して移動軌跡をトラッキング
・【OpenCVを使ったスポーツ画像解析4】テニスコートのラインの自動検出
・【OpenCVを使ったスポーツ画像解析5】画像からテニス選手の位置を検出する
・【OpenCVを使ったスポーツ画像解析6】深層学習(ディープラーニング)を用いてテニス選手とボールをトラッキング

 - blog, スポーツ画像解析, データ分析, テニス×テクノロジー