IT/영상처리

[OpenCV] 이미지 이진화(Binarization)

chn1002 2022. 5. 17. 08:21

[OpenCV] 이미지 이진화(Binarization)

OpenCV 에서는 이미지의 픽셀값을 0 또는 255로 만드는 연상이다. 원하는 피사체의 모양을 좀 더 정확히 판단하기 위해 이진화를 진행하며, 이진화를 통해 배경과 물체를 구분할 수 있다. 일잕거으로 값이 높거나 낮은 픽셀은 검은색 또는 희색의 값으로 변경한다. 

import cv2

def binaryDef(imgPath):
	src = cv2.imread(imgPath, cv2.IMREAD_COLOR)
    
	gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
	ret, dst = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY)

	cv2.imshow("binarySample", dst)
	return ret

이진화 함수: cv2.threshold(src, threshold, maxval, type_flag, dst=None)->retval,dst

  • 입력 이미지: src
  • 임곗값 형식: type(cv2.THRESH_BINARY)
  • 임곗값: thresh
  • 최대값: maxval
  • return
    • 임곗값: retval
    • 결과 이미지: dst

 

속성의미

속성 의미
cv2.THRESH_BINARY dst = (src > thresh) ? maxval : 0
cv2.THRESH_BINARY_INV dst = (src > thresh) ? 0 : maxval
cv2.THRESH_TRUNC dst = (src > thresh) ? thresh : src
cv2.THRESH_TOZERO dst = (src > thresh) ? src : 0
cv2.THRESH_TOZERO_INV dst = (src > thresh) ? 0 : src
cv2.THRESH_MASK 검은색 이미지로 변경
cv2.THRESH_OTSU 오츠 알고리즘 적용
cv2.THRESH_TRIANGLE 삼각형(Triangle) 알고리즘 적용

 

결과