GLCM에서 통계량을 도출하고 상관 플로팅하기
이 예제에서는 GLCM(명암도 동시발생 행렬)의 집합을 만들고 이로부터 통계량을 도출하는 방법을 보여줍니다. 이 예제는 graycoprops
에서 반환된 통계량이 원래 입력 영상과 어떠한 직접적 관계를 갖는지도 보여줍니다.
영상을 작업 공간으로 읽어 들인 후 이를 표시합니다. 이 예제에서는 트루컬러 영상을 회색조 영상으로 변환한 다음 90도 회전시킵니다.
circuitBoard = rot90(im2gray(imread("board.tif")));
imshow(circuitBoard)
다양한 방향과 거리의 오프셋을 정의합니다. 영상에는 다양한 모양과 크기의 객체들이 가로와 세로 방향으로 배치되어 있습니다. 따라서 이 예제에서는 거리를 변화시키는 오프셋 집합만 지정합니다.
offsets0 = [zeros(40,1) (1:40)'];
GLCM을 만듭니다. 해당 오프셋을 지정하여 graycomatrix
함수를 호출합니다.
glcms = graycomatrix(circuitBoard,"Offset",offsets0);
graycoprops
함수를 사용하여 GLCM에서 통계량을 도출합니다. 이 예제는 대비와 상관을 계산합니다.
stats = graycoprops(glcms,["Contrast" "Correlation"]);
상관을 오프셋의 함수로 플로팅합니다.
figure, plot([stats.Correlation]); title("Texture Correlation as a function of offset"); xlabel("Horizontal Offset") ylabel("Correlation")
플롯을 보면 오프셋 7, 15, 23, 30에서 피크가 있습니다. 입력 영상을 자세히 살펴보면 영상에서 특정 세로 요소가 7픽셀마다 반복되는 주기적인 패턴이 있음을 알 수 있습니다.