개발 공부
8강 본문
#thresholding 임계값을 주어 이미지를 특징만 뽑아내 봅니다. 동전을 구분할 때 사용할 수 있습니다.
#임계값이란 범위, 한도, 경계 등으로 이해될 수 있다. 변화가 나타나기 시작하는 시점을 말한다.
#이진화 처리는 간단하지만, 쉽지 않은 문제를 가지고 있다. 이진화란 영상을 흑/백으로 분류하여 처리하는 것을 말합니다. 이때 기준이 되는 임계값을 어떻게 결정할 것인지가 중요한 문제가 됩니다. 임계값보다 크면 백, 작으면 흑이 됩니다. 기본 임계처리는 사용자가 고정된 임계값을 결정하고 그 결과를 보여주는 단순한 형태입니다.
# Import the necessary packages
import numpy as np
import argparse
import cv2
#동전 이미지로 해보자. cv2.cvtColor는 부른 이미지를 흑백으로 만들어 준다.
#고주파영역을 제거함으로써 노이즈를 제거하거나 경계선을 흐리게 하기 위해 표준정규 분포(가우시안함수)를 사용합니다. 전체적으로 밀도가 동일한 노이즈, 백색노이즈를 제거하는 데 가장 효과적이기 때문입니다
#cv2.GaussianBlur(image, (5, 5), 0) (5,5) 필터 사이즈이며 반드시 홀수로 적습니다. 0은 Gaussian kernel standard deviation in X direction??????
image = cv2.imread('coin.jpg',cv2.IMREAD_UNCHANGED)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow("Image", image)
# cv2.threshold(입력 이미지, 임계값, 임계값을 넘을 시 지정할 값, cv2.THRESH_BINARY_INV)
# cv2.THRESH_BINARY => 흑백으로 출력
# cv2.THRESH_BINARY_INV => 흑백 반전
#앞의 T눈 봔한값(return값)이다.
(T, threshInv) = cv2.threshold(blurred, 100, 255, cv2.THRESH_BINARY_INV)
cv2.imshow("Threshold Binary Inverse", threshInv)
# 흑백으로 표현
(T, thresh) = cv2.threshold(blurred, 155, 255, cv2.THRESH_BINARY)
cv2.imshow("Threshold Binary", thresh)
cv2.waitKey(0)