IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7651684ブラウザにおけるリアルタイム仮想テレポーテーション
<>
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図1
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図2A
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図2B
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図3A
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図3B
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図4
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図5
  • 特許-ブラウザにおけるリアルタイム仮想テレポーテーション 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-17
(45)【発行日】2025-03-26
(54)【発明の名称】ブラウザにおけるリアルタイム仮想テレポーテーション
(51)【国際特許分類】
   H04N 7/15 20060101AFI20250318BHJP
   H04N 21/431 20110101ALI20250318BHJP
【FI】
H04N7/15
H04N21/431
【請求項の数】 26
(21)【出願番号】P 2023513192
(86)(22)【出願日】2020-08-24
(65)【公表番号】
(43)【公表日】2023-09-21
(86)【国際出願番号】 US2020070453
(87)【国際公開番号】W WO2022046149
(87)【国際公開日】2022-03-03
【審査請求日】2023-06-28
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】メイズ,ジェイソン
【審査官】山本 香奈絵
(56)【参考文献】
【文献】特開2015-177296(JP,A)
【文献】特開2014-086774(JP,A)
【文献】特開2001-014474(JP,A)
【文献】国際公開第2016/203792(WO,A1)
【文献】特開2006-333301(JP,A)
【文献】米国特許出願公開第2019/0222806(US,A1)
【文献】Rudra Jikadra; Henali Shah; Pragnya Kulkarni,Video Calling with Augmented Reality Using WebRTC API, [online],2019 6th International Conference on Computing for Sustainable Global Development (INDIACom),米国,IEEE,2019年03月13日,PP.363-367,[令和6年5月24日検索], インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8991303>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/15
H04N 21/431
(57)【特許請求の範囲】
【請求項1】
方法であって、
第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、
前記第1のデバイスが、第2のデバイスから、前記ウェブベースのビデオ通話に参加する要求を受信することと、
前記第1のデバイスが、フレームを含む第1のビデオをキャプチャすることと、
前記第1のデバイスが前記フレームをセグメント化することと、
前記第1のデバイスが前記セグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、
前記第1のデバイスから前記第2のデバイスに、直接、前記少なくとも1つのセグメントを含む前記第1のビデオを、第1のリアルタイム仮想テレポーテーションとしてストリーミングすることと、
前記第1のデバイスが、前記第2のデバイスから、直接、ストリーミングされたビデオを第2のビデオとして受信することとを含み、前記第2のビデオは第2のリアルタイム仮想テレポーテーション画像を含み、前記方法はさらに、
平面を生成することと、前記第2のビデオ内に前記平面を位置決めすることと、を含み、前記平面は、前記ウェブベースのビデオ通話をレンダリングするデバイスのディスプレイに比例するサイズを有し、前記方法はさらに、
前記第1のデバイスが、前記第1のデバイスの環境に基づいて前記第2のビデオの向きを定めることと、
前記第1のデバイスが、前記第2のビデオを前記第1のデバイスの前記環境を表す背景に投影して、第2のリアルタイム仮想テレポーテーション画像を含む第3のビデオを生成することと、
前記第1のデバイスが、前記第3のビデオをレンダリングすることとを含む、方法。
【請求項2】
前記ウェブベースのビデオ通話を確立することは、ウェブページをロードすることを含み、
前記ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み、
前記トレーニングされた機械学習されたモデルは、前記フレームをセグメント化し、前記少なくとも1つのセグメントを選択するよう構成される、請求項1に記載の方法。
【請求項3】
前記少なくとも1つのセグメントは、前記ウェブベースのビデオ通話における参加者の画像である、請求項1または2に記載の方法。
【請求項4】
前記ウェブベースのビデオ通話は、ウェブベースの通信規格を使用して実現される、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記フレームの前記セグメント化は、
前記フレーム内のピクセルを意味的領域にグループ化して、オブジェクトおよび境界の位置を特定することと、
前記フレームのピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類することと、
前記フレームから前記人物を表す前記ピクセルをセグメント化することとを含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記フレームの前記セグメント化は、前記フレーム内の各オブジェクトを識別することを含み、
前記少なくとも1つのセグメントを選択することは、あるオブジェクトを前記少なくとも1つのセグメントとして選択することを含み、
前記オブジェクトは、前記ウェブベースのビデオ通話における参加者である、請求項1~4のいずれか1項に記載の方法。
【請求項7】
前記少なくとも1つのセグメントは、前記ウェブベースのビデオ通話における参加者の画像であり、前記方法は、さらに、
前記画像を2次元画像から3次元画像に変換することを含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記少なくとも1つのセグメントは、前記ウェブベースのビデオ通話における参加者の画像であり、前記方法は、さらに、
前記画像にフィルタを適用することを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現される、請求項1~8のいずれか1項に記載の方法。
【請求項10】
コードを含む前記ウェブページは、ウェブベースの拡張現実ツールを実現するよう構成される、請求項2に記載の方法。
【請求項11】
記第2のビデオの向きを定めることは、
前記第2のビデオに関連付けられる法線ベクトルを判断することと、
前記法線ベクトルに基づいて前記第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つと、を含み、
前記第1のビデオを前記第2のビデオに投影することは、前記第1のビデオを前記平面に追加することを含む、請求項1に記載の方法。
【請求項12】
方法であって、
第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、
第2のデバイスからウェブベースのビデオ通話に参加する要求を通信することと、
前記第1のデバイスにおいて、前記第2のデバイスから、直接、ストリーミングされたビデオを第1のビデオとして受信することと、
平面を生成することと、を含み、前記平面は、前記ウェブベースのビデオ通話をレンダリングするデバイスのディスプレイに比例するサイズを有し、前記方法はさらに、
前記第1のデバイスが第2のビデオをキャプチャすることと、
前記第1のデバイスが、前記第2のビデオに基づいて前記第1のビデオの向きを定めることと、
前記第1のデバイスが、前記第1のビデオを前記第2のビデオに投影して、第3のビデオを生成することと、
前記第1のデバイスが、前記第3のビデオをレンダリングすることとを含む、方法。
【請求項13】
記第1のビデオの向きを定めることは、
前記第2のビデオに関連付けられる法線ベクトルを判断することと、
前記法線ベクトルに基づいて前記第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含む、請求項12に記載の方法。
【請求項14】
平面を生成することと、前記第2のビデオ内に前記平面を位置決めすることとをさらに含み、前記第1のビデオを前記第2のビデオに投影することは、前記第1のビデオを前記平面に追加することを含む、請求項12または13に記載の方法。
【請求項15】
平面を生成することと、前記第2のビデオ内に前記平面を位置決めすることとをさらに含み、
前記第1のビデオの向きを定めることは、
前記第2のビデオに関連付けられる法線ベクトルを判断することと、
前記法線ベクトルに基づいて前記第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み、
前記第1のビデオを前記第2のビデオに投影することは、前記第1のビデオを前記平面に追加することを含む、請求項12に記載の方法。
【請求項16】
前記第1のビデオは、前記ウェブベースのビデオ通話の第1の参加者のビデオであり、
前記第2のビデオは実世界のビデオである、請求項12~15のいずれか1項に記載の方法。
【請求項17】
前記ウェブベースのビデオ通話は、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み、
前記ウェブベースのビデオ通話は、ウェブベースの拡張現実ツールを実現するよう構成されるコードを含む、請求項12~16のいずれか1項に記載の方法。
【請求項18】
前記ウェブベースのビデオ通話および前記ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現される、請求項12~17のいずれか1項に記載の方法。
【請求項19】
方法であって、
第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、
第2のデバイスから、前記ウェブベースのビデオ通話に参加する要求を受信することと、
前記第1のデバイスが、フレームを含む第1のビデオをキャプチャすることと、
前記第1のデバイスが前記フレームをセグメント化することと、
前記第1のデバイスが、前記セグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、
前記少なくとも1つのセグメントを第1のリアルタイム仮想テレポーテーション画像として含む前記第1のビデオを、前記第1のデバイスから前記第2のデバイスに直接ストリーミングすることと、
前記第1のデバイスが、前記第2のデバイスから、直接、ストリーミングされたビデオを第2のビデオとして受信することとを含み、前記第2のビデオは第2のリアルタイム仮想テレポーテーション画像を含み、前記方法はさらに、
平面を生成することと、前記第2のビデオ内に前記平面を位置決めすることと、を含み、前記平面は、前記ウェブベースのビデオ通話をレンダリングするデバイスのディスプレイに比例するサイズを有し、前記方法はさらに、
前記第1のデバイスが、第3のビデオをキャプチャすることと、
前記第1のデバイスが、前記第3のビデオに基づいて前記第2のビデオの向きを定めることと、
前記第1のデバイスが、前記第2のビデオを前記第3のビデオに投影して、第2のリアルタイム仮想テレポーテーション画像を含む第4のビデオを生成することと、
前記第1のデバイスが、前記第4のビデオを含むウェブページをレンダリングすることとを含む方法。
【請求項20】
前記ウェブベースのビデオ通話を確立することは、ウェブページをロードすることを含み、
前記ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み、
前記トレーニングされた機械学習されたモデルは、前記フレームをセグメント化し、前記少なくとも1つのセグメントを選択するよう構成され、
コードを含む前記ウェブページは、ウェブベースの拡張現実ツールを実現するよう構成される、請求項19に記載の方法。
【請求項21】
前記ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現される、請求項19または20に記載の方法。
【請求項22】
前記フレームの前記セグメント化は、
前記フレーム内のピクセルを意味的領域にグループ化して、オブジェクトおよび境界の位置を特定することと、
前記フレームのピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類することと、
前記フレームから前記人物を表す前記ピクセルをセグメント化することとを含む、請求項1921のいずれか1項に記載の方法。
【請求項23】
前記フレームの前記セグメント化は、前記フレーム内の各オブジェクトを識別することを含み、
前記少なくとも1つのセグメントを選択することは、あるオブジェクトを前記少なくとも1つのセグメントとして選択することを含み、
前記オブジェクトは、前記ウェブベースのビデオ通話における参加者である、請求項1921のいずれか1項に記載の方法。
【請求項24】
記第1のビデオの向きを定めることは、
前記第2のビデオに関連付けられる法線ベクトルを判断することと、
前記法線ベクトルに基づいて前記第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み、
前記第1のビデオを前記第2のビデオに投影することは、前記第1のビデオを前記平面に追加することを含む、請求項1923のいずれか1項に記載の方法。
【請求項25】
1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1~24のいずれか1項に記載の方法を実施させる命令を記憶するメモリとを備える、装置。
【請求項26】
コンピュータの1つ以上のプロセッサによって実行されることにより、前記コンピュータに請求項1~24のいずれか1項に記載の方法を実施させる命令を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
分野
実施形態は、ビデオ会議ウェブベースの環境においてビデオをストリーミングすることに関する。
【背景技術】
【0002】
背景
ビデオ通話は、ユーザが互いに隔たっていると感じることがあり得る。言い換えれば、2人以上の参加者が異なる場所にいて、各参加者が他の場所、または人工的な背景を、閲覧デバイス(たとえば、携帯電話)上で閲覧しているため、社交的対話が隔たっていると感じ得る。さらに、高度な機能(例えば、背景修正)を伴うビデオ会議を行うために、完全な機能アプリケーションがユーザデバイスにインストールされる必要がある。
【発明の概要】
【0003】
概要
全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、第2のデバイスからウェブベースのビデオ通話に参加する要求を受信することと、第1のデバイスがフレームを含むビデオをキャプチャすることと、第1のデバイスがフレームをセグメント化することと、第1のデバイスがセグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、第1のデバイスから第2のデバイスに、直接、少なくとも1つのセグメントを含むビデオをリアルタイム仮想テレポーテーションとしてストリーミングすることとを含む方法を用いて、プロセスを実行し得る。
【0004】
実現例は、以下の特徴のうちの1つ以上を含み得る。例えば、ウェブベースのビデオ通話を開くことは、ウェブページをロードすることを含み、ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み、トレーニングされた機械学習されたモデルは、フレームをセグメント化し、少なくとも1つのセグメントを選択するよう構成され得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得る。ウェブベースのビデオ通話は、ウェブベースの通信規格を使用して実現され得る。フレームのセグメント化は、オブジェクトおよび境界の位置を特定するために、フレーム内のピクセルを意味的領域にグループ化することと、フレームのピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類することと、フレームから人物を表すピクセルをセグメント化することとを含み得る。フレームのセグメント化は、フレーム内の各オブジェクトを識別することを含み得、少なくとも1つのセグメントを選択することは、あるオブジェクトを少なくとも1つのセグメントとして選択することを含み、当該オブジェクトは、ウェブベースのビデオ通話における参加者であり得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得、本方法は、さらに、その画像を2次元画像から3次元画像に変換することを含み得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得、本方法は、さらに、フィルタをその画像に適用することを含み得る。ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。
【0005】
別の全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話ウェブページを開くことと、第1のデバイスが、第2のデバイスから、ウェブベースのビデオ通話に参加する要求を通信することと、第1のデバイスにおいて、第2のデバイスから、直接、ストリーミングされたビデオを第1のビデオとして受信することと、第1のデバイスが第2のビデオをキャプチャすることと、第1のデバイスが第2のビデオに基づいて第1のビデオの向きを定めることと、第1のデバイスが第1のビデオを第2のビデオに投影して第3のビデオを生成することと、第1のデバイスが第3のビデオを含むウェブページをレンダリングすることとを含む方法を用いて、プロセスを実行し得る。
【0006】
実現例は、以下の特徴のうちの1つ以上を含み得る。たとえば、本方法は、さらに、平面を生成することを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得る。本方法は、さらに、平面を生成することと、平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含む。本方法は、さらに、平面を生成することと、平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて、第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含み得る。第1のビデオはウェブベースのビデオ通話の第1の参加者のビデオであり得、第2のビデオは実世界のビデオであり得る。平面は、第2のビデオ内に位置決めされた透明な2次元仮想構造であり得る。平面は、ウェブベースのビデオ通話ウェブページをレンダリングするデバイスのディスプレイに比例するサイズを有し得る。ウェブベースのビデオ通話ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み得、ウェブベースのビデオ通話ウェブページは、ウェブベースの拡張現実ツールを実現するよう構成されるコードを含み得る。ウェブベースのビデオ通話ウェブページおよびウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。
【0007】
さらに別の全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、第2のデバイスからウェブベースのビデオ通話に参加する要求を受信することと、第1のデバイスが、フレームを含む第1のビデオをキャプチャすることと、第1のデバイスがフレームをセグメント化することと、第1のデバイスがセグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、第1のデバイスから、第2のデバイスに、直接、少なくとも1つのセグメントを第1のリアルタイム仮想テレポーテーション画像として含む第1のビデオをストリーミングすることと、第1のデバイスが、第2のデバイスから、直接、ストリーミングされたビデオを第2のビデオとして受信することとを含み、第2のビデオは第2のリアルタイム仮想テレポーテーション画像を含み、さらに、第1のデバイスが第3のビデオをキャプチャすることと、第1のデバイスが第3のビデオに基づいて第2のビデオの向きを定めることと、第1のデバイスが第2のビデオを第3のビデオに投影して第2のリアルタイム仮想テレポーテーション画像を含む第4のビデオを生成することと、第1のデバイスが第4のビデオを含むウェブページをレンダリングすることとを含む方法を用いて、プロセスを実行し得る。
【0008】
実現例は、以下の特徴のうちの1つ以上を含み得る。例えば、ウェブベースのビデオ通話を開くことは、ウェブページをロードすることを含み得、ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み得、トレーニングされた機械学習されたモデルは、フレームをセグメント化し、少なくとも1つのセグメントを選択するよう構成され得、コードを含むウェブページは、ウェブベースの拡張現実ツールを実現するよう構成され得る。ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。フレームのセグメント化は、フレーム内の各オブジェクトを識別することを含み得、少なくとも1つのセグメントを選択することは、あるオブジェクトを少なくとも1つのセグメントとして選択することを含み得、そのオブジェクトは、ウェブベースのビデオ通話における参加者であり得る。本方法は、さらに、平面を生成することと、その平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて、第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含み得る。
【0009】
図面の簡単な説明
例示的な実施形態は、以下に与えられる詳細な説明および添付の図面からより充分に理解されることになり、同様の要素は、同様の参照番号によって示されるが、それらは例示のためにのみ与えられており、したがって例示的な実施形態を限定するものではない。
【図面の簡単な説明】
【0010】
図1】少なくとも1つの例示的な実施形態による信号フローのブロック図を示す。
図2A】少なくとも1つの例示的な実施形態による画像処理モジュールのブロック図を示す。
図2B】少なくとも1つの例示的な実施形態によるエンコーダシステムを示す。
図3A】少なくとも1つの例示的な実施形態によるデコーダシステムを示す。
図3B】少なくとも1つの例示的な実施形態によるプロジェクタモジュールのブロック図を示す。
図4】少なくとも1つの例示的な実施形態による、ウェブベースのビデオ通話の一部を実施するための方法のブロック図を示す。
図5】少なくとも1つの例示的な実施形態による、ウェブベースのビデオ通話の別の部分を実施するための方法のブロック図を示す。
図6】少なくとも1つの例示的な実施形態によるコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す。
【発明を実施するための形態】
【0011】
これらの図は、特定の例示的な実施形態において利用される方法、構造および/または材料の一般的特性を説明し、以下の記述を補足することを意図していることに留意されたい。しかしながら、これらの図面は、縮尺通りではなく、任意の所与の実施形態の正確な構造または性能特性を精密に反映しない場合があり、例示的実施形態によって包含される値または特性の範囲を規定または限定するものとして解釈されるべきではない。例えば、分子、層、領域、および/または構造要素の相対的な厚みならびに位置決めは、明確にするために低減または誇張される場合がある。様々な図面における類似または同一の参照番号の使用は、類似もしくは同一の要素または特徴の存在を示すことを意図している。
【0012】
実施形態の詳細な説明
ビデオ通話におけるユーザ体験は、参加者が、自身の環境において提示され、表示(例えば、矩形表示)に制限されるため、所望通りでないことがあり得る。異なる環境にある参加者は、参加者に、社交的に隔たっていると感じさせる可能性があり、および/またはユーザ間の望ましくない社交的対話をもたらす可能性がある。
【0013】
上記の問題を解決するために、ビデオ通話における第1の参加者の画像を第1の環境から抽出し、第2の参加者の第2の環境に投影(または再投影)し得る。言い換えれば、例示的な実施形態は、1人以上の参加者の画像を生成し、デバイス(たとえば、モバイルデバイス)上で見られるように、別の環境(たとえば、別の参加者の環境)に通信し得る。実現例は、第1のビデオ通話参加者の画像を生成および通信することと、第1のビデオ通話参加者の画像を第2のビデオ通話参加者のデバイス上の視野に投影することと、あたかも第1のビデオ通話参加者が第2のビデオ通話参加者の空間内にいるかのように第2のビデオ通話参加者が第1のビデオ通話参加者までおよび/または第1のビデオ通話参加者の周りを歩くことを可能にすることとを含む、仮想テレポーテーションビデオ通話を可能にし得る。
【0014】
例示的な実現例は、少なくとも1人の参加者のストリーミングビデオをセグメント化することと、参加者を含むストリーミングビデオのセグメント化された部分をデバイスのディスプレイに投影することとを含み得る。さらに、参加者の画像の生成および通信は、ウェブページにおいてリアルタイム(例えば、ライブ、最小遅延など)で実現され得る。ウェブページにおける実現例は、ローカルデバイス上へのアプリケーションのインストールを伴わなくてもよい。言い換えれば、実現例は、ゼロインストールコンピューティング環境にあり得る(例えば、ユーザが、アプリケーションをインストールするためにファイルまたはファイルのメモリインサートをダウンロードしない)。ゼロインストールコンピューティング環境は、ウェブベースのビデオ通話アプリケーションへの変更が、ウェブベースのビデオ通話アプリケーションの全てのユーザに影響を及ぼし得、ユーザは、使用のためにウェブページを開くこと以外のアクションを取らなくてもよいという点で、柔軟であるという利点を有し得る。
【0015】
加えて、ビデオ通話アプリケーションは、ウェブベースであり得、および/またはデバイス上にインストールされたアプリケーションを使用し得る。いずれの場合も、ストリーミング通信を制御するよう構成されるサーバが使用される。例示的な実現例では、ビデオ通話は、第1のデバイスから第2のデバイスに直接ビデオをストリーミングし得る。したがって、例示的な実現例は、少なくとも、ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)を使用せずにブラウザにおける仮想テレポーテーションビデオ通話のためのツールを提供することを含む、新規なビデオ通話機能を開示する。例示的な実現例では、「ウェブベースの」は、たとえば、コンピューティングデバイスのディスプレイ上でブラウザにおいてウェブページとして表示され得る画像、ビデオ、テキストなどを(HTTP(S)を使用してインターネットを介して)通信するようウェブサーバを使用して、当該ブラウザにおいて実現される機能を指す。さらに、ウェブサーバは、ウェブページに関連してコンピューティングデバイスによって実行され得るソフトウェアコード(例えば、JavaScript(登録商標)、c++、VisualBasicなど)を通信し得る。ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)は、ウェブサーバとは独立している(かまたは独立して動作する)(たとえば、同じではない)。
【0016】
図1は、少なくとも1つの例示的な実施形態による信号フローのブロック図を示す。図1に示すように、信号フロー100は、キャプチャ110ブロックと、セグメント115ブロックと、通信125ブロックと、プロジェクタ130ブロックと、レンダリング135ブロックとを含む。キャプチャ110ブロックでは、画像105が、コンピューティングデバイス(例えば、デスクトップ、ラップトップ、モバイルデバイス、スタンドアロン画像キャプチャシステムなど)のカメラを使用してキャプチャされる。本明細書に例示される実施形態を通して、1人以上の参加者の画像は、デバイス上で見られるように、少なくとも1つの環境から少なくとも1つの他の環境に投影(または再投影)され得る。したがって、信号フロー100は、仮想テレポーテーションビデオ通話の例示的な実現例を示し得る。
【0017】
画像105は、カメラを含む第1のデバイス145上のビデオ通話のビデオに対応するビデオのフレームであり得る。画像105は、少なくともビデオ通話における参加者およびビデオ通話における参加者が位置する環境(背景と呼ばれることもある)に対応するピクセルを含み得る。画像105を表すデータは、セグメント115ブロックに通信される。セグメント115ブロックは、画像105を少なくとも2つのセグメントにセグメント化し得、そのうちの1つは、ビデオ通話における参加者に対応するピクセルであり得る。ビデオ通話における参加者を含むセグメント化された画像は、画像120として示されている。
【0018】
画像120は、画像をキャプチャする第1のデバイス145(たとえば、キャプチャ110ブロックおよびセグメント115ブロックを含むデバイス)から、通信125ブロックを介して第2のデバイス150に通信される。通信125ブロックは、画像120がビデオのフレームを表すビデオ通話に対応するビデオをストリーミングし得る。画像120は、キャプチャされたフレーム(例えば、画像105)の一部分であり得る。したがって、画像120は、完全なフレームよりも少ないデータを含み得る。その結果、例示的な実現例は、完全なフレームをストリーミングするビデオ通話よりも少ないリソース(たとえば、帯域幅)を使用し得る。ストリーミングは、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を使用し得る。
【0019】
第2のデバイスは、画像120を受信し、その画像を、第2のデバイス上にまだ表示されていない、第2のデバイスによってキャプチャされている画像(例えば、実世界画像)に投影し得る(プロジェクタ130)。画像120を投影することは、第2のデバイスによってキャプチャされる画像に対する画像120の位置および向きを選択することを含み得る。結果として生じる画像は、レンダリングされ(レンダリング135ブロック)、画像140に示されるように第2のデバイス上に表示され得る。
【0020】
図2Aは、少なくとも1つの例示的な実施形態による画像処理モジュールのブロック図を示す。図2Aに示すように、画像処理230モジュールは、オブジェクト識別部235と、セグメント化部240と、画像修正245モジュールと、セグメント115とを含む。上述したように、ビデオ通話はウェブページにおいて実現され得る。したがって、画像処理230モジュールは、ウェブページの要素であり得る。例えば、画像処理230モジュールは、JavaScriptにおいて実現され得る。画像処理230モジュールは、機械学習された要素を含み得、例えば、画像処理230モジュールは、機械学習されたモデル(例えば、畳み込みニューラルネットワーク(CNN))を含み得る。したがって、画像処理230モジュールは、JavaScript(登録商標)(例えば、TensorFlow.js)で実現されるトレーニングされた機械学習された(ML)モデルを含み得る。さらに、画像処理230モジュールは、ウェブページのロードとともにコンピューティングデバイス上にロードされ得る。したがって、JavaScriptで実現されたトレーニングされたMLモデルは、ウェブページのロードとともにコンピューティングデバイス上にロードされ得る。したがって、画像処理230モジュールは、デバイス上にアプリケーションをインストールすることなく、ブラウザにおいて仮想テレポーテーションビデオ通話を実行することを可能にする(または可能にするのを助ける)ことができる。
【0021】
オブジェクト識別部235は、ビデオ通話の画像またはフレーム内の各オブジェクトを識別するよう構成され得る。オブジェクト識別部235は、ビデオ通話における参加者として1つのオブジェクトを識別するよう構成され得る。オブジェクト識別部235は、トレーニングされたMLモデル(例えば、畳み込みニューラルネットワーク(CNN))を使用してオブジェクトを識別し得る。したがって、オブジェクト識別部235は、JavaScript(登録商標)(例えば、TensorFlow.js)で実現されるトレーニングされたMLモデルを使用してオブジェクトを識別し得る。
【0022】
ビデオの画像またはフレーム(例えば、画像105)は、複数のオブジェクトを含み得る。オブジェクト識別部235に関連付けられるトレーニングされたMLモデルは、画像上に複数のボックス(バウンディングボックスと呼ばれることもある)を配置し得る。オブジェクト識別部は、データ(例えば、画像のピクセルに関連付けられる特徴)をボックスの各々に関連付け得る。データは、ボックス内でオブジェクトを示し得る(オブジェクトは、オブジェクトなし、またはオブジェクトの一部分であり得る)。オブジェクトは、その特徴によって識別され得る。データは、累積的に、クラスまたは分類子と呼ばれることがある。クラスまたは分類子は、オブジェクトに関連付けられ得る。データ(例えば、バウンディングボックス)はまた、信頼度スコア(例えば、0と1との間の数)も含み得る。
【0023】
トレーニングされたMLモデルがビデオの画像またはフレームを処理した後、トレーニングされたMLモデルは、オブジェクトまたは同じオブジェクトを示す複数の分類子を処理し得る。言い換えれば、あるオブジェクト(またはオブジェクトの一部)は、複数の重複するバウンディングボックス内にあり得る。しかしながら、分類子の各々についての信頼度スコアは異なり得る。例えば、オブジェクトの一部を識別する分類子は、完全な(または実質的に完全な)オブジェクトを識別する分類子よりも低い信頼度スコアを有し得る。トレーニングされたMLモデルは、さらに、関連付けられた分類子のないバウンディングボックスを破棄するよう構成され得る。言い換えれば、トレーニングされたMLモデルは、オブジェクトが中にないバウンディングボックスを破棄し得る。トレーニングされたMLモデルは、最も高い信頼度スコアを有する分類子を使用してオブジェクトを識別し得る。オブジェクトのうちの1つは、ビデオ通話における参加者として(例えば、人間または人間の一部として)識別され得る。
【0024】
セグメント化部240は、参加者を含む(および他のオブジェクトまたは背景ピクセルを含まない)画像を生成するよう構成され得る。例えば、オブジェクト識別部235は、参加者を含むボックスの座標を渡し得る。セグメント化部240は、画像内の、そのボックス内にないピクセルを削除し得る。セグメント化部240は、ボックスの内容を新たな画像にコピーし得る。さらに、セグメント化部240は、任意の望ましくないピクセルを除去し、遷移を滑らかにし、参加者である画像(たとえば、画像120)を改善するようにオブジェクトの境界を修正するよう構成され得る。セグメント化された画像は、セグメント115として記憶される。
【0025】
いくつかの実現例では、オブジェクト識別部235およびセグメント化部240は、1つの動作に組み合わされ得る。例えば、身体部分の画像セグメンテーションは、MLツールまたはモデルの一部であり得る。このMLツールは、画像内のピクセルを意味的領域にグループ化して、オブジェクトおよび境界の位置を特定するよう構成され得る。例えば、MLツールまたはモデルは、画像のピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類するよう構成され得る。次いで、人物を表すピクセルは画像からセグメント化され得る。
【0026】
画像修正245モジュールは、セグメント化された画像を修正するよう、および/またはセグメント化された画像に基づいて新たな画像を(たとえば、セグメント115として)生成するよう、構成され得る。画像修正245モジュールは、2次元画像から3次元(3D)画像を生成するよう構成され得る。2D-3D変換ツールは、ウェブページの要素であり得る(例えば、JavaScript(登録商標)として)。変換ツールは、セグメント化された画像を入力として実現され得る。例えば、変換ツールは、(例えば、参加者に関連付けられる)深度マップ、3Dメッシュ、ワーピングアルゴリズムなどを使用し得る。変換ツールは、トレーニングされたMLモデルとして実現され得る。例示的な実現例では、2Dから3Dへの変換は、部分的変換であり得る(例えば、セグメント化された画像の一部に深度を加える)。
【0027】
画像修正245モジュールは、セグメント化された画像に画像フィルタを適用するよう構成され得る。たとえば、画像修正245モジュールは、ゴーストフィルタ、カラーフィルタ、エンハンスメントフィルタ、ホログラフィックフィルタ、オーバーレイフィルタなどを適用し得る。画像修正245モジュールは、セグメント化された画像を強調する(例えば、品質、解像度などを改善する)よう構成され得る。画像修正245モジュールは、セグメント化された画像を完成するよう構成され得る。例えば、セグメント化された画像は、参加者の一部分(例えば、頭部)であり得、画像修正245モジュールは、セグメント化された画像に追加する(例えば、身体を追加する)ことができる。画像修正245モジュールは、簡潔にするために本明細書に記載されていない他の技法を使用して、セグメント化された画像を修正するよう構成され得る。
【0028】
図2Bの例では、エンコーダシステム200は、少なくとも1つのコンピューティングデバイスであるか、または少なくとも1つのコンピューティングデバイスを含み得、本明細書で説明する技法を実行するよう構成される事実上任意のコンピューティングデバイスを表すものと理解されたい。したがって、エンコーダシステム200は、本明細書で説明する技法またはその異なるもしくは将来のバージョンを実現するよう利用されてもよい様々な構成要素を含むと理解されてもよい。例として、エンコーダシステム200は、少なくとも1つのプロセッサ205と、少なくとも1つのメモリ210(例えば、非一時的なコンピュータ可読記憶媒体)とを含むものとして示されている。
【0029】
図2Bは、少なくとも1つの例示的な実施形態によるエンコーダシステムを示す。図2Bに示すように、エンコーダシステム200は、少なくとも1つのプロセッサ205と、少なくとも1つのメモリ210と、コントローラ220と、エンコーダ225とを含む。少なくとも1つのプロセッサ205、少なくとも1つのメモリ210、コントローラ220、およびエンコーダ225は、バス215を介して通信するように結合される。エンコーダシステムは、ウェブページを介して実現されるビデオ通話の要素であり得る。例示的実現例では、エンコーダ225およびコントローラ220は、ビデオ通話を実現するよう構成されるウェブページがロードされると、コンピュータ上にロードされる。エンコーダ225およびコントローラ220は、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を使用し得る(またはその要素である)。エンコーダシステム200は、入力としてセグメント115を使用し得る。
【0030】
少なくとも1つのプロセッサ205は、少なくとも1つのメモリ210に記憶された命令を実行するために利用されてもよい。したがって、少なくとも1つのプロセッサ205は、本明細書で説明する様々な特徴および機能、または追加もしくは代替の特徴および機能を実現し得る。例えば、プロセッサ205は、少なくとも1つのメモリ210に記憶される、ビデオ通話を実現するよう構成されるウェブページに関連付けられるコードを実行し得る。少なくとも1つのプロセッサ205および少なくとも1つのメモリ210は、様々な他の目的のために利用されてもよい。たとえば、少なくとも1つのメモリ210は、本明細書で説明するモジュールのいずれかを実現するために使用されてもよい様々なタイプのメモリならびに関連するハードウェアおよびソフトウェアの例を表してもよい。
【0031】
少なくとも1つのメモリ210は、(例えば、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を実現するために、)エンコーダシステム200に関連付けられるデータおよび/または情報を記憶するよう構成されてもよい。少なくとも1つのメモリ210は、共有リソースであってもよい。例えば、エンコーダシステム200は、より大きなシステム(例えば、サーバ、パーソナルコンピュータ、モバイルデバイスなど)の要素であってもよい。したがって、少なくとも1つのメモリ210は、より大きいシステム内の他の要素(例えば、画像/ビデオサービス、ウェブブラウジングまたは有線/無線通信)に関連付けられるデータおよび/または情報を記憶するよう構成されてもよい。
【0032】
コントローラ220は、様々な制御信号を生成し、制御信号をエンコーダシステム200および/または画像処理230モジュール内の様々なブロックに通信するよう構成されてもよい。コントローラ220は、本明細書で説明する技法を実現するために制御信号を生成するよう構成されてもよい。コントローラ220は、例示的な実現例によれば、画像、画像のシーケンス、ビデオフレーム、ビデオフレームのシーケンスなどを符号化するようにエンコーダ225を制御するよう構成されてもよい。たとえば、コントローラ220は、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)に関連付けられる画像(またはフレーム)を符号化および通信することに対応する制御信号を生成してもよい。
【0033】
エンコーダ225は、入力画像5(および/またはビデオストリーム)を受信し、圧縮された(たとえば、符号化された)ビット10を出力するよう構成されてもよい。エンコーダ225は、ビデオ入力を(たとえば、画像として)離散ビデオフレームに変換してもよい。入力画像5は、圧縮された画像ビットとして圧縮(例えば、符号化)されてもよい。エンコーダ225はさらに、各画像(または離散ビデオフレーム)をブロックまたはマクロブロック(以下、ブロックと呼ぶ)の行列に変換してもよい。たとえば、画像は、各々がいくつかのピクセルを有するブロックの32×32、32×16、16×16、16×8、8×8、4×8、4×4、または2×2行列に変換されてもよい。8つの例示的な行列が列挙されているが、例示的な実現例はそれらに限定されない。
【0034】
圧縮されたビット10は、エンコーダシステム200の出力を表してもよい。たとえば、圧縮されたビット10は、符号化された画像(またはビデオフレーム)を表してもよい。たとえば、圧縮されたビット10は、メモリ(たとえば、少なくとも1つのメモリ210)に記憶されてもよい。例えば、圧縮されたビット10は、受信デバイス(図示せず)への送信の準備ができていてもよい。たとえば、圧縮されたビット10は、受信デバイスへの送信のためにシステムトランシーバ(図示せず)に送信されてもよい。
【0035】
少なくとも1つのプロセッサ205は、画像処理230モジュール、コントローラ220、および/またはエンコーダ225に関連付けられるコンピュータ命令を実行するよう構成されてもよい。少なくとも1つのプロセッサ205は共有リソースであってもよい。例えば、エンコーダシステム200は、より大きなシステム(例えば、モバイルデバイス、デスクトップ、ラップトップなど)の要素であってもよい。したがって、少なくとも1つのプロセッサ205は、より大きいシステム内の他の要素(例えば、画像/ビデオキャプチャ、ウェブブラウジング、および/または有線/無線通信)に関連付けられるコンピュータ命令を実行するよう構成されてもよい。
【0036】
例示的な実現例では、画像処理230モジュールは、エンコーダ225の要素であり得る。例えば、画像5は、ストリーミングビデオの複数のフレームであり得る。エンコーダ225は、各フレームを個別に処理するよう構成され得る。したがって、エンコーダは、ストリーミングビデオのフレームを選択し、選択されたフレームを画像処理230モジュールへの入力として画像処理モジュール230に通信し得る。フレームを処理した後、画像処理モジュール230はセグメント115を生成し得、それは、次いで、エンコーダ225によって処理(例えば、圧縮)され得る。
【0037】
図3Aは、少なくとも1つの例示的実施形態によるデコーダシステムを示す。図3Aに示すように、デコーダシステム300は、少なくとも1つのプロセッサ305と、少なくとも1つのメモリ310と、コントローラ320と、デコーダ325とを含む。少なくとも1つのプロセッサ305、少なくとも1つのメモリ310、コントローラ320、およびデコーダ325は、バス315を介して通信するように結合される。
【0038】
図3Aの例では、デコーダシステム300は、少なくとも1つのコンピューティングデバイスであってもよく、本明細書で説明する技法を実行するよう構成される事実上任意のコンピューティングデバイスを表すものと理解されたい。したがって、デコーダシステム300は、本明細書で説明する技法またはその異なるもしくは将来のバージョンを実現するために利用されてもよい様々な構成要素を含むと理解されてもよい。たとえば、デコーダシステム300は、少なくとも1つのプロセッサ305および少なくとも1つのメモリ310(たとえば、コンピュータ可読記憶媒体)を含むものとして示される。
【0039】
したがって、少なくとも1つのプロセッサ305は、少なくとも1つのメモリ310に記憶された命令を実行するために利用されてもよい。したがって、少なくとも1つのプロセッサ305は、(例えば、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を実現するために、)本明細書で説明する様々な特徴および機能、または追加もしくは代替の特徴および機能を実現し得る。少なくとも1つのプロセッサ305および少なくとも1つのメモリ310は、様々な他の目的のために利用されてもよい。たとえば、少なくとも1つのメモリ310は、本明細書で説明するモジュールのうちの任意の1つを実現するために使用され得る様々なタイプのメモリならびに関連するハードウェアおよびソフトウェアの例を表すものと理解されてもよい。例示的な実現例によれば、デコーダシステム300は、より大きいシステム(例えば、パーソナルコンピュータ、ラップトップコンピュータ、モバイルデバイスなど)に含まれてもよい。
【0040】
少なくとも1つのメモリ310は、プロジェクタ130および/もしくはデコーダシステム300に関連付けられるデータならびに/または情報を記憶するよう構成されてもよい。少なくとも1つのメモリ310は共有リソースであってもよい。例えば、デコーダシステム300は、より大きなシステム(例えば、パーソナルコンピュータ、モバイルデバイスなど)の要素であってもよい。したがって、少なくとも1つのメモリ310は、(例えば、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を実現するために、)より大きいシステム内の他の要素(たとえば、ウェブブラウジングまたはワイヤレス通信)に関連付けられるデータおよび/または情報を記憶するよう構成されてもよい。
【0041】
コントローラ320は、様々な制御信号を生成し、プロジェクタおよび/またはデコーダシステム300内の様々なブロックに制御信号を通信するよう構成されてもよい。コントローラ320は、本明細書で説明するビデオ符号化/復号化技法を実現するために制御信号を生成するよう構成されてもよい。コントローラ320は、例示的な実現例によれば、ビデオフレームを復号するようにデコーダ325を制御するよう構成されてもよい。
【0042】
デコーダ325は、圧縮された(たとえば、符号化された)ビット10を入力として受信し、画像5を出力するよう構成されてもよい。圧縮された(たとえば、符号化された)ビット10はまた、圧縮されたビデオビット(たとえば、ビデオフレーム)を表してもよい。したがって、デコーダ325は、圧縮されたビット10の離散ビデオフレームをビデオストリームに変換してもよい。
【0043】
少なくとも1つのプロセッサ305は、プロジェクタ130、コントローラ320、および/またはデコーダ325に関連付けられるコンピュータ命令を実行するよう構成されてもよい。少なくとも1つのプロセッサ305は共有リソースであってもよい。例えば、デコーダシステム300は、より大きなシステム(例えば、パーソナルコンピュータ、モバイルデバイスなど)の要素であってもよい。したがって、少なくとも1つのプロセッサ305は、より大きいシステム内の他の要素(たとえば、ウェブブラウジングまたはワイヤレス通信)に関連付けられるコンピュータ命令を実行するよう構成されてもよい。
【0044】
図3Bは、少なくとも1つの例示的な実施形態によるプロジェクタ130のブロック図を示す。図3Bに示されるように、プロジェクタ130は、平面生成330モジュールと、平面位置決め335モジュールと、法線判断340モジュールと、投影345モジュールとを含む。例示的な実現例では、ウェブベースのビデオ通話は、少なくとも2つのコンピューティングデバイスを含む。第1のコンピューティングデバイスは、第1の参加者によって利用され得、第2のコンピューティングデバイスは、第2の参加者によって使用され得る。ウェブベースの仮想テレポーテーションビデオ通話では、第1のデバイスは、第1の参加者の画像を生成するために、図2Aおよび図2Bに関して説明した要素を含み得、第2のデバイスは、第1の参加者の画像を受信し、第1の参加者を第2の参加者の環境に投影するために、図3Aおよび図3Bに関して説明した要素を含み得る。したがって、プロジェクタ130は、デバイス上にアプリケーションをインストールすることなく、ブラウザにおいて仮想テレポーテーションビデオ通話を実行することを可能にする(または可能にするのに役立つ)ことができるという利点を有し得る。さらに、例示的な実現例は、第1の参加者、第2の参加者、および/または第1の参加者と第2の参加者との両方の画像を通信することを含み得る。
【0045】
したがって、平面生成330モジュールは、第1の参加者の画像を第2のデバイス上に投影するために、平面を生成するよう構成され得る。平面位置決め335モジュールは、第2のデバイスの物理世界環境内に平面を配置するために、第2のデバイスのディスプレイ上において、ある位置を選択するよう構成され得る。例示的な実現例では、第2のデバイスのユーザは、第2のデバイスのディスプレイ上で、レンダリングすべき実世界の位置を参照し得る。これは、複合現実と呼ばれることもある。法線判断340モジュールは、第2のデバイスのディスプレイ上で平面の向きを定めるよう構成され得る。投影345モジュールは、平面内に第1の参加者を(例えば、セグメント115として)投影するよう構成され得る。
【0046】
平面生成330モジュールは、2D仮想構造(例えば、矩形)を生成することによって平面を生成し得る。2D構造は、平面が配置される実世界における平面に対する近接度に基づくサイズを有し得る。場合によっては、ユーザが近くにいる場合、矩形はデバイス自体よりも大きくなるかもしれず、第1の参加者の下位区分のみが表示される場合がある。2D構造は、第2のデバイスのディスプレイに基づくサイズを有し得る。例えば、2D構造は、ディスプレイに比例し、ディスプレイよりも小さいサイズを有し得る。2D構造は(例えば、背景が可視となるよう、)透明であり得る。2D構造は、関数呼び出しを介して(例えば、ウェブベースの表示ツールおよび/またはウェブブラウザを介して)実現され得る。例示的なコードスニペットを以下に示す:
【0047】
【数1】
【0048】
平面位置決め335モジュールは、平面を配置するために、第2のデバイスのディスプレイ上において、ある位置を選択するよう構成され得る。この位置は、第2のデバイスによってキャプチャされ、ウェブベースのアプリケーション(例えば、ブラウザ)を使用してデバイス上に表示されている画像(例えば、プレビュー画像)に基づき得る。例えば、図1を参照すると、画像140は廊下の画像である。平面の位置は、廊下のほぼ中央において、見るのに快適な深さに配置され得る。したがって、この位置は、ピクセル位置(たとえば、X、Y位置)および深度に基づき得る。深度は、深度センサもしくはデバイス上のカメラを使用して判断され、および/または深度アルゴリズムを使用して(例えば、ウェブベースのツール、ウェブベースの拡張現実ツール、および/またはJavaScriptツール(例えば、WebXR)を使用して)計算され得る。言い換えれば、深度は、深度マップを返し得るウェブベースの(例えば、JavaScript(登録商標))拡張現実ツール(例えば、WebXR)において関数呼び出しを使用して判断され得る。例示的な実現例では、位置は、仮想オブジェクト(例えば、平面、または参加者の通信された画像)を実世界において(例えば、デバイスのカメラを使用してキャプチャされ、ウェブブラウザを介して表示される画像として)レンダリングするよう構成されるウェブベースのツールを使用して判断され得る。例示的なコードスニペットを以下に示す:
【0049】
【数2】
【0050】
法線判断340モジュールは、第2のデバイスのディスプレイ上において平面の向きを定めるよう構成され得る。例えば、(例えば、デバイスのカメラを使用してキャプチャされ、ウェブブラウザを介して表示される画像として)実世界に、および平面位置に関連付けられる法線が決定され得る。平面は、次いで、平面が法線との垂直方向に近似するように、実世界に対して向きを定められ得る(例えば、平行移動、回転等され得る)。例示的な実現例では、実世界において各ピクセルに関連付けられる法線方向を判断(たとえば、推定)し得る。各ピクセルに関連付けられる法線ベクトルが存在すると、法線は、世界座標内のピクセルに関連付けられ得る。法線ベクトルおよびピクセルは、ウェブベースの拡張現実ツールおよび/またはJavaScriptツール(例えば、WebXR)を使用して生成され得る。例えば、法線ベクトルは、平面から実世界におけるピクセルに投影され得る。向きは、有向平面から実世界に法線ベクトルを投影することによって実現および/または確認され得る。法線ベクトルは、ほぼ等価かつ反対方向であるべきである。例示的なコードスニペットを以下に示す:
【0051】
【数3】
【0052】
投影345モジュールは、第1の参加者を(例えば、セグメント115として)平面内に投影するよう構成され得る。例えば、第1の参加者の画像(例えば、解凍されたセグメント115)を表すピクセルが平面に追加され得る。投影は、外観および操作感特徴を追加してユーザ体験を改善することを含み得る。例えば、影が、結果として生じる画像に追加され得る。投影345モジュールは、(例えば、第1の参加者の通信された画像で)修正された実世界画像を第2のデバイスのディスプレイ上にレンダリングする機能として実現され得る。レンダリングは、ビデオ通話および/またはウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を実現するブラウザにおいてウェブページを表示する機能であり得る。例示的なコードスニペットを以下に示す:
【0053】
【数4】
【0054】
図4および図5は、方法のブロック図を示す。図4および図5に関して説明されるステップは、(例えば、図2Bおよび図3Aに示すように)装置に関連付けられるメモリ(例えば、少なくとも1つのメモリ210、310)に記憶され、装置に関連付けられる少なくとも1つのプロセッサ(例えば、少なくとも1つのプロセッサ205、305)によって実行されるソフトウェアコードの実行によって実行されてもよい。しかしながら、専用プロセッサとして具現化されるシステム等の代替実施形態が検討される。以下で説明されるステップは、プロセッサによって実行されるものとして説明されるが、ステップは、必ずしも同じプロセッサによって実行されるとは限らない。言い換えれば、少なくとも1つのプロセッサは、図4および図5に関して以下で説明するステップを実行してもよい。
【0055】
図4は、少なくとも1つの例示的な実施形態による、ウェブベースのビデオ通話の一部を実施するための方法のブロック図を示す。図4に示すように、ステップS405において、ウェブベースのビデオ会議が確立される。ウェブベースのビデオ通話は、ブラウザにおいて実現される仮想テレポーテーションビデオ通話であり得る。例えば、第1のデバイス上の第1の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話ウェブアプリケーション(または他の通信ツール(例えば、電子メール、メッセージングなど))を使用して第2のデバイス上の第2の参加者を招待し得る。第2の参加者は、第2のデバイス上で、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話に参加することを要求することによって、ビデオ通話に参加し得る。第1の参加者は、第2の参加者をビデオ通話に受け入れ得る。例えば、第1のデバイス上の第1の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話ウェブアプリケーションを使用して第2のデバイス上の第2の参加者を呼び出し得る。第2の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開いてビデオ通話に応答することによって、ビデオ通話に参加し得る。
【0056】
ビデオ通話アプリケーションは、ウェブベースであり得、および/またはデバイス上にインストールされたアプリケーションを使用し得る。いずれの場合も、ストリーミング通信を制御するよう構成されるサーバが使用される。例示的な実現例では、ビデオ通話は、第1のデバイスから第2のデバイスに直接ビデオをストリーミングし得る。言い換えれば、ビデオ通話は、ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)を使用することなく、第1のデバイスから第2のデバイスに(たとえば、ピアツーピアで)ストリーミングされ得る。したがって、例示的な実現例は、ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)を使用することなく、ブラウザにおいて新たなビデオ通話機能(たとえば、仮想テレポーテーションビデオ通話)を可能にする。
【0057】
ブラウザにおいてビデオ通話を行うことによって、例示的な実現例は、ゼロインストール(例えば、ユーザによりインストールされるアプリケーションまたはプラグインなしで)ビデオ通話を有効にする(または有効にするのを助ける)ことができる。サーバを排除することによって、例示的実現例は、低レイテンシで、デバイス/プラットフォーム独立性があり(例えば、任意のブラウザにおいて動作し)、よりセキュアで(例えば、サーバは、セキュリティリスク層を追加し得、いかなる第三者サービスも追加し得ない)、ネットワーク条件に適合し、専用ツール(例えば、プラグイン)などを必要としない通信を可能にする(または可能にすることに役立つ)ことができる。ビデオ通話ウェブアプリケーションを含むウェブページは、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を使用し得る。
【0058】
ステップS410において、ビデオがキャプチャされる。たとえば、第1の参加者は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイスなど)を使用してビデオをキャプチャし得る。ビデオは複数のフレームを含み得る。各フレームは、ブラウザで実行されるウェブページを介してリアルタイム仮想テレポーテーションビデオ通話で使用され得る。各フレームは、通信される人物の画像として、第1の参加者を表し得る。
【0059】
ステップS415において、ビデオがセグメント化される。例えば、ストリーミングビデオの各フレームがセグメント化され得る。身体部分の画像セグメンテーションは、MLツールまたはモデルの一部であり得る。このMLツールは、画像内のピクセルを意味的領域にグループ化して、オブジェクトおよび境界の位置を特定するよう構成され得る。例えば、MLツールまたはモデルは、画像のピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類するよう構成され得る。次いで、人物を表すピクセルは画像からセグメント化され得る。代替的に、フレームをセグメント化することは、フレーム内の各オブジェクトを識別することと、第1の参加者をセグメントとして選択することとを含み得る。たとえば、上記でより詳細に説明したように、トレーニングされたMLモデルは、画像上に複数のボックス(バウンディングボックスと呼ばれることもある)を配置し得る。オブジェクト識別部は、データ(例えば、画像のピクセルに関連付けられる特徴)をボックスの各々に関連付け得る。データは、ボックス内でオブジェクトを示し得る(オブジェクトは、オブジェクトなし、またはオブジェクトの一部分であり得る)。オブジェクトは、その特徴によって識別され得る。特徴は、人物として分類され得る。次いで、人物を表すピクセルは画像からセグメント化され得る。
【0060】
ウェブページ(例えば、ブラウザで実行されるビデオ通話ウェブアプリケーション)は、JavaScript(登録商標)(例えば、TensorFlow.js)で実現されるトレーニングされた機械学習された(ML)モデルを含み得る。JavaScript(登録商標)で実現されるトレーニングされた機械学習された(ML)モデルは、フレームをセグメント化し(例えば、オブジェクトを識別する)、第1の参加者(例えば、人間)を画像セグメント(例えば、セグメント115)として選択するよう構成され得る。
【0061】
例示的な実現例では、2人以上の参加者(たとえば、人間)がいてもよい。第1の参加者は、第1のデバイスのカメラのより近くに立っており、投影されることを望むフルビューの参加者ではない場合がある。したがって、1人からn人の参加者を、あるシーンから選択して、1人からn人の人間を同時に所望通りに投影してもよい。
【0062】
ステップS420において、少なくとも1つのセグメントが処理される。例示的な実現例では、少なくとも1つのセグメントを処理することは任意選択であり得る。すなわち、ステップS420を行わずにステップS425に処理を進めることができる。少なくとも1つのセグメントを処理することは、少なくとも1つのセグメント(例えば、セグメント115)の画像修正を含み得る。たとえば、画像修正は、画像エンハンスメント(たとえば、品質改善)、画像変換(たとえば、2Dから3Dへの変換)、画像ワーピング(2D画像が3D変換なしで3Dに見えるようにする)などを含み得る。
【0063】
ステップS425において、少なくとも1つのセグメントが符号化される。例えば、少なくとも1つのセグメントは、ビデオ通話を行うために使用される規格を使用して符号化され得る。ビデオ通話を行うために使用される規格は、ウェブベースのビデオ会議が確立されるとエンコーダをロードすることを含み得る。例えば、WebRTCを使用してビデオ通話を行い得る。WebRTC互換性ブラウザは、少なくともVP8および/もしくはAVCエンコーダ/デコーダ規格を使用またはサポートしてもしなくてもよい。ステップS430において、符号化された少なくとも1つのセグメントがストリーミングされる。たとえば、符号化された少なくとも1つのセグメントは、第1のデバイスから第2のデバイスに、たとえばWebRTC規格を使用してインターネットを介して、通信され得る。別の実現例では、データ(たとえば、生バイナリデータ)が、規格を使用せずに通信され得る。
【0064】
図5は、少なくとも1つの例示的な実施形態による、ウェブベースのビデオ通話の別の部分を実施するための方法のブロック図を示す。図5に示すように、ステップS505において、ウェブベースのビデオ会議が確立される。例えば、第1のデバイス上の第1の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話ウェブアプリケーション(または他の通信ツール(例えば、電子メール、メッセージングなど))を使用して第2のデバイス上の第2の参加者を招待し得る。第2の参加者は、第2のデバイス上で、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話に参加することを要求することによって、ビデオ通話に参加し得る。第1の参加者は、第2の参加者をビデオ通話に受け入れ得る。例えば、第1のデバイス上の第1の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開き、ビデオ通話ウェブアプリケーションを使用して第2のデバイス上の第2の参加者を呼び出し得る。第2の参加者は、ビデオ通話ウェブアプリケーションを含むウェブページを開いてビデオ通話に応答することによって、ビデオ通話に参加し得る。ビデオ通話は、第1のデバイスから第2のデバイスに直接ビデオをストリーミングし得る。言い換えれば、ビデオ通話は、ストリーミング通信を制御するよう構成されるサーバを使用することなく、第1のデバイスから第2のデバイスにストリーミングされ得る。
【0065】
ビデオ通話アプリケーションは、ウェブベースであり得、および/またはデバイス上にインストールされたアプリケーションを使用し得る。いずれの場合も、ストリーミング通信を制御するよう構成されるサーバが使用される。例示的な実現例では、ビデオ通話は、第1のデバイスから第2のデバイスに直接ビデオをストリーミングし得る。言い換えれば、ビデオ通話は、ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)を使用することなく、第1のデバイスから第2のデバイスに(たとえば、ピアツーピアで)ストリーミングされ得る。したがって、例示的な実現例は、ストリーミング通信を制御するよう構成されるサーバ(たとえば、第三者サーバ)を使用することなく、ブラウザにおいて新たなビデオ通話機能(たとえば、仮想テレポーテーションビデオ通話)を可能にする。
【0066】
ブラウザにおいてビデオ通話を行うことによって、例示的な実現例は、ゼロインストール(例えば、ユーザによりインストールされるアプリケーションまたはプラグインなしで)ビデオ通話を有効にする(または有効にするのを助ける)ことができる。サーバを排除することによって、例示的実現例は、低レイテンシで、デバイス/プラットフォーム独立性があり(例えば、任意のブラウザにおいて動作し)、よりセキュアで(例えば、サーバは、セキュリティリスク層を追加し得、いかなる第三者サービスも追加し得ない)、ネットワーク条件に適合し、専用ツール(例えば、プラグイン)などを必要としない通信を可能にする(または可能にすることに役立つ)ことができる。ビデオ通話ウェブアプリケーションを含むウェブページは、ウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を使用し得る。
【0067】
ステップS510において、ビデオストリームが受信される。例えば、ビデオ通話に対応するビデオの符号化されたフレームは、第1のデバイスから第2のデバイスに、例えば、WebRTC規格を使用してインターネットを介して通信され得る。第2のデバイスは、フレームごとに、および/またはフレームのグループで、ビデオストリームを受信し得る。ステップS515において、ビデオストリームは、第1のビデオとして復号される。例えば、ストリーミングビデオの各フレームが復号され得る。ビデオ通話を行うために使用される規格は、ウェブベースのビデオ会議が確立されるとデコーダをロードすることを含み得る。例えば、WebRTCを使用してビデオ通話を行い得る。WebRTC互換性ブラウザは、少なくともVP8および/もしくはAVCエンコーダ/デコーダ規格を使用またはサポートし得る。別の実現例では、データ(たとえば、生バイナリデータ)が、規格を使用せずに通信され得る。
【0068】
ステップS520において、ビデオが第2のビデオとしてキャプチャされる。たとえば、第2の参加者は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイスなど)を使用してビデオをキャプチャし得る。ビデオは複数のフレームを含み得る。各フレームは、ブラウザで実行されるウェブページを介してリアルタイム仮想テレポーテーションビデオ通話で使用され得る。各フレームは、第1の参加者の画像が投影され得る実世界を表し得る。
【0069】
ステップS525において、第2のビデオに関連付けられる法線ベクトルが判断される。例えば、(例えば、デバイスのカメラを使用してキャプチャされ、ウェブブラウザを介して表示される画像として)実世界に、および平面位置に関連付けられる法線ベクトルが、判断され得る。ある例示的な実現例では、実世界において各ピクセルに関連付けられる法線ベクトルを判断(たとえば、推定)し得る。各ピクセルに関連付けられる法線ベクトルが存在すると、法線ベクトルは、世界座標内のピクセルに関連付けられ得る。法線ベクトルおよびピクセルは、ウェブベースの拡張現実ツールおよび/またはJavaScriptツール(例えば、WebXR)を使用して生成され得る。例えば、法線ベクトルは、平面から実世界におけるピクセルに投影され得る。
【0070】
ステップS530において、平面を生成する。例えば、平面は、2D仮想構造(例えば、矩形)を生成することによって生成され得る。2D構造は、第2のデバイスのディスプレイに基づくサイズを有し得る。例えば、2D構造は、ディスプレイに比例し、ディスプレイよりも小さいサイズを有し得る。2D構造は(例えば、背景が可視となるよう、)透明であり得る。2D構造は、関数呼び出しを介して(例えば、ウェブベースの表示ツールおよび/またはウェブブラウザを介して)実現され得る。
【0071】
ステップS535において、平面は、法線ベクトルに基づいて向きを定められる。例えば、平面は、平面が法線ベクトルとの垂直方向に近似するように、実世界に対して向きを定められ得る(例えば、平行移動、回転等され得る)。向きは、平面から実世界に法線ベクトルを投影することによって実現および/または確認され得る。実世界に関連付けられる法線ベクトルと平面に関連付けられる法線ベクトルとは、ほぼ等価で反対方向であるべきである。
【0072】
ステップS540において、第1のビデオは、第2のビデオの平面に投影される。例えば、第1の参加者の画像(例えば、解凍されたセグメント115)を表すピクセルが平面に追加され得る。ステップS545において、第1のビデオおよび第2のビデオはレンダリングされる。投影は、(例えば、第1のビデオ(または第1の参加者の通信された画像)で)修正された第2の(または実世界の)ビデオを第2のデバイスのディスプレイ上にレンダリングする機能として実現され得る。レンダリングは、ビデオ通話および/またはウェブベースの通信規格(例えば、webRTC, VoIP, RTP, PTP Telephonyなど)を実現するブラウザにおけるウェブページの表示の機能であり得る。
【0073】
図6は、ここに記載される技術とともに用いられてもよいコンピュータデバイス600およびモバイルコンピュータデバイス650の例を示す。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、様々な形態のデジタルコンピュータを表わすことを意図している。コンピューティングデバイス650は、携帯情報端末、セルラー電話、スマートフォン、および他の同様のコンピューティングデバイスといった、様々な形態のモバイルデバイスを表わすことを意図している。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は例示であることが意図されているに過ぎず、本文書に記載のおよび/または請求項に記載の本発明の実現例を限定することを意図していない。
【0074】
コンピューティングデバイス600は、プロセッサ602、メモリ604、記憶装置606、メモリ604および高速拡張ポート610に接続している高速インターフェイス608、ならびに低速バス614および記憶装置606に接続している低速インターフェイス612を含む。コンポーネント602,604,606,608,610および612の各々は様々なバスを用いて相互に接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ602は、コンピューティングデバイス600内で実行される命令を処理可能であり、この命令には、GUIのためのグラフィック情報を高速インターフェイス608に結合されているディスプレイ616などの外部入出力デバイス上に表示するためにメモリ604内または記憶装置606上に記憶されている命令が含まれる。他の実現例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数種類のメモリとともに必要に応じて用いられ得る。また、複数のコンピューティングデバイス600が接続され得、各デバイスは(例えばサーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0075】
メモリ604は情報をコンピューティングデバイス600内に記憶する。一実現例では、メモリ604は1つまたは複数の揮発性メモリユニットである。別の実現例では、メモリ604は1つまたは複数の不揮発性メモリユニットである。また、メモリ604は、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
【0076】
記憶装置606は、コンピューティングデバイス600に大容量記憶を提供可能である。一実現例では、記憶装置606は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他のコンフィギュレーションにおけるデバイスを含む多数のデバイスといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラムプロダクトが情報媒体内に有形に具体化され得る。また、コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含み得る。情報媒体は、メモリ604、記憶装置606、またはプロセッサ602上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【0077】
高速コントローラ608はコンピューティングデバイス600のための帯域幅集約的な動作を管理するのに対して、低速コントローラ612はより低い帯域幅集約的な動作を管理する。そのような機能の割当ては例示に過ぎない。一実現例では、高速コントローラ608はメモリ604、ディスプレイ616に(例えばグラフィックスプロセッサまたはアクセラレータを介して)、および様々な拡張カード(図示せず)を受付け得る高速拡張ポート610に結合される。当該実現例では、低速コントローラ612は記憶装置606および低速拡張ポート614に結合される。様々な通信ポート(例えばUSB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータといったネットワーキングデバイスなどの1つ以上の入出力デバイスに、例えばネットワークアダプタを介して結合され得る。
【0078】
コンピューティングデバイス600は、図に示すように多数の異なる形態で実現されてもよい。例えば、コンピューティングデバイス600は標準的なサーバ620として、またはそのようなサーバのグループ内で複数回実現されてもよい。また、コンピューティングデバイス600はラックサーバシステム624の一部として実現されてもよい。さらに、コンピューティングデバイス600はラップトップコンピュータ622などのパーソナルコンピュータにおいて実現されてもよい。あるいは、コンピューティングデバイス600からのコンポーネントは、デバイス650などのモバイルデバイス(図示せず)内の他のコンポーネントと組合されてもよい。そのようなデバイスの各々がコンピューティングデバイス600,650の1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス600,650で構成されてもよい。
【0079】
コンピューティングデバイス650は、数あるコンポーネントの中でも特に、プロセッサ652、メモリ664、ディスプレイ654などの入出力デバイス、通信インターフェイス666、およびトランシーバ668を含む。また、デバイス650には、マイクロドライブまたは他のデバイスなどの記憶装置が提供されて付加的なストレージが提供されてもよい。コンポーネント650,652,664,654,666および668の各々は様々なバスを用いて相互に接続されており、当該コンポーネントのいくつかは共通のマザーボード上にまたは他の態様で適宜搭載され得る。
【0080】
プロセッサ652は、メモリ664に記憶されている命令を含む、コンピューティングデバイス650内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、例えば、ユーザインターフェイス、デバイス650が実行するアプリケーション、およびデバイス650による無線通信の制御といった、デバイス650の他のコンポーネントの協調を提供し得る。
【0081】
プロセッサ652は、ディスプレイ654に結合された制御インターフェイス658およびディスプレイインターフェイス656を介してユーザと通信し得る。ディスプレイ654は、例えば、TFT LCD(薄膜トランジスタ液晶ディスプレイ)もしくはOLED(有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス656は、ディスプレイ654を駆動してグラフィックおよび他の情報をユーザに提示するための適切な回路を含み得る。制御インターフェイス658はユーザからコマンドを受信し、当該コマンドをプロセッサ652に提出するために変換し得る。さらに、外部インターフェイス662が、デバイス650と他のデバイスとの隣接通信を可能にするために、プロセッサ652と通信した状態で提供されてもよい。外部インターフェイス662は、例えば、ある実現例では有線通信を提供し、他の実現例では無線通信を提供してもよく、また、複数のインターフェイスが用いられてもよい。
【0082】
メモリ664は情報をコンピューティングデバイス650内に記憶する。メモリ664は、1つもしくは複数のコンピュータ読取可能媒体、1つもしくは複数の揮発性メモリユニット、または1つもしくは複数の不揮発性メモリユニットの1つ以上として実現され得る。さらに、拡張メモリ674が提供され、例えばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る拡張インターフェイス672を介してデバイス650に接続されてもよい。このような拡張メモリ674はデバイス650に余分のストレージスペースを提供し得るか、またはデバイス650のためのアプリケーションもしくは他の情報をさらに記憶し得る。具体的には、拡張メモリ674は上述のプロセスを実行または補足するための命令を含み得、さらにセキュア情報を含み得る。ゆえに、例えば、拡張メモリ674はデバイス650のためのセキュリティモジュールとして提供されてもよく、デバイス650のセキュアな使用を許可する命令でプログラムされてもよい。さらに、ハッキング不可能なようにSIMMカード上に識別情報を置くといったように、セキュアなアプリケーションが付加的な情報とともにSIMMカードを介して提供されてもよい。
【0083】
メモリは、以下に記載のように、例えばフラッシュメモリおよび/またはNVRAMメモリを含み得る。一実現例では、コンピュータプログラムプロダクトが情報媒体内に有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含む。情報媒体は、メモリ664、拡張メモリ674、またはプロセッサ652上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体であり、これは、例えばトランシーバ668または外部インターフェイス662上で受信され得る。
【0084】
デバイス650は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス666を介して無線通信し得る。通信インターフェイス666は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、様々なモードまたはプロトコル下の通信を提供し得る。そのような通信は、例えば無線周波数トランシーバ668を介して起こり得る。さらに、ブルートゥース、Wi-Fi、または他のそのようなトランシーバ(図示せず)を用いるなどして、短距離通信が起こり得る。さらに、GPS(全地球測位システム)レシーバモジュール670が付加的なナビゲーション関連および位置関連の無線データをデバイス650に提供し得、当該データはデバイス650上で実行されるアプリケーションによって適宜用いられ得る。
【0085】
また、デバイス650は、ユーザから口頭情報を受信して当該情報を使用可能なデジタル情報に変換し得る音声コーデック660を用いて可聴的に通信し得る。音声コーデック660も同様に、例えばデバイス650のハンドセット内で、スピーカを介すなどしてユーザに可聴音を生成し得る。そのような音は音声電話からの音を含んでいてもよく、録音された音(例えば音声メッセージ、音楽ファイル等)を含んでいてもよく、さらに、デバイス650上で実行されるアプリケーションが生成する音を含んでいてもよい。
【0086】
コンピューティングデバイス650は、図に示すように多数の異なる形態で実現されてもよい。例えば、コンピューティングデバイス650はセルラー電話680として実現されてもよい。また、コンピューティングデバイス650は、スマートフォン682、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
【0087】
全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、第2のデバイスからウェブベースのビデオ通話に参加する要求を受信することと、第1のデバイスがフレームを含むビデオをキャプチャすることと、第1のデバイスがフレームをセグメント化することと、第1のデバイスがセグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、第1のデバイスから第2のデバイスに、直接、少なくとも1つのセグメントを含むビデオをリアルタイム仮想テレポーテーションとしてストリーミングすることとを含む方法を用いて、プロセスを実行し得る。
【0088】
実現例は、以下の特徴のうちの1つ以上を含み得る。例えば、ウェブベースのビデオ通話を開くことは、ウェブページをロードすることを含み、ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み、トレーニングされた機械学習されたモデルは、フレームをセグメント化し、少なくとも1つのセグメントを選択するよう構成され得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得る。ウェブベースのビデオ通話は、ウェブベースの通信規格を使用して実現され得る。フレームのセグメント化は、オブジェクトおよび境界の位置を特定するために、フレーム内のピクセルを意味的領域にグループ化することと、フレームのピクセルを2つのカテゴリ、すなわち、1)人物を表すピクセルと2)背景を表すピクセルとに分類することと、フレームから人物を表すピクセルをセグメント化することとを含み得る。フレームのセグメント化は、フレーム内の各オブジェクトを識別することを含み得、少なくとも1つのセグメントを選択することは、あるオブジェクトを少なくとも1つのセグメントとして選択することを含み、当該オブジェクトは、ウェブベースのビデオ通話における参加者であり得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得、本方法は、さらに、その画像を2次元画像から3次元画像に変換することを含み得る。少なくとも1つのセグメントは、ウェブベースのビデオ通話における参加者の画像であり得、本方法は、さらに、フィルタをその画像に適用することを含み得る。ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。
【0089】
別の全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話ウェブページを開くことと、第1のデバイスが、第2のデバイスから、ウェブベースのビデオ通話に参加する要求を通信することと、第1のデバイスにおいて、第2のデバイスから、直接、ストリーミングされたビデオを第1のビデオとして受信することと、第1のデバイスが第2のビデオをキャプチャすることと、第1のデバイスが第2のビデオに基づいて第1のビデオの向きを定めることと、第1のデバイスが第1のビデオを第2のビデオに投影して第3のビデオを生成することと、第1のデバイスが第3のビデオを含むウェブページをレンダリングすることとを含む方法を用いて、プロセスを実行し得る。
【0090】
実現例は、以下の特徴のうちの1つ以上を含み得る。たとえば、本方法は、さらに、平面を生成することを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得る。本方法は、さらに、平面を生成することと、平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含む。本方法は、さらに、平面を生成することと、平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて、第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含み得る。第1のビデオはウェブベースのビデオ通話の第1の参加者のビデオであり得、第2のビデオは実世界のビデオであり得る。平面は、第2のビデオ内に位置決めされた透明な2次元仮想構造であり得る。平面は、ウェブベースのビデオ通話ウェブページをレンダリングするデバイスのディスプレイに比例するサイズを有し得る。ウェブベースのビデオ通話ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み得、ウェブベースのビデオ通話ウェブページは、ウェブベースの拡張現実ツールを実現するよう構成されるコードを含み得る。ウェブベースのビデオ通話ウェブページおよびウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。
【0091】
さらに別の全般的な局面では、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを格納している)非一時的コンピュータ可読媒体、および/または方法は、第1のデバイス上のブラウザにおいてウェブベースのビデオ通話を開くことと、第2のデバイスからウェブベースのビデオ通話に参加する要求を受信することと、第1のデバイスが、フレームを含む第1のビデオをキャプチャすることと、第1のデバイスがフレームをセグメント化することと、第1のデバイスがセグメント化されたフレームのうちの少なくとも1つのセグメントを選択することと、第1のデバイスから、第2のデバイスに、直接、少なくとも1つのセグメントを第1のリアルタイム仮想テレポーテーション画像として含む第1のビデオをストリーミングすることと、第1のデバイスが、第2のデバイスから、直接、ストリーミングされたビデオを第2のビデオとして受信することとを含み、第2のビデオは第2のリアルタイム仮想テレポーテーション画像を含み、さらに、第1のデバイスが第3のビデオをキャプチャすることと、第1のデバイスが第3のビデオに基づいて第2のビデオの向きを定めることと、第1のデバイスが第2のビデオを第3のビデオに投影して第2のリアルタイム仮想テレポーテーション画像を含む第4のビデオを生成することと、第1のデバイスが第4のビデオを含むウェブページをレンダリングすることとを含む方法を用いて、プロセスを実行し得る。
【0092】
実現例は、以下の特徴のうちの1つ以上を含み得る。例えば、ウェブベースのビデオ通話を開くことは、ウェブページをロードすることを含み得、ウェブページは、トレーニングされた機械学習されたモデルを実現するよう構成されるコードを含み得、トレーニングされた機械学習されたモデルは、フレームをセグメント化し、少なくとも1つのセグメントを選択するよう構成され得、コードを含むウェブページは、ウェブベースの拡張現実ツールを実現するよう構成され得る。ウェブベースのビデオ通話は、ゼロインストールウェブアプリケーションとして実現され得る。フレームのセグメント化は、フレーム内の各オブジェクトを識別することを含み得、少なくとも1つのセグメントを選択することは、あるオブジェクトを少なくとも1つのセグメントとして選択することを含み得、そのオブジェクトは、ウェブベースのビデオ通話における参加者であり得る。本方法は、さらに、平面を生成することと、その平面を第2のビデオ内に位置決めすることとを含み得、第1のビデオの向きを定めることは、第2のビデオに関連付けられる法線ベクトルを判断することと、法線ベクトルに基づいて、第1のビデオを回転させることおよび平行移動させることのうちの少なくとも1つとを含み得、第1のビデオを第2のビデオに投影することは、第1のビデオを平面に追加することを含み得る。
【0093】
例示的な実施形態は、様々な修正物および代替形態を含んでもよく、それらの実施形態は、図面において例として示され、本明細書で詳細に説明される。しかしながら、例示的な実施形態を開示された特定の形態に限定する意図はなく、むしろ、例示的な実施形態は、特許請求の範囲内に入るすべての修正物、均等物および代替物を包含するものであることを理解されたい。同様の番号は、図面の説明を通して同様の要素を指す。
【0094】
本明細書に記載のシステムおよび技術の様々な実現例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらの様々な実現例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実現例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するように、かつこれらにデータおよび命令を送信するように結合されている。本明細書で説明されるシステムおよび技術の様々な実現例は、ソフトウェアおよびハードウェアの態様を組み合わせることができる回路、モジュール、ブロック、もしくはシステムとして実現され、および/または一般に本明細書で言及され得る。例えば、モジュールは、プロセッサ(例えば、シリコン基板、GaAs基板などの上に形成されたプロセッサ)または他のプログラム可能なデータ処理装置上で実行する機能/動作/コンピュータプログラム命令を含むことができる。
【0095】
上記の例示的な実施形態のうちのいくつかはフローチャートとして示される処理または方法として記載される。フローチャートは動作をシーケンシャルな処理として記載しているが、動作の多くは、並列、同時または一斉に行なわれ得る。さらに、動作の順序は再構成され得る。処理は、それらの動作が完成すると、終了し得るが、当該図に含まれていない付加的なステップを有し得る。これらの処理は、メソッド、ファンクション、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。
【0096】
いくつかがフローチャートによって示されている上で論じた方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語またはその任意の組合せによって実現され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現されると、必要なタスクを実行するプログラムコードまたはコードセグメントは、記憶媒体のような機械読取可能媒体またはコンピュータ読取可能媒体に格納され得る。プロセッサは必要なタスクを実行し得る。
【0097】
本願明細書において開示される特定の構造的および機能的な詳細は単に、例示的な実施形態を説明する目的のための代表的なものである。しかしながら、例示的な実施形態は、多くの代替的な形態で具現化され、本願明細書において記載される実施形態のみに限定されると解釈されるべきでない。
【0098】
第1、第2などといった用語は、本願明細書において様々な要素を記載するために使用され得るが、これらの要素はこれらの用語によって限定されるべきでないということが理解されるであろう。これらの用語は単に、1つの要素を別の要素と区別するために使用されている。例えば、例示的な実施形態の範囲から逸脱することがなければ、第1の要素は、第2の要素と称することが可能であり、同様に、第2の要素を第1の要素と称することが可能である。本願明細書において使用されるように、「および/または」という用語は、関連付けられる列挙された項目の1つ以上のいずれかおよびすべての組合せを含む。
【0099】
ある要素が別の要素に接続または結合されると称される場合、ある要素は直接的に他の要素に接続または結合され得るか、または、介在要素が存在し得るということが理解されるであろう。対照的に、ある要素が別の要素に直接的に接続または直接的に結合されると称される場合、介在要素は存在しない。要素同士の関係を説明するように用いられる他の単語は、類似の態様(例えば、「間に」と「直接的に間に」、「隣接」と「直接的に隣接」、など)で解釈されるべきである。
【0100】
本願明細書において使用される用語は単に特定の実施形態を説明するためのものであり、例示的な実施形態に限定するようには意図されない。本願明細書において使用されるように、「ある(a, an)」および「その(the)」といった単数形は、文脈が別の態様を明白に示していなければ、複数形も含むように意図される。「備える(comprises, comprising)」および/または「含む(includes, including)」という用語は、本願明細書において使用される場合、言及された特徴、整数、ステップ、動作、要素および/またはコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネントおよび/またはそのグループの存在または追加を排除しないということがさらに理解されるであろう。
【0101】
さらに、いくつかの代替的な実現例では、言及された機能/動作が、図に示される順番とは異なって行われ得る。例えば、連続して示される2つの図は実際には、関連する機能/動作に依存して、同時に実行されてもよく、または、時には逆の順序で実行されてもよい。
【0102】
別の態様で規定されていなければ、本願明細書において使用されるすべての用語(技術用語および科学用語を含む)は、例示的な実施形態が属する技術の当業者によって一般に理解されるのと同じ意味を有する。さらに、例えば、一般に用いられている辞書において規定されている用語のような用語は、関連技術の文脈にあるそれらの意味と一致する意味を有すると解釈されるべきであり、理想化または過度に形式的な意味で、本願明細書においてそのように明らかに規定されていなければ、解釈されないということが理解されるであろう。
【0103】
ソフトウェアまたはアルゴリズム、および、コンピュータメモリ内でのデータビットに対する動作の記号的な表現に関して、上記の例示的な実施形態および対応する詳細な説明の部分が提示される。これらの記載および表現は、当業者が、他の当業者に自身の成果の実体を有効に伝えるものである。ここで使用される場合および一般的に使用される場合のアルゴリズムという用語は、所望の結果に至るステップの首尾一貫したシーケンスであると考えられる。ステップは、物理量の物理的な操作を必要とするものである。必ずではなく通常は、これらの量は、格納、転送、組み合わせ、比較、および別の態様で操作されることが可能である光学信号、電気信号、または磁気信号の形態を取る。これらの信号をビット、値、要素、記号、文字、項、または数字などと称することは、主に一般的な使用の理由により、時に簡便であると理解されている。
【0104】
上記の例示的な実施形態において、プログラムモジュールまたは機能的処理として実現され得る(例えばフローチャートの形態での)行為および動作の記号的表現への参照は、特定のタスクを実行または特定の抽象データタイプを実現するとともに既存の構造要素において既存のハードウェアを使用して記述および/または実現され得るルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。そのような既存のハードウェアは、1つ以上の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路、または、フィールドプログラマブルゲートアレイ(FPGA)コンピュータなどを含み得る。
【0105】
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連付けられるべきであり、単に、これらの量に適用された簡便なラベルであるということが念頭に置かれるべきである。特に別記しない限り、あるいは、議論から明白なように、表示の処理、コンピューティング、計算、または決定といった用語は、コンピュータシステムのレジスタおよびメモリ内で物理的な電子量として表わされるデータを操作し、コンピュータシステムメモリ、レジスタ、または、他のそのような情報記憶デバイス、送信デバイスもしくは表示デバイス内の物理量として同様に表わされる他のデータへ当該データを変換するコンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよび処理を意味する。
【0106】
また、例示的な実施形態のソフトウェアによって実現される局面は典型的に、何らかの形態の一時的でないプログラム記憶媒体上でエンコードされるか、または、何らかのタイプの伝送媒体上で実現される。プログラム記憶媒体は、磁気的(例えばフロッピー(登録商標)ディスクまたはハードドライブ)であるか、または、光学的(例えば読み取り専用コンパクトディスクすなわちCDROM)であり得、読み取り専用またはランダムアクセスであり得る。同様に、伝送媒体は、当該技術について公知であるツイストペア線、同軸ケーブル、光ファイバ、または、何らかの他の好適な伝送媒体であり得る。例示的な実施形態は、所与の実現例のこれらの局面によって限定されない。
【0107】
最後に、添付の請求の範囲は、本願明細書において記載された特徴の特定の組合せを記載しているが、本開示の範囲は、請求される特定の組合せに限定されず、その代わりに、その特定の組合せが今回、添付の請求の範囲において具体的に列挙されているかどうかに関係なく本願明細書において開示される特徴または実施形態の任意の組合せを包含するよう拡張される。
図1
図2A
図2B
図3A
図3B
図4
図5
図6