Hạn chế: Khoảng cách từ thiết bị tới vùng mắt phải gần khoảng từ 20 ÷ 30 cm
thì độ chính xác sẽ cao, khi khoảng cách càng xa thì vùng con ngươi càng bé nên khó phát hiện chính xác con ngươi.
3.2.3 Xác định các thông số kỹ thuật cơ bản cho thiết bị giám sát trạng thái buồn ngủ của lái xe buồn ngủ của lái xe
Bảng 3.1: Các thông số kỹ thuật cơ bản cho thiết bị giám sát trạng thái
buồn ngủ của lái xe
Nội dung Thiết bị giám sát trạng thái lái xe dự kiến của Đề tài
Chip điều khiển Broadcom BCM2837, Quad core Cortex-A53 ARM 64-bit SoC Thiết bị nhúng sử dụng chip điều khiển xây dựng trên @ 1.2GHz tích hợp trên Raspberry Pi 4.
Bộ nhớ
ROM/RAM 32G/2G
Tín hiệu đầu vào
Sử dụng camera số kết nối với bộ xử lý nhúng
Sử dụng camera hồng ngoại để hoạt động tốt vào ban đêm và khi lưu thông trong đường hầm
USB 2 cổng USB 3.0 và 2 cổng USB 2.0
Thuật toán điều khiển
Thuật toán phát hiện buồn ngủ theo các thơng số quan sát đặc trưng:
− Tìm con ngươi từ khuôn mặt để xác định mặt nhắm hay mở. − Xác định vùng tai trái, vùng tai phải đề phát hiện tài xế đang quay phải hay trái.
24
Hệ thống bảo vệ và giảm thiểu tiếng ồn Mạch bảo vệ điện áp quá áp/quá dòng, cắm ngược điện nguồn Nguồn mạch Làm việc với cả nguồn 12 V và 24 V, phù hợp cho mọi loại xe
Công suất Công suất tiêu thụ 6 W
Tránh chói Loại bỏ sự phản xạ bất thường của ánh mặt trời bằng cách sử dụng các bộ lọc đặc biệt
3.3 Phần mềm xử lý ảnh 3.3.1 Thư viện OpenCV 3.3.1 Thư viện OpenCV
OpenCV (Open Computer Vision library) do Intel phát triển, được giới thiệu năm 1999 và hoàn thiện thành phiên bản 1.0 năm 2006. Nó là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay phát triển về thị giác máy tính, tối ưu hóa và xử lý các ứng dụng trong thời gian thực. Nó giúp cho việc xây dựng các ứng dụng xử lý ảnh, thị giác máy tính,... trở nên nhanh hơn.
Thư viện OpenCV gồm khoảng 500 Hàm, được viết bằng ngơn ngữ lập trình C/C++ và tương thích với các hệ điều hành Windows, Linux, Mac OS... đóng vai trị xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho lĩnh vực Computer Vision và tạo điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng.
Trước đây OpenCV khơng có một cơng cụ chuẩn nào cho lĩnh vực xử lý ảnh. Các đoạn mã đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định. Các bộ công cụ thương mại như Matlab, Simulink, Halcon, v.v... lại có giá cao chỉ thích hợp cho các cơng ty phát triển các ứng dụng lớn. Ngồi ra cịn có các giải pháp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho từng thiết bị, rất khó khăn cho việc mở rộng ứng dụng.
3.3.2 Cách tổ chức thư viện OpenCV
Tổ chức thư viện OpenCV khá đơn giản, bao gồm 4 module chính và 2 module mở rộng, được mơ tả ở Hình 3.11.
CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ như các cấu trúc dữ liệu cho ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h. CXCORE cũng chứa đại số tuyến tính và các phương pháp thống kê, chức năng duy trì và điều khiển chuỗi. Một số ít các chức năng đồ họa để vẽ trên ảnh cũng được đặt ở đây.
25
Hình 3.11: Tổ chức thư viện OpenCV (Nguồn Internet)
CV chứa các thuật toán về xử lý ảnh và xác định kích cỡ camera. Các chức năng đồ họa máy tính cũng được đặt ở đây.
CVAUX được mô tả trong tài liệu của OpenCV chứa các mã cũ đã thử nghiệm. Tuy nhiên, các giao diện đơn giản cho việc nhận diện ảnh được đặt ở trong module này. Mã nguồn sau này được sử dụng và ứng dụng rộng rãi cho việc nhận diện khuôn mặt.
HighGUI được đặt trong thư mục là “otherlibs”. HighGUI chứa các giao diện nhập/xuất cơ bản, nó cũng chứa các khả năng mở rộng khác và nhập/xuất video. Kèm theo thư viện là tài liệu hướng dẫn và các ví dụ mẫu thể hiện một phần các chức năng của công cụ OpenCV.
Các chức năng của OpenCV tập trung vào thu thập ảnh, xử lý ảnh và các thuật tốn phân tích dữ liệu ảnh, bao gồm:
− Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim. − Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi,
xâu và cây.
− Xử lý ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh sửa màu, phóng to thu nhỏ, và hiệu chỉnh histograms.
26
− Xử lý cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối chiếu bản mẫu, làm trịn các đơn vị hình học cơ sở như mặt phẳng, đa giác, ellipse, đường thẳng...
− Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân tích chuyển động.
− Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thơng số (nếu cần thiết, có thể tự tạo thêm các phím điều khiển thông qua thao tác chuột, hoặc tích hợp thêm các thư viện về giao diện như wxWidgets).
− Chức năng vẽ, chú thích lên ảnh.
3.3.3 Tổng quan phương pháp Haar-like
Có rất nhiều phương pháp để giải quyết bài tốn xác định khuôn mặt người trên ảnh 2D dựa trên các hướng tiếp cận khác nhau. Phương pháp Haar-like – Adaboost (viết tắt HA) của hai tác giả Paul Viola và Michael J.Jones là phương pháp xác định mặt người dựa theo hướng tiếp cận trên diện mạo (Hình 3.12).