Gray Level Co-occurrence Matrix
1 개요
이미지 Gray Level Co-occurrence Matrix의 통계적 측정 값을 구하는 알고리즘입니다.
2 알고리즘 상세 설명
입력된 이미지의 Gray Level Co-occurrence Matrix를 생성한 후 해당 Matrix의 Energy, Correlation, Homogeneity, Contrast를 구합니다.
Gray Level Co-occurrence Matrix를 구하는 방향은 0, 45, 90, 135, Mean이 지원되며 Mean의 경우 나머지 4개의 방향의 합을 평균한 값이 됩니다.
알고리즘 입력 방향 |
---|
![]() |
Matrix의 통계적 측정 값을 구하는 식은 다음과 같습니다.
- : Energy
- : Correlation
- : Homogeneity
- : Contrast
- : 입력 Matrix의 i, j 값
- : Gray Level
다중 채널의 경우 각 채널에 대하여 측정 값을 얻습니다.
알고리즘 동작 결과 |
---|
![]() |
Fig. 실행 결과
Energy는 이미지의 균일함을 측정합니다. 이미지가 균일한 경우에는 1을 아닌 경우 1 이하의 값을 반환합니다.
Correlation은 어느 한 픽셀이 이웃 픽셀과의 상관관계가 있는지 측정하는 값입니다. -1에서 1의 값을 가집니다.
Homogeneity는 동질성을 표현하며 높은 경우 1에 가까운 값을 낮은 경우 0에 가까운 값을 반환합니다.
Contrast는 이웃 픽셀 간의 명함 대비를 반환하며 이미지가 균일한 경우 0을 반환합니다.
3 파라미터 설정 및 사용 방법
- 세팅 함수
SetGrayLevel
- Gray Level을 설정합니다.
SetDirection
- Matrix를 구하는 방향을 설정합니다.
EDirection_Degree0
: 0 도EDirection_Degree45
: 45 도EDirection_Degree90
: 90 도EDirection_Degree135
: 135 도EDirection_Mean
: 모든 모드의 평균
4 예제 코드
\n\n$1
// 알고리즘 객체 생성합니다.
CGrayLevelCooccurrenceMatrix GLCM;
// 이미지를 입력합니다.
CFLImage fliSourceImage;
GLCM.SetSourceImage(fliSourceImage);
// Gray Level 설정
int32_t i32GrayLevel;
GLCM.SetGrayLevel(i32GrayLevel);
// Matrix를 구하는 방향을 설정
CGrayLevelCooccurrenceMatrix::EDirection eDirection;
GLCM.SetDirection(eDirection);
// 알고리즘 실행
GLCM.Execute();
// Energy 반환
CFLArray<CFLArray<double>> flaEnergy;
GLCM.GetResultEnergy(flaEnergy);
// Correlation 반환
CFLArray<CFLArray<double>> flaCorrelation;
GLCM.GetResultCorrelation(flaCorrelation);
// Homogeneity 반환
CFLArray<CFLArray<double>> flaHomogeneity;
GLCM.GetResultHomogeneity(flaHomogeneity);
// Contrast 반환
CFLArray<CFLArray<double>> flaContrast;
GLCM.GetResultContrast(flaContrast);