이 글에서는 OpenCV를 사용하여 이미지에 임계값 자르기(Truncate Thresholding)를 적용하는 방법을 알아봅니다. 임계값 처리(Thresholding)란 이미지의 각 픽셀 값을 미리 정한 기준값(임계값)과 비교하여 새로운 값으로 변환하는 과정입니다.
픽셀 값이 임계값보다 작으면 특정 값이 부여되고, 임계값보다 크면 다른 값이 부여됩니다. 그중 임계값 자르기 방식에서는 임계값보다 큰 픽셀 값들이 모두 임계값으로 잘려서(감소하여) 설정되며, 나머지 픽셀들은 원래 값을 그대로 유지합니다.
원본 이미지

처리 알고리즘
Step 1: cv2 모듈을 가져옵니다.
Step 2: 임계값(threshold_value)과 최대값(max_val)을 정의합니다.
Step 3: cv2.threshold 함수에 이 매개변수들을 전달하고, 원하는 임계값 처리 유형을 지정합니다.
Step 4: 처리된 결과 이미지를 화면에 표시합니다.
예제 코드
import cv2
image = cv2.imread('testimage.jpg')
threshold_value = 120
max_val = 255
ret, image = cv2.threshold(image, threshold_value, max_val, cv2.THRESH_TRUNC)
cv2.imshow('TruncateThresholding', image)
코드 설명
cv2.imread(): 이미지 파일을 불러옵니다.threshold_value: 기준이 되는 임계값으로, 여기서는 120으로 설정했습니다.max_val: 임계값 처리 시 사용할 최대값으로, 일반적으로 255를 사용합니다.cv2.THRESH_TRUNC: 임계값보다 큰 픽셀은 임계값으로 잘라내고, 작거나 같은 픽셀은 원래 값을 유지하도록 지정하는 옵션입니다.
참고로 실제 실행 환경에서는 cv2.imshow() 호출 후 cv2.waitKey(0)와 cv2.destroyAllWindows()를 함께 사용해야 창이 정상적으로 표시되고 종료됩니다.
실행 결과

결과 이미지를 보면 밝기가 120보다 높았던 영역들이 모두 120으로 잘려 균일하게 어두워진 것을 확인할 수 있으며, 이를 통해 이미지의 밝은 영역을 효과적으로 제어할 수 있습니다.