[파이썬] scipy에서 이미지 필터링

이미지 처리는 많은 컴퓨터 비전 및 그래픽 애플리케이션에서 중요한 부분입니다. 이미지 필터링은 이미지의 특정 부분을 강조하거나 잡음을 제거하는 등의 작업을 수행하는 데 사용됩니다. 이번 블로그 포스트에서는 Python의 scipy 라이브러리를 사용하여 이미지 필터링을 수행하는 방법을 알아보겠습니다.

scipy란?

SciPy는 과학 및 엔지니어링을 위한 오픈 소스 Python 라이브러리입니다. SciPy는 NumPy, Matplotlib 및 Pandas와 함께 사용되어 과학 및 엔지니어링 분야에서 다양한 작업을 수행할 수 있는 환경을 제공합니다.

이미지 가져오기

먼저, scipy를 사용하여 이미지를 가져와야 합니다. 이미지 파일을 읽기 위해 scipy.ndimage 모듈의 imread() 함수를 사용할 수 있습니다. 다음은 예시입니다:

from scipy import ndimage

# 이미지 파일 경로 지정
image_path = "path/to/image.jpg"

# 이미지 읽어오기
image = ndimage.imread(image_path)

이미지 필터링 적용하기

다음으로, 이미지에 필터링을 적용하는 방법에 대해 알아보겠습니다. scipy.ndimage 모듈을 사용하여 다양한 필터를 적용할 수 있습니다.

가우시안 필터(Gaussian Filter)

가우시안 필터는 이미지의 잡음을 제거하는 데 사용되며, 이미지를 흐리게 만듭니다. scipy.ndimagegaussian_filter() 함수를 사용하여 가우시안 필터를 적용할 수 있습니다. 다음은 예시입니다:

import numpy as np
from scipy import ndimage

# 가우시안 필터 적용
blurred_image = ndimage.gaussian_filter(image, sigma=2)

위 코드에서 sigma 매개변수는 필터의 표준 편차를 조정하는 데 사용됩니다.

소벨 필터(Sobel Filter)

소벨 필터는 이미지의 경계를 감지하는 데 사용됩니다. scipy.ndimagesobel() 함수를 사용하여 소벨 필터를 적용할 수 있습니다. 다음은 예시입니다:

from scipy import ndimage

# 소벨 필터 적용
edge_image = ndimage.sobel(image)

위 코드는 수평 및 수직 경계를 감지하는데 사용되는 소벨 필터를 적용합니다.

미디안 필터(Median Filter)

미디안 필터는 잡음 제거에 사용되는 필터 중 하나입니다. scipy.ndimagemedian_filter() 함수를 사용하여 미디안 필터를 적용할 수 있습니다. 다음은 예시입니다:

from scipy import ndimage

# 미디안 필터 적용
denoised_image = ndimage.median_filter(image, size=3)

위 코드에서 size 매개변수는 필터의 크기를 지정합니다.

결과 이미지 저장하기

마지막으로, 처리된 이미지를 저장하는 방법을 알아보겠습니다. scipy.ndimage 모듈의 imsave() 함수를 사용할 수 있습니다. 다음은 예시입니다:

from scipy import ndimage

# 이미지 저장
output_path = "path/to/output_image.jpg"
ndimage.imsave(output_path, filtered_image)

위 코드에서 filtered_image는 필터링된 이미지를 나타내는 변수이며, output_path는 저장할 이미지 파일의 경로를 나타냅니다.

마치며

이 블로그 포스트에서는 Python의 scipy 라이브러리를 사용하여 이미지 필터링을 수행하는 방법을 알아보았습니다. 다양한 필터를 사용하여 이미지를 처리하고 사용자의 요구에 맞게 수정할 수 있습니다. scipy의 다른 기능을 사용하여 이미지 처리에 대한 더 많은 작업을 수행할 수 있습니다.

참고 자료: