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();

whiteBalance = CWhiteBalance()

fliSourceImage = CFLImage()
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)
flfRegion = CFLRect[int](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()