Tải bản đầy đủ (.pdf) (40 trang)

nhận dạng biển số xe với opencv và tesseract

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.03 MB, 40 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGÀNH: KHOA HỌC MÁY TÍNH – KHÓA 37

Đề tài

NHẬN DẠNG BIỂN SỐ XE VỚI OPENCV VÀ
TESSERACT
Sinh viên: Võ Tấn Hƣng
MSSV: 1111497
Khóa: K37

Cần Thơ, 5/2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGÀNH: KHOA HỌC MÁY TÍNH – KHÓA 37

Đề tài

NHẬN DẠNG BIỂN SỐ XE VỚI OPENCV VÀ
TESSERACT


Giảng viên hướng dẫn:

Sinh viên thực hiện:

TS. Phạm Nguyên Khang

Võ Tấn Hưng
MSSV: 1111497

Cần Thơ, 5/2015


LỜI CẢM ƠN
Lời đầu tiên tôi xin cảm ơn thầy Phạm Nguyên Khang đã nhiệt tình chỉ dẫn tôi
trong quá trình làm bài luận văn tốt nghiệp này! Tuy Thầy bận rất nhiều việc nhưng đã
bỏ thời gian để nghe và giải đáp thắc mắc của tôi rất nhiều lần. Cảm ơn thầy!
Cảm ơn các quý thầy cô, thầy cố vấn học tập đã dạy bảo chúng tôi trong suốt
thời gian 4 năm Đại học! Thật sự không thể dùng từ tả hết. Những năm tháng dài đăng
đẳng mà giờ chớp mắt như một giấc mộng chứa nhiều kỷ niệm vui lẫn buồn.
Cảm ơn các bạn lớp DI11Z6A1 đã cùng chia sẻ với tôi cuộc sống của một sinh
viên Đại học! Thật khó nhọc nhưng tràn ngập niềm vui. Cảm ơn tất cả các bạn mà tôi
quen biết!
Và cuối cùng tôi cảm ơn đến gia đình và người thân của tôi đã tạo nhiều điều
kiện cho tôi được học tập vui chơi ở môi trường Đại Học Cần Thơ!
Kiến thức hạn hẹp chưa biết nhiều nên tài liệu luận vằn này có thể còn nhiều
thiếu xót rất mong được quý thầy cô cùng các bạn đọc giả đóng góp để tài liệu được
hoàn chỉnh hơn.
Xin chân thành cảm ơn!

I



NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

II


NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

III


MỤC LỤC
LỜI CẢM ƠN............................................................................................................................. I

NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN ..................................................................... II
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ...................................................................... III
MỤC LỤC ............................................................................................................................... IV
DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT ................................................................. VI
DANH MỤC HÌNH ............................................................................................................... VII
TÓM TẮT ..............................................................................................................................VIII
ABSTRACT ............................................................................................................................. IX
CHƢƠNG 1: GIỚI THIỆU...................................................................................................... 1
1.1
Hiện trạng vấn đề ...................................................................................................... 1
1.2
Vì sao phải nhận dạng biển số xe?........................................................................... 1
1.3
Lịch sử giải quyết vấn đề .......................................................................................... 2
1.4
Mục tiêu và nội dung nghiên cứu ............................................................................ 2
1.5
Phạm vi đề tài:........................................................................................................... 2
CHƢƠNG 2: CƠ SỞ LÝ THUYẾT ........................................................................................ 3
2.1
Hƣớng tiếp cận nhận dạng biển số xe ..................................................................... 3
2.1.1
Sử dụng các ràng buộc về hình học ................................................................. 3
2.1.2
Sử dụng máy học ............................................................................................... 3
2.2
Đặc trƣng Haar-like.................................................................................................. 4
2.3
AdaBoost .................................................................................................................... 6
2.4

Xác định biển số nhờ giải thuật Cascade of Classifiers trong OpenCV ............. 8
2.5
Nhận dạng chữ in với Tesseract OCR .................................................................... 9
2.5.1
Sơ lƣợc về Tesseract.......................................................................................... 9
2.5.2
Cấu trúc của Tesseract ................................................................................... 10
2.6
Quy định biển số xe máy Việt Nam ....................................................................... 11
CHƢƠNG 3: PHƢƠNG PHÁP NHẬN DẠNG BIỂN SỐ XE ............................................ 12
3.1
Quy trình nhận dạng .............................................................................................. 12
3.2
Định vị biển số xe .................................................................................................... 12
3.2.1
Mô hình tổng thể ............................................................................................. 12
3.2.2
Thu thập dữ liệu huấn luyện .......................................................................... 13
3.2.3
Tạo tập tin vector cho ảnh dƣơng ................................................................. 14
3.2.4
Tạo tập tin chỉ mục cho ảnh âm .................................................................... 15
3.2.5
Huấn luyện dữ liệu tạo tập tin xml ................................................................ 15
3.3
Hậu xử lý sau khi định vị ....................................................................................... 17
3.4
Nhận dạng ký tự với tesseract................................................................................ 18
CHƢƠNG 4: XÂY DỰNG CHƢƠNG TRÌNH NHẬN DẠNG BIỂN SỐ XE .................. 20
4.1

Thiết kế giao diện .................................................................................................... 20
4.2
Mã nguồn chƣơng trình ......................................................................................... 21
4.2.1
Chức năng chọn ảnh ....................................................................................... 21
4.2.2
Chức năng định vị biển số xe ......................................................................... 22
4.2.3
Chức năng hiển thị text .................................................................................. 23
4.2.4
Định nghĩa các hàm sử dụng liên quan ......................................................... 23

IV


4.3
Hƣớng dẫn sử dụng chƣơng trình ......................................................................... 24
CHƢƠNG 5: THỰC NGHIỆM VÀ ĐÁNH GIÁ ................................................................. 26
5.1
Môi trƣờng thực nghiệm ........................................................................................ 26
5.2
Thực nghiệm ............................................................................................................ 26
5.3
Đánh giá ................................................................................................................... 26
KẾT LUẬN .............................................................................................................................. 27
5.1
Kết quả đạt đƣợc..................................................................................................... 27
5.2
Một số hạn chế......................................................................................................... 27
5.3

Hƣớng khắc phục và phát triển chƣơng trình ..................................................... 27
5.3.1
Khắc phục những hạn chế.............................................................................. 27
5.3.2
Hƣớng phát triển ............................................................................................ 28
TÀI LIỆU THAM KHẢO ...................................................................................................... 29

V


DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ và từ viết tắt
OpenCV
AdaBoost
SIFT
Cascade
Classifier
Weak classifier
Strong classifier
SVM
Feature
Integral Image
Run-time
Cluster
False alarm
Positive
Negative
OCR

Diễn giải

Open Source Computer Vision
Adaptive Boosting
Scale-invariant feature transform
Phân tầng
Bộ phân loại
Bộ phân loại yếu
Bộ phân loại mạnh
Máy học vector hỗ trợ
Đặc trưng
Tích phân ảnh
Quá trình thực thi
Cụm
Tỷ lệ báo nhầm
Dương
Âm
Optical Character Recognition

Tesseract OCR
MFC

Công cụ nhận dạng chữ in
Microsoft Foundation Class

VI


DANH MỤC HÌNH
Hình 2.2. 1 Bốn đặc trưng Haar-like cơ bản .................................................................... 4
Hình 2.2. 2 Đặc trưng cạnh (edge features) ..................................................................... 4
Hình 2.2. 3 Đặc trưng đường (line features) .................................................................... 4

Hình 2.2. 4 Đặc trưng xung quanh tâm (center-surround features) ................................. 4
Hình 2.2. 5 Cách tính Integral Image của ảnh ................................................................. 5
Hình 2.2. 6 Vùng D trên ảnh ............................................................................................ 6
Hình 2.3. 1 Mô hình phân tần kết hợp các phân loại yếu để xác định biển số xe ............ 7
Hình 2.3. 2 Mô tả phân loại mạnh AdaBoost................................................................... 8
Hình 3.1. 1 Quy trình nhận dạng .................................................................................... 12
Hình 3.2.1. 1 Mô hình định vị biển số xe ....................................................................... 13
Hình 3.2.3. 1 Công cụ Opject location ........................................................................... 14
Hình 3.2.5. 1 Huấn luyện tập tin bienso.xml ................................................................. 16
Hình 3.3. 1 Hậu xử lý ..................................................................................................... 17
Hình 3.4. 1 Chạy tesseract.............................................................................................. 19
Hình 3.4. 2 Kết quả chạy tesseract ................................................................................. 19
Hình 4.1. 1 Giao diện chương trình nhận dạng biển số xe............................................. 20
Hình 4.3. 1 Chọn ảnh biển số xe .................................................................................... 24
Hình 4.3. 2 Định vị biển số xe ....................................................................................... 25
Hình 4.3. 3 Nhận dạng ký tự trên biển số xe.................................................................. 25

VII


TÓM TẮT
Luận văn này sẽ đi vào phần nhận dạng ký tự quang học với đề tài: “Nhận dạng
biển số xe với OpenCV và Tesseract”. Tập trung nghiên cứu tìm hiểu hoạt động của
thư viện xử lý ảnh OpenCV và công cụ nhận dạng Tesseract. Để xây dựng một ứng
dụng trích xuất ký tự từ hình ảnh chứa biển số xe thành một định dạng văn bản (text).
Nhằm mục đích quản lý xe hiệu quả hơn và cung cấp nguồn dữ liệu dồi dào cho các
công trình nghiên cứu khác.
Được lập trình bằng công cụ Visual Studio 2010 của Microsof sử dụng ngôn
ngữ lập trình C++ cùng với lập trình giao diện MFC (Microsoft Foundation Class).
Chương trình sẽ nhận vào một ảnh có chứa biển số xe. Kết quả là ký tự của biển số xe

sẽ được nhận dạng và chuyển thành định dạng văn bản.
Độ chính xác của chương trình được kiểm thử với 110 ảnh biển số xe và kết quả
như sau:
 Số lượng ảnh định vị đúng là: 72/110
 Số lượng ảnh định vị sai là: 38/110
 Số lượng ảnh nhận dạng đúng là: 30/110
 Số lượng ảnh nhận dạng sai là: 80/110
 Số lượng ký tự nhận dạng sai/biến số là: 3

VIII


ABSTRACT
This thesis is about optical character recognition, specifically “License plate
recognition using OpenCV and Tesseract”. It focuses on learning OpenCV image
processing library, optical character recognition engine Tesseract, and lastly an
application that identifies license plates and extracts characters from the image to text
format was built in order to illustrate for the study. This application will help to
manage vehicles more efficiently, and provide abundant data sources for other research
projects.
It was built by Visual C++ 2010 with Microsoft Foundation Classes (MFC)
programming interface. It will receive the input of an imgage with the license plates,
and the output is the localization of license plate and the characters on the license
plates in text format.
This program was tested with 110 images containing license plates and the
results are as follows:
 The license plate location rate of success is 65.5% (72/110).
 The license plate location rate of unsuccess is 34.5% (38/110).
 The accuracy rates of character recognition is 27.3% (30/110)
 The inaccuracy rates of character recognition is 72.7% (80/110)

 The number of misidentified characters/license plate is 3

IX


CHƢƠNG 1: GIỚI THIỆU
1.1 Hiện trạng vấn đề
Xử lý ảnh là một lĩnh vực đang được quan tâm của các kỹ sư tin học Việt Nam
cũng như các kỹ sư tin học ở các nước khác. Bên cạnh việc xử lý những tấm ảnh để có
được một ảnh theo mong muốn như tăng giảm độ sáng, cân bằng histogram, khử nhiễu,
lọc biên, thay đổi gram màu, thì có một nhánh kết hợp giữa xử lý ảnh và máy học.
Nhóm này có nhiệm vụ là giải quyết các bài toán liên quan đến ảnh, video và tìm ra từ
ảnh, video những thông tin hữu ích nhất. Như là: camera quan sát tự động tìm kẻ tình
nghi, nhận diện vân tay, ký hiệu tay của người khiếm thính, nhận dạng ký tự quang học
(chữ đánh máy)…
Đề tài nhận dạng biển số xe được xem là một phần nhỏ của nhận dạng ký tự
quang học. Được nghiên cứu và phát triển bởi rất nhiều người. Tới nay, đã có nhiều
chương trình đã và đang được tạo ra với nhiều cách khác nhau. Mỗi một chương trình
có ưu nhược điểm riêng.

1.2 Vì sao phải nhận dạng biển số xe?
Ngày nay, xe là phương tiện giao thông phổ biến nhất, giúp mọi người đi lại
nhanh chóng. Mỗi chiếc xe đều có đăng ký một biển số để lưu thông trên đường, biển
số là duy nhất. Vấn đề là quản lý những chiếc xe này như thế nào? Ví dụ như ở các bãi
giữ xe, giao thông trên đường. Tình trạng kẹt xe ở bãi giữ xe là rất được quan tâm. Tuy
có nhiều biện pháp để khắc phục nhưng lưu lượng xe ra vào là rất đông đặc biệt là ở
các siêu thị, khu công nghiệp và nhiều nơi khác. Nhân viên đã làm việc nhanh hết khả
năng có thể. Với tình hình cấp thiết như vậy đòi hỏi cần có một công cụ trợ giúp nhân
viên thu thập dữ liệu để lưu trữ.
Trên thực tế việc quản lý này chỉ dùng mắt người mà quan sát hoặc phiếu giấy

rồi các dữ liệu đó cũng biến mất theo trí nhớ của người đó. Khi có vấn đề xảy ra thì họ
không biết nên kiểm tra từ đâu. Hoặc với cách quản lý bằng việc chụp ảnh rồi lưu trữ
thì gặp khó khăn về bộ nhớ.
Vì vậy nhằm cải thiện tình hình cần có một hệ thống hỗ trợ và đó là hệ thống
nhận dạng biển số xe. Cụ thể hơn chính là đề tài: “Nhận dạng biển số xe với OpenCV
và Tesseract”.

1


1.3 Lịch sử giải quyết vấn đề
Nhận dạng biển số xe đã được các bậc anh chị khóa trước đã làm. Không chỉ ở
trường Đại học Cần Thơ mà còn là đề tài của các trường Đại học khác, trong nước
cũng như ngoài nước. Luôn không ngừng cải tiến và tìm ra phương pháp mới cho việc
nhận dạng biển số xe. Chẳng hạn như đề tài “xây dựng hệ thống hỗ trợ giữ xe thông
minh” của Võ Hùng Vĩ năm 2014, “ứng dụng xử lý ảnh trong thực tế với thư viện
OpenCV” phần tự động nhận dạng biển số xe của Nguyễn Văn Long.

1.4 Mục tiêu và nội dung nghiên cứu
Mục tiêu: Xây dựng hệ thống nhận dạng biển số xe tự động.
Nội dung:
 Định vị được biển số xe từ một hình ảnh bằng OpenCV.
 Nhận dạng ký tự thông qua Tesseract.

1.5 Phạm vi đề tài:
Nghiên cứu kỹ thuật nhận dạng biển số xe. Lý thuyết giải thuật máy học
Boosting (thuật toán AdaBoost), các đặc trưng Haar-like, mô hình cascade, công cụ
nhận dạng chữ in Tesseract OCR.
Nhận dạng trên biển số xe máy ở Việt Nam.
Biển số xe máy là của doanh nghiệp hoặc cá nhân.


2


CHƢƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Hƣớng tiếp cận nhận dạng biển số xe
2.1.1 Sử dụng các ràng buộc về hình học
Hướng tiếp cận này, nhìn chung có ba phương pháp chính: Phương pháp
biến đổi Hough, phương pháp hình thái học và phương pháp so khớp mẫu. Mỗi
phương pháp có ưu, nhược điểm riêng.
Phương pháp biến đổi Hough sử dụng biến đổi Hough để phát hiện các
đường thẳng song song được xem như các “ứng cử viên” của biển số. Sau đó
các ràng buộc hình học của biển số được áp dụng để kiểm tra xem các ứng viên
này có phải là biển số hay không. Ưu điểm: Không phụ thuộc vào mào sắc của
biển số xe. Nhược điểm: Phụ thuộc vào bước trích đặc trưng biên cạnh.
Phương pháp hình thái học dựa vào đặc trưng là biển số xe có độ sáng là
tương đối khác so với các vùng khác, cũng như sự phân bố mức xám là khá
đồng đều. Vì vậy khi được nhị phân hóa, vùng biển số có đặc thù hình thái, có
thể phân biệt được với các vùng khác. Ưu điểm: Phương pháp đơn giản. Nhược
điểm: Thời gian xử lý lớn.
Phương pháp so khớp mẫu thì các mẫu của biển số xe được nhận dạng
trước. Từ một ảnh đưa vào, tính các giá trị tương quan so với mẫu chuẩn. Thông
qua các giá trị tương quan này mà quyết định có hay không có tồn tại biển số xe
trong ảnh. Ưu điểm: Phương pháp đơn giản, dễ cài đặt. Nhược điểm: Không
hiệu quả khi tỷ lệ, tư thế và hình dáng thay đổi. [3]

2.1.2 Sử dụng máy học
Đây là hướng tiếp cận thông minh, hướng tiếp cận này các tác giả sử
dụng các giải thuật trong khai mỏ dữ liệu để học trên tập dữ liệu là biển số xe.
Gồm có các phương pháp sau:

Phương pháp sử dụng máy học SVM lên trên các “ứng viên” được xem
như là các vùng có kết cấu rời rạc. Ưu điểm: Thực hiện tương đối nhanh. Nhược
điểm: Nhận dạng chưa chính xác (chỉ khoảng 81%).

3


Phương pháp sử dụng vector mô tả SIFT (Scale-invariant feature
transform) và máy học SVM, rừng ngẫu nhiên. Ưu điểm: Phương pháp này khá
chính xác. Nhược điểm: Có độ phức tạp cao và thời gian thực hiện lâu.
Đề tài luận văn này sẽ áp dụng phương pháp máy học với giải thuật
Boosting (thuật toán AdaBoost), sử dụng đặc trưng Haar-like và mô hình
cascade để thực hiện việc định vị biển số xe. Sao đó dùng công cụ nhận dạng
chữ in Tesseract OCR để nhận dạng ký tự trên biển số xe. [3]

2.2 Đặc trƣng Haar-like
Đặc trưng Haar-like do Viola và Jones công bố năm 2001. Gồm 4 đặc trưng cơ
bản, mỗi đặc trưng Haar-like là sự kết hợp của hai hay ba hình chữ nhật “trắng” hay
“đen” như sau:

Hình 2.2. 1 Bốn đặc trưng Haar-like cơ bản

Để sử dụng các đặc trưng này vào việc xác định đối tượng, 4 đặc trưng Haarlike cơ bản được mở rộng và được chia làm 3 tập đặc trưng sau:

Hình 2.2. 2 Đặc trưng cạnh (edge features)

Hình 2.2. 3 Đặc trưng đường (line features)

Hình 2.2. 4 Đặc trưng xung quanh tâm (center-surround features)


4


Dùng các đặc trưng trên, ta có thể tính được giá trị của đặc trưng Haar-like là sự
chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như công thức
sau:
f(x) = Tổngvùng đen(các mức xám của pixel) - Tổngvùng trắng(các mức xám của pixel)
Giá trị này so sánh với các giá trị của các pixel thô, các đặc trưng Haar-like có
thể tăng/giảm sự thay đổi bên trong hay bên ngoài lớp, do đó sẽ làm cho bộ phân loại
dễ hơn.
Để tính các giá trị của đặc trưng Haar-like, cần phải tính tổng của các vùng pixel
trên ảnh. Nhưng để tính toán các giá trị của đặc trưng Haar-like cho tất cả các vị trí trên
ảnh đòi hỏi chi phí khá lớn, không đáp ứng cho ứng dụng đòi hỏi tính run-time.
Do đó Viola và Jones đưa ra một khái niệm gọi là Integral Image, là một mảng 2
chiều với kích thước bằng với kích thước của ảnh cần tính các đặc trưng Haar-like, với
mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng1) và bên trái (cột-1) của nó. Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, bên phải của
ảnh, việc tính toán này đơn thuần chỉ dựa trên phép cộng số nguyên đơn giản, do đó tốc
độ thực hiện rất nhanh.

Hình 2.2. 5 Cách tính Integral Image của ảnh

Sau khi tính được Integral Image, việc tính tổng các giá trị mức xám của một
vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản theo cách sau:
Giả sử ta cần tính tổng các giá trị mức xám của vùng D như trong hình
2.2.6

5


Hình 2.2. 6 Vùng D trên ảnh


Ta có: D = A+B+C+D-(A+B)-(A+C)+A
Mặc khác:
A+B+C+D = P4, A+C=P3, A+B=P2, A=P1 (P1, P2, P3, P4 là các
giá trị trên Integral Image)
 D = P4-P3-P2+P1
Để chọn các đặc trưng Haar-like dùng cho việc thiết lập ngưỡng, Viola và Jones
sử dụng một phương pháp máy học được gọi là AdaBoost. AdaBoost sẽ kết hợp các bộ
phân loại yếu để tạo thành một bộ phân loại mạnh. Với bộ phân loại yếu chỉ cho ra câu
trả lời ít chính xác, còn bộ phân loại mạnh có thể đưa ra câu trả lời chính xác trên 60%.
[5]

2.3 AdaBoost
AdaBoost là một bộ phân loại mạnh dựa trên hướng tiếp cận boosting được
Freund và Schapire đưa ra vào năm 1995. AdaBoost cũng hoạt động trên nguyên tắc
kết hợp tuyến tính các weak classifiers để hình thành một strong classifier.
AdaBoost là một cải tiến của tiếp cận boosting, sử dụng thêm khái niệm trọng
số (weight) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi
weak classifiers được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn
bị cho việc xây dựng lại weak classifier kế tiếp: Tăng trọng số của các mẫu bị nhận
dạng sai và giảm các trọng số của các mẫu được nhận dạng đúng bởi weak classifier
vừa xây dựng. Bằng cách này weak classifier sau có thể tập trung vào các mẫu mà các
weak classifiers trước nó làm chưa tốt. Sau cùng, các weak classifiers sẽ được kết hợp
tùy theo mức độ tốt của chúng để tạo nên strong classifier.
Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc
trưng Haar-like theo mô hình phân tầng (cascade) như sau: [5]

6



Vùng ảnh
con cần xét
Không là biển số xe
h1
Là biển số xe
Không là biển số xe
h2
Là biển số xe
Không là biển số xe

Không là
biển số xe

h3

Không là biển số xe
hn
Là biển số xe
Biển số xe
Hình 2.3. 1 Mô hình phân tần kết hợp các phân loại yếu để xác định biển số xe

Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau:

x: cửa sổ con cần xét
θk: ngưỡng (θ = theta)
fk: giá trị của đặc trưng Haar-like
pk: hệ số quyết định chiều của phương trình

AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau:


7


H(x)=sign(a1h1(x)+a2h2(x)+…+anhn(x)) (a=alpha)
Với: at >= 0 là hệ số chuẩn hóa cho các bộ phân loại yếu

Hình 2.3. 2 Mô tả phân loại mạnh AdaBoost

2.4 Xác định biển số nhờ giải thuật Cascade of Classifiers trong OpenCV
Với yêu cầu chạy trên các thiết bị điện thoại, máy ảnh, thiết bị có cấu hình yếu
thì thuật toán Cascade of Classifiers ra đời. Nghĩa là “Phân lớp theo tầng”. Dựa trên
những đặc trưng haar-like của đối tượng mà thuật toán tiến hành rút trích ra các đặc
trưng của đối tượng. Do đối tượng nhận dạng có nhiều hình dạng khác nhau nên phải
phân tầng nhận dạng. Ví dụ nhận diện biển số xe máy ở Việt Nam. Ngoài mã tỉnh, mã
huyện, thì còn có loại 4 ký tự, loại 5 ký tự. Có loại viền dầy, loại viền mỏng, loại dán
decal, loại có ký tự rõ ràng, loại ký tự bị mờ. Về góc chụp thì có hình vuông hình chữ
nhật, hình tứ giác. Ánh sáng cũng ảnh hưởng làm nhiễu biển số.
Thuật toán Cascade of Classifiers tiến hành phân ra thành các giai đoạn (gọi là
stage), các vùng hình chữ nhật nghi ngờ phải đạt ngưỡng đúng (threshold) của tất cả
các giai đoạn được xác định là chứa đối tượng. Trong một giai đoạn có nhiều cây quyết
định (decision tree) và đi theo nhánh của cây sẽ giúp cho việc xác định nhanh hơn rất
nhiều.
Minh họa cấu trúc phân tầng như sau (ví dụ không nhất thiết giống như tập tin
xml):
-Giai đoạn 1: ngưỡng 10%
Đặc trưng 1 có ngưỡng 11%: qua giai đoạn tiếp theo
Đặc trưng 2 có ngưỡng 9%: lớp âm
-Giai đoạn 2: ngưỡng 15%
Đặc trưng 1 có ngưỡng 16%: qua giai đoạn tiếp theo


8


Đặc trưng 2 có ngưỡng 14%: lớp âm

-Giai đoạn n: ngưỡng xx%
Đặc trưng 1 có ngưỡng >xx%: lớp dương
Đặc trưng 2 có ngưỡng Số lượng giai đoạn và ngưỡng quyết định bởi dữ liệu học và các tham số khác
do người dùng chỉ định. Để có thể nhận dạng thuật toán tiến hành lấy mẫu từ 2 tập dữ
liệu: tập ảnh dương bao gồm ảnh chứa đối tượng và tập ảnh âm không chứa đối tượng.
Tiến hành học dựa trên các ảnh này. Dữ liệu học càng nhiều thì nhận diện càng chính
xác, bao gồm cả ảnh dương và ảnh âm, bù lại thì thời gian huấn luyện lâu hơn. [1]
Nếu vùng nghi ngờ được xác định đúng là đối tượng thì thuật toán trả về những
khung hình chữ nhật. Ngược lại thuật toán sẽ không xác định được đối tượng và trả về
false.

2.5 Nhận dạng chữ in với Tesseract OCR
2.5.1 Sơ lƣợc về Tesseract
Tesseract bộ công cụ nhận diện ký tự quang học (Optical Character
Recognition – OCR) thương mại, được phát triển bởi hãng HP giữa những năm
1985 và 1995. Nó được biết như là một phần mềm thêm vào cho dòng sản phẩm
máy quét của HP. Trong giai đoạn này, nó vẫn còn rất sơ khai và chỉ được dùng
để cải thiện chất lượng của các bản in. Nó được phát triển cho đến năm 1994 thì
ngưng. Sau khi cải thiện độ chính xác, nó được HP đưa vào cuộc kiểm tra
thường niên về độ chính xác của các công cụ OCR và nó đã thể hiện được sự
vượt trội của mình. Sau đó, được mở mã nguồn vào năm 2005 và phát triển tại
Google. [4]

9



2.5.2 Cấu trúc của Tesseract
Ảnh màu hoặc
đen trắng

Tìm dòng
văn bản và từ

Input

Tạo ngưỡng
thích nghi
Ảnh nhị
phân

Phát thảo
ký tự

Phân tích thành
phần kết nối

Phát thảo ký tự đã
nhận dạng thành từ
Output

Nhận dạng
từ lần 1

Nhận dạng

từ lần 2

Chuỗi
ký tự

Hình 2.1.2. 1 Cấu trúc Tesseract

Tạo ngưỡng thích nghi giúp loại bỏ các yếu tố nền của hình ảnh (ví dụ:
ánh sáng, bóng, …) và giúp phân tích các pixel thành ảnh nhị phân.
Nhận dạng được tiến hành qua một quá trình với hai lần nhận dạng. Lần
thứ nhất, nhận ra lần lượt từng từ. Mỗi từ có nghĩa là đạt yêu cầu, được thông
qua và được lưu vào dữ liệu. Lần thứ hai, khi phân loại thích ứng, công cụ sẽ
nhận dạng lại các từ không được nhận dạng tốt ở lần trước đó.
Xác định dòng và từ nhằm mục đích làm giảm sự mất thông tin khi nhận
dạng ảnh nghiêng. Tesseract nhận biết dòng văn bản nhờ vào các dòng cơ sở.
Nhận dạng từ là quá trình phân tích một từ và phụ thuộc vào từ được chia ra
thành các ký tự. [4]
Phiên bản Tesseract 3.02, cú pháp sử dụng: [2]
tesseract imagename outputbase [-l lang] [-psm pagesegmode]
[configfile…]
Trong đó:
imagename là tên tập tin đầu vào
outputbase là tập tin đầu ra. Ví dụ: output.txt
lang là ngôn ngữ cần nhận dạng

10


Pagesegmode là các lựa chọn từ 0-10. ý nghĩa: để tesseract
chỉ chạy một tập hợp con của phân tích bố trí và giả định một hình

thức nhất định của hình ảnh
Configfile là tên của một cấu hình để sử dụng như: hocr,
pdf

2.6 Quy định biển số xe máy Việt Nam
Đối với biển số xe của doanh nghiệp, cá nhân: [6]
Xe của các doanh nghiệp; xe làm kinh tế của cơ quan quản lý nhà nước;
tổ chức sự nghiệp; sự nghiệp có thu; xe cá nhân: Biển số nền màu trắng, chữ và
số màu đen với 2 số đầu theo thứ tự các tỉnh, 4 hoặc 5 số cuối là số thứ tự cấp
ngẫu nhiên. Series biển số sử dụng một trong 15 chữ cái sau đây: F, H, K, L, M,
N, P, R, S, T, U, V, X, Y, Z và các ký tự số từ 0-9. (Chi tiết xem thông tư số
01/2007/TT/-BCA-C11).

11


CHƢƠNG 3: PHƢƠNG PHÁP NHẬN DẠNG BIỂN SỐ XE
3.1 Quy trình nhận dạng

Ảnh chứa
biển số xe

Định vị biển
số xe

Hậu xử lý sau
khi định vị

Nhận dạng
ký tự với

tesseract

Ký tự

Hình 3.1. 1 Quy trình nhận dạng

Để giải quyết được vấn đề nhận dạng biển số xe cần phải lần lượt thực hiện các
giai đoạn sau:
Định vị biển số xe là giai đoạn quang trọng nhất giúp chương trình có thể
xác định đúng vị trí của biển số xe trong một tấm ảnh dựa vào thuật toán
cascade of classifiers
Hậu xử lý sau khi định vị là làm cho ảnh có một kích thước nhất định và
loại bỏ một số nhiễu của ảnh để chương trình có thể nhận dạng tốt hơn.
Nhận dạng ký tự với Tesseract thực hiện việc gọi chương trình Tesseract
và thiết lập một số ràng buộc để ảnh nhận dạng ký tự được đúng hơn.

3.2 Định vị biển số xe
3.2.1 Mô hình tổng thể
Sau đây là các bước thực hiện cho việc định vị biển số xe thông qua một
mô hình:

12


Thu thập dữ
liệu (ảnh biển
số xe và ảnh
nền)

Mô hình

(bienso.xml)

Tách biển số,
tạo chỉ mục
(location.txt)

Tách ảnh

Ảnh nền,
tạo chỉ mục
(bg.txt)

Học với opencv_traincascade
(trong OpenCV)

Ghi

Đọc

Kết quả

Chương trình
Ảnh có chứa
biển số xe

Khoanh
vùng biển
số xe

Hình 3.2.1. 1 Mô hình định vị biển số xe


Để định vị được biển số xe, trước tiên phải có dữ liệu ảnh gồm: ảnh
dương (positive), ảnh âm (negative). Ảnh dương là ảnh chứa biển số xe, ảnh âm
là ảnh bất kỳ không chứa biển số xe. Sau đó tạo tập tin chỉ mục location.txt cho
ảnh dương và bg.txt cho ảnh âm. Tiếp đến dùng công cụ kèm theo của OpenCV
tạo ra một tập tin mô hình bienso.xml. Khi có được tập tin xml cần phải xây
dựng chương trình để đọc được tập tin và nhận vào một ảnh dương. Kết quả trả
về của chương trình là khung hình chữ nhật bao quanh vùng ảnh của biển số xe.

3.2.2 Thu thập dữ liệu huấn luyện
Chuẩn bị khoảng 293 ảnh dương, 487 ảnh âm, resize ảnh về cùng kích
thước 640x480. Ảnh dương được thu thập từ ảnh chụp ở các bãi giữ xe. Mỗi ảnh
có thể có nhiều biển số xe. Ảnh âm là ảnh phong cảnh. Số lượng ảnh dương
càng lớn thì kết quả định vị càng chính xác hơn. Về ảnh âm thì gấp đôi ảnh
dương trở lên là tốt nhất.
Máy tính phải được cài đặt OpenCV. Trong đó có 2 công cụ cần quan
tâm: opencv_createsample và opencv_traincascade.

13


3.2.3 Tạo tập tin vector cho ảnh dƣơng
Dùng chương trình location để tạo tập tin chỉ mục location.txt

Hình 3.2.3. 1 Công cụ Opject location

Nội dung tập tin chỉ mục location có dạng như sau:
<Tên ảnh>

<số lượng> x y w h … x y w h


Trong đó:
x, y là tọa độ điểm đầu của biển số xe.
w, h là chiều rộng và cao của biển số xe.
Ví dụ:
Anh1.jpg
Anh2.jpg

1
2

10
23

10
152

80
120

70
102


Anhn.jpg

i

x


y

w

h

14

473

166

136

97


×