Mura
1 개요
Mura 알고리즘은 저조도 이미지에서 명암 불량을 감지하는 알고리즘입니다.
이미지의 특정 영역이 다른 영역보다 밝거나 어두움 영역을 탐지합니다.
2 알고리즘 상세 설명
알고리즘 동작 결과 | |
---|---|
![]() |
![]() |
미세한 밝기 변화를 감지합니다.
이미지에서 객체 또는 특징을 검출하는데 사용되며, 결과를 다양한 타입으로 얻을 수 있습니다.3 파라미터 설정 및 사용 방법
- 세팅 함수
SetKernelSizeRate
- 커널 사이즈 비율을 설정합니다.
- 기본값은 0.5입니다. 커널 사이즈에 따라 감지되는 검출되는 결함 영역이 다릅니다.
SetMuraColorType
- 검출할 타입에 색상을 설정합니다.
- 기본값은
EMuraColorType_All
으로 배경에 상관 없이 감지합니다. EMuraColorType_WhiteOnBlack
검은색 배경 위 흰색 타입 검출EMuraColorType_BlackOnWhite
흰색 배경 위 검은색 타입 검출
EnableAutoThresholdMode
- 자동 임계값 설정 검사 모드 입니다.
- 설정시 자동 임계값으로 계산이 진행됩니다.
SetThresholdMode
- 임계값 조건 동작을 설정합니다. 기본값은
EThresholdMode_Single
으로 단일 임계값입니다. EThresholdMode_Dual_And
: 2개의 조건이 모두 참이 되는 객체를 검출합니다.EThresholdMode_Dual_Or
: 2개의 조건 중 하나만 참이 되면 객체로 검출합니다.- 해당 입력 값은 자동 임계값 모드를 설정하지 않을때 적용됩니다.
- 임계값 조건 동작을 설정합니다. 기본값은
SetThreshold
- 이미지에서 객체를 검출할 임계값을 설정합니다. 기본값은
127
입니다 - 채널별로 값을 다르게 지정할 수 있습니다.
EThresholdMode_Dual_And
또는EThresholdMode_Dual_Or
로 설정된 경우 2중 조건으로 검사합니다.- 해당 입력 값은 자동 임계값 모드를 설정하지 않을때 적용됩니다.
- 이미지에서 객체를 검출할 임계값을 설정합니다. 기본값은
SetLogicalCondition
- 임계값을 어떤 조건으로 검사할 것인지 설정합니다.
- 채널별로 다르게 지정할 수 있으며 기본값은
ELogicalCondition_Greater
입니다. - 해당 입력 값은 자동 임계값 모드를 설정하지 않을때 적용됩니다.
SetConnectedDirection
- 픽셀 연결 방향을 설정합니다. 기본값은
EConnectedDirection_Direction_8
입니다. - 해당 입력 값은 자동 임계값 모드를 설정하지 않을때 적용됩니다.
- 픽셀 연결 방향을 설정합니다. 기본값은
- 결과 함수
- 결과 객체를 얻어오는 함수
GetResult~~
로 시작하며 각 객체 타입에 대한 결과가 어미로 붙습니다.BoundaryRects
: 경계 사각형을 얻어옵니다.CFLRect<int32_t>
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.Contours
: 픽셀 크기로 확장된 윤곽 도형을 얻어옵니다.CFLRegion
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.PixelCenterContours
: 픽셀 중심 좌표에 대한 윤곽 도형을 얻어옵니다.CFLRegion
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.MinimumEnclosingRectangles
: 최소 경계 사각형을 얻어옵니다.CFLQuad<double>
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.ConvexHulls
: 볼록 경계 도형을 얻어옵니다.CFLRegion
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.GravityCenters
: 무게 중심을 얻어옵니다.CFLPoint<double>
타입이CFLFigureArray
에 객체 순서대로 들어있습니다.Circularities
: 순환성을 얻어옵니다. 원과 유사할수록 1에 가깝게 나옵니다.double
타입이CFLArray
에 객체 순서대로 들어있습니다.Areas
: 객체의 픽셀 넓이를 얻어옵니다.uint64_t
타입이CFLArray
에 객체 순서대로 들어있습니다.Angles
: 객체의 각도를 얻어옵니다. 모멘텀으로 객체의 기울기를 계산합니다.float
타입이CFLArray
에 객체 순서대로 들어있습니다.
Sort
- 측정 결과를 조건에 따라 정렬합니다.
- 여러 조건을 설정할 수 있으며, 순서에따라 정렬 우선순위가 부여됩니다.
SortClusterMode
- 데이터가 일정한 규칙으로 있는 경우 사람의 인식수준의 순서로 정렬합니다.
Filter
- 측정 결과에서 조건에 맞는 객체들을 제거합니다.
- 여러 조건을 설정할 수 있습니다.
- 결과 객체를 얻어오는 함수
4 예제 코드
CMura mura; // 알고리즘 객체 생성
CFLImage fliSourceImage; // 이미지 객체 생성
mura.SetSourceImage(fliSourceImage); // 이미지 객체 입력
mura.SetKernelSizeRate(0.480000); // 커널 사이즈 비율 설정
mura.SetMuraColorType(CMura::EMuraColorType_BlackOnWhite); // 탐색 옵션 설정 (흰색 배경 위 검은색 타입 검출)
mura.EnableAutoThresholdMode(true); // 자동 임계값 설정 모드
mura.Execute(); // 동작
// 결과를 윤곽 도형으로 얻어오기
Foundation::CFLFigureArray flfaContour;
mura.GetResultContours(&flfaContour);