Watersheds Threshold Marker
1 개요
이미지의 픽셀값을 2차원 지형으로 정하여, 위에서 아래로 물을 채우는 방식의 알고리즘입니다.
2 알고리즘 상세 설명
이미지를 Grayscale로 변환하면 각 Pixel의 값(0 ~255)은 높고 낮음으로 구분할 수 있을 것입니다. 이것을 지형의 높낮이로 가정하고 높은 부분을 봉우리, 낮은 부분을 계곡이라고 표현할 수 있습니다.
계곡에 물을 붓는다고 생각하면 결국에 물이 넘쳐 섞이는 부분이 생길것입니다. 그 부분에 경계선을 만들어 서로 섞이지 않게 합니다. 바로 그 경계선을 이미지의 구분지점으로 파악하여 이미지를 분할합니다.
Watersheds Threshold Marker 알고리즘의 경우, Otsu Threshold 를 사용하여 Minima 영역을 구합니다.
원본 이미지 |
Watersheds Threshold Marker 결과 이미지 |
 |
 |
Fig. Watersheds Threshold Marker 결과
다채널 이미지의 경우 채널별 조건을 파라미터로 설정하여 최종 이진화 결과를 결정합니다.
3 파라미터 설정 및 사용 방법
멤버함수 |
파라미터 |
설 명 |
SetThresholdMode |
ImageProcessing::EThresholdMode |
eThresholdMode |
IN |
Threshold Mode 설정값 |
Threshold Mode를 설정합니다. Single을 선택하면 하나의 임계 조건에 대한 연산을 진행합니다. Dual And를 선택하면 두 임계 조건 모두 만족 시 최종 결과가 참이 됩니다. Dual Or를 선택하면 두 임계 조건 중 하나라도 만족 시 최종 결과가 참이 됩니다.
eThresholdMode
- Default Value: EThresholdMode_Single, Recommended Value: EThresholdMode_Single
멤버함수 |
파라미터 |
설 명 |
SetLogicalConditionOfChannels |
ImageProcessing::ELogicalConditionOfChannels |
eLogicalConditionOfChannels |
IN |
각 채널의 결과에 대한 논리 연산 방식 |
채널별 결과들을 어떤 논리 연산 방식으로 처리할지 설정합니다. And를 선택하면 모든 채널의 연산 결과가 참인 경우 최종 결과가 참이 되고, Or를 선택하면 하나의 채널이라도 연산 결과가 참이라면 최종 결과가 참이 됩니다.
eCondition
- Default Value: ELogicalConditionOfChannels_And, Recommended Value: ELogicalConditionOfChannels_And
멤버함수 |
파라미터 |
설 명 |
SetThreshold |
double |
f64Threshold |
IN |
임계값 |
ImageProcessing::EThresholdIndex |
eIndex |
IN |
임계값 Index |
멤버함수 |
파라미터 |
설 명 |
SetThreshold |
CMultiVar<double> |
mvThreshold |
IN |
임계값 |
EThresholdIndex |
eIndex |
IN |
임계값 Index |
설정한 Threshold Index에 따라 첫 번째 또는 두 번째 임계값을 설정합니다. Thrshold Index를 First로 설정 시 첫 번째 임계값을 설정하고, Second 설정 시 두 번째 임계값을 설정합니다.
eIndex
- Default Value: EThresholdIndex_First, Recommended Value: EThresholdIndex_First
멤버함수 |
파라미터 |
설 명 |
SetThreshold |
CMultiVar<double> |
mvThreshold1 |
IN |
첫 번째 임계값 |
CMultiVar<double> |
mvThreshold2 |
IN |
두 번째 임계값 |
첫 번째, 두 번째 임계값을 설정합니다. mvThreshold1에 첫 번째 임계값을 설정하고, mvThreshold2에 두 번째 임계값을 설정합니다.
멤버함수 |
파라미터 |
설 명 |
SetLogicalCondition |
Base::ELogicalCondition |
eThresholdCondition |
IN |
논리 조건 설정값 |
ImageProcessing::EThresholdIndex |
eIndex |
IN |
논리 조건 Index |
멤버함수 |
파라미터 |
설 명 |
SetLogicalCondition |
int64_t |
i64ThresholdCondition |
IN |
논리 조건 설정값 |
ImageProcessing::EThresholdIndex |
eIndex |
IN |
논리 조건 Index |
멤버함수 |
파라미터 |
설 명 |
SetLogicalCondition |
CMultiVar<int64_t> |
mvThresholdCondition |
IN |
논리 조건 설정값 |
ImageProcessing::EThresholdIndex |
eIndex |
IN |
논리 조건 Index |
설정한 Threshold Index에 따라 첫 번째 또는 두 번째 논리 조건을 설정합니다. 논리 조건은 Greater(큼), Greater Equal(크거나 같음), Equal(같음), Not Equal(같지 않음), Less Equal(작거나 같음), Less(작음)으로 설정 가능합니다.
eIndex
- Default Value: EThresholdIndex_First, Recommended Value: EThresholdIndex_First
멤버함수 |
파라미터 |
설 명 |
SetLogicalCondition |
CMultiVar<int64_t> |
mvThresholdCondition1 |
IN |
첫 번째 논리 조건 설정값 |
CMultiVar<int64_t> |
mvThresholdCondition2 |
IN |
두 번째 논리 조건 설정값 |
첫 번째, 두 번째 논리 조건을 설정합니다. mvThresholdCondition1에 첫 번째 논리 조건을 설정하고, mvThresholdCondition2에 두 번째 논리 조건을 설정합니다.