Emgucv , Tesseract 를 이용해 C# 으로 자동차 번호 인식 프로그램을 개발해 보았다.
OCR 공부할겸 해보았는데 번호판을 찾는 과정을 어떻게 하느냐가 가장 큰 관건이다.
번호판을 찾기위한 전처리 과정을 해볼수 있게 개발했고
거기에 로직을 1,2,3 로 나누어 처리하였다.
(추가)
사진에서 자동차를 먼저 추출하는 로직을 추가했다.
주변 배경이 엣지추출시 같이 추출되어 번호판 찾는데 방해를 한다.
그래서 이를 자동으로 잘라주는 로직을 넣었다.
아래와 같은 사진에서 자동 잘라내기 를 하면 자동차만 추출된다.
(다른 자동차와 같이있으면 다른 자동차를 잘라낼때가 있다;;;)
[잘라내기 전]
[잘라낸 후] - 파란선은 다른 로직태운값
---------------------------------------------------------------------------------------------------------------------------
아래처럼 0과 8 이 들어간 경우 영역을 잡기가 정말 힘들었다 0 내부영역과 8 내부영역이 엣지 영역으로 인식을 해서..;
로직으로 해결.
아래처럼 은색그릴이 있는 경우 그릴도 엣지로 추출되면서 난리가 났고(빨간사각형이 그릴에 모여있다;;)
숫자가 흐리게 찍혀 판별이 어려웠다.
이런 사진 같은 경우는 아래 처럼 전처리 과정을 하고 번호영역을 찾으면 잘 찾아진다.
선명하게 처리하였기 때문에 번호 판별력도 좋아졌다.
아래는 내차..
가까이에서 찍은 차량이고 차를 제외한 주변 배경이 별로 없으면 정말 인식률이 높다.
아래 차량은 조금 번호판이 크기가 이상하다;;;
그것보다도 처음에 숫자 1이 있어서 번호판 영역을 표시할때 좀더 신경을 써야한다.
한글인식룰이 영... '두' -> '푸' , '너' -> '녀' 이런식으로 한글은 잘못 판단할 때가 있었다.
솔직히 주차장 같은 경우는 뒷자리로만 판단해도 충분하다.
아래처럼 비스듬한 경우도 판별하지만 영역찾기가 쉽지않다.
(그래서 주차장 시스템에 들어가기전 일직선구간이 존재....)
구형번호판은 인식이 안된다.;;
여기까지만 하련다.ㅋ
전처리 과정에 엣지 추출이나 이진화, 감마, 대비 등등 이것저것 해보면서
전처리를 테스트 할수 있다.
(전처리는 저게 다가 아니다 .더있다... 하지만 이 프로그램상에서는 여기까지만...)
'Dev' 카테고리의 다른 글
(개발) [ HardCodingAutoChanger ] : 하드코딩 문자열 제거 프로그램 (0) | 2019.01.21 |
---|---|
(개발) [ 미공 ] : 미세먼지공유하기 Version Update (0) | 2019.01.18 |
(개발) [ EmguCVCam ] : 캠 녹화 및 캡쳐 프로그램 (5) | 2018.04.28 |
(개발) [ ScreenRecoder ] : PC 화면 녹화 프로그램 (0) | 2018.04.24 |
(개발) [ SMSConvey ] : 문자 전달 어플 Version Update (7) | 2018.02.01 |