コンテンツにスキップ

LUT#

LUTカメラ機能を使用すると、画像のピクセル値をユーザーが定義した値に置き換えることができます。

これは、ユーザー定義のルックアップテーブル(LUT)を作成することによって実施されます。

機能を使用する#

仕組み#

LUTは、「ルックアップテーブル」の略であり、基本的には数字のインデックス付きリストです。Baslerカメラの場合は、ユーザー定義の「明るさルックアップテーブル」を作成して、画像内のピクセル値(明るさまたはグレー値)を置き換えることができます。

ルックアップテーブルでは、個々のピクセル値の置換値を定義できます。例えば、グレー値4095(= 12ビットピクセルフォーマットの最大グレー値)をグレー値0(= 最小グレー値)に置き換えることができます。これにより、画像内のすべての完全に白い画素が、完全に黒い画素に変わります。

ユーザー定義LUTの設定は、画像の明るさを最適化する場合などに便利です。交換値を事前に定義してカメラに保存することで、アプリケーションによる時間のかかる計算を回避できます。その代わりに、カメラはピクセルの初期値に基づいてLUT内の必要な新しい値を検索するだけです。

情報

ユーザーが定義したLUTの値の範囲(0~1 024または0~4 096)は、現在選択されているピクセル形式には依存しません。これは、カメラの最大ピクセルビット深度に依存します。

お使いのカメラが12ビットピクセルフォーマットをサポートしており、現在8ビットピクセルフォーマットを使用している場合でも、0~4096のピクセル値を入力できます。カメラはこれらの値を変換に使用します。次に、変換された値の最下位4ビットをドロップし、最上位8ビットを送信します。

Replacing Individual LUT Entries#

ルックアップテーブル内の個々のエントリを置き換えるには、次の手順に従います。

  1. LUTIndexパラメーターに、新しい値に置き換えるピクセル値を設定します。
  2. LUTValueパラメーターを新しいピクセル値に設定します。
  3. 置き換えるすべてのピクセル値について、手順1と2を繰り返します。
  4. LUTEnableパラメーターをtrueに設定します。

Baslerは、プログラミングループ(for-loopなど)を使用して値を反復処理することを推奨しています。以下のサンプルコードを参照してください。

Number of LUT Entries#

LUTで使用可能なエントリ数は、カメラモデルによって異なります。

LUTエントリの数によっては、可能なすべてのピクセル値の置換値を格納できるとは限りません。

512入力のLUT

ほとんどのBaslerカメラでは、ユーザー定義LUTに最大512個のエントリを格納できます。このサイズは、1024個または4096個の置換値を保存するのに十分ではありません。

したがって、次の制限が適用されます。

  • 最大画素ビット深度10ビットのカメラでは、LUTIndexパラメーターは2の倍数(0、2、4、6、…、1022)にのみ設定できます。つまり、0、2、4、6などのピクセル値のみを置き換えることができます。
  • 最大画素ビット深度が12ビットのカメラでは、LUTIndexパラメーターは8の倍数(0、8、16、24、…、4088)にのみ設定できます。つまり、0、8、16、24などのピクセル値のみを置き換えることができます。

残りのピクセル値を決定するために、カメラは直線補間を実行します。

例:カメラの最大画素ビット深度が12ビットであるとします。また、グレー値24をグレー値20に、グレー値32を値30に変換するLUTを作成したとします。この場合、カメラは次のように24~32のピクセル値を決定します。

元のピクセル値 LUTに格納された値 補間された値 新しいピクセル値(四捨五入)
24 20 20 20
25 - 21.25 21
26 - 22.5 22
27 - 23.75 23
28 - 25 25
29 - 26.25 26
30 - 27.5 27
31 - 28.75 28
32 30 30 30

情報

4088より大きいピクセル値は補間されません。代わりに、4088~4095のすべてのピクセル値は、LUTインデックス位置4088で入力されたピクセル値に置き換えられます。

1 024または4 096入力のLUT

一部のBaslerカメラでは、ユーザー定義LUTにすべての置換値のエントリを格納できます。カメラの最大画素ビット深度に応じて、1024または4096エントリを使用できます。

これは、上記のセクションで説明した制限が適用されないことを意味します。LUTIndexパラメーターは1単位で設定でき、補間は実行されません。

Replacing All LUT Entries#

ルックアップテーブル内のすべてのエントリを1つの操作で置き換えることができます。多くの場合、これはLUT内の個々のエントリを繰り返し変更するよりも高速です。

ルックアップテーブルのすべてのエントリを置き換えるには、次の手順に従います。

  1. LUTValueAllパラメーターを目的の値に設定します。
    4バイトワード(LUT値)の正しいエンディアンネスを適用するようにしてください。
  2. LUTEnableパラメーターをtrueに設定します。

情報

LUTValueAll パラメーターは、pylon API経由でのみ使用できます。pylon Viewerの機能ツリーからは使用できません。

パラメーターの構造は、カメラの最大画素ビット深度によって異なります。

12-bit Camera Models#

最大画素ビット深度が12ビットのカメラでは、LUTValueAllパラメーターは4096 x 4バイトで構成される配列です。4バイトの各ワードは、LUTValueパラメーター値を表します。

LUTValueパラメーター値は、LUTIndex番号で昇順(0~4095)にソートされます。

情報

  • 4バイトのワード(LUT値)のエンディアンネスは、カメラのモデルによって異なります。
  • LUTが512エントリに制限されている場合、カメラが実際に使用するのは8 番目ごとの4バイトワード(0、8、16、24、…、4088)のみです。他の4バイトワードは無視されます。例:

    LUTValueAll Parameter Structure (12-Bit Camera Models)

10-bit Camera Models#

最大画素ビット深度が10ビットのカメラでは、LUTValueAllパラメーターは1024 x 4バイトで構成される配列です。4バイトの各ワードは、LUTValueパラメーター値を表します。

LUTValueパラメーター値は、LUTIndex番号で昇順(0~1023)にソートされます。

情報

  • 4バイトのワード(LUT値)のエンディアンネスは、カメラのモデルによって異なります。
  • LUTが512エントリに制限されている場合、カメラが実際に使用するのは2番目ごとの4バイトワード(0、8、4、6、…、1022)のみです。他の4バイトワードは無視されます。例:

    LUTValueAll Parameter Structure (10-Bit Camera Models)

追加パラメーター#

LUTSelectorパラメーターを使用すると、ルックアップテーブルを選択できます。

Baslerカメラで使用できるユーザー定義のルックアップテーブルは1つしかないため、現在、このパラメーターは機能しません。

特性#

すべてのカメラモデルを表示します

カメラモデル Number of LUT Entries 4バイトワード(LUT値)のエンディアンネス
a2A1920-51gcBAS 4096 Big-endian
a2A1920-51gcPRO 4096 Big-endian
a2A1920-51gmBAS 4096 Big-endian
a2A1920-51gmPRO 4096 Big-endian
a2A1920-160ucBAS 4096 Little-endian
a2A1920-160ucPRO 4096 Little-endian
a2A1920-160umBAS 4096 Little-endian
a2A1920-160umPRO 4096 Little-endian
a2A2590-22gcBAS 4096 Big-endian
a2A2590-22gcPRO 4096 Big-endian
a2A2590-22gmBAS 4096 Big-endian
a2A2590-22gmPRO 4096 Big-endian
a2A2590-60ucBAS 4096 Little-endian
a2A2590-60ucPRO 4096 Little-endian
a2A2590-60umBAS 4096 Little-endian
a2A2590-60umPRO 4096 Little-endian
a2A3840-13gcBAS 4096 Big-endian
a2A3840-13gcPRO 4096 Big-endian
a2A3840-13gmBAS 4096 Big-endian
a2A3840-13gmPRO 4096 Big-endian
a2A3840-45ucBAS 4096 Little-endian
a2A3840-45ucPRO 4096 Little-endian
a2A3840-45umBAS 4096 Little-endian
a2A3840-45umPRO 4096 Little-endian
a2A4504-5gcBAS 4096 Big-endian
a2A4504-5gcPRO 4096 Big-endian
a2A4504-5gmBAS 4096 Big-endian
a2A4504-5gmPRO 4096 Big-endian
a2A4504-18ucBAS 4096 Little-endian
a2A4504-18ucPRO 4096 Little-endian
a2A4504-18umBAS 4096 Little-endian
a2A4504-18umPRO 4096 Little-endian
a2A5320-7gcBAS 4096 Big-endian
a2A5320-7gcPRO 4096 Big-endian
a2A5320-7gmBAS 4096 Big-endian
a2A5320-7gmPRO 4096 Big-endian
a2A5320-23ucBAS 4096 Little-endian
a2A5320-23ucPRO 4096 Little-endian
a2A5320-23umBAS 4096 Little-endian
a2A5320-23umPRO 4096 Little-endian
a2A5328-4gcBAS 4096 Big-endian
a2A5328-4gcPRO 4096 Big-endian
a2A5328-4gmBAS 4096 Big-endian
a2A5328-4gmPRO 4096 Big-endian
a2A5328-15ucBAS 4096 Little-endian
a2A5328-15ucPRO 4096 Little-endian
a2A5328-15umBAS 4096 Little-endian
a2A5328-15umPRO 4096 Little-endian
acA640-90gc 512 Big-endian
acA640-90gm 512 Big-endian
acA640-90uc 512 Little-endian
acA640-90um 512 Little-endian
acA640-120gc 512 Big-endian
acA640-120gm 512 Big-endian
acA640-120uc 512 Little-endian
acA640-120um 512 Little-endian
acA640-121gm 512 Big-endian
acA640-300gc 512 Big-endian
acA640-300gm 512 Big-endian
acA640-750uc 512 Little-endian
acA640-750um 512 Little-endian
acA720-290gc 512 Big-endian
acA720-290gm 512 Big-endian
acA720-520uc 512 Little-endian
acA720-520um 512 Little-endian
acA780-75gc 512 Big-endian
acA780-75gm 512 Big-endian
acA800-200gc 512 Big-endian
acA800-200gm 512 Big-endian
acA800-510uc 512 Little-endian
acA800-510um 512 Little-endian
acA1280-60gc 512 Big-endian
acA1280-60gm 512 Big-endian
acA1300-22gc 512 Big-endian
acA1300-22gm 512 Big-endian
acA1300-30gc 512 Big-endian
acA1300-30gm 512 Big-endian
acA1300-30uc 512 Little-endian
acA1300-30um 512 Little-endian
acA1300-60gc 512 Big-endian
acA1300-60gm 512 Big-endian
acA1300-60gmNIR 512 Big-endian
acA1300-75gc 512 Big-endian
acA1300-75gm 512 Big-endian
acA1300-200uc 512 Little-endian
acA1300-200um 512 Little-endian
acA1440-73gc 512 Big-endian
acA1440-73gm 512 Big-endian
acA1440-220uc 512 Little-endian
acA1440-220um 512 Little-endian
acA1600-20gc 512 Big-endian
acA1600-20gm 512 Big-endian
acA1600-20uc 512 Little-endian
acA1600-20um 512 Little-endian
acA1600-60gc 512 Big-endian
acA1600-60gm 512 Big-endian
acA1920-25gc 512 Big-endian
acA1920-25gm 512 Big-endian
acA1920-25uc 512 Little-endian
acA1920-25um 512 Little-endian
acA1920-40gc 512 Big-endian
acA1920-40gm 512 Big-endian
acA1920-40uc 512 Little-endian
acA1920-40ucMED 4096 Little-endian
acA1920-40um 512 Little-endian
acA1920-40umMED 4096 Little-endian
acA1920-48gc 512 Big-endian
acA1920-48gm 512 Big-endian
acA1920-50gc 512 Big-endian
acA1920-50gm 512 Big-endian
acA1920-150uc 512 Little-endian
acA1920-150um 512 Little-endian
acA1920-155uc 512 Little-endian
acA1920-155ucMED 4096 Little-endian
acA1920-155um 512 Little-endian
acA1920-155umMED 4096 Little-endian
acA2000-50gc 512 Big-endian
acA2000-50gm 512 Big-endian
acA2000-50gmNIR 512 Big-endian
acA2000-165uc 512 Little-endian
acA2000-165um 512 Little-endian
acA2000-165umNIR 512 Little-endian
acA2040-25gc 512 Big-endian
acA2040-25gm 512 Big-endian
acA2040-25gmNIR 512 Big-endian
acA2040-35gc 512 Big-endian
acA2040-35gm 512 Big-endian
acA2040-55uc 512 Little-endian
acA2040-55um 512 Little-endian
acA2040-90uc 512 Little-endian
acA2040-90um 512 Little-endian
acA2040-90umNIR 512 Little-endian
acA2040-120uc 512 Little-endian
acA2040-120um 512 Little-endian
acA2440-20gc 512 Big-endian
acA2440-20gm 512 Big-endian
acA2440-35uc 512 Little-endian
acA2440-35ucMED 4096 Little-endian
acA2440-35um 512 Little-endian
acA2440-35umMED 4096 Little-endian
acA2440-75uc 512 Little-endian
acA2440-75ucMED 4096 Little-endian
acA2440-75um 512 Little-endian
acA2440-75umMED 4096 Little-endian
acA2500-14gc 512 Big-endian
acA2500-14gm 512 Big-endian
acA2500-14uc 512 Little-endian
acA2500-14um 512 Little-endian
acA2500-20gc 512 Big-endian
acA2500-20gcMED 512 Big-endian
acA2500-20gm 512 Big-endian
acA2500-20gmMED 512 Big-endian
acA2500-60uc 512 Little-endian
acA2500-60um 512 Little-endian
acA3088-16gc 512 Big-endian
acA3088-16gm 512 Big-endian
acA3088-57uc 512 Little-endian
acA3088-57ucMED 4096 Little-endian
acA3088-57um 512 Little-endian
acA3088-57umMED 4096 Little-endian
acA3800-10gc 512 Big-endian
acA3800-10gm 512 Big-endian
acA3800-14uc 512 Little-endian
acA3800-14um 512 Little-endian
acA4024-8gc 512 Big-endian
acA4024-8gm 512 Big-endian
acA4024-29uc 512 Little-endian
acA4024-29um 512 Little-endian
acA4096-11gc 512 Big-endian
acA4096-11gm 512 Big-endian
acA4096-30uc 512 Little-endian
acA4096-30ucMED 4096 Little-endian
acA4096-30um 512 Little-endian
acA4096-30umMED 4096 Little-endian
acA4096-40uc 512 Little-endian
acA4096-40ucMED 4096 Little-endian
acA4096-40um 512 Little-endian
acA4096-40umMED 4096 Little-endian
acA4112-8gc 512 Big-endian
acA4112-8gm 512 Big-endian
acA4112-20uc 512 Little-endian
acA4112-20ucMED 4096 Little-endian
acA4112-20um 512 Little-endian
acA4112-20umMED 4096 Little-endian
acA4112-30uc 512 Little-endian
acA4112-30ucMED 4096 Little-endian
acA4112-30um 512 Little-endian
acA4112-30umMED 4096 Little-endian
acA4600-7gc 512 Big-endian
acA4600-10uc 512 Little-endian
acA5472-5gc 512 Big-endian
acA5472-5gm 512 Big-endian
acA5472-17uc 512 Little-endian
acA5472-17ucMED 4096 Little-endian
acA5472-17um 512 Little-endian
acA5472-17umMED 4096 Little-endian
boA4096-93cc 4096 Little-endian
boA4096-93cm 4096 Little-endian
boA4112-68cc 4096 Little-endian
boA4112-68cm 4096 Little-endian
boA6500-36cm 4096 Little-endian
boA8100-16cm 4096 Little-endian
daA1280-54lc LUT機能はサポートされていません LUT機能はサポートされていません
daA1280-54lm LUT機能はサポートされていません LUT機能はサポートされていません
daA1280-54uc LUT機能はサポートされていません LUT機能はサポートされていません
daA1280-54um LUT機能はサポートされていません LUT機能はサポートされていません
daA1600-60lc LUT機能はサポートされていません LUT機能はサポートされていません
daA1600-60lm LUT機能はサポートされていません LUT機能はサポートされていません
daA1600-60uc LUT機能はサポートされていません LUT機能はサポートされていません
daA1600-60um LUT機能はサポートされていません LUT機能はサポートされていません
daA1920-15um LUT機能はサポートされていません LUT機能はサポートされていません
daA1920-30uc LUT機能はサポートされていません LUT機能はサポートされていません
daA1920-30um LUT機能はサポートされていません LUT機能はサポートされていません
daA1920-160uc LUT機能はサポートされていません LUT機能はサポートされていません
daA1920-160um LUT機能はサポートされていません LUT機能はサポートされていません
daA2500-14lc LUT機能はサポートされていません LUT機能はサポートされていません
daA2500-14lm LUT機能はサポートされていません LUT機能はサポートされていません
daA2500-14uc LUT機能はサポートされていません LUT機能はサポートされていません
daA2500-14um LUT機能はサポートされていません LUT機能はサポートされていません
puA1280-54uc LUT機能はサポートされていません LUT機能はサポートされていません
puA1280-54um LUT機能はサポートされていません LUT機能はサポートされていません
puA1600-60uc LUT機能はサポートされていません LUT機能はサポートされていません
puA1600-60um LUT機能はサポートされていません LUT機能はサポートされていません
puA1920-30uc LUT機能はサポートされていません LUT機能はサポートされていません
puA1920-30um LUT機能はサポートされていません LUT機能はサポートされていません
puA2500-14uc LUT機能はサポートされていません LUT機能はサポートされていません
puA2500-14um LUT機能はサポートされていません LUT機能はサポートされていません

サンプルコード#

// ** Replacing individual LUT entries **
// The following lookup table causes an inversion of the pixel values
// (bright -> dark, dark -> bright)
// Only applies to cameras with a maximum pixel bit depth of 12 bit
for (int i=0; i<4096; i+=8)
{
    camera.LUTIndex.SetValue(i);
    camera.LUTValue.SetValue(4095-i);
}
// Enable the LUT
camera.LUTEnable.SetValue(true);

// ** Replacing all LUT entries in a single operation **
// The following lookup table inverts the pixel values
// (bright -> dark, dark -> bright)
// Only applies to cameras with a maximum pixel bit depth of 12 bit
// Note: This is a simplified code sample.
// You should always check the camera interface and
// the endianness of your system before using LUTValueAll.
// For more information, see the 'LUTValueAll' code sample
// in the C++ Programmer's Guide and Reference Documentation
// delivered with the Basler pylon Camera Software Suite.
uint32_t lutValues[4096];
for (int i=0; i<4096; i+=8)
{
   lutValues[i] = 4095-i;
}
camera.LUTValueAll.SetValue(lutValues);
// Enable the LUT
camera.LUTEnable.SetValue(true);

このサンプルコードは、C++言語でのみ使用できます。

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