コンテンツにスキップ

Pixel Beyond#

Pixel Beyondカメラ機能を使用すると、カメラから出力される画像の解像度を下げることができます。

この機能はBinning機能に似ていますが、解像度をより細かく調整できます。

詳細については、Basler Webサイトの機能の説明を参照してください。

機能を使用する#

Pixel Beyondを使用する理由#

Pixel Beyond機能はBinning機能に似ています。カメラは、隣接する画素のピクセル値を組み合わせます。これにより、視野を変更することなく、解像度を効果的に下げることができます。

アプリケーションや画像センサーの特性によっては、次のような利点があります。

  • 光に対する反応が向上
  • データ量の削減
  • フレームレートの向上
  • SN比(SNR)の向上
  • 異なるセンサーの解像度をシミュレートする機能。これにより、例えば、ビジョンシステムを再設計せずに、製造中止になったセンサーを交換できます。

Binning機能では、(2x2または3x3のビニングなどを使用して)整数ステップで解像度を下げることしかできませんが、Pixel Beyond機能により、フロートスケーリング値を使用して解像度を調整できます。これにより、柔軟性が向上します。

また、他のスケーリングアルゴリズムとは異なり、 EMVA data 生成された画像については補間の影響を受けません。

Pixel Beyondの設定#

Pixel Beyondを設定するには:

  1. カメラがアイドル状態であること、つまり画像をキャプチャしていないことを確認します。
  2. カメラがカラーカメラの場合、ピクセルフォーマット非Bayerカラーのピクセルフォーマット(RGB、BGR、またはYUVのいずれかのピクセルフォーマット)に設定します。
  3. BslScalingFactorパラメーターを1.0~2.8の値に設定します。

係数1.0では、画像の解像度は同じままです。1.0を超える係数を指定すると、画像の幅と高さが比例して減少します。

  • Width * (1 / BslScalingFactor) = Scaled Width
  • Height * (1 / BslScalingFactor) = Scaled Height

例:画像ROIの幅が1936に設定され、スケーリング係数が1.75に設定されているとします。カメラから出力される画像の幅は1936*(1/1.75) = 1106になります。

情報

カメラのモデルによって、値の丸め方が異なります。したがって、有効な画像サイズは、計算された画像サイズと異なる場合があります。

Scaling係数の計算#

画像サイズ

画像を特定のサイズに拡大/縮小する場合に、スケーリング係数を把握しておく必要がある場合は、次の式を使用します。

Width / 目的のWidth = BslScalingFactor

スケーリングは常に比例的に実行されるため、幅を指定するだけで済みます。

例:画像ROIが1936 x 1216で、画像を800 x 600に拡大/縮小するとします。適切なスケーリング係数は1936/800=2.42です。

ピクセルサイズ

廃止されるセンサーを特定の画素サイズに置き換え、スケーリング係数を知る必要がある場合は、次の式を使用します。

旧センサーのピクセルサイズ / 現在のセンサーのピクセルサイズ = BslScalingFactor

例:7.4µmのピクセルサイズのICX424センサーを、a2A1920-51gcPRO(3.45µmピクセルサイズ)のIMX392センサーに置き換えるとします。適切なスケーリング係数は7.4/3.45= 2.14です。

サンプルコード#

// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
camera.BslScalingFactor.SetValue(1.5);
// Disable scaling
camera.BslScalingFactor.SetValue(1);
INodeMap& nodemap = camera.GetNodeMap();
// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
CFloatParameter(nodemap, "BslScalingFactor").SetValue(1.5);
// Disable scaling
CIntegerParameter(nodemap, "BslScalingFactor").SetValue(1);
// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
camera.Parameters[PLCamera.BslScalingFactor].SetValue(1.5);
// Disable scaling
camera.Parameters[PLCamera.BslScalingFactor].SetValue(1);
/* 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 scaling to 1.5, i.e., set the resolution */
/* to (1 / 1.5) = 66 % of the original resolution */
errRes = PylonDeviceSetFloatFeature(hdev, "BslScalingFactor", 1.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetIntegerFeature(hdev, "BslScalingFactor", 1);
CHECK(errRes);

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