민자의 지식창고

OpenCV Thresholding 본문

개발노트/OpenCV

OpenCV Thresholding

전지적민자시점 2020. 7. 24. 14:33

Thresholding은 하나의 이미지 전역으로 적용될 하나의 기준을 이용해 기준 이상 일때 고정값으로 할당하거나, 기준 이하 일때, 다른 고정된 값으로 할당 하는 것입니다.

 

Global Thresholding: OpenCV에서 하나의 이미지에 전역으로 적용 될 하나의 Thresholding 기능을 제공하는 함수가 있습니다.

 

cv2.threshold(img, min_value , max_value, flag)

  • img : Grayscale 이미지
  • min_value : 픽셀 기준 값
  • max_value : 픽셀 기준 값보다 클 때 적용되는 최대값
  • flag : 적용 옵션
    • cv2.THRESH_BINARY : 픽셀값 > min_value  max_value, 작으면 0
    • cv2.THRESH_BIANRY_INV : 픽셀값 > min_value  0, 작으면 max_value 
    • cv2.THRESH_TRUNC : 픽셀값 > min_value min_value , 작으면 픽셀값
    • cv2.THRESH_TOZERO : 픽셀값 > max_value 픽셀값 , 작으면 0
    • cv2.THRESH_TOZERO_INV : 픽셀값 > max_value 0 , 작으면 픽셀 

원본 이미지와 검/흰색 대비 명확히 구분, TRUNC 원본과 비슷하게, TOZERO는 검정색에 가까운 그라데이션 부분(회색)

import numpy as np
import cv2

img = cv2.imread('D:/2020/test1.jpg', cv2.IMREAD_GRAYSCALE)
ret, thr1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret, thr2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
ret, thr3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
ret, thr4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
ret, thr5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)

cv2.imshow('original', img)
cv2.imshow('binary', thr1)
cv2.imshow('binary_inv', thr2)
cv2.imshow('trunc', thr3)
cv2.imshow('tozero', thr4)
cv2.imshow('tozero_inv', thr5)

cv2.waitKey(0)
cv2.destroyAllWindows()


결과 화면

728x90

'개발노트 > OpenCV' 카테고리의 다른 글

Otsu' Binarization  (0) 2020.07.24
Adative Thresholding  (0) 2020.07.24
Opencv 색 바꾸기  (0) 2020.07.23
OpenCV 이미지 비트 연산  (0) 2020.07.23
openCV로 이미지 확인  (1) 2020.07.23