이것도 알아야 하네?
[Python] OpenCV 예제 따라하기—4. 이미지 필터링 기법 (평균 블러, 가우시안 블러, 미디언 블러, Bilateral) 본문
프로그래밍/이미지 처리
[Python] OpenCV 예제 따라하기—4. 이미지 필터링 기법 (평균 블러, 가우시안 블러, 미디언 블러, Bilateral)
아직 갈 길이 먼 사람 2025. 4. 6. 16:31728x90
OpenCV 예제 따라하기 시리즈
OpenCV에서는 다양한 이미지 필터링 기법을 제공하며, 노이즈 제거 🧹 또는 선명도 강화 🔍 등의 작업에 효과적으로 사용됩니다. 아래는 가장 많이 쓰이는 필터들의 설명입니다.
1. 평균 블러 (Box Blur) 📦
cv2.blur() 함수를 이용해 주변 픽셀들의 평균값으로 대체하는 방식입니다. 가장 단순한 블러링 기법으로, 이미지 전체를 부드럽게 만들어줍니다.
cv2.blur(src, ksize) |
- src (Required): 필터링할 원본 이미지
- ksize (Required): 커널의 크기 (예: (5,5))
2. 가우시안 블러 (Gaussian Blur) 🌫
cv2.GaussianBlur() 함수는 가우시안 커널을 사용하여 블러링을 수행합니다. 중심 픽셀에 가까울수록 더 많은 가중치를 부여하여 자연스러운 흐림 효과를 만듭니다.
cv2.GaussianBlur(src, ksize, sigmaX) |
3. 미디언 블러 (Median Blur) 🪞
cv2.medianBlur() 함수는 커널 내의 중앙값으로 픽셀을 대체하여, 소금&후추 노이즈(Salt-and-Pepper noise) 제거에 탁월합니다.
cv2.medianBlur(src, ksize) |
4. Bilateral 필터 🧼🎯
cv2.bilateralFilter() 함수는 경계선을 보존하면서 블러링하는 고급 기법입니다. 색상차와 거리차를 동시에 고려하여 선명한 엣지를 유지합니다.
cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace) |
5. 샤프닝 (Sharpening) ✒️
샤프닝은 커널 연산을 통해 이미지의 경계를 강조합니다. 아래처럼 커널을 직접 정의하여 적용합니다.
import cv2
import numpy as np
img = cv2.imread('sample.jpg')
kernel = np.array([[0, -1, 0],
[-1, 5,-1],
[0, -1, 0]])
sharpened = cv2.filter2D(img, -1, kernel)
위 코드의 커널은 중앙 픽셀을 강조하고 주변 픽셀을 억제하는 방식으로 샤프닝을 구현합니다.
6. 실습 예시 🔧
img = cv2.imread('sample.jpg')
blur = cv2.blur(img, (5,5))
gaussian = cv2.GaussianBlur(img, (5,5), 0)
median = cv2.medianBlur(img, 5)
bilateral = cv2.bilateralFilter(img, 9, 75, 75)
필터에 따라 결과 이미지의 경계선 보존 정도와 부드러움이 다르게 나타납니다. 여러 필터를 비교해보면서 적절한 방법을 선택하는 것이 중요합니다 💡
728x90
'프로그래밍 > 이미지 처리' 카테고리의 다른 글
[Python] OpenCV 예제 따라하기—3. 이미지 크기 조정 (Resizing) (0) | 2025.03.27 |
---|---|
[Python] OpenCV 예제 따라하기—2. 흑백 이미지로 변환 (0) | 2021.11.12 |
[Python] OpenCV 예제 따라하기—1. 이미지 합성 (0) | 2021.11.07 |
[Python] OpenCV 예제 따라하기—0. 이미지 읽고 쓰기 (0) | 2021.10.31 |
Comments