상세 컨텐츠

본문 제목

영상의 이진화(Binarization)

영상처리/OpenCV Python

by cepiloth 2021. 5. 25. 14:58

본문

728x90
반응형

영상의 픽셀 값을 0 또는 255(1)로 만드는 연산

배경(background) vs 객체(object)
관심영역 vs 비관심 영역

 

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

T 값보다 작으면 0 크면 255로 만드는 연산

#OpenCV 임계값 함수

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

 

예제 1) 임계값을 설정하는 파이썬 코드

import sys
import numpy as np
import cv2


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

if src is None:
    print('Image load failed!')
    sys.exit()

threshold = 100
_, dst1 = cv2.threshold(src, threshold , 255, cv2.THRESH_BINARY)
threshold = 210
_, dst2 = cv2.threshold(src, threshold , 255, cv2.THRESH_BINARY)

cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()
cv2.destroyAllWindows()

 

예제 2) 트래바를 이용하여 임계값을 실시간으로 처리하는 코드

import sys
import numpy as np
import cv2


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

if src is None:
    print('Image load failed!')
    sys.exit()


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', 128)

cv2.waitKey()
cv2.destroyAllWindows()

 

728x90
반응형

관련글 더보기

댓글 영역