Ensenso 3D カメラで立体視手法を使用して説得力のある奥行き情報を生成する方法

ステレオビジョンによる 3D データ

1 要約

本紙では、ステレオカメラを使った遠近感の主な処理手順の概要について説明します。一般的なテクニックを説明した後、従来のステレオビジョンプロセスを改良する Ensenso ステレオカメラ固有の特徴を説明します。

2 ステレオビジョンの原理

ステレオビジョンからの遠近感は、三角測量の原理に基づいています。投影光学系を備えた 2 台のカメラを並べて使用し、双方の視野が目的の物体距離で重なるようにします。それぞれのカメラで写真を撮影し、2 つの視点からシーンを撮影します。この設定を図 1 に示します。

両方の画像に見られる各表面点について、表面点を各カメラの投影中心につなぐ 2 本の直線が 3D 空間にあります。撮影したシーンの 3D 位置を得るには、主に 2 つのタスクを実行する必要があります。第一に、左側の画像に見える各表面点が右側の画像に位置している場所を特定する必要があります。第二に、左右のカメラの関連するピクセルに対する直線の交差位置を計算するために、正確なカメラジオメトリを知る必要があります。カメラは相互にしっかりと固定されているという前提で、ジオメトリは校正プロセス中に 1 回だけ計算されます。

図 1: Dataset「Cones」の例。紙で作ったコーンのあるシーンがステレオカメラで画像処理されています。2 つのコーンの頂点を 2 つのカメラ画像に投影する直線が示されています。

3 カメラの校正

つのカメラシステムのジオメトリは、ステレオ校正プロセスで事前に計算されます。まず、校正物が必要です。通常は、サイズが既知の、チェッカーボードまたはドットパターンの平面校正板です。次に、同期する画像ペアを撮影し、両方のカメラでのパターンの異なる位置、方向、距離を示します。各画像ペアにあるパターンのドットのピクセル位置と、校正板上の既知の位置を使用して、すべてのパターンの 3D 配置と、ステレオカメラの正確なモデルの両方を計算できます。モデルは、カメラの焦点距離やゆがみなどの各カメラのいわゆる内的パラメーターと、左右のカメラ間の 3 次元での回転およびシフトなどの外的パラメーターで構成されています。この校正データを使用して、両方の画像で特定された対応点を三角法で測定し、カメラに対する 3D 座標を復元します。

図 2:画像の位置を一致させる探索空間は 1 次元です。上:エピポーラー線はゆがんだ生画像では曲線になっています。中央:画像のゆがみを解消すると、エピポーラー線は直線になります。下:修正により、エピポーラー線が画像軸に揃います。画像の走査線に沿って対応点探索を実行できます。

4 奥行き計算の処理手順

以降の 3 つのセクションでは、画像ペアの各ピクセルの 3D 位置を計算するために必要な処理手順を説明します。これらの手順は、3D 点群またはシーンの表面を取得するため、撮影した各ステレオ画像に対してリアルタイムで実行する必要があります。

4.1 修正

画像処理した点を三角測量するには、左右の画像から対応する画像部分を特定する必要があります。左側の画像から小さな画像パッチを取り出して考慮すると、右側の画像全体から十分に良好な一致を探索できます。これをリアルタイムで実行しようとすると時間がかかりすぎます。図 3 の画像ペアの例を考えてみます。左の画像の上部にコーンの頂点があります。直感的には、カメラを並べて取り付けている場合、右側の画像の下半分ではコーンの頂点を探索する必要はないように思われます。事実には、2 つの投影カメラのジオメトリにより、探索対象は右側の画像の 1 つの線に絞られます。これをエピポーラー線と呼びます。

図 3:ステレオ画像ペア。コーン頂点を右側の画像のどこから探索する必要があるでしょうか。

図 2 (上) には、手書きによる点の対応付けとエピポーラー線を示しています。カメラの生画像では、エピポーラー線はカメラの光学系が起こすひずみによって湾曲します。湾曲した線に沿って対応点を探索するのは非常に時間がかかり、複雑です。しかし、校正プロセス中に学習したひずみを逆に適用することで、画像のゆがみを除去できます。この処理によるゆがみのない画像では、図 2 (中央) で示すように、エピポーラー線は直線になります。

直線になっていても、エピポーラー線の向きは各画像の部分ごとに異なります。これは、画像平面 (カメラセンサー) が完全に同一平面上にないか、方向が同一ではないために発生します。対応点探索をさらに高速化するには、校正によるカメラジオメトリを使用して、画像に透視変換をさらに適用して、エピポーラー線を画像の走査線に一致させることができます。この手順を修正と言います。白いコーンの頂点の探索は、右側の画像の同じ走査線を対象とするだけで実行でき、最適なマッチング位置を見つけられるようになります。その後の処理は修正済みの画像でのみ実施されるので、生成される画像は図 2 (下) のようになります。

4.2 ステレオマッチング

左側の画像の各ピクセルについて、同じ物体点を撮影した、右側の画像の同じ走査線上のピクセルを探索できるようになります。1 つのピクセル値の情報だけでは、一般には対応するピクセルを確実に見つけるには不十分なので、通常は各ピクセルの周囲の小さな領域 (7x7 ピクセルなど) を、右側の画像の同じ列に存在できるすべての領域に対してマッチングを試みます。さらなる制限として、探索する必要があるのは列全体ではありません。近くの物体に焦点を合わせるときに少し寄り目になるように、左側の画像のピクセルの X 座標より左側にある、限られた数のピクセルだけです。これにより、マッチングが高速になり、点を三角測量できる奥行きの範囲が制限されます。十分に良好で一意の一致が見つかったら、左側の画像のピクセルを対応する右側の画像のピクセルに対応付けます。関連付けはピクセルの X 座標間のオフセットという形式で、視差マップに格納されます (図 4 を参照)。

図 4

4:画像マッチングの結果。視差マップは、左の画像と右の画像とのピクセルシフトの形式で奥行き情報を示します。特別な値 (ここでは黒) を使用して、右側の画像でピクセルを特定できなかったことを示しています。これは、物体上の閉塞領域または反射の場合に発生し、両方のカメラで異なる表示になります。

このマッチング技法は、各ピクセル周辺の情報のみを使用するので、ローカルステレオマッチングと呼ばれます。明らかに、同じ走査線上の他の画像の部分から十分に離れている場合にのみ、左右の画像間の領域を一致させることができます。このため、ローカルステレオマッチングは、テクスチャがはっきりしない、または繰り返しパターンの場合は失敗します。これとは別のグローバルステレオマッチングという手法でも、隣接情報を利用できます。各ピクセル (または画像パッチ) を個々に考慮してマッチング相手を探すのではなく、左右の画像のすべてのピクセルに対する対応を一度に見つけようとします。このグローバル割り当てでは、表面が最もなめらかで、隣接するピクセルの奥行きも同様であると仮定しています。グローバル手法のほうがローカル手法よりも複雑で、処理能力を多量に必要としますが、表面上のテクスチャが少なくて済み、特に物体の境界において結果の精度が高くなります。

4.3 再投影

どのマッチング技法を使用しても、結果は常に、視差マップに格納された、左の画像と右の画像のピクセルの関連付けとなります。視差マップ内の値は、対応する場所が右側の画像で見つかった、ピクセルのオフセットをコード化しています。図 4 に視差の概念を示します。ここでも校正時に取得したカメラジオメトリを使用して、ピクセルベースの視差値を、各ピクセルの実際の X、Y、Z 座標に変換します。この変換を再投影と言います。関連付けられた左の画像と右の画像のピクセルの 2 本の直線は、前述の図 1 に示したように交差できます。この XYZ データは点群と呼ばれます。一般には 3 チャネル画像として保存され、画像のピクセルグリッドから得た点の隣接情報も維持されます。点群の視覚化を図 5 に示します。

図 5:視差マップとカメラ校正データから生成された 3D 表面のビュー。表面は、左のカメラ画像でテクスチャ化されています (ここではグレースケールに変換)。

5アプリケーション固有の処理

シーンの完全な 3D 点群を取得するためには、前述の 3 つの処理手順をステレオ画像ペアについて実行する必要があります。その後、点群をさらに処理して特定のアプリケーションを実現します。シーンの表面を、以前の点群または CAD モデルから学習した既知の物体と一致させるために使用できます。該当部分を撮影したシーンの表面に一意に特定できる場合、物体の完全な位置と回転を計算でき、ロボットによるピッキングなどに活用できます。

6Ensenso ステレオカメラ

前述したように、すべてのステレオマッチング技法には、左右の画像で対応点を確実に特定するためにテクスチャ化した物体が必要です。テクスチャ認識は照明条件とシーン内の物体の表面テクスチャに直に依存するので、テクスチャ化が不十分な表面や反射面は、生成される 3D 点群の品質に直接影響を及ぼします。Ensenso カメラは特殊なテクニックを使用して従来のステレオビジョンプロセスを改良します。これにより、奥行き情報の品質が向上し、より正確な測定結果を手に入れられます。

テクスチャ投影

このため、Ensenso ステレオカメラは追加のテクスチャ投影装置と統合されます。画像撮影中に、テクスチャ投影装置は物体自体のテクスチャを、高度に構造化されたパターンで強化し、ステレオマッチング手順での曖昧さをなくします。これにより、単色またはテクスチャが曖昧な表面でも、高密度の 3D 点群が得られます。これが、弊社が「投影テクスチャステレオビジョン」を提唱する理由です。プロジェクターとカメラもハードウェアトリガー信号で同期され、移動する物体を撮影するときにも一貫した画像ペアを得られます。

FlexView

投影光線のパターンマスクの位置は、圧電アクチュエーターを使用して非常に細かいステップで直線上にシフトできます。すると、シーンの物体表面に投影されたテクスチャもシフトし、光沢面、暗い面、光が散乱する面で、さまざまな情報が追加して作成されます。静止シーンでは、この FlexView 技術によって、異なるテクスチャを持つ複数の画像ペアを撮影でき、ピクセル数が増加します。解像度が高くなるので、より詳細な視差画像と点群を計算でき、この結果、困難な表面での 3D データの堅牢性が高まります。

NxLib ステレオ処理ライブラリ

NxLib ライブラリはカメラとのインターフェースとなり、校正を含むステレオ処理パイプライン全体を実現します。テクスチャ投影とグローバルマッチング技法を組み合わせ、高密度で高品質の点群を提供します。厳密に並列化されたグローバルマッチングアルゴリズムで、すべてのプロセッサーコアを使用してリアルタイムで処理を実行できます。