Morphological Transformations
Theory
- Erosion : 제거
- Dilation : 확장
- Opening : Erosion → Dilation
- Closing : Dilation → Erosion
Function
- cv2.erod() : Erosion
- cv2.dilate() : Dilation
- cv2.morphologyEx() : Opening / Closing (매개변수를 이용하여 무엇을 선택할지 지정)
structing element
원하는 이미지를 스캔하여 특정 부분에 대하여 "Erosion/Dilation/Opening/Closing" 할 때 사용할 kernel(filter)을 만들어 줌
cv2.getStructuringElement(shape,ksize)
cv2.getStructuringElement(shape : Element의 모양, ksize : 커널의 크기 , anchor )
shape
사각형 : MORPH_RECT
십자가 : MORPH_CROSS
타원 모양 : MORPH_ELLIPSE
#사각형
ksize = (5,5)
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]
#타원
ksize = (5,5)
[0,0,1,0,0],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[0,0,1,0,0]
#십자가
ksize = (5,5) / anchor= (2,3)
[0,1,0,0,0],
[0,1,0,0,0],
[1,1,1,1,1],
[0,1,0,0,0],
[0,1,0,0,0]
Erosion : 제거
원하는 이미지에 각 pixel에 structing element*를 스캔하면서 하나라도 0이 있는 경우 해당 pixel을 제거하는 방식
하나의 큰 이미지에서 작은 Object들을 제거하는 효과
Original Image에 대해 Struting Element를 적용하면 최종적으로 오른쪽의 결과를 얻게됨
erode()
cv2.erode(image : 적용을 원하는 이미지url, kernel : structing element, anchor : 해당 structing element내에서 제거를 원하는 픽셀, iteration : 제거를 반복할 횟수)
*anchor default : (-1,-1)
Structing element를 Original image에 적용하여, 원본의 각 pixel 에 적용하여 겹치는 부분이 없는 부분이 하나라도 있으면
structing element 내의 anchor에 해당하는 픽셀을 제거함
Dilation : 확장
원하는 이미지에 각 pixel에 structing element*를 스캔하면서 하나라도 1이 있는 경우 해당 pixel을 채우는 하는 방식
경계가 부드러워지고, 구멍이 메워지는 효과
dilation()
cv2.dilation(image : 적용을 원하는 이미지url, kernel : structing element, anchor : 해당 structing element내에서 제거를 원하는 픽셀, iteration : 제거를 반복할 횟수)
*anchor default : (-1,-1)
Structing element를 original image와 OR연산을 적용하여 (0,0인 경우만 0 이므로) 채워지는 효과를 얻음
Morphology : Opening(제거 후 확장) / Closing (확장 후 제거)
Erosion과 Dilation을 조합한 결과
- Opeing : Erosion적용 후 Dilation 적용. 작은 Object나 돌기 제거에 적합
- Closing : Dilation적용 후 Erosion 적용. 전체적인 윤곽 파악에 적합
morphologyEx()
cv2.morphologyEx(image : 적용을 원하는 이미지url, op : type of Morphological op(opening/closing), kernel : structing element, anchor : 해당 structing element내에서 제거를 원하는 픽셀, iteration : 제거를 반복할 횟수)
*anchor default : (-1,-1)
op
참고 사이트
docs.opencv.org/master/d4/d86/group__imgproc__filter.html#ga67493776e3ad1a3df63883829375201f
'졸업프로젝트 > OpenCV' 카테고리의 다른 글
[OpenCV] 이미지에서 특정 이미지 찾아내기 (2) | 2021.01.18 |
---|---|
[OpenCV]문제지에서 문제 크롭(2) (0) | 2021.01.12 |
[OpenCV] 문제지에서 문제 크롭(1) (0) | 2021.01.12 |
[OpenCV] 이미지 이진화 (0) | 2021.01.11 |
[OpenCV]이미지 읽기,출력,저장 (2) | 2021.01.11 |