Spatial Correction#
情報
- この機能は、基本的にBasler racer 2カラーカメラの機能です。
- Basler racer 2 L モノクロカメラのr2L8192-240cmおよびr2L16384-120cmでは、spatial correction strideがTDI機能に使用されます。
機能を使用する#
仕組み#
Basler racer 2カラーカメラには、カラーデュアルラインセンサーとカラートリプルラインセンサーの2つの異なるセンサータイプが搭載されています。
情報
お使いのカメラモデルのセンサータイプを確認するには、カメラモデルのトピックをご確認ください。カメラトピックは、エリアスキャンカメラおよびラインスキャンカメラセクションにあります。
カラーデュアルラインセンサーには2つのピクセルラインがあり、カラートリプルラインセンサーには3つのピクセルラインが並んで配置されています。デュアルラインセンサーのラインは互いに直接隣接していますが、トリプルラインセンサーのラインはギャップによって互いに離されています。
カメラを通過するすべてのオブジェクトに対して、各ラインの視野は異なります。取り込みがトリガーされると、センサーのすべてのラインが同時に露光されます。つまり、1回の露光につき、センサー内の各ラインがオブジェクト上の異なる領域を取り込みます。
次の図は、カラートリプルラインセンサーの視野を示しています。
次の例では、オブジェクト上の小さな領域「A」がカメラを通過します。オブジェクトがカメラを通過する際、領域Aは、青色のライン、緑色のライン、赤色のラインの視野にそれぞれ異なる3つのタイミングで入ります。つまり、領域Aの青色情報、緑色情報、赤色情報は、3回の異なる画像取り込み中に収集されます。
領域Aの完全なRGB情報を取得するには、3つの異なる取り込みからのデータを組み合わせる必要があります。完全なカラー情報を取得するために異なる取り込みからのデータを組み合わせるこの必要性は、Spatial Correctionとして知られています。言い換えると、Spatial Correctionは画像の色情報を整列させます。現在の露光の赤色ラインのデータは、過去の露光から取得された緑色および青色のラインのデータと組み合わされます。
Spatial Correction Stride#
イメージ BslSpatialCorrectionStride パラメーターは、Spatial Correctionの有効化および無効化、ならびにSpatial Correctionの2つの側面(開始ラインとストライド)を設定するために使用されます。
Starting Line#
Spatial Correctionの開始ラインは、オブジェクトがカメラを通過する方向に関連しています。
次のように設定します BslSpatialCorrectionStride パラメーターに正または負の値を設定することで、開始ラインが決まり、したがってSpatial Correctionの方向が決まります。
ラインスキャンカラーカメラ#
次の図は、移動方向に応じたカラートリプルラインセンサーの開始ラインを示しています。
カラートリプルラインセンサー:
- 正のパラメータ値:開始ラインは青のラインです。
- 負のパラメータ値:開始ラインは赤のラインです。
カラーデュアルラインセンサー:
- 正のパラメータ値:開始ラインは青/赤のラインです。
- 負のパラメータ値:開始ラインは緑のラインです。
ラインスキャンモノクロカメラ#
次の図は、移動方向に応じたモノクロクアッドラインセンサー上の開始ラインを示しています。
モノクロクアッドラインセンサー:
- 正のパラメータ値:開始ラインはライン4です。
- 負のパラメータ値:開始ラインはライン1です。
モノクロデュアルラインセンサー:
- 正のパラメータ値:開始ラインはライン2です。
- 負のパラメータ値:開始ラインはライン1です。
Stride#
Spatial Correctionのストライドは、正しいラインデータを組み合わせて画像上の領域の完全なRGBまたは完全なHDRデータを取得するためにバッファリングする必要がある取り込みの数を決定します。
イメージ BslSpatialCorrectionStride パラメータは、カメラモデルに応じて-4から4の範囲で設定できます。ストライド値に0を指定すると、Spatial Correctionが実質的に無効になります。
次の表は、ストライド値と完全なRGB/HDR情報を取得するために必要な取り込み数の関係を示しています。
ラインスキャンカラーカメラ#
| カラーデュアルラインセンサー | |
|---|---|
| Stride = 1 | Full RGB = blue/red[n-1] + green[n] |
| Stride = -1 | Full RGB = blue/red[n] + green[n-1] |
| カラートリプルラインセンサー | |
|---|---|
| Stride = 1 | Full RGB = blue[n-2] + green[n-1] + red[n] |
| Stride = 2 | Full RGB = blue[n-4] + green[n-2] + red[n] |
| Stride = -1 | Full RGB = blue[n] + green[n-1] + red[n-2] |
| Stride = -2 | Full RGB = blue[n] + green[n-2] + red[n-4] |
ラインスキャンモノクロカメラ#
| Mono Dual Line Sensor | |
|---|---|
| Stride = 1 | Full HDR = line 2[n-1] + line 1[n] |
| Stride = 2 | Full HDR = line 2[n-2] + line 1[n] |
| Stride = -1 | Full HDR = line 2[n] + line 1[n-1] |
| Stride = -2 | Fuss HDR = line 2[n] + line 1[n-2] |
| Mono Quad Line Sensor | |
|---|---|
| Stride = 1 | Full HDR = line 4[n-3] + line 3[n-2] + line 2[n-1] + line 1[n] |
| Stride = 2 | Full HDR = line 4[n-6] + line 3[n-4] + line 2[n-2] + line 1[n] |
| Stride = 3 | Full HDR = line 4[n-9] + line 3[n-6] + line 2[n-3] + line 1[n] |
| Stride = 4 | Full HDR = line 4[n-12] + line 3[n-8] + line 2[n-4] + line 1[n] |
| Stride = -1 | Full HDR = line 4[n] + line 3[n-1] + line 2[n-2] + line 1[n-3] |
| Stride = -2 | Full HDR = line 4[n] + line 3[n-2] + line 2[n-4] + line 1[n-6] |
| Stride = -3 | Full HDR = line 4[n] + line 3[n-3] + line 2[n-6] + line 1[n-9] |
| Stride = -4 | Full HDR = line 4[n] + line 3[n-4] + line 2[n-8] + line 1[n-12] |
情報
ライン撮影は通常、インクリメンタルエンコーダーからの信号によってトリガーされます。ラインからラインへのオブジェクトの移動とトリガーされた撮影との関係は、ラインのピクセル幅に一致するように設定する必要があります。
ハロー効果の回避#
色情報の位置合わせが正しく行われている場合、取得される画像は下の画像の右側に示すようにシャープでクリアになります。異なるラインで画像が取得される際に位置にずれがある場合、下の画像の左側に示すように色の「ハロ」が発生します。
オブジェクト上の特定の領域を正しく撮影するには、その画像がセンサー上のカラーピクセルラインに正確に投影される必要があります。
情報
カラーハローを防ぐために、システムの設計要件が正しく満たされていることを確認してください。
Spatial Correction方向の反転#
アプリケーション環境によっては、オブジェクトがカメラを通過する方向が交互になる場合があります。または、カメラがオブジェクトの上を前後に移動することもあります。どちらの場合も、移動方向が変化します。移動方向の変化に関する情報は、適切な Spatial Correction を実現するために不可欠です。
この情報は I/O ラインを介して取得するか、カメラの Encoder Control によって出力される Encoder Reverse 1 信号を使用することができます。
イメージ BslSpatialCorrectionDirectionReversal パラメータを使用すると、Spatial Correction 方向の反転をトリガーするためにどの信号ソースを使用すべきかを決定できます。
利用可能な場合、 BslSpatialCorrectionDirectionReversal パラメーターを次のいずれかの値に設定します。
Off: 方向反転が無効になっています。Spatial Correction 方向は、設定された正または負の値によって決定されます。BslSpatialCorrectionStrideパラメータ。Line1,Line2,Line3: I/O ライン 1、2、または 3 の信号レベルが High の場合、Spatial Correction 方向が反転します。EncoderReverse1: Encoder Reverse 1 信号が High の場合、Spatial Correction 方向が反転します。
Spatial Correctionの設定#
Spatial Correction を設定するには:
- パラメーターを
BslSpatialCorrectionStrideパラメータ(例:2)を設定します。 - 必要に応じて、
BslSpatialCorrectionDirectionReversalパラメータを設定します(例:EncoderReverse1.
サンプルコード#
INodeMap& nodemap = camera.GetNodeMap();
// Set the stride for spatial correction to 2
CEnumParameter(nodemap, "BslSpatialCorrectionStride").SetValue("");
// Set the spatial correction direction reversal to Encoder Reverse 1
CEnumParameter(nodemap, "BslSpatialCorrectionDirectionReversal").SetValue("EncoderReverse1");
// Set the stride for spatial correction to 2
camera.Parameters[PLCamera.BslSpatialCorrectionStride].SetValue(PLCamera.BslSpatialCorrectionStride.);
// Set the spatial correction direction reversal to Encoder Reverse 1
camera.Parameters[PLCamera.BslSpatialCorrectionDirectionReversal].SetValue(PLCamera.BslSpatialCorrectionDirectionReversal.EncoderReverse1);
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* Set the stride for spatial correction to 2 */
errRes = PylonDeviceFeatureFromString(hdev, "BslSpatialCorrectionStride", "");
CHECK(errRes);
/* Set the spatial correction direction reversal to Encoder Reverse 1 */
errRes = PylonDeviceFeatureFromString(hdev, "BslSpatialCorrectionDirectionReversal", "EncoderReverse1");
CHECK(errRes);
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。