(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024122115
(43)【公開日】2024-09-09
(54)【発明の名称】接触判定装置およびプログラム
(51)【国際特許分類】
G06T 7/70 20170101AFI20240902BHJP
G06T 19/00 20110101ALI20240902BHJP
H04N 7/15 20060101ALI20240902BHJP
【FI】
G06T7/70 A
G06T19/00 600
H04N7/15 170
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023029476
(22)【出願日】2023-02-28
(71)【出願人】
【識別番号】308036402
【氏名又は名称】株式会社JVCケンウッド
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】荒瀬 貴之
(72)【発明者】
【氏名】佐藤 博幸
(72)【発明者】
【氏名】山本 睦
【テーマコード(参考)】
5B050
5C164
5L096
【Fターム(参考)】
5B050AA08
5B050AA09
5B050BA06
5B050BA09
5B050BA12
5B050CA01
5B050CA07
5B050DA04
5B050EA07
5B050EA10
5B050EA19
5B050EA26
5B050FA02
5B050FA05
5C164FA09
5C164VA02P
5C164VA04S
5C164VA36P
5L096AA09
5L096BA08
5L096DA01
5L096DA02
5L096FA66
5L096FA67
5L096FA69
5L096GA08
5L096MA05
(57)【要約】
【課題】第1の被写体が第2の被写体に仮想的に接触したことを判定する時間を低減する接触判定装置およびプログラムを提供する。
【解決手段】接触判定装置300は、第1の拠点に設置された第1のカメラにより第1の被写体が撮影された第1の深度画像に基づいて、第1の被写体の所定部分の深度を取得する第1取得部310と、第1の拠点と異なる第2の拠点に設置された第2のカメラにより第2の被写体が撮影された第2の深度画像に基づいて、第1の被写体の所定部分が、第2の被写体に仮想的に接触したかを判定する判定部330とを備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
第1の拠点に設置された第1のカメラにより第1の被写体が撮影された第1の深度画像に基づいて、前記第1の被写体の所定部分の深度を取得する第1の取得部と、
前記第1の被写体の所定部分の深度、および前記第1の拠点と異なる第2の拠点に設置された第2のカメラにより第2の被写体が撮影された第2の深度画像に基づいて、前記第1の被写体の前記所定部分が、前記第2の被写体に仮想的に接触したかを判定する判定部と
を備える接触判定装置。
【請求項2】
前記第2の深度画像に基づいて、前記第1の深度画像に対応する第1のRGB画像に前記第2の被写体の前記所定部分に関連する関連画像を重畳させる、または前記第1の深度画像に基づいて、前記第2の深度画像に対応する第2のRGB画像に前記第1の被写体の前記所定部分に関連する関連画像を重畳させる生成部
をさらに備える請求項1に記載の接触判定装置。
【請求項3】
前記第1のカメラは、前記第1の深度画像を撮像する第1のToF(Time of Flight)センサ、および前記第1のRGB画像を撮像する第1のRGBセンサを含み、
前記第1のToFセンサは前記第1のRGBセンサと同光軸であり、
前記第2のカメラは、前記第2の深度画像を撮像する第2のToFセンサ、および前記第2のRGB画像を撮像する第2のRGBセンサを含み、
前記第2のToFセンサは前記第2のRGBセンサと同光軸である
請求項2に記載の接触判定装置。
【請求項4】
前記第1の被写体が前記所定部分を前記第1のカメラに近づけたときの前記第1の被写体の前記所定部分の深度と、前記第2の被写体が前記所定部分を前記第2のカメラに近づけたときの前記第2の被写体の前記所定部分の深度とに基づいて、前記第1の被写体および前記第2の被写体の各々の仮想的な位置のキャリブレーションを行う
請求項1または2に記載の接触判定装置。
【請求項5】
コンピュータに、
第1の拠点に設置された第1のカメラにより第1の被写体が撮影された第1の深度画像に基づいて、前記第1の被写体の所定部分の深度を取得する処理と、
前記第1の拠点と異なる第2の拠点に設置された第2のカメラにより第2の被写体が撮影された第2の深度画像に基づいて、前記第1の被写体の前記所定部分が、前記第2の被写体に仮想的に接触したかを判定する処理と
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、接触判定装置およびプログラムに関する。
【背景技術】
【0002】
特許文献1には、第1のユーザが存在する第1の実空間のセンシング結果と、第2のユーザが存在する第2の実空間のセンシング結果とに基づいて、第1のユーザと第2のユーザのコミュニケーションのための仮想の共有空間を生成することが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
仮想の共有空間を生成する際、第1のユーザを表すオブジェクトを生成し、第2のユーザを表すオブジェクトを生成し、オブジェクト同士が重なっているかを判定することで、第1のユーザと第2のユーザが接触したかを判定することができる。しかしながら、膨大な計算が必要となるため、リアルタイムに接触判定を行うことが難しいという問題がある。
【0005】
本発明は、このような問題を解決するためになされたものであり、第1の被写体が第2の被写体に仮想的に接触したことを判定する時間を低減する接触判定装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、
第1の拠点に設置された第1のカメラにより第1の被写体が撮影された第1の深度画像に基づいて、前記第1の被写体の所定部分の深度を取得する第1の取得部と、
前記第1の拠点と異なる第2の拠点に設置された第2のカメラにより第2の被写体が撮影された第2の深度画像に基づいて、前記第1の被写体の前記所定部分が、前記第2の被写体に仮想的に接触したかを判定する判定部と
を備える接触判定装置を提供する。
【0007】
本発明は、
コンピュータに、
第1の拠点に設置された第1のカメラにより第1の被写体が撮影された第1の深度画像に基づいて、前記第1の被写体の所定部分の深度を取得する処理と、
前記第1の拠点と異なる第2の拠点に設置された第2のカメラにより第2の被写体が撮影された第2の深度画像に基づいて、前記第1の被写体の前記所定部分が、前記第2の被写体に仮想的に接触したかを判定する処理と
を実行させるプログラムを提供する。
【発明の効果】
【0008】
本発明によれば、第1の被写体が第2の被写体に仮想的に接触したことを判定する時間を低減する接触判定装置およびプログラムを提供できる。
【図面の簡単な説明】
【0009】
【
図1】実施形態1にかかる接触判定システムの構成を説明する図である。
【
図2】実施形態1にかかるカメラの構成を説明する図である。
【
図3】実施形態1にかかる接触判定装置の構成を説明する図である。
【
図4】実施形態1にかかる接触判定装置が生成するAR画像を説明する図である。
【
図5】第1の被写体および第2の被写体の仮想的な立ち位置を説明する図である。
【
図6】第1の被写体および第2の被写体の仮想的な立ち位置を説明する図である。
【
図7】ヘッドマウントディスプレイの虚像スクリーン位置を説明する図である。
【
図8】ヘッドマウントディスプレイの虚像スクリーン位置を説明する図である。
【発明を実施するための形態】
【0010】
(実施形態1)
図1は、実施形態1にかかる接触判定システム1の構成を説明する図である。接触判定システム1は、カメラ100A、カメラ100B、表示装置200A、表示装置200B、接触判定装置300A、接触判定装置300B、およびネットワーク回線Nを備えている。接触判定装置300Aおよび300Bは、ネットワーク回線Nを介して互いに通信可能に接続されている。ネットワーク回線Nは、有線であっても無線であってもよい。
【0011】
拠点Aに被写体SAが存在し、拠点Bに被写体SBが存在する。被写体SAおよび被写体SBを互いに区別しない場合、被写体SAおよびSBは単に被写体Sと言われる。被写体Sは、人間であってもよく、動物であってもよい。被写体Sは、体(例:腹)の表面に電流(例:低周波パルス電流)を供給する電子機器(不図示)を身に着けていてもよい。
【0012】
接触判定システム1は、具体的には、被写体SAの所定部分(例:手)が被写体SBに仮想的に接触したかを判定する機能と、被写体SBの所定部分(例:手)が被写体SAに仮想的に接触したかを判定する機能とを備える。例えば、人間である被写体SAおよびSBがリモートでボクシングを行う場合、拳状に握られた手が所定部分になる。所定部分は、体の手以外の部分(例:脚)であってもよい。また、所定部分は、体の部分には限定されず、手に持たれた所定の物体であってもよい。例えば、被写体SAおよびSBがリモートでフェンシングを行う場合、被写体Sが手に持つ剣が、所定部分になる。以下では、被写体SAおよびSBがリモートでボクシングを行う場合が主に説明される。
【0013】
カメラ100Aおよびカメラ100Bは同様の構成を備える。カメラ100Aおよびカメラ100Bを互いに区別しない場合、カメラ100Aおよびカメラ100Bは単にカメラ100と言われる。
【0014】
カメラ100は、深度画像を撮像するToF(Time of Flight)センサと、RGB(Red,Green,Blue)センサとを備えている。ToFセンサが受光する光およびRGBセンサが受光する光は、同光軸でカメラ100に入射する。以降の説明では、このような構成についてToFセンサはRGBセンサと同光軸であると表記する。
【0015】
図2は、カメラ100の構成の一例を説明する図である。被写体Sが、環境光21に照明されている。カメラ100は、レーザ光源110、レンズ120、可視光反射ダイクロイック膜130、ToFセンサ140、測距プロセス150、RGBセンサ160、およびRGBプロセス170を備えている。可視光反射ダイクロイック膜130は、2つのプリズムを貼り合わせることで構成されている。また、レンズ120は可視光と赤外光の両方に適したレンズであってもよい。
【0016】
まず、深度画像(深度データ)を撮像する動作について説明する。VCSEL(Vertical Cavity Surface Emitting LASER)等のレーザ光源110で発生したパルス状の赤外光が、被写体Sに照射される。被写体Sで反射した赤外光は、右向き矢印で示されるように、カメラ100に戻る。赤外光はレンズ120によって集光され、可視光反射ダイクロイック膜130を透過し、ToFセンサ140に入射する。ToFセンサ140は、例えば、赤外光を撮像可能なCMOS(Complementary Metal Oxide Semiconductor)イメージセンサである。測距プロセス150が、ToFセンサ140からのデータを処理し、距離データ、つまり深度データを出力する。被写体Sに赤外光を照射してからToFセンサ140に受光されるまでの時間を計測することで、深度が測定される。ToFセンサ140が測距プロセス150を内包し、ToFセンサ140が深度画像を出力するようにしてもよい。
【0017】
次に、RGB画像を撮像する動作について説明する。環境光21に照明された被写体Sからの可視光は、レンズ120によって集光され、可視光反射ダイクロイック膜130で反射され、CMOSイメージセンサ等のRGBセンサ160に入射する。RGBプロセス170は、RGBセンサ160からのデータを処理し、RGBデータを出力する。RGBセンサ160の画素とToFセンサ140の画素とが対応していてもよい。
【0018】
RGBデータは、2次元平面上の座標ごとのRGB値を表す。同様に、深度データも座標ごとの深度を表す。ToFセンサ140とRGBセンサ160とは、同一の垂直同期信号で同期される。これにより、RGB映像に同期して、被写体Sの各部分の深度が把握される。ToFセンサ140がRGBセンサ160と同光軸であるため、RGBデータと深度データの座標位置が合っており、後述する接触判定が容易に行われる。カメラ100は、GPS(Global Positioning System)/PTP(Pulse Per Second)等によりクロックレベルで他のカメラ100と同期している。
【0019】
図1を参照し、カメラ100Aは、拠点Aに設置されている。カメラ100AのToFセンサは、被写体SAの深度画像を撮像する。カメラ100AのRGBセンサは、被写体SAのRGB画像を撮像する。深度画像とRGB画像は対応している。深度画像およびRGB画像は、所謂RGBD(Red,Green,Blue,Depth)データとして保存されてもよい。カメラ100Aは接触判定装置300Aに接続されている。カメラ100Aは、深度画像およびRGB画像を接触判定装置300Aに出力する。
【0020】
カメラ100Bは、拠点Bに設置されている。カメラ100BのToFセンサは、被写体SBの深度画像を撮像する。カメラ100BのRGBセンサは、被写体SBのRGB画像を撮像する。カメラ100Bは接触判定装置300Bに接続されている。カメラ100Bは、深度画像およびRGB画像を接触判定装置300Bに出力する。
【0021】
表示装置200Aは、拠点Aに設置されたディスプレイやモニタ等である。ディスプレイは、例えば、LCD(Liquid Crystal Display)である。表示装置200Aは、接触判定装置300Aに接続されている。表示装置200Bは、接触判定装置300Bに接続されている。表示装置200Aおよび200Bを互いに区別しない場合、表示装置200Aおよび200Bは単に表示装置200と言われる。表示装置200は、ヘッドマウントディスプレイであってもよい。表示装置200がヘッドマウントディスプレイである例については後述する。
【0022】
接触判定装置300Aは、カメラ100Aから、カメラ100Aにより撮影された深度画像およびRGB画像を取得する。接触判定装置300Aは、カメラ100Aから取得した深度画像およびRGB画像を接触判定装置300Bに送信する。また、接触判定装置300Aは、カメラ100Bにより撮影された深度画像およびRGB画像を接触判定装置300Bから受信する。
【0023】
接触判定装置300Bは、カメラ100Bから、深度画像およびRGB画像を取得する。接触判定装置300Bは、カメラ100Bから取得した深度画像およびRGB画像を接触判定装置300Aに送信する。また、接触判定装置300Bは、カメラ100Aにより撮影された深度画像およびRGB画像を接触判定装置300Aから受信する。
【0024】
接触判定装置300Aは、例えば、被写体SBの拳が被写体SAに仮想的に接触したかを判定し、接触判定装置300Bは、被写体SAの拳が被写体SBに仮想的に接触したかを判定する。また、接触判定装置300Aは被写体SAの拳が被写体SBに仮想的に接触したかを判定し、接触判定装置300Bは被写体SBの拳が被写体SAに仮想的に接触したかを判定してもよい。接触判定装置300は、被写体SAおよびSBのうち所定の被写体S(第1の被写体Sと言われる)の拳が、第1の被写体Sとは異なる被写体S(第2の被写体Sと言われる)に仮想的に接触したかを判定する。第1の被写体Sを撮影するカメラ100は、第1のカメラ100と言われる。第2の被写体Sを撮影するカメラ100は、第2のカメラ100と言われる。以降の説明では、第1の被写体Sの拳が第2の被写体Sに仮想的に接触したことを、単に第1の被写体Sの拳が第2の被写体Sに接触したと表記することがある。
【0025】
接触判定装置300Aは、被写体SBが撮影されたRGB画像に、被写体SAの拳に関連する関連画像(例:ボクシンググローブの画像)を重畳させたAR(Augmented Reality)画像を生成する。接触判定装置300Aは、AR画像を表示装置200Aに出力する。接触判定装置300Bは、被写体SAが撮影されたRGB画像に関連画像を重畳させたAR画像を生成し、表示装置200Bに出力する。なお、表示装置200がヘッドマウントディスプレイである場合、各被写体Sの実際の拳が表示されるため、AR画像を生成する必要はない。
【0026】
接触判定装置300Aは、接触判定の結果に応じて、所定部分が接触したことを表す画像(例:衝撃を表す画像)をRGB画像にさらに重畳させる。また、接触判定装置300Aは、被写体SAが身につけた電子機器に制御信号を送信し、被写体SAの体に電流を供給してもよい。同様に、接触判定装置300Bは、接触判定の結果に応じて、RGB画像に画像を重畳させたり、被写体SBの体に電流を供給したりする。
【0027】
このように、接触判定装置300Aおよび300Bは同様の機能を備える。接触判定装置300Aおよび300Bを互いに区別しない場合、接触判定装置300Aおよび300Bは、単に接触判定装置300と言われる。
【0028】
図3を参照し、接触判定装置300の構成について詳細に説明する。接触判定装置300は、第1取得部310、第2取得部320、判定部330、生成部340、報知部350、および送信部360を備えている。
【0029】
接触判定装置300は、接触判定装置300が設置された拠点にいる被写体Sが拳を当てられたことを判定してもよい。また、接触判定装置300は、接触判定装置300が設置された拠点にいる被写体Sの拳が当たったことを判定してもよい。以下では、被写体Sが拳を当てられたことを判定する例が、主に説明される。
【0030】
なお、接触判定装置300は、第1のカメラ100または第2のカメラ100と接続するためのカメラインタフェース(不図示)を備える。接触判定装置300は、例えば、第2のカメラ100に接続される。また、接触判定装置300は、ネットワーク回線Nとの通信インタフェース(不図示)を備える。
【0031】
第1取得部310は、第1のカメラ100により第1の被写体Sが撮影された第1の深度画像と第1のRGB画像を取得する。第1のRGB画像は、第1の深度画像に対応するRGB画像である。そして、第1取得部310は、第1の深度画像に基づいて、第1の被写体Sの拳の深度を取得する。深度は、第1の深度画像上の座標と対応づけられていてもよい。第1取得部310は、第1の深度画像に基づいて、第1の被写体Sの拳以外の部分(例:頭、胸、腹)の深度をさらに取得してもよい。第1取得部310は、第1の被写体Sの両方の拳の深度を取得してよい。
【0032】
第1取得部310は、通信インタフェースを介して第1の深度画像等を取得してもよく、カメラインタフェースを介して第1の深度画像等を取得してもよい。接触判定装置300が設置された拠点にいる被写体Sが拳を当てられたことを判定する場合、第1取得部310は、通信インタフェースを介して第1の深度画像等を取得する。第1の被写体Sの拳等の深度は、他の接触判定装置300やサーバ(不図示)によって算出されてもよい。第1取得部310が算出結果を取得する場合、第1取得部310は、第1の深度画像を取得しなくてもよい。
【0033】
第1取得部310は、例えば、第1のRGB画像から拳に対応する画像領域を検出する。例えば、第1の被写体Sが所定の色のグローブを身に着けている場合、第1のRGB画像から所定の色の領域を検出する。そして、第1取得部310は、検出された画像領域に対応する画像領域を第1の深度画像から抽出し、抽出された画像領域から深度を算出してもよい。なお、第1取得部310は、第1の深度画像から直接拳の領域を検出してもよい。
【0034】
第2取得部320は、第2のカメラ100により第2の被写体Sが撮影された第2の深度画像および第2のRGB画像を取得する。第2のRGB画像は、第2の深度画像に対応するRGB画像である。そして、第2取得部320は、第2の深度画像に基づいて、第2の被写体Sの各部分の深度を取得する。第2取得部は、拳の深度と拳以外の部分(例:頭、胸、腹)の深度を取得してもよい。拳の深度は、例えば、AR画像を生成するために用いられる。拳以外の部分(例:腹)の深度は、例えば、判定部330による接触判定に用いられる。
【0035】
第2取得部320も、第1取得部310と同様に、カメラインタフェースを介して第2の深度画像等を取得してもよく、通信インタフェースを介して第2の深度画像等を取得してもよい。例えば、接触判定装置300が設置された拠点にいる被写体Sが拳を当てられたことを判定する場合、第2取得部320は、カメラインタフェースを介して第2の深度画像等を取得する。
【0036】
判定部330は、第1の被写体Sの拳の深度および第2の深度画像に基づいて、第1の被写体Sの拳が第2の被写体Sに仮想的に接触したかを判定する。判定部330は、第2の被写体Sの拳以外の部分(例:腹)の深度に基づき、第1の被写体Sの拳が前記部分(例:腹)に接触したかを判定してもよい。なお、判定部330は、第2の被写体Sの深度データ全体に基づいて、第1の被写体Sの拳が第2の被写体Sの体のどこかに接触したかを判定してもよい。この場合、第2取得部320は、第2の被写体Sの各部分の深度を算出する必要はない。
【0037】
判定部330は、例えば、第1のカメラ100から見た第1の被写体Sの拳の深度を、第2のカメラ100から見た仮想的な深度に変換する。例えば、第1のカメラ100から見た拳の深度を所定長から減算することにより、拳の仮想的な深度が算出されてもよい。なお、深度の変換は、後述する立ち位置に基づいて行われてもよい。そして、判定部330は、第2のカメラ100から見て、第1の被写体Sの拳が第2の被写体Sの体に接触しているかを判定してもよい。例えば、変換後の拳の深度が、第2の被写体の拳以外の部分(例:頭、腹、足等)の深度に一致した場合、第1の被写体Sの拳が第2の被写体Sに接触したと判定される(肯定的な判定結果)。なお、第2のカメラ100から見た第2の被写体Sの深度データが、第1のカメラ100から見た深度データに変換されてもよい。
【0038】
生成部340は、第2の被写体Sの拳の深度に基づいて、第1のRGB画像に、第2の被写体Sの拳に関連する関連画像(例:ボクシンググローブの画像)を重畳させたAR画像を生成する。そして、生成部340は、接触判定装置300に接続された表示装置200にAR画像を出力する。ただし、第2の被写体Sが、接触判定装置300が設置された拠点にいるものとする。第1の被写体Sが、接触判定装置300が設置された拠点にいる場合、生成部340は、第1の被写体Sの拳の深度に基づいてAR画像を生成する。生成部340は、判定部330の判定結果が肯定的である場合、拳が接触したことを表す画像(例:衝撃を表す画像)を、第1のRGB画像等にさらに重畳させてもよい。
【0039】
図4は、AR画像の一例を説明する図である。第1の被写体Sが撮影された第1のRGB画像22に、ボクシンググローブを表す関連画像23が表示されている。これにより、第2の被写体Sは、対戦相手との位置関係を正確に把握できる。第2の被写体Sと第2のカメラ100との距離が変化しない場合、第2の被写体Sの拳の深度が小さいほど、第2の被写体Sから第2の被写体Sの拳が離れることになるので、関連画像23を小さく表示させてもよい。
【0040】
図3を参照し、報知部350は、判定部330の判定結果が肯定的である場合、第2の被写体Sが身に着けた電子機器に電流の供給を行わせる。これにより、第2の被写体Sに接触判定の結果を報知することができる。なお、電子機器が振動したり音を出力したりすることで、第2の被写体Sに判定結果が報知されてもよい。報知部350は、第1の被写体Sに報知を行ってもよい。
【0041】
送信部360は、カメラインタフェースを介して取得した深度画像およびRGB画像を他の接触判定装置300に送信する。送信されたRGB画像は、他の接触判定装置300に接続された表示装置200に表示される。送信部360は、深度画像の代わりに、第2の被写体Sや第1の被写体Sの各部分の深度を送信してもよい。
【0042】
送信部360は、JPEG―XSのように画像をline単位で圧縮するコーデックを使用し、カメラインタフェースを介して取得したRGB画像を圧縮する。これにより、送信部360は、低遅延で画像を伝送できる。送信部360は、他の圧縮アルゴリズムを用いてRGB画像を圧縮してもよい。
【0043】
第1取得部310、第2取得部320、判定部330、生成部340、報知部350、および送信部360の機能は、図示しないプログラムを図示しないRAM等のメモリに読み込ませ、図示しないプロセッサが実行することにより実現されてもよい。また、各機能は、専用のハードウェアによって実現されてもよい。
【0044】
図1を参照し、被写体SAおよびSBの各部分の深度の算出は、接触判定装置300Aおよび300Bのどちらで実行されてもよく、また、両方で実行されてもよい。被写体SAの拳が被写体SBに仮想的に接触したかを判定することは、接触判定装置300Aおよび300Bのどちらで実行されてもよい。また、各部分の深度の算出、接触判定、およびAR画像の生成の一部または全部が、カメラ100や図示しないサーバで実行されてもよい。例えば、ネットワークNに接続されたサーバが、接触判定装置300の機能を備えていてもよい。この場合、接触判定装置300が各拠点に設置されている必要はない。
図1および
図2を参照し、上記のサーバの機能構成の一例について説明する。サーバは、カメラ100Aにより撮影された深度画像およびRGB画像を、ネットワークNを介して取得する機能と、カメラ100Bにより撮影された深度画像およびRGB画像を、ネットワークNを介して取得する機能と備える。そして、サーバの第1取得部310は、カメラ100Aにより撮影された深度画像に基づいて被写体SAの拳の深度を取得する。同様に、サーバの第1取得部310は、カメラ100Bにより撮影された深度画像に基づいて被写体SBの拳の深度を取得する。そして、サーバの判定部330は、被写体SAの拳の深度、およびカメラ100Bにより撮影された深度画像に基づいて、被写体SAの拳が被写体SBに仮想的に接触したかを判定し、判定結果を拠点Bに送信する。同様に、サーバの判定部330は、被写体SBの拳の深度、およびカメラ100Aにより撮影された深度画像に基づいて、被写体SBの拳が被写体SAに仮想的に接触したかを判定し、判定結果を拠点Aに送信する。
また、サーバの生成部340は、カメラ100Bにより撮影された深度画像に基づいて、カメラ100Aにより撮影されたRGB画像に被写体SBの拳の関連画像を重畳させたAR画像を生成し、拠点Bに送信する。同様に、サーバの生成部340は、被写体SAが撮影された深度画像に基づいて、被写体SBが撮影されたRGB画像に被写体SAの拳の関連画像を重畳させたAR画像を生成し、拠点Aに送信する。
【0045】
ところで、接触判定システム1では、被写体SAと被写体SBの間の仮想的な距離が適切に設定される必要がある。このことは、上述した深度の変換に関連する。一例として、被写体SAの基準位置(基準位置Aと言われる)と被写体SBの基準位置(基準位置Bと言われる)とを予め定めておき、被写体SAが基準位置Aに立ち、かつ、被写体SBが基準位置Bに立った後、接触判定を開始することが考えられる。被写体SAが基準位置Aに立っているとき、被写体SAは、カメラ100Bから見た所定位置に立っていると仮定される。被写体SBが基準位置Bに立っているとき、被写体SBは、カメラ100Aから見た所定位置に立っていると仮定される。
【0046】
図5は、被写体SAおよびSBの仮想的な立ち位置を説明する図である。左側の図には、カメラ100Aと、被写体SAと、仮想的な被写体SBとが含まれている。仮想的な被写体SBは点線で示されている。右側の図には、カメラ100Bと、被写体SBと、仮想的な被写体SAとが含まれている。仮想的な被写体SAは点線で示されている。左側の図を参照すると、被写体SAは、カメラ100Aから所定距離d1だけ離れた基準位置(基準位置A)に立っている。右側の図を参照すると、カメラ100Bから見た仮想的な被写体Aの深度は、所定値Dt1である。被写体SBについても同様である。
【0047】
符号d2は被写体SAの拳の深度を表しており、符号d3は被写体SBの拳の深度を表している。被写体SAの拳の深度および被写体SBの拳の深度は可変である。表示装置200Aに表示される関連画像(例:ボクシンググローブの画像)の位置や大きさは、被写体SAの実際の立ち位置と基準位置Aの差分と、被写体SAの拳の移動距離に基づいて定められてもよい。被写体SAの立ち位置は、被写体SAの足の位置であってもよく、腹の位置であってもよく、頭の位置であってもよい。この場合、被写体SBの拳の深度d3が、被写体SAの仮想的な立ち位置に一致したとき、被写体SBの拳が被写体SAに接触したと判定される。
【0048】
他の例では、接触判定を行う前に、仮想的な立ち位置を決定するためのキャリブレーションが行われる。ボクシングの試合開始時に対戦者同士で拳を突き合わせるように、被写体SAが拳をカメラ100Aの方に付き出し、被写体SBが拳をカメラ100Bの方に付き出す。つまり、被写体SAがカメラ100Aに拳を近づけ、被写体SBがカメラ100Bに拳を近づける。そして、第1の被写体Sの拳の深度および第2の被写体Sの拳の深度に基づいて、被写体SAおよびSBの仮想的な位置のキャリブレーションが行われる。具体的には、被写体SAの拳の位置と被写体SBの拳の位置とが合うように、被写体SAの仮想的な立ち位置や被写体SBの仮想的な立ち位置が定められる。
【0049】
図6は、キャリブレーションの方法を説明する図である。左側の図を参照すると、符号d1は、被写体SAによって突き出された拳の深度を表している。符号d2は、被写体SAの立ち位置を表している。したがって、被写体SAの立ち位置から被写体SAの拳までの距離は、d2-d1である。右側の図を参照すると、符号d3は、被写体SBによって突き出された拳の深度を表している。符号d4は、被写体SBの立ち位置を表している。したがって、被写体SBの立ち位置から被写体SBの拳までの距離は、d4-d3である。
【0050】
右側の図を参照し、被写体SAの仮想的な立ち位置の基準となる深度をDt2とする。被写体SAの実際の立ち位置から拳までの距離はd2-d1であるため、Dt2=d3-(d2-d1)が成立する。同様に、被写体SBの仮想的な立ち位置の基準となる深度をDt1とすると、Dt1=d1-(d4-d3)が成立する。Dt1およびDt2を定めた後は、基準位置AおよびBを予め決定した場合と同様に、立ち位置の変化量や拳を動かした量に基づいてAR画像を表示させてもよい。
【0051】
次に、表示装置200がヘッドマウントディスプレイである場合について説明する。
図7および
図8は、ヘッドマウントディスプレイの虚像スクリーン位置を設定する方法を説明する図である。
図7は、カメラ100Aの位置を基準に被写体SAを表す点群データを生成し、カメラ100Bの位置を基準に被写体SBを表す点群データを生成した状態を示す。カメラ100Aおよび100Bの撮影方向をz方向とし、撮影方向に平行な平面をxy平面としている。カメラ100Aによる深度画像の中心部における被写体SAの深度をd1とし、カメラ100Bによる深度画像の中心部における被写体SBの深度をd2とする。
【0052】
図8を参照すると、被写体SAが装着したヘッドマウントディスプレイの虚像スクリーン位置(虚像面基準Aと言われる)と、被写体SBが装着したヘッドマウントディスプレイの虚像スクリーン位置(虚像面基準Bと言われる)とが示されている。虚像面基準Aには点線で示された被写体SBが存在し、虚像面基準Bには点線で示された被写体SAが存在する。被写体SAから虚像面基準Aまでの距離は、被写体SBから虚像面基準Bまでの距離に等しい。被写体SAが装着したヘッドマウントディスプレイの虚像スクリーン位置のデフォルト値d_hmd1が、被写体SBが装着したヘッドマウントディスプレイの虚像スクリーン位置のデフォルト値d_hmd2より小さい場合、大きい方のデフォルト値d_hmd2が、虚像面基準AおよびBに設定される。または、お互いのプレーヤーの条件をそろえるためお互いのヘッドマウントディスプレイの虚像面基準のデフォルト値d_hmd1とデフォルト値d_hmd2の平均値を求め、平均値を虚像面基準AおよびBに設定してもよい。虚像面基準AおよびBが定まった後、ヘッドマウントディスプレイを使わない場合と同様に接触判定が行われる。ヘッドマウントディスプレイの場合、相手が目の前にいるように表示されるため、AR画像を表示する必要はない。つまり、接触判定装置300は、生成部340を備えていなくてもよい。なお、ヘッドマウントディスプレイを用いる場合も、各被写体Sが腕を突き出すことによるキャリブレーションが行われ、これにより映像視差の調整が行われてもよい。
【0053】
実施形態1にかかる接触判定装置は、第1の被写体Sの所定部分の深度と、第2の被写体Sの深度画像とに基づいて接触判定を行うことで、接触判定に必要な時間を低減できる。接触判定装置はリアルタイムに接触判定を行うことができため、被写体SAおよびSBは実際のボクシングに近い体験をすることができる。実施形態1では、モーションキャプチャのように専用装置を装着する必要はない。
【0054】
被写体SAと被写体SBは、ボクシング以外の任意の格闘技(例:フェンシング)を行ってよい。さらに、被写体SAまたはSBは動物であってもよい。例えば、人間である被写体Sが、動物である被写体Sに仮想的に触ったことが判定され、接触判定装置がコミュニケーション用途に応用されてもよい。
【0055】
上述したプログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disc(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【符号の説明】
【0056】
1 接触判定システム
100、100A、100B カメラ
110 レーザ光源
120 レンズ
130 可視光反射ダイクロイック膜
140 ToFセンサ
150 測距プロセス
160 RGBセンサ
170 RGBプロセス
200、200A、200B 表示装置
300、300A、300B 接触判定装置
310 第1取得部
320 第2取得部
330 判定部
340 生成部
350 報知部
360 送信部
21 環境光
22 第1のRGB画像
23 関連画像
N ネットワーク回線
S、SA、SB 被写体