이미지 필터링(Image Filtering)은 영상처리 분야에서 이미지에 대한 다양한 처리를 수행하는 기술 중 하나입니다. 이미지 필터링을 통해 이미지를 흐리게 만들거나, 경계선을 강조하는 등의 효과를 낼 수 있습니다. OpenCV는 이미지 필터링을 위한 다양한 기능을 제공합니다. 이번 포스트에서는 OpenCV를 활용하여 이미지를 필터링하는 방법에 대해 알아보겠습니다.
1. 평균 필터
평균 필터(Average Filter)는 이미지의 픽셀 값을 주변 픽셀 값의 평균으로 대체하는 필터링 기법입니다. 이를 통해 이미지를 흐리게 만들 수 있습니다. OpenCV에서는 cv2.blur() 함수를 이용하여 평균 필터를 적용할 수 있습니다.
import cv2
# 이미지 읽어오기
img = cv2.imread('image.jpg')
# 평균 필터 적용
ksize = (5, 5)
blur = cv2.blur(img, ksize)
# 결과 이미지 저장
cv2.imwrite('result.jpg', blur)
2. 가우시안 필터
가우시안 필터(Gaussian Filter)는 주변 픽셀 값을 고려하여 이미지를 흐리게 만드는 필터링 기법입니다. 주변 픽셀 값에 대한 가중치를 계산하여 특정 픽셀 값에 대한 가중 평균을 구합니다. 이를 통해 이미지를 부드럽게 만들 수 있습니다. OpenCV에서는 cv2.GaussianBlur() 함수를 이용하여 가우시안 필터를 적용할 수 있습니다.
import cv2
# 이미지 읽어오기
img = cv2.imread('image.jpg')
# 가우시안 필터 적용
ksize = (5, 5)
sigmaX = 0
blur = cv2.GaussianBlur(img, ksize, sigmaX)
# 결과 이미지 저장
cv2.imwrite('result.jpg', blur)
3. 미디언 필터
미디언 필터(Median Filter)는 주변 픽셀 값 중 중간값(median)을 사용하여 이미지를 필터링하는 방법입니다. 이를 통해 이미지에서 Salt-and-Pepper 노이즈와 같은 이상점(outlier)을 제거할 수 있습니다. OpenCV에서는 cv2.medianBlur() 함수를 이용하여 미디언 필터를 적용할 수 있습니다.
import cv2
# 이미지 읽어오기
img = cv2.imread('image.jpg')
# 미디언 필터 적용
ksize = 5
blur = cv2.medianBlur(img, ksize)
# 결과 이미지 저장
cv2.imwrite('result.jpg', blur)
4. 바이레터럴 필터
바이레터럴 필터(Bilateral Filter)는 이미지를 흐리게 만들면서도 경계선을 유지할 수 있는 필터링 기법입니다. 가우시안 필터와는 달리, 주변 픽셀 값에 대한 가중치를 거리(weight distance)와 밝기 값(brightness difference) 모두를 고려하여 계산합니다. OpenCV에서는 cv2.bilateralFilter() 함수를 이용하여 바이레터럴 필터를 적용할 수 있습니다.
import cv2
# 이미지 읽어오기
img = cv2.imread('image.jpg')
# 바이레터럴 필터 적용
diameter = 5
sigmaColor = 75
sigmaSpace = 75
blur = cv2.bilateralFilter(img, diameter, sigmaColor, sigmaSpace)
# 결과 이미지 저장
cv2.imwrite('result.jpg', blur)
5. Laplacian 필터
Laplacian 필터는 이미지의 경계선을 검출하는 필터링 기법입니다. 이를 통해 이미지의 윤곽선을 강조할 수 있습니다. OpenCV에서는 cv2.Laplacian() 함수를 이용하여 Laplacian 필터를 적용할 수 있습니다.
import cv2
# 이미지 읽어오기
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# Laplacian 필터 적용
ddepth = cv2.CV_64F
ksize = 3
laplacian = cv2.Laplacian(img, ddepth, ksize)
# 결과 이미지 저장
cv2.imwrite('result.jpg', laplacian)
마무리
이번 포스트에서는 OpenCV를 활용하여 이미지 필터링을 하는 다양한 방법에 대해 알아보았습니다. 각 필터링 기법의 특징과 사용법을 살펴보았으며, 코드 예시도 제공하였습니다. 이를 통해 OpenCV를 이용한 이미지 필터링에 대한 이해도를 높일 수 있을 것입니다.
'OpenCV' 카테고리의 다른 글
이동평균 필터 예제코드(C++) (0) | 2023.02.22 |
---|---|
OpenCV를 이용한 동영상 처리 방법 (0) | 2023.02.21 |
OpenCV를 활용한 얼굴 인식 (0) | 2023.02.19 |
OpenCV를 이용한 객체 검출 방법(Haar Cascade) (0) | 2023.02.19 |
OpenCV로 이미지 합성해보기 (0) | 2023.02.19 |