본문 바로가기
DataScience/Vision

opencv morphology (dilate/erode)

by jusep 2022. 1. 27.

모폴로지(morphology)는 형태학이라는 뜻으로 영상 분야에서는 노이즈 제거, 구멍 메꾸기, 연결되지 않은 경계 이어붙이기 등 형태학적 관점에서의 영상 연산을 말합니다. 모폴로지는 주로 형태를 다루는 연산이므로 바이너리 이미지를 대상으로 합니다. 대표적인 연산은 dilate와 erode이며, 이 둘을 결합한 열림과 닫힘이 있습니다. 

 

1. Erosion

원래 있던 객체의 영역을 깍아 내는 연산입니다. 이 연산을 위해서는 구조화 요소(structuring element)라는 0과 1로 채워진 커널이 필요합니다. 구조화 요소 커널을 입력 영상에 적용해서 1로 채워진 영역을 온전히 올려 놓을 수 없으면 0으로 변경합니다. 

Erosion
erode.py

2. Dilation

영상 속 사물의 주변을 덧붙여서 영역을 더 확장하는 연산입니다. 구조화 요소 커널을 입력 영상에 적용해서 1로 채워진 영역이 온전히 덮이지 않으면 1로 채워 넣습니다. 

Dilation
dilate.py

3. Opening

침식 연산을 적용하고 나서 팽창 연산을 적용하는 것을 opening 연산이라고 합니다. Opening은 주변보다 밝은 노이즈 제거에 효과적이면서 맞닿아 있는 것으로 보이는 독립된 개체를 분리하거나 돌출된 픽셀을 제거하는데 좋습니다. 

Opeing
opening.py

4. Closing

팽창 연산을 먼저 적용하고 침식 연산을 나중에 적용하는 연산을 closing이라고 합니다. 주변보다 어두운 노이즈 제거에 효과적이면서 끊어져 보이는 개체를 연결하거나 구멍을 메우는데 좋습니다. 

Closing
closing.py

댓글