Nhận diện biển số xe hơi – Phần 3/3 nhận diện ký tự

Bài này là bước 3 của công việc nhận diện biển số xe hơi.
Phần 1: Nhận diện biển số xe hơi – Phần 1/3 tìm biển số
Phần 2: Nhận diện biển số xe hơi – Phần 2/3 tìm ký tự

Trong phần 1 đã crop biển số từ ảnh input, phần 2 crop các ký tự bằng cách dùng contours. Phần 3 sẽ nhận diện ký tự và đưa ra kết quả

Để có thể hiểu về nhận diện ký tự bạn cần có kiến thức về Machine Learning. Phải hiểu lý thuyết về phân lớp (classify) vì bên dưới chỉ giải thích cách xử lý hình ảnh để nhận diện.

Các bước thực hiện

– Load training data
– Biến đổi các ký tự theo chuẩn
– Phân lớp ký tự và sắp xếp kết quả

Load training data

Trong source code gốc có sẵn file OCR.xml. Đó là các hình ảnh dùng để training được lưu dưới dạng text trong file xml. Chúng ta chỉ cần load lên là dùng không cần làm gì thêm

Để có thể hình dung cách chuẩn bị tập dữ liệu training bạn có thể đọc bài Sử dụng SVM để nhận diện ký tự. Cũng tương đối giống về cách chuẩn bị data.

Các ký tự dùng để training có kích thước 15×15, biến đổi thành ma trận 1 dòng thành 225×1 pixels, cộng thêm histogram feature theo chiều dọc 20pixels và ngang 20pixels nữa là 265×1 pixels.

Bộ dữ liệu có 671 ký tự, vậy xếp 671 ký tự này thành 1 ảnh 2D ta được ảnh 265×671 pixels dùng để training như hình bên dưới.
mat_ocr



Biến đổi các ký tự theo chuẩn

Như đã nói ở trên, mỗi ký tự được biến đổi thành dạng phù hợp thì ngoài giá trị pixels thì còn giá trị histogram nữa. Cụ thể hóa bằng cách vẽ thành histogram cho dễ hình dung.

char_histogram


Phân lớp ký tự và sắp xếp kết quả

Đến bước này chỉ cần dùng model KNN đã load để nhận diện ký tự. Kết quả sẽ trả về tương ứng, sau đó sắp xếp từ trái qua phải ta được kết quả

car_plate_result


Download

Download source code đã chỉnh sửa phù hợp với biển số xe hơi Việt Nam, sử dụng Visual Studio 2015 community để build

Source code (Github)

Source code gốc

10 thoughts on “Nhận diện biển số xe hơi – Phần 3/3 nhận diện ký tự

  1. Chào bạn, cảm ơn các bài viết của bạn, nó thật hữu ích đối với mình.

    Cho mình xin ảnh chứa các kí tự để huấn luyện được ko ạ? Do mình lưu dữ liệu train dưới dạng khác nên cần. Cảm ơn bạn!

  2. Bạn cho mình hỏi tại sao phần xác định vị trí biển số lại ko dùng phương pháp như phương pháp nhận diện biển số xe máy?
    Nếu dùng như cách nhân diện biển xe máy thì có đc ko? Mình cảm ơn.

    1. Đây chỉ là 1 cách tiếp cận mới, giới thiệu thêm cho mọi người biết, không nhất thiết phải sử dụng 1 cách duy nhất. Bạn có thể dùng cách của biển số xe máy vẫn ok

  3. An unhandled exception of type ‘System.IO.FileNotFoundException’ occurred in IPSS.exe

    Additional information: Could not load file or assembly ‘TGMTbike.dll’ or one of its dependencies. The specified module could not be found.

    Khi chạy thử bị lỗi này, khắc phục sau vohungvi

    1. Cái này là cài thiếu C++ redistributale 2015 x86, cài lại Visual Studio chọn mục bị thiếu là được

Leave a Reply