Otsu Threshold

1 개요

픽셀 히스토그램 정보를 바탕으로 클래스 간 분산을 이용하여 최적 임계값을 적용하는 알고리즘입니다.

2 알고리즘 상세 설명

알고리즘은 두 클래스 분산의 가중 합으로 정의된 클래스 내 분산을 최소화하는 임계값을 조사하여 적용합니다.

σw2(t)=ω0(t)σ02(t)+ω1(t)σ12(t){\sigma_{w}}^{2}(t)=\omega_{0}(t){\sigma_{0}}^{2}(t)+\omega_{1}(t){\sigma_{1}}^{2}(t)

입력 이미지 결과 이미지
Source Image Otsu Threshold Result
Fig. Otsu Threshold 동작 예시

3 예제 코드

COtsuThreshold otsuThreshold;

CFLImage fliSourceImage;
otsuThreshold.SetSourceImage(fliSourceImage);

CMultiVar<int64_t> mvLogicalCondition;
mvLogicalCondition.PushBack((int64_t)(ELogicalCondition_Greater));

otsuThreshold.SetLogicalCondition(mvLogicalCondition);

CMultiVar<double> mvOffset(0);
otsuThreshold.SetThresholdOffset(mvOffset);
otsuThreshold.Execute();
COtsuThreshold otsuThreshold = new COtsuThreshold();

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

CMultiVar<long> mvLogicalCondition = new CMultiVar<long>();
mvLogicalCondition.PushBack((long)(ELogicalCondition.Greater));

otsuThreshold.SetLogicalCondition(mvLogicalCondition);

CMultiVar<double> mvOffset = new CMultiVar<double>(0);
otsuThreshold.SetThresholdOffset(mvOffset);
otsuThreshold.Execute();

4 파라미터 설정 및 사용 방법

멤버함수 파라미터 설 명
SetThresholdOffset CMultiVar<double> mvOffset IN 이진화 적용 Offset

산출된 Threshold 값에 Offset 만큼 더 적용하여 이진화를 수행하게 됩니다.