(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】マシンビジョン用の画像データを処理するための方法及び装置
(51)【国際特許分類】
G06T 7/70 20170101AFI20240409BHJP
【FI】
G06T7/70 B
【外国語出願】
(21)【出願番号】P 2022111466
(22)【出願日】2022-07-11
(62)【分割の表示】P 2019164865の分割
【原出願日】2019-09-10
【審査請求日】2022-09-09
(32)【優先日】2018-09-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-09-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-09-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504382671
【氏名又は名称】コグネックス・コーポレイション
(74)【代理人】
【識別番号】100119378
【氏名又は名称】栗原 弘幸
(72)【発明者】
【氏名】ジハン,ハンス リウ
(72)【発明者】
【氏名】ボーガン,ナタニエル
(72)【発明者】
【氏名】ヘルシャー,アンドリュー
【審査官】▲広▼島 明芳
(56)【参考文献】
【文献】特開2017-182274(JP,A)
【文献】特開2011-129082(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G06V 10/00 - 20/90
(57)【特許請求の範囲】
【請求項1】
モデルの姿勢を画像データに対してテストするためのコンピュータ化された方法であって、
前記方法は、物体の画像データを受け取るステップを有し、前記画像データはデータエントリのセットを包含するものであり、
前記方法はさらに前記画像データの領域のセットを決定することを含み、前記領域のセットにおける各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記方法はさらに処理済み画像データを生成することを含み、前記処理済み画像データは、各々関連する値を持つセルのセットを包含し、
前記処理済み画像データを生成することは、領域のセット内の各領域について、画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することと、前記決定された最大可能スコアに基づいて前記セルのセットの1以上の値を設定することとを含んでおり、かつ
前記方法はさらに前記処理済み画像データを使用してモデルの姿勢をテストすることを含み、前記モデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを前記処理済み画像データの関連する値に対してテストすること、ならびに
前記関連する値を決定するために使用された前記領域のセットの各々と関連付けられた姿勢のセットを以後のテストから除外すること、を含む
上記方法。
【請求項2】
画像データを受け取ることは2D画像データを受け取ることを含み、前記各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、前記値に関連付けられた前記領域内の前記2Dベクトルに基づいてスカラー値を決定することを含む、
請求項1に記載の方法。
【請求項3】
前記処理済み画像データを使用してモデルの姿勢をテストすることは、
前記姿勢のスコアが所定の閾値を超えていないと判定し、前記モデルの複数のプローブを処理済み画像データの関連するスカラー値に対してテストすること、ならびに
前記関連するスカラー値を決定するために使用された各々の前記領域のセットと関連付けられた前記姿勢のセットを以後のテストから除外すること、
を含む請求項2に記載の方法。
【請求項4】
画像データを受け取ることは3D画像データを受け取ることを含み、各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して前記最大可能スコアを決定することは前記値に関連付けられた前記領域内の前記3Dベクトルに基づいてスカラー値を決定することを含む、
請求項1に記載の方法。
【請求項5】
前記処理済み画像データを使用してモデルの姿勢をテストすることは、
前記姿勢のスコアが前記所定の閾値を超えていないと判定し、モデルの複数のプローブを前記処理済み画像データの関連するスカラー値に対してテストすること、ならびに
前記関連するスカラー値を決定するために使用された各々の領域のセットと関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項4に記載の方法。
【請求項6】
さらに:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換し、各第2のセル値について、前記画像データの前記データエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定すること、および、
前記モデルの姿勢を前記処理済み画像データによってテストすることに基づいて前記モデルの姿勢を前記第2の処理済み画像データによってテストすること、
を含む、請求項1に記載の方法。
【請求項7】
モデルの姿勢を画像データに対してテストするためシステムであって、前記システムは1以上のプロセッサを備え、
前記プロセッサは物体の画像データを受け取るよう構成され、前記画像データはデータエントリのセットを包含するものであり、
前記プロセッサはさらに画像データの領域のセットを決定するよう構成され、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記プロセッサはさらに処理済み画像データを生成するよう構成され、
前記処理済み画像データは各々関連する値を持つセルのセットを包含しており、
前記処理済み画像データを生成することは、前記領域のセット内の各領域について、前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定すること、および、決定された前記最大可能スコアに基づいて前記セルのセットの1以上の値を設定することを含み、かつ
前記プロセッサはさらに処理済み画像データを使用してモデルの姿勢をテストするよう構成されてなり、前記モデルの姿勢をテストすることは;
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済み画像データの関連する値に対してテストすること、および、
関連する値を決定するために使用された前記領域のセットの各々と関連付けられた姿勢のセットを以後のテストから除外すること、を含む
前記システム。
【請求項8】
前記画像データを受け取ることは2D画像データを受け取ることを含み、前記各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値の最大可能スコアを決定することは、前記値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む、
請求項7に記載のシステム。
【請求項9】
前記処理済み画像データを使用してモデルの姿勢をテストすることは;
前記姿勢のスコアが所定の閾値を超えていないと判定し、前記モデルの複数のプローブを処理済み画像データの関連するスカラー値に対してテストすること、ならびに
前記関連するスカラー値を決定するために使用された各々の前記領域のセットと関連付けられた前記姿勢のセットを以後のテストから除外すること、
を含む請求項8に記載の
システム。
【請求項10】
画像データを受け取ることは3D画像データを受け取ることを含み、各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む、
請求項7に記載のシステム。
【請求項11】
前記処理済みデータを使用してモデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
前記関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項10に記載のシステム。
【請求項12】
前記1以上のプロセッサは更に:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換し、各第2のセル値について、前記画像データの前記データエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定すること、および、
前記モデルの姿勢を前記処理済み画像データによってテストすることに基づいて前記モデルの姿勢を前記第2の処理済み画像データによってテストすること、
を成すよう構成されてなる、請求項7に記載のシステム。
【請求項13】
プロセッサ実行可能命令を保存している少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも1つのコンピュータハードウェアプロセッサに下記動作を実行させるものであり:
前記動作は物体の画像データを受け取る動作であり、前記画像データはデータエントリのセットを包含するものであり、
前記動作はさらに前記画像データの領域のセットを決定する動作であり、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記動作はさらに処理済み画像データを生成する動作であって:
前記処理済み画像データは各々関連する値を持つセルのセットを包含し、
前記処理済み画像データを生成することは、領域のセット内の各領域について:
前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定すること;および、前記決定された最大可能スコアに基づいて前記セルのセットの1以上の値を設定することを含み、かつ
前記動作はさらに前記処理済み画像データを使用してモデルの姿勢をテストする動作であり、前記処理済みデータを使用してモデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを前記処理済みデータの関連する値に対してテストすること、および、
前記関連する値を決定するために使用された前記領域のセットの各々と関連付けられた姿勢のセットを以後のテストから除外すること、を含む
前記非一時的コンピュータ可読記憶媒体。
【請求項14】
前記画像データを受け取る動作は2D画像データを受け取ることを含み、各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値の前記最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む、
請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記処理済みデータを使用してモデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
さらに、前記命令は前記1以上の前記プロセッサ:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換させる動作であって、各第2のセル値について前記画像データのデータエントリの前記セットから1以上のデータエントリに基づいて代表的なデータを決定することを含む前記動作、および、
モデルの姿勢を前記処理済み画像データによってテストすることに基づいてモデルの姿勢を前記第2の処理済み画像データによってテストさせる動作、
を実行させるよう構成されたものである、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記画像データを受け取る動作は3D画像データを受け取ることを含み、各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む、
請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記処理済みデータを使用してモデルの姿勢をテストすることは:
姿勢のスコアが前記所定の閾値を超えていないと判定し、モデルの前記複数のプローブを前記処理済み画像データの関連するスカラー値に対してテストすること、および、
関連するスカラー値を決定するために使用された前記領域のセットの各々と関連付けられた前記姿勢のセットを以後のテストから除外すること
を含む請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
モデルの姿勢を画像データに対してテストするためのコンピュータ化された方法であって、
前記方法は物体の画像データを受け取ることを含み、前記画像データはデータエントリのセットを包含するものであり、
前記方法はさらに前記画像データの領域のセットを決定することを含み、前記領域のセットにおける各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記方法はさらに処理済み画像データを生成することを含み:
前記処理済み画像データは、各々関連する値を持つセルのセットを包含し;
前記処理済み画像データを生成することは、領域のセット内の各領域について:
画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することと;
決定された最大可能スコアに基づいて前記セルのセットの1以上の値を設定することと;を含んでおり、かつ
前記方法はさらに前記処理済み画像データを使用してモデルの姿勢をテストすることを含み、前記モデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値に達すると判定し、モデルの複数のプローブを前記処理済みデータの関連する値に対してテストすること、および、
前記モデルの姿勢を保存して、前記画像データの前記領域のセットの第1の領域サイズより小さい第2の領域サイズをもつ前記画像データの第2の領域のセットに基づいて生成した第2の処理済み画像データを用いて前記モデルの姿勢をテストすること、を含む、
前記方法。
【請求項20】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済み画像データの関連する値に対してテストすること、ならびに
関連する値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項19に記載の方法。
【請求項21】
画像データを受け取ることは2D画像データを受け取ることを含み、前記各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む、
請求項19に記載の方法。
【請求項22】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項21に記載の方法。
【請求項23】
画像データを受け取ることは3D画像データを受け取ることを含み、前記各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、前記値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む、
請求項19に記載の方法。
【請求項24】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項23に記載の方法。
【請求項25】
さらに:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換し、各第2のセル値について、前記画像データの前記データエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定すること、および、
前記モデルの姿勢を前記第2の処理済み画像データによってテストすること、
を含む、請求項19に記載の方法。
【請求項26】
モデルの姿勢を画像データに対してテストするためシステムであって、前記システムは1以上のプロセッサを備え:
前記プロセッサは物体の画像データを受け取るよう構成され、前記画像データはデータエントリのセットを包含するものであり、
前記プロセッサはさらに画像データの領域のセットを決定するよう構成され、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記プロセッサはさらに処理済み画像データを生成するよう構成され:
前記処理済み画像データは各々関連する値を持つセルのセットを包含しており、
前記処理済み画像データを生成することは、前記領域のセット内の各領域について:
前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定すること、および、
決定された前記最大可能スコアに基づいて前記セルのセットの1以上の値を設定することを含み、かつ
前記プロセッサはさらに処理済み画像データを使用してモデルの姿勢をテストするよう構成されてなり、前記モデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値に達すると判定し、モデルの複数のプローブを前記処理済みデータの関連する値に対してテストすること、および、
前記モデルの姿勢を保存して、前記画像データの前記領域のセットの第1の領域サイズより小さい第2の領域サイズをもつ前記画像データの第2の領域のセットに基づいて生成した第2の処理済み画像データを用いて前記モデルの姿勢をテストすること、を含む、
前記システム。
【請求項27】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済み画像データの関連する値に対してテストすること、ならびに
関連する値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項26のシステム。
【請求項28】
画像データを受け取ることは2D画像データを受け取ることを含み、前記各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む、
請求項26のシステム。
【請求項29】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項28のシステム。
【請求項30】
画像データを受け取ることは3D画像データを受け取ることを含み、前記各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、前記値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む、
請求項26のシステム。
【請求項31】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項30のシステム。
【請求項32】
前記1以上のプロセッサはさらに:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換し、各第2のセル値について、前記画像データの前記データエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定すること、および、
前記モデルの姿勢を前記第2の処理済み画像データによってテストすること、
を成すよう構成されてなる、請求項26のシステム。
【請求項33】
プロセッサ実行可能命令を保存している少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、前記少なくとも1つのコンピュータハードウェアプロセッサに下記動作を実行させるものであり、
前記動作は物体の画像データを受け取る動作であり、前記画像データはデータエントリのセットを包含するものであり、
前記動作はさらに前記画像データの領域のセットを決定する動作であり、前記領域のセットにおける各領域は前記データエントリのセット内の隣接するデータエントリの関連するセットを包含しており、
前記動作はさらに処理済み画像データを生成する動作であり:
前記処理済み画像データは各々関連する値を持つセルのセットを包含し、
前記処理済み画像データを生成することは、領域のセット内の各領域について:
前記画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定し;
前記決定された最大可能スコアに基づいて前記セルのセットの1以上の値を設定することを含み、かつ
前記動作はさらに処理済み画像データを使用してモデルの姿勢をテストする動作であって、前記モデルの姿勢をテストすることは:
姿勢のスコアが所定の閾値に達すると判定し、モデルの複数のプローブを前記処理済みデータの関連する値に対してテストすること、および、
前記モデルの姿勢を保存して、前記画像データの前記領域のセットの第1の領域サイズより小さい第2の領域サイズをもつ前記画像データの第2の領域のセットに基づいて生成した第2の処理済み画像データを用いて前記モデルの姿勢をテストすること、を含む、
前記非一時的コンピュータ可読記憶媒体。
【請求項34】
前記処理済みデータを使用してモデルの姿勢をテストすることは、
姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済み画像データの関連する値に対してテストすること、ならびに
関連する値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外すること、
を含む請求項33に記載の非一時的コンピュータ可読記憶媒体。
【請求項35】
画像データを受け取ることは2D画像データを受け取ることを含み、前記各データエントリは2Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む、
請求項33に記載の非一時的コンピュータ可読記憶媒体。
【請求項36】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項35に記載の非一時的コンピュータ可読記憶媒体。
【請求項37】
画像データを受け取ることは3D画像データを受け取ることを含み、前記各データエントリは3Dベクトルを包含しており、
前記セルのセットの各処理済み画像データ値に対して最大可能スコアを決定することは、前記値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む、
請求項33に記載の非一時的コンピュータ可読記憶媒体。
【請求項38】
前記処理済みデータの関連する値に対してモデルの前記複数のプローブをテストすることは、モデルの前記複数のプローブを前記処理済みデータの関連するスカラー値に対してテストすること、を含む請求項37に記載の非一時的コンピュータ可読記憶媒体。
【請求項39】
前記命令はさらに:
前記画像データを各々第2の値と関連付けられたセルの第2のセットを包含する第2の処理済み画像データに変換し、各第2のセル値について、前記画像データの前記データエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定すること、および、
前記モデルの姿勢を前記第2の処理済み画像データによってテストすること、
を前記少なくとも1つのコンピュータハードウェアプロセッサに実行させるよう構成されてなる、請求項33に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載する技術は、概略、画像データを処理し、画像内のパターンを検索するための技術を含む、マシンビジョンのための方法及び装置に関する。
【背景技術】
【0002】
マシンビジョンシステムによってしばしば実行される1つのタスクは、画像内の関心のあるパターンの位置と向きを検索し特定しようとすることである。幾つかの技術は関心のあるパターンを表現するモデルを使用し、これは複数のプローブを含むことができる。各プローブは、関心のあるポイント及び関連するデータ(位置やベクトルなど)である。各プローブを使用して、例えば実行時の画像の特徴又は領域と、特定の場所のパターン特徴又は領域との類似性の測定値を決定できる。複数のプローブは複数の姿勢で実行時画像に適用でき、各姿勢でのプローブからの情報を使用して、実行時画像におけるパターンの最も可能性の高い姿勢を決定することができる。
【0003】
パターン認識プロセスを高速化するために、幾つかの技術は、パターン検索プロセスにマルチステップ手法を使用している。例えば、第1のステップは、パターンを含む可能性のある画像内の1以上の大まかな領域を見つけようとする粗検索を含むことができる。第2のステップ(及び/又は複数の追加ステップ)を使用して、パターンに対する1以上の大まかな領域のそれぞれを検索することにより、検索を精緻化することができる。例えば、あるアルゴリズムは複数の異なるモデルを使用することができ、その場合システムは各モデルを画像の異なる関連する解像度に使用する。こうしてパターン認識プロセス中に粗い解像度と関連するモデルを使用して、最初に画像内のパターンのインスタンスの大まかな近似姿勢を識別することができる。その後、比較的精緻な解像度と関連するモデルを使用して、画像内のパターンインスタンスの姿勢をより正確に識別できる。この反復プロセスは、最も精緻な解像度モデルが使用され、パターンインスタンスの正確な姿勢が特定されるまで続く。
【発明の概要】
【0004】
開示された主題によれば、改善されたマシンビジョン技術、特に画像内のパターンの検索の速度と精度を向上させる改善されたマシンビジョン技術のための装置、システム及び方法が提供される。
【0005】
幾つかの態様は、モデルの姿勢を3次元デーにおいてテストするためのコンピュータ化された方法に関する。この方法は、物体の3次元データを受け取ること、この3次元データはデータエントリのセットを包含していること、3次元データをそれぞれ関連する値を持つセルのセットを包含するフィールドに変換すること、これは各セル値について3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含み、及び姿勢に対するスコアを決定するためにとモデルの姿勢をフィールドでテストすることを含む。
【0006】
幾つかの例では、3次元データをフィールドに変換することは、値のセットの3次元アレイを生成することを含む。
【0007】
幾つかの例では、3次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【0008】
幾つかの例では、3次元データのデータエントリのセットはポイントのリストを含み、各セル値について1以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の1以上の関連するポイントに基づいてベクトルを決定することを含む。1以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含むことができ、セルは物体の内部部分に関連付けられ、ベクトルを決定することは、ベクトルをゼロに設定することを含む。モデルの姿勢をフィールドによってテストしてスコアを決定することは、モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含むことができ、これは各プローブのドット積とフィールド内の関連するベクトルの合計を含む。
【0009】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、3次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは3次元データのデータエントリのセットから1以上のデータエントリに基づいて決定されるデータであり、更に累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【0010】
幾つかの態様は、モデルの姿勢を3次元デーにおいてテストするシステムに関する。システムは、物体の3次元データを受け取ることを含み、3次元データはデータエントリのセットを包含し、3次元データを各々関連する値を持つセルのセットを包含するフィールドに変換し、これは、各セル値について3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定するように構成された1以上のプロセッサを備える。
【0011】
幾つかの例では、3次元データをフィールドに変換することは、値のセットの3次元アレイを生成することを含む。
【0012】
幾つかの例では、3次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【0013】
幾つかの例では、3次元データのデータエントリのセットは、ポイントのリストを含んでおり、各セルについて1以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の1以上の関連するポイントに基づいてベクトルを決定することを含む。1以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含んでよく、セルは物体の内部部分に関連付けられ、及びベクトルを決定することは、ベクトルをゼロに設定することを含む。モデルの姿勢をフィールドによってテストしてスコアを決定することは、モデルのプローブのセットをフィールドに対してテストしてスコアを決定することを含んでよく、各プローブとフィールド内の関連するベクトルとの合計を含む。
【0014】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、3次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは3次元データのデータエントリのセットから1以上のデータエントリに基づいて決定されるデータであり、及び累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【0015】
幾つかの態様は、プロセッサ実行可能命令を保存している少なくとも1つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに、物体の3次元データを受け取ることを含み、3次元データはデータエントリのセットを包含し、3次元データを各々関連する値を持つセルのセットを包含するフィールドに変換し、これは各セル値について3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストして姿勢に対するスコアを決定する動作を実行させる。
【0016】
幾つかの例では、3次元データをフィールドに変換することは、値のセットの3次元アレイを生成することを含む。
【0017】
幾つかの例では、3次元データをフィールドに変換することは、密集格子を生成することを含み、密集格子は格子の各セルに対するデータを包含する。
【0018】
幾つかの例では、3次元データのデータエントリのセットは、ポイントのリストを含んでおり、各セルについて1以上のデータエントリに基づいて代表的なデータを決定することは、ポイントのリスト内の1以上の関連するポイントに基づいてベクトルを決定することを含む。
【0019】
幾つかの例では、1以上の関連するポイントについてベクトルを決定することは、ポイントのリストに基づいて決定することを含み、セルは物体の内部部分に関連付けられ、及びベクトルを決定することは、ベクトルをゼロに設定することを含む。
【0020】
幾つかの例では、各セル値について代表的ベクトルを決定することを含めて、3次元データを各々関連する値を持つセルのセットを包含するフィールドに変換することは、ベクトルのセットの各ベクトルとそれ自体の外積を計算することを含む累積マトリックスを生成することを含み、ここで、ベクトルのセットは3次元データのデータエントリのセットから1以上のデータエントリに基づいて決定されるデータであり、及び累積マトリックスから固有ベクトル、固有値、又はその両方を抽出して代表的ベクトルを決定することを含む。
【0021】
幾つかの態様は、モデルの姿勢を画像データに対してテストするためのコンピュータ化された方法に関する。この方法は、物体の画像データを受け取ることを含み、画像データはデータエントリのセットを包含する。この方法は、画像データの領域のセットを決定することを含み、領域のセット内の各領域は、データエントリのセット内の隣接するデータエントリの関連するセットを包含する。この方法は処理済み画像データを生成することを含み、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することを含む。この方法は、決定された最大可能スコアに基づいて、値セットの1以上の値を設定することを含んでいる。この方法には、処理済み画像データを使用してモデルの姿勢をテストすることを含む。
【0022】
幾つかの例では、画像データを受け取ることは、2D画像データを受け取ることを含み、ここで、各データエントリは2Dベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む。
【0023】
幾つかの例では、処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0024】
幾つかの例では、画像データを受け取ることは、3D画像データを受け取ることを含み、ここで、各データエントリは3Dベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0025】
幾つかの例では、3次元データを各々第2の値と関連付けられたセルの第2のセットを包含する第2のフィールドに変換することは、各第2のセル値について、3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含み、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第2のフィールドによってテストすることを含む。
【0026】
幾つかの態様は、モデルの姿勢を画像データに対してテストするためのシステムに関し、このシステムは物体の画像データを受け取り、画像データはデータエントリのセットを包含するように構成された1以上のプロセッサを備える。1以上のプロセッサは、画像データの領域のセットを決定し、ここで、領域のセット内の各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含するように構成されている。1以上のプロセッサは、処理済み画像データを生成し、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について、画像データから、隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定するように構成されている。1以上のプロセッサは、決定された最大可能スコアに基づいて値のセットの1以上の値を設定するように構成されている。1以上のプロセッサは、処理済み画像データを使用してモデルの姿勢をテストするように構成されている。
【0027】
幾つかの例では、画像データを受け取ることは、2D画像データを受け取ることを含み、ここで、各データエントリは2Dベクトルを包含しており、値のセットの各処理済み画像データ値の最大可能スコアを決定することは、値に関連付けられた領域内の2Dベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0028】
幾つかの例では、画像データを受け取ることは、3D画像データを受け取ることを含み、ここで、各データエントリは3Dベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0029】
幾つかの例では、3次元データを各々第2の値と関連付けられたセルの第2のセットを包含する第2のフィールドに変換することは、各第2のセル値について、3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含み、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第2のフィールドによってテストすることを含む。
【0030】
幾つかの態様は、プロセッサ実行可能命令を保存している少なくとも1つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに、物体の画像データを受け取る動作を実行させ、この画像データはデータエントリのセットを包含している。これらの命令は少なくとも1つのコンピュータハードウェアプロセッサに、画像データの領域のセットを決定させ、ここで、領域のセット内の各領域はデータエントリのセット内の隣接するデータエントリの関連するセットを包含している。これらの命令は少なくとも1つのコンピュータハードウェアプロセッサに、処理済み画像データを生成させ、ここで、処理済み画像データは、各々関連する値を持つセルのセットを包含し、処理済み画像データを生成することは、領域のセット内の各領域について、画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することを含む。これらの命令は少なくとも1つのコンピュータハードウェアプロセッサに、決定された最大可能スコアに基づいて値のセットの1以上の値を設定させる。これらの命令は少なくとも1つのコンピュータハードウェアプロセッサに、処理済み画像データを使用してモデルの姿勢をテストさせる。
【0031】
幾つかの例では、命令は少なくとも1つのコンピュータハードウェアプロセッサに画像データを受け取る動作を実行させ、画像データを受け取ることは3D画像データを受け取ることを含み、ここで、各データエントリは3Dベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む。処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0032】
幾つかの例では、画像データを受け取ることは、3D画像データを受け取ることを含み、ここで、各データエントリは3Dベクトルを包含しており、値のセットの各処理済み画像データ値に対して最大可能スコアを決定することは、値に関連付けられた領域内の3Dベクトルに基づいてスカラー値を決定することを含む。
【0033】
幾つかの例では、処理済みデータを使用してモデルの姿勢をテストすることは、姿勢のスコアが所定の閾値を超えていないと判定し、モデルの複数のプローブを処理済みデータの関連するスカラー値に対してテストすることを含んでおり、関連するスカラー値を決定するために使用された各々の領域と関連付けられた姿勢のセットを以後のテストから除外することを含む。
【0034】
幾つかの例では、命令は少なくとも1つのコンピュータハードウェアプロセッサに、3次元データを各々第2の値と関連付けられたセルの第2のセットを包含する第2のフィールドに変換する動作を実行させ、これは各第2のセル値について3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含んでおり、及びモデルの姿勢をフィールドによってテストすることに基づいてモデルの姿勢を第2のフィールドによってテストする動作を実行させる。
【0035】
幾つかの態様は、3次元モデルの姿勢をテストするためのコンピュータ化された方法に関し、この方法は、3次元モデルを保存することと、3次元モデルはプローブのセットを包含しており、物体の3次元データを受け取ることと、3次元データはデータエントリのセットを包含しており、3次元データをフィールドのセットに変換することと、これは値の第1のセットを包含する第1のフィールドを生成し、ここで、値の第1のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第1の特徴を示し、第1の特徴は第2の特徴と異なっており、値の第2のセットを包含する第2のフィールドを生成し、ここで、値の第2のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第2の特徴を示し、第2の特徴は第1の特徴と異なっており、及び3次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定することとを含み、これはプローブのセットをフィールドのセットに対してテストすることを含む。
【0036】
幾つかの例では、第1のフィールドと第2のフィールドを生成することは、各フィールドに対する3次元アレイを生成することを含み、ここで各3次元アレイは、各次元に対するインデックスを包含する3つのインデックスのセットからなり、各3次元アレイは、3つのインデックスのセットにより関連付けられた第1の値と第2の値の各々のx位置、y位置及びz位置を含んでいる。
【0037】
幾つかの例では、プローブ、第1のフィールドの値の第1のセット、及び第2のフィールドの値の第2のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【0038】
幾つかの例では、姿勢に対するスコアを決定するために姿勢をテストすることは、各プローブのドット積と関連する値を合計することを含む。
【0039】
幾つかの例では、方法は、複数の関連するスコアを決定するために複数の姿勢をテストすることと、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定することと、後続の処理のために姿勢のセットを保存することとを含む。姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【0040】
幾つかの態様は、画像取得のためのパラメータを決定するシステム関し、このシステムは、プローブのセットを包含する3次元モデルを保存し、データエントリのセットを包含する物体の3次元データを受け取り、3次元データをフィールドのセットに変換し、これは値の第1のセットを包含する第1のフィールドを生成し、ここで、値の第1のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第1の特徴を示し、第1の特徴は第2の特徴と異なっており、値の第2のセットを包含する第2のフィールドを生成し、ここで、値の第2のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第2の特徴を示し、第2の特徴は第1の特徴と異なっており、及び3次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定し、これはプローブのセットをフィールドのセットに対してテストすることを含むように構成された1以上のプロセッサからなる。
【0041】
幾つかの例では、第1のフィールドと第2のフィールドを生成することは、各フィールドに対する3次元アレイを生成することを含み、ここで各3次元アレイは、各次元に対するインデックスを包含する3つのインデックスのセットからなり、各3次元アレイは、3つのインデックスのセットにより関連付けられた第1の値と第2の値の各々のx位置、y位置及びz位置を含んでいる。
【0042】
幾つかの例では、プローブ、第1フィールドの値の第1セット、及び第2フィールドの値の第2セットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【0043】
幾つかの例では、姿勢をテストして姿勢に対するスコアを決定することは、各プローブのドット積と関連する値を合計することを含む。
【0044】
幾つかの例では、1以上のプロセッサは更に複数の関連するスコアを決定するために複数の姿勢をテストし、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定し、後続の処理のために姿勢のセットを保存するように構成されている。
【0045】
幾つかの例では、姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、この方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【0046】
幾つかの実施形態は、プロセッサ実行可能命令を保存している少なくとも1つの非一時的コンピュータ可読記憶媒体に関し、これらの命令は、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに、プローブのセットを包含する3次元モデルを保存し、データエントリのセットを包含する物体の画像データを受け取り、3次元データをフィールドのセットに変換し、これは値の第1のセットを包含する第1のフィールドを生成し、ここで、値の第1のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第1の特徴を示し、値の第2のセットを包含する第2のフィールドを生成し、ここで、値の第2のセットの各値はデータエントリのセットから関連する1以上のデータエントリの第2の特徴を示し、第2の特徴は第1の特徴と異なっており、及び3次元モデルの姿勢をフィールドのセットでテストして姿勢に対するスコアを決定し、これはプローブのセットをフィールドのセットに対してテストすることを含む、動作を実行させる。
【0047】
幾つかの例では、第1のフィールドと第2のフィールドを生成することは、各フィールドに対する3次元アレイを生成することを含み、ここで各3次元アレイは、各次元に対するインデックスを包含する3つのインデックスのセットからなり、各3次元アレイは、3つのインデックスのセットにより関連付けられた第1の値と第2の値の各々のx位置、y位置及びz位置を含んでいる。
【0048】
幾つかの例では、プローブ、第1のフィールドの値の第1のセット、及び第2のフィールドの値の第2のセットは、面法線データ、エッジ境界データ、強度データ、又はそれらの何らかの組合せを含む。
【0049】
幾つかの例では、姿勢をテストして姿勢に対するスコアを決定することは、各プローブのドット積と関連する値を合計することを含む。
【0050】
幾つかの例では、命令は更に1以上のプロセッサに、複数の関連するスコアを決定するために複数の姿勢をテストさせ、複数の姿勢のどの姿勢が姿勢のセットを生成するための所定の閾値を超えるスコアを有するか判定させ、及び後続の処理のために姿勢のセットを保存させる。
【0051】
幾つかの例では、姿勢のセット内の各姿勢は、関連するスコアのローカルピークを表し、前記方法は更に姿勢のセットを精緻化してモデルの最上の姿勢を決定することを含む。
【0052】
以上、開示の主題の特徴をやや大まかに述べたのは、以下に続く詳細な説明においてそれらがより良く理解されるように、また本発明の技術への寄与がより適切に評価されるようにするためである。言うまでもなく開示された主題の追加の特徴があり、それらは以下に説明されるとともに、本明細書に付属する特許請求の範囲の主題をなす。本明細書で用いられる表現及び用語は説明を目的としたものと理解すべきであり、限定するものと見なされてはならない。
【0053】
図面において、様々な図に示されている同一又はほぼ同一の各構成要素は同じ参照符号で表されている。見やすさのため、各図面にはすべての構成要素が表示されているわけではない。図面は必ずしも縮尺通りではなく、代わりに本明細書に記載する技術及び装置の種々の側面を示すことに重点が置かれている。
【図面の簡単な説明】
【0054】
【
図1】幾つかの実施形態による例示的なマシンビジョンシステムを示す。
【0055】
【
図2A】幾つかの実施形態による、フィールドを生成し、そのフィールドを使用してモデルをテストするための例示的な方法。
【0056】
【
図2B】幾つかの実施形態による、フィールドを生成するための例示的な方法を示す。
【0057】
【
図3】幾つかの実施形態による、例示的な3次元画像データ及び関連するフィールドを示す。
【0058】
【
図4】幾つかの実施形態による、粗検索用の処理済み画像データを生成する例示的な方法を示す。
【0059】
【
図5】幾つかの実施形態による、例示的な2次元画像データ及び関連する処理済み画像データを示す。
【0060】
【
図6】幾つかの実施形態による、粗検索中の例示的な姿勢のセットの除外及び関連する2次元画像データのデータエントリを示す。
【0061】
【
図7】幾つかの実施形態による、例示的な3次元画像データ及び関連する処理済み画像データを示す。
【0062】
【
図8】幾つかの実施形態による、粗検索中の例示的な姿勢のセットの除外及び関連する3次元画像データのデータエントリを示す。
【0063】
【
図9】幾つかの実施形態による、初期姿勢検索のための例示的な方法を示す。
【発明を実施するための形態】
【0064】
以下の説明では、開示された主題の完全な理解を提供するために、開示された主題のシステム及び方法、並びにそのようなシステム及び方法が動作する環境などに関して多くの具体的な詳細が述べられる。加えて、以下に提供する例は例示的なものであり、開示された主題の範囲内にある他のシステム及び方法があることが想定されていることが理解されるであろう。
【0065】
図1は、幾つかの実施形態による例示的なマシンビジョンシステム100を示す。例示的なマシンビジョンシステム100は、カメラ102(又は他の画像取得装置)とコンピュータ104を有する。コンピュータ104は1以上のプロセッサとコンピュータディスプレイの形態におけるヒューマンマシンインタフェース、及び任意選択で1以上の入力デバイス(例えばキーボード、マウス、トラックボールなど)を含む。カメラ102は、レンズ106及びカメラセンサ素子(図示せず)、その他の構成要素を含む。レンズ106は視野108を有し、レンズ106は視野108からの光をセンサ素子上に集束させる。センサ素子は、カメラ視野108のデジタル画像を生成し、その画像をコンピュータ104の一部を形成するプロセッサに提供する。
図1の例に示すように、物体112はコンベア110に沿ってカメラ102の視野108内に移動する。カメラ102は、物体112が視野108内にある間に、以下に説明する処理のために物体112の1以上のデジタル画像を生成できる。コンベアは運転時に複数の物体を載せることがある。これらの物体は、検査プロセスなどにおいてカメラ102の視野108内を順番に通過することができる。このようにカメラ102は観察された各物体112について少なくとも1つの画像を取得することができる。
【0066】
幾つかの実施形態では、カメラ102は2次元撮像装置、例えば2次元(2D)CC及び/又はCMOS撮像アレイである。幾つかの実施形態では、2次元撮像装置は、輝度値の2Dアレイを生成する。幾つかの実施形態では、マシンビジョンシステムは、例えば2次元勾配フィールド画像を生成することによって2Dデータを処理する。勾配フィールド画像は、例えば大きさ及び方向と関連付けられたセルのセットを包含することができる。例えば勾配フィールドはベクトルのデカルト成分(x、y)を含むことができ、これは大きさと方向を含んでいて、勾配フィールドは実際の(r、シータ)値などを保存できる。幾つかの実施形態では、カメラ103は3次元(3D)撮像装置である。3D撮像装置は、(x、y、z)ポイントのセットを生成することができる(例えばz軸が3D撮像装置からの距離など第3の次元である場合)。3D撮像装置は、陰影からの形状復元(Shape from shading)、ステレオイメージング、飛行時間技術、プロジェクタベースの技術及び/又は他の3D生成技術など、様々な3D画像生成技術を使用できる。
【0067】
幾つかの実施形態では、マシンビジョンシステムは、カメラ103からの3Dデータを処理する。カメラ103から受け取った3Dデータは、例えばポイントクラウド及び/又はレンジ画像108を含むことができる。ポイントクラウドは、固体の表面上又はその近傍にある一群の3次元ポイントを含むことができる。例えばポイントは、直線座標系又は他の座標系での座標によって表現できる。幾つかの実施形態では、メッシュ又はグリッド構造などどのポイントが物体上で隣接しているかを示す他の情報も、任意選択で存在してもよい。幾つかの実施形態では、センサ測定値から導かれた又は以前に計算された、曲率、面法線、エッジ、及び/又は色及びアルベド情報を含む表面特徴に関する情報を入力ポイントクラウドに包含できる。幾つかの実施形態では、2D及び/又は3Dデータは、2D及び/又は3Dセンサから、CAD又は他の個体モデルから、及び/又はレンジ画像、2D画像及び/又は他の画像及び/又は前処理によって取得できる。
【0068】
コンピュータ104の例は、単一のサーバコンピュータ、一連のサーバコンピュータ、単一のパーソナルコンピュータ、一連のパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、及び/又はコンピューティングクラウドを含むことができるが、これらに限定されない。コンピュータ104の様々なコンポーネントは、1以上のオペレーティングシステムを実行することができ、その例にはマイクロソフトウィンドウズサーバーTM、ノベルネットウェアTM、レッドハットリナックス(登録商標)、ユニックス及び/又はカスタムオペレーティングシステムなどが含まれるが、これらに限定されない。コンピュータ104の 1以上のプロセッサは、1以上のプロセッサに接続されたメモリに保存されている動作を処理するように構成することができる。メモリは、ハードディスクドライブ、フラッシュドライブ、テープドライブ、光学ドライブ、RAIDアレイ、ランダムアクセスメモリ(RAM)及び読み取り専用メモリ(ROM)を含むことができるが、これに限定されない。
【0069】
本明細書で論じるように、物体の画像内のモデルを検索するために、技術は、画像内のモデルの近似的又は粗い位置を決定するための第1段階と、モデルの特定の位置を決定するために粗い位置を精緻化するための第2段階を含む、2つ(又はそれ以上)の段階を実行するように構成できる。複数の段階を使用すると、例えば検索の速度、効率などを改善するために段階ごとに異なる技術的手法を使用して検索を実行できるので有益である。例えば2Dパターン検索手法の場合、この手法はプローブのセットを包含する物体のモデルの訓練を含むことができる。2Dプローブの各々は、(x、y)位置及び方向を含むことができる。マシンビジョンシステムは、シーン(例えば
図1に描かれたコンベアベルト110に沿って移動する物体112のシーン)の後で取得された実行時画像の検索で使用するために訓練されたモデルを保存する。マシンビジョンシステムは、各セルに累積光を表すピクセル値を有する2D画像などのシーンの画像を取得できる。マシンビジョンシステムは2D画像を高密度勾配フィールドに変換でき、各セルは特定の画像に対するデータの変化を反映する単一の勾配値を含む(例えば勾配は一定の範囲ではゼロに近く、エッジ付近で大きい)。勾配値は、例えばベクトル、スカラー値(例えば大きさ又は方向角)及び/又は同種のものであってよい。例えば各セルがベクトルを含む場合、ベクトルの大きさはゼロであってよい。マシンビジョンシステムは、2Dモデルの様々な変換(例えば平行移動、回転、スケール、スキュー、アスペクト、遠近法など)をテストして、特定の配置に対するスコアを計算できる。スコアは、例えばプローブが2D画像のベクトルにどれだけよく一致するかを反映することができる(例えば本明細書で更に論じるように、ベクトルが入力2D情報の勾配である場合)。例えば、幾つかの技術はモデルをビンごとにテストして、後続の精緻化のために最もスコアの高い位置を取ることができる。幾つかの技術は、近い検索は似ているのでローカルピークに焦点を当てるように構成でき、及びシステムはすべての近い一致を候補姿勢としてマークするのを回避しようとするように構成できる。例えば3D0コンテクストにおいて画像はレンジ画像、ポイントクラウド及び/又は同種のものであってよい。一般的な事項として、及び本明細書で更に論じるように、マシンビジョンシステムは、プローブのセットを包含する物体の3Dモデルを訓練することができる。マシンビジョンシステムは3次元モデルを使用して、実行時3D画像内の3Dモデルの姿勢を検索できる。本明細書で論じるように、マシンビジョンシステムシステムは、3Dモデルの姿勢の検索を容易にするために、3D画像を処理して1以上の3Dフィールドを生成することができる。フィールドはベクトルのセットを包含することができる。ベクトルのデカルト成分(x、y、z)を保存でき、これらは大きさと方向を含んでいてもよく、フィールドは実際の(r、lat、ロング)値及び/又は同種のものを保存できる。
【0070】
本明細書で論じる実施形態は、様々な異なる用途で使用することができ、その一部はビジョン誘導ロボット工学における部品ピッキング、3次元検査、自動車キッティング、成形プラスチック及び鋳造金属体積検査及び組立検査を含んでよいが、これらに限定されない。このような用途は画像内の関心のあるパターンの位置及び向きを検索して特定することを含むことができる(例えばロボットグリッパの誘導又は物体の検査のため)。幾つかの実施形態では訓練ステップを使用して、関心のあるパターンを表すモデルが開発され、これは複数のプローブを含むことができる。各プローブは、関心のあるポイント及び関連するデータ(例えば位置及びベクトル)であり、例えば実行時の画像特徴又は領域と、特定の位置におけるパターンの特徴又は領域との類似性の測定に使用できる。複数のプローブは複数の姿勢で実行時画像に適用でき、各姿勢におけるプローブからの情報は実行時画像内のパターンの最も可能性の高い姿勢を決定するために使用できる。
【0071】
本発明者らは、既存のマシンビジョン技術が従来の3Dデータを使用する場合に著しい非効率に悩まされる可能性があることを発見した。特に、本発明者らは、3Dデータ内のポイントの隣接ポイントを検索することにより(例えばポイントクラウド内の近いポイントを検索することにより)、しばしばかなりの量の処理時間が消費されることを発見した。例えばマシンビジョンシステムは近接するデータの処理では効率的であるが、マシンビジョンシステムはデータの検索やランダムアクセスでは極めて非効率的である。特にコンピューティングデバイスは、しばしば連続したメモリ位置で繰り返されるタスクの大規模な並列化のために最適化されたハードウェアを含むことがある。そのような並列化を条件付き分岐で中断すると、パフォーマンスを大幅に減らすことがある(例えば分岐は一般的に並列活動の停止を要求し、分岐/ジャンプを実行するために時間を消費した後、並列活動に復帰するため)。本発明者らは、これら及び他の非効率に対処するために、マシンビジョン技術の技術的改善を開発した。本明細書で更に論じるように、この技術は3Dデータから高密度フィールドを開発することを含み、そこでは高密度フィールドは3Dデータに基づいて決定される各フィールド値のデータを包含する。本発明者らは、各値はデータを包含するので、マシンビジョン技術は、上述したように隣接ポイントの検索を回避するためのプロセスの一部としてフィールド値を使用することができ、これは既存のマシンビジョン技術の処理時間を大幅に削減できることを発見した。本明細書で開示される技術は、フィールド又は格子の各エントリでデータを作成し、それらを連続して処理することにより、並列化を中断する時間のかかるブランチを回避でき、それによってパフォーマンスを大幅に改善できる。
【0072】
図2Aは、幾つかの実施形態による、3Dモードをテストするために3D画像からフィールドを生成する例示的な方法200を示す。ステップ202で、マシンビジョンシステムは物体の3次元データ(例えばポイントクラウド、高密度3D画像など)を受け取る。3次元データはデータエントリのセット、例えばレンジ画像(例えば各セルの高さを有する)、ポイントクラウド、及び/又は3Dデータに関する他の情報を包含する。ステップ204では、マシンビジョンシステムは3次元データをフィールドに変換する。フィールドは値のセットを包含する。この方法はフィールドの各値について、3Dデータから導出される代表的なデータを決定することを含む。代表的なデータは、例えばデータエントリについてベクトル及び/又は他の代表的な情報、例えば完全なベクトルの代わりに単にベクトルの大きさ及び/又は方向、マトリックス(例えば本明細書で更に論じるvv
T)、及び/又は同様のものを含むことができる。この方法は、3次元データのデータエントリのセットから1以上のデータエントリに基づいて代表的なデータを決定することを含むことができる。ステップ206で、マシンビジョンシステムはモデルをフィールドによってテストして姿勢に対するスコアを決定する。ステップ208で、マシンビジョンシステムは、姿勢を受け入れることができるか、又は姿勢をスキップ(例えば無視、破棄など)すべきかを決定する。例えば、マシンビジョンシステムはフィールドに対する3Dモデルの姿勢を採点し、スコアが閾値を超えているかどうかを判断できる。別の例として、本明細書で更に論じるように、マシンビジョンシステムは、3Dモデルの姿勢を複数のフィールドに対して採点することができる。スコアが閾値に達したら(例えば閾値を超えたら)、方法はステップ210に進み、マシンビジョンシステムは姿勢を保存する(例えば本明細書で論じるように後続の精緻化のため)。スコアが閾値に達しなければ、方法はステップ212に進み、テストすべき3Dモデルの追加の姿勢があるか判定する。更に姿勢があれば、方法はステップ206に戻り、3Dモデルの別の姿勢をテストする。それ以上の姿勢がなければ、方法はステップ214に進んで終了する。
【0073】
ステップ204を参照して、3次元データをフィールドに変換することは、値のセットの3次元アレイを生成することを含むことができる。例えば、3次元は3Dデータのx、y、z軸を表すことができる。値のセットの各値はベクトルであることができる。ベクトルは様々な方法で表すことができる。例えば幾つかの実施形態では各ベクトルはx、y、z成分として保存でき、各成分は特定の数のビット、例えば符号付き8ビット整数として表すことができ、値は-127~127の範囲とすることができる、別の例として幾つかの実施形態では、各ベクトルは大きさ及び2つの角度を使用して表すことができる。幾つかの実施形態では、3次元データをフィールドに変換することは、密集格子を生成することを含むことができる。密集格子は、例えば格子内の各可能なスポットに対する値を含むことができる。格子内のスポットは、3Dデータ内のデータエントリの元の位置に接続されても接続されなくてもよい。例えば、格子スポットが3Dデータとは異なるグリッドを有するようにカーネルやフィルタを使用することができる。プロセスは、ポイントクラウドを高密度フィールドに変換することを含むことができ、高密度フィールドは高密度フィールドのそれぞれ可能な位置でのベクトルを包含する。
【0074】
幾つかの実施形態では、技術はフィールドを生成する前に3Dデータへの変換を適用することを含むことができる。例えば、技術はフィールドを生成する前に、剛体変換、線形変換及び/又は非線形変換を適用することを含むことができる。幾つかの実施形態では、技術は歪みを考慮するために1以上の変換を適用することを含んでよい。例えばポイントクラウドは遅延により1以上の軸で値がスキューするように取得されることがあり、このスキューを考慮するためにポイントクラウドを変換できる。幾つかの実施形態で、技術は、モデルの姿勢を検索する際にモデルの歪みを検索することを含むことができる。例えばモデルの種々の変換をテストすることにより自由度の歪度を検索することができる。
【0075】
更に
図2のステップ204を参照して、
図2Bは幾つかの実施形態による、フィールドを生成するための例示的な方法250を示す。例えば幾つかの実施形態では、この技術を使用して3Dポイントクラウドを高密度フィールドに変換することができる。高密度フィールドは、本明細書で更に論じるように各フィールド値におけるデータを包含する(例えばポイントクラウドはポイントのある場所のみリストし、ポイントの欠如はポイントがないか近い位置にないことを含んでいる)。上記のように、データはベクトルを包含できる。フィールドセルの(x、y、z)は、フィールドのどこでベクトルが生じるかを示す。幾つかの実施形態では、3Dデータ内の3次元物体の内部にあるフィールド値はゼロに設定することができる。したがって幾つかの実施形態では、フィールドは、ポイントクラウドと比較するなど3Dデータと比較して情報へのアクセスを容易にする。幾つかの実施形態では、フィールドは3Dデータをより均一に見せることができる一方、ポイントクラウドなど他の3Dデータは特定の領域を強調することができる。別の例として、幾つかの実施形態ではこの技術を使用して、高密度3D画像を高密度フィールドに変換することができる。例えば本明細書で更に論じるように、システムは、高密度3D画像について各ポイントにおける勾配を決定して、方法250を適用することができよう。
【0076】
ステップ252で、マシンビジョンシステムは各3Dデータエントリ(例えば3Dポイント)について、ベクトルのセットを決定する。例えば、マシンビジョンシステムは隣接3Dデータポイント位置及び/又は3Dセンサからの情報を使用して、各3Dデータエントリについて面法線ベクトル及びエッジベクトルを決定できる。いずれのベクトルも、例えば特定のデータエントリについて明確な法線又はエッジがないことを示すために、ゼロ(0)の長さを有することができる。
【0077】
ステップ254で、各3Dデータエントリ(例えばポイント)について、マシンビジョンシステムはそれを包含するフィールドセル(例えばボクセル)を決定する。ステップ256で、マシンビジョンシステムは各フィールドセルに関連付けられた累積データを決定する。幾つかの実施形態では、技術は各フィールドセルに関連付けられた入力ベクトルを決定することを含む。幾つかの実施形態で、システムはそのフィールドセルに入るすべての3Dデータポイントに関連するベクトルに関する集約情報を累積することができる。例えば集約情報は、ベクトル成分自体(極性が有意味な場合)及び/又は他の情報、例えば各ベクトルとそれ自体の外積vvTによって形成されるマトリックスの成分を含むことができる(例えば極性が有意味でない場合に使用できる)。幾つかの実施形態では、技術は各ポイントの影響の範囲を、例えば3D特徴をぼかしたり厚くしたりすることに広げることを含むことができる。幾つかの実施形態では、システムは各3Dデータポイントの周囲の所定のパターンに複製を作成することができる。所定のパターンは、例えばベクトルの方向に対して相対的であってよい。例えば技術は表面を厚くすることができる(例えば法線を上下に複製することにより)、エッジを厚くすることができる(例えばエッジを折り目ベクトルの周囲の円柱内のエッジを複製することにより)などである。所定のパターンは、ベクトルが法線を表すかエッジを表すかなどベクトルが表すものによって異なってよい。
【0078】
ステップ258で、マシンビジョンはステップ256から累積されたデータに基づいて各フィールドセルについて代表的なデータを決定する。幾つかの実施形態では、フィールドセルがいかなる累積データとも関連付けられていない場合(例えばフィールドセルに入るベクトルがないなど、いかなる3Dデータエントリとも関連しない場合)、フィールドセルはゼロに設定できる(例えばフィールドがベクトルを包含する場合にゼロベクトルを参照するためにゼロが使用される)。
【0079】
幾つかの実施形態では、技術は、各フィールドセルについてステップ254で決定された当該セルについての累積データに基づいて代表的ベクトルを決定することを含むことができる。代表的ベクトルは、例えば成分ごとの平均を計算すること、(例えば各ベクトルとそれ自体の外積vv
Tを累積することによって形成される)累積マトリックスから固有ベクトルを抽出することなどによって決定できる。幾つかの実施形態では、ゼロによる除算を防いだり、代表的ベクトルの長さに寄与するデータが少ない場合にこれを減らしたりするなどのために、正則化定数を分母に追加することができる。例えばマトリクスMは、ベクトルv
1~v
nを含むn個のベクトルvのセットについて、正則化定数kにより次の式を用いて計算できる(簡略化のために式では示されていないが、すべてのベクトルv
iについて合計され、i=1-nである)。
【0080】
幾つかの実施形態では、マシンビジョンシステムはフィールドを生成する際に(例えば姿勢テストのために)マトリックスMを保存することができる。幾つかの実施形態では、マトリックスMの代表的なデータ、例えばマトリックス内の6個の一意の値のみ、6個の一意の値を代表する情報(例えば単位マトリックスの一定倍数を追加して値の1つをゼロできるので6個の値のうち5個のみ(又はそれ以下))などを保存できる。
【0081】
幾つかの実施形態では、マシンビジョンシステムは、マトリックスMを使用して代表的ベクトルを決定することができる。例えばマシンビジョンシステムは、上記のように固有分解を使用して代表的ベクトルを決定できる。代表的ベクトルは、固有値、固有ベクトル及び/又は両方を使用して計算することができる。幾つかの実施形態では、固有値を使用して、代表的ベクトルの大きさを決定することができる。例えば最大の固有値を最大の大きさの表現として使用できる。別の例として、1以上の追加の固有値を最大固有値と組み合わせて使用できる(例えば代表的ベクトル内のベクトルの潜在的な不一致を考慮するため)。幾つかの実施形態では、固有ベクトルを使用して代表的ベクトルの方向を決定することができる。例えば最大の固有値に関連付けられた固有ベクトルを使用して、支配的な方向を表すことができる。固有値に固有ベクトルを乗算して代表的ベクトルを決定できる。例えば、最大の固有値に関連付けられた固有ベクトルに最大の固有値のみを乗算する、最大の固有値と2番目に大きい固有値の差を乗算する(例えば最大の固有値と2番目に大きい固有値が同じ値の場合はゼロであり得る)ことなどができる。幾つかの実施形態では、例えばvvTから大きさの2乗を除去するために、固有ベクトルに固有値の平方根を乗算することができる。例えば、最大の固有値に関連付けられた固有ベクトルは、最大の固有値の平方根、最大の固有値と2番目に大きい固有値の差の平方根などを乗算できる。
【0082】
幾つかの実施形態では、フィールドは正規化できる。例えば、システムは方向を変更せずに、各ベクトルの長さを(シグモイドを介して)マッピングすることによりフィールドを正規化できる。正規化を使用して、例えば閾値に対する姿勢スコアの応答を調整することができる。例えば幾つかの実施形態は、採点結果を単純に合格(例えば閾値より上)又は不合格(例えば閾値より下)としてビン分けすることができる。幾つかの実施形態では、より安定してフィールドを正規化することができる(例えばシグモイドを使用して0から1の間の長さを出力する)。
【0083】
幾つかの実施形態では、フィールドは正規化されない。例えば幾つかの実施形態において、生データ(例えばベクトルの大きさ)は、正規化なしで有意味であり得る。例えばより短いベクトルの大きさは、法線又はエッジについての信頼/同意が少ないことを意味することができる一方、より長いベクトルの大きさはより大きい信頼を意味することができる。幾つかの実施形態では、採点技術(例えば本明細書で論じられるドット積)は、フィールドからのそのようなデータ(例えば大きさ)を組み込むことができ、したがって非正規化フィールドを使用することが望ましい場合がある。
【0084】
幾つかの実施形態では、各フィールドセル値は、3Dデータ内の1つの関連するデータエントリ、3Dデータ内の複数のデータエントリに基づくことができ、及び/又はデータエントリのいずれにも基づかなくてもよい。幾つかの実施形態では、技術はフィールドセル値のそれぞれについてベクトルを決定することを含むことができる。例えば3次元データのデータエントリはポイントのリストを含むことができ、技術は各フィールドについてベクトルをポイントのリストに基づいて決定できる。幾つかの実施形態では、技術は上記のように、3Dデータにおいて物体の内部にあるフィールドに対する値を決定することができる。例えば、マシンビジョンシステムは、ポイントクラウドに基づいて1以上のフィールドセルが物体の内部部分に関連付けられていると判定して値をゼロに設定できる。
【0085】
ステップ206~212を参照して、上述のように方法200を使用して、3D画像内の3Dモデルアライメント検索の粗い段階を実行することができる。幾つかの実施形態では、方法200はフィールド内の3Dモデルの近似的な姿勢を検索することができ、これは後続のステップによって更に精緻化することができる。近似的な姿勢は、例えば(x、y、z)位置を含む3D位置と、ロール、ピッチ及び/又はヨーなどの向きのデータを含むことができる。ステップ206を参照して、幾つかの実施形態ではテストは3Dモデルのプローブのセットをフィールドに対してテストすることを含む。例えばマシンビジョンシステムはモデルのプローブのセットをフィールドに対してテストして、各プローブのドット積とフィールド内の関連するベクトルを合計することによってスコアを決定できる。幾つかの実施形態では、
図9に関連して更に論じるように、スコアは折り目エッジ情報、オクルージョン境界情報、色情報、強度情報などの複数の値(例えば複数のフィールド)に基づくことができる。
【0086】
図3は、幾つかの実施形態による、例示的な3次元画像データ300及び関連するフィールド350を示す。フィールド350は、
図2Bの方法250を使用して生成することができる。3D画像データ300は、データエントリ302A~302Nのセット(集合的にデータエントリ302)を包含する。各データエントリ302について、マシンビジョンシステムはベクトルのセットを決定できる。例えばマシンビジョンシステムは、
図3に示すようにデータエントリ302Aに対してベクトルv
1~v
nを決定できる。フィールド350は、値352A~値352N(集合的にセル352)と関連付けられたセルのセットを包含する。3D画像データ300をフィールド350に変換するために、マシンビジョンシステムは1以上の機能を実行して、決定されたベクトルを関連するフィールド値に変換することができる。例えば値352Aについて示されるように、マシンビジョンシステムはデータエントリ302Aのベクトルv
1~v
n上で動作する機能を実行して、データエントリ302Aに対する集約情報「s」を生成できる。本明細書で論じるように、この機能に対する結果値sは、単一のベクトル、スカラー値(例えばベクトルの大きさ)及び/又は他の集約情報であることができる。この機能を各データエントリで実行して、フィールドの関連する値を投入できる。
図3は、データエントリ302Aのベクトルv
1~v
nのセットのみを示しているが、これは単に技術を説明するための例示を目的としている。本明細書で論じるように、この技術は各フィールドセルに対して関連する値を決定するために使用される複数のデータポイントに関する情報を累積することを含むことができる。
【0087】
上述のように、集約情報「s」は、最終的な代表的ベクトル(
図3には示されていない)に変換することができる。例えば幾つかの実施形態では、集約情報「s」は、当該セルに累積されたエントリの数(例えば任意選択で分母の正則化定数)で除算する成分ごとの平均を計算することによって最終的な代表的ベクトルに変換できる。別の例として幾つかの実施形態では、情報を累積するために使用されるマトリックスから固有ベクトルを抽出することができる。
【0088】
本発明者らは、画像データ内のモデルの検索は、2Dデータであろうと3Dデータであろうと、データに対するモデルの各姿勢を繰り返しテストする必要があるために時間のかかるプロセスであると判断した。例えば検索を実行する際に、検索空間の次元(例えば2D及び/又は3D実行時データなどの画像データ及び/又はフィールド)、及び姿勢空間の次元(例えば、x、y、z、ロール、ピッチ、ヨウ、スケール、スキュー、アスペクト、パースペクティブ及びその他の非線形歪みなど)がある。次元が増加するほど、画像データ内のモデルを検索する姿勢が増え、モデルを検索するために必要な処理が増加する。
【0089】
本発明者らは、モデルを検索する前に画像データを処理する技術を開発した。処理された画像データによりシステムは、検索中に潜在的姿勢空間の大部分を除外することができる。マシンビジョンシステムは、検索空間で大規模なスポット検査を実行して、それらの範囲を精緻化し、処理速度を大幅に向上させるように構成できる。更に以下に論じるように、処理された画像データによりマシンビジョンシステムは、姿勢が精緻化される際にマシンビジョンシステムがスコアを良くするはずの(例えば所定の閾値を上回る)姿勢を見逃さないことを確保するように任意の大きさのステップを取ることができる。この技術は、例えば検索速度を向上させるために使用できるが、姿勢が精緻化されていると見なされるはずの姿勢を逃す可能性があるダウンサンプリング技術とは対照的である。幾つかの実施形態では、本明細書で述べる技術は、画像データ(例えばフィールド)と同じ次元にあるサンプリングを提供でき、画像データのデータエントリのグループを単一の値に還元する。処理済み画像データ内の値のセットにより、マシンビジョンシステムは、モデルが画像データ内のいずれかの関連する姿勢に見出せないかテストすることが可能となる。
【0090】
本明細書で更に論じるように、この技術は一般に検索を1以上の層に分割することができる。例えば技術は、処理済み画像データの第1の層(例えば層1)と処理済み画像データの第2層(例えば層2)を含む画像データの2つの異なる層を生成して、画像データのより大きい検索領域を生み出すことができ、そこでは第2層における大きい検索領域はそれぞれ第1層の多数の小さい領域を累積して表している。システムは下位層の大きい領域をそれぞれ処理して、上位層(例えば層「1」が層「2」の上位層である場合)における小さい領域を姿勢について検索するかどうか決定できる。本明細書で論じるように、システムは第3層及び/又はそれ以上の層を使用することができ、下位層はそれぞれ先行する層より大きい領域を使用して生成される。幾つかの実施形態では、より大きい領域を関連する小さい領域の最大スコア限度を使用して分析できる。この最大スコア技術を使用して、システムはモデルが領域内の値より高いスコアを得ないと判定することが可能になる。したがってシステムは最大スコア技術を使用して、上位層の関連する領域におけるいずれかの可能な姿勢が十分に高いスコアを得て、それらの姿勢が画像データをテストする際に更に調べる価値があるかどうか判定することができる。そうでない場合は、システムは当該領域に関連するいずれのデータエントリもそれ以上の検討に値しないと判定できる。
【0091】
図4は、幾つかの実施形態による、粗検索のための例示的な方法400を示す。ステップ402で、マシンビジョンシステムは物体の画像データ(例えばポイントクラウド、高密度3D画像などの2Dデータ又は3Dデータ)を受け取る。画像データはデータエントリのセットを包含し、これは勾配情報、ベクトル及び/又は同種のものを含むことができる。ステップ404で、システムは画像データの領域のセットを決定する。各領域は、画像データから関連する隣接データエントリのセットを包含する。ステップ406で、システムはこの領域のセットを使用して処理済み画像データを生成する。本明細書で更に論じるように、処理済み画像データは、それぞれ関連する値を有するセルのセットを包含する。システムは各領域について画像データから隣接するデータエントリの関連するセット内の各データエントリの最大可能スコアを決定することにより、処理済み画像データを生成できる。ステップ408で、システムは処理済み画像データを使用してモデルの姿勢をテストして、姿勢に対するスコアを計算する。ステップ410で、システムはスコアが所定の閾値に達しているか判定する。スコアが閾値に達しない場合、方法はステップ412に進んで、後続の姿勢のテストから1以上の領域を除外する。スコアが閾値に達する場合、方法はステップ414に進んで姿勢を保存する(例えば後続の精緻化のため)。ステップ416で、システムは更にテストする姿勢があるかどうかを判定し、ある場合は、方法はステップ408に戻り、ない場合は、方法はステップ418で終了する。
【0092】
ステップ402を参照して、画像データは任意のタイプのデータを表すベクトルフィールドであることができる。例えばベクトルフィールドは1以上の(a)面法線ベクトル、(b)折り目エッジベクトル(例えば本の側面などの物体の実際のエッジ、及び/又はシルエット又はマグカップのエッジなどのオクルージョンエッジ、マグカップは円筒形であるためマグカップの実際のエッジではない)、及び/又は(c)物体の色に基づくエッジなどのカラーエッジベクトル(例えば縞模様の物体など3ある色が終わり別の色が始まる場所)。幾つかの実施形態では、この技術は本明細書で更に論じるように、複数のフィールドを使用して実行することができる。幾つかの実施形態でマシンビジョンシステムは、受け取った画像データ(例えば2D及び/又は3D画像データ)に基づいてベクトルフィールドを決定することができる。
【0093】
ステップ404を参照して、マシンビジョンシステムは画像データ内の領域のセットを決定することができる。例えば領域は、
図5~
図8に関連して更に後述するように、各画像データから同数のデータエントリを含むことができる。例えば2Dデータの場合、各領域には16×16データエントリ、16×8データエントリ、8×8データエントリ、4×4データエントリ、4x3データエントリなどを包含できる。別の例として3Dデータの場合、各領域は16×16×16データエントリ、8×8×8データエントリ、16×8×8データエントリ、5×5×5データエントリなどを包含できる。
【0094】
幾つかの実施形態では、領域は他の近くの領域の間でオーバーラップする。例えば
図5~
図8に関連して更に後述するように、マシンビジョンシステムはデータエントリからデータエントリへ反復的に移動できて、隣接するデータエントリに基づいて領域(例えば、隣接位置における所定の数のデータエントリ)を決定する結果として、近い領域のデータエントリの間に若干のオーバーラップがある。例えば
図7~
図8に関連して後述するように、領域が3Dデータのデータエントリの2×2×2領域である場合、第1の領域はその隣接領域と4データ単位だけオーバーラップする。
【0095】
幾つかの実施形態では、マシンビジョンシステムを隣接する領域間で若干のオーバーラップがある領域を決定するように構成することにより、より良い姿勢テストを提供できる。例えばオーバーラップする領域を使用すると、オーバーラップしない領域を使用する場合と比べてより良好な姿勢テストを提供できる。例として、マシンビジョンシステムは複数のプローブを有するモデルを使用しており、これらのプローブは互いに対して異なる位相を持つことができると仮定する。また、この例に対してプローブがデータ単位及び/又は領域に関して整数の間隔を持っていると仮定する。その結果として、例えばプローブは複数のデータ単位によって共有される場所に潜在的に入る代わりに、特定のデータ単位内に入るであろう。このような例でマシンビジョンシステムが領域をオーバーラップしないように決定したら(例えば領域は隣接領域とデータエントリを共有しない)、処理済み画像データは元の画像データの解像度を減じるであろう。したがって元の画像データ内のプローブの位置は処理済み画像データ内でテストできない可能性がある。単純な例として、モデルの2つの隣接するプローブが元の画像データの並列データエントリに該当し、マシンビジョンシステムが2×2のデータエントリ領域を使用して処理済み画像データを決定すると仮定する。この例では、2つのプローブの1つは、テストされる各姿勢で処理済み画像データ内の2つの領域の間のライン上に位置するであろう(例えば処理済み画像データを計算する際に画像データの解像度が低下するので)。したがってこの例ではマシンビジョンシステムは、プローブを処理済み画像データ内の2×2近傍内の最大スコアに照らしてテストできないであろう。マシンビジョンシステムは処理済み画像データ内の当該プローブをテストすることができないので、マシンビジョンシステムは例えば本明細書で論じるように最大可能スコアを使用して決定されたモデルに対するスコアを正しく推定できないであろう。したがってこれによりマシンビジョンシステムは以後のテストのために姿勢を誤って無視し及び/又は姿勢の潜在的な場所を含んでいない姿勢を以後のテストに含めたりすることがある。
【0096】
若干のオーバーラップを有するように領域を計算すると、マシンビジョンシステムは各姿勢をテストすることができる。例えば各データエントリにおける最大の動作を計算することによって(例えば
図5~
図8に関連して述べるように)解像度が低下しない場合は、マシンビジョンシステムのそれぞれ可能なプローブは、処理済み画像データの計算された値に直接一致することができる(例えばマシンビジョンシステムはこのようにして元の画像データの正しい2×2領域に照らしてテストできる)。この場合、マシンビジョンシステムは次のテストのためにモデルを有利に1セル以上(例えば2セル以上)シフトさせることができる。このやり方でモデルをシフトさせることができる。なぜなら領域の構造と本明細書で論じる最大スコア技術のために、1つのテストでマシンビジョンシステムが間接的に上位層の画像データ内で完全な2×2領域を評価したら、マシンビジョンシステムが次にテストする必要がある場所は、画像データの次の隣接する(オーバーラップしない)2×2領域だからである。こうしてこの技術により個々のプローブは、先行のテストで(暗黙的に)評価したセルの一部の再評価をスキップでき、これによりシステムはモデルを1セル以上有利にシフトさせることができる。
【0097】
ステップ406を参照して、技術は画像データ(例えば上述したベクトルフィールド)を使用して同一又は類似の解像度の処理済み画像データ(例えば新しいベクトルフィールド)を生み出すように構成できるが、そこでは処理済み画像データの各値が、特定のデータエントリを包含する画像データエントリのグループ内に入るモデルプローブの最大可能スコアを表す。例えば採点法は、画像データの特定のプローブ及びデータエントリに対して達成可能な最大可能スコアを有していてもよい(例えばこれはプローブの実際のデータに応じて低くなる可能性がある)。システムが処理済み画像データ内でモデル姿勢の保守的な検索を実行できるようにするために、技術は画像データエントリのグループに対する最大可能スコアを決定でき、プローブが各データエントリに完全に一致すると仮定して、処理済み画像データに対する結果値としてそれらの最大スコアの最大値を取ることができる。これにより例えば結果値に対してテストされるプローブは、これらの値に関連付けられたデータエントリが潜在的に十分なスコア有して、結果値を決定するために使用された個々のデータエントリのグループを個別にテストするに値するか決定できる。
【0098】
幾つかの実施形態で、モデル内の各プローブは単位ベクトルであることができ、プローブの2乗ドット積と対応する画像データを計算することを含む採点法を使用してモデルの特定の姿勢を採点することができる。これは大きさとそれらの間の余弦の積の2乗を計算し、その結果としてより整列するほどスコアが高くなる。2乗ドット積を使用すると、プローブが正確に一致する場合は、スコアは当該データエントリ(例えばベクトル)の長さの2乗となるであろう。そのためデータエントリベースでは、最大スコアは長さの2乗を反映し、これは任意の単位長のプローブが達成し得る最大可能スコアである。そのような例では、処理済み画像データの各値には、入力された画像データにおけるデータエントリの領域で見出される、データエントリ(例えばベクトル)の大きさの2乗の最大値が投入される。したがってこの技術は、画像データ(又はより小さい領域)の個々のデータエントリを領域全体の最大スコアで集約できる。
【0099】
ステップ408を参照して、処理済み画像データは、モデルをテストするために使用されたタイプの画像データであるかのようにテストできる(例えば導出されたベクトルフィールド、例えば2D勾配フィールド、及び/又は上で説明した法線、エッジ、3Dのカラーフィールド)。例えば、処理済み画像データが決定されると、モデルのプローブをテストしてスコア(例えば大きさの合計)をテストすることにより、特定の姿勢についてモデルをテストできる。プローブが特定の領域についてテストされるとき、プローブが領域内のどこかにある場合、この技術によりシステムはモデルに対するスコアが当該領域の値より高くないように決定できる。なぜならそれは上で論じたように全領域における最大値だからである。したがって領域に関連付けられた各データエントリに対してスコアをより高くすることはできないため、領域の関連する値が当該領域の上限である。
【0100】
ステップ410~414を参照して、テストされる姿勢はまばらであることができる一方、計算されたスコアは、テストされた姿勢の範囲内で最良の姿勢の実際のスコアより低いことはあり得ないことを保証する。例えば以下で更に論じるように、領域が2D画像データのデータエントリの8×8セットであるように構成されている場合、モデルの姿勢が領域の特定の値の閾値に達しなければ、システムは以下に
図6に関連して更に論じるように、次のレベルで当該領域の残りの値のテストをスキップできる。したがって、システムがプローブのセットをモデルに対してテストして閾値に達しないスコアを計算する場合、システムはテストされた領域に関連付けられたすべての値を以後のテストから除外できる。姿勢が閾値を超えている場合、システムはこれらの関連するデータエントリを後にさらなる精緻化のために参照するように書き留めておくことができる。さらなる精緻化は、例えば本明細書で説明されるように、方法400をより小さい領域サイズ及び/又は精緻化された検索で実行することを含むことができる。
【0101】
ステップ418を参照して、方法400の出力は、所定の閾値を超えるスコアを得ることができるモデルの姿勢のセットである。閾値を超えるスコアを得ることができなかった姿勢の範囲は、再度考慮する必要はない。幾つかの実施形態では、上述のように、方法400はピラミッド型スキームに適用することができ、各ステージの出力は、次のより高い解像度の段階への入力である。例えば第1の段階では特定のサイズの領域(16個のデータエントリ、8個のデータエントリなど)を使用でき、第2の段階ではより小さいサイズの領域(例えば12個のデータエントリ、10個のデータエントリ、4個のデータエントリなど)を使用できるなど。方法400により、マシンビジョンシステムは処理済み画像データで上位層の検索を実行でき、それによりマシンビジョンシステムは姿勢をテストする際により大きいステップを取ることができ(例えば各次元で1つの正方形ではなく複数の正方形を移動する)、以下で更に論じるように、本質的に一度に複数の姿勢をテストすることが可能になる。
【0102】
マシンビジョンシステムは、方法400を実行して、2D及び/又は3Dデータを包含する様々なタイプの画像データを処理することができる。
図5~
図6は2D画像データの処理の例を提供し、
図7~
図8は、3D画像データの処理例を提供する。
図5を参照すると、
図5は、幾つかの実施形態による2次元画像データ500と、関連する処理済み画像データ550の例示的な部分を示している。この例では2次元画像データ500は、集合的にデータエントリ502と呼ばれる502A~502Nの2Dデータエントリを包含している(例えば格子のセル)。各データエントリ502は、v
1、v
2などで示す関連する2Dベクトル有する(例えばこの例ではデータエントリ502Aはベクトルv
1、データエントリ502Nはv
4を有する)。
図5に示すように、システムは、2×2構成の4つのデータエントリの領域を使用して2D画像データを処理するように構成されている。これらの領域のうち2つは、504A及び504Bとして示されている。これらの例示的な領域で示されているように、システムは2D画像を反復的に通過して領域を特定するように構成できる。この例では、システムが各データエントリか移動するとき(例えば反復的に左から右、上から下の方式)、各領域は現在のデータエントリの他に、右へのデータエントリ、下へのデータエントリ、及び右へのデータエントリと下へのデータエントリとの間のデータエントリを包含している。
【0103】
引き続き
図5を参照すると、処理済み画像データ550は、集合的に552と呼ばれる値552A~値552Nを有するセルを包含している。マシンビジョンシステムは、各領域のデータエントリを処理する機能を実行して、処理済み画像データ内の関連するセルに対する結果値を決定するように構成されている。本明細書で論じるように、この機能は領域内の関連するデータエントリのベクトルを使用する最大スコア機能であることができる。例えばシステムはこの機能を使用して領域504Aの関連するデータエントリのベクトルv
1、v
2、v
4及びv
5を処理して結果値f
1を計算し、システムはこれをセル552Aの値を決定するために使用する。別の例として、システムは領域504Bの関連するデータエントリのベクトルv
4、v
5、v
7及びv
8を処理して結果値f
7を計算し、システムはこれをセル552Bの値を決定するために使用する。
【0104】
図6は、幾つかの実施形態による、粗検索中の2次元画像データの姿勢のセットの例示的な除外を示す。
図6は、
図5から例示的な2次元画像データ500と、関連する処理済み画像データ550を示している。本明細書で論じるように、モデルに対するスコアはモデルの複数のプローブに基づいて計算される。例示のために、
図6は、セル552Aに入るモデルに対するプローブの1つが、モデルの姿勢をテストする際に不十分なスコアを有すると判定されることを示している。セル552Aは処理済み画像データ550に示された層で考慮から除外されて、2次元画像データ500は上方へ1層移動するので、テストされたプローブの位置に対応する姿勢は、すべて以後の考慮(例えば2次元画像データ500内の残りの候補位置で動作する絞り込み検索のため)から除外される。
【0105】
したがって
図6に示すように、処理済み画像データ550により表される層でテストする場合(例えば次の層500各値ごとに4つのデータエントリを集約する層)、層550で1つの姿勢しかテストしないときは画像処理システムは層を踏み越えて、本質的に次の層500における姿勢のグループをテストできる。
図5~
図6の例に示されているように、システムは(既述したようにセル552Aに入るおそらく多くのモデルプローブの1つを有する)モデルをテストし、f
1は領域504Aにおける4つのデータエントリに最大値を表し(同様のことは図示されないセルに照らしてテストされる他のプローブにも該当する)、システムはそれらの姿勢は十分なスコアを得ないと判定できるので、2次元データ500において対応する姿勢のいずれも十分に高いスコアを得ることはできない。したがって図示されているように、処理済み画像データ550の上位層検索により、マシンビジョンシステムは姿勢をテストする際により大きいステップを取ることができる(例えば
図5に示すように2×2領域を使用する場合、各次元で1つの正方形ではなく2つの正方形を移動する)ことができ、本質的に一度に複数の姿勢をテストすることが可能になる(例えば2×2領域を使用する場合は一度に4つの姿勢)。
【0106】
図7は、幾つかの実施形態による、例示的な3次元画像データ700と、関連する処理済み画像データ750を示す。3D画像データ700は、集合的にデータエントリ702(例えば3Dベクトルフィールド)と呼ばれる3Dデータエントリ702A~702Nのセットを包含する。各データエントリ702は、v
11、v
12などで示される関連する3Dベクトルを有する。この例では第1の層内の各ベクトルはv
1Xで示され、Xは当該層の特定のデータエントリを指す(例えばこの例ではデータエントリ702Aとデータエントリ702Nはいずれも第1層にあるため、それぞれベクトルv
11及びベクトルv
14を有する)。
図7に示されているように、システムは1つの層からの4個のデータエントリと次の層からの4個のデータエントリを包含する8個のデータエントリの領域を使用して3D画像データを処理するように構成されている。これらの領域の2つは704A及び704Bとして図示されており、それぞれ第1の層からの4個のデータエントリと第2の層において対応する4個のデータエントリを包含する。本明細書で論じるように、システムは反復的に3D画像を通過して領域を特定する。この例では、システムは3D画像データ700内の各データエントリ(例えば行、列及び奥行き)を横断するので、システムは、現在のデータエントリの他に、右へのデータエントリ、下へのデータエントリ、右へのデータエントリと下へのデータエントリとの間のデータエントリ、及び次の層内の同じ位置で対応する4個のデータエントリを包含する新しい領域を決定する。
【0107】
引き続き
図7を参照して、処理済み画像データ750は、集合的にセル752と呼ばれる、値を有するセル752A~752Nを包含している。マシンビジョンシステムは、各領域のデータエントリを処理する機能を実行して、処理済み画像データ内の関連するセルに対する結果値を決定するように構成されている。本明細書で論じるように、この機能は領域内の関連するデータエントリのベクトルを使用する最大スコア機能であることができる。例えばシステムはこの機能を使用して領域704Aの関連するデータエントリのベクトルv
11、v
12、v
14、v
15、v
21、v
22、v
24及びv
25を処理して結果値f
11を計算し、システムはこれをセル752Aの値を決定するために使用する。別の例として、システムは領域504Bの関連するデータエントリのベクトルv
4、v
5、v
7及びv
8を処理して結果値f
7を計算し、システムはこれをセル552Bの値を決定するために使用する。
【0108】
図8は幾つかの実施形態による、粗検索中の3次元画像データの姿勢のセットの例示的な除外を示す。
図8は、例示的な除外と、
図7からの関連する処理済み画像データ750とを示している。本明細書で論じるように、モデルに対するスコアは、複数のモデルプローブに基づいて計算される。例示のために、
図8は、セル752Aに入るモデルのプローブのうち唯一のプローブのみ例示目的で示しているが、本明細書で論じるようにモデルプローブの各々が関連するセルに照らしてテストされて、姿勢のスコアが不十分であると決定される。セル752Aは処理済み画像データ750に示された層で考慮から除外されて、3次元画像データ700は上方へ1層移動するので、領域704Aにおける対応する8個の姿勢はすべて以後の考慮(例えば3次元画像データ700内の残りの候補位置で動作する絞り込み検索のため)から除外される。
【0109】
図7及び
図8に示すように、この技術を3D画像データに適用する場合、姿勢空間は次元数のためにかなり大きくなることがある。一部の3次元画像及び/又は3次元用途において、潜在的姿勢の大きい空間のうち良い候補を包含できる潜在的姿勢の空間の割合は小さくてよい(例えば物体が画像のごく一部のみ占める)。別の例として、一部の3次元画像及び/又は3次元用途において、関連する領域から離れた小さい回転は、非常に低いスコアを得て始まることがある。この技術は(例えば
図7に示された処理済み画像データ750を使用して)上位層検索を活用して、許容可能なスコアを得ることができない姿勢の大きいセットを迅速に排除することができる。上位層の検索により、マシンビジョンシステムは姿勢をテストする際により大きいステップを取る(例えば
図7に示すように2×2×2領域を使用する場合、各次元で1つの正方形ではなく2つの正方形を移動する)ことができ、本質的に一度に複数の姿勢をテストすることが可能になる(例えば2×2×2領域を使用する場合は一度に8つの姿勢)。
【0110】
本発明者らは、単一のフィールドのみを使用してパターンマッチングを実行すると、十分な情報が得られない可能性があると判断した。例えば幾つかの技術は、単一の法線フィールドを用いて物体の表面上のプローブを探すために、種々の姿勢構成を試みてフィールド全体で各姿勢にスコアを付ける。しかしながら面法線フィールドだけを使用することは、例えばシーンに訓練された物体に似た同じ面法線を持つ1以上の大きい範囲がある場合に問題となることがある。例えば3Dモデルが本に対して訓練されて、シーンに本の代わりにテーブルが含まれている場合、本は面法線ベクトルのみを使用するとテーブル全体で多くの一致を持つであろう。それゆえ法線フィールドを用いてモデルの近似位置の初期粗検索を実行すると、フィールド内の情報が不十分で初期姿勢を以後の精緻化のための考慮から除外できない可能性がある。本発明者らは、単一のフィールドを超えた追加的情報を使用するマシンビジョン検索技術の技術的改善を開発した。本明細書で更に論じるように、この技術は追加的情報、例えば折り目エッジ、オクルージョン境界、色、強度及び/又は同種のものに関する情報を使用することを含んでよい。追加的情報は検索プロセスのための1以上の個別のフィールドに保存できる(例えばプローブの法線データは法線フィールドに一致させ、プローブのエッジデータはエッジフィールドに一致させることができる)。マシンビジョンシステムは各タイプのデータをテストでき、複数のテストを使用して特定の姿勢に対する最終スコアを決定できる(例えば個々のスコアを合計するなど)。複数のフィールドを使用することにより、物体に関する追加的情報を用いて検索プロセスの効率を高めることができる。例えば法線とエッジの両方の情報を検索することにより、法線フィールドではスコアが高く、エッジフィールドではスコアが低い姿勢を除外することできる。別の例として、この技術は同型の物体など、特定のタイプの物体を検索するシステムの能力を高めることができる。例えば缶の特定の姿勢を検索することは難しいかもしれないが、この技術は検索を改善するために色及び/又は反射率などの缶の別の情報を含むことできる(例えば缶の形状だけでは十分でないことがある)。
【0111】
図9は、幾つかの実施形態による、3次元モデルの姿勢の初期検索を実行するための例示的な方法900を示す。ステップ902で、マシンビジョンシステムはプローブのセットを包含する3次元モデルを保存する。ステップ904で、システムは3Dデータエントリのセットを包含する物体の3Dデータ(例えばポイントクラウド、奥行き画像など)を受け取る。ステップ906で、システムは3次元データを2以上のフィールドに変換する。第1のフィールドは、それぞれ3Dデータエントリから関連する1つのデータエントリ又は複数のデータエントリの第1の特性を示す値の第1のセットを包含する。第2のフィールドは、それぞれ3Dデータエントリから関連する1つのデータエントリ又は複数のデータエントリの第2の特性を示す値の第2のセットを包含する。ステップ908で、システムは3Dモデルの姿勢を、フィールドのセットでテストして、姿勢に対するスコアを決定するが、これはプローブのセットをフィールドのセットに照らしてテストすることを含む。ステップ910で、システムはスコアが所定の閾値に達するかどうかを判定する。スコアが閾値に達する場合、方法はステップ912に進み、姿勢を保存する(例えば後続の精緻化のため)。スコアが閾値に達しない場合、方法はステップ914に進み、更にテストすべき姿勢があるか判定し、あれば方法はステップ908に戻り、なければ方法はステップ916で終了する。
【0112】
ステップ902を参照して、モデルは本明細書で論じるように、訓練されたモデルであることができる。各プローブには、1以上のベクトルを包含できる。例えばプローブは位置ベクトル(例えば(x、y、z)位置と(x、y、z)方向)を表すことができる。プローブは、例えば法線データ、エッジデータ、強度データ、強度勾配データ、及び/又は他の情報を表すことができる。法線データは、例えば表面上のポイントとその法線方向(例えば法線プローブ)を含むことができる。エッジデータは、例えば物体の折り部又は物体の折り目エッジ上のポイント及び折り部又は折り目に沿った方向のデータを含むことができる(例えばエッジプローブ)。強度データは、例えば強度、表面反射率、色、アルベドなどに関連する情報を含むことができる。例えば強度データは、グレースケール画像及び/又はカラー画像(例えば物体、ラベル及び/又は同種のもの着色)に関連する情報を反映できる。
【0113】
ステップ906を参照して、第1の特性は第2の特性とは異なる。したがってステップ906は、3Dデータに対して少なくとも2つの異なるフィールドを生成する。モデルプローブと同様に、フィールド内の値は、面法線データなどの種々のタイプのデータ(例えば物体の表面に直交する法線ベクトル)、エッジ境界データ(例えばエッジ、折り目及び/又は画像内の他の特徴)、強度データ、強度勾配データ、及び/又は同種のものを含むことができる。
【0114】
幾つかの実施形態で、技術は実行時3Dデータを、フィールドと呼ばれる1以上の高密度3Dアレイに変換することを含む。幾つかの実施形態で、システムは各フィールドについて3Dアレイを生成する。3Dアレイはこれらのインデックスを使用して、各次元に1つのインデックスが付けられる。システムは、3Dアレイのインデックスを使用して、アレイ内の各値のx、y、z位置を含むように構成できる。例えばアレイ内へのx、y及びzインデックスはx、y、zの位置であることができ及び/又は変換を用いてx、y、z位置に変換できる。各値は、例えば同じ次元(例えば1以上)のベクトルを含むことができる。そのようなベクトルはそれぞれ関連する3Dデータエントリ内又はその近傍のポイントを代表することができる。関連する3Dデータエントリ内又はその近傍にポイントが見つからない場合(例えばデータエントリが3Dポイントクラウド内の物体の内部にある場合)などには、ベクトルの長さはゼロ(0)になることがある。
【0115】
本明細書で論じるように、ステップ908を参照して、姿勢をテストすることは、各々の仮定された姿勢に従って訓練されたプローブを変換することを含むことができる。幾つかの実施形態では、姿勢に対するスコアを決定するために、システムは各プローブのドット積と、フィールド内の関連する値との合計を計算できる。プローブは、システムによって生成されたフィールドのセットに対してテストされる。システムは、個々のフィールドに対するプローブのスコアに基づいて類似性メトリックを計算するように構成できる。例えばシステムは各フィールドに対する個々のスコアを平均して、姿勢に対する全体的スコアを決定するように構成できる。別の例として、システムはより複雑な操作を実行して各フィールドに対する個別のスコアを結合し、線形重み付け(例えばa*スコア1+b*スコア2など)、非-線形重み付け(例えば最小(スコア1、スコア2))などを行うように構成できる。
【0116】
この技術は後続の精緻化のために、閾値を超える姿勢を保存できる。幾つかの実施形態で、閾値は、閾値を超えるスコアがスコア空間(例えば姿勢空間)内の関連するスコアのローカルピークを表すように構成されている。例えば幾つかの実施形態では、特定の姿勢が閾値に達するかどうかをチェックすることに加えて、システムは特定の姿勢のスコアを隣接する姿勢のスコアに関して分析することができる。システムは、サブセットが姿勢空間内の近傍より高いスコアを得る場合は、姿勢のサブセットを保存するように構成できる。
【0117】
本明細書に記載した原理に従って動作する技術は、任意の適当なやり方で実装できる。上記のフローチャートの処理及び決定ブロックは、これらの種々のプロセスを実行するアルゴリズムに含むことができるステップと動作を表している。これらのプロセスから導出されるアルゴリズムは、1以上の専用又は多目的プロセッサと統合されてその動作を指示するソフトウェアとして実装でき、デジタル信号処理(DSP)回路又は特定用途向け集積回路装置(ASIC)などの機能的に等価な回路として実装でき、又はその他の適当なやり方で実装できる。本明細書に含まれるフローチャートは、何らかの特定の回路又は何らかの特定のプログラミング言語又はプログラミング言語の種類の構文や動作を示していないことを理解されたい。むしろ、これらのフローチャートは、当業者が本明細書に記載するタイプの技術を実行する特定の装置の処理を行うための回路の製造、又はコンピュータソフトウェアアルゴリズムの実装に使用してよい機能情報を例示するものである。本明細書で特に明記しない限り、各フローチャートに記載されたステップ及び/又は動作の特定のシーケンスは、実装可能なアルゴリズムの例示にすぎず、本明細書に記載された原理の実装及び実施形態は変更できるものであることも理解されたい。
【0118】
したがって幾つかの実施形態で、本明細書に記載する技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、埋め込みコード、又は他の任意の適切なタイプのコンピュータコードを含むソフトウェアとして実装されるコンピュータ実行可能命令において具体化できる。そのようなコンピュータ実行可能命令は、幾つかの適切なプログラミング言語及び/又はプログラミング又はスクリプトツールのいずれかを使用して記述でき、フレームワーク又は仮想マシンで実行される実行可能マシン言語コード又は中間コードとしてコンパイルすることもできる。
【0119】
本明細書に記載された技術がコンピュータ実行可能命令として具体化されると、これらのコンピュータ実行可能命令は、多くの利便機能を含む任意の適当なやり方で実装でき、それぞれがこれらの技術に従って動作するアルゴリズムの実行を完了するための1以上の動作を提供する。しかしながらインスタンス化された「利便機能」はコンピュータシステムの構造的要素であり、それは1以上のコンピュータと統合されて実行されると1以上のコンピュータに特定の操作上の役割を実行させる。利便機能は、ソフトウェア要素の一部又は全体であることができる。例えば利便機能はプロセスの機能として、又は個別のプロセスとして、又は他の適当な処理単位として実装されてよい。本明細書に記載された技術が複数の利便機能として実装される場合、各利便機能は独自の方法で実装されてよく、すべて同じ方法で実装する必要はない。更に、これらの利便機能は必要に応じてパラレル及び/又はシリアルに実行されてよく、及びそれらが実行されているコンピュータの共有メモリを使用して、メッセージ受け渡しプロトコルを用いるか又はその他の適当なやり方で互いの間で情報を渡すことができる。
【0120】
一般に、利便機能は、特定のタスクを実行し、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。通常、利便機能の機能性は、それらが動作するシステムにおいて所望されるように組み合わせたり配分したりできる。幾つかの実装形態では、本明細書の技術を実行する1以上の利便機能が一緒になって完全なソフトウェアパッケージを形成できる。これらの利便機能は、代替実施形態ではソフトウェアプログラムアプリケーションを実装するために、他の無関係な利便機能及び/又はプロセスと相互作用するように適合されてよい。
【0121】
本明細書では、1以上のタスクを実行するために幾つかの例示的な利便機能が説明された。しかしながら記載された利便機能及びタスクの分割は、本明細書で説明された例示的な技術を実装できる利便機能のタイプを例示するものにすぎず、実施形態は特定の数、分割又はタイプの利便機能に限定されないことを理解されたい。幾つかの実装においてはすべての機能性が単一の利便機能で実装されてよい。また、幾つかの実装では本明細書に記載された利便機能の一部を他の利便機能と一緒に又は別個に(すなわち単一ユニット又は別個のユニットとして)実装でき、或いはこれらの利便機能の一部が実装されないことも可能である。
【0122】
本明細書に記載した技術を実装するコンピュータ実行可能命令(1以上の利便機能として又は他のやり方で実装される場合)は、ある実施形態では1以上のコンピュータ可読媒体に符号化されて媒体に機能性を提供する。コンピュータ可読媒体は、ハードディスクドライブなどの磁気媒体、コンパクトディスク(CD)やデジタル多用途ディスク(DVD)などの光学媒体、永続的又は非永続的なソリッドステートメモリ(フラッシュメモリ、磁気RAMなど)、又はその他の適当な記憶媒体を含む。そのようなコンピュータ可読媒体は任意の適当なやり方で実装できる。本明細書で使用される「コンピュータ可読媒体」(「コンピュータ可読記憶媒体」とも呼ばれる)は、有形の記憶媒体を指す。有形の記憶媒体は非一時的であり、少なくとも1つの物理的構造的要素を有する。本明細書で使用される「コンピュータ可読媒体」では、少なくとも1つの物理的構造的要素は、情報が埋め込まれた媒体を作成するプロセス、その媒体に情報を記録するプロセス、又は情報を含んだ媒体を符号化するプロセスの間に何らかの方法で変更できる少なくとも1つの物理的特性を有する。例えばコンピュータ可読媒体の物理的構造の一部の磁化状態を、記録プロセス中に変更できる。
【0123】
更に、上述した幾つかの技術は、これらの技術によって使用するために特定の方法で情報(例:データ及び/又は命令)を保存する動作を含む。これらの技術の幾つかの実装(技術がコンピュータ実行可能命令として実現される実装など)では、情報はコンピュータ可読記憶媒体に符号化される。本明細書で特定の構造がこの情報を保存するための有利なフォーマットとして説明されている場合、これらの構造を使用して記憶媒体上で符号化されるときに情報の物理的編成を与えることができる。次にこれらの有利な構造は、情報と相互作用する1以上のプロセッサの動作に影響を与えることにより、例えばプロセッサによって実行されるコンピュータ操作の効率を上げることによって記憶媒体に機能性を付与できる。
【0124】
技術をコンピュータ実行可能命令として具体化できる幾つかの実装(すべての実装ではなく)において、これらの命令は任意の適当なコンピュータシステムで動作する1以上の適当なコンピューティングデバイスで実行でき、又は1以上のコンピューティングデバイス(又は1以上のコンピューティングデバイスの1以上のプロセッサ)はコンピュータ実行可能命令を実行するようにプログラムできる。コンピューティングデバイス又はプロセッサは、命令がデータストアなどのコンピューティングデバイス又はプロセッサにアクセス可能な方法で命令が保存されたときに命令を実行するようにプログラムできる(例:オンチップキャッシュ又は命令レジスタ、バスを介してアクセス可能なコンピュータ可読ストレージ、1以上のネットワークを介してアクセス可能なコンピュータ可読記憶媒体、及びデバイス/プロセッサなどによってアクセス可能な媒体)。これらのコンピュータ実行可能命令を含む利便機能は、単一の多目的プログラム可能なデジタルコンピューティングデバイス、処理能力を共有して本明細書に記載した技術を共同で実行する2以上の多目的コンピューティングデバイスの協調システム、本明細書に記載された技術を実行するためだけの単一のコンピューティングデバイス又はコンピューティングデバイスの協調システム(コロケーション若しくは地理的に分散)、本明細書に記載した技術を実行するための1以上のフィールドプログラマブルゲートアレイ(FPGA)、又は任意の他の適当なシステムと統合されてその動作を指示することができる。
【0125】
コンピューティングデバイスは、少なくとも1つのプロセッサ、ネットワークアダプタ、及びコンピュータ可読記憶媒体を含むことができる。コンピューティングデバイスは、例えばデスクトップ又はラップトップ・パーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、スマートフォン、携帯電話、サーバ、又は他の任意の適当なコンピューティングデバイスであってよい。ネットワークアダプタは、任意の適当なコンピューティングネットワークを介して他の任意の適当なコンピューティングデバイスと有線及び/又は無線で通信するために、コンピューティングデバイスを有効にする任意の適当なハードウェア及び/又はソフトウェアであってもよい。コンピューティングネットワークには、ワイヤレスアクセスポイント、スイッチ、ルータ、ゲートウェイ、及び/又はその他のネットワーク機器、及びインターネットを含め2以上のコンピュータ間でデータを交換するための適当な有線及び/又は無線通信媒体を含む。コンピュータ可読媒体は、処理されるデータ及び/又はプロセッサによって実行される命令を保存するように適合できる。プロセッサは、データの処理や命令の実行を可能にする。データ及び命令は、コンピュータ可読記憶媒体に保存されてよい。
【0126】
コンピューティングデバイスは、更に入出力装置を含め1以上の構成要素及び周辺機器を有してよい。これらのデバイスは、とりわけユーザインタフェースを提供するために使用できる。ユーザインタフェースを提供するために使用できる出力デバイスの例は、出力を視覚的に表示するためのプリンタ又はディスプレイ画面、及び出力を聴覚的に表示するためのスピーカ又はその他の音声生成装置を含む。ユーザインタフェースに使用できる入力デバイスの例は、キーボード、マウスやタッチパッドなどのポインティングデバイス、及びデジタル化タブレットである。別の例として、コンピューティングデバイスは、音声認識又は他の可聴形式で入力情報を受け取ることができる。
【0127】
以上説明された実施形態は、技術が回路及び/又はコンピュータ実行可能命令で実装されたものである。少なくとも1つの例が提供された方法の形態で幾つかの実施形態があってもよいことを理解されたい。方法の一部として実行される動作は、任意の適切なやり方で順序付けることができる。したがって、例示の実施形態では連続した動作として示されているが、実施形態は幾つかの動作を同時に実行することも含めて、例示されたものとは異なる順序で動作が実行されるように構成されてよい。
【0128】
上述した実施形態の種々の態様は、単独でも、組み合わせて、又は上述した実施形態で具体的に論じられていない様々な構成で使用することができ、それゆえその応用において上記の説明に記された又は図面に示された詳細及び構成要素の配置に限定されるものではない。例えばある実施形態に記載された態様は、他の実施形態に記載される態様と任意のやり方で組み合わせることができる。
【0129】
特許請求の範囲で請求要素を修正するために「第1」、「第2」、「第3」などの序数詞を使用することは、それ自体はある請求要素の別の請求要素に対する優先、優位又は順位、或いは方法の動作が実行される時間的順序を意味するものではなく、単に請求要素を区別するために特定の名前を持つ請求要素を(序数詞の使用を除いて)同じ名前を持つ別の要素と区別するための表示としてのみ使用される。
【0130】
また、本明細書で使用される語法及び用語は説明を目的とするものであり、制限と見なされるべきではない。本明細書における「含む」、「有する」、「持つ」、「包含する」、「伴う」、及びそれらの変形の使用は、その後に列挙される項目、及びその同等物、並びに追加項目を網羅することを意味する。
【0131】
本明細書では、「例示的」という言葉は、例、事例又は例示としての役割を果たすことを意味するために使用される。それゆえ例示として本明細書に記載される実施形態、実装、プロセス、特徴などは、例示的な例として理解されるべきであり、特に明記しない限り選好される例若しくは有利な例として理解されるべきではない。
【0132】
以上、少なくとも1つの実施形態の幾つかの態様を説明したが、当業者には様々な変更、修正及び改善が容易に想到し得るものであることを理解されたい。そのような変更、修正及び改善は本開示の一部であることが意図されており、本明細書に記載する原理の精神及び範囲内にあることが意図されている。したがって上記の説明及び図面は例示にすぎない。