Blob Subsampled

1 개요

기본적인 동작은 CBlob알고리즘과 동일합니다.
각 픽셀에서 샘플링 수준을 설정하여 픽셀당 연산 횟수를 설정합니다.

2 알고리즘 상세 설명

Blob Result Image BlobSubsampled Result Image
Result Image Contour
Scaled
Fig. Blob Subsampled

Blob의 결과와는 달리 실제 픽셀 위치를 추정합니다. 샘플링 수준을 0으로 설정 시 Blob의 Pixel Center Contour와 동일합니다.

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

CBlob 참고.

4 예제 코드

CBlobSubsampled blob;
//////////////////////////////////
// 공통 파라미터 설정
//////////////////////////////////

//////////////////////////////////
// 추가 옵션 설정
//////////////////////////////////

blob.SetThreshold(127);
blob.SetLogicalCondition(ELogicalCondition_Less);
blob.SetSubsamplingLevel(3);
blob.Execute();

// 넓이가 100 이하인 객체 제거
blob.Filter(CBlob::EFilterItem_Area, 100., ELogicalCondition_LessEqual);

// 둘레를 기준으로 정렬
blob.Sort(CBlob::EFilterItem_Perimeter, CBlob::EOrder_Ascending);

// 결과를 경계 사각형으로 얻어오기
CFLFigureArray boundaryRects;
blob.GetResultBoundaryRects(boundaryRects);

// 결과를 윤곽 도형으로 얻어오기
CFLFigureArray boundaryContours;
blob.GetResultContours(boundaryContours);
CBlobSubsampled blob = new CBlobSubsampled();
//////////////////////////////////
// 공통 파라미터 설정
//////////////////////////////////

//////////////////////////////////
// 추가 옵션 설정
//////////////////////////////////

blob.SetThreshold(127);
blob.SetLogicalCondition(ELogicalCondition.Less);
blob.SetSubsamplingLevel(3);
blob.Execute();

// 넓이가 100 이하인 객체 제거
blob.Filter(CBlob.EFilterItem.Area, 100.0, ELogicalCondition.LessEqual);

// 둘레를 기준으로 정렬
blob.Sort(CBlob.EFilterItem.Perimeter, CBlob.EOrder.Ascending);

// 결과를 경계 사각형으로 얻어오기
CFLFigureArray boundaryRects = new CFLFigureArray();
blob.GetResultBoundaryRects(ref boundaryRects);

// 결과를 윤곽 도형으로 얻어오기
CFLFigureArray boundaryContours = new CFLFigureArray();
blob.GetResultContours(ref boundaryContours);
blob = CBlobSubsampled()
######################
# 공통 파라미터 설정
######################

######################
# 추가 옵션 설정
######################

blob.SetThreshold(127)
blob.SetLogicalCondition(ELogicalCondition.Less)
blob.SetSubsamplingLevel(3)
blob.Execute()

# 넓이가 100 이하인 객체 제거
blob.Filter(CBlob.EFilterItem.Area, 100.0, ELogicalCondition.LessEqual)

# 둘레를 기준으로 정렬
blob.Sort(CBlob.EFilterItem.Perimeter, CBlob.EOrder.Ascending)

# 결과를 경계 사각형으로 얻어오기
boundaryRects = CFLFigureArray()
blob.GetResultBoundaryRects(boundaryRects)

# 결과를 윤곽 도형으로 얻어오기
boundaryContours = CFLFigureArray()
blob.GetResultContours(boundaryContours)

5 관련 알고리즘

CBlob