(57)【特許請求の範囲】
【請求項１】
構造化された光システムによって生成される深度マップにおける誤りを訂正するための方法であって、
複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するステップであって、前記複数の有効なコードワードの各々が有効なコードワードのコードブックに含まれ、前記コードブックが前記少なくとも1つの無効なコードワードを含まず、各コードワードが構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表し、各コードワードが深度マップにおける位置に対応する、ステップと、
前記無効なコードワードを検出するステップと、
メモリユニットから、前記コードブックに含まれるコードワード候補を取り出すステップであって、前記メモリユニットに、前記無効なコードワードから第1のハミング距離にあるコードワード候補および前記無効なコードワードから第2のハミング距離にあるコードワード候補が格納され、前記第1のハミング距離が前記少なくとも1つの無効なコードワードと前記コードブックの中の前記コードワードとの間の最小のハミング距離であり、前記第2のハミング距離が前記第1のハミング距離より長い、ステップと、
前記深度マップにおける前記無効なコードワードの位置に隣接する少なくとも1つの位置を含む、前記深度マップの複数の位置に対する深度推定値を決定するステップと、
深度を前記コードワード候補の各々と関連付けるステップと、
前記決定された深度推定値に最も近い関連する深度を有する前記コードワード候補を選択するステップと、
前記選択されたコードワード候補と関連付けられる前記深度を前記無効なコードワードの前記位置に割り当てるステップとを備える、方法。
【請求項２】
画素の前記少なくとも1つの列の中の各画素が受信された光のエネルギーを表し、画素の前記少なくとも1つの列の中の各画素nが二値の値を有する、請求項1に記載の方法。
【請求項３】
前記少なくとも1つの無効なコードワードを検出するステップが、前記無効なコードワードが前記コードブックに含まれないことの指示を前記メモリユニットから取り出すステップを備える、請求項1に記載の方法。
【請求項４】
各々の受信された複数のコードワードおよび前記少なくとも1つの無効なコードワードが前記コードブックに含まれるかどうかの指示を前記メモリユニットに格納するステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記少なくとも1つの無効なコードワードと前記コードワード候補の各々との間の前記第1のハミング距離が、異なる二値の値を有する画素の前記少なくとも1つの行および前記少なくとも1つの列の数である、請求項1に記載の方法。
【請求項６】
前記深度推定値を決定するステップが、前記深度マップの前記複数の位置のメジアン深度または平均深度を計算するステップを備える、請求項1に記載の方法。
【請求項７】
前記深度マップの前記複数の位置が、前記無効なコードワードの前記位置から閾値の位置の距離以下にある位置を含む、請求項1に記載の方法。
【請求項８】
前記閾値の距離が、前記深度マップの前記複数の位置の中の4個、8個、12個、20個、および24個の位置にそれぞれ対応する、1、√2、2、√5、2、または2√2である、請求項7に記載の方法。
【請求項９】
構造化された光システムによって生成される深度マップにおける誤りを訂正するための装置であって、
複数の有効なコードワードおよび少なくとも1つの無効なコードワードを記憶するための手段であって、前記複数の有効なコードワードの各々が有効なコードワードのコードブックに含まれ、前記コードブックが前記少なくとも1つの無効なコードワードを含まず、各コードワードが構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表し、各コードワードが深度マップにおける位置に対応する、手段と、
複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するための手段と、
前記無効なコードワードを検出するための手段と、
前記記憶するための手段から、前記コードブックに含まれるコードワード候補を取り出すための手段であって、前記記憶するための手段に、前記無効なコードワードから第1のハミング距離にあるコードワード候補のセットおよび前記無効なコードワードから第2のハミング距離にあるコードワード候補の第2のセットが格納され、前記第1のハミング距離が前記少なくとも1つの無効なコードワードと前記コードブックの中の前記コードワードとの間の最小のハミング距離であり、前記第2のハミング距離が前記第1のハミング距離より長い、手段と、
前記深度マップにおける前記無効なコードワードの位置に隣接する少なくとも1つの位置を含む、前記深度マップの複数の位置に対する深度推定値を決定するための手段と、
深度を前記コードワード候補の各々と関連付けるための手段と、
前記決定された深度推定値に最も近い関連する深度を有する前記コードワード候補を選択するための手段と、
前記選択されたコードワード候補と関連付けられる前記深度を前記無効なコードワードの前記位置に割り当てるための手段とを備える、装置。
【請求項１０】
前記手段がメモリユニットを備え、前記受信するための手段がプロセッサを有する受信機を備える、請求項9に記載の装置。
【請求項１１】
各画素が受信される光のエネルギーを表し、各画素が二値の値によって表される、請求項9に記載の装置。
【請求項１２】
前記検出するための手段が、前記無効なコードワードが前記コードブックに含まれないことの指示を前記記憶手段から取り出すことによって、前記無効なコードワードを検出する、請求項9に記載の装置。
【請求項１３】
各々の受信されたコードワードが前記コードブックに含まれるかどうかの指示を前記記憶するための手段に格納するための手段をさらに備える、請求項9に記載の装置。
【請求項１４】
前記決定するための手段が、前記深度マップの前記複数の位置のメジアン深度または平均深度を計算することによって、前記深度推定値を推定するように構成される、請求項9に記載の装置。
【請求項１５】
前記深度マップの前記複数の位置が、前記無効なコードワードの前記位置から閾値の位置の距離以下にある位置を含み、前記閾値の距離が、前記深度マップの前記複数の位置の中の4個、8個、12個、20個、および24個の位置にそれぞれ対応する、1、√2、2、√5、2、または2√2である、請求項9に記載の装置。
【請求項１６】
構造化された光システムによって生成される深度マップにおける誤りを訂正するための命令を記憶するコンピュータ可読記憶媒体であって、前記命令が、実行されると、請求項1から8のいずれか一項に記載の方法を実行する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
様々な特徴は、アクティブ深度検知に関し、より詳細には、構造化された光から導かれる深度情報を解釈するときのデータ誤りに起因する深度マップにおけるギャップを訂正するための効率的なメモリ使用技法に関する。
【背景技術】
【０００２】
構造化された光のアクティブ検知システムである撮像デバイスは、シーンの中の1つまたは複数の物体の撮像デバイスからの距離を示す深度マップを生成するために、空間コード(または「コードワード」)に対応するパターンを送信および受信するように構成される、送信機および受信機を含む。シーンの中の物体が送信機および受信機から遠いほど、出ていくコードワードと反射された入ってくるコードワードの伝播経路がより平行になるため、その物体から反射された受信されるコードワードは(送信されるコードワードと比較して)元の位置に近くなる。逆に、物体が送信機および受信機に近いほど、受信されるコードワードは送信されるコードワードにおける元の位置から遠くなる。したがって、受信されるコードワードと対応する送信されるコードワードの位置の差が、シーンの中の物体の深度を決定するために使用され得る。構造化された光のアクティブ検知システムは、これらの決定された深度を使用して、シーンの3次元表現であり得るシーンの深度マップを生成することができる。カメラ品質の向上およびコンピュータビジョンを含む多くの適用例が、シーンの深度マップを決定することから利益を得ることができる。
【０００３】
各コードワードは、強度値の行および列によって表され得る。たとえば、二値の空間コードは、二値パターンを表すために、明るい強度値および暗い強度値に対応する0および1を使用することがある。他の空間コードは、2つよりも多くの異なる強度値を使用することがある。受信されるコードワードの中のノイズはコードワードを識別する際に誤りを引き起こすことがあり、それは、「ノイズを有する」コードワードは送信された空間コードとして認識されないからである。たとえば、二値のコードでは、そのようなノイズにより、送信されるコードの中の「1」が「0」として受信されるようになることがあり、またはその逆が起こることがある。このことは、誤りの多いコードワードを使用する深度マップにおいて、ギャップ、または穴をもたらすことがある。認識されないコードを有する点においては深度が推定されず、生成されている深度マップに「穴」が残る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
穴を「埋める」従来の方法は、たとえば、穴の周りの深度を平均することによって、近隣の深度に基づいて穴における深度を推定することを含む。穴が物体の境界もしくはその近くにある場合、または深度に変化もしくは不連続性がある任意の点にある場合、そのような手法は良好な結果を与えないことがある。したがって、変化点または不連続点においても、深度マップに穴があるときに深度を生成するための方法およびシステムが必要である。
【課題を解決するための手段】
【０００５】
本開示の例示的な態様の概要が以下に続く。便宜的に、本開示の1つまたは複数の態様は、本明細書では単に「いくつかの態様」と呼ばれることがある。
【０００６】
本明細書において開示されている方法および装置またはデバイスは各々、いくつかの態様を有し、それらの態様のいずれの1つも、単独では望ましい属性を担わない。たとえば以下に続く特許請求の範囲によって表現されるような、本開示の範囲を限定することなく、より主要な特徴がここで簡単に論じられる。この議論を考慮した後で、特に「発明を実施するための形態」と題されるセクションを読んだ後で、説明されている特徴が、別様には識別することができないコードワードから予想されるコードワードを決定するための効率的な方法を含む利点をどのように提供するかが、理解されるであろう。
【０００７】
1つの革新は、構造化された光システムによって生成される深度マップにおける誤りを訂正するための方法である。様々な実施形態では、方法は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するステップを含み得る。複数の有効なコードワードの各々は有効なコードワードのコードブックに含まれる。コードブックは少なくとも1つの無効なコードワードを含まない。各コードワードは、構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表す。各コードワードは、深度マップにおける位置に対応する。方法はさらに、無効なコードワードを検出するステップを含み得る。方法はさらに、メモリユニットから、コードブックに含まれるコードワード候補のセットを取り出すステップを含み得る。各コードワード候補は、無効なコードワードから第1のハミング距離にある。第1のハミング距離は、無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。方法はさらに、無効なコードワードの位置に隣接する少なくとも1つの位置を含む、深度マップの複数の位置に対する深度推定値を決定するステップを含み得る。方法はさらに、深度をコードワード候補の各々と関連付けるステップを含み得る。方法はさらに、深度推定値に最も近い関連する深度を有するコードワード候補を選択するステップを含み得る。方法はさらに、選択されたコードワード候補と関連付けられる深度を無効なコードワードの位置に割り当てるステップを含み得る。
【０００８】
いくつかの実施形態では、各画素は受信される光のエネルギーを表す。いくつかの実施形態では、各画素は二値の値を有する。いくつかの実施形態では、無効なコードワードを検出するステップは、無効なコードワードがコードブックに含まれないことの指示をメモリユニットから取り出すステップを備える。いくつかの実施形態では、無効なコードワードとコードワード候補の各々との間の第1のハミング距離は、異なる二値の値を有する画素の少なくとも1つの行および少なくとも1つの列の数である。
【０００９】
いくつかの実施形態では、方法はさらに、各々の受信された有効なコードワードまたは無効なコードワードがコードブックに含まれるかどうかの指示をメモリユニットに格納する(populate)ステップを含み得る。いくつかの実施形態では、方法はさらに、無効なコードワードから第1のハミング距離にあるコードワード候補のセットをメモリユニットに格納するステップを含むことがあり、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。いくつかの実施形態では、方法はさらに、コードワード候補の第2のセットをメモリユニットに格納するステップを含むことがあり、コードワード候補の第2のセットはコードブックに含まれるコードワードに対応し、コードワード候補の対応する第2のセットの各々は無効なコードワードから第2のハミング距離にあり、第2のハミング距離は第1のハミング距離より長い。
【００１０】
いくつかの実施形態では、深度推定値を決定するステップは、深度マップの複数の位置のメジアン深度または平均深度を計算するステップを備える。いくつかの実施形態では、深度マップの複数の位置は、無効なコードワードの位置から閾値の位置の距離以下にある位置を含む。いくつかの実施形態では、閾値の距離は、深度マップの複数の位置の中の4個、8個、12個、20個、および24個の位置にそれぞれ対応する、1、
【数１】
0006776333.tif 000002
、2、
【数２】
0006776333.tif 000003
、2、または2√2である。
【００１１】
別の革新は、構造化された光システムによって生成される深度マップにおける誤りを訂正するための装置である。装置は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを記憶するように構成されるメモリユニットを含み得る。複数の有効なコードワードの各々は有効なコードワードのコードブックに含まれる。コードブックは少なくとも1つの無効なコードワードを含まない。各コードワードは、構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表す。各コードワードは、深度マップにおける位置に対応する。メモリユニットはさらに、コードブックに含まれるコードワード候補のセットを記憶するように構成され得るし、各コードワード候補は無効なコードワードから第1のハミング距離にあり、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。装置は、メモリユニットと通信しているプロセッサを含み得る。プロセッサは、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するように構成され得る。プロセッサは無効なコードワードを検出するように構成され得る。プロセッサは、コードワード候補のセットを取り出すように構成され得る。プロセッサは、深度マップの複数の位置に対する深度推定値を決定するように構成され得るし、深度マップの複数の位置は無効なコードワードの位置に隣接する少なくとも1つの位置を含む。プロセッサは、深度をコードワード候補の各々と関連付けるように構成され得る。プロセッサは、深度推定値に最も近い関連する深度を有するコードワード候補を選択するように構成され得る。プロセッサは、選択されたコードワード候補と関連付けられる深度を無効なコードワードの位置に割り当てるように構成され得る。
【００１２】
いくつかの実施形態では、プロセッサはさらに、各々の受信された有効なコードワードまたは無効なコードワードがコードブックに含まれるかどうかの指示をメモリユニットに格納するように構成され得る。いくつかの実施形態では、プロセッサはさらに、無効なコードワードから第1のハミング距離にあるコードワード候補のセットをメモリユニットに格納するように構成され得るし、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。
【００１３】
いくつかの実施形態では、プロセッサはさらに、コードワード候補の第2のセットをメモリユニットに格納するように構成され得るし、コードワード候補の第2のセットはコードブックに含まれるコードワードに対応し、コードワード候補の対応する第2のセットの各々は無効なコードワードから第2のハミング距離にあり、第2のハミング距離は第1のハミング距離より長い。
【００１４】
いくつかの実施形態では、プロセッサはさらに、深度マップの複数の位置のメジアン深度または平均深度を計算することによって、深度推定値を推定するように構成され得る。
【００１５】
別の革新は、構造化された光システムによって生成される深度マップにおける誤りを訂正するための装置である。装置は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを記憶するための手段を含み得る。複数の有効なコードワードの各々は有効なコードワードのコードブックに含まれる。コードブックは少なくとも1つの無効なコードワードを含まない。各コードワードは、構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表す。各コードワードは、深度マップにおける位置に対応する。装置は、コードブックに含まれるコードワード候補のセットを記憶するための手段を含むことがあり、各コードワード候補は無効なコードワードから第1のハミング距離にあり、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。装置は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するための手段を含み得る。装置は、無効なコードワードを検出するための手段を含み得る。装置は、コードワード候補のセットを取り出すための手段を含み得る。装置は、深度マップの複数の位置に対する深度推定値を決定するための手段を含むことがあり、深度マップの複数の位置は無効なコードワードの位置に隣接する少なくとも1つの位置を含む。
【００１６】
装置は、深度をコードワード候補の各々と関連付けるための手段を含み得る。装置は、深度推定値に最も近い関連する深度を有するコードワード候補を選択するための手段を含み得る。装置は、選択されたコードワード候補と関連付けられる深度を無効なコードワードの位置に割り当てるための手段を含み得る。
【００１７】
いくつかの実施形態では、有効なコードワードおよび無効なコードワードの記憶手段はメモリユニットを備える。いくつかの実施形態では、コードワード候補記憶手段はメモリユニットを備える。いくつかの実施形態では、受信手段は処理回路を備える。いくつかの実施形態では、検出手段は処理回路を備える。いくつかの実施形態では、取出し手段は処理回路を備える。いくつかの実施形態では、決定手段は処理回路を備える。いくつかの実施形態では、関連付け手段は処理回路を備える。いくつかの実施形態では、選択手段は処理回路を備える。いくつかの実施形態では、割当て手段は処理回路を備える。
【００１８】
いくつかの実施形態では、検出手段は、記憶手段から、無効なコードワードがコードブックに含まれていないことの指示を取り出すことによって、無効なコードワードを検出する。
【００１９】
いくつかの実施形態では、装置は、各々の受信された有効なコードワードまたは無効なコードワードがコードブックに含まれるかどうかの指示を記憶手段に格納するための手段を含み得る。いくつかの実施形態では、装置は、無効なコードワードから第1のハミング距離にあるコードワード候補のセットを記憶手段に格納するための手段を含むことがあり、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。いくつかの実施形態では、装置は、コードワード候補の第2のセットを記憶手段に格納するための手段を含むことがあり、コードワード候補の第2のセットはコードブックに含まれるコードワードに対応し、コードワード候補の対応する第2のセットの各々は無効なコードワードから第2のハミング距離にあり、第2のハミング距離は第1のハミング距離より長い。
【００２０】
いくつかの実施形態では、決定手段は、深度マップの複数の位置のメジアン深度または平均深度を計算することによって、深度推定値を推定するように構成される。
【００２１】
別の革新は、構造化された光システムによって生成される深度マップにおける誤りを訂正するための命令を記憶する非一時的コンピュータ可読媒体である。実行されると、その命令は動作を実行する。動作は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信するステップを含み得る。複数の有効なコードワードの各々は有効なコードワードのコードブックに含まれる。コードブックは少なくとも1つの無効なコードワードを含まない。各コードワードは、構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表す。各コードワードは、深度マップにおける位置に対応する。動作は、無効なコードワードを検出するステップを含み得る。動作は、メモリユニットから、コードブックに含まれるコードワード候補のセットを取り出すステップを含むことがあり、各コードワード候補は無効なコードワードから第1のハミング距離にあり、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。動作は、深度マップの複数の位置に対する深度推定値を決定するステップを含むことがあり、深度マップの複数の位置は無効なコードワードの位置に隣接する少なくとも1つの位置を含む。動作は、深度をコードワード候補の各々と関連付けるステップを含み得る。動作は、深度推定値に最も近い関連する深度を有するコードワード候補を選択するステップを含み得る。動作は、選択されたコードワード候補と関連付けられる深度を無効なコードワードの位置に割り当てるステップを含み得る。
【００２２】
様々な特徴、態様、および利点が、本明細書の説明および本明細書に添付される図面から明らかになり、図面において、同様の参照記号は一般に、図面に示されている対応する態様または構成要素を特定する。当業者が理解するように、ある実施形態について説明または図示されている態様は、そのような実施形態の実装または機能に対して現実的である場合、別段述べられていなければ1つまたは複数の他の説明または図示される実施形態に含まれ得る。
【図面の簡単な説明】
【００２３】
【図１】シーンを照明し、2次元の画像および/または情報から3次元の情報を生成する際に用いる深度情報を得るために、既知のパターンが使用される、アクティブ検知システムの例を示す概略図である。
【図２】3次元(3D)のシーンが2次元(2D)の画像または情報から構築される、アクティブ検知のためのシステムの別の例を示す図である。
【図３】物体またはシーンに対して深度がどのように検知され得るかを示す概略図である。
【図４】合成コードマスクを生成し、かつ/またはそのような合成コードマスクを投影するように構成され得る、送信機デバイスの例を示すブロック図である。
【図５】合成コードマスクから深度情報を得るように構成され得る、受信機デバイスの例を示すブロック図である。
【図６】本明細書において開示される誤り訂正方法の1つまたは複数を実行するように構成される装置の一実施形態のブロック図である。
【図７】メジアンフィルタを使用する誤り訂正の可変の度合いを示す図である。
【図８Ａ】エルミート対称性を示す点を有するパターンの例を示す図である。
【図８Ｂ】ゴースト像のないエルミート対称のパターンの例を示す図である。
【図８Ｃ】エルミート対称性のあるコードマスクパターンの例を示す図である。
【図８Ｄ】ゴースト像のある非エルミート対称のパターンの例を示す図である。
【図８Ｅ】エルミート対称性のないコードマスクパターンの例を示す図である。
【図９】異なる既定関数の列および区切られた4×4の空間コードを有する、図8Cに示される例示的なコードマスクの詳細図である。
【図１０】構造化された光から導かれる深度マップにおけるギャップを示す図である。
【図１１】深度マップの穴埋めの方法のデータフロー図の例である。
【図１２】深度マップにおける誤り訂正のプロセスの例を示す図である。
【図１３】メジアンフィルタを使用して深度マップにおけるギャップを埋めることのいくつかの態様を示す画像である。
【図１４】本明細書において開示される方法およびシステムを使用して深度マップのギャップを埋めることのいくつかの態様を示す画像である。
【図１５】誤り訂正のためにハミング距離によってコードブックの中のコード候補を整理する例示的な構造を示す図である。
【図１６】誤り訂正のためにハミング距離によってコードブックの中のコード候補を整理するための例示的なコンパクトな構造を示す図である。
【図１７】構造化された光から生成されるコードワードの中の誤りを訂正するプロセスの例を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下の発明を実施するための形態は、いくつかの特定の実施形態を対象とする。しかしながら、開示される方法およびシステムは多数の異なる方法で具現化され得る。本明細書の態様は多種多様な形で具現化され得ること、および本明細書で開示されている任意の特定の構造、機能または両方は代表的なものにすぎないことは明らかであろう。本明細書において開示される態様は、いずれの他の態様とも無関係に実装されることがあり、これらの態様のうちの2つ以上が、様々な方法で組み合わされることがある。たとえば、本明細書に記載される任意の数の態様を使用して、装置が実装されることがあり、または方法が実践されることがある。加えて、他の構造を使用して、機能を使用して、または、本明細書に記載された態様のうちの1つもしくは複数に加えて構造および機能を使用して、もしくは、それら以外の構造および機能を使用して、そのような装置が実装されることがあり、またはそのような方法が実践されることがある。
【００２５】
さらに、本明細書において説明されたシステムおよび方法は、多種多様なコンピューティングデバイス上で実装され得る。これらには、携帯電話、タブレット、専用カメラ、ウェアラブルコンピュータ、パーソナルコンピュータ、フォトブースまたはキオスク、携帯情報端末、ウルトラモバイルパーソナルコンピュータ、およびモバイルインターネットデバイスが含まれる。それらは、汎用または専用コンピューティングシステム環境または構成を使用し得る。本発明とともに使用するのに適切であり得るコンピューティングシステム、環境、および/または構成の例には、限定はされないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散型のコンピューティング環境などが含まれる。
【００２６】
上で論じられたように、構造化された光システムは、シーンの中の少なくとも1つの物体へと既知のパターン(たとえば、コードワード)を投影し(説明を簡単にするために、シーンへと投影されると言及されることがある)、受信された画像を処理して深度マップを得る。必然的に、スペックルまたは他のノイズ源により、受信されるパターンの一部の領域は復号されない。これらのコーディングされない領域は、深度情報を含まず、したがってマップの実用性を低下させる、深度マップにおける穴を生み出す。
【００２７】
いくつかの実施形態では、開示されるシステムおよび方法は、送信された可能性が最も高いコードワード(言及を簡単にするために「コード」と呼ばれることがある)を、受信されたコードワードに基づいて送信された可能性が最も高いコードを決定することを試みることによって、決定し得る。送信され得る有効なコードのセットは、コードブックと呼ばれ得る。受信されたコードがコードブックの中のコードのうちの1つと一致する場合、そのコードは正しく受信された可能性が最も高い。しかしながら、受信されたコードがコードブックの中のコードのうちの1つと厳密に一致しない場合、受信されたコードは送信されたコードと一致せず、スペックルまたは何らかの他のノイズ源による誤りがあった可能性が最も高い。
【００２８】
たとえば、送信されたコードは、空間コードのコードブックの中のコードに対応する二進行列として表され得る。そのような実装形態では、各二進行列は、「クリア」および「マスクされている」に対応する二値の値(0および1)の行列として表され得る。ノイズがない場合、受信されるコードは送信されたコードと同一であり得る。送信されたコード、または物体から反射された対応する受信されたコードに、ノイズが影響している場合、受信されたコードは、二値の値の1つまたは複数の誤りにより、送信されたコードと異なることがあり、この場合、各ビット誤りは0が1として受信されること、またはその逆に相当する。受信されたコードと有効な送信されたコードとの間のハミング距離は、ビット誤りの数に相当する。したがって、受信されたコードと有効な送信されたコードとの間のハミング距離はそれぞれ、0個、1個、2個、およびn個のビット誤りに対して、0、1、2、およびnである。コードワードのハミング重みは、コードワードの中の1の数として定義される。2つの二進のコードワードの間で異なる位置の数を計算するために、2つのコードワードが、キャリーを伴わない二進加算であるモジュロ2加算を使用して加算されることがあり、違いのある各位置に対しては1が、違いのない各位置に対しては0が得られる。したがって、2つのコードワードの間のハミング距離は、2つのコードワードのモジュロ2加算のハミング重み(1の数)である。
【００２９】
開示される技術は、受信されたコードを有効なコードのセットと比較することによって、誤りを検出する。本明細書において説明される方法およびシステムは、ハミング距離が0であるコードがないときに相当する、受信されたコードと有効なコードのセットとの間に一致がないときに、誤りを検出する。
【００３０】
一致がない場合、本明細書において説明される方法およびシステムは、1というハミング距離に対応する、受信されたコードとは単一のビットだけ異なる有効なコードを決定するために使用され得る。1というハミング距離において1つの有効なコードがある場合、そのコードは最も可能性の高い送信されたコードである。1というハミング距離において2つ以上の有効なコードがある場合、最も可能性が高い深度値を選択するために、局所的な近隣とコードワード候補との間の類似性の尺度が使用され得る。0または1というハミング距離において有効なコードがない場合、このプロセスは2というハミング距離に対して繰り返され、閾値の数のビット誤りまで同様に繰り返される。
【００３１】
本明細書において説明されるシステムおよび方法は、データ検出およびデータ訂正のための効率的なデータ構造を利用する。各々の可能性のある受信された空間コードに対して、データ構造は、受信された空間コードが有効なコードと一致するかどうかの指示を含む。受信された空間コードが有効なコードと一致しない場合、データ構造は、1というハミング距離における有効なコードに相当する、単一のビット誤りに対する有効なコードの表現を含む。受信された空間コードから0または1というハミング距離にある有効なコードがない場合、データ構造は、最大で閾値の数のビット誤りまで、単一のビット誤りなどに対する有効なコードの表現を含む。データ構造に格納が行われると、本明細書において説明される方法は、受信された空間コードが有効なコードと一致するかどうかの指示についてデータ構造にクエリすることによって、誤りを検出する。この動作は、データ構造の中のテーブルにおける単一のルックアップしか必要としないことがある。本明細書において説明される方法は、受信された空間コードに対する最小のハミング距離にある有効なコードのセットについてデータ構造にクエリすることによって、送信されたコードワードの最も可能性の高い候補を決定する。このようにデータ構造を使用することによって、誤りを検出し、送信された空間コードの最も可能性の高い候補を決定することは、データ構造またはテーブルのルックアップしか必要としない。ある実施形態は、効率を上げる際に空間を節約するために、コンパクトにデータ構造を実装し得る。
【００３２】
方法およびシステムのいくつかの実施形態では、パターンの基底構造が、誤り訂正を生み出すために使用される。そのような誤り訂正の結果は、コードの知識を伴わずに機能する他の方法(たとえば、メジアンフィルタリング)と比較して有利であり得る。
【００３３】
例示的な動作環境
図1は、シーンを照明し、2次元(「2D」)の画像および/または情報から3次元(「3D」)の情報を生成する際に用いる深度情報を得るために、既知のパターンが使用される、アクティブ検知システムの例を示す。本明細書において説明される1つまたは複数の態様および/または特徴は、そのような例示的なアクティブ検知システム内で実装され得る。図1に示されるシステムは、送信機102および受信機108を含む。送信機102は、コードワードを物体またはシーン106に投影するために、コードマスク104を通してライトフィールドを投影する。本明細書では、説明を明確にするために、使用される文脈に応じて、シーンと物体の一方または両方を指すために、「シーン」が使用され得る。たとえば、シーンは、目的の単一の物体、または目的の複数の物体を含み得る。受信機108は、投影されたコードマスク110およびその中のコードワードを捉える。この例は、コードマスク104のセクション112が、シーン106の表面(たとえば、投影されるセクション116)へと(セクション114として)どのように投影されるかを示している。投影されるセクション116は次いで、捉えられたセグメント118として受信機108によって捉えられ得る。セクション112は、一意に識別可能なコードワード120として使用され得る。したがって、このように一意なコードワードでシーン106をカバーすることによって、シーン106のセクション/部分を反射されたコードワードによって識別することができ、この情報は、検知デバイスからシーンの中の物体までの距離(深度)を検知するために使用され得る。
【００３４】
受信機108によって捉えられた画像から、複数のセグメントはシーン106上で識別され得る。各々の捉えられたセグメント118は、受信機108において一意に識別可能であることがあり、他のセグメントに対する相対的なセグメントの位置は、コードマスク104の既知のパターンから確認される。各セグメント/部分/ウィンドウからのコードの識別は、(たとえば、歪みに対処するための)パターンのセグメント化と、認識されたセグメント/部分/ウィンドウの対応するコードへの復号とを伴い得る。加えて、向きおよび/または深度を確認するために、各々の捉えられたセグメント/部分/ウィンドウにわたって三角分割が適用され得る。複数のそのようなセグメント/部分/ウィンドウは、捉えられた画像のパターンをつなぎ合わせるために組み合わされ得る。このようにして、深度マップ107がシーン106のために生成され得る。
【００３５】
図2は、3次元(3D)のシーンが2次元(2D)の画像または情報から構築される、アクティブ検知のための別の例示的なシステムを示す。エンコーダ/形状変調器201は、コードマスクを生成することを担うことができ、コードマスクは次いで、送信チャネル204を通じて送信機デバイス202によって投影される。コードマスクはターゲット(たとえば、シーン)へと投影されることがあり、反射された光は画像(たとえば、コードマスク画像)として受信機センサ205によって捉えられる。受信機センサ205(たとえば、図1の受信機108)において、ターゲット(たとえば、シーン)が捉えられ、その形状/深度がコード化される(205)。形状/深度のコード化は、たとえば、深度情報を確認するために投影されたコードマスクを使用して、達成され得る。たとえば、(投影されたコードマスクを含む)シーンの捉えられた画像は、深度マップ208を得るために復号され得る(206)。深度マップ208は次いで、ターゲットの3次元のバージョン210a〜eを提示し、生成し、かつ/または提供するために使用され得る。
【００３６】
アクティブ検知は、シーンへと送信機デバイス202によって投影されているコードマスクから、すべての空間コード(たとえば、コードワード)を(受信機センサ205および/またはデコーダ206において)認識できることに依存する。シーンが送信機および受信機に近すぎる場合、シーンの表面に角度がつくこと、または曲がることがあり、基線の基準面が傾くことがあり、コードが未知のアフィン変換(たとえば、回転、剪断、圧縮、伸長など)のもとで変化することがある。
【００３７】
本明細書において説明される1つまたは複数の態様または特徴は、図1および図2の例示的な環境内で実装され得る。
【００３８】
例示的なアクティブ深度検知
図3は、シーンの中の1つまたは複数の物体のために深度がどのように検知され得るかの例を示す。図3は、送信機302および受信機304を含むデバイス300を示す。デバイスは、コードワード投影310として、送信機302から放出される構造化された光を用いて2つの物体306および308を照明している。コードワード投影310は、物体306および/または308から反射し、反射されたコードワード311としてセンサ表面307上で受信機304によって受信される。
【００３９】
示される態様では、送信機302は、受信機304と同じ基準面(たとえば、レンズ表面305)上にある。送信機302は、開口313を通って物体306および308へとコードワード投影310を投影する。
【００４０】
コードワード投影310は、物体306を投影されたセグメント312'として照明し、物体308を投影されたセグメント312''として照明する。投影されたセグメント312'および312''が受信機開口315を通って受信機304によって受信されるとき、反射されるコードワード311は、第1の距離d1にある物体308から生成された反射と、第2の距離d2にある物体306から生成された反射とを示し得る。
【００４１】
図3によって示されるように、物体306が送信機302により近く位置しているので(たとえば、送信機デバイスからの第1の距離)、投影されたセグメント312'は最初の位置から距離d2に現れる。対照的に、物体308がさらに遠くに(たとえば、送信機302から第2の距離に)位置しているので、投影されたセグメント312''は最初の位置から距離d1に現れる(ここでd1<d2)。すなわち、物体が送信機/受信機から遠いほど、受信される投影されたセグメント/部分/ウィンドウは、受信機304における元の位置から近くなる(たとえば、出ていく投影および入ってくる投影がより平行になる)。逆に、物体が送信機/受信機に近いほど、受信される投影されたセグメント/部分/ウィンドウは、受信機304における元の位置からより遠くなる。したがって、受信されたコードワードの位置と送信されたコードワードの位置との差は、物体の深度のインジケータとして使用され得る。一例では、そのような深度(たとえば、相対的な深度)は、画像の中の各画素またはグループ化された画素(たとえば、2つ以上の画素の領域)によって描かれる物体の深度値を与え得る。
【００４２】
様々なタイプの変調およびコーディングの方式が、コードワードの投影またはコードマスクを生成するために使用され得る。これらの変調およびコーディングの方式は、時間コーディング、空間コーディング、および直接コード化を含む。
【００４３】
時間コーディングでは、パターンが測定面へと(たとえば、経時的に)連続して投影される。この技法は、精度および分解能が高いが、動きのあるシーンにはあまり適していない。
【００４４】
空間コーディングでは、形状およびパターンに基づいて、局所的な近隣において情報がコード化される。疑似ランダムコードはDe-Bruijnに基づくことがあり、またはM配列がコードブックを定義する(たとえば、m-aryの強度または色変調)。たとえば、形状およびパターンが歪んでいる場合、パターンのセグメント化は簡単には達成できないことがある。
【００４５】
直接コード化では、水平方向と垂直方向の両方の画素座標がコード化される。変調は、単調な位相または強度の波形によるものであり得る。しかしながら、この方式は、他の方法のために利用されるコードブックよりも大きなコードブックを利用することがある。大半の方法において、受信されるコードワードは、(たとえば、コードブックの中の)あり得るコードワードの定義されたセットに対して相関付けられ得る。したがって、コードワードの小さなセット(たとえば、小さなコードブック)を使用することは、より大きなコードブックよりも良好な性能をもたらし得る。また、より大きなコードブックはコードワードの間の距離をより小さくするので、より大きなコードブックを使用する実装形態ではさらなる誤りが生じることがある。
【００４６】
アクティブ深度検知のための例示的なコード
構造化された光のパターンは、コードマスクを通じて光を照らすことによって、シーンへと投影され得る。コードマスクを通じて投影される光は、1つまたは複数の多角形のコードマスク基本要素を含み得る。各コードマスク基本要素は、空間コードのアレイを含み得る。コードブックまたはデータ構造は、コードのセットを含み得る。空間コード、コードマスク、およびコードマスク基本要素は、基底関数を使用して生成され得る。基底関数の周期性は、(ゴースト像を除去して製造を簡単にするための)エルミート対称性の集合的なパターン、(コードワードごとの最小の電力を確実にするための)最小のデューティ比、(最適な輪郭分解能および高分解能向けのコードパッキングのための)完全ウィンドウ特性、および(物体の境界の改善された検出のための)ランダム化されたシフトに対する要件を満たすように選ばれ得る。受信機は、受信されたパターンを復調し、復号し、その誤りを訂正するときの制約に従うことが意図される、設計のコードブックおよび/または属性を利用し得る。
【００４７】
空間コードのサイズおよび対応する分解能は、コードマスク上での空間コードの物理的な空間的広がりに相当する。サイズは、各コードワードを表す行列の中の行および列の数に相当し得る。コードワードが小さいほど、検出され得る物体は小さい。たとえば、シャツのボタンとシャツの繊維との間の深度の差を検出して決定するには、コードワードはボタンのサイズより大きくてはならない。ある実施形態では、各空間コードは、4つの行および4つの列を占有し得る。ある実施形態では、コードは、より多数または少数の行および列(行×列)を占有して、たとえば、3×3、4×4、4×5、5×5、6×4、または10×10の行および列を占有し得る。
【００４８】
空間コードの空間的な表現は、各コードワード要素がコードマスク上でどのようなパターンにされるか、次いでシーンへとどのように投影されるかに対応する。たとえば、各コードワード要素は、1つまたは複数の点、1つまたは複数の線セグメント、1つまたは複数の格子、何らかの他の形状、またはこれらの何らかの組合せを使用して表され得る。
【００４９】
空間コードの「デューティ比」は、コードワードの中のアサートされていないビットまたは部分(たとえば、「0」)の数に対するアサートされているビットまたは部分(たとえば、「1」)の数の比に相当する。コードワードを含むコーディングされた光のパターンがシーンへと投影されるとき、「1」という値を有する各ビットまたは部分はエネルギー(たとえば、「光エネルギー」)を有し得るが、「0」という値を有する各ビットにはエネルギーがないことがある。コードワードを容易に検出可能にするために、コードワードは十分なエネルギーを有していなければならない。低エネルギーのコードワードは検出するのがより難しいことがあり、ノイズの影響をより受けやすいことがある。たとえば、4×4のコードワードは、そのコードワードの中のビットの8個以上が「1」である場合、50%以上のデューティ比を有する。個々のコードワードに対する最小(または最大)のデューティ比の制約、またはデューティ比の制約、たとえば、コードブックの中のコードのセットに対する平均のデューティ比の制約が存在することがある。
【００５０】
コードの「輪郭分解能」または「完全ウィンドウ」特性は、コードワードがある量だけシフトされるとき、たとえば1ビットの回転を受けるときに、得られるデータが別のコードワードを表すことを示す。コードワードがシフトされる量は、シフト量と呼ばれ得る。高い輪郭分解能を有するコードは、構造化された光深度検知システムが、比較的小さな物体の境界を認識し、異なる物体に対する認識の連続性をもたらすことを可能にし得る。行の次元における1、および列の次元における2というシフト量は、行の次元に沿って右への1ビットの、および列の次元に沿って下への2ビットの位置のシフトに相当し得る。コードワードの高い輪郭分解能のセットは、受信された画像上のウィンドウを一度に一行または一列動かして、各ウィンドウ位置における深度を決定することを可能にする。このことは、受信された画像の3番目の行および3番目の列に中心がある開始点における5×5のウィンドウを使用して、3番目の行から3番目〜最後の行まで、および3番目の列から3番目〜最後の列まで、5×5のウィンドウを各行、列の位置へと動かすことによる、深度の決定を可能にする。コードワードが重複するにつれて、ウィンドウは、決定されるべき物体(たとえば、シャツのボタン)の深度の分解能に基づいてサイズが決められ得る。
【００５１】
コードの対称性は、コードマスクまたはコードブック基本要素がエルミート対称性を有することを示すことがあり、このことは、非エルミート対称のコードブック基本要素またはパターンを使用することと比較して、いくつかの利点をもたらし得る。エルミート対称性のあるパターンは、X軸およびY軸(行および列)の両方に対して、「反転されて」おり、または対称である。
【００５２】
コードマスクまたはコードマスク基本要素のエイリアシング特性は、同じ2つのコードワードの間の距離に相当する。光のパターンが多角形のコードブック基本要素を含むとき、および基本要素の中の各コードブックが一意であるとき、エイリアシング距離はコードブック基本要素のサイズに基づき得る。したがって、エイリアシング距離は、コードブック基本要素の各コードワードがコードブック基本要素の各々の他のコードワードとは異なるものであること、およびコードブック基本要素が全体として一意であることを示す、一意性の基準になり得る。エイリアシング距離は、1つまたは複数の受信機デバイスに知られていることがあり、コードワードの復調の間のエイリアシングを防ぐために使用されることがある。コードマスクの基数は、コードブック基本要素の中の一意なコードの数に相当する。
【００５３】
例示的な送信機デバイス
図4は、合成コードマスクを生成し、かつ/またはそのような合成コードマスクを投影するように構成され得る、送信機デバイスの例を示すブロック図である。送信機デバイス402は、メモリ/記憶デバイス406、画像投影デバイス408、および/または有形媒体409に結合された処理回路404を含み得る。いくつかの態様では、送信機デバイス402は、図3に関して上で論じられた送信機302に相当し得る。
【００５４】
第1の例では、送信機デバイス402は、有形媒体409を含むように結合され得る。有形媒体は、合成コードマスク414を定義し、含み、かつ/または記憶し得る。合成コードマスクは、キャリアレイヤと組み合わされたコードレイヤを含み得る。コードレイヤは、複数のシンボルによって定義される、一意に識別可能な空間的にコーディングされるコードワードを含み得る。キャリアレイヤは、独立に確認可能でありコードレイヤとは別個であることがあり、投影の際の歪みに対して堅牢である複数の基準物体を含む。コードレイヤおよびキャリアレイヤのうちの少なくとも1つが、投影の前に合成点拡がり関数によって事前に形成され得る。
【００５５】
第2の例では、処理ユニット(またはプロセッサ)404は、コードレイヤ生成器/選択器416、キャリアレイヤ生成器/選択器418、合成コードマスク生成器/選択器420、および/または事前形成回路422を含み得る。コードレイヤ生成器/選択器416は、事前に記憶されているコードレイヤ410を選択することがあり、かつ/またはそのようなコードレイヤを生成することがある。キャリアレイヤ生成器/選択器418は、事前に記憶されているキャリアレイヤ412を選択することがあり、かつ/またはそのようなキャリアレイヤを生成することがある。合成コードマスク生成器/選択器は、事前に記憶されている合成コードマスク414を選択することがあり、かつ/または、コードレイヤ410とキャリアレイヤ412を組み合わせて合成コードマスク414を生成することがある。任意選択で、処理回路404は、合成コードマスクがそれを通じて投影されることになるチャネルにおける予想される歪みを補償するために、合成コードマスク414、コードレイヤ410、および/またはキャリアレイヤ412を事前に形成する事前形成回路を含み得る。
【００５６】
いくつかの実装形態では、複数の異なるコードレイヤおよび/またはキャリアレイヤが利用可能であることがあり、ここで、各々のそのようなキャリアレイヤまたはコードレイヤは、異なる条件に対して(たとえば、異なる距離にある物体に対して、または送信機デバイスと受信機デバイスとの間の異なる構成に対して)構成され得る。たとえば、第1の距離または範囲内にある物体に対して、第2の距離または範囲にある物体に対するものとは異なるコードレイヤとキャリアレイヤの組合せが使用されることがあり、ここで第2の距離は第1の距離より長い。別の例では、送信機デバイスと受信機デバイスの相対的な向きに応じて、コードレイヤとキャリアレイヤの異なる組合せが使用され得る。
【００５７】
画像投影デバイス408は、生成/選択された合成コードマスクを対象の物体へと投影することを担い得る。たとえば、合成コードマスクを対象の物体へと(たとえば、投影チャネルを通じて)投影するために、レーザーまたは他の光源が使用され得る。一例では、合成コードマスク414は、赤外スペクトルにおいて投影され得るので、肉眼では見えないことがある。代わりに、赤外スペクトル範囲における受信機センサが、そのような投影された合成コードマスクを捉えるために使用され得る。
【００５８】
例示的な受信機デバイスの動作
図5は、物体から反射された合成コードマスクを受信し、合成コードマスクから深度情報を決定するように構成される、受信機デバイス502の例を示すブロック図である。受信機デバイス502は、メモリ/記憶デバイスと受信機センサ508(たとえば、画像キャプチャデバイス508)とに結合された処理回路504を含み得る。いくつかの態様では、図5に示される受信機デバイス502は、図3に関して上で論じられた受信機304に相当し得る。いくつかの実施形態では、受信機センサ508は、画像キャプチャデバイス、たとえばカメラである。
【００５９】
受信機センサ508は、物体の表面に投影された合成コードマスクの少なくともある部分を得るように構成され得る。たとえば、受信機センサは、ターゲット物体の表面に投影された合成コードマスクの少なくともある部分の画像を捉え得る。合成コードマスクは、(a)複数のシンボルによって定義される一意に識別可能な空間的にコーディングされたコードワードのコードレイヤ、および(b)独立に確認可能でありコードレイヤとは別個であり、投影の際の歪みに対して堅牢である複数の基準物体を含む、キャリアレイヤによって定義され得る。コードレイヤおよびキャリアレイヤのうちの少なくとも1つが、投影の前に合成点拡がり関数によって事前に形成されていることがある。一例では、受信機センサ508は、赤外スペクトルにおいて合成コードマスクを捉え得る。
【００６０】
さらに図5を参照すると、いくつかの実施形態では、コードレイヤは、n1対n2の二進シンボルを備えることがあり、ここでn1およびn2は2より大きな整数である。合成コードマスクにおいて、各シンボルは基準物体とは別個の2つのグレースケールの影のうちの1つの中の、線のセグメントであり得る。コードレイヤのシンボルは、少なくとも1つの次元において千鳥状であり得る。キャリアレイヤの基準物体は、間にガード間隔がある、複数の等しく離隔された基準縞を備え得る。基準縞およびガード間隔は、幅が異なり得る。ガード間隔の幅に対する各々の基準縞の幅は、送信機デバイスおよび/または受信機デバイスの予想される光の拡がりによって決定され得る。
【００６１】
処理回路504は、基準縞検出器回路/モジュール512、歪み調整回路/モジュール514、コードワード識別器回路/モジュール516、深度検出回路/モジュール518、および/または深度マップ生成回路/モジュール520を含み得る。
【００６２】
基準縞検出器回路/モジュール512は、合成コードマスクのその部分内で基準縞を検出するように構成され得る。歪み調整回路/モジュール514は、基準縞の実際の向きに対する基準縞の予想される向きに基づいて、合成コードマスクのその部分の歪みを調整するように構成され得る。コードワード識別器回路/モジュール516は、合成コードマスクのその部分内で定義されるウィンドウからコードワードを得るように構成され得る。深度検出回路/モジュール518は、(a)合成コードマスクの単一の投影、および(b)既知の基準コードマスクに対するウィンドウの変位に基づいて、ウィンドウに対応するターゲット物体の表面部分に対する深度情報を得るように構成され得る。
【００６３】
深度マップ生成回路/モジュール520は、歪んでいない合成コードマスクのその部分内の異なる重複するウィンドウとして検出される複数のコードワードに基づいて、物体に対する深度マップを組み立てるように構成され得る。
【００６４】
一例では、コードレイヤおよびキャリアレイヤのうちの少なくとも1つの事前形成は、合成コードマスクの投影の間の電力効率を向上させるので、形成されていない合成コードマスクと比較して、より多くの電力が受信機センサによって認識される。
【００６５】
1つの事例では、使用される合成点拡がり関数は、(a)合成コードマスクがそれを通じて投影されることになる予想されるチャネル条件、(b)合成コードマスクが投影される表面の特性、および/または(c)投影される合成コードマスクを受信することになる受信機センサの感度のうちの少なくとも1つに基づいて、複数の点拡がり関数から選択され得る。別の例では、合成点拡がり関数は、(a)合成コードマスクを投影することになるプロジェクタに対する第1のチャネルの応答、および/または(b)合成コードマスクを投影することになるプロジェクタから合成コードマスクを受信することになる受信機センサまでの経路に対する第2のチャネルの応答のうちの少なくとも1つに基づいて、複数の点拡がり関数から選択され得る。
【００６６】
例示的な誤り訂正デバイス
図6は、本明細書において開示される誤り訂正方法の1つまたは複数を実行するように構成される装置のある実施形態を示すブロック図である。装置600は、光放出器602、光受信要素604、プロセッサ606、およびメモリ608を含む。光放出器602、光受信要素604、プロセッサ606、およびメモリ608は、バス610を介して動作可能に接続される。いくつかの態様では、光受信要素604は、図5に関して上で論じられた受信機デバイス502に相当し得る。いくつかの態様では、光放出器602は、図4に関して上で論じられた送信機デバイス402に相当し得る。
【００６７】
メモリ608は、本明細書において論じられた方法のうちの1つまたは複数の機能を実行するようにプロセッサ606を構成する命令を記憶し得る。たとえば、メモリに記憶されている命令は、ターゲット物体を照明するために、構造化された光をコードワードとしてコード化する光を放出するように光放出器602を制御するように、プロセッサ606を構成し得る。メモリ608に記憶されている命令はさらに、プロセッサ606に、ターゲット物体から反射する光を受信して反射された光にコード化されているデータを産生するように光受信要素604を制御させ得る。メモリに記憶されている命令はさらに、以下で論じられる方法1500に従って、光受信要素によって産生されるデータの誤りを訂正するように、プロセッサを構成し得る。
【００６８】
図7は、画像深度マップにおけるギャップの影響を軽減するためのいくつかの方法の適用の結果を示す。画像701aは、誤り訂正のない深度マップを示す。深度マップにおける穴が、たとえば手701bの中の暗い領域として認められ得る。画像702aは、軽度の穴埋めプロセスが実行された後の同じ深度マップを示す。深度マップにおいて手702bは手701bよりも少数の穴を含むが、ある程度の細部の喪失も存在する。画像703aは、中程度の穴埋めが実行された後の画像701aと同じ深度マップを示す。画像703aからの手703bは、深度マップのギャップの数のさらなる低減を示しているが、手701bおよび702bに対する相対的な細部の喪失も示している。画像704aは、精緻な穴埋めの後の画像701aと同じ深度マップを示す。画像704aからの手704bは、手701b、702b、および703bと比較すると、深度マップのギャップのさらなる低減を示している。しかしながら、手701b、702b、および703bに対する相対的な細部のさらなる喪失も明白である。
【００６９】
図8Aは、エルミート対称性を示すパターンを示す。正の(x,y)を有する各点A、B、Cは、コードブック基本要素に含まれ、同様にコードブック基本要素に含まれる点(-x,-y)へと原点(たとえば、点(0))の周りで反射される。点A、B、Cの各々によって示されるエルミート対称性は、非エルミートパターンが使用されるときに受信され得る「ゴースト」像の形成を阻害し得る。たとえば、図8Bは、エルミート対称のコードマスクから形成される、ゴースト像のないパターンを示している。対照的に、図8Dは、エルミート対称ではないコードマスクから形成される、ゴースト像のあるパターンを示している。ゴースト像を取り除くことは、受信機側の信号処理を減らすことができ、コードワードの認識および復調の精度を上げることができ、動いている物体に対する耐性を上げることができ、ノイズに対する耐性を上げることができ、照明の変化に対する耐性を上げることができる。
【００７０】
図8Cおよび図8Eは、エルミート対称のパターンが構造化された光の投影における0次ビームのサイズにどのように影響を与え得るかを示している。示されるように、図8Cのエルミート対称のパターンは、非エルミート対称のパターンを伴う図8Eに示される0次ビームと比較すると、より小さな0次ビームを生成した。0次ビームは、光、たとえばレーザー光がコードマスクを通過し、光の一部分が回折することなくコードマスクの中心を通過するときに生成される。これは、0次ビームを生じさせる。0次ビームは回折しないので、0次ビームは、回折したビームより高い強度を有することがあり、0次ビームの位置の近くで、盲点と受信画像センサの飽和とをもたらす。図8Cにおける0次ビームの小さなサイズと低い強度は、盲点のサイズを小さくし、図8Eにおいて使用される非エルミート対称のパターンと比較して、レーザー光を使用するシステムにおける眼への安全性を改善し得る。
【００７１】
図9は、図8Cに示される例示的なコードマスクの詳細図を示す。コードマスク900の列内のコード化されたデータは、基底関数のセットに基づいて生成され得る。基底関数は空間コードを形成するために使用される。基底関数の設計(基底シーケンス)は、基底関数が互いに直交するように選ばれることがあり、線形に合成されることがあるという点で、行列の固有値に類似していることがある。
【００７２】
図9のコードマスクは、3つの基底関数から生成されるコードマスクを示す。パターンの中の白い四角形は1という値を表し、一方で暗い四角形は0という値を表す。図9の示されるコードマスクにおいて、各列は、3つの基底関数910
【数３】
0006776333.tif 000004
、920
【数４】
0006776333.tif 000005
、または930
【数５】
0006776333.tif 000006
のうちの1つからの値をコード化する。特定の列を生成するとき、各基底関数は回転され得る。回転910は、すべてのビットが同等であるので変化をもたらさない。基底関数920
【数６】
0006776333.tif 000007
は、922
【数７】
0006776333.tif 000008
、924
【数８】
0006776333.tif 000009
、または926
【数９】
0006776333.tif 000010
へと、一度に1ビット、回転され得る。同様に、基底関数930
【数１０】
0006776333.tif 000011
は、932
【数１１】
0006776333.tif 000012
へと回転され得る。コードマスク900の中の各列は、これらの関数910、920、922、924、926、930、または932のうちの1つの一連の繰り返しに相当する。
【００７３】
(場合によっては回転されている)基底関数から得られるパターンは、4つの列部分からなるコードへと整理され、各列部分は1つの4セルの基底関数パターンからなる。たとえば、コード950は、
【数１２】
0006776333.tif 000013
として表されることがあり、関数[910|910|932|920]に対応する。
【００７４】
コード950は、4×4の二進行列として、二進行列の二進表現として(たとえば、列1111111101011100によって、または行1101111111001110によって)、基底関数と位相の組合せとして(910, 910, 930+1, 920)、または関数の組合せとして(910, 910, 932, 920)、画像の形式でコードブックに記憶され得る。
【００７５】
同様の方式で、コード952
【数１３】
0006776333.tif 000014
は、基底関数[910|932|910|930]から形成され、コード954
【数１４】
0006776333.tif 000015
は、基底関数[930|910|932|930]から形成され、コード956
【数１５】
0006776333.tif 000016
は、[910|910|910|910]から形成される。
【００７６】
コードは、図9のコードマスクの中のそれぞれの4対4の要素「ウィンドウ」に対して識別され得る。識別可能なコードは、コードマスク900の各々の4×4の部分が有効なコードを表すという点で、コード952および954によって示されるように「重複する」。コードマスク900が設計される際の輪郭分解能(完全ウィンドウ)制約により、各々の4×4の「ウィンドウ」は、関数910、920、922、924、926、930、または932の組合せから有効なコードを形成する。
【００７７】
図9のコードマスクパターンの設計において使用される完全ウィンドウ制約は、シフトされるコードワードが一意であることも要求する。コードマスクへの1つのウィンドウは、コード950、952、954、および956に対応する位置に示される4対4のウィンドウに相当する。ウィンドウが1つ以上の行、および/または1つ以上の列シフトすると、ウィンドウ内の4対4のコードワードは、アンチエイリアスエリアにわたって一意であり繰り返さないものであることが必要である。コードワードが一意ではない場合、アンチエイリアスエリア内の各コードワードの位置(各々の一意なコードワードに対応するウィンドウの位置)を一意に識別することが可能ではないことがある。7つの関数910、920、922、924、926、930、および932、ならびに4つの列を伴うこの例では、4つの列の74=2401個のあり得る組合せがあり、最大で2401列のアンチエイリアスエリアにわたって完全ウィンドウ制約を満たすことが可能になる。
【００７８】
この例で使用されなかった4×4のコードに対する2つの他の基底関数の候補は、
【数１６】
0006776333.tif 000017
である。パターンの中のいずれの列も、これらの関数、またはこれらの関数のシフトされたバージョンを使用しない。したがって、
【数１７】
0006776333.tif 000018
のいずれかを含むあらゆる受信されたコードは無効である。したがって、受信機は、すべての送信されるコードがコードブックの中にある基底関数(または基底関数の回転されたバージョン)から形成されるとき、受信されたコードが有効なコードのコードブックの中にないときの誤りを検出し得る。
【００７９】
図9のコードマスク900は、シーンの中の1つまたは複数の物体へと送信されることがあり、次いで受信機に反射されることがある。受信機、たとえば受信機デバイス502または光受信要素604は、シーンの中の物体からの送信されたパターンの反射を受信する。受信の後で、コード950、952、954、および956の受信されたバージョンが決定され得る。コード化されたコードワードが物体によって反射されるときにどのように変化するかを観察することによって、深度マップ、たとえば図10に示される深度マップ1002aが生成され得る。生成される深度マップは、1つまたは複数の画像処理方法に提供されることがあり、画像処理方法は深度マップに基づいて画像データを修正することがある。生成された深度マップは、1つまたは複数のギャップまたは穴を含み得る。ギャップまたは穴は、コードの受信されたバージョンの復号における誤りに起因し得る。誤りは、反射率の低い物体の部分、スプリアス環境光条件、または様々な他の要因を含む、様々な要因によって引き起こされ得る。深度マップにおける穴の例は、手1002b(図10)の拡大された画像において見出され得る。これらの誤りを訂正するための方法がないと、穴に近接する画像の領域の画像処理は、深度マップのこれらのエリアにおいて誤りのある深度を産生し得る。
【００８０】
コードマスク900のコードワードが受信されるとき、各々の受信されるコードワードは、受信された特定のコードを決定するために、復調または解釈され得る。
【００８１】
いくつかの実施形態では、受信された空間コード、または受信された空間コードのシンボル(二値、またはn-ary)表現は、受信されたコードが有効なコードに対応するかどうかを決定するために、基底関数(たとえば、マッチトフィルタを使用して)、基底関数のシフトされたバージョン、または各々の有効な空間コードアレイと照合され得る。コードマスク900は、基底関数のすべての可能な組合せのサブセットのみを表す有効なコードを含むように生成され得る。図9の4×4のコードの例では、7つの関数910、920、922、924、926、930、および932は、216=65536個の可能性からの74=2401個のあり得るコードに相当する。
【００８２】
コードマスク900を生成するために使用されるコードブックは、2401個のコードのサブセット(たとえば、400個)を選択することがあり、この場合、あり得るコードのうちの1%未満が有効である。有効なコードが十分に類似していない場合、単一のビット誤りは別の有効なコードをもたらさないことがある。したがって、受信されたコードが有効なコードと一致しない場合に、受信されたコードが誤りを有すると決定することが可能になることがあり、単一のビット誤りにより第1の有効なコードが第2の有効なコードとして錯誤されることは比較的可能性が低く、ことによると起こり得ない。
【００８３】
本明細書において説明される誤り訂正のシステムおよび方法は、無効なコードが受信されるときに誤りを検出し、受信された無効なコードに対応する、最も可能性の高い有効な送信されたコードワードを決定することによって、誤りを訂正する。最も可能性の高い有効な送信されたコードワードの決定は、いくつかの態様では、無効なコードワードが1つの誤りしか含まないことを仮定し得る。この仮定は、最も可能性の高い有効なコードワードを決定することの計算上の要件を限定する。さらに、単一のコードワードにおける複数の誤りの可能性が比較的低いことを考慮すると、この仮定は、誤りを訂正するための十分な能力を方法およびシステムに与える。
【００８４】
図11は、深度マップにおける誤りのあるデータを訂正する方法の実施形態の例を示すデータフロー図である。言い換えると、深度マップにおける「穴」を埋めること。方法は、誤り検出プロセス1150において、受信された空間コードワードの中の誤りを検出するステップを含む。誤りを検出した後で、方法は、コードワード候補生成ステップ1160において、コードワード候補を生成するステップを含む。コードワード候補の各々が、有効性確認プロセス1170において有効なコードワードのセットに対して確認され、このプロセスは、コードワード候補のうちのいずれが有効な候補であるかを決定する。次に、深度生成プロセス1180において、有効なコードワードの各々に対して深度が生成される。図11は、図9に関して説明された基底関数、すなわち、基底関数910
【数１８】
0006776333.tif 000019
、920
【数１９】
0006776333.tif 000020
、および930
【数２０】
0006776333.tif 000021
、ならびにシフトされた関数922
【数２１】
0006776333.tif 000022
、924
【数２２】
0006776333.tif 000023
、926
【数２３】
0006776333.tif 000024
、および928
【数２４】
0006776333.tif 000025
を使用して生成される例示的な4×4の空間コードのためのデータフローを示している。
【００８５】
図11はまず、誤り検出プロセス1150を示す。誤り検出プロセス1150内で、無効な空間コード1102を形成するために、受信された画像が復号される。無効な空間コード1102は、図9に関して上で説明された空間コードのうちの少なくとも1つの反射から生じ得る。無効な空間コード1102の中の各々の受信された空間的な列は、マッチフィルタを使用して図9の基底関数のセットと比較される。無効な空間コード1102の第1、第2、および第3の列はそれぞれ、関数910、930、および926と一致する。しかしながら、列1104は、関数910、920、922、924、926、930、または932のいずれとも一致せず、これは列1104の要素のうちの少なくとも1つの中の誤りを意味する。
【００８６】
誤り検出プロセス1150が無効な空間コード1102の列1104における誤りを検出すると、図11において垂直方向に示される、有効なコードワード候補がコードワード候補生成プロセス1160において生成される。
【００８７】
コードワード候補生成プロセス1160は、列1104の中に1つの誤りしか存在しないという設計上の仮定を含む。他の考えられる実施形態は異なる仮定を行うことがあり、たとえば、他の実施形態は、列1104の中に2つ、3つ、または4つよりも多くの誤りが存在しないと仮定することがある。しかしながら、より多数の誤りを検出して訂正することは、より大きな計算上のコストと複雑さを必要とし得る。いくつかの態様では、コードワード候補は、無効なコードから特定のハミング距離以内にあるように生成され得る。たとえば、無効なコードワードの中に最大で1つの誤りを仮定する実装形態では、無効なコードワードから1というハミング距離を有するコードワード候補が生成され得る。列1104の中に最大で2つの誤りを考慮する実装形態では、無効な空間コード1102から2というハミング距離以内にあるコードワード候補が生成されることがあり、以下同様である。
【００８８】
図11に示されるように、コードワード候補1106a〜dは、コードワード候補生成プロセス1160において生成される。コードワード候補1106a〜dの各々は、無効な空間コード1102からの1というハミング距離を有する。これは、上で論じられた単一のビット誤りという設計上の仮定に対応する。代替的に、コードワード候補1106a〜dは、実装形態に応じて、様々な他の方法によって生成され得る。1つの実装形態では、各コードワード候補は、誤りを含む列1104のただ1つのビットを変更することによって生成される。したがって、列1104が8ビットを含むことになっていた場合、8個のコードワード候補が生成されることがあり、各コードワード候補は異なる変更されたビットを含む。
【００８９】
コードワード候補1106a〜dが生成された後で、コードワード候補の各々は次いで、有効性確認プロセス1170によって有効性を確認され得る。いくつかの実施形態では、有効性の確認は、コードマスク900を生成するために使用される有効なコードのコードブック1108にコードワード候補が含まれるかどうかを決定することによって、行われる。コードワード候補1106a〜dのうちの1つだけが(コードブック1108に載っている)有効なコードである場合、単一の一致候補が、元々送信された有効なコードである可能性が高い。図11の例では、コードワード候補1106a〜cはコードブック1108において有効であることが見出されたが、コードワード候補1106dはコードブック1108において見出されなかった。コードワード候補のいずれもが有効であると(すなわち、コードブック1108の中にある)と決定されなかった場合、いくつかの実装形態は、列1104が1つよりも多くの誤りを含むと決定し得ることに留意されたい。この決定に応答して、いくつかの実装形態は、第2のコードワード候補生成ステップを実行し得る。たとえば、無効なコードワードから2というハミング距離以内にあるコードワード候補が生成され、コードブック1108と比較され得る。いくつかの実装形態は、無効なコードワードからのより大きなハミング距離を有するコードワード候補に対して、追加のステップを実行し得る。いくつかの実装形態は、単一のステップにおいて、最も近いハミング距離にあるコードワード候補を決定し得る。
【００９０】
いくつかの実施形態では、有効性確認プロセス1170は、あるコードワード割振り方式に基づいて実行され得る。たとえば、いくつかの態様では、水平方向にあるコードワードは、x次元においては一意であり、y次元においては繰り返すものであり得る。いくつかのコードワード候補は、そのような全体的なコードワード割振り方式に従わないことがあり、有効性確認プロセス1170の間に拒絶されることがある。
【００９１】
有効性確認プロセス1170が実行された後で、方法は、各々の有効なコードワード候補1110a〜cと関連付けられる深度を決定する深度生成プロセス1180を実行する。コードワード1110a〜cと関連付けられる深度候補は、コードワード候補1110a〜cのうちのいずれが無効な空間コード1102を置き換えるべきかを決定するために、局所的な近隣の範囲内の深度と比較され得る。たとえば、無効な空間コード1102の局所的な近隣の深度値に最も近い、コードワード候補1110a〜cの深度候補であれば何でも、深度マップにおける無効な空間コード1102を置き換えるために使用され得る。いくつかの場合、局所的な近隣は、無効な空間コード1102から1個、2個、3個、4個、5個、6個、7個、8個、9個、または10個のコードワードに限定され得る。いくつかの態様では、局所的な近隣は、深度マップの幅または高さのある百分率の範囲内にあるコードワードに限定され得る。たとえば、深度マップが100コードワード四方である場合、局所的な近隣は、この次元の1パーセント、すなわち無効な空間コード1102から1つのコードワードの範囲内にあるものとして定義され得る。深度の生成についてのさらなる詳細が、図12に関して以下で説明される。
【００９２】
無効な空間コード1102は、2つ以上の列の中に誤りを含み得ることに留意されたい。たとえば、4×4のコードワードの第1の列および第3の列が各々誤りを含み得る。この場合、コードワード候補は、8個の可能性のある候補(4×4のコードワードの場合、各列に対して4個)に対して生成されることがあり、各候補はコードブックに対して有効性を確認され、深度は各々の有効な候補に対して生成され、最も類似する深度が置換のために選択される。ある方法は、考慮すべきビット誤りの数に上限を設定し得る。
【００９３】
いくつかの実施形態では、ビット誤りはハミング距離に対応し得る。たとえば、2というハミング距離は2ビットの誤りに対応する。2というハミング距離に有効なコードがない場合、方法は、3というハミング距離にある有効なコードを考慮することができ、ビット誤りの閾値の数に対応する閾値のハミング距離に達するまでこれを繰り返す。
【００９４】
有効性確認プロセス1170が実行された後で、方法は、図3に関して説明されたように、受信された構造化された光の画像におけるコード候補の置換に基づいて、深度生成プロセス1180において深度を生成し得る。たとえば、1110aと標識されている第1のコード候補63693は、53という対応する深度を有し得る。1110bと標識されている第2のコード候補63707は、94という対応する深度を有し得る。1110cと標識されている第3のコード候補63691は、83という対応する深度を有し得る。図11の例では、コード63706はコードブックの中にないので、有効な候補ではない。3つの深度候補D=53、D=94、およびD=83をそれぞれ考慮すると、図12に示される次のステップは、コード誤りの位置における深度マップにおける穴またはギャップを埋めるために、対応する深度53、94、および83を有する3つのコード1110a〜cのうちのいずれを選択すべきかを決定することである。
【００９５】
図12は、置換コードワード候補のセット、たとえば深度候補D=53、D=94、およびD=83にそれぞれ対応する図11に示される1110a〜cを仮定した場合の、深度マップにおける誤り訂正のプロセスの一部分を示している。図12は、領域125の中心のボックスにおいて未知の深度値Dを有する3×3の領域1215を示しており、近隣の位置における既知の深度値はそれぞれ、深度値80、81、82、82、84、84、94、および82である。深度は領域1215の中心の位置においては未知であり、それは、この中心の位置において受信されるコードは、使用されているコードブックの中の有効なコードではなかったからである。これは、たとえば、図11を参照して説明される誤り検出プロセス1150によって決定され得る。ステップ1210において、近隣の深度のメジアン深度Mを決定し、深度マップにおける8個の近隣の位置のメジアン深度値はM=82である。このメジアン深度の尺度Mは、ステップ1220において、各深度候補に対する類似性決定尺度によって使用される。ステップ1220において、各深度候補D=53、D=94、およびD=83はそれぞれ、領域1222、1224、および1226における置換深度であると考えられる。類似性の尺度Sは、ステップ1210において決定されるメジアン深度に対する深度候補の差の絶対値をとることによって、決定される。より小さいSの値は、メジアンにより類似している深度に対応する。図12の例では、ステップ1220において、D=53、D=94、およびD=83に対するSの値はそれぞれ、29、12、および1である。ステップ1230において、1という最小のSの値を有する最も類似している深度であるD=83が選択され、D=83である深度マップ領域1235をもたらす。
【００９６】
図12に示されるこの例では、3つの深度候補D=53、D=94、およびD=83が、有効性確認プロセス1170によって有効であると決定されたコードワードのために、図11の深度生成プロセス1180によって生成された。図12に示される実施形態では、3×3の近隣に対応する、8個の最も近い深度マップ位置のメジアン深度値に最も近い深度候補が選択される。いくつかの実施形態では、8個の最も近い深度位置の平均深度値に最も近い深度候補が選択される。ある実施形態では、各深度候補は、8個よりも少ない最も近い深度マップ位置(たとえば、最も近い4個の位置)のメジアン深度または平均深度と比較され得る。ある実施形態では、各深度候補は、8個よりも多くの近隣の位置(たとえば、最も近い12個、20個、25個、29個、37個、45個、または49個の近隣)のメジアン深度または平均深度と比較され得る。ある実施形態では、すべての類似性の尺度が閾値を満たさない場合、すべての深度候補が拒絶され得る。
【００９７】
本明細書において説明される手法は、送信された可能性が最も高いコードを決定することによって誤りを訂正する。対照的に、誤りを訂正しない既存の手法は、深度マップをぼかす、または平滑化するメジアンフィルタを適用するだけであり得る。この平滑化の結果が図13に示されている。画像1302aは、左手1302bおよび右手1302cを含む。左手と右手1302b〜cの両方がより少ない数のギャップを示しているが、それに対応して細部が失われている。
【００９８】
図13のメジアンフィルタによる解決法により示される細部の喪失とは対照的に、図14は、本明細書において開示される方法およびシステムを使用して深度マップのギャップを埋めることを示している。画像1404aの左手および右手1404b〜cにおいて見えるように、背後のコーディングにおける誤りに起因するギャップは低減されているが、図13に示されるメジアンフィルタの左手および右手1402b〜cよりも、相対的に細部が保たれている。
【００９９】
受信されたコードと有効なコードとの間のハミング距離を尺度として使用する方法はまず、単一のビット誤りに対応する1というハミング距離にある有効なコードを考慮することができる。1というハミング距離に有効なコードがない場合、方法は、2ビットの誤りに対応する2というハミング距離にある有効なコードを考慮することができる。2というハミング距離に有効なコードがない場合、方法は、3というハミング距離にある有効なコードを考慮することができ、ビット誤りの閾値の数に対応する閾値のハミング距離に達するまでこれを繰り返す。
【０１００】
いくつかの実施形態では、1ビットだけ受信されたコードと異なるコードブックの中の単一のコードに対応する、1というハミング距離における単一の有効なコードがある場合、そのコードは送信されたコードであると見なされ得る。1というハミング距離において2つ以上の有効なコードがある場合、これらの有効なコードは空間コード候補であると考えられ得る。
【０１０１】
いくつかの実施形態では、どの空間コード候補が最も送信された可能性が高いかを決定するために、空間コード候補の各々が、近隣の空間コードと比較されることがあり、この比較に基づいて、最も可能性の高い送信されたコードとしてある候補が選択される。たとえば、近隣の空間コードの基底関数が、候補のうちの1つと、すべての他の候補よりも一致している場合、その候補が選択され得る。ある実施形態では、空間コード候補の各々に対応する深度は、近隣の推定される深度と比較されることがあり、候補はこの比較に基づいて選択される。たとえば、近隣の深度のメジアンフィルタ値は、各コード候補に対応する深度と比較されることがあり、メジアンフィルタ値に最も近い深度を有するコード候補が選択され得る。
【０１０２】
二進数のペアの間のハミング距離Hは、2つの数の間で異なるビットの数に対応する。たとえば、2というハミング距離は、受信されたコードとコードブックの中のコードとの間で2つのビットが異なることに対応する。コードが受信されるとき、コードはまず一致についてコードブックに対して確認されることがあり、一致する場合H=0である。一致がある場合(H=0であるコード)、一致があり、おそらくビット誤りはない。一致がない場合、方法は、単一のビット誤りに対応する、H=1であるコードブックの中のすべてのコードを考慮する。H=1である1つのコードがコードブックの中にある場合、このコードが送信されたコードに対応する可能性が最も高く、深度はこのコードを使用して推定され得る。H=1である2つ以上のコードがコードブックの中にある場合、H=1であるコードが、H=1におけるコードのいずれが最も可能性の高い送信されたコードであるかを決定するために比較される。
【０１０３】
図15は、誤り訂正のためのハミング距離によってコードブックの中のコード候補を整理することの例示的な構造を示す。リスト1510は、空間コードのすべてのあり得る二進の組合せを含む、可能性のある受信される空間コードワードを載せる。有効な受信されるコードワード、たとえば63691と、無効な受信されるコードワード、たとえば63692の両方が、リスト1510の中にある。有効なコードワードは、構造化された光のコードマスクにおいてコード化され、かつ/またはコードブックに含まれる。無効なコードワードはそうではないが、ノイズの存在下で受信され得る。リスト1510の中の各々の可能性のある受信される空間コードワードは、1つまたは複数の要素を指し、または参照する。たとえば、コードワード63691は要素1520および1521を指す。コードワード63692は、要素1531、1532、および1533を指す。各要素は、各要素を指す受信された空間コードワードから指定されたハミング距離において、少なくとも1つの有効なコードワードを含む。たとえば、要素1520、1533、および1542は各々1つの有効なコードワードを含み、要素1546は2つの有効なコードワードを含み、要素1521、1531、および1544は各々3つの有効なコードワードを含む。要素1532は、4つの有効なコードワードを含む。要素1520の中のコードワードは、0というハミング距離にあり、受信されたコードワード63691と同一であり、それはこれが有効なコードワードであるからである。要素1521および1531は各々、これらの要素の各々を指す受信されたコードワードから1というハミング距離にそれぞれある、コードワードを含む。要素1532および1542は各々、これらの要素の各々を指す受信されたコードワードから2(2ビットの誤りに対応する)というハミング距離にそれぞれある、コードワードを含む。要素1546は、要素1546を指す、または参照する、受信された空間コードワード65535から6というハミング距離にある2つのコードワードを含む。2つの要素1520および1521が、そのコードワード63691と関連付けられるブロックを形成するために組み合わされ得る。同様に、3つの要素1531、1532、および1533が、コードワード63692と関連付けられるブロックを形成するために組み合わされることがあり、要素1542、1544、および1546が、受信されたコードワード65535と関連付けられるブロックを形成するために組み合わされることがある。
【０１０４】
いくつかの実施形態は、すべての可能性のあるコードのセットの中から、比較的少数の有効なコードを実装形態が有し得るという観察に基づいて、メモリ効率の良いコーディングされた光の誤り訂正手法、たとえば、図15の構造1500および/または図16の構造1600を使用し得る。たとえば、4×4の空間コードを有する実装形態は、可能性のある216すなわち65536個のコードの中から405個の有効なコードを有し得る。最も可能性の高い送信されたコードワードを決定するのにかかる時間を短くするために、方法およびシステムは、構造またはルックアップテーブル(LUT)、たとえば構造1500を使用して、有効なコードワードのセットを識別し得る。たとえば、構造1500は、65536個の可能性のある受信されたコードの各々のためにリスト1510を含む。空間コードの各々は二進で表され得るので、たとえば、4×4の空間コードは二進の数字の4×4のアレイに対応することがあり、これらの数字は0から65535までの二進数として表され得る。
【０１０５】
この例では、リスト1510(一連のエントリー)は65546個のエントリーを含み、そのうちの3つ(63691、63692、および65535)が列挙されている。63691に対応する空間コードは有効なコードである。したがって、要素1520は0というハミング距離を有する有効なコードを載せる。コード63692は有効ではないが、1521には、63691から1というハミング距離にある3つの有効なコード63693、63694、および63688がある。要素1532は、63692から2というハミング距離にある4つのコード63656、62668、51404、および39116を載せる。要素1533は、63692から3というハミング距離にある1つのコード39117を載せる。同様に、要素1542は、65535から2というハミング距離にある1つのコード65532を載せる。要素1544は、65535から4というハミング距離にある3つのコード53244、40956、および40954を載せる。要素1546は、65535から6というハミング距離にある2つのコード50171および52474を載せる。したがって、各々の一連のエントリーに対して、ルックアップテーブルは、H=0のエントリー、たとえば、コードブック内の受信されたコードに対する1520、H=1のエントリー、たとえば、1というハミング距離を有する1つまたは複数のコードがコードブックの中にある受信されたコードに対する1521および1531、ならびに、H=2のエントリー、たとえば、2というハミング距離を有する1つまたは複数のコードがコードブックの中にある受信されたコードに対する1532および1542を含む。
【０１０６】
いくつかの実装形態では、構造1500は、最大で空間コードの中のビットの数までのハミング距離にある一致するコードを含む。いくつかの実装形態では、ハミング距離には上限があることがあり、それは、その上限よりもビット誤りが多い可能性があることは、一致が有用である可能性が低すぎることとして見られることがあり(たとえば、6ビットよりも多くの誤りがある確率は0.000000001より低い)、ルックアップテーブルの中にH=7を含める理由がないことがあるからである。いくつかの実装形態では、ルックアップテーブルには、一致がある最小のハミング距離のみが格納され得る。たとえば、受信されたコードがコードブックの中の3つのコードからH=1離れており、コードブックの中の4つのコードからH=2離れており、コードブックの中の1つのコードからH=3離れている場合、この受信されたコードのためのルックアップテーブルは、H=1における3つのコードだけを含み得る。同様に、受信されたコードが厳密な一致を有する場合、ハミングルックアップテーブルは、H=0のエントリーのみを含み得る。たとえば、受信されたコード63692は、H=0のコードを含まず、3つのH=1のコード、4つのH=2のコード、および1つのH=3のコードを含む。63692に対応する4対4の空間コードが受信される場合、コードブックの中の最も可能性の高いコードは、63693、63694、および63688である(各々が単一のビット誤りのコードである)。
【０１０７】
H=0または1を有するコードがない場合、方法はH=2のコードを考慮する。H=2である1つのコードがコードブックの中にある場合、このコードが送信されたコードに対応する可能性が最も高く、深度はこのコードを使用して推定され得る。H=2である2つ以上のコードがコードブックの中にある場合、H=2であるコードが、H=2におけるコードのいずれが最も可能性の高い送信されたコードであるかを決定するために比較される。このプロセスが、H=3、4、5、および場合によってはより大きなHの値に対して繰り返し得る。
【０１０８】
図16は、誤り訂正のためのハミング距離によってコードブックの中のコード候補を整理するための構造の例を示す。図15の中のコードワードのリスト1510に対応する受信されたコードワードのリスト1610は、ノイズの存在下にある、可能性のある受信されたコードワードのセットを載せる。リスト1610は、有効な受信されたコードおよび無効な受信されたコードを含む。リスト1610の中の各コードワードは、構造1600の中のブロック(たとえば、ブロック1631〜1639のいずれか)を指す(参照する、それに対してインデクシングされる)。各ブロックは、図15に示される要素1520、1521、1531、1532、1533、1542、1544、および1546に対応する1つまたは複数の要素を含む。各要素は、各要素を指す受信された空間コードワードから指定されたハミング距離において、少なくとも1つの有効なコードワードを含む。これらの定義は、図15について上で説明されたようなブロックおよび要素の定義に対応する。構造1600は、ルックアップテーブル、インデクシングされたアレイ、リンクされたリスト、リレーショナルデータベース、または、受信されたコードワードと関連付けられる有効なコードワード、要素、および/もしくはブロックの取出しを可能にする他の構造として、メモリユニットにおいて実装され得る。
【０１０９】
ある実装形態では、この構造は、図15の構造1500に含まれるものと同じ情報を含み得る。しかしながら、構造1600は、メモリユニットにおける実装のためによりコンパクトであり得る。リスト1610は可能性のある受信されたコードを載せ、それらのうちの一部が有効であり、一部は無効である。たとえば、リスト1610は、コード63691〜63694、64123、64124、および65533〜65535を載せる。リスト1510に関して述べられるように、ある実装形態は、すべての可能性のある受信された空間コードを載せることがあるが、明快にするために図16には小さなサブセットが含まれている。リスト1610に載せられるコード63691、63694、64123、および65534は送信のために有効なコードであるが、誤りとともに受信されたコード63692、63693、64124、65533、および65535は有効なコードではない。図15に示されるように、H=0、H=1、H=2などに対するコードブックの中の有効なコードは、各コードのために決定される。たとえば、受信されたコード63692に対する図15の要素1531、1532、および1533は、単一のブロック1632へと組み合わされ得る。同様に、ブロック1631、1633、1634、1635、1636、1637、1638、および1639は各々、空間コード63691、63693、63694、64123、64124、65533、65534、および65535のハミング距離によってそれぞれ、要素を組み合わせた。
【０１１０】
図16のこのコンパクトな構造は、誤りを検出することと、次いで、余計なビット、たとえばパリティビットを追加することなく、または誤り訂正を可能にするために冗長性を使用することなく、図17において説明された方法による訂正のためのコード候補を決定することとを可能にする。開示される誤り訂正システムは、冗長性を利用する従来の方法とは本質的に異なる。コードワードに冗長な材料を加えることには、コードワードのサイズが増大するという欠点があり、これは最小の検出可能な物体のサイズを減らす。コードサイズの増大はまた、パターンの中のコードの数を減らし、これは深度マップの分解能を下げる。冗長コーディングにおけるこれらの欠点を回避するために、開示される技術は代わりに、空間基底関数の線形結合としてコードワードを選択することから考案された構造をコードに与え得る。したがって、誤り訂正能力は、コードワード構造と本質的に結びついている。これらの基底関数は、冗長性に頼ることなく誤り検出および訂正を可能にする。
【０１１１】
図17は、構造化された光から生成されるコードワードの中の誤りを訂正する方法のフローチャートである。いくつかの態様では、方法1700は、図6に関して上で論じられたデバイス600によって実行され得る。たとえば、メモリ608に記憶されているプロセッサ命令は、方法1700に関して下で論じられた機能のうちの1つまたは複数を実行するようにプロセッサ606を構成し得る。
【０１１２】
ブロック1710において、方法1700は、複数の有効なコードワードおよび少なくとも1つの無効なコードワードを受信する。複数の有効なコードワードの各々は有効なコードワードのコードブックに含まれ、コードブックは少なくとも1つの無効なコードワードを含まない。各コードワードは、構造化された光の画像の画素の少なくとも1つの行および少なくとも1つの列を表し、各コードワードは深度マップにおけるある位置に対応する。各画素は受信される光のエネルギーを表し得る。各画素は二値の値を有し得る。いくつかの実装形態では、ブロック1710の機能は、図5に示される受信機センサ508によって実行され得る。
【０１１３】
ブロック1720において、方法1700は無効なコードワードを検出する。方法1700は、無効なコードワードがコードブックに含まれないことの指示をメモリユニットから取り出すことによって、無効なコードワードを検出し得る。方法1700は、各々の受信された有効なコードワードまたは無効なコードワードがコードブックに含まれるかどうかの指示をメモリユニットに格納し得る。いくつかの実装形態では、ブロック1720の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1720の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１４】
ブロック1730において、方法1700は、メモリユニットから、コードブックに含まれるコードワード候補のセットを取り出す。各コードワード候補は、無効なコードワードから第1のハミング距離にあり、第1のハミング距離は、無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。無効なコードワードとコードワード候補の各々との間の第1のハミング距離は、異なる二値の値を有する画素の少なくとも1つの行および少なくとも1つの列の数であり得る。方法1700は、無効なコードワードから第1のハミング距離にあるコードワード候補のセットをメモリユニットに格納することができ、第1のハミング距離は無効なコードワードとコードブックの中のコードワードとの間の最小のハミング距離である。方法1700は、コードワード候補の第2のセットをメモリユニットに格納することができ、コードワード候補の第2のセットはコードブックに含まれるコードワードに対応し、コードワード候補の対応する第2のセットの各々は無効なコードワードから第2のハミング距離にあり、第2のハミング距離は第1のハミング距離より長い。いくつかの実装形態では、ブロック1730の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1720の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１５】
ブロック1740において、方法1700は、深度マップの複数の位置に対する深度推定値を決定し、深度マップの複数の位置は無効なコードワードの位置に隣接する少なくとも1つの位置を含む。方法1700は、深度マップの複数の位置のメジアン深度または平均深度を計算することによって、深度推定値を決定し得る。深度マップの複数の位置は、無効なコードワードの位置から閾値の位置の距離以下にある位置を含み得る。閾値の距離は、深度マップの複数の位置の中の4個、8個、12個、20個、および24個の位置にそれぞれ対応する、1、√2、2、√5、2、または2√2であり得る。いくつかの実装形態では、ブロック1720の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1740の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１６】
ブロック1750において、方法1700は、深度をコードワード候補の各々と関連付ける。いくつかの実装形態では、ブロック1720の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1750の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１７】
ブロック1760において、方法1700は、深度推定値に最も近い関連する深度を有するコードワード候補を選択する。いくつかの実装形態では、ブロック1720の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1760の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１８】
ブロック1770において、方法1700は、選択されたコードワード候補と関連付けられる深度を無効なコードワードの位置に割り当てる。いくつかの実装形態では、ブロック1770の機能は、図6に示されるプロセッサ606およびメモリ608によって実行され得る。いくつかの実装形態では、ブロック1770の機能は、図5に示される処理回路504およびメモリ/記憶デバイス506によって実行され得る。
【０１１９】
本明細書においてある呼称、たとえば「第1の」、「第2の」などを使用する要素へのいかなる言及も、一般には、それらの要素の量または順序を限定するものではないことを理解されたい。むしろ、これらの呼称は、本明細書では、2つ以上の要素または要素の例を区別する好都合な方法として使用され得る。したがって、第1の要素および第2の要素への言及は、そこで2つの要素しか利用できないこと、または何らかの形で第1の要素が第2の要素に先行しなければならないことを意味しない。また、別段明記されない限り、要素のセットは、1つまたは複数の要素を備え得る。加えて、説明または特許請求の範囲において使用される「A、B、またはCのうちの少なくとも1つ」という形態の用語は、「AまたはBまたはC、あるいはこれらの要素の任意の組合せ」を意味する。
【０１２０】
本明細書で使用される「決定すること(determining)」という用語は、多種多様な行為を包含する。たとえば、「決定すること」は、算出すること、計算すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、たとえばルックアップテーブル、データベースまたは別のデータ構造においてルックアップすること)、確認することなどを含み得る。また、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリの中のデータにアクセスすること)などを含み得る。また、「決定すること」は、解決すること、選択すること、選ぶこと、確立することなどを含み得る。
【０１２１】
本明細書において使用されるとき、項目のリスト「のうちの少なくとも1つ」に言及する句は、単一のメンバーを含むこれらの項目の任意の組合せを指す。例として、「a、b、またはcのうちの少なくとも1つ」は、a、b、c、a-b、a-c、b-c、およびa-b-cを包含することが意図されている。
【０１２２】
上で説明された方法の様々な動作は、動作を実行することが可能な任意の適切な手段、たとえば、様々なハードウェア構成要素および/もしくはソフトウェア構成要素、回路、ならびに/またはモジュールによって実行され得る。一般に、図に示されるいずれの動作も、動作を実行することが可能な対応する機能手段によって実行され得る。
【０１２３】
本開示に関して説明される様々な例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス(PLD)、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替として、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラまたは状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。
【０１２４】
1つまたは複数の態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されることがあり、またはコンピュータ可読媒体を介して送信されることがある。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、あらゆる接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、ワイヤレス技術、たとえば赤外線、無線、およびマイクロ波を使用してウェブサイト、サーバ、または他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、またはワイヤレス技術、たとえば赤外線、無線、およびマイクロ波は、媒体の定義に含まれる。ディスク(disk)およびディスク(disc)は、本明細書において使用されるとき、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。したがって、いくつかの態様では、コンピュータ可読媒体は、非一時的コンピュータ可読媒体(たとえば、有形媒体)を備え得る。
【０１２５】
本明細書において開示される方法は、説明される方法を実現するための1つまたは複数のステップまたはアクションを備える。方法のステップおよび/またはアクションは、特許請求の範囲から逸脱することなく、互いに入れ替えられてもよい。言い換えれば、ステップまたはアクションの特定の順序が指定されない限り、特定のステップおよび/またはアクションの順序および/または使用は、特許請求の範囲から逸脱することなく修正されてもよい。
【０１２６】
さらに、本明細書において説明される方法および技法を実行するためのモジュールおよび/または他の適切な手段は、適用可能な場合、ユーザ端末および/または基地局によってダウンロードおよび/または別様に取得され得ることを諒解されたい。たとえば、そのようなデバイスは、本明細書において説明される方法を実行するための手段の転送を容易にするためにサーバに結合され得る。代替的に、本明細書において説明される様々な方法は、ユーザ端末および/または基地局が記憶手段(たとえば、RAM、ROM、物理的記憶媒体、たとえばコンパクトディスク(CD)またはフロッピーディスクなど)をデバイスに結合または提供すると様々な方法を取得することができるように、記憶手段を介して提供され得る。その上、本明細書において説明される方法および技法をデバイスに提供するための任意の他の適切な技法が利用され得る。
【０１２７】
特許請求の範囲が、上で示された厳密な構成および構成要素に限定されないことを理解されたい。特許請求の範囲から逸脱することなく、上で説明された方法および装置の構成、動作、および詳細において、様々な修正、変更、および変形が行われ得る。
【符号の説明】
【０１２８】
102  送信機
104  コードマスク
106  シーン
107  深度マップ
108  受信機
110  コードマスク
112  セクション
114  セクション
116  投影されるセクション
118  捉えられたセグメント
120  一意に識別可能なコードワード
201  エンコーダ/形状変調器
202  送信機デバイス
204  送信チャネル
205  受信機センサ
206  デコーダ
208  深度マップ
210a  3次元のバージョン
210b  3次元のバージョン
210c  3次元のバージョン
210d  3次元のバージョン
300  デバイス
302  送信機
304  受信機
305  レンズ表面
306  物体
307  センサ表面
308  物体
310  コードワード投影
311  反射されたコードワード
312  投影されたセグメント
313  開口
315  受信機開口
402  送信機デバイス
404  処理回路
406  メモリ/記憶デバイス
408  画像投影デバイス
409  有形媒体
410  コードレイヤ
412  キャリアレイヤ
414  合成コードマスク
416  コードレイヤ生成器/選択器
418  キャリアレイヤ生成器/選択器
420  合成コードマスク生成器/選択器
422  事前形成回路
502  受信機デバイス
504  処理回路
506  メモリ/記憶デバイス
508  受信機センサ
512  基準縞検出器回路/モジュール
514  歪み調整回路/モジュール
516  コードワード識別器回路/モジュール
518  深度検出回路/モジュール
520  深度マップ生成回路/モジュール
600  装置
602  光放出器
604  光受信要素
606  プロセッサ
608  メモリ
610  バス
701a  画像
701b  手
702a  画像
702b  手
703a  画像
703b  手
704a  画像
704b  手
900  コードマスク
910  関数、回転
920  関数
922  関数
924  関数
926  関数
930  関数
932  関数
950  コード
952  コード
954  コード
956  コード
1002a  深度マップ
1002b  手
1102  無効な空間コード
1104  列
1106  コードワード候補
1108  コードブック
1110  有効なコードワード候補
1150  誤り検出プロセス
1160  コードワード候補生成プロセス
1170  有効性確認プロセス
1180  深度生成プロセス
1215  領域
1222  領域
1224  領域
1226  領域
1235  深度マップ領域
1302a  画像
1302b  左手
1302c  右手
1404a  画像
1404b  左手
1404c  右手
1500  構造
1510  リスト
1520  要素
1521  要素
1531  要素
1532  要素
1533  要素
1542  要素
1544  要素
1546  要素
1600  構造
1610  リスト
1631  ブロック
1632  ブロック
1633  ブロック
1634  ブロック
1635  ブロック
1636  ブロック
1637  ブロック
1638  ブロック
1639  ブロック
1700  方法
【図１】
0006776333.tif 000026
【図２】
0006776333.tif 000027
【図３】
0006776333.tif 000028
【図４】
0006776333.tif 000029
【図５】
0006776333.tif 000030
【図６】
0006776333.tif 000031
【図７】
0006776333.tif 000032
【図８Ａ】
0006776333.tif 000033
【図８Ｂ】
0006776333.tif 000034
【図８Ｃ】
0006776333.tif 000035
【図８Ｄ】
0006776333.tif 000036
【図８Ｅ】
0006776333.tif 000037
【図９】
0006776333.tif 000038
【図１０】
0006776333.tif 000039
【図１１】
0006776333.tif 000040
【図１２】
0006776333.tif 000041
【図１３】
0006776333.tif 000042
【図１４】
0006776333.tif 000043
【図１５】
0006776333.tif 000044
【図１６】
0006776333.tif 000045
【図１７】
0006776333.tif 000046