본문 바로가기

Programming Language/Python

opencv erode & dilate - Morphological Transformations

* Erosion

- 이미지를 침식시키는 것

- 이미지의 경계 부분을 침식시켜서 배경 이미지로 전환한다

- 흐릿한 경계부분을 배경으로 만든다고 생각하면 쉽다

- 작은 (nxn) kernel 창으로 이미지 전체를 훑으면서 kernel 창에 들어온 matrix 값을 변경한다

import cv2
import numpy as np

kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)

- img: erosion을 진행할 원본이미지

- kernel: erosion을 위한 kernel

- iterations: erosion 반복 횟수

 

사용한 커널 사이즈에 따라 이미지 Object 외곽에서 사라지는 픽셀의 정도가 달라진다.
커널의 크기를 (3x3)으로 고정하고, iterations 수를 조절해도 사라지는 픽셀의 정도가 달라진다

 

 

 

* Dilation

- 이미지를 팽창시키는 것

- Erosion과 반대로 동작한다

import cv2
import numpy as np

kernel = np.ones((3, 3), np.uint8)
dilation = cv2.dilate(img, kernel, iterations=1)

- img: dilation을 진행할 원본이미지

- kernel: dilation을 위한 kernel

- iterations: dilation 반복 횟수

 

 

 

 

 

 

출처: https://nicewoong.github.io/development/2018/01/05/erosion-and-dilation/

 

[Python-OpenCV] Erosion 과 Dilation - nicewoong

M1 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) 메서드를 활용해서 더 손쉽게 Kernel Matrix 를 생성가능합니다.

nicewoong.github.io

https://webnautes.tistory.com/1257

 

OpenCV Python 강좌 - 모폴로지 연산 (Morphological Operations)

OpenCV에서 제공하는 Erosion, Dilation, Opening, Closing 연산하는 함수들을 다룹니다. 보통 바이너리 이미지(Binary Image)에서 흰색으로 표현된 오브젝트의 형태를 개선하기 위해 사용됩니다. 마지막 업데이트..

webnautes.tistory.com