Tonal Range#
若要使用此功能,您必須熟悉 tonal range 和 image histograms 的概念。
如果您想要自動調整 Tonal Range,請使用 Tonal Range Auto 功能。
如果您想要使用線性或 S 形曲線函數調整對比度,請使用 Brightness and Contrast 功能(如果可用)。
使用功能#
調整對比度#
資訊
Basler 建議優先使用 Tonal Range Auto 功能。之後,您可以按照以下說明微調對比度。
若要手動調整對比度:
- 請確保相機已經能拍攝出良好的影像,僅剩 low contrast 或 shifted colors 等問題需要處理。Tonal range 操作只能對已經具備良好 Quality 的影像執行。
在最佳化影像 Quality 時,請遵循 sequence given below。 - 將相機中的
TonalRangeEnable參數設為On. - 將相機中的
TonalRangeSelector參數設為Sum. - 將相機中的
TonalRangeSourceDark進行明確的生命週期管理即呼叫TonalRangeTargetDark將參數設為 dark source 和 target values.
如果 dark target value 低於 dark source value,對比度就會增加。 - 將相機中的
TonalRangeSourceBright進行明確的生命週期管理即呼叫TonalRangeTargetBright將參數設為 bright source 和 target values.
如果 bright target value 大於 bright source value,對比度就會增加。
校正色彩偏移#
資訊
Basler 建議優先使用 Tonal Range Auto 功能。之後,您可以按照以下說明微調色彩校正。
若要手動校正色偏:
- 請確保相機已經能拍攝出良好的影像,僅剩 low contrast 或 shifted colors 等問題需要處理。Tonal range 操作只能對已經具備良好 Quality 的影像執行。
在最佳化影像 Quality 時,請遵循 sequence given below。 - 將相機中的
TonalRangeEnable參數設為On. - 將相機中的
TonalRangeSelector參數設為Red,Green,或Blue,具體取決於您想要校正的色偏。
範例: 如果您的影像帶有綠色色偏,請將參數設為Green. - 將相機中的
TonalRangeSourceDark,TonalRangeTargetDark,TonalRangeSourceBright以及TonalRangeTargetBright參數為 source 和 target values 將目前的色階分佈圖與其他色階分佈圖對齊。
影像優化順序#
如果您想要最佳化影像 Quality,請遵循以下順序以避免副作用:
- 使用 Exposure Time、Black Level 和 Gain 功能進行基本的影像最佳化。請確保影像未過度飽和。
- 如果您使用的是彩色相機,請使用 Light Source Preset、Balance White Auto 或 Balance White 功能來調整白平衡。
- 使用 Tonal Range Auto 和 Tonal Range 功能來最佳化對比度、顏色或兩者。
運作原理#
透過查看圖像中色調分佈的圖形表示(即 image histogram),可以更好地理解色調範圍操作。
Basler pylon Viewer 提供了 Histogram 窗格,這在執行色調範圍操作時非常有用。
資訊
根據相機上啟用的其他功能而定,pylon Viewer 中的 Histogram 窗格可能 不會顯示 Tonal Range 功能實際使用的資料。
例如,Gamma 功能是在色調範圍操作之後處理的。因此,pylon Viewer 中顯示的直方圖包含伽瑪校正,但 Tonal Range 功能所使用的資料則不包含。
來源與目標值#
對比度和色彩調整都基於將 source 值對應到 target 值的相同概念。
為了說明這一點,可以將來源值視為直方圖中的「錨點」,而將目標值視為錨點移動到的位置。

當來源值對應到目標值時,整個直方圖會相應地擴展或拉伸:

Dark/Bright Source 和 Target Values#
如上圖所示,執行色調範圍操作必須定義兩組來源和目標值:
- Dark 來源和目標值,位於 低於 直方圖末端。
您可以使用以下方式指定這些值TonalRangeSourceDark進行明確的生命週期管理即呼叫TonalRangeTargetDark參數。 - Bright 來源和目標值,位於 上方 直方圖末端。
您可以使用以下方式指定這些值TonalRangeSourceBright進行明確的生命週期管理即呼叫TonalRangeTargetBright參數。
所有來源和目標值範圍可從 0 到最大像素值(例如,如果設定了 12-bit pixel format,則為 4095)。由於直方圖拉伸和擴展的程度有限,參數範圍也可能受到限制。
對比度調整(單色與彩色相機)#
在所有支援 Tonal Range 功能的相機上,您都可以使用此功能來調整對比度。
低對比度圖像具有較窄的色調範圍:

Tonal Range 功能允許您手動拓寬色調範圍,從而增加對比度。

拓寬色調範圍是透過將 dark source value 對應到較低的目標值,並將 bright source value 對應到較高的目標值來完成的。
兩個來源值之間的區域定義了您的中間調,即您認為對圖像至關重要的像素值。
若要自動執行此程序,請使用 Tonal Range Auto 功能。
色彩校正(僅限彩色相機)#
在支援 Tonal Range 功能的彩色相機上,您也可以使用此功能來校正偏色。
如果您影像中的顏色偏色,這三個 RGB(紅、綠、藍)色階分佈圖將無法對齊。例如,如果您的影像帶有紅色色偏,紅色色階分佈圖顯示的位置會比綠色和藍色色階分佈圖更偏右(請參閱下方範例)。
透過 Tonal Range 功能,您可以手動對齊 RGB 色階分佈圖,進而減少偏色。

您可以透過設定來源與目標值來對齊 RGB 色階分佈圖,使所有色階分佈圖都拉伸並移動到相似的起點與終點。
若要自動執行此程序,請使用 Tonal Range Auto 功能。
外部連結#
範例程式碼#
// Enable tonal range adjustments
camera.TonalRangeEnable.SetValue(TonalRangeEnable_On);
// Specify that the summed RGB pixel values are used for tonal range adjustments
camera.TonalRangeSelector.SetValue(TonalRangeSelector_Sum);
// Set the dark source and target values
camera.TonalRangeSourceDark.SetValue(30);
camera.TonalRangeTargetDark.SetValue(0);
// Set the bright source and target values
camera.TonalRangeSourceBright.SetValue(240);
camera.TonalRangeTargetBright.SetValue(255);
INodeMap& nodemap = camera.GetNodeMap();
// Enable tonal range adjustments
CEnumParameter(nodemap, "TonalRangeEnable").SetValue("On");
// Specify that the summed RGB pixel values are used for tonal range adjustments
CEnumParameter(nodemap, "TonalRangeSelector").SetValue("Sum");
// Set the dark source and target values
CIntegerParameter(nodemap, "TonalRangeSourceDark").SetValue(30);
CIntegerParameter(nodemap, "TonalRangeTargetDark").SetValue(0);
// Set the bright source and target values
CIntegerParameter(nodemap, "TonalRangeSourceBright").SetValue(240);
CIntegerParameter(nodemap, "TonalRangeTargetBright").SetValue(255);
// Enable tonal range adjustments
camera.Parameters[PLCamera.TonalRangeEnable].SetValue(PLCamera.TonalRangeEnable.On);
// Specify that the summed RGB pixel values are used for tonal range adjustments
camera.Parameters[PLCamera.TonalRangeSelector].SetValue(PLCamera.TonalRangeSelector.Sum);
// Set the dark source and target values
camera.Parameters[PLCamera.TonalRangeSourceDark].SetValue(30);
camera.Parameters[PLCamera.TonalRangeTargetDark].SetValue(0);
// Set the bright source and target values
camera.Parameters[PLCamera.TonalRangeSourceBright].SetValue(240);
camera.Parameters[PLCamera.TonalRangeTargetBright].SetValue(255);
/* 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 tonal range adjustments */
errRes = PylonDeviceFeatureFromString(hdev, "TonalRangeEnable", "On");
CHECK(errRes);
/* Specify that the summed RGB pixel values are used for tonal range adjustments */
errRes = PylonDeviceFeatureFromString(hdev, "TonalRangeSelector", "Sum");
CHECK(errRes);
/* Set the dark source and target values */
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeSourceDark", 30);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeTargetDark", 0);
CHECK(errRes);
/* Set the bright source and target values */
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeSourceBright", 240);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeTargetBright", 255);
CHECK(errRes);
# Enable tonal range adjustments
camera.TonalRangeEnable.Value = "On"
# Specify that the summed RGB pixel values are used for tonal range adjustments
camera.TonalRangeSelector.Value = "Sum"
# Set the dark source and target values
camera.TonalRangeSourceDark.Value = 30
camera.TonalRangeTargetDark.Value = 0
# Set the bright source and target values
camera.TonalRangeSourceBright.Value = 240
camera.TonalRangeTargetBright.Value = 255
您也可以 use the pylon Viewer 來輕鬆設定參數。