콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

Vignetting Correction#

Vignetting Correction camera feature를 사용하면 이미지의 비네팅 아티팩트를 제거할 수 있습니다.

이 기능은 pylon Viewer의 Vignetting Correction 기능과 연동되어 작동합니다.

기능 사용법#

비네팅이란 이미지의 중심부에 비해 모서리가 어두워지는 현상을 의미합니다. 이는 디지털 이미징에서 흔히 발생하는 현상이며, 센서 가장자리의 픽셀이 충분한 빛을 받지 못할 때 발생합니다.

이는 예를 들어 센서 크기에 비해 이미지 서클이 너무 작거나, 광선이 센서 중심부처럼 직각으로 센서에 도달하지 않기 때문에 발생할 수 있습니다. 즉, 가장자리의 픽셀이 더 낮은 회조 값을 갖게 됩니다.

이러한 아티팩트를 제거하려면 pylon Viewer를 사용하여 보정 데이터 세트를 생성해야 합니다. 다음 다이어그램은 이 과정을 보여줍니다.

Vignetting Correction 프로세스 다이어그램

1단계에서는 모든 픽셀에 대한 보정 값(CV)이 계산되어 카메라의 memory에 저장됩니다. 2단계에서는 VignettingCorrectionMode 파라미터가 활성화된 경우 비네팅 아티팩트가 즉시 제거됩니다. 아티팩트를 제거하기 위해 보정 값은 원래 픽셀 값(OV)과 곱해져 개선된 이미지(결과 값, RV)를 얻게 됩니다.

파라미터를 사용하여 VignettingCorrectionMode 보정을 켜고 끌 수 있습니다. 이 파라미터는 pylon Viewer를 사용하여 Vignetting Correction 데이터를 생성한 후에만 사용할 수 있습니다.

Vignetting Correction 데이터를 생성한 카메라와 사양이 유사한 다른 카메라의 Vignetting Correction 데이터를 사용할 수도 있습니다. 그렇게 하려면 다음 단계를따르십시오. 그런 다음 VignettingCorrectionLoad 명령입니다.

정보

샘플 코드#

ace 2 및 boost R Cameras#
// Turn vignetting correction on
camera.BslVignettingCorrectionMode.SetValue(BslVignettingCorrectionMode_On);
// Load vignetting correction data
camera.BslVignettingCorrectionLoad.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Turn vignetting correction on
CEnumParameter(nodemap, "BslVignettingCorrectionMode").SetValue("On");
// Load vignetting correction data
CCommandParameter(nodemap, "BslVignettingCorrectionLoad").Execute();
// Turn vignetting correction on
camera.Parameters[PLCamera.BslVignettingCorrectionMode].SetValue(PLCamera.BslVignettingCorrectionMode.On);
// Load vignetting correction data
camera.Parameters[PLCamera.BslVignettingCorrectionLoad].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 */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "BslVignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslVignettingCorrectionLoad");
CHECK(errRes);
# Turn vignetting correction on
camera.BslVignettingCorrectionMode.Value = "On"
# Load vignetting correction data
camera.BslVignettingCorrectionLoad.Execute()
기타 카메라#
// Turn vignetting correction on
camera.VignettingCorrectionMode.SetValue(VignettingCorrectionMode_On);
// Load vignetting correction data
camera.VignettingCorrectionLoad.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Turn vignetting correction on
CEnumParameter(nodemap, "VignettingCorrectionMode").SetValue("On");
// Load vignetting correction data
CCommandParameter(nodemap, "VignettingCorrectionLoad").Execute();
// Turn vignetting correction on
camera.Parameters[PLCamera.VignettingCorrectionMode].SetValue(PLCamera.VignettingCorrectionMode.On);
// Load vignetting correction data
camera.Parameters[PLCamera.VignettingCorrectionLoad].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 */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "VignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "VignettingCorrectionLoad");
CHECK(errRes);
# Turn vignetting correction on
camera.VignettingCorrectionMode.Value = "On"
# Load vignetting correction data
camera.VignettingCorrectionLoad.Execute()

또한 pylon Viewer를 사용하여 파라미터를 손쉽게 설정할 수 있습니다.