
Binary image(0,255로만 이루어진 이미지), Grayscale image(0~255) 적용가능,
다중채널이미지는 채널별로 적용해서 합치기 가능
1. Erosion : cv2.erode(src, kernel, iterations)
객체(전경)의 픽셀 값을 커널이 덮는 영역 내의 최솟값으로 대체하여, 객체를 “축소”
사용 : 잡음 제거, 경계 영역 축소, 객체 분리(겹쳐져 있는 사물을 객체별로 분리)

- src : 입력 이미지
- kernel : 이미지의 각 픽셀 위치에서의 "이웃 픽셀 집합"
- 모양
- 사각형(default) : 객체의 네 모서리와 가장자리가 고르게 축소됨
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5)) - 원형 : 코너(모서리) 부분은 덜 깎이고, 곡면 모양 객체를 남기는 데 유리
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)) -
십자형 : 가로·세로 연결만 축소하므로 세밀한 구조 보존에 유리
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5,5))
- 사각형(default) : 객체의 네 모서리와 가장자리가 고르게 축소됨
- 크기
- 크기가 클 수록 한번에 깎여나가는 픽셀 폭이 커진다(더 뭉뚱그려진다)
- 작은 노이즈 제거용이라면 3×3(default), 객체 경계만 살짝 다듬고 싶다면 5×5 이상을 선택
# 작은 노이즈 제거: 3×3 사각kernel_small = np.ones((3,3), np.uint8)# 좀 더 공격적인 침식: 7×7 사각kernel_large = np.ones((7,7), np.uint8)
- 모양
iterations : 침식 연산 반복 횟수(반복할수록 객체가 더 많이 축소됨)
------------------------------------------------------------------------------------------------------------------------------
* anchor : kernel내 기준점(중앙(-1,-1)이 기본값)
* borderType : 가장자리 픽셀 처리 방식 (BORDER_CONSTANT, BORDER_REPLICATE 등)
* borderValue : bordertype이 BORDER_CONSTANT일 때 채울 값
2. Dilation : cv2.dilate(src, kernel, iterations)
커널이 덮는 영역 내에서 최댓값을 결과 픽셀로 대체하여, 전경 픽셀을 주변으로 확장
사용 : 노이즈 제거, 객체 연결, 빈틈 메우기, 윤곽강조, 마스크 확장

3. opening
침식(Erosion) 후 팽창(Dilation) 을 순차적으로 적용하는 모폴로지 연산입니다.
사용 : 작은 노이즈를 제거, 객체를 분리 하면서 원본 객체의 형태를 크게 훼손하지 않는 데 유용합니다.

4. closing
팽창(Dilation) 후 침식(Erosion) 을 순차적으로 적용하는 모폴로지 연산입니다.
사용 : 작은 구멍(hole)이나 어두운 점(noise)을 메우면서 객체의 전체 형태를 크게 훼손하지 않는 데 유용합니다.

5. Morphological Gradient
팽창(Dilation) 과 침식(Erosion) 의 차이를 계산하여 객체의 경계(에지)를 강조

6. Top-Hat (White-Hat) / Black-Hat

- White-Hat
- 어두운 배경에서 밝은 부분 강조
- 사용 : 문서 스캔에서 흰 바탕 위의 작은 얼룩 제거 전 강조, 조명 그림자가 있는 사진에서 밝은 반점 추출
- Black-Hat
- 밝은 배경에서 어두운 부분 강조
- 사용 : 금속 표면 검사에서 흠집(어두운 부분) 검출, 혈관 영상에서 어두운 선만 분리
출처
OpenCV Morphological Operations - PyImageSearch
In this tutorial, you will learn about applying morphological operations with OpenCV. The morphological operations we’ll be covering include: Erosion Dilation Opening Closing Morphological gradient Black hat Top hat (also called “White hat”) These im
pyimagesearch.com
'PyImageSearch' 카테고리의 다른 글
| OpenCV - Thresholding(이진화) (0) | 2025.06.12 |
|---|---|
| OpenCV - Color Spaces (0) | 2025.06.12 |
| OpenCV - 블러처리 (2) | 2025.06.12 |
| OpenCV : 기본함수들 (0) | 2025.06.09 |
| CommandLine Arguments (2) | 2025.06.03 |