OpenCV 강좌, Gaussian Blur, Median Blur의 차이와 용도

영상 처리 분야에서 블러(blur)는 중요한 역할을 합니다. 이미지의 노이즈를 줄이고, 부드럽고 자연스러운 효과를 생성하기 위해 다양한 블러링 기법이 사용됩니다. OpenCV는 이러한 기법을 지원하는 다양한 함수와 도구들을 제공합니다. 본 강좌에서는 Gaussian Blur와 Median Blur의 차이점, 각각의 용도, 그리고 이들을 사용하는 방법에 대해 자세히 알아보겠습니다.

부드럽게 만들기: 블러링의 기본 개념

블러링(Blur) 기법은 이미지의 해상도를 줄이지 않고, 필터링을 통해 노이즈를 제거하거나 스타일을 변경하는 데 사용됩니다. 이 과정에서 픽셀 값이 주변 픽셀들과 평균화 되어 이미지가 부드러워집니다. 블러는 다음과 같은 주요 목적을 수행할 수 있습니다:

  • 노이즈 제거: 이미지의 작은 노이즈를 감소시킴
  • 윤곽선 부드럽게 처리: 경계가 날카로운 이미지에서 부드러운 전환을 생성
  • 우선순위 감소: 따라서 많은 경우에 사용자의 시선을 분산시키는 효과

Gaussian Blur

Gaussian Blur는 이미지의 픽셀값을 가우시안 함수에 기반하여 필터링하는 기법입니다. 가우시안 함수는 시간 및 공간의 연속적인 변화를 설명하는 통계학적 함수로, 이미지의 가장자리를 부드럽게 하거나 노이즈를 제거하는 데 효과적입니다.

가우시안 함수

가우시안 함수는 다음과 같은 수식으로 정의됩니다:

    G(x, y) = (1 / (2πσ²)) * e^(-(x² + y²) / (2σ²))
    

여기서 σ는 표준편차로, 필터의 ‘부드러움’을 결정합니다. σ 값이 클 수록 블러가 강해집니다. 이 함수는 공간 좌표 (x, y)에 따라 픽셀의 가중치를 결정하여 이미지의 각 픽셀을 보간합니다.

OpenCV에서의 Gaussian Blur 적용

OpenCV에서는 cv2.GaussianBlur() 함수를 사용하여 Gaussian Blur를 쉽게 적용할 수 있습니다. 아래는 Python을 사용한 예제 코드입니다.

    import cv2
    import numpy as np

    # 이미지 읽기
    image = cv2.imread('image.jpg')

    # Gaussian Blur 적용
    blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

    # 결과 출력
    cv2.imshow('Original Image', image)
    cv2.imshow('Gaussian Blurred Image', blurred_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

Median Blur

Median Blur는 이미지의 각 픽셀을 주변 픽셀의 중간 값으로 대체하는 블러링 기법입니다. 이는 주로 소금과 후추 노이즈(salt and pepper noise)와 같은특정 노이즈 제거에 효과적입니다.

Median Filter의 원리

Median Filter는 각 픽셀을 계산할 때, 그 주변 픽셀의 값을 정렬한 후 중간값을 선택하여 대체합니다. 이 방식은 극단적인 값의 영향을 줄이는 데 유리합니다.

OpenCV에서의 Median Blur 적용

OpenCV에서는 cv2.medianBlur() 함수를 사용하여 Median Blur를 적용할 수 있습니다. 아래는 Python을 사용한 예제 코드입니다.

    import cv2
    import numpy as np

    # 이미지 읽기
    image = cv2.imread('image_with_salt_and_pepper_noise.jpg')

    # Median Blur 적용
    median_blurred_image = cv2.medianBlur(image, 5)

    # 결과 출력
    cv2.imshow('Original Image', image)
    cv2.imshow('Median Blurred Image', median_blurred_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

Gaussian Blur와 Median Blur의 차이점

Gaussian Blur와 Median Blur는 각각의 장단점과 특성을 고려했을 때, 다음과 같은 차이가 있습니다:

  • 결과의 부드러움: Gaussian Blur는 부드럽고 연속적인 결과를 제공합니다. 반면, Median Blur는 강한 노이즈 제거 능력을 가진 결과로, 특히 소금과 후추 노이즈에 효과적입니다.
  • 계산 복잡성: Gaussian Blur는 수학적인 가우시안 함수를 기반으로 하여 계산이 복잡할 수 있지만, Median Blur는 단순히 중간값을 찾는 방식으로 구현이 비교적 간단합니다.
  • 적용 분야: Gaussian Blur는 이미지의 자연스러운 흐림과 아웃포커스 효과에 적합하며, Median Blur는 주로 노이즈 제거 및 이미지의 경계 검출 등에 사용됩니다.

결론

OpenCV는 다양한 이미지 처리 기법을 제공하여 개발자와 연구자가 필요에 따라 효과적인 방법을 선택할 수 있도록 합니다. Gaussian Blur와 Median Blur는 모두 이미지에서 노이즈를 줄이고 부드럽게 만들기 위한 강력한 도구입니다. 각 기술의 차이점을 이해하고 적절한 방법을 선택함으로써, 여러분은 더욱 효과적인 이미지 처리를 할 수 있습니다.

참고 자료