[파이썬] 이미지 잡음 제거 기법

이미지 잡음은 디지털 이미지 처리에서 흔히 발생하는 문제입니다. 잡음은 이미지의 픽셀에 무작위한 변동을 추가하여 발생하는데, 이로 인해 이미지의 선명도와 품질이 저하될 수 있습니다. 이미지 잡음을 제거하는 기법은 이미지 처리 작업에서 중요한 역할을 합니다.

Python은 이미지 처리에 많이 사용되는 인기있는 프로그래밍 언어입니다. Python을 사용하여 이미지 잡음을 제거하는 다양한 기법을 구현할 수 있습니다. 이번 블로그 포스트에서는 Python에서 이미지 잡음 제거를 위해 자주 사용되는 두 가지 기법에 대해 알아보겠습니다.

1. 평균 필터 (Mean Filter)

평균 필터는 이미지의 잡음을 제거하기 위해 가장 단순한 방법 중 하나입니다. 이 필터는 각 픽셀의 주변 픽셀 값들의 평균을 계산하여 잡음을 완화하는 역할을 합니다.

아래는 Python에서 평균 필터를 구현한 예제 코드입니다:

import cv2
import numpy as np

def mean_filter(image, kernel_size):
    # 입력 이미지의 크기를 가져옴
    rows, cols = image.shape[:2]
    
    # 평균 필터 커널 생성
    kernel = np.ones((kernel_size, kernel_size), np.float32) / (kernel_size * kernel_size)
    
    # 컨볼루션 연산을 통해 이미지 필터링
    filtered_image = cv2.filter2D(image, -1, kernel)
    
    return filtered_image

# 이미지 불러오기
image = cv2.imread("noisy_image.jpg")

# 평균 필터링 적용
filtered_image = mean_filter(image, 5)

# 결과 이미지 출력
cv2.imshow("Filtered Image", filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 mean_filter 함수는 평균 필터를 구현합니다. 입력으로 이미지와 커널 크기를 받아와서, cv2.filter2D 함수를 사용하여 평균 필터링을 수행하여 필터링된 이미지를 반환합니다.

2. 중간값 필터 (Median Filter)

중간값 필터는 이미지에 발생한 잡음을 제거하는 데 효과적인 기법 중 하나입니다. 이 필터는 각 픽셀의 주변 픽셀 값들을 정렬하여 중간값을 계산하며, 이로써 잡음 픽셀을 잘 제거하는 특징을 가지고 있습니다.

아래는 Python에서 중간값 필터를 구현한 예제 코드입니다:

import cv2
import numpy as np

def median_filter(image, kernel_size):
    # 입력 이미지의 크기를 가져옴
    rows, cols = image.shape[:2]
    
    # 중간값 필터링 수행
    filtered_image = cv2.medianBlur(image, kernel_size)
    
    return filtered_image

# 이미지 불러오기
image = cv2.imread("noisy_image.jpg")

# 중간값 필터링 적용
filtered_image = median_filter(image, 5)

# 결과 이미지 출력
cv2.imshow("Filtered Image", filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 median_filter 함수는 중간값 필터를 구현합니다. 입력으로 이미지와 커널 크기를 받아와서, cv2.medianBlur 함수를 사용하여 중간값 필터링을 수행하여 필터링된 이미지를 반환합니다.

마무리

Python을 사용하여 이미지 잡음을 제거하는 기법을 구현하는 방법에 대해 알아보았습니다. 평균 필터와 중간값 필터는 각각 잡음 제거에 특화된 방법이며, 이미지 품질을 향상시킬 수 있습니다. 다양한 이미지 잡음 제거 기법들을 파악하고 Python을 활용하여 실제 이미지 처리에 적용해 보세요.