Đặt vấn đề Bài toán nhận dạng tự động biển số xe trên thế giới hiện đã được thực hiện khá lâu, tuy nhiên ở Việt Nam hiện nay, đã có vài nghiên cứu về lĩnh vực này song mới chỉ dừng lại
Trang 2-* * -
LUẬN VĂN THẠC SĨ KHOA HỌC
ỨNG DỤNG XỬ LÝ ẢNH VÀ MẠNG
NƠ -RÔN TRONG NHẬN DẠNG BIỂN SỐ XE
NGÀNH: ĐO LƯỜNG VÀ HỆ THỐNG ĐIỀU KHIỂN
Trang 3Nội dung của luận văn tập trung giải quyết các vấn đề sau:
- Nhận dạng tự động biển số xe ô tô đang chuyển động trên đường quốc lộ, với các loại xe biển số khác nhau (biển trắng, )
Để thực hiện nội dung trên, luận văn được chia làm 3 phần chính
Phần I Tổng quan
Trình bày vấn đề khoa học, thực tiễn của đề tài, tóm tắt nội dung chính sẽ thực hiện trong luận văn Đưa ra mô hình được xây dựng về nhận dạng tự động biển số
xe trên cơ sở mô hình đã có trước đây
Phần II Phân tích, thiết kế hệ thống nhận dạng biển số xe từ ảnh camera
Nội dung chính bao gồm:
- Mô hình hệ thống: tóm tắt mô hình thực hiện trong luận văn qua sơ đồ khối chức năng
- Chi tiết từng khối chức năng: Đây là phần chính của luận văn tập trung giải quyết các vấn đề sau:
o Đọc file video từ camera
o Nhận dạng và lọc đầu xe
o Tách biển số khỏi đầu xe
o Lọc và nhận dạng ký tự trong biển số
Phần III Kết quả thực hiện
Đưa ra kết quả đã thực hiện được trên cơ sở của bộ mẫu đã thu thập, tập trung phân tích những kết quả đã nhận dạng thành công và những kết quả chưa được trong đó tập trung phân tích những các trường hợp chưa thành công
Trang 4I Đặt vấn đề 1
II Giải pháp thực hiện 3
1 Mô hình thực tế hiện nay 3
2 Mô hình xây dựng trong đồ án 4
Phần II Các bước thực hiện bài toán nhận dạng biển số xe 6
I Các bước thực hiện bài toán nhận dạng biển số 6
1 Sơ đồ khối mô hình 6
2 Chức năng từng khối mô hình 7
2.1 Khối đọc file video từ camera 7
2.2 Khối chuẩn hóa 7
2.3 Khối nhận dạng và lọc đầu xe 8
2.4 Khối tách biển số ra khỏi đầu xe 8
2.5 Khối lọc và nhận dạng ký tự có trong biển số xe 8 2.6 Khối kiểm tra mô hình 9
II CHI TIẾT TỪNG KHỐI CHỨC NĂNG 9
1 Khối thu thập dữ liệu 9
1.1 Camera thu thập 9
1.2 Đọc file video từ Camera và chuẩn hóa 9
1.2.1 Chuẩn độ sáng cho ảnh 10
Trang 51.3 Đại cương về ảnh số 13
1.3.1 Ảnh số 13
1.3.2 Mô hình màu theo 3 kênh R - G – B 14
1.3.3 Chuyển đổi màu 16
Xử lý ảnh trong Matlab 18
2 Khối nhận dạng và lọc đầu xe 19
2.1 Nhận dạng tự động đầu xe có trong file video 19
2.2 Lọc đầu xe khỏi ảnh từ phim 23
3 Tách biển số ra khỏi đầu xe 25
3.1 Các phương pháp tách 25
3.1.1 Thuật toán nhị phân hoá ảnh đầu vào 25
3.1.2 Thuật toán gán nhãn 25
3.1.3 Thuật toán opening và closing 26
3.1.4 Thuật toán chuyển đổi Hough 27
3.1.5 Mạng Kohonen và ứng dụng trong nhận dạng biển số xe 29
4 Nhận dạng ký tự trong biển số 38
4.1 Lọc nhiễu cho biển số xe 38
4.1.1 Lọc điểm cô lập 38
4.1.2 Lọc bỏ viền khung biển số 38
4.1.3 Kỹ thuật làm trơn biên 39
Trang 64.2.2 Phương pháp gán nhãn đối tượng 41
4.2.3 Phương pháp tách tĩnh –Giải pháp lựa chọn 42
4.3 Nhận dạng ký tự 44
Phần III: Kết quả thực hiện 46
I Kết quả thực hiện trên tập số liệu mẫu 46
1 Cấu trúc của bộ số liệu dùng trong luận văn 46 2.1 Chương trình 46
2.2 Kết quả chạy 50
2.2.1 Lưu đồ thuật toán 50
2.2.2 Các bước thực hiện trong bài toán 56
2.2.3 Một số trường hợp nhận dạng sai 58
Thực hiện demo chương trình 61
2.2.4 Tổng hợp kết quả trên 2 tập số liệu mẫu 64
II Tổng kết và hướng phát triển của đề tài 65
1 Kết quả của đồ án 65
2 Hướng phát triển của đề tài 65
Tài liệu tham khảo 66
Trang 7Danh mục hình vẽ
Hình 1.1: Mô hình hệ thống trong thực tế 3
Hình 1.2: Mô hình nhận dạng tự động biển số xe được xây dựng trong luận văn (bỏ qua khâu sensor) 4
Hình 2.1: Sơ đồ khối mô hình thực hiện trong luận án 6
Hình 2.2: Ảnh mẫu ở dạng RGB 11
Hình 2.3: Ảnh xám và histogram của mẫu 12
Hình 2.4: Ảnh và histogram chụp trong điều kiện ánh sáng kém 12
Hình 2.5: Ảnh và histogram sau khi đã được điều chỉnh độ sáng 12
Hình 2.6: Đường cong cảm nhận S1, S2, S3 14
Hình 2.7: Hệ tọa độ RGB 16
Hình 2.8: Ảnh gốc dạng RGB 17
Hình 2.9: Ảnh xám chuyển đổi theo công thức trên 17
Hình 2.10: Ảnh gốc dạng RGB 18
Hình 2.11: Ảnh xám chuyển đổi theo công thức trên 18
Hình 2.12: Ảnh gốc dạng RGB 18
Hình 2.13: Ảnh xám chuyển đổi theo công thức trên 18
Hình 2.14: Ảnh nền và vị trí hai mặt nạ để kiểm tra 19
Hình 2.15: Khi có sự xuất hiện của xe tại vị trí mặt nạ 1 20
Hình 2.16: Mặt nạ 1 được tách ra để so sánh với mẫu ban đầu 20
Hình 2.17: Mức xám của mẫu 21
Hình 2.18: Khi có sự xuất hiện của xe, mức xám thay đổi 21
Hình 2.19: Vị trí phát hiện xe lần đầu tiên xuất hiện trong frame 22
Hình 2.20: Vị trí cắt đầu xe sau khi phát hiện xe trong frame lần đầu tiên 23
Hình 2.21 Ảnh đầu xe được lọc ra 23
Hình 2.22: Ảnh đầu xe trên đã được lọc các thành phần nhiễu 24
Hình 2.23: Tọa độ phát hiện đầu xe lần lượt theo 2 trục x và y có được từ hình 2.22 24
Hình 2.24: Đầu xe được cắt ra 24
Hình 2.25: Đầu xe được cắt ra lần cuối 25
Hình 2.26: Đường thẳng trong không gian (x,y) 28
Hình 2.27: Biến đổi Hough 28
Hình 2.27b: Quá trình dịch chuyển của các trọng tâm 30
từ vị trí ngẫu nhiên ban đầu về các vùng số liệu 30
Hình 2.28: Mẫu 1 31
Hình 2.29: Loại biển số dùng mẫu 1 để dò 31
Hình 2.30: Mẫu 2 32
Hình 2.31: Loại biển số dùng mẫu 2 để dò 32
Hình 2.32: Mẫu biển số 32
Hình 2.33: Loại biển số dung mẫu 3 để dò 32
Hình 2.34: Ảnh đầu xe được nhận dạng 33
Hình 2.35: Ảnh đầu xe được cắt ra 34
Hình 2.36: Đầu xe 34
Hình 2.37: Biển số được tách ra 34
Hình 2.38: Ảnh có xe được nhận dạng 35
Hình 2.39: Ảnh đầu xe đã được cắt ra 35
Hình 2.40: Đẫu xe 35
Hình 2.41: Biển số được tách ra 35
Hình 2.42: Hình ảnh xe được phát hiện_biển vuông 36
Hình 2.43: Hình đầu xe được cắt ra_biển vuông 36
Hình 2.44: Đẫu xe_biển vuông 36
Hình 2.45: Biển số được tách ra_biển vuông 36
Hình 2.47: Ảnh xe_ Biển xanh 37
Hình 2.48: Cắt đầu xe_ Biển xanh 37
Hình 2.49: Đẫu xe_biển xanh 37
Hình 2.50: Biển số được tách ra_Biển xanh 37
Hình 2.51: Biển số sau khi cắt bị nhiễu viền khung 39
Hình 2.52: Sau khi lọc nhiễu viền khung 39
Hình 2.53: Biển số được bo khung sát với ký tự 39
Trang 8Hình 2.54: Sau khi được chuyển đổi ngược 39
Hình 2.55:Biển lọc ra 39
Hình 2.56: Sau khi bỏ viền và bo khung 39
Hình 2.57:Biển lọc ra 39
Hình 2.58: Sau khi bỏ viền và bo khung và chuyển đổi 39
Hình 2.59: Biển số được làm sạch 40
Hình 2.60: Lược đồ chiếu dọc của biển số 40
Hình 2.61: Biển số đã được lọc nhiễu 41
Hình 2.62: Lược đồ mức xám của biển số 41
Hình 2.63: Ảnh biển số 41
Hình 2.64: Các kí tự đã được tách ra khỏi biển số 41
Hình 2.65: Biển số cần tách 42
Hình 2.66: Các ký tự đã được tách 42
Hình 2.67: Biển số đã được lọc nhiễu 43
Hình 2.68: Biển số được tách đôi 43
Hình 2.69: Phân tách ký tự nửa dưới của biển số vuông 43
Hình 2.70: Phân tách ký tự nửa trên của biển số vuông 43
Hình 2.71: Bộ mẫu các chữ số 44
Hình 2.72: Bộ mẫu các chữ cái 45
Hình 3.1: Lưu đồ thuật toán chương trình chính 50
Hình 3.2: Lưu đồ thuật toán chương trình dò xe trong ảnh 51
Hình 3.3: Lưu đồ thuật toán chương trình dò biến số (tmp) 52
Hình 3.4: Lưu đồ thuật toán chương trình dò biển số (tổng hợp) 53
Hình 3.5: Lưu đồ thuật toán chương trình lọc nhiễu cho biển số 53
Hình 3.6: Lưu đồ thuật toán chương trình tách ký tự 54
Hình 3.7: Lưu đồ thuật toán chương trình tách ký tự (tổng hợp) 54
Hình 3.8: Lưu đồ thuật toán chương trình nhận dạng ký tự 55
Hình 3.9: Ảnh đầu vào được trích từ phim 56
Hình 3.10: Trường hợp có xe xuất hiện 56
Hình 3.11: Xe được phát hiện và chuẩn hóa 56
Hình 3.12: Đẫu xe được lọc ra 57
Hình 3.13: Biển số được tách 57
Hình 3.14: Biển số được lọc nhiễu 57
Hình 3.15: Ký tự được tách và nhận dạng 57
Hình 3.16: Hình ảnh không nhận dạng được đầu xe do các xe nối tiếp nhau 58
Hình 3.17: Hình xe không được nhận dạng khi đi quá xa làn đường quy định 59
Hình 3.18: Không nhận dạng được biển số do vùng biển quá mờ 60
Trang 9Lời cám ơn
Em xin gửi lời cảm ơn sâu sắc PGS.TSKH.TRẦN HOÀI LINH, người đã
tận tình giúp đỡ em rất nhiều trong quá trình học tập và làm luận án
Em xin chân thành cảm ơn TS VŨ QUANG THÀNH – Giám đốc công
ty TNHH Tin hoc & Điện tử Thăng Long, người đã giúp đỡ em rất nhiều về kiến thức và kinh nghiệm thực tế
Em xin cảm ơn các thầy cô giáo trường Đại Học Bách Khoa, bộ môn Kỹ thuật đo – Tin học công nghiệp đã cho em những kiến thức, kinh nghiệm và những bài học giúp trưởng thành trong quá trình học tập ở trường
Xin cảm ơn các đồng nghiệp trong Công ty TNHH Tin học - Điện tử Thăng Long, xin cảm ơn bạn bè đã tạo điều kiện giúp đỡ, cho tôi nhiều lời khuyên bổ ích trong quá trình thực tập tốt nghiệp và làm luận án
Cuối cùng cho con gửi lời biết ơn và kính trọng sâu sắc nhất tới bố mẹ, người luôn luôn bên con trong những lúc khó khăn nhất, và luôn là chỗ dựa tinh thần vững chắc cho con
Hà Nội ngày 15 tháng 10 năm 2008
Sinh viên thực hiện
Nguyễn Thành Trung
Trang 10Lời cam đoan
Tôi xin cam đoan đây là công trình nghiên cứu của tôi và chưa được công
bố trong bất cứ công trình nào và chưa được đăng trong bất cứ tài liệu nào, tạp chí, hội nghị nào khác Những kết quả nghiên cứu trong luận văn là trung thực
Hà Nội, tháng 10 năm 2008 Tác giả luận văn
Nguyễn Thành Trung
Trang 11Phần I Tổng Quan
I Đặt vấn đề
Bài toán nhận dạng tự động biển số xe trên thế giới hiện đã được thực hiện khá lâu, tuy nhiên ở Việt Nam hiện nay, đã có vài nghiên cứu về lĩnh vực này song mới chỉ dừng lại ở lý thuyết, chưa bám sát được với nhu cầu thực tế và còn dở dang
Nhu cầu đi lại bằng các phương tiện ô tô, xe máy ngày nay là rất lớn, đi cùng với nó là các bài toán về phân luồng giao thông, kiểm soát lưu lượng xe qua lại, gửi xe tại các trạm đòi hỏi việc nghiên cứu ứng dụng bài toán nhận dạng tự động phương tiện đi lại vào trong thực tế môi trường Việt Nam hiện nay là cần thiết
Sự phát triển của công nghệ camera kỹ thuật số đã giúp cho việc ứng dụng bài toán nhận dạng biển số xe tự động không còn khó khăn như trước Các camera có độ phân giải đủ cho việc nhận dạng biển số xe ngày nay tương đối
rẻ, dễ sử dụng và sẵn có trên thị trường (loại có độ phân giải 480x640 với tốc
độ ghi hình khoảng 30 hình/giây chỉ có giá thành khoảng vài trăm hoàn toàn
có thể sử dụng cho bài toán nhận dạng biển số xe)
Kỹ thuật xử lý ảnh số phát triển mở ra một hướng nghiên cứu mới về các phương pháp xử lý không tiếp xúc Cùng với những ưu điểm của phương pháp xử lý không tiếp xúc, kỹ thuật xử lý ảnh số cho phép ta có thể tác động tới từng pixel của đối tượng Kỹ thuật hoàn toàn có thể đáp ứng tốt cho bài toán nhận dạng biển số xe tự động về độ chính xác và yêu cầu về tính thời gian thực
Xét về bài toán kinh tế: Ứng dụng thành công bài toán nhận dạng tự động biển số xe giúp giảm một phần lớn lượng chi phí cho các trạm gửi xe, kiểm soát vé, góp phần giải quyết bài toán phân luồng giao thông hiện nay
Trang 12Vì vậy, với các điều kiện thuận lợi về kinh tế, kỹ thuật cùng với nhu cầu xã hội thực tế hiện nay, việc thực hiện thực hiện bài toán trong điều kiện hiện nay của Việt Nam là hoàn toàn khả thi và cần thiết
Từ những nghiên cứu thực tế như vậy tôi đã chọn đề tài:” Ứng dụng xử lý ảnh và mạng nơ-rôn trong nhận dạng biển số xe”
Nội dung của luận văn tập trung giải quyết các vấn đề sau:
- Nhận dạng tự động biển số xe ô tô đang chuyển động trên đường quốc
lộ, với các loại xe biển số khác nhau (biển trắng, )
Để thực hiện nội dung trên, luận văn được chia làm 3 phần chính
Phần I Tổng quan
Trình bày vấn đề khoa học, thực tiễn của đề tài, tóm tắt nội dung chính sẽ thực hiện trong luận văn Đưa ra mô hình được xây dựng về nhận dạng tự động biển số xe trên cơ sở mô hình đã có trước đây
Phần II Phân tích, thiết kế hệ thống nhận dạng biển số xe từ ảnh camera
Nội dung chính bao gồm:
- Mô hình hệ thống: tóm tắt mô hình thực hiện trong luận văn qua sơ đồ khối chức năng
- Chi tiết từng khối chức năng: Đây là phần chính của luận văn tập trung giải quyết các vấn đề sau:
o Đọc file video từ camera
o Nhận dạng và lọc đầu xe
o Tách biển số khỏi đầu xe
o Lọc và nhận dạng ký tự trong biển số
Phần III Kết quả thực hiện
- Đưa ra kết quả đã thực hiện được trên cơ sở của bộ mẫu đã thu thập, tập trung phân tích những kết quả đã nhận dạng thành công và những kết quả chưa được trong đó tập trung phân tích những các trường hợp chưa thành công
- Đưa các kiến nghị
Trang 13- Thực hiện demo chương trình
Dự kiến kết quả
- Có được hiểu về ảnh số, xử lý ảnh số, các kỹ thuật trong xử lý ảnh số
và ứng dụng trong các bài toán nhận dạng hình ảnh
- Xây dựng được mô hình nhận dạng tự động xe ô tô đang di chuyển trên đường quốc lộ, lọc và tách được biển số xe cho các xe này
- Mở rộng nhận dạng đối với nhiều loại biển số khác nhau
II Giải pháp thực hiện
1 Mô hình thực tế hiện nay
Một hệ thống nhận dạng biển số xe thực tế có sơ đồ như sau:
`
Máy tính Camera
Trang 14Máy tính trung tâm: Nhận tín hiệu từ sensor, ra lệnh chụp ảnh từ camera
và nhận ảnh từ camera về, xử lý nhận dạng biển số, thực hiện in biển số, đưa
ra các cảnh báo, yêu cầu…
Máy in: In biển số xe
2 Mô hình xây dựng trong đồ án
Mô hình thực hiện chỉ gồm 3 khâu chính:
· Camera thu thập: Thực hiện với camera có độ phân giải 480x640 pixel
· Máy tính xử lý
Khối sensor sẽ được thay thế bởi phần mềm tự động nhận dạng đầu xe Mô hình nhận dạng thực hiện offline, nghĩa là dòng video sẽ được quay liên tục các phương tiện trên đường, phần mền xử lý sẽ đọc file video liên tục để phát hiện sự có mặt của xe ô tô trong từng frame hay không? Khi phát hiện ra sự xuất hiện của xe ô tô, ảnh của xe sẽ được lưu lại và xử lý nhận dạng biển số
xe ứng với xe đó
Hình 1.2: Mô hình nhận dạng tự động biển số xe được xây dựng trong luận văn (bỏ
qua khâu sensor)
Ưu điểm của mô hình:
Trang 15- Dễ dàng ứng dụng trong các bài toán nhận dạng biển số xe tại các điểm bất kỳ, các bài toán đo lưu lượng xe cộ đi lại trên đường
- Thuật toán nhận dạng mềm dẻo, dễ dàng điều chỉnh để nhận dạng với nhiều loại biển xe khác nhau (biển xanh, biển trắng, biển đỏ, biển vuông, biển chữ nhật) của các vùng, các nước khác nhau
- Trong thực tế, để đảm bảo nhận dạng chính xác là xe ô tô trên đường của khối sensor thường không cao Do trên đường luôn có rất nhiều nhiễu của các loại phương tiện đi lại khác nhau, ảnh hưởng của việc lắp đặt ngoài trời , Giải quyết được bài toán nhận dạng tự động xe giúp giải quyết được các vấn đề này
Bài toán nhận dạng xe đang chạy trên đường quốc lộ với tốc độ trung bình (khoảng 30-40 km/h) sẽ rất phù hợp trong ứng dụng vào bài toán đo lưu lượng
xe qua lại trên quốc lộ, giải quyết bài toán phân luồng giao thông cho xe
Đảm bảo được tính tối ưu của thuật toán cũng như độ chính xác của chương trình nhận dạng, trong điều kiện thực hiện của luận văn thì các yêu cầu sau đây được đảm bào
· Camera được chụp trong điều kiện độ sáng tốt (phải nhìn rõ được biển số trong các file video xuất hiện ô tô)
· Các camera được đặt ở một góc quay cố định, các xe chỉ được nhận dạng ở một làn đường
· Ảnh màu, độ phân trung bình khoảng 480x640 để đảm bảo đáp ứng được tính thời gian thực khi xử lý cho hệ thống
· Vùng làn đường nhận dạng xe ô tô có ít xe máy qua lại
· Tốc độ vùng xe qua lại dao động trong khoảng 30 -40 km/h
· Mật độ xe qua lại khoảng 60-70 xe/phút
Trang 16Phần II Các bước thực hiện bài toán nhận dạng biển số xe
I Các bước thực hiện bài toán nhận dạng biển số
1 Sơ đồ khối mô hình
Để cụ thể hóa bài toán nhận dạng biển số xe trên cơ sở phân tích ảnh ta cần phân tích thành các bước như trên mô hình tổng quát sau:
Hình 2.1: Sơ đồ khối mô hình thực hiện trong luận án
Trang 172 Chức năng từng khối mô hình
2.1 Khối đọc file video từ camera
Khối này có chức năng đọc file video từ camera vào trong chương trình
để xử lý offline nhận dạng biển số xe
Trong nội dung của tập mẫu test trong luận văn, camera có độ phân giải 480x640, được đặt trực tiếp và cố định trên đường quốc lộ, tại vị trí mà phương tiện đi lại chủ yếu là xe ô tô, tốc độ khoảng 30 đến 40 km/h, mật độ trung bình 70 xe/phút
Các file video quay xe trên đường có thể sẽ được nhận dạng online hoặc offline tại bộ xử lý trung tâm
Ứng với camera đã lựa chọn, tần suất lấy mẫu của các file video là 30 frame/s
2.2 Khối chuẩn hóa
Đây là khối xử lý sơ bộ dữ liệu ảnh sau trước khi đưa vào phân tích các dặc tính của ảnh Nhiệm vụ của khối này bao gồm:
- Chuẩn hóa độ sáng các ảnh thu từ camera: Các camera thu thập ở các thời điểm khác nhau vì vậy ảnh thu được tương ứng cũng sẽ có độ sáng khác nhau, để thuận tiện cho việc xử lý các ảnh trước khi xử lý
sẽ được chuẩn về cùng mức sáng (theo chuẩn được lựa chọn)
- Chuyển đổi các ảnh từ dạng ảnh màu RGB về ảnh xám và ảnh nhị phân tương ứng: Trong nội dung của luận văn, các việc nhận dạng vùng biển số và các ký tự bên trong biển số ta hoàn toàn có thể thực hiện trên ảnh nhị phân Vì vậy để giảm khối lượng xử lý ta chuẩn hóa các ảnh RGB thu từ camera về dạng ảnh nhị phân
Trang 182.4 Khối tách biển số ra khỏi đầu xe
Sau khi đã có được ảnh chứa đầu xe, khối này thực hiện chức năng sau:
· Lọc vùng biển số trong ảnh đầu xe (Trong bước này bao gồm cả việc thực hiện nhận dạng biển số xe là biển vuông hay chữ nhật)
· Lọc các nhiễu ảnh hưởng đến các ký tự trong biển số xe (bao gồm lọc các nhiễu bụi, nhiễu viền khung, )
2.5 Khối lọc và nhận dạng ký tự có trong biển số xe
Từ ảnh biển số xe, các ký tự sẽ được lọc ra và nhận dạng tại khối này Mô
hình nhận dạng ký tự theo phương pháp khớp mẫu (template matching)
Phương pháp nhận dạng này đảm bảo được độ chính xác của mô hình nhận dạng do:
- Các ký tự trong biển số xe là các ký tự được chuẩn hóa (theo TCVN
về ký tự trong biển số xe)
- Trước khi tiến hành nhận dạng ký tự, biển số đã được lọc nhiễu nhằm đảm bảo các ký tự được khoanh vùng chính xác theo đúng mẫu nhận dạng
Trang 192.6 Khối kiểm tra mô hình
Để có thể xây dựng được một mô hình có độ tin cậy cao, ta thực hiện xây dựng mô hình trên cơ sở kiểm chứng với 2 tập số liệu riêng biệt Một tập số liệu được dùng để xây dựng mô hình (xác định các thông số của mô hình), một tập số liệu được dùng để kiểm tra Theo lý thuyết, mô hình chỉ đạt chất lượng nếu như mức sai số hoạt động trên cả hai tập số liệu đều đạt yêu cầu, trong đó sai số trên tập số liệu kiểm tra có tính quyết định hơn
II CHI TIẾT TỪNG KHỐI CHỨC NĂNG
1 Khối thu thập dữ liệu
1.2 Đọc file video từ Camera và chuẩn hóa
Chương trình xử lý nhận dạng biển số xe có đầu vào là các file video Các file video được đọc offline từ Camera thu thập
Xe sẽ được nhận dạng khi đang di chuyển trên đường, bài toán cần giải quyết ở đây là chọn tần số trích đọc ảnh từ file video sao cho đảm bảo không
bị sót xe đang lưu thông, đồng thời phần mền xử lý phải đảm bảo việc không nhận nhầm và đọc lại xe
Trang 20Ảnh trước khi xử lý nhận dạng sẽ được qua khâu chuẩn hóa, ảnh thu thập
từ camera là dạng ảnh màu RGB sẽ được chuẩn về dạng ảnh xám và ảnh nhị phân cho thuận tiện việc xử lý
1.2.1 Chuẩn độ sáng cho ảnh
Độ sáng của ảnh là một đặc tính rất quan trọng Nó quyết định đến việc
xử lý và nhận dạng đối tượng Nếu độ sáng quá kém hay quá chói đều dẫn đến việc không thể nhận dạng được đối tượng hoặc có nhận được cũng bị mất thông tin về đối tượng
Do điều kiện thu nhận ảnh khác nhau, do kỹ thuật thu nhận ảnh còn thủ công nên độ sáng của các ảnh hay giữa các phần của ảnh không được đồng đều Vì vậy, ta phải điều chỉnh sao cho độ sáng giữa các ảnh hay các vùng của ảnh phải đồng đều
Phương pháp thực hiện: Chọn một ảnh mẫu đầu vào có độ sáng giữa các vùng là đồng đều Rồi chuẩn hoá độ sáng của các ảnh khác theo mẫu này bằng phương pháp chuyển đổi thực hiện theo hàm tuyến tính f axb
Trong đó:
x : là mức xám (độ sáng) của ảnh ban đầu
f : là mức sáng của ảnh sau khi đã hiệu chỉnh
a, b : là các hệ số
Giả sử ảnh mẫu có độ sáng là y
Ta phải đi tìm các hệ số a, b sao cho f y Các hệ số a, b được tìm theo phương pháp bình phương cực tiểu
Nội dung phương pháp này như sau:
Ta cần tìm các hệ số a, b sao cho sai số E tính theo công thức sau đạt nhỏ nhất:
2 1
Trang 21· Output : hệ số a, b thỏa mãn yaxb với sai số bé nhất
Trên ảnh mẫu và ảnh vào ta chọn ra 5 điểm để so sánh mức sáng và hiệu chỉnh độ sáng của 5 điểm đó trên ảnh vào theo ảnh mẫu
Hàm thực hiện hiệu chỉnh độ sáng của ảnh:
· B = relight_images(A,mau)
Trong đó:
· A : ảnh đầu vào cần hiệu chỉnh độ sáng
· mau : ảnh mẫu có độ sáng chuẩn và đồng đều
· B : ảnh đầu ra đã được hiệu chỉnh
Hình 2.2: Ảnh mẫu ở dạng RGB
Trang 22Hình 2.3: Ảnh xám và histogram của mẫu
Khi ảnh cần xử lý được chụp trong điều kiện độ sáng kém giống như ảnh dưới đây:
Hình 2.4: Ảnh và histogram chụp trong điều kiện ánh sáng kém
Theo histogram ở trên thì các điểm đã co dần về gốc 0 Điều đó chứng tỏ
độ sáng của ảnh đã giảm xuống rõ rệt Vì vậy, để xử lý được thì ta phải điều chỉnh cho độ sáng tăng lên Kết quả sau khi đã điều chỉnh độ sáng :
Hình 2.5: Ảnh và histogram sau khi đã được điều chỉnh độ sáng
Trang 23Sau khi điều chỉnh độ sáng thì ảnh tối có mức sáng được cải thiện rất nhiều Điều đó được thể hiện trên histogram: các điểm đã giãn ra khỏi gốc 0
1.2.2 Chuyển đổi ảnh từ ảnh RGB về dạng ảnh xám và ảnh nhị phân
Quy trình chuẩn hóa chuyển đổi ảnh từ dạng ảnh màu sang dạng ảnh nhị phân được trình bày cụ thể trong phần đại cương về ảnh số
1.3 Đại cương về ảnh số
1.3.1 Ảnh số
Ảnh có thể biểu diễn dưới dạng tín hiệu tương tự hoặc số Trong biểu diễn
số của các ảnh đa mức xám, một ảnh được biểu diễn dưới dạng một ma trận hai chiều Mỗi phần tử của ma trận biểu diễn cho mức xám hay cường độ ảnh tại vị trí đó Mỗi phần tử ảnh trong thông thường được kí hiệu là pixel Mỗi pixel tương ứng với một cặp tọa độ (x, y) Tọa độ (x, y) tạo nên độ phân giải của ảnh Một ảnh phức tạp là tập hợp của nhiều điểm ảnh
- Với ảnh đen trắng: Nếu dùng 8 bit để biểu diễn mức xám, thì số các mức xám có thể biểu diễn được là 28 hay 256 Mỗi mức xám được biểu diễn dưới dạng một số nguyên nằm trong khoảng từ 0 đến 255, với mức 0 biểu diễn cho mức cường độ đen nhất định và 255 biểu diễn cho mức cường độ sáng nhất
- Với ảnh màu: Cách biểu diễn cũng tương tự như với ảnh đen trắng, chỉ khác là các số tại mỗi phần tử của ma trận biểu diễn ba màu riêng biệt gồm:
đỏ (Red - R), lục (Green - G) và lam (Blue - B) Để biểu diễn cho ba màu
riêng rẽ cần 24 bit, 24 bit này được chia thành ba khoảng 8 bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính
Trang 241.3.2 Mô hình màu theo 3 kênh R - G – B
Ánh sáng màu là tổ hợp của các ánh sáng đơn sắc Có 3 thuộc tính chủ yếu trong cảm nhận màu:
- Brigtness: sắc màu, còn gọi là độ chói
- Hue: sắc lượng, còn gọi là sắc thái màu
- Saturation: độ bão hòa
Với nguồn sáng đơn sắc, độ Hue tương ứng với bước sóng Với một điểm
W cố định, các kí hiệu R, G, B chỉ vị trí tương đối của các phổ màu đỏ, lục
và lơ Do sự tán sắc ánh sáng mà ta nhìn rõ màu Theo Maxwell, trong võng mắt có thể cảm thụ đựoc 3 màu cơ bản ứng với 3 phổ hấp thụ S1(), S2()
Phương trình (2.1) gọi là phương trình biểu diễn màu
Phương pháp tổ hợp màu:
Trang 25Một trong những vấn đề cơ bản của lý thuyết biểu diễn màu là sử dụng một tập các nguồn sáng (màu) để biểu diễn màu từ 3 màu cơ bản R, G, B giả sử ba nguồn sáng cơ bản có phổ năng lượng là pk() với k=1,2,3 và:
1 k k k
i 3
1 k k k
3
1 k k i
max
min max
min
) ( )]
( )[
( ) ( )]
( ) ( )[
( )
Tổ chức quốc tế về chẩn hóa màu CIE đã đưa ra hệ chuẩn màu CIE dùng
3 màu cơ bản R, G, B, một màu cơ bản sẽ là tổ hợp của 3 màu cơ bản theo tỉ
lệ nào đấy Như vậy một ảnh màu kí hiệu Px được viết:
red p
Người ta dùng hệ tọa độ màu R-G-B (tương ứng với hệ tọa độ x-y-z) để biểu diễn màu như sau:
Trang 26Hình 2.7: Hệ tọa độ RGB
1.3.3 Chuyển đổi màu
Hệ tọa độ màu do CIE quy định như một hệ quy chiếu và trên thực tế không thể biểu diễn hết các màu Tùy thuộc vào các ứng dụng khác nhau người ta đưa ra thêm một số hệ tọa độ khác như NTSC, CMY, YIQ Việc chuyển đổi giữa các không gian biểu diễn màu thực hiện theo nguyên tắc sau:
'
x
P (2.5) với
P x: Không gian biểu diễn màu ban đầu
P x ’: Không gian biểu diễn màu mới
A: Ma trận biểu diễn phép biến đổi
Trong nội dung đồ án, do các đặc tính có thể giải quyết trên ảnh đen trắng nên để giảm dung lượng tính toán, các ảnh đều được chuyển về dạng xám Mức xám là kết quả của sự mã hóa tương ứng một cường độ sáng của điểm ảnh với một trị số (trị số này phụ thuộc vào sự lượng tử hóa ảnh Thông thường hay dùng 8 bit để mã hóa ảnh (ứng với 256 mức xám, trong đó mức xám 0 là màu đen, mức xám 255 là màu trắng) Công thức tổng quát chuyển đổi từ ảnh màu RGB sang ảnh xám như sau:
;
B G R GRAY1 2 3 (1.6); Với hệ số 1 thông thường được lựa chọn như sau :
Trang 275870 0
2989 0
3 2 1
,,,
; Kết quả chuyển đổi với ví dụ sau:
thức trên
Chuyển đổi từ dạng ảnh xám sang ảnh nhị phận
Từ ảnh xám có được, ta chuyển về ảnh nhị phân theo công thức sau:
j) I(i, khi 1 j) BW(i,
Trong đó:
I : là ảnh đầu vào (ảnh xám)
BW : là ảnh nhị phân đầu ra
: là ngưỡng nhị phân đã được chọn trước
Để chọn ngưỡng nhị phân, ta cần ngưỡng nhị phân phải đảm bảo phân biết được vùng biển số và vùng nền, ngưỡng chọn thường phụ thuộc vào điều kiện ánh sáng khi quay xe Vì vậy để đảm bảo ngưỡng chuẩn cần chuẩn hóa các ảnh về cùng điều kiện sáng (theo như phương pháp đã trình bày ở trên _Chuẩn độ sáng đối tượng)
Ngưỡng khảo sát tối ưu đối với tập mẫu test trong luận văn cho chuyển đổi từ ảnh xám sang ảnh nhị phân là 50, với ngưỡng này các ảnh chuyển
từ dạng RGB sang ảnh nhị phân đều phân tách được vùng biển số và vùng nền rõ rệt
Kết quả chuyển đổi
Trang 28Hình 2.10: Ảnh gốc dạng RGB Hình 2.11: Ảnh xám chuyển đổi theo
công thức trên
Trường hợp biển xanh (hoặc đỏ)
công thức trên
Xử lý ảnh trong Matlab
Matlab là công cụ rất mạnh cho việc xử lý nói chung và xử lý ảnh nói riêng, hầu hết các thuật toán về ảnh và xử lý ảnh đều đã được thể hiện trong các hàm của Matlab như các hàm đọc, xuất ảnh, chuyển đổi giữa các hệ màu của ảnh, các thuật toán phát hiện biên, tách đối tượng, khớp mẫu, các phép biến đổi ảnh như xoay ảnh, chuẩn kích thước, tịnh tiến, Đồng thời các thư viện ngày càng được mở rộng, các hàm ứng dụng được lập bởi người dùng
Vì vậy ứng dụng phần mềm Matlab trong xử lý ảnh mang lại rất nhiều tiện ích và hiệu quả
Câu lệnh Matlab được viết rất sát với các mô tả kỹ thuật, câu lệnh đơn giản Vì vậy các thuật toán, chương trình trong đồ án đều được viết ngôn ngữ của phần mềm Matlab Các chương trình có xử dụng một số hàm viết
Trang 29sẵn của Matlab, tuy nhiên các thuật toán xử lý ảnh trong đồ án là các thuật toán đơn giản, vì vậy việc thể hiện nó cũng không gặp nhiều khó khăn Các hàm xử lý ảnh của Matlab đều được tích hợp trong các thư viện được
gọi là các Toolbox
2 Khối nhận dạng và lọc đầu xe
2.1 Nhận dạng tự động đầu xe có trong file video
Ảnh sẽ được trích từ file video theo tần số đã chọn (tần số này có được
do quá trình khảo sát) Các ảnh sẽ được đọc lần lượt và kiểm tra xem có đầu
xe không? Quá trình kiểm tra này dựa vào sự thay đổi mức xám của ảnh đang xét và ảnh nền
Cụ thể trong luận văn, ở đây kiểm tra sự thay đổi mức xám tại 2 vị trí thể hiện như trên hình sau:
Hình 2.14: Ảnh nền và vị trí hai mặt nạ để kiểm tra
Khi có sự xuất hiện của đầu xe
Trang 30Hình 2.15: Khi có sự xuất hiện của xe tại vị trí mặt nạ 1
Kiểm tra sự thay đổi mức xám của 2 mặt nạ
Hình 2.16: Mặt nạ 1 được tách ra để so sánh với mẫu ban đầu
Sự thay đổi mức xám khi ảnh xuất hiện xe thể hiện như sau
Trang 31Hình 2.17: Mức xám của mẫu Hình 2.18: Khi có sự xuất hiện của xe, mức
xám thay đổi.
Nguyên tắc:
Đối với mặt nạ 1: Khi có sự xuất hiện xe, mức xám sẽ bị thay đổi đột
ngột, kiểm tra sự thay đổi mức xám này để phát hiện ra đầu xe
Kiểm tra: ngưỡng=(sum(mash1_nen)-sum(mash1_xe));
Đối với mặt nạ 2: Không có sự thay đổi đáng kể mức xám tại mặt nạ này
nhằm đảm bảo chỉ bắt xe tại vị trí mặt nạ 1
Loại bỏ việc một xe bị đọc nhiều lần
Khi kiểm tra theo như điều kiện ở trên, ngưỡng đặt để kiểm tra phải đảm bảo nhận được nhiều loại xe (xe con, xe tải, xe trắng xe đen, ) vì vậy ngưỡng này phải được đặt tương đối rộng đối với các loại xe Điều này dẫn đến, một xe có thể bị nhận nhiều lần (do kiểm tra xe lần lượt ở từng frame)
Để loại bỏ trường hợp này ta làm như sau: Sau khi phát hiện ra xe, lưu vị trí phát hiện đồng thời đẩy vị trí của frame dò xe lên một khoảng x bằng Khoảng xe di chuyển gần hết frame, vì trong khoảng đẩy đấy chỉ có mình xe
đã được phát hiện (trường hợp các xe nối tiếp nhau là không phát hiện được) Mỗi khung hình chỉ đảm bảo phát hiện được một xe
Tách đầu xe ra khỏi frame
Vị trí phát hiện xe lần đầu tiên xuất hiện trong frame
Trang 32Hình 2.19: Vị trí phát hiện xe lần đầu tiên xuất hiện trong frame
Vị trí cắt đầu xe sau khi phát hiện xe trong frame lần đầu tiên
Trang 33Hình 2.20: Vị trí cắt đầu xe sau khi phát hiện xe trong frame lần đầu tiên
2.2 Lọc đầu xe khỏi ảnh từ phim
Nhị phân hóa ảnh nền và ảnh chứa xe, trừ hai ảnh này cho nhau ta được kết quả sau
Hình 2.21 Ảnh đầu xe được lọc ra
Lọc các thành phần nhiễu salt & sand để xác định chính xác vị trí vùng đầu xe ta được:
Trang 34Hình 2.22: Ảnh đầu xe trên đã được lọc các thành phần nhiễu
Từ ảnh này ta dễ dàng có được vị trí của đầu xe qua việc lấy các thành phần ngang dọc của điểm trắng
Hình 2.23: Tọa độ phát hiện đầu xe lần lượt theo 2 trục x và y có được từ hình 2.22
Đầu xe được cắt ra:
Hình 2.24: Đầu xe được cắt ra
Trang 35Do đặc điểm vị trí của biển số xe so với đầu xe là cố định, vì vậy ta hoàn toàn có thể co lại vị trí của vùng biển số xe
Hình 2.25: Đầu xe được cắt ra lần cuối
3 Tách biển số ra khỏi đầu xe
3.1 Các phương pháp tách
3.1.1 Thuật toán nhị phân hoá ảnh đầu vào
Từ ảnh nhị phân, ta có rất nhiều phương pháp, thuật toán để trích chọn các thông tin của các đối tượng trong ảnh Từ đó ta đem so sánh với các đặc trưng của biển số xe mà ta có được từ thực nghiệm Và như vậy, ta đã tách được vùng biển số xe ra khỏi ảnh Một số thuật toán được dùng chủ yếu để khoanh vùng và bóc tách đối tượng:
· Thuật toán gán nhãn
· Thuật toán opening và closing
· Thuật toán chuyển đổi Hough
· Thuật toán khớp mẫu
3.1.2 Thuật toán gán nhãn
Thuật toán gán nhãn được xây dựng dựa trên phương pháp miền đồng nhất (miền liên thông) Đây là một thuật toán rất đơn giản nhưng mang lại hiệu quả cao
Trong ảnh nhị phân, mỗi vùng liên thông được coi là một đối tượng Vì vậy, ta sẽ dùng thuật toán này để gán cho mỗi đối tượng một nhãn khác
Trang 36nhau Như vậy, trong ảnh nhị phân có bao nhiêu đối tượng sẽ có bằng đó nhãn
Trong Matlab, thuật toán gán nhãn được thực hiện bởi hàm: bwlabel
L=bwlabel (BW,n) [L,num]=bwlabel(BW,n)
Trong đó:
· BW : là ảnh nhị phân
· L : là một ma trận có kích thước giống với kích thước của BW
· n : là liên kết pixel với các pixel xung quanh, có giá trị 4 hoặc 8
· num : số đối tượng có trong ảnh nhị phân BW
3.1.3 Thuật toán opening và closing
Thuật toán này được xây dựng dựa trên hai xử lý cơ bản là: opening và closing Trong đó, xử lý opening làm nhiệm vụ lọc bỏ nhiễu còn xử lý closing có nhiệm vụ đóng khung các kí tự làm thành một khối biển số liền
đơn giản của A bởi B và tiếp sau đó là loang rộng (dilation) kết quả đó bởi B
B B
A B
với : là kí hiệu của phép thu hẹp (erosion) đối tượng trong ảnh
: là kí hiệu của phép loang rộng (dilation) đối tượng trong ảnh
Cả hai toán tử , chỉ áp dụng cho các ảnh nhị phân và mô tả toán học của
morphology
Công thức toán học khác của xử lý opening là:
})
B và tiếp sau đó là thu hẹp kết quả này bởi B
B B A B
Hàm thực hiện xử lý opening và closing trong Matlab là:
Trang 37C=imopen(A,B) C=Imclose(A,B)
Để thực hiện thuật toán này thì trước tiên phải làm đầy vùng biển số bằng hàm imfill trong Matlab Sau đó, lấy hiệu giữa ảnh này và ảnh ban đầu Đến đây, ta mới bắt đầu xử dụng thuật toán opening va closing
Trong xử lý opening làm với một cấu trúc phần tử SE có cỡ 3x3 pixel hình vuông Cho cấu trúc phần tử SE di chuyển đến mỗi pixel trong ảnh và
nó sẽ xoá bỏ các đối tượng nhỏ đó là các nhiễu
Xử lý closing giống như xử lý opening Nhưng trong xử lý closing làm việc với cấu trúc phần tử SE nằm ngang có cỡ khoảng 5x200 pixel
Cuối cùng ta sẽ thực hiện việc trích biển số ra khỏi ảnh
3.1.4 Thuật toán chuyển đổi Hough
Thuật toán chuyển đổi Hough là một thuật toán thuộc phương pháp phân vùng dựa theo đường biên Đây là thuật toán xấp xỉ biên bằng các đoạn thẳng
Giả sử có một điểm ảnh (x1,y1) Mọi đường thẳng đi qua (x1,y1) thoả mãn phương trình:
b ax
trong đó: a, b là các tham số
Viết lại phương trình trên ta có : b x1ay1
Như vậy, mọi đường thẳng đi qua (x1,y1) tương ứng với một điểm trong không gian tham số (a,b)
Xét hai điểm (x1,y1) và (x2,y2) cùng nằm trên một đường thẳng Với mỗi điểm ảnh, mọi đường thẳng qua nó đều biểu diễn bởi một điểm trong không gian (c,m):
2 2
1 1
y mx c
y mx c
Trang 38Để áp dụng kỹ thuật này, thì không gian tham số (c,m) cần phải được lượng hoá và như vậy ta cần dùng một ma trận tham số P(c,m)
Nhưng dễ thấy, nếu biểu diễn bởi đường thẳng thì khi biểu diễn các đường đứng thì c tiến ra vô cùng Một cách khắc phục là sử dụng hệ toạ độ cực (s,)
Trong biến đổi Hough, một đường thẳng trong 1 mặt phẳng với khoảng cách s và hướng có thể được biểu diễn bởi:
Hình 2.27: Biến đổi Hough
Giả sử các điểm của đường bao là (xi,yi) với i=1,2,…N (N là số điểm ảnh) Với một số giá trị đã chọn của s và , ánh xạ cặp (xi,yi) thành điểm
(s,) có nghĩa là với một điểm ta đi tìm phương trình đường thẳng đi qua
điểm này và có hướng vuông góc với hướng gradient Ta tính được C(s,)
và thu được tập biểu diễn bởi quan hệ sau:
1 ) , ( ) , (s k i C s k i
C nếu x icos y isin s k với i
Trang 393.1.5 Mạng Kohonen và ứng dụng trong nhận dạng biển số xe
1 1
1
min 2
Để thực hiện được nhiệm vụ này ta có thể thực hiện các bước sau:
- Bước 1: Lấy ngẫu nhiên các giá trị ban đầu (i)
G c x tỷ lệ nghịch với khoảng cách từ véc-tơ x tới trọng tâm c(i)
và thường được tính theo công thức:
2 2 ( , )
Ví dụ hoạt động của thuật toán trên được trình bày trên hình 1.13 với 3 trọng tâm được khởi tạo trùng tại một điểm