(57)【要約】      （修正有）【課題】モデルの姿勢を３次元データにおいてテストするなど、モデルの姿勢を画像データに対してテストすることを含む種々の態様を実行するように構成された方法、装置及びコンピュータ可読媒体を提供する。【解決手段】方法は、コンピュータ１０４、カメラ１０２を有するマシンビジョンシステム１００において、データエントリのセットを包含する物体の３次元データを受信し、３次元データを、各々関連する値を持つセルのセットを包含するフィールドに変換し、各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定する。姿勢に対するスコアを決定するために、モデルの姿勢はフィールドによってテストされる。【選択図】図１
2020061132.tif 000002
【特許請求の範囲】
【請求項１】
モデルの姿勢を３次元データにおいてテストするためのコンピュータ化された方法であって、
当該方法は、物体の３次元データを受け取るステップを有し、３次元データはデータエントリのセットを包含するものであり、
当該方法は、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換するステップを有し、前記変換するステップは各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、かつ
当該方法は、モデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定するステップを有する、
上記方法。
【請求項２】
３次元データをフィールドへと前記変換するステップは、値のセットの３次元アレイを生成することを含む、請求項１に記載の方法。
【請求項３】
３次元データをフィールドへと前記変換するステップは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する、請求項１に記載の方法。
【請求項４】
３次元データの前記データエントリのセットはポイントのリストを含んでおり、
各セルについて前記１以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む、
請求項１に記載の方法。
【請求項５】
１以上の関連するポイントについて前記ベクトルを決定することは、ポイントのリストに基づいて決定することを含み、前記セルは物体の内部部分に関連付けられており、かつ
前記ベクトルを決定することはベクトルをゼロに設定することを含む、
請求項４に記載の方法。
【請求項６】
モデルの姿勢をフィールドによってテストしてスコアを決定する前記ステップは、
モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含み、前記決定することは各プローブのドット積とフィールド内の関連するベクトルを合計することを含む、請求項５に記載の方法。
【請求項７】
各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドへと前記変換するステップは、
ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、かつ
前記変換するステップは、累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む、
請求項１に記載の方法。
【請求項８】
モデルの姿勢を３次元データにおいてテストするためのシステムであって、当該システムは１以上のプロセッサを備え、
前記プロセッサは物体の３次元データを受け取るよう構成され、前記３次元データはデータエントリのセットを包含するものであり、
前記プロセッサはさらに３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換するよう構成され、前記変換することは各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、かつ
前記プロセッサはさらにモデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定するよう構成され、てなる
上記システム。
【請求項９】
３次元データをフィールドへと前記変換することは、値のセットの３次元アレイを生成することを含む、請求項８に記載のシステム。
【請求項１０】
３次元データをフィールドへと前記変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する、前記変換項８に記載のシステム。
【請求項１１】
３次元データの前記データエントリのセットはポイントのリストを含んでおり、
各セルについて１以上のデータエントリに基づいて代表的なデータを前記決定することは、ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む、
請求項８に記載のシステム。
【請求項１２】
１以上の関連するポイントについて前記ベクトルを決定することは、ポイントのリストに基づいて決定することを含み、前記セルは物体の内部部分に関連付けられ、かつ
前記ベクトルを決定することはベクトルをゼロに設定することを含む、
請求項１１に記載のシステム。
【請求項１３】
モデルの姿勢をフィールドによってテストして前記スコアを決定することは、モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含み、前記決定することは各プローブのドット積とフィールド内の関連するベクトルの合計を含む、
請求項１２に記載のシステム。
【請求項１４】
各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドへと前記変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、かつ
前記変換することは、累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む、
請求項８に記載のシステム。
【請求項１５】
プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、少なくとも１つのコンピュータハードウェアプロセッサに以下の動作を実行させるものであり、
前記動作は物体の３次元データを受け取る動作であり、前記３次元データはデータエントリのセットを包含するものであり、
前記動作はさらに、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換する動作であり、前記変換することは各々の前記セルの値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、かつ
前記動作はさらに、モデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定する動作である、
上記非一時的コンピュータ可読記憶媒体。
【請求項１６】
前記３次元データをフィールドに変換する動作は、値のセットの３次元アレイを生成することを含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記３次元データをフィールドに変換する動作は、密集格子を生成することを含み、前記密集格子は格子の各々の前記セルに対するデータを包含する、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記３次元データのデータエントリのセットはポイントのリストを含んでおり、各々の前記セルについて１以上のデータエントリに基づいて代表的なデータを決定することは、前記ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む、請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記１以上の関連するポイントについてベクトルを決定することはポイントのリストに基づいて決定することを含み、前記セルは物体の内部部分に関連付けられ、
前記ベクトルを決定することはさらにベクトルをゼロに設定することを含む、
請求項１８に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、前記ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、かつ
前記フィールドに変換することは、累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む、
請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
モデルの姿勢を画像データに対してテストするためのコンピュータ化された方法であって、
前記方法は物体の画像データを受け取ることを含み、前記画像データはデータエントリのセットを包含するものであり、
前記方法はさらに前記画像データの領域のセットを決定することを含み、前記領域のセットにおける各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記方法はさらに処理済み画像データを生成することを含み、前記処理済み画像データは、各々関連する値を持つセルのセットを包含し、
前記処理済み画像データを生成することは、領域のセット内の各領域について、画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することと、決定された最大可能スコアに基づいて値のセットの１以上の値を設定することとを含んでおり、かつ
前記方法はさらに前記処理済み画像データを使用してモデルの姿勢をテストすることを含む、
前記方法。
【請求項２２】
画像データを受け取ることは２Ｄ画像データを受け取ることを含み、前記各データエントリは２Ｄベクトルを包含しており、
前記値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の２Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項２１に記載の方法。
【請求項２３】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、ならびに
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項２２に記載の方法。
【請求項２４】
画像データを受け取ることは３Ｄ画像データを受け取ることを含み、前記各データエントリは３Ｄベクトルを包含しており、
値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項２１に記載の方法。
【請求項２５】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、ならびに
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項２４に記載の方法。
【請求項２６】
３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換することは、
各第２のセル値について、３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定すること、ならびに
モデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストすること、
を含む請求項２１に記載の方法。
【請求項２７】
モデルの姿勢を画像データに対してテストするためシステムであって、前記システムは１以上のプロセッサを備え、
前記プロセッサは物体の画像データを受け取るよう構成され、前記画像データはデータエントリのセットを包含するものであり、
前記プロセッサはさらに画像データの領域のセットを決定するよう構成され、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記プロセッサはさらに処理済み画像データを生成するよう構成され、
前記処理済み画像データは各々関連する値を持つセルのセットを包含しており、
前記処理済み画像データを生成することは、前記領域のセット内の各領域について、前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定すること、および、決定され前記た最大可能スコアに基づいて値のセットの１以上の値を設定することを含み、かつ
前記プロセッサはさらに処理済み画像データを使用してモデルの姿勢をテストするよう構成されてなる、
前記システム。
【請求項２８】
前記画像データを受け取ることは２Ｄ画像データを受け取ることを含み、前記各データエントリは２Ｄベクトルを包含しており、
前記値のセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の２Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項２７に記載のシステム。
【請求項２９】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること
を含む請求項２８に記載のシステム。
【請求項３０】
前記画像データを受け取ることは３Ｄ画像データを受け取ることを含み、各データエントリは３Ｄベクトルを包含しており、
前記値のセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項２７に記載のシステム。
【請求項３１】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項３０に記載のシステム。
【請求項３２】
前記１以上のプロセッサは更に、
３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換し、各第２のセル値について、データエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定すること、および、
モデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストすること、
を成すよう構成されてなる、請求項２７に記載のシステム。
【請求項３３】
プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも１つのコンピュータハードウェアプロセッサに下記動作を実行させるものであり、
前記動作は物体の画像データを受け取る動作であり、前記画像データはデータエントリのセットを包含するものであり、
前記動作はさらに前記画像データの領域のセットを決定する動作であり、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記動作はさらに処理済み画像データを生成する動作であり、
前記処理済み画像データは各々関連する値を持つセルのセットを包含し、
前記処理済み画像データを生成することは、領域のセット内の各領域について、前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定し、決定された最大可能スコアに基づいて値のセットの１以上の値を設定することを含み、かつ
前記動作はさらに処理済み画像データを使用してモデルの姿勢をテストする動作である、
前記非一時的コンピュータ可読記憶媒体。
【請求項３４】
前記画像データを受け取る動作は２Ｄ画像データを受け取ることを含み、各データエントリは２Ｄベクトルを包含しており、
値のセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の２Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３５】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項３４に記載の非一時的コンピュータ可読記憶媒体。
【請求項３６】
前記画像データを受け取る動作は３Ｄ画像データを受け取ることを含み、各データエントリは３Ｄベクトルを包含しており、
値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む、
請求項３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３７】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること
を含む請求項３６に記載の非一時的コンピュータ可読記憶媒体。
【請求項３８】
さらに、前記命令は前記１以上の前記プロセッサに、
３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換させる動作であって、各第２のセル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含む前記動作、および、
モデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストさせる動作、
を実行させるよう構成されたものである、請求項３５に記載の非一時的コンピュータ可読記憶媒体。
【請求項３９】
３次元モデルの姿勢をテストするためのコンピュータ化された方法であって、
前記方法は３次元モデルを保存することを含み、前記３次元モデルはプローブのセットを包含するものであり、
前記方法はさらに物体の３次元データを受け取ることを含み、前記３次元データはデータエントリのセットを包含しており、
前記方法はさらに３次元データをフィールドのセットに変換することを含み、
前記変換することは値の第１のセットを包含する第１のフィールドを生成することを含み、前記値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、
前記変換することはさらに値の第２のセットを包含する第２のフィールドを生成することを含み、前記値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第１の特徴は第２の特徴とは異なるものであり、かつ
前記方法はさらに３次元モデルの姿勢をフィールドのセットでテストすることを含み、前記テストすることはプローブのセットをフィールドのセットに対してテストすることを含み、それにより姿勢に対するスコアが決定するものである、
前記方法。
【請求項４０】
前記第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、前記３次元アレイの各々は各次元に対するインデックスを包含する３つのインデックスのセットからなり、前記３次元アレイの各々は３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる、請求項３９に記載の方法。
【請求項４１】
前記プローブ、第１のフィールドの値の第１のセット、及び第２のフィールドの値の第２のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む、請求項３９に記載の方法。
【請求項４２】
前記姿勢に対するスコアを決定するために姿勢をテストすることは、各プローブのドット積と関連する値を合計することを含む、請求項３９に記載の方法。
【請求項４３】
さらに、
複数の関連するスコアを決定するために複数の姿勢をテストすることと、
複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定することと、
後続の処理のために姿勢のセットを保存することと、
を含む請求項３９に記載の方法。
【請求項４４】
姿勢のセットにおける各姿勢は関連するスコアのローカルピークを表し、前記方法はさらに姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む、請求項４３に記載の方法。
【請求項４５】
画像取得のためのパラメータを決定するための、１以上のプロセッサを備えるシステムであって、
前記プロセッサは３次元モデルを保存するよう構成され、前記３次元モデルはプローブのセットを包含するものであり、
前記プロセッサはさらに物体の３次元データを受け取るよう構成され、前記３次元データはデータエントリのセットを包含し、
前記プロセッサはさらに前記３次元データをフィールドのセットに変換するよう構成され、
前記変換することは、値の第１のセットを包含する第１のフィールドを生成することを含み、前記値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、
前記変換することはさらに、値の第２のセットを包含する第２のフィールドを生成することを含み、前記値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第２の特徴は第１の特徴と異なっており、かつ、
前記プロセッサはさらに３次元モデルの姿勢をフィールドのセットでテストするよう構成され、前記テストすることはプローブのセットをフィールドのセットに対してテストすることを含み、それにより姿勢に対するスコアが決定するものである、
前記システム。
【請求項４６】
前記第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、前記３次元アレイの各々は各次元に対するインデックスを包含する３つのインデックスのセットからなり、前記３次元アレイの各々は３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる、請求項４５に記載のシステム。
【請求項４７】
前記プローブ、第１のフィールドの値の第１のセット、及び第２のフィールドの値の第２のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む、請求項４５に記載のシステム。
【請求項４８】
前記姿勢に対するスコアを決定するために姿勢をテストすることは、各プローブのドット積と関連する値を合計することを含む、請求項４５に記載のシステム。
【請求項４９】
前記１以上のプロセッサは更に
複数の関連するスコアを決定するために複数の姿勢をテストし、
複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定し、かつ、
後続の処理のために姿勢のセットを保存する、
ように構成されている、請求項４５に記載のシステム。
【請求項５０】
姿勢のセットにおける各姿勢は関連するスコアのローカルピークを表し、前記プロセッサはさらに姿勢のセットを精緻化してモデルの最上の姿勢を決定するよう構成されてなる、請求項４９に記載のシステム。
【請求項５１】
プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも１つのコンピュータハードウェアプロセッサに下記動作を実行させるものであり、
前記動作は３次元モデルを保存する動作であり、前記３次元モデルはプローブのセットを包含するものであり、
前記動作はさらに物体の画像データを受け取る動作であり、前記画像データはデータエントリのセットを包含しており、
前記動作はさらに３次元データをフィールドのセットに変換する動作であり、
前記変換することは、値の第１のセットを包含する第１のフィールドを生成することを含み、前記値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、
前記変換することはさらに、値の第２のセットを包含する第２のフィールドを生成することを含み、前記値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第２の特徴は第１の特徴と異なっており、かつ、
前記動作はさらに３次元モデルの姿勢をフィールドのセットでテストする動作であり、前記テストすることはプローブのセットをフィールドのセットに対してテストすることを含み、それにより姿勢に対するスコアが決定するものである、
前記非一時的コンピュータ可読記憶媒体。
【請求項５２】
前記第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、前記３次元アレイの各々は各次元に対するインデックスを包含する３つのインデックスのセットからなり、前記３次元アレイの各々は３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる、請求項５１に記載の非一時的コンピュータ可読記憶媒体。
【請求項５３】
前記プローブ、第１のフィールドの値の第１のセット、及び第２のフィールドの値の第２のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む、請求項５１に記載の非一時的コンピュータ可読記憶媒体。
【請求項５４】
前記姿勢に対するスコアを決定するために姿勢をテストする動作は、各プローブのドット積と関連する値を合計することを含む、請求項５１に記載の非一時的コンピュータ可読記憶媒体。
【請求項５５】
さらに、前記命令は前記１以上のプロセッサに
複数の関連するスコアを決定するために複数の姿勢をテストする動作、
複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定する動作、かつ、
後続の処理のために姿勢のセットを保存する動作、
を実行させるものである、請求項５１に記載のシステム。
【請求項５６】
姿勢のセットにおける各姿勢は関連するスコアのローカルピークを表し、前記命令はさらに姿勢のセットを精緻化してモデルの最上の姿勢を決定する動作を前記１以上のプロセッサに実行させるものである、請求項５５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載する技術は、概略、画像データを処理し、画像内のパターンを検索するための技術を含む、マシンビジョンのための方法及び装置に関する。
【背景技術】
【０００２】
マシンビジョンシステムによってしばしば実行される１つのタスクは、画像内の関心のあるパターンの位置と向きを検索し特定しようとすることである。幾つかの技術は関心のあるパターンを表現するモデルを使用し、これは複数のプローブを含むことができる。各プローブは、関心のあるポイント及び関連するデータ（位置やベクトルなど）である。各プローブを使用して、例えば実行時の画像の特徴又は領域と、特定の場所のパターン特徴又は領域との類似性の測定値を決定できる。複数のプローブは複数の姿勢で実行時画像に適用でき、各姿勢でのプローブからの情報を使用して、実行時画像におけるパターンの最も可能性の高い姿勢を決定することができる。
【０００３】
パターン認識プロセスを高速化するために、幾つかの技術は、パターン検索プロセスにマルチステップ手法を使用している。例えば、第１のステップは、パターンを含む可能性のある画像内の１以上の大まかな領域を見つけようとする粗検索を含むことができる。第２のステップ（及び／又は複数の追加ステップ）を使用して、パターンに対する１以上の大まかな領域のそれぞれを検索することにより、検索を精緻化することができる。例えば、あるアルゴリズムは複数の異なるモデルを使用することができ、その場合システムは各モデルを画像の異なる関連する解像度に使用する。こうしてパターン認識プロセス中に粗い解像度と関連するモデルを使用して、最初に画像内のパターンのインスタンスの大まかな近似姿勢を識別することができる。その後、比較的精緻な解像度と関連するモデルを使用して、画像内のパターンインスタンスの姿勢をより正確に識別できる。この反復プロセスは、最も精緻な解像度モデルが使用され、パターンインスタンスの正確な姿勢が特定されるまで続く。
【発明の概要】
【０００４】
開示された主題によれば、改善されたマシンビジョン技術、特に画像内のパターンの検索の速度と精度を向上させる改善されたマシンビジョン技術のための装置、システム及び方法が提供される。
【０００５】
幾つかの態様は、モデルの姿勢を３次元デーにおいてテストするためのコンピュータ化された方法に関する。この方法は、物体の３次元データを受け取ること、この３次元データはデータエントリのセットを包含していること、３次元データをそれぞれ関連する値を持つセルのセットを包含するフィールドに変換すること、これは各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含み、及び姿勢に対するスコアを決定するためにとモデルの姿勢をフィールドでテストすることを含む。
【０００６】
幾つかの例では、３次元データをフィールドに変換することは、値のセットの３次元アレイを生成することを含む。
【０００７】
幾つかの例では、３次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【０００８】
幾つかの例では、３次元データのデータエントリのセットはポイントのリストを含み、各セル値について１以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む。１以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含むことができ、セルは物体の内部部分に関連付けられ、ベクトルを決定することは、ベクトルをゼロに設定することを含む。モデルの姿勢をフィールドによってテストしてスコアを決定することは、モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含むことができ、これは各プローブのドット積とフィールド内の関連するベクトルの合計を含む。
【０００９】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、更に累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【００１０】
幾つかの態様は、モデルの姿勢を３次元デーにおいてテストするシステムに関する。システムは、物体の３次元データを受け取ることを含み、３次元データはデータエントリのセットを包含し、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換し、これは、各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定するように構成された１以上のプロセッサを備える。
【００１１】
幾つかの例では、３次元データをフィールドに変換することは、値のセットの３次元アレイを生成することを含む。
【００１２】
幾つかの例では、３次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【００１３】
幾つかの例では、３次元データのデータエントリのセットは、ポイントのリストを含んでおり、各セルについて１以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む。１以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含んでよく、セルは物体の内部部分に関連付けられ、及びベクトルを決定することは、ベクトルをゼロに設定することを含む。モデルの姿勢をフィールドによってテストしてスコアを決定することは、モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含んでよく、各プローブとフィールド内の関連するベクトルとの合計を含む。
【００１４】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、及び累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【００１５】
幾つかの態様は、プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、少なくとも１つのコンピュータハードウェアプロセッサに、物体の３次元データを受け取ることを含み、３次元データはデータエントリのセットを包含し、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換し、これは各セル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定する動作を実行させる。
【００１６】
幾つかの例では、３次元データをフィールドに変換することは、値のセットの３次元アレイを生成することを含む。
【００１７】
幾つかの例では、３次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【００１８】
幾つかの例では、３次元データのデータエントリのセットは、ポイントのリストを含んでおり、各セルについて１以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の１以上の関連するポイントに基づいてベクトルを決定することを含む。
【００１９】
幾つかの例では、１以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含み、セルは物体の内部部分に関連付けられ、及びベクトルを決定することは、ベクトルをゼロに設定することを含む。
【００２０】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、３次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは３次元データのデータエントリのセットから１以上のデータエントリに基づいて決定されるデータであり、及び累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【００２１】
幾つかの態様は、モデルの姿勢を画像データに対してテストするためのコンピュータ化された方法に関する。この方法は、物体の画像データを受け取ることを含み、画像データはデータエントリのセットを包含する。この方法は、画像データの領域のセットを決定することを含み、領域のセット内の各領域は、データエントリのセット内の隣接するデータエントリの関連するセットを包含する。この方法は処理済み画像データを生成することを含み、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することを含む。この方法は、決定された最大可能スコアに基づいて、値セットの１以上の値を設定することを含んでいる。この方法には、処理済み画像データを使用してモデルの姿勢をテストすることを含む。
【００２２】
幾つかの例では、画像データを受け取ることは、２Ｄ画像データを受け取ることを含み、ここで、各データエントリは２Ｄベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の２Ｄベクトルに基づいてスカラー値を決定することを含む。
【００２３】
幾つかの例では、処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００２４】
幾つかの例では、画像データを受け取ることは、３Ｄ画像データを受け取ることを含み、ここで、各データエントリは３Ｄベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００２５】
幾つかの例では、３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換することは、各第２のセル値について、３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含み、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストすることを含む。
【００２６】
幾つかの態様は、モデルの姿勢を画像データに対してテストするためのシステムに関し、このシステムは物体の画像データを受け取り、画像データはデータエントリのセットを包含するように構成された１以上のプロセッサを備える。１以上のプロセッサは、画像データの領域のセットを決定し、ここで、領域のセット内の各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含するように構成されている。１以上のプロセッサは、処理済み画像データを生成し、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について、画像データから、隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定するように構成されている。１以上のプロセッサは、決定された最大可能スコアに基づいて値のセットの１以上の値を設定するように構成されている。１以上のプロセッサは、処理済み画像データを使用してモデルの姿勢をテストするように構成されている。
【００２７】
幾つかの例では、画像データを受け取ることは、２Ｄ画像データを受け取ることを含み、ここで、各データエントリは２Ｄベクトルを包含しており、値のセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の２Ｄベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００２８】
幾つかの例では、画像データを受け取ることは、３Ｄ画像データを受け取ることを含み、ここで、各データエントリは３Ｄベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００２９】
幾つかの例では、３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換することは、各第２のセル値について、３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含み、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストすることを含む。
【００３０】
幾つかの態様は、プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、少なくとも１つのコンピュータハードウェアプロセッサに、物体の画像データを受け取る動作を実行させ、この画像データはデータエントリのセットを包含している。これらの命令は少なくとも１つのコンピュータハードウェアプロセッサに、画像データの領域のセットを決定させ、ここで、領域のセット内の各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含している。これらの命令は少なくとも１つのコンピュータハードウェアプロセッサに、処理済み画像データを生成させ、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について、画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することを含む。これらの命令は少なくとも１つのコンピュータハードウェアプロセッサに、決定された最大可能スコアに基づいて値のセットの１以上の値を設定させる。これらの命令は少なくとも１つのコンピュータハードウェアプロセッサに、処理済み画像データを使用してモデルの姿勢をテストさせる。
【００３１】
幾つかの例では、命令は少なくとも１つのコンピュータハードウェアプロセッサに画像データを受け取る動作を実行させ、画像データを受け取ることは３Ｄ画像データを受け取ることを含み、ここで、各データエントリは３Ｄベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００３２】
幾つかの例では、画像データを受け取ることは、３Ｄ画像データを受け取ることを含み、ここで、各データエントリは３Ｄベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の３Ｄベクトルに基づいてスカラー値を決定することを含む。
【００３３】
幾つかの例では、処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【００３４】
幾つかの例では、命令は少なくとも１つのコンピュータハードウェアプロセッサに、３次元データを各々第２の値と関連付けられたセルの第２のセットを包含する第２のフィールドに変換する動作を実行させ、これは各第２のセル値について３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第２のフィールドによってテストする動作を実行させる。
【００３５】
幾つかの態様は、３次元モデルの姿勢をテストするためのコンピュータ化された方法に関し、この方法は、３次元モデルを保存することと、３次元モデルはプローブのセットを包含しており、物体の３次元データを受け取ることと、３次元データはデータエントリのセットを包含しており、３次元データをフィールドのセットに変換することと、これは値の第１のセットを包含する第１のフィールドを生成し、ここで、値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、第１の特徴は第２の特徴と異なっており、値の第２のセットを包含する第２のフィールドを生成し、ここで、値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第２の特徴は第１の特徴と異なっており、及び３次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定することとを含み、これはプローブのセットをフィールドのセットに対してテストすることを含む。
【００３６】
幾つかの例では、第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、ここで各３次元アレイは、各次元に対するインデックスを包含する３つのインデックスのセットからなり、各３次元アレイは、３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる。
【００３７】
幾つかの例では、プローブ、第１のフィールドの値の第１のセット、及び第２のフィールドの値の第２のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【００３８】
幾つかの例では、姿勢に対するスコアを決定するために姿勢をテストすることは、各プローブのドット積と関連する値を合計することを含む。
【００３９】
幾つかの例では、方法は、複数の関連するスコアを決定するために複数の姿勢をテストすることと、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定することと、後続の処理のために姿勢のセットを保存することとを含む。姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【００４０】
幾つかの態様は、画像取得のためのパラメータを決定するシステム関し、このシステムは、プローブのセットを包含する３次元モデルを保存し、データエントリのセットを包含する物体の３次元データを受け取り、３次元データをフィールドのセットに変換し、これは値の第１のセットを包含する第１のフィールドを生成し、ここで、値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、第１の特徴は第２の特徴と異なっており、値の第２のセットを包含する第２のフィールドを生成し、ここで、値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第２の特徴は第１の特徴と異なっており、及び３次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定し、これはプローブのセットをフィールドのセットに対してテストすることを含むように構成された１以上のプロセッサからなる。
【００４１】
幾つかの例では、第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、ここで各３次元アレイは、各次元に対するインデックスを包含する３つのインデックスのセットからなり、各３次元アレイは、３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる。
【００４２】
幾つかの例では、プローブ、第１フィールドの値の第１セット、及び第２フィールドの値の第２セットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【００４３】
幾つかの例では、姿勢をテストして姿勢に対するスコアを決定することは、各プローブのドット積と関連する値を合計することを含む。
【００４４】
幾つかの例では、１以上のプロセッサは更に複数の関連するスコアを決定するために複数の姿勢をテストし、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定し、後続の処理のために姿勢のセットを保存するように構成されている。
【００４５】
幾つかの例では、姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、この方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【００４６】
幾つかの実施形態は、プロセッサ実行可能命令を保存している少なくとも１つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は、少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、少なくとも１つのコンピュータハードウェアプロセッサに、プローブのセットを包含する３次元モデルを保存し、データエントリのセットを包含する物体の画像データを受け取り、３次元データをフィールドのセットに変換し、これは値の第１のセットを包含する第１のフィールドを生成し、ここで、値の第１のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第１の特徴を示し、値の第２のセットを包含する第２のフィールドを生成し、ここで、値の第２のセットの各値はデータエントリのセットから関連する１以上のデータエントリの第２の特徴を示し、第２の特徴は第１の特徴と異なっており、及び３次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定し、これはプローブのセットをフィールドのセットに対してテストすることを含む、動作を実行させる。
【００４７】
幾つかの例では、第１のフィールドと第２のフィールドを生成することは、各フィールドに対する３次元アレイを生成することを含み、ここで各３次元アレイは、各次元に対するインデックスを包含する３つのインデックスのセットからなり、各３次元アレイは、３つのインデックスのセットにより関連付けられた第１の値と第２の値の各々のｘ位置、ｙ位置及びｚ位置を含んでいる。
【００４８】
幾つかの例では、プローブ、第１のフィールドの値の第１のセット、及び第２のフィールドの値の第２のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【００４９】
幾つかの例では、姿勢をテストして姿勢に対するスコアを決定することは、各プローブのドット積と関連する値を合計することを含む。
【００５０】
幾つかの例では、命令は更に１以上のプロセッサに、複数の関連するスコアを決定するために複数の姿勢をテストさせ、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定させ、及び後続の処理のために姿勢のセットを保存させる。
【００５１】
幾つかの例では、姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、前記方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【００５２】
以上、開示の主題の特徴をやや大まかに述べたのは、以下に続く詳細な説明においてそれらがより良く理解されるように、また本発明の技術への寄与がより適切に評価されるようにするためである。言うまでもなく開示された主題の追加の特徴があり、それらは以下に説明されるとともに、本明細書に付属する特許請求の範囲の主題をなす。本明細書で用いられる表現及び用語は説明を目的としたものと理解すべきであり、限定するものと見なされてはならない。
【００５３】
図面において、様々な図に示されている同一又はほぼ同一の各構成要素は同じ参照符号で表されている。見やすさのため、各図面にはすべての構成要素が表示されているわけではない。図面は必ずしも縮尺通りではなく、代わりに本明細書に記載する技術及び装置の種々の側面を示すことに重点が置かれている。
【図面の簡単な説明】
【００５４】
【図１】幾つかの実施形態による例示的なマシンビジョンシステムを示す。
【００５５】
【図２Ａ】幾つかの実施形態による、フィールドを生成し、そのフィールドを使用してモデルをテストするための例示的な方法。
【００５６】
【図２Ｂ】幾つかの実施形態による、フィールドを生成するための例示的な方法を示す。
【００５７】
【図３】幾つかの実施形態による、例示的な３次元画像データ及び関連するフィールドを示す。
【００５８】
【図４】幾つかの実施形態による、粗検索用の処理済み画像データを生成する例示的な方法を示す。
【００５９】
【図５】幾つかの実施形態による、例示的な２次元画像データ及び関連する処理済み画像データを示す。
【００６０】
【図６】幾つかの実施形態による、粗検索中の例示的な姿勢のセットの除外及び関連する２次元画像データのデータエントリを示す。
【００６１】
【図７】幾つかの実施形態による、例示的な３次元画像データ及び関連する処理済み画像データを示す。
【００６２】
【図８】幾つかの実施形態による、粗検索中の例示的な姿勢のセットの除外及び関連する３次元画像データのデータエントリを示す。
【００６３】
【図９】幾つかの実施形態による、初期姿勢検索のための例示的な方法を示す。
【発明を実施するための形態】
【００６４】
以下の説明では、開示された主題の完全な理解を提供するために、開示された主題のシステム及び方法、並びにそのようなシステム及び方法が動作する環境などに関して多くの具体的な詳細が述べられる。加えて、以下に提供する例は例示的なものであり、開示された主題の範囲内にある他のシステム及び方法があることが想定されていることが理解されるであろう。
【００６５】
図１は、幾つかの実施形態による例示的なマシンビジョンシステム１００を示す。例示的なマシンビジョンシステム１００は、カメラ１０２（又は他の画像取得装置）とコンピュータ１０４を有する。コンピュータ１０４は１以上のプロセッサとコンピュータディスプレイの形態におけるヒューマンマシンインタフェース、及び任意選択で１以上の入力デバイス（例えばキーボード、マウス、トラックボールなど）を含む。カメラ１０２は、レンズ１０６及びカメラセンサ素子（図示せず）、その他の構成要素を含む。レンズ１０６は視野１０８を有し、レンズ１０６は視野１０８からの光をセンサ素子上に集束させる。センサ素子は、カメラ視野１０８のデジタル画像を生成し、その画像をコンピュータ１０４の一部を形成するプロセッサに提供する。図１の例に示すように、物体１１２はコンベア１１０に沿ってカメラ１０２の視野１０８内に移動する。カメラ１０２は、物体１１２が視野１０８内にある間に、以下に説明する処理のために物体１１２の１以上のデジタル画像を生成できる。コンベアは運転時に複数の物体を載せることがある。これらの物体は、検査プロセスなどにおいてカメラ１０２の視野１０８内を順番に通過することができる。このようにカメラ１０２は観察された各物体１１２について少なくとも１つの画像を取得することができる。
【００６６】
幾つかの実施形態では、カメラ１０２は２次元撮像装置、例えば２次元（２Ｄ）ＣＣ及び／又はＣＭＯＳ撮像アレイである。幾つかの実施形態では、２次元撮像装置は、輝度値の２Ｄアレイを生成する。幾つかの実施形態では、マシンビジョンシステムは、例えば２次元勾配フィールド画像を生成することによって２Ｄデータを処理する。勾配フィールド画像は、例えば大きさ及び方向と関連付けられたセルのセットを包含することができる。例えば勾配フィールドはベクトルのデカルト成分（ｘ、ｙ）を含むことができ、これは大きさと方向を含んでいて、勾配フィールドは実際の（ｒ、シータ）値などを保存できる。幾つかの実施形態では、カメラ１０３は３次元（３Ｄ）撮像装置である。３Ｄ撮像装置は、（ｘ、ｙ、ｚ）ポイントのセットを生成することができる（例えばｚ軸が３Ｄ撮像装置からの距離など第３の次元である場合）。３Ｄ撮像装置は、陰影からの形状復元（Ｓｈａｐｅ  ｆｒｏｍ  ｓｈａｄｉｎｇ）、ステレオイメージング、飛行時間技術、プロジェクタベースの技術及び／又は他の３Ｄ生成技術など、様々な３Ｄ画像生成技術を使用できる。
【００６７】
幾つかの実施形態では、マシンビジョンシステムは、カメラ１０３からの３Ｄデータを処理する。カメラ１０３から受け取った３Ｄデータは、例えばポイントクラウド及び／又はレンジ画像１０８を含むことができる。ポイントクラウドは、固体の表面上又はその近傍にある一群の３次元ポイントを含むことができる。例えばポイントは、直線座標系又は他の座標系での座標によって表現できる。幾つかの実施形態では、メッシュ又はグリッド構造などどのポイントが物体上で隣接しているかを示す他の情報も、任意選択で存在してもよい。幾つかの実施形態では、センサ測定値から導かれた又は以前に計算された、曲率、面法線、エッジ、及び／又は色及びアルベド情報を含む表面特徴に関する情報を入力ポイントクラウドに包含できる。幾つかの実施形態では、２Ｄ及び／又は３Ｄデータは、２Ｄ及び／又は３Ｄセンサから、ＣＡＤ又は他の個体モデルから、及び／又はレンジ画像、２Ｄ画像及び／又は他の画像及び／又は前処理によって取得できる。
【００６８】
コンピュータ１０４の例は、単一のサーバコンピュータ、一連のサーバコンピュータ、単一のパーソナルコンピュータ、一連のパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、及び／又はコンピューティングクラウドを含むことができるが、これらに限定されない。コンピュータ１０４の様々なコンポーネントは、１以上のオペレーティングシステムを実行することができ、その例にはマイクロソフトウィンドウズサーバーＴＭ、ノベルネットウェアＴＭ、レッドハットリナックス（登録商標）、ユニックス及び／又はカスタムオペレーティングシステムなどが含まれるが、これらに限定されない。コンピュータ１０４の  １以上のプロセッサは、１以上のプロセッサに接続されたメモリに保存されている動作を処理するように構成することができる。メモリは、ハードディスクドライブ、フラッシュドライブ、テープドライブ、光学ドライブ、ＲＡＩＤアレイ、ランダムアクセスメモリ（ＲＡＭ）及び読み取り専用メモリ（ＲＯＭ）を含むことができるが、これに限定されない。
【００６９】
本明細書で論じるように、物体の画像内のモデルを検索するために、技術は、画像内のモデルの近似的又は粗い位置を決定するための第１段階と、モデルの特定の位置を決定するために粗い位置を精緻化するための第２段階を含む、２つ（又はそれ以上）の段階を実行するように構成できる。複数の段階を使用すると、例えば検索の速度、効率などを改善するために段階ごとに異なる技術的手法を使用して検索を実行できるので有益である。例えば２Ｄパターン検索手法の場合、この手法はプローブのセットを包含する物体のモデルの訓練を含むことができる。２Ｄプローブの各々は、（ｘ、ｙ）位置及び方向を含むことができる。マシンビジョンシステムは、シーン（例えば図１に描かれたコンベアベルト１１０に沿って移動する物体１１２のシーン）の後で取得された実行時画像の検索で使用するために訓練されたモデルを保存する。マシンビジョンシステムは、各セルに累積光を表すピクセル値を有する２Ｄ画像などのシーンの画像を取得できる。マシンビジョンシステムは２Ｄ画像を高密度勾配フィールドに変換でき、各セルは特定の画像に対するデータの変化を反映する単一の勾配値を含む（例えば勾配は一定の範囲ではゼロに近く、エッジ付近で大きい）。勾配値は、例えばベクトル、スカラー値（例えば大きさ又は方向角）及び／又は同種のものであってよい。例えば各セルがベクトルを含む場合、ベクトルの大きさはゼロであってよい。マシンビジョンシステムは、２Ｄモデルの様々な変換（例えば平行移動、回転、スケール、スキュー、アスペクト、遠近法など）をテストして、特定の配置に対するスコアを計算できる。スコアは、例えばプローブが２Ｄ画像のベクトルにどれだけよく一致するかを反映することができる（例えば本明細書で更に論じるように、ベクトルが入力２Ｄ情報の勾配である場合）。例えば、幾つかの技術はモデルをビンごとにテストして、後続の精緻化のために最もスコアの高い位置を取ることができる。幾つかの技術は、近い検索は似ているのでローカルピークに焦点を当てるように構成でき、及びシステムはすべての近い一致を候補姿勢としてマークするのを回避しようとするように構成できる。例えば３Ｄ０コンテクストにおいて画像はレンジ画像、ポイントクラウド及び／又は同種のものであってよい。一般的な事項として、及び本明細書で更に論じるように、マシンビジョンシステムは、プローブのセットを包含する物体の３Ｄモデルを訓練することができる。マシンビジョンシステムは３次元モデルを使用して、実行時３Ｄ画像内の３Ｄモデルの姿勢を検索できる。本明細書で論じるように、マシンビジョンシステムシステムは、３Ｄモデルの姿勢の検索を容易にするために、３Ｄ画像を処理して１以上の３Ｄフィールドを生成することができる。フィールドはベクトルのセットを包含することができる。ベクトルのデカルト成分（ｘ、ｙ、ｚ）を保存でき、これらは大きさと方向を含んでいてもよく、フィールドは実際の（ｒ、ｌａｔ、ロング）値及び／又は同種のものを保存できる。
【００７０】
本明細書で論じる実施形態は、様々な異なる用途で使用することができ、その一部はビジョン誘導ロボット工学における部品ピッキング、３次元検査、自動車キッティング、成形プラスチック及び鋳造金属体積検査及び組立検査を含んでよいが、これらに限定されない。このような用途は画像内の関心のあるパターンの位置及び向きを検索して特定することを含むことができる（例えばロボットグリッパの誘導又は物体の検査のため）。幾つかの実施形態では訓練ステップを使用して、関心のあるパターンを表すモデルが開発され、これは複数のプローブを含むことができる。各プローブは、関心のあるポイント及び関連するデータ（例えば位置及びベクトル）であり、例えば実行時の画像特徴又は領域と、特定の位置におけるパターンの特徴又は領域との類似性の測定に使用できる。複数のプローブは複数の姿勢で実行時画像に適用でき、各姿勢におけるプローブからの情報は実行時画像内のパターンの最も可能性の高い姿勢を決定するために使用できる。
【００７１】
本発明者らは、既存のマシンビジョン技術が従来の３Ｄデータを使用する場合に著しい非効率に悩まされる可能性があることを発見した。特に、本発明者らは、３Ｄデータ内のポイントの隣接ポイントを検索することにより（例えばポイントクラウド内の近いポイントを検索することにより）、しばしばかなりの量の処理時間が消費されることを発見した。例えばマシンビジョンシステムは近接するデータの処理では効率的であるが、マシンビジョンシステムはデータの検索やランダムアクセスでは極めて非効率的である。特にコンピューティングデバイスは、しばしば連続したメモリ位置で繰り返されるタスクの大規模な並列化のために最適化されたハードウェアを含むことがある。そのような並列化を条件付き分岐で中断すると、パフォーマンスを大幅に減らすことがある（例えば分岐は一般的に並列活動の停止を要求し、分岐／ジャンプを実行するために時間を消費した後、並列活動に復帰するため）。本発明者らは、これら及び他の非効率に対処するために、マシンビジョン技術の技術的改善を開発した。本明細書で更に論じるように、この技術は３Ｄデータから高密度フィールドを開発することを含み、そこでは高密度フィールドは３Ｄデータに基づいて決定される各フィールド値のデータを包含する。本発明者らは、各値はデータを包含するので、マシンビジョン技術は、上述したように隣接ポイントの検索を回避するためのプロセスの一部としてフィールド値を使用することができ、これは既存のマシンビジョン技術の処理時間を大幅に削減できることを発見した。本明細書で開示される技術は、フィールド又は格子の各エントリでデータを作成し、それらを連続して処理することにより、並列化を中断する時間のかかるブランチを回避でき、それによってパフォーマンスを大幅に改善できる。
【００７２】
図２Ａは、幾つかの実施形態による、３Ｄモードをテストするために３Ｄ画像からフィールドを生成する例示的な方法２００を示す。ステップ２０２で、マシンビジョンシステムは物体の３次元データ（例えばポイントクラウド、高密度３Ｄ画像など）を受け取る。３次元データはデータエントリのセット、例えばレンジ画像（例えば各セルの高さを有する）、ポイントクラウド、及び／又は３Ｄデータに関する他の情報を包含する。ステップ２０４では、マシンビジョンシステムは３次元データをフィールドに変換する。フィールドは値のセットを包含する。この方法はフィールドの各値について、３Ｄデータから導出される代表的なデータを決定することを含む。代表的なデータは、例えばデータエントリについてベクトル及び／又は他の代表的な情報、例えば完全なベクトルの代わりに単にベクトルの大きさ及び／又は方向、マトリックス（例えば本明細書で更に論じるｖｖＴ）、及び／又は同様のものを含むことができる。この方法は、３次元データのデータエントリのセットから１以上のデータエントリに基づいて代表的なデータを決定することを含むことができる。ステップ２０６で、マシンビジョンシステムはモデルをフィールドによってテストして姿勢に対するスコアを決定する。ステップ２０８で、マシンビジョンシステムは、姿勢を受け入れることができるか、又は姿勢をスキップ（例えば無視、破棄など）すべきかを決定する。例えば、マシンビジョンシステムはフィールドに対する３Ｄモデルの姿勢を採点し、スコアが閾値を超えているかどうかを判断できる。別の例として、本明細書で更に論じるように、マシンビジョンシステムは、３Ｄモデルの姿勢を複数のフィールドに対して採点することができる。スコアが閾値に達したら（例えば閾値を超えたら）、方法はステップ２１０に進み、マシンビジョンシステムは姿勢を保存する（例えば本明細書で論じるように後続の精緻化のため）。スコアが閾値に達しなければ、方法はステップ２１２に進み、テストすべき３Ｄモデルの追加の姿勢があるか判定する。更に姿勢があれば、方法はステップ２０６に戻り、３Ｄモデルの別の姿勢をテストする。それ以上の姿勢がなければ、方法はステップ２１４に進んで終了する。
【００７３】
ステップ２０４を参照して、３次元データをフィールドに変換することは、値のセットの３次元アレイを生成することを含むことができる。例えば、３次元は３Ｄデータのｘ、ｙ、ｚ軸を表すことができる。値のセットの各値はベクトルであることができる。ベクトルは様々な方法で表すことができる。例えば幾つかの実施形態では各ベクトルはｘ、ｙ、ｚ成分として保存でき、各成分は特定の数のビット、例えば符号付き８ビット整数として表すことができ、値は−１２７〜１２７の範囲とすることができる、別の例として幾つかの実施形態では、各ベクトルは大きさ及び２つの角度を使用して表すことができる。幾つかの実施形態では、３次元データをフィールドに変換することは、密集格子を生成することを含むことができる。密集格子は、例えば格子内の各可能なスポットに対する値を含むことができる。格子内のスポットは、３Ｄデータ内のデータエントリの元の位置に接続されても接続されなくてもよい。例えば、格子スポットが３Ｄデータとは異なるグリッドを有するようにカーネルやフィルタを使用することができる。プロセスは、ポイントクラウドを高密度フィールドに変換することを含むことができ、高密度フィールドは高密度フィールドのそれぞれ可能な位置でのベクトルを包含する。
【００７４】
幾つかの実施形態では、技術はフィールドを生成する前に３Ｄデータへの変換を適用することを含むことができる。例えば、技術はフィールドを生成する前に、剛体変換、線形変換及び／又は非線形変換を適用することを含むことができる。幾つかの実施形態では、技術は歪みを考慮するために１以上の変換を適用することを含んでよい。例えばポイントクラウドは遅延により１以上の軸で値がスキューするように取得されることがあり、このスキューを考慮するためにポイントクラウドを変換できる。幾つかの実施形態で、技術は、モデルの姿勢を検索する際にモデルの歪みを検索することを含むことができる。例えばモデルの種々の変換をテストすることにより自由度の歪度を検索することができる。
【００７５】
更に図２のステップ２０４を参照して、図２Ｂは幾つかの実施形態による、フィールドを生成するための例示的な方法２５０を示す。例えば幾つかの実施形態では、この技術を使用して３Ｄポイントクラウドを高密度フィールドに変換することができる。高密度フィールドは、本明細書で更に論じるように各フィールド値におけるデータを包含する（例えばポイントクラウドはポイントのある場所のみリストし、ポイントの欠如はポイントがないか近い位置にないことを含んでいる）。上記のように、データはベクトルを包含できる。フィールドセルの（ｘ、ｙ、ｚ）は、フィールドのどこでベクトルが生じるかを示す。幾つかの実施形態では、３Ｄデータ内の３次元物体の内部にあるフィールド値はゼロに設定することができる。したがって幾つかの実施形態では、フィールドは、ポイントクラウドと比較するなど３Ｄデータと比較して情報へのアクセスを容易にする。幾つかの実施形態では、フィールドは３Ｄデータをより均一に見せることができる一方、ポイントクラウドなど他の３Ｄデータは特定の領域を強調することができる。別の例として、幾つかの実施形態ではこの技術を使用して、高密度３Ｄ画像を高密度フィールドに変換することができる。例えば本明細書で更に論じるように、システムは、高密度３Ｄ画像について各ポイントにおける勾配を決定して、方法２５０を適用することができよう。
【００７６】
ステップ２５２で、マシンビジョンシステムは各３Ｄデータエントリ（例えば３Ｄポイント）について、ベクトルのセットを決定する。例えば、マシンビジョンシステムは隣接３Ｄデータポイント位置及び／又は３Ｄセンサからの情報を使用して、各３Ｄデータエントリについて面法線ベクトル及びエッジベクトルを決定できる。いずれのベクトルも、例えば特定のデータエントリについて明確な法線又はエッジがないことを示すために、ゼロ（０）の長さを有することができる。
【００７７】
ステップ２５４で、各３Ｄデータエントリ（例えばポイント）について、マシンビジョンシステムはそれを包含するフィールドセル（例えばボクセル）を決定する。ステップ２５６で、マシンビジョンシステムは各フィールドセルに関連付けられた累積データを決定する。幾つかの実施形態では、技術は各フィールドセルに関連付けられた入力ベクトルを決定することを含む。幾つかの実施形態で、システムはそのフィールドセルに入るすべての３Ｄデータポイントに関連するベクトルに関する集約情報を累積することができる。例えば集約情報は、ベクトル成分自体（極性が有意味な場合）及び／又は他の情報、例えば各ベクトルとそれ自体の外積ｖｖＴによって形成されるマトリックスの成分を含むことができる（例えば極性が有意味でない場合に使用できる）。幾つかの実施形態では、技術は各ポイントの影響の範囲を、例えば３Ｄ特徴をぼかしたり厚くしたりすることに広げることを含むことができる。幾つかの実施形態では、システムは各３Ｄデータポイントの周囲の所定のパターンに複製を作成することができる。所定のパターンは、例えばベクトルの方向に対して相対的であってよい。例えば技術は表面を厚くすることができる（例えば法線を上下に複製することにより）、エッジを厚くすることができる（例えばエッジを折り目ベクトルの周囲の円柱内のエッジを複製することにより）などである。所定のパターンは、ベクトルが法線を表すかエッジを表すかなどベクトルが表すものによって異なってよい。
【００７８】
ステップ２５８で、マシンビジョンはステップ２５６から累積されたデータに基づいて各フィールドセルについて代表的なデータを決定する。幾つかの実施形態では、フィールドセルがいかなる累積データとも関連付けられていない場合（例えばフィールドセルに入るベクトルがないなど、いかなる３Ｄデータエントリとも関連しない場合）、フィールドセルはゼロに設定できる（例えばフィールドがベクトルを包含する場合にゼロベクトルを参照するためにゼロが使用される）。
【００７９】
幾つかの実施形態では、技術は、各フィールドセルについてステップ２５４で決定された当該セルについての累積データに基づいて代表的ベクトルを決定することを含むことができる。代表的ベクトルは、例えば成分ごとの平均を計算すること、（例えば各ベクトルとそれ自体の外積ｖｖＴを累積することによって形成される）累積マトリックスから固有ベクトルを抽出することなどによって決定できる。幾つかの実施形態では、ゼロによる除算を防いだり、代表的ベクトルの長さに寄与するデータが少ない場合にこれを減らしたりするなどのために、正則化定数を分母に追加することができる。例えばマトリクスＭは、ベクトルｖ１〜ｖｎを含むｎ個のベクトルｖのセットについて、正則化定数ｋにより次の式を用いて計算できる（簡略化のために式では示されていないが、すべてのベクトルｖｉについて合計され、ｉ＝１−ｎである）。
2020061132.tif 000003
【００８０】
幾つかの実施形態では、マシンビジョンシステムはフィールドを生成する際に（例えば姿勢テストのために）マトリックスＭを保存することができる。幾つかの実施形態では、マトリックスＭの代表的なデータ、例えばマトリックス内の６個の一意の値のみ、６個の一意の値を代表する情報（例えば単位マトリックスの一定倍数を追加して値の１つをゼロできるので６個の値のうち５個のみ（又はそれ以下））などを保存できる。
【００８１】
幾つかの実施形態では、マシンビジョンシステムは、マトリックスＭを使用して代表的ベクトルを決定することができる。例えばマシンビジョンシステムは、上記のように固有分解を使用して代表的ベクトルを決定できる。代表的ベクトルは、固有値、固有ベクトル及び／又は両方を使用して計算することができる。幾つかの実施形態では、固有値を使用して、代表的ベクトルの大きさを決定することができる。例えば最大の固有値を最大の大きさの表現として使用できる。別の例として、１以上の追加の固有値を最大固有値と組み合わせて使用できる（例えば代表的ベクトル内のベクトルの潜在的な不一致を考慮するため）。幾つかの実施形態では、固有ベクトルを使用して代表的ベクトルの方向を決定することができる。例えば最大の固有値に関連付けられた固有ベクトルを使用して、支配的な方向を表すことができる。固有値に固有ベクトルを乗算して代表的ベクトルを決定できる。例えば、最大の固有値に関連付けられた固有ベクトルに最大の固有値のみを乗算する、最大の固有値と２番目に大きい固有値の差を乗算する（例えば最大の固有値と２番目に大きい固有値が同じ値の場合はゼロであり得る）ことなどができる。幾つかの実施形態では、例えばｖｖＴから大きさの２乗を除去するために、固有ベクトルに固有値の平方根を乗算することができる。例えば、最大の固有値に関連付けられた固有ベクトルは、最大の固有値の平方根、最大の固有値と２番目に大きい固有値の差の平方根などを乗算できる。
【００８２】
幾つかの実施形態では、フィールドは正規化できる。例えば、システムは方向を変更せずに、各ベクトルの長さを（シグモイドを介して）マッピングすることによりフィールドを正規化できる。正規化を使用して、例えば閾値に対する姿勢スコアの応答を調整することができる。例えば幾つかの実施形態は、採点結果を単純に合格（例えば閾値より上）又は不合格（例えば閾値より下）としてビン分けすることができる。幾つかの実施形態では、より安定してフィールドを正規化することができる（例えばシグモイドを使用して０から１の間の長さを出力する）。
【００８３】
幾つかの実施形態では、フィールドは正規化されない。例えば幾つかの実施形態において、生データ（例えばベクトルの大きさ）は、正規化なしで有意味であり得る。例えばより短いベクトルの大きさは、法線又はエッジについての信頼／同意が少ないことを意味することができる一方、より長いベクトルの大きさはより大きい信頼を意味することができる。幾つかの実施形態では、採点技術（例えば本明細書で論じられるドット積）は、フィールドからのそのようなデータ（例えば大きさ）を組み込むことができ、したがって非正規化フィールドを使用することが望ましい場合がある。
【００８４】
幾つかの実施形態では、各フィールドセル値は、３Ｄデータ内の１つの関連するデータエントリ、３Ｄデータ内の複数のデータエントリに基づくことができ、及び／又はデータエントリのいずれにも基づかなくてもよい。幾つかの実施形態では、技術はフィールドセル値のそれぞれについてベクトルを決定することを含むことができる。例えば３次元データのデータエントリはポイントのリストを含むことができ、技術は各フィールドについてベクトルをポイントのリストに基づいて決定できる。幾つかの実施形態では、技術は上記のように、３Ｄデータにおいて物体の内部にあるフィールドに対する値を決定することができる。例えば、マシンビジョンシステムは、ポイントクラウドに基づいて１以上のフィールドセルが物体の内部部分に関連付けられていると判定して値をゼロに設定できる。
【００８５】
ステップ２０６〜２１２を参照して、上述のように方法２００を使用して、３Ｄ画像内の３Ｄモデルアライメント検索の粗い段階を実行することができる。幾つかの実施形態では、方法２００はフィールド内の３Ｄモデルの近似的な姿勢を検索することができ、これは後続のステップによって更に精緻化することができる。近似的な姿勢は、例えば（ｘ、ｙ、ｚ）位置を含む３Ｄ位置と、ロール、ピッチ及び／又はヨーなどの向きのデータを含むことができる。ステップ２０６を参照して、幾つかの実施形態ではテストは３Ｄモデルのプローブのセットをフィールドに対してテストすることを含む。例えばマシンビジョンシステムはモデルのプローブのセットをフィールドに対してテストして、各プローブのドット積とフィールド内の関連するベクトルを合計することによってスコアを決定できる。幾つかの実施形態では、図９に関連して更に論じるように、スコアは折り目エッジ情報、オクルージョン境界情報、色情報、強度情報などの複数の値（例えば複数のフィールド）に基づくことができる。
【００８６】
図３は、幾つかの実施形態による、例示的な３次元画像データ３００及び関連するフィールド３５０を示す。フィールド３５０は、図２Ｂの方法２５０を使用して生成することができる。３Ｄ画像データ３００は、データエントリ３０２Ａ〜３０２Ｎのセット（集合的にデータエントリ３０２）を包含する。各データエントリ３０２について、マシンビジョンシステムはベクトルのセットを決定できる。例えばマシンビジョンシステムは、図３に示すようにデータエントリ３０２Ａに対してベクトルｖ１〜ｖｎを決定できる。フィールド３５０は、値３５２Ａ〜値３５２Ｎ（集合的にセル３５２）と関連付けられたセルのセットを包含する。３Ｄ画像データ３００をフィールド３５０に変換するために、マシンビジョンシステムは１以上の機能を実行して、決定されたベクトルを関連するフィールド値に変換することができる。例えば値３５２Ａについて示されるように、マシンビジョンシステムはデータエントリ３０２Ａのベクトルｖ１〜ｖｎ上で動作する機能を実行して、データエントリ３０２Ａに対する集約情報「ｓ」を生成できる。本明細書で論じるように、この機能に対する結果値ｓは、単一のベクトル、スカラー値（例えばベクトルの大きさ）及び／又は他の集約情報であることができる。この機能を各データエントリで実行して、フィールドの関連する値を投入できる。図３は、データエントリ３０２Ａのベクトルｖ１〜ｖｎのセットのみを示しているが、これは単に技術を説明するための例示を目的としている。本明細書で論じるように、この技術は各フィールドセルに対して関連する値を決定するために使用される複数のデータポイントに関する情報を累積することを含むことができる。
【００８７】
上述のように、集約情報「ｓ」は、最終的な代表的ベクトル（図３には示されていない）に変換することができる。例えば幾つかの実施形態では、集約情報「ｓ」は、当該セルに累積されたエントリの数（例えば任意選択で分母の正則化定数）で除算する成分ごとの平均を計算することによって最終的な代表的ベクトルに変換できる。別の例として幾つかの実施形態では、情報を累積するために使用されるマトリックスから固有ベクトルを抽出することができる。
【００８８】
本発明者らは、画像データ内のモデルの検索は、２Ｄデータであろうと３Ｄデータであろうと、データに対するモデルの各姿勢を繰り返しテストする必要があるために時間のかかるプロセスであると判断した。例えば検索を実行する際に、検索空間の次元（例えば２Ｄ及び／又は３Ｄ実行時データなどの画像データ及び／又はフィールド）、及び姿勢空間の次元（例えば、ｘ、ｙ、ｚ、ロール、ピッチ、ヨウ、スケール、スキュー、アスペクト、パースペクティブ及びその他の非線形歪みなど）がある。次元が増加するほど、画像データ内のモデルを検索する姿勢が増え、モデルを検索するために必要な処理が増加する。
【００８９】
本発明者らは、モデルを検索する前に画像データを処理する技術を開発した。処理された画像データによりシステムは、検索中に潜在的姿勢空間の大部分を除外することができる。マシンビジョンシステムは、検索空間で大規模なスポット検査を実行して、それらの範囲を精緻化し、処理速度を大幅に向上させるように構成できる。更に以下に論じるように、処理された画像データによりマシンビジョンシステムは、姿勢が精緻化される際にマシンビジョンシステムがスコアを良くするはずの（例えば所定の閾値を上回る）姿勢を見逃さないことを確保するように任意の大きさのステップを取ることができる。この技術は、例えば検索速度を向上させるために使用できるが、姿勢が精緻化されていると見なされるはずの姿勢を逃す可能性があるダウンサンプリング技術とは対照的である。幾つかの実施形態では、本明細書で述べる技術は、画像データ（例えばフィールド）と同じ次元にあるサンプリングを提供でき、画像データのデータエントリのグループを単一の値に還元する。処理済み画像データ内の値のセットにより、マシンビジョンシステムは、モデルが画像データ内のいずれかの関連する姿勢に見出せないかテストすることが可能となる。
【００９０】
本明細書で更に論じるように、この技術は一般に検索を１以上の層に分割することができる。例えば技術は、処理済み画像データの第１の層（例えば層１）と処理済み画像データの第２層（例えば層２）を含む画像データの２つの異なる層を生成して、画像データのより大きい検索領域を生み出すことができ、そこでは第２層における大きい検索領域はそれぞれ第１層の多数の小さい領域を累積して表している。システムは下位層の大きい領域をそれぞれ処理して、上位層（例えば層「１」が層「２」の上位層である場合）における小さい領域を姿勢について検索するかどうか決定できる。本明細書で論じるように、システムは第３層及び／又はそれ以上の層を使用することができ、下位層はそれぞれ先行する層より大きい領域を使用して生成される。幾つかの実施形態では、より大きい領域を関連する小さい領域の最大スコア限度を使用して分析できる。この最大スコア技術を使用して、システムはモデルが領域内の値より高いスコアを得ないと判定することが可能になる。したがってシステムは最大スコア技術を使用して、上位層の関連する領域におけるいずれかの可能な姿勢が十分に高いスコアを得て、それらの姿勢が画像データをテストする際に更に調べる価値があるかどうか判定することができる。そうでない場合は、システムは当該領域に関連するいずれのデータエントリもそれ以上の検討に値しないと判定できる。
【００９１】
図４は、幾つかの実施形態による、粗検索のための例示的な方法４００を示す。ステップ４０２で、マシンビジョンシステムは物体の画像データ（例えばポイントクラウド、高密度３Ｄ画像などの２Ｄデータ又は３Ｄデータ）を受け取る。画像データはデータエントリのセットを包含し、これは勾配情報、ベクトル及び／又は同種のものを含むことができる。ステップ４０４で、システムは画像データの領域のセットを決定する。各領域は、画像データから関連する隣接データエントリのセットを包含する。ステップ４０６で、システムはこの領域のセットを使用して処理済み画像データを生成する。本明細書で更に論じるように、処理済み画像データは、それぞれ関連する値を有するセルのセットを包含する。システムは各領域について画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することにより、処理済み画像データを生成できる。ステップ４０８で、システムは処理済み画像データを使用してモデルの姿勢をテストして、姿勢に対するスコアを計算する。ステップ４１０で、システムはスコアが所定の閾値に達しているか判定する。スコアが閾値に達しない場合、方法はステップ４１２に進んで、後続の姿勢のテストから１以上の領域を除外する。スコアが閾値に達する場合、方法はステップ４１４に進んで姿勢を保存する（例えば後続の精緻化のため）。ステップ４１６で、システムは更にテストする姿勢があるかどうかを判定し、ある場合は、方法はステップ４０８に戻り、ない場合は、方法はステップ４１８で終了する。
【００９２】
ステップ４０２を参照して、画像データは任意のタイプのデータを表すベクトルフィールドであることができる。例えばベクトルフィールドは１以上の（ａ）面法線ベクトル、（ｂ）折り目エッジベクトル（例えば本の側面などの物体の実際のエッジ、及び／又はシルエット又はマグカップのエッジなどのオクルージョンエッジ、マグカップは円筒形であるためマグカップの実際のエッジではない）、及び／又は（ｃ）物体の色に基づくエッジなどのカラーエッジベクトル（例えば縞模様の物体など３ある色が終わり別の色が始まる場所）。幾つかの実施形態では、この技術は本明細書で更に論じるように、複数のフィールドを使用して実行することができる。幾つかの実施形態でマシンビジョンシステムは、受け取った画像データ（例えば２Ｄ及び／又は３Ｄ画像データ）に基づいてベクトルフィールドを決定することができる。
【００９３】
ステップ４０４を参照して、マシンビジョンシステムは画像データ内の領域のセットを決定することができる。例えば領域は、図５〜図８に関連して更に後述するように、各画像データから同数のデータエントリを含むことができる。例えば２Ｄデータの場合、各領域には１６×１６データエントリ、１６×８データエントリ、８×８データエントリ、４×４データエントリ、４ｘ３データエントリなどを包含できる。別の例として３Ｄデータの場合、各領域は１６×１６×１６データエントリ、８×８×８データエントリ、１６×８×８データエントリ、５×５×５データエントリなどを包含できる。
【００９４】
幾つかの実施形態では、領域は他の近くの領域の間でオーバーラップする。例えば図５〜図８に関連して更に後述するように、マシンビジョンシステムはデータエントリからデータエントリへ反復的に移動できて、隣接するデータエントリに基づいて領域（例えば、隣接位置における所定の数のデータエントリ）を決定する結果として、近い領域のデータエントリの間に若干のオーバーラップがある。例えば図７〜図８に関連して後述するように、領域が３Ｄデータのデータエントリの２×２×２領域である場合、第１の領域はその隣接領域と４データ単位だけオーバーラップする。
【００９５】
幾つかの実施形態では、マシンビジョンシステムを隣接する領域間で若干のオーバーラップがある領域を決定するように構成することにより、より良い姿勢テストを提供できる。例えばオーバーラップする領域を使用すると、オーバーラップしない領域を使用する場合と比べてより良好な姿勢テストを提供できる。例として、マシンビジョンシステムは複数のプローブを有するモデルを使用しており、これらのプローブは互いに対して異なる位相を持つことができると仮定する。また、この例に対してプローブがデータ単位及び／又は領域に関して整数の間隔を持っていると仮定する。その結果として、例えばプローブは複数のデータ単位によって共有される場所に潜在的に入る代わりに、特定のデータ単位内に入るであろう。このような例でマシンビジョンシステムが領域をオーバーラップしないように決定したら（例えば領域は隣接領域とデータエントリを共有しない）、処理済み画像データは元の画像データの解像度を減じるであろう。したがって元の画像データ内のプローブの位置は処理済み画像データ内でテストできない可能性がある。単純な例として、モデルの２つの隣接するプローブが元の画像データの並列データエントリに該当し、マシンビジョンシステムが２×２のデータエントリ領域を使用して処理済み画像データを決定すると仮定する。この例では、２つのプローブの１つは、テストされる各姿勢で処理済み画像データ内の２つの領域の間のライン上に位置するであろう（例えば処理済み画像データを計算する際に画像データの解像度が低下するので）。したがってこの例ではマシンビジョンシステムは、プローブを処理済み画像データ内の２×２近傍内の最大スコアに照らしてテストできないであろう。マシンビジョンシステムは処理済み画像データ内の当該プローブをテストすることができないので、マシンビジョンシステムは例えば本明細書で論じるように最大可能スコアを使用して決定されたモデルに対するスコアを正しく推定できないであろう。したがってこれによりマシンビジョンシステムは以後のテストのために姿勢を誤って無視し及び／又は姿勢の潜在的な場所を含んでいない姿勢を以後のテストに含めたりすることがある。
【００９６】
若干のオーバーラップを有するように領域を計算すると、マシンビジョンシステムは各姿勢をテストすることができる。例えば各データエントリにおける最大の動作を計算することによって（例えば図５〜図８に関連して述べるように）解像度が低下しない場合は、マシンビジョンシステムのそれぞれ可能なプローブは、処理済み画像データの計算された値に直接一致することができる（例えばマシンビジョンシステムはこのようにして元の画像データの正しい２×２領域に照らしてテストできる）。この場合、マシンビジョンシステムは次のテストのためにモデルを有利に１セル以上（例えば２セル以上）シフトさせることができる。このやり方でモデルをシフトさせることができる。なぜなら領域の構造と本明細書で論じる最大スコア技術のために、１つのテストでマシンビジョンシステムが間接的に上位層の画像データ内で完全な２×２領域を評価したら、マシンビジョンシステムが次にテストする必要がある場所は、画像データの次の隣接する（オーバーラップしない）２×２領域だからである。こうしてこの技術により個々のプローブは、先行のテストで（暗黙的に）評価したセルの一部の再評価をスキップでき、これによりシステムはモデルを１セル以上有利にシフトさせることができる。
【００９７】
ステップ４０６を参照して、技術は画像データ（例えば上述したベクトルフィールド）を使用して同一又は類似の解像度の処理済み画像データ（例えば新しいベクトルフィールド）を生み出すように構成できるが、そこでは処理済み画像データの各値が、特定のデータエントリを包含する画像データエントリのグループ内に入るモデルプローブの最大可能スコアを表す。例えば採点法は、画像データの特定のプローブ及びデータエントリに対して達成可能な最大可能スコアを有していてもよい（例えばこれはプローブの実際のデータに応じて低くなる可能性がある）。システムが処理済み画像データ内でモデル姿勢の保守的な検索を実行できるようにするために、技術は画像データエントリのグループに対する最大可能スコアを決定でき、プローブが各データエントリに完全に一致すると仮定して、処理済み画像データに対する結果値としてそれらの最大スコアの最大値を取ることができる。これにより例えば結果値に対してテストされるプローブは、これらの値に関連付けられたデータエントリが潜在的に十分なスコア有して、結果値を決定するために使用された個々のデータエントリのグループを個別にテストするに値するか決定できる。
【００９８】
幾つかの実施形態で、モデル内の各プローブは単位ベクトルであることができ、プローブの２乗ドット積と対応する画像データを計算することを含む採点法を使用してモデルの特定の姿勢を採点することができる。これは大きさとそれらの間の余弦の積の２乗を計算し、その結果としてより整列するほどスコアが高くなる。２乗ドット積を使用すると、プローブが正確に一致する場合は、スコアは当該データエントリ（例えばベクトル）の長さの２乗となるであろう。そのためデータエントリベースでは、最大スコアは長さの２乗を反映し、これは任意の単位長のプローブが達成し得る最大可能スコアである。そのような例では、処理済み画像データの各値には、入力された画像データにおけるデータエントリの領域で見出される、データエントリ（例えばベクトル）の大きさの２乗の最大値が投入される。したがってこの技術は、画像データ（又はより小さい領域）の個々のデータエントリを領域全体の最大スコアで集約できる。
【００９９】
ステップ４０８を参照して、処理済み画像データは、モデルをテストするために使用されたタイプの画像データであるかのようにテストできる（例えば導出されたベクトルフィールド、例えば２Ｄ勾配フィールド、及び／又は上で説明した法線、エッジ、３Ｄのカラーフィールド）。例えば、処理済み画像データが決定されると、モデルのプローブをテストしてスコア（例えば大きさの合計）をテストすることにより、特定の姿勢についてモデルをテストできる。プローブが特定の領域についてテストされるとき、プローブが領域内のどこかにある場合、この技術によりシステムはモデルに対するスコアが当該領域の値より高くないように決定できる。なぜならそれは上で論じたように全領域における最大値だからである。したがって領域に関連付けられた各データエントリに対してスコアをより高くすることはできないため、領域の関連する値が当該領域の上限である。
【０１００】
ステップ４１０〜４１４を参照して、テストされる姿勢はまばらであることができる一方、計算されたスコアは、テストされた姿勢の範囲内で最良の姿勢の実際のスコアより低いことはあり得ないことを保証する。例えば以下で更に論じるように、領域が２Ｄ画像データのデータエントリの８×８セットであるように構成されている場合、モデルの姿勢が領域の特定の値の閾値に達しなければ、システムは以下に図６に関連して更に論じるように、次のレベルで当該領域の残りの値のテストをスキップできる。したがって、システムがプローブのセットをモデルに対してテストして閾値に達しないスコアを計算する場合、システムはテストされた領域に関連付けられたすべての値を以後のテストから除外できる。姿勢が閾値を超えている場合、システムはこれらの関連するデータエントリを後にさらなる精緻化のために参照するように書き留めておくことができる。さらなる精緻化は、例えば本明細書で説明されるように、方法４００をより小さい領域サイズ及び／又は精緻化された検索で実行することを含むことができる。
【０１０１】
ステップ４１８を参照して、方法４００の出力は、所定の閾値を超えるスコアを得ることができるモデルの姿勢のセットである。閾値を超えるスコアを得ることができなかった姿勢の範囲は、再度考慮する必要はない。幾つかの実施形態では、上述のように、方法４００はピラミッド型スキームに適用することができ、各ステージの出力は、次のより高い解像度の段階への入力である。例えば第１の段階では特定のサイズの領域（１６個のデータエントリ、８個のデータエントリなど）を使用でき、第２の段階ではより小さいサイズの領域（例えば１２個のデータエントリ、１０個のデータエントリ、４個のデータエントリなど）を使用できるなど。方法４００により、マシンビジョンシステムは処理済み画像データで上位層の検索を実行でき、それによりマシンビジョンシステムは姿勢をテストする際により大きいステップを取ることができ（例えば各次元で１つの正方形ではなく複数の正方形を移動する）、以下で更に論じるように、本質的に一度に複数の姿勢をテストすることが可能になる。
【０１０２】
マシンビジョンシステムは、方法４００を実行して、２Ｄ及び／又は３Ｄデータを包含する様々なタイプの画像データを処理することができる。図５〜図６は２Ｄ画像データの処理の例を提供し、図７〜図８は、３Ｄ画像データの処理例を提供する。図５を参照すると、図５は、幾つかの実施形態による２次元画像データ５００と、関連する処理済み画像データ５５０の例示的な部分を示している。この例では２次元画像データ５００は、集合的にデータエントリ５０２と呼ばれる５０２Ａ〜５０２Ｎの２Ｄデータエントリを包含している（例えば格子のセル）。各データエントリ５０２は、ｖ１、ｖ２などで示す関連する２Ｄベクトル有する（例えばこの例ではデータエントリ５０２Ａはベクトルｖ１、データエントリ５０２Ｎはｖ４を有する）。図５に示すように、システムは、２×２構成の４つのデータエントリの領域を使用して２Ｄ画像データを処理するように構成されている。これらの領域のうち２つは、５０４Ａ及び５０４Ｂとして示されている。これらの例示的な領域で示されているように、システムは２Ｄ画像を反復的に通過して領域を特定するように構成できる。この例では、システムが各データエントリか移動するとき（例えば反復的に左から右、上から下の方式）、各領域は現在のデータエントリの他に、右へのデータエントリ、下へのデータエントリ、及び右へのデータエントリと下へのデータエントリとの間のデータエントリを包含している。
【０１０３】
引き続き図５を参照すると、処理済み画像データ５５０は、集合的に５５２と呼ばれる値５５２Ａ〜値５５２Ｎを有するセルを包含している。マシンビジョンシステムは、各領域のデータエントリを処理する機能を実行して、処理済み画像データ内の関連するセルに対する結果値を決定するように構成されている。本明細書で論じるように、この機能は領域内の関連するデータエントリのベクトルを使用する最大スコア機能であることができる。例えばシステムはこの機能を使用して領域５０４Ａの関連するデータエントリのベクトルｖ１、ｖ２、ｖ４及びｖ５を処理して結果値ｆ１を計算し、システムはこれをセル５５２Ａの値を決定するために使用する。別の例として、システムは領域５０４Ｂの関連するデータエントリのベクトルｖ４、ｖ５、ｖ７及びｖ８を処理して結果値ｆ７を計算し、システムはこれをセル５５２Ｂの値を決定するために使用する。
【０１０４】
図６は、幾つかの実施形態による、粗検索中の２次元画像データの姿勢のセットの例示的な除外を示す。図６は、図５から例示的な２次元画像データ５００と、関連する処理済み画像データ５５０を示している。本明細書で論じるように、モデルに対するスコアはモデルの複数のプローブに基づいて計算される。例示のために、図６は、セル５５２Ａに入るモデルに対するプローブの１つが、モデルの姿勢をテストする際に不十分なスコアを有すると判定されることを示している。セル５５２Ａは処理済み画像データ５５０に示された層で考慮から除外されて、２次元画像データ５００は上方へ１層移動するので、テストされたプローブの位置に対応する姿勢は、すべて以後の考慮（例えば２次元画像データ５００内の残りの候補位置で動作する絞り込み検索のため）から除外される。
【０１０５】
したがって図６に示すように、処理済み画像データ５５０により表される層でテストする場合（例えば次の層５００各値ごとに４つのデータエントリを集約する層）、層５５０で１つの姿勢しかテストしないときは画像処理システムは層を踏み越えて、本質的に次の層５００における姿勢のグループをテストできる。図５〜図６の例に示されているように、システムは（既述したようにセル５５２Ａに入るおそらく多くのモデルプローブの１つを有する）モデルをテストし、ｆ１は領域５０４Ａにおける４つのデータエントリに最大値を表し（同様のことは図示されないセルに照らしてテストされる他のプローブにも該当する）、システムはそれらの姿勢は十分なスコアを得ないと判定できるので、２次元データ５００において対応する姿勢のいずれも十分に高いスコアを得ることはできない。したがって図示されているように、処理済み画像データ５５０の上位層検索により、マシンビジョンシステムは姿勢をテストする際により大きいステップを取ることができる（例えば図５に示すように２×２領域を使用する場合、各次元で１つの正方形ではなく２つの正方形を移動する）ことができ、本質的に一度に複数の姿勢をテストすることが可能になる（例えば２×２領域を使用する場合は一度に４つの姿勢）。
【０１０６】
図７は、幾つかの実施形態による、例示的な３次元画像データ７００と、関連する処理済み画像データ７５０を示す。３Ｄ画像データ７００は、集合的にデータエントリ７０２（例えば３Ｄベクトルフィールド）と呼ばれる３Ｄデータエントリ７０２Ａ〜７０２Ｎのセットを包含する。各データエントリ７０２は、ｖ１１、ｖ１２などで示される関連する３Ｄベクトルを有する。この例では第１の層内の各ベクトルはｖ１Ｘで示され、Ｘは当該層の特定のデータエントリを指す（例えばこの例ではデータエントリ７０２Ａとデータエントリ７０２Ｎはいずれも第１層にあるため、それぞれベクトルｖ１１及びベクトルｖ１４を有する）。図７に示されているように、システムは１つの層からの４個のデータエントリと次の層からの４個のデータエントリを包含する８個のデータエントリの領域を使用して３Ｄ画像データを処理するように構成されている。これらの領域の２つは７０４Ａ及び７０４Ｂとして図示されており、それぞれ第１の層からの４個のデータエントリと第２の層において対応する４個のデータエントリを包含する。本明細書で論じるように、システムは反復的に３Ｄ画像を通過して領域を特定する。この例では、システムは３Ｄ画像データ７００内の各データエントリ（例えば行、列及び奥行き）を横断するので、システムは、現在のデータエントリの他に、右へのデータエントリ、下へのデータエントリ、右へのデータエントリと下へのデータエントリとの間のデータエントリ、及び次の層内の同じ位置で対応する４個のデータエントリを包含する新しい領域を決定する。
【０１０７】
引き続き図７を参照して、処理済み画像データ７５０は、集合的にセル７５２と呼ばれる、値を有するセル７５２Ａ〜７５２Ｎを包含している。マシンビジョンシステムは、各領域のデータエントリを処理する機能を実行して、処理済み画像データ内の関連するセルに対する結果値を決定するように構成されている。本明細書で論じるように、この機能は領域内の関連するデータエントリのベクトルを使用する最大スコア機能であることができる。例えばシステムはこの機能を使用して領域７０４Ａの関連するデータエントリのベクトルｖ１１、ｖ１２、ｖ１４、ｖ１５、ｖ２１、ｖ２２、ｖ２４及びｖ２５を処理して結果値ｆ１１を計算し、システムはこれをセル７５２Ａの値を決定するために使用する。別の例として、システムは領域５０４Ｂの関連するデータエントリのベクトルｖ４、ｖ５、ｖ７及びｖ８を処理して結果値ｆ７を計算し、システムはこれをセル５５２Ｂの値を決定するために使用する。
【０１０８】
図８は幾つかの実施形態による、粗検索中の３次元画像データの姿勢のセットの例示的な除外を示す。図８は、例示的な除外と、図７からの関連する処理済み画像データ７５０とを示している。本明細書で論じるように、モデルに対するスコアは、複数のモデルプローブに基づいて計算される。例示のために、図８は、セル７５２Ａに入るモデルのプローブのうち唯一のプローブのみ例示目的で示しているが、本明細書で論じるようにモデルプローブの各々が関連するセルに照らしてテストされて、姿勢のスコアが不十分であると決定される。セル７５２Ａは処理済み画像データ７５０に示された層で考慮から除外されて、３次元画像データ７００は上方へ１層移動するので、領域７０４Ａにおける対応する８個の姿勢はすべて以後の考慮（例えば３次元画像データ７００内の残りの候補位置で動作する絞り込み検索のため）から除外される。
【０１０９】
図７及び図８に示すように、この技術を３Ｄ画像データに適用する場合、姿勢空間は次元数のためにかなり大きくなることがある。一部の３次元画像及び／又は３次元用途において、潜在的姿勢の大きい空間のうち良い候補を包含できる潜在的姿勢の空間の割合は小さくてよい（例えば物体が画像のごく一部のみ占める）。別の例として、一部の３次元画像及び／又は３次元用途において、関連する領域から離れた小さい回転は、非常に低いスコアを得て始まることがある。この技術は（例えば図７に示された処理済み画像データ７５０を使用して）上位層検索を活用して、許容可能なスコアを得ることができない姿勢の大きいセットを迅速に排除することができる。上位層の検索により、マシンビジョンシステムは姿勢をテストする際により大きいステップを取る（例えば図７に示すように２×２×２領域を使用する場合、各次元で１つの正方形ではなく２つの正方形を移動する）ことができ、本質的に一度に複数の姿勢をテストすることが可能になる（例えば２×２×２領域を使用する場合は一度に８つの姿勢）。
【０１１０】
本発明者らは、単一のフィールドのみを使用してパターンマッチングを実行すると、十分な情報が得られない可能性があると判断した。例えば幾つかの技術は、単一の法線フィールドを用いて物体の表面上のプローブを探すために、種々の姿勢構成を試みてフィールド全体で各姿勢にスコアを付ける。しかしながら面法線フィールドだけを使用することは、例えばシーンに訓練された物体に似た同じ面法線を持つ１以上の大きい範囲がある場合に問題となることがある。例えば３Ｄモデルが本に対して訓練されて、シーンに本の代わりにテーブルが含まれている場合、本は面法線ベクトルのみを使用するとテーブル全体で多くの一致を持つであろう。それゆえ法線フィールドを用いてモデルの近似位置の初期粗検索を実行すると、フィールド内の情報が不十分で初期姿勢を以後の精緻化のための考慮から除外できない可能性がある。本発明者らは、単一のフィールドを超えた追加的情報を使用するマシンビジョン検索技術の技術的改善を開発した。本明細書で更に論じるように、この技術は追加的情報、例えば折り目エッジ、オクルージョン境界、色、強度及び／又は同種のものに関する情報を使用することを含んでよい。追加的情報は検索プロセスのための１以上の個別のフィールドに保存できる（例えばプローブの法線データは法線フィールドに一致させ、プローブのエッジデータはエッジフィールドに一致させることができる）。マシンビジョンシステムは各タイプのデータをテストでき、複数のテストを使用して特定の姿勢に対する最終スコアを決定できる（例えば個々のスコアを合計するなど）。複数のフィールドを使用することにより、物体に関する追加的情報を用いて検索プロセスの効率を高めることができる。例えば法線とエッジの両方の情報を検索することにより、法線フィールドではスコアが高く、エッジフィールドではスコアが低い姿勢を除外することできる。別の例として、この技術は同型の物体など、特定のタイプの物体を検索するシステムの能力を高めることができる。例えば缶の特定の姿勢を検索することは難しいかもしれないが、この技術は検索を改善するために色及び／又は反射率などの缶の別の情報を含むことできる（例えば缶の形状だけでは十分でないことがある）。
【０１１１】
図９は、幾つかの実施形態による、３次元モデルの姿勢の初期検索を実行するための例示的な方法９００を示す。ステップ９０２で、マシンビジョンシステムはプローブのセットを包含する３次元モデルを保存する。ステップ９０４で、システムは３Ｄデータエントリのセットを包含する物体の３Ｄデータ（例えばポイントクラウド、奥行き画像など）を受け取る。ステップ９０６で、システムは３次元データを２以上のフィールドに変換する。第１のフィールドは、それぞれ３Ｄデータエントリから関連する１つのデータエントリ又は複数のデータエントリの第１の特性を示す値の第１のセットを包含する。第２のフィールドは、それぞれ３Ｄデータエントリから関連する１つのデータエントリ又は複数のデータエントリの第２の特性を示す値の第２のセットを包含する。ステップ９０８で、システムは３Ｄモデルの姿勢を、フィールドのセットでテストして、姿勢に対するスコアを決定するが、これはプローブのセットをフィールドのセットに照らしてテストすることを含む。ステップ９１０で、システムはスコアが所定の閾値に達するかどうかを判定する。スコアが閾値に達する場合、方法はステップ９１２に進み、姿勢を保存する（例えば後続の精緻化のため）。スコアが閾値に達しない場合、方法はステップ９１４に進み、更にテストすべき姿勢があるか判定し、あれば方法はステップ９０８に戻り、なければ方法はステップ９１６で終了する。
【０１１２】
ステップ９０２を参照して、モデルは本明細書で論じるように、訓練されたモデルであることができる。各プローブには、１以上のベクトルを包含できる。例えばプローブは位置ベクトル（例えば（ｘ、ｙ、ｚ）位置と（ｘ、ｙ、ｚ）方向）を表すことができる。プローブは、例えば法線データ、エッジデータ、強度データ、強度勾配データ、及び／又は他の情報を表すことができる。法線データは、例えば表面上のポイントとその法線方向（例えば法線プローブ）を含むことができる。エッジデータは、例えば物体の折り部又は物体の折り目エッジ上のポイント及び折り部又は折り目に沿った方向のデータを含むことができる（例えばエッジプローブ）。強度データは、例えば強度、表面反射率、色、アルベドなどに関連する情報を含むことができる。例えば強度データは、グレースケール画像及び／又はカラー画像（例えば物体、ラベル及び／又は同種のもの着色）に関連する情報を反映できる。
【０１１３】
ステップ９０６を参照して、第１の特性は第２の特性とは異なる。したがってステップ９０６は、３Ｄデータに対して少なくとも２つの異なるフィールドを生成する。モデルプローブと同様に、フィールド内の値は、面法線データなどの種々のタイプのデータ（例えば物体の表面に直交する法線ベクトル）、エッジ境界データ（例えばエッジ、折り目及び／又は画像内の他の特徴）、強度データ、強度勾配データ、及び／又は同種のものを含むことができる。
【０１１４】
幾つかの実施形態で、技術は実行時３Ｄデータを、フィールドと呼ばれる１以上の高密度３Ｄアレイに変換することを含む。幾つかの実施形態で、システムは各フィールドについて３Ｄアレイを生成する。３Ｄアレイはこれらのインデックスを使用して、各次元に１つのインデックスが付けられる。システムは、３Ｄアレイのインデックスを使用して、アレイ内の各値のｘ、ｙ、ｚ位置を含むように構成できる。例えばアレイ内へのｘ、ｙ及びｚインデックスはｘ、ｙ、ｚの位置であることができ及び／又は変換を用いてｘ、ｙ、ｚ位置に変換できる。各値は、例えば同じ次元（例えば１以上）のベクトルを含むことができる。そのようなベクトルはそれぞれ関連する３Ｄデータエントリ内又はその近傍のポイントを代表することができる。関連する３Ｄデータエントリ内又はその近傍にポイントが見つからない場合（例えばデータエントリが３Ｄポイントクラウド内の物体の内部にある場合）などには、ベクトルの長さはゼロ（０）になることがある。
【０１１５】
本明細書で論じるように、ステップ９０８を参照して、姿勢をテストすることは、各々の仮定された姿勢に従って訓練されたプローブを変換することを含むことができる。幾つかの実施形態では、姿勢に対するスコアを決定するために、システムは各プローブのドット積と、フィールド内の関連する値との合計を計算できる。プローブは、システムによって生成されたフィールドのセットに対してテストされる。システムは、個々のフィールドに対するプローブのスコアに基づいて類似性メトリックを計算するように構成できる。例えばシステムは各フィールドに対する個々のスコアを平均して、姿勢に対する全体的スコアを決定するように構成できる。別の例として、システムはより複雑な操作を実行して各フィールドに対する個別のスコアを結合し、線形重み付け（例えばａ＊スコア１＋ｂ＊スコア２など）、非−線形重み付け（例えば最小（スコア１、スコア２））などを行うように構成できる。
【０１１６】
この技術は後続の精緻化のために、閾値を超える姿勢を保存できる。幾つかの実施形態で、閾値は、閾値を超えるスコアがスコア空間（例えば姿勢空間）内の関連するスコアのローカルピークを表すように構成されている。例えば幾つかの実施形態では、特定の姿勢が閾値に達するかどうかをチェックすることに加えて、システムは特定の姿勢のスコアを隣接する姿勢のスコアに関して分析することができる。システムは、サブセットが姿勢空間内の近傍より高いスコアを得る場合は、姿勢のサブセットを保存するように構成できる。
【０１１７】
本明細書に記載した原理に従って動作する技術は、任意の適当なやり方で実装できる。上記のフローチャートの処理及び決定ブロックは、これらの種々のプロセスを実行するアルゴリズムに含むことができるステップと動作を表している。これらのプロセスから導出されるアルゴリズムは、１以上の専用又は多目的プロセッサと統合されてその動作を指示するソフトウェアとして実装でき、デジタル信号処理（ＤＳＰ）回路又は特定用途向け集積回路装置（ＡＳＩＣ）などの機能的に等価な回路として実装でき、又はその他の適当なやり方で実装できる。本明細書に含まれるフローチャートは、何らかの特定の回路又は何らかの特定のプログラミング言語又はプログラミング言語の種類の構文や動作を示していないことを理解されたい。むしろ、これらのフローチャートは、当業者が本明細書に記載するタイプの技術を実行する特定の装置の処理を行うための回路の製造、又はコンピュータソフトウェアアルゴリズムの実装に使用してよい機能情報を例示するものである。本明細書で特に明記しない限り、各フローチャートに記載されたステップ及び／又は動作の特定のシーケンスは、実装可能なアルゴリズムの例示にすぎず、本明細書に記載された原理の実装及び実施形態は変更できるものであることも理解されたい。
【０１１８】
したがって幾つかの実施形態で、本明細書に記載する技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、埋め込みコード、又は他の任意の適切なタイプのコンピュータコードを含むソフトウェアとして実装されるコンピュータ実行可能命令において具体化できる。そのようなコンピュータ実行可能命令は、幾つかの適切なプログラミング言語及び／又はプログラミング又はスクリプトツールのいずれかを使用して記述でき、フレームワーク又は仮想マシンで実行される実行可能マシン言語コード又は中間コードとしてコンパイルすることもできる。
【０１１９】
本明細書に記載された技術がコンピュータ実行可能命令として具体化されると、これらのコンピュータ実行可能命令は、多くの利便機能を含む任意の適当なやり方で実装でき、それぞれがこれらの技術に従って動作するアルゴリズムの実行を完了するための１以上の動作を提供する。しかしながらインスタンス化された「利便機能」はコンピュータシステムの構造的要素であり、それは１以上のコンピュータと統合されて実行されると１以上のコンピュータに特定の操作上の役割を実行させる。利便機能は、ソフトウェア要素の一部又は全体であることができる。例えば利便機能はプロセスの機能として、又は個別のプロセスとして、又は他の適当な処理単位として実装されてよい。本明細書に記載された技術が複数の利便機能として実装される場合、各利便機能は独自の方法で実装されてよく、すべて同じ方法で実装する必要はない。更に、これらの利便機能は必要に応じてパラレル及び／又はシリアルに実行されてよく、及びそれらが実行されているコンピュータの共有メモリを使用して、メッセージ受け渡しプロトコルを用いるか又はその他の適当なやり方で互いの間で情報を渡すことができる。
【０１２０】
一般に、利便機能は、特定のタスクを実行し、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。通常、利便機能の機能性は、それらが動作するシステムにおいて所望されるように組み合わせたり配分したりできる。幾つかの実装形態では、本明細書の技術を実行する１以上の利便機能が一緒になって完全なソフトウェアパッケージを形成できる。これらの利便機能は、代替実施形態ではソフトウェアプログラムアプリケーションを実装するために、他の無関係な利便機能及び／又はプロセスと相互作用するように適合されてよい。
【０１２１】
本明細書では、１以上のタスクを実行するために幾つかの例示的な利便機能が説明された。しかしながら記載された利便機能及びタスクの分割は、本明細書で説明された例示的な技術を実装できる利便機能のタイプを例示するものにすぎず、実施形態は特定の数、分割又はタイプの利便機能に限定されないことを理解されたい。幾つかの実装においてはすべての機能性が単一の利便機能で実装されてよい。また、幾つかの実装では本明細書に記載された利便機能の一部を他の利便機能と一緒に又は別個に（すなわち単一ユニット又は別個のユニットとして）実装でき、或いはこれらの利便機能の一部が実装されないことも可能である。
【０１２２】
本明細書に記載した技術を実装するコンピュータ実行可能命令（１以上の利便機能として又は他のやり方で実装される場合）は、ある実施形態では１以上のコンピュータ可読媒体に符号化されて媒体に機能性を提供する。コンピュータ可読媒体は、ハードディスクドライブなどの磁気媒体、コンパクトディスク（ＣＤ）やデジタル多用途ディスク（ＤＶＤ）などの光学媒体、永続的又は非永続的なソリッドステートメモリ（フラッシュメモリ、磁気ＲＡＭなど）、又はその他の適当な記憶媒体を含む。そのようなコンピュータ可読媒体は任意の適当なやり方で実装できる。本明細書で使用される「コンピュータ可読媒体」（「コンピュータ可読記憶媒体」とも呼ばれる）は、有形の記憶媒体を指す。有形の記憶媒体は非一時的であり、少なくとも１つの物理的構造的要素を有する。本明細書で使用される「コンピュータ可読媒体」では、少なくとも１つの物理的構造的要素は、情報が埋め込まれた媒体を作成するプロセス、その媒体に情報を記録するプロセス、又は情報を含んだ媒体を符号化するプロセスの間に何らかの方法で変更できる少なくとも１つの物理的特性を有する。例えばコンピュータ可読媒体の物理的構造の一部の磁化状態を、記録プロセス中に変更できる。
【０１２３】
更に、上述した幾つかの技術は、これらの技術によって使用するために特定の方法で情報（例：データ及び／又は命令）を保存する動作を含む。これらの技術の幾つかの実装（技術がコンピュータ実行可能命令として実現される実装など）では、情報はコンピュータ可読記憶媒体に符号化される。本明細書で特定の構造がこの情報を保存するための有利なフォーマットとして説明されている場合、これらの構造を使用して記憶媒体上で符号化されるときに情報の物理的編成を与えることができる。次にこれらの有利な構造は、情報と相互作用する１以上のプロセッサの動作に影響を与えることにより、例えばプロセッサによって実行されるコンピュータ操作の効率を上げることによって記憶媒体に機能性を付与できる。
【０１２４】
技術をコンピュータ実行可能命令として具体化できる幾つかの実装（すべての実装ではなく）において、これらの命令は任意の適当なコンピュータシステムで動作する１以上の適当なコンピューティングデバイスで実行でき、又は１以上のコンピューティングデバイス（又は１以上のコンピューティングデバイスの１以上のプロセッサ）はコンピュータ実行可能命令を実行するようにプログラムできる。コンピューティングデバイス又はプロセッサは、命令がデータストアなどのコンピューティングデバイス又はプロセッサにアクセス可能な方法で命令が保存されたときに命令を実行するようにプログラムできる（例：オンチップキャッシュ又は命令レジスタ、バスを介してアクセス可能なコンピュータ可読ストレージ、１以上のネットワークを介してアクセス可能なコンピュータ可読記憶媒体、及びデバイス／プロセッサなどによってアクセス可能な媒体）。これらのコンピュータ実行可能命令を含む利便機能は、単一の多目的プログラム可能なデジタルコンピューティングデバイス、処理能力を共有して本明細書に記載した技術を共同で実行する２以上の多目的コンピューティングデバイスの協調システム、本明細書に記載された技術を実行するためだけの単一のコンピューティングデバイス又はコンピューティングデバイスの協調システム（コロケーション若しくは地理的に分散）、本明細書に記載した技術を実行するための１以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は任意の他の適当なシステムと統合されてその動作を指示することができる。
【０１２５】
コンピューティングデバイスは、少なくとも１つのプロセッサ、ネットワークアダプタ、及びコンピュータ可読記憶媒体を含むことができる。コンピューティングデバイスは、例えばデスクトップ又はラップトップ・パーソナルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、携帯電話、サーバ、又は他の任意の適当なコンピューティングデバイスであってよい。ネットワークアダプタは、任意の適当なコンピューティングネットワークを介して他の任意の適当なコンピューティングデバイスと有線及び／又は無線で通信するために、コンピューティングデバイスを有効にする任意の適当なハードウェア及び／又はソフトウェアであってもよい。コンピューティングネットワークには、ワイヤレスアクセスポイント、スイッチ、ルータ、ゲートウェイ、及び／又はその他のネットワーク機器、及びインターネットを含め２以上のコンピュータ間でデータを交換するための適当な有線及び／又は無線通信媒体を含む。コンピュータ可読媒体は、処理されるデータ及び／又はプロセッサによって実行される命令を保存するように適合できる。プロセッサは、データの処理や命令の実行を可能にする。データ及び命令は、コンピュータ可読記憶媒体に保存されてよい。
【０１２６】
コンピューティングデバイスは、更に入出力装置を含め１以上の構成要素及び周辺機器を有してよい。これらのデバイスは、とりわけユーザインタフェースを提供するために使用できる。ユーザインタフェースを提供するために使用できる出力デバイスの例は、出力を視覚的に表示するためのプリンタ又はディスプレイ画面、及び出力を聴覚的に表示するためのスピーカ又はその他の音声生成装置を含む。ユーザインタフェースに使用できる入力デバイスの例は、キーボード、マウスやタッチパッドなどのポインティングデバイス、及びデジタル化タブレットである。別の例として、コンピューティングデバイスは、音声認識又は他の可聴形式で入力情報を受け取ることができる。
【０１２７】
以上説明された実施形態は、技術が回路及び／又はコンピュータ実行可能命令で実装されたものである。少なくとも１つの例が提供された方法の形態で幾つかの実施形態があってもよいことを理解されたい。方法の一部として実行される動作は、任意の適切なやり方で順序付けることができる。したがって、例示の実施形態では連続した動作として示されているが、実施形態は幾つかの動作を同時に実行することも含めて、例示されたものとは異なる順序で動作が実行されるように構成されてよい。
【０１２８】
上述した実施形態の種々の態様は、単独でも、組み合わせて、又は上述した実施形態で具体的に論じられていない様々な構成で使用することができ、それゆえその応用において上記の説明に記された又は図面に示された詳細及び構成要素の配置に限定されるものではない。例えばある実施形態に記載された態様は、他の実施形態に記載される態様と任意のやり方で組み合わせることができる。
【０１２９】
特許請求の範囲で請求要素を修正するために「第１」、「第２」、「第３」などの序数詞を使用することは、それ自体はある請求要素の別の請求要素に対する優先、優位又は順位、或いは方法の動作が実行される時間的順序を意味するものではなく、単に請求要素を区別するために特定の名前を持つ請求要素を（序数詞の使用を除いて）同じ名前を持つ別の要素と区別するための表示としてのみ使用される。
【０１３０】
また、本明細書で使用される語法及び用語は説明を目的とするものであり、制限と見なされるべきではない。本明細書における「含む」、「有する」、「持つ」、「包含する」、「伴う」、及びそれらの変形の使用は、その後に列挙される項目、及びその同等物、並びに追加項目を網羅することを意味する。
【０１３１】
本明細書では、「例示的」という言葉は、例、事例又は例示としての役割を果たすことを意味するために使用される。それゆえ例示として本明細書に記載される実施形態、実装、プロセス、特徴などは、例示的な例として理解されるべきであり、特に明記しない限り選好される例若しくは有利な例として理解されるべきではない。
【０１３２】
以上、少なくとも１つの実施形態の幾つかの態様を説明したが、当業者には様々な変更、修正及び改善が容易に想到し得るものであることを理解されたい。そのような変更、修正及び改善は本開示の一部であることが意図されており、本明細書に記載する原理の精神及び範囲内にあることが意図されている。したがって上記の説明及び図面は例示にすぎない。
【図１】
2020061132.tif 000004
【図２Ａ】
2020061132.tif 000005
【図２Ｂ】
2020061132.tif 000006
【図３】
2020061132.tif 000007
【図４】
2020061132.tif 000008
【図５】
2020061132.tif 000009
【図６】
2020061132.tif 000010
【図７】
2020061132.tif 000011
【図８】
2020061132.tif 000012
【図９】
2020061132.tif 000013
【外国語明細書】
2020061132000001.pdf