이미지 처리에서 임계 처리는 이미지를 이진 이미지로 변환하는 과정입니다. 적응형 임계 처리(Adaptive Thresholding)는 각 픽셀에 대해 주변 픽셀의 밝기에 따라 임계값을 결정하는 방법입니다. 이는 여러 가지 조명 조건에서도 적용할 수 있는 강력한 기술입니다.
Python에서 OpenCV를 사용하여 적응형 임계 처리를 수행하는 방법에 대해 알아보겠습니다.
필수 패키지 설치
OpenCV-Python을 설치하기 위해 아래 명령어를 사용합니다:
pip install opencv-python
적응형 임계 처리 수행하기
다음은 OpenCV-Python을 사용하여 적응형 임계 처리를 수행하는 예제 코드입니다:
import cv2
# 이미지 불러오기
image = cv2.imread('image.jpg', 0)
# 적응형 임계 처리 적용
threshold = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
# 결과 출력
cv2.imshow('Adaptive Threshold', threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
위의 코드에서 image.jpg
는 처리할 이미지 파일의 경로입니다. cv2.imread()
함수를 사용하여 이미지를 불러온 후, cv2.adaptiveThreshold()
함수를 사용하여 적응형 임계 처리를 수행합니다. 이 함수는 다음과 같은 인자를 받습니다:
src
: 입력 이미지maxValue
: 픽셀이 임계값을 넘었을 때 지정할 값adaptiveMethod
: 적응형 임계 처리 방법 (cv2.ADAPTIVE_THRESH_MEAN_C 또는 cv2.ADAPTIVE_THRESH_GAUSSIAN_C)thresholdType
: 임계 처리 방법 (cv2.THRESH_BINARY 또는 cv2.THRESH_BINARY_INV)blockSize
: 임계 값을 결정할 때 사용할 픽셀 주변 영역의 크기C
: 평균이나 가중평균에서 차감할 상수
결과 이미지를 출력하기 위해 cv2.imshow()
함수를 사용합니다. cv2.waitKey()
함수는 키보드 입력을 기다리는 역할을 하며, cv2.destroyAllWindows()
함수는 모든 창을 닫습니다.
실행 결과 확인
위의 예제 코드를 실행하면 Adaptive Threshold
라는 창에서 적용된 적응형 임계 처리를 확인할 수 있습니다.
참고: 적응형 임계 처리를 수행할 때, 이미지의 색상 채널 수에 따라 다른 함수를 사용해야 합니다. 예를 들어, 3채널(BGR) 이미지에 대해서는 cv2.adaptiveThreshold()
함수의 인자로 cv2.THRESH_BINARY
또는 cv2.THRESH_BINARY_INV
를 사용하고, 1채널(그레이스케일) 이미지에 대해서는 cv2.ADAPTIVE_THRESH_MEAN_C
또는 cv2.ADAPTIVE_THRESH_GAUSSIAN_C
를 사용해야 합니다.
적응형 임계 처리는 다양한 이미지 처리 작업에 유용한 기술입니다. OpenCV-Python을 사용하면 간단하게 적용할 수 있으므로, 이미지 처리 프로젝트를 진행할 때 유용한 도구로 활용할 수 있습니다.