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) 이용한 문자 인식
다음은 테스트 영상이다.
테스트 영상으로는 뷰런사에서 제공한 동영상의 크롭컷과 디지털카메라로 직접 촬영한 영상을 사용하였다.