Sử Dụng SVM Trong OpenCV để Nhận Dạng Ký Tự
Có thể bạn quan tâm
SVM là một kỹ thuật hay, đơn giản nhưng hiệu quả cao. Các bạn có thể đọc bài LIBSVM – giới thiệu tổng quan và ví dụ để có thể hiểu khái quát SVM là gì. Nhận diện ký tự hay là dự đoán nhãn của ảnh input, ở đây là ảnh ký tự.
Bài này sẽ hướng dẫn các bạn dùng SVM có sẵn trong lib OpenCV để nhận diện ký tự. Bài này khá đơn giản với mục đích cho các bạn thấy tính ứng dụng thực tế của SVM. Sau đó có thể đọc các bài viết nâng cao để hiểu sâu và nâng cao độ chính xác bằng các tham số phù hợp
Các bước thực hiện
- Chuẩn bị bộ dữ liệu ký tự
- Train SVM
- Test (predict) kết quả
Chuẩn bị bộ dữ liệu ký tự
Mình đã chuẩn bị sẵn cho các bạn, bao gồm 2 bộ dữ liệu (nằm chung trong source code cuối bài):
- – Train set: 10 folder từ 0 – 9 chứa các ký tự tương ứng. – Test set: 1 vài ký tự dùng để test độ chính xác
Mình vẽ ký tự màu đỏ vì màu đen – trắng khá là khó nhìn, còn thực tế là sẽ làm với ảnh xám – gray scale. Link download ở cuối bài.
Train SVM
Thuật toán như sau: với mỗi ảnh 2D chuyển thành ảnh 1D. Sau đó ghép các ảnh 1D thành ảnh 2D dùng để huấn luyện.
Ảnh 1D là ảnh có height = 1, có thể xem nó là mảng 1 chiều. Còn ảnh 2D có height > 1 và cũng xem như là mảng 2 chiều. Thí dụ: ảnh 2D có kích thước 10 x 10 pixels chuyển thành ảnh 1D có kích thước là 100 x 1 pixels.
Ảnh ký tự 2D và chuyển sang 1D (mình tăng height cho các bạn dễ nhìn)
![]()
Minh họa cho việc duỗi thẳng ảnh, các dòng được nối với nhau thành 1 dòng duy nhất. 
Sau khi ghép các ký tự từ 0 – 9 được hình như sau:
![]()
Tiếp theo là tạo 1 danh sách các nhãn của ảnh train, danh sách nhãn cũng là ảnh 1D theo thứ tự. Do đó danh sách nhãn là 0123456789
Code để train nằm ở cuối bài. Sau khi train thì được 1 file text.
Test (predict) kết quả
Lấy 1 ảnh bất kỳ chưa được train để dự đoán kết quả. Kết quả là nhãn mà chương trình dự đoán dựa trên tập dữ liệu mà các bạn đã cho học.
Source code
Source code SVM OpenCV nằm trong repo các example về Machine Learning. Bạn checkout branch SvmOpenCV để sử dụng.
Trong source code chứa sẵn 2 bộ dữ liệu Train set và Test set. Các bạn build SvmOpenCV_Training.sln để traning file model. Sau khi training model thành công build SvmOpenCV_Classifier.sln để phân lớp hình ảnh.
Các hàm cần thiết của SVM viết sẵn trong file TGMTsvm.cpp. Chúc các bạn thành công.
SvmOpenCV (GitHub)
Từ khóa » Svm Nhận Dạng Ký Tự
-
NHẬN DIỆN KÍ Tự BẰNG SVM (có Code) - Tài Liệu Text - 123doc
-
Chương 5 ỨNG DỤNG SVM VÀO NHẬN DẠNG CHỮ VIẾT TAY
-
Nhận Diện Biển Số Xe Bằng WPOD Và SVM Model - Mì AI
-
[PDF] THIẾT KẾ HỆ THỐNG NHÚNG NHẬN DẠNG CHỮ VIẾT TAY
-
Nhận Dạng Ký Tự Viết Tay Online Với Máy Học Vector Hỗ Trợ (SVM ...
-
Xử Lý ảnh Với OpenCV - Bài 17 Nhận Dạng ảnh Bằng SVM Phân Loại ...
-
Tìm Hiểu SVM Trong Nhận Dạng Chữ Viết Tay Hạn Chế | Xemtailieu
-
Nhận Dạng Chữ Viết Tay - TTV-GIÁO DỤC ỨNG DỤNG
-
Áp Dụng SVM Cho Bài Toán Phân Nhóm Chữ Số Viết Tay - 1UP Note
-
Tìm Hiểu SVM Trong Nhận Dạng Chữ Viết Tay - Tài Liệu đại Học
-
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG ...
-
Báo Cáo " Tìm Hiểu SVM Trong Nhận Dạng Chữ Viết Tay Hạn Chế "
-
Nhận Dạng Chữ Cái Viết Tay Sử Dụng Deep Learning - Viblo