画像品質の最適化#
フレームレート、Exposure Time、Gainなどのカメラパラメータは、画像の撮影タイミングと方法を決定します。それだけでなく、画質にも大きな影響を与えます。デプス画像の画質をさらに向上させるために、調整可能なステレオマッチングパラメータがいくつか用意されています。
両方のタイプのパラメータは、pylon 3D Viewerを使用して設定できます。これにより、設定変更の効果をそれぞれの画像ウィンドウで即座に確認できます。
カメラパラメータ#
行った変更を確認するには、Intensity画像ウィンドウを使用します。
フレームレート#
達成可能な最大フレームレート(秒間フレーム数 = fps)は、カメラの設定とホストシステムのハードウェアの両方に依存します。フレームレートには、いくつかの主要な要因が影響します。
- イルミネーション制御: プロジェクターのデューティサイクルは最大 2.5 % に制限されています。最大 5 ms の Exposure Time と相まって、これが画像取り込み速度を制限しています。
- Exposure Time: Exposure Time は、画像取得の間隔に直接影響します。Exposure Time が短いほど高いフレームレートが可能になり、長いほど可能な最大フレームレートが低下します。
- デプス計算: デプス画像の計算に必要な時間は、以下のパラメータで設定された解像度
BslDepthResolutionおよびホストシステムで使用可能な処理ハードウェア(CPU または GPU)によって異なります。解像度が高く、ハードウェアの性能が低いほど処理時間が長くなり、その結果、達成可能なフレームレートが低下します。
フレームレートは、GigE Vision インターフェイスを介して送信される画像の数を決定します。フレームレートを下げることで、Stereo ace カメラと受信側ホストコンピュータの両方のネットワーク負荷と計算負荷を大幅に軽減できます。多くのアプリケーションにおいて、システムの能力に対応させつつアプリケーションの要件を満たすために、フレームレートを下げることが可能であり、またそうすべきです。
Exposure Time と Gain#
Exposure Time とは、画像取得時にイメージセンサーが光にさらされる時間のことです。撮影された画像の明るさに影響します。Exposure Time は通常、数ミリ秒のオーダーです。シーン内の光量が少ない場合は、より長い Exposure Time が必要になります。ただし、シーン内のオブジェクトや Stereo ace カメラ自体が動く場合、長い Exposure Time はブレを引き起こす可能性があります。
画像の明るさに影響する2つ目のパラメータは Gain です。Gain は、画像を明るく見せるための増幅係数です。しかし同時に、画像ノイズも増加させます。
Exposure Time と Gain を設定することで、シーンの中心にあるオブジェクトなど、アプリケーションに関連するシーンの部分に焦点を合わせることができます。関心領域内の露出過多は避けなければなりませんが、アプリケーションに関係のないシーンの部分では許容される場合があります。
一般原則として、画素が急速に飽和して露出過多の領域の情報が失われるため、画像処理においては露出不足よりも露出過多の方が悪影響を及ぼします。対照的に、露出不足の領域には画像処理に十分な情報が含まれていることがよくあります。したがって、画像が明るすぎるよりも暗くなるようにパラメータを設定する方が得策です。
Gain は、低照度環境である場合や、モーションブラーを避けるために Exposure Time を短縮したい場合にのみ増加させる必要があります。原則として、Gain 値は常に可能な限り低く抑える必要があります。
Stereo Matching パラメータ#
行った変更を確認するには、Point Cloud、Depth Map、およびConfidenceの画像ウィンドウを使用します。
動作範囲#
まず、アプリケーションの動作範囲を考慮する必要があります。パラメータを BslDepthMaxDepth 特定の値に設定すると、それよりも遠くにあるデプス画像内のすべてのピクセルが無効になります。これは、アプリケーションに関係のないシーンの一部を除外する簡単な方法です。
同様に、次のように増加させることができます: BslDepthMinDepth ターゲットオブジェクトが指定された距離よりもStereo aceカメラに近づくことが絶対にないと確信できる場合は、パラメーターを指定します。最小深度を大きくすると、深度画像の計算にかかる時間も短縮され、結果としてフレームレートが向上するというメリットがあります。
レイテンシー#
アプリケーションによっては、深度値の品質よりも、深度画像が計算されるまでのレイテンシの方が重要な場合があります。この場合、 BslDepthResolution パラメーターを以下から減らすことができます: Full を High または Low深度解像度を下げると、ステレオマッチング前の画像サイズが小さくなります。これにより処理時間が短縮され、達成できるフレームレートが大幅に向上します。ただし、深度画像計算のフレームレートは、常にカメラのフレームレート設定によって制限されます。
ホスト側の転送および表示負荷がボトルネックになっている場合は、次を減らすこともできます: BslIntensityResolution.
前述のように、レイテンシの短縮と達成可能なフレームレートの向上にも役立つため、可能な限り最小深度を増やす必要があります。
Density#
密度は、画像内に無効なピクセルがどれだけ存在するかを示す尺度です。密度が高いほど、無効なピクセルが少ないことを意味します。深度画像には、pylon 3D Viewerに表示される深度マップで黒く表示される無効な値が含まれていることがよくあります。これは、指定されたworking range外のシーンの部分だけでなく、オブジェクトの左側の領域でも発生します。これは、左側のカメラが基準カメラであり、背景の一部が右側のカメラに見えないためです。これをオクルージョンと呼び、通常の現象です。
一般的に、無効なピクセルは望ましくありません。これらは、ステレオマッチング法で深度を計算できないことが原因で発生します。これにはさまざまな理由があります。深度画像の密度を高めるために、5つの異なる(および補完的な)戦略を利用できます。
- 画像の露出の調整:露出オーバーの領域にはマッチングに必要な情報が十分に含まれていないため、無効として表示されます。さらに、画像ノイズがシーンのテクスチャよりも強い場合、領域が無効として表示されることがあります。Exposure Time and Gainセクションで説明されているように、露出時間とゲインの設定を調整することで、両方の問題を解決できます。
- 静的シーンの活用: 画像キャプチャ中にシーンとStereo aceカメラが動かない場合、Baslerはスタティックモードの使用を推奨します(
BslDepthStaticSceneパラメーター)。このパラメーターが有効な場合、Stereo aceカメラは連続画像を内部で収集し、これらの画像を平均化してノイズを軽減します。これにより、テクスチャが弱いオブジェクトでもステレオマッチングが可能になります。これにより、多くの場合、はるかに高密度な深度画像が得られます。 - プロジェクターを通したシーンのテクスチャの改善:屋内の環境で無効な領域が発生する最も一般的な理由の1つは、テクスチャの欠如、または非常に反復的なテクスチャの存在です。通常、壁やテーブルはテクスチャのない単色です。その他の構造物は非常に反復的です。どちらのケースも、ステレオマッチングの成功にはあまり役立ちません。これらのテクスチャが多すぎる、または少なすぎるオブジェクトやシーンの部分がアプリケーションにとって重要である場合、それらをキャプチャする唯一の方法は、プロジェクターを使用して人工的にテクスチャを追加することです。
- 照明モードの選択: シーンに投影されたパターンなしで輝度データを取得するには、
AlternateActive照明モードを使用します。このモードでは、画像ごとに2回の露光が実行されます。1回は深度計算用にプロジェクターを有効にした状態、もう1回は輝度データをキャプチャするためです。注意してください、AlternateActiveはレイテンシを増加させます。視差データのみが必要な場合は、設定によってレイテンシを削減できますBslIlluminationModeをAlwaysActiveの代わりにAlternateActive。これにより、露出中プロジェクターが常に有効になります。 - 照明の設定: 調整対象: 照明 Property
BslIlluminationStrengthおよびBslIlluminationModeを調整して、シーンに合わせて投影されたパターンを最適化します。照明の強度を上げると、特に強い環境光があるシーンで、投影されたパターンの視認性を向上させることができます。同時に、デューティサイクルと最大アクティベーション時間を超えないようにする必要があります。最適な結果を得るために、適切な照明モードを選択してプロジェクターとカメラの露出を同期させてください。AlternateActive照明モードでは、環境光がほとんどなく、投影されたパターンなしの画像が暗すぎる場合は、照明の強度を下げ、露出時間を長くして、より良い画像の明るさを達成してみてください。
Depth Artifacts#
次の深度アーティファクトが一般的です:
- 外れ値:通常、ワーキングレンジ内のどこにでも現れる可能性のある深度値の小さなパッチ。
- 幾何学的誤差:不正確と判断されたが、実際の深度に近い深度値。
エラーのフィルタリングとは、正しくない深度値を無効に設定することを意味します。この BslDepthFill パラメータを使用すると、通常はエラーフィルタリングによって生じる小さな領域を補間できます。Fill-in 値を高くすると、補間できる領域の数が増加します。補間される領域のサイズは、エラーフィルタリングのセグメンテーション設定に直接依存します。
外れ値 は、 BslDepthSeg パラメータを使用してフィルタリングできます。このパラメータは、削除する連結ピ的クセルの最大数を指定します。これより少ないピクセルを持つすべてのパッチが無効に設定されます。このサイズは BslDepthFill パラメータにも使用されます。このフィルターによって生じたホールは通常補間されます。
外れ値が発生する可能性を減らすもう1つの方法は、最小信頼度 (Minimum Confidence)を上げることです。信頼度とは、ピクセルが外れ値ではない確率であるためです。
幾何学的エラー 幾何学的エラー の可能性が高い深度値は、 BslDepthMaxDepthErr パラメータ。
アプリケーションによっては、深度画像の表面が滑らかであることが求められる場合があります。これは、Smoothing パラメータを有効にすることで実現できます。
カメラ画像に、深度画像で再構築されないハイライト(正反射)が含まれている場合は、これらのハイライトがカメラのプロジェクターによって発生したものかどうかを確認できます(たとえば、プロジェクターを単にオフにするなど)。このような場合は、Double-Shot モードの使用をお勧めします。