CalibrateGrid
CalibrateGrid 関数は、ユーザ設定可能なキャリブレーショングリッドパターンを使用して、ピクセル座標系とワールド座標系間で変換を行うための 2D 変換を作成します。また、CalibrateGrid 関数は、線形、非線形、およびレンズ歪みを補正し、Calibrate 関数の中で最も高い精度を実現します。
概要
CalibrateGrid 関数は、キャリブレーションドットグリッドパターンで検出されたドットまたはチェッカボードキャリブレーショングリッドパターンの頂点によって識別される点のセット間での 2D 変換を計算します。さらに、CalibrateGrid 関数は、画像の取り込みに使用されているレンズの放射歪みまたは遠近歪みを自動的に補正します。
CalibrateGrid 関数を使用するには、関数をスプレッドシートの空白セルに挿入し、[CalibrateGrid] ダイアログの [セットアップ] ペインを表示します。キャリブレーションパターンは、CalibrateGrid の [セットアップ] ペインで設定します。
- 使用するキャリブレーショングリッドパターンのタイプ
- キャリブレーショングリッドパターンの間隔
- 実世界のタイプ、物理測定単位
- ポーズの数を 1 ~ 30 に設定
キャリブレーションプレートグリッドがない場合は、オプションで印刷することができます。次に [ポーズ] ペインを使用して、パターンの画像を取り込みます。画像が取り込まれると、CalibrateGrid 関数は可能な限り多くの特徴点を自動的に識別します。[キャリブレーション] ボタンをクリックすると、CalibrateGrid 関数は直ちにキャリブレーションの計算を開始し、特徴点の間隔に基づいた「キャリブレーション得点」を報告します。結果は、[結果] ペインに表示されます。
キャリブレーションの実行が完了すると、キャリブレーションデータは [CalibrateGrid] セルに格納されます。これによって、CalibrateGrid 関数を 1 つのジョブからコピーして別のジョブに貼り付けること、または [セルのエクスポート]、[セルのインポート] を使用して外部ファイルとしてエクスポートおよびインポートすることができるようになります。さらに、必要であれば、各ジョブに異なるキャリブレーションを設定することや、1 つのジョブに複数のキャリブレーションを設定することもできます。なお、キャリブレーション関数を引数として使用するほかの関数は、CalibrateGrid データ構造体を参照することができます。
- Calibrate 関数、CalibrateAdvanced 関数、または CalibrateGrid 関数を使用する場合、物理セットアップと光学セットアップ (レンズ、センサ、およびセンサと取り込まれるシーンの間の物理的関係) はキャリブレーション操作とランタイム操作の両方で同一にする必要があります。このうちのいずれかが変更された場合、システムを再キャリブレーションする必要があります。したがって、キャリブレートとランタイム画像の処理の両方で、同じセンサとレンズを使用することを推奨します。センサとレンズでは、元のセットアップおよびキャリブレーション設定を変更しないようにする必要があります。例えば、画像取り込みフォーマットの変更 (解像度の変更による) またはセンサの移動を行うと、ピクセルをワールド座標にマッピングする 2D 変換が不正になります。
- In-Sight 5604 ラインスキャンビジョンシステムは、ピクセル座標でのみ動作します。In-Sight 5604 で実行されているジョブに Calibrate 関数が追加されていると、不正な結果がもたらされます。
[CalibrateGrid] ダイアログペインとコントロール
[CalibrateGrid] ダイアログはキャリブレーション用の 3 つのペインで構成されます。
[セットアップ] ペイン
コントロール | 説明 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
グリッドタイプ |
キャリブレーションの作成に使用するキャリブレーションパターンのタイプを指定します。[フィデューシャルつきチェッカボード]、[フィデューシャルなしチェッカボード]、[フィデューシャルつきドット]、または [フィデューシャルなしドット]
|
||||||||||||||||||||||||||
[グリッド間隔]: | チェッカボードパターン内にある正方形のサイズ、またはドットグリッドパターン内にあるドットの中心から中心への距離のいずれかを指定します (0.0000001 ~ 9999999、デフォルト = 10.00)。 | ||||||||||||||||||||||||||
[単位]: | 実世界の測定単位 ([ミクロン]、[ミリメートル] (デフォルト設定)、[センチメートル] または [インチ]) で、キャリブレーションはこの単位に基づいています。 | ||||||||||||||||||||||||||
[ポーズ数]: | キャリブレーションの完了に必要なポーズの数を指定します。1 つのキャリブレーションパターンで視野全体をカバーできない場合は、複数のポーズを使用する必要があります。このタイプのキャリブレーションでは、視野をカバーするために、キャリブレーションパターンはさまざまな物理的位置に配置されます。キャリブレーションパターンの各位置は、「ポーズ」と呼ばれます。CalibrateGrid 関数では、1 ~ 30 個のポーズを処理することができます。2 つ以上のポーズを選択した場合は、[ポーズ位置] のオプションが有効になります。これらのオプションは、ポーズ間におけるキャリブレーションパターンの予想される動きを指定するために使用します。 | ||||||||||||||||||||||||||
[レンズモデル]: | 画像取得に使用されているレンズタイプに基づいて、歪み補正のタイプ ([放射歪み補正] または [遠近歪み補正]、デフォルト = [放射歪み補正]) を指定します。「放射歪み」とは、視野周辺部の倍率と、視野中央部の倍率が異なる光学レンズに生じる歪みのことです。放射歪みは、通常、視野の広いレンズでより深刻となります。例えば、広角レンズは、望遠レンズより深刻な放射歪みが発生する傾向があります。「遠近歪み」とは、取得されるシーンに対し、ビジョンシステムの光学軸が直角でない場合に発生する歪みのことです。 | ||||||||||||||||||||||||||
[グリッドの印刷]: |
[グリッドの印刷] ボタンをクリックして、選択した [グリッドタイプ] を印刷します。 注 : [グリッドの印刷] 機能は、高い精度を要求されない測定および検証を行う場合にのみ使用してください。高い精度と確度が要求されるアプリケーションには使用できません (高い精度と確度が要求されるアプリケーションには、正確に作成されたキャリブレーションパターンが必要になります)。
|
||||||||||||||||||||||||||
[ポーズ位置] - [自動] (デフォルト): | CalibrateGrid 関数による複数のポーズの設定方法を指定します (このオプションを有効にするには、[ポーズ数] パラメータに 2 よりも大きい値を設定する必要があります)。[自動] モードでは、ビジョンシステムでの光学キャリブレーション (遠近とレンズの歪みの修正) のみが可能です。[自動] モードを使用して、キャリブレーショングリッドの複数のビューをつなぎ合わせて最初のポーズビューの座標系にすると、入力が必要となるワールド座標値は、ポーズ 1 内にある原点のワールド座標のみになります。ほかのすべてのポーズは、フィデューシャルが検出されている限り、各ポーズの原点を指定しなくてもキャリブレートすることができます。 | ||||||||||||||||||||||||||
[ポーズ位置] - [ユーザ指定]: | CalibrateGrid 関数による複数のポーズの設定方法を指定します (このオプションを有効にするには、[ポーズ数] パラメータに 2 よりも大きい値を設定する必要があります)。[ユーザ指定] モードを使用して、ハンドアイキャリブレーションを実行することができます。このキャリブレーションタイプは、遠近とレンズの光学歪みを修正するためのデータを提供するだけでなく、画像座標空間からモーション座標空間へのカメラのキャリブレーションも行います。[ユーザ指定] モードをマルチビューキャリブレーションに使用すると、各ビューでモーションデバイスのポーズを手動で入力する必要があります。 |
[ポーズ] ペイン
コントロール | 説明 | ||||||
---|---|---|---|---|---|---|---|
[原点の位置 (ワールド座標系)]: |
原点の X 位置と Y 位置をワールド座標で指定します。さらに、グリッドの軸の角度関係と実世界軸の間に不一致がある場合は、[角度] を指定することもできます。 注 : [セットアップ] ペインで [ポーズ位置] を有効にして [ユーザ指定] モードを選択した場合、[原点の位置 (ワールド座標系)] を実際に使用して、キャリブレーションプレートの原点の位置と角度ではなく、モーションデバイスのモーションポーズを指定します。
|
||||||
[特徴点検出数]: |
キャリブレーションで使用する抽出された特徴点の総数を表示します。 | ||||||
[画像取り込み]: |
画像の取り込み方法を指定します。
|
||||||
[グリッドの軸]: |
フィデューシャルなしのキャリブレーションパターン ([フィデューシャルなしチェッカボード]、[フィデューシャルなしドット]) が選択されている場合は、キャリブレーションパターンのグリッドの軸を指定します。 | ||||||
[領域の調整]: |
対話型グラフィックスモードが開始され、キャリブレーションの対象領域を定義します。その対象領域内の特徴のみがキャリブレーションで使用されます。 | ||||||
特徴点テーブル: |
画像から抽出された特徴点のピクセル行とピクセル列の座標のほかに、キャリブレーションパターンの位置が原点に対するグリッド座標 (X, Y) で表示されます。原点の値が変わると、常に X 座標と Y 座標が更新されます。抽出された特徴点は、各特徴の位置に緑色の「x」でグラフィカルに表示されます。テーブルから特徴点を選択、またはグラフィックス表示の特徴点をクリックすると、テーブルとグラフィックス表示の両方でその特徴点がハイライトされ、その座標がグラフィカルに表示されます。 |
[結果] ペイン
コントロール | 説明 |
---|---|
[特徴点の総数]: |
キャリブレーションで使用する抽出された特徴点の総数を表示します。 |
[平均エラー]: |
キャリブレーション中の平均エラーをピクセル単位で表示します。 |
[最大エラー]: |
キャリブレーション中の最大エラーをピクセル単位で表示します。 |
キャリブレーションのグラフィック: |
キャリブレーションをグラフィカル形式で表示します。
|
特徴点テーブル: |
画像から抽出された特徴点のピクセル行とピクセル列の座標のほかに、キャリブレーションパターンの位置が原点に対するグリッド座標 (X, Y) で表示されます。原点の値が変わると、常に X 座標と Y 座標が更新されます。抽出された特徴点は、各特徴の位置に緑色の「x」でグラフィカルに表示されます。テーブルから特徴点を選択、またはグラフィックス表示の特徴点をクリックすると、テーブルとグラフィックス表示の両方でその特徴点がハイライトされ、その座標がグラフィカルに表示されます。 |
使用方法 CalibrateGrid
CalibrateGrid 関数を使用するプロセスは、次の手順で構成されています。
CalibrateGrid 関数の挿入
- 空白のセルを右クリックして [関数の挿入] を選択し、[関数の挿入] ダイアログを開きます。
- [関数の挿入] ダイアログの左側で、ツールカテゴリの [座標補正] リストを展開します。
- 関数リストから CalibrateGrid 関数を選択して、[OK] ボタンを押します。
[セットアップ] ペインを使用したキャリブレーションパターンの設定
CalibrateGrid 関数を初めて挿入すると、[セットアップ] ペインが自動的に表示されます。
- キャリブレーションパターンの設定を開始するには、[グリッドタイプ] パラメータからキャリブレーションパターンを選択します。
- [グリッド間隔] フィールドの値を設定します。この値は、チェッカボードパターン内にある正方形のサイズ、またはドットグリッドパターン内にあるドットの中心から中心への距離のいずれかを定義するために使用されます。
- [単位] フィールドの値を設定します。これは実世界の測定単位で、ワールド座標はこの単位に基づいています。
-
キャリブレーションの完了に必要なポーズの数を決め、[ポーズ数] パラメータにその値を入力します。1 つのキャリブレーションパターンで視野全体をカバーできない場合は、複数のキャリブレーションパターンを使用する必要があります。このタイプのキャリブレーションでは、視野をカバーするために、キャリブレーションパターンはさまざまな物理的位置に配置されます。キャリブレーションパターンの各位置は、「ポーズ」と呼ばれます。CalibrateGrid 関数では、1 ~ 30 個のポーズを処理することができます。2 つ以上のポーズを選択した場合は、[ポーズ位置] のオプションが有効になります。これらのオプションは、ポーズ間におけるキャリブレーションパターンの予想される動きを指定するために使用します。
デフォルト設定は [自動] になっています。この設定では、基本的にキャリブレーションパターンを自由に移動することができます。[自動] が選択されると、入力が必要となるワールド座標値はポーズ 1 内にある原点のワールド座標のみになります。ほかのすべてのポーズは、フィデューシャルが検出されている限り、各ポーズの原点を指定しなくてもキャリブレートされます。
注 : [自動] モードでは、ビジョンシステムでの光学キャリブレーション (遠近とレンズの歪みの修正) のみが可能です。モーションデバイスのモーション座標系との関係を確立するため、ハンドアイキャリブレーションを実行する場合は、[ユーザ指定] モードを選択します。各ビューでのモーションデバイスのポーズは、手動で入力する必要があります。キャリブレーションプレートとモーションデバイス間の (位置と方向の) 配置オフセットが分かっていないので、キャリブレーションプレートの元の位置を調べる必要はありません。
注 : [ユーザ指定] モードでは、光学キャリブレーションとモーションデバイスのキャリブレーションの両方が可能です。
- グリッドパターンを印刷する前に、[レンズモデル] ([放射歪み補正] または [遠近歪み補正]) を選択し、画像取得に使用されているレンズタイプに基づいて、歪み補正のタイプを定義します。「放射歪み」(デフォルト設定) とは、視野周辺部の倍率と、視野中央部の倍率が異なる光学レンズに生じる歪みのことです。放射歪みは、通常、視野の広いレンズでより深刻となります。例えば、広角レンズは、望遠レンズより深刻な放射歪みが発生する傾向があります。「遠近歪み」とは、取得されるシーンに対し、ビジョンシステムの光学軸が直角でない場合に発生する歪みのことです。
[グリッドの印刷] ダイアログを使用したキャリブレーションパターンの印刷
- キャリブレーションパターンの設定が完了したら、[グリッドの印刷] ボタンをクリックしてキャリブレーションパターンのコピーを印刷します。
- 印刷を実行する前に [ページ設定] ボタンをクリックし、[ページ設定] ダイアログを使用してキャリブレーションパターンを設定します。
- [印刷] ボタンをクリックして、[印刷] ダイアログを表示します。このダイアログから、キャリブレーションパターンの印刷を実行することができます。
[ポーズ] ペインを使用したキャリブレーションパターンの画像の取得
[セットアップ] ペインでのキャリブレーションパターンの設定が完了したら、ナビゲーションペインから [ポーズ] (または、複数のポーズを設定する場合は [ポーズ 1]) を選択します。[ポーズ] ペインが表示されます。
-
キャリブレーション用画像の取り込みには、次の 3 つのオプションがあります。
- トリガ
- ライブビデオ
- 画像ファイルを開く
注 : 最も正確な結果を得るには、キャリブレーションパターンが視野全体で鮮明になるように焦点を調整します。また、特徴を処理する場合、CalibrateGrid 関数は特徴が白地に黒または黒地に白であるかどうかを判別しません。 -
画像の取り込みが完了すると、CalibrateGrid 関数は特徴点を自動的に抽出します。
- 抽出された各特徴を示すデータテーブルを表示するには、切り替えボタンをクリックします (テーブルを非表示にするにはボタンをもう一度クリック)。このテーブルには、画像から抽出された特徴点のピクセル行とピクセル列の座標のほかに、キャリブレーションパターンの位置が原点に対するグリッド座標 (X, Y) で表示されます。原点の値が変わると、常に X 座標と Y 座標が更新されます。抽出された特徴点は、各特徴の位置に緑色の「x」でグラフィカルに表示されます。テーブルから特徴点を選択、またはグラフィックス表示の特徴点をクリックすると、上の図のように、テーブルとグラフィックス表示の両方でその特徴点がハイライトされ、その座標がグラフィカルに表示されます。
新しい画像を取り込んだ場合または [ポーズ] ダイアログに戻った場合は常に、領域サイズの調整および特徴点の再抽出が行われ、結果表示も更新されます。デフォルトでは、画像全体が特徴点抽出に使用されます。[領域の調整] ボタンをクリックすると、対話型グラフィックスモードが開始されます。このモードでは、対象領域を定義し、その領域外にある画像部分を無視することができます。
[ポーズ] ペインでの原点の変更または設定 (オプション)
[セットアップ] ペインで [ポーズ位置] を有効にして [自動] モードを選択した場合、[原点の位置] フィールドを使用して、ワールド座標系で原点の X と Y の位置を指定します。さらに、グリッドの軸の角度関係と実世界軸の間に不一致がある場合は、[角度] フィールドを使用してその角度を入力することができます。例えば、原点が画像の隅にあるよりも対象物の中心にある方が便利な場合は、原点を変更することができます。キャリブレーションの原点位置は、[原点の位置 (ワールド座標系)] にある [X]、[Y]、および [角度] フィールドの値を調整することで変更できます。 ボタンをクリックして値を増減するか、または必要な数値を手動で入力します。[自動] が選択されると、入力が必要となるワールド座標値はポーズ 1 内にある原点のワールド座標のみになります。ほかのすべてのポーズは、フィデューシャルが検出されている限り、各ポーズの原点を指定しなくてもキャリブレートされます。
[セットアップ] ペインで [ポーズ位置] を有効にして [ユーザ指定] モードを選択した場合、[原点の位置 (ワールド座標系)] を実際に使用して、キャリブレーションプレートの原点の位置と角度ではなく、モーションデバイスのモーションポーズを指定します。[ユーザ指定] モードを使用してハンドアイキャリブレーションを実行し、モーションデバイスのモーション座標系との関係を確立します。各ビューでのモーションデバイスのポーズは、手動で入力する必要があります。キャリブレーションプレートとモーションデバイス間の (位置と方向の) 配置オフセットが分かっていないので、キャリブレーションプレートの元の位置を調べる必要はありません。
[グリッドの軸] を使用したフィデューシャルなしのキャリブレーションパターンの設定 (オプション)
使用するキャリブレーションパターンにフィデューシャルがない場合は、[グリッドの軸] にある設定を使用して原点および X 座標軸と Y 座標軸を定義する必要があります。[グリッドの軸] にある設定は、フィデューシャルのないキャリブレーションパターンを選択した場合にのみ利用可能になり表示されます。
-
画像の処理と特徴の抽出が完了したら、[原点の選択] ボタンをクリックします。
-
これにより対話型グラフィックスモードが開始されます。このモードからハイライトされている点のいずれかをダブルクリックし、原点として選択します。
注 : 抽出されたすべての特徴を原点にできるわけではありません。特徴点に 90 度離れている 2 つの隣接点が存在しない場合は、その特徴点を原点として選択することはできません。 -
原点の設定が完了すると、次の図のように、[スプレッドシートビュー] ウィンドウで原点がハイライトおよび表示され、データテーブルでは選択した原点座標が自動的にハイライトされます。
-
次に、[X 軸の選択] ボタンをクリックすると、対話型グラフィックスモードが開始されます。このモードからハイライトされている点のいずれかをダブルクリックし、X 軸として選択します。
-
X 軸の設定が完了すると、次の図のように、[スプレッドシートビュー] ウィンドウで X 軸がハイライトおよび表示され、データテーブルでは選択した X 軸座標が自動的にハイライトされます。
-
次に、[Y 軸の選択] ボタンをクリックすると、再び対話型グラフィックスモードが開始されます。このモードからハイライトされている点のいずれかをダブルクリックし、Y 軸として選択します。
-
Y 軸の設定が完了すると、次の図のように、[スプレッドシートビュー] ウィンドウで Y 軸がハイライトおよび表示され、データテーブルでは選択した Y 軸座標が自動的にハイライトされます。
- 最後に、原点、X 軸、および Y 軸の設定が完了したら、[キャリブレーション] ボタンをクリックして [結果] ペインに進み、キャリブレーションを終了するか、またはほかのポーズを設定する場合はナビゲーションペインで [ポーズ] を選択します。
[ポーズ] ダイアログを使用した複数のポーズの設定 (オプション)
[自動] モード:
1 つのキャリブレーションパターンで視野全体をカバーできない場合は、複数のキャリブレーションパターンを使用する必要があります。ここで説明する複数のポーズを扱う状況では、フィデューシャルつきのドットグリッドパターンが使用されています。
-
ポーズ 1 の [原点の位置 (ワールド座標系)] を指定します。
注 : [自動] が選択されると、入力が必要となるワールド座標値はポーズ 1 内にある原点のワールド座標のみになります。ほかのすべてのポーズは、フィデューシャルが検出されている限り、各ポーズの原点を指定しなくてもキャリブレートされます。 - ポーズ 1 に続くポーズごとに、新しい画像をロードするか、取り込む必要があります。
- すべてのポーズの設定が完了したら、[キャリブレーション] ボタンをクリックして [結果] ダイアログに進み、キャリブレーションを終了します。
[ユーザ指定] モード:
キャリブレーションのために、各ポーズ用に異なる物理的位置に配置されているパターンを含む複数のポーズが必要になることがあります。その場合、キャリブレーションシーケンスの中で、キャリブレーションパターンを複数の位置に正確に移動する必要があります。これはモーションデバイスを使用して行うこともできますが、モーションデバイス制御ソフトウェアは自動化に対応していません。したがって、モーションデバイスを使用する場合は、処理を進める前に、モーションデバイスコントローラによってモーションデバイスを手動で操作してそれぞれの新しいポーズに移動する必要があります。
-
各モーションポーズの [原点の位置 (ワールド座標系)] を指定します。モーションデバイスのポーズは、各ビューに手動で入力する必要があります。
注 : [原点の位置 (ワールド座標系)] を [ユーザ指定] モードで実際に使用して、キャリブレーションプレートの原点の位置と角度ではなく、モーションデバイスのモーションポーズを指定します。キャリブレーションプレートとモーションデバイス間の (位置と方向の) 配置オフセットが分かっていないので、キャリブレーションプレートの元の位置を調べる必要はありません。 - ポーズ 1 に続くポーズごとに、追加の各ポーズの新しい画像を取り込む必要があります。
- すべてのポーズの設定が完了したら、[キャリブレーション] ボタンをクリックして [結果] ダイアログに進み、キャリブレーションを終了します。
[結果] ダイアログを使用したキャリブレーションの検証
[キャリブレーション] ボタンをクリックすると、CalibrateGrid 関数が最適な 2D 変換の計算を開始し、画面は自動的に [結果] ペインに切り替わります。[結果] ペインにはキャリブレーションの概要が表示されます。この概要には、検出された特徴点の総数、およびピクセル単位でキャリブレーションの平均エラーと最大エラーが示されます。エラーレベルの評価は、次のレート値を使用して、平均エラーに基づいて割り当てられます。
- 非常によい = エラー <= 0.25
- よい = 0.25 < エラー <= 0.5
- やや悪い = 0.5 < エラー <= 2.0
- 悪い = 2.0 < エラー <= 5.0
- 非常に悪い = 5.0 < エラー
この評価は、キャリブレーション全体の「得点」と見ることができます。例えば、特徴点のグリッド上での間隔が不均等になっている場合は、得点が低くなります。また、複数ポーズのキャリブレーションで、ポーズ位置に [ユーザ指定] が選択されていると、ポーズの 1 つが正しく配置されなかった場合も得点が低くなります。
結果が許容可能であれば、[OK] ボタンをクリックしてキャリブレーションを終了します。キャリブレーションが正常に完了すると、スプレッドシートに キャリブデータ構造体が挿入されます。