이미지의 잡음(noise)이나 불필요한 세부 정보를 줄여, 후속 처리(예: 엣지 검출, 이진화 등)의 정확도를 높이는 전처리 기법.
1. 왜 Smoothing/Blurring을 사용하는가
- 노이즈 감소: 카메라 센서나 압축 과정에서 생긴 고주파 잡음을 낮춰 줍니다.
- 디테일 제어: 작고 불필요한 구조(미세 엣지)를 제거해, 관심 객체의 구조적 형태를 더 뚜렷하게 만듭니다.
- 후처리 성능 향상: 엣지 검출, 이진화(thresholding) 같은 기법을 적용했을 때 오탐(false positive)을 줄이고, 처리 속도를 높여 줍니다
2. 주요 Blurring 함수 네 가지
(1) Average Blur : cv2.blur(src, (k,k))

- 원리: 각 픽셀을 그 주변 이웃 픽셀의 ‘평균’으로 대체
- 특징:
- 계산이 빠르지만, 모든 픽셀에 동일 가중치를 주기 때문에 엣지까지 뭉개질 수 있음
- 커널 크기(k,k)가 커질수록 블러 효과가 강해짐
(2) 가우시안 블러 : cv2.GaussianBlur(src, (k,k), sigmaX) ★제일 많이 사용

- 원리: 커널 내 픽셀에 가우시안 분포 기반의 가중치를 부여한 뒤, 가중 평균을 계산
sigmaX : X축 방향의 표준편차, 블러 강도를 조절, 그냥 0 으로 사용하면 됨 - 특징:
- 중심 픽셀에 가까울수록 더 큰 가중치를 주어, 자연스럽게 엣지를 보존
- 노이즈가 가우시안 분포를 따르는 경우 효과적
(3) 미디언 블러 : cv2.medianBlur(src, k)

- 원리: 커널 영역 픽셀의 중앙값(median) 을 결과 픽셀로 사용

특징:
- 소금–후추 노이즈(salt-and-pepper noise)에 특히 강력하며, 이상치(outlier)에 덜 민감
- Average Blur보다 엣지 보존 성능이 뛰어납니다
(4) 양방향 필터 : cv2.bilateralFilter(src, diameter, sigmaColor, sigmaSpace)

- 원리:
- 공간적으로 가까운 픽셀뿐 아니라, 색상 값 차이가 작은 픽셀끼리만 평균을 계산하도록 조합된 필터입니다.
- 파라미터
- diamater = kernel size
- sigmaColor (색상/강도 공간 표준편차)
- 정의: 픽셀 간 밝기(혹은 색상) 차이가 얼마까지 “비슷하다”고 보고 서로 섞을지를 결정.
- 값이 작을수록:
- 정말 비슷한 밝기/색상끼리만 섞임 → 엣지 보존 성능↑, 노이즈 제거↓
- 값이 클수록:
- 강도 차이가 큰 픽셀끼리도 섞임 → 더 부드러운 결과, 엣지 보존력↓
- sigmaSpace (공간/좌표 공간 표준편차)
- 정의: “얼마나 먼 픽셀까지” 영향을 주고받을 것인지를 결정.
- 값이 작을수록:
- 근처 픽셀만 고려 → 로컬하게 노이즈 제거, 세밀한 엣지 보존
- 값이 클수록:
- 더 먼 픽셀까지 가중합에 참여 → 넓은 영역에서 부드러운 블러
- 특징:
- 엣지를 거의 보존하면서도 매끄러운 블러 효과를 내지만, 연산 비용이 매우 높음
- 튜닝 가능한 파라미터가 많아 최적화가 까다로움
3. 언제 어떤 기법을 쓸까?
- 간단한 노이즈 제거 : 평균 블러 또는 가우시안 블러
- 소금–후추 노이즈 제거 : 미디언 블러
- 엣지 보존 블러 : 가우시안 블러 또는 고급으로 양방향 필터
- 속도 우선 : 평균 블러
- 품질 우선 : 가우시안 블러 → 미디언 → 양방향 필터 순
출처
OpenCV Smoothing and Blurring - PyImageSearch
In this tutorial, you will learn about smoothing and blurring with OpenCV. We will cover the following blurring operations Simple blurring (cv2.blur) Weighted Gaussian blurring (cv2.GaussianBlur) Median filtering (cv2.medianBlur) Bilateral blurring (cv2.bi
pyimagesearch.com
'PyImageSearch' 카테고리의 다른 글
| OpenCV - Thresholding(이진화) (0) | 2025.06.12 |
|---|---|
| OpenCV - Color Spaces (0) | 2025.06.12 |
| OpenCV - Morphological Operations(형태학적 연산) (0) | 2025.06.11 |
| OpenCV : 기본함수들 (0) | 2025.06.09 |
| CommandLine Arguments (2) | 2025.06.03 |