[python] OpenCV를 사용하여 이미지에서 동영상에서 노이즈 제거하기

이미지나 동영상에서 노이즈는 우리가 원하지 않는 원치 않는 부분이며, 시각적인 품질을 저하시킵니다. OpenCV는 컴퓨터 비전 작업에 최적화되어있는 라이브러리로, 이미지나 동영상에서 노이즈를 제거하는 기능을 제공합니다. 이번 블로그에서는 Python과 OpenCV를 사용하여 이미지에서 노이즈를 제거해보겠습니다.

필요한 라이브러리 설치하기

먼저, Python 환경에서 OpenCV 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 라이브러리를 설치합니다.

pip install opencv-python

이미지에서 노이즈 제거하기

이제 OpenCV를 사용하여 이미지에서 노이즈를 제거해보겠습니다. 먼저, 필요한 라이브러리를 임포트합니다.

import cv2
import numpy as np

다음으로, 이미지를 로드합니다.

image = cv2.imread('input_image.jpg')

노이즈를 제거하기 위해 이미지를 그레이스케일로 변환합니다.

gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

이제 그레이스케일 이미지에 대해 노이즈를 제거하는 함수를 사용합니다.

denoised_image = cv2.fastNlMeansDenoising(gray_image, None, 10, 7, 21)

노이즈 제거가 완료된 이미지를 저장합니다.

cv2.imwrite('denoised_image.jpg', denoised_image)

결과 확인하기

이미지에서 노이즈 제거가 완료된 결과를 확인해보겠습니다. 다음과 같은 코드를 추가하여 원본 이미지와 노이즈 제거된 이미지를 비교할 수 있습니다.

import matplotlib.pyplot as plt

plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')

plt.subplot(1, 2, 2)
plt.imshow(denoised_image, cmap='gray')
plt.title('Denoised Image')

plt.show()

위 코드를 실행하면 원본 이미지와 노이즈 제거된 이미지가 나란히 표시됩니다.

결론

이상으로 OpenCV를 사용하여 이미지에서 노이즈를 제거하는 방법에 대해 알아보았습니다. Python과 OpenCV를 사용하면 노이즈 제거는 간단하게 수행할 수 있으며, 이미지나 동영상의 품질을 향상시킬 수 있습니다. 추가적으로 다양한 노이즈 제거 알고리즘과 파라미터도 존재하므로, 필요에 따라 실험해보시기 바랍니다.

참고 자료