White Balance

1 개요

이미지의 White Balance 를 보정하는 알고리즘 입니다.

2 알고리즘 상세 설명

입력 이미지 결과 이미지
Source Image CCT Result
Fig. White Balance Color Temperature 5600K 동작 예시

위의 예시는 예제 이미지를 사용하여 Default 설정으로 동작한 예시입니다.

3 예제 코드

CWhiteBalance WhiteBalance;

CFLImage fliSourceImage;
WhiteBalance.SetSourceImage(fliSourceImage);

/* BGR Ratio */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_BGRRatio);
WhiteBalance.SetRatioB(1.2);
WhiteBalance.SetRatioG(1);
WhiteBalance.SetRatioR(0.9);
WhiteBalance.Execute();

/* Measurement Region */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_MeasurementRegion);
CFLRect<int64_t> flfRegion(243, 227, 260, 240, 0);
WhiteBalance.SetRegion(&flfRegion);
WhiteBalance.Measure();
WhiteBalance.Execute();

/* Color Temperature */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_ColorTemperature);
WhiteBalance.SetColorTemperature(5600);
WhiteBalance.Execute();

/* Adaptive Histogram */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_Auto);
WhiteBalance.SetAWB(EAWB_AdaptiveHistogram);
WhiteBalance.Execute();

/* Gray World */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_Auto);
WhiteBalance.SetAWB(EAWB_GrayWorld);
WhiteBalance.Execute();

/* Chroma */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod_Auto);
WhiteBalance.SetAWB(EAWB_Chroma);
WhiteBalance.Execute();

CWhiteBalance WhiteBalance = new CWhiteBalance();

CFLImage fliSourceImage = new CFLImage();
WhiteBalance.SetSourceImage(ref fliSourceImage);

/* BGR Ratio */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.BGRRatio);
WhiteBalance.SetRatioB(1.2);
WhiteBalance.SetRatioG(1);
WhiteBalance.SetRatioR(0.9);
WhiteBalance.Execute();

/* Measurement Region */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.MeasurementRegion);
CFLRect<int64_t> flfRegion = new CFLRect<int64_t>(243, 227, 260, 240, 0);
WhiteBalance.SetRegion(flfRegion);
WhiteBalance.Measure();
WhiteBalance.Execute();

/* Color Temperature */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.ColorTemperature);
WhiteBalance.SetColorTemperature(5600);
WhiteBalance.Execute();

/* Adaptive Histogram */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.Auto);
WhiteBalance.SetAWB(EAWB.AdaptiveHistogram);
WhiteBalance.Execute();

/* Gray World */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.Auto);
WhiteBalance.SetAWB(EAWB.GrayWorld);
WhiteBalance.Execute();

/* Chroma */
WhiteBalance.SetCorrectionMethod(ECorrectionMethod.Auto);
WhiteBalance.SetAWB(EAWB.Chroma);
WhiteBalance.Execute();