ĐẠ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
(Của giảng viên hướng dẫn)
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
Mục lục
Mục lục
v
Danh sách hình vẽ
vii
Danh sách bảng
ix
1
.
.
.
.
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 .
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 . . . . . .
GVHD: Tiến sĩ Nguyễn Anh Tuấn
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
16
17
20
21
22
23
24
26
SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú
MỤC LỤC
.
.
.
.
.
.
.
26
27
28
28
32
38
39
3.3
3.4
4
5
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 . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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 . . . . . . . . . . . . . . . . . . . . . . . . . .
Tài liệu tham khảo
GVHD: Tiến sĩ Nguyễn Anh Tuấn
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Danh sách hình vẽ
2.1
2.2
2.3
2.4
2.5
2.6
2.7
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. . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
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
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 . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
4.1
Kết quả thử nghiệm 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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
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
• 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.
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
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
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
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) =
i(x , y )
(3.2)
x ≤x,y ≤y
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, y4) – (x2, y2) – (x3, y3) + (x1, y1)
A+B+C+D
GVHD: Tiến sĩ Nguyễn Anh Tuấn
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ú
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))
(a = alpha)
(3.6)
Với: a ≥ 0 là hệ số chuẩn hoá cho các bộ phân loại yếu.
GVHD: Tiến sĩ Nguyễn Anh Tuấn
15
SVTH: Nguyễn Phượng Đôn - Nguyễn Đức Phú