Vignetting Correction#
此功能與 pylon Viewer 中的 Vignetting Correction 功能協同運作。
使用功能#
暈影是指影像邊角相較於中心顯得較暗的現象。這是數位成像中常見的效應,通常是因為感光元件邊緣的畫素無法接收充足的光線所致。
發生此情況的原因可能是相場圓(Image Circle)相對於感光元件尺寸過小,或是光線不像感光元件中心那樣以直角射入感光元件。這意味著邊緣畫素的灰階值較低。
若要移除這些偽影,您必須使用 pylon Viewer 建立一組校正資料。以下圖表說明了此過程:

在步驟 1 中,會計算所有畫素的校正值(CV)並將其儲存在相機的 Memory 中。在步驟 2 中,如果 VignettingCorrectionMode 參數已啟用,則會立即移除暈影偽影。為了移除偽影,系統會將校正值與原始畫素值(OV)相乘,以獲得改良的影像(結果值,RV)。
使用 VignettingCorrectionMode 參數,您可以開啟或關閉校正功能。此參數只有在使用 pylon Viewer 建立 Vignetting Correction 資料後才會可用。
如果您的相機與建立 Vignetting Correction 資料時所使用的相機具有相似的規格,您也可以使用來自不同相機的 Vignetting Correction 資料。若要這麼做,請遵循這些 步驟。之後,執行 VignettingCorrectionLoad 指令。
資訊
- 為獲得最佳效果,請在建立校正資料之前停用所有非線性功能,例如 Light Source Preset 或 Gamma。之後,您就可以重新啟用它們。
- 在彩色相機上,請在建立校正資料之前選擇 Bayer Pixel Format。建立校正資料後,您就可以選擇任何 Pixel Format。
- 執行 Vignetting Correction 時,重要的是產生的參考影像顯示出邊角相對於中心的 darkening 程度應為適中。
- 暗角會受到所使用的鏡頭、光圈和焦距的影響。如果您更換了鏡頭、光圈或焦距,則必須建立一套新的 Vignetting Correction 資料。
-
在以下情況下變更 Binning 係數:
BinningSelector參數設為Sensor將會停用 Vignetting Correction。該VignettingCorrectionMode參數將會設為Off變更 binning factor,並且在發生以下情況之一之前,您將無法再次開啟它:- 您將 binning factor 重設為執行 Vignetting Correction 時所使用的係數。
- 您使用新的係數再次執行 Vignetting Correction。
範例程式碼#
ace 2 和 boost R Cameras#
/* 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 */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "BslVignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslVignettingCorrectionLoad");
CHECK(errRes);
其他相機#
/* 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 */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "VignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "VignettingCorrectionLoad");
CHECK(errRes);
您也可以 use the pylon Viewer 來輕鬆設定參數。