본문 바로가기

[ 프로그래밍 ]/자동차 번호판 인식

OpenCV로 구현한 자동차 번호판 인식기

OpenCV를 만지기 시작한지 석달째.
조금 무거운 감이 없지 않지만,
역시 꽤나 괜찮은 라이브러리임은 확실한 것 같다.

예전부터 공부/일해오던 분야인 자동차 번호판 인식을 시작으로,
프로그래밍감을 살려보려 하다보니,
석사논문 쓸 때와는 또 다른 환경(번호판 종류, 카메라의 변화)들이 나를 맞이한다.
덕분에 새로운 알고리즘의 개발은 필수가 되어버렸다.

- 번호판 인식기의 껍데기 -


번호판 추출부와 번호판 인식부를 따로 떼어둔 것은,
추출부와 인식부의 알고리즘을 따로/동시에 개발했기때문이기도 하거니와,
추출된 후보영역 중 실제 번호판 영역을 선택하는 알고리즘이 명확하지 않음이 그 이유이다.

현재는 추출된 번호판 후보영역 모두에서 문자들을 추출해 내도록 하며,
일련번호 4자리에 대해서만 인식하도록 프로그램 해두었다.


자동자 번호판 인식 과정 및 보안점

1. 번호판 추출
1-1. 원영상에서 CANNY EDGE 추출 (주 · 야간 시간대에 따른 Threshold 동적 변화 요구)
1-2. EDGE의 개수를 토대로 번호판 후보영역 추출 (최종 번호판 후보영역 추출 과정 필요 - 시간 소요 줄임)

2. 번호판 인식 (번호판 회전보정 추가)
2-1. K-Means 알고리즘 이용한 번호판 후보영역 영상 양자화 (새 알고리즘) (양자화 알고리즘 개선)
2-2. 양자화된 각 레이어 레이블링
2-3. 레이블 크기, 비율 등 고려한 비 문자영역 제거한 뒤 4개의 레이블만 남김
2-4. LVQ(Learning Vector Quantization) 이용한 문자 인식



다음은 테스트 영상이다.
테스트 영상으로는 뷰런사에서 제공한 동영상의 크롭컷과 디지털카메라로 직접 촬영한 영상을 사용하였다.

1. AV2105 야간 테스트 동영상 크롭컷 테스트 결과

01234


2. 디지털 카메라 촬영영상

012345

- 주인을 모르는 번호판들이라, 인식된 부분 이외의 문자들은 모자이크처리하였다. -


시작이 반이라고 그랬던가?

아직 번호판의 회전보정이라던지, 인식 알고리즘 개선 등
손댈 부분도 많고 부족한 것들도 많지만
이것을 바탕으로 기존 연구/개발된 내용들을 복습하고 성능을 개선함은 물론,
다른 연구로 옮겨갈 수 있는 발판을 마련하는 것이 목표다.

자~ 힘내자구.
화이삼!!!!!!!