Nội dung đề tài: Luận văn trình bày các thuật toán xử lý ảnh cơ bản để xử lý thông tin biển báo giao thông, viết lại các hàm xử lý ảnh và mô phỏng trên máy tính. Sau đó, chương trình được ứng dụng trên vi điều khiển. Đánh giá khả năng áp dụng vào thực tế bằng mô hình xe tự động.Các bước thực hiệnTìm hiểu tổng quan, các nghiên cứu có liên quan đến đề tài. Lựa chọn và xây dựng mô hình phù hợp với đề tài. Tìm hiểu các kiến thức phần cứng: vi điều khiển ARM M4, camera. Lập trình và mô phỏng hệ thống trên máy tính giai đoạn 1: tiền xửlý và nhận diện ảnh, kết nối camera OV7670, OV9655 với STM32F4 Discovery. Lập trình và mô phỏng hệ thống trên máy tính giai đoạn 2: nhận diện và phân loại biển báo giao thông, tìm hiểu về mạng nơron, lập trình trên vi điều khiển giai đoạn 1, tìm hiểu mạng CAN. Huấn luyện mạng nơron để có được kết quả tốt, lập trình trên vi điều khiển giai đoạn 2.Ứng dụng vào mô hình thực tế.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG
NGUYỄN MINH HÙNG – 41001324 TRẦN TRUNG TIẾN – 41003388
LUẬN VĂN TỐT NGHIỆP NHẬN DIỆN BIỂN BÁO GIAO THÔNG DÙNG KỸ THUẬT XỬ LÝ ẢNH TRÊN NỀN VI ĐIỀU KHIỂN
KỸ SƯ NGÀNH KỸ THUẬT ĐIỀU KHIỂN & TỰ ĐỘNG HÓA
GIẢNG VIÊN HƯỚNG DẪN ThS NGUYỄN ĐỨC HOÀNG
TP HỒ CHÍ MINH, 2014
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ
MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
TP HCM, ngày….tháng… năm……
NHẬN XÉT LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ HƯỚNG DẪN
Tên luận văn:
NHẬN DIỆN BIỂN BÁO GIAO THÔNG DÙNG
KỸ THUẬT XỬ LÝ ẢNH TRÊN NỀN VI ĐIỀU KHIỂN Nhóm Sinh viên thực hiện: Cán bộ hướng dẫn:
Đánh giá Luận văn
1 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
Trang 32 Về nội dung luận văn:
3 Về tính ứng dụng:
4 Về thái độ làm việc của sinh viên:
Đánh giá chung: Luận văn đạt/không đạt yêu cầu của một luận văn tốt nghiệp kỹ sư, xếp loại
Trang 4TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ
MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
TP HCM, ngày….tháng… năm……
NHẬN XÉT LUẬN VĂN TỐT NGHIỆP
CỦA CÁN BỘ PHẢN BIỆN
Tên luận văn:
NHẬN DIỆN BIỂN BÁO GIAO THÔNG DÙNG
KỸ THUẬT XỬ LÝ ẢNH TRÊN NỀN VI ĐIỀU KHIỂN Nhóm Sinh viên thực hiện: Cán bộ hướng dẫn:
Đánh giá Luận văn
1 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
Trang 52 Về nội dung luận văn:
3 Về tính ứng dụng:
4 Về thái độ làm việc của sinh viên:
Đánh giá chung: Luận văn đạt/không đạt yêu cầu của một luận văn tốt nghiệp kỹ sư, xếp loại
Trang 6TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ
MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Cán bộ hướng dẫn: ThS Nguyễn Đức Hoàng
Thời gian thực hiện: Từ ngày 1/9/2014 đến ngày 15/12/2014
Sinh viên thực hiện:
Nguyễn Minh Hùng - 41001324
Trần Trung Tiến - 41003388
Nội dung đề tài:
Luận văn trình bày các thuật toán xử lý ảnh cơ bản để xử lý thông tin biển báo
giao thông, viết lại các hàm xử lý ảnh và mô phỏng trên máy tính Sau đó, chương trình
được ứng dụng trên vi điều khiển Đánh giá khả năng áp dụng vào thực tế bằng mô hình
xe tự động
Kế hoạch thực hiện:
Trang 7Từ 01/09 đến 30/09: Tìm hiểu tổng quan, các nghiên cứu có liên quan đến đề tài Lựa
chọn và xây dựng mô hình phù hợp với đề tài Tìm hiểu các kiến thức phần cứng: vi điều khiển ARM M4, camera
Từ 01/10 đến 20/10: Lập trình và mô phỏng hệ thống trên máy tính giai đoạn 1: tiền xử
lý và nhận diện ảnh, kết nối camera OV7670, OV9655 với STM32F4 Discovery
Từ 21/10 đến 10/11: Lập trình và mô phỏng hệ thống trên máy tính giai đoạn 2: nhận diện
và phân loại biển báo giao thông, tìm hiểu về mạng nơron, lập trình trên vi điều khiển giai đoạn 1, tìm hiểu mạng CAN
Từ 11/11 đến 01/12: Huấn luyện mạng nơron để có được kết quả tốt, lập trình trên vi điều
khiển giai đoạn 2
Từ 01/12 đến 19/12: Ứng dụng vào mô hình thực tế
Nguyễn Minh Hùng và Trần Trung Tiến thực hiện chung:
Nghiên cứu dòng vi điều khiển ARM cortex M4, cụ thể là KIT STM32F4 Discovery, camera OV7670, camera OV9655, các phương thức truyền dữ liệu giữa chúng
Tìm hiểu các mô hình xử lý ảnh trên Matlab
Ứng dụng mô hình thực tế
Trần Trung Tiến phụ trách chính:
Nghiên cứu các thuật toán xử lý ảnh: thuật toán chuyển đổi giữa các không gian màu, thuật toán chuyển từ ảnh xám sang ảnh trắng đen, thuật toán phân tách các đối tượng
Nghiên cứu thuật toán mạng nơron dùng cho việc nhận diện biển báo giao thông
Lập trình và mô phỏng trên máy tính hệ thống xử lý ảnh và nhận diện biển báo giao thông
Nguyễn Minh Hùng phụ trách chính:
Nghiên cứu các ứng dụng và kết nối các ngoại vi của vi điều khiển
Trang 8 Lập trình trên vi điều khiển hệ thống xử lý ảnh và nhận dạng biển báo giao thông
Nghiên cứu phương thức truyền dữ liệu CAN
Nghiên cứu và vận hành xe bám tường và phát hiện, nhận diện biển báo giao thông
Xác nhận của Cán bộ hướng dẫn TP HCM, ngày….tháng … năm…
Sinh viên
Trang 9DANH SÁCH HỘI ĐỒNG BẢO VỆ LUẬN VĂN
Hội đồng chấm luận văn tốt nghiệp, thành lập theo Quyết định số
……… ngày ……… của Hiệu trưởng Trường Đại học Bách khoa TP.HCM
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
Trang 10LỜI CẢM ƠN
Qua nhiều tháng cùng thực hiện đề tài luận văn, các tác giả đã cùng làm việc nhóm và hợp tác với nhau Điều đó chúng tôi có cái nhìn rõ ràng hơn về lĩnh vực kỹ thuật và rèn luyện thêm nhiều kỹ năng mềm
Chúng tôi xin chân thành cám ơn đến các thầy cô ở trường Đại Học Bách Khoa TPHCM, những người đã dạy bảo, chỉ dẫn chúng tôi trong 5 năm qua
Xin cảm ơn thầy Nguyễn Đức Hoàng, giảng viên hướng dẫn đề tài cho chúng tôi trong 3 học kì liên tiếp, người đã định hướng và nhiệt tình giúp đỡ cho chúng tôi khi thực hiện đề tài này
Tác giả chân thành cám ơn kỹ sư Lâm Quốc Hưng đã chia sẽ những kinh nghiệm và có những nhận xét hữu ích Xin cảm ơn câu lạc bộ Pay It Forward và bạn Trần Minh Tâm đã hỗ trợ những lúc cần thiết trong suốt quá trình làm luận văn
Xin gửi lời cám ơn đến gia đình và người thân luôn động viên chúng tôi, giúp
Trang 11MỤC LỤC
TÓM TẮT LUẬN VĂN 1
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 2
1.1 Lý do chọn luận văn 2
1.2 Mục tiêu và nhiệm vụ của luận văn 2
1.3 Đối tượng và phạm vi nghiên cứu 2
CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI 4
2.1 Tổng quan 4
2.2 Hệ thống biển báo giao thông ở Việt Nam 6
2.3 Phân tích hệ thống 10
CHƯƠNG 3: CÁC THUẬT TOÁN XỬ LÝ ẢNH VÀ MÔ PHỎNG TRÊN MÁY TÍNH 12
3.1 Thuật toán chuyển đổi từ không gian màu RGB sang YCbCr 12
3.2 Thuật toán chuyển đổi từ không gian màu RGB sang IHLS 15
3.3 Thuật toán Opening 19
3.3.1 Cơ sở lý thuyết 19
3.3.2 Các bước thực hiện 22
3.3.3 Nhận xét về phương pháp này 26
3.4 Thuật toán phân tích blob: Thuật toán Grass-Fire 29
3.5 Thuật toán chuyển ảnh xám sang ảnh trắng đen dùng phương pháp Otsu 34
3.6 Thuật toán nhận diện hình dạng của blob là tròn, tam giác hay chữ nhật 39
3.7 Thuật toán nhận diện biển báo giao thông bằng mạng nơron 46
3.7.1 Cơ sở lý thuyết: 46
3.7.2 Ứng dụng vào bài toán nhận diện biển báo giao thông 50
Trang 12CHƯƠNG 4: TỔNG QUAN VỀ PHẦN CỨNG VÀ LẬP TRÌNH TRÊN VI ĐIỀU
KHIỂN 55
4.1 KIT STM32F4 Discovery 55
4.1.1 Giới thiệu 55
4.1.2 Cấu trúc của chip STM32F407VG 56
4.1.3 Ưu và nhược điểm của Chip STM32F407VG trong xử lý ảnh 57
4.2 KIT TIVA TM4C123G 58
4.3 Camera OV9655 59
4.3.1 Giới thiệu 59
4.3.2 Sơ đồ chân kết nối chân giữa OV9655 và KIT STM32F4 60
4.3.3 Nguyên tắc hoạt động 62
4.4 CAN 62
4.4.1 Giới thiệu 62
4.4.2 Cách kết nối phần cứng 64
4.5 Mô hình xe bám tường: 67
4.5.1 Giới thiệu: 67
CHƯƠNG 5: ÁP DỤNG THUẬT TOÁN XỬ LÝ ẢNH TRÊN KIT STM32F4 DISCOVERY 69
5.1 Thuật toán tổng quát: 69
5.2 Thuật toán xử lý ảnh trên KIT Vi xử lý 70
5.3 Quá trình xử lý ảnh và kết quả thu được 72
5.3.1 Tiền xử lý ảnh 72
5.3.2 Tách ảnh thành những phần khác nhau 74
5.3.3 Nhận dạng ảnh bằng giải thuật mạng nơron 75
Trang 13CHƯƠNG 6: TỔNG KẾT 76TÀI LIỆU THAM KHẢO 78
Trang 14DANH MỤC HÌNH VẼ
Hình 2.1 Biển báo cấm 6
Hình 2.2 Biển báo nguy hiểm 7
Hình 2.3 Biển báo chỉ dẫn 8
Hình 2.4 Biển báo hiệu lệnh 9
Hình 2.5 Biển báo phụ 9
Hình 2.6 Sơ đồ tổng quát của hệ thống 10
Hình 2.7 Lưu đồ giải thuật chính của chương trình 11
Hình 3.1 Ảnh RGB 13
Hình 3.2 Ảnh Y 13
Hình 3.3 Ảnh Cb 13
Hình 3.4 Ảnh Cr 14
Hình 3.5 Ảnh trắng đen xác định bằng Cr 14
Hình 3.6 Hình tròn không gian màu HSL 16
Hình 3.7 Ảnh vào 17
Hình 3.8 Ảnh ra 17
Hình 3.9 Ảnh vào 18
Hình 3.10 Ảnh ra 18
Hình 3.11 Một số structure element thường gặp 20
Hình 3.12 Ví dụ về Reflection 20
Hình 3.13 Ví dụ về phép Dilation 20
Hình 3.14 Ví dụ về phép Erosion 21
Hình 3.15 Ví dụ về phép Opening 21
Hình 3.16 Ví dụ về phép Closing 21
Trang 15Hình 3.17 Structure element có dạng hình đĩa, bán kính 2 22
Hình 3.18 Hình padding 22
Hình 3.19 Áp dụng struture element cho từng pixel của ảnh gốc 23
Hình 3.20 Ảnh sau khi đã erosion 23
Hình 3.21 Áp dụng structure element cho ảnh erosion 24
Hình 3.22 Ảnh sau khi đã dilation 24
Hình 3.23 Ảnh ra của thuật toán 24
Hình 3.24 Ảnh RGB từ camera 24
Hình 3.25 Ảnh xám Y 25
Hình 3.26 Ảnh trắng đen dùng phương pháp so sánh ngưỡng của Cr 25
Hình 3.27 Ảnh sau khi qua bước Erosion 25
Ảnh 3.28 Ảnh đầu ra của thuật toán Opening 25
Hình 3.29 Ảnh structure element hình đĩa, bán kính 1 26
Hình 3.30 Ảnh ra của bước Erosion 26
Hình 3.31 Ảnh ra của bước Dilation 26
Hình 3.32 Structure element dạng hình đĩa, bán kính 4 27
Hình 3.33 Ảnh từ camera 27
Hình 3.34 Ảnh trắng đen 28
Hình 3.35 Ảnh qua bước erosion 28
Hình 3.36 Ảnh Dilation 28
Hình 3.37 Ảnh đầu vào BW và ảnh Padding của thuật toán 29
Hình 3.38 Áp dụng mặt nạ 3x3 cho từng bức ảnh 30
Hình 3.39 Thứ tự xét các pixel lân cận 30
Hình 3.40 Đánh nhãn cho blob đầu tiên 31
Trang 16Hình 3.41 Đánh nhãn cho blob thứ 2 31
Hình 3.42 Ma trận ra của thuật toán 32
Hình 3.43 Lưu đồ của thuật toán phân tích blob 33
Hình 3.44 Lưu đồ thuật toán 36
Hình 3.45 Ảnh chụp từ camera 37
Hình 3.46 Ảnh xám 37
Hình 4.47 Histogram của ảnh xám 38
Hình 4.48 Ảnh trắng đen 38
Hình 3.49 Biển báo cấm rẽ trái, biển báo giao nhau với đường ưu tiên, biển báo cấm đi ngược chiều 39
Hình 3.50 Lưu đồ thuật toán tìm đường biên ngoài cùng theo chiều ngang 40
Hình 3.51 Lưu đồ thuật toán tìm đường biên ngoài cùng theo chiều dọc 41
Hình 3.52 Biển báo cấm đi ngược chiều 42
Hình 3.53 Ảnh trắng đen của biển báo 42
Hình 3.54 Đường biên tìm theo chiều ngang 43
Hình 3.55 Đường biên tìm theo chiều dọc 43
Hình 3.56 Đường biên chính thức của blob 43
Hình 3.57 Biển báo giao nhau với đường ưu tiên 44
Hình 3.58 Đối tượng có dạng lõm 45
Hình 3.59 Đường biên của đối tượng lõm 45
Hình 3.60 Cấu trúc mạng truyền thẳng ba lớp 48
Hình 4.1 KIT STM32f4 Discovery 55
Hình 4.2 Sơ đồ khối của KIT STM32F4 discovery 56
Hình 4.3 Các dòng ARM Cortex của ST 57
Trang 17Hình 4.4 KIT Tiva TM4C123G 59
Hình 4.5 Camera OV9655 60
Hình 4.6 Lược đồ thời gian 1 frame ảnh 62
Hình 4.7 Mạng lưới kết nối trong CAN 62
Hình 4.8 Cấu trúc 1 Frame cơ bản trong CAN 63
Hình 4.9 Mạng lưới hình học của CAN 64
Hình 4.10 MCP2551 65
Hình 4.11 Schematic của mạch CAN sử dụng IC MCP2551 66
Hình 4.12 Sơ đồ khối để giao tiếp CAN 66
Hình 4.13 Hình ảnh thực tế của xe bám tường 67
Hình 4.14 Hình ảnh mặt dưới của xe bám tường 68
Hình 4.15 Hình ảnh mặt sau của xe bám tường 68
Hình 5.1 Thuật toán tổng quát 69
Hình 5.2 Thuật toán xử lý ảnh trên KIT STM32F4 Discovery 70
Hình 5.3 Ảnh chụp RGB 72
Hình 5.4 Ảnh chuyển từ Cr sang binary 72
Hình 5.5 Ảnh binary sau khi erosion 73
Hình 5.6 Ảnh binary sau khi dilation 73
Hình 5.7 Ảnh sau khi dán nhãn (label) cho nó 74
Hình 6.1 Mô hình hệ thống 76
Trang 18DANH MỤC BẢNG
Bảng 3.1 Các thông số S và H của các màu chuẩn 17
Bảng 3.2 Kết quả nhận diện khi thay đổi hằng số học, epochs = 10000 52
Bảng 3.3 Kết quả nhận diện khi thay đổi số chu kì huấn luyện 53
Bảng 3.4 Kết quả nhận diện khi thay đổi số nơron lớp ẩn, epochs = 10000 53
Bảng 4.1 Sơ đồ nối chân giữa STM32F4 và OV9655 61
Bảng 4.2 Cấu trúc 1 frame cơ bản trong CAN 63
Bảng 4.3 Mức điện áp của CAN High và CAN low 65
Bảng 5.1 Tỉ lê nhận nhận diện đúng đối với từng biển báo 75
Trang 19TÓM TẮT LUẬN VĂN
Luận văn nghiên cứu bài toán nhận diện biển báo giao thông bằng vi điều khiển bao gồm cả phần cứng và phần mềm Tác giả trình bày tổng quan tình hình nghiên cứu về ứng dụng nhận diện biển báo giao thông, các đặc trưng của biển báo giao thông Việt Nam, các thuật toán xử lý ảnh cơ bản có liên quan trực tiếp để xử lý thông tin biển báo giao thông dựa trên màu sắc và hình dạng của đối tượng, ứng dụng thuật toán mạng nơron để huấn luyện và phân loại từng biển báo, sử dụng vi điều khiển, camera CMOS, ứng dụng mạng CAN cho mô hình mô phỏng Kết quả nhận diện có độ chính xác cao, xấp xỉ 90% khi nhận diện và phân loại 3 biển báo: biển báo cấm đi ngược chiều, cấm rẽ trái, giao nhau với đường ưu tiên Nội dung bài báo cáo gồm có 6 chương:
Chương 1: Giới thiệu đề tài
Chương này trình bày sơ lược về đề tài, lý do tại sao tác giả chọn nó, những mục tiêu và nhiệm vụ của luận văn
Chương 2: Tổng quan về đề tài
Chương 2 tổng hợp các nghiên cứu đã có từ trước Đồng thời trình bày tổng quan về hệ thống biển báo giao thông ở Việt Nam và sơ đồ chung của hệ thống Chương 3: Các thuật toán xử lý ảnh và mô phỏng trên máy tính
Chương này tập trung vào các thuật toán xử lý ảnh, trình bày cơ sở lý thuyết, nguyên lý cơ bản, các bước thực hiện, các ví dụ minh họa và kết quả mô phỏng bằng Matlab
Chương 4: Tổng quan về phần cứng và lập trình trên vi điều khiển
Trình bày việc các thuật toán đã nghiên cứu ở chương 3 vào KIT STM32F4 Discovery và dùng Camera CMOS OV9655 để chụp ảnh, cũng như việc truyền
dữ liệu bằng mạng CAN
Chương 5: Áp dụng thuật toán xử lý ảnh trên KIT STM32F4 Discovery
Chương 6: Đánh giá kết quả thực hiện
Trang 20CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.2 Mục tiêu và nhiệm vụ của luận văn
Mục tiêu chung của luận văn là tiến tới thực thi một hệ thống xử lý ảnh đơn giản trên vi điều khiển, cụ thể là ứng dụng nhận diện biển báo giao thông Qua đó, đánh giá khả năng ứng dụng vào thực tế
Hiểu các tính chất của hệ thống biển báo giao thông Việt Nam và trích xuất các đặc trưng dùng cho ứng dụng xử lý ảnh phục vụ yêu cầu nhận diện
Hiểu đặc trưng của màu sắc trong lĩnh vực thị giác máy tính, cách chuyển đổi giữa các không gian màu và ứng dụng của chúng Đồng thời, tìm hiểu một số thuật toán phân đoạn đối tượng dựa trên màu sắc
Phát triển một thuật toán phân loại biển báo giao thông
Tìm hiểu về mạng CAN, một ứng dụng rộng rãi trong nền công nghiệp ô tô
Thực thi hệ thống nhận diện biển báo giao thông trên vi điều khiển
1.3 Đối tượng và phạm vi nghiên cứu
Đề tài tập trung nghiên cứu các thuật toán liên quan dùng cho việc phát hiện
và nhận dạng biển báo giao thông, cụ thể là thuật toán chuyển đổi giữa các không gian màu, thuật toán chuyển từ ảnh màu sang ảnh xám, thuật toán chuyển từ ảnh xám
Trang 21sang ảnh binary dùng phương pháp Otsu, thuật toán phát hiện và tách các đối tượng, thuật toán nhận diện đối tượng dùng mạng nơron
Về phần cứng: thuật toán tập trung vào camera OV9655, KIT STM32F4 Discovery, KIT TIVA
Về phạm vi nhận diện biển báo giao thông, tác giả tập trung vào ba biển báo sau: biển báo cấm đi ngược chiều, biển báo cấm rẽ trái, biển báo giao nhau với đường
ưu tiên
Trang 22CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI
2.1 Tổng quan
Đề tài nhận diện biển báo giao thông có những nghiên cứu đầu tiên vào năm
1984 với mục đích là phát hiện ra các loại biển báo dùng thị giác máy tính.Vấn đề xử
lý ảnh nhận diện biển báo giao thông đang có những bước tiến trong những năm gần đây Minh chứng cho điều này là ngày càng nhiều các nghiên cứu của các nhà khoa học trên thế giới ra đời, cũng như việc ứng dụng các công nghệ mới về xử lý ảnh lên ôtô
Xét về phần cứng: đa số các nghiên cứu trước đó dùng camera chụp ảnh rồi truyển tải về máy tính để xử lý hoặc sử dụng các KIT vi điều khiển có khả năng như nhúng hệ điều hành và sử dụng các phần mềm xử lý ảnh của bên thứ ba, điển hình là OpenCV Khi đó nó có ưu thế là phần cứng có khả năng xử lý rất mạnh và phầm mềm
dễ giao tiếp, dễ sử dụng Nhược điểm là tốn nhiều thời gian cho việc truyền tải về máy tính hay chạy nhiều tác vụ không cần thiết trên hệ điều hành, và người ứng dụng đôi khi không hiểu bản chất bên trong các hàm viết sẵn mà họ sử dụng Ở luận văn này, tác giả dùng camera chụp ảnh, truyền tải về vi điều khiển và xử lý trực tiếp trên
vi điều khiển đó Nếu là những thuật toán đơn giản, chúng sẽ cho kết quả tốt và có lợi về mặt thời gian và kinh tế hơn các ứng dụng trước Dĩ nhiên, vi điều khiển có các hạn chế nhất định về khả năng lưu trữ, khả năng tính toán so với máy tính nên khó có thế áp dụng quá nhiều xử lý phức tạp Các thuật toán phân tích ảnh, nhận diện ảnh cũng được tác giả viết lại, không dùng bất kì các hàm viết sẵn nào
Về thuật toán, nhìn chung, có hai bước chính Thứ nhất là phát hiện được đối tượng có khả năng là biển báo, thứ hai là phân loại đối tượng thuộc loại biển báo nào hay thực sự không phải Trong bước phát hiện, ảnh được tiền xử lý, nâng cao chất lượng, phân đoạn để lấy ra các đặc điểm cần thiết theo tính chất của biển báo giao thông Đầu ra của giai đoạn này là ảnh đã được phân đoạn và chỉ gồm các vùng tiềm
Trang 23năng chứa biển báo Hiệu quả và tốc độ của bước này vô cùng quan trọng vì nó sẽ
giảm được khối lượng tính toán cho bước nhận diện Tiền xử lý càng tốt thì chất
lượng hệ thống càng cao
Trong bước nhận diện, các vùng tiềm năng sẽ được kiểm tra theo các tính chất
đặt ra ban đầu xem có phải là biển báo hay không, nếu đúng thì tiến hành phân loại
chúng
Những nghiên cứu của các tác giả về bước phát hiện dựa trên ba hướng chính:
Nhận diện biển báo giao thông dựa trên màu sắc: Thuật toán dựa trên màu đặc trưng
của biển báo để xác định vùng chứa biển báo [3,7] Nhận diện biển báo giao thông
dựa trên hình dạng: Dựa vào việc phát hiện cạnh của các đối tượng để tìm ra các vùng
tiềm năng và phân tích các đặc điểm về hình dạng để phát hiện đúng biển báo giao
thông [8] Hướng thứ ba là kết hợp nhận diện biển báo giao thông dựa trên màu sắc
và hình dạng
Các phương pháp được đề cử trong bước thứ hai, nhận diện biển báo được
phát hiện dựa trên mạng nơron nhân tạo: xây dựng một hệ thống học các mẫu từ trước
phục vụ cho việc nhận dạng, hay dùng phương pháp Template Matching: xây dựng
một số mẫu và so sánh độ đồng nhất của các mẫu này với đối tượng [5] Ngoài ra,
một số phương pháp khác cho kết quả rất tốt như: SVM, Pictogram, SURF,
AdaBoost,…
Các bài nghiên cứu của các tác giả trước đi từ cơ bản đến phức tạp, có nhiều
nghiên cứu đã giải quyết được vấn đề ảnh hưởng của ánh sáng, điều kiện thời tiết,
hay phục hồi ảnh bị ảnh hưởng bởi bóng râm để nhận biết được biển báo Họ cũng
phân tích rất sâu các kỹ thuật nhận diện và cho kết quả chính xác cao Việc dùng vi
điều khiển xử lý ảnh là một vấn đề thách thức nên tác giả không ứng dụng các thuật
toán quá phức tạp hay phát triển các thuật toán mới có tính đột phá cao mà chỉ tập
trung phân tích các thuật toán xử lý ảnh cơ bản, tìm hiểu nguồn gốc, nguyên lý của
các thuật toán đó, làm cơ sở cho việc viết lại các hàm xử lý ảnh đó, mô phỏng trên
Matlab (phiên bản 2013a) và bằng ngôn ngữ lập trình C cho vi xử lý
Trang 242.2 Hệ thống biển báo giao thông ở Việt Nam
Gồm có 5 nhóm chính: biển báo cấm, biển báo nguy hiểm, biển báo chỉ dẫn, biển báo hiệu lệnh và biển báo phụ
Biển báo cấm: có dạng hình tròn, có viền màu đỏ
Hình 2.1 Biển báo cấm
(Nguồn: http://hoclaixeoto.org/bien-bao-cam-2297799.html)
Trang 25Biển báo nguy hiểm: có dạng hình tam giác, nền vàng, có viền đỏ
Hình 2.2 Biển báo nguy hiểm
Nguồn: http://hoclaixeoto.org/bien-bao-nguy-hiem-2303118.html
Trang 26Biển báo chỉ dẫn: có dạng hình chữ nhật và có nền màu xanh
Hình 2.3 Biển báo chỉ dẫn
(Nguồn: http://hoclaixeoto.org/he-thong-bien-chi-dan-2304100.html)
Trang 27Biển báo hiệu lệnh: có dạng hình tròn, nền màu xanh
Hình 2.4 Biển báo hiệu lệnh
(Nguồn: http://hoclaixeoto.org/he-thong-bien-hieu-lenh-2313951.html)
Biển báo phụ: thông thường có dạng hình chữ nhật, nền màu trắng
Hình 2.5 Biển báo phụ
(Nguồn: http://hoclaixeoto.org/bien-phu-2324198.html) Dựa vào các đặc trưng cơ bản tương đối khác nhau này, chúng ta dễ dàng xây dựng một thuật toán nhận diện biển báo giao thông
Trang 282.3 Phân tích hệ thống
Như đã đề cập ở trên, luận văn dùng vi điều khiển để xử lý ảnh và tự lập trình lại các hàm xử lý ảnh Hình ảnh được nhận về từ camera OV9655, truyền đến KIT STM32F4 Discovery, tại đây dữ liệu được xử lý, nhận diện và phân loại biển báo, sau
đó kết quả được truyền thông qua mạng CAN đến KIT Tiva C để điều khiển xe
Camera
OV9655
STM32F4 Discovery
DMCI
Tiva
I2C
Hình 2.6 Sơ đồ tổng quát của hệ thống
Việc sử dụng vi điều khiển đòi hỏi phải có phương án sử dụng bộ nhớ hợp lý
và hiệu quả nhất vì những hạn chế của các dòng vi điều khiển Các ảnh trắng đen chỉ
có hai giá trị 0 hoặc 1 nên mỗi pixel chỉ được lưu trữ bằng 1 bit thay vì 1 hay một vài byte như cách chúng ta vẫn thường làm Thêm vào đó, luận văn còn nghiên cứu, ứng dụng nhiều phương thức truyền thông như I2C, DCMI, CAN
Thuật toán nhận dạng của luận văn dựa trên màu sắc để xác định vùng có biển báo giao thông, sau đó tiền xử lý các ảnh để nâng cao chất lượng, thuật toán Opening
để giảm đi các nhiễu là một điển hình Sau khi trích xuất được các vùng này, thuật toán nhận diện hình dạng sẽ được áp dụng để tìm xem biển báo có dạng hình tròn, hình tam giác hay hình chữ nhật Nếu các ảnh con đó không thuộc các hình dạng này, nghĩa là không phải biển báo và sẽ bị loại ra Những ảnh con còn lại sẽ được phân loại bằng thuật toán mạng nơron Việc xử lý dựa trên hình dạng của đối tượng này giúp cho việc phân loại chính xác hơn Những thuật toán này sẽ được trình bày kĩ hơn
ở chương 3
Trang 29Đọc ảnh RGB
Chuyển RGB sang YCbCr
Cr
Cr > 160
BW = 1 Y
BW = 0 N
Opening
Phân tích blob Y
Ảnh xám sang ảnh trắng đen
Thu nhỏ 10x10 Mạng nơron
Cho kết quả
End Tìm hình dạng và kiểm tra
Hình 2.7 Lưu đồ giải thuật chính của chương trình
Trang 30CHƯƠNG 3: CÁC THUẬT TOÁN XỬ LÝ ẢNH VÀ MÔ PHỎNG
TRÊN MÁY TÍNH
Chương này trình bày các thuật toán cơ bản ứng dụng để nhận diện biển báo giao thông: Thuật toán chuyển đổi từ không gian màu RGB sang YCbCr, Thuật toán chuyển đổi từ không gian màu RGB sang IHLS, Thuật toán Opening, Thuật toán phân tích blob, Thuật toán chuyển từ ảnh xám sang ảnh trắng đen dùng phương pháp Otsu, Thuật toán nhận diện hình dạng của đối tượng, Thuật toán mạng nơron dùng cho phân loại biển báo Đồng thời, việc mô phỏng và kết quả nhận diện trên máy tính bằng phần mềm Matlab 2013a được thể hiện ở cuối chương
3.1 Thuật toán chuyển đổi từ không gian màu RGB sang YCbCr
Công thức chuyển đổi:
𝑌 = 0.299𝑅 + 0.587𝐺 + 0.114𝐵 (3.1)
𝐶𝑟 = 128 + 0.438𝑅 − 0.366𝐺 + 0.071𝐵 (3.2)
𝐶𝑏 = 128 − 0.148𝑅 − 0.290𝐺 + 0.438𝐵 (3.3)
Ma trận Y là ma trận ảnh, thể hiện độ chói, mức xám của bức ảnh
Ma trận Cr là ma trận thể hiện sự sai khác màu đỏ của bức ảnh, pixel nào trong ảnh RGB có thành phần màu đỏ sẽ có giá trị Cr lớn
Ma trận Cb phản ánh sự sai khác màu lam của bức ảnh , pixel có giá trị Cb cao khi thành phần xanh lam chiếm ưu thế
Ví dụ 3.1: chuyển từ ảnh RGB sang ảnh Y, Cb, Cr
Ảnh RGB có hai đối tượng lần lượt có màu đỏ và lam, khi áp dụng thuật toán,
ta có: Y là ảnh xám
Trang 31Cb cho thấy những pixel nào có màu gần với màu lam thì có giá trị trong thang xám cao, thể hiện bằng phần màu trắng trong hình
Cr: Vùng mà càng trắng trong ảnh Cr chính là vùng có màu gần với màu đỏ nhất trong ảnh RGB ban đầu
Hình 3.1 Ảnh RGB
Hình 3.2 Ảnh Y
Hình 3.3 Ảnh Cb
Trang 32Hình 3.4 Ảnh Cr
Áp dụng thuật toán này, ta có thể trích xuất ra vùng ảnh mà ta mong muốn, ví
dụ sau cho thấy ta dễ dàng định vị được biển báo cấm đi ngược chiều ở đâu bằng cách
so sánh ảnh Cr với một ngưỡng T
Ví dụ 3.2: Xét ảnh Cr, chọn T = 160, ta xây dựng một ảnh trắng đen theo nguyên
tắc sau: giá trị Cr của pixel nào không nhỏ hơn ngưỡng T thì cho bằng 1, ngược lại cho bằng 0 Ta có kết quả sau:
Hình 3.5 Ảnh trắng đen xác định bằng Cr
Bằng cách này, ta dễ dàng loại ra nhiều chi tiết không quan trọng và làm bài toán trở nên đơn giản hơn
Trang 333.2 Thuật toán chuyển đổi từ không gian màu RGB sang IHLS
Thuật toán nhận diện đối tượng dựa trên màu sắc của đối tượng đó dựa trên
không gian màu IHSL (Improved Hue Luminance Saturation) [7]
Mục đích của thuật toán, đầu vào là ảnh RGB, đầu ra là ảnh trắng đen với
những pixel trắng là pixel giống màu tham khảo, ngược lại pixel đó có màu đen
Không gian màu IHLS được lựa chọn để tránh việc biến đổi theo độ sáng
Ngưỡng lựa chọn linh động theo giá trị độ sáng của tất cả các pixel chứ không cố
định như việc sử dụng YcbCr rồi chọn 1 ngưỡng Cr Bên cạnh tính hiệu quả cao, nó
cũng có nhược điểm là quá trình tính toán phức tạp, sẽ làm tăng kích thước chương
trình và tốc độ xử lý chậm đi
Thuật toán được áp dụng cho từng giá trị pixel, gồm các bước sau :
Bước 1: Chuyển từ không gian màu RGB sang không gian màu IHSL theo công thức
sau:
𝑆 = max(𝑅, 𝐺, 𝐵) − min(𝑅, 𝐺, 𝐵) (3.4)
𝐿 = 0.2125𝑅 + 0.7154𝐺 + 0.0721𝐵 (3.5)
𝜃𝐻 ={
0, 𝑛ế𝑢𝑐𝑟 = 0arccos (𝑐𝑟1
Trang 34Vì 𝜃𝐻 ∈ [0, 3590], 𝑆 ∈ [0,255], 𝐿 ∈ [0,255], ta chuẩn hóa 𝜃𝐻 về [0,255] để phù hợp với kiểu dữ liệu 8 bit, thuận tiện cho việc tính toán:
𝜃𝐻 =255359𝜃𝐻 (3.10)
Bước 2: Tính ngưỡng thích nghi:
𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 = 𝑒−𝑁 𝑚𝑒𝑎𝑛 (3.11) Trong đó, 𝑁𝑚𝑒𝑎𝑛được xác định như sau:
Bước 3: Tính giá trị khoảng cách dựa vào H và S
𝑑 = √(𝑆2𝑐𝑜𝑠𝐻2− 𝑆1𝑐𝑜𝑠𝐻1)2+ (𝑆2𝑠𝑖𝑛𝐻2− 𝑆1𝑠𝑖𝑛𝐻1)2 (3.12) Trong đó:
𝐻1, 𝐻2 lần lượt là góc Hue của màu chuẩn và màu đang xét
𝑆1, 𝑆2 lần lượt là giá trị Saturation của màu chuẩn và màu đang xét
Hình 3.6 Hình tròn không gian màu HSL
Nguồn:
http://vi.wikipedia.org/wiki/Kh%C3%B4ng_gian_m%C3%A0u_HSB#mediaviewer/File:HLSColorSpace.png
Trang 35Màu chuẩn chính trong nhận diện biển báo giao thông gồm có: màu đỏ (cho các biển báo cấm, và biển báo nguy hiểm), màu vàng (cho biển báo nguy hiểm), màu
lam (cho biển báo chỉ dẫn)
Bảng 3.1 Các thông số S và H của các màu chuẩn
Bước 4: So sánh kết quả giữa khoảng cách tính được và giá trị ngưỡng
𝑁ế𝑢𝑑 ≤ 𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑𝑡ℎì𝑜𝑢𝑡𝑝𝑢𝑡 = 1, pixel đang xét có màu như màu chuẩn 𝑁ế𝑢𝑑 > 𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑𝑡ℎì𝑜𝑢𝑡𝑝𝑢𝑡 = 0, pixel đang xét có là background
Ví dụ 3.3: Ứng dụng thuật toán Ta lấy màu chuẩn là màu đỏ: S = 255, H = 0
Hình 3.7 Ảnh vào
Hình 3.8 Ảnh ra
Trang 36Ví dụ 3.4: Chọn màu chuẩn là màu lam S =255, H =170.5
Trang 373.3 Thuật toán Opening
3.3.1 Cơ sở lý thuyết
Đầu tiên, tác giả xin giới thiệu vài nét về hình thái học Đây là một phương pháp cơ bản và phổ biến trong kỹ thuật xử lý ảnh, nhằm nâng cao chất lượng ảnh, kiểm tra khiếm khuyết của đối tượng, phân đoạn ảnh [13]
Các phép toán cơ bản của hình thái học là: phép bù của một ảnh, phép tịnh tiến, phép toán refection (phản xạ ảnh), AND 2 ảnh, OR 2 ảnh, phép tịnh tiến Dilation (phép giãn ảnh), Erosion (phép co ảnh), Opening (phép mở ảnh), Closing (phép đóng ảnh) Để sử dụng các phép toán này, ta cần một st
ructure element (phần tử cấu trúc) Nó là một ảnh con, được dùng để dò ảnh đầu vào theo một quy luật nhất định Structure element có một tâm ảnh (origin), nó
có thể ở trung tâm hoặc ở ngoài rìa của structure element Vị trí của tâm có ảnh hưởng lớn đến các phép toán Cùng với loại phép toán, structure element đóng vai trò quan trọng trong việc quyết định ảnh ra Structure element thường có các dạng sau:
Trang 38Hình 3.11 Một số structure element thường gặp
Gọi ảnh vào là A, structure element là B, ta có định nghĩa về một số phép morphology được sử dụng trong luận văn như sau
Reflection: kí hiệu ^, ảnh phản xạ 𝐵̂ là tập hợp tất cả các phần tử đối xứng với các điểm trong 𝐵 qua tâm ảnh của 𝐵
Trang 40Quay trở lại nội dung của luận văn, tác giả sử dụng kỹ thuật Opening Mục đích của việc này là tạo một bước tiền xử lý cho việc phát hiện và nhận dạng biển báo Kỹ thuật này gồm hai giai đoạn Đầu tiên, ảnh sẽ bị làm mòn bởi structure element Khi đó những phần tử nhiễu nhỏ như dấu chấm sẽ bị loại bỏ (Erosion), tuy nhiên các phần tử khác cũng bị ảnh hưởng Đến giai đoạn tiếp theo, các phần tử còn lại trong ảnh sẽ được mở rộng (Dilation), trả về đúng kích thước và hình dạng của nó như ban đầu Nhờ đó, việc tính toán xử lý phía sau sẽ dễ dàng hơn và ít bị phát hiện sai hay nhận diện sai đối tượng
3.3.2 Các bước thực hiện
Thuật toán Opening trong luận văn gồm 5 bước
Bước 1: Khởi tạo structure element Tác giả chọn structure element là ma trận ảnh
5x5 có dạng sau:
Hình 3.17 Structure element có dạng hình đĩa, bán kính 2
Bước 2: Tạo lớp đệm zero cho ảnh vào (Zero Padding), cần mở rộng mỗi chiều là 2
pixel Cụ thể như sau :
Hình 3.18 Hình padding