[ch07] 이진 영상 처리 - 영상의 이진화

빨주노·2021년 8월 25일
0

영상의 이진화(Binarization)란?

  • 영상의 픽셀 값을 0 또는 255(1)로 만드는 연산
    • 배경(background) vs. 객체(object)
    • 관심 영역 vs. 비관심 영역

그레이스케일 영상의 이진화

T : 임계값, 문턱치, threshold

T값에 따라 이진화 결과가 달라진다.

임계값 함수

cv2.threshold(src, thresh, maxval, type, dst=None) -> retval, dst
  • src : 입력 영상. 다채널, 8비트 또는 32비트 실수형.
  • thresh : 사용자 지정 임계값
  • maxval : cv2.THRESH_BINARY 또는 cv2.THRESH_BINARY_INV 방법 사용 시 최댓값. 보통 255로 지정.
  • type : cv2.THRESH_로 시작하는 플래그. 임계값 함수 동작 지정 또는 자동 임계값 결정 방법 지정.
  • retval : 사용된 임계값 (threshold)
  • dst : 출력 영상. src와 동일 크기, 동일 타입, 같은 채널 수

cv2.threshold() 함수 동작 타입

주로 cv2.THRESH_BINARY, cv2.THRESH_BINARY_INV를 사용한다.

영상의 이진화 예제

src = cv2.imread('cells.png', cv2.IMREAD_GRAYSCALE)
_, dst1 = cv2.threshold(src, 100, 255, cv2.THRESH_BINARY)
_, dst2 = cv2.threshold(src, 210, 255, cv2.THRESH_BINARY)

트랙바를 이용한 영상의 이진화 예제

src = cv2.imread('rice.png', cv2.IMREAD_GRAYSCALE)

def on_threshold(pos):
    _, dst = cv2.threshold(src, pos, 255, cv2.THRESH_BINARY)
    cv2.imshow('dst', dst)

cv2.imshow('src', src)
cv2.namedWindow('dst')
cv2.createTrackbar('Threshold', 'dst', 0, 255, on_threshold)
cv2.setTrackbarPos('Threshold', 'dst', 255)

profile
딥 하게 딥러닝 하는중

0개의 댓글