You are on page 1of 64

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA

KỸ THUẬT MÁY TÍNH

KHOÁ LUẬN TỐT NGHIỆP

NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG BIỂN SỐ XE TRÊN ANDROID SMARTPHONE

Giảng viên hướng dẫn: TS. NGUYỄN ANH TUẤN Sinh viên thực hiện: NGUYỄN PHƯỢNG ĐÔN - 08520091 NGUYỄN ĐỨC PHÚ - 08520284 Lớp: KTMT03 Khóa: 03

TP. Hồ Chí Minh, tháng 2 năm 2013

MỞ ĐẦU

Vấn đề nhận dạng nói chung và nhận dạng biển số xe nói riêng là bài toán thu hút được sự quan tâm nghiên cứu của nhiều nhà khoa học trên thế giới, đặc biệt là trong những năm gần đây khi các thiết bị di động như điện thoại di động, máy tính bảng ra đời và phổ biến, công với nhu cầu thiết thực hỗ trợ giải quyết vấn đề trong đời sống như tự động hóa trong các bãi giữ xe,trạm cân, rửa xe hay kiểm soát lưu lượng, kiểm soát an ninh. Nội dung khóa luận trình bày về nhận dạng biển số xe sử dụng mô hình mạng neural với ứng dụng trên hệ điều hành Android. Hướng tiếp cận dựa trên diện mạo, dùng bộ phân loại mạnh AdaBoots – là sự kết hợp của các bộ phân loại yếu dựa trên các đặc trưng Haar-like – để phát hiện vùng chứa biển số, phương pháp hình thái học để tiến hành thực hiện phân tách kí tự và nhận dạng kí tự bằng phương pháp được sử dụng phổ biến nhất là mạng neural (neural network). Hệ thống đã được thử nghiệm trên thực tế, trong môi trường đủ sáng, thiếu sáng với mẫu nhận dạng đứng yên bước đầu cho kết quả tốt. Từ khóa: neural network, android, automatic number plate recognition, ANPR, Kohonen network.

LỜI CẢM ƠN

Lời đầu tiên chúng em xin được bày tỏ lòng biết ơn sâu sắc nhất tới TS. Nguyễn Anh Tuấn, khoa Mạng máy tính và Truyền Thông, Đại học Công Nghệ Thông tin, người đã tận tình hướng dẫn chúng em trong suốt thời gian làm khóa luận tốt nghiệp. Tiếp đến chúng em xin được bày tỏ lòng biết ơn tới các giảng viên khoa Kỹ Thuật Máy Tính, trường Đại học Công nghệ thông tin – ĐH Quốc Gia TPHCM. Các thầy cô đã dạy bảo, chỉ dẫn chúng em và luôn tạo điều kiện tốt nhất cho chúng em học tập trong suốt những năm đại học, đặc biệt là trong thời gian làm khóa luận tốt nghiệp. Chúng tôi xin cảm ơn các bạn sinh viên lớp KTMT03 trường Đại học Công nghệ thông tin, những người bạn nhiệt tình giúp đỡ chúng tôi trong suốt những năm học đại học và quá trình thực hiện khóa luận. Cuối cùng lời cảm ơn xin được gửi tới những người thân trong gia đình đã luôn bên cạnh động viên, tạo những điều kiện tốt nhất để hoàn thành khóa luận này.

TP. Hồ Chí Minh, ngày 24 tháng 02 năm 2013 Nguyễn Phượng Đôn - Nguyễn Đức Phú

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
Mục lục Danh sách hình vẽ Danh sách bảng 1 Giới thiệu 1.1 Tên khóa luận . . . . . . . . . 1.2 Nội dung và giới hạn khóa luận 1.2.1 Nội dung khóa luận . . 1.2.2 Giới hạn của khóa luận 1.3 Cấu trúc khóa luận . . . . . . v vii ix 1 1 1 1 3 3 4 4 9 11 11 12 14 16 17 20 21 22 23 24 26

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

2

Tổng quan 2.1 Khảo sát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hệ thống nhận dạng biển số 3.1 Phát hiện vùng chứa biển số xe . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Đặc trưng Haar-like . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 AdaBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Hệ thống xác định vùng chứa biển số xe . . . . . . . . . . . . . 3.1.4 Huấn luyện bộ phân loại . . . . . . . . . . . . . . . . . . . . . 3.2 Tách kí tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Chuẩn hóa kích thước ảnh . . . . . . . . . . . . . . . . . . . . 3.2.2 Chuyển đổi ảnh màu về ảnh xám . . . . . . . . . . . . . . . . . 3.2.3 Tăng tính tương phản bằng thuật toán cân bằng hóa lược đồ xám 3.2.4 Xác định ngưỡng, nhị phân hóa ảnh . . . . . . . . . . . . . . . 3.2.5 Tìm biên, xác định các đường viền (contour) của ảnh nhị phân .

3

. . . . . . . . . . .

. . . . . . . . . . .

GVHD: Tiến sĩ Nguyễn Anh Tuấn

v

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

MỤC LỤC 3.2.6 Tách kí tự dựa trên đặc tính hình thái học . . Nhận dạng kí tự . . . . . . . . . . . . . . . . . . . . 3.3.1 Mạng neural sinh học . . . . . . . . . . . . . 3.3.2 Mạng neural nhân tạo . . . . . . . . . . . . . 3.3.3 Mạng neural Kohonen . . . . . . . . . . . . 3.3.4 Ánh xạ ma trận điểm ảnh vào ma trận giá trị . Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 27 28 28 32 38 39 41 41 43 43 44 44 44 47 49 49 49 51 51 52 53

3.3

3.4 4

Hiện thực hệ thống nhận dạng biển số xe trên android smartphone 4.1 Sơ lược hệ điều hành Android . . . . . . . . . . . . . . . . . . 4.2 Tính năng của ứng dụng . . . . . . . . . . . . . . . . . . . . . 4.3 Cấu trúc ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Phần Java . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Phần thư viện . . . . . . . . . . . . . . . . . . . . . . . 4.4 Các lớp trong ứng dụng . . . . . . . . . . . . . . . . . . . . . . 4.5 Chương trình huấn luyện mạng Kohonen . . . . . . . . . . . . . 4.6 Hiệu chỉnh kết quả dựa trên cú pháp . . . . . . . . . . . . . . . 4.7 Kết quả thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . 4.8 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

5

Kết luận và hướng phát triển 5.1 Những kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tài liệu tham khảo

GVHD: Tiến sĩ Nguyễn Anh Tuấn

vi

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Danh sách hình vẽ
2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 Hệ thống nhận dạng được trang bị cho xe tuần tra . . . . . . . . . . Thiết bị thu nhận dữ liệu hình ảnh trên xe. . . . . . . . . . . . . . . Hệ thống nhận dạng trên xe tuần tra của cảnh sát Úc. . . . . . . . . Ứng dụng nhận dạng của Biển Bạc ANPR. . . . . . . . . . . . . . . Ứng dụng nhận dạng trên máy bắn tốc độ. . . . . . . . . . . . . . . Thiết lập bản ghi CSDL xe vi phạm vượt tốc độ của MT-ATGT2012. Giao diện của ứng dụng MT-BSX. . . . . . . . . . . . . . . . . . . Các dạng cơ bản của đặc trưng Haar-like . . . . . . . . . . . . . . . Cách tính Integral Image của ảnh . . . . . . . . . . . . . . . . . . . Ví dụ cách tính nhanh các giá trị mức xám của vùng D trên ảnh . . . Mô hình phân tầng kết hợp các bộ phân loại yếu để xác định biển số Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh . . . . . . . Hệ thống xác định vùng chứa biển số xe . . . . . . . . . . . . . . . Ảnh chụp màn hình quá trình chạy huấn luyện . . . . . . . . . . . . So sánh các phương thức resize ảnh . . . . . . . . . . . . . . . . . Ví dụ về các lớp của một bức ảnh RGB . . . . . . . . . . . . . . . . Chuyển ảnh màu sang ảnh trắng đen . . . . . . . . . . . . . . . . . Tăng tính tương phản bằng phương pháp cân bằng lược đồ xám . . . Cách xác định ngưỡng động . . . . . . . . . . . . . . . . . . . . . Nhị phân hóa ảnh bằng phương pháp tìm ngưỡng . . . . . . . . . . Thực hiện xác định các đường viền từ ảnh nhị phân . . . . . . . . . Xác định được các kí tự trên biển số . . . . . . . . . . . . . . . . . Các kí tự được tách riêng rẽ. . . . . . . . . . . . . . . . . . . . . . Mô hình mạng neural sinh học. . . . . . . . . . . . . . . . . . . . . Biểu diễn một neural nhân tạo. . . . . . . . . . . . . . . . . . . . . Một dạng mạng neural Kohonen. . . . . . . . . . . . . . . . . . . . Sơ đồ khối biểu diễn huấn luyện mạng neural Kohonen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 7 8 8 9 12 13 14 15 16 16 20 22 23 23 24 25 25 26 27 27 28 30 33 37

GVHD: Tiến sĩ Nguyễn Anh Tuấn

vii

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

DANH SÁCH HÌNH VẼ 3.21 Chia lưới kí tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.22 Ánh xạ ma trận điểm ảnh vào ma trận giá trị. . . . . . . . . . . . . . . . . 4.1 4.2 4.3 4.4 4.5 Ảnh chụp màn hình của ứng dụng đang chạy. . . . . . . . . Sơ đồ lớp chính của ứng dụng . . . . . . . . . . . . . . . . . Sơ đồ lớp của mạng neural Kohonen . . . . . . . . . . . . . Ảnh chụp màn hình chương trình huấn luyện mạng Kohonen Tập kí tự dùng cho việc huấn luyện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 43 45 46 48 48

GVHD: Tiến sĩ Nguyễn Anh Tuấn

viii

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Danh sách bảng
3.1 3.2 4.1 Mẫu đầu vào của mạng Kohonen. . . . . . . . . . . . . . . . . . . . . . . . Trọng số kết nối giữa các neuron trong mạng. . . . . . . . . . . . . . . . . Kết quả thử nghiệm 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 49

GVHD: Tiến sĩ Nguyễn Anh Tuấn

ix

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 1 Giới thiệu
1.1 Tên khóa luận

Nghiên cứu xây dựng chương trình nhận dạng biển số xe trên android smartphone.

1.2
1.2.1

Nội dung và giới hạn khóa luận
Nội dung khóa luận

Cùng với sự phát triển kinh tế, gia tăng dân số và nhu cầu đi lại, số lượng các phương tiện tham gia giao thông nói chung và xe máy nói riêng xuất hiện ngày càng nhiều. Điều này đặt ra một yêu cầu lớn trong việc kiểm soát và quản lý loại phương tiện này. Thực trạng tại các điểm trông giữ xe ở các đô thị lớn tại Việt Nam hiện nay cho thấy một vấn đề bất cập: việc xử lý thủ công (ghi biển số xe) gây tốn kém tiền thuê nhân công và không hiệu quả, nhất là ở những bãi đậu xe lớn. Một số bãi đỗ xe áp dụng phương pháp quản lý thông minh như ở các tòa nhà chung cư cao tầng, BigC . . . , tuy nhiên các hệ thống này không phải là tự động mà là có sự giám sát của các nhân viên trông giữ xe, nguyên tắc hoạt động của chúng đơn giản như sau: đầu tiên camera ghi hình biển số xe và lưu vào cơ sở dữ liệu, tiếp đó một thẻ từ được quẹt qua đầu đọc và chứa thông tin hình ảnh của biển số xe vừa chụp. Thẻ từ này được giao cho người gửi xe. Khi lấy xe ra, người gửi xe quẹt thẻ qua đầu đọc, mã số thẻ sẽ được so sánh và hiện hình ảnh chụp biển số xe trước đó, nhân viên sẽ quan sát xem biển số xe đã lấy ra và biển số xe lúc gửi trong cơ sở dữ liệu có trùng nhau không, nếu trùng thì cho qua, nếu không trùng thì yêu cầu dừng lại. Việc này giảm bớt được nhiều công sức trong việc quản lý xe như ghi vé, xé vé . . . nhưng thực chất về mặt kĩ thuật là đơn giản, ta chỉ cần một camera, một máy tính và một đầu đọc thẻ là làm được. Nó không phải là hệ thống nhận dạng biển số xe tự động.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

1

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 1. Giới thiệu

Một yêu cầu đặt ra là cần xây dựng các hệ thống tự động. Một trong những hệ thống tự động như vậy là hệ thống tự động nhận dạng biển số xe, đặc trưng của nó là có khả năng thu nhận hình ảnh cũng như "đọc" và "hiểu" các biển số xe một cách tự động. Hệ thống như vậy có thể được sử dụng trong rất nhiều ứng dụng như: trạm cân và rửa xe tự động hoàn toàn, bãi giữ xe tự động, các hệ thống kiểm soát lưu lượng giao thông hay trong các ứng dụng về an ninh như tìm kiếm xe mất cắp . . . Hiện nay nhiều phần mềm đã phát triển trong việc nhận dạng biển số, nhưng đa phần hoạt động trên máy tính và các camera được đặt cố định tại một vị trí. Với việc bùng nổ thiết bị di động cũng như phần cứng và ứng dụng phát triển theo nó, nhu cầu nhận dạng nói chung và nhận dạng biển số xe nói riêng trên thiết bị cầm tay đang là nhu cầu thiết yếu, nó hỗ trợ rất nhiều trong đời sống hằng ngày, như giúp các chiến sĩ công an đi tuần có được thông tin của chủ phương tiện cũng như phát hiện được xe bị mất cắp thông qua biển số xe . . . Qua những tìm hiểu trên nhóm đã hướng tới nghiên cứu và phát triển phần mềm nhận dạng biển số xe trên thiết bị di động với hệ điều hành Android. Việc nhận dạng kí tự trên thiết bị di động không phải mới, nhiều ứng dụng hoạt động rất tốt, có độ chính xác cao ở trong và ngoài nước. Nhiều mã nguồn mở hỗ trợ mạnh mẽ trong việc xử lý hình ảnh cũng như nhận dạng. Nhưng việc nhận dạng mới thực hiện trên văn bản, chưa xuất hiện nhận dạng trên biển số xe. Đặc biệt các kí tự trên biển số khác so với các kí tự trên văn bản, nên muốn nhận dạng được ta phải làm cho ứng dụng hiểu được các kí tự này. Khóa luận sử dụng sự hỗ trợ khá mạnh trong việc xử lí hình ảnh của mã nguồn OpenCV để nhận dạng vùng biển số cũng như thao tác trên nó, trong giai đoạn nhận dạng kí tự có sử dụng mạng neural network cơ bản Kohonen để nhận dạng. Việc kết hợp này bước đầu giúp quá trình phát triển ứng dụng linh hoạt hơn, mang lại hiệu quả khá cao. Khóa luận sẽ làm những việc sau: 1. Tổng hợp dữ liệu cho quá trình huấn luyện hệ thống. 2. Tiền xử lý ảnh thu được từ Camera của thiết bị. 3. Huấn luyện hệ thống nhằm phát hiện vùng chứa biển số. 4. Tách các kí tự có trên biển số.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

2

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 1. Giới thiệu 5. Nhận dạng các kí tự và hậu xử lí.

1.2.2

Giới hạn của khóa luận

Nhận dạng biển số có nhiều vấn đề cần giải quyết, mỗi nước khác nhau có quy định về kích thước cũng như kí tự riêng khác nhau, bên cạnh đó mỗi loại xe lại có các quy định khác nữa. Quá trình nhận dạng còn phụ thuộc vào điều kiện môi trường, và camera thu nhận ảnh trên thiết bị. Do tính phức tạp của nhận dạng, hiện tại khóa luận chỉ tập trung nhận dạng các kí tự trên biển số xe máy ở Việt Nam trong điều kiện lí tưởng, đủ ánh sáng, các kí tự trên biển số hiển thị rõ ràng, không bị các vật neo giữ che khuất kí tự và camera trên thiết bị chạy ứng dụng có độ phân giải không quá thấp. Các vấn đề như nhận dạng biển số xe các nước, biển số ngang của xe ô tô, hay trong điều kiện thời tiết mưa, điều kiện ánh sáng không đủ để lưu giữ hình ảnh, camera trên thiết bị cho chất lượng thấp hoặc bị loạn màu sắc, các kí tự trên biển số bị che khuất hay mất nét, không hiển thị rõ ràng đều nằm ngoài tầm vóc của luận văn này.

1.3

Cấu trúc khóa luận

Khóa luận được cấu trúc như sau: • Chương 2. Khảo sát, phân tích đánh giá các hướng nghiên cứu đã có của các tác giả trong và ngoài nước liên quan đến đề tài; nêu những vấn đề còn tồn tại; chỉ ra những vấn đề mà đề tài cần tập trung, nghiên cứu giải quyết. • Chương 3. Hướng tiếp cận của khóa luận để xây dựng hệ thống nhận dạng biển số. • Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone. • Chương 5. Tổng kết khóa luận và một số hướng phát triển tiếp theo của khóa luận.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

3

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2 Tổng quan
2.1 Khảo sát

Trên thế giới:

Kỹ thuật nhận dạng biển số (Automatic number plate recognition) đã được nghiên cứu từ năm 1976 tại chi nhánh phát triển khoa học Cảnh sát ở Anh. Hệ thống kiểm thử lần đầu tiên vào năm 1979. Kỹ thuật này phát triển trên khía cạnh phần mềm của hệ thống máy tính. Đầu tiên sử dụng một loạt các kỹ thuật xử lý hình ảnh để phát hiện, bình thường hóa và nâng cao hình ảnh biển số, và sau đó nhận dạng ký tự quang học (OCR) để trích xuất các chữ cái và biển số. Hệ thống được triển khai ở một trong hai phương pháp tiếp cận cơ bản: toàn bộ quá trình được thực hiện tại vị trí nhận dữ liệu ảnh hay truyền dữ liệu về một máy tính từ xa để thực hiện quá trình nhận dạng. Hệ thống này đã được áp dụng để hỗ trợ kiểm soát lưu lượng, thu thập thông tin, xử lí vi phạm cho cảnh sát giao thông. Hệ thống thu thập hình ảnh đòi hỏi phải có tầm nhìn rộng, thu nhận ảnh nhanh và cho chất lượng ảnh tốt.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

4

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan

Hình 2.1: Hệ thống nhận dạng được trang bị cho xe tuần tra

Hình 2.2: Thiết bị thu nhận dữ liệu hình ảnh trên xe.

Tại Úc: Một số lực lượng cảnh sát nhà nước, và Bộ Tư pháp (Victoria) đã sử dụng hệ thống ANPR cả cố định và di động. Các lực lượng cảnh sát New South Wales Highway Patrol là những

GVHD: Tiến sĩ Nguyễn Anh Tuấn

5

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan người đầu tiên sử dụng một hệ thống ANPR camera cố định tại Úc vào năm 2005. Trong năm 2009, họ bắt đầu một hệ thống ANPR di động (có tên là MANPR) với ba máy ảnh hồng ngoại được trang bị cho hạm đội tuần tra đường cao tốc. Hệ thống xác định xe không đăng ký và bị đánh cắp hoặc bị đình chỉ trình điều khiển.

Hình 2.3: Hệ thống nhận dạng trên xe tuần tra của cảnh sát Úc.

Ngoài ra trên đường phố có sử dụng những thiết bị camera dùng để ghi hình – Closed circuit television (CCTV), những thiết bị này đã được phát triển ứng dụng nhận dạng biển số tự động để phục vụ nhiều mục đích khác nhau. Trong nước: Trong lĩnh vực nhận dạng kí tự hiện nay đã có nhiều phần mềm được công bố như Biển Bạc ANPR hay MT-ATGT2012 và MT.BSX3.5 của Công ty Mắt Thần . . . Ứng dụng của Biển Bạc ANPR dựa trên mã nguồn mở OpenCV,thu nhận ảnh thông qua các Camera có chất lượng cao, được đặt cố định. Quá trình nhận dạng được xử lí trên máy tính. Nhận dạng các kí tự nhanh, cho kết quả trong thời gian ngắn.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

6

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan

Hình 2.4: Ứng dụng nhận dạng của Biển Bạc ANPR.

MT-ATGT2012: nhận dạng biển số xe từ ảnh chụp của máy bắn tốc độ. Các loại máy bắn tốc độ của CSGT đều đã được trang bị chức năng ghi lại hình ảnh của phương tiện bị bắn tốc độ. Mọi thông tin về ngày giờ, địa điểm, hướng di chuyển, vận tốc, vận tốc giới hạn trên đoạn đường đó (để so sánh) và làn đường chiếc xe đang chạy đều được hiển thị trên hình ảnh máy bắn tốc độ thu nhận được. Vấn đề nhận dạng biển số được tích hợp trên máy giải quyết vấn đề nhận dạng biển số xe vi phạm, khoanh vùng xác định chính xác xe bị bắn tốc độ. Hình ảnh xe vi phạm vượt tốc độ sau khi đã được nhận dạng biển số và khoanh vùng phương tiện, được thiết lập thành bản ghi cơ sở dữ liệu xe vi phạm vượt tốc độ. Khảo sát độ chính xác của phần mềm với các ảnh bắn tốc độ kích thước 4008x3092 (pixels) tốc độ nhận dạng biển số trung bình của Mắt Thần là 1-2 giây (trên cấu hình máy tính thông thường), hiệu suất nhận dạng biển số đạt đến 98%.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

7

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan

Hình 2.5: Ứng dụng nhận dạng trên máy bắn tốc độ.

Hình 2.6: Thiết lập bản ghi CSDL xe vi phạm vượt tốc độ của MT-ATGT2012.

MT-BSX3.5 ứng dụng nhận dạng biển số thông qua camera ghi hình và xử lý nhận dạng trên máy tính tại các điểm giữ xe. Phiên bản mới nhất của ứng dụng này có nhiều cải tiến theo chiều hướng tích cực, chức năng

GVHD: Tiến sĩ Nguyễn Anh Tuấn

8

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan nâng cao chất lượng hình ảnh biển số, cắt vùng biển số nâng cao và chồng hình ảnh biển số lên hình ảnh camera thu nhận được, cho phép nhân viên trông giữ xe dễ dàng quan sát được ảnh biển số và thao tác nhanh hơn và tính an ninh hơn. Hiệu suất nhận dạng biển số xe máy được cải thiện: Trong phiên bản này, độ chính xác nhận dạng biển số được cải thiện, các tình huống độ sáng của các ký tự trên biển số phân bố không đều, các ký tự hàng trên bị bắn đinh ốc, hàng ký tự dính mép biển số . . . đều được xử lý triệt để.

Hình 2.7: Giao diện của ứng dụng MT-BSX.

2.2

Tổng kết chương

Qua khảo sát trên cho thấy mỗi ứng dụng có một ưu điểm nhất định, nhưng ở ứng dụng của Biển Bạc ANPR thực hiện việc thu nhận ảnh và nhận dạng biển số rất tốt, nhưng ứng dụng này chỉ hoạt động trên máy tính với sự hỗ trợ thu nhận ảnh từ Camera có chất lượng cao, các thiết bị này được đặt cố định tại một vị trí, không có tính cơ động, tương tự như hệ thống nhận dạng MT-BSX của Mắt Thần.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

9

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 2. Tổng quan Hệ thống nhận dạng MT-ATGT2012 lại hoạt động trên máy bắn tốc độ với sự hỗ trợ rất tốt từ các phần mềm đi kèm và camera chuyên dụng cho việc thu thập hình ảnh, nhưng hệ thống không có tính phổ thông vì chỉ hoạt động trên thiết bị trong ngành. Các hệ thống nhận dạng ở trong và ngoài nước hiện nay chủ yếu dựa trên bộ xử lí của máy tính, vị trí các thiết bị thu hình thường đặt cố định, hay phát triển trên những thiết bị dùng riêng cho ngành nhất định. Nhận thấy điều này, hệ thống chúng tôi phát triển có sự kết hợp giữa OpenCV, hỗ trợ tốt trong việc xử lí hình ảnh, nhận diện các vùng chứa biển số và tách kí tự. Nhận diện kí tự áp dụng mô hình mạng neural nhân tạo để cải thiện kết quả nhận dạng. Ứng dụng phát triển trên hệ điều hành Android sử dụng camera trực tiếp trên smartphone cho thấy được tính cơ động trong quá trình nhận dạng.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

10

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3 Hệ thống nhận dạng biển số
Hệ thống nhận dạng biển số thường được hiện thực bằng cách giải quyết riêng rẽ ba bài toán nhỏ hơn đó là phát hiện vùng chứa biển số, tách kí tự và nhận dạng kí tự. Chương này của khóa luận sẽ lần lượt trình bày hướng tiếp cận và chi tiết thực hiện theo hướng tiếp cận đó của từng bài toán chia nhỏ nêu trên.

3.1

Phát hiện vùng chứa biển số xe

Đây là bước đầu tiên và khó khăn nhất quyết định tới kết quả của toàn bộ hệ thống. Mục đích của bước này là trích ra được vùng nhỏ nhất chứa biển số từ ảnh thu được từ camera của điện thoại. Có nhiều phương pháp tiếp cận để thực hiện được nhiệm vụ này nhưng tất cả đều có thể qui về 3 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, á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ố. • 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, độ sang, 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) để phân loại có phải là vùng biển số hay không. Khóa luận không tập trung phát triển một thuật toán hay phương pháp riêng mà sử dụng hướng tiếp cận dựa trên diện mạo, dùng bộ phân loại mạnh AdaBoost - là sự kết hợp của các bộ phân loại yếu dựa trên các đặc trưng Haar-like - để phát hiện vùng chứa biển số. Phương pháp này được đánh giá là khá đơn giản, nhưng mang lại kết quả phát hiện tương đối cao,

GVHD: Tiến sĩ Nguyễn Anh Tuấn

11

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số trung bình lên tới trên 98%. Phương pháp được cài đặt dựa trên bộ thư viện mã nguồn mở OpenCV.

3.1.1

Đặc trưng Haar-like

Do Viola và Jones công bố năm 2001 [16], gồm 4 đặc trưng cơ bản để xác định đối tượng. Mỗi đặc trưng Haa-like là sự kết hợp của hai hay ba hình chữ nhật “trắng” hay “đen”. Để sử dụng các đặc trưng này vào việc xác định những đối tượng tương đối phức tạp, 4 đặc trưng Haar-like cơ bản được mở rộng thêm thành tập đặc trưng cơ bản sau:

Hình 3.1: Các dạng cơ bản của đặc trưng Haar-like

Dùng các đặc trưng trên, ta có thể tính được giá trị của đặc trưng Haar-like là sự chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như trong công thức sau:

f (x) = Tổngvùng đen (các mức xám của pixel) − Tổng (các mức xám của pixel) vùng trắng (3.1) Sử dụng giá trị này, so sánh với các giá trị của các giá trị pixel thô, các đặc trưng Haar-like có thể tăng/giảm sự thay đổi in-class/out-of-class (bên trong hay bên ngoài lớp khuôn mặt người), do đó sẽ làm cho bộ phân loại dễ hơn. Như vậy có thể thấy rằng, để tính các giá trị của đặc trưng Haar-like, ta phải tính tổng của các vùng pixel trên ảnh. Nhưng để tính toán các giá trị của các đặc trưng Haar-like cho tất cả các

GVHD: Tiến sĩ Nguyễn Anh Tuấn

12

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số vị trí trên ảnh đòi hỏi chi phí tính toán khá lớn, không đáp ứng được cho các ứng dụng đòi hỏi tính run-time. Do đó Viola và Jones đưa ra một khái niệm gọi là Integral Image, là một mảng 2 chiều với kích thước bằng với kích của ảnh cần tính các đặc trưng Haar-like, với mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó. Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, phải của ảnh, việc tính toán này đơn thuần chỉ đựa trên phép cộng số nguyên đơn giản, do đó tốc độ thực hiện rất nhanh. P (x, y ) =
x ≤x,y ≤y

i(x , y )

(3.2)

P(x,y)

Hình 3.2: Cách tính Integral Image của ảnh

Sau khi đã tính được Integral Image, việc tính tổng các giá trị mức xám của một vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản theo cách sau: Giả sử ta cần tính tổng các giá trị mức xám của vùng D như trong hình 3.3, ta có thể tính như sau: D = A + B + C + D – (A + B ) – (A + C ) + A (3.3) Với A + B + C + D chính là giá trị tại điểm P 4 trên Integral Image, tương tự như vậy A + B là giá trị tại điểm P 2, A + C là giá trị tại điểm P 3, và A là giá trị tại điểm P 1. Vậy ta có thể viết lại biểu thức tính D ở trên như sau: D = (x4, y 4) – (x2, y 2) – (x3, y 3) + (x1, y 1)
A+B +C +D (A+B ) (A+C ) A

(3.4)

GVHD: Tiến sĩ Nguyễn Anh Tuấn

13

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

A C

P1

B D

P2

P3

P4

Hình 3.3: Ví dụ cách tính nhanh các giá trị mức xám của vùng D trên ảnh

Tiếp theo, để chọn các đặc trưng Haar-like dùng cho việc thiết lập ngưỡng, Viola và Jones sử dụng một phương pháp máy học được gọi là AdaBoost. AdaBoost sẽ kết hợp các bộ phân loại yếu để tạo thành một bộ phân loại mạnh. Với bộ phân loại yếu chỉ cho ra câu trả lời chính xác chỉ hơn việc đoán một cách ngẫn nhiên một chút, còn bộ phân loại mạnh có thể đưa ra câu trả lời chính xác trên 60%.

3.1.2

AdaBoost

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

GVHD: Tiến sĩ Nguyễn Anh Tuấn

14

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

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

hn Là biển số Biển số

Không là biển số

Hình 3.4: Mô hình phân tầng kết hợp các bộ phân loại yếu để xác định biển số

Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau: hk = 1 nếu pk fk (x) < pk θk 0 ngược lại (3.5)

x: cửa sổ con cần xét θk : ngưỡng (θ = theta) fk : giá trị của đặc trưng Haar-like pk : hệ số quyết định chiều của phương trình AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau: H (x) = sign(a1 h1 (x) + a2 h2 (x) + ... + an hn (x)) Với: a ≥ 0 là hệ số chuẩn hoá cho các bộ phân loại yếu. (a = alpha) (3.6)

GVHD: Tiến sĩ Nguyễn Anh Tuấn

15

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số
Weak Classifer1 Weak Classifer2 Weak Classifer3 Strong Classifer

H1(x)

H2(x)

H3(x)

H(x)

Hình 3.5: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh

3.1.3

Hệ thống xác định vùng chứa biển số xe

Ước lượng các đặc trưng Tính các đặc trưng nhanh từ nhiều tỉ lệ Các hàm Haar cơ bản

Ảnh gốc

Integral Image

Các hàm Haar cơ bản

Các hàm Haar cơ bản Cấu trúc phân tầng Số lượng lớn các đặc trưng Một tập nhỏ các đặc trưng Điều chỉnh thông số AdaBoost Chọn đặc trưng

Quyết định kết quả

Hình 3.6: Hệ thống xác định vùng chứa biển số xe

GVHD: Tiến sĩ Nguyễn Anh Tuấn

16

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số Như trong hình 3.6, từ ảnh gốc ban đầu, tính Integral Image, là mảng 2 chiều với phần tử (x, y ) sẽ được tính bằng tổng của các phần tử (x , y ) với x < x và y < y , mục đích là để tính nhanh tổng của các giá trị mức xám của một vùng hình chữ nhật bất kỳ trên ảnh gốc. Các vùng ảnh con này sẽ được đưa qua các hàm Haar cơ bản để ước lượng đặc trưng, kết quả ước lượng sẽ được đưa qua bộ điều chỉnh AdaBoost để loại bỏ nhanh các đặc trưng không có khả năng là đặc trưng của biển số xe. Chỉ có một tập nhỏ các đặc trưng mà bộ điều chỉnh AdaBoost cho là có khả năng là đặc trưng của biển số xe mới được chuyển sang cho bộ quyết định kết quả (là tập các bộ phân loại yếu có cấu trúc như trong hình 3.4). Bộ quyết định sẽ tổng hợp kết quả là biển số xe nếu kết quả của các bộ phân loại yếu trả về là biển số xe. Mỗi bộ phân loại yếu sẽ quyết định kết quả cho một đặc trưng Haar-like, được xác định ngưỡng đủ nhỏ sao cho có thể vượt được tất cả các bộ dữ liệu mẫu trong tập dữ liệu huấn luyện (số lượng ảnh biển số xe trong tập huấn luyện là rất lớn). Trong quá trình xác định vùng chứa biển số xe, mỗi vùng ảnh con sẽ được kiểm tra với các đặc trưng trong chuỗi các đặc trưng Haar-like, nếu có một đặc trưng Haar-like nào cho ra kết quả là biển số xe thì các đặc trưng khác không cần xét nữa. Thứ tự xét các đặc trưng trong chuỗi các đặc trưng Haar-like sẽ được dựa vào trọng số (weight) của đặc trưng đó do AdaBoost quyết định dựa vào số lần và thứ tự xuất hiện của các đặc trưng Haar-like.

3.1.4

Huấn luyện bộ phân loại

Để có thể nhận dạng biển số xe theo phương pháp tiếp cận dựa trên diện mạo đã trình bày tại phần trên, trước hết cần thực hiện huấn luyện bộ phân loại dùng cho quá trình nhận dạng. Nhiệm vụ huấn luyện bộ phân loại thực sự là một thử thách bởi như đã đề cập tại phần trước quá trình này yêu cầu một tập dữ liệu mẫu rất lớn, nên tiêu tốn rất nhiều thời gian và công sức. Có thể chia quá trình huấn luyện bộ phân loại làm 2 bước chính: • Chuẩn bị mẫu • Huấn luyện Chuẩn bị mẫu Quá trình huấn luyện yêu cầu hai tập dữ liệu mẫu (sample) đó là: positive và negative. Mẫu negative là tập những bức ảnh không chứa đối tượng cần nhận dạng, ngược lại mẫu positive là tập những bức ảnh chứa đối tượng cần nhận dạng. Mẫu negative được lấy từ những bức ảnh tùy ý không chứa đối tượng cần nhận dạng. Tất cả những bức ảnh này được liệt kê trong một file miêu tả dưới dạng plain-text, ứng với mỗi dòng

GVHD: Tiến sĩ Nguyễn Anh Tuấn

17

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số trong file miêu tả này sẽ là một bức ảnh. Khóa luận sử dụng 3000 file ảnh trích từ bộ phim Step Up Revolution làm tập mẫu Negative. Mẫu positive là tập những bức ảnh chứa đối tượng cần nhận dạng, một bức ảnh có thể chứa một hoặc nhiều đối tượng. File miêu tả của tập mẫu positive cũng là một file plain-text, mỗi dòng sẽ chứa tương ứng với một file ảnh, tiếp sau đó là số lượng đối tượng cần nhận dạng có trong bức ảnh, tiếp sau đó là tọa độ x, y tương ứng của mỗi đối tượng đó. Khóa luận sử dụng 2000 bức ảnh chứa biển số làm tập mẫu positive. Những bức ảnh này được được thu thập (quay và chụp) trong vòng 4 ngày tại nhiều địa điểm của thành phố Hồ Chí Minh, với những điều kiện, thời gian khác nhau. Bước tiếp theo sau khi đã có được file miêu tả của tập mẫu negative và positive là phải tạo bộ mẫu input cho quá trình huấn luyện. Để thực hiện điều này, ta sử dụng tiện ích opencv_createsamples được cung cấp sẵn trong thư viện nguồn mở OpenCV. Các tùy chọn của tiện ích opencv_createsamples: ./opencv_createsamples -info <description_file_name> -img <image_file_name> -vec <vec_file_name> -bg <background_file_name> -num <number_of_samples = 1000> -bgcolor <background_color = 0> -inv -randinv -bgthresh <background_color_threshold = 80> -maxidev <max_intensity_deviation = 40> -maxxangle <max_x_rotation_angle = 1.100000> -maxyangle <max_y_rotation_angle = 1.100000> -maxzangle <max_z_rotation_angle = 0.500000> -show <scale = 4.000000> -w <sample_width = 24> -h <sample_height = 24>

Khóa luận sử dụng opencv_createsamples với cú pháp sau:

GVHD: Tiến sĩ Nguyễn Anh Tuấn

18

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số opencv_createsamples.exe -info positive/ positive.txt -vec data/vector.vec -num 2000 -w 55 -h 40 -info positive/ positive.txt: đường dẫn file miêu tả của tập mẫu positive -vec data/vector.vec: đường dẫn file output sẽ được tạo ra sau quá trình tạo mẫu -num 2000: số lượng mẫu là 2000 như đã đề cập -w 55 -h 40: kích thước của mỗi mẫu sẽ được tạo ra, theo đúng với tỷ lệ của biển số xe (140x190) Sau khi tạo ra file mẫu dưới dạng vector, mọi thứ đã sẵn sàng để chuyển qua bước kế tiếp đó là huấn luyện. Huấn luyện Đây là bước cuối cùng của quá trình huấn luyện nhưng cũng là bước yêu cầu nhiều thời gian nhất. Mất 6 ngày chạy liên tục để hoàn thành bước này trên một máy tính tương đối mạnh (core I7, 16Gb ram, window 7). Trong suốt quá trình thực thi, 8 nhân của CPU được tận dụng tối đa, luôn trong tình trạng 100% đang sử dụng. Tiện ích opencv_traincascade được sử dụng trong bước này để hoàn tất quá trình huấn luyện. Cú pháp sử dụng: opencv_traincascade.exe -data data/cascade -vec data/vector.vec -bg negative/infofile.txt numPos 2000 -numNeg 2999 -numStages 20 -mode ALL -w 55 -h 40 -data data/cascade: đường dẫn để lưu kết quả của quá trình huấn luyện -vec data/vector.vec: đường dẫn file vector được tạo ra trong bước chuẩn bị mẫu từ tập mẫu positive -bg negative/infofile.txt: đường dẫn file miêu tả của tập mẫu negative -numPos 2000: số lượng file ảnh của tập mẫu positive -numNeg 2999: số lượng file ảnh của tập mẫu negative -numStages 20: số stage mong muốn -mode ALL: chế độ ALL sẽ sử dụng tất cả các dạng (kể cả mở rộng) của đặc trưng Haar-like -w 55 -h 40: kích thước của tập mẫu

GVHD: Tiến sĩ Nguyễn Anh Tuấn

19

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Hình 3.7: Ảnh chụp màn hình quá trình chạy huấn luyện

Sau khi hoàn tất quá trình huấn luyện này, ta sẽ thu được bộ phân loại dưới dạng một file xml dành cho quá trình nhận dạng.

3.2

Tách kí tự

Sau khi đã phát hiện được vùng chứa biển số, bài toán tiếp theo cần phải giải quyết là phân tách được từng kí tự trên vùng biển số đã thu được, điều này mang lại thuận lợi rất lớn cho bước cuối cùng của hệ thống, nhận dạng kí tự. Có rất nhiều phương pháp có thể áp dụng để thực hiện nhiệm vụ này. Có thể kể ra ở đây như tách tĩnh, lượng tử hóa vector (vector quantization), lược đồ chiếu ngang và dọc (vertical and horizontal projection), mạng noron (neural network), trí tuệ nhân tạo (AI), hình thái học (morphology) . . . Khóa luận này đã lựa chọn phương pháp hình thái học để tiến hành thực hiện phân tách kí tự. Mỗi một kí tự trên biển số sẽ là một đối tượng có đặc điểm hình thái học cụ thể như là chiều cao, chiều rộng, tỉ lệ 2 chiều biến đổi tương đối ít (nếu ảnh chứa vùng biển số đã được đưa về cùng một kích cỡ) mà dựa vào đó ta có thể tách ra được cụ thể từng kí tự riêng rẽ. Từ đó ra có thuật toán tách kí tự từ ảnh chứa vùng biển số đã thu được như sau: 1. Chuẩn hóa kích thước ảnh.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

20

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số 2. Chuyển đổi ảnh màu về ảnh xám. 3. Tăng cao tính tương phản bằng thuật toán cân bằng lược đồ xám. 4. Xác định ngưỡng, nhị phân hóa ảnh. 5. Tìm biên, xác định các đường viền (contour) của ảnh nhị phân 6. Tách kí tự dựa trên đặc tính về hình thái học. Tiếp theo đây, khóa luận sẽ trình bày cơ bản các bước đã nêu ở trên.

3.2.1

Chuẩn hóa kích thước ảnh

Đây là khâu đầu tiên và cũng là đơn giản nhất của thuật toán, chuẩn hóa kích thước ảnh khiến độ chênh lệch giữa kí tự trên các biển số khác nhau giảm xuống làm cho việc tách kí tự dựa trên đặc tính hình thái học trở nên chính xác hơn. Và việc chuẩn hóa kích thước ảnh ở đâu thực tế chỉ đơn giản là thực hiện thay đổi (resize), đưa ảnh về cùng một phân giải đã chọn trước, như khóa luận chọn kích thước này là 680x492 (đây cũng chính là tỷ lệ của một biển số). Có 5 phương thức chính để thực hiện việc thay đổi kích thước ảnh: • INTER_NEAREST nearest-neighbor interpolation • INTER_LINEAR bilinear interpolation • INTER_AREA area interpolation • INTER_CUBIC bicubic interpolation • INTER_LANCZOS4 Lanczos interpolation

GVHD: Tiến sĩ Nguyễn Anh Tuấn

21

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Ảnh gốc

INTER_NEAREST

INTER_LINEAR

INTER_AREA

INTER_CUBIC

INTER_LANCZOS4

Hình 3.8: So sánh các phương thức resize ảnh

Qua thực nghiệm, thấy rằng phương thức INTER_NEAREST là phương thức đơn giản và tốc độ thực thi nhanh nhất, nhưng không đảm bảo chất lượng ảnh. Bốn phương thức còn lại mang lại kết quả tương đối tốt và khá giống nhau nên khóa luận quyết định chọn phương thức INTER_LINEAR do nó đảm bảo được chất lượng ảnh sau khi resize và tốc độ nhanh hơn các phương thức còn lại (không kể INTER_NEAREST).

3.2.2

Chuyển đổi ảnh màu về ảnh xám

Do khâu xác định ngưỡng và nhị phân hóa ảnh chỉ thực hiện được đối với một bức ảnh đơn kênh (single channel) nên ở bước này của thuật toán, khóa luận lại thực hiện một bước biến đổi đơn giản nữa đó là chuyển đổi ảnh vùng chứa biển số (sau khi đã chuẩn hóa kích thước) từ ảnh màu (3 channels) sang ảnh xám (grayscale - còn gọi là ảnh trắng đen, 1 channel). Một bức ảnh màu thường được dựng bằng cách xếp chồng cách kênh màu lên nhau. Ví dụ một bức ảnh RGB được hợp thành bởi 3 kênh màu riêng rẽ, kênh đỏ (red), kênh xanh lá cây (green), và kênh xanh dương (blue); còn một bức ảnh CMYK sẽ gồm 4 kênh đó là màu lục lam (cyan), đỏ tươi (magenta), màu vàng (yellow) và màu đen (black) . . .

GVHD: Tiến sĩ Nguyễn Anh Tuấn

22

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Hình 3.9: Ví dụ về các lớp của một bức ảnh RGB

Đối với hệ màu RGB hoặc RBG, việc chuyển đổi sang đen trắng được thực hiện một cách đơn giản bằng cách độ sáng (luminance) trên từng pixel của ảnh qua công thức sau: Y = 0.2126R + 0.7152G + 0.0722B (3.7)

Ảnh màu

Grayscale

Hình 3.10: Chuyển ảnh màu sang ảnh trắng đen

3.2.3

Tăng tính tương phản bằng thuật toán cân bằng hóa lược đồ xám

Cân bằng lược đồ xám (histogram equalization) là một phương pháp chung dùng để điều chỉnh mức độ tương phản của ảnh. Đôi khi những chủ thể chính cần quan tâm xử lý (các kí tự) và phông nền (nền biển số) có độ tương phản không cao bởi nhiều yếu tố như chữ bị mờ, bóng nắng gây khó khăn cho quá trình xử lý tiếp theo, nên khóa luận áp dụng phương pháp này để cải thiện độ tương phản cho bức ảnh.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

23

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Grayscale

EqualizeHist

Hình 3.11: Tăng tính tương phản bằng phương pháp cân bằng lược đồ xám

3.2.4

Xác định ngưỡng, nhị phân hóa ảnh

Nhị phân hóa là quá trình biến đổi một ảnh xám thành một ảnh nhị phân. Ả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. Nhị phân hóa ảnh thường được thực hiện bằng phương thức phân ngưỡng (Thresholding). Công thức phân ngưỡng 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 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. Kiểm nghiệm thực tế đã xác định được rằng không thể sử dụng một ngưỡng chung để nhị phân hóa các bức hình chứa vùng biển số thu được. Để giải quyết vấn đề này, khóa luận lựa chọn dùng phương pháp lấy ngưỡng động hay còn gọi là ngưỡng thích nghi (adaptive thresholding). Phương pháp này giúp nhị phân hóa một ảnh xám với những ngưỡng khác nhau trên từng vùng ảnh khác nhau của một tấm ảnh.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

24

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

A11 A21 A31

A12 A22 A32

A13 A23 A33

Hình 3.12: Cách xác định ngưỡng động

Phương pháp này sẽ lấy ngưỡng nhị phân trên một vùng cục bộ là một cửa sổ có kích thước MxN. Ngưỡng cần xác định đối với tâm của cửa sổ đó sẽ là trung bình cộng các giá trị của các lân cận của nó. Giả sử cần lấy ngưỡng động cho điểm A22 và kích thước cửa sổ là 3x3. Khi đó giá trị T sẽ là: T = 1/8(A11 + A12 + A13 + A21 + A23 + A31 + A32 + A33) Nếu A22 > T , đặt A22 về 255, nếu A22 < T , đặt A22 về 0. Qua đây có thể thấy rằng để nhị phân hóa được một bức ảnh theo cách trên sẽ tốn rất nhiều thời gian, đặc biệt là đối với những cửa sổ có kích thước lớn. Để tránh hiện tượng này, phải dùng tới cách tính Integral Image đã được nhắc tới trong phần trình bày về đặc trưng Haar-like.

Grayscale

Global Thresholding (T = 60)

Adaptive Thresholding

Hình 3.13: Nhị phân hóa ảnh bằng phương pháp tìm ngưỡng

GVHD: Tiến sĩ Nguyễn Anh Tuấn

25

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

3.2.5

Tìm biên, xác định các đường viền (contour) của ảnh nhị phân

Biên ảnh là những điểm mà tại đó hàm độ sáng của ảnh liên tục có bước nhảy hoặc biến thiên nhanh. Cơ sở toán học của việc phát hiện và tách biên là phép toán đạo hàm, phương pháp này còn được gọi là phương pháp phát hiện biên trực tiếp. Tập hợp các điểm biên tạo thành đường biên (edge) hay đường bao (boundary) của ảnh. Ví dụ trong một ảnh nhị phân một điểm có thể được gọi là biên nếu đó là điểm đen và có ít nhất một điểm trắng lân cận. Biên ảnh thường được dùng để phân vùng ảnh, và trong khóa luận sẽ dựa vào biên ảnh để xác định các kí tự trên vùng chứa biển số do trong biển số sau khi đã nhị phân hóa các kí tự là màu trắng nằm trên nền đen rất rõ ràng. Phần này của khóa luận sẽ không đề cập đến các phương pháp xác định biên bởi đây là một chủ đề rất rộng lớn và có rất nhiều phương pháp để thực hiện việc tìm biên này như sử dụng bộ tách biên Canny, Laplacian . . . việc tìm biên nhờ hoàn toàn vào tính năng đã được hiện thực hóa trong thư viện OpenCV.

Ảnh nhị phân

Contours

Hình 3.14: Thực hiện xác định các đường viền từ ảnh nhị phân

3.2.6

Tách kí tự dựa trên đặc tính hình thái học

Dựa vào các đường viền liền mạch đã tìm được từ bước trước và đặc tính về hình thái học của các kí tự trên biển số sau khi đã được chuẩn hóa kích thước, cụ thể: • 1.5 ≤ Chiều cao / chiều rộng ≤ 3.0 • Diện tích (Chiều cao*chiều rộng) ≥ 5000

GVHD: Tiến sĩ Nguyễn Anh Tuấn

26

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số Ta có thể dễ dàng tìm được vùng chứa các kí tự riêng rẽ trên biển số.

Hình 3.15: Xác định được các kí tự trên biển số

Từ các vùng kí tự đã xác được ở trên, việc tách kí tự ra khỏi biển số trở nên vô cùng đơn giản và kết quả thu được như hình 3.16:

Hình 3.16: Các kí tự được tách riêng rẽ.

3.3

Nhận dạng kí tự

Sau khi đã tách được các kí tự riêng rẽ tại phần trước, bài toán tiếp theo cần phải xử lý đó là nhận dạng kí tự. Bài toán này cũng có thể được giải quyết bằng nhiều phương pháp khác nhau nhưng phương pháp được sử dụng phổ biến nhất là sử dụng mạng neural (neural network). Tại phần này, khóa luận trình bày sơ lược về mạng neural sinh học, nhân tạo và một loại mạng nhân tạo cụ thể là Kohonen – là mạng sẽ được khóa luận sử dụng để giải quyết bài toán nhận dạng kí tự.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

27

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

3.3.1

Mạng neural sinh học

Mạng neural sinh học được cấu thành bởi các neural – là các tế bào não hay các tế bào thần kinh. Mỗi neural như vậy có ba thành phần chính: dendrite, soma và axon. Ba thành phần này là ba yếu tố được mô phỏng lại trong mạng neural nhân tạo. Các dendrite là các đầu tiếp nhận các xung điện đầu vào từ những neural khác. Các xung điện này sau đó được chuyển đến soma – phần thân của tế bào – để xử lý. Axon là đầu ra của các neural, nó truyền xung điện đã được xử lý tại soma đến các neural khác thông qua các điểm nối (synaptic gap). Một mạng neural sinh học bao gồm nhiều neural như vậy nối với nhau thông qua các điểm nối, đầu ra (axon) của neural này sẽ được nối với đầu vào (dendrite) của neural khác. Một neural có nhiều đầu vào và nhiều đầu ra.

Hình 3.17: Mô hình mạng neural sinh học.

3.3.2

Mạng neural nhân tạo

Mạng neural nhân tạo là một bộ xử lý phân tán song song được cấu tạo bởi các đơn vị xử lý đơn giản, có chức năng lưu trữ những tri thức kinh nghiệm và cho phép sử dụng những tri thức này. Mạng neural mô phỏng bộ não người theo hai khía cạnh sau: - Tri thức được thu thập bởi mạng neural trong môi trường hoạt động thông qua một quá trình học (hay còn gọi là huấn luyện). - Trọng số của liên kết giữa các đơn vị xử lý được dùng để lưu trữ những tri thức thu thập được.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

28

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số Quá trình học được thực hiện bởi một thuật toán học. Thuật toán này sẽ làm thay đổi trọng số liên kết giữa các đơn vị xử lý để đạt được mục tiêu thiết kế. Mạng neural nhân tạo được xây dựng dựa trên các mô hình toán học mô phỏng hoạt động của những yếu tố chính trong mạng neural sinh học (dendrite, soma, axon). Hoạt động của mạng neural nhân tạo có những tính chất sau: - Quá trình xử lý thông tin xảy ra tại mỗi đơn vị của mạng, gọi là neural. - Các neural được liên kết với nhau. - Mỗi liên kết của các neural đều có một trọng số. Trọng số này đặc trưng cho bài toán được biểu diễn bởi mạng. Khi nhận được thông tin đầu vào, các đầu vào sẽ được nhân với các trọng số tương ứng, sau đó được cộng lại để cho một giá trị gọi là net. - Mỗi neural đề có một hàm kích hoạt (activation function), hàm này có chức năng tính toán đầu ra cho neural dựa vào giá trị net đã nêu ở trên. Đặc trưng của một mạng neural nhân tạo bao gồm: - Mô hình kết nối giữa các neural trong mạng với nhau hay còn gọi là kiến trúc của mạng. - Cách thức xác định trọng số của các liên kết trong mạng. - Hàm kích hoạt của các neural. Mạng neural nhân tạo được ứng dụng để giải quyết nhiều lớp bài toán: lưu trữ và phục hồi trạng thái của mẫu, phân lớp mẫu, tìm ánh xạ giữa đầu vào và đầu ra, gom nhóm các mẫu giống nhau hoặc dùng để giải quyết các bài toán về tối ưu có ràng buộc. Các thành phần của một neural trong mạng bao gồm: - Tập các đầu vào (input): là các tín hiệu đầu vào của neural, có thể từ môi trường ngoài hoặc là đầu ra của các neural khác trong mạng. Tập các đầu vào thường được đưa vào neural dưới dạng một vector và được kí hiệu là x. - Tập liên kết (weights): mỗi liên kết từ một neural khác đến neural hiện tại được biểu diễn bởi một trọng số. Trọng số liên kết từ một neural i đến một neural j được kí hiệu là Wij . Thông thường, các trọng số sẽ được khởi tạo một cách ngẫu nhiên vào thời điểm khởi tạo mạng và được cập nhập liên tục trong quá trình huấn luyện. - Tổng (net): là tổng các tích của các trọng số và các đầu vào từ neural tương ứng.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

29

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số - Ngưỡng (hay còn gọi là độ lệch - bias): là một giá trị giúp thay đổi khả năng biểu diễn của một hàm kích hoạt. Giá trị bias thường được xem xét là một đầu vào cố định của mọi neural. - Hàm kích hoạt (activation function): tính toán giá trị đầu ra cho mỗi neural. Thông thường, miền giá trị của hàm kích hoạt nằm trong khoảng [0; 1] hoặc [−1; 1]. Ta kí hiệu hàm kích hoạt là f . - Đầu ra (outputs): kết quả của neural sau quá trình tính toán, thường được kí hiệu là y .

X1

Wi1 Activation function

X2

Wi2

F(.)
Summing function

Yi

output

Xm

Wim Synapic weights

input

Threshold

i

Hình 3.18: Biểu diễn một neural nhân tạo.

Về mặt toán học, cấu trúc của một neural i được mô tả bằng cặp biểu thức sau:
n

yi = f (neti − θi ) trong đó: - x1 , x2 , . . . xm là các tín hiệu đầu vào.

neti =
j =1

wij xj

(3.8)

- wi1 , wi2 , . . . wim là các trọng số kết nối của neural thứ i. - neti là hàm tổng. - f là hàm truyền.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

30

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số - θi là một ngưỡng. - yi là tín hiệu đầu ra của neural. Như vậy, tương tự như neural sinh học, neural nhân tạo cũng 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ả đến hàm kích hoạt), và cho một tín hiệu đầu ra (là kết quả của hàm kích hoạt). Đối với các đơn vị đầu vào, nếu ta xem chúng như những neural thì hàm kích hoạt của chúng là hàm f (x) = x do không có bất kì bước tính toán nào xẩy ra ở đây. Đối với các lớp khác của mạng, người ta thường dùng cùng một hàm kích hoạt cho tất cả các neural. Bên cạnh đó, vì một số lý do, ta có thể áp dụng các hàm kích hoạt khác nhau cho các lớp khác nhau. Mạng neural một lớp thường sử dụng hàm ngưỡng để chuyển đổi một giá trị thực liên tục sang một giá trị phân (0 hoặc 1) hoặc lưỡng cực (-1 hay 1), hàm ngưỡng còn được gọi là hàm Heaviside. Khi giá trị đầu vào của hàm lớn hơn hoặc bằng một giá trị ngưỡng θ thì hàm sẽ trả về giá trị 1. Ngược lại, nếu giá trị đầu vào của hàm nhỏ hơn ngưỡng θ thì hàm sẽ trả về giá trị 0 (hoặc -1). y= 1 khi x ≥ θ 0 khi x ≤ θ 1 khi x ≥ θ −1 khi x ≤ θ (Binary threshold function) (3.9)

y=

(Bipolar threshold function)

(3.10)

Các hàm sigmoid là những hàm kích hoạt được sử dụng nhiều do tính chất khả vi của nó. Hàm sigmoid nhị phân (binary sigmod) và hàm tanh (hyperbolic tangent) là những hàm mang ý nghĩa đặc biệt quan trọng trong mang lan truyền ngược (backpropagation). Sở dĩ như thế là vì những hàm này có giá trị toán trở nên nhẹ nhàng hơn trong lúc huấn luyện mang, nhờ đó cải thiện đáng kể năng suất của quá trình này. Hàm sigmoid nhị phân trả về các giá trị trong khoảng từ 0 đến 1. Những mạng neural sử dụng hàm kích hoạt sigmoid nhị phân có nhu cầu thu được giá trị nhị phân hoặc các giá trị nằm giữa 0 và 1. Hàm này còn được gọi là hàm vận chuyển (logistic function). Giá trị σ trong công thức dưới đây quyết định độ biến thiên của hàm. f (x) = 1 1 + e−σx (3.11) (3.12)

f (x) = σf (x)[1 − f (x)]

GVHD: Tiến sĩ Nguyễn Anh Tuấn

31

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số Hàm sigmoid lưỡng cực thực chất là một biến thể của hàm sigmoid nhị phân, trả về giá trị nằm từ -1 đến 1. 2 g (x) = 2f (x) − 1 = −1 (3.13) 1 + e−σx σ (3.14) g (x) = [1 + g (x)][1 − g (x)] 2 Hàm tanh cũng nhận giá trị từ -1 đến 1 tuy nhiên sự biến thiên xảy ra nhanh hơn so với hàm sigmoid lưỡng cực. eσx − e−σx h(x) = σx (3.15) e + e−σx h (x) = [1 + h(x)][1 − h(x)] (3.16)

3.3.3

Mạng neural Kohonen

Trong các kiểu khác nhau của mạng neural, mạng neural Kohonen giống với mạng neural sinh học hơn cả về cấu tạo lẫn cơ chế học. Mạng neural Kohonen là mạng có khả năng sử dụng những kinh nghiệm của quá khứ để thích ứng với những biến đổi của môi trường (không dự báo trước). Loại mạng này thuộc nhóm hệ học, thích nghi không cần có tín hiệu chỉ đạo từ bên ngoài. Cấu trúc của mạng neural Kohonen Mạng neural Kohonen chỉ bao gồm một lớp dữ liệu đầu vào và một lớp dữ liệu đầu ra của các neuron và nó không chứa lớp ẩn. Lớp dữ liệu đầu vào đối với mạng neural Kohonen là các neuron đầu vào. Các neuron đầu vào này tạo thành mẫu dữ liệu đầu vào của mạng. Đối với mạng neural Kohonen, ta nên chọn dữ liệu đầu vào chuẩn hóa trong khoảng giữa -1 và 1. Khi thực thi mẫu dữ liệu đầu vào, mạng sẽ tạo ra các neuron đầu ra. Lớp đầu ra của mạng neural Kohonen rất khác với lớp đầu ra của mạng neural truyền thẳng. Đối với mạng truyền thẳng, nếu chúng ta có một mạng neural với 5 neuron đầu ra, chúng sẽ có thể cho kết quả bao gồm 5 giá trị. Còn trong mạng neural Kohonen chỉ có một neuron đầu ra cho ra một giá trị. Giá trị duy nhất này có thể là đúng hoặc sai. Dữ liệu đầu ra từ mạng neural Kohonen thường là các chỉ số của neuron (Ví dụ neuron số 5,. . . ). Cấu trúc đặc trưng của mạng neural Kohonen được chỉ ra trong hình sau.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

32

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Actual Input Normalization Input Normalization

I1

I2

Input Layer

O1

O2

output Layer

Winning Neuron

Hình 3.19: Một dạng mạng neural Kohonen.

Để biết mạng Kohonen xử lý thông tin thế nào, từ đây ta sẽ xét một ví dụ đơn giản: Một mạng Kohonen chỉ có 2 neuron đầu vào, và 2 neuron đầu ra. Dữ liệu đầu vào được của 2 neuron được chỉ ra trong bảng 3.1 và các trọng số kết nối giữa các neuron trong bảng 3.2 . Input Neuron 1 (I1) Input Neuron 2 (I2) 0.5 0.75

Bảng 3.1: Mẫu đầu vào của mạng Kohonen.

I1 -> O1 0.1 I2 -> O1 0.2 I1 -> O2 0.3 I2 -> O2 0.4 Bảng 3.2: Trọng số kết nối giữa các neuron trong mạng.

Chuẩn hóa dữ liệu

GVHD: Tiến sĩ Nguyễn Anh Tuấn

33

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Để chuẩn hóa dữ liệu đầu vào, ta sẽ tính toán độ dài vector (vector length) của các dữ liệu đầu vào, hoặc vector đầu vào. Trong trường hợp này độ dài vector sẽ là: (0.5 ∗ 0.5) + (0.75 ∗ 0.75) = 0.8125 Vậy trường hợp trên sẽ có độ dài vector là 0.8125. Sử dụng độ dài này, chúng ta có thể xác định được hệ số chuẩn hóa. Hệ số chuẩn hóa là số nghịch đảo của căn bậc hai độ dài vector đầu vào. Trong trường hợp trên thì hệ số chuẩn hóa là: √0.1 8125 Tính toán giá trị trên cho kết quả hệ số chuẩn hóa là 1.1094. Hệ số chuẩn hóa này sẽ sử dụng cho bước tiếp theo, đó là tính toán đầu ra cho neuron. Tính toán dữ liệu đầu ra của neuron Để tính toán dữ liệu đầu ra, vector dữ liệu đầu vào và các trọng số kết nối neural đều phải được xem xét. Ta bắt đầu tính toán cho neuron thứ nhất. Thuật toán Kohonen cho việc lấy tích vô hướng hai vector, vector đầu vào và vector trọng số được tính như sau: [0.5 0.75] ∗ [0.1 0.2] = (0.5 ∗ 0.75)(0.1 ∗ 0.2) = 0.395

Phép tính toán trên tích hai vector cho kết quả là 0.395. Tính toán này sẽ được thực hiện cho neural đầu ra đầu tiên, và nó sẽ được thực hiện như vậy đối với mỗi neuron đầu ra tiếp theo. Ánh xạ lưỡng cực Khi tạo bản đồ lưỡng cực, số 0 sẽ là -1, và các số còn lại là 1. Tức là tạo bản đồ lưỡng cực từ [−1, 1] tới [0, 1]. Ví dụ, để biến đổi chuỗi 0101 về số lưỡng cực ta làm như sau:

0 = −1 1=1 0 = −1 1=1 Do dữ liệu đầu vào được chuẩn hóa trong khoảng [−1, 1] nên ta phải thực hiện chuẩn hóa kết tương tự đối với neuron đầu ra. Để lập được bản đồ, ta cộng thêm 1 vào kết quả rồi lấy 1 2 34

GVHD: Tiến sĩ Nguyễn Anh Tuấn

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số quả đó. Theo kết quả trên có kết quả đầu ra là 0.438213, và kết quả trong dữ liệu đầu ra cuối = 0.7191065. cùng là : 0.438213+1 2 Giá trị 0.7191065 là dữ liệu đầu ra của neuron đầu tiên. Giá trị này sẽ được so sánh với các dữ liệu đầu ra của neural khác. Bằng cách so sánh các giá trị này, có thể xác định được neuron thắng. Chọn neuron thắng Nếu muốn xác định được một neural đầu ra thắng, ta phải tính toán giá trị cho neuron đầu ra thứ hai. Bây giờ, ta sẽ xem nhanh quá trình tính toán cho neuron đầu ra thứ hai. Neuron dữ liệu đầu ra thứ hai sẽ sử dụng hệ số chuẩn hóa giống như đã sử dụng để tính toán cho neuron đầu ra đầu tiên. Theo trên ta có hệ số chuẩn hóa là 1.1094. Áp dụng phương pháp tính tích vô hướng cho trọng số của neuron đầu ra thứ hai và vector dữ liệu đầu vào, sẽ nhận được một giá trị là : [0.5 0.75] ∗ [0.3 0.4] = (0.5 ∗ 0.75) + (0.3 ∗ 0.4) = 0.45.

Giá trị này được nhân với hệ số chuẩn hóa 1.1094, nhận được kết quả là 0.49923. Bây giờ ta đã có giá trị đầu ra cho mỗi neuron. Neuron đầu tiên có giá trị đầu ra là 0.7191065 và neuron thứ hai có một giá trị đầu ra là 0.49923. Để chọn neuron thắng, ta chọn giá trị của dữ liệu đầu ra là lớn nhất. Trong trường hợp này thì neuron thắng là neuron đầu ra đầu tiên với giá trị đầu ra là 0.7191065. Quá trình học của mạng Kohonen Toàn bộ quá trình huấn luyện cho một mạng neural Kohonen cần phải lặp lại qua vài công đoạn. Nếu sai số đã tính toán của mạng neural Kohonen ở mức thấp hơn mức có thể chấp nhận được thì sẽ hoàn tất quá trình huấn luyện. Quá trình huấn luyện cho mạng neural Kohonen là huấn luyện cạnh tranh nên mỗi tập huấn luyện sẽ có một neuron thắng. Neuron thắng này sẽ có trọng số được điều chỉnh sao cho ngay lập tức nó sẽ tác động trở lại mạnh mẽ hơn trong dữ liệu đầu vào ở lần tiếp theo. Sự khác nhau giữa các neuron thắng sẽ dẫn tới sự khác nhau giữa các mẫu đầu vào tiếp theo. Toán bộ quá trình liên quan đến việc huấn luyện mạng neural Kohonen được tóm tắt trong hình 3.20 . Từ hình 3.20 , mạng neural Kohonen được huấn luyện bởi các công đoạn tuần

GVHD: Tiến sĩ Nguyễn Anh Tuấn

35

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số hoàn cho đến khi một trong hai vấn đề sau xảy ra: - Nếu tính toán các sai số ở mức thấp hơn mức có thể chấp nhận được thì nhiệm vụ của chu kỳ sẽ hoàn thành quá trình huấn luyện. - Nếu tất cả các tỉ lệ sai số chỉ thay đổi bởi đa số cận biên, thì chu kỳ riêng lẻ này sẽ bị loại bỏm và các trọng số lại được khởi tạo lại với các giá trị ngẫu nhiên, đông thời một chu kỳ huấn luyện mới lại bắt đầu. Chu kỳ huấn luyện này sẽ tiếp tục chu kỳ huấn luyện trước và nó sẽ phân tích các công đoạn để đưa ra kết quả; hoặc là chu kỳ bị loại bỏ hoặc tạo ra một tập các trọng số đó mà có mức sai số có thể chấp nhận được.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

36

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Bắt đầu

Đã quá số chu kỳ xác định?

Không

Khởi tạo ngẫu nhiên ma trận trọng số

Tính toán sai số

Gán ma trận trọng số này thành ma trận trọng số tốt nhất Kiểm tra sai số xem Có ở mức chấp nhận được không?
Có Không Không

Nếu có ma trận trọng số tốt hơn của ma trận trọng số tốt nhất?

Thực hiện huấn luyện, điều chỉnh trọng số dựa vào neural thẳng

Không

Tính toán lại tỉ lệ sai số, ghi lại những giá trị đã được cải thiện

Không

Ma trận trong số này đã tốt nhất chưa?

Cải thiện tỉ lệ sai số là tầm thường?

Dừng

Hình 3.20: Sơ đồ khối biểu diễn huấn luyện mạng neural Kohonen.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

37

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

3.3.4

Ánh xạ ma trận điểm ảnh vào ma trận giá trị

Muốn sử dụng mạng Kohonen để nhận dạng kí tự, bước đầu tiên là ta phải ánh xạ ảnh của kí tự vào một ma trận nhị phân hai chiều tương ứng. Một việc rất quan trọng ở đây là việc quyết định kích cỡ của ma trận. Nếu các điểm ảnh của kí tự được ánh xạ vào ma trận quá nhỏ, sẽ không biểu diễn được đặc trưng của các kí tự, còn nếu ma trận quá lớn, có thể dẫn đến việc xử lý ma trận gặp khó khăn. Qua thực nghiệm, để cho cân bằng hợp lý, khóa luận chọn kích cỡ của ma trận là 20x50 với 1000 phần tử. Đây cũng chính là số neuron lớp input của mạng Kohonen sẽ được sử dụng. Thuật toán downsampling: - Bước 1: Khởi tại ma trận kích thước 20x50. - Bước 2 : Xác định tỉ lệ tương ứng chiều rộng, chiều dài giữa ma trận điểm ảnh của ảnh kí tự và ma trận 20x50. - Bước 3 : Ánh xạ tương ứng từng vùng ma trận điểm ảnh của kí tự vào ma trận 20x50 thông qua tỉ lệ đã xác định được.

Set Values

Hình 3.21: Chia lưới kí tự.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

38

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

0 1

Dot-Matrix to Values-Matrix

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

0 0 0 0 0 0 1 1 1 1 1 1 1 0 0

0 0 0 1 1 1 1 1 1 1 1 0 0 0 0

1 1 1 1 1 1 0 0 0 1 1 0 0 0 0

1 1 1 1 1 1 0 0 0 1 1 0 0 0 0

0 0 0 1 1 1 1 1 1 1 1 0 0 0 0

0 0 0 0 0 0 1 1 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

Hình 3.22: Ánh xạ ma trận điểm ảnh vào ma trận giá trị.

3.4

Tổng kết chương

Chương này đã lần lượt trình bày lần lượt các cách tiếp cận để giải quyết ba bài toán chia nhỏ của hệ thống nhận dạng biển số. Bài toán Phát hiện vùng chứa biển số sử dụng hướng tiếp cận dựa trên bộ phân loại AdaBoost kết hợp đặc trưng Haar-like. Cách phát hiện đối tượng này đã được hiện thực trong bộ thư viện nguồn mở OpenCV nên công việc chính của khóa luận tại giai đoạn này đó là huấn luyện bộ phân loại. Nhiệm vụ huấn luyện yêu cầu rất nhiều công sức, sự tỉ mỉ nhưng kết quả nhận được sau huấn luyện tương đối khả quan. Sau khi đã phát hiện ra vùng chứa biển số, bài toán tiếp theo là tách các kí tự trên biển số để phục vụ cho việc nhận dạng kí tự tiếp theo. Hướng tiếp cận hình thái học đã được áp dụng do mỗi kí tự trên biển số đều mang những đặc tính giống nhau như tỉ lệ hai chiều, diện tích chiếm chỗ. Chi tiết quá trình xử lý vùng chứa biển số để nhận được các kí tự đã được trình bày chi tiết trên nội dung chương. Việc nhận dạng kí tự đã được đưa về dạng đơn giản nhất đó là nhận dạng từng kí tự riêng lẻ. Khóa luận sử dụng mạng neural Kohonen để phục vụ việc nhận dạng này. Một chương trình chạy trên nền desktop đã được xây dựng để huấn luyện mạng. Mẫu kí tự được thu thập bằng cách chụp lại các biển số và xử lý do biển số xe sử dụng bộ font chữ riêng. Sau đó, mạng đã huấn luyện được mang lên ứng dụng android dùng cho việc nhận dạng.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

39

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 3. Hệ thống nhận dạng biển số

Chương tiếp theo sẽ trình bày chi tiết quá trình hiện thực ứng dụng trên android smartphone.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

40

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4 Hiện thực hệ thống nhận dạng biển số xe trên android smartphone
Tại chương 3, khóa luận đã khái quát toàn bộ hướng tiếp cận cũng như lý thuyết căn bản liên quan để giải quyết bài toán nhận dạng biển số xe, chương 4 này sẽ trình bày cách mà khóa luận hiện thực ứng dụng, các thành phần của ứng dụng, bên cạnh đó sẽ kết hợp giới thiệu sơ bộ hệ điều hành android. Khóa luận sẽ không trình bày quá trình cài đặt môi trường phát triển, tạo máy giả lập, biên dịch và chạy ứng dụng android trên máy ảo, nên để có cái nhìn khái quát về quy trình phát triển ứng dụng android, có thể tham khảo thêm tại [1]. Môi trường, công cụ phát triển được sử dụng trong khóa luận: • Hệ điều hành: Window 7 Pro, 64 bit • IDE: Eclipse JEE Indigo + Android Development Tools (ADT) 21.0.1 • Java 1.6 • Android 2.2 (API 8)

4.1

Sơ lược hệ điều hành Android

Android là hệ điều hành điện thoại di động mã nguồn mở miễn phí do Google phát triển dựa trên nền tảng của Linux. Nó bao gồm một hệ điều hành, midware và một số ứng dụng chủ đạo. Bộ công cụ Android SDK bao gồm các công cụ riêng lẻ như: debugger, các thư viện, trình giả lập điện thoại Android, các tài liệu hỗ trợ, code mẫu, các hàm API cần thiết để phát

GVHD: Tiến sĩ Nguyễn Anh Tuấn

41

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình java. Hiện Android cung cấp bộ công cụ này trên nhiều nền tảng hệ điều hành khác nhau (Windows, Linux, Mac,...), miễn có sẵn Java Development Kit, Apache Ant và Python2.2 trở lên. Những tính năng mà nền tảng Android hỗ trợ: • Application framework: Cho phép tái sử dụng và thay thế các thành phần sẵn có của Android. • Dalvik virtual macine: Máy ảo java được tối ưu hóa cho thiết bị di động. • Intergrated browser: Trình duyệt web tích hợp được xây dựng dựa trên WebKit engine. • Optimized graphics: Hổ trợ bộ thư viện 2D và 3D dự vào đặc tả OpenGL ES 1.0. • SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc. • Hỗ trợ các định dạng media phổ biến như: MPEG4, H.264, MP3, AAC, ARM, JPG, PNG, GIF. • Hỗ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị). • Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị). • Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị). • Bộ công cụ phát triển ứng dụng mạnh mẽ. Ngôn ngữ lập trình chính thức của Android là Java. Dựa trên máy ảo Java của Sun, Google đã tinh chỉnh và phát triển nên máy ảo Dalvik để biên dịch mã Java với tốc độ biên dịch nhanh hơn và nhẹ hơn. các ứng dụng của Android sử dụng SQLite để quản lý cơ sở dữ liệu. Bằng cách sử dụng các frameworks của hãng thứ ba (VD: PhoneGap, Titanium,...), các nhà lập trình web cũng có thể phát triển ứng dụng Android một cách dễ dàng bằng các ngôn ngữ web phổ dụng như HTML, CSS, Javascript. Do sử dụng mã nguồn mở, Android ngày càng thu hút được nhiều nhà phát triển trên khắp thế giới, họ được tự do tạo ra và thương mại các ứng dụng, các hãng sản xuất có thể tùy biến lại những trải nghiệm Android cho khách hàng của riêng mình. Về phần cứng, Android hiện là hệ điều hành xuất hiện trên nhiều thiết bị nhất, người dùng

GVHD: Tiến sĩ Nguyễn Anh Tuấn

42

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone có thêm nhiều lựa chọn để sở hữu một chiếc điện thoại hợp với túi tiền và nhu cầu sử dụng của bản thân. Hầu như tất cả những Smartphone sử dụng hệ điều hành android đều rất dễ sử dụng, khả năng tùy biến nhanh chóng, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng của các nhà xản xuất. . . Qua tìm hiểu, nhận thấy tính linh hoạt và khả năng hỗ trợ cao từ công đồng, thiết bị đa dạng, chi phí hợp lý. . . khóa luận đã quyết định phát triển ứng dụng nhận dạng biển số xe máy trên smartphone sử dụng hệ điều hành Android.

4.2

Tính năng của ứng dụng

Từ phần này, khóa luận sẽ đặt tên ứng dụng nhận dạng biển số xe tên android là UIT-ANPR. Tính năng của UIT-ANPR tại thời điểm này là vô cùng đơn giản, thực hiện thu nhận hình ảnh từ camera của smartphone, xử lý nhận dạng, sau đó hiển thị kết quả nhận dạng được lên màn hình.

Hình 4.1: Ảnh chụp màn hình của ứng dụng đang chạy.

4.3

Cấu trúc ứng dụng

Về cơ bản, do ứng dụng sử dụng bộ thư viện nguồn mở được chia làm hai phần chính đó là Java và các thư viện.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

43

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone

4.3.1

Phần Java

Thành phần đầu tiên của UIT-ANPR là phần Java, phần này thực hiện hầu hết những công việc quan trọng của ứng dung. Nó xử lý gần như tất cả những tác vụ liên quan tới việc xử dụng tài nguyên của hệ điều hành, như mở/tắt camare, thu nhận hình ảnh, hiển thị hình ảnh lên màn hình xem trước, cập nhật kết quả từ quá trình nhận dạng . . .

4.3.2

Phần thư viện

UIT-ANPR sử dụng bộ thư viện nguồn mở OpenCV cho quá trình nhận biết vùng biển số và xử lý hình ảnh, nhưng OpenCV lại được viết trên C, nên để cho thuận tiện, khóa luận sử dụng lại bộ thư viện JavaCV. JavaCV là một JNA (Java Native Access) wrapper cho OpenCV API được phát triển bởi cộng đồng nguồn mở từ khá lâu, JavaCV cung cấp lại tất cả những lớp, hàm tương tự OpenCV trên Java, nên có thể dễ dàng dùng trên ứng dụng Android.

4.4

Các lớp trong ứng dụng

Phần này sẽ trình bày cái nhìn tổng quan về các lớp được hiện thực, từ các lớp chính thực hiện những chức năng của ứng dụng đến các lớp xây dựng mô hình mạng neural Kohonen. • MainActivity: activity là một trong bốn thành phần chính của ứng dụng android, được dùng để hiển thị một màn hình mà tại đó người dùng có thể tương tác với chương trình. Trong UIT-ANPR, MainActivity là activity chính, được thực hiện ngay khi ứng dụng bắt đầu. MainActivity được dùng để khởi tạo các thành phần của ứng dụng như CameraPreview (hiển thị hình ảnh từ camera), PlateView (hiển thị kết quả từ quá trình nhận dạng). Bên cạnh đó, MainActivity đảm nhận việc lấy dữ liệu từ bộ nhận dạng kí tự đã được huấn luyện trước đó vào ứng dụng. • CameraPreview: thực hiện chức năng hiển thị hình ảnh thu được từ camera ra màn hình theo thời gian thực, đồng thời truyền tải hình ảnh này qua cho PlateView xử lý việc nhận dạng dưới dạng một mảng byte. • PlateView: nạp bộ phân loại dưới dạng file xml thu được từ quá trình huấn luyện tại mục 3.3 vào bộ nhận dạng vùng chứa biển số của ứng dụng. Sau đó, khi nhận được dữ liệu hình ảnh dưới dạng mảng byte từ CameraPreview, PlateView xử lý hình ảnh này, đưa qua cho nhận dạng vùng chứa biển số. Sau khi bộ nhận dạng vùng biển số phát hiện có biển số, PlateView nhận dữ liệu này (dưới dạng tọa độ) và thực hiện công việc chính của mình là vẽ một hình chữ nhật bao quanh vùng chứa biển số hiển thị trên màn

GVHD: Tiến sĩ Nguyễn Anh Tuấn

44

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone

Hình 4.2: Sơ đồ lớp chính của ứng dụng

GVHD: Tiến sĩ Nguyễn Anh Tuấn

45

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone

Hình 4.3: Sơ đồ lớp của mạng neural Kohonen

GVHD: Tiến sĩ Nguyễn Anh Tuấn

46

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone hình, bên cạnh đó, nó thực hiện gọi lớp DoOCR để bắt đầu quá trình nhận dạng kí tự nếu đây là một biển số mới! • DoOCR: đây có thể coi là lớp xử lý chính của toàn bộ ứng dụng. Sau khi đã nhận được vùng chứa biển số nhận được từ lớp PlateView, DoOCR sẽ tiến hành xử lý lại vùng này để phân tách các kí tự, chuyển đổi các kí tự sau khi phân tách thành đầu vào của mạng Kohonen, qua đó thu được các kí tự đã được nhận dạng, ngay lập tức nó đưa kết quả nhận được này về lại lớp PlateView để hiển thị, đây cũng chính là kết quả cuối cùng của ứng dụng cần hướng đến. • Utils: lớp này thực hiện một số chức năng tiện ích hỗ trợ cho ứng dụng như kiểm tra vùng chứa biển số mới phát hiện có phải là biển số mới hay không, định dạng lại kết quả cuối cùng theo đúng chuẩn của quy định biển số Việt Nam . . . • BitmapWithCentroid: do quá trình phân tách kí tự luôn trả về các vùng kí tự không theo một trật tự nhất định, nên để có thể nhận được kết quả đúng đắn, cần thực hiện việc sắp xếp lại các kí tự này dựa trên điểm trọng tâm của vùng chứa nó, lớp BitmapWithCentroid được xây dựng để hỗ trợ việc này. Hình 4.2 biểu diễn những lớp được trình bày trên dưới dạng biểu đồ UML. Các lớp của mạng Kohonen và chương trình huấn luyện mạng được hiện thực dựa trên mã nguồn đi kèm của cuốn Introduction to Neural Networks for Java của tác giả Jeff Heaton [4], khóa luận sẽ không đi sâu vào trình bày chi tiết, để biết thêm chi tiết, có thể tìm đọc chương 11 và 12, ấn bản thứ hai của cuốn sách này. Hình 4.3 biểu diễn những lớp của mạng Kohonen qua biểu đồ UML.

4.5

Chương trình huấn luyện mạng Kohonen

Đây là chương trình chạy trên nền desktop để huấn luyện mạng Kohonen dùng trong quá trình nhận dạng kí tự của ứng dụng. Sau quá trình huấn luyện với tập các kí tự tại hình 4.5, ta chỉ việc lưu mạng này dưới dạng một file nhị phân, sau đó file nhị phân sẽ được nạp vào ứng dụng trên android dùng trong quá trình nhận dạng kí tự.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

47

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone

Hình 4.4: Ảnh chụp màn hình chương trình huấn luyện mạng Kohonen

Hình 4.5: Tập kí tự dùng cho việc huấn luyện

GVHD: Tiến sĩ Nguyễn Anh Tuấn

48

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone

4.6

Hiệu chỉnh kết quả dựa trên cú pháp

Do một vài nguyên nhân, quá trình nhận dạng kí tự có thể đưa lại kết quả chưa thực sự chính xác, ví dụ như sự nhầm lẫn có thể xảy ra với những kí tự có hình dạng tương đối giống nhau như “B” và “8”, “S” và “5”, “G” và “6” . . . Thật may là ta có thể dựa vào những quy định của đăng kí biển số xe Việt Nam để sửa lại những nhầm lẫn kiểu này, cụ thể: - Hai kí tự đầu tiên: chỉ có thể là số. - Hai kí tự tiếp theo: kí tự đầu tiên của nhóm này phải là kí tự chữ. - Bốn hoặc năm kí tự cuối cùng: phải là số. Sự hiệu chỉnh này có thể thực hiện đơn giản bằng cách thay thế trực tiếp những kí tự có hình dạng giống nhau tại những vị trí chỉ có thể là kí tự số hoặc chỉ có thể là kí tự chữ. Kết quả mang lại qua kiểm nghiệm, quá trình hiệu chỉnh đơn giản này mang lại hiệu quả khá lớn, nâng cao được độ chính xác của toàn bộ quá trình.

4.7

Kết quả thực nghiệm

Sau khi hiện thực thành công ứng dụng trên smartphone androidtheo các hướng tiếp cận đã nêu, khóa luận đã tiến hành thực nghiệm trên một số điều kiện khác nhau, kết quả thu được như sau: 1. Nhà xe chung cư B1 Trường Sa. Số mẫu: 100 biển số. Quá Trình Tách kí tự Nhận dạng kí tự Kết quả chung Thành công (%) Lỗi (%) 3 3 5 11 97 95 89

Phát hiện vùng biển số 97

Bảng 4.1: Kết quả thử nghiệm 1

4.8

Tổng kết chương

Tại chương này, toàn bộ quá trình hiện thực ứng dụng trên android smartphone và chương trình huấn luyện mạng Kohonen đã được trình bày thông qua việc trình bày chi tiết các lớp đã được sử dụng cùng với sơ đồ UML của các lớp. Việc hiện thực này hoàn toàn tuân theo

GVHD: Tiến sĩ Nguyễn Anh Tuấn

49

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 4. Hiện thực hệ thống nhận dạng biển số xe trên android smartphone cách tiếp cận đã được trình bày tại chương 3. Khi ứng dụng được khởi chạy, việc đầu tiên đó là nạp bộ phân loại phát hiện vùng chứa biển số và mạng neural đã được huấn luyện. Bộ nhận dạng sẽ dùng bộ phân loại vừa được nạp phát hiện vùng chứa biển số. Ngay khi vùng chứa biển số được phát hiện, nếu đây là biển số mới được phát hiện, vùng chứa này sẽ được đưa qua xử lý để phân tách các kí tự. Các kí tự này sau đó lại được chuẩn hóa làm đầu vào của mạng neural Kohonen, tại đây mạng sẽ quyết định xem đó là kí tự nào. Việc sắp xếp lại các kí tự đã được nhận dạng sẽ trả về cho ứng dụng kết quả cuối cùng hiển thị lên màn hình. Sau khi ứng dụng được hiện thực thành công, khóa luận đã thực hiện thực nghiệm trên một vài điều kiện nhất định, kết quả đạt được về độ chính xác và tốc độ tương đối cao, điều này khẳng định hướng tiếp cận của khóa luận là một hướng tiếp cận hợp lý. Nhưng bên cạnh đó, những điểm yếu là không thể tránh khỏi, điều này sẽ được trình bày tại chương kế tiếp cùng với hướng phát triển của khóa luận.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

50

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 5 Kết luận và hướng phát triển
Sau khóa luận, về cơ bản luận văn đã nắm bắt được mô hình nhận dạng kí tự nói chung và mô hình nhận dạng biển số xe nói riêng. Với những kiến thức về xử lý ảnh, mạng neural và hệ thống xử lý trên android, khóa luận đã vận dụng và xây dựng thành công chương trình nhận dạng biển số trên smartphone sử dụng hệ điều hành android, kết quả bước đầu tương đối khả quan. Chương này sẽ khái quát lại những gì khóa luận đã đạt được và đề ra hướng phát triển tiếp theo để có thể đưa hệ thống nhận dạng biển số trên android smartphone được ứng dụng vào thực tế.

5.1

Những kết quả đạt được

- Nắm được quy trình chung trong xây dựng một hệ thống nhận dạng biển số. - Hiểu và vận dụng quá trình tiền xử lý ảnh thu được từ camera của smartphone. - Tìm hiểu và khai thác được một phần sức mạnh của bộ thư viện mã nguồn mở OpenCV trong việc xử lý, phát hiện vùng chứa biển số và tách kí tự. - Nắm được kiến thức cơ bản về mô hình mạng neural và cách hiện thực một mô hình mạng neural trong thực tế. - Nắm được các khái niệm cơ bản về Android và cách thức xây dựng một ứng dụng trên android với bộ công cụ phát triển Eclipse. Về mặt thực nghiệm: - Xây dựng thành công mạng neural đơn giản, cài đặt thuật toán huấn luyện mạng ứng dụng trong quá trình nhận dạng kí tự.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

51

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Chương 5. Kết luận và hướng phát triển - Xây dựng thành công hệ thống nhận dạng biển số xe trên Android với kết quả khá khả quan. Tóm lại, khóa luận “Tìm hiểu và phát triển ứng dụng nhận dạng biển số xe trên Android smartphone” sử dụng bộ thư viện nguồn mở OpenCV kết hợp với mạng neural nhân tạo cơ bản Kohonen đã đạt được những kết quả cơ bản của một hệ thống nhận dạng với tốc độ xử lý nhanh (thời gian đáp ứng trung bình là khoảng 400ms kể từ khi phát hiện ra vùng biển số) và hiệu quả cao (trung bình 90% dưới mọi điều kiện), điều này cho thấy hướng tiếp cận giải quyết bài toán là phù hợp.

5.2

Hướng phát triển

Bên cạnh những kết quả đạt được, khóa luận còn có những mặt hạn chế chưa được giải quyết hay đề cập tới, đó cũng chính là mục tiêu tiếp theo của khóa luận này. Những tính năng dưới đây sẽ tiếp tục được phát triển với hy vọng có thể đưa hệ thống ứng dụng trong thực tiễn. - Nâng cao hơn nữa tốc độ và độ chính xác nhận dạng. - Lưu trữ địa điểm, thời gian của biển số được nhận dạng. - Xây dựng cơ sở dữ liệu trên máy chủ để thu thập, lưu trữ và sử dụng các kết quả do chương trình nhận dạng mang lại. - Dò tìm và phát hiện biển số cần tìm kiếm, thông báo về máy chủ để xử lý. - Hiển thị thông tin chủ phương tiện, phục vụ cho mục đích kiểm soát an ninh.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

52

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

Tài liệu tham khảo
[1] Ed Burnette. Hello, Android: Introducing Google’s Mobile Development Platform. Pragmatic Bookshelf, 2nd edition, 2009. 41 [2] Yoav Freund and Robert E. Schapire. A decision-theoretic generalization of on-line learning and an application to boosting. In Proceedings of the Second European Conference on Computational Learning Theory, EuroCOLT ’95, pages 23–37, London, UK, UK, 1995. Springer-Verlag. [3] G. Harman. A case study on data interoperability for license plate recognition. In Technologies for Homeland Security, 2008 IEEE Conference on, pages 237 –239, may 2008. [4] J. Heaton. Introduction to Neural Networks for Java, Second Edition. Heaton Research, 2008. 47 [5] J.S. Kang, M.H. Kang, C.H. Park, J.H. Kim, and Y.S. Choi. Implementation of embedded system for vehicle tracking and license plates recognition using spatial relative distance. In Information Technology Interfaces, 2004. 26th International Conference on, pages 167 –172 Vol.1, june 2004. [6] Rainer Lienhart and Jochen Maydt. An extended set of haar-like features for rapid object detection. In IEEE ICIP 2002, pages 900–903, 2002. [7] Andres Llana. Wireless application protocol (wap) and mobile wireless access. Information Systems Security, 11(3):14–21, 2002. [8] R.A. Lotufo, A.D. Morgan, and A.S. Johnson. Automatic number-plate recognition. In Image Analysis for Transport Applications, IEE Colloquium on, pages 6/1 –6/6, feb 1990. [9] M.R. Lynch. Practical automobile number plate recognition by linear weight neural networks. In Toll Systems, IEE Colloquium on, pages 61 –63, oct 1992.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

53

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú

TÀI LIỆU THAM KHẢO [10] Ondrej Martinsky. Algorithmic and mathematical principles of automatic number plate recognition systems. Master’s thesis, BRNO University of Technology, 2007. [11] A. Mutholib, T.S. Gunawan, and M. Kartiwi. Design and implementation of automatic number plate recognition on android platform. In Computer and Communication Engineering (ICCCE), 2012 International Conference on, pages 540 –543, july 2012. [12] Constantine P. Papageorgiou, Michael Oren, and Tomaso Poggio. A general framework for object detection. In Proceedings of the Sixth International Conference on Computer Vision, ICCV ’98, pages 555–, Washington, DC, USA, 1998. IEEE Computer Society. [13] J. Parker, R.V. Kenyon, and D.E. Troxel. Comparison of interpolating methods for image resampling. IEEE Trans Med Imaging, 2(1):31–9, 1983. [14] Mke Rhead, Robert Gurney, Soodamani Ramalingam, and Neil Cohen. Accuracy of automatic number plate recognition (anpr) and real world uk number plate problems. In Security Technology (ICCST), 2012 IEEE International Carnahan Conference on, pages 286 –291, oct. 2012. [15] A. Sharma, A. Dharwadker, and T. Kasar. Moblp: A cc-based approach to vehicle license plate number segmentation from images acquired with a mobile phone camera. In India Conference (INDICON), 2010 Annual IEEE, pages 1 –4, dec. 2010. [16] Paul Viola and Michael Jones. Rapid object detection using a boosted cascade of simple features. In Proceeding of Conference on Computer Vision and Pattern Recognition, pages 511–518, 2001. 12 [17] Paul Viola and Michael Jones. Robust real-time object detection. International Journal of Computer Vision, 57(2):137–154, 2002. [18] J. Wang, D.H. Wang, and S. Chen. Map matching algorithm based on mobile phone location. In Intelligent Computation Technology and Automation (ICICTA), 2011 International Conference on, volume 1, pages 676 –679, march 2011. [19] Chen Yuan-yuan and Li Jing. A method of number-plate character recognition algorithm based on boosting classification. In Communications and Mobile Computing, 2009. CMC ’09. WRI International Conference on, volume 3, pages 263 –267, jan. 2009.

GVHD: Tiến sĩ Nguyễn Anh Tuấn

54

SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú