コンテンツにスキップ
ステージングサーバー
開発サーバー

Spatial Correction#

Spatial Correction カメラ機能を使用すると、複数のピクセルラインが同時に露光されるラインスキャンセンサーの色情報を組み合わせることができます。

情報

機能を使用する#

仕組み#

Basler racer 2 カラーカメラには、カラーデュアルラインまたはカラートリプルラインの2種類のセンサーが搭載されています。

情報

ご使用のカメラモデルのセンサータイプを確認するには、各カメラモデルのトピックをご確認ください。カメラトピックは、エリア・ラインスキャンカメラセクションにあります。

カラーデュアルラインセンサーには2つのピクセルラインがあり、カラートリプルラインセンサーには3つのピクセルラインが並んで配置されています。デュアルラインセンサーのラインは互いに隣接していますが、トリプルラインセンサーのラインは隙間を挟んで離れています。

カラーカメラセンサーの面

各ラインは、カメラを通過するオブジェクトに対して異なる視野を持っています。トリガーがかけられると、センサーのすべてのラインが同時に露光されます。つまり、1回の露光につき、センサー内の各ラインがオブジェクト上の異なる領域を取り込みます。

次の図は、カラートリプルラインセンサーの視野を示しています。

トリプルラインセンサーの視野

次の例では、オブジェクト上の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です。
  • 負のパラメーター値:Start line is line 1.

モノクロデュアルラインセンサー:

  • 正のパラメーター値:開始ラインはライン2です。
  • 負のパラメーター値:Start line is line 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]
ラインスキャンモノクロカメラ#
モノクロデュアルリンセンサ
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 Full HDR = line 2[n] + line 1[n-2]
モノクロクアッドラインセンサ
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 を設定するには:

  1. パラメーターを BslSpatialCorrectionStride parameter(例:2)。
  2. 必要に応じて、を設定します。 BslSpatialCorrectionDirectionReversal parameter(例: EncoderReverse1.

サンプルコード#

// Set the stride for spatial correction to 2
camera.BslSpatialCorrectionStride.SetValue(BslSpatialCorrectionStride_2);
// Set the spatial correction direction reversal to Encoder Reverse 1
camera.BslSpatialCorrectionDirectionReversal.SetValue(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);
# Set the stride for spatial correction to 2
camera.BslSpatialCorrectionStride.Value = ""
# Set the spatial correction direction reversal to Encoder Reverse 1
camera.BslSpatialCorrectionDirectionReversal.Value = "EncoderReverse1"

pylon Viewerを使用して、パラメーターを簡単に設定することもできます。