(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-28
(54)【発明の名称】仮想時間同期を使用した三次元オブジェクト追跡の前の二次元画像データのモーションベースの前処理
(51)【国際特許分類】
G06T 7/277 20170101AFI20230721BHJP
【FI】
G06T7/277
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023510444
(86)(22)【出願日】2021-08-16
(85)【翻訳文提出日】2023-03-30
(86)【国際出願番号】 EP2021072732
(87)【国際公開番号】W WO2022034245
(87)【国際公開日】2022-02-17
(32)【優先日】2020-08-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】522287765
【氏名又は名称】トップゴルフ スウェーデン エービー
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】フォースグレン,ダニエル
(72)【発明者】
【氏名】ノーハイム,ステイン
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096CA04
5L096CA05
5L096DA01
5L096DA02
5L096FA59
5L096FA69
5L096GA08
5L096GA30
5L096HA05
(57)【要約】
3Dオブジェクト追跡の前に画像データを前処理するための方法、システム、及びメディアにエンコードされたコンピュータプログラム製品を含む装置は、少なくとも1つの態様において、第1のコンピュータで、カメラから画像フレームを受信することと、第1のコンピュータによって、画像フレーム内の関心位置を識別することと、位置のシーケンスを検出することであって、シーケンスのそれぞれは、カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たすことと、動いているボールの3Dトラックを構築するために使用可能な所定の時点での仮想2D位置を生成するべく、特定の画像フレームのタイムスタンプを使用して、シーケンスに関する特定の画像フレーム内の指定された2D位置間を補間することによって、出力データにおけるシーケンスを処理するために、位置のシーケンスに関する出力データを第2のコンピュータに送信することと、を含む方法を含む。
【選択図】
図1A
【特許請求の範囲】
【請求項1】
方法であって、
1つ以上の第1のコンピュータで、カメラを前記1つ以上の第1のコンピュータと結合する第1の通信チャネルを介して、前記カメラから画像フレームを受信することであって、前記第1の通信チャネルは第1のデータ帯域幅を有することと、
前記1つ以上の第1のコンピュータによって、前記画像フレーム内の関心位置を識別することと、
前記画像フレーム内で識別された位置のシーケンスを検出することであって、前記シーケンスのそれぞれは、前記カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たすことと、
前記位置のシーケンスに関する出力データを送信することであって、前記出力データは、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を備えることと、
1つ以上の第2のコンピュータで、前記出力データを受信することであって、前記1つ以上の第2のコンピュータは、前記第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する第2の通信チャネルを介して前記1つ以上の第1のコンピュータと結合されることと、
前記1つ以上の第2のコンピュータによって、所定の時点での仮想二次元位置を生成するべく、前記特定の画像フレームのタイムスタンプを使用して、前記シーケンスのうちの少なくとも1つに関する特定の画像フレーム内の指定された二次元位置間を補間することによって、前記出力データにおけるシーケンスのうちの少なくとも1つを処理することと、
前記所定の時点に関する、前記仮想二次元位置及び少なくとも1つの他のセンサから得られた位置情報を使用して、三次元空間で動いているボールの三次元トラックを構築することと、
を備える、方法。
【請求項2】
前記検出すること及び前記送信することは、前記1つ以上の第2のコンピュータによって実行され、前記画像フレーム内の識別された位置は、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項1に記載の方法。
【請求項3】
前記検出すること及び前記送信することは、前記1つ以上の第1のコンピュータによって実行され、前記出力データは、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項1に記載の方法。
【請求項4】
前記検出することは、
第1の識別された関心位置のそれぞれが木の開始基準を満たす画像データ値を有していることに応答して、前記第1の識別された関心位置のそれぞれから根付き木の根ノードを確立することと、
第2の識別された位置のうち少なくともいくつかのそれぞれが、前記根付き木のうちの少なくとも1つに追加された前の画像フレーム内の識別された位置の距離閾値内にあることに応答して、第2の識別された関心位置を前記根付き木のサブノードとして追加することと、
前記シーケンスの根付き木が2よりも大きい木の深さを有しているときに、識別された位置のシーケンスのそれぞれを出力対象であるか確認することと、
を含む、前記関心位置から前記根付き木を生成することを備える、請求項1に記載の方法。
【請求項5】
前記送信することは、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づく前記シーケンスのいずれにも含まれなくなるまで、前記所与の画像フレームと、前記シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを備える、請求項1に記載の方法。
【請求項6】
前記送信することは、
各画像フレームについての識別が完了すると、前記画像フレームのデータを出力することと、
前記シーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、各関心位置のデータを出力することと、
を備える、請求項1に記載の方法。
【請求項7】
前記カメラは、ローリングシャッターカメラを備え、前記出力データは、各シーケンスに含まれる各関心位置の時間オフセット値を備え、前記処理することは、
前記特定の画像フレームのうちの第1の画像フレームのタイムスタンプに第1の位置の第1の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの1つを有する第1の位置の第1の観測時間を計算することと、
前記特定の画像フレームのうちの第2の画像フレームのタイムスタンプに第2の位置の第2の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの別の1つを有する第2の位置の第2の観測時間を計算することと、
前記第1の観測時間及び前記第2の観測時間を使用して前記補間を行うことと、
を備える、請求項1に記載の方法。
【請求項8】
前記構築することは、
前記1つ以上の第2のコンピュータによって、関心オブジェクト三次元位置を生成するべく、前記仮想二次元位置を前記少なくとも1つの他のセンサから得られた位置情報と組み合わせることと、
前記1つ以上の第2のコンピュータによって、前記関心オブジェクト三次元位置を、所定の時点に関する関心オブジェクト三次元位置群内の他の関心オブジェクト三次元位置に追加することと、
前記1つ以上の第2のコンピュータによって、前記三次元空間内で動いているボールの三次元トラックを構築するべく、複数の三次元位置群にわたるモーション分析を行うことであって、前記複数の位置群のそれぞれは単一の時点に関するものであり、前記複数の位置群は、前記所定の時点に関する関心オブジェクト三次元位置群を含むことと、
前記三次元空間内で動いているボールの三次元トラックを表示するべく出力することと、
を備える、請求項1に記載の方法。
【請求項9】
前記カメラは第1のカメラであり、前記少なくとも1つの他のセンサは第2のカメラであり、前記位置情報は、前記第2のカメラから得られた複数の二次元位置を備え、前記組み合わせることは、
前記第1のカメラから得られた仮想二次元位置で三次元点を生成することができないものとして、前記第2のカメラから得られた複数の二次元位置のすべてではないが少なくとも1つを除外することと、
前記第1のカメラから得られた仮想二次元位置、前記第2のカメラから得られた複数の二次元位置のうちの少なくとも1つ、前記第1のカメラ及び前記第2のカメラの固有キャリブレーションデータ、及び前記第1及び前記第2のカメラの外部キャリブレーションデータを使用して、少なくとも前記関心オブジェクト三次元位置を三角測量することと、
を備える、請求項8に記載の方法。
【請求項10】
前記除外することは、
前記仮想二次元位置、前記第1のカメラの光学中心、前記第2のカメラの光学中心、前記第1のカメラと前記第2のカメラとの間のベースライン、及び前記第1及び前記第2のカメラの外部キャリブレーションデータを使用して、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域を決定することと、
前記複数の二次元位置のそれぞれが、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域外にあることに応答して、前記第1のカメラから得られた仮想二次元位置と前記第2のカメラから得られた複数の二次元位置のそれぞれとのペアリングを棄却することと、
を備える、請求項9に記載の方法。
【請求項11】
前記1つ以上の第1のコンピュータは、第1の処理ユニット及び少なくとも1つのさらなる処理ユニットを備え、前記第1の通信チャネルは、前記カメラを前記第1の処理ユニットと結合し、前記画像フレームを受信することは、前記第1の処理ユニットで前記画像フレームを受信することを備え、前記関心位置を識別することは、前記第1の処理ユニットで前記関心位置を識別することを備え、前記シーケンスを検出することは、前記第1の処理ユニットを前記少なくとも1つのさらなる処理ユニットと結合する第3の通信チャネルを介して前記第1の処理ユニットから前記位置を受信することに応答して、前記少なくとも1つのさらなる処理ユニットで前記シーケンスを検出することを備え、前記出力データを送信することは、前記少なくとも1つのさらなる処理ユニットから前記出力データを送信することを備え、前記第3の通信チャネルは、前記第1のデータ帯域幅よりも小さいが前記第2のデータ帯域幅よりも大きい第3のデータ帯域幅を有する、請求項1に記載の方法。
【請求項12】
システムであって、
カメラと、第1のハードウェアプロセッサ、及び前記第1のハードウェアプロセッサと結合された第1のメモリを備える1つ以上の第1のコンピュータとを備える少なくとも1つのセンサであって、前記第1のメモリは、第1の動作を前記第1のハードウェアプロセッサに実行させるように構成された命令をエンコードする、少なくとも1つのセンサと、
少なくとも1つの他のセンサと、
第2のハードウェアプロセッサ、及び前記第2のハードウェアプロセッサと結合された第2のメモリを備える1つ以上の第2のコンピュータであって、前記第2のメモリは、第2の動作を前記第2のハードウェアプロセッサに実行させるように構成された命令をエンコードする、第2のコンピュータと、
を備える、システムであり、
前記第1の動作及び前記第2の動作は、請求項1~11のいずれかに記載の、画像フレームの受信、関心位置の識別、シーケンスの検出、出力データの送信、前記出力データの受信、前記シーケンスの処理、及び三次元トラックの構築を備える、システム。
【請求項13】
前記少なくとも1つの他のセンサはレーダーデバイスを備える、請求項12に記載のシステム。
【請求項14】
前記少なくとも1つの他のセンサは第2のカメラを備える、請求項12に記載のシステム。
【請求項15】
請求項1~11のいずれかに記載の動作をカメラに関連するデータ処理装置に実行させる命令をエンコードする非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、様々なセンサ技術を用いることがある様々なセンサから取得したデータを使用して、飛行中のゴルフボールなどの動いているオブジェクトを追跡することに関する。
【背景技術】
【0002】
センサでゴルフショットの飛行を追跡するためのシステム及び方法には、ローンチモニタ、フルフライト二次元(2D)追跡、及びフルフライト三次元(3D)追跡がある。よく用いられるセンサの種類は、カメラ、ドップラーレーダー、及びフェーズドアレイレーダーである。ローンチモニタ法は、ゴルフクラブのスイング中と、クラブがボールに当たった後のボールの最初の数インチの飛行中に観測できるパラメータセットを測定することに基づいている。次いで、測定されたパラメータを使用して、数学及び物理学モデリングを用いて予想されるボールの飛行を外挿する。
【0003】
対照的に、フルフライト3D追跡システムは、ローンチパラメータから外挿するのではなく、ゴルフショットのフルフライトの追跡を試みる設計によって特徴付けられる。さらに、フルフライト2D追跡システムは、特定の角度から見たゴルフショットの形状を追跡するが、3D情報は生成せず、一般に、ボールが移動した距離などの重要なパラメータを求めるために用いることはできない。カメラとドップラーレーダーデータの組み合わせを使用したフルフライト3D追跡については、米国特許第10,596,416号に記載されている。最後に、画像フレームの取得が互いに同期されているステレオカメラを使用したフルフライト3D追跡を、状況によってはオブジェクトの3D追跡に使用できる可能性があると記載されている。
【発明の概要】
【0004】
本明細書は、少なくとも1つのカメラから取得したデータを使用して、飛行中のゴルフボールなどの動いているオブジェクトを追跡することに関係する技術を説明する。
【0005】
一般に、本明細書に記載の主題の1つ以上の態様は、1つ以上の第1のコンピュータで、カメラを1つ以上の第1のコンピュータと結合する第1の通信チャネルを介して、カメラから画像フレームを受信することであって、第1の通信チャネルは第1のデータ帯域幅を有することと、1つ以上の第1のコンピュータによって、画像フレーム内の関心位置を識別することと、画像フレーム内で識別された位置のシーケンスを検出することであって、シーケンスのそれぞれは、カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たすことと、位置のシーケンスに関する出力データを送信することであって、出力データは、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を含むことと、1つ以上の第2のコンピュータで、1つ以上の第1のコンピュータを1つ以上の第2のコンピュータと結合する第2の通信チャネルを介して、1つ以上の第1のコンピュータから出力データを受信することであって、第2の通信チャネルは、第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有することと、1つ以上の第2のコンピュータによって、所定の時点での仮想二次元位置を生成するべく、特定の画像フレームのタイムスタンプを使用して、シーケンスのうちの少なくとも1つに関する特定の画像フレーム内の指定された二次元位置間を補間することによって、出力データにおけるシーケンスのうちの少なくとも1つを処理することと、所定の時点に関する仮想二次元位置及び少なくとも1つの他のセンサから得られた位置情報を使用して、三次元空間で動いているボールの三次元トラックを構築することと、を含む1つ以上の方法で具現化することができる。
【0006】
検出すること及び送信することは、1つ以上の第2のコンピュータによって実行することができ、画像フレーム内の識別された位置は、第2の通信チャネルを介して1つ以上の第1のコンピュータから1つ以上の第2のコンピュータで受信することができる。代替的に、検出すること及び送信することは、1つ以上の第1のコンピュータによって実行することができ、出力データは、第2の通信チャネルを介して1つ以上の第1のコンピュータから1つ以上の第2のコンピュータで受信することができる。
【0007】
検出することは、第1の識別された関心位置のそれぞれが木の開始基準を満たす画像データ値を有していることに応答して、第1の識別された関心位置のそれぞれから根付き木の根ノードを確立することと、第2の識別された位置のうちの少なくとも特定の1つが、根付き木のうちの少なくとも1つに追加された前の画像フレーム内の識別された位置の距離閾値内にあることに応答して、第2の識別された関心位置を根付き木のサブノードとして追加することと、シーケンスの根付き木が2よりも大きい木の深さを有しているときに、識別された位置のシーケンスのそれぞれを出力対象であるか確認することと、を含む、関心位置から根付き木を生成することを含み得る。
【0008】
送信することは、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づくシーケンスのいずれにも含まれなくなるまで、所与の画像フレームと、シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを含み得る。送信することは、各画像フレームについての識別が完了すると、画像フレームのデータを出力することと、シーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、各関心位置のデータを出力することとを含み得る。
【0009】
カメラは、ローリングシャッターカメラを含み、出力データは、各シーケンスに含まれる各関心位置の時間オフセット値を含み、処理することは、特定の画像フレームのうちの第1の画像フレームのタイムスタンプに第1の位置の第1の時間オフセット値を追加することによって、特定の画像フレーム内の指定された二次元位置のうちの1つを有する第1の位置の第1の観測時間を計算することと、特定の画像フレームのうちの第2の画像フレームのタイムスタンプに第2の位置の第2の時間オフセット値を追加することによって、特定の画像フレーム内の指定された二次元位置のうちの別の1つを有する第2の位置の第2の観測時間を計算することと、第1の観測時間及び第2の観測時間を使用して補間を行うこととを含み得る。
【0010】
構築することは、1つ以上の第2のコンピュータによって、関心オブジェクト三次元位置を生成するべく、仮想二次元位置を少なくとも1つの他のセンサから得られた位置情報と組み合わせることと、1つ以上の第2のコンピュータによって、関心オブジェクト三次元位置を、所定の時点に関する関心オブジェクト三次元位置群内の他の関心オブジェクト三次元位置に追加することと、1つ以上の第2のコンピュータによって、三次元空間内で動いているボールの三次元トラックを構築するべく、複数の三次元位置群にわたるモーション分析を行うことであって、複数の位置群のそれぞれは単一の時点に関するものであり、複数の位置群は、所定の時点に関する関心オブジェクト三次元位置群を含むことと、三次元空間内で動いているボールの三次元トラックを表示するべく出力することとを含み得る。
【0011】
カメラは第1のカメラとすることができ、少なくとも1つの他のセンサは第2のカメラとすることができ、位置情報は、第2のカメラから得られた複数の二次元位置を含み、組み合わせることは、第1のカメラから得られた仮想二次元位置で三次元点を生成することができないものとして、第2のカメラから得られた複数の二次元位置のすべてではないが少なくとも1つを除外することと、第1のカメラから得られた仮想二次元位置、第2のカメラから得られた複数の二次元位置のうちの少なくとも1つ、第1のカメラ及び第2のカメラの固有キャリブレーションデータ、及び第1及び第2のカメラの外部キャリブレーションデータを使用して、少なくとも関心オブジェクト三次元位置を三角測量することとを含み得る。
【0012】
除外することは、仮想二次元位置、第1のカメラの光学中心、第2のカメラの光学中心、第1のカメラと第2のカメラとの間のベースライン、及び第1及び第2のカメラの外部キャリブレーションデータを使用して、第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域を決定することと、複数の二次元位置のそれぞれが、第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域外にあることに応答して、第1のカメラから得られた仮想二次元位置と第2のカメラから得られた複数の二次元位置のそれぞれとのペアリングを棄却することとを含み得る。
【0013】
1つ以上の第1のコンピュータは、第1の処理ユニット及び少なくとも1つのさらなる処理ユニットを含み、第1の通信チャネルは、カメラを第1の処理ユニットと結合し、画像フレームを受信することは、第1の処理ユニットで画像フレームを受信することを含み、関心位置を識別することは、第1の処理ユニットで関心位置を識別することを含み、シーケンスを検出することは、第1の処理ユニットを少なくとも1つのさらなる処理ユニットと結合する第3の通信チャネルを介して第1の処理ユニットから位置を受信することに応答して、少なくとも1つのさらなる処理ユニットでシーケンスを検出することを含み、出力データを送信することは、少なくとも1つのさらなる処理ユニットから出力データを送信することを含み、第3の通信チャネルは、第1のデータ帯域幅よりも小さいが第2のデータ帯域幅よりも大きい第3のデータ帯域幅を有する。
【0014】
本明細書に記載の主題の1つ以上の態様は、カメラと、第1のハードウェアプロセッサ、及び第1のハードウェアプロセッサと結合された第1のメモリを含む1つ以上の第1のコンピュータとを含む少なくとも1つのセンサであって、前記第1のメモリは、本明細書に記載の方法に係る、画像フレームの受信、関心位置の識別、シーケンスの検出、及び出力データの送信を含む第1の動作を第1のハードウェアプロセッサに実行させるように構成された命令をエンコードする、少なくとも1つのセンサと、少なくとも1つの他のセンサと、第2のハードウェアプロセッサ、及び第2のハードウェアプロセッサと結合された1つ以上の第2のメモリを含む1つ以上の第2のコンピュータであって、前記第2のメモリは、本明細書に記載の方法に係る、出力データの受信、シーケンスの処理、及び三次元トラックの構築を含む第2の動作を第2のハードウェアプロセッサに実行させるように構成された命令をエンコードする、第2のコンピュータと、を含む1つ以上のシステムで具現化することができる。
【0015】
少なくとも1つの他のセンサは、レーダーデバイスを含み得る。少なくとも1つの他のセンサは、第2のカメラを含み得る。さらに、本明細書に記載の主題の1つ以上の態様は、本明細書に記載の方法に係る動作をカメラに関連するデータ処理装置に実行させる命令をエンコードする1つ以上の非一時的なコンピュータ可読媒体で具現化することができる。
【0016】
本明細書に記載の主題の種々の実施形態は、以下の利点のうちの1つ以上を実現するために実施することができる。オブジェクト検出は、生画像(圧縮されていない)データでカメラの近くで実行することができ、これにより、より高解像度のカメラの使用が容易になり、より高いフレームレート及び/又はより高いビット深度になる可能性があり、より高品質の3D追跡が可能となる。ボール位置データは、高品質のダウンストリーム3D追跡に関連する情報を失うことなく、3D追跡で使用するデータを送信するための帯域幅要件を削減するべく、効果的に圧縮することができる。オブジェクトの可能な経路は、根付き木(それぞれが根ノードを有する連結非巡回グラフ)を使用して表すことができ、これらの根付き木は、特定の深さの枝に属する木のノードのみをエクスポートすることによって、(事実上)ノイズを除去するために用いることができる。
【0017】
さらに、画像データでの2D追跡で用いられる制約は、3Dトラッカのコンピュータへの通信接続の帯域幅を埋め尽くすことなく、より多くの使用可能なデータを3Dトラッカに受け渡すために、候補ボールを識別するための事前フィルタリングの観点と、2D空間でのボールの予想される動きのモデル化の観点との両方で緩和することができる。ダウンストリーム3D追跡コンポーネントは、大量のフォールスポジティブを処理するように設計することができ、したがって、ノイズをフィルタリングにより除去して、追跡されるべき実際のオブジェクト(例えば、ゴルフボール)を検出する優れた機能を提供することができる。そのような3D追跡コンポーネントによるフォールスポジティブのフィルタリングにより、2Dトラッカの制約を実質的に簡素化及び緩和することができ、フォールスポジティブをほとんど生じずに依然としてすべてのトゥルーポジティブを検出するように校正される必要がある、より厳密な制約を用いる2Dトラッカと比べて、2Dトラッカの作成及び保守が容易になるという利点がもたらされる。
【0018】
さらに、いくつかの順次プロセスに3D追跡タスクを分離することで、主要なプロセス間通信が一方向に流れ、各処理ステップでダウンストリームコンポーネントに必要な帯域幅が削減され、各プロセスを個別のコンピュータで実行することができ、特にカメラ及び/又は計算リソース間の距離がかなり離れている場合に、3Dオブジェクトモーション追跡システムの設計及び導入に実質的な融通性がもたらされる。さらに、候補ボールを識別し、2D空間でのボールの予想される動きをモデル化するために行われる前処理により、時間及び空間における測定されたオブジェクト位置のダウンストリーム(画像取り込み後)の仮想時間同期が可能になり、したがって、データの取り込み時にカメラ画像を他のセンサと実際に同期する必要がなくなる。オリジナルの取り込みが同期していなくても、異なるセンサ(例えば、異なるカメラ)からの点間の三角測量が可能である。最後に、ローリングシャッターカメラの仮想時間同期が可能になり、ローリングシャッターカメラとグローバルシャッターカメラとの両方からのデータを使用して、第2のコンピュータで(後処理段階中に)高品質の三角測量が可能になる。
【0019】
本明細書に記載の主題の1つ以上の実施形態の詳細が、添付の図面及び以下の説明に示されている。本発明の他の特徴、態様、及び利点は、説明、図面、及び特許請求の範囲から明らかとなるであろう。
【0020】
様々な図面での同様の参照番号及び名称は同様の要素を示す。
【図面の簡単な説明】
【0021】
【
図1A】三次元空間を通って動いているオブジェクトの二次元(2D)画像データのモーションベースの前処理に続いて、三次元(3D)オブジェクト追跡を実行するシステムの例を示す。
【
図1B】
図1Aのシステムで使用することができる様々なセンサ及びコンピュータの構成の例を示す。
【
図1C】
図1Aのシステムで使用することができる様々なセンサ及びコンピュータの構成の例を示す。
【
図1D】
図1Aのシステムで使用することができる様々なセンサ及びコンピュータの構成の例を示す。
【
図2】データ処理装置を含むデータ処理システムの概略図である。
【
図3】オブジェクトを検出する、2Dでオブジェクトを追跡する、時間同期のために仮想2D位置を生成する、及び動いているオブジェクトの3Dトラックを構築するための、様々なコンピュータで実行されるプロセスの例を示す。
【
図4A】モーション基準を満たしているオブジェクト位置のシーケンスを検出するプロセスの例を示す。
【
図4B】モーション基準を満たしているオブジェクト位置のシーケンスを検出するプロセスの例を示す。
【
図4C】モーション基準を満たしているオブジェクト位置のシーケンスを検出するプロセスの例を示す。
【
図4D】モーション基準を満たしているオブジェクト位置のシーケンスを検出するプロセスの例を示す。
【
図5】ローリングシャッターカメラから得られた特定の画像フレーム内の指定された2D位置を補間するプロセスの例を示す。
【
図6A】動いているオブジェクト(例えば、ボール)の3Dトラックを構築するプロセスの例を示す。
【
図6B】第2のカメラから得られた少なくとも1つの2D位置を除外するプロセスの例を示す。
【発明を実施するための形態】
【0022】
図1Aは、3D空間110を通って動いているオブジェクトの二次元(2D)画像データのモーションベースの前処理に続いて、三次元(3D)オブジェクト追跡を実行するシステム100の例を示す。追跡されるオブジェクトは、ゴルフボール、又は、打たれる、蹴られる、又は投げられる別のタイプのオブジェクト(例えば、ベースボール、サッカーボール、又はフットボール/ラグビーボール)とすることができる。一部の実装では、3D空間110は、ゴルフ練習場、芝生、又はオブジェクトを放つことができる別のオープンエリアである。例えば、3D空間110は、1つ以上の標的114、それぞれが少なくとも1つのティーエリア112(より一般的にはローンチエリア112)を含むゴルフベイを含む建物、及び潜在的に他のエンターテイメント並びにダイニングオプションを含む、ゴルフエンターテイメント施設の一部とすることができる。
【0023】
一部の実装では、3D空間110は、ゴルフコースなどのスポーツのプレイエリアであり、ローンチエリア112は、ゴルフコース上の特定のホールに対するゴルフティー、又はコース上のプレイ中のゴルフボールの中間着地点とすることができ、標的114は、ゴルフコース上の特定のホールの端にあるカップ、又はコース上のプレイ中のゴルフボールの中間着地点とすることができる。ローンチエリア112は、ゴルファーがゴルフボールをオープンフィールド110に打ち込むことができるティーラインに沿った複数の指定されたティーエリアのうちの1つである、又はローンチエリア112は、ゴルファーがゴルフボールをスポーツスタジアムのプレイフィールド110へ打つことができる、スポーツスタジアムのスタンド内の複数の指定されたティーエリアのうちの1つであるなどの他の実装も可能である。
【0024】
システム100は、少なくとも1つのカメラ120及びその関連するコンピュータ125を含めて、2つ以上のセンサ130を含む。センサ130のうちの1つ以上は(少なくとも1つのカメラ120及びその関連するコンピュータ125を含めて)、オブジェクトの追跡のためにローンチエリア112の近くに配置することができるが、これはそうである必要はない。一部の実装では、1つ以上のセンサ130は(カメラ120及びコンピュータ125を含めて)、3D空間110の片側又は両側に沿って、及び/又はローンチエリア112とは反対の3D空間110の他方の側に配置することができる。例えば、ゴルフトーナメントで、ショットがグリーンに向けて打たれると仮定すると、カメラ120及びコンピュータ125は、ゴルファーを振り返って見る状態で、グリーンの後方に配置することができる。したがって、様々な実装において、センサ130は、センサ130から離れる方へ、センサ130に向かって、及び/又はセンサ130の視野を通って動くオブジェクトを観測及び追跡することができる(図中の一連の3つのドットの各セットは、センサ、コンピュータ、通信チャネルなどの1つ以上のさらなるインスタンスも含まれ得ることを示していることに留意されたい)。
【0025】
センサ130は、カメラ(例えば、ステレオカメラペア)、レーダーデバイス(例えば、シングルアンテナドップラーレーダーデバイス)、又は米国特許第10,596,416号に記載のハイブリッドカメラ-レーダーセンサユニットを潜在的に含むこれらの組み合わせを含み得る。いずれにしても、センサ130のうちの少なくとも1つは、カメラ120及びその関連するコンピュータ125であり、通信チャネルによって接続される。
図1B~1Dは、
図1Aのシステムで使用することができる様々なセンサ及びコンピュータの構成の例を示す。
【0026】
図1Bは、システムで用いられる少なくとも1つの他の通信チャネルのデータ帯域幅よりも高い第1のデータ帯域幅を有する第1の通信チャネル154、158を通じて第1のコンピュータ150に接続される、一対のカメラ152、156の例を示す。例えば、第1の通信チャネル154、158は、ユニバーサルシリアルバス(USB)3.0、Mobile Industry Processor Interface(MIPI)、Peripheral Component Interconnect eXtended(PCIx)などの、1つ以上の高帯域幅の短距離データ通信技術を採用することができる。以下でさらに詳しく説明するように、カメラ152、156からの画像データの前処理は、1つ以上の第1のコンピュータ150でカメラの近くで行うことができ、第1のコンピュータ150での前処理によってデータ帯域幅が削減されると、この前処理の出力を、第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する第2の通信チャネル162を介して送信することができる。したがって、第2の通信チャネル162は、銅線イーサネット又は無線データ接続(例えば、WiFi及び/又は1つ以上の移動電話通信技術を使用する)などの、1つ以上のより低帯域幅のより長距離のデータ通信技術を採用することができる。
【0027】
これは、より高解像度のカメラ120、152、156、及びこれらのカメラ120、152、156からの生画像(圧縮されていない)データに対して動作するコンピュータ125、150でシステムを実装できるようになるので重要である。ステレオカメラ追跡を使用するか又はハイブリッドカメラ/レーダー追跡を使用するかに関係なく、より高いフレームレートのより高解像度のカメラを使用すると、より高品質の3D追跡が可能になるが、データを効率よく効果的に処理できる場合に限られることに留意されたい。さらに、オブジェクトの追跡が、(例えば、高解像度のカメラ画像であってもオブジェクトが単一のピクセルにしか表示されない場合がある)非常に小さいオブジェクトに機能することを意図している場合、従来の損失の多いビデオ圧縮技術(MPEGなど)を使用すると、小さいオブジェクトに関する貴重な情報が画像から除去される可能性があるため、オブジェクト検出では生画像(圧縮されていない)データにアクセスする必要があり得る。
【0028】
これらの問題に対処するために、第1のコンピュータ150は、第2の通信チャネル162を介して1つ以上の第2のコンピュータ160にセンサデータを送信するための帯域幅要件を削減するべく、カメラ152、156に近い画像データに前処理(オブジェクトの検出及び随意的に2D追跡を含む)を実行することができる。さらに、前処理(本明細書で説明される)により、時間及び空間で測定されたオブジェクト位置のダウンストリーム(画像取り込み後)の仮想時間同期が可能になり、1つ以上の第2の通信チャネル162を介して受信したデータを使用して第2のコンピュータ160で3D追跡を実行できるようになる。これにより、前処理後のデータ帯域幅が非常に低くなり、データを長距離にわたって送信するのが簡単になるため、ダウンストリーム処理をリモートサーバで容易に実行できるようになる。
【0029】
これは、システム100が提供する融通性により、システム100をセットアップするときに顕著な利点を提供できることに注目されたい。例えば、ゴルフ競技のテレビ(TV)放送の場合、システム100を使用して、ゴルフコースの3D空間を通るゴルフボールを追跡し、ゴルフボールの飛跡をライブ送信のため又は記録のために生成されたTV信号にオーバーレイすることができ、センサ130は、TV制作設備(3D追跡コンピュータ160が配置され得る場所)から1マイル以上離れて配備されてもよい。(3D追跡中に識別された)ボール位置から、TVカメラによって得られたビデオデータでの対応する位置への変換(ボールの飛行経路のグラフィック表現をビデオデータにトレースオーバーレイすることを可能にする)は、公知のホモグラフィ技術を使用して行うことができることに留意されたい。別の例として、ゴルフエンターテイメント施設の場合、3D追跡コンピュータ(例えば、サーバコンピュータ140、160)を同じ施設に配置する必要はなく、このコンピュータによって実行される3D追跡は、(例えば、ゴルファーがいる物理環境のコンピュータ表現で又はコンピュータ内にのみ存在する仮想環境でゴルフボールの経路を示すなど、他のデータ又はメディアを補強するために)別のコンピュータに容易に転送(例えば、フェイルオーバー処理)することができる。
【0030】
様々なセンサ及びコンピュータの構成が可能である。
図1Cは、各カメラ152、156が専用の第1のコンピュータ150A、150Bを有し、コンピュータ150A、150Bが前処理されたデータを別個の第2の通信チャネル162、164を介して第2のコンピュータ160にそれぞれ通信する例を示す。したがって、カメラ(又は他のセンサ技術)は、第1のコンピュータリソースを共有することができ、又は共有しなくてもよい。さらに、前処理を分割して異なるコンピュータで実行することもできる。
【0031】
図1Dは、カメラ152が第1のデータ帯域幅を有する第1の通信チャネル154を介してコンピュータ150と結合され、第1のコンピュータ150は第3のデータ帯域幅を有する第3の通信チャネル168を介して第3のコンピュータ166と結合され、第3のコンピュータ166は第2の通信チャネル162を介して第2のコンピュータ160と結合される例を示し、この場合、第2のデータ帯域幅は、第1のデータ帯域幅よりも小さく、第3のデータ帯域幅は、第1のデータ帯域幅よりも小さいが第2のデータ帯域幅よりも大きい。第1のコンピュータ150はオブジェクトの検出を実行し、第3のコンピュータ166はオブジェクトの2D追跡を実行し、第2のコンピュータ160はオブジェクトの仮想時間同期及び3D追跡を実行する。さらに、一部の実装では、第1のコンピュータ150は、2Dでオブジェクトの検出及び事前追跡(非常に単純な/緩い制約を用いる)を実行し、第3のコンピュータ166は、より徹底した2D追跡を実行し、第2のコンピュータ160は、オブジェクトの仮想時間同期及び3D追跡を実行する。
【0032】
本明細書の開示と一致する、他のセンサ及びコンピュータの構成も可能である。例えば、第1のコンピュータ150は、オブジェクトの検出を(2Dでの事前追跡(非常に単純な/緩い制約を用いる)ありで又はオブジェクトの2D追跡なしで)実行することができ、中間の第3のコンピュータ166を使用してオブジェクトの2D追跡を実行するのではなく、同じ第2のコンピュータ160が、オブジェクトの2D追跡(2Dでの事前追跡後のより徹底した2D追跡又は全2D追跡)、オブジェクトの仮想時間同期、及び3D追跡を実行することができる。逆に、一部の実装では、1つ以上のさらなる中間コンピュータを使用することができる。例えば、システムは、以下の4つの動作、すなわち、オブジェクトの検出、2D追跡、仮想時間同期、及び3D追跡のそれぞれを実行するために、4つの別個のコンピュータを使用することができる。別の例として、システムは、以下の5つの動作、すなわち、オブジェクトの検出、2Dでの事前追跡(非常に単純な/緩い制約を用いる)、より徹底した2D追跡、仮想時間同期、及び3D追跡のそれぞれを実行するために、5つの別個のコンピュータを使用することができる。第1の通信チャネルを通じて少なくとも1つのカメラと通信可能に結合された第1のコンピュータで動作のうちの少なくとも1つが行われ、第1の通信チャネルのデータ帯域幅よりも小さいデータ帯域幅を有する第2の通信チャネルを通じて第1のコンピュータと通信可能に結合された第2のコンピュータで動作のうちの他の少なくとも1つが行われるという条件で他の構成が可能である。
【0033】
様々なタイプのコンピュータをシステムで使用することができる。コンピュータの必須の要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための1つ以上のメモリデバイスである。本明細書で用いられる場合の「コンピュータ」は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ、組み込みのプログラム可能な回路、又は専用の論理回路を含み得る。
図2は、第1のコンピュータ150、第2のコンピュータ160、又は第3のコンピュータ166の実装を表す、データ処理装置200を含むデータ処理システムの概略図である。データ処理装置200は、ネットワーク280を通じて1つ以上のコンピュータ290と接続することができる。
【0034】
データ処理装置200は、アプリケーション層とオペレーティングシステムとの間で分散させることができる、種々のソフトウェアモジュールを含み得る。これらは、本明細書で説明される、(例えば、第1のコンピュータ150での)オブジェクト検出プログラムとして動作するプログラム230、(例えば、第1のコンピュータ150及び/又は第3のコンピュータ166での)2D追跡プログラム、(例えば、第2のコンピュータ160での)仮想時間同期プログラム、及び/又は(例えば、第2のコンピュータ160での)3D追跡プログラムを含む、実行可能な及び/又は解釈可能なソフトウェアプログラム又はライブラリを含み得る。用いられるソフトウェアモジュールの数は、実装ごとに異なり得る。また、特定のケースでは、例えば、2D追跡プログラム230では、プログラム230は組み込みファームウェアで実装することができ、他のケースでは、例えば、時間同期及び3D追跡プログラム230では、プログラム230は、1つ以上のコンピュータネットワーク又は他の適切な通信ネットワークによって接続された1つ以上のデータ処理装置に分散されるソフトウェアモジュールとして実装することができる。
【0035】
データ処理装置200は、1つ以上のハードウェアプロセッサ212、1つ以上のさらなるデバイス214、非一時的なコンピュータ可読媒体216、通信インターフェース218、及び1つ以上のユーザインターフェースデバイス220を含む、ハードウェアデバイス又はファームウェアデバイスを含み得る。プロセッサ212は、さらなるデバイス214のうちの1つなどの記憶装置を含み得る非一時的なコンピュータ可読媒体216に格納された命令などの、データ処理装置200内で実行するための命令を処理することができる。一部の実装では、プロセッサ212は、シングルコア又はマルチコアプロセッサ、又は2つ以上の中央処理装置(CPU)である。データ処理装置200は、その通信インターフェース218を使用して、例えばネットワーク280を介して、1つ以上のコンピュータ290と通信する。したがって、様々な実装において、説明したプロセスは、シングルコア又はマルチコアコンピューティングマシン、及び/又はコンピュータクラスタ/クラウドなどで、並列に又は順次に実行することができる。
【0036】
ユーザインターフェースデバイス220の例としては、ディスプレイ、タッチスクリーンディスプレイ、スピーカ、マイクロフォン、触覚フィードバックデバイス、キーボード、及びマウスが挙げられる。さらに、ユーザインターフェースデバイスは、ローカルデバイス220である必要はなく、データ処理装置200から離れている、例えば、1つ以上の通信ネットワーク280を介してアクセス可能なユーザインターフェースデバイス290であり得る。データ処理装置200は、本明細書に記載の動作を実施する命令を、例えば、1つ以上のさらなるデバイス214、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、及びソリッドステートメモリデバイス(例えば、RAMドライブ)のうちの1つ以上を含み得る非一時的なコンピュータ可読媒体216に格納することができる。さらに、本明細書に記載の動作を実施する命令は、ネットワーク280を介して1つ以上のコンピュータ290から(例えば、クラウドから)非一時的なコンピュータ可読媒体216にダウンロードすることができ、一部の実装では、RAMドライブは、コンピュータの電源を入れるたびに命令がダウンロードされる揮発性メモリデバイスである。
【0037】
図3は、オブジェクトを検出する、2Dでオブジェクトを追跡する、時間同期のために仮想2D位置を生成する、及び動いているオブジェクトの3Dトラックを構築するための、様々なコンピュータで実行されるプロセスの例を示す。
図3のプロセスは、1つ以上の第1のコンピュータ(例えば、
図1A~1Dのコンピュータ125、150、166)で実行される前処理動作310~330と、1つ以上の第2のコンピュータ(例えば、
図1A~1Dのコンピュータ140、160)で実行されるさらなる処理動作360~375を含む。前処理動作は、第2のコンピュータでのさらなる処理中に測定されたオブジェクト位置の仮想時間同期を可能にする様態で(3D追跡に使用するデータを送信するための帯域幅要件を削減するべく)ボール位置データを効果的に圧縮する、オブジェクトの検出及び2D追跡を含み得る。
【0038】
したがって、310で、カメラを第1のコンピュータと結合する第1の通信チャネル305を介してカメラから(例えば、コンピュータ125、150によって)画像フレーム300が受信され、それを通じて画像フレーム300が受信される第1の通信チャネル305は第1のデータ帯域幅を有する。例えば、第1の通信チャネル305は、USB3.0、MIPI、又はPCIx通信チャネル、例えば、通信チャネル154、158とすることができる。カメラとコンピュータ間の帯域幅要件は、1ギガビット/秒(Gbps)をすぐに超える可能性があり、例えば、60フレーム/秒(FPS)及び12ビット/ピクセルで動作する12メガピクセル(MP)カメラは、8Gbpsを超える帯域幅を必要とすることに留意されたい。
【0039】
さらに、そのようなカメラを複数台組み合わせて使用すると、合計10~100Gbpsの帯域幅が必要になる場合があり、イーサネット通信ハードウェアにも重い負担がかかる。さらに、ステレオセットアップ(例えば、
図1Bのステレオカメラ152、156)では、カメラ間、又はカメラとサーバルーム又はクラウドベースのコンピューティングなどのコンピュータインフラストラクチャの間にかなりの距離が必要になることがあり、長いケーブル及び/又はインターネット経由の通信が必要とされるときに高帯域幅通信がより一層困難になる。前述のように、MPEG技術などの従来のビデオ圧縮技術は、特に、小さなオブジェクト(例えば、遠くのゴルフボール)を追跡するときに、追跡するオブジェクトが従来のビデオ圧縮によって除去されるリスクがあるため、帯域幅を削減する適切な方法ではない場合がある。したがって、(1つ以上のカメラからのビデオフレームのために)高帯域幅の通信チャネル305を使用することで、高解像度の、高いビット深度の、及び/又は圧縮されていない画像データが、310でオブジェクト検出プロセスへの入力として受信される。
【0040】
315で、受信した画像フレーム内の関心位置が(例えば、コンピュータ125、150によって)識別される。例えば、これは、前の画像フレームから閾値量を超えて変化する1つ以上の画像データ値を有する画像フレーム内の各位置を識別するために、画像差分技術を使用することを含み得る。さらに、他のアプローチも可能である。例えば、このプロセスでは、特定の輝度又は色(例えば、ゴルフボールの場合は白)のピクセルのグループを探す、追跡するオブジェクトの形状と一致する形状(例えば、丸いゴルフボールを検出するために円形又は少なくとも楕円形)を探す、及び/又は画像内のオブジェクト(例えば、ゴルフボール)を探すためにテンプレートマッチングを使用することができる。
【0041】
さらに、1つの画像フレームから別の画像フレームへの閾値量を超えて変化する1つ以上の画像データ値を有する位置を探すことは、閾値量を超えて変化するピクセル又はピクセルのグループを検出するべく画像差分を適用することを含み得る。例えば、画像差分を適用することで、各画像で特定の閾値を超えて変化するピクセルを検出することができ、例えば、公知の連結成分ラベリング(CCL)及び/又は連結成分分析(CCA)技術を用いることで、互いに隣接するそのような変化するピクセルのグループを検出することができる。オブジェクト検出基準を満たしているそのようなピクセルのグループ(及び場合によっては単一のピクセル)は、「ブロブ」と呼ばれ、そのような各ブロブの位置及びサイズはリストに格納することができ、各画像内のすべてのブロブのリストを2D追跡コンポーネントに送信することができる。画像をオブジェクト位置(又はブロブ)のリストに変えることには帯域幅削減効果がある。場合によっては、この動作の帯域幅削減は10:1以上であり得る。しかし、本明細書で説明されるように、さらなる帯域幅削減を達成することができ、これは、小さなオブジェクトを追跡するときに大きな利点をもたらすことができる。
【0042】
小さなオブジェクトを追跡する場合、オブジェクトの特徴に基づいて小さなオブジェクト(場合によっては画像内の単一のピクセル)を区別するのは難しいため、誤検出に伴う大きな問題がある。したがって、315での(カメラ画像の特定の位置にある関心オブジェクトを検出するための)識別は、多くのフォールスポジティブを許容しながらゼロのフォールスネガティブを支持するように低い閾値で実施することができる。この手法は、オブジェクト追跡におけるフォールスポジティブは支持されない場合が多く、したがって、フォールスポジティブとフォールスネガティブの両方を最小にすることの間で競合を設定するという直観に、一般に反するものであることを理解されたい。しかし、オブジェクトを追跡するための現在の手法は、ダウンストリーム処理が大量のフォールスポジティブを処理するように設計されているため、フォールスポジティブに容易に適応する。それでも、オブジェクトの検出は多くのフォールスポジティブを許容するように設計されているため、画像データの単なるノイズである多くの「オブジェクト」を含む、各画像フレーム300内のより多くのオブジェクトが315で識別され、したがって、画像をオブジェクトのリストに変えることによる帯域幅削減効果が部分的に相殺される。
【0043】
320で、画像フレーム内で識別された位置のシーケンスが(例えば、コンピュータ125、150、160、166によって)検出される。
図3(及び他の図面)に示されているプロセスは、理解を容易にするために順次の動作として提示されているが、実際には、例えば、ハードウェア及び/又はオペレーティングシステムベースのマルチタスクを使用して及び/又はパイプライン技術を使用して、動作を並列に又は同時に実行することができることに留意されたい。同時実行のためにパイプラインを用いることができ、例えば、315でのオブジェクトの識別は、ダウンストリームコンポーネントが最初に終了するのを待つ必要なしに、フレームnを2D追跡320に受け渡した直後に、入手可能であれば、フレームn+1の処理を開始することができる。したがって、図面に関連して本明細書で提示される本開示は、それぞれのコンピュータで実行されるプロセスが順次プロセスとして説明される場合を除いて、すなわち、各オブジェクト識別及び2D追跡処理ステップがダウンストリームコンポーネントに送信されるデータの帯域幅を削減するため、オブジェクト識別プロセス、2D追跡プロセス、及び仮想時間同期及び3D追跡プロセスが順に行われる場合を除いて、図面に示されるように動作を順次に実行することに限定されない。
【0044】
320で検出された各シーケンスは、カメラからの少なくとも3つの画像フレーム内の識別された位置についてモーション基準を満たしている。一部の実装では、基準は、3つよりも多いフレームに関連して測定される、及び/又は、1つ以上の基準(例えば、後述する木の開始基準)が用いられる。一般に、2D追跡は、重力、はね返り、風、空気抵抗、又は摩擦以外の力の影響を受けない、ニュートン運動でのオブジェクトの動きと一致するオブジェクトの動きを示す、3つ以上のフレームにわたるオブジェクト(又はブロブ)のシーケンスを検出することを試みる。
【0045】
このオブジェクトの動きについての基準は、事前定義された値の範囲内にある各次元(画像のx及びy)の変位、速度、及び/又は加速度を含むように定義することができる。この値の範囲は、2Dカメラによって描写される動いているオブジェクト(例えば、飛んでいるゴルフボール)の2Dモーション及び加速度が指定された境界内にうまく収まり、一方、ぎくしゃくした動き(追跡するオブジェクトをはね返す既知のオブジェクトがない場合)は棄却されるように設定される。さらに、より大きなシステムは、追跡する実際のオブジェクト、例えば、ゴルフショットを構成するもののより細かいフィルタリングを行うことができる二次追跡ステップをダウンストリーム処理で採用するため、320での検出は、ティーエリア112から打たれた後のゴルフボールの動きなどの実際のオブジェクトの動きのみを容認する完璧な(又はさらには完璧に近い)フィルタである必要はない。
【0046】
むしろ、320で行われるフィルタリングは、意図的に完璧には及ばないようにされ、これにより、動いているオブジェクト以外のオブジェクトが検出されたシーケンスに含まれ、これは、315で関心オブジェクトとして誤って識別され、シーケンスを生成するために320で誤って検出されるノイズのシーケンスを含む可能性がある。言い換えれば、320での検出は、フォールスネガティブが最小になるようにフォールスポジティブを増加させる緩いフィルタを実装することができ、例えば、動いているすべての又はほぼすべてのゴルフボールが、320で有効なシーケンスを生成するものとして容認される。
【0047】
このより緩い(benefit of doubt)手法は、所望のオブジェクト(例えば、ゴルフボール)と所望ではない(例えば、ゴルフボールではない)オブジェクトとを完璧に区別する必要はないことを踏まえて、はるかにより単純な追跡アルゴリズムを320で使用できることを意味する。追跡を定義するルールのセットを最小に減らすことができ、2D追跡によって生じた誤り(ゴルフボール以外のものを通過させるなど)を、ダウンストリームコンポーネント及び処理でフィルタリングにより除外することができる。それぞれ1つの開始点及び1つの終了点を有する軌跡経路全体を出力する代わりに、320で検出されたシーケンスは、各頂点(木のノード)が(x、y、及び時間tで)観測されたブロブであり、各エッジはそのモーションが追跡されているオブジェクトの位置間の可能な動きである「根付き木」によって表すことができる。そのような各枝は、
図4Aに関連してさらに詳細に説明するように、木の深さの合計などのいくつかのメタデータを有することもできる。
【0048】
しかしながら、このより緩い(benefit of doubt/低い閾値)手法でさえも、オブジェクトの検出ミスが発生する可能性は依然としてある。したがって、画像データにあるはずなのに識別されていないオブジェクトを考慮に入れるためにダミー観測を用いることができる。一部の実装では、経路を拡張できる十分に良いブロブが検出されない場合、2Dトラッカは、予測位置でダミー観測を追加することができる。ダミー観測は、大きなペナルティスコアで実施することができ、一部の実装では、グラフが既に特定の深さに達していない限り、ダミー観測は許可されない。枝が有することができるペナルティの大きさには限りがあるため、実際には、経路が有し得るダミー観測の数には限りがある。
【0049】
前述のように、320での検出は、関心位置から根付き木を生成することを含み、各根付き木は、木の根である根ノードを有する連結非巡回グラフであり、連結非巡回グラフのすべてのエッジは、根から直接又は間接的に生じる。
図4Aは、根付き木を生成することによってモーション基準を満たしているオブジェクト位置のシーケンスを検出するプロセスの例を示す。400で、画像フレームでの識別された位置の次のセットが処理のために得られ、405で、現在のフレームでのセットに関心位置が残っていれば、この処理は続く。例えば、ブロブのフレームを処理するとき、新しいフレーム内のすべてのブロブを前のフレームの処理中に追加されたすべての木ノードと照合して、この枝での点がモーション基準によって定義される所望のモーションにどの程度似ているかに応じて、プロブがその経路の続きである可能性があるかどうかを確認することができる。
【0050】
410で、次の関心位置がセットから検索され、415で、この関心位置が木の開始基準を満たしているかどうかを判定するべくチェックが行われる。木の開始基準を満たしている場合、420で、この関心位置を使用して新しい木の根ノードが確立される。例えば、関心位置での画像データ値が最小オブジェクトサイズよりも大きい場合、これは、ボールがカメラの近くにあり、新しい木が確立されるべきであることを示すために用いることができる。
図4Bは、この視覚的な例を示しており、6つのブロブ460が観測されているが、これらのブロブ460のうちの4つだけが、新しい根ノード465を確立するために用いるのに十分な大きさである。1つのブロブ観測をいくつかの木に追加することができ、理論的には、観測されたすべてのブロブが新しいオブジェクト観測の開始点になる可能性があることに留意されたい。これは、ノイズのある環境では組合せ爆発につながることがあり、したがって、一部の実装では、新しい木を確立する前に特定のさらなる制約(最小ブロブサイズ制約など)が課される。
【0051】
この例では、特定の最小サイズよりも大きいすべてのブロブは、深さ0の新しい木に昇格され、最小サイズ制限は、カメラの解像度及び入ってくるビデオのノイズレベルに基づいて設定することができる。例えば、新しい木を確立するには、ブロブが(ただ単一のピクセルではなく)少なくとも2つのピクセルでなければならないという基準を設定することができる。真にランダムなノイズはピクセルに個々に影響を及ぼし、画像内により大きなクラスタを生じることはほとんどないことに留意されたい。組合せ爆発を回避する他の手法も可能である。例えば、ブロブ生成(すなわち、位置識別)プロセスでのノイズ閾値を適応的に調整することができる。
【0052】
さらに、経路をエクスポートするために必要な最小の木の深さを増加させることができ、これにより、ランダムノイズシーケンスが偶然により長いシーケンスを構築することはめったにないため、エクスポートされるデータの量が確実に制限される。制約が非常に寛大であるため、深さ0及び深さ1のグラフが多数生成されるが、予測がより良好であるため、これらのグラフのほとんどは深さ2に到達することはなく、深さ3に達するグラフはさらに少なくなる。したがって、木又は枝は、それらに追加することができるノードがなくなると破棄されるため、統計が、本開示のシステム及び技術の利益のために機能する。
【0053】
さらに、カメラが標的の近くに存在し、オブジェクトのローンチエリアを振り返って見る場合、すなわち、到来するオブジェクトを検出するときに、画像の様々な部分に様々なサイズ閾値を適用することができる。例えば、遠くのボールがスポットされる部分(例えば、長方形)に1ピクセルの最小サイズを用いることができ、他の場所に2ピクセルの最小サイズを用いることができる。したがって、可能なオブジェクト経路の木を生成するために用いられる基準を、ローンチエリアに対するカメラの位置に基づいて決定することができる。
【0054】
例えば、ある程度平らな地面を仮定することができ、カメラの位置及び照準が既知である場合、地面の「地平線」の下でのすべてのボールの検出は、ボールが到達できる最大距離(したがって、最小サイズ)の推定に対して「健全性」をチェックすることができる。ボール検出を通過するカメラからの光線は、ある距離Dで地面と交わる。ボールは、距離D又はそれより近い距離になければならず、そうでなければそれは地下になる。「地平線」よりも上でのランダムなボール検出では、地面との交わりが存在しないため、単純な距離のヒューリスティックは存在しない。しかしながら、3D空間、例えば、プレイフィールドの制限に関する知識がある場合、オブジェクトが3Dの関心領域内にあるはずであることを前提として、特定の一般的な及び/又は角度に依存する最大距離/最小オブジェクトサイズ制約を用いることができる。
【0055】
図4Aに戻ると、425で、現在の関心位置が前の画像フレーム内の識別された位置について確立された根ノードの距離閾値内にあるかどうかを判定するべくチェックが行われる。距離閾値内にある場合、430で、関心位置が、第1の深さのサブノードとしてこの木の、木の根ノードの下に追加される。木が1つの頂点(深さ=0)のみで構成されている場合、その経路の速度を推定する方法はまだなく、したがって、頂点から妥当な距離内にある任意のブロブと一致させる必要があることに留意されたい。
図4Cは、
図4Bからの続きで、この視覚的な例を示す。観測された4つのブロブ470のうち、前のフレームからの根ノード474の距離制限472内にあるのは2つのブロブのみである。したがって、ブロブ470のうちの2つのみが、第1の深さのサブノード476として根付き木に追加される。一部の実装では、距離制限は、到来センサの解像度及びフレームレート、並びに、追跡されているオブジェクトの予想される最大速度(カメラの照準方向に垂直)に依存する。ゴルフボールの場合のように、追跡されているオブジェクトのサイズが事前にわかっている場合、これは、距離制限/閾値472を決定するときに考慮に入れることができる。さらに、大きなブロブは小さなブロブよりもカメラに近いと仮定することができ、これは、(追跡されているオブジェクトの予想される方向に対するカメラの位置に応じて、前のフレーム又は現在のフレームのいずれかにおいて)大きなブロブが存在するときにフレーム間の大きな動きを許容できることを意味する。
【0056】
しかしながら、ブロブを1つ以上の深さにある頂点と照合するときに、経路の次のポイントがどこにあるべきかを予測することができる。一部の実装では、速度が最後のフレームから同じであると仮定して、次のブロブの予想される領域が計算される。
図4Dは、この視覚的な例を示す。根ノード480の位置及び第1の深さのサブノード482の位置に加えて、カメラの既知のフレームレートに基づいて、予測位置484が計算される。次いで、木に追加するブロブを探す際に使用するための予測位置484の周りのサーチエリア486(又は領域)が決定される。距離制限/閾値472を決定するために上で提供された詳細と同様に、予測位置484の周りのエリア/領域486のサイズは、カメラの解像度と、追跡されているオブジェクトの予想される最大速度(カメラの照準方向に垂直)に基づいて決定することができ、既知のオブジェクトのサイズ及び異なる画像フレーム内のブロブのサイズに従って調整される可能性がある。さらに、一部の実装では、予測を作成する際に、例えばグラフの次数が十分に大きいときに、カルマンフィルタを使用することができる。
【0057】
予測位置に十分に近い任意のブロブを、頂点に変換して木に追加することができる。したがって、
図4Dに示すように、1つのブロブが予測位置484の領域486内にあるため、このブロブが新しいサブノード488として追加される。さらに、一部の実装では、木の枝にペナルティを累積することができ、ペナルティは、枝をランク付けするのに用いられるスコアに加算され、これは、エクスポートするのに最良の枝を決定する一助となり得る。さらに、一部の実装では、ブロブの位置が予想される座標から逸脱しているほど、この枝に与えられるペナルティをより高くすることができる。
【0058】
一部の実装では、ペナルティは、木の枝に累積され、許されるペナルティの大きさを制限するため、及び、いつ枝を破棄するかを決定するために用いることができる。前者のケースでは、枝が既に高いペナルティを有している場合、延長された枝が制限を超えるような新しいノードを追加することは許されない。予測位置と実際の位置との不一致からペナルティが計算されるとき、これは基本的に、加速度が制限内にあることを確認する方法である。制限内にない場合、ペナルティは高すぎるものになる。後者のケースでは、最後の3つのブロブが共通しているいくつかの枝が存在するとき、最も深い、最低のペナルティを有する枝を保持することができ、他の枝を破棄することができる。このタイプのペナルティに基づく仮説追跡は、2D追跡に加えて3D追跡に適用できることに注目されたい。
【0059】
図4Aに戻ると、435で、現在の関心位置が、確立された木の親サブノードに用いられる位置の推定速度を使用して決定された領域内にあるかどうかを判定するべくチェックが行われる。領域内にある場合、
図4Dに関連して上述したように、440で、関心位置が、第2の深さの又はより深いサブノードとして、この木の親サブノードの下に追加される。さらに、一部の実装では、木の深さが増加するとき、より良い予測を得るためにより洗練された予測アルゴリズムを使用することができる。枝の最新のノードを二次又は三次多項式関数に当てはめることにより、次の点がどこにあるかの良好な予測が得られ、加速度の明らかに妥当でない変化がある経路を破棄することができる。さらに、一部の実装では、観測値をカルマンフィルタに提供することができ、カルマンフィルタのモデルを使用して新しい予測を生成することができる。
【0060】
さらに、単一の画像フレーム内の同じ関心位置を、画像フレームを通して潜在的なオブジェクト経路の追跡を維持している2つ以上の根付き木に、(第1の深さの又はより深い)それぞれのサブノードとして追加することができ、新しい木の新しい根ノードを確立するために用いられる可能性があることに留意されたい。さらに、単一の画像フレーム内の同じ関心位置を、木のそれぞれの親ノードに戻る1つよりも多いリンクを有する木のサブノードとして追加することができ、これは、どのリンクが根ノードまでたどられるかに応じて異なる深さを有する同じサブノードを含む。
【0061】
したがって、多くの偽経路が生成され、ダウンストリーム処理でこれらの偽経路を除外できるにもかかわらず、潜在的な経路がいつ出力されるかについてはまだ制限があるべきである。一部の実装では、445で、シーケンスを表す根付き木が所定の木の深さを超えるまで、シーケンスは出力対象とみなされない。したがって、識別された位置のシーケンスは、445での、シーケンスの木の深さが所与の実装で指定される或いは1つ以上の因子に基づいてその場で決定される所定の木の深さを超えていることに基づいて、450でシーケンスが出力対象であるか確認されるまで出力されない。
【0062】
450で、所定の木の深さを有している根付き木の部分のみを、識別された位置のシーケンスとして出力対象であるか確認する必要があることに留意されたい。これは、根付き木に偽経路を生み出すノイズが、第1のコンピュータでの前処理段階の2D追跡から第2のコンピュータでの後処理段階に伝播するのを防ぐ一助となる。また、最小の木の深さ閾値は、一般に、オブジェクトの3Dトラックを生成するための環境及び許容可能な遅延に依存する。一部の実装では、シーケンスの根付き木は、450でシーケンスが出力対象であるか確認される前に、2よりも大きい木の深さを有していなければならない。一部の実装では、木の深さは、450でシーケンスが出力対象であるか確認される前に、3、4、5、6、又は7よりも大きくなければならない。
【0063】
例えば、一部の実装では、木の頂点(ブロブ/位置に対応する)は、木の特定の深さ(D)にある場合、又は子ノードが木の特定の深さ(D)にあるため、エクスポートされる子ノードを有する場合にのみエクスポートされる。D=5の頂点は、それ自体と根との間に5つのエッジを有する。これは、ブロブが十分に長い枝の一部となるかどうかを事前に知ることはできないことが多いため、出力が同じフレーム数Dだけ遅延する可能性があることを意味する。説明したフィルタリング(木ノードのエクスポートを制限することによる)は、エクスポートされるブロブのみが、可能な経路を構成するブロブであるため、オブジェクト候補を通信するのに必要な帯域幅を劇的に削減することがわかる。以下の表は、必要な最小枝深さに基づくゴルフ用途での帯域幅の削減の例を示す。
【表1】
【0064】
これから明らかなように、すべての関心あるブロブ/位置の圧倒的大多数は、経路によって連結されていないか又は十分な深さの経路によって連結されていないため、ほとんどの関心あるブロブ/位置は、前処理段階で行われる効果的なフィルタリングによって棄却される。
図3に戻ると、325で、シーケンスのデータは出力される準備ができているかどうか、すなわち、前述のように、そのシーケンスのノードは出力される準備ができている、所定の木の深さよりも大きい木の深さを有している少なくとも1つのノードを含む木のノードの任意のシーケンスであるかどうかを判定するべくチェックが行われる。このような場合、330で、位置の1つ以上のシーケンスに関する出力データが、(例えば、コンピュータ125、150、166によって)1つ以上の第2のコンピュータ(例えば、コンピュータ140、160)に送信される。しかしながら、一部の実装では、315で識別された位置が、第1のコンピュータから(例えば、コンピュータ125、150によって)第2のコンピュータ(例えば、コンピュータ140、160、166)に送信され、そこで、320で、画像フレーム内で識別された位置のシーケンスが検出され、次いで、シーケンスデータが同じコンピュータ上又は異なるコンピュータ上の別のプロセスに出力される。いずれにしても、シーケンスに関する出力データは、少なくとも、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を含み、これは第2のコンピュータでの仮想同期に必要とされる。
【0065】
3D追跡の基本の1つは三角測量である。しかしながら、2台のカメラで見たオブジェクトの位置を三角測量するには、同じ時間インスタンスからの観測値が手元にある必要がある。これを実現する一般的な方法は、(例えば、ケーブルを通じて送信される)すべてのカメラに共通の同期トリガ信号を用いることである。しかし、これはカメラの取り込みフレームレートが同じ場合にのみ機能する。一部のセットアップでは、2台のカメラが同期している(画像の取り込みをタンデムでトリガする)ことを保証することは困難又は不可能であり、したがって、異なるカメラからの観測の三角測量は困難又は不可能になる。この問題を解決するために、データの取り込み時にカメラ画像を他のセンサと実際に同期しようとするのではなく、タイムスタンプ情報(2D経路によって表される動きに関する情報と組み合わせて)が、第2のコンピュータでの仮想同期のために用いられる。
【0066】
さらに、本明細書に記載のシステム及び技術は、グローバルシャッターカメラとローリングシャッターカメラとの両方で使用可能である。ローリングシャッターは、カメラ画像内の各行の取り込みのタイミングが異なることを意味する。そのため、オブジェクトがセンサによってイメージングされるとき、オブジェクトの位置を決定することができるが、測定時間は、画像内のオブジェクトが検出された場所に依存する。一部の実装では、画像の一番上の行と画像の一番下の行との間におよそ20ミリ秒の時間差がある可能性がある。これは、両方のカメラでの同時測定の要件を満たさない可能性があるため、三角測量にも問題を生じる。この問題を解決するために、フレームのタイムスタンプに加えて、フレーム内の「位置」の特定の時間オフセットの相対時間を考慮することによって、ローリングシャッター情報も考慮に入れられ、これにより、ローリングシャッターカメラから測定されたオブジェクト位置を、後処理段階中に第2のコンピュータでの高品質の三角測量にも使用できるようになる。グローバルシャッター取り込みの場合、このオフセットは常にゼロである。
【0067】
表1に関連して前述したように、トラックが最小経路長(最小の木の深さ)要件を満たすには、データのいくつかのフレームが必要になる場合があるため、すべてのブロブについて遅延を導入すること、又は認定済みのブロブをそれらが認識されるとすぐに通信することを可能にするより複雑なプロトコルを実装することの間にはトレードオフが存在する。したがって、一部の実装では、330での送信は、フレームとブロブデータの両方の遅延ディスパッチを含み、一部の実装では、330での送信は、フレーム及びブロブデータの増分ディスパッチを含む。
【0068】
遅延ディスパッチの場合、330での送信は、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づくシーケンスのいずれにも含まれなくなるまで、所与の画像フレームと、シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを含む。したがって、処理された後続のフレームの数が、現在のフレーム内のそれ以上のブロブについて、事前定義された木の深さに到達することを除外するときに、フレームのノードのエクスポートを実行することができる。言い換えれば、フレーム内で識別されたブロブが、必要な最小の木の深さを有している根付き木の経路にそれ以上含まれないことが判明するまで、フレームの送信は遅延される。
【0069】
さらに、一部の実装では、動的な最小の木の深さを用いることができる。最小の木の深さは、経路がほとんどないときのレイテンシを最小にするために最初に低く設定し、次いで、負荷(単位時間あたりの認定された経路の合計出力)が特定の最大負荷閾値を超える場合に動的に増加させることができる。これは、現在の入力データに応じて処理を調整することでパフォーマンスを向上させる一種のスロットリング効果を提供することができる。
【0070】
さらに、フレームデータ構造は、このフレーム内で検出され、フィルタ基準をパスした、ブロブのリストを含み得る。例えば、フレームデータ構造は、以下の表2に示されているデータフィールドを含み得る。
【表2】
さらに、フレームデータ構造に含まれるブロブデータ構造は、以下の表3に示されているデータフィールドを含み得る。
【表3】
これらのデータ構造は、以下のように、JSONフォーマットなどの種々のフォーマットでエンコードすることができることに留意されたい:
【表4】
帯域幅に制約のある送信では、Googleのプロトコルバッファフォーマットなどのよりコンパクトなエンコーディングを使用することができる。
【0071】
フィルタリングされていないブロブがノードの処理間で受け渡されるとき、例えば、ブロブの検出がエッジデバイスで行われ、事前追跡及び/又は追跡が異なるコンピュータで行われる場合、異なるフレームのブロブ間の関係性に関する情報がまったくないため、簡易化されたフォーマットを使用することができる。例えば、フレームデータ構造は、以下の表4に示されているデータフィールドを含み得る。
【表5】
さらに、フレームデータ構造に含まれるSimpleBlobデータ構造は、以下の表5に示されているデータフィールドを含み得る。
【表6】
【0072】
増分フレームディスパッチの場合、330での送信は、315での各画像フレームについての識別が完了すると、画像フレームのデータを出力することと、325でシーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、330で各関心位置のデータを出力することを含む。前述のように、ノードをエクスポートするには、シーケンスは必要な木の深さを有している必要があり、木が閾値深さに達するとき、(いくつかの他の枝によって)以前にエクスポートされていない(閾値深さを超えている木ノードの)すべての親ノードが、さかのぼって330で出力される。これは、低レイテンシが必要とされる場合に用いることができる、データを送信するためのより複雑な手法である。2D追跡は、情報が利用可能になるとすぐに、処理されているフレームに関する情報と、ボール候補のフィルタリングをパスしたすべてのブロブ(すなわち、315で識別されたすべての関心位置)のリストと共に、連続ストリームを出力する。
【0073】
例えば、新しいフレームが処理されるとき、以下の表6に示されているデータフィールドを有するフレームデータ構造を使用して、フレームの情報を送信することができる。
【表7】
さらに、ブロブデータ構造は、以下の表7に示されているデータフィールドを含み得る。
【表8】
さらに、ブロブ間の各連結は、以下の表8に示されているデータフィールドを含む連結データ構造を使用して表すことができる。
【表9】
上記のデータ構造を使用して生成されたレコードを、情報が確立されるとすぐに、(第1のコンピュータから第2のコンピュータへの)ストリームに入れることができる(フレーム及びブロブデータは、315での識別中及び識別後に330で送信することができ、ブロブ連結データは、これらのブロブの連結によって生成されたシーケンスが320で検出され、325で出力対象であるか確認された後に、330で送信することができる)。レコードによって参照されるすべてのブロブ及びフレームが、それを参照するレコードの前にストリームに入れられることが保証される。しかしながら、コンシューマがストリームの途中で読み出しを始めた場合、オリジナルの宣言を見落としている可能性があり、したがって、この問題は第2のコンピュータで対処されるべきである。
【0074】
360で、使用されるデータ構造又は出力タイミングに関係なく、第1のコンピュータを第2のコンピュータと結合する第2の通信チャネル355を介して、1つ以上の第1のコンピュータから(例えば、コンピュータ125、150から)出力データ350が(例えば、コンピュータ140、160によって)受信され、それを通じて出力データ350が受信される第2の通信チャネル355は、第1の通信チャネル305の第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する。例えば、第2の通信チャネル355は、銅線イーサネット又は無線通信チャネル、例えば、通信チャネル162、164とすることができる。さらに、前処理の一部(例えば、320での検出)がさらなる処理動作360~375と同じ第2のコンピュータで(例えば、コンピュータ140、160によって)実行される実装では、受信されるデータは、315で識別された位置及び関連するタイムスタンプ情報を含む。
【0075】
いずれにしても、365でのチェックが、シーケンスは処理される準備ができていることを示すまで、360でデータは受信され続ける。さらに、前述のように、例えば、ハードウェア及び/又はオペレーティングシステムベースのマルチタスクを使用して及び/又はパイプライン技術を使用して、例えば375での構築中に、動作を並列に又は同時に実行することができる。したがって、370での1つ以上のシーケンスの処理が並列に又は同時に行われている間、360での受信を続けることができ、各コンポーネントは、ダウンストリームコンポーネントが最初に終了するのを待つ必要なしに、フレームnをダウンストリームコンポーネントに受け渡した直後に、入手可能であれば、フレームn+1の処理を開始することができ、例えば、3Dトラッカが関心位置の処理を完了していなくても、次のフレームのステレオ三角測量を実行することができる。
【0076】
370で、所定の時点での仮想2D位置を生成するべく、特定の画像フレームのタイムスタンプを使用して、シーケンスに関する特定の画像フレーム内の指定された2D位置間を補間することによって、出力データにおけるシーケンス350が、1つ以上の第2のコンピュータによって(例えば、コンピュータ140、160によって)処理される。出力データ350における各関心位置(例えば、各フレーム内で検出された各ブロブ)についてのレコードは、フレームのタイムスタンプと、2D追跡コンポーネントによってこの関心位置に連結された前の1つ以上の関心位置の指示(例えば、各ブロブは、それが属する前の1つ以上のブロブへのポインタで記述される)との両方を含む。したがって、このデータ350から、各関心位置/ブロブの時間、位置、及び移動方向、及び速度を決定することが可能である。
【0077】
したがって、前のタイムスタンプを有する少なくとも1つの関心位置/ブロブと、後のタイムスタンプを有する少なくとも1つの関心位置/ブロブが木に存在する限り、データ350は、補間を使用して経路上の任意の所与の時点での仮想「中間」位置/ブロブを生成することを可能にする。さらに、一部の実装では、所定の時点は、3D追跡サーバの事前定義された一定のフレームレートの複数の時点のうちの1つである。例えば、3D追跡サーバコンピュータ140、160は、事前定義された一定のフレームレートで動作し、補間を使用してこれらの時点でのすべてのカメラのブロブの仮想スナップショットを生成することができる。ブロブ座標は、ここではすべて同じ時点を表しているため、オリジナルの取り込みが同期していなくても点間の三角測量が可能である。さらに、一部の実装では、所定の時点は、別のカメラセンサ又はレーダーセンサなどの別のセンサによって指定された時間である。
【0078】
さらに、前述のように、カメラはローリングシャッターカメラとすることができ、その場合、出力データ350は、各シーケンスに含まれる各関心位置の時間オフセット値を含み得る。このデータが手元にあれば、370での処理は、ローリングシャッターカメラとの仮想時間同期のためにも機能する。
図5は、ローリングシャッターカメラから得られた特定の画像フレーム内の指定された2D位置間を補間するプロセスの例を示す。
【0079】
500で、特定の画像フレームのうちの第1の画像フレームのタイムスタンプに第1の位置の第1の時間オフセット値を追加することによって、特定の画像フレーム内の指定された2D位置のうちの1つを有する第1の位置の第1の観測時間が計算される。例えば、第1のフレーム内の第1のブロブの時間オフセット(dt)(上記の表3及び表7で詳述)を、その第1のフレームのタイムスタンプ(t_sync)(上記の表2、表3、表6、及び表7で詳述)に追加することができる。510で、特定の画像フレームのうちの第2の画像フレームのタイムスタンプに第2の位置の第2の時間オフセット値を追加することによって、特定の画像フレーム内の指定された2D位置のうちの別の1つを有する第2の位置の第2の観測時間が計算される。例えば、第2のフレーム内の第2のブロブの時間オフセット(dt)(上記の表3及び表7で詳述)を、その第2のフレームのタイムスタンプ(t_sync)(上記の表2、表3、表6、及び表7で詳述)に追加することができる。次いで、520で、時間オフセット及びフレームタイムスタンプから計算された第1の観測時間及び第2の観測時間を使用して補間が行われる。
【0080】
図3に戻ると、仮想2D位置が生成されると、375で、所定の時点に関する生成された仮想2D位置と少なくとも1つの他のセンサから得られた位置情報を使用して、3D空間で動いているオブジェクト(例えば、ボール)の3Dトラックが(例えば、コンピュータ140、160によって)構築される。375での構築は、オブジェクトの3Dトラックの表示(例えば、即時表示)のためであり得る、又は375での構築は、表示前のさらなる処理への入力として用いるための3Dトラックを生成することができる。例えば、3Dトラックは、ゴルフボールの飛跡をライブ送信のため又は記録のために生成されたTV信号にオーバーレイすることによって、効果的に表示されるようにさらに処理することができる。別の例として、3Dトラックは、ゴルファーがいる物理環境のコンピュータ表現で又はコンピュータ内にのみ存在するがシステムのユーザに表示される仮想環境でゴルフボールの経路を示すことなどにより、他のデータ又はメディアを補強することによって、効果的に表示されるようにさらに処理することができる。
【0081】
表示前の他のタイプのさらなる処理も可能である。例えば、3Dトラックは、スポーツボールの最終的な静止位置を決定するべくさらに処理することができ、これは、ベッティング用途又はスポーツウェブサイトにフィードする一般的な統計収集のために有用であり得る。飛跡を示すことに加えて、3Dトラックは、ショットの速度、スピン、キャリー、及びローンチ角度を測定するべくさらに処理することができる。3Dトラックは、ボールがサイトのネットを越えて隣接する敷地に入ったかどうかを判定するべくさらに処理することができる。3Dトラックは、練習場のオーナーに進行中のアクティビティがあるベイを知らせるべく、また、各ベイからショットされたボールの数をカウントするべく、さらに処理することができる。
【0082】
図6Aは、動いているオブジェクト(例えば、ボール)の3Dトラックを構築するプロセスの例を示す。3Dトラックの構築は、600で、関心オブジェクト3D位置を生成するべく、(例えば、コンピュータ140、160によって)仮想2D位置を少なくとも1つの他のセンサから得られた位置情報と組み合わせることを含む。一般に、これは、様々なセンサを使用して生成されたオブジェクト観測データを使用し、それらの様々なセンサのキャリブレーションデータを使用した、様々なセンサからの観測の三角測量を含む。仮想2D位置を生成することで仮想時間同期が達成されるため、生成された観測データは、三角測量に使用可能であることに注目されたい。
【0083】
例えば、他のセンサは、仮想2D位置が生成された第1のカメラとのステレオペアとして使用される、第2のカメラとすることができる。前述のオブジェクト検出、2D追跡、及び仮想時間同期技術は、第2のカメラでも用いることができる。これに照らして、第2のカメラの出力データは、第1のカメラに関して仮想2D位置が生成された時点と同じ共有される時点で(複数の対応する仮想2D位置を有する)複数の検出オブジェクトを生成することができる。したがって、第2のカメラの位置情報は、第2のカメラから得られた2つ以上の2D位置とすることができ、600での組み合わせることは、第2のカメラからの2つ以上の2D位置のどれを第1のカメラからのデータに関して生成された仮想2D位置と照合するべきかを決定することを含み得る。
【0084】
さらに、600での組み合わせることは、602で、第1のカメラから得られた仮想2D位置で3D点を生成することができないものとして、第2のカメラから得られた2つ以上の2D位置のすべてではないが少なくとも1つを除外することを含み得る。
図6Bは、604での三角測量の前にエピポーララインフィルタリングを行うべく、第2のカメラから得られた少なくとも1つの2D位置を除外するプロセスの例を示す。602Aで、第1のカメラに関して生成された仮想2D位置、第1のカメラの光学中心、第2のカメラの光学中心、第1のカメラと第2のカメラとの間のベースライン、及び第1及び第2のカメラの外部キャリブレーションデータを使用して、第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域が決定される。一部の実装では、602Aで、領域は、使用されるデータの許容誤差に基づいて決定される。
【0085】
一部の実装では、ステレオカメラペアの第1のカメラ120と第2のカメラ130との間のベースラインは30メートル以下であり、これは、ショットが打たれた位置に戻る軌道を外挿できるように、十分に早くショットを検出する能力と組み合わせて、妥当なステレオ精度を提供する。より視野の広いレンズを使用すると、ショットをより早く観測することができるが、ボールが遠くにあるときに精度が低くなるという犠牲を伴う。より高解像度のカメラは、これをある程度軽減することができる。ベースラインが短いほど、深さの精度は低くなるが、ショットをより早く観測することができる。本開示で説明される仮想時間同期を使用して、カメラ120、130の異なるペアからのデータを、必要に応じて、例えばリアルタイムで動的に組み合わせることができることに注目されたい。したがって、システムのカメラ120、130の異なるペアがステレオペアを形成することができ、したがって、異なるステレオカメラペアは、異なるベースライン及び異なる深さの精度を有し得る。
【0086】
さらに、一部の実装では、602Aで決定される領域は、602Aで、オブジェクトまでの距離、例えば、カメラとティーエリア112及び/又は標的114との既知の距離の既知の制限のために使用できないエピポーララインの部分に基づいて縮小(又はさらに縮小)される。さらに、1つ以上のステレオペアとして用いられる異なるカメラからのボール候補の観測を照合するときに他の基準を使用することができる。例えば、さらなる基準は、2台のカメラ(ステレオペアとして使用される)によって観測されたそれぞれのブロブのブロブコントラストが類似していることであり得る。
【0087】
次いで、602Bで、2つ以上の2D位置のそれぞれが第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域外にあることに応答して、第1のカメラから得られた仮想2D位置と第2のカメラから得られた2つ以上の2D位置のそれぞれとのペアリングが棄却される。本質的に、第1のカメラの2D平面内の単一の点として第1のカメラで見られる3D空間内のライン(このラインは第1のカメラの光学中心と一直線上にあるため)は、エピポーララインとして知られている第2のカメラの画像平面内のラインとして第2のカメラで見られる。第1のカメラによって観測されたオブジェクトの既知の2D位置が与えられた場合、このエピポーララインに沿っている(ある程度の許容値内の)第2のカメラによって観測されたオブジェクトのみが、両方のカメラによって観測された同じオブジェクトとなり得る。さらに、オブジェクトまでの距離(例えば、ティーエリア112までの距離、グリーンに乗るボールを追跡するときのグリーンまでの距離などの標的114までの距離、及び/又は現在追跡されているオブジェクトまでの距離に基づく距離)の既知の制限を考慮してシステムが設計及びセットアップされる場合、システムは、602Bでの棄却の際に用いるためのハードストップ(境界)をエピポーラライン上に配置することができる。したがって、明らかに境界外のオブジェクト(例えば、飛行機、鳥、遠くの交通からの光など)をシステムで容易に無視することができる。
【0088】
第2のカメラから得られた2D位置を除外するための他の手法も可能である。例えば、前述のように、出力データは、各シーケンスでの最初の位置の後の各位置について、そのシーケンスでの前の位置の指示を含み得る。このデータが含まれているため(例えば、330での送信は、各ブロブの位置だけでなく、経路シーケンスでの2D追跡によって連結されている、前に観測されたブロブの位置も送信するため)、各関心オブジェクト(ブロブ)の可能な2Dモーションの方向及び速度を推定することができ、この推定は、604での三角測量の前にモーションフィルタリングを行うために用いることができ、例えば、ステレオ三角測量アルゴリズムは、この情報を使用して、左右のステレオ点の速度ベクトルを使用してフォールスポジティブを除外することなどによって、適合しないパラメータを有するブロブのペアリングを棄却することができる。例えば、次のフレーム内でのオブジェクトの位置が両方のカメラで(現在の速度に基づいて)予測されるとき、ブロブが2つの異なる角度からの同じオブジェクトの実際の観測であるときに、(三角測量されるときの)予測位置はまた、次の実際の観測に近くなる。
【0089】
したがって、602での除外は、特定の画像フレーム内の指定された2D位置に基づいて、仮想2D位置でのオブジェクトの2D速度を推定すること、この場合、指定された2D位置のうちの少なくとも1つは、シーケンスのうちの少なくとも1つにおける前の位置の指示を使用して出力データで識別される、第2のカメラから得られた2つ以上の2D位置でのオブジェクトの2D速度を推定すること、仮想2D位置でのオブジェクト及び2つ以上の2D位置でのオブジェクトの推定2D速度、固有キャリブレーションデータ、及び外部キャリブレーションに基づいて、第1のカメラから得られた仮想2D位置と第2のカメラから得られた2つ以上の2D位置のそれぞれとのペアリングを棄却することを含み得る。
【0090】
当業者には理解されるように、位置/ブロブの座標は、固有キャリブレーションデータを使用して歪みがなく、また、外部キャリブレーションデータを使用して適合する座標系に変換される必要があることに留意されたい。各カメラの光学歪み及び真の焦点距離を検出する固有キャリブレーションを実行することができる。カメラの互いに対する方向を検出する外部キャリブレーションを実行することができる。一緒に、固有キャリブレーション及び外部キャリブレーションは、「キャリブレーション」又は「キャリブレーションデータ」と呼ばれ、両方のカメラで見られるオブジェクトの位置を三角測量するために用いることができる。
【0091】
さらに、他のセンサは、第2のカメラではなくレーダーデバイスを含み得る。例えば、1つ以上のレーダーデバイスを、単一のカメラ、ステレオカメラペア、又は3つ以上のカメラと組み合わせて、米国特許第10,596,416号に記載のシステム及び技術に係る1つ以上のハイブリッドカメラ-レーダーセンサを形成し、3Dオブジェクト追跡のために関心オブジェクトを示すオブジェクト検出システムのセンサの少なくとも一部を提供することができる。動いているオブジェクト(例えば、ゴルフボール)の検出であり得るレーダーからの読取値を、関心オブジェクト三次元位置の3D点群に追加する、したがって、組み合わされたセンサの潜在的な堅牢性及びカバレッジエリアに追加することができる。
【0092】
レーダーからの読取値は、以下の手法を使用して3D点に変換することができる。レーダーからの距離測定値は、カメラのうちの1つによって同じ時点で検出されたすべてのボール候補と組み合わせることができる。カメラによって報告される各ボール候補との角度と、レーダーによって報告される距離により、空間内の3D位置が決定される。これは、カメラで見られる各ボール候補について行うことができ、これにより、点群に追加する3D点のアレイが生成される。これらの点のうちの多くとも1つは、レーダーデータとボール観測の正しい関連付けとなる(両方とも同じオブジェクトに由来する、すなわち、トゥルーポジティブであることを意味する)。残りの3D点は偽の関連付け(フォールスポジティブ)となる。しかしながら、ここでも、3D点追跡アルゴリズムは、3D点の大部分がフォールスポジティブであることに対して堅牢であるように選択される。さらに、一部の実装では、各観測オブジェクトまでの範囲と角度との両方を決定することができる1つ以上のレーダーセンサをシステムで使用することができる。
【0093】
しかし、第2のセンサからの位置データが得られる及び/又は除外されるかどうかに関係なく、一部の実装では、604で、第1のカメラから得られた仮想2D位置、第2のカメラから得られた2つ以上の2D位置のうちの少なくとも1つ、第1のカメラ及び第2のカメラの固有キャリブレーションデータ(各カメラの決定された光学歪み及び真の焦点距離)、及び第1及び第2のカメラの外部キャリブレーションデータ(カメラの互いに対する決定された方向)を使用して、関心オブジェクト3D位置を三角測量することができる。位置/ブロブの座標はすべて同じ時点を表しているため、オリジナルの取り込みが同期していなくても、604で点間の三角測量が可能であることに留意されたい。
【0094】
次いで、610で、関心オブジェクト3D位置を、所定の時点に関する関心オブジェクト3D位置群内の他の関心オブジェクト3D位置に追加することができる。様々なタイプのデータ構造を使用できることに留意されたい。一部の実装では、3D位置群は、八分木として格納され、このタイプのデータ構造は、(スカラー数のコンピュータ表現の精度限界まで)3D空間内の任意の点を表すことを可能にする。620で、3D空間で動いているボールの3Dトラックを構築するべく、複数の3D位置群にわたるモーション分析が実行され、複数の3D位置群のそれぞれは、単一の時点に関するものである。様々なタイプのモーション分析を使用できることに留意されたい。それでも、データ350に含まれるフォールスポジティブの数が従来のオブジェクト追跡技術での数よりも多い可能性があるとしても、これらのフォールスポジティブは、フォールスポジティブが発生するカメラの2D画像平面と比較して大きい3D空間内に広がる傾向があることを理解されたい。このため、3D追跡システムが3Dで動いているオブジェクトを識別すると、構築されている進行中の3Dトラックと一致しない3D空間内のフォールスポジティブをすぐに破棄することは3D追跡システムにとって容易なことである。
【0095】
さらに、プロセスは、630で、3Dトラックの表現を生成するために3Dトラックを出力すること、又は630で、3D空間で3Dトラックの表現を生成及び表示することを含み得る。前述のように、これは、ゴルフボールの飛跡をライブ送信のため又は記録のために生成されたTV信号にオーバーレイすることによって、効果的に表示されるように3Dトラックをさらに処理することを含み得る、又はこれは、ゴルファーがいる物理環境のコンピュータ表現で又はコンピュータ内にのみ存在するがシステムのユーザに表示される仮想環境で、例えば、(同じ範囲でローカルに、又は世界中に散らばっている)マルチプレイヤーゲームの参加者間で共有される仮想環境でゴルフボールの経路を示すことなどにより、他のデータ又はメディアを補強することによって、効果的に表示されるように3Dトラックをさらに処理することを含み得る。
【0096】
本明細書に記載の主題及び関数演算の実施形態は、デジタル電子回路、又は本明細書で開示された構造及びそれらの構造的均等物を含むコンピュータソフトウェア、ファームウェア、又はハードウェア、又はその1つ以上の組み合わせで実装することができる。本明細書に記載の主題の実施形態は、データ処理装置による実行のために、又はデータ処理装置の動作を制御するために、非一時的なコンピュータ可読媒体上でエンコードされるコンピュータプログラム命令の1つ以上のモジュールを使用して実装することができる。非一時的なコンピュータ可読媒体は、コンピュータシステムのハードドライブ、又は小売り販路を通じて販売される光ディスク、又は組込みシステムなどの工業製品であり得る。非一時的なコンピュータ可読媒体は、個別に入手され、後で、有線又は無線ネットワークを介するコンピュータプログラム命令の1つ以上のモジュールの配信などによって、コンピュータプログラム命令の1つ以上のモジュールでエンコードされ得る。非一時的なコンピュータ可読媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、メモリデバイス、又はその1つ以上の組み合わせであり得る。
【0097】
「データ処理装置」という用語は、例として、プログラム可能なプロセッサ、コンピュータ、又は複数のプロセッサ又はコンピュータを含む、データを処理するためのすべての装置、デバイス、及びマシンを包含する。装置は、ハードウェアに加えて、当該コンピュータプログラムの実行環境を作成するコード、例えば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、ランタイム環境、又はその1つ以上の組み合わせを構成するコードを含み得る。さらに、装置は、ウェブサービス、分散型コンピューティング、及びグリッドコンピューティングインフラストラクチャなどの様々なコンピューティングモデルインフラストラクチャを採用し得る。
【0098】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイル又は解釈される言語、宣言型言語、又は手続き型言語を含む任意の適切な形式のプログラミング言語で書くことができ、独立型のプログラムとして、又はコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチン、又は他のユニットとして、任意の適切な形式で展開することができる。コンピュータプログラムは、必ずしもファイルシステムでのファイルに対応しない。プログラムは、他のプログラム又はデータを保持するファイルの一部(例えば、マークアップ言語文書に保存された1つ以上のスクリプト)、当該プログラム専用の単一のファイル、又は複数の連携したファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの一部を保存するファイル)に格納することができる。コンピュータプログラムは、1つのコンピュータで、又は1つの場所に配置されているか又は複数の場所に分散され、通信ネットワークで相互接続されている複数のコンピュータで実行されるように展開することができる。
【0099】
本明細書に記載のプロセス及び論理フローは、入力データで演算し、出力を生成することで機能を果たすべく1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能プロセッサによって実施され得る。プロセス及び論理フローはまた、特殊用途向け論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によって、及びこれらとして実装され得る装置によって実施することができる。
【0100】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと特殊用途マイクロプロセッサの両方、及び任意の適切な種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般に、プロセッサは、読出し専用メモリ又はランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの必須の要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための1つ以上のメモリデバイスである。一般に、コンピュータはまた、データを受信する又はデータを送信する又はその両方のために、データを記憶するための1つ以上の大容量記憶装置、例えば、磁気ディスク、光磁気ディスク、又は光ディスクを含むか又はそれに作動的に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、ほんの数例を挙げると、モバイル電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオ又はビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、又はポータブルストレージデバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込むことができる。コンピュータプログラム命令及びデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、例えば、EPROM(消去可能でプログラム可能な読出し専用メモリ)、EEPROM(電気的に消去可能でプログラム可能な読出し専用メモリ)、及びフラッシュメモリデバイスを含むあらゆる形態の不揮発性メモリ、メディア、及びメモリデバイス、磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク、光磁気ディスク、CD-ROM及びDVD-ROMディスク、ネットワークアタッチトストレージ、及び種々の形態のクラウドストレージを含む。プロセッサとメモリは、特殊用途向け論理回路によって補完する又はこれに組み込むことができる。
【0101】
ユーザとの相互作用を提供するために、本明細書に記載の主題の実施形態は、ユーザに情報を表示するためのディスプレイ装置、例えば、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、又は他のモニタと、ユーザがコンピュータに入力を提供することができるキーボード及びポインティングデバイス、例えば、マウス又はトラックボールを有するコンピュータで実装することができる。ユーザとの相互作用を同様に提供するために他の種類のデバイスも使用することができ、例えば、ユーザに提供されるフィードバックは、感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックとすることができ、ユーザからの入力は、音響入力、スピーチ入力、又は触覚入力を含む種々の形式で受信することができる。
【0102】
コンピューティングシステムは、クライアントとサーバを含み得る。クライアントとサーバは、一般に互いに遠隔にあり、通常は通信ネットワークを通じて相互作用する。クライアントとサーバの関係性は、互いにクライアントとサーバの関係性を有するそれぞれのコンピュータで実行されるコンピュータプログラムによって生じる。本明細書に記載の主題の実施形態は、例えばデータサーバとしてバックエンドコンポーネントを含む、又は例えばアプリケーションサーバとしてミドルウェアコンポーネントを含む、又は例えばユーザが本明細書に記載の主題の実装と相互作用することができるグラフィカルユーザインターフェース又はウェブブラウザを有するクライアントコンピュータとしてフロントエンドコンポーネントを含む、又は1つ以上のそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の適切な形式又は媒体、例えば、通信ネットワークで相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、及びピア・ツー・ピア・ネットワーク(例えば、アドホック・ピア・ツー・ピア・ネットワーク)が挙げられる。
【0103】
本明細書は多くの実装の詳細を含むが、これらは、本発明の範囲又は特許請求され得るものの限定として解釈されるべきではなく、本発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態に関連して本明細書で説明される特定の特徴はまた、単一の実施形態で組み合わせて実装することができる。逆に、単一の実施形態に関連して説明される様々な特徴はまた、別個に又は任意の適切なサブコンビネーションで複数の実施形態で実装することができる。さらに、特徴は、特定の組み合わせで機能するものとして上記で説明され、最初はそのように特許請求されても、特許請求される組み合わせからの1つ以上の特徴は、場合によっては、組み合わせから切り離すことができ、特許請求される組み合わせは、サブコンビネーション又はサブコンビネーションのバリエーションに向けられ得る。したがって、他に明示的に述べられていない限り、又は当業者の知識が他のことを明瞭に示さない限り、前述の実施形態の特徴のいずれかを前述の実施形態の他の特徴のいずれかと組み合わせることができる。
【0104】
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序又は連続した順序で実行されること又は図示されたすべての動作が実行される必要があると理解されるべきではない。或る状況では、マルチタスク及び/又は並列処理が有利な場合がある。さらに、前述の実施形態での様々なシステムコンポーネントの分離は、すべての実施形態でそのような分離が必要であると理解されるべきではなく、説明されたプログラムコンポーネント及びシステムは、一般に、単一のソフトウェア製品に統合するか、又は複数のソフトウェア製品にパッケージすることができることを理解されたい。
【0105】
したがって、本発明の特定の実施形態が説明されている。他の実施形態は、以下の請求項の範囲内にある。例えば、上記の説明は、ゴルフボールの動きの追跡に焦点をあてているが、説明されたシステム及び技術は、野球又はスキート射撃並びにスポーツ以外の用途などの他のタイプのオブジェクトモーション追跡にも適用可能である。さらに、「動いている」オブジェクトの追跡は、一部の実装では、地面に当たって跳ね返る及び/又は地面に沿って転がるオブジェクトの追跡を含み得る。
【手続補正書】
【提出日】2023-03-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
1つ以上の第1のコンピュータで、カメラを前記1つ以上の第1のコンピュータと結合する第1の通信チャネルを介して、前記カメラから画像フレームを受信することであって、前記第1の通信チャネルは第1のデータ帯域幅を有することと、
前記1つ以上の第1のコンピュータによって、前記画像フレーム内の関心位置を識別することと、
前記画像フレーム内で識別された位置のシーケンスを検出することであって、前記シーケンスのそれぞれは、前記カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たすことと、
前記位置のシーケンスに関する出力データを送信することであって、前記出力データは、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を備えることと、
1つ以上の第2のコンピュータで、前記出力データを受信することであって、前記1つ以上の第2のコンピュータは、前記第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する第2の通信チャネルを介して前記1つ以上の第1のコンピュータと結合されることと、
前記1つ以上の第2のコンピュータによって、所定の時点での仮想二次元位置を生成するべく、前記特定の画像フレームのタイムスタンプを使用して、前記シーケンスのうちの少なくとも1つに関する特定の画像フレーム内の指定された二次元位置間を補間することによって、前記出力データにおけるシーケンスのうちの少なくとも1つを処理することと、
前記所定の時点に関する、前記仮想二次元位置及び少なくとも1つの他のセンサから得られた位置情報を使用して、三次元空間で動いているボールの三次元トラックを構築することと、
を備える、方法。
【請求項2】
前記検出すること及び前記送信することは、前記1つ以上の第2のコンピュータによって実行され、前記画像フレーム内の識別された位置は、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項1に記載の方法。
【請求項3】
前記検出すること及び前記送信することは、前記1つ以上の第1のコンピュータによって実行され、前記出力データは、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項1に記載の方法。
【請求項4】
前記検出することは、
第1の識別された関心位置のそれぞれが木の開始基準を満たす画像データ値を有していることに応答して、前記第1の識別された関心位置のそれぞれから根付き木の根ノードを確立することと、
第2の識別された位置のうち少なくともいくつかのそれぞれが、前記根付き木のうちの少なくとも1つに追加された前の画像フレーム内の識別された位置の距離閾値内にあることに応答して、第2の識別された関心位置を前記根付き木のサブノードとして追加することと、
前記シーケンスの根付き木が2よりも大きい木の深さを有しているときに、識別された位置のシーケンスのそれぞれを出力対象であるか確認することと、
を含む、前記関心位置から前記根付き木を生成することを備える、請求項1に記載の方法。
【請求項5】
前記送信することは、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づく前記シーケンスのいずれにも含まれなくなるまで、前記所与の画像フレームと、前記シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを備える、請求項1に記載の方法。
【請求項6】
前記送信することは、
各画像フレームについての識別が完了すると、前記画像フレームのデータを出力することと、
前記シーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、各関心位置のデータを出力することと、
を備える、請求項1に記載の方法。
【請求項7】
前記カメラは、ローリングシャッターカメラを備え、前記出力データは、各シーケンスに含まれる各関心位置の時間オフセット値を備え、前記処理することは、
前記特定の画像フレームのうちの第1の画像フレームのタイムスタンプに第1の位置の第1の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの1つを有する第1の位置の第1の観測時間を計算することと、
前記特定の画像フレームのうちの第2の画像フレームのタイムスタンプに第2の位置の第2の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの別の1つを有する第2の位置の第2の観測時間を計算することと、
前記第1の観測時間及び前記第2の観測時間を使用して前記補間を行うことと、
を備える、請求項1に記載の方法。
【請求項8】
前記構築することは、
前記1つ以上の第2のコンピュータによって、関心オブジェクト三次元位置を生成するべく、前記仮想二次元位置を前記少なくとも1つの他のセンサから得られた位置情報と組み合わせることと、
前記1つ以上の第2のコンピュータによって、前記関心オブジェクト三次元位置を、所定の時点に関する関心オブジェクト三次元位置群内の他の関心オブジェクト三次元位置に追加することと、
前記1つ以上の第2のコンピュータによって、前記三次元空間内で動いているボールの三次元トラックを構築するべく、複数の三次元位置群にわたるモーション分析を行うことであって、前記複数の
三次元位置群のそれぞれは単一の時点に関するものであり、前記複数の
三次元位置群は、前記所定の時点に関する関心オブジェクト三次元位置群を含むことと、
前記三次元空間内で動いているボールの三次元トラックを表示するべく出力することと、
を備える、請求項1に記載の方法。
【請求項9】
前記カメラは第1のカメラであり、前記少なくとも1つの他のセンサは第2のカメラであり、前記位置情報は、前記第2のカメラから得られた複数の二次元位置を備え、前記組み合わせることは、
前記第1のカメラから得られた仮想二次元位置で三次元点を生成することができないものとして、前記第2のカメラから得られた複数の二次元位置のすべてではないが少なくとも1つを除外することと、
前記第1のカメラから得られた仮想二次元位置、前記第2のカメラから得られた複数の二次元位置のうちの少なくとも1つ、前記第1のカメラ及び前記第2のカメラの固有キャリブレーションデータ、及び前記第1
のカメラ及び前記第2のカメラの外部キャリブレーションデータを使用して、少なくとも前記関心オブジェクト三次元位置を三角測量することと、
を備える、請求項8に記載の方法。
【請求項10】
前記除外することは、
前記仮想二次元位置、前記第1のカメラの光学中心、前記第2のカメラの光学中心、前記第1のカメラと前記第2のカメラとの間のベースライン、及び前記第1
のカメラ及び前記第2のカメラの外部キャリブレーションデータを使用して、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域を決定することと、
前記複数の二次元位置のそれぞれが、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域外にあることに応答して、前記第1のカメラから得られた仮想二次元位置と前記第2のカメラから得られた複数の二次元位置のそれぞれとのペアリングを棄却することと、
を備える、請求項9に記載の方法。
【請求項11】
前記1つ以上の第1のコンピュータは、第1の処理ユニット及び少なくとも1つのさらなる処理ユニットを備え、前記第1の通信チャネルは、前記カメラを前記第1の処理ユニットと結合し、前記画像フレームを受信することは、前記第1の処理ユニットで前記画像フレームを受信することを備え、前記関心位置を識別することは、前記第1の処理ユニットで前記関心位置を識別することを備え、前記シーケンスを検出することは、前記第1の処理ユニットを前記少なくとも1つのさらなる処理ユニットと結合する第3の通信チャネルを介して前記第1の処理ユニットから前記位置を受信することに応答して、前記少なくとも1つのさらなる処理ユニットで前記シーケンスを検出することを備え、前記出力データを送信することは、前記少なくとも1つのさらなる処理ユニットから前記出力データを送信することを備え、前記第3の通信チャネルは、前記第1のデータ帯域幅よりも小さいが前記第2のデータ帯域幅よりも大きい第3のデータ帯域幅を有する、請求項1に記載の方法。
【請求項12】
システムであって、
カメラと、第1のハードウェアプロセッサ、及び前記第1のハードウェアプロセッサと結合された第1のメモリを備える1つ以上の第1のコンピュータと、
前記カメラを前記1つ以上の第1のコンピュータと結合する第1の通信チャネルとを備える少なくとも1つのセンサであって、
前記第1の通信チャネルは第1のデータ帯域幅を有し、前記第1のメモリは、第1の動作を前記第1のハードウェアプロセッサに実行させるように構成された命令をエンコードする、少なくとも1つのセンサと、
少なくとも1つの他のセンサと、
第2のハードウェアプロセッサ、及び前記第2のハードウェアプロセッサと結合された第2のメモリを備える1つ以上の第2のコンピュータであって、前記第2のメモリは、第2の動作を前記第2のハードウェアプロセッサに実行させるように構成された命令をエンコード
し、前記1つ以上の第2のコンピュータは、前記第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する第2の通信チャネルを介して前記1つ以上の第1のコンピュータと結合される、第2のコンピュータと、
を備える、システムであり、
前記第1の動作は、画像フレームを受信すること、及び前記画像フレーム内の関心位置を識別することを備え、前記画像フレームは、前記第1の通信チャネルを介して前記カメラから受信され、
前記第1の動作
又は前記第2の動作は、
前記画像フレーム内で識別された位置のシーケンスを検出すること、及び前記位置のシーケンスに関する出力データを送信することを備え
、前記シーケンスのそれぞれは、前記カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たし、前記出力データは、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を備えることを備え、
前記第2の動作は、
前記出力データを受信することと、
所定の時点での仮想二次元位置を生成するべく、前記特定の画像フレームのタイムスタンプを使用して、前記シーケンスのうちの少なくとも1つに関する特定の画像フレーム内の指定された二次元位置間を補間することによって、前記出力データにおけるシーケンスのうちの少なくとも1つを処理することと、
前記所定の時点に関する、前記仮想二次元位置及び少なくとも1つの他のセンサから得られた位置情報を使用して、三次元空間で動いているボールの三次元トラックを構築することと、
を備える、システム。
【請求項13】
前記第1の動作は、前記検出すること及び前記送信することを備え、前記画像フレーム内の識別された位置は、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項12に記載のシステム。
【請求項14】
前記第2の動作は、前記検出すること及び前記送信することを備え、前記出力データは、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項12に記載のシステム。
【請求項15】
前記検出することは、
第1の識別された関心位置のそれぞれが木の開始基準を満たす画像データ値を有していることに応答して、前記第1の識別された関心位置のそれぞれから根付き木の根ノードを確立することと、
第2の識別された位置のうち少なくともいくつかのそれぞれが、前記根付き木のうちの少なくとも1つに追加された前の画像フレーム内の識別された位置の距離閾値内にあることに応答して、第2の識別された関心位置を前記根付き木のサブノードとして追加することと、
前記シーケンスの根付き木が2よりも大きい木の深さを有しているときに、識別された位置のシーケンスのそれぞれを出力対象であるか確認することと、
を含む、前記関心位置から前記根付き木を生成することを備える、請求項12に記載のシステム。
【請求項16】
前記送信することは、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づく前記シーケンスのいずれにも含まれなくなるまで、前記所与の画像フレームと、前記シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを備える、請求項12に記載のシステム。
【請求項17】
前記送信することは、
各画像フレームについての識別が完了すると、前記画像フレームのデータを出力することと、
前記シーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、各関心位置のデータを出力することと、
を備える、請求項12に記載のシステム。
【請求項18】
前記カメラは、ローリングシャッターカメラを備え、前記出力データは、各シーケンスに含まれる各関心位置の時間オフセット値を備え、前記処理することは、
前記特定の画像フレームのうちの第1の画像フレームのタイムスタンプに第1の位置の第1の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの1つを有する第1の位置の第1の観測時間を計算することと、
前記特定の画像フレームのうちの第2の画像フレームのタイムスタンプに第2の位置の第2の時間オフセット値を追加することによって、前記特定の画像フレーム内の指定された二次元位置のうちの別の1つを有する第2の位置の第2の観測時間を計算することと、
前記第1の観測時間及び前記第2の観測時間を使用して前記補間を行うことと、
を備える、請求項12に記載のシステム。
【請求項19】
前記構築することは、
関心オブジェクト三次元位置を生成するべく、前記仮想二次元位置を前記少なくとも1つの他のセンサから得られた位置情報と組み合わせることと、
前記関心オブジェクト三次元位置を、所定の時点に関する関心オブジェクト三次元位置群内の他の関心オブジェクト三次元位置に追加することと、
前記三次元空間内で動いているボールの三次元トラックを構築するべく、複数の三次元位置群にわたるモーション分析を行うことであって、前記複数の三次元位置群のそれぞれは単一の時点に関するものであり、前記複数の三次元位置群は、前記所定の時点に関する関心オブジェクト三次元位置群を含むことと、
前記三次元空間内で動いているボールの三次元トラックを表示するべく出力することと、
を備える、請求項12に記載のシステム。
【請求項20】
前記カメラは第1のカメラであり、前記少なくとも1つの他のセンサは第2のカメラであり、前記位置情報は、前記第2のカメラから得られた複数の二次元位置を備え、前記組み合わせることは、
前記第1のカメラから得られた仮想二次元位置で三次元点を生成することができないものとして、前記第2のカメラから得られた複数の二次元位置のすべてではないが少なくとも1つを除外することと、
前記第1のカメラから得られた仮想二次元位置、前記第2のカメラから得られた複数の二次元位置のうちの少なくとも1つ、前記第1のカメラ及び前記第2のカメラの固有キャリブレーションデータ、及び前記第1のカメラ及び前記第2のカメラの外部キャリブレーションデータを使用して、少なくとも前記関心オブジェクト三次元位置を三角測量することと、
を備える、請求項19に記載のシステム。
【請求項21】
前記除外することは、
前記仮想二次元位置、前記第1のカメラの光学中心、前記第2のカメラの光学中心、前記第1のカメラと前記第2のカメラとの間のベースライン、及び前記第1のカメラ及び前記第2のカメラの外部キャリブレーションデータを使用して、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域を決定することと、
前記複数の二次元位置のそれぞれが、前記第2のカメラの画像平面内のエピポーララインの少なくとも一部の周りの領域外にあることに応答して、前記第1のカメラから得られた仮想二次元位置と前記第2のカメラから得られた複数の二次元位置のそれぞれとのペアリングを棄却することと、
を備える、請求項20に記載のシステム。
【請求項22】
前記1つ以上の第1のコンピュータ又は前記1つ以上の第2のコンピュータは、第3のハードウェアプロセッサ、及び前記第3のハードウェアプロセッサと結合された第3のメモリを備え、前記第1の通信チャネルは、前記カメラを前記第1のハードウェアプロセッサと結合し、前記第2の通信チャネルは、前記第3のハードウェアプロセッサを前記第2のハードウェアプロセッサと結合し、前記画像フレームを受信することは、前記第1のハードウェアプロセッサで前記画像フレームを受信することを備え、前記関心位置を識別することは、前記第1のハードウェアプロセッサで前記関心位置を識別することを備え、前記シーケンスを検出することは、前記第1のハードウェアプロセッサを前記第3のハードウェアプロセッサと結合する第3の通信チャネルを介して前記第1のハードウェアプロセッサから前記位置を受信することに応答して、前記第3のハードウェアプロセッサで前記シーケンスを検出することを備え、前記出力データを送信することは、前記第3のハードウェアプロセッサから前記出力データを送信することを備え、前記第3の通信チャネルは、前記第1のデータ帯域幅よりも小さいが前記第2のデータ帯域幅よりも大きい第3のデータ帯域幅を有する、請求項12に記載のシステム。
【請求項23】
前記少なくとも1つの他のセンサはレーダーデバイスを備える、請求項12に記載のシステム。
【請求項24】
前記少なくとも1つの他のセンサは第2のカメラを備える、請求項12に記載のシステム。
【請求項25】
動作
をデータ処理装置に実行させる命令をエンコードする非一時的なコンピュータ可読媒体
であって、前記動作は、
1つ以上の第1のコンピュータで、カメラを前記1つ以上の第1のコンピュータと結合する第1の通信チャネルを介して、前記カメラから画像フレームを受信することであって、前記第1の通信チャネルは第1のデータ帯域幅を有することと、
前記1つ以上の第1のコンピュータによって、前記画像フレーム内の関心位置を識別することと、
前記画像フレーム内で識別された位置のシーケンスを検出することであって、前記シーケンスのそれぞれは、前記カメラからの少なくとも3つの画像フレーム内で識別された位置についてモーション基準を満たすことと、
前記位置のシーケンスに関する出力データを送信することであって、前記出力データは、各シーケンスにおける各位置について、タイムスタンプを有する特定の画像フレーム内の位置の二次元位置を備えることと、
1つ以上の第2のコンピュータで、前記出力データを受信することであって、前記1つ以上の第2のコンピュータは、前記第1のデータ帯域幅よりも小さい第2のデータ帯域幅を有する第2の通信チャネルを介して前記1つ以上の第1のコンピュータと結合されることと、
前記1つ以上の第2のコンピュータによって、所定の時点での仮想二次元位置を生成するべく、前記特定の画像フレームのタイムスタンプを使用して、前記シーケンスのうちの少なくとも1つに関する特定の画像フレーム内の指定された二次元位置間を補間することによって、前記出力データにおけるシーケンスのうちの少なくとも1つを処理することと、
前記所定の時点に関する、前記仮想二次元位置及び少なくとも1つの他のセンサから得られた位置情報を使用して、三次元空間で動いているボールの三次元トラックを構築することと、
を備える、非一時的なコンピュータ可読媒体。
【請求項26】
前記検出すること及び前記送信することは、前記1つ以上の第2のコンピュータによって実行され、前記画像フレーム内の識別された位置は、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項25に記載の非一時的なコンピュータ可読媒体。
【請求項27】
前記検出すること及び前記送信することは、前記1つ以上の第1のコンピュータによって実行され、前記出力データは、前記第2の通信チャネルを介して前記1つ以上の第1のコンピュータから前記1つ以上の第2のコンピュータで受信される、請求項25に記載の非一時的なコンピュータ可読媒体。
【請求項28】
前記検出することは、
第1の識別された関心位置のそれぞれが木の開始基準を満たす画像データ値を有していることに応答して、前記第1の識別された関心位置のそれぞれから根付き木の根ノードを確立することと、
第2の識別された位置のうち少なくともいくつかのそれぞれが、前記根付き木のうちの少なくとも1つに追加された前の画像フレーム内の識別された位置の距離閾値内にあることに応答して、第2の識別された関心位置を前記根付き木のサブノードとして追加することと、
前記シーケンスの根付き木が2よりも大きい木の深さを有しているときに、識別された位置のシーケンスのそれぞれを出力対象であるか確認することと、
を含む、前記関心位置から前記根付き木を生成することを備える、請求項25に記載の非一時的なコンピュータ可読媒体。
【請求項29】
前記送信することは、所与の画像フレームで識別された関心位置が、後続の画像フレーム内で識別された関心位置に基づく前記シーケンスのいずれにも含まれなくなるまで、前記所与の画像フレームと、前記シーケンスのうちの1つ以上において検出されたその関心位置のデータの出力を遅延させることを備える、請求項25に記載の非一時的なコンピュータ可読媒体。
【請求項30】
前記送信することは、
各画像フレームについての識別が完了すると、前記画像フレームのデータを出力することと、
前記シーケンスのうちの1つ以上が出力されるべき関心位置を含んでいることを検出した後にのみ、各関心位置のデータを出力することと、
を備える、請求項25に記載の非一時的なコンピュータ可読媒体。
【国際調査報告】