BÁO CÁO BÀI TẬP LỚN ANDROID, XÂY DƯNG CHƯƠNG TRÌNH, NHẬN DẠNG BIỂN SỐ ,XE MÁY VÀ XE Ô TÔ
BÁO CÁO BÀI TẬP LỚN ANDROID ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG BIỂN SÔ XE MÁY VÀ XE Ô TÔ Giảng viên hướng dẫn:Ts.Nguyễn Hồng Quang Sinh viên thực hiện: Trần Văn Tâm MSSV:20102124 Lớp: Điện tử 6-K55 TP.Hà Nội,tháng 12 năm 2014 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 sự quan tâm nghiên cứu nhiều nhà khoa học giới, đặc biệt là năm gần các thiết bị di động điện thoại di động, máy tính bảng đời và phổ biến, cơng với nhu cầu thiết thực hỗ trợ giải vấn đề đời sống tự đợng hóa 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 báo cáo trình bày nhận dạng biển số xe sử dụng mơ hình mạng neural với ứng dụng hệ điều hành Android Hướng tiếp cận dựa diện mạo, dùng bộ phân loại mạnh AdaBoots – là sự kết hợp các bộ phân loại yếu dựa 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ự phương pháp sử dụng phổ biến là mạng neural (neural network) Hệ thống thử nghiệm thực tế, 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 MỤC LỤC I Hệ thống nhận dạng biển số ………………………………………………………………….5 Phát hiện vùng chứa biển số xe………………………………………………………5 1.1 Đặc trưng Haar-like…………………………………………………………6 1.2 AdaBoost……………………………………………………………………8 1.3 Hệ thống xác định vùng chứa biển số xe……………………………………10 1.4 Huấn luyện bộ phân loại…………………………………………………….11 2.Tách kí tự………………………………………………………………………………14 2.1 Chuẩn hóa kích thước ảnh………………………………………………… 14 2.2 Chuyển đổi ảnh màu ảnh xám…………………………………………….15 2.3 Tăng tính tương phản thuật toán cân hóa lược đờ xám………… 16 2.4 Xác định ngưỡng, nhị phân hóa ảnh…………………………………………17 2.5 Tìm biên, xác định các đường viền (contour) ảnh nhị phân…………….18 2.6 Tách kí tự dựa đặc tính hình thái học………………………………… 19 Nhận dạng kí tự……………………………………………………………………… 20 3.1 Mạng neural sinh học……………………………………………………… 20 3.2 Mạng neural nhân tạo……………………………………………………… 21 3.3 Mạng neural Kohonen……………………………………………………….22 3.4 Ánh xạ ma trận điểm ảnh vào ma trận giá trị……………………………… 25 Tổng kết……………………………………………………………………………….26 II Hiện thực hệ thống nhận dạng biển số xe android smartphone………………………….27 Tính ứng dụng……………………………………………………………….27 Cấu trúc ứng dụng……………………………………………………………………28 2.1 Các lớp ứng dụng…………………………………………………….28 2.2 Chương trình huấn luyện mạng Kohonen………………………………….29 2.3 Hiệu chỉnh kết quả dựa cú pháp…………………………………… 30 Tổng kết chương…………………………………………………………………… 30 Tài liệu tham khảo I.Hệ thống nhận dạng biển số Yêu cầu hệ thống: Thu thập hình ảnh từ camera Thực hiện ghi mẫu biển số xe Nhận dạng biển số xe Trong chức quan trọng là nhận dạng biển số.Chức nhận dạng biển số thường hiện thực cách giải riêng rẽ ba bài toán nhỏ là phát hiện vùng chứa biển số, tách kí tự và nhận dạng kí tự 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ới kết quả toàn bộ hệ thống Mục đích bước này là trích vùng nhỏ chứa biển số từ ảnh thu từ camera điện thoại Có nhiều phương pháp tiếp cận để thực hiện nhiệm vụ này tất cả qui phương pháp 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 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 biển số xe màu sắc, độ sang, sự đối xứng để xác định và trích ảnh biển số Phương pháp khớp mẫu: xem biển số là một đối tượng có khung riêng và sử dụng các cửa sổ dò để trích đố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 Trong bài làm em sử dụng hướng tiếp cận dựa diện mạo, dùng bộ phân loại mạnh AdaBoost - là sự kết hợp các bộ phân loại yếu dựa các đặc trưng Haar-like - để phát hiện vùng chứa biển số Phương pháp này đánh giá là khá đơn giản, mang lại kết quả phát hiện tương đối cao Phương pháp cài đặt dựa bộ thư viện mã nguồn mở openCV 1.1 Đặc trưng Haar-like Do Viola và Jones công bố năm 2001 [16], gồm đặc trưng bản để xác định đối tượng Mỗi đặc trưng Haa-like là sự kết hợp 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 đối tượng tương đối phức tạp, đặc trưng Haar-like bản mở rợng thêm thành tập đặc trưng bản sau: Hình 1.1 Các dạng bản đặc trưng Haar-like Dùng các đặc trưng trên, ta tính giá trị đặc trưng Haar-like là sự chênh lệch tổng các pixel các vùng đen và các vùng trắng công thức sau: F(x) = (1.1) Sử dụng giá trị này, so sánh với các giá trị các giá trị pixel thô, các đặc trưng Haarlike tăng/giảm sự thay đổi in-class/out-of-class (bên hay bên ngoài lớp khn mặt người), làm cho bợ phân loại dễ Như thấy rằng, để tính các giá trị đặc trưng Haar-like, ta phải tính tổng các vùng pixel ảnh Nhưng để tính toán các giá trị các đặc trưng Haar-like cho tất cả các vị trí ảnh đòi hỏi chi phí tính toán khá lớn, khơng đáp ứng cho các ứng dụng đòi hỏi tính run-time Do Viola và Jones đưa mợt khái niệm gọi là Integral Image, là một mảng chiều với kích thước với kích ảnh cần tính các đặc trưng Haar-like, với phần tử mảng này tính cách tính tổng điểm ảnh phía (dòng-1) và bên trái (cợt-1) Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, phải ảnh, việc tính toán này đơn thuần đựa phép cộng số nguyên đơn giản, tốc đợ thực hiện nhanh P(x,y) = (1.2) Hình 1.2 Cách tính Integral Image ảnh Sau tính Integral Image, việc tính tổng các giá trị mức xám một vùng nào ảnh thực hiện đơn giản theo cách sau: Giả sử ta cần tính tổng các giá trị mức xám vùng D hình 3.3, ta tính sau: D = A + B + C + D – (A + B) – (A + C ) + A (1.3) Với A + B + C + D là giá trị điểm P4 Integral Image, tương tự A + B là giá trị điểm P2, A + C là giá trị điểm P3, và A là giá trị điểm P1 Vậy ta viết lại biểu thức tính D sau: D= ‒ ‒ + (1.4) Hình1.3Ví dụ cách tính nhanh các giá trị mức xám vùng D ả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 gọi là AdaBoost AdaBoost 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 cho câu trả lời xác việc đoán mợt cách ngẫn nhiên mợt chút, bợ phân loại mạnh đưa câu trả lời xác 60% 1.2 AdaBoost AdaBoost là mợt bợ phân loại mạnh phi tuyến phức dựa hướng tiếp cận boosting Freund và Schapire đưa vào năm 1995 Adaboost hoạt động 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 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, weak classifiers xây dựng, thuật toán 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ác mẫu bị nhận dạng sai và giảm trọng số các mẫu nhận dạng weak classifier vừa xây dựng Bằng cách này weak classifer sau tập trung vào các mẫu mà các weak classifiers trước làm chưa tốt Sau cùng, các weak classifers kết hợp tùy theo mức độ tốt 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) sau: Hình 1.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, biểu diễn sau: hk = (3.5) x: cửa sổ cần xét : ngưỡng (θ = theta) fk: giá trị đặc trưng Haar-like pk: hệ số định chiều phương trình AdaBoost kết hợp các bộ phân loại yếu thành bộ phân loại mạnh sau: H(x) = sign ( a1h1(x) + a2h2(x) +…+ anhn(x)) (a= alpha) (3.6) với: a ≥ là hệ số chuẩn hoá cho các bộ phân loại yếu Hình 1.5 Kết hợp các bợ phân loại yếu thành bộ phân loại mạnh 1.3 Hệ thống xác định vùng chứa biển sớ xe Hình 1.6 Hệ thống xác định vùng chứa biển số xe Như hình 1.6, từ ảnh gốc ban đầu, tính Integral Image, là mảng chiều với phần tử (x; y) tính tổng các phần tử (x′; y′) với x′< x và y′< y, mục đích là để tính nhanh tổng các giá trị mức xám một vùng hình chữ nhật ảnh gốc Các vùng ảnh này đưa qua các hàm Haar bản để ước lượng đặc trưng, kết quả ước lượng đưa qua bộ điều chỉnh AdaBoost để loại bỏ nhanh các đặc trưng khơng có khả là đặc trưng 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ả là đặc trưng biển số xe mới chuyển sang cho bộ định kết quả (là tập các bộ phân loại yếu có cấu trúc hình 1.4) Bợ định tổng hợp kết quả là biển số xe kết quả các bộ phân loại yếu trả là biển số xe 10 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ứa hai giá trị (hoặc và 255 tùy theo quy định cấu trúc ảnh) Theo đó, giá trị là giá trị ứng với điểm đen ảnh và giá trị (hoặc 255) là giá trị ứng với điểm trắng Nhị phân hóa ảnh thường thực hiện 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ị ảnh xám chúng bé một ngưỡng T cho trước và 255 chúng lớn ngưỡng T Vấn đề là với ngưỡng T nào cho ta ảnh nhị phân ý muốn, nghĩa là ảnh làm các vùng đối tượng và Việc xác định giá trị T là khó chúng phụ tḥc vào điều kiện chiếu sáng khác 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 sử dụng mợt ngưỡng chung để nhị phân hóa các hình chứa vùng biển số thu Để giải vấn đề này, khóa luận lựa chọn dùng phương pháp lấy ngưỡng đợng hay 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 ngưỡng khác vùng ảnh khác mợt ảnh Hình 1.10 Phương pháp này lấy ngưỡng nhị phâ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 sổ là trung bình cợng các giá trị các lân cậ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 là: T = 1/8(A11 + A12 + A13 + A21 + A23 + A31 + A32 + A33) 17 Nếu A22 > T , đặt A22 255, A22 < T , đặt A22 Qua thấy để nhị phân hóa mợt ảnh theo cách tốn nhiều thời gian, đặc biệt là đối với 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 nhắc tới phần trình bày đặc trưng Haar-like Hình 1.11 2.5 Tìm biên, xác định đường viền (contour) ảnh nhị phân Biên ảnh là điểm mà hàm đợ sáng ảnh liên tục có bước nhảy biến thiên nhanh Cơ sở toán học 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 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) ảnh Ví dụ mợt ảnh nhị phân mợt điểm gọi là biên là điểm đen và có một điểm trắng lân cận Biên ảnh thường dùng để phân vùng ảnh, và khóa luận dựa vào biên ảnh để xác định các kí tự vùng chứa biển số biển số sau nhị phân hóa các kí tự là màu trắng nằm đen rõ ràng Có nhiều phương pháp để thực hiện việc tìm biên này 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 hiện thực hóa thư viện OpenCV 18 Hình 1.12 2.6 Tách kí tư dưa đặc tính hình thái học Dựa vào các đường viền liền mạch tìm từ bước trước và đặc tính hình thái học các kí tự biển số sau 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 Ta dễ dàng tìm vùng chứa các kí tự riêng rẽ biển số Hình 1.13 Từ các vùng kí tự xác trên, việc tách kí tự khỏi biển số trở nên vô đơn giản và kết quả thu hình dưới: 19 Hình 1.14 Nhận dạng kí tư Sau tách các kí tự riêng rẽ phần trước, bài toán cần phải xử lý là nhận dạng kí tự Bài toán này giải nhiều phương pháp khác phương pháp sử dụng phổ biến 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 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 khóa luận sử dụng để giải bài toán nhận dạng kí tự 3.1 Mạng neural sinh học Mạng neural sinh học cấu thành các neural – là các tế bào não hay các tế bào thần kinh Mỗi neural có ba thành phần chính: dendrite, soma và axon Ba thành phần này là ba yếu tố mô lại 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ừ neural khác Các xung điện này sau chuyển đến soma – phần thân tế bào – để xử lý Axon là đầu các neural, truyền xung điện xử lý 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 nối với thông qua các điểm nối, đầu (axon) neural này nối với đầu vào (dendrite) neural khác Mợt neural có nhiều đầu vào và nhiều đầu 20 Hình 1.15 Mạng neural sinh học 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ấu tạo các đơn vị xử lý đơn giản, có chức lưu trữ tri thức kinh nghiệm và cho phép sử dụng tri thức này Mạng neural mô bợ não người theo hai khía cạnh sau: Tri thức thu thập mạng neural môi trường hoạt đợng thơng qua mợt quá trình học (hay gọi là huấn luyện) Trọng số liên kết các đơn vị xử lý dùng để lưu trữ tri thức thu thập Quá trình học thực hiện một thuật toán học Thuật toán này làm thay đổi trọng số liên kết các đơn vị xử lý để đạt mục tiêu thiết kế Mạng neural nhân tạo xây dựng dựa các mơ hình toán học mơ hoạt đợng yếu tố mạng neural sinh học (dendrite, soma, axon) Hoạt động mạng neural nhân tạo có tính chất sau: - Quá trình xử lý thông tin xảy đơn vị mạng, gọi là neural - Các neural liên kết với - Mỗi liên kết các neural có mợt trọng số Trọng số này đặc trưng cho bài toán biểu diễn mạng Khi nhận thông tin đầu vào, các đầu vào nhân với các trọng số tương ứng, sau cợng lại 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 tính toán đầu cho neural dựa vào giá trị net nêu Đặc trưng một mạng neural nhân tạo bao gồm: - Mơ hình kết nối các neural mạng với hay gọi là kiến trúc mạng - Cách thức xác định trọng số các liên kết mạng - Hàm kích hoạt các neural 21 Mạng neural nhân tạo ứng dụng để giải nhiều lớp bài toán: lưu trữ và phục hồi trạng thái mẫu, phân lớp mẫu, tìm ánh xạ đầu vào và đầu ra, gom nhóm các mẫu giống dùng để giải các bài toán tối ưu có ràng ḅc Hình 1.16 Biểu diễn một neural nhân tạo 3.3 Mạng neural Kohonen Trong các kiểu khác mạng neural, mạng neural Kohonen giống với mạng neural sinh học cả cấu tạo lẫn chế học Mạng neural Kohonen là mạng có khả sử dụng kinh nghiệm quá khứ để thích ứng với biến đổi mơi trường (khơng dự báo trước) Loại mạng này tḥc nhóm hệ học, thích nghi khơng cần có tín hiệu đạo từ bên ngoài Cấu trúc mạng neural Kohonen Mạng neural Kohonen bao gồm một lớp liệu đầu vào và một lớp liệu đầu các neuron và khơng chứa lớp ẩn Lớp 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 liệu đầu vào mạng Đối với mạng neural Kohonen, ta nên chọn liệu đầu vào chuẩn hóa khoảng -1 và Khi thực thi mẫu liệu đầu vào, mạng tạo các neuron đầu Lớp đầu mạng neural Kohonen khác với lớp đầu mạng neural truyền thẳng Đối với mạng truyền thẳng, có mợt mạng neural với neuron đầu ra, chúng cho kết quả bao gờm giá trị Còn mạng neural Kohonen có mợt neuron đầu cho một giá trị Giá trị này là sai Dữ liệu đầu từ mạng neural Kohonen thường là các số neuron (Ví dụ neuron số 5, ) Cấu trúc đặc trưng mạng neural Kohonen hình sau 22 Hình 1.17 Mợt dạng mạng neural Kohonen Q trình học mạng Kohonen Toàn bợ quá trình huấn lụ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 mạng neural Kohonen mức thấp mức chấp nhận 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 tập huấn lụn có mợt neuron thắng Neuron thắng này có trọng số điều chỉnh cho tác đợng trở lại mạnh mẽ liệu đầu vào lần Sự khác các neuron thắng dẫn tới sự khác các mẫu đầu vào 23 Hình 1.18 Sơ đờ khối biểu diễn huấn lụn mạng neural Kohonen 24 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 kí tự vào mợt ma trận nhị phân hai chiều tương ứng Một việc quan trọng là việc định kích cỡ ma trận Nếu các điểm ảnh kí tự ánh xạ vào ma trận quá nhỏ, khơng biểu diễn đặc trưng các kí tự, ma trận quá lớn, dẫn đến việc xử lý ma trận gặp khó khăn Qua thực nghiệm, cân hợp lý, khóa luận chọn kích cỡ ma trận là 20x50 với 1000 phần tử Đây là số neuron lớp input mạng Kohonen sử dụng Thuật toán downsampling: - Bước 1: Khởi ma trận kích thước 20x50 - Bước : Xác định tỉ lệ tương ứng chiều rộng, chiều dài ma trận điểm ảnh ảnh kí tự và ma trận 20x50 - Bước : Ánh xạ tương ứng vùng ma trận điểm ảnh kí tự vào ma trận 20x50 thơng qua tỉ lệ xác định Hình 1.19 Chia lưới kí tự 25 Hình 1.20 Ánh xạ ma trận điểm ảnh vào ma trận giá trị Tổng kết Như ta lần lượt trình bày lần lượt các cách tiếp cận để giải ba bài toán chia nhỏ 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 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 hiện thực bộ thư viện nguồn mở OpenCV nên công việc khóa luận 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 nhiều công sức, sự tỉ mỉ kết quả nhận sau huấn luyện tương đối khả quan Sau phát hiện vùng chứa biển số, bài toán là tách các kí tự biển số đểphục vụ cho việc nhận dạng kí tự Hướng tiếp cận hình thái học áp dụng kí tự biển số mang đặc tính giống 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 kí tự trình bày chi tiết nợi dung chương Việc nhận dạng kí tự đưa dạng đơn giản là nhận dạng kí tự riêng lẻ Hệ thống 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 desktop xây dựng để huấn luyện mạng Mẫu kí tự thu thập cách chụp lại các biển số và xử lý biển số xe sử dụng bộ font chữ riêng Sau đó, mạng huấn luyện mang lên ứng dụng android dùng cho việc nhận dạng 26 II Hiện thưc hệ thống nhận dạng biển số xe android smartphone Tính ứng dụng Tính ứng dụng ANPR thời điểm này là vô đơn giản, thực hiện thu nhận hình ảnh từ camera smartphone, xử lý nhận dạng, sau hiển thị kết quả nhận dạng lên màn hình và mẫu nhận dạng vào file text Hình 1.21 Ảnh chụp màn hình ứng dụng chạy 27 Cấu trúc ứng dụng Về bản, ứng dụng sử dụng bộ thư viện ng̀n mở chia làm hai phần là Java và các thư viện Phần Java: Thành phần đầu tiên ứng dụng ANPR là phần Java, phần này thực hiện hầu hết công việc quan trọng ứng dung Nó xử lý gần tất cả tác vụ liên quan tới việc xử dụng tài nguyên hệ điều hà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 Ứng dụng ANPR sử dụng bợ thư viện ng̀n mở OpenCV cho quá trình nhận biết vùng biển số và xử lý hình ảnh 2.1 Các lớp ứng dụng Phần này trình bày cái nhìn tổng quan các lớp hiện thực, từ các lớp thực hiện chức ứng dụng đến các lớp xây dựng mơ hình mạng neural Kohonen MainActivity: activity là một bốn thành phần ứng dụng android, dùng để hiển thị mợt màn hình mà người dùng tương tác với chương trình Trong UIT-ANPR, MainActivity là activity chính, thực hiện ứng dụng bắt đầu MainActivity dùng để khởi tạo các thành phần ứng dụng 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 liệu từ bợ nhận dạng kí tự huấn luyện trước vào ứng dụng CameraPreview: thực hiện chức hiển thị hình ảnh thu từ camera 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 từ quá trình huấn lụn mục 3.3 vào bợ nhận dạng vùng chứa biển số ứng dụng Sau đó, nhận 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 bợ nhận dạng vùng biển số phát hiện có biển số, PlateView nhận liệu này (dưới dạng tọa độ) và thực hiện cơng việc là vẽ mợt hình chữ nhật bao quanh vùng chứa biển số hiển thị màn hình, bên cạnh 28 đó, thực hiện gọi lớp DoOCR để bắt đầu quá trình nhận dạng kí tự là mợt biển số mới! DoOCR: coi là lớp xử lý toàn bợ ứng dụng Sau nhận vùng chứa biển số nhận từ lớp PlateView, DoOCR 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 phân tách thành đầu vào mạng Kohonen, qua thu các kí tự nhận dạng, đưa kết quả nhận này lại lớp PlateView để hiển thị, là kết quả cuối ứng dụng cần hướng đến Utils: lớp này thực hiện một số chức tiện ích hỗ trợ cho ứng dụng 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 theo chuẩn quy định biển số Việt Nam BitmapWithCentroid: quá trình phân tách kí tự ln trả các vùng kí tự khơng theo mợt trật tự định, nên để nhận kết quả đắn, cần thực hiện việc xếp lại các kí tự này dựa điểm trọng tâm vùng chứa nó, lớp BitmapWithCentroid xây dựng để hỗ trợ việc này 2.2 Chương trình huấn luyện mạng Kohonen Đây là chương trình chạy desktop để huấn luyện mạng Kohonen dùng quá trình nhận dạng kí tự ứng dụng Sau quá trình huấn luyện với tập các kí tự hình 1.22, ta việc lưu mạng này dưới dạng mợt file nhị phân, sau file nhị phân nạp vào ứng dụng android dùng quá trình nhận dạng kí tự Hình 1.22 Tập kí tự dùng cho việc huấn luyện 2.3 Hiệu chỉnh kết dưa cú pháp 29 Do một vài ngun nhân, quá trình nhận dạng kí tự đưa lại kết quả chưa thực sự xác, ví dụ sự nhầm lẫn xảy với kí tự có hình dạng tương đối giống “B” và “8”, “S” và “5”, “G” và “6” Thật may là ta dựa vào quy định đăng kí biển số xe Việt Nam để sửa lại nhầm lẫn kiểu này, cụ thể: - Hai kí tự đầu tiên: là số - Hai kí tự tiếp theo: kí tự đầu tiên nhóm này phải là kí tự chữ - Bốn năm kí tự cuối cùng: phải là số Sự hiệu chỉnh này thực hiện đơn giản cách thay trực tiếp kí tự có hình dạng giống vị trí là kí tự số 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 độ xác toàn bợ quá trình 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 android smartphone và chương trình huấn luyện mạng Kohonen trình bày thơng qua việc trình bày chi tiết các lớp sử dụng với sơ đồ UML các lớp Việc hiện thực này hoàn toàn tuân theo cách tiếp cận trình bày Khi ứng dụng 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 huấn luyện Bộ nhận dạng dùng bộ phân loại vừa nạp phát hiện vùng chứa biển số Ngay vùng chứa biển số phát hiện, là biển số mới phát hiện, vùng chứa này đưa qua xử lý để phân tách các kí tự Các kí tự này sau lại chuẩn hóa làm đầu vào mạng neural Kohonen, mạng định xem là kí tự nào Việc xếp lại các kí tự nhận dạng trả cho ứng dụng kết quả cuối hiển thị lên màn hình Tài liệu tham khảo 30 1.J Heaton Introduction to Neural Networks for Java, Second Edition Heaton Research,2008 Rainer Lienhart and Jochen Maydt An extended set of haar-like features for rapid object detection 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 M.R Lynch Practical automobile number plate recognition by linear weight neural networks In Toll Systems, IEE Colloquium on, pages 61 –63, oct 1992 Ubiquitous computing research group(https://sites.google.com/site/uitubicom/home) 31 ... học các kí tự biển số sau 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 Ta dễ dàng tìm vùng chứa các kí tự riêng rẽ biển... font chữ riêng Sau đó, mạng huấn lụn mang lên ứng dụng android dùng cho việc nhận dạng 26 II Hiện thưc hệ thống nhận dạng biển số xe android smartphone Tính ứng dụng Tính ứng dụng ANPR... này mang lại hiệu quả khá lớn, nâng cao đợ xác toàn bợ quá trình 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 android smartphone và chương trình huấn