CS/디지털영상처리

[디지털영상처리] Morphological Image Processing (1)

nowkoes 2024. 1. 25. 00:00

Morphology

개요

 

 모폴로지(Morphology)이미지의 구조와 형태를 분석하고 처리하는 방법론을 의미한다. 이는 기본적으로 이미지의 구성 요소들을 추출하고 나타내는 데 유용한 도구로 사용되며, 특히 이미지의 경계와 골격 같은 영역의 형태를 표현하고 기술하는 데 중요한 요소들이 포함된다. 또한, 모폴로지는 이미지의 전처리나 후처리 과정에도 활용되기도 한다. 이번 시간에는 모폴로지의 대표적인 기술인 침식(Erosion)과 팽창(Dilation), 오프닝(Opening)과 클로징(Closing)에 대해 배워보도록 하겠다.


본문

Set Theroy

 

 모폴로지를 설명하기에 앞서, 형태학적인 연산의 범위(픽셀)를 제한하기 위해 집합론을 정의해야 한다. 즉, 이미지를 픽셀의 집합으로 간주하고, 각 픽셀을 좌표와 해당 좌표의 강도 또는 색상 값으로 표현하기 위해서다. 𝑍를 양의 정수의 집합, 𝑍의 제곱을 양수 쌍의 집합이라고 가정하자. 만약 (x, y)가 𝑍 제곱에 속하는 정수 쌍일 때, 함수 f가 밝기 값을 지정하는 매핑이면, 함수 f(x, y)를 디지털 이미지라 부를 수 있다.

 

 

 또한 A가 𝑍 제곱의 집합이고, 그 원소들을 픽셀의 좌표 (x, y)로 구성한다고 하면 위와 같은 조건부 집합 표현으로 나타낼 수 있다. 여기서 A는 이미지 I 내에서 밝기 값이 0이 아닌 모든 픽셀 좌표의 집합을 의미한다.


Erosion

 

 침식(Erosion) 연산이미지에 있는 객체의 경계를 축소시키는 데 사용된다. 위의 그림에서 침식 연산은 I와 동일한 크기의 새 이미지를 만드는 것부터 시작한다. 그리고 구조 요소(Struct Element, 이미지 내의 특정 픽셀에 적용되어 해당 픽셀 주변의 픽셀들과의 관계를 기반으로 연산을 수행하는 마스크) B를 이미지 I 위에서 이동시키며, 이동의 각 단계에서 만약 B가 A에 완전히 포함되어 있다면 B의 원점 위치를 새 이미지의 전경 픽셀로 표시한다. 쉽게 생각해서, 구조 요소 B로 이미지 I를 슬라이딩하며 테두리를 지운다고 생각하면 된다. 

 

I = zeros(256, 256);
rectSize = 50;
startX = (256 / 2) - (rectSize / 2);
startY = startX;
I(startX:startX+rectSize-1, startY:startY+rectSize-1) = 1;

se = strel('square', 5);
A = imerode(I, se);
difference = I - A;

subplot(1,3,1); imshow(I, []); title('Original Image');
subplot(1,3,2); imshow(A, []); title('Eroded Image');
subplot(1,3,3); imshow(difference, []); title('Eroded Parts');

 

 매트랩에서는 이미지 침식 기능을 제공하는 imerode 함수가 존재한다. 이 함수를 이용하여 구조 요소를 정의하고, 원본 이미지와 구조 요소를 침식시키면 위와 같이 Erosion이 적용되는 것을 관찰할 수 있다. 이때 원본 이미지와 침식된 이미지의 차이를 이용하여 테두리를 만들 수 있다는 점도 체크해 두면 경계 검출에 유용하게 쓸 수 있다.


Dilation

 

 팽창(Dilation) 연산 이미지에 있는 객체를 확장시키는 데 사용된다. 위의 그림에서 침식 연산은 I와 동일한 크기의 새 이미지를 만드는 것부터 시작한다. 그리고 구조 요소 B를 이미지 I 위에서 이동시키며, 이동의 각 단계에서 만약 A가 B의 픽셀을 하나라도 포함하고 있다면, B의 원점 위치를 새 이미지의 전경 픽셀로 표시한다. 쉽게 생각해서, 구조 요소 B로 I를 슬라이딩하며 테두리를 확장시킨다고 생각하면 된다.

 

I = imread("dilation.jpg");

se = strel('square', 3);
A = imdilate(I, se);
difference = I - A;

subplot(1,3,1); imshow(I, []); title('Original Image');
subplot(1,3,2); imshow(A, []); title('Dialted Image');

 

 매트랩에서는 이미지 팽창 기능을 제공하는 imdilate 함수가 존재한다. 이 함수를 이용하여 구조 요소를 정의하고, 원본 이미지와 구조 요소를 침식시키면 위와 같이 Dilation이 적용되는 것을 관찰할 수 있다.

반응형