Báo cáo hệ thống chống ngủ gật trên ô tô

29 182 2
Báo cáo hệ thống chống ngủ gật trên ô tô

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án hệ thống chống ngủ gật trên ô tô dùng xử lý ảnh trên python kết nối với labview sau đó xuất dữ liệu để arduino thực hiện.Trong phạm vi của đề tài, nhóm nghiên cứu chủ yếu nghiên cứu về cách thức sử dụng phần mềm Labview cùng với lập trình python: cách tạo giao diện, liên kết với Adruino, lập trình python nhận diện khuôn mặt và thuật toán trên python để xử lý ảnh. Nghiên cứu các thuật toán kết hợp python, labview và adruino nhằm đáp ứng được mục tiêu “Nghiên cứu, thiết kế hệ thống cảnh báo ngủ gật”.

BÁO CÁO MƠN ỨNG DỤNG MÁY TÍNH ĐỀ TÀI: HỆ THỐNG CẢNH BÁO NGỦ GẬT TRÊN Ô TÔ GVHD: SVTH: Tp Hồ Chí Minh, ngày 01 tháng 05 năm 2021 MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC TÀI LIỆU THAM KHẢO [1].Giáo trình lập trình Labview Ts.Nguyễn Bá Hải [2].Tài liệu hướng dẫn sử dụng Labview NI (National Instruments) [3].Tài liệu hướng dẫn tự thực hành Arduino CHƯƠNG I: GIỚI THIỆU CHUNG 1.1 Lý chọn đề tài Công nghệ xử lý ảnh nghiên cứu, phát triển mạnh mẽ năm gần Việc ứng dụng công nghệ vào thực tiễn sống ngày càn trở nên quan trọng cần thiết hết Theo số liệu thống kế, tổng hợp từ số Phịng Cảnh sát Giao thơng (CSGT) Đường - Đường sắt khu vực miền Trung thời gian qua cho thấy, 20% số vụ nạn xảy đêm rơi vào khoảng đến sáng Đây thời gian mà nhịp sinh học thể đòi hỏi nghỉ ngơi căng sức gần 20 tiếng ngày Đó múi mà nhiều lái xe đường dài thú nhận khó cưỡng lại cảm giác them ngủ họ phải căng sức suốt ngày đường (rất cần nghỉ ngơi để phục hồi sức khỏe) Nhiều lái xe tìm cách “khắc chế” buồn ngủ vào múi tìm cách uống nhiều nước trà, cà phê trước ngồi sau vô lăng Nhưng lái xe vượt qua cảm giác khó khăn Và 20% số vụ tai nạn giao thông xảy đêm kể minh chứng tình trạng báo động Vì vậy, đề tài thực việc ứng dụng thuật toán xử lý ảnh vào thiết bị cảnh báo ngủ gật xe ô tô với mục đích đưa cơng nghệ vào thực tiễn nhằm giúp người tham gia giao thơng an tồn hạn chế tai nạn đáng tiếc xảy 1.2 Mục tiêu đề tài Trong phạm vi đề tài, nhóm nghiên cứu chủ yếu nghiên cứu cách thức sử dụng phần mềm Labview với lập trình python: cách tạo giao diện, liên kết với Adruino, lập trình python nhận diện khn mặt thuật tốn python để xử lý ảnh Nghiên cứu thuật toán kết hợp python, labview adruino nhằm đáp ứng mục tiêu “Nghiên cứu, thiết kế hệ thống cảnh báo ngủ gật” 1.3 Nội dung nghiên cứu − Nghiên cứu thuật tốn xử lí ảnh khác so sánh, chạy chương thử chương trình, lựa chọn thuật tốn − Nghiên cứu phần mềm Labview khối chức − Nghiên cứu khối chức liên kết với Adruino, Python − Tính tốn dấu hiệu tượng ngủ gật − Thiết kế hàm truyền liệu từ Labview qua Adruino − Thiết kế mạch Adruino, dùng webcam máy tính để thu thập hình ảnh 1.4 Tổng quan hệ thống Trong hệ thống cảnh báo ngủ gật ô tô yêu cầu thiết bị vị trí thiết kế góp phần đảm bảo an tồn cho người tham gia giao thơng độ xác việc xử lý Mơ hình gồm thiết bị: − Webcam: thu tín hiệu hình ảnh từ bên ngồi − Mạch xử lý tín hiệu giao tiếp máy tính − Thiết bị ngõ như: chuông cảnh báo, đèn cảnh báo CHƯƠNG II: CƠ SỞ LÍ THUYẾT 2.1 Labview gì? LabVIEW (viết tắt Laboratory Virtual Instrumentation Engineering Workbench) môi trường ngôn ngữ đồ họa hiệu việc giao tiếp đa kênh giữ người, thuật toán thiết bị Gọi LabVIEW ngôn ngữ đồ học hiệu cách thức lập trình, LabVIEW khác với ngơn ngữ C (hay Python, Basic, vv.) Thay sử dụng từ vựng (từ khóa) cố định, LabVIEW sử dụng khối hình ảnh sinh động dây nối để tạo lệnh hàm hình 2.2 Đặc biệt, LabVIEW phù hợp kỹ sư, nhà khoa học, hay giảng viên Chính LabVIEW trở thành cơng cụ phổ biến ứng dụng thu thập liệu từ cảm biến, phát triển thuật toán, điều khiển thiết bị phịng thí nghiệm giới Hình 2.1 Màn hình khởi động labview Về ý nghĩa kỹ thuật, LabVIEW dùng để lập trình chương trình (source code: mã nguồn) máy tính tương tự ngơn ngữ lập trình dựa chữ (text – bassed language) C, Python, Java, Basic, vv Đồng thời, LabVIEW hỗ trợ kỹ sư, nhà khoa học sinh viên, vv Xây dựng (thực thi) thuật toán cách nhanh, gọn, sáng tạo, dễ hiểu nhờ khối hình ảnh có tính gợi nhớ cách thức hoạt động theo kiểu dòng liệu (date flow) từ trái qua phải Các thuật toán áp dụng lên mạch điện cấu chấp hành thực nhờ vào việc kết nối hệ thống thật với LabVIEW thông qua nhiều chuẩn giao tiếp chuẩn giao tiếp RS232 (giao tiếp qua cổng COM), chuẩn USB, chuẩn giao tiếp mạng TCP/IP, UDP, chuẩn GBIB, Vì LabVIEW ngôn ngữ giao tiếp đa kênh 2.2 Ứng dụng Labview LabVIEW sử dụng lĩnh vực đo lường, tự động hóa, điện tử, robotics, vật lý, tốn học, sinh học, vật lý, tơ, Nhìn chung: − LabVIEW giúp kỹ sư kết nối cảm biến cấu chấp hành với máy tính LabVIEW sử dụng để xử lý kiểu liệu tín hiệu tương tự (analog), tín hiệu số (digital) hình ảnh (vision), âm (audio) − LabVIEW hỗ trợ giao thức giao tiếp khác nhau RS232, RS485, TCP/IP, PCI, PXI, − LabVIEW tạo thực thi độc lập thư viện chia (ví dụ viên liên kết động DLL), LabVIEW trình biên dịch 32 – bit − Hình 2.2 Ứng dụng Labview vào dây chuyền xử lý mã vạch 2.3 Giao tiếp Labview với Adruino Có cách để kết nối adruino với Labview: − Cách 1: Thơng qua VIs, Labview lấy liệu từ chân Arduino xử lý, điều khiển hiển thị kết hình máy tính − Cách 2: Kết nối với adruino thông qua LINX tạo phát triển MakerHub giúp Labview giao tiếp với nhiều phần cứng Hình 2.3 Nền tảng LINX hỗ trọ cho Labview Ở đề tài nhóm lựa chọn giao tiếp với adruino thông qua LINX: + Bước 1: Tìm kiếm cài đặt LINX VIPM Hình 2.4 Cài đặt LINX VIPM + Bước 2: Tải Firmware cho Labview Hình 2.5 Tải Firmware cho Labview • Chạy Labview • Chọn Tools > MakerHub > LINX > Firmware Wizard… • Chọn phần cứng thích hợp (ở Adruino) • Chọn Firmware Version Next Hình 2.6 Kết nối cổng COM Adruino với Labview thông qua LINX 2.3.1 Một số khối (hàm) thường hay sử dụng LabVIEW: • Khối While loop: khối dùng để lặp lại liên tục chương trình chứa trong khoảng thời gian tùy ý Hình 2.7 Khối While Loop Nút “stop” dùng để dừng vòng lặp, khối “i” cho biết có vịng lặp lặp • Khối Case Structure: tương đương hàm điều kiện (IF), trường hợp miền True xảy giả thiết đầu vào True, trường hợp miền False xảy giả thiết đầu vào False 10  • Đối với khối lại ta thiết lập tương tự Khối CLOSE: Hình CLOSE 2.16 Khối Là khối để dóng chương trình giao tiếp với Arduino.Và gồm chân Arduino Resource, error in, error out • Khối LOW LEVEL: 15 Hình 2.17 Khối low level Bao gồm khối để đọc, ghi tín hiệu analog digital từ board A rduino Ngoài cịn có khối phục vụ việc băm xung, bus • Khối SENSORS: Hình 2.18 Khối Sensors Bao gồm khối VI sensor thường dùng như: Cảm biến nhiệt độ, cảm biến ánh sáng, LCD, led thanh, led nhiều màu 16 CHƯƠNG III: XỬ LÝ ẢNH VÀ THUẬT TOÁN ĐIỀU KHIỂN 3.1 Phương pháp xử lý ảnh python kết hợp với labview Xử lí hình ảnh qua Python Thu nhận hình ảnh Giao tiếp camera, webcam Xử lí tín hiệu từ Python Labview Lấy tín hiệu từ Camera, webcam Lấy tín hiệu sau xử lý ảnh Phân tích, chỉnh sửa ảnh Giao tiếp với mạch điều khiển Tríchchọnđặc điểm ảnh Đưa tín hiệu điều khiển vào cấu chấp hành Chọnthơngsố xuất Hình 3.1 Phương pháp xử lý ảnh 3.2 Khái niệm xử lý ảnh Những năm gần đây, phát triển phần cứng máy tính làm cho nhớ máy tính có dung lượng lớn hơn, tốc độ chip vi xử lý nhanh hơn, cho phép ứng dụng đồ họa phát triển mạnh mẽ chó nhiều ứng dụng sống Trong đó, xử lý ảnh công cụ phát triển nhanh nhu cầu ứng dụng cơng nghiệp Q trình xử lý ảnh xem trình thao tác ảnh đầu vào nhằm cho kết mong muốn Kết đầu mơt q trình xử lý ảnh mơt ảnh tốt kết luận 17 THU NHẬN HÌNH ẢNH TIỀN XỬ LÝ TRÍCH LỌC, CHỌN LỌC KẾT LUẬN HẬU XỬ LÝ XỬ LÝ ẢNH LƢU TRỮ Hình 3.2: Cách thức xử lý ảnh Q trình xử lí ảnh gồm: Tiền xử lý: bước sơ chế, cải thiện chất lượng ảnh đầu vào, nhằm làm bật lên đặc điểm đặc trưng ảnh; − Trích lọc, chọn lọc: lấy đặc điểm ảnh để xử lý (hình dạng, màu sắc, kích thước, chữ viết sản phẩm…) − Hậu xử lý: gán giá trị cho ảnh người lập trình quy định để đưa kết kết luận (đúng, sai, tốt, xấu, loại A, B, C…) − 3.3 Lí thuyết thư viện OpenCV xử lý ảnh OpenCV (Open Source Computer Vision) thư viện mã nguồn mở thị giác máy với 500 hàm 2500 thuật toán tối ưu xử lý ảnh vấn đề liên quan tới thị giác máy OpenCV thiết kế cách tối ưu, sử dụng tối đa sức mạnh dòng chip đa lõi… để thực phép tính tốn thời gian thực Các phép xử lý ảnh: − Chuyển đổi không gian màu: mơ hình tốn học dung để mơ tả màu sắc thực tế biểu diễn dạng số học Ví dụ: khơng gian màu RGB, khơng gian màu CMYK, không gian màu HSV − Chuyển đổi không gian màu − Điều chỉnh độ sáng độ tương phản ảnh − Ảnh nhị phân, nhị phân háo với ngưỡng động − Histogram, cân histogram ảnh − Phóng to, thu nhỏ xoay ảnh 18 3.4 Thuật tốn nhận diện khn mặt 3.4.1 Tạo sở liệu Chụp ảnh người để nhận diện khuôn mặt sau chạy tập lệnh created_database.py Khi tạo sở liệu, hình ảnh khn mặt phải có biểu thức khác 3.4.2 Kiểm tra Nhận diện khuôn mặt Python thực mã face_rec.py Thuật toán sử dụng biểu độ mơ hình nhị phân cục (Local Binary Patterns Histograms-LBPH) Trong Haar Features, tất khuôn mặt người có chung số đặc tính Hai đặc tính chung cho khn mặt người là: − − Vùng mắt đậm má Vùng sống mũi sáng mắt Thành phần hai đặc tính hình thành đặc điểm khuôn mặt phù hợp là: − − Vị trí kích thước bao gồm mắt, miệng sống mũi Giá trị độ dốc định hướng cườmg độ pixel 3.4.3 Thư viện xử lý ảnh Python • Thư viện Dlib: Dlib công cụ C ++ đại chứa thuật tốn cơng cụ học máy để tạo phần mềm phức tạp C ++ để giải vấn đề giới thực Nó sử dụng ngành cơng nghiệp học thuật nhiều lĩnh vực bao gồm robot, thiết bị nhúng, điện thoại di động môi trường điện toán hiệu cao lớn Cấp phép nguồn mở Dlib cho phép bạn sử dụng ứng dụng nào, miễn phí • Face_recognition: Nhận dạng khuôn mặt công nghệ sinh trắc học sử dụng để thiết lập danh tính cá nhân có khả nhận dạng xác minh người Nó sử dụng ứng dụng máy tính, cịn gọi hệ thống nhận dạng khn mặt, để trích xuất hình ảnh kỹ thuật số từ hình ảnh, khung hình video quét 3D tạo sao, phép 19 đo đặc trưng cấu trúc khuôn mặt, nhận dạng người khn mặt cụ thể cho mục đích nhận dạng xác thực Hệ thống nhận dạng khuôn mặt sử dụng hình ảnh 2D / 3D nguồn cấp liệu video để tạo hình ảnh kỹ thuật số, thiết lập in nhận diện khuôn mặt cách so sánh hình ảnh kỹ thuật số với in sở liệu Mỗi khn mặt có số cột mốc thành phố hệ thống đánh dấu điểm điểm nút điểm Một khuôn mặt người có tới 80 điểm Họ đại diện cho lĩnh vực quan tâm khuôn mặt mà hệ thống đo lường Một số ví dụ phép đo là, khoảng cách hai mắt, chiều rộng mũi, độ sâu hốc mắt Các phép đo lưu trữ sở liệu dạng in Khi hệ thống qt khn mặt, so sánh tất phép đo với ghi, in, sở liệu Các hệ thống nhận dạng khn mặt sử dụng thuật tốn, chẳng hạn Kiểm tra nhà cung cấp nhận dạng khn mặt, dự đốn liệu có trận đấu dựa điểm nút gật đầu khuôn mặt cá nhân hay khơng Thơng thường, có quy trình gồm giai đoạn liên quan đến hoạt động công nghệ này: - - Chụp - Một mẫu vật lý hành vi hệ thống chụp lại q trình đăng ký Trích xuất - Dữ liệu trích xuất từ mẫu mẫu tạo So sánh - Mẫu sau so sánh với mẫu - Kết hợp - Hệ thống sau định xem tính - trích xuất từ mẫu có khớp hay khơng 20 CHƯƠNG IV: THIẾT KẾ MƠ HÌNH HỆ THỐNG CHỐNG NGỦ GẬT 4.1 Thiết kế mơ hình Trên thực tế ta cần đáp ứng yêu cầu: − − − Phát dấu hiệu ngủ gật Cảnh báo người tài xế ngủ gật Quan sát bám theo chuyển động ngang khuôn mặt người tài xế LABVIEW WEBCAM CHNG BÁO Hình 4.1 Quy trình xử lý thơng tin 4.2 Xử lý nhận diện khuôn mặt thông qua Python: def calculate_EAR(eye): A = distance.euclidean(eye[1], eye[5]) B = distance.euclidean(eye[2], eye[4]) C = distance.euclidean(eye[0], eye[3]) ear_aspect_ratio = (A+B)/(2.0*C) return ear_aspect_ratio Thuật tốn tính khoảng cách mắt face_landmarks = dlib_facelandmark(gray, face) leftEye = [] rightEye = [] Thư viện xử lí khuôn mặt for n in range(0, 16): x = face_landmarks.part(n).x y = face_landmarks.part(n).y cv2.circle(frame, (x, y), 1, (0, 255, 255), 1) for n in range(36,42): x = face_landmarks.part(n).x y = face_landmarks.part(n).y leftEye.append((x,y)) next_point = n+1 if n == 41: next_point = 36 x2 = face_landmarks.part(next_point).x 21 y2 = face_landmarks.part(next_point).y cv2.line(frame,(x,y),(x2,y2),(0,255,0),1) for n in range(42,48): x = face_landmarks.part(n).x y = face_landmarks.part(n).y rightEye.append((x,y)) next_point = n+1 if n == 47: next_point = 42 x2 = face_landmarks.part(next_point).x y2 = face_landmarks.part(next_point).y cv2.line(frame,(x,y),(x2,y2),(0,255,0),1) 4.3 Xử lý khối Labview: Nhiệm vụ Labview giao tiếp với Arduino để từ điều khiển đèn còi báo động, động servo Sau lưu đồ thuật tốn chương trình Hình 4.2 Lưu đồ thuật tốn chương trình Labview Trên sở lưu đồ thuật tốn trên, nhóm nghiên cứu tiến hành xây dựng chương trình Labview hình 4.3 22 Hình 4.3 Chương trình Labview liên kết adruino Giải thích: − Kết nối LINX với Labview khối Serial, sau thiết lập chân nhận tín hiệu đầu vào xuất tín hiệu đầu − Tín hiệu gửi vào chuyển đổi sang nhị phân nhờ Bool to (0,1) − Sử dụng khối Case Structure để xét trường hợp nhận tín hiệu gửi vào: + Trường hợp tín hiệu 1: Hình 4.4 Hàm case + Trường hợp tín hiệu 0: Để động servo xoay liên tục cần phải có tín hiệu biến thiên cấp đến, nhóm nghiên cứu lựa chọn giả lập phát xung 23 Hình 4.5 Hàm case Sau hồn thành code chương trình Block Diagram, nhóm nghiên cứu tiến hành thiết kế giao diện Front Panel Ở đây, giao diện hiển thị phần sau đây: − Khung thiết lập, người dùng tự chọn COM Arduino, chân tín hiệu đầu vào đầu − Biểu đồ thị tín hiệu đầu vào − Thang đo mô độ xoay servo − Đèn cảnh báo đính kèm câu lệnh để gây chủ ý cho người dùng Hình 4.6 Giao diện chương trình Labview Front Panel 24 4.4 Mơ hình thực tế Hình 4.7 Mạch thực tế Hình 4.7 Mơ hình thực tế 25 4.5 Kết thực nghiệm: Hình 4.8 Thu thập xử lí khn mặt Khi người lái nhắm mắt lâu hệ thống thu nhận hình ảnh đo khoảng cách mí mắt, cảnh báo hình hiển thị đồng thời xuất tín hiệu adruino Khi người lái trạng thái không tập trung mở mắt lâu hệ thống thu nhận hình ảnh đo khoảng cách mí mắt, cảnh báo hệ thống hiển thị đồng thời xuất tín hiệu adruino Hình 4.9 Giao diện cảnh báo Labview 26 Hình 4.10 Hệ thống cảnh báo người lái ngủ gật 27 CHƯƠNG 5: KẾT LUẬN 5.1 Kết luận Nhóm nghiên cứu hồn thành đề tài đạt được số thành tựu sau: − Hồn thành mơ hình mơ hệ thống cảnh báo ngủ gật − Thu nhận hình ảnh khn mặt tín tốn xử lí vị trí mở mắt − Truyền tín hiệu python qua adruino − Thiết lập giao diện Labview xử lí tín hiệu đầu − Xây dựng mơ hình cảnh báo ngủ gật − Giải vấn đề người lái ngủ mở mắt 5.2 Hạn chế đề tài Đề tài dừng lại mức độ mô chưa biết hoạt động thực tế hệ thống để đánh giá cải tiến 5.3 Kiến nghị Đề tài nhiều hạn chế nhóm kiến nghị làm mơ hình thực tế để đánh giá hoạt động hệ thống 28 29 ... tượng ngủ gật − Thiết kế hàm truyền liệu từ Labview qua Adruino − Thiết kế mạch Adruino, dùng webcam máy tính để thu thập hình ảnh 1.4 Tổng quan hệ thống Trong hệ thống cảnh báo ngủ gật ô tô yêu... hiệu ngủ gật Cảnh báo người tài xế ngủ gật Quan sát bám theo chuyển động ngang khuôn mặt người tài xế LABVIEW WEBCAM CHNG BÁO Hình 4.1 Quy trình xử lý thông tin 4.2 Xử lý nhận diện khuôn mặt thông... tai nạn giao thông xảy đêm kể minh chứng tình trạng báo động Vì vậy, đề tài thực việc ứng dụng thuật toán xử lý ảnh vào thiết bị cảnh báo ngủ gật xe ô tô với mục đích đưa cơng nghệ vào thực tiễn

Ngày đăng: 21/06/2021, 00:31

Mục lục

    DANH MỤC HÌNH ẢNH

    DANH MỤC TÀI LIỆU THAM KHẢO

    CHƯƠNG I: GIỚI THIỆU CHUNG

    1.1 Lý do chọn đề tài

    1.2 Mục tiêu của đề tài

    1.3 Nội dung nghiên cứu

    1.4 Tổng quan về hệ thống

    CHƯƠNG II: CƠ SỞ LÍ THUYẾT

    2.2 Ứng dụng của Labview

    2.3 Giao tiếp Labview với Adruino

Tài liệu cùng người dùng

Tài liệu liên quan