-
CV 이미지 전처리 -Image thresholding (ft.tesseract)머신러닝 2020. 6. 10. 01:45
1. OCR로 읽을 데이터
- 크기 30*10 인 아주 미니미한 친구..
2. 크기를 늘려주자
10배.. image.resize((image.size[0]*10,image.size[1]*10))
3. 그레이스케일로 변환
전처리 전, 대비를 확실히주기위해 그레이 스케일로 변환을 먼저 시켯당.
미세하지만, 숫자와 배경구분이 좀더 생겼다. 4. 데이터 전처리
사실 내가 처리할 이미지는 영상 캡쳐 데이터여서 전처리하는게 어렵지 않았다.
흑과 백의 대비를 최대한 뚜렷하게가 목표!!
cv에서 제공하는 Simple threshold 나는 여기서 BINARY / BINARY_INV 를 사용하기로 결정!
- 방법 1
배경은 까맣게 + 숫자는 하얗게
cv2.threshold(src, thresh, maxval, type)
#thresh : 흑/백이 전환되는 임계값
#임계값을 넘었을때 적용할 valuenp.mean(image)
#thresh 값을 평균으로 하기로 결정
thresh1 = cv2.threshold(image, 51.67, 255, cv2.THRESH_BINARY)[1]
잘 나왔지만, 경계가 너무 넓은것 같아서, thres값을 자동으로 설정해주는 Otsu’s Binarization 를 이용했다.
thresh1 = cv2.threshold(x, 51.67, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1]
훨씬 경계가 뚜렷해졌다..!
헤헤 잘 읽힌다 :) - 방법 2
배경은 하얗게 + 숫자는 까맣게
thresh1 = cv2.threshold(image, 51.67, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1]
역시 잘 읽힌다.
나는 영상을 프레임으로 쪼개서, 약 400여개의 이미지에 대해 OCR을 적용했다.
결과는 방법2 (THRESH_BINARY_INV) 이 정확도가 높다. (거의 98%정도..!)
나는 영상의 정형화된 폰트를 읽는 작업이었어서 학습을 시키면 정확도는 훨씬 훨씬 올라갈것이다.
(하지만, 난 그냥.. api를 갖다ㅆ...)다음에는 조금더 대비가 애매한 이미지에 대해 진행해봐야징 🐥
Image Thresholding — OpenCV-Python Tutorials 1 documentation
Image Thresholding Goal In this tutorial, you will learn Simple thresholding, Adaptive thresholding, Otsu’s thresholding etc. You will learn these functions : cv2.threshold, cv2.adaptiveThreshold etc. Simple Thresholding Here, the matter is straight forw
opencv-python-tutroals.readthedocs.io
'머신러닝' 카테고리의 다른 글
[ML] GBM (Gradient Boosting machine) (0) 2021.05.19 [부캠] Python 특징에 대한 개념 정리 (0) 2021.01.18 앙상블 기법 배깅 vs 부스팅 vs 스태킹 (0) 2021.01.15 [머신러닝]샘플링 기법 (0) 2020.12.07 [Pytorch] multiple forward process (0) 2020.06.12