ハンディカメラ入力からのシーン解析に基づく ビリヤード支援用

日本バーチャルリアリティ学会第 11 回大会論文集 (2006 年 9 月)
ハンディカメラ入力からのシーン解析に基づく
ビリヤード支援用 VR 表示システム
VR display system for supporting billiard based on scene analysis from handy camera
内山英昭,斎藤英雄
Hideaki UCHIYAMA and Hideo SAITO
慶應義塾大学大学院 理工学研究科
(〒 223-8522 横浜市港北区日吉 3-14-1, {uchiyama, saito}@ozawa.ics.keio.ac.jp)
Abstract : We propose a system for supporting billiard game based on scene analysis of the
billiard table using a handy camera. Our system computes a position of each ball from input
images captured by moving around the table. Then a desired ball path is displayed on a LCD
screen of the PC to support the player’s strategy. Captured images are divided into a table region,
balls and others. To estimate the position of each ball on the table, we compute a homography
of the table by approximating the extracted table region as a polygon. Then we compute the
three dimensional position of balls by the homography. Based on the arrangement of the balls,
we compute the best route of the balls by a physical simulation. In the experiment, we verify the
accuracy of the ball.
Key Words: billiard, calibration, homography
1.
2.
はじめに
システムの概要
図 1 に本システムの入力画像と出力ディスプレイの例を
ビリヤードは,球の配置を考えながら打つ方向,強さを
決めるために,物理的思考力を必要とするスポーツである.
示す.図 1 の (a) のようにハンディカメラでビリヤード台
しかしながら,初心者は球を正確に突くことに集中してし
全体が写るように撮影した画像列を入力とする.入力画像
まうため,力学的挙動を考慮しながら打つことは難しい.そ
列から算出した球の配置に基づき,出力では図 1 の (b) に
こで,打つ方向を表示することで初心者の支援を行うシス
示すように,手球(打つ球)を的球(狙う球)に当てる位置
テムが提案されている.
(イメージボール),狙うポケットを表示し,理想的な球の
従来,HMD を用いるシステム [1] やカメラ・プロジェク
軌跡を力学シミュレーションを用いて示す.OpenGL を用
タを用いたシステム [2] が提案されてきた.しかしながら,
いて 3 次元的に描画をしているため,視点を変えて見るこ
機器を装着することでゲームの質感を損ねてしまったり,機
とができる.
器の設置が必要であったりするため,ビリヤードゲームを
行う通常の環境で用いることが難しい.携帯電話などの小
型機器を用いたシステムにすることで手軽に使うことが出
来るようになると考えられる.
そこで,本研究ではハンディカメラで撮影した画像列を
入力とし,入力画像から推定した球の軌跡を仮想現実感の
技術を用いてディスプレイに表示するシステムを提案する.
本システムでは,入力画像列からビリヤード台と球の検出
(a) 入力
を行い,力学シミュレーションを用いて算出した理想的な
図 1: システムの入出力
球の軌跡を表示する.このように球を突いてから止まるま
での球の挙動を物理モデル基づいて示すことで,物理的な
思考の支援を行う.本稿では,主にビリヤード台と球の検
出について述べる.
442
(b) 出力
3.
提案手法
従来手法におけるビリヤード台と球の検出は,カメラを
ビリヤード台の真上に設置することで,ビリヤード台と球
をそれぞれ 2 次元の長方形と円として扱ってきた [2, 3].し
かしながら,ユーザが撮影を行う場合,ハンディカメラを
用いて真上から撮影することは難しいため,ビリヤード台
と球を 3 次元的に扱う必要がある.そこで,提案手法では
(a) 入力画像
(b) 候補領域のマスク
(c) 多角形近似した結果
(d) ビリヤード台のマスク
ビリヤード台の平面性を利用して平面射影行列の算出を行
い,球の 3 次元座標を算出する.
3.1
概要
ハンディカメラを用いてビリヤード台全体が写るように
周囲を歩きながら撮影し,複数の視点で撮影した複数枚の
画像列を入力とする.
初めに平面射影行列を算出するために,ビリヤード台の
平面領域の抽出を行う.各画像に対し,色を用いてビリヤー
ド台の平面候補領域を算出する.算出した候補領域の中で
最大の面積となる領域について多角形近似を行い,四角形
に近似する.こうすることによって実際のビリヤード台と
画像中のビリヤード台の対応付けを行うことができるため,
平面射影行列の算出が可能となる.平面射影行列を算出し
た後,回転行列の性質を用いて射影行列を算出する.
(e) ビリヤード台の平面領域
次に,球の検出と判別を行う.ビリヤード台の内側の領
図 2: ビリヤード台の平面領域の算出
域において,色を用いて球の領域候補を算出する.候補領
域中には球以外の領域を含まれるため,算出した候補領域
3.3
の面積と円形度によって球かどうかを判別する.算出した
球は緑マット上に必ず存在するため,3.2 で検出した緑
各球の領域において,どの色の球かをテンプレートの色と
マットの領域内において球の領域を検出する.球の領域検
の比較による投票によって決定する.
出は,緑マット領域内において球の候補領域としてを緑マッ
最後に,算出した各球の領域の中心の座標と射影行列を
ト以外の領域検出し,その中から球の領域のみを検出する.
用いて球の 3 次元座標を算出する.ユーザが算出結果の判
緑マット領域内の各画素に対して,緑マットの RGB と色
別を行い,良好と判断した場合に座標を確定する.
3.2
球の検出と中心座標の算出
ベクトルとの内積から緑マット以外の領域を検出する.ま
ビリヤード台の平面領域の算出
た,球にはビリヤード台の色と似ているものもあるため,色
図 2 の (a) はビリヤード台を撮影した画像の一例である.
ベクトルのノルムの差も用いて検出を行う.ノルムの差が
ビリヤード台にはボールが置いてある内側の緑マットの領
小さければ色の明るさが近いと考えられるため,差がしき
域と周りの枠の緑マットの領域は共に平面である.内側の
い値以下の場合に球の候補領域として抽出すると,図 3 の
緑マットは図 2 の (a) の赤丸部分がクッションによって見え
(b) のようになる.
ないため,内側の緑マット全体を検出することは出来ない.
球の候補領域内には,球やポケット,クッション部分の影
そこで,本手法においては枠にある緑マットの領域を用い
などが含まれる.球の領域のみを算出するために,図 3 の
るために,緑マットの領域すべての抽出する.
(c) のような球の候補領域のマスクを生成し,各領域を面積
あらかじめテンプレートとして,緑マットの RGB 値を
の大きさと円形度によって判別して図 3 の (d) のように球
計測しておく.入力画像の各画素に対し,テンプレートの
の領域のみを検出する.図 3 の (e) に球の領域検出結果を
RGB の色ベクトルとの内積を算出する.色が近い場合に 2
示す.
つの色ベクトルの内角は小さくなるため,色ベクトルの成
図 3 の (f) のように円の各領域において,図 3 の (g) のよ
す角がしきい値以下の場合に緑マットの候補領域として,図
うに円近似することで,画像中の円の中心座標を算出する.
2 の (b) のような候補領域のマスクを生成する.
3.4
次に,候補領域のマスク中から面積が最大となる領域を
球の判別
図 4 のように,算出した各球の領域内には,球の色の他
検出し,その領域に対して図 2 の (c) のように多角形近似す
に球の下部にできる影,鏡面反射成分などが含まれる.領
る.この多角形の辺のうち,長い方から 4 本を選び,その 4
域内の色の平均を用いると,陰や鏡面反射成分の影響を強
本の辺が構成する四角形が図 2 の (d) のようになる.この
く受けるため,誤検出することがある.そこで,どの球か
四角形を緑マットの領域として入力画像から検出すると図
を決定するために投票に基づく判別を行う.
2 の (e) のようになる.
あらかじめテンプレートとして各球の RGB を計測して
443


x


s y 
1
(b) 球の候補領域
X

 Y 



 Z 
= [P] 
(1)
1
P
(a) ビリヤード台の領域

= A [R|t]
(2)
3.2 において,ビリヤード台の平面領域の算出を行った.
実際のビリヤード台と画像中のビリヤード台の平面領域の
対応付けを行うことで,射影行列を算出することができる.
式 (1) において,平面分のみを考慮する場合には Z = 0 と
して考えることができる.すると,射影行列 P は 3 × 3 の
ホモグラフィとして考えることができ,4 つ以上の対応点を
(c) 候補領域のマスク
用いることで算出できる.3.2 において,平面を四角形に近
(d) 球の領域のマスク
似しているため,4 つの頂点を用いて対応付けを行い,ホモ
グラフィを算出する.
ホモグラフィを算出できると,内部パラメータ A を算出
することができる.また,回転行列の性質を用いることで,
ホモグラフィから回転行列 R と並進ベクトル t を算出する
ことができる.A,R,t を用いて射影行列 P が算出できる.
(e) 球の領域
(f) 球の例
画像から球の中心の 3 次元座標を算出するためには,式
(g) 円近似
(1) において世界座標 (X, Y, Z) を算出する必要がある.し
図 3: 球の領域算出
かしながら,世界座標の自由度が 3 であるために,画像座
標 (x, y) と射影行列 P からだけでは算出することができな
おく.球の領域内の各画素の RGB に対し,各球のテンプ
い.そこで,球はどこから見ても円に見えることを利用し
レートの RBG と比較を行う.各画素と各球のテンプレート
て,世界座標の Z をあらかじめ算出する.
の色ベクトルとの内積を算出し,色ベクトルの成す角が最
図 5 から分かるように,画像中に写る円の中心と実際の
小となる球に投票する.手球を 0 番とし,投票を行うと表 1
球における画像に写る点を結ぶ直線は球の中心を通る.そ
のようになる.そして,投票結果が最も多い球を算出する.
こで,Z が分かれば自由度が 2 になるので,X と Y を算出
することができる.ホモグラフィの算出の際に用いた平面が
Z = 0 であり,ビリヤード台のクッションの高さ h と球の
半径 r を既知とすると,球の中心の Z 座標は Z = −(h − r)
となる.
図 4: 球領域の色分布
表 1: 投票に基づく判別
ボール
0
1
2
3
4
5
6
7
8
9
判別結果
23
83
0
0
0
0
32
0
15
0
図 5: 球の 3 次元座標の算出
3.5
射影行列と球の中心の 3 次元座標の算出
3.6
ユーザによる判定
3 × 4 の射影行列 P は式 (1) のように画像座標 (x, y) と
各画像に対して球の位置を算出する際,図 6 の (a) のよ
世界座標 (X, Y, Z) の関係を示す行列であり,s はスケール
うにビリヤード台の一部やポケットなどを球として誤検出
ファクタである.射影行列は式 (2) のように,3 × 3 のカメ
する場合がある.そこで本手法では,初めて球の位置を算
ラの内部パラメータ行列 A,3 × 3 の回転行列 R,3 × 1 の
出できた場合,図 6 の (b) のように表示することで,ユー
並進ベクトル t で表される.
ザが算出した位置が正しいかを判別できるようにする.1 度
ユーザが球の位置を決定した場合,他の視点で撮影した画
444
像から算出した球の位置は,今まで算出した球の位置との
はないことは,ビリヤード台を見る方向によって照明条件
距離によって正しいかどうかを判定する.正しいと判定し
が異なり,台の検出精度が異なることに起因すると考えら
た場合,球の位置は平均して算出する.
れる.
(a) 誤検出
(b) ユーザに対する表示
図 6: ユーザによる判定
4.
実験
あらかじめ計測した位置に球を置き,入力画像列から算
出した位置との比較を行う.入力画像の数は 100 枚とした.
図 8: 各フレームにおける 0 番ボールの座標
図 7 に入力画像の例を示す.白いボールを 0 番,黄色いボー
本システムでは,以上のような手法に基づき全ての球の
ルを 1 番,青いボールを 2 番,赤いボールを 3 番とする.
位置を算出した後,手球に初速度と方向を与えて力学計算
を行って各球の軌跡を計算し,その結果得られる球の配置が
ビリヤードのゲーム戦略上,良いか悪いかを評価する.こ
の評価結果が最適となる初速度と方向を探索し,その探索
結果となる球の軌跡をディスプレイに CG 表示する.この
ようにして示された例が,図 1 の (b) で示した軌跡であり,
ここでは,球の打つ方向を表示し,球の理想的な動きが表
示されている.なお,このゲーム戦略上の手球の打ち方の
評価法の詳細については,文献 [4] に紹介している.
図 7: 入力画像の例
5.
おわりに
本研究ではハンディカメラで撮影した画像列を入力とし,
表 2 に各ボールの計測値と算出値を示す.結果から x 座
出力をディスプレイに球の軌跡を VR 表示するシステムを
標よりも y 座標のほうが多くの誤差を含んでいることが分
提案した.今後,タブレット PC や携帯電話にこのシステ
かる.これは,図 7 の赤丸の部分のようなビリヤード台の
ムを導入していきたい.
奥の部分が検出しにくかったことが挙げられる.
参考文献
[1] T.Jebara,
表 2: 座標の算出結果 (m)
0
球
T.Starner
and
Experience with Probabilistic Vision and Wearable
1
x
y
x
y
計測値
0.40
0.85
0.30
0.60
算出値
0.41
0.77
0.29
0.54
2
J.Weaver,
A.Pentland: Stochastics: Augmenting the Billiards
座標
球
C.Eyster,
Computers, Proceedings of the International Symposium on Wearable Computers, pp. 138-145, 1997.
[2] 緒方 祐介, 有田 大作, 谷口 倫一郎: ビリヤードを対象
としたプロジェクタ・カメラシステムによる実世界作業
支援,情処研報コンピュータビジョンとイメージメディ
3
ア,pp. 181-188, 2006.
[3] S.C.Chua, E.K.Wong and V.C.Koo:Pool Balls Iden-
座標
x
y
x
y
計測値
0.25
0.35
0.45
0.45
ings of the lntemational Conference on Robotics, Vi-
算出値
0.26
0.31
0.45
0.37
sion, Information and Signal Processing, pp. 312-315,
tification and Calibration for a Pool Robot, Proceed-
2003.
[4] 内山 英昭, 斎藤 英雄: ハンディカメラ入力によるビリ
ヤード戦略発想支援システム,エンタテインメントコン
次に 0 番ボールについて,各フレームで検出された座標
ピューティング 2006.
と計測値を図 8 に示す.各フレームにおける誤差は一定で
445