You are on page 1of 69

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO THỰC TẬP TỐT NGHIỆP

NHẬN DẠNG BIỂN SỐ XE

Giảng viên hướng dẫn : ThS NGUYỄN ĐÌNH CƯỜNG

Sinh viên thực hiện: NGUYỄN TRỌNG KHIÊM

Lớp : 51TH-1

MSSV : 51130684

Năm học: 2013


LỜI MỞ ĐẦU

Thực tế hiện nay các bãi giữ xe mô tô 2 bánh ở nước ta đều quản lý bằng cách thức
thủ công đơn giản đó là trong bãi giữ xe có một người đọc biển số và ghi biển số vào thẻ
giữ xe, sau đó sẽ bấm vào xe một phần vé xe, phần còn lại do chủ xe giữ.

Ưu điểm phương pháp thủ công là đơn giản ko cần thiết bị phức tạp. Tuy nhiên
phương pháp này cũng tồn tại nhiều nhược điểm. Thứ nhất cần nhiều người để có thể
quản lý tốt toàn bộ bãi giữ xe. Thứ hai là độ chính xác không được đảm bảo, do việc đọc,
ghi biển số xe đều do con người thực hiện. Thứ ba là vVé xe đơn giản nên kẻ gian có thể
tráo vé, sửa đổi vé hoặc làm vé giả để qua mặt các nhân viên giữ xe...Thứ tư là tốc độ làm
việc không cao, do thực hiện việc xe ra vào qua nhiều khâu như đọc biển số, ghi vé xe,
…. Và cuối cùng là không có một bằng chứng nào để lưu trữ những thông tin khi xe ra
vào bãi, thời gian ra khỏi bãi.

Xuất phát từ những hạn chế trên, một phương pháp đã được sử dụng để làm tăng hiệu
quả trong việc quản lý giữ xe, đó là sẽ đặt camera ở vị trí cổng giữ xe, khi có xe vào
camera sẽ chụp biển số. Sau khi phân tích và xử lý, chương trình máy tính sẽ lưu giữ lại
biển số xe và sẽ in phần vé cho người gửi xe.

Từ phân tích trên ta thấy bài toán nhận dạng biển số xe chia thành 2 bài toán con:

• Xác định và rút trích vùng biển số xe.


• Nhận dạng các ký tự trong biển số xe.

Phạm vi đồ án này tập trung nghiên cứu phần nhận dạng biển số và ký tự trên ảnh tĩnh,
với các công việc cụ thể là xây dựng thuật toán để xác định vùng chứa biển số xe trên
ảnh, rút trích vùng biển số, tách các ký tự và tiến hành nhận dạng các ký tự đơn, sau đó
hiển thị lên màn hình. Ngôn ngữ sử dụng C# kết hợp các thư viện của EmguCV.

Nội dung bài báo cáo sẽ gói gọn trong 4 chương.

• Chương 1: Tổng quan về nhận dạng biển số xe.


• Chương 2: Phát hiện vùng chứa biển số xe.
• Chương 3: Nhận dạng ký tự trong biển số
• Chương 4. Cài đặt thử nghiệm ứng dụng nhận dạng biển số xe
LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy, các cô khoa Công nghệ Thông tin Trường Đại học
Nha Trang đã tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức quý báu.

Em xin tỏ lòng biết ơn sâu sắc đến thầy ThS Nguyễn Đình Cường, người đã tận tình giúp
đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn thành.

Xin chân thành cảm ơn các bạn trong khoa Công Nghệ Thông Tin, Trường ĐH Nha
Trang đã giúp đỡ, động viên tôi rất nhiều trong quá trình thực hiện đề tài.

Em xin chân thành cảm ơn !

Nha Trang, tháng 6 năm 2013

Sinh viên

Nguyễn Trọng Khiêm


NHẬN XÉT
(Của giảng viên hướng dẫn)
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
NHẬN XÉT
(Của giảng viên phản biện)
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
MỤC LỤC

Lời mở đầu

CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG BIỂN SỐ XE....................1


1.1. Khái niệm hệ thống nhận dạng biển số xe..............................................1
1.1.1. Khái niệm.........................................................................................1
1.1.2. Lịch sử và phát triển.........................................................................1
1.1.3. Cách thức hoạt động của hệ thống nhận dạng biển số xe..................2
1.1.4. Phân loại ứng dụng nhận dạng biển số xe.........................................2
1.1.5. Ứng dụng thực tiễn tại Việt Nam......................................................3
1.1.6. Phân loại biển số xe..........................................................................4
1.1.6.1. Quy định về màu sắc và các ký tự trên biển số xe...................4
1.1.6.2. Quy định về biển số của các tỉnh thành...................................5
1.2. Phương pháp nhận dạng biển số xe từ ảnh chụp của camera..............5
1.2.1. Phương pháp chuyển đổi Hough.......................................................6
1.2.2. Phương pháp hình thái học...............................................................6
1.3. Phương pháp nhận dạng ký tự trong biển số xe....................................7
1.4. Phạm vi nghiên cứu và hướng giải quyết...............................................8

CHƯƠNG 2: PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE............................10


2.1. Cơ sở lý thuyết..........................................................................................16
2.1.1. Tổng quan về ảnh số.........................................................................10
2.1.2. Biên và các phương pháp phát hiện biên..........................................10
2.1.3. Nhị phân hóa ảnh..............................................................................13
2.1.4. Các phép biến đổi hình thái học (Morphology) cơ bản.....................14
2.1.5. Các phương pháp nâng cao chất lượng ảnh......................................15
2.2. Thuật toán phát hiện vùng chứa biển số xe...........................................17
2.2.1. Sơ đồ khối của thuật toán.................................................................17
2.2.2. Ảnh đầu vào......................................................................................18
2.2.3. Tiền xử lý.........................................................................................18
2.2.4. Tìm Contours....................................................................................19
2.2.5. Lọc Contour......................................................................................19
2.2.5.1. Lọc theo kích thước và góc...................................................19
2.2.5.2. Lọc theo số lượng chữ số......................................................21
2.2.5.4. Scanning Line.......................................................................22
2.2.6. Xử lý contour kết quả.......................................................................24
2.3. Kết quả nhận dạng biển số......................................................................25
CHƯƠNG 3: NHẬN DẠNG KÝ TỰ TRONG BIỂN SỐ.............................26
3.1. Tổng quan về bài toán nhận dạng ký tự ................................................26
3.2. Tách ký tự trong biển số xe ....................................................................27
3.2.1. Phương pháp phân tích Histogram....................................................27
3.2.2. Phương pháp tìm Contour.................................................................28
3.3. Các phương pháp rút trích đặc trưng ký tự. ........................................28
3.3.1. Các phương pháp về chia vùng.........................................................28
3.3.2. Biểu đồ chiếu Histogram..................................................................30
3.3.3. Contour profile.................................................................................31
3.3.4. Wavelet Haar....................................................................................31
3.3.5. Cross và Distance.............................................................................31
3.3.6. Binary...............................................................................................32
3.4. Các mô hình nhận dạng...........................................................................32
3.4.1. Một số mô hình nhận dạng ký tự......................................................32
3.4.2. Ứng dụng mô hình mạng Neural cho nhận dạng ký tự.....................34
3.4.2.1. Giới thiệu về mạng Neural......................................................34
3.4.2.2. Một số kiểu mạng Neural........................................................37
3.4.2.3. Mạng Neural lan truyền ngược MLP.......................................39
3.5. Thực nghiệm xây dựng mạng neural......................................................47
CHƯƠNG 4. CÀI ĐẶT THỬ NGHIỆM ỨNG DỤNG NHẬN DẠNG
BIẾN SỐ XE....................................................................................................51
4.1. Cài đặt.......................................................................................................51
4.1.1. Giao diện chương trình...................................................................51
4.1.2. Một số hàm chính trong chương trình............................................52
4.2. Kết quả thực nghiệm................................................................................56
4.3. Kết luận....................................................................................................57
TÀI LIỆU THAM KHẢO..............................................................................58
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
BẢNG 1.1. Quy định biển số cho quân đội.......................................................4
BẢNG 1.2. Quy định biển số cho các tỉnh thành..............................................5
BẢNG 2.1. Tỉ lệ phát hiện biển số....................................................................25
BẢNG 3.1. Một số hàm truyền thông dụng......................................................36
BẢNG 3.2. Mức lỗi và thời gian học theo số lớp ẩn.........................................48
BẢNG 3.3. Mức lỗi và thời gian học theo tốc độ học.......................................48
BẢNG 3.4. Tỉ lệ nhận dạng ký tự theo mức lỗi................................................49
BẢNG 3.5. Tỉ lệ nhận dạng ký tự theo số lượng đặc trưng...............................50
HÌNH 1.1. Ảnh xám và lược đồ xám của ảnh...................................................7
HÌNH 2.1. Ảnh biên Sobel................................................................................11
HÌNH 2.2. Ảnh biên Laplace............................................................................12
HÌNH 2.3. Ảnh gốc (trái) và ảnh nhị phân Otsu (phải).....................................13
HÌNH 2.4. Erosion............................................................................................14
HÌNH 2.5. Dilation...........................................................................................14
HÌNH 2.6. Closing............................................................................................15
HÌNH 2.7. Opening...........................................................................................15
HÌNH 2.8. Bộ lọc Gaussian Blur......................................................................16
HÌNH 2.9. Bộ lọc trung bình ............................................................................16
HÌNH 2.10. Lọc song phương...........................................................................17
HÌNH 2.11. Sơ đồ khối thuật toán....................................................................17
HÌNH 2.12. Các Contour tìm được...................................................................19
HÌNH 2.13. Cấu trúc contour............................................................................20
HÌNH 2.14. Contour không phải biển số..........................................................20
HÌNH 2.15. Các Contour sau khi lọc................................................................21
HÌNH 2.16. Các contour con là chữ số.............................................................21
HÌNH 2.17. Dòng quét và điểm cắt của biển số dài..........................................22
HÌNH 2.18. Dòng quét và điểm cắt của biển số vuông.....................................23
HÌNH 2.19. Dòng quét của vùng không phải biển số........................................23
HÌNH 2.20. Dạng đầu ra sau các bước lọc (các contour lồng nhau).................24
HÌNH 2.21. Kết quả phát hiện biển số..............................................................24
HÌNH 2.22. Một số ảnh biển số phát hiện sai...................................................25
HÌNH 3.1. Sơ đồ nhận dạng ký tự.....................................................................26
HÌNH 3.2. Lược đồ chiếu ngang và chiếu dọc..................................................27
HÌNH 3.3. Sơ đồ tách ký tự biển số..................................................................28
HÌNH 3.4. Chia vùng (Zone)............................................................................28
HÌNH 3.5. 9-zone.............................................................................................29
HÌNH 3.6. Diagonal..........................................................................................30
HÌNH 3.7. Biểu đồ chiếu Histogram.................................................................30
HÌNH 3.8. Contour profile................................................................................31
HÌNH 3.9. Wavelet Haar..................................................................................31
HÌNH 3.10. Crossing và Distance.....................................................................31
HÌNH 3.11. Binary............................................................................................32
HÌNH 3.12. Phân lớp bằng SVM......................................................................33
HÌNH 3.13. Cấu tạo một Neural.......................................................................35
HÌNH 3.14. Mạng tự kết hợp............................................................................37
HÌNH 3.15. Mạng kết hợp khác kiểu................................................................37
HÌNH 3.16. Mạng truyền thẳng........................................................................38
HÌNH 3.17. Mạng phản hồi..............................................................................38
HÌNH 3.18. Mạng neural lan truyền ngược MLP.............................................39
HÌNH 3.19. Ảnh hưởng của kích thước mẫu....................................................46
HÌNH 3.20. Đồ thị biến thiên mức lỗi theo số lớp ẩn.......................................48
HÌNH 3.21. Đồ thị biến thiên mức mỗi theo tốc độ học...................................49
HÌNH 3.22. Đồ thị tỉ lệ nhận dạng theo số lượng đặc trưng..............................50
HÌNH 3.23. Bộ dữ liệu ký tự để train................................................................50
HÌNH 4.1. Giao diện chương trình...................................................................51
HÌNH 4.2. Một số biển không phát hiện được biển số......................................56
HÌNH 4.3. Một số biển không tách đúng ký tự.................................................56
CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG BIỂN SỐ XE

1.1 Khái niệm về hệ thống nhận dạng biển số xe.

1.1.1 Khái niệm

Hệ thống nhận dạng biển số xe là hệ thống có khả năng phân tích hình ảnh và xác
định vùng chứa biển số trên xe, thông qua video, thiết bị ghi hình và hình ảnh.

1.1.2 Lịch sử và phát triển.

Năm 1992, công nghệ ALPR (Automatic License Plate Number) hay còn gọi là tự
động nhận dạng biển số xe, được phát triển tại Đại học Cambridge ở Vương quốc Anh để
ứng phó với chủ nghĩa khủng bố.

Đến năm 1996, công nghệ ALPR đã được hoàn thiện tại mỗi cổng phía tây Vương
quốc Anh để đọc tất cả các biển đăng ký xe từ Ireland. Công nghệ ALPR tiếp tục được
nghiên cứu và phát triển tại Anh. Kể từ tháng ba năm 2006, hầu hết các con đường, các
trung tâm thị trấn, cảng, trạm xăng của London đã được lắp đặt camera chạy phần mềm
ALPR.

Trên thế giới hiện nay, bài toán nhận dạng biển số xe được nghiên cứu và phát triển
một cách sâu rộng. Nhiều tác giả với các công trình nghiên cứu được công bố với tỉ lệ
nhận dạng ngày càng chính xác. Một số bài báo cáo nghiên cứu của các tác giả tiêu biểu
trong vài năm trở lại đây như:

Chirag N. Paunwala, 2010 [1] với nội dung: rút trích vùng số xe trong ảnh. Ảnh đầu
vào được tiền xử lý bằng cách phương pháp nâng cao chất lượng ảnh, sau đó tìm biên
bằng Vertical Edge và xử lý một lần nữa bằng Opening và Closing. Các vùng ứng viên
sau đó được kiểm tra bằng thuật toán scan theo dòng để tìm được vùng chứa biển số xe
chính xác. Kết quả nhận dạng 750 ảnh trong các điều kiện khác nhau cho tỉ lệ 742/750 =
99.2.

Choo Kar Soon, 2012 [2] với nội dung: nhận dạng biển số xe tại Malaysia, sử dụng
giải thuật Adaboots để training tập dữ liệu gồm gần 100 ảnh biển số. Các ký tự được
nhận dạng bằng phương pháp KNN. Kết quả nhận dạng biển số 98% và nhận dạng ký tự
95% trên ảnh tĩnh.

1
Tại Việt Nam, vấn đề nhận dạng cũng được quan tâm và ứng dụng thành công, có thể
kể đến công trình nghiên cứu của các sinh viên Tran Duc Duan, 2004 [3]. Báo cáo này
nghiên cứu cách nhận dạng biển số xe tại Việt Nam với sự kết hợp của biến đổi Hough và
giải thuật tìm Contour để cải thiện kết quả phát hiện. Vùng các ứng viên sau đó tiếp tục
được scan theo dòng để đếm số đối tượng bị cắt và so sánh với ngưỡng, nhằm tìm ra
vùng ứng viên thõa mãn. Kết quả nhận dạng đạt 98-99%.

Phần mềm nhận dạng biển số xe, đã được ứng dụng thực tế tại các trạm cân, trạm gửi
xe, các trụ đèn giao thông để phát hiện xe vi phạm của Biển Bạc, đạt giải thưởng sao
khuê 2011.

1.1.3. Cách thức hoạt động của hệ thống nhận dạng biển số xe.

Hệ thống ALPR (Automatic License Plate Recognition) gồm phần cứng và phần
mềm, trong đó phần cứng là camera thu nhận ảnh xe và phần mềm có chức năng nhận
dạng biển số xe từ ảnh chụp của camera. Camera thu nhận ảnh được đặt tại một vị trí cố
định sao cho có thể quét được hình ảnh xe một cách rõ ràng và chụp lại hình ảnh đối
tượng xe có chứa biển số. Ảnh này được đưa vào phần mềm nhận dạng để trích ra chính
xác biển số xe có trong ảnh, sau đó một thuật toán OCR (Optical Character Recognition)
được sử dụng để lấy từng ký tự và chuyển đổi thành định dạng mà máy tính có thể phân
biệt được các chữ và số như dạng text…Cùng với sự phát triển của công nghệ, camera
ngày nay đã có thể chụp một cách rõ nét trong điều kiện xe chạy với tốc độ cao như ở các
đường cao tốc.

Không có một hệ thống ALPR nào có thể nhận dạng chính xác 100%. Điều đó phụ
thuộc vào nhiều yếu tố như thời tiết, độ sáng, góc của camera tới xe,…Một số yếu tố ảnh
hưởng đến độ chính xác của hệ thống là:

• Độ phân giải của ảnh kém hoặc ảnh bị mờ.


• Điều kiện ánh sáng yếu, bị phản chiếu hoặc che bóng.
• Các đối tượng có dạng tương tự như biển số xe ở ngoại cảnh.
• Sự khác nhau về cấu trúc biển số xe của mỗi nước

1.1.4. Phân loại các ứng dụng nhận dạng biển số xe.

Có nhiều cách thức khác nhau để phân loại các ứng dụng nhận dạng biển số xe. Một
trong những cách đơn giản là phân loại ứng dụng nhận dạng biển số xe thông qua mục
đích sử dụng. Có thể chia ứng dụng nhận dạng biển số xe thành hai loại sau:
2
Loại 1: Giới hạn vùng nhìn

Đầu vào: Ảnh thu trực tiếp từ các thiết bị ghi nhận ảnh kỹ thuật số. Ảnh được ghi
nhận thường chỉ giới hạn trong vùng có biển số xe.

Nguyên lý hoạt động: Các phương tiện giao thông phải chạy với một tốc độ đủ chậm
để máy ghi nhận hình ảnh có thể thu được ảnh vùng biển số xe.

Ứng dụng: Những ứng dụng nhận dạng biển số xe loại này thường được dùng tại các
trạm kiểm soát, các trạm thu phí, các bãi gửi xe tự động, các trạm gác cổng.

Loại 2: Không giới hạn vùng nhìn

Đầu vào: Ảnh đầu vào thu được từ các thiết bị ghi hình tự động, không phụ thuộc vào
góc độ, các đối tượng xung quanh, ảnh không cần bắt buộc chỉ chụp vùng chứa biển số
xe, mà có thể ảnh tổng hợp như chứa thêm các đối tượng như người, cây đường phố..,
miễn là vùng biển số xe phải đủ rõ để có thể thực hiện nhận dạng được ký tự trong vùng
đó.

Nguyên lý hoạt động: Do đặc tính không giới hạn vùng nhìn mà ảnh đầu vào có thể
thu được từ một thiết bị ghi hình (camara, máy ảnh…). Và do đó, công việc đầu tiên là dò
tìm trong ảnh, để xác định đúng vùng nào là biển số xe. Sau đó, thực hiện tách vùng và
nhận dạng. Cuối cùng tùy thuộc vào mục đích sử dụng mà kết quả nhận dạng được truyền
đi hay lưu trữ để phục vụ nhu cầu của người dùng cuối.

Ứng dụng: Vì không phụ thuộc vào hình ảnh thu được nên có thể dùng ứng dụng tại
nhiều nơi như tại những nơi điều tiết giao thông, tại các vị trí nhạy cảm của giao thông
như ngã ba, ngã tư đường giao nhau. Kiểm soát, phát hiện hành vi vi phạm an toàn giao
thông.

1.1.5. Ứng dụng thực tiễn tại Việt Nam

Hệ thống nhận dạng biển số xe được xây dựng nhằm mục đích giám sát, kiểm soát
các phương tiện. Dưới đây chúng ta đề cập đến một số ứng dụng phổ biến đối với hệ
thống nhận dạng biển số xe:

• Thu phí giao thông: Lắp đặt hệ thống “Nhận dạng biển số xe” tại các trạm thu phí
nhằm hỗ trợ hoặc tự động hóa công tác thu phí.
3
• Kiểm soát xe tại các đường biên giới: Mỗi quốc gia đều có những quy định riêng
về biển số xe, để phục vụ cho công tác quản lý và phát hiện những phương tiện
giao thông (xe) vượt biên giới bất hợp pháp. Việc lắp hệ thống “Nhận dạng biển số
xe” tại các trạm kiểm soát sẽ góp phần hỗ trợ công tác kiểm tra và an ninh quốc
gia.
• Các trạm gác cổng: Việc lắp đặt hệ thống “Nhận dạng biển số xe” sẽ hỗ trợ hoặc tự
động hóa công tác mở cổng cho xe vào. Ngoài ra, hệ thống còn được ứng dụng
vào công tác chống trộm xe, các bãi giữ xe tự động, điều tiết giao thông (chẳng
hạn như Thành phố Dublin đã ứng dụng công nghệ “Nhận dạng biển số xe tự
động” trong việc điều tiết giao thông theo dạng biển số chẵn/lẻ).

1.1.6. Phân loại biển số xe.

1.1.6.1. Quy định về màu sắc và các ký tự trên biển số.

• Biển trắng chữ đen dành cho dân sự.


• Màu trắng 2 chữ, 5 số là biển dành cho người nước ngoài.
• NG là xe ngoại giao.
• NN là xe của các tổ chức, cá nhân nước ngoài: Trong đó 3 số ở giữa là mã quốc gia,
2 số tiếp theo là số thứ tự.
( Ghi chú: Xe số 80 NG xxx-yy là biển cấp cho các đại sứ quán, thêm gạch đỏ ở
giữa và 2 số cuối là 01 là biển xe của tổng lãnh sự.)
• Biển đỏ chữ trắng là dành cho quân đội.
Bảng 1.1. Quy định biển số cho quân đội

AT Binh đoàn 12 AD QĐ 4, Binh đoàn Cửu Long


BB Bộ Binh BC Binh chủng công binh
BH Binh chủng hóa học BS Binh đoàn Trường Sơn
BT Binh chủng thông tin liên lạc BP Bộ Tư lệnh biên phòng
HB Học viện lục quân HH Học viện quân y
KA Quân khu 1 KB Quân khu 2
KC Quân khu 3 KD Quân khu 4
KV Quân khu 5 KP Quân khu 7
KK Quân khu 9 PP Các quân y viện
QH Quân chủng hải quân QK,QP QC phòng không không quân
TC Tổng cục chính trị TH Tổng cục hậu cần
TK Tổng cục CN Quốc phong TT Tổng cục kĩ thuật
TM Bộ tổng tham mưu VT Viettel

1.1.6.2 . Quy định về biển số cho các tỉnh thành.


4
Bảng 1.2. Quy định biển số cho các tỉnh thành

11 Cao Bằng 43 Đà Nẵng 77 Bình Định


12 Lạng Sơn 47 Đắc Lắc 78 Phú Yên
14 Quảng Ninh 48 Đắc Nông 79 Khánh Hòa
15,16 Hải phòng 49 Lâm đồng 80 Các Đơn vị TW
17 Thái bình 50-59 TP.HCM 81 Gia lai
18 Nam định 60 Đồng nai 82 Kon tum
19 Phú thọ 61 Bình dương 83 Sóc trăng
21 Yên bái 62 Long an 84 Trà vinh
22 Tuyên quang 63 Tiền giang 85 Ninh thuận
23 Hà giang 64 Vĩnh long 86 Bình thuận
24 Lào cai 65 Cần thơ 88 Vĩnh phúc
25 Lai châu 66 Đồng tháp 89 Hưng yên
26 Sơn la 67 An giang 90 Hà nam
27 Điện biên 68 Kiên giang 92 Quảng nam
28 Hòa bình 69 Cà mau 93 Bình phước
29-32 Hà nội 70 Tây ninh 94 Bạc liêu
33 Hà tây 71 Bến tre 95 Hậu giang
34 Hải dương 72 BR-VT 97 Bắc cạn
35 Ninh bình 73 Quảng bình 98 Bắc giang
36 Thanh hóa 74 Quảng trị 99 Bắc ninh
37 Nghệ an 75 Huế
38 Hà tĩnh 76 Quảng ngãi
Các xe mang biển A: Xe của Công An - Cảnh Sát tương ứng với các tỉnh.

1.2. Phương pháp nhận dạng biển số xe từ ảnh chụp của camera.

Có nhiều phương pháp để giải quyết vấn đề này nhưng đều quy về các phương pháp
chính sau đây:

• Phương pháp dùng chuyển đổi Hough: dựa vào đặc trưng cạnh biên trích được, áp
dụng các phương pháp xác định đường thẳng như phép biến đổi Hough để phát
hiện các cặp đường thẳng gần song song ghép thành một ảnh biển số. Giao điểm
của những đoạn thẳng này chính là vùng bao chứa biển số xe.
• Phương pháp hình thái học: dựa vào đặc trưng hình thái của biển số xe như màu
sắc, độ sáng, sự đối xứng… để xác định và trích ra ảnh biển số.
• Phương pháp khớp mẫu: xem biển số là một đối tượng có khung nền riêng và sử
dụng các cửa sổ dò để trích từng đối tượng đưa qua mạng noron (neural network),
trí tuệ nhân tạo (artificial intelligence) chẳng hạn để phân loại có phải là vùng biển
số hay không.

1.2.1. Phương pháp chuyển đổi Hough.

5
Dò đặc trưng biên ngang, dọc: làm nổi bật các viền bao của tất cả các đối tượng trong
ảnh trong đó có viền bao biển số. Phương pháp sử dụng các bộ lọc gradient để trích được
các đặc trưng cạnh biên này. Nghiên cứu này sử dụng bộ lọc Sobel để tiến hành dò. Dùng
chuyển đổi Hough tìm các đoạn thẳng ngang dọc trên cở sở của ảnh nhị phân biên cạnh
thu được từ bước trên. Tách các đoạn thẳng ngang, dọc có thể là cạnh của biển số.

Trích ứng viên biển số: thành lập các hình chữ nhật là ứng viên cho biển số với tiêu
chí cụ thể là các bộ 4 đoạn thẳng thu được sẽ qua đánh giá về kích thước, tỉ lệ chiều rộng
trên chiều cao so với một ngưỡng nào đó.

Ưu điểm: độ chính xác cao, không phụ thuộc vào màu sắc của biển số xe.

Nhược điểm: Độ phức tạp tính toán khá cao. Khi ảnh có thêm nhiêu đối tượng khác
thì khối lượng tính toán tăng lên rất nhiều do mục đích là phải xác định được vùng con
nào chứa biển số xe và phụ thuộc rất lớn vào bước trích đặc trưng biên cạnh dẫn đến là
các đoạn thẳng ứng viên thu được thường ngắn hơn nhiều so với chiều dọc cũng như
chiều ngang của biển số.

1.2.2. Phương pháp hình thái học.

Nhóm tác giả Chirag N. Paunwala, 2012 [1] đại diện cho phương pháp này, với kết
quả nhận dạng rất tốt 99.5%.

Nội dung của phương pháp: Dựa vào đặc trưng quan trọng là biển số xe máy có độ
sáng (tức mức xám khi chuyển bức ảnh về dạng xám) là tương đối khác so với các vùng
khác trong bức ảnh, cũng như sự phân bố mức xám là khá đồng đều trên biển số và vì vậy
khi được nhị phân hoá, vùng biển số là một đối tượng có đặc thù hình thái, có thể phân
biệt được với các vùng khác . Như vậy các bước thực hiện là:

• Xác định ngưỡng xám. Thực chất là không có phương pháp nào chọn cho đúng
ngưỡng xám để thực hiện. Thay vào đó, ngưỡng xám sẽ được quét trong một
khoảng nào đó. Thông qua lược đồ xám ta nhận thấy vùng biển số thường sẽ có độ
sáng tương đối lớn (từ 130-200) vì vậy ta sẽ xác định ngưỡng xám cần chọn sẽ
thuộc vùng này nhờ đó ta sẽ giảm được thời gian lặp tìm ngưỡng xám.

180
Hình 1.1 Ảnh xám và lược đồ xám của ảnh
• Nhị phân hoá ảnh xám đầu vào với ngưỡng xám đã xác định.
• Lọc các nhiễu gây ảnh hưởng xấu tới đối tượng biển số.
• Gắn nhãn cho các đối tượng trong ảnh nhị phân thu được.
• Trích ra các đối tượng ứng viên biển số theo tiêu chí cụ thể của biển số xe về chiều
cao, chiều rộng, tỉ lệ các cạnh, diện tích, trọng tâm, số điểm cắt…

1.3. Phương pháp nhận dạng ký tự trong biển số xe.

Phương pháp phổ biến nhất để nhận dạng ký tự là sử dụng mạng noron (hay SVM,
K-NN,…), tức là huấn luyện cho máy tính để nhận dạng các ký tự. Tuy nhiên do số
lượng ký tự trên biển số là không nhiều nên để đảm bảo tốc độ xử lý, chúng ta cũng có
thể sử dụng phương pháp Hình thái học để giải quyết khâu này bởi vì các ký tự đều có
những đặc điểm hình thái đặc biệt có thể phân biệt với nhau chẳng hạn như “0” có lỗ
trống ở giữa, “8” có 2 lỗ trống hay “X” đối xứng 2 trục dọc và ngang…Khâu này được
thực hiện trên cơ sở xây dựng cây nhị phân tối ưu của các đặc điểm hình thái nên đảm
bảo tính khoa học và tính chính xác cao. Thuật toán cơ bản của khâu này như sau:

• Quan sát chọn ra các đặc tính phân biệt ký tự để xây dựng ma trận đặc tính.
• Xây dựng cây nhị phân tối ưu từ ma trận đặc tính và tập ký tự thu được.
• Quan sát cây nhị phân, kiểm tra số đặc tính như vậy đã đủ để nhận dạng chưa,
thiếu (dư) thì phải bổ sung (bỏ đi) và quay lại bước đầu tiên.
• Tiến hành nhận dạng các ký tự trên cơ sở cây nhị phân tối ưu tìm được.

1.4. Phạm vi nghiên cứu và hướng giải quyết.

Trong đồ án này, công việc của tôi là giải quyết vấn đề phát hiện vùng chứa biển số
xe và nhận dạng ký tự trong biển số. Với bài toán phát hiện vùng chứa biển số cách tiếp
cận theo phương pháp hình thái học để phát hiện vùng biển số cho các biển đăng ký xe
của Việt Nam. Bài toán nhận dạng ký tự sẽ sử dụng mô hình mạng Neural để tiến hành
nhận dạng.

Một số đặc điểm để nhận dạng biển số xe tại Việt Nam.

a) Tiêu chuẩn về kích thước (theo quy định của Bộ Giao Thông Vận Tải)

7
Ở mỗi nước thường có tiêu chuẩn về kích thước nhất định. Đối với nước ta, biển số
xe qui định khá đồng đều cho mỗi loại xe, tỷ lệ chiều dài, rộng cho mỗi loại xe là như
nhau. Quy định về kích thước như sau:
• Biển ô tô
- Chiều cao: 110 mm. Chiều rộng: 470 mm (biển dài).
- Chiều cao: 200 mm. Chiều rộng: 280 mm (biển vuông).
• Biển xe máy:
- Chiều cao: 140 mm. Chiều rộng: 190 mm.

Như vậy, tỉ lệ Chiều cao / Chiều rộng là:

• 0.18 < Chiều cao/Chiều rộng < 0.3 (biển số có 1 hàng).


• 0.6 < Chiều cao/Chiều rộng < 0.85 (biển số xe có 2 hàng).

Từ các đặc điểm này, ta có thể xác định được vùng nào có khả năng là biển số theo
ràng buộc về kích thước.

b) Tiêu chuẩn về ký tự.


Theo đo đạc trên biển số thực tế, mỗi ký tự thường có tỷ lệ kích thước về chiều rộng,
chiều cao tương ứng với chiều dài và rộng của biển số xe. Ví dụ, chiều cao của mỗi ký tự
luôn nhỏ hơn 85% chiều cao của biển số xe và luôn lớn hơn 60% chiều cao của biến xe
đối với biển số xe có một hàng, với biển số xe có hai hàng thì chiều cao mỗi kí tự không
quá 50% chiều cao của biển số xe. Chiều rộng của ký tự thường không lớn hơn 20%
chiều cao của mỗi ký tự. Mỗi ký tự của biển số xe được xem như là một vùng liên thông
con hay contour con (bao đóng). Do đó, chúng ta có thể đếm số contour con thỏa mãn
tính chất đó là ký tự. Ở nước ta chỉ có số ký tự trên mỗi biển số xe nằm trong khoảng 6
đến 9 ký tự.

Từ những phân tích trên, có thể tóm tắt phương pháp thực hiện của tôi như sau:

Bước 1: Ảnh đầu vào là ảnh màu BGR, tiền xử lý bằng các thuật toán xử lý ảnh.

Bước 2: Tìm các contour trên ảnh xe. (Mỗi contour là 1 vùng bao kín, do vùng biển
số là 1 vùng bao kín nên sẽ tương ứng với một contour)

Bước 3: Lọc các contour theo các tiêu chí như kích thước, góc, tỉ lệ, số kí tự,…

Bước 4: Xử lý kết quả đầu ra để lấy vùng biển số

Bước 5: Tách ký tự trên vùng biển số tìm được

Bước 6: Đưa tập ký tự đã tách vào mạng Neural để nhận dạng


8
Bước 7: Hiển thị kết quả lên giao diện chương trình

Chương tiếp theo sẽ trình bày kĩ hơn về các bước thực hiện.

CHƯƠNG 2: PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE

Trong chương này sẽ trình bày chi tiết phương pháp phát hiện biển số xe trong ảnh và xử
lý kết quả để hiển thị vùng biển số.

2.1. Cơ sở lý thuyết

2.1.1. Tổng quan về ảnh số.

Ảnh nhị phân chỉ chứa hai giá trị 0 hoặc 1 (hoặc 0 và 255 tùy theo quy định của cấu
trúc ảnh). Theo đó, giá trị 0 sẽ là giá trị ứng với những điểm đen trên ảnh và giá trị 1
(hoặc 255) sẽ là giá trị ứng với những điểm trắng.

9
Ảnh xám: Sử dụng 8 bit để biểu diễn mức xám, giá trị của mỗi pixel nhận giá trị
nguyên từ 0 - 255. Với mức 0 biểu diễn cho mức cường độ tối nhất và 255 biểu diễn cho
mức cường độ sáng nhất.

Ảnh màu: Cách biểu diễn cũng tương tự như với ảnh xám, chỉ khác là mỗi pixel được
tổ hợp bởi các màu riêng biệt. Ví dụ hệ màu Red-Green-Blue (RGB), mỗi pixel được
tổng hợp từ 3 màu Red, Green và Blue. Mỗi màu được biểu diễn bởi 8 bit và có dải từ 0 -
255. Các kênh màu thường được sử dụng: RGB, YCbCr, HSV.

2.1.2. Biên và các phương pháp phát hiện biên

Biên là một vấn đề chủ yếu và quang trọng trong phân tích ảnh vì các kỹ thuật xử lý
ảnh chủ yếu dựa vào biên. Một điểm ảnh có thể coi là điểm biên nếu có sự thay đổi đột
ngột và mức xám hay biên là điểm có cấp xám có giá trị khác hẳn các điểm xung quanh.
Tập hợp các điểm biên tạo thành biên hay đường bao của ảnh.

a) Sobel

Biên ảnh được thiết lập bằng cách nhân chập ảnh với mặt nạ, được xấp xỉ bởi công thức:
Gx = H x ⊗ I hoặc Gy = H y ⊗ I

Trong đó Gx là ảnh biên, Hx và Hy là mặt nạ theo hướng ngang hoặc dọc, I là ma trận
điểm ảnh ban đầu. Mặt nạ Sobel được cho bởi 2 trận sau:
−1 0 1 −1 −1 −1
H 1 = −1 0 1 H2 = 0 0 0
−1 0 1 1 1 1

Hình 2.1 Ảnh biên Sobel


b) Laplace

Phương pháp đánh giá gradient ở trên làm việc khá tốt khi độ sáng thay đổi rõ nét.
Khi mức xám thay đổi chậm, miền chuyển tiếp trải rộng, phương pháp hiệu quả hơn đó là

10
phương pháp sử dụng đạo hàm bậc 2, gọi là phương pháp Laplace. Toán tử Laplace được
định nghĩa như sau:

∂2 f ∂2 f
∇2 f = +
dx 2 dy 2

Toán tử Laplace dùng nhiều kiểu mặt nạ khác nhau để xấp xỉ rời rạc đạo hàm bậc hai.
Dưới đây là 3 kiểu mặt nạ hay dùng:

0 −1 0 −1 −1 −1 1 −2 1
H 1 = −1 4 −1 H 2 = −1 8 −1 H 3 = −2 5 −2
0 −1 0 −1 −1 −1 1 −2 1

Trong không gian rời rạc đạo hàm bậc 2 có thể tính:

∂2 f
= 2 f ( x, y ) − f ( x −1, y ) − f ( x +1, y )
∂x 2
∂2 f
= 2 f ( x, y ) − f ( x, y −1) − f ( x, y +1)
∂y 2

Vậy:
∇2 f = − f ( x −1, y ) − f ( x, y −1) + 4 f ( x, y ) − f ( x, y +1) − f ( x +1, y )

Kỹ thuật Laplace tạo đường biên mảnh ( có độ rộng 1 pixel). Nhược điểm của kỹ
thuật này là rất nhạy với nhiễu, do đó đường biên thu được thường kém ổn định.

Hình 2.2 Ảnh biên Laplace

c) Canny

Bộ tách sườn ảnh theo Canny (1986) dựa trên cặp đạo hàm riêng bậc nhất với việc
làm sạch nhiễu. Mục này được để riêng vì đây là phương pháp tách đường biên khá phổ
biến được biết đến như là phương pháp dò tối ưu, nó đáp ứng được ba tiêu chí sau:

- Tỷ lệ lội thấp: phát hiện tốt các cạnh.

11
- Phân vùng tốt: Khoảng cách giữa các điểm ảnh cạnh phát hiện và pixel thực tế
phải được giảm nhiễu.
- Đáp ứng tối thiểu: có cách dò cho mỗi cạnh.

Giảm nhiễu: Để thực hiện việc giảm nhiễu bộ lọc Gaussian được sử dụng. Một hạt
nhân Gaussian có cỡ bằng 5 có thể được sử dụng dưới đây:

Tìm gradient cường độ của hình ảnh. Điều này được thực hiện tương tự như Sobel.

- Áp dụng một cặp mặt nạ theo hướng x và y:

- Tìm gradient và hướng được làm tròn đến một trong bốn góc có thể ( cụ thể là
0,45,90 hay 135).

- Canny sử dụng hai ngưỡng cao và thấp.


• Nếu một pixel cao hơn ngưỡng trên (cao), điểm ảnh chấp nhận là một cạnh.
• Nếu một pixel thấp hơn ngưỡng thấp, nó sẽ bị từ chối.
• Nếu ở giữa hai ngưỡng. Nó sẽ được chấp nhận khi nó gần với một pixel ở
trên ngưỡng cao.

2.1.3. Nhị phân hóa ảnh.

Nhị phân hóa là quá trình biến một ảnh màu hoặc ảnh xám thành ảnh nhị phân. Ảnh
nhị phân chỉ chứa hai giá trị 0 hoặc 1 (hoặc 0 và 255). Công thức để nhị phân ảnh là đặt
tất cả các giá trị của ảnh xám về 0 nếu chúng bé hơn một ngưỡng T cho trước và về 255
nếu chúng lớn hơn ngưỡng T đó. Vấn để ở đây là với ngưỡng T như thế nào thì cho ta
được tấm ảnh nhị phân như ý muốn, nghĩa là ảnh làm nổi các vùng đối tượng và nền.
Việc xác định giá trị T là rất khó vì chúng phụ thuộc vào từng điều kiện chiếu sáng khác
12
nhau của môi trường. Với môi trường này T nhận một giá trị, môi trường khác lại một giá
trị khác. Do đó, chúng ta sẽ nhị phân ảnh theo phương pháp Otsu [4]. Thuật toán này sẽ
tính toán và đưa ra ảnh nhị phân có ngưỡng hợp lý nhất. Việc biến đổi ảnh xám thành ảnh
nhị phân sẽ dễ dàng xử lý các thuật toán liên quan đến pixel ảnh như đếm pixel đen
trắng…

Hình 2.3 Ảnh gốc (trái) và ảnh nhị phân Otsu (phải)

2.1.4. Các phép biến đổi hình thái học (Morphology) cơ bản.

Mục đích chính của các phép biến đổi hình thái học nhưng làm giảm bớt các chi tiết
thừa trong ảnh để làm nổi rõ những mảng chính, hoặc làm trơn các cạnh biên, lấp các hố,
các lỗ trống, khử lồi lõm trên đường biên,… Một số phương pháp biến đổi hình thái học
cơ bản là: Erosion, Dilation, Opening và Closing.

Erosion: được sử dụng trên ảnh nhị phân để làm xói mòn hay loại bỏ bớt phần dính
liền tại ranh giới giữa các vùng. Ký hiêu . Pixel dưới điểm neo được thay thế
bằng giá trị pixel nhỏ nhất bị chồng lên bởi mặt nạ cấu trúc.

13
Hình 2.4. Erosion

Dialation: được sử dụng để mở rộng vùng hoặc lấp đầy khoảng trống giữa ranh giới 2
vùng. Ký hiệu của phép này là . Pixel dưới điểm neo được thay thế bằng giá trị
pixel lớn nhất bị chồng lên bởi mặt nạ cấu trúc.

Hình 2.5. Dilation

Closing: là việc thực hiện liên tiếp phép Dilation và sau đó là Erode

Hình 2.6. Closing

Opening: là việc thực hiện liên tiếp phép Erode và Dilation, có tác dụng làm mịn
đường biên của một đối tượng, loại bỏ những chỗ lồi lõm.

14
Hình 2.7. Opening

2.1.5. Các phương pháp nâng cao chất lượng ảnh.

Nhiễu trong ảnh là do nhiều nguyên nhân bao gồm: sự thoái hóa theo thời gian, quá
trình sao chép. Một số kỹ thuật xử lý ảnh sẽ được áp dụng để loại bỏ nhiễu. Sau khi được
xám hóa, ảnh sẽ được lọc để giảm nhiễu. Trên thực thế tồn tại nhiều loại nhiễu, tuy nhiên
người ta thường xem xét 3 loại chính: nhiễu cộng, nhiễu nhân và nhiễu xung. Chúng xuất
hiện những điểm ảnh khác biệt so với vùng xung quanh, do đó để lọc nhiệu người ta
thường sử dụng bộ lọc thông thấp hay trung bình. Với nhiễu cộng và nhiễu nhân ta dùng
các bộ lọc thông thấp, trung bình, với nhiễu xung ta dùng lọc trung vị giả trung bị. Sau
đây là một số bộ lọc thường dùng.

a) Bộ lọc Gaussian

Gaussian Blur là cách làm mờ một ảnh bằng hàm Gaussian. Nó cũng là công cụ phổ
biến để thực hiện quá trình tiền xử lý (preprocessing), nó có thể giúp làm giảm nhiễu
(Noise) và mức độ chi tiết (không mong muốn) của hình ảnh. Một cách trực quan, đây
được xem như là phương pháp làm mờ mịn cũng giống như hiệu ứng hình ảnh được đặt
dưới một lớp màn trong suốt bị mờ. Trong toán học, việc ứng dụng Gaussian Blur cho
một hình cũng chính là tính tích chập (Convolution) hình đó với hàm Gaussian.

15
Hình 2.8. Bộ lọc Gaussian Blur

b) Lọc trung bình

Lọc trung bình là kĩ thuật lọc tuyến tính, hoạt động như một bộ lọc thông thấp. Trong
lọc bình, ta sử dụng một cửa sổ lọc quét qua lần lượt từng điểm ảnh của ảnh đầu vào
input. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng 3x3 của
ảnh gốc “lấp” vào ma trận lọc. Giá trị điểm ảnh của ảnh đầu ra là giá trị trung bình của tất
cả các điểm ảnh trong cửa sổ lọc.

Hình 2.9. Lọc trung bình

c) Lọc song phương (Bilateral)

Hầu hết các bộ lọc có mục tiêu chính là làm mịn hình ảnh đầu vào. Tuy nhiên các bộ
lọc không chỉ giảm nhiễu mà còn làm mờ các cạnh. Để tránh điếu này chúng ta xử dụng
bộ lọc song phương.

16
Hình 2.10. Lọc song phương

2.2. Thuật toán phát hiện vùng chứa biển số xe

Xuất phát từ ý tưởng mỗi vùng biển số là 1 vùng bao kín (contour), ta có thể tìm các
contour trên ảnh có biển số và sau đó lọc ra contour thõa mãn điều kiện là biển số.

2.2.1. Sơ đồ khối của thuật toán.

Ảnh đã xử lý Tập các Contour


Luồng 1đến N

Ảnh vào

Ảnh biển số
Contour
Lọc Contours Lọc Contours
Xử lý co
Scanning
theo số ký tự theo kích thước
kết quả Line

2.2.2. Ảnh đầu vào. Hình 2.11. Sơ đồ khối thuật toán

Ảnh được chụp bằng máy ảnh kỹ thuật số, định dạng JPEG. Thư viện EmguCV xử lý
việc nhận ảnh, xử lý ảnh, hiển thị ảnh lên màn hình PC. Một số yêu cầu đối với ảnh đầu
vào như sau:

• Độ phân giải tối thiểu 640 x 480.


• Chiếc xe hiển thị rõ ràng trên ảnh, có tỉ lệ tương đối dễ thấy trên ảnh.
17
• Ảnh chụp với điều kiện ánh sáng ban ngày, góc chụp không quá 40 độ.
• Vùng biển số phải có độ tương phản nhất định đối với vùng xung quanh và có thể
đọc được rõ nét bằng mắt thường.

2.2.3. Tiền xử lý

Ảnh vào ở hệ màu RGB được biến đổi sang ảnh xám với 256 mức xám, đồng thời
resize kích thước ảnh về 640x480. Do ảnh đầu vào được chụp ở các khung cảnh khác
nhau, góc chụp khác nhau và hình dáng cũng như mức độ nhạy sáng của vùng chứa biển
số xe đa dạng, nên mỗi phương pháp tiền xử lý khác nhau sẽ ảnh hưởng đến khối xử lý
“Tìm Contours”. Qua kiểm nghiệm trên tập 300 ảnh đầu vào, nếu chỉ sử dụng một cách
tiền xử lý cho ảnh thì kết quả đầu ra sau khi thực hiện khối “Tìm Contour” không được
như mong đợi. Vì vậy, chương trình sẽ áp dụng 3 cách tiền xử lý để cho ra 3 ảnh đã được
xử lý theo các cách khác nhau từ ảnh gốc ban đầu đưa vào.

• Ảnh 1: Lọc song phương  Tìm biên Laplace


• Ảnh 2: Lọc nhiễu Gaussian  tìm biên Canny
• Ảnh 3: Lọc nhiễu Gaussian  tìm biên Sobel  Closing  Opening  Nhị phân
Otsu  Dilation  Tìm biên Canny (theo phương pháp Suman K. Mitra [5]).

Mỗi ảnh này sau khi xử lý xong sẽ trở thành ảnh biên, ảnh biên này sẽ được đưa vào
khối “Tìm Contour” để tìm contour.

2.2.4. Tìm Contours.

Contour là những vùng được tạo ra bởi


một vùng biên kín. Mỗi Contour lưu trữ
như tập các điểm biên và dược xấp xỉ
thành hình dạng một đa giác có n cạnh.
Mỗi vùng biển số đều là một vùng biên kín
nên nó sẽ tương ứng với một contour. Khối
tìm Contour sử dụng thư viện EmguCV có
18

Hình 2.12. Các contour tìm được


tác dụng tìm tất cả các contour trong đó có
chứa contour là biển số. Tập các contour
này được đưa vào các khối tiếp theo để lọc
bỏ các contour không chứa biển số.

2.2.5. Lọc Contour

Các khối này có chức năng lọc các Contour được tạo ra ở bước “Tìm Contour” để tìm
ra vùng chứa biển số xe một cách chính xác nhất. Các Contour trong tập Contour sẽ lần
lượt đi qua các bộ lọc để cho ra kết quả là một số tối thiểu các Contour chứa biển số xe.
Các bộ lọc được cài đặt để làm việc này là:

• Lọc theo kích thước và góc.


• Lọc theo số lượng các đối tượng là chữ số.
• Scanning line.

2.2.5.1. Lọc theo kích thước và góc

a) Tiêu chí lựa chọn:

Căn cứ vào kích thước biển số xe Việt Nam, tỉ lệ Chiều cao/Chiều rộng (Ratio) của
biển số xe nằm trong khoảng:

• Biển vuông: 0.62 < Ratio < 0.88


• Biển dài: 0.18 < Ratio < 0.32

Do vị trí xe chiếm một diện tích tương đối lớn trên ảnh đầu vào nên diện tích phần
biển số cũng sẽ có kích thước tương đối lớn. Ảnh đầu vào 640x480 px nên chọn ngưỡng
cho biển số như sau là đủ để nhận dạng và đọc được rõ ràng các chữ số:

• Biển vuông: 50 < H và W > 55 (đv: pixel)


• Biển dài: 25 < H và W > 80 (đv: pixel)

b)nCấu trúc Contour trong EmguCV.

-90
Contour

w 0
h
19
Hình 2.13. Cấu trúc contour

Với cấu trúc như trên, nếu α ≤ -45 thì chiều cao phải lớn hơn chiều rộng, ngược lại là
không phải biển số xe. Nếu α ≥ -15 thì chiều rộng phải lớn hơn chiều cao, ngược lại
cũng không phải vùng biển số (xem Hình 2.14)

Không phải biển số


-90
( h < w)

w
α = -70

h 0

-90 Không phải biển số


(w < h)

w α = -10
0
Hình 2.14. Contour không phải biển số

Hình 2.15. Các Contour sau khi lọc

2.2.5.2. Lọc theo số lượng chữ số.

20
Với mỗi Contour ứng viên (Contour cha), ta sẽ đếm số lượng chữ số có trên nó bằng
cách đếm số contour con (mỗi contour con tương ứng với một chữ). Để tìm được các
contour con, ta tiến hành phân ngưỡng nhị phân cho vùng ảnh được cắt ra bởi Contour
cha, sau đó dùng hàm tìm Contour. Trong số rất nhiều các contour con được tìm thấy, để
xác định contour nào chứa ký tự số, contour nào không chứa ký tự thì ta có một số tiêu
chí sau đây để loại bỏ:

 Kích thước contour


 Biển dài: chiều cao contour con nằm trong khoảng từ 65% đến 85% chiều cao
biển số, chiều rộng contour con không lớn hơn 80% chiều cao của nó.
 Biển vuông: chiều cao contour con nằm trong khoảng từ 33% đến 60% chiều
cao biển số, chiều rộng contour con không lớn hơn 80% chiều cao của chính nó.

Hình 2.16. Các contour con là chữ số

 Góc nghiêng của contour


Do hình dạng chữ số là hình chữ nhật đứng, nên vùng contour là chữ số phải có
dạng tương ứng. Vì đặc điểm cấu trúc Contour trong EmguCV được quy định như
phần trên đã trình bày, nên ta sẽ có phương pháp loại trừ sau:
- Contour có góc nghiêng < -45, chiều rộng phải lớn hơn chiều cao
- Contour có góc nghiêng > -45, chiều rộng phải nhỏ hơn chiều cao
 Contour đè lên cạnh biển số thì loại bỏ
 Hai contour nằm chồng lên nhau
Trong một vài trường hợp, sẽ xảy ra tình trạng 2 contour cùng đè lên một ký tự số,
do đó, contour nào có góc nghiêng nhỏ nhất sẽ được lấy, contour còn lại có góc
lớn hơn bị loại bỏ.

Sau khi có được các contour con thõa tiêu chí, ta tiến hành đếm số lượng contour con
này. Nếu số lượng nằm trong ngưỡng từ 7-9 (tương ứng với 7-9 chữ số trên biển xe) thì
Contour cha có khả năng là biển số xe, nếu nằm ngoài ngưỡng thì loại bỏ.

2.2.5.4. Scanning Line.

21
Dựa theo phương pháp của Chirag N. Paunwala, 2010 [1]

Bước tiếp theo của quá trình lọc là scan mỗi vùng contour bởi các dòng quét, sau đó
đếm số điểm cắt bị cắt bởi các dòng quét trên biển số.

1/3
2/3

Hình 2.17. Dòng quét và điểm cắt của biển số dài.

Với mỗi contour ứng viên của biển số dài, cắt qua 2 đường như Hình 2.16, đường
thứ nhất có vị trí bằng 1/3 chiều cao của contour, đường thứ 2 có chiều cao 2/3 chiều cao
contour. Số điểm cắt là số lần đường cắt đi qua 1 vùng gồm các pixel đen. Theo Hình
2.16 ta thấy đường 1 cắt số 8 thứ nhất 2 lần (2 dấu cộng) nên đối tượng số 8 sẽ có 2 điểm
cắt, tương tự ta tính được đường 1 có 16 điểm cắt, đường 2 có 13 điểm cắt, tổng cộng có
29 điểm cắt cho ở 2 đường.

Tương tự với biển số vuông, cắt qua 4 đường như Hình 2.18, đường 1 có 7 điểm,
đường 2 có 6 điểm, đường 3 và đường 4 mỗi đường có 8 điểm. Tổng số điểm cắt trên
biển số vuông là 29 điểm cắt.

1/6
1/3

2/3
5/6

Hình 2.18. Dòng quét và điểm cắt của biển số vuông.

Với vùng không phải biển số, số điểm cắt rất ít do khi nhị phân, số vùng gồm pixel
đen tách biệt là không nhiều nên ta có thể phân biệt vùng nào vùng biển số thông qua số

22
điểm cắt. Trên Hình 2.19, đường 1 có 6 điểm cắt, đường 2 có 3 điểm cắt. Tổng cộng 9
điểm cắt.

1/3
2/3

Hình 2.19. Dòng quét và điểm cắt của vùng không phải biển số.

Đối với biển số dài có tối đa 8 chữ số trên một hàng, số điểm cắt tối đa là 32 điểm cắt
khi mỗi đường cắt qua 2 lần trên mỗi chữ số, số điểm cắt tối thiểu là 16 khi cắt mỗi chữ
số 1 lần.

Đối với biển số vuông, hàng thứ nhất có tối đa 4 chữ số, hàng thứ 2 có tối đa 5 chữ
số, số điểm cắt tối đa của 2 đường cho hàng thứ nhất là 16, hàng thứ hai là 30.

Dựa vào thực nghiệm kiểm tra trên tập dữ liêu, ngưỡng thích hợp để xác định vùng
biển số (đã dự tính đến nhiễu) và không biển số là:

• Biển dài: 16 < số điểm cắt < 40


• Biển vuông: 16 < số điểm cắt < 50.

2.2.6. Xử lý contour kết quả.

Kết quả sau các bước lọc sẽ cho ra vùng có khả năng là biển số. Với một ảnh đầu
vào, sẽ cho ra tương ứng 1 contour cho 1 vùng biển số xe. Do phương pháp này dùng 3
ảnh để xử lý tìm contour, cho nên vùng biển số xe trên ảnh này sẽ có tối đa 3 contour
cùng khoanh vùng lên nó.

Contour 1
Vùng biển số

79H-456.67
Contour 2
Hình 2.20. Dạng đầu ra sau các bước lọc (các contour lồng nhau).

23
Các contour này đều thể hiện chính xác vùng biển số nên ta sẽ chọn 1 ra contour
thích hợp duy nhất cho vùng biển số này như thế nào ? Có 2 cách do tôi đề xuất như sau:

• Cách thứ nhất :


- Tính trung bình tỉ lệ của các contour cùng loại (dài hoặc vuông), đặt là
ratioavg.
- Tính sai số Delta của mỗi contour: là độ chênh lệch ratio của mỗi contour với
ratioavg. Contour nào có Delta nhỏ nhất (lệch ít nhất) sẽ được chọn là Contour
kết quả cuối cùng.
• Cách thứ 2: cách này đơn giản hơn, là tính số pixel đen trên mỗi vùng contour,
vùng nào chứa ít pixel đen hơn (ít pha tạp ngoại cảnh) thì là vùng chứa biển số.

Sau khi có được Contour kết quả, ta sẽ tiến hành Crop ảnh theo Contour để ra được ảnh
chỉ có biển số xe.

Hình 2.21. Kết quả phát hiện biển số

2.3. Kết quả phát hiện biển số.

Test chương trình trên tập 376 ảnh bất kỳ biển số xe Việt Nam (trong đó 150 ảnh
biển số vuông, 226 ảnh biển số dài), điều kiện ánh sáng có thể nhìn rõ biển số bằng mắt
thường, góc chụp phần lớn là không lớn hơn 40 độ. Chạy lần lượt các ảnh bằng demo,
quan sát kết quả nhận dạng bằng mắt. Kết quả kiểm nghiệm thu được như sau:

Bảng 2.1. Tỉ lệ phát hiện biển số

Biển số vuông Biển số dài Kết quả chung


Số ảnh 150 226 376
Phát hiện đúng 130 205 335
Phát hiện sai 20 21 41
Tỉ lệ phát hiện đúng 86.6% 90.7% 89%

24
Tỉ lệ phát hiện sai 13.4% 9.3% 11%
Thời gian nhận dạng < 1s < 1s < 1s

Một số nguyên nhân dẫn đến nhận dạng sai

Biển bị bóng, phản chiếu Biển số bị tối, thiếu ánh sáng Biển dơ, mù, ố vàng

Hình 2.22. Một số ảnh biển số phát hiện sai

CHƯƠNG 3: NHẬN DẠNG KÝ TỰ TRONG BIỂN SỐ

3.1. Tổng quan về bài toán nhận dạng ký tự

Bài toán nhận dạng tuy ra đời từ thập niên 60 của thế kỷ trước nhưng vẫn luôn nhận
được sự quan tâm, nghiên cứu của nhiều nhà khoa học trên thếgiới. Trong những thập
niên gần đây, cùng với quá trình đẩy mạnh tin học hóa trong mọi lĩnh vực đời sống xã
hội, nhận dạng không chỉ còn là lĩnh vực nghiên cứu lý thuyết nữa mà đã được ứng dụng
rộng rãi trong thực tế cuộc sống. Các bài toán nhận dạng được nghiên cứu nhiều nhất
hiện nay bao gồm nhận dạng các mẫu hình học (vân tay, mặt người, hình khối,…), nhận
dạng tiếng nói và nhận dạng ký tự. Chúng được áp dụng vào nhiều lĩnh vực như y học,
dự báo thời tiết, dự báo cháy rừng, điều khiển robot, ... Trong các bài toán nhận dạng này,
nhận dạng ký tự là bài toán đang được ứng dụng phổ biến nhất hiện nay.

25
Nhận dạng ký tự bao gồm hai kiểu chính là nhận dạng chữ in và nhận dạng chữ viết
tay. Bài toán nhận dạng ký tự biển số xe cũng là 1 nhánh thuộc nhận dạng ký tự phương
pháp hoàn toàn tương tự. Cho đến nay bài toán nhận dạng chữ in đã được giải quyết khá
trọn vẹn với sự ra đời của nhiều hệ thống nhận dạng đạt tới độ chính xác gần như tuyệt
đối. Tiêu biểu có hệ nhận dạng chữ in dựa trên mô hình mạng nơron bốn lớp của J. Wang
và J.S.N. Jean đạt tới tỷlệ chính xác 99.75%. Ở Việt Nam hiện đã có sản phẩm VNDOCR
của Viện Công nghệ thông tin nhận dạng chữ in tiếng Việt với độ chính xác tới 99%.

Ngày nay cùng với sự phát triển về mặt lý thuyết, công nghệ, có rất nhiều hướng
đi cho việc giải quyết bài tốn này như: nhận dạng kí tự dựa trên cấu trúc hay cách tiếp
cận khác như dùng: logic mờ, giải thuật di truyền, mô hình xác suất thống kê, mô hình
mạng nơron. Đặc biệt trong những năm gần đây mô hình mạng nơron được quan tâm
nhiều do khả năng tổng hợp của mô hình và sự phát triển về tốc độ xử lí của máy tính.

Hình 3.1. Sơ đồ nhận dạng ký tự

Trong đó:

• Tiền xử lý: là quá trình chuẩn hóa dữ liệu vào, gồm các công việc như xử lý nhiễu,
chuẩn hóa kích thước dữ liệu, …
• Trích chọn đặc trưng: là quá trình tìm ra các thông tin hữu ích và đặc trưng nhất cho
mẫu đầu vào để sử dụng cho quá trình nhận dạng.
• Nhận dạng: là quá trình sử dụng một mô hình nhận dạng cụ thể với một thuật toán cụ
thể để trả lời mẫu đầu vào là ký tự nào.
• Hậu xử lý: là quá trình xử lý kết quả cho phù hợp với từng ứng dụng cụ thể.

3.2. Tách ký tự trong biển số xe.

Mục đích chính của phần này là tách riêng từng ký tự để làm mẫu cho huấn luyện và
nhận dạng các ký tự. Có 2 phương pháp có thể sử dụng ở bước này như sau:

3.2.1. Phương pháp Phân tích Histogram


26
Phân tích Histogram theo chiều ngang, ta đánh dấu được 2 vị trí tách dòng trên biển
số đối với biển vuông và 1 dòng đối với biển dài. Do mỗi dòng trên biển số có độ cao
nhất định đó là độ cao của ký tự trên biển số nên ta chọn ngưỡng để tách dòng là độ cao
tối thiểu của 1 ký tự trên biển số.

Tiếp theo, ta phân tích Histogram theo chiều dọc, ta đánh dấu được 2 vị trí tách ký tự
trên biển. Mỗi ký tự trên biển số có độ rộng nhất định và ta lấy ngưỡng là độ rộng của số
1 (số 1 có độ rộng nhỏ nhất).

Hình 3.2. Lược đồ chiếu ngang và chiếu dọc

Nhược điểm lớn nhất của phương pháp này là phụ thuộc nhiều vào độ nghiêng biển
số, khi biển số không nằm phương ngang, việc xác định ngưỡng vô cùng khó khăn.

3.2.2. Phương pháp tìm Contour.

Tư tưởng chính trong phương pháp này là tìm các contour (tương ứng với mỗi ký tự),
so sánh với ngưỡng chữ số trên biển (khoảng từ 7 đến 9 ký tự cho biển số xe Việt Nam).

Việc đầu tiên ta sẽ nhị phân ảnh biển số. Vấn đề mấu chốt ở phương pháp này là
chọn ngưỡng nhị phân bao nhiêu để cho ra rõ ràng nhất, đầy đủ nhất các ký tự. Chính vì
không có phương pháp nào hữu ích cho việc chọn ngưỡng nhị phân, nên ta sẽ quét
ngưỡng trong một khoảng nhất định (ở đây ta sẽ chọn khoảng từ 30-170 với bước nhảy là
5). Vỡi mỗi ngưỡng, ta tiến hành nhị phân, tìm các contour thõa mãn là 1 ký tự số xe
(thông qua bước các bước lọc contour), sau đó đếm số lượng các contour này và ghi nhận
lại. Tiếp tục nhảy lên ngưỡng tiếp theo, đếm số lượng contour, nếu số lượng contour sau
lớn hơn số lượng contour trước (có nghĩa là tìm thêm được vài ký tự nữa) thì ghi nhận lại
số lượng contour lớn nhất, ngược lại thì không ghi nhận. Lặp lại các bước trên đến
ngưỡng 170, so sánh số lượng contour tìm được lớn nhất được ghi nhận với ngưỡng từ 7

27
đến 9 ký tự, nếu nằm ngoài ngưỡng này thì biển số đó không tìm được đầy đủ các vùng
ký tự thõa mãn. Sơ đồ tách ký tự biển số như sau:

Hình 3.3. Sơ đồ tách ký tự biển số

Ưu điểm của phương pháp này là không phụ thuộc vào độ nghiêng biển số, tuy nhiên
cần có thuật toán lọc contour thích hợp để cho ra đúng vùng contour là ký tự.

3.3. Các phương pháp rút trích đặc trưng ký tự.

3.3.1. Các phương pháp về chia vùng.

a) Zone

Hình 3.4. Chia vùng (Zone )

Ảnh ký tự được chia thành N×N vùng (zones). Tổng số điểm đen của mỗi vùng sẽ
được chọn để tạo thành véc tơ đặc trưng hoặc lấy tỉ lệ số pixel đen (trắng) trên tổng số
pixel mỗi vùng.

b) 9-zone

Hình 3.5. 9- zone


 Chuyển ảnh đầu vào
thành ma trận nhị phân
(như hình)
 Chia ma trận thành r vùng.

28
 Với mỗi vùng, giá trị đặc trưng được tính bằng công thức:

Trong đó: fr : là giá trị đặc trưng tại vùng thứ r


qr : tổng số pixel tại vùng thứ r
Cij : giá trị pixel tại pixel (i,j)

Hoặc, với mỗi vùng, giá trị đặc trưng được tính theo công thức:

Trong đó: Với i và j là chỉ số của pixel đen

c) Diagonal

Hình 3.6. Diagonal

 Chuẩn hóa kích thước về 60x90 px


 Chuyển ảnh về ma trận nhị phân các giá trị 0, 1.
29
 Chia ma trận thành 54 vùng, ngang 6 vùng, cao 9 vùng, kích thước mỗi vùng 10x10
px.
 Vỡi mỗi vùng, giá trị đặc trưng được tính như sau:
- Mỗi vùng 10x10 sẽ có 19 đường chéo. Tính tổng giá trị pixel đen theo đường chéo
ta được 19 đặc trưng con.
- Giá trị đặc trưng đại diện cho vùng được tính bằng trung bình của 19 đặc trưng
trên. Kết quả sẽ có 54 giá trị đại diện cho 54 vùng.

Ngoài ra, có thể lấy thêm 15 đặc trưng nữa, là trung bình đặc trưng của 9 hàng và 6 cột để
tạo thành 69 vector đặc trưng.

3.3.2. Biểu đồ chiếu Histogram.


Ý tưởng cơ bản của phương pháp trích chọn
đặc trưng này là chiếu các điểm đen trên ảnh 2
chiều theo các hướng ngang, dọc và hai
đường chéo thành một dãy các tín hiệu 1
chiều. Ưu điểm của các đặc trưng này là
không phụ thuộc nhiều vào nhiễu, tuy nhiên nó
vẫn phụ thuộc vào độ nghiêng của chữ.
Hình 3.7.Biểu đồ chiếu Histogram

3.3.3. Contour Profile

Chuẩn hóa ảnh đầu vào về 1 kích thước cố định. Quét theo hàng và theo
cột, trên mỗi hàng và mỗi cột, tính khoảng cách từ khung
ảnh đến điểm đen đầu tiên của chữ trên 1 dòng quét.

Hình 3.8.
Contour profile

3.3.4. Wavelet Haar

Chuyển ảnh ký tự thành ma trận nhị


phân. Chia thành N=4 vùng 1,2,3,4 (Si:
tổng điểm đen của vùng i). Tính đặc
trưng thứ nhất F1 = Tổng điểm đen trên
toàn bộ ma trận.

Hình 3.9. Wavelet Haar

30
Các đặc trưng tiếp theo được tính như sau:

 F2: S1 +S2
 F3: S2 + S3
 F4: S4
Sau đó trên từng vùng con, lại chia tiếp thành 4 vùng nhỏ và tính các F i tiếp theo như
công thức trên. Trong thực nghiệm, chọn N=4, ta có: 1 + 3 + 4×3 + 4×4×3 + 4×4×4×3 =
256 đặc trưng.

3.3.5. Crossing và Distance

Hình 3.10. Crossing và


Distance

Với Crossing, đặc trưng


được tính trên tất cả các hàng
và cột. Với mỗi dòng
quét, đếm số lần thay đổi
giá trị pixel giữa phần nền và phần chữ. Như vậy ảnh kích thước NxN sẽ có 2N đặc trưng
theo cột và hàng.

Còn Distance sẽ đếm khoảng cách từ biên cho đến pixel đầu tiên của phần chữ theo các
hướng Trái, Phải, Trên và Dưới.

3.3.6. Binary

Chuyển ảnh thành ma trận nhị phân, với mỗi điểm đen sẽ đại diện bằng giá trị 1, điểm
trắng đại diện là giá trị 0 (hoặc ngược lại). Kết quả thu được là 1 ma trận chứa các giá trị
0 và 1.

31
Hình 3.11. Binary

3.4. Các mô hình nhận dạng

3.4.1. Một số mô hình nhận dạng ký tự.

a) K-NN (K-Nearest Neighbors)


• Xác định giá trị tham số K (K láng giềng gần nhất)
• Tính khoảng cách của đối tượng cần phân lớp (query point) đến tất cả các đối
tượng khác trong tranning data. Các hàm khoảng cách thường dùng:
o Khoảng cách Euclide
o Khoảng cách Mahattan
• Đánh giá trị khoảng cách cho các đối tượng và sắp xếp các khoảng cách theo thứ
tự tăng dần.
• Lấy ra K láng giềng (có khoảng cách nhỏ nhất) trong các tập các đối tượng.
• Đối tượng nào có số mẫu lớn nhất trong K láng giềng lấy ra thì Query point sẽ
thuộc về tập đó (Trường hợp số mẫu bằng nhau, ta tính thêm bước trung bình
khoảng cách các đối tượng thuộc cùng 1 mẫu để chọn ra mẫu có trung bình nhỏ
nhất).

b) SVM (Support Vector Machine)


Xét bài toán phân lớp đơn giản nhất – phân lớp hai lớp với tập dữ liệu mẫu:

Trong đó mẫu là các vector đối


tượng được phân lớp thành các
mẫu dương và mẫu âm như trong
Hình 3.12.

32
Các mẫu dương là các mẫu xi thuộc lĩnh vực quan tâm và được gán nhãn yi = 1.
Các mẫu âm là các mẫu xi không thuộc lĩnh vực quan tâm và được gán yi = - 1.
Hình 3.12. Phân lớp bằng SVM

Thực chất phương pháp này là một bài toán tối ưu, mục tiêu là tìm ra một không gian
H và siêu mặt phẳng quyết định h trên H sao cho sai số phân lớp là thấp nhất. Trong
trường hợp này, tập phân lớp SVM là mặt siêu phẳng phân tách các mẫu dương khỏi các
mẫu âm với độ chênh lệch cực đại, trong đó độ chênh lệch – còn gọi là Lề (margin) xác
định bằng khoảng cách giữa các mẫu dương và các mẫu âm gần mặt siêu phẳng nhất. Mặt
siêu phẳng này được gọi là mặt siêu phẳng lề tối ưu..
Các mặt siêu phẳng trong không gian đối tượng có phương trình là:

C + w1x1+ w2x2+ … + wnxn = 0

Tương đương với công thức : C + ∑wixi = 0 với i=1,…,n

Với w = w1 , w2, …, wn là bộ hệ số siêu phẳng hay là vector trọng số, C là độ dịch,


khi thay đổi w và C thì hướng và khoảng cách từ gốc toạ độ đến mặt siêu phẳng thay đổi.

Máy học SVM là một học các siêu phẳng phụ thuộc vào tham số vector trọng số w và
độ dịch C. Mục tiêu của phương pháp SVM là ước lượng w và C để cực đại hoá lề giữa
các lớp dữ liệu dương và âm.

Ta giải phương trình sau:

Tìm ra được vector trọng số w và sai số của mỗi điểm trong tập huấn luyện là ηi , từ
đó ta có phương trình tổng quát của siêu phẳng tìm ra được bởi thuật toán SVM là:

f(x1, x2,…, xn) = C +∑wixi Với i = 1,…, n. ( n là số dữ liệu huấn luyện)

Sau khi đã tìm được phương trình của siêu phẳng bằng thuật toán SVM, áp dụng
công thức này để tìm ra nhãn lớp cho các dữ liệu mới.

f(x) = sign(C + ∑wixi)

Trong đó:

33
sign(z) = +1 nếu z ≥ 0,

sign(z) = -1 nếu z < 0.

Nếu f(x) = +1 thì x thuộc về lớp dương (lĩnh vực được quan tâm), và ngược lại,

Nếu f(x) = -1 thì x thuộc về lớp âm (các lĩnh vực khác).

c) Mạng Neural
Được trình bày trong phần tiếp theo.

3.4.2. Ứng dụng mô hình mạng Neural cho nhận dạng ký tư

3.4.2.1. Giới thiệu về mạng Neural

Định nghĩa: Mạng nơron nhân tạo, Artificial Neural Network (ANN) là một mô hình
xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học. Nó được
tạo nên từ một số lượng lớn các phần tử (nơron) kết nối với nhau thông qua các liên kết
(trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào
đó. Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu,
phân loại dữ liệu,...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất
học chính là quá trình hiệu chỉnh trọng số liên kết giữa các nơron.

Cấu trúc neural nhân tạo:

Hình 3.13. Cấu tạo một Neural

Các thành phần cơ bản của một nơron nhân tạo bao gồm:

34
• Tập các đầu vào: Là các tín hiệu vào (input signals) của nơron, các tín hiệu này
thường được đưa vào dưới dạng một vector N chiều.
• Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số liên kết – Synaptic
weight. Trọng số liên kết giữa tín hiệu vào thứ j với nơron k thường đượckí hiệu là
wkj. Thông thường, các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm
khởi tạo mạng và được cập nhật liên tục trong quá trình học mạng.
• Bộ tổng (Summing function): Thường dùng để tính tổng của tích các đầu vào với
trọng số liên kết của nó.
• Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa vào như một
thành phần của hàm truyền.
• Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm vi đầu ra của
mỗi nơron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng.
• Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là một đầu ra.

Xét về mặt toán học, cấu trúc của một nơron k, được mô tả bằng cặp biểu thức sau:

Trong đó: x1, x2, ..., xp: là các tín hiệu vào; ( wk1, wk2,..., wkp) là các trọng số liên kết
của nơron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu
ra của nơron.

Như vậy nơron nhân tạo nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng
số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm truyền), và cho một tín
hiệu đầu ra ( là kết quả của hàm truyền).

Bảng 3.1. Một số hàm truyền thông dụng

Hàm truyền Đồ thị Định nghĩa

Symetrical Hard Limit


(hardlim)

35
y=x
Linear (purelin)

Saturating Linear
(satlin)

Log-Sigmoid (logsig)

3.4.2.2. Một số kiểu mạng Neural


Cách thức kết nối các nơron trong mạng xác định kiến trúc (topology) của mạng.Các
nơron trong mạng có thể kết nối đầy đủ (fully connected) tức là mỗi nơron đều được kết
nối với tất cảcác nơron khác, hoặc kết nối cục bộ (partially connected) chẳng hạn chỉ kết
nối giữa các nơron trong các tầng khác nhau. Người ta chia ra hai loại kiến trúc mạng
chính:

• Tự kết hợp (autoassociative): là mạng có các nơron đầu vào cũng là các nơron đầu ra.
Mạng Hopfield là một kiểu mạng tự kết hợp.

36
Hình 3.16. Mạng truyền thẳng

Hình 3.14. Mạng tự kết hợp

• Kết hợp khác kiểu (heteroassociative): là mạng có tập nơron đầu vào và đầu ra riêng
biệt. Perceptron, các mạng Perceptron nhiều tầng (MLP: MultiLayer Perceptron),
mạng Kohonen, …thuộc loại này.

Hình 3.15. Mạng kết hợp khác kiểu

Ngoài ra tùy thuộc vào mạng có các kết nối ngược (feedback connections) từ các nơron
đầu ra tới các nơron đầu vào hay không, người ta chia ra làm 2 loại kiến trúc mạng.

- Kiến trúc truyền thẳng: là kiểu


kiến trúc mạng không có các kết
nối ngược trở lại từ các nơron
đầu ra về các nơron đầu vào;
mạng không lưu lại các giá trị
output trước và các trạng thái
kích hoạt của nơron. Các mạng

37
nơron truyền thẳng cho phép tín hiệu di chuyển theo một đường duy nhất; từ đầu vào
tới đầu ra, đầu ra của một tầng bất kì sẽ không ảnh hưởng tới tầng đó. Các mạng kiểu
Perceptron là mạng truyền thẳng.
- Kiến trúc phản hồi (Feedback architecture): là kiểu kiến trúc mạng có các kết nối từ
nơron đầu ra tới nơron đầu vào. Mạng lưu lại các trạng thái trước đó, và trạng thái tiếp
theo không chỉ phụ thuộc vào các tín hiệu đầu vào mà còn phụ thuộc vào các trạng thái
trước đó của mạng. Mạng Hopfield thuộc loại này.

Hình 3.17. Mạng phản hồi

3.4.2.3. Mạng Neural lan truyền ngược MLP

a) Cấu trúc

Mô hình mạng nơron được sử dụng rộng rãi nhất là mô hình mạng nhiều tầng truyền
thẳng (MLP: Multi Layer Perceptron). Một mạng MLP tổng quát là mạng có n (n≥2) tầng
(thông thường tầng đầu vào không được tính đến): trong đó gồm một tầng đầu ra (tầng
thứ n) và (n-1) tầng ẩn

38
Hình 3.18. Mạng neural lan truyền ngược MLP

Kiến trúc của một mạng MLP tổng quát có thể mô tả như sau:

• Đầu vào là các vector (x1, x2, ..., xp) trong không gian p chiều, đầu ra là các vector
(y1,y2, ..., yq) trong không gian q chiều. Đối với các bài toán phân loại, p chính là
kích thước của mẫu đầu vào, q chính là số lớp cần phân loại. Xét ví dụ trong bài toán
nhận dạng chữ số: với mỗi mẫu ta lưu tọa độ (x,y) của 8 điểm trên chữ số đó, và
nhiệm vụ của mạng là phân loại các mẫu này vào một trong 10 lớp tương ứng với 10
chữ số 0, 1, …, 9. Khi đó p là kích thước mẫu và bằng 8 x 2 = 16; q là số lớp và bằng
10.
• Mỗi nơron thuộc tầng sau liên kết với tất cả các nơron thuộc tầng liền trước nó.
• Đầu ra của nơron tầng trước là đầu vào của nơron thuộc tầng liền sau nó.
• Hoạt động của mạng MLP như sau:tại tầng đầu vào các nơron nhận tín hiệu vào xử lý
(tính tổng trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm
truyền); kết quả này sẽ được truyền tới các nơron thuộc tầng ẩn thứ nhất; các nơron
tại đây tiếp nhận như là tín hiệu đầu vào, xử lý và gửi kết quả đến tầng ẩn thứ 2….
Quá trình tiếp tục cho đến khi các nơron thuộc tầng ra cho kết quả.

b) Các phương pháp học

Khái niệm: Học là quá trình thay đổi hành vi của các vật theo một cách nào đó làm
cho chúng có thể thực hiện tốt hơn trong tương lai. Một mạng nơron được huyấn luyện
sao cho với một tập các vector đầu vào X, mạng có khả năng tạo ra tập các vector đầu ra
mong muốn Y của nó. Tập X được sử dụng cho huấn luyện mạng được gọi là tập huấn
luyện (training set). Các phần tử x thuộc X được gọi là các mẫu huấn luyện (training
example). Quá trình huấn luyện bản chất là sự thay đổi các trọng số liên kết của mạng.
39
Trong quá trình này, các trọng số của mạng sẽ hội tụ dần tới các giá trị sao cho với mỗi
vector đầu vào x từ tập huấn luyện, mạng sẽ cho ra vector đầu ra y như mong muốn

Có ba phương pháp học phổ biến là học có giám sát (supervised learning), học không
giám sát (unsupervised learning) và học tăng cường (Reinforcement learning):

• Học có giám sát: Là quá trình học có sự tham gia giám sát của một “thầy giáo”.Cũng
giống như việc ta dạy một em nhỏ các chữ cái. Ta đưa ra một chữ “a” và bảo với em
đó rằng đây là chữ “a”. Việc này được thực hiện trên tất cả các mẫu chữ cái. Sau đó
khi kiểm tra ta sẽ đưa ra một chữ cái bất kì (có thể viết hơi khác đi) và hỏi em đó đây
là chữ gì?
• Với học có giám sát, tập mẫu huấn luyện được cho dưới dạng D = {(x,t)} trong đó
x = (x1, x2,...,xN) là vector đặc trưng N chiều của mẫu huấn luyện và t = (t1,
t2,...,tK) là vector mục tiêu K chiều tương ứng, nhiệm vụ của thuật toán là phải thiết
lập được một cách tính toán trên mạng như thế nào đó để sao cho với mỗi vector đặc
trưng đầu vào thì sai số giữa giá trị đầu ra thực sự của mạng và giá trị mục tiêu tương
ứng là nhỏ nhất.
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm vụ của
thuật toán là phải xác định được một cách thức phân lớp sao cho với mỗi vector đầu
vào sẽ được phân loại chính xác vào lớp của nó.
• Học không giám sát: Là việc học không cần có bất kỳ một sự giám sát nào. Trong bài
toán học không giám sát, tập dữ liệu huấn luyện được cho dưới dạng
D = {(x1, x2,...,xN)}, với (x1, x2,...,xN) là vector đặc trưng của mẫu huấn luyện.
Nhiệm vụ của thuật toán là phải phân chia tập dữ liệu D thành các nhóm con, mỗi
nhóm chứa các vector đầu vào có đặc trưng giống nhau. Như vậy với học không giám
sát, số lớp phân loại chưa được biết trước, và tùy theo tiêu chuẩn đánh giá độ tương
tự giữa các mẫu mà ta có thể có các lớp phân loại khác nhau.
• Học tăng cường: đôi khi còn được gọi là học thưởng-phạt (reward-penalty learning),
là sự tổ hợp của cả hai mô hình trên. Phương pháp này cụ thể như sau: với vector đầu
vào, quan sát vector đầu ra do mạng tính được. Nếu kết quả được xem là “tốt” thì
mạng sẽ được thưởng theo nghĩa tăng các trọng số kết nối lên; ngược lại mạng sẽ bị
phạt, các trọng số kết nối không thích hợp sẽ được giảm xuống. Do đó học tăng
cường là học theo nhà phê bình (critic), ngược với học có giám sát là học theo thầy
giáo (teacher).

c).Học có giám sát trong mạng neural MLP


40
Học có giám sát có thể được xem nhưviệc xấp xỉ một ánh xạ: X→ Y, trong đó X là
tập các vấn đề và Y là tập các lời giải tương ứng cho vấn đề đó.

Các mẫu (x,y) với x= (x 1, x2, . . .,xn) ∈ X, y =(yl, y2, . . ., ym) ∈ Y được cho trước.
Học có giám sát trong các mạng nơron thường được thực hiện theo các bước sau:

• B1: Xây dựng cấu trúc thích hợp cho mạng nơron, chẳng hạn có (n+1) nơron vào (n
nơron cho biến vào và 1 nơron cho ngưỡng x0), m nơron đầu ra, và khởi tạo các trọng
số liên kết của mạng.
• B2: Đưa một vector x trong tập mẫu huấn luyện X vào mạng
• B3: Tính vector đầu ra o của mạng
• B4: So sánh vector đầu ra mong muốn y (là kết quả được cho trong tập huấn luyện)
với vector đầu ra o do mạng tạo ra; nếu có thể thì đánh giá lỗi.
• B5: Hiệu chỉnh các trọng số liên kết theo một cách nào đó sao cho ở lần tiếp theo khi
đưa vector x vào mạng, vector đầu ra o sẽ giống với y hơn.
• B6: Nếu cần, lặp lại các bước từ 2 đến 5 cho tới khi mạng đạt tới trạng thái hội tụ.

Việc đánh giá lỗi có thểthực hiện theo nhiều cách, cách dùng nhiều nhất là sử dụng lỗi
tức thời : Err = (o - y), hoặc Err =|o - y|; lỗi trung bình bình phương (MSE: mean-square
error): Err = (o- y)2/2;

Thuật toán tổng quát ở trên cho học có giám sát trong các mạng nơron có nhiều cài đặt
khác nhau, sự khác nhau chủ yếu là cách các trọng số liên kết được thay đổi trong suốt
thời gian học. Trong đó tiêu biểu nhất là thuật toán lan truyền ngược.

Thuật toán lan truyền ngược

Ta sử dụng một số kí hiệu sau:

• j: nơron thứ j (hay nút thứ j)


• : vector đầu vào của nút thứ j
• : : vector trọng số của nút thứ j
• xij : đầu vào của nút thứ j từ nút thứ i
• wij : trọng số trên xij
• bj : ngưỡng tại nút thứ j
• : tổng : trọng số trên các đầu vào của nút thứ j
• oj: đầu ra của nút thứ j (với oj= f(uj))

♦ tj: đầu ra mong muốn của nút thứ j

41
• Downstream(j): Tập tất cảcác nút nhận đầu ra của nút thứ j làm một giá trị đầu vào.
• Outputs: Tập các nút trong tầng ra
• η: tốc độ học
• f: hàm truyền với: Và

Ta tìm công thức tính , sự thay đổi trọng số trong mỗi lần cập nhật.

Với:

Do trọng số được cập nhật sau mỗi mẫu huấn luyện, để đơn giản có thể coi tập huấn
luyện chỉ gồm một mẫu. Khi đó hàm lỗi được tính như sau:

Theo quy tắc chuỗi ta có: (1)

Mặt khác:

Do đó:

Thay lại (1) ta được:

Xét 2 trường hợp sau.

 Trườnghợp 1: j là nơron tầng ra (j ∈ Outputs)

Đặt:

Ta có: (2)

Do tất cả các nút đầu ra k ≠j là độc lập với wji , ta có thể coi:

Khi đó:

42
 Trường hợp 2: j là nơron tầng ẩn

Ta có hai nhận xét quan trọng sau:

1. Với mỗi nút k ∈Downstream(j), uk là một hàm của uj

2. Việc tạo ra lỗi của tất cả các nút l ≠ j trong cùng một tầng với j là độc lập với w ji

Cũng theo quy tắc chuỗi:

Nếu đặt:

Ta se có: (3)

43
(chú ý rằng công thức (3) là áp dụng cho các nơron tầng ẩn, công thức (2) ở trên là áp
dụng cho các nơron tầng ra).

Mặt khác lại có:

Từ đó:

Như vậy từ (2) và (3) ta thấy rằng trong mọi trường hợp đều có

Trong đó δj được tính như sau:

Với j là nút xuất thì:

Với j là nút ẩn thì:

Thuật toán lan truyền ngược được mô tả như sau:

Input

44
- Mạng feed-forward với ni đầu vào, nh nút ẩn và no đầu ra.

- Hệ số học η

- Tập dữ liệu huấn luyện D = { } là vector đầu vào.

là vector đầu ra mong muốn.

Output : Các vector trọng số

Thuật toán:

Bước 1: Khởi tạo trọng số bởi các giá trị ngẫu nhiên nhỏ.

Bước 2: Lặp lại cho tới khi thỏa mãn điều kiện kết thúc.

Với mỗi mẫu , thực hiện các bước sau:

2.1. Tính đầu ra oj cho mỗi nút j

2.2. Với mỗi nút k thuộc tầng ra, tính δk theo công thức:

2.3. Với mỗi nút h thuộc tầng ẩn, tính δh theo công thức:

2.4 Cập nhật:

Trong đó:

d) Một số vấn đề lưu ý trong xây dựng mạng MLP.


Xác định kích thước mẫu

Không có nguyên tắc nào hướng dẫn kích thước mẫu phải là bao nhiêu đối với một bài
toán cho trước. Hai yếu tố quan trọng ảnh hưởng đến kích thước mẫu:
45
• Dạng hàm đích: khi hàm đích càng phức tạp thì kích thước mẫu cần tăng.
• Nhiễu: khi dữ liệu bị nhiễu (thông tin sai hoặc thiếu thông tin) kích thước mẫu cần
tăng.

Đối với mạng truyền thẳng,


Hình 3.19. Ảnh hưởng của kích thước mẫu
cho hàm đích có độ phức tạp
nhất định, kèm một lượng
nhiễu nhất định thì độ chính
xác của mô hình luôn có một
giới hạn nhất định. Nói cách
khác độ chính xác của mô
hình là hàm theo kích thước
tập mẫu.

Xác định số nơron tầng ẩn

Câu hỏi chọn số lượng noron trong tầng ẩn của một mạng MLP thế nào là khó, nó phụ
thuộc vào bài toán cụ thể và vào kinh nghiệm của nhà thiết kế mạng. Có nhiều đề nghị
cho việc chọn số lượng nơron tầng ẩn h trong một mạng MLP. Chẳng hạn h phải thỏa
mãn h>(p-1)/(n+2), trong đó p là sốlượng mẫu huấn luyện và n là số lượng đầu vào của
mạng. Càng nhiều nút ẩn trong mạng, thì càng nhiều đặc tính của dữ liệu huấn luyện sẽ
được mạng nắm bắt, nhưng thời gian học sẽ càng tăng.

Vấn đề quá khớp

Khái niệm quá khớp: Vấn đề quá khớp xảy ra khi mạng được luyện quá khớp (quá sát)
với dữ liệu huấn luyện (kể cả nhiễu), nên nó sẽ trả lời chính xác những gì đã được học,
còn những gì không được học thì nó không quan tâm. Như vậy mạng sẽ không có được
khả năng tổng quát hóa.

Vấn đề quá khớp xảy ra vì mạng có năng lực quá lớn. Có 3 cách để hạn chế bớt năng lực
của mạng:

• Hạn chế số nút ẩn


• Ngăn không cho mạng sử dụng các trọng số lớn
• Giới hạn số bước luyện

Khi mạng được luyện, nó chuyển từ các hàm ánh xạ tương đối đơn giản đến các hàm ánh
xạ tương đối phức tạp. Nó sẽ đạt được một cấu hình tổng quát hóa tốt nhất tại một điểm
46
nào đó. Sau điểm đó mạng sẽ học để mô hình hóa nhiễu, những gì mạng học được sẽ trở
thành quá khớp. Nếu ta phát hiện ra thời điểm mạng đạt đến trạng thái tốt nhất này, ta có
thể ngừng tiến trình luyện trước khi hiện tượng quá khớp xảy ra. Ta biết rằng, chỉ có thể
để đánh giá mức độ tổng quát hóa của mạng bằng cách kiểm tra mạng trên các mẫu nó
không được học. Ta thực hiện như sau: chia mẫu thành tập mẫu huấn luyện và tập mẫu
kiểm tra. Luyện mạng với tập mẫu huấn luyện nhưng định kỳ dừng lại và đánh giá sai số
trên tập mẫu kiểm tra. Khi sai số trên tập mẫu kiểm tra tăng lên thì quá khớp đã bắt đầu
và ta dừng tiến trình luyện.

Chú ý rằng, nếu sai số kiểm tra không hề tăng lên, tức là mạng không có đủ số nút ẩn để
quá khớp. Khi đó mạng sẽ không có đủ số nút cần thiết để thực hiện tốt nhất. Do vậy nếu
hiện tượng quá khớp không hề xảy ra thì ta cần bắt đầu lại nhưng sử dụng nhiều nút ẩn
hơn.

3.5..Thực nghiệm xây dựng mạng Neural


Mục đích chính của thí nghiệm này nhằm tìm ra tham số mạng neural (số lớp ẩn, tốc độc
học, ngưỡng lỗi, …) thích hợp cho phương pháp trích đặc trưng đường chéo (Diagonal).
Sở dĩ chọn phương pháp trích đặc trưng này vì theo nghiên cứu của J.Pradeep, 2011 [6],
tỉ lệ nhận dạng ký tự với phương pháp đường chéo có độ chính xác cao, thời gian học
cũng như nhận dạng nhanh do sử dụng ít đặc trưng hơn.

a) Thực nghiệm chọn số lớp ẩn


Chọn số lần lặp nhất định, đặt tốc độ học nhỏ, thay đổi số lớp ẩn và training để đánh giá
số lớp ẩn bao nhiêu là cho kết quả nhận dạng với tỉ lệ lỗi thấp nhất. Thực nghiệm chọn
lặp 100 lần học và tốc độ học đặt 0.1.
Bảng 3.2. Mức lỗi và thời gian học theo số lớp ẩn

Số lớp ẩn 50 100 150 200 250 300


Mức lỗi 0.0011 0.0005 0.00048 0.00048 0.00047 0.00044
Thời gian 5m21s 6m33s 7m28s 11m04s 12m 15s 13m11s

47
Hình 3.20. Đồ thị biến thiên mức lỗi theo số lớp ẩn
Nhìn vào đồ thị Hình 3.20, trong khoảng từ 100-300 số lớp ẩn, mức lỗi biến thiên không
đáng kể, vì vậy ta chọn số lớp ẩn trong khoảng (100,150) là thích hợp.
b) Thực nghiệm xác định tốc độ học
Sau khi có được số lớp ẩn tối ưu trong thí nghiệm chọn số lớp ẩn, ta thay đổi lần lượt tốc
độ học từ 0.1 đến 1.5 để tìm ra tốc độ học cho mức lỗi nhỏ nhất với mô hình mạng có 100
lớp ẩn. Số lần học sẽ dừng để ghi nhận kết quả sau 100 lần.
Bảng 3.3. Mức lỗi và thời gian học theo tốc độ học

Tốc độ
0.1 0.3 0.5 0.7 0.9 1.1 1.3 1.5
học
Mức lỗi 0.00063 0.00019 0.000094 0.000063 0.00006 0.000057 0.0002 0.0033
Time 5m02s 4m44s 4m31s 4m11s 3m25s 2m46s 2m28s 2m15s

48
Hình 3.21. Đồ thị biến thiên mức mỗi theo tốc độ học.
Trong khoảng từ 0.5 đến 1.1, tốc đọc học cho mức lỗi biến thiên không lớn, do đó, chọn
tốc độ học trong khoảng (0.5, 1.1).
c) Thực nghiệm tìm ngưỡng lỗi
Sau khi đã có số lớp ẩn và tốc độ học tối ưu ở 2 thí nghiệm trên, ta tìm ngưỡng lỗi để
dừng vòng lặp học sao cho với mức lỗi đó, tỉ lệ nhận dạng ký tự đạt kết quả cao. Thay đổi
lần lượt mức lỗi và cho training qua mạng neural, ghi nhận kết quả nhận dạng.
Bảng 3.4. Tỉ lệ nhận dạng ký tự theo mức lỗi

Mức
0.01 0.005 0.001 0.0005 0.0001 0.00005 0.00001 5e-6 1e-6
lỗi
Close
16.3% 32.4% 44.9% 86% 95.7% 97.1% 98.5% 97.8% 98.1%
test
Open
11.7% 28.1% 37.6% 83.4% 91.6% 96.3% 97.2% 96.9% 97.4%
test
Thời
4m28s 8m32s 13m55s 18m22s 21m42s 28m30s 36m11s 43m7s 55m57s
gian

Mức lỗi từ 0.0001 đến 0.00005 cho tỉ lệ nhận dạng cao trên 90%.
d) Thực nghiệm lựa chọn số đặc trưng
Thay đổi số lượng đặc trưng, cho training qua mạng neural với tham số mạng là 100 lớp
ẩn, tốc độ học 0.9, ngưỡng lỗi 0.00005, ghi lại kết quả nhận dạng ký tự của mạng với
từng số lượng đặc trưng.

Bảng 3.5. Tỉ lệ nhận dạng ký tự theo số lượng đặc trưng

Số đặc trưng Cỡ ảnh Close test Open test Thời gian


15 30x50 93.60% 91.20% 39m6s

49
24 40x60 95.80% 93% 34m15s
40 50x80 96.70% 94.40% 28m33s
54 60x90 97.30% 96.80% 27m16s
70 70x100 98.50% 97.10% 25m18s
88 80x110 97.60% 96.60% 26m29s

Hình 3.22. Đồ thị tỉ lệ nhận dạng theo số lượng đặc trưng


Với số đặc trưng 40, 54, 70, 88, kết quả test cho tỉ lệ nhận dang cao. Tuy nghiên để giảm
dung lượng bộ nhớ lưu trữ, nên sử dụng số đặc trưng 40 hoặc 54.
e) Kết quả nhận dạng ký tự

Kết quả nhận dạng ký tự với tham số


mạng gồm 100 nút ẩn, 54 nút vào, 8
50
nút ra, tốc độ học 0.9, ngưỡng lỗi 0.00005, phương pháp trích chọn đặc trưng Diagonal
cho tỉ lệ nhận dạng 97%, thời gian train 28 phút. Hình 3.23. Bộ dữ liệu
ký tự để train

Một số nguyên nhân ký tự nhận dạng sai: nhầm lẫn và hình dáng giữa B và 8 khi nét
thẳng của chữ B có dáng cong, 0 và 8 hay D và 8 khi số 0 và chữ D bị nhiễu đốm ở giữa
bụng. Cách khắc phục và tăng số mẫu học nhiễu để mạng có thể nhận dạng tốt hơn.

CHƯƠNG 4. CÀI ĐẶT THỬ NGHIỆM


ỨNG DỤNG NHẬN DẠNG BIẾN SỐ XE
Ứng dụng nhận dạng biển số xe được cài đặt để nhận dạng ảnh biển số tĩnh, phát hiện
biển số, sau đó tách ký tự và tiến hành nhận dạng. Để có thể phát hiện biển số xe, chương
trình thu nhận ảnh vào, qua các bước tiền xử lý như lọc nhiễu, nhị phân, biến đối hình
thái học, tìm biển,….rồi sau đó tìm Contour bằng thuật toán FindContour được cài đặt
trong EmguCV. Khi đã có tập các contour, để lọc ra đúng biển số, ta đưa tập này qua các
hàm lọc (Lọc theo kích thước, Scanning Line, lọc số lượng chữ số) để loại ra các contour
không chứa biển số. Khi đã tìm được đúng vùng contour, công việc tiếp theo là cắt ảnh
biển số, tách ký tự và đưa vào mạng neural để nhận dạng (tham số mạng đã được học).

4.1. Cài đặt.

Với một hệ thống nhận dạng biển số xe hoàn chỉnh, sẽ gồm các phần như sau:
- Camera quan sát với cảm biến.
- Máy tính (PC) với phần mềm nhận dạng
- Cơ sở hạ tầng.
4.1.1. Giao diện chương trình.

51
Hình 4.1. Giao diện ứng dụng

4.1.2. Một số hàm chính trong chương trình.

FilterBySizeAndAngle (Lọc theo Kích thước và góc)

Input: Tập contour

Output: Tập contour

Mục đích: dựa trên các tiêu chí về tỉ lệ, góc, kích thước để xác định contour nào có khả
năng là biển số, contour nào không phải biển số để loại bỏ bớt trong tập các contour tìm
được.

for(int i=0; i < listContour.Count; i++)


{
isDel = false;
Ratio = h / w
if(ratio < 0.6)
{
if( h và w không thõa mãn ngưỡng)
{
remove(i)
isdel = true
}
if(!isdel)
{

52
if(Ratio không thõa mãn ngưỡng)
{
listContour.remove(i)
isdel = true;
}
}
if(!isdel)
if(contour đè lên biên hình) remove(i)
if(!isdel)
{
if
{
if(angle < -45)
if(w > h) remove(i)
else
if(w < h) remove(i)
}
}

}
return listContour;

ScanningLine (Scan theo dòng)

Input: Tập contour

Output: Tập contour

Mục đích: Quét trên các dòng cắt để đểm số điểm cắt trên vùng biển số, so sánh với
ngưỡng để tìm ra vùng có khả năng là biển số và loại bỏ các vùng không phải biển số.

Xác định vị trí dòng quét của biển số vuông và dài


Foreach(Contour in Tập contour)
{
Với mỗi dòng quét, lần lượt xét pixel từ biên trái sang phải
If(Pixel thay đổi từ trắng sang đen) Số điểm cắt++
If (biển số vuông)
If (Số điểm cắt < 16 || Số điểm cắt > 40) Remove Contour
If biển số dài
If (số điểm cắt < 16 || Số điểm cắt > 50) Remove Contour
}

DigitCount (Đếm số ký tự trên vùng Contour)

Input: Tập contour


53
Output: Tập contour

Mục đích: Với mỗi contour đưa vào hàm, đếm số contour con thõa mãn là ký tự trong
contour này. So sánh với ngưỡng để xem contour này có phải là biển số hay không. Các
contour con được tìm bằng hàm FindContour và sau đó đưa qua bộ lọc contour để cho ra
các contour con có khả năng là ký tự nhất.

for(int i = 0 ; i < listContour.Count; i++)


{
image = ExtractImage(listContour[i])
image = OtsuThreshold(image)
List<Contour> list = FindContour(image)
list = FilterContour(list) //Hàm lọc contour
if(list.Count < 6 || list.Count > 10) remove(i)
}
return listContour;

FilterContour (Lọc các contour con có khả năng là ký tự)

Input: Tập contour

Output: Tập contour

Mục đích: Với 1 tập contour con được tìm, lọc theo các tiêu chí về kích thước, tỉ lệ, góc,
… để xác định contour nào có khả năng chứa ký tự, contour nào không phải thì loại bỏ.
Kết quả của hàm này được sử dụng cho hàm đếm ký tự (DigitCount).

Canny(image)
T = FindContour()
for(i=0, i < T.Length,i++)
{
isDel = false;
if(!isDel)
if(contour.angle > -45)
If(contour.w > contour.h) remove(i)
else iF(contour.w < contour.h) remove(i)
if(!isDel)
if(biển số vuông)
if(contour.w && contour.h != ngưỡng A) remove(i)
else
if(contour.w && contour.h != ngưỡng B) remove(i)
if(!isDel)
If(contour đè lên biên ảnh) remove(i)
54
if(!isDel)
if(contourA overlap contourB)
if(contourA.angle > contourB.angle) remove(contourA)
else remove(contourB)
T.Sort()
for(i=0 ; i<T.lenght ; i++)
if(contour(i).h > 20% AvgHeight(All contour) remove(i)

TachKyTu (Tách ký tự)

Input: Tập contour

Output: Tập contour

Mục đích: tách các ký tự trong vùng biển số để đưa vào mạng neural nhận dạng

Số ký tự = DemKyTu(ngưỡng Otsu)
N = Otsu
if(Số ký tự < 7 || Số ký tự > 9)
{
for(ngưỡng = 25; ngưỡng <= 160; ngưỡng +=5)
{
Temp = DemKyTu(ngưỡng)
If(temp > Số ký tự && temp <= 9)
{
Số ký tự = temp
N = ngưỡng
}
}
}
Return Số ký tự, N

55
GetContour (Lấy ra Contour đích chứa biển số)

Input: Tập contour

Output: Contour

Mục đích: một vùng biển số sẽ có nhiều contour bao lên nó. Các contour này đều thõa
mãn là vùng chứa biển số nên hàm này sẽ loại bớt các contour dư thừa và giữ lại 1
contour chứa biển số dựa theo số lượng pixel đen phân bố trên đó.

Min = 9999999
Vị trí = 0;
foreach(contour in ListContour)
{
Tỉ lệ pixel đen trắng = PixelCount(contour)
If(tỉ lệ pixel đen trắng < Min)
{
Min = Tỉ lệ pixel đen trắng
Vị trí = vị trí contour
}
}
Return ListContour(vị trí)

4.2. Kết quả thực nghiệm

Chạy ứng dụng nhận dạng biển số, đưa lần lượt 376 ảnh dữ liệu về xe để kiểm tra kết quả
phát hiện biển số, tách ký tự và nhận dạng ký tự của chương trình, ghi nhận kết quả.

• Tỉ lệ biển nhận dạng đúng vùng biển số: 335/376 ~ 90%

Biển bị bóng, phản chiếu Biển số bị tối, thiếu ánh sáng Biển dơ, mù, ố vàng

Hình 4.2. Một số biển không phát hiện được biển số

• Tỉ lệ biển tách đúng và đầy đủ ký tự: 330/335 ~ 98%

56
Chữ số bị dính với các vật bên ngoài như đinh ốc, ký tự bị mờ nét, mất nét, loang lổ,...

Hình 4.3. Một số biển không tách đúng ký tự

• Tỉ lệ biển nhận dạng chính xác ký tự: 314/330 ~ 94%

Kết quả nhận dạng chung của ứng dụng từ khâu phát hiện biển số, đến tách ký tự và nhận
dạng ký tự đạt xấp xỉ 85% với dữ liệu có nhiều ảnh không đạt tiêu chuẩn như bị bóng
mờ, quá dơ, nhòe,… Với ảnh biển số sạch sẽ, rõ ràng, không chứ các phụ kiện gắn trên
biển, tỉ lệ nhận dạng có thể đạt tới hớn 90%.

4.3. Kết luận

Demo nhận dạng với phương pháp trình bày trong đồ án này đã đạt được một số điểm
như:

• Nắm được các vấn đề cơ bản của ảnh số và xử lý ảnh số


• Sử dụng tương đối tốt thư viện EmguCV cho C# để xử lý ảnh.
• Nắm được các đặc điểm của một bài toán nhận dạng nói chung và nhận dạng biển
số xe nói riêng
• Tìm hiểu được một số phương pháp nhận dạng biển số xe, nắm được ưu nhược
điểm của từng phương pháp. Demo và Test thử thành công trên các bộ dữ liệu
mẫu với tỉ lệ nhận dạng chính xác 85%.

Ưu điểm: thuật toán cài đặt nhanh, tìm vùng biển số và cách ly ký tự với tỉ lệ thành
công cao (ở những biểnsố thông thường), tìm được ở những ảnh tự nhiên, vùng biển số
bị nghiêng.

Bên cạnh đó, còn tồn tại một số điểm hạn chế chưa giải quyết được như:

57
• Tỉ lệ nhận dạng còn phụ thuộc nhiều vào điều kiện ánh sáng, phản chiếu hoặc che
bóng.
• Với những biển số có đường viền phức tạp thì mức độ nhận dạng không cao.
• Chỉ giới hạn ảnh chụp trong góc 40 độ để nhận dạng được tốt, nếu góc lớn hơn thì
khả năng nhận dạng được giảm.
• Ảnh xe trong bóng tối hay ban đêm không có đèn flash thì khả năng nhận dạng
thấp do thiếu sáng.

Hướng phát triển của bài toán:

- Nâng cao hiệu quả chương trình, tách ly các kí tự trong biển số trong các trường hợp
biển số bị nhiều nhiễu, mất mát thông tin do nhiễu từ điều kiện môi trường, tìm vùng
biển số trong ảnh có độ tương phản giữa biển số và nền thấp. Đặc biệt là biển xe có
nền màu đỏ chữ trắng.

- Phát triển chương trình thành module phần cứng. Có khả năng tương thích với các
thiết bị quan sát như camera.

- Nghiên cứu theo hướng một ứng dụng cụ thể như : giám sát phương tiện giao thông,
xử lý vi phạm giao thông, quản lý xe tại các bãi giữ xe, các kho vật tư….

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Chirag N. Paunwala & Suprava Patnaik. “A Novel Multiple License Plate
Extraction Techniquefor Complex Background in Indian Traffic Conditions”, Sarvajanik
College of Engineering and Technology, 2010

[2] Choo Kar Soon, Kueh Chiung Lin, Chung Ying Jeng and Shahrel A. Suandi,
“Malaysian Car Number Plate Detection and Recognition System”, 2012

[3] Tran Duc Duan, Duong Anh Duc, Tran Le Hong Du, “Combining Hough
Transform and Contour Algorithm for detecting Vehicles License-Plates”, University of
Natural Sciences, 2004

[4] Nobuyuki Otsu, "A threshold selection method from gray-level histograms”, 1979

[5] Suman K. Mitra. “Recognition of Car License Plate using Morphology”, hirubhai
Ambani Institute of Information and Communication Technology, Gandhinagar, Gujarat,
India

58
[6] J.Pradeep, E.Srinivasan and S.Himavathi, DIAGONAL BASED FEATURE
EXTRACTION FOR HANDWRITTEN ALPHABETS RECOGNITION SYSTEM
USING NEURAL NETWORK, 2011.

[7] Phalgun Pandya, Mandeep Singh,“Morphology Based Approach To Recognize


Number Plates in India”, International Journal of Soft Computing and Engineering
(IJSCE), 2011.

[8] Xin Li. “Vehicle License Plate detection and recognition”, University of Missouri,
2010.

[9] Sami Ktata, Faouzi Benzarti, Hamid Amiri. “License Plate Detection Using
Mathematical Morphology”, SETIT, 2012.

[10] P.Anishiya, Prof. S. Mary Joans, “Number Plate Recognition for Indian Cars
Using Morphological Dilation and Erosion with the Aid Of Ocrs”, International
Conference on Information and Network Technology, 2011.

[11] Các tài liệu về EmguCV tại www.emgucv.com

59

You might also like