Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

OpenCV로 이미지 역 이진 임계값 처리(THRESH_BINARY_INV) 구현하기

이 튜토리얼에서는 OpenCV를 사용하여 이미지에 역 이진 임계값(Inverse Binary Thresholding)을 적용하는 방법을 알아봅니다.

임계값 처리란?

임계값 처리(Thresholding)는 이미지의 각 픽셀 값을 기준값(threshold)과 비교하여 새로운 값으로 변환하는 과정입니다. 픽셀 값이 임계값보다 작으면 하나의 값으로, 크면 다른 값으로 대체됩니다.

역 이진 임계값 방식에서는 동작이 반대로 적용됩니다.

  • 픽셀 값이 임계값보다 작으면 → 최대값(255, 흰색)으로 설정
  • 픽셀 값이 임계값보다 크면 → 0(검은색)으로 설정

일반적인 이진 임계값 처리와 정반대의 결과가 나오기 때문에 '역(inverse)'이라는 이름이 붙었습니다.

처리 알고리즘

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_BINARY_INV)
cv2.imshow('InverseBinaryThresholding', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

실행 결과

위 코드를 실행하면 밝은 영역은 검게, 어두운 영역은 흰색으로 반전된 이진 이미지가 생성됩니다.

OpenCV로 이미지 역 이진 임계값 처리(THRESH_BINARY_INV) 구현하기

코드 설명

cv2.threshold() 함수는 두 개의 값을 반환합니다. 첫 번째 반환값인 ret은 실제로 적용된 임계값 자체를 의미하며, 두 번째 반환값은 처리된 결과 이미지입니다.

여기서 사용된 cv2.THRESH_BINARY_INV 플래그가 역 이진 임계값 처리를 수행합니다. 즉, 임계값(120)보다 작은 값을 가진 모든 픽셀은 최대값인 255(흰색)로 대체되고, 그보다 큰 픽셀은 0(검은색)으로 변경됩니다.

마지막으로 cv2.waitKey(0)cv2.destroyAllWindows()를 추가하면 창이 바로 닫히지 않고 사용자가 키를 누를 때까지 결과를 확인할 수 있습니다.