Tonal Range Auto#
この機能は、カメラを光学顕微鏡で使用する場合に特に便利です。
コントラストまたはカラーシフトを手動で調整する場合は、Tonal Range機能を使用します。
リニアまたはSカーブ関数を使用してコントラストを調整する場合は、Brightness and Contrast機能を使用します(使用可能な場合)。
画像のさまざまな部分の画素データを使用できる、複数のAuto Function ROIを定義できます。
機能を使用する#
Using Tonal Range Auto#
Using Tonal Range Auto with Default Settings#
オートファンクションのパラメーターは、ほとんどのシナリオで良好な結果をもたらす値にプリセットされています。
デフォルト設定を使用してコントラストまたはカラー、またはその両方を調整するには、次の手順に従います。
- カメラがすでに良好な画像を生成しており、低コントラストやシフトカラーの問題だけが残っていることを確認します。色調範囲の操作は、既に良好な画質を持つ画像に対してのみ実行してください。
画質を最適化する場合は、以下の手順に従います。 - Tonal Range Autoオートファンクションに少なくとも1つのオートファンクションROIを割り当てます。
オートファンクションROIが画像ROIと部分的または完全にオーバーラップするようにしてください。 - カラーカメラを使用している場合:
- コントラストとカラーを1ステップで調整する場合、
AutoTonalRangeModeSelector
パラメーターをColorAndContrast
に設定します。 - コントラストのみを調整する場合は、
AutoTonalRangeModeSelector
パラメーターをContrast
に設定します。 - カラーシフトのみを修正する場合は、
AutoTonalRangeModeSelector
パラメーターをColor
に設定します。
(モノラルカメラを使用している場合は、コントラスト調整のみ使用できます。AutoTonalRangeModeSelector
パラメーターはContrast
にプリセットされており、変更できません。)
- コントラストとカラーを1ステップで調整する場合、
TonalRangeAuto
パラメーターをOnce
に設定します。
次の画像取得では、カメラはデフォルト設定を使用してコントラストまたはカラー、あるいはその両方を調整します。調整が完了すると、カメラはオートファンクションをOff
に設定し、その後のすべての画像にこの調整を適用します。- 調整を微調整する場合は、Tonal Range機能を使用します。
Using Tonal Range Auto with Custom Settings#
カスタム設定を使用してコントラストまたはカラー、またはその両方を調整するには、次の手順に従います。
- カラーカメラを使用している場合:
- コントラストとカラーを1ステップで調整する場合、
AutoTonalRangeModeSelector
パラメーターをColorAndContrast
に設定します。 - コントラストのみを調整する場合は、
AutoTonalRangeModeSelector
パラメーターをContrast
に設定します。 - カラーシフトのみを修正する場合は、
AutoTonalRangeModeSelector
パラメーターをColor
に設定します。
(モノラルカメラを使用している場合は、コントラスト調整のみ使用できます。AutoTonalRangeModeSelector
パラメーターはContrast
にプリセットされており、変更できません。)
- コントラストとカラーを1ステップで調整する場合、
- パラメーターを
AutoTonalRangeAdjustmentSelector
パラメーターを次のいずれかの値に設定します。BrightAndDark
(デフォルト ):画像の暗い部分と明るい部分に自動調整が適用されます。Dark
:自動調整は、画像の暗い部分にのみ適用されます。Bright
:自動調整は、画像の明るい部分にのみ適用されます。
AutoTonalRangeThresholdDark
パラメーターを使用して、暗さのしきい値を指定します。AutoTonalRangeThresholddBright
パラメーターを使用して、明るさのしきい値を指定します。-
AutoTonalRangeModeSelector
パラメーターがColorAndContrast
またはContrast
に設定されている場合:AutoTonalRangeTargetDark
パラメーターを暗さのターゲット値に設定します。AutoTonalRangeTargetBright
パラメーターを明るさのターゲット値に設定します。TonalRangeAuto
パラメーターをOnce
に設定します。
次の画像取得では、カメラはデフォルト設定を使用してコントラストまたはカラー、あるいはその両方を調整します。調整が完了すると、カメラはオートファンクションをOff
に設定し、その後のすべての画像にこの調整を適用します。- 調整を微調整する場合は、Tonal Range機能を使用します。
Image Optimization Sequence#
画質を最適化する場合は、次の手順に従って副作用を回避します。
- 基本的な画像最適化には、Exposure Time、Black LevelおよびGainの機能を使用します。画像が色飽和しないようにしてください。
- カラーカメラを使用している場合は、Light Source Preset、Balance White Auto、またはBalance White機能を使用してホワイトバランスを調整します。
- Tonal Range AutoおよびTonal Range機能を使用して、コントラスト、カラー、またはその両方を最適化します。
仕組み#
色調範囲の操作は、画像内の色調分布のグラフィック表現(画像ヒストグラム)を見ることで最もよく理解できます。
Basler pylon ViewerにはHistogramペインがあり、色調範囲の操作を実行するときに非常に便利です。
情報
カメラで有効になっている他の機能によっては、pylon ViewerのHistogramペインでは、オートファンクションが実際に使用するデータが表示されない場合があります。
例えば、Gamma機能は、色調範囲の操作後に処理されます。その結果、ガンマ補正は、pylon Viewerに表示されるヒストグラムに含まれますが、オートファンクションで使用するデータには含まれません。
Source and Target Values#
Tonal Range Auto機能は、Tonal Range機能と同じ概念(ソース値とターゲット値のマッピング)に基づいています。
異なる点は、カメラがソースとターゲットの値を決定する方法です。
- カメラは、しきい値を計算して、暗さと明るさのソース値を決定します。
-
カメラは、次のように暗さと明るさのターゲット値を決定します。
- コントラスト調整の場合、カメラは
AutoTonalRangeTargetDark
およびAutoTonalRangeTargetBright
のパラメーター値を読み取ります。 - カラー調整では、適切にRGBヒストグラムを調整するターゲット値がカメラによって自動的に決定されます。
- コントラスト調整の場合、カメラは
カメラがソース値とターゲット値を決定すると、カメラは、Tonal Rangeトピックで説明されているとおりにコントラストとカラーの調整を行います。
Threshold Values#
階調範囲の自動調整中、ソース値はしきい値に基づいて自動的に計算されます。
しきい値は、AutoTonalRangeThresholdDark
およびAutoTonalRangeThresholddBright
のパラメーターを使用して指定する必要があります。パラメーターは、画像内のすべての画素のパーセンテージで表されます。
情報
このセクションでは、割り当てられたオートファンクションROIと画像ROIが同一であることを前提としています。これがデフォルト設定です。オートファンクションROI設定を変更した場合、パーセンテージは、割り当てられたオートファンクションROIと画像ROIのオーバーラップ領域の画素を参照します。
このパーセンテージから、カメラは次の値を計算します。
- 暗さのしきい値は、指定した画素量がしきい値以下のピクセル値を持つヒストグラム内の値です。
- 明るさのしきい値は、指定した画素量がしきい値以上のピクセル値を持つヒストグラム内の値です。
両しきい値の間の領域は、中間調(画像に不可欠と考えられるピクセル値)を定義します。
例:AutoTonalRangeThresholdDark
パラメーターを0.3に、AutoTonalRangeThresholdBright
パラメーターを0.4に設定したとします。カメラは、画像内の画素の0.3%が52以下のピクセル値を持ち、画像内の画素の0.4%が204以上のピクセル値を持つことを検出します。したがって、暗さのしきい値は52で、明るさのしきい値は204です。
サンプルコード#
// Enable contrast adjustments only
camera.AutoTonalRangeModeSelector.SetValue(AutoTonalRangeModeSelector_Contrast);
// Specify that both ends of the tonal range are to be adjusted automatically
camera.AutoTonalRangeAdjustmentSelector.SetValue(AutoTonalRangeAdjustmentSelector_BrightAndDark);
// Set the percentage of pixels that is used to calculate the dark threshold
camera.AutoTonalRangeThresholdDark.SetValue(0.3);
// Set the percentage of pixels that is used to calculate the bright threshold
camera.AutoTonalRangeThresholdBright.SetValue(0.4);
// Set the dark target value
camera.AutoTonalRangeTargetDark.SetValue(0);
// Set the bright target value
camera.AutoTonalRangeTargetBright.SetValue(255);
// Enable the Tonal Range Auto auto function
camera.TonalRangeAuto.SetValue(TonalRangeAuto_Once);
INodeMap& nodemap = camera.GetNodeMap();
// Enable contrast adjustments only
CEnumParameter(nodemap, "AutoTonalRangeModeSelector").SetValue("Contrast");
// Specify that both ends of the tonal range are to be adjusted automatically
CEnumParameter(nodemap, "AutoTonalRangeAdjustmentSelector").SetValue("BrightAndDark");
// Set the percentage of pixels that is used to calculate the dark threshold
CFloatParameter(nodemap, "AutoTonalRangeThresholdDark").SetValue(0.3);
// Set the percentage of pixels that is used to calculate the bright threshold
CFloatParameter(nodemap, "AutoTonalRangeThresholdBright").SetValue(0.4);
// Set the dark target value
CIntegerParameter(nodemap, "AutoTonalRangeTargetDark").SetValue(0);
// Set the bright target value
CIntegerParameter(nodemap, "AutoTonalRangeTargetBright").SetValue(255);
// Enable the Tonal Range Auto auto function
CEnumParameter(nodemap, "TonalRangeAuto").SetValue("Once");
// Enable contrast adjustments only
camera.Parameters[PLCamera.AutoTonalRangeModeSelector].SetValue(PLCamera.AutoTonalRangeModeSelector.Contrast);
// Specify that both ends of the tonal range are to be adjusted automatically
camera.Parameters[PLCamera.AutoTonalRangeAdjustmentSelector].SetValue(PLCamera.AutoTonalRangeAdjustmentSelector.BrightAndDark);
// Set the percentage of pixels that is used to calculate the dark threshold
camera.Parameters[PLCamera.AutoTonalRangeThresholdDark].SetValue(0.3);
// Set the percentage of pixels that is used to calculate the bright threshold
camera.Parameters[PLCamera.AutoTonalRangeThresholdBright].SetValue(0.4);
// Set the dark target value
camera.Parameters[PLCamera.AutoTonalRangeTargetDark].SetValue(0);
// Set the bright target value
camera.Parameters[PLCamera.AutoTonalRangeTargetBright].SetValue(255);
// Enable the Tonal Range Auto auto function
camera.Parameters[PLCamera.TonalRangeAuto].SetValue(PLCamera.TonalRangeAuto.Once);
/* 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 */
/* Enable contrast adjustments only */
errRes = PylonDeviceFeatureFromString(hdev, "AutoTonalRangeModeSelector", "Contrast");
CHECK(errRes);
/* Specify that both ends of the tonal range are to be adjusted automatically */
errRes = PylonDeviceFeatureFromString(hdev, "AutoTonalRangeAdjustmentSelector", "BrightAndDark");
CHECK(errRes);
/* Set the percentage of pixels that is used to calculate the dark threshold */
errRes = PylonDeviceSetFloatFeature(hdev, "AutoTonalRangeThresholdDark", 0.3);
CHECK(errRes);
/* Set the percentage of pixels that is used to calculate the bright threshold */
errRes = PylonDeviceSetFloatFeature(hdev, "AutoTonalRangeThresholdBright", 0.4);
CHECK(errRes);
/* Set the dark target value */
errRes = PylonDeviceSetIntegerFeature(hdev, "AutoTonalRangeTargetDark", 0);
CHECK(errRes);
/* Set the bright target value */
errRes = PylonDeviceSetIntegerFeature(hdev, "AutoTonalRangeTargetBright", 255);
CHECK(errRes);
/* Enable the Tonal Range Auto auto function */
errRes = PylonDeviceFeatureFromString(hdev, "TonalRangeAuto", "Once");
CHECK(errRes);
# Enable contrast adjustments only
camera.AutoTonalRangeModeSelector.Value = "Contrast"
# Specify that both ends of the tonal range are to be adjusted automatically
camera.AutoTonalRangeAdjustmentSelector.Value = "BrightAndDark"
# Set the percentage of pixels that is used to calculate the dark threshold
camera.AutoTonalRangeThresholdDark.Value = 0.3
# Set the percentage of pixels that is used to calculate the bright threshold
camera.AutoTonalRangeThresholdBright.Value = 0.4
# Set the dark target value
camera.AutoTonalRangeTargetDark.Value = 0
# Set the bright target value
camera.AutoTonalRangeTargetBright.Value = 255
# Enable the Tonal Range Auto auto function
camera.TonalRangeAuto.Value = "Once"
pylon Viewerを使用して、パラメーターを簡単に設定することもできます。