Ngành ô tô đang giữ một vị trí quan trọng trong hoạt động kinh tế và xã hội. Ô tô được sử dụng phổ biến và thường xuyên vì vậy cần phải đảm bảo được sự an toàn cho người sử dụng, cũng như người điều khiển cần phải có tinh thần tỉnh táo và tập trung cao độ khi tham gia giao thông. Nhiều tiến bộ khoa học kỹ thuật và công nghệ mới đã được áp dụng nhằm giảm thiểu tai nạn giao thông bắt nguồn từ nhiều nguyên nhân khác nhau. Trên thực tế, nghiên cứu chuyên sâu từ Hiệp hội An toàn giao thông của Hoa Kỳ cho rằng việc lái xe khi ngủ ít hơn 5 tiếng một ngày cũng nguy hiểm không khác gì uống rượu bia khi lái xe. Nghiên cứu cũng cho rằng khá khó khăn trong việc phát hiện buồn ngủ khi lái xe, khiến đây trở thành vấn đề an toàn giao thông cấp bách hiện nay. Ngày nay, cùng với sự phát triển và tiến bộ không ngừng của khoa học kỹ thuật thì xử lý ảnh là một trong những vấn đề cần được quan tâm và phát triển. Sự phổ biến của kit Raspberry Pi với kích thước nhỏ gọn, được xem như máy tính thu nhỏ nên có nhiều nghiên cứu và ứng dụng kit Raspberry Pi trong thực tiễn. Ứng dụng kit Raspberry Pi vào xử lý ảnh nhằm đưa ra một số giải pháp xử lý ảnh để áp dụng vào đời sống. Trong luận văn này, em cố gắng tìm ra các thuật toán, cũng như những giải pháp tối ưu, đơn giản nhưng mang lại độ chính xác cao, đáp ứng được nhu cầu thực tế. Em tiến hành mô phỏng những bài toán xử lý ảnh đơn giản, nhận dạng ảnh tĩnh và nhận dạng trực tiếp qua camera trên chương trình Python và phát triển nhận dạng theo dõi chính xác trạng thái mở hoặc đóng của mắt trong thời gian thực hiện trên kit Raspberry Pi 3. Khuôn mặt được phát hiện bằng phương pháp: phương pháp sử dụng bộ phân loại mạnh AdaBoost dựa trên các đặc trưng Haarlike. Mắt được nhận dạng bằng cách đánh dấu các bộ phận trên khuôn mặt bằng thuật toán Facial Landmarks, sau đó tính khoảng cách giữa hai mí mắt bằng khoảng cách Euclide để nhận diện trạng thái mắt và phát hiện trạng thái ngủ gật.
HỆ THỐNG CẢNH BÁO NGỦ GẬT VÀ THIẾT KẾ HỆ THỐNG 1 1.1 CÁC HỆ THỐNG CẢNH BÁO NGỦ GẬT
Dạng đeo lên tai người lái
Hệ thống chống ngủ gật đeo tai được thiết kế thông minh với vật liệu dẻo siêu nhẹ và phần móc cài qua tai tiện dụng Khi kích hoạt, chức năng cảm biến bên trong sẽ đo góc vuông khi đầu thẳng, báo động ở mức 0° khi lái xe tỉnh táo Khi người lái có dấu hiệu gục đầu, đầu ngã xuống, góc đo của máy cảm biến sẽ tăng từ 0° - 15° hay 30°, lập tức phát âm thanh cảnh báo đủ lớn để đánh thức lái xe mà không gây khó chịu.
Thiết bị cảnh báo chống ngủ gật là một giải pháp sáng tạo giúp cứu sống mọi lái xe khi nguy cơ buồn ngủ, mệt mỏi đột ngột kéo đến Với thiết kế nhỏ gọn và tinh tế, phụ kiện này dễ dàng đeo lên tai phải và tự kích hoạt hoạt động dựa trên nguyên tắc cân bằng điện tử qua một thiết bị cảm biến Khi đầu người dùng gật về một phía, một âm thanh báo động lớn và rung mạnh sẽ đánh thức họ, cảnh báo lái xe và hành khách Sản phẩm này không chỉ dành riêng cho lái xe mà còn có thể có tác dụng hoàn hảo cho bất cứ ai cần được tỉnh táo khi làm nhiệm vụ, chẳng hạn như học sinh sinh viên, nhân viên bảo vệ hoặc người điều khiển máy móc.
Hình 1.1 Hệ thống cảnh báo ngủ gật dạng đeo lên tai Ưu điểm:
+ Thiết bị sẽ không hoạt động khi người lái đang trong trạng thái tỉnh táo bình thường với mắt nhìn phía trước
+ Thiết kế gọn nhẹ với chất liệu cao su mềm, tạo cảm giác thoải mái
Với thiết kế trọng lượng nhẹ, phù hợp với mọi kích cỡ tai, dù là người lớn hay trẻ em, sản phẩm này mang đến sự thoải mái và dễ dàng sử dụng Đồng thời, đây cũng là cách đơn giản nhất để trở nên tỉnh táo và tập trung mà không cần phải dựa vào caffeine hoặc các loại dược phẩm.
Nhược điểm: có thể cảnh báo trong những trường hợp không mong muốn hoặc gây giật mình cho lái xe khi âm lượng quá cao.
Dạng lắp đặt trên xe ô tô
Hệ thống cảnh báo ngủ gật dạng này được lắp đặt trên xe ô tô với sự kết hợp của hệ thống camera và màn hình cảm biến hiện đại Một số hãng xe nổi tiếng đã áp dụng công nghệ này vào sản phẩm của mình, nhằm nâng cao trải nghiệm lái xe an toàn và thoải mái hơn.
Hãng xe hơi danh tiếng Mercedes-Benz đã trang bị công nghệ Attention Assist, sử dụng bộ điều khiển động cơ để theo dõi các thay đổi trong cách điều khiển vô lăng và hành vi lái xe của người lái Khi phát hiện những dấu hiệu bất thường, hệ thống này sẽ gửi cảnh báo kịp thời để đảm bảo an toàn cho người lái và hành khách trên xe.
Hệ thống Attention Assist là một tính năng an toàn thông minh giúp cảnh báo mất tập trung khi lái xe Hệ thống này ghi nhận các hành vi lái xe của người điều khiển như cách vào số, tăng tốc, rà phanh, chỉnh âm lượng và hơn 70 thông số khác trong khoảng thời gian 20 phút đầu tiên để tạo tiêu chuẩn Khi phát hiện ra những biểu hiện khác thường so với tiêu chuẩn đã được thiết lập, hệ thống sẽ phát ra cảnh báo bằng âm thanh và thông báo "Take A Break" kèm theo hình ly cà phê Điều này cho thấy tài xế đang trong tình trạng căng thẳng, mất tập trung hoặc buồn ngủ, và cần tìm điểm dừng chân gần nhất để nghỉ ngơi trước khi tiếp tục cuộc hành trình Hệ thống Attention Assist hoạt động hiệu quả khi phương tiện di chuyển trong dãy tốc độ từ 60km/h đến 200km/h.
Hình 1.2 Hệ thống Attention Assist khi cảnh báo
Hãng xe hơi Lexus đã áp dụng một công nghệ tiên tiến trong việc đảm bảo an toàn lái xe Thay vì theo dõi hành vi của người lái, họ đã gắn camera tại bảng táp lô để quan sát gương mặt của lái xe Công nghệ này cho phép hệ thống cảnh báo lái xe khi phát hiện dấu hiệu buồn ngủ, giúp ngăn chặn những tai nạn không mong muốn.
Hình 1.3 Mô phỏng hệ thống cảnh báo ngủ gật trên hãng xe Lexus
Hệ thống Driver Alert Control của hãng Volvo là một tính năng cảnh báo sai làn đường, giúp giám sát và hỗ trợ lái xe đi đúng làn đường, đồng thời cảnh báo khi phát hiện dấu hiệu lấn làn Chức năng này được thiết kế để phát hiện khả năng lái xe giảm dần và chủ yếu dành cho các tuyến đường lớn, không phù hợp với giao thông thành phố Khi tốc độ xe vượt quá 65 km/h, chức năng này sẽ được kích hoạt và vẫn hoạt động miễn là tốc độ trên 60 km/h.
Hình 1.4 Hệ thống Driver Alert Control đọc vị trí của xe trong làn đường
Một camera phát hiện các vạch cạnh được sơn trên đường và so sánh sự căn chỉnh của đường với chuyển động vô lăng của người lái xe
Hình 1.5 Dấu hiệu điều khiển xe không an toàn
Khi phát hiện hành vi lái xe có dấu hiệu mâu thuẫn đáng chú ý, hệ thống sẽ cảnh báo người lái xe thông qua biểu tượng hiển thị trên màn hình trình điều khiển, kết hợp với tín hiệu âm thanh và tin nhắn văn bản "Đã đến lúc nghỉ giải lao", giúp họ nhận biết và điều chỉnh kịp thời.
Hình 1.6 Biểu tượng cảnh báo
Khi xe được trang bị Sensus Navigation và kích hoạt chức năng "Hướng dẫn Dừng Nghỉ ngơi", hệ thống sẽ hiển thị gợi ý về nơi nghỉ giải lao phù hợp Đồng thời, cảnh báo sẽ được lặp lại sau một thời gian nếu hành vi lái xe không được cải thiện Hệ thống bám làn đường của Bosch giúp xe chạy ổn định trong một làn đường nhờ vào cảm biến phía trước mũi xe, đồng thời thu thập dữ liệu từ góc lệch vô-lăng, chân ga và hệ thống đèn báo để đưa ra cảnh báo kịp thời cho người lái.
Hình 1.7 Hệ thống bám làn đường của Bosch
Hệ thống ghế ngồi phát hiện ngủ gật là một tính năng hiện đại được tích hợp vào ghế ngồi của xe ô tô Phía dưới và lưng ghế ngồi sẽ được trang bị các mạch tĩnh điện, cho phép xác định các xung tần của nhịp tim Chức năng chính của hệ thống này là phát hiện và cảnh báo người lái khi có dấu hiệu buồn ngủ hoặc mất tập trung, giúp ngăn ngừa tai nạn giao thông do ngủ gật.
Hình 1.8 Hệ thống ghế ngồi phát hiện ngủ gật
Hệ thống phát hiện ngủ gật bằng camera nhận diện khuôn mặt là công nghệ cảnh báo tiên tiến, giúp đảm bảo an toàn cho người lái xe Công nghệ này sử dụng hai camera hồng ngoại để xác định mắt của người điều khiển trong suốt quá trình xe di chuyển, hoạt động hiệu quả ngay cả trong bóng tối Dữ liệu từ số lần và tốc độ chớp mắt sẽ được hệ thống phân tích để xác định người lái có đang trong trạng thái mệt mỏi hay ngủ gật không, từ đó đưa ra cảnh báo kịp thời để ngăn chặn tai nạn.
Hình 1.9 Hệ thống phát hiện ngủ gật bằng camera
Các hệ thống cảnh báo ngủ gật lắp đặt trên ô tô có các ưu và nhược điểm sau: + Ưu điểm: cho độ chính xác cao
+ Nhược điểm: lắp ráp và cài đặt phức tạp, giá thành cao.
XÁC ĐỊNH NHỮNG ĐẶC TRƯNG CƠ BẢN VÀ BIỂU HIỆN CỦA TRẠNG THÁI NGỦ GẬT
Để phát hiện trạng thái buồn ngủ có nhiều phương pháp khác nhau như trình bày ở hình 1.10 bao gồm:
Giám sát mô hình lái xe là một hệ thống tiên tiến giúp theo dõi và phân tích hành vi của lái xe thông qua việc thu nhận các thông số hành vi lái, bao gồm tín hiệu góc lái từ ESP hoặc hệ thống trợ lực điện, âm thanh nghe được và sự rung động của xe Ngoài ra, hệ thống còn sử dụng camera đa năng (MPC) để giám sát vị trí của xe trong làn đường và phân tích hành vi giữ làn đường Đồng thời, hệ thống cũng theo dõi và phân tích hành vi của mắt và khuôn mặt lái xe, bao gồm việc phát hiện nhắm mắt, ngáp và đo lường các hiệu ứng sinh lý học về hoạt động não, nhịp tim và độ dẫn điện của da thông qua các công nghệ như điện não đồ (EEG), điện tâm đồ (EMG) và tác động điện giải (EDA).
Hình 1.10 Các phương pháp phát hiện trạng thái buồn ngủ
Các cảnh báo buồn ngủ trên dựa trên đặc tính của con người khi mất tập trung, dẫn đến suy giảm kỹ năng vận động và ảnh hưởng đến hành vi lái xe Khi buồn ngủ, người lái xe có thể không chỉnh tay lái chính xác, và trong trường hợp cực đoan, có thể quan sát thấy chuỗi phản ứng liên quan đến hoạt động của con người bị ảnh hưởng nghiêm trọng.
Mí mắt sẽ được đóng lại hoặc mở nhìn chằm chằm không chớp mắt
Vị trí định hướng lái của xe không bình thường Điều chỉnh quá mức góc lái
Các cảnh báo buồn ngủ có thể xuất hiện trong điều kiện lái xe bình thường, nhưng sẽ trở nên thường xuyên hơn khi mức độ buồn ngủ tăng cao Tuy nhiên, hầu hết các phương pháp cảnh báo buồn ngủ hiện nay đòi hỏi nhiều thiết bị phức tạp, khiến việc áp dụng chúng trong thực tế trở nên khó khăn.
Phương pháp sử dụng camera để giám sát mắt, con ngươi và vị trí đầu của lái xe là một giải pháp hiệu quả để phát hiện trạng thái buồn ngủ của người lái xe Tuy nhiên, phương pháp này vẫn còn hạn chế do hình ảnh thu được từ camera có thể bị ảnh hưởng bởi các yếu tố như thời tiết, ánh sáng mặt trời, thời gian trong ngày và vị trí đặt camera.
CÁC PHẦN MỀM XỬ LÝ HÌNH ẢNH
1.3.1 Tổng quan về xử lý ảnh
Con người thu nhận thông tin chủ yếu qua các giác quan, và thị giác đóng vai trò quan trọng nhất trong việc tiếp nhận và xử lý thông tin Sự phát triển vượt bậc của phần cứng máy tính trong những năm gần đây đã mở đường cho sự tiến bộ mạnh mẽ của công nghệ xử lý ảnh và đồ họa, từ đó mang lại nhiều ứng dụng thực tế trong cuộc sống hàng ngày.
Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng
Quá trình xử lý ảnh là một chuỗi thao tác ảnh đầu vào để tạo ra kết quả mong muốn Kết quả đầu ra của quá trình này có thể là một ảnh mới được chỉnh sửa hoặc một hình ảnh đã được cải thiện chất lượng.
“tốt hơn” hoặc một kết luận
Xử lý ảnh là một lĩnh vực quan trọng trong công nghệ thông tin, nơi mà ảnh được xem như tập hợp các điểm ảnh Mỗi điểm ảnh đại diện cho đặc trưng cường độ sáng hoặc dấu hiệu tại một vị trí cụ thể của đối tượng trong không gian Do đó, ảnh trong xử lý ảnh có thể được xem như một hàm n biến, tạo nên ảnh n chiều với nhiều thông tin chi tiết và phức tạp.
Hình 1.12 Quy trình xử lý ảnh
Hệ quyết định Đối sánh rút ra kết luận
Hậu xử lý Tiền xử lý
Xử lý ảnh là một ngành khoa học mới nổi đang phát triển nhanh chóng trong những năm gần đây Với tốc độ phát triển vượt bậc, lĩnh vực này đang được các trung tâm nghiên cứu trên toàn thế giới tập trung nghiên cứu và phát triển.
Xử lý ảnh là một phân ngành quan trọng trong xử lý số tín hiệu, tập trung vào việc nâng cao chất lượng và phân tích hình ảnh Lĩnh vực này bao gồm bốn lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh Các phương pháp xử lý ảnh đã được phát triển từ những ứng dụng ban đầu như nâng cao chất lượng độ sáng và độ phân giải của ảnh, phân tích ảnh, và đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau như y tế, thám hiểm, truyền và mã hóa, thị giác máy tính, robot, xử lý màu Quá trình xử lý ảnh bao gồm các bước cần thiết như thu thập hình ảnh từ camera, chuyển đổi sang ảnh số, và thực hiện các thuật toán xử lý ảnh để đạt được kết quả mong muốn.
Hình 1.13 Các bước cơ bản trong xử lý ảnh
Thu nhận ảnh Tiền xử lý
Kết quả Nhận dạng và nội suy
Biểu diễn và mô tả Phân đoạn ảnh
Quá trình xử lý ảnh bao gồm nhiều bước quan trọng Đầu tiên, ảnh được thu nhận qua camera màu hoặc trắng đen, thường là thông qua camera hoặc video Sau đó, ảnh được đưa vào bộ tiền xử lý để nâng cao chất lượng hình ảnh, bao gồm lọc và nâng độ tương phản để làm cho ảnh rõ hơn và sắc nét hơn Tiếp theo, ảnh được phân đoạn thành các vùng thành phần nhỏ hơn để biểu diễn phân tích và nhận dạng ảnh Ảnh sau đó được biến đổi thành dạng thích hợp cho việc xử lý tiếp theo của máy tính, bao gồm tìm các vùng đặc trưng của ảnh và tách các đặc tính của ảnh dưới dạng thông tin Cuối cùng, ảnh được nhận dạng và nội suy thông qua quá trình so sánh mẫu với mẫu chuẩn đã được lưu trữ từ trước, và phán đoán theo ý nghĩa trên cơ sở nhận dạng.
Cơ sở tri thức đóng vai trò quan trọng trong việc xử lý và phân tích ảnh, một đối tượng phức tạp về đường nét, độ sáng tối và dung lượng điểm ảnh Để đơn giản hóa các phương pháp toán học và đảm bảo tiện lợi cho xử lý, người ta hướng tới việc bắt chước quy trình tiếp nhận và xử lý ảnh theo phương pháp trí tuệ con người, từ đó áp dụng cơ sở tri thức vào nhiều khâu khác nhau trong quá trình xử lý ảnh.
Hình 1.14 Các thành phần cơ bản của hệ thống xử lý ảnh
Bộ phận thu nhận ảnh
In ấn và lưu trữ ngoài Phần mềm xử lý ảnh
Phần cứng xử lý ảnh chuyên dụng
Lưu trữ trong Máy tính
Hệ thống xử lý ảnh bao gồm một số bộ phận quan trọng, bao gồm bộ phận thu nhận ảnh như máy quay và máy quét chuyên dụng, phần cứng xử lý ảnh chuyên dụng giúp nâng cao tốc độ xử lý, máy tính có thể là thiết bị thông thường hoặc chuyên dụng, bộ phận lưu trữ bắt buộc phải có để lưu trữ tạm thời và vĩnh viễn, và cuối cùng là bộ phận hiển thị thông qua màn hình máy tính.
Thư viện OpenCV (Open Computer Vision library) được phát triển bởi Intel và giới thiệu lần đầu tiên vào năm 1999, sau đó hoàn thiện thành phiên bản 1.0 vào năm 2006 Là một thư viện mã nguồn mở, OpenCV phục vụ cho việc nghiên cứu và phát triển các ứng dụng về thị giác máy tính, tối ưu hóa và xử lý hình ảnh Nhờ đó, việc xây dựng các ứng dụng xử lý ảnh và thị giác máy tính trở nên nhanh chóng và hiệu quả hơn.
Thư viện OpenCV là một bộ công cụ mạnh mẽ với khoảng 500 hàm, được phát triển bằng ngôn ngữ lập trình C/C++ và hỗ trợ đa nền tảng, bao gồm Windows, Linux và Mac OS Với vai trò xác lập chuẩn giao tiếp, dữ liệu và thuật toán cho lĩnh vực Computer Vision, OpenCV tạo điều kiện thuận lợi cho cộng đồng tham gia nghiên cứu và phát triển các ứng dụng trí tuệ nhân tạo.
Trước đây, lĩnh vực xử lý ảnh không có công cụ chuẩn nào do OpenCV cung cấp, dẫn đến sự không thống nhất và không ổn định của các đoạn mã đơn lẻ được viết bởi các nhà nghiên cứu Các bộ công cụ thương mại như Matlab, Simulink và Halcon lại có giá cao, chỉ phù hợp với các công ty phát triển ứng dụng lớn Ngoài ra, các giải pháp kèm theo thiết bị phần cứng thường là mã đóng và được thiết kế riêng cho từng thiết bị, gây khó khăn cho việc mở rộng ứng dụng.
1.3.3 Cách tổ chức thư viện
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 1.15
CXCORE là thành phần cốt lõi chứa các định nghĩa kiểu dữ liệu cơ sở, bao gồm các cấu trúc dữ liệu cho ảnh, điểm và hình chữ nhật được định nghĩa trong tệp cxtypes.h Ngoài ra, CXCORE cũng cung cấp các chức năng đại số tuyến tính, phương pháp thống kê, chức năng duy trì và điều khiển chuỗi Bên cạnh đó, một số chức năng đồ họa cơ bản để vẽ trên ảnh cũng được tích hợp trong CXCORE, giúp hỗ trợ các ứng dụng xử lý ảnh và đồ họa.
Hình 1.15 Tổ chức thư viện OpenCV
CV chứa các thuật toán xử lý ảnh và xác định kích cỡ camera, đồng thời cũng bao gồm các chức năng đồ họa máy tính Ngoài ra, CVAUX được mô tả trong tài liệu của OpenCV là nơi chứa các mã cũ đã được thử nghiệm.
Module HighGUI chứa các giao diện đơn giản cho việc nhận diện ảnh và khuôn mặt, được đặt trong thư mục "other libs" HighGUI cung cấp các giao diện nhập/xuất cơ bản, khả năng mở rộng khác và nhập/xuất video Thư viện này cũng đi kèm với 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, giúp người dùng dễ dàng ứng dụng và sử dụng mã nguồn cho việc nhận diện ảnh và khuôn mặt.
Các chức năng chính của OpenCV tập trung vào việc thu thập, xử lý và phân tích dữ liệu ảnh, bao gồm các hoạt động như truy xuất ảnh và phim từ camera hoặc file, cũng như ghi lại ảnh và phim Ngoài ra, OpenCV còn cung cấp các cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết để thực hiện các thuật toán phân tích dữ liệu ảnh một cách hiệu quả.
(face detection, camera caliration), image processing, motion analysis
MLL Statistical Classifiers, Clusterring Algorithms
HighGUI Simple GUI Image and VideoInput/Output
CXCORE Basic structures and algorithms (matrix and math operations),
PHÂN TÍCH PHƯƠNG ÁN THIẾT KẾ
Ngày nay, nhiều kỹ thuật phát hiện tình trạng ngủ gật đã được nghiên cứu và phát triển, giúp cải thiện an toàn giao thông Các kỹ thuật này được chia thành hai nhóm chính: kỹ thuật dựa trên sự thay đổi biểu hiện sinh lý như sóng não và nhịp tim, và kỹ thuật dựa trên sự thay đổi biểu hiện vật lý như tư thế, độ nghiêng của đầu, trạng thái nhắm, mở mắt, chớp mắt và ngáp Một ví dụ về kỹ thuật phát hiện ngủ gật dựa trên biểu hiện vật lý là hệ thống được thiết kế bởi nhóm Hrishikesh et al (2007), sử dụng tình trạng nhắm mắt hay mở mắt của tài xế vào ban đêm để phát hiện tình trạng ngủ gật.
Hệ thống sử dụng camera hồng ngoại để thu hình ảnh gương mặt của tài xế, sau đó xử lý để xác định tình trạng mắt đang nhắm hay mở tại từng thời điểm Khi mắt được phát hiện nhắm trong một số frame ảnh liên tục, hệ thống sẽ gửi tín hiệu cảnh báo đến tài xế Để phân tích tình trạng nhắm và mở của mắt, nhóm nghiên cứu áp dụng giải thuật phân cụm và phát hiện mức độ tăng giảm giá trị khoảng cách giữa các cụm Phương pháp này đã được thử nghiệm và cho kết quả khả quan, đặc biệt trong điều kiện lái xe ban đêm Để hạn chế ảnh hưởng của ánh sáng, hệ thống có thể sử dụng camera nhiệt hoặc nguồn chiếu sáng chủ động từ camera hồng ngoại, giúp giám sát và phát hiện trạng thái buồn ngủ trên khuôn mặt lái xe mà không gây khó chịu hoặc mất tập trung.
Hình 1.17 Hệ thống camera hồng ngoại
Tuy nhiên, ngay cả trong điều kiện ánh sáng ban ngày, tài xế vẫn có thể bị ảnh hưởng bởi sự thay đổi ánh sáng, điều này có thể tác động đến việc lấy hình ảnh nhị phân và phân cụm, từ đó ảnh hưởng đến kết quả cuối cùng Để giải quyết vấn đề này, Neeta Parma đã đề xuất một giải thuật tìm kiếm vị trí của mắt và xác định mắt mở hay nhắm vào năm 2002 Hệ thống sử dụng một camera đơn sắc giám sát mắt tài xế để phát hiện biểu hiện mệt mỏi, bắt đầu bằng việc xác định gương mặt trong frame ảnh thông qua phân tích dữ liệu từ phiên bản nhị phân Sau khi tìm thấy vùng mặt, hệ thống tính giá trị trung bình pixel theo phương ngang và dựa vào sự thay đổi cường độ để xác định vị trí của mắt, thường có sự thay đổi giá trị trung bình ngang khá lớn.
Hệ thống sẽ tính khoảng cách giữa các sự thay đổi cường độ giá trị pixel của mắt để xác định trạng thái nhắm hay mở Khi khoảng cách lớn, hệ thống sẽ kết luận mắt đang nhắm, và nếu mắt nhắm trong 5 frame ảnh liên tiếp, hệ thống sẽ phát tín hiệu cảnh báo tài xế ngủ gật Một giải thuật đã được phát triển để xác định khoảng cách giữa hai sự biến đổi cường độ giá trị trung bình ngang đáng kể trong vùng mắt, đặc biệt là giữa mắt và chân mày, cho kết quả hiệu quả Tuy nhiên, phương pháp này đòi hỏi phải thực hiện việc nhị phân hóa hình ảnh, điều này có thể gặp khó khăn trong việc xác định ngưỡng nhị phân hợp lý, đặc biệt là trong điều kiện ánh sáng xung quanh thay đổi nhiều.
Dựa trên các nghiên cứu hiện đại và công nghệ nhận diện hình ảnh tiên tiến, hệ thống được thiết kế với một camera màu có chức năng xử lý hình ảnh, hướng thẳng vào khuôn mặt của tài xế để thu thập và phân tích các biểu cảm, sắc thái khuôn mặt Điều này cho phép hệ thống đưa ra đánh giá chính xác về trạng thái của người lái xe.
Hình 1.18 68 điểm nhận diện trên khuôn mặt
THIẾT KẾ THIẾT BỊ CẢNH BÁO CHỐNG NGỦ GẬT TRÊN Ô TÔ
Trên thế giới và Việt Nam đã triển khai nhiều giải pháp khác nhau để cảnh báo tình trạng mất tập trung do buồn ngủ của lái xe, tập trung vào hai phương pháp chính: dựa vào sinh lý người lái xe và dựa vào hoạt động, phản ứng điều khiển xe của người lái xe.
Phương pháp dựa vào sinh lý người lái xe được thực hiện qua hai kỹ thuật sau:
Kỹ thuật theo dõi và đánh giá các thay đổi về sinh lý của người lái xe, chẳng hạn như nhịp tim, sóng não và nháy mắt, là một phương pháp quan trọng để đánh giá trạng thái của người lái Tuy nhiên, kỹ thuật này đòi hỏi phải gắn thiết bị trực tiếp lên cơ thể người lái, gây cảm giác khó chịu và giảm độ chính xác do mồ hôi trên bề mặt da Một phương pháp thay thế là xác định và đo lường sự thay đổi trên cơ thể, chẳng hạn như tư thế ngồi, vị trí nghiêng đầu, trạng thái nhắm hoặc mở mắt, cử động miệng của lái xe, thông qua việc sử dụng các thiết bị ghi hình mà không cần tác động trực tiếp vào cơ thể.
Hình 1.19 Tư thế ngồi khi lái xe
Phương pháp này dựa vào hoạt động phản ứng điều khiển xe của người lái, thông qua việc theo dõi chuyển động của tay lái, phanh xe, tốc độ xe và sự di chuyển sang ngang Kỹ thuật này không tác động trực tiếp vào người lái xe, nhưng lại bị hạn chế bởi loại xe và điều kiện lái xe, đòi hỏi sự linh hoạt và thích nghi trong từng tình huống cụ thể.
Hệ thống phát hiện ngủ gật bằng camera nhận diện khuôn mặt là giải pháp an toàn hiện đại, giúp theo dõi trạng thái của người điều khiển xe thông qua việc lắp đặt camera xác định mắt Trong suốt quá trình xe vận hành, hệ thống này liên tục giám sát và phân tích hình ảnh khuôn mặt của người lái, đặc biệt là mắt, để phát hiện những dấu hiệu của sự buồn ngủ hoặc mất tập trung.
Hình 1.20 Minh họa hệ thống chống ngủ gật được lắp trên xe
Hình 1.21 Mô phỏng hệ thống cảnh báo ngủ gật
Hệ thống cảnh báo buồn ngủ của lái xe hoạt động dựa trên việc phân tích khoảng thời gian và tốc độ chớp mắt, giúp xác định tình trạng mệt mỏi hoặc ngủ gật của người lái Việc cảnh báo sớm này đóng vai trò quan trọng trong việc hạn chế rủi ro và đảm bảo tính mạng, tài sản Do đó, phát triển các ứng dụng cảnh báo kịp thời tình trạng mất tập trung vì buồn ngủ của người lái xe là một giải pháp cần thiết và hiệu quả.
Hình 1.22 Minh họa hệ thống camera tiếp nhận hình ảnh
Để đáp ứng yêu cầu của đề tài, chúng tôi đã xây dựng sơ đồ khối của hệ thống bao gồm các thiết bị chính như kit Raspberry Pi 3, bàn phím, loa, màn hình và camera HD webcam C270.
Hình 1.23 Sơ đồ kết nối hệ thống chống ngủ gật
Bộ kit Raspberry đóng vai trò là khối xử lý trung tâm, chịu trách nhiệm xử lý tín hiệu nhận được từ bàn phím và camera, sau đó xuất kết quả ra màn hình Chương trình được cài đặt trên kit này sẽ điều khiển cách thức hoạt động của thiết bị Dữ liệu cần xử lý sẽ được lấy từ camera, trong khi loa sẽ phát ra âm thanh cảnh báo khi phát hiện người dùng có dấu hiệu ngủ gật Cuối cùng, màn hình sẽ hiển thị kết quả sau khi kit Raspberry xử lý xong.
THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN THIẾT BỊ
XÁC ĐỊNH CÁC THÔNG SỐ KỸ THUẬT CƠ BẢN ĐỂ THIẾT BỊ GIÁM SÁT NHẬN BIẾT TRẠNG THÁI NGỦ GẬT
Để xác định trạng thái không tập trung, buồn ngủ của tài xế , cần xác định những biểu hiện trạng thái cơ bản sau:
2.1.1 Xác định tư thế tựa đầu dựa vào phát hiện khuôn mặt trong các trường hợp đầu chuyển động
Xác định gốc tọa độ khuôn mặt hay tư thế tài xế ở vị trí tiêu chuẩn khi phát hiện mặt ở vị trí ổn định là một bước quan trọng trong xử lý ảnh Gốc tọa độ của frame ảnh sẽ được biểu diễn theo hệ trục tọa độ, giúp xác định vị trí và tư thế của khuôn mặt hoặc tài xế trong không gian.
Hình 2.1 Hệ trục tọa độ của Frame ảnh
Gốc tọa độ khuôn mặt của tài xế được gọi là O0 (x, y) và được xác định tại vị trí tiêu chuẩn khi tài xế ngồi vào vị trí lái xe Quá trình xác định này diễn ra trong khoảng thời gian 10 giây và yêu cầu vị trí của tài xế phải tương đối ổn định.
Để xác định vị trí khuôn mặt của tài xế, cần dựa vào độ lệch của khuôn mặt tại vị trí hiện tại so với khuôn mặt ở vị trí tiêu chuẩn Điều này có thể được thực hiện thông qua việc áp dụng công thức tính toán độ lệch, giúp xác định chính xác vị trí khuôn mặt.
Gọi ∆Ox1, ∆Ox2, ∆Oy1 , ∆Oy2 là độ lệch vị trí khuôn mặt hiện tại so với khuôn mặt ở vị trí tiêu chuẩn
Ox, Oy là tọa độ khuôn mặt tại vị trí chuẩn
O1x, O1y là tọa độ khuôn mặt tại vị trí hiện tại so với vị trí chuẩn
Trục Ox biểu diễn cho trục ngang (bên trái, bên phải) nên:
Nếu ∆Ox1 > width * 0,25 thì khuôn mặt quay sang bên phải (hình 2.3)
Nếu ∆Ox2 > width * 0,25 thì khuôn mặt quay sang bên trái (hình 2.4)
Hình 2.3 Khuôn mặt đang quay sang bên phải
Hình 2.4 Khuôn mặt đang quay sang bên trái
Trục Oy biểu diễn cho trục dọc (lên,xuống) nên:
Nếu ∆Oy1 > height * 0,05 thì khuôn mặt đang ngửa ra phía sau (hình 2.5) Nếu ∆Oy2 > height * 0,2 thì khuôn mặt đang cúi xuống xuống đất (hình 2.6)
Hình 2.5 Khuôn mặt đang ngửa ra sau
Hình 2.6 Khuôn mặt đang cúi xuống đất
2.2 TÌM CON NGƯƠI TỪ KHUÔN MẶT ĐỂ XÁC ĐỊNH MẮT NHẮM HAY
MỞ Để xác định trạng thái không tập trung, buồn ngủ của tài xế lái xe cần xác định những biểu hiện trạng thái cơ bản sau:
Xác định vùng mắt và con ngươi là bước đầu tiên để nhận biết trạng thái nhắm mở của mắt Quá trình này bao gồm việc xác định vùng mắt trước, sau đó xác định vị trí con ngươi Khi mắt nhắm, hệ thống sẽ đưa ra cảnh báo buồn ngủ, giúp người dùng nhận biết và điều chỉnh trạng thái của mình.
Hình 2.7 Vị trí con ngươi trong trường hợp mắt đang mở
Để xác định trạng thái của mắt, chúng ta dựa trên vị trí của con ngươi so với vùng mắt đã xác định trước đó Cụ thể, nếu con ngươi nằm giữa vùng mí mắt trên và chân mày, mắt đang ở trạng thái đóng hoặc nhắm Ngược lại, nếu con ngươi nằm trong vùng mắt chứa nó, mắt đang ở trạng thái mở.
Một trong những hạn chế của công nghệ này là khoảng cách từ thiết bị đến vùng mắt người dùng cần được duy trì trong khoảng từ 20 đến 30 cm để đạt được độ chính xác cao Khi khoảng cách này càng tăng, vùng con ngươi sẽ càng nhỏ, dẫn đến khó khăn trong việc phát hiện chính xác con ngươi.
Hình 2.8 Vị trí con ngươi trong trường hợp mắt đang đóng
THIẾT KẾ PHẦN MỀM PHÁT HIỆN NGỦ GẬT BẰNG CÁC THUẬT TOÁN ĐỀ XUẤT
Giấc ngủ là một phần thiết yếu của cuộc sống con người, giúp cơ thể nghỉ ngơi và phục hồi năng lượng Tuy nhiên, ngủ gật có thể xảy ra bất cứ lúc nào, đặc biệt là khi đang lái xe hoặc trong các tình huống yêu cầu sự chú ý tập trung, gây ra những nguy hiểm tiềm ẩn Vì vậy, việc phát hiện tình trạng buồn ngủ của người lái xe là vô cùng quan trọng Hệ thống đề xuất sử dụng camera để thu nhận hình ảnh khuôn mặt của người lái xe, sau đó được CPU máy tính xử lý và nhận dạng theo thuật toán được viết sẵn Dựa trên giá trị nhận được, hệ thống sẽ phát ra tín hiệu cảnh báo thích hợp cho người lái xe, đồng thời lưu lại dữ liệu để hình thành bộ cơ sở dữ liệu, giúp việc nhận dạng người lái xe buồn ngủ trở nên sớm và chính xác hơn.
Khi thiết bị được kích hoạt, hệ thống sẽ nhận dạng khuôn mặt thông qua camera và gửi hình ảnh về bộ xử lý chính để phân tích Để đảm bảo độ chính xác, người lái xe cần giữ nguyên vị trí tiêu chuẩn trong 10 giây để hệ thống xác định vị trí chuẩn của khuôn mặt so với thiết bị Trong quá trình này, thuật toán phát hiện khuôn mặt sẽ được kích hoạt để kiểm tra các điều kiện cần thiết cho việc nhận diện khuôn mặt.
Khi khuôn mặt được phát hiện, hệ thống sẽ thực hiện tìm kiếm vùng mắt và xác định con ngươi trong vùng khuôn mặt đó Nếu vùng mắt và con ngươi được xác định, hệ thống sẽ kiểm tra trạng thái của mắt, nếu mắt đang nhắm, chế độ cảnh báo âm thanh sẽ được kích hoạt Nếu mắt đang mở, hệ thống sẽ quay lại thuật toán phát hiện khuôn mặt Trong trường hợp không xác định được vùng mắt và con ngươi, hệ thống sẽ xác định vị trí hiện tại của đầu người lái xe so với vị trí tiêu chuẩn ban đầu, và nếu vị trí lệch trái, phải, ngửa hay cúi gục, chế độ cảnh báo lái xe không tập trung sẽ được kích hoạt.
Trong trường hợp không thể phát hiện khuôn mặt, thuật toán sẽ chuyển sang tìm kiếm vùng mũi - một đặc trưng quan trọng trên khuôn mặt với vị trí tỉ lệ bất biến Điều này giúp thuật toán có thể hoạt động hiệu quả ngay cả khi khuôn mặt bị che khuất một phần hoặc bị ảnh hưởng bởi nhiễu ánh sáng, dẫn đến thuật toán phát hiện khuôn mặt bị nhiễu.
Khi phát hiện được vùng mũi, quá trình xác định vùng mặt sẽ được thực hiện thông qua thuật toán phóng ảnh, giúp xác định tọa độ vùng mặt dựa trên tọa độ vùng mũi đã được xác định trước đó Sau đó, thuật toán tìm kiếm vùng mắt và con ngươi sẽ được áp dụng để hoàn thiện quá trình nhận diện khuôn mặt.
Khi hệ thống xác định được vùng mắt và con ngươi, nó sẽ kiểm tra trạng thái của mắt để xác định xem mắt đang mở hay nhắm Nếu mắt đang nhắm, hệ thống sẽ kích hoạt chế độ cảnh báo âm thanh để thông báo cho người lái xe Ngược lại, nếu mắt đang mở, hệ thống sẽ tiếp tục thực thi thuật toán phát hiện khuôn mặt Trong trường hợp không xác định được vùng mắt và con ngươi, hệ thống sẽ xác định vị trí hiện tại của đầu người lái xe so với vị trí tiêu chuẩn ban đầu Nếu vị trí đầu người lái xe lệch trái, phải, ngửa hay cúi gục, hệ thống sẽ kích hoạt chế độ cảnh báo lái xe không tập trung.
Nếu không thể phát hiện vùng mũi, hệ thống sẽ chuyển sang thực thi thuật toán phát hiện vùng tai để xác định xem lái xe có đang mất tập trung hay không Khi phát hiện vùng tai (tai trái hoặc phải) trong khoảng thời gian nhất định, hệ thống sẽ kích hoạt chế độ cảnh báo âm thanh nếu người lái xe rơi vào trạng thái buồn ngủ và mất tập trung Nếu không phát hiện được vùng tai, hệ thống sẽ tiếp tục theo dõi và thực thi lại thuật toán tìm kiếm khuôn mặt để đảm bảo an toàn lái xe.
Khi thuật toán xác định vị trí hiện tại của đầu tài xế, chương trình sẽ thực hiện tìm kiếm khuôn mặt và xác định vị trí hiện tại Điều này cho phép xác định độ lệch giữa vị trí hiện tại của đầu tài xế so với vị trí tiêu chuẩn theo trục Ox, được ký hiệu là X Giá trị X này sẽ giúp xác định xem đầu tài xế có đang lệch trái hay phải so với vị trí tiêu chuẩn.
Để xác định xem lái xe có đang gục hay ngửa đầu ra sau, hệ thống sẽ đo độ lệch giữa vị trí hiện tại của đầu tài xế so với vị trí tiêu chuẩn theo trục Oy Hai giá trị ngưỡng độ lệch quan trọng, được ký hiệu là a và b, sẽ được sử dụng để đánh giá tình trạng này dựa trên dữ liệu thực nghiệm đã thu thập được.
Hình 2.9 Lược đồ tổng quát chương trình phát hiện buồn ngủ
Xác định vị trí của đầu tài xế so với vị trí tiêu chuẩn
Xác định vùng mắt, tìm kiếm con ngươi
Phát hiện khuôn mặt Tải file đặc trưng mặt, mũi, tai
Xác định mắt nhắm hay mở nhờ con ngươi
Thành công ở vị trí tiêu chuẩn
Hệ thống cảnh báo tài xế mất tập trung có thể đưa ra các cảnh báo quan trọng khi phát hiện tài xế không tập trung vào việc lái xe Cụ thể, hệ thống này có thể cảnh báo khi tài xế nhắm mắt hoặc không xác định được con ngươi, giúp ngăn chặn các tình huống nguy hiểm tiềm ẩn Ngoài ra, hệ thống cũng có thể cảnh báo khi vị trí đầu của tài xế lệch trái, phải, gục hoặc ngửa so với vị trí tiêu chuẩn, giúp đảm bảo sự an toàn cho cả tài xế và hành khách trên xe.
Phát hiện được trong một khoảng thời gian
Không Đúng Đúng Đúng Sai
Hình 2.10 Lược đồ chương trình xác định vị trí khuôn mặt của người lái xe
Nếu độ lệch X vượt quá ngưỡng a, tương đương 0,25 chiều rộng khuôn mặt, hệ thống sẽ đưa ra cảnh báo lái xe không tập trung Tương tự, nếu độ lệch Y vượt quá ngưỡng b, tương đương 0,2 chiều cao khuôn mặt, cảnh báo lái xe không tập trung cũng sẽ được kích hoạt Trong cả hai trường hợp, nếu độ lệch không vượt quá ngưỡng quy định, hệ thống sẽ tiếp tục thực hiện thuật toán phát hiện khuôn mặt để đảm bảo lái xe an toàn.
X của đầu tài xế so với vị trí tiêu chuẩn theo trục Ox để xác định lệch trái hay phải
Tính toán độ lệch Y của đầu tài xế so với vị trí tiêu chuẩn theo trục Oy để xác định tài xế gục hay ngửa đầu
Xác định vị trí hiện tại của đầu tài xế
Xác định vị trí tiêu chuẩn của người lái xe so với thiết bị
X > a Y > b Đưa ra cảnh báo lái xe đang không tập trung Đưa ra cảnh báo lái xe đang không tập trung
Hình 2.11 Lược đồ xác định vùng mặt theo phát hiện vùng mũi
Tính toán xác định vùng mặt nhờ vùng mũi
Xác định vùng mắt và con ngươi
Xác định mắt nhắm mở
Chuyển sáng thuật toán phát hiện vùng tai
Chuyển qua thuật toán phát hiện khuôn mặt Đưa ra cảnh báo khi không xác định con ngươi ( tài xế nhắm mắt)
Khi thuật toán phát hiện vùng mũi được kích hoạt, hệ thống sẽ xác định tọa độ vùng mũi và sử dụng thông tin này để tính toán tọa độ vùng mặt thông qua các công thức đã được thiết lập Từ đó, vùng mặt được xác định sẽ là cơ sở để xác định vị trí vùng mắt và con ngươi, giúp hệ thống nhận dạng và phân tích hình ảnh khuôn mặt một cách chính xác hơn.
Khi xác định thành công vùng mắt và con ngươi, hệ thống sẽ kiểm tra trạng thái mắt của người lái xe, cảnh báo nếu mắt nhắm và chuyển sang thuật toán phát hiện khuôn mặt nếu mắt mở Trong trường hợp không xác định được vùng mắt và con ngươi, hệ thống sẽ chuyển sang thuật toán xác định vùng tai để đảm bảo an toàn cho người lái.
Lược đồ thuật toán xác định vùng mắt và con ngươi trình bày trên (hình 2.12)
Hình 2.12 Lược đồ xác định vùng mắt và con ngươi
Xác định vị trí con ngươi
Kiểm tra trạng thái mắt (nhắm, mở) Đưa ra cảnh báo tài xế ngủ gật
Vùng mắt là đặc trưng quan trọng của khuôn mặt, với vị trí và tỉ lệ nhất định trên tổng thể khuôn mặt Vì vậy, sau khi xác định được vùng mặt thông qua thuật toán phát hiện khuôn mặt, việc xác định vùng mắt sẽ được tính toán dựa trên các công thức đã được thiết lập sẵn Tiếp theo, vị trí con ngươi sẽ được xác định để đánh giá trạng thái của mắt, từ đó đưa ra cảnh báo nếu mắt đang nhắm hoặc tiếp tục thực thi thuật toán phát hiện mặt nếu mắt đang mở.
TỔNG QUAN VỀ KIT RASPBERRY PI 3
Raspberry Pi được phát triển lần đầu vào năm 2012 bởi Raspberry Pi Foundation, một tổ chức phi lợi nhuận với mục tiêu xây dựng hệ thống có thể được sử dụng rộng rãi trong các công việc tùy biến khác nhau Ban đầu, Raspberry Pi là một thẻ card cắm trên bo mạch máy tính, sau đó được phát triển thành một bo mạch đơn có chức năng như một máy tính mini dùng để giảng dạy ở các trường trung học Raspberry Pi được sản xuất bởi 3 OEM: Sony, Qasida, Egoman và được phân phối chính bởi Element14, RS Components và Egoman Raspberry Pi 3 là một board máy tính đơn nhỏ, giá rẻ, tiết kiệm điện năng, đi kèm với CPU, GPU, cổng USB và các chân I/O, có khả năng thực hiện một số chức năng đơn giản như một máy tính thông thường Được giới thiệu vào năm 2016, Raspberry Pi 3 Model B đi kèm với bộ xử lý lõi tứ, cho thấy hiệu năng mạnh mẽ gấp 10 lần Raspberry Pi 1.
Pi 3 cao hơn 80% so với Raspberry Pi 2 Máy tính nhỏ bé này được phát triển với mục đích làm cho quá trình học máy tính trở nên dễ dàng để một học sinh trung bình có thể nhận được lợi ích và những gì một máy tính tiên tiến có thể làm Phần cứng Raspberry đã trải qua một số biến thể về hỗ trợ thiết bị ngoại vi và dung lượng bộ nhớ Mỗi bổ sung mới đều đi kèm với một chút cải tiến về mặt thiết kế trong đó các tính năng nâng cao được thêm vào trong thiết bị để nó có thể thực hiện càng nhiều chức năng càng tốt như một máy tính thông thường
Raspberry Pi đã trải qua một số cải tiến đáng kể trong các phiên bản mới, đáng chú ý là việc bổ sung WiFi và Bluetooth bắt đầu từ Raspberry Pi 3, cho phép thiết bị này duy trì kết nối không dây với các thiết bị ngoại vi Mặc dù hiệu suất của Raspberry Pi có thể chậm hơn so với các dòng laptop và máy tính hiện đại, nhưng nó vẫn được coi là một máy tính Linux hoàn chỉnh, cung cấp đầy đủ các tính năng mà người dùng mong đợi, đồng thời có mức tiêu thụ năng lượng thấp.
2.4.2 Cấu tạo kit Raspberry Pi 3
Raspberry Pi 3 Model B là thế hệ thứ 3 của gia đình Raspberry Pi, ra mắt vào tháng 2 năm 2016, đi kèm với bộ xử lý lõi tứ 64 bit, WiFi, Bluetooth và USB trên một board mạch Thiết bị này có tốc độ xử lý từ 700 MHz đến 1.4 GHz và bộ nhớ RAM từ 256 đến 1GB CPU của Raspberry Pi 3 là bộ não của thiết bị, chịu trách nhiệm thực thi các câu lệnh dựa trên hoạt động toán học và logic Cấu hình của Raspberry Pi 3 có nhiều thay đổi đáng kể, bao gồm 10 phần chính.
Chip SOC (System On Chip) Broadcom BCM2837 là trái tim của thiết bị, hoạt động ở tốc độ lên đến 1.4 GHz, mang lại hiệu suất vượt trội so với các thế hệ trước Với sức mạnh tương đương các loại chip được sử dụng trong smartphone phổ thông hiện nay, chip này hoàn toàn có khả năng chạy hệ điều hành Linux một cách mượt mà Điểm nổi bật của chip này là sự tích hợp của nhân đồ họa (GPU) Broadcom, giúp tối ưu hóa hiệu suất đồ họa và mang lại trải nghiệm người dùng tuyệt vời.
VideoCore IV Dual Core GPU (bộ xử lý đồ họa) là một chip tiên tiến khác được tích hợp trong board mạch có chức năng tính toán hình ảnh GPU này đủ mạnh để có thể chơi một số game phổ thông và phát video chuẩn full HD
Raspberry Pi được trang bị 40 ngõ GPIO (General Purpose Input Output), cho phép thiết bị kết nối và tương tác với các thiết bị điện tử khác một cách linh hoạt Các chân đầu ra đầu vào này hoạt động dựa trên chương trình được lập trình sẵn, cho phép xuất tín hiệu ra các thiết bị như đèn LED hoặc đọc tín hiệu vào từ các nút nhấn, công tắc, cảm biến và nhiều thiết bị khác Ngoài ra, các IO này còn hỗ trợ các chuẩn truyền dữ liệu phổ biến như UART, I2C và SPI, giúp mở rộng khả năng kết nối và ứng dụng của Raspberry Pi.
Raspberry Pi được trang bị một số cổng kết nối quan trọng, bao gồm ngõ HDMI để kết nối với màn hình máy tính hoặc tivi có hỗ trợ cổng HDMI, cổng DSI (Display Serial Interface) để kết nối với LCD hoặc màn hình OLED, và ngõ audio 3.5mm để kết nối dễ dàng với loa ngoài hay headphone Tuy nhiên, đối với tivi có cổng HDMI, ngõ âm thanh được tích hợp theo đường tín hiệu HDMI, vì vậy không cần sử dụng ngõ audio này.
Raspberry Pi sở hữu điểm mạnh đáng kể với tích hợp 4 cổng USB 2.0, cho phép người dùng kết nối các thiết bị ngoại vi cần thiết như chuột, bàn phím, USB Wi-Fi và thẻ SD để lưu trữ hệ điều hành Các cổng USB này được tích hợp trực tiếp trên board mạch, hỗ trợ khởi động thiết bị một cách tiện lợi Một ưu điểm đáng chú ý của Raspberry Pi 3 là khả năng chạy hệ điều hành Linux mà không cần cài đặt thêm driver, cho phép người dùng sử dụng ngay sau khi cắm bàn phím và chuột vào.
Cổng Ethernet là một tính năng quan trọng được tích hợp trên thiết bị này, cho phép thiết lập đường giao tiếp với các thiết bị khác một cách dễ dàng và nhanh chóng Với cổng Ethernet, bạn có thể kết nối Internet một cách mượt mà và ổn định Để bắt đầu sử dụng, chỉ cần cắm dây mạng vào thiết bị, kết nối với màn hình máy tính hoặc tivi và thêm bàn phím, chuột là bạn đã có thể lướt web một cách dễ dàng và tiện lợi.
Raspberry Pi không tích hợp ổ cứng, thay vào đó nó sử dụng khe cắm thẻ nhớ SD để lưu trữ dữ liệu Toàn bộ hệ điều hành Linux sẽ hoạt động trên thẻ nhớ SD này, giúp cho việc lưu trữ và truy xuất dữ liệu trở nên dễ dàng và linh hoạt hơn.
SD này vì vậy nó cần kích thước thẻ nhớ tối thiểu 4GB và dung lượng hỗ trợ tối đa là 32 GB
Cổng CSI (Camera Serial Interface): Cổng này dùng để kết nối với module camera riêng của Raspberry Pi Module này thu được hình ảnh chất lượng lên đến 1080p
Để cung cấp nguồn điện cho bo mạch, bạn cần sử dụng nguồn micro USB 5V, 2.5A (tối thiểu là 1A) thông qua đầu nối nguồn điện cơ bản Khi thiết lập nguồn cho board mạch, bạn có thể sử dụng nhiều nguồn khác nhau, nhưng ưu tiên kết nối cáp nguồn qua cổng USB của máy tính xách tay để cung cấp nguồn 5 V ổn định và an toàn.
Raspberry Pi 3 sở hữu đặc điểm nổi trội so với các phiên bản trước đó là được tích hợp thêm khả năng kết nối wifi, cho phép người dùng truy cập mạng internet không dây một cách dễ dàng và linh hoạt Ngoài ra, tính năng bluetooth cũng được tích hợp trên thiết bị này, mang đến trải nghiệm kết nối không dây toàn diện hơn.
Hình 2.14 Các cổng kết nối ngoại vi
Hình 2.15 Sơ đồ chân của Raspberry Pi 3
Hệ điều hành Raspbian Linux là lựa chọn chính thức cho Pi 3, nhưng thiết bị này cũng có thể chạy các hệ điều hành khác như RISC OS, OSMC, Windows 10 IoT Core và Ubuntu MATE Mặc dù Windows 10 có thể chạy tốt trên máy tính để bàn, nhưng trải nghiệm chạy Windows 10 trên Pi 3 lại hoàn toàn khác biệt Phiên bản Windows 10 chạy trên Pi 3 không phải là phiên bản đầy đủ, mà là Windows 10 IoT Core, chỉ cho phép chạy một ứng dụng toàn màn hình duy nhất tại một thời điểm, nhưng vẫn hỗ trợ một số phần mềm chạy trên background.
Việc lựa chọn Windows 10 trên Raspberry Pi 3 không phải là lựa chọn tối ưu, vì nó đòi hỏi nhiều sức mạnh xử lý hơn mức cần thiết so với các hệ điều hành khác Tuy nhiên, Raspberry Pi 3 là một thiết bị 64 bit mạnh mẽ, có khả năng chạy hệ điều hành Raspbian một cách mượt mà Hiện tại, Pi Foundation cũng đang nỗ lực sửa đổi hệ điều hành Raspbian để nó có thể tương thích với các thiết bị 32 bit đã được giới thiệu từ trước.
CÀI ĐẶT HỆ ĐIỀU HÀNH CHO KIT RASPBERRY PI 3
2.5.1 Thiết bị cần dùng để cài đặt
Thẻ nhớ SD dung lượng tối thiểu là 8GB, Class 4
Máy tính cá nhân để điều khiển từ xa
Nguồn điện 5V, 2.5A (tối thiểu là 1A)
2.5.2 Cài đặt hệ điều hành Raspbian
Để bắt đầu, bạn cần tải bản cài đặt Raspbian Stretch with desktop mới nhất về máy tính và giải nén Hãy truy cập trang web chính thức của Raspberry Pi tại địa chỉ www.raspberrypi.org để tải phiên bản hệ điều hành phù hợp với nhu cầu của bạn.
Hình 2.16 Hệ điều hành Raspbian stretch
Bước 2: Tải phần mềm SD Card Formatter và cài đặt
Chúng ta dùng phần mềm này để định dạng thẻ nhớ SD Sau khi đã cài đặt hoàn thành, ta mở phần mềm và định dạng thẻ
Bước 3: Tải phần mềm Win32 Disk Imager và cài đặt
Sau khi cài đặt xong, bạn mở phần mềm và chọn đường dẫn đến file chứa hệ điều hành Raspbian Stretch, sau đó chọn Write để bắt đầu quá trình cài đặt Quá trình này sẽ diễn ra trong vài phút, và khi nhận được thông báo hoàn thành, bạn đã thành công cài đặt hệ điều hành vào thẻ nhớ.
Hình 2.18 Phần mềm Win32 Disk Imager
2.5.3 Điều khiển Raspberry Pi 3 từ xa bằng cách remote máy tính
Để bắt đầu cấu hình Raspberry Pi, hãy gắn thẻ nhớ vào máy tính và truy cập vào ổ đĩa SD có tên là Boot Tại đây, mở file cmdline.txt và thêm địa chỉ IP của Raspberry Pi, ví dụ "ip=192.168.137.2", vào cuối dòng chữ Sau đó, lưu lại thay đổi để hoàn tất bước cấu hình ban đầu.
Hình 2.20 Thêm địa chỉ IP của Raspberry Pi
Bước 2: Gắn thẻ nhớ vào kit Raspberry Pi 3, kết nối dây mạng Ethernet giữa máy tính với kit và cấp nguồn
Bước 3: Tải phần mềm Putty vào máy tính và cài đặt:
Mở phần mềm Putty, nhập địa chỉ của kit Raspberry Pi
Hình 2.21 Nhập địa chỉ IP của Raspberry pi
Sau đó, cho phép chuyển tiếp X11
Hình 2.22 Chuyển tiếp X11 qua SSH
To access the Raspberry Pi's command line interface, click Open and enter the default username 'pi' and password 'raspberry' Next, install xrdp by running the command 'sudo apt-get install xrdp' to enable remote desktop functionality.
Bước 5: Sau khi cài đặt xong, chúng ta mở Remote Desktop và nhập địa chỉ ip của Raspberry và kết nối
Hình 2.24 Sử dụng Remote Desktop
Bước 6: Sau khi đã kết nối, chúng ta đăng nhập bằng cách nhập username và password như bình thường
Hình 2.25 Nhập username và password
Bước 7: Cuối cùng ta đã kết nối được màn hình Raspberry và làm việc bình thường
Hình 2.26 Giao diện của hệ điều hành Raspbian Stretch
CÀI ĐẶT THƯ VIỆN CHO RASPBERRY PI 3
Bước 1: Mở rộng hệ thống tập tin
Sau khi khởi động lại, hệ thống tập tin cần được mở rộng để tận dụng toàn bộ không gian có sẵn trên thẻ nhớ micro-SD Chúng ta có thể xác minh rằng đĩa đã được mở rộng thành công bằng cách thực hiện lệnh df -h và kiểm tra đầu ra.
Khi cài đặt OpenCV cùng với các phụ thuộc của nó, bạn sẽ cần khoảng vài gigabyte dung lượng trong quá trình biên dịch Để giải phóng không gian trên Raspberry Pi, bạn nên xóa các công cụ Wolfram không cần thiết Việc này sẽ giúp bạn tiết kiệm không gian lưu trữ và đảm bảo quá trình cài đặt OpenCV diễn ra suôn sẻ.
$ Sudo apt-get purge wolfram-engine
Sau khi gỡ bỏ Wolfram Engine, có thể phục hồi gần 700MB
Bước 2: Những cài đặt ràng buộc
Bước đầu tiên là cập nhật và nâng cấp các gói:
Sau đó chúng ta cần phải cài đặt một số công cụ phát triển, bao gồm cả CMake, giúp cấu hình quá trình xây dựng OpenCV:
$ sudo apt-get install build-essential cmake pkg-config
Để tải các định dạng tệp hình ảnh khác nhau từ đĩa, chúng ta cần cài đặt một số gói ảnh I/O quan trọng Các gói này cho phép chúng ta xử lý các định dạng tệp hình ảnh phổ biến như JPEG, PNG, TIFF và nhiều định dạng khác.
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Tương tự như các gói I/O hình ảnh, chúng ta cũng cần các gói I/O video để đọc và xử lý các định dạng tệp video khác nhau từ đĩa cũng như làm việc trực tiếp với các luồng video Các thư viện này đóng vai trò quan trọng trong việc hỗ trợ các ứng dụng đa phương tiện bằng cách cung cấp khả năng truy cập và thao tác video hiệu quả.
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
Thư viện OpenCV đi kèm với mô đun phụ highgui, cho phép hiển thị hình ảnh lên màn hình và xây dựng các giao diện người dùng cơ bản Để sử dụng mô đun này, cần phải cài đặt thư viện phát triển GTK.
$ sudo apt-get install libgtk2.0-dev
Nhiều hoạt động bên trong OpenCV (cụ thể là hoạt động ma trận) có thể được tối ưu hóa hơn nữa bằng cách cài đặt một vài phụ thuộc:
$ sudo apt-get install libatlas-base-dev gfortran
Những thư viện tối ưu hóa này rất quan trọng đối với các thiết bị hạn chế nguồn lực như Raspberry Pi
Cuối cùng, cài đặt Python 2.7 để biên dịch OpenCV với các ràng buộc Python:
$ sudo apt-get install python2.7-dev
Bước 3: Tải mã nguồn OpenCV
Bây giờ chúng ta cài đặt OpenCV 3.1.0 và giải nén:
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
Để cài đặt đầy đủ OpenCV 3 và tận dụng các tính năng như SIFT và SURF, chúng ta cần tải xuống tập tin chứa opencv_contrib.
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
Trước khi biên dịch OpenCV trên Raspberry Pi 3, chúng ta cần phải cài đặt pip, một trình quản lý gói Python:
$ wget https://bootstrap.pypa.io/get-pip.py
Để cài đặt môi trường ảo, bạn có thể sử dụng lệnh `$ sudo python get-pip.py` Môi trường ảo là một công cụ đặc biệt giúp quản lý các yêu cầu phụ thuộc của từng dự án một cách riêng biệt Bằng cách tạo ra các môi trường Python độc lập, môi trường ảo giúp giữ các yêu cầu phụ thuộc ở các vị trí riêng biệt, mang lại sự tiện lợi và cần thiết cho quá trình phát triển dự án.
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~ / cache / pip
Mở một thiết bị đầu cuối mới
Tiếp theo, chúng ta hãy tạo ra môi trường ảo Python mà chúng ta sẽ sử dụng để phát triển tầm nhìn máy tính:
Lệnh này sẽ tạo một môi trường ảo Python mới có tên cv bằng Python 2.7 Môi trường ảo cv hoàn toàn độc lập và bị cô lập khỏi phiên bản Python mặc định của Raspbian Stretch, giúp tránh nhầm lẫn khi cài đặt các gói Python.
Hình 2.27 Môi trường ảo CV
Cài đặt NumPy trên Raspberry Pi
Cài đặt NumPy trong môi trường ảo cv:
Bước 5: Biên dịch và cài đặt OpenCV
Một khi đảm bảo rằng đang ở trong môi trường ảo cv, chúng ta thiết lập xây dựng bằng cách sử dụng CMake:
$ cmake -D CMAKE_BUILD_TYPE = RELEASE \
Hình 2.28 Biên dịch OpenCV 3 trong Raspberry Pi 3
-D CMAKE_INSTALL_PREFIX = / usr / local \
-D OPENCV_EXTRA_MODULES_PATH = ~ / opencv_contrib-3.1.0 / modules \
Cuối cùng, chúng ta biên dịch OpenCV: $ make -j4
Từ đó, cài đặt OpenCV 3 trên Raspberry Pi 3:
Bước 6: Kết thúc cài đặt OpenCV trên Raspberry Pi Đối với Python 2.7:
Bước 5 kết thúc mà không có lỗi, OpenCV nên được cài đặt trong / usr/local/lib/python2.7/site-pacakges, xác minh điều này bằng lệnh ls:
$ ls -l /usr/local/lib/python2.7/site-packages/ total 1852
-rw-r r 1 root staff 1895772 Mar 20 20:00 cv2.so
Bước cuối cùng là liên kết OpenCV vào môi trường ảo cv cho Python 2.7:
$ cd ~ / virtualenvs / cv / lib / python2.7 / site-packages /
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
Bước 7: Kiểm tra cài đặt OpenCV 3
Mở một thiết bị đầu cuối mới, thực hiện lệnh nguồn và workon, và cuối cùng là cố gắng nhập các ràng buộc Python + OpenCV:
Hình 2.29 OpenCV 3 đã cài đặt
Cuối cùng, OpenCV 3 đã được cài đặt thành công trên Raspberry Pi 3 trong môi trường Python 2.7
2.6.2 Cài đặt thư viện dlib
Các bước thực hiện như sau:
Bước 1: Cài đặt các điều kiện tiên quyết dlib
Thư viện dlib yêu cầu bốn điều kiện tiên quyết:
Tất cả những điều này có thể được cài đặt qua các lệnh sau:
$ sudo apt-get install build-essential cmake
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libboost-all-dev
Bước 2: Truy cập môi trường ảo Python
Do chúng ta cài đặt OpenCV trên môi trường ảo Python nên cài đặt dlib cũng phải nằm trên môi trường ảo này Lệnh truy cập:
Chúng ta truy cập vào môi trường ảo đã tạo từ trước tên là cv:
Bước 3: Sử dụng pip để cài đặt dlib với các ràng buộc Python
Chúng ta sẽ bắt đầu với NumPy + SciPy cơ bản, tiếp theo là scikit-image, một thư viện thường được sử dụng kết hợp với dlib:
Sau đó chúng ta có thể cài đặt dlib qua pip:
Bước 4: Kiểm tra cài đặt dlib
$ python T ype "help", "copyright", "credits" or "license" for more information
Thư viện dlib đã được cài đặt thành công trên Raspberry Pi 3 trong môi trường Python.
THI CÔNG HỆ THỐNG
SƠ ĐỒ KHỐI HỆ THỐNG
Hình 3.1 Sơ đồ khối hệ thống ảnh (lấy từ camera)
Tính toán tỷ lệ mắt
Trích xuất vùng mắt Đánh dấu cấu trúc khuôn mặt
Phát hiện khuôn mặt Tiền xử lý
Để phát hiện tình trạng buồn ngủ của tài xế, chúng ta có thể thiết lập một hệ thống camera theo dõi khuôn mặt Bằng cách xác định vùng mắt, hệ thống có thể áp dụng tỷ lệ cạnh mắt để xác định xem mắt có đang đóng lại hay không Nếu đôi mắt được phát hiện đã đóng lại trong khoảng thời gian đủ dài, hệ thống sẽ cảnh báo tài xế về nguy cơ buồn ngủ và báo động kịp thời để đảm bảo an toàn.
3.1.1 Ảnh từ camera Để truy cập vào camera, ta cần dùng thư viện imutils giúp làm việc trên OpenCV dễ dàng hơn Ban đầu chương trình sẽ thiết lập kết nối camera hoặc webcam máy tính và lấy từng frame ảnh để xử lý
Quá trình bắt đầu bằng việc tạo vòng lặp vô hạn cho các khung hình trong video Tiếp theo, chúng tôi thực hiện bước tiền xử lý bằng cách chuyển đổi hình ảnh sang màu xám sử dụng câu lệnh OpenCV: gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), giúp chuẩn bị dữ liệu hình ảnh cho các bước xử lý tiếp theo.
3.1.3 Phát hiện khuôn mặt Để tìm khuôn mặt trong hình ảnh ta cần chuyển ảnh màu thành ảnh xám Sau đó nhìn vào mỗi pixel đơn lẻ và các điểm xung quanh nó Mục tiêu là tìm ra được độ tối của điểm ảnh hiện tại so với các điểm ảnh xung quanh Sau đó vẽ một mũi tên chỉ ra hướng mà hình ảnh trở nên tối hơn
Quá trình này được lặp lại cho từng pixel đơn trong ảnh, tạo ra một hình ảnh mới với mỗi pixel được thay thế bằng một mũi tên Những mũi tên này được gọi là gradients, thể hiện hướng từ sáng đến tối trên toàn bộ hình ảnh, cung cấp thông tin chi tiết về sự thay đổi độ sáng của hình ảnh.
Thay thế các điểm ảnh bằng các gradient là một giải pháp hiệu quả vì khi phân tích pixel trực tiếp, ảnh thật sự tối và thật sự sáng của cùng một người có thể có các giá trị pixel khác nhau Tuy nhiên, khi xem xét hướng thay đổi độ sáng, quá trình này sẽ đảm bảo rằng ảnh thật sự sáng và thật sự tối được diễn tả chính xác khi kết thúc.
Việc lưu trữ gradient cho mỗi pixel có thể cung cấp quá nhiều chi tiết, vì vậy cách tốt hơn là chỉ tập trung vào hướng cơ bản của ánh sáng hay bóng tối ở mức cao hơn để nắm bắt các mẫu cơ bản của hình ảnh Để thực hiện điều này, hình ảnh được chia nhỏ thành các ô vuông nhỏ kích thước 16x16 pixel, sau đó đếm gradient trong mỗi hướng chính trong mỗi hình vuông Hình vuông đó sẽ được thay thế bằng hướng mũi tên mạnh nhất, tạo ra một biểu diễn đơn giản để nắm bắt cấu trúc cơ bản của khuôn mặt Để phát hiện mặt người với các đặc trưng HOG, cần tìm một phần của hình ảnh giống nhất với một mẫu HOG đã biết được trích xuất từ một loạt khuôn mặt đã được huấn luyện.
Bước 1: Chuẩn bị P mẫu là ảnh mặt người
Bước 2: Chuẩn bị N mẫu không phải ảnh mặt người (N rất lớn so với P)
Bước tiếp theo trong quy trình này là áp dụng bộ phân loại SVM tuyến tính để đào tạo các vector của các mẫu tích cực, bao gồm ảnh mặt người, và mẫu tiêu cực, bao gồm các ảnh không phải mặt người đã được chuẩn bị sẵn.
Bước 4: Đối với mỗi bức ảnh trong bộ ảnh tiêu cực, áp dụng kỹ thuật cửa sổ trượt để quét qua tất cả các vị trí có thể của ảnh Nếu mô hình phân lớp xác định sai một cửa sổ là ảnh mặt, hãy lưu lại vector tương ứng cùng với xác suất phân lớp tương ứng.
Bước 5 là giai đoạn quan trọng trong quá trình huấn luyện mô hình phân lớp Tại đây, chúng ta sẽ lấy các mẫu nhận dạng sai từ bước 4 và sắp xếp chúng theo mức xác suất nhận dạng sai Sau đó, bộ phân lớp sẽ được học lại sử dụng các mẫu sai này, giúp cải thiện độ chính xác và hiệu suất của mô hình.
Để phát hiện vị trí khuôn mặt trong ảnh, chúng tôi áp dụng bộ phân lớp đã được học lại với các ảnh cần phát hiện mặt người, đồng thời tận dụng hệ thống phát hiện khuôn mặt của thư viện dlib để tìm kiếm và xác định chính xác vị trí khuôn mặt.
3.1.4 Đánh dấu cấu trúc khuôn mặt
Sau đó, thuật toán đánh dấu cấu trúc với 68 điểm trên vùng mặt của thư viện dlib được áp dụng để xác định vị trí từng khu vực quan trọng trên khuôn mặt, bao gồm mày, mắt, mũi, miệng và đường viền khuôn mặt.
3.1.5 Trích xuất vùng mắt và tính toán tỷ lệ mắt
Vì đề tài tập trung vào trạng thái của mắt nên ta chỉ cần quan tâm đến vùng mắt
Tỷ số mắt là khoảng không đổi trong khi mắt mở, nhưng sẽ nhanh chóng giảm xuống không khi một nháy mắt diễn ra
Để phát hiện trạng thái ngủ gật, chúng ta có thể dựa vào tỷ lệ khoảng cách mốc thời gian mà không cần áp dụng các kỹ thuật xử lý hình ảnh phức tạp Quá trình này bắt đầu bằng việc thiết lập một ngưỡng mắt để xác định trạng thái mắt nhắm hay mắt mở Nếu tỷ số mắt nhỏ hơn ngưỡng mắt trong một khoảng thời gian nhất định, hệ thống sẽ xác định rằng người đó đang ngủ gật và gửi thông báo tới màn hình, giúp phát hiện và cảnh báo trạng thái ngủ gật một cách hiệu quả.
Quá trình phát hiện ngủ gật bắt đầu bằng việc thiết lập các giá trị ban đầu, bao gồm ngưỡng của mắt (NGUONG_MAT) để nhận dạng trạng thái mắt nhắm hay mở, biến đếm (DEM) để tổng số khung liên tiếp mà người đó đã nhắm mắt, và số khung hình (SO_KHUNG_HINH) để nhận biết tài xế đang tỉnh táo hay đang bắt đầu ngủ gật Ban đầu, cảnh báo đang tắt (CANH_BAO = False).
Quá trình phát hiện tình trạng ngủ gật được thực hiện thông qua việc kiểm tra tỷ số mắt EAR đã được tính toán có nằm dưới ngưỡng NGUONG_MAT hay không Nếu tỷ số mắt EAR nhỏ hơn ngưỡng NGUONG_MAT, biến DEM sẽ tăng lên Khi DEM vượt quá giá trị SO_KHUNG_HINH đã được đặt trước, hệ thống sẽ giả định rằng người đó đang ngủ gật và kích hoạt cảnh báo Ngược lại, nếu tỷ số mắt lớn hơn ngưỡng mắt hoặc tổng số khung hình mắt nhắm liên tiếp không vượt quá SO_KHUNG_HINH, hệ thống sẽ thiết lập lại giá trị DEM ban đầu về 0 và tắt cảnh báo.
Sau khi đã xác định tài xế có ngủ gật, ta sẽ cho phép ALARM_ON ở trạng thái
KẾT QUẢ
Kết quả của quá trình phát hiện ngủ gật được thể hiện ở hình 3.2, trong đó vùng mắt của đối tượng được đánh dấu rõ ràng Sau khi xử lý và phát hiện ra trạng thái ngủ gật, hệ thống sẽ thông báo trên màn hình với chữ "NGU GAT" và đồng thời phát ra âm thanh cảnh báo từ loa.
Hình 3.2 Phát hiện ngủ gật
Chương 4 KẾT QUẢ VÀ NHẬN XÉT VẤN ĐỀ NGHIÊN CỨU
Hình 4.1 Phát hiện khuôn mặt
Hình 4.2 Đánh dấu 68 điểm của khuôn mặt
Hình 4.3 Phát hiện trạng thái mắt ở nhiều trường hợp
Hình 4.4 Phát hiện ngủ gật vào ban ngày không đeo kính
Hình 4.5 Phát hiện ngủ gật vào ban ngày có đeo kính
Hình 4.6 Phát hiện ngủ gật vào ban đêm không đeo kính
NHẬN XÉT VẤN ĐỀ NGHIÊN CỨU
Để đánh giá và nhận xét một cách thực tế, chúng tôi đã phân tích ảnh ngủ gật ở nhiều góc độ và trường hợp khác nhau, bao gồm cả hình ảnh của người ở các góc thẳng, nghiêng, mắt nhắm, mắt mở, đeo kính, không đeo kính, trong điều kiện đủ ánh sáng, thiếu ánh sáng, ban ngày và ban đêm, nhằm cung cấp cái nhìn tổng quan và chính xác về kết quả đánh giá.
Bảng 4.1 Kết quả nhận dạng trạng thái mắt với trường hợp góc thẳng
Góc thẳng Đủ ánh sáng Thiếu ánh sáng
Có kính Không kính Có kính Không kính
Kết quả nhận dạng trạng thái của mắt trong trường hợp khuôn mặt đối diện với camera cho thấy độ chính xác tương đối cao và tương đồng ở cả hai trường hợp đủ ánh sáng và thiếu ánh sáng Đặc biệt, khi người không đeo kính, hệ thống đạt độ chính xác rất cao, trên 90% Tuy nhiên, khi người có đeo kính, độ chính xác giảm xuống trung bình khoảng 80% do hệ thống gặp khó khăn trong việc nhận biết mắt và chỉ sử dụng bộ dự đoán để vẽ mí mắt.
Bảng 4.2 Kết quả nhận dạng trạng thái mắt với trường hợp góc nghiêng
Góc nghiêng Đủ ánh sáng Thiếu ánh sáng
Có kính Không kính Có kính Không kính
Kết quả nhận dạng trạng thái của mắt trong các trường hợp khuôn mặt xoay nhiều góc khác nhau không quá 45 được thể hiện ở bảng 4.2 Độ chính xác nhận dạng đạt gần như tương đồng ở cả hai trường hợp đủ ánh sáng và thiếu ánh sáng Trong đó, trường hợp người không đeo kính đạt độ chính xác tương đối cao, trong khi trường hợp người có đeo kính cho kết quả thấp hơn Đặc biệt, kết quả nhận dạng trạng thái nhắm hay mở của mắt cũng cho thấy sự khác biệt đáng kể, với độ chính xác nhận dạng mắt mở đạt trên 95%, trong khi nhận dạng mắt nhắm chỉ đạt trên 80% khi không đeo kính và trên 60% khi có đeo kính.
Kết quả kiểm tra cho thấy hệ thống phát hiện ngủ gật đạt độ chính xác cao trong điều kiện ánh sáng ban ngày Tuy nhiên, vào ban đêm, độ chính xác giảm do thiếu ánh sáng Ngoài ra, hệ thống yêu cầu khuôn mặt phải ở vị trí chính diện, không vượt quá góc 30 độ để đảm bảo độ chính xác Việc đeo kính cũng có thể gây khó khăn trong việc nhận dạng và đánh dấu mắt, đặc biệt là vào ban đêm, điều này có thể ảnh hưởng nghiêm trọng đến độ chính xác của hệ thống phát hiện ngủ gật Khoảng cách lý tưởng giữa camera và mắt người để đạt được độ chính xác cao nhất là dưới 1 mét.
Việc sử dụng kính có ảnh hưởng đáng kể đến quá trình phát hiện ngủ gật Đặc biệt, khi đối tượng sử dụng kính trong suốt, hệ thống có thể dễ dàng phát hiện mắt và xử lý tình huống Tuy nhiên, với những loại kính râm hoặc kính chống nắng, việc nhận dạng mắt trở nên khó khăn, dẫn đến hạn chế trong việc phát hiện ngủ gật.