이 프로그램에서는 OpenCV를 사용하여 이미지에 역 0 임계값(Inverse Zero Thresholding) 처리를 수행하는 방법을 알아봅니다.
임계값 처리(Thresholding)란 각 픽셀의 값을 기준값(threshold)과 비교하여 변경하는 과정입니다. 픽셀 값이 임계값보다 작으면 특정 값으로 설정하고, 크면 다른 값으로 설정합니다. 역 0 임계값 처리에서는 임계값보다 밝기 값이 큰 픽셀들이 모두 0으로 설정됩니다.
원본 이미지

알고리즘
1단계: cv2 모듈을 임포트한다.
2단계: 임계값(threshold)과 최대값(max_val)을 정의한다.
3단계: cv2.threshold 함수에 이 매개변수들을 전달하고, 원하는 임계값 처리 유형을 지정한다.
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_TOZERO_INV)
cv2.imshow('InverseZeroThresholding', image)
코드 설명
cv2.threshold() 함수는 네 가지 인자를 받습니다. 첫 번째는 대상 이미지, 두 번째는 임계값(여기서는 120), 세 번째는 최대값(255), 마지막은 임계값 처리 방식입니다. cv2.THRESH_TOZERO_INV 옵션을 사용하면 임계값보다 큰 픽셀은 0이 되고, 임계값 이하의 픽셀은 원래 값을 그대로 유지합니다. 함수는 두 개의 값을 반환하는데, 첫 번째 반환값(ret)은 사용된 임계값이며, 두 번째 반환값이 실제로 처리된 결과 이미지입니다.
실행 결과

결과 이미지를 보면 임계값(120)보다 밝았던 영역이 검정색(0)으로 바뀌고, 어두운 영역만 원래대로 남아 있는 것을 확인할 수 있습니다. 이 기법은 배경을 제거하거나 특정 밝기 범위의 객체만 추출하고 싶을 때 유용하게 활용됩니다.