White Balance
1 개요
이미지의 White Balance 를 보정하는 알고리즘 입니다.
2 알고리즘 상세 설명
-
사용자 정의 White Balance
- BGR Ratio
- 올바른 BGR 색상의 Gain 값을 알고 있는 경우 해당 모드에서 Gain 값을 입력하여 White Point 를 변경할 수 있습니다.
- Color Temperature
- 색온도 변경을 통해 광원 환경이 다른 이미지로 보정 할 수 있습니다.
- Measurement Region
- 이미지에서 White Point 라고 판단 되는 영역을 사용자가 지정함으로써 White Point 를 변경합니다.
- BGR Ratio
-
Auto White Balance
- Gray World
- 이미지의 평균 색채가 무채색임을 가정하여 BGR Gain 값을 자동 보정하는 알고리즘 입니다.
- Adaptive Histogram
- Gray World 알고리즘에 색채 히스토그램 분석을 통한 Gain 값의 적응형 보정이 추가된 알고리즘 입니다.
- Chroma
- RGB 색공간이 아닌 YCbCr 공간에서 색채 정보를 바탕으로 White Balnce 를 보정하는 알고리즘 입니다.
- Gray World
입력 이미지 | 결과 이미지 |
---|---|
![]() |
![]() |
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();