コンテンツにスキップ

Defect Pixel Correction#

Defect Pixel Correctionカメラ機能を使用すると、センサーの個々の画素の感度差の影響を最小限に抑えることができます。

取得した画像では、均一な光が使用されていても、一部の画素が他の画素よりも大幅に明るくまたは暗く見える場合があります。この問題は、個々の画素の感度の違いが原因で発生します。これは、製造上の許容誤差が原因です。

機能を使用する#

ace 2およびboostカメラ#

Basler ace 2 and boost cameras support static defect pixel correction. This correction is based on files that are stored on the camera and contain a list of defect pixel coordinates.

「静的」とは、常に同じ指定画素欠陥座標が補正プロセスに使用されることを意味します。画像取得中、これらの画素の輝度値は、隣接する画素の輝度値に基づいて置き換えられます。

次の画素欠陥補正ファイルをカメラに保存できます。

  • 工場ファイル:カメラの製造時に検出された画素欠陥の座標が含まれます。このファイルを使用すると、カメラは隣接する画素よりも輝度値が著しく低い画素(完全に黒の画素を含む)を補正します。
  • ユーザーファイル:ユーザー定義の座標が含まれます。このファイルはカメラにアップロードできます。これにより、これらの画素が暗すぎるか明るすぎるかに関係なく、時間の経過とともに発生した可能性のある新しい画素欠陥を定義できます。

pylon Viewerを使用した画素欠陥補正#

Static Defect Pixel Correction(pylon Viewer)を参照してください。

pylon APIを使用した画素欠陥補正#

情報

Baslerは、pylon Viewerを使用して画素欠陥補正を実行することを推奨します。

pylon APIは、独自のアプリケーションで画素欠陥補正を実装する場合にのみ使用してください。

Static Defect Pixel Correction Modeの設定#

静的画素欠陥補正モードを設定するには、BslStaticDefectPixelCorrectionModeパラメーターを次のいずれかの値に設定します。

  • Factory(デフォルト):静的画素欠陥補正は、工場補正ファイルに保存されている画素欠陥に基づいて行われます。
  • User:静的画素欠陥補正は、ユーザー補正ファイルに保存されている画素欠陥に基づいて行われます。
  • Off:カメラは静的画素欠陥補正を実行しません
ユーザーDefect Pixel Correctionファイルのアップロード#

ユーザー画素欠陥補正ファイルをアップロードする前に、ファイルが次のファイル形式に準拠していることを確認してください。

ファイルは、値が0の4バイトを含む4バイトのヘッダーで始まる必要があります。ヘッダーに続いて、ファイルには画素欠陥エントリーが含まれている必要があります(最大4096の画素欠陥を指定できます)。各エントリーは、14ビットのy座標、14ビットのx座標、4ビットのタイプの順に、32ビットで構成されています。

例:座標x = 1およびy = 2の画素欠陥エントリー

Bit   |31          18| |17           4| |3  0|
Value |00000000000010| |00000000000001| |0000|
      | y = 2        | | X = 1        | |type|

pylon Viewerを使用してユーザー画素欠陥補正ファイルをアップロードするには、次の手順を実行します。

  1. pylon Viewerの[カメラ]メニューで、[ファイルアクセス]をクリックします。
  2. [Camera File]ドロップダウンボックスで、[User Defect Pixel Correction]を選択します。
    User Defect Pixel Correctionエントリーがない場合、カメラは補正ファイルのアップロードをサポートしていません。
  3. [Upload]をクリックして、アップロードするファイルに移動します。
  4. [開く]をクリックします。

アップロード後にユーザー画素欠陥補正ファイルを適用するには、BslStaticDefectPixelCorrectionModeパラメーターがUserに設定されていることを確認し、BslStaticDefectPixelCorrectionReloadコマンドを実行します。

Defect Pixel Correctionファイルのダウンロード#

画素欠陥補正ファイル(工場補正ファイルなど)をダウンロードすると、ダウンロードしたファイルに独自の測定済み画素欠陥を追加する場合に便利です。画素欠陥エントリーの完全なリストを新しいユーザー補正ファイルに保存できます。

pylon Viewerを使用して画素欠陥補正ファイルをダウンロードするには、次の手順を実行します。

  1. pylon Viewerの[カメラ]メニューで、[ファイルアクセス]をクリックします。
  2. [Camera File]ドロップダウンボックスで、ダウンロードするファイルに応じて、[Static Factory Defect Pixel Correction]または[Static User Defect Pixel Correction]を選択します。
    適切なエントリーがない場合、カメラはファイルのダウンロードをサポートしていません。
  3. [ダウンロード]をクリックし、ファイルを保存するディレクトリーに移動して、任意のファイル名を入力します。
  4. [開く]をクリックします。
Static Defect Pixel Correctionファイルステータス#

StaticDefectPixelCorrectionFileStatusパラメーターには、次の値があります。

  • FileStatusUnknown:画素欠陥補正ファイルのステータスが不明です。画像を取得して、ファイルステータスを変更します。
  • FileOk:画素欠陥補正ファイルが有効です。
  • FileNotFound:画素欠陥補正ファイルが見つかりません。アップロードされたことも削除されたこともありません。
  • FileEmpty:画素欠陥補正ファイルにエントリーがありません。ファイルヘッダーは有効ですが、ファイルに画素欠陥が含まれていません。画素欠陥補正プロセスが中止されています。
  • InvalidHeader:画素欠陥補正ファイルヘッダーが無効です。ファイルには4バイトのファイルヘッダーが必要です。
  • InvalidSize:画素欠陥補正ファイルサイズが無効です。画素欠陥の最大数は4096を超えないようにしてください。
  • InvalidSorting:画素欠陥補正ファイルのエントリーのソートが無効です。画素欠陥補正プロセスが中止されています。
  • InvalidFileEntry:画素欠陥補正ファイルの1つ以上のエントリーが無効なサイズです。画素欠陥補正プロセスが中止されています。
  • InvalidClustering:無効なクラスターが見つかりました。1行で3つ以上の隣接する画素は、無効なクラスターと見なされます。他の画素欠陥間の画素欠陥は補正できません。

画素欠陥補正ファイルには、画素欠陥の最大数を含めることができます。この数を取得するには、BslStaticDefectPixelCorrectionMaxDefectsパラメーターの値を取得します。

dartおよびpulseカメラ#

Basler dartとpulseカメラでは、次の2種類の画素補正を実行できます。

  • 静的画素補正では、隣接する画素よりも輝度値が著しく低い画素(完全に黒い画素を含む)を補正します。
  • 動的画素補正では、隣接する画素よりも輝度値が著しく高い画素(完全に白い画素を含む)が補正されます。内部しきい値は、画素が「ホット画素」として検出されるタイミングを定義します。「動的」とは、画素欠陥補正が取得した画像ごとに個別に計算されることを意味します。

Defect Pixel Correction Modeの設定#

画素欠陥補正モードを設定するには、BslDefectPixelCorrectionModeパラメーターを次のいずれかの値に設定します。

  • On(デフォルト):カメラは静的および動的画素補正を実行します。
  • StaticOnly:カメラは静的画素補正のみを実行します。
  • Off:カメラは画素補正を実行しません

サンプルコード#

ace 2およびboostカメラ#
// Set static user defect pixel correction
camera.BslStaticDefectPixelCorrectionMode.SetValue(BslStaticDefectPixelCorrectionMode_User);
// Reload static defect pixel correction file
camera.BslStaticDefectPixelCorrectionReload.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Set static user defect pixel correction
CEnumParameter(nodemap, "BslStaticDefectPixelCorrectionMode").SetValue("User");
// Reload static defect pixel correction file
CCommandParameter(nodemap, "BslStaticDefectPixelCorrectionReload").Execute();
// Set static user defect pixel correction
camera.Parameters[PLCamera.BslStaticDefectPixelCorrectionMode].SetValue(PLCamera.BslStaticDefectPixelCorrectionMode.User);
// Reload static defect pixel correction file
camera.Parameters[PLCamera.BslStaticDefectPixelCorrectionReload].Execute();
/* 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 static user defect pixel correction */
errRes = PylonDeviceFeatureFromString(hdev, "BslStaticDefectPixelCorrectionMode", "User");
CHECK(errRes);
/* Reload static defect pixel correction file */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslStaticDefectPixelCorrectionReload");
CHECK(errRes);
dartおよびpulseカメラ#
// Disable defect pixel correction
camera.BslDefectPixelCorrectionMode.SetValue(BslDefectPixelCorrectionMode_Off);
INodeMap& nodemap = camera.GetNodeMap();
// Disable defect pixel correction
CEnumParameter(nodemap, "BslDefectPixelCorrectionMode").SetValue("Off");
// Disable defect pixel correction
camera.Parameters[PLCamera.BslDefectPixelCorrectionMode].SetValue(PLCamera.BslDefectPixelCorrectionMode.Off);
/* 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 */
/* Disable defect pixel correction */
errRes = PylonDeviceFeatureFromString(hdev, "BslDefectPixelCorrectionMode", "Off");
CHECK(errRes);

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