(57)【要約】【課題】  面検出の性能を向上させることである。【解決手段】  主題の開示は、画素深度と、行高さと、２つの定数との間の関係に基づいて、シーン画像の深度データを使用してシーン中の面を検出することに関する。深度画像のサンプルを処理して、定数の値を面形成にフィットさせ、その結果、どのサンプルが面を示しているかを決定する。深度画像中の画素を処理して、画素の深度、位置、および関連するフィットされた値に基づいて、各画素の面との関係、例えば、面の下方、面上、または面の上方を決定することを用いて、基準面は、面を示すサンプルから決定することができる。【選択図】  図６
2016529584.tif 000002
【特許請求の範囲】
【請求項１】
面を決定するために画像の深度データを処理することを含み、前記深度データが、画素の指標づけされた行および列と、画素ごとの深度値とを含む、方法であって、
画素を含む複数のストリップを使用すること、
ストリップごとに、前記ストリップに対応する前記深度データ中の深度値および画素位置に基づいて、そのストリップの画素がどの程度面形成にフィットしているかを示す値を見いだすこと、
前記値が面を示す誤差閾値を満たすかどうかに基づいて、面を示す少なくともいくつかのストリップに関する前記値を維持すること、および、
前記維持された値の組を前記深度データ中の画素の組に関連づけること
を含む、方法。
【請求項２】
前記画素の組が画素の列に対応し、前記維持された値の前記組を前記画素の組に関連づけることが、前記値の列ごとの組を画素の列に関連づけることを含む、請求項１に記載の方法。
【請求項３】
前記深度データに深度値、列識別子、および行識別子を有する所与の画素について、ａ）前記深度値、前記画素の列に関連する前記値、および前記行識別子を使用して、その画素が、ｉ）前記面の下方に、もしくは前記面の上方に、またはｉｉ）前記面上に、前記面の下方に、もしくは前記面の上方にあるかどうかを評価すること、またはｂ）カメラ回転の量を決定するために前記列にわたる前記値のうちの１つの変化を使用すること、またはｃ）ａ）およびｂ）の両方をさらに含む、請求項２に記載の方法。
【請求項４】
前記値の組がフレームに対して決定され、後続のフレームで定数値を再使用することをさらに含む、請求項１に記載の方法。
【請求項５】
ストリップごとに前記値を見いだすことが、前記値のうちの少なくとも１つを反復近似によって決定すること、または二分探索法により前記定数のうちの１つを決定することによって前記値のうちの少なくとも１つを決定することを含む、請求項１に記載の方法。
【請求項６】
面を決定するために画像の前記深度データを処理することが、床を決定することまたは実質的に垂直な面を決定することを含む、請求項１に記載の方法。
【請求項７】
前記ストリップを使用することが、領域を前記複数のストリップでサンプリングすることを含む、請求項１に記載の方法。
【請求項８】
シーンに関する面データを生成するように構成された面抽出論理部を含むシステムであって、前記面抽出論理部が、画素を含む深度データのフレームを入力し、ただし各画素が、深度値、列指標、および行指標を有し、前記画素との関連づけのための対の値を計算するために前記フレームデータを処理するように構成され、画素ごとに、前記画素、前記画素の前記深度値、および前記画素の前記行または列指標に関する１対の値が、その画素の基準面との関係を示す、システム。
【請求項９】
実行可能命令を有する１つまたは複数の機械可読記憶媒体または論理部であって、実行されると、
ストリップごとに、前記ストリップの画素の行高さおよび深度データに基づいて面計算式にフィットするフィットされた値を見いだすことを含む、画素深度値のストリップを処理すること、
平坦なストリップと平坦でないストリップを区別する閾値評価に基づいて、面に対応しない画素を有するストリップの前記フィットされた値を除去すること、
除去されなかったストリップから、前記除去されてなかったストリップのうちのどれが基準面上にあり得るかを決定すること、および、
前記基準面上にあり得る前記ストリップの前記フィットされた値を使用して、１組のフィットされた値を画素の各列に関連づけること
を含むことを実行する、１つまたは複数の機械可読記憶媒体または論理部。
【請求項１０】
少なくとも１つの画素について、前記画素の前記深度値、前記画素の行高さ、および前記画素の列に関連づけられた前記フィットされた値の組に基づいて、前記画素と前記基準面との間の関係を決定することを含むさらなる実行可能命令を有する、請求項９に記載の１つまたは複数の機械可読記憶媒体または論理部。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  深度センサを使用して平坦面を検出するのは、コンピュータビジョンでは通常のタスクである。平坦面検出には、ロボット工学（例えば、ナビゲーションの間床と障害物を区別すること）からゲーミング（例えば、プレーヤの部屋の実世界の壁に拡張現実感画像を描写すること）まで及ぶ多くの実用的な使用法がある。
【０００２】
[0002]  面検出は、より一般的な表面抽出ファミリーのアルゴリズムの特別な場合と見なされ、任意の連続表面（限定はしないが、平坦表面を含む）がシーンで検出される。一般的な表面抽出は、ＲＡＮＳＡＣ（ランダムサンプリングおよびコンセンサス）アルゴリズムの変形を使用して首尾よく実行されている。それらの手法では、３次元（３Ｄ）ポイントクラウドが構築され、３Ｄシーン空間はランダムにサンプリングされる。次に、サンプルは、同じ幾何形状構築物（例えば、壁または花瓶）への帰属について評価される。面検出も同様に実行されている。
【０００３】
[0003]  面検出にこれらの既存の方法を使用することの主な欠点のうちの１つは、不十分な性能である。３Ｄポイントクラウドはすべてのフレームから構築される必要があり、そうなって初めて、サンプリングは始まることができる。サンプリングされた後、ポイントは、３Ｄシーンの面への帰属についてさらに分析される必要がある。さらに、深度フレームの画素を面への帰属に分類するために、画素は、３Ｄポイントクラウドシーン中に配置され、次に、分析される必要がある。このプロセスは、計算およびメモリリソースの点から見ると高価である。
【０００４】
[0004]  実際に必要とされるものが比較的少数の簡単な面（例えば、床、棚など）を単に検出することである場合、３Ｄポイントクラウドを構築する必要性のため、かなりのアルゴリズムの複雑さが解決法に付け加えられることがある。単純な３Ｄ面フィッティング法を使用して、床、壁、または天井などの深度センサ視野中の簡単な面を検出し再構築するのは、カメラ様深度センサの性質を利用することができていない。
【発明の概要】
【課題を解決するための手段】
【０００５】
[0005]  この発明の概要は、発明を実施するための形態において以下でさらに説明される代表的な概念の選択を、簡単化した形態で紹介するために提供される。この発明の概要は、特許請求の範囲の主題の重要な特徴または本質的な特徴を識別することは意図されておらず、特許請求の範囲の主題の範囲を限定するために使用されることもまた意図されていない。
【０００６】
[0006]  簡単には、本明細書で説明する主題の様々な態様のうちの１つまたは複数は、面を決定するために画像の深度データを処理することに関する。１つまたは複数の態様は、画素を含む複数のストリップを使用して、ストリップごとに、ストリップに対応する深度データ中の画素深度値および画素位置に基づいて、そのストリップの画素がどの程度面形成（plane formulation）にフィットしているかを示す値を見いだすことを説明する。値が面を示す誤差閾値を満たすかどうかに基づいて、面を示す少なくともいくつかのストリップに関する値が維持される。維持された値の組は、深度データ中の画素の組に関連づけられる。
【０００７】
[0007]  １つまたは複数の態様は、シーンに関する面データを生成するように構成された面抽出論理部を含む。面抽出論理部は、画素を含む深度データのフレームを入力し、ただし各画素が、深度値、列指標、および行指標を有し、画素との関連づけのための対の値を計算するためにフレームデータを処理する。画素ごとに、関連する対の計算値、深度値、および行または列指標は、その画素の基準面との関係を示す。
【０００８】
[0008]  １つまたは複数の態様は、ストリップごとに、ストリップの画素の行高さおよび深度データに基づいて面計算式にフィットするフィットされた値を見いだすことを含む、画素深度値のストリップを処理することに関する。平坦なストリップと平坦でないストリップを区別する閾値評価に基づいて、面に対応しない画素を有するストリップのフィットされた値が除去される。それらの除去されなかったストリップのうち、ストリップのどれが基準面上にあり得るかが決定される。基準面上にあり得るストリップのフィットされた値を使用して、１組のフィットされた値を画素の各列に関連づける。
【０００９】
[0009]  他の利点は、図面と併せて行われる以下の詳細な説明から明らかになる。
【００１０】
[0010]  本発明は、例として示されており、同様の参照番号が同様の要素を示す添付の図に限定されない。
【図面の簡単な説明】
【００１１】
【図１】[0011]１つまたは複数の例示の実施態様による２次元（２Ｄ）深度画像から面データを計算するために使用することができる例示の構成要素を示すブロック図である。
【図２】[0012]１つまたは複数の例示の実施態様による、面データを計算するために使用することができる、深度カメラの視野面、面までの距離、行高さ、およびカメラ高さの関係の一例を示す図である。
【図３】[0013]１つまたは複数の例示の実施態様による、捕捉された画像に対応する深度データのサンプリングストリップ（パッチ）をどのように使用して面を検出できるかを示す図である。
【図４】[0014]１つまたは複数の例示の実施態様による、行高さおよび距離が基準面(例えば、床)とどのように関連するかを示す図である。
【図５】[0015]１つまたは複数の例示の実施態様による、捕捉された画像に対応する深度データのサンプリングストリップ（パッチ）をどのように使用して面およびカメラ回転を検出できるかを示す図である。
【図６】[0016]１つまたは複数の例示の実施態様による、２Ｄ深度データを処理することによって基準面を決定するためにとり得る例示のステップを示す流れ図である。
【図７】[0017]本明細書で説明する様々な実施形態の１つまたは複数の態様が実装され得るゲーミングシステムの形態の例示の非限定のコンピューティングシステムまたはオペレーティング環境を示すブロック図である。
【発明を実施するための形態】
【００１２】
[0018]  本明細書で説明する技術の様々な態様は、一般に、３Ｄポイントクラウドを構築する必要がなく、それによって、伝統的な方法と比べてかなり大きい計算上の節約を得る面検出に関する。同時に、この技術は、シーンからの高品質面抽出を達成する。高性能面検出は、ここでは、平坦表面が視野中にあるとき、深度センサ（例えば、Microsoft CorporationのKinect（商標）技術を使用するなど）が生成する特定の深度画像の性質を利用することによって達成されている。
【００１３】
[0019]  一般に、この技術は、シーン上の対象物から視野の面（すなわち、センサに直角に入る中心光線に垂直な面）までの距離の２Ｄ画素表示を生成する深度センサによって見られたとき、平坦表面のパッチがどのように見える「はずである」かを記述する解析関数を適用することに基づく。
【００１４】
[0020]  本明細書で説明するように、そのような深度センサから見られたときの平坦表面のパッチは、次の形態にフィットしなければならない。
深度（Ｄｅｐｔｈ）＝Ｂ／（Ｒｏｗｌｎｄｅｘ  −  Ａ）
（またはＤ＝Ｂ／（Ｈ−Ａ）、ここで、Ｈは、例えば６４０×４８０深度画像の画素行の数値指標であり、指標は１から４８０まで動くことができる。）深度、すなわちＤは、画素行（Ｈ）で測定された感知障害物までの距離であり、ＡおよびＢは、観察された障害物を通り抜ける仮想面を記述する定数である。定数Ａは、「水平線指標」としても知られている、センサが無限大を見ている最初の画素行指標として解釈することができる。Ｂは、「面からの距離」として解釈することができる。ＡおよびＢを解釈する別の方法は、Ａはセンサから見られたときの面の傾斜を定義しており、Ｂは、センサが見ている表面からセンサがどれくらい高いかを定義しており、床の場合、Ｂは床の上方のカメラ高さに対応することを述べているということである。
【００１５】
[0021]  深度感知されたフレームの小さいパッチからＡおよびＢ定数を見いだし、それにより、ポイントクラウド計算と比較して低い計算オーバヘッドで深度フレーム画素の残りを「面上に」、「面の下に」、または「面の上方に」あるとして分類することを可能にするアルゴリズムが、本明細書で説明される。上述の解析的表現は、Ａおよび／またはＢ定数を操作することによって、既に検出されている面（例えば、床）に関して、新しい面（例えば、崖（cliff）または天井）を定義することができるという追加の利益を与える。例えば、ＡおよびＢ定数が、単にある一定の高さまたはより高い障害物を分類するために、移動ロボットから見られるように床に対して計算される場合、Ｂおよび／またはＡ定数の値は、所望の分類確度および精度を達成する量だけ変えることができる。
【００１６】
[0022]  したがって、本明細書で説明する技術は、深度センサ中心の座標系で面を検出する。追加の面は、既に検出された表面のＡおよび／またはＢを修正することに基づくことができる。さらに、この技術は、Ａおよび／またはＢ定数を、幅および／または高さに関して変更することによって、傾斜してかつ回転した面の検出を可能にする。
【００１７】
[0023]  本明細書の例のいずれも非限定であることを理解されたい。したがって、本発明は、本明細書で説明するいかなる特定の実施形態、態様、概念、構造、機能、または例にも限定されない。むしろ、本明細書で説明する実施形態、態様、概念、構造、機能、または例のいずれも非限定であり、本発明は、全体として面検出、深度感知、および画像処理における利益および利点をもたらす様々な方法で使用することができる。
【００１８】
[0024]  図１は、一般的な概念的ブロック図を例示しており、シーン１０２は、深度カメラ１０４によって深度データ１０６中の１つまたは複数の連続フレームで捕捉される。カメラ１０４は、赤外線および／または可視光（例えば、ＲＧＢ）センサとすることができる単一のセンサまたは多数の（例えば、ステレオ）センサを含むことができる。深度データ１０６は飛行時間センシングおよび／またはステレオ画像マッチング技法によって得ることができる。深度データの捕捉は、投影光パターンがシーン１０２上に投影されるアクティブセンシングによって促進され得る。
【００１９】
[0025]  深度データ１０６は、画素（行と列の対によって指標づけされた）ごとの深度値をもつ、画素のアレイなどの画像深度マップの形態とすることができる。深度データ１０６は、同じデータ構造のＲＧＢデータが伴っていてもよいし伴っていなくてもよいが、しかしながら、ＲＧＢデータが存在する場合、深度データ１０６は画素相関を介してＲＧＢデータに関連づけられる。
【００２０】
[0026]  本明細書で説明するように、面抽出論理部１０８は、深度データ１０６を面データ１１０へと処理する。一般に、面データ１１０は、フレームごとに発生され、画像から抽出された少なくとも１つの基準面、例えば床などを示す。深度画像／マップの他の深さおよび／または他の面は、この基準面を基準とすることができる。
【００２１】
[0027]  面データ１１０は、アプリケーションプログラム１１２に入力することができる（オペレーティングシステムコンポーネント、サービス、ハードコード化論理などのような他のソフトウェアが同様に面データ１１０にアクセスすることができるが）。例えば、アプリケーションプログラム１１２は、深度データ１０６の所与の画素について、その画素が、基準面上に、基準面の上方に（例えば、障害物を示す）、または基準面の下方に（例えば、崖を示す）あるかどうかを決定することができる。
【００２２】
[0028]  本明細書の説明の目的で、特に記述しない限り、基準面は床として例示されることになる。容易に理解できるように、壁、天井、プラットフォームなどのような別の基準面を検出し、計算することができる。
【００２３】
[0029]  上述で記載され、図２に一般的に示されるように、Ｄは深度を表し、ＨはＲｏｗｌｎｄｅｘを表し、水平に位置づけられた深度センサの視野面から床までの行指標ごとの距離は、本明細書では次の計算式を使用して記述される。
深度＝Ｂ／（Ｒｏｗｌｎｄｅｘ−Ａ）
【００２４】
[0030]  それが面である場合、感知された深度は、カメラを基準とした床の勾配を考慮して、面の上方のカメラの高さ（Ｂ）と、行指標（Ｈ）との関数であり、ここで、Ａ定数は、床がどのように傾斜しているかを定義し、Ｂ定数は、床がＺ方向にどのくらいシフトされているかを定義する（センサは地面からある高さ離して装着されていると仮定して）。深度データにおいて、Ｄ（したがって、行指標Ｈ）は、カメラセンサの距離ではなくカメラの画像面から計算されることに留意されたい。
【００２５】
[0031]  一般に、ＡおよびＢは分かっていない。１つの実施態様では、動的床抽出法により、深度フレームの幅（画素列）にわたる小さいパッチ（ストリップと呼ばれる）が分析され、ＡおよびＢを変更して、上述の計算式をそれらのストリップにフィットさせようと試みられる。パッチの概念が、図３に一般的に示されており、ここで、２次元画像３３０が示され、ストリップは、深度データの様々な２Ｄサンプルを含み、画像３３０の底部の近くおよびそれをわたって破線のボックスとして示され、ストリップは、所与の実施態様ではオーバーラップしてもよいし、オーバーラップしなくてもよい。実際は、深度画像データは、画像３３０におけるような部屋の中の目に見える対象物ではなく、むしろ画素ごとの数値の深度値であることに留意されたい。したがって、ストリップは、ＲＧＢデータでなくそれぞれの画素の深度値で満たされていることを理解されたい。さらに、例えば、移動ロボットからの床検出では、ストリップが図３におけるようにフレームの底部に配置されるが、しかしながら、テーブルの上面の抽出では、ストリップは、ランダムにフレーム全体にわたって散らばっていることに留意されたい。さらに、「画像」３３０に関する図示のストリップの形状、数、分布、サイズなどは、単に目に見える例のためのものであり、いかなる実際の値も示唆するものではないことに留意されたい。しかしながら、一般に、面検出は、ストリップを画像の幅をわたって拡大することから利益を得るが、各ストリップの画素の数は、サンプルが面の一部であるかどうかを検出しようと試みるのに十分である必要がある。容易に理解できるように、採取されるサンプルが多いほど多くの情報を利用することができるが、しかしながら、採取されるサンプルと、サンプルを処理するために必要とされる計算の量との間にトレードオフがある。
【００２６】
[0032]  一般に、ストリップは、任意の幅および高さを有することができる。ストリップの幅および高さを増加させると、入力深度データのノイズを平滑化する効果がある。実際には、比較的少数の大きいストリップは、床検出に適しており、比較的多くのより小さいストリップは、雑然としたシーンでテーブルの上面を検出するのにより適切である。例えば、１０×４８の１６個のストリップは、床検出に使用することができ、一方、１００個の２×２４ストリップはテーブルの上面の検出に使用することができる。
【００２７】
[0033]  例として、ロボット障害物回避および水平深度プロファイル構築の情況での床抽出を考えよう。このシナリオでは、抽出プロセスは、フレームをわたるストリップごとにＡおよびＢ係数を学習しようと試み、ＡおよびＢ値を用いて、予測される床よりわずかに高いカットオフ面を計算する。その面が分かると、次に、プロセスは、例えば、面データ１１０において、予測される床より下の画素を「床」として、およびそれより上のあらゆるものを障害物としてマークすることができる。ある閾値を超える「床」などより下のあらゆるものは、代替として、崖と見なすことができることに留意されたい。
【００２８】
[0034]  所与のストリップについて最もよくフィットするＡおよびＢ定数値を計算するために、プロセスは、以下の計算式によって定義された、最小二乗近似を適用することができる。
【００２９】
【数１】
2016529584.tif 000003
【００３０】
[0035]  プロセスは、ＡおよびＢで微分する必要があり、以下を求める。
【００３１】
【数２】
2016529584.tif 000004
【００３２】
[0036]  ＡおよびＢで微分すると、以下が与えられる。
【００３３】
【数３】
2016529584.tif 000005
【００３４】
[0037]  定数Ａは、いくつかの反復近似法で見いだすことができ、例えば、Ｎｅｗｔｏｎ−Ｒａｐｈｓｏｎ法は、以下を提示している。
【００３５】
【数４】
2016529584.tif 000006
【００３６】
[0038]  これは、複雑なアルゴリズムを介して解決することができる。代替として、プロセスは、プロセスが所望の精度に達するまで連続的なより小さいステップで二乗誤差を計算し、各々の新しいＡを選ぶことによるＡのより簡単な（多分、それほど効率的ではないが）二分探索法を使用することができる。Ａを探索する精度の制御は、アルゴリズムのこの学習フェーズの実行を微調整するための単純明快な方法である。
【００３７】
[0039]  実行時に、各深度フレームを用いて、ＡおよびＢはすべてのストリップについて学習することができる。ＡおよびＢを計算するのと一緒に、そのストリップにとってあり得る最良のＡおよびＢにストリップをフィットさせた二乗誤差結果を含む「フィットの良さ（goodness of fit）」の尺度が得られる。ストリップがこの例で床を見ていない場合、誤差は大きく、したがって、大きい誤差を示すストリップは廃棄される。しかしながら、良いストリップは保持される。「良さ」の尺度は、アルゴリズムへの入力とすることができ、発見的方法に基づくことができ、および／または任意の環境での動作を可能にするように調節することができ、例えば、カーペット、硬材、アスファルト、砂利、芝生などは、良さの閾値が適切である場合、面として検出され得る異なる表面である。
【００３８】
[0040]  シーンにはいくつかの平坦表面があり得るので、フィットされたＡおよびＢに基づいてそのような表面を区別するタスクがある。これは、同じ面にフィットしているＡおよびＢ定数が非常に近いということを考えれば、単純明快である。プロセスは、例えば分散による標準統計的手法を使用して、他の面を除去することができる。プロセスは、さらに、探索を狭めるのに役立つようにいくつかの発見的方法を利用することができる。例えば、面フィッティングのタスクが、所与の高さに固定深度センサを有するロボットによる床の検出である場合、プロセスは、Ｂ定数に上限および下限を容易に設定することができる。
【００３９】
[0041]  深度フレーム幅をわたるストリップが分析された後、プロセスは、深度フレームのすべての幅画素（列）について１対のＡおよびＢ定数を生成する（例えば、線形補間を介して）。カメラのパン／傾斜／回転次第で、フレーム幅にわたって事実上一定のＡおよびＢであることがあり、またはＡおよびＢ値がフレーム幅にわたって変化することがある。いずれにしても、画素のすべての列に対して、後で画素を分類するときに使用できる１対のＡおよびＢ定数がある。
【００４０】
[0042]  ＡおよびＢ対は、一般に、フレームごとに再計算されるが、シーンが非常に雑然となっているのでプロセスが十分な数のストリップを面にフィットさせることができない場合、以前のフレームからのＡおよびＢ定数が現在のフレームのために再使用され得る。これは、シーンが非常に視界を遮られているので床を十分に見ることができない（および／またはカメラが移動した、例えば、フレームを越えて過度に回転／傾斜した）のでＡおよびＢを計算できないときを除き、少数のフレームに有効である。
【００４１】
[0043]  図４は、中央の実線が、カメラの前に本当の床面があるとき、深度センサからの行ごとの深度読取りがどのように現われるかを示すグラフ４４０を示す（Ｘ軸は、センサからの距離を示し、Ｙ軸は画素行を示す）。破線（障害物および崖）は、Ａ定数を変更することによって得られる。ラインが数学的に定義された後、グラフからのＢおよびＡ定数値（またはルックアップ表などで見いだされる適切なＡおよびＢ値）を用いてＢ／（Ｘ−Ａ）を計算して、列Ｘについて画素の面類似性を分類するのは単純明快である。Ａを変更すると、カメラを上下に傾斜させる効果があり、それは、動的に床を学習し抽出するために実行時に使用される性質であることに留意されたい。
【００４２】
[0044]  図５は、図４の画像４４０に関連する若干のカメラ回転（およびわずかな傾斜）を伴った画像表示５５０を示す。見て分かるように、床の勾配が変化し、したがって、Ａ定数の値が画像の列にわたって変わる。Ａ定数の値の差を使用して、例えば、回転の量を決定することができる。
【００４３】
[0045]  プロセスは、フレームの小さいサンプリング領域のみを使用して床を見いだすことができ、プロセスは、深度フレーム幅全体のＡおよびＢ定数を学習するのに多くの計算コストを必要としない。しかしながら、画素を床として／床でないとして分類するために、プロセスは、２つの整数数値計算（integer math calculation）および表索引を計算して各画素を検査しなければならない。これは、比較的高価な変換をもたらすが、適度に速い。
【００４４】
[0046]  床の決定に加えて、同じ抽出プロセスを使用して、崖を見いだすことができ、それは、追加の計算を必要とせず、Ａおよび／またはＢへの調節のみを必要とする。天井は、同様に、追加の計算を必要とせず、単にＢに対する増加を必要とする。壁などの垂直面は、行の代わりに列に適用されることを除いて同じアルゴリズムを使用して、検出することができる。
【００４５】
[0047]  例えば、床と平行な、または床に対して任意に傾斜した／シフトした空間の追加のスライスを処理することもできる。これを使用して、追加の学習をする必要なしに、カメラの前の３Ｄ空間を事実上スライスすることができる。
【００４６】
[0048]  その上、表面品質は、画素のストリップをフィットさせる間に得られたデータから決定できるので、追加コストなしに既に入手可能である。例えば、誤差が小さいほど、表面は平滑である。これは、ノイズモデルの違いのために、例えばセンサにわたって移すことができないことがある（表面欠陥が非常に大きくて、表面欠陥がセンサのノイズよりも著しく際立っていない限り）ことに留意されたい。
【００４７】
[0049]  図６は、抽出プロセスのいくつかの例示のステップを要約している流れ図であり、「良さ」の閾値、例えば、ストリップが十分に平坦であって面の一部であると見なされるかどうかを決定するために使用される値が受け取られるステップ６０２で始まる。いくつかの場合には、初期設定値を可変パラメータの代わりに使用することができる。
【００４８】
[0050]  ステップ６０４は、次の深度フレームがカメラから利用可能になったとき、深度フレームを受け取ることを示す。ステップ６０６は、例えば、擬似ランダムに深度画像の幅をわたってサンプリングストリップを発生させる。
【００４９】
[0051]  次に、各ストリップは、本明細書で説明する面計算式にストリップデータをフィットさせる最良のＡおよびＢ値を見いだすために選択され（ステップ６０８）、処理される。これらのステップのうちのいくつかは、可能な範囲で並列に、多分、ＧＰＵ上で／ＧＰＵメモリ内で実行することができることに留意されたい。
【００５０】
[0052]  ステップ６１０は、選択されたストリップに対するフィッティングプロセスを示す。ステップ６１２は、ストリップ画素が面を示しているかどうかを決定するために良さの閾値と比較して誤差を評価し（表面品質を明らかにするためにユーザによって変更され得る閾値が与えられたとして）、それによって、ストリップデータは保持される（ステップ６１４）。さもなければ、このストリップのデータは廃棄される（ステップ６１６）。ステップ６１８は、ストリップごとに完了するまで、フィッティングプロセスを繰り返す。
【００５１】
[0053]  ステップ６２０は、どのストリップが基準面を示しているかを決定することを示す。より詳細には、上述のように、例えば、床を検出する場合、多くのストリップが床上にない面を示すことがあり、これらは、これらのフィットしたＡおよびＢ定数値に基づいて区別することができ、これらのフィットしたＡおよびＢ定数値は、床を捕捉したストリップに対応するＡおよびＢ定数値の（可能性が高い）最も一般的な組と異なる（例えば統計的に）。
【００５２】
[0054]  残りのストリップの各々のＡおよびＢ値を使用して、ステップ６２２、６２４、および６２６は、例えば補間などを介して、画素の列ごとのＡおよびＢ値を決定する。垂直面が基準面である場合、ステップ６２２、６２４、および６２６は、列の代わりに画素行を扱うように変更されることに留意されたい。
【００５３】
[0055]  ステップ６２８は、面データを出力することを示す。例えば、データがどのように使用されるかに応じて、面データは、列（または垂直基準面では行）ごとのＡ、Ｂ対の組の形態とすることができる。代替として、深度マップは、各画素の深度および画素行を、その画素に関連するＡおよびＢ値とともに使用することによって、各画素が基準面を基準としてどこにあるかを示す別のデータ構造へと処理することができる。例えば、基準面が床である場合、画素は、その画素の列および画素行および計算された深度のＡおよびＢ値に基づいて、近似的に、床上に、床の上方に、または床の下方にあり、フレームごとのこの情報を示すマップが発生され得る。
【００５４】
[0056]  上述のように、基準面のＡ、Ｂ値を決定するためにサンプリングするには、画像があまりに雑然とした表面のものであることがあり得る。図６には示されていないが、これは、例えば、結果に対して十分な信頼を有するために、ステップ６２０の後、ほとんどのストリップを残さないようにすることによって決定することができる。上記のように、これは、以前のフレームからのＡ、Ｂ値を使用することによって対処することができる。別の代替は、再サンプリングされたストリップを再度フィットさせ分析するのに十分な時間が残っているならば、多分、画像の異なる区域（例えば、雑然さは１つの包括的領域にあることがあるので、わずかに高い）で再サンプリングすることである。
【００５５】
[0057]  見て分かるように、本明細書で説明する技術は、いかなる３Ｄ（例えば、ポイントクラウド）処理も必要とすることなく、深度画像から面データを得る効率的な方法を提供する。この技術は、床およびその上の障害物（および／またはそれに関連する崖）を決定することなどの様々な用途で使用することができる。
例示の動作環境
【００５６】
[0058]  上述の実施態様およびその代替は、ゲーミングシステム、パーソナルコンピュータ、タブレット、ＤＶＲ、セットトップボックス、スマートフォンなどを含む任意の好適なコンピューティングデバイスに実装できることが容易に理解されよう。そのようなデバイスの組合せは、多数のそのようなデバイスが一緒にリンクされる場合やはり利用可能である。説明のために、ゲーミング（メディアを含む）システムが、１つの例示的な動作環境として以下で説明される。
【００５７】
[0059]  図７は、例示のゲーミングおよびメディアシステム７００の機能ブロック図であり、機能構成要素をより詳細に示している。コンソール７０１は、中央処理装置（ＣＰＵ）７０２と、メモリコントローラ７０３とを有し、メモリコントローラ７０３は、フラッシュ読取り専用メモリ（ＲＯＭ）７０４、ランダムアクセスメモリ（ＲＡＭ）７０６、ハードディスクドライブ７０８、およびポータブルメディアドライブ７０９を含む様々なタイプのメモリへのプロセッサアクセスを容易にする。１つの実施態様では、ＣＰＵ７０２は、データを一時的に記憶するためのレベル１キャッシュ７１０およびレベル２キャッシュ７１２を含み、その結果、ハードドライブになされるメモリアクセスサイクルの数を減少させ、それによって、処理速度およびスループットを改善する。
【００５８】
[0060]  ＣＰＵ７０２、メモリコントローラ７０３、および様々なメモリデバイスは、１つまたは複数のバス（図示せず）を介して相互接続される。この実施態様で使用されるバスの詳細は、本明細書で論じられている対象の主題を理解するのにさほど関連しない。しかしながら、そのようなバスは、様々なバスアーキテクチャのうちのいずれかを使用する、直列および並列バス、メモリバス、周辺バス、ならびにプロセッサまたはローカルバスのうちの１つまたは複数含むことができることを理解されよう。例として、そのようなアーキテクチャは、産業標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス標準組織（ＶＥＳＡ）ローカルバス、およびメザニーンバスとしても知られている周辺機器コンポーネント相互接続（ＰＣＩ）バスを含むことができる。
【００５９】
[0061]  １つの実施態様では、ＣＰＵ７０２、メモリコントローラ７０３、ＲＯＭ７０４、およびＲＡＭ７０６は、共通モジュール７１４上に集積される。この実施態様では、ＲＯＭ７０４は、周辺機器コンポーネント相互接続（ＰＣＩ）バスなどおよびＲＯＭバスなど（どちらも図示されていない）を介してメモリコントローラ７０３に接続されるフラッシュＲＯＭとして構成される。ＲＡＭ７０６は、別個のバス（図示せず）を介してメモリコントローラ７０３によって独立に制御される多数の二重データレート同期式ＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）モジュールとして構成することができる。ハードディスクドライブ７０８およびポータブルメディアドライブ７０９は、ＰＣＩバスおよびＡＴアタッチメント（ＡＴＡ）バス７１６を介してメモリコントローラ７０３に接続された状態で示されている。しかしながら、他の実施態様では、異なるタイプの専用データバス構造を、代替では適用することもできる。
【００６０】
[0062]  ３次元グラフィックス処理ユニット７２０およびビデオエンコーダ７２２は、高速および高解像度（例えば、高精細）グラフィックス処理のためのビデオ処理パイプラインを形成する。データは、グラフィックス処理ユニット７２０からビデオエンコーダ７２２にデジタルビデオバス（図示せず）を介して搬送される。オーディオ処理ユニット７２４およびオーディオコーデック（コーダ／デコーダ）７２６は、様々なデジタルオーディオフォーマットのマルチチャネルオーディオ処理のために、対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット７２４とオーディオコーデック７２６との間を通信リンク（図示せず）を介して搬送される。ビデオおよびオーディオ処理パイプラインは、テレビジョンまたは他のディスプレイ／スピーカへの送信用のＡ／Ｖ（オーディオ／ビデオ）ポート７２８にデータを出力する。図示の実施態様では、ビデオおよびオーディオ処理構成要素７２０、７２２、７２４、７２６、および７２８は、モジュール７１４に装着される。
【００６１】
[0063]  図７は、ＵＳＢホストコントローラ７３０と、有線および／または無線構成要素を含むことができるネットワークインタフェース（ＮＷ  Ｉ／Ｆ）７３２とを含むモジュール７１４を示している。ＵＳＢホストコントローラ７３０は、バス（例えばＰＣＩバス）を介してＣＰＵ７０２およびメモリコントローラ７０３と連通している状態で示されており、周辺機器コントローラ７３４のホストとしての役割を果たす。ネットワークインタフェース７３２は、ネットワーク（例えば、インターネット、ホームネットワークなど）へのアクセスを可能にし、イーサネットカードまたはインタフェースモジュール、モデム、ブルートゥースモジュール、ケーブルモデムなどを含む多種多様の様々な有線または無線インタフェース構成要素のいずれとすることができる。
【００６２】
[0064]  図７に示された例示の実施態様では、コンソール７０１は、４つのゲームコントローラ７４１（１）〜７４１（４）をサポートするためのコントローラサポートサブアセンブリ７４０を含む。コントローラサポートサブアセンブリ７４０は、例えば、メディアおよびゲームコントローラなどの外部制御デバイスを用いて有線および／または無線動作をサポートするのに必要とされる任意のハードウェアおよびソフトウェア構成要素を含む。フロントパネルＩ／Ｏサブアセンブリ７４２は、コンソール７０１の外面に露出している電源ボタン７４３、イジェクトボタン７４４、ならびに任意の他のボタンおよび任意のＬＥＤ（発光ダイオード）または他のインジケータの多数の機能をサポートする。サブアセンブリ７４０および７４２は、１つまたは複数のケーブルアセンブリ７４６などを介してモジュール７１４と連通している。他の実施態様では、コンソール７０１は、追加のコントローラサブアセンブリを含むことができる。図示の実施態様は、さらに、モジュール７１４と通信することができる信号（例えば、リモートコントロール７４９からの）を送信および受信するように構成された光Ｉ／Ｏインタフェース７４８を示している。
【００６３】
[0065]  メモリユニット（ＭＵ）７５０（１）および７５０（２）は、それぞれ、ＭＵポート「Ａ」７５２（１）および「Ｂ」７５２（２）に接続可能であるように示されている。各ＭＵ７５０は、ゲーム、ゲームパラメータ、および他のデータを記憶することができる追加の記憶装置を提供する。いくつかの実施態様では、他のデータは、デジタルゲームコンポーネント、実行可能なゲームアプリケーション、ゲームアプリケーションを拡張するための命令セット、およびメディアファイルのうちの１つまたは複数を含むことができる。各ＭＵ７５０は、コンソール７０１に挿入されると、メモリコントローラ７０３によってアクセスされ得る。
【００６４】
[0066]  システム電源モジュール７５４は、ゲーミングシステム７００の構成要素に電力を供給する。ファン７５６は、コンソール７０１内の回路を冷却する。
【００６５】
[0067]  機械命令を含むアプリケーション７６０は、一般に、ハードディスクドライブ７０８に記憶される。コンソール７０１の電源が入れられると、アプリケーション７６０の様々な部分が、ＣＰＵ７０２での実行のために、ＲＡＭ７０６、および／またはキャッシュ７１０および７１２にロードされる。一般に、アプリケーション７６０は、様々なディスプレイ機能を実行する、例えば、ディスプレイ（例えば、高精細モニタ）での提示のためにダイアログ画面を制御する、ユーザ入力に基づいてトランザクションを制御する、コンソール７０１と外部に接続されたデバイスとの間のデータ送信および受信を制御するなどのための１つまたは複数のプログラムモジュールを含むことができる。
【００６６】
[0068]  ゲーミングシステム７００は、高精細モニタ、テレビジョン、ビデオプロジェクタ、または他のディスプレイデバイスにシステムを接続することによってスタンドアロンシステムとして動作することができる。このスタンドアロンのモードでは、ゲーミングシステム７００により、一人または複数のプレーヤが、ゲームを行うか、または例えば映画を見るまたは音楽を聴くことによってデジタルメディアを楽しむことができるようになる。しかしながら、広帯域接続の統合がネットワークインタフェース７３２によって利用可能にされる状況では、ゲーミングシステム７００は、より大きいネットワークゲーミングコミュニティまたはシステムにおける参加構成要素としてさらに動作することができる。
結言
【００６７】
[0069]  本発明は様々な変更および代替構成の余地があるが、本発明のいくつかの例証の実施形態が図面で示され、上述で詳細に説明された。しかしながら、本発明を開示された特定の形態に限定する意図はなく、それどころか、意図は、本発明の趣旨および範囲内にあるすべての変更、代替構成、および均等物を包含することであることを理解されたい。
【図１】
2016529584.tif 000007
【図２】
2016529584.tif 000008
【図３】
2016529584.tif 000009
【図４】
2016529584.tif 000010
【図５】
2016529584.tif 000011
【図６】
2016529584.tif 000012
【図７】
2016529584.tif 000013
【手続補正書】
【提出日】平成27年1月8日(2015.1.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
面を決定するために画像の深度データを処理することを含み、前記深度データが、画素の指標づけされた行および列と、画素ごとの深度値とを含む、方法であって、
前記深度データの列にわたる画素を含む複数のパッチを使用すること、
パッチごとに、前記パッチに対応する前記深度データ中の深度値および画素位置に基づいて、そのパッチの画素がどの程度面形成にフィットしているかを示す値を見いだすこと、
前記値が面を示す誤差閾値を満たすかどうかに基づいて、面を示す少なくともいくつかのパッチに関する前記値を維持すること、および、
前記維持された値の組を前記深度データ中の画素の組に関連づけること
を含む、方法。
【請求項２】
前記画素の組が画素の列に対応し、前記維持された値の前記組を前記画素の組に関連づけることが、前記値の列ごとの組を画素の列に関連づけることを含む、請求項１に記載の方法。
【請求項３】
前記深度データに深度値、列識別子、および行識別子を有する所与の画素について、ａ）前記深度値、前記画素の列に関連する前記値、および前記行識別子を使用して、その画素が、ｉ）前記面の下方に、もしくは前記面の上方に、またはｉｉ）前記面上に、前記面の下方に、もしくは前記面の上方にあるかどうかを評価すること、またはｂ）カメラ回転の量を決定するために前記列にわたる前記値のうちの１つの変化を使用すること、またはｃ）ａ）およびｂ）の両方をさらに含む、請求項２に記載の方法。
【請求項４】
前記値の組がフレームに対して決定され、後続のフレームで前記値を再使用することをさらに含む、請求項１に記載の方法。
【請求項５】
パッチごとに前記値を見いだすことが、前記値のうちの少なくとも１つを反復近似によって決定すること、または二分探索法を用いて前記値のうちの少なくとも１つを決定することを含む、請求項１に記載の方法。
【請求項６】
面を決定するために画像の前記深度データを処理することが、床を決定することまたは実質的に垂直な面を決定することを含む、請求項１に記載の方法。
【請求項７】
前記パッチを使用することが、領域を前記複数のパッチでサンプリングすることを含む、請求項１に記載の方法。
【請求項８】
少なくとも１つの画素について、前記画素の前記深度値、前記画素の行高さ、および前記画素の列に関連づけられた前記維持された値の組に基づいて、前記画素と前記面との間の関係を決定することを含む、請求項１に記載の方法。
【請求項９】
請求項１から８のいずれか一項の方法を実行するように構成された面抽出論理部を含むシステム。
【請求項１０】
実行可能命令を有する１つまたは複数の機械可読記憶媒体または論理部であって、実行されると、請求項１から８のいずれか一項の方法を実行する、１つまたは複数の機械可読記憶媒体または論理部。
【国際調査報告】
2016529584.tif 000014
2016529584.tif 000015
2016529584.tif 000016