본문 바로가기

OpenCV/Python

모폴로지 Morphology

흰색으로 나타나는 오브젝트 영역의 형태를 개선하기 위해 사용된다.

쉽게 설명: 노이즈 제거하고, 붙어있는 오브젝트 분리하기 용이

 

1. Erosion

: 분리과정에서 외곽을 0으로! -> 검정색

: 직관적으로는 검정이 더 커진다~

-> kernel 크기와, Erosion 값을 변화시켜서 조정 가능

: cv.erode(이미지, Kernal, iteration) 사용

 

ex)

import cv2 as cv
import numpy as np

img = cv.imread('hamster.jpg', cv.IMREAD_GRAYSCALE)

kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
img_result_1 = cv.erode(img, kernel, iterations=1)
img_result_2 = cv.erode(img, kernel, iterations=2)

cv.imshow('1', img_result_1)
cv.imshow('3', img_result_2)

cv.waitKey(0)

 

 

 

2. Dilation

: 분리과정에서 외곽을 1으로 -> 흰색

: 직관적으로는 흰색 부분이 더 커진다~

 

 

비교하니까 확 차이나쥬?

 

3. Opening

: Erosion 다음에 Dilation 적용

: Eroision을 사용하면, 흰색오브젝트가 작아지므로, 다시 Dilation을 사용해서 흰색 오브젝트 크기 크게!

 

4. Closing

: Dilation 다음에 Erosion 적용

: 흰색 오브젝트에 있는 작은 검정 구멍들 메우는데 사용!

import cv2 as cv
import numpy as np

img = cv.imread('black_white.jpg', cv.IMREAD_GRAYSCALE)

kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
img_result_1 = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)

cv.imshow('1', img)
cv.imshow('3', img_result_1)

cv.waitKey(0)

 

'OpenCV > Python' 카테고리의 다른 글

에지 검출  (0) 2021.06.13
Convolution and Mask  (0) 2021.06.13
원근(퍼스펙티브) 변환  (0) 2021.06.13
영역 지정 (내가 헷갈려서 정리..)  (0) 2021.06.13
이미지 기하학적 변환  (0) 2021.06.13