SlideShare ist ein Scribd-Unternehmen logo
1 von 84
Downloaden Sie, um offline zu lesen
BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
ỨNG DỤNG XỬ LÝ ẢNH VÀO VIỆC
PHÁT HIỆN NGỦ GẬT DÙNG KIT RASPBERRY
GVHD: Th.s Nguyễn Duy Thảo
SVTH1: Nông Văn Tân
MSSV: 13141299
SVTH2: Trần Thị Mỹ Khiêm
MSSV: 13141147
Tp. Hồ Chí Minh - 01/2018
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
ỨNG DỤNG XỬ LÝ ẢNH VÀO VIỆC
PHÁT HIỆN NGỦ GẬT DÙNG KIT RASPBERRY
GVHD: Th.s Nguyễn Duy Thảo
SVTH: Nông Văn Tân
MSSV: 13141299
SVTH: Trần Thị Mỹ Khiêm
MSSV: 13141147
Tp. Hồ Chí Minh - 01/2018
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ Độc lập – Tự do – Hạnh phúc
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
TP. Hồ Chí Minh, ngày 01 tháng 01 năm 2018
BẢNG MÔ TẢ CÔNG VIỆC
Họ tên sinh viên 1: Nông Văn Tân MSSV: 13141299
Lớp: 13141DT2C
Họ tên sinh viên 2: Trần Thị Mỹ Khiêm MSSV: 13141147
Lớp: 13141DT1D
Tên đề tài: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry
1. MÔ TẢ MỤC TIÊU CỦA ĐỀ TÀI:
Đề tài sẽ đi tìm hiểu kit Raspberry, kiến thức xử lý ảnh, kỹ thuật nhận dạng và
xây dụng bài toán phát hiện ngủ gật.
2. MÔ TẢ CÔNG VIỆC THỰC HIỆN ĐỀ TÀI CỦA TỪNG SINH VIÊN:
Họ tên Sinh viên 1: Nông Văn Tân
Các công việc thực hiện trong đề tài:
STT NỘI DUNG CÔNG VIỆC
1 Tìm kiếm tài liệu về lập trình Python, OpenCV.
2 Cài đặt hệ điều hành và thư viện liên quan.
3 Viết chương phát hiện ngủ gật.
4 Viết báo cáo.
Họ tên Sinh viên 2: Trần Thị Mỹ Khiêm
Các công việc thực hiện trong đề tài:
STT NỘI DUNG CÔNG VIỆC
1 Tìm kiếm tài liệu về lập trình Python, OpenCV.
2 Tìm kiếm lý thuyết nhận dạng, phát hiện.
3 Viết và chỉnh sửa báo cáo.
SINH VIÊN 1 SINH VIÊN 2
(Ký ghi rõ họ tên) (Ký ghi rõ họ tên)
Nông Văn Tân Trần Thị Mỹ Khiêm
XÁC NHẬN CỦA GIẢNG VIÊN HƯỚNG DẪN
(Ký ghi rõ họ tên)
Th.s Nguyễn Duy Thảo
TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TP. HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC
KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH
Tp. HCM, ngày 01 tháng 01 năm 2018
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Nông Văn Tân MSSV: 13141299
Trần Thị Mỹ Khiêm MSSV: 13141147
Chuyên ngành: Điện tử công nghiệp – y sinh Mã ngành: 01
Hệ đào tạo: Đại học chính quy Mã hệ: 1
Khóa: 2013 Lớp: 13141DT2C
I. TÊN ĐỀ TÀI: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit
Raspberry
II. NHIỆM VỤ
1. Các số liệu ban đầu:
 1 bộ kit Raspberry Pi 3.
 1 camera.
 1 loa
 Các hình ảnh cần xử lý.
2. Nội dung thực hiện:
 Tìm hiểu về xử lý ảnh.
 Tìm hiểu về kit Raspberry Pi.
 Các kỹ thuật nhận dạng.
 Phát hiện ngủ gật bằng Raspberry Pi.
 Viết báo cáo.
III. NGÀY GIAO NHIỆM VỤ: 25/9/2017
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 15/01/2018
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Th.s Nguyễn Duy Thảo
CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP-Y SINH
Th.s Nguyễn Duy Thảo
TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TP. HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC
KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
Tp. HCM, ngày 01 tháng 01 năm 2018
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên 1: Nông Văn Tân
Lớp: 13141DT2C MSSV: 13141299
Họ tên sinh viên 2: Trần Thị Mỹ Khiêm
Lớp: 13141DT MSSV: 13141147
Tên đề tài: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry
Tuần/ngày Nội dung
Xác nhận
GVHD
Tuần 1 Nhận đề tài
Tuần 2 Tìm hiểu nội dung liên quan đề tài:
- Xử lý ảnh
- Raspberry
- Các ngôn ngữ lập trình
Tuần 3 → 5 Tìm hiểu và cài đặt hệ điều hành cho Raspberry
Pi 3.
Chạy các chương trình đơn giản kiểm tra kit
Raspberry đã cài đặt thành công.
Tuần 6 → 10 Tìm hiểu tài liệu về ngôn ngữ Python, OpenCV
Tìm hiểu về các thuật toán nhận dạng
Tuần 10 → 13 Xây dựng chương trình phát hiện và nhận dạng
khuôn mặt.
Tuần 14+15 Xây dựng chương trình phát hiện ngủ gật.
Tuần 16 → 20 Viết báo cáo.
Tuần 21 Chỉnh sửa và hoàn thành báo cáo.
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
Th.s Nguyễn Duy Thảo
i
LỜI CAM ĐOAN
Đề tài này là do chúng tôi tự thực hiện dưới sự hướng dẫn của Th.s Nguyễn Duy
Thảo và dựa vào một số tài liệu, đề tài trước đó và không sao chép từ tài liệu hay công
trình đã có trước đó.
Người thực hiện đề tài 1 Người thực hiện đề tài 2
Nông Văn Tân Trần Thị Mỹ Khiêm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii
LỜI CẢM ƠN
Trong thời gian thực hiện luận văn nhóm sinh viên thực hiện đề tài đã được
học hỏi nhiều kiến thức bổ ích trong giáo trình và thực tế từ thầy cô. Qua đây em
xin gửi lời cảm ơn chân thành đến:
Quý thầy cô trong khoa điện điện tử của trường Đại Học Sư Phạm Kỹ Thuật
Thành phố Hồ Chí Minh đã truyền đạt kiến thức, những kinh nghiệm quý báu trong
chuyên môn cũng như trong các lĩnh vực khác. Sự tận tụy say mê, lòng nhân ái,
nhiệt tình của thầy cô là động lực lớn giúp chúng em trau dồi thêm kiến thức giúp
chúng em vượt qua khó khăn trong học tập cũng như trong cuộc sống.
Chúng em xin gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Duy Thảo
đã giúp đỡ và hướng dẫn chúng em hoàn thành đồ án tốt nghiệp này.
Đồng thời cũng cảm ơn đến tất cả các bạn bè đã gắn bó và giúp đỡ nhau
trong học tập cũng như trong suốt quá trình thực hiện đồ án tốt nghiệp.
Xin chân thành cảm ơn!
Nhóm thực hiện đề tài
Nông Văn Tân
Trần Thị Mỹ Khiêm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii
MỤC LỤC
LỜI CAM ĐOAN ............................................................................................................i
LỜI CẢM ƠN .................................................................................................................ii
MỤC LỤC......................................................................................................................iii
DANH MỤC HÌNH.......................................................................................................vi
DANH MỤC BẢNG ...................................................................................................viii
TÓM TẮT......................................................................................................................ix
Chương 1. TỔNG QUAN......................................................................................... 2
1.1. ĐẶT VẤN ĐỀ............................................................................................... 2
1.2. MỤC TIÊU ĐỀ TÀI...................................................................................... 2
1.3. NỘI DUNG NGHIÊN CỨU ......................................................................... 3
1.4. GIỚI HẠN..................................................................................................... 3
1.5. BỐ CỤC ........................................................................................................ 3
Chương 2. CƠ SỞ LÝ THUYẾT.............................................................................. 4
2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH.................................................................. 4
2.1.1. Giới thiệu về xử lý ảnh [1]...................................................................... 4
2.1.2. Các thành phần cơ bản của hệ thống ảnh................................................ 6
2.1.3. Các vấn đề cơ bản trong xử lý ảnh.......................................................... 7
2.1.3.1. Ảnh và điểm ảnh............................................................................... 7
2.1.3.2. Độ phân giải của ảnh ........................................................................ 7
2.1.3.3. Mức xám của ảnh.............................................................................. 8
2.1.3.4. Biến đổi ảnh...................................................................................... 8
2.2. GIẢI THUẬT ADABOOST [5].................................................................... 9
2.3. ĐẶC TRƯNG HAAR-LIKE [5]................................................................. 11
2.4. GIẢI THUẬT FACIAL LANDMARKS .................................................... 15
2.4.1. Giới thiệu về Facial Landmarks [6] ...................................................... 15
2.4.2. Tìm hiểu về bộ phát hiện dấu mốc trên khuôn mặt của dlib [6] ........... 16
2.5. KHOẢNG CÁCH EUCLIDE [7]............................................................... 17
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iv
2.6. PYTHON..................................................................................................... 18
2.6.1. Giới thiệu sơ lược về Python................................................................. 18
2.6.2 Các đặc điểm của ngôn ngữ python...................................................... 19
2.6.3. Ứng dụng của Python............................................................................ 22
2.7. THƯ VIỆN DLIB........................................................................................ 23
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ ............................................................... 25
3.1. TỔNG QUAN VỀ KIT RASPBERRY PI 3 ............................................... 26
3.1.1. Giới thiệu tổng quan.............................................................................. 26
3.1.2. Cấu tạo phần cứng của kit Raspberry Pi 3............................................ 27
3.1.3. Hệ điều hành của kit Raspberry Pi 3..................................................... 29
3.2. CÀI ĐẶT HỆ ĐIỀU HÀNH CHO KIT RASPBERRY PI 3........................ 30
3.2.1. Thiết bị cần dùng để cài đặt .................................................................. 30
3.2.2. Cài đặt hệ điều hành Raspbian.............................................................. 30
3.2.3. Điều khiển Raspberry Pi 3 từ xa bằng cách remote máy tính............... 33
3.3. CÀI ĐẶT THƯ VIỆN CHO RASPBERRY PI 3......................................... 37
3.3.1. Cài đặt OpenCV .................................................................................... 37
3.3.2. Cài đặt thư viện dlib.............................................................................. 44
Chương 4. THI CÔNG HỆ THỐNG ...................................................................... 47
4.1. SƠ ĐỒ KHỐI HỆ THỐNG......................................................................... 47
4.1.1. Ảnh từ camera....................................................................................... 48
4.1.2. Tiền xử lý .............................................................................................. 48
4.1.3. Phát hiện khuôn mặt dùng HOG........................................................... 48
4.1.4. Đánh dấu cấu trúc khuôn mặt dùng Facial Landmarks......................... 50
4.1.5. Trích xuất vùng mắt .............................................................................. 50
4.1.6. Tính toán tỷ lệ mắt ................................................................................ 50
4.1.7. Phát hiện ngủ gật................................................................................... 52
4.1.8. Cảnh báo................................................................................................ 53
Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ................................................. 55
5.1. Kết quả ........................................................................................................ 55
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH v
5.2. Nhận xét....................................................................................................... 57
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................ 61
6.1. KẾT LUẬN ................................................................................................. 61
6.1.1. Ưu điểm................................................................................................. 61
6.1.2. Nhược điểm........................................................................................... 62
6.2. HƯỚNG PHÁT TRIỂN.............................................................................. 62
6.2.1. Hướng khắc phục .................................................................................. 62
6.2.2. Hướng phát triển ................................................................................... 63
TÀI LIỆU THAM KHẢO............................................................................................. 64
PHỤ LỤC...................................................................................................................... 65
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vi
DANH MỤC HÌNH
Hình Trang
Hình 2.1: Các bước cơ bản trong xử lý ảnh.....................................................................4
Hình 2.2: Các thành phần cơ bản của hệ thống xử lý ảnh ...............................................6
Hình 2.3: Độ phân giải của ảnh........................................................................................7
Hình 2.4: Sự khác nhau giữa ảnh màu và ảnh xám..........................................................8
Hình 2.5: Ảnh trước khi cân bằng Histogram..................................................................9
Hình 2.11: Mô hình phân tầng các bộ phận loại yếu .......................................................10
Hình 2.12: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh. ...............................11
Hình 2.13: Đặc trưng theo cạnh .......................................................................................11
Hình 2.14: Đặc trưng theo đường ....................................................................................12
Hình 2.15: Đặc trưng theo xung quanh tâm.....................................................................12
Hình 2.16: Đặc trưng theo đường chéo............................................................................12
Hình 2.17: Cách tính Integral Image của ảnh ..................................................................13
Hình 2.18: Cách tính tổng giá trị pixel vùng cần tính......................................................14
Hình 2.19: Hệ thống phát hiện khuôn mặt.......................................................................17
Hình 2.20: 68 tọa độ đánh dấu cấu trúc khuôn mặt từ tập dữ liệu iBUG 300-W ............23
Hình 3.1: Sơ đồ khối hệ thống .........................................................................................25
Hình 3.2: Bo mạch Raspberry Pi 3 ..................................................................................26
Hình 3.3: Các cổng giao tiếp ngoại vi..............................................................................28
Hình 3.4: Sơ đồ chân của Raspberry Pi 3 ........................................................................29
Hình 3.5: Hệ điều hành Raspbian Stretch........................................................................31
Hình 3.6: Phần mềm SD Card Formatter.........................................................................32
Hình 3.7: Phần mềm Win32 Disk Imager........................................................................33
Hình 3.8: Vào ổ đĩa Boot .................................................................................................33
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vii
Hình 3.9: Thêm địa chỉ IP của Raspberry vào file cmdline.text......................................34
Hình 3.10: Nhập địa chỉ ip của Raspberry Pi...................................................................34
Hình 3.11: Chuyển tiếp X11 ............................................................................................35
Hình 3.12: Cài đặt xrdp bằng lệnh ...................................................................................36
Hình 3.13: Mở Remote Desktop và kết nối .....................................................................36
Hình 3.14: Nhập usename và password...........................................................................37
Hình 3.15: Giao diện của hệ điều hành Raspbian Stretch................................................37
Hình 3.16: Môi trường ảo cv............................................................................................41
Hình 3.17: Biên dịch OpenCV 3 trên Raspbian Stretch thành công................................42
Hình 3.18: Xác nhận OpenCV 3 đã cài đặt thành công...................................................44
Hình 4.1: Sơ đồ khối hệ thống .........................................................................................47
Hình 4.2: Đánh dấu mắt 6 điểm .......................................................................................51
Hình 4.3: Hình ảnh của mốc đánh dấu mắt khi mắt mở, mắt nhắm và tỉ lệ.....................52
Hình 4.4: Phát hiện ngủ gật..............................................................................................54
Hình 5.1: Phát hiện khuôn mặt.........................................................................................55
Hình 5.2: Đánh dấu 68 điểm của khuôn mặt dùng giải thuật Facial Landmarks.............55
Hình 5.3: Hình 5.2: Phát hiện trạng thái mắt ở nhiều trường hợp. ..................................56
Hình 5.4: Phát hiện ngủ gật vào ban ngày không đeo kính .............................................56
Hình 5.5: Phát hiện ngủ gật vào ban ngày có đeo kính....................................................56
Hình 5.6: Phát hiện ngủ gật vào ban đêm không đeo kính ..............................................57
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH viii
DANH MỤC BẢNG
Bảng 5.1 Kết quả nhận dạng trạng thái mắt với trường hợp góc thẳng.................... 58
Bảng 5.1 Kết quả nhận dạng trạng thái mắt với trường hợp góc nghiêng................ 59
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ix
TÓM TẮT
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 đề tài cần được quan tâm và phát triển. Từ những
nghiên cứu ban đầu về ảnh trắng đen, ảnh xám, ảnh màu, xử lý ảnh đã được nghiên
cứu chuyên sâu và ứng dụng rất nhiều trong cuộc sống. Bên cạnh đó, 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
đề tài 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 đồ án này, chúng tôi cố gắng tìm ra các thuật toán đáp
ứng trong thời gian thực, 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ế. Chúng tôi 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 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 Haar-like; 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.
CHƯƠNG 1 TỔNG QUAN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2
Chương 1. TỔNG QUAN
1.1. ĐẶT VẤN ĐỀ
Cùng với sự phát triển ngày càng mạnh mẽ của khoa học kĩ thuật trong một vài
thập kỷ gần đây. Xử lý ảnh tuy là một ngành khoa học còn tương đối mới mẻ so với
nhiều ngành khoa học khác nhưng hiện nay nó đang là một trong những lĩnh vực phát
triển rất nhanh và thu hút sự quan tâm đặc biệt từ các nhà khoa học, thúc đẩy các trung
tâm nghiên cứu, ứng dụng về lĩnh vực hấp dẫn này. Xử lý ảnh đóng vai trò quan trọng
trong nhiều ứng dụng thực tế về khoa học kĩ thuật cũng như trong cuộc sống thường
ngày như: sản xuất và kiểm tra chất lượng, sự di chuyển của Robot, các phương tiện đi
lại tự trị, công cụ hướng dẫn cho người mù, an ninh và giám sát, nhận dạng đối tượng,
nhận dạng mặt, các ứng dụng trong y học, sản xuất, hiệu chỉnh video…
Thời gian gần đây, sự phổ biến và hiện quả sử dụng của kit Raspberry Pi vào
các ứng dụng trong khoa học kỹ thuật đã thôi thúc nhóm nghiên cứu ứng dụng kit
Raspberry Pi vào xử lý ảnh. Với đặc điểm như một máy tính thu nhỏ có kích thước xấp
xỉ chiếc điện thoại cầm tay, chạy hệ điều hành mở, được trang bị bộ vi xử lý mạnh mẽ,
mức tiêu thụ điện năng thấp, giá thành rẻ, cho phép ta có thể cấu hình cho kit
Raspberry Pi như một máy tính xử lý các bài toán.
Nhận thấy điều này, nhóm chúng em quyết định chọn đề tài “Ứng dụng kit
Raspberry vào xử lý ảnh” nhằm đưa ra một số giải pháp xử lý ảnh để có thể áp dụng
vào đời sống.
1.2. MỤC TIÊU ĐỀ TÀI
Đề tài là bước đầu tìm hiểu những ứng dụng của xử lý ảnh trong thực tế, đồng
thời cũng là bước triển khai những kiến thức đã được học. Thông qua việc nghiên cứu
và làm việc nghiêm túc để rèn luyện tác phong, cũng như hoàn thiện phương pháp, tư
duy nghiên cứu, giải quyết một vấn đề. Với những mục tiêu của đề tài hướng đến là:
 Tìm hiểu những kiến thức về xử lý ảnh.
CHƯƠNG 1 TỔNG QUAN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3
 Tìm hiểu về kỹ thuật nhận dạng.
 Tìm hiểu kit Raspberry Pi 3.
 Xây dựng chương trình phát hiện ngủ gật trên kit Raspberry Pi 3.
1.3. NỘI DUNG NGHIÊN CỨU
 NỘI DUNG 1: Tìm hiểu những kiến thức cơ bản về xử lý ảnh, kit Raspberry Pi 3,
ngôn ngữ lập trình Python…
 NỘI DUNG 2: Tìm hiểu về các kỹ thuật, thuật toán nhận dạng.
 NỘI DUNG 3: Cài đặt hệ điều hành, thư viện cần thiết cho kit Raspberry Pi 3.
 NỘI DUNG 4: Viết chương trình phát hiện ngủ gật.
 NỘI DUNG 5: Đánh giá kết quả thực hiện.
 NỘI DUNG 6: Viết luận văn.
1.4. GIỚI HẠN
Đặc tính của hệ thống xử lý ảnh thông thường bị ảnh hưởng bởi nhiều yếu tố.
Trong điều kiện thực tế cho phép nhóm thực hiện đề tài trong một số điều kiện giới
hạn sau:
 Điều kiện thu nhận hình ảnh vào ban ngày và ban đêm khác nhau, cho nên nhóm
chỉ tìm hiểu trong điều kiện ánh sáng ổn định đạt kết quả tốt hơn.
 Đối với việc nhận dạng, thì khoảng cách từ camera đến đối tượng dưới 1.2 mét,
trên khoảng cách này thì việc nhận dạng có thể không được chính xác.
 Do hạn chế về thời gian do đó nhóm chỉ tập trung vào xử lý các bài toán xử lý ảnh
đơn giản và một vài ứng dụng phổ biến trên kit Raspberry Pi.
1.5. BỐ CỤC
Như vậy, với các yêu cầu về nhiệm vụ và mục tiêu đề ra, luận văn được xây
dựng bao gồm các chương sau:
 Chương 1: Tổng quan
Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung
nghiên cứu, các giới hạn đề tài và bố cục đồ án.
CHƯƠNG 1 TỔNG QUAN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4
 Chương 2: Cơ sở lý thuyết.
Chương này trình bày giới thiệu tổng quan về tổng quan về xử lý ảnh, các thư
viện sử dụng; tìm hiểu lý thuyết các thuật toán nhận dạng: giải thuật Adaboost, đặc
trưng Haar-like, giải thuật Facial Landmarks, khoảng cách Euclide…
 Chương 3: Tính toán thiết kế.
Chương này trình bày tổng quan về kit Raspberry Pi 3, cách cài đặt hệ điều
hành và thư viện cho kit.
 Chương 4: Thi công hệ thống
Chương này trình bày về các chương trình và xây dụng bài toán phát hiện ngủ
gật trên kit Raspberry Pi 3.
 Chương 5: Kết quả, nhận xét và đánh giá
Trình bày kết quả đạt được sau khi thực hiện, đánh giá, nhận xét những gì đã
đạt và chưa đạt những gì so với mục tiêu đề ra.
 Chương 6: Kết luận và hướng phát triển
Đưa ra kết luận về việc thực hiện đồ án, đồng thời đưa ra hướng phát triển để có
được một đề tài hoàn thiện và đáp ứng được nhu cầu cho cuộc sống hiện đại như ngày
nay.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH
2.1.1. Giới thiệu về xử lý ảnh [1]
Trong những năm gần đây, xử lý ảnh là một nghành khoa học mới mẻ nhưng
tốc độ phát triển nhanh chóng và được nghiên cứu, phát triển bởi các trung tâm nghiên
cứu, các trường đại học.v.v. Và với rất nhiều ứng dụng khác nhau.
Các phương pháp xử lý ảnh bắt đầu từ những ứng dụng chính như: nâng cao
chất lượng độ sáng và độ phân giải của ảnh, phân tích ảnh. Ứng dụng đầu tiên được
biết đến đó chính là nâng cao chất lượng hình ảnh báo được truyền qua cáp từ Luân
Đôn đến New York từ những năm 1920. Càng về sau, nhờ sự xuất hiện và phát hiện
mạnh mẽ của máy tính đã tạo điều kiện cho các quá trình thực hiện các thuật toán xử
lý ảnh được nâng cao và phát triển hơn. Các ứng dụng của xử lý ảnh càng được ứng
dụng rộng rãi trong nhiều lĩnh vực khác nhau như: khôi phục hình ảnh, chỉnh sửa, điều
chỉnh độ phân giải; trong lĩnh vực y tế; trong do thám, thám hiểm; truyền và mã hóa;
thị giác máy tính, robot; xử lý màu; lĩnh vực nhận dạng.v.v.
Các bước cần thiết trong xử lý ảnh. Trước đây, hình ảnh được thu từ camera là
các ảnh tương tự. Gần đây, với sự phát triển không ngừng của công nghệ, ảnh màu
hoặc ảnh đen trắng được lấy từ camera, sau đó được chuyển trực tiếp qua ảnh số để dễ
dàng cho các bước xử lý tiếp theo. Dưới đây sẽ mô tả về các bước trong xử lý ảnh.
Hình 2.1: Các bước cơ bản trong xử lý ảnh.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 5
Thu nhận ảnh: Ảnh được nhận qua camera màu hoặc trắng đen. Thông thường ảnh
được nhận qua camera, video, máy scan.v.v.
Tiền xử lý: Sau bộ thu nhận ảnh, hình ảnh có thể có độ tương phản thấp nên cần đưa
vào bộ tiền xử lý để nâng cao chất lượng hình ảnh. Bộ tiền xử lý có chức năng lọc
nhiễu, nâng độ tương phản để làm cho ảnh rõ hơn và sắc nét hơn.
Phân đoạn ảnh: Còn gọi là phân vùng ảnh. Là tách một ảnh đầu vào 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.
Biểu diễn ảnh và mô tả ảnh: Ảnh đã được phân loại chứa nhiều điểm ảnh của vùng
ảnh. Việc biến đổi các số liệu này thành dạng thích hợp cho việc xử lý tiếp theo của
máy tính. Chúng ta phải tìm các vùng đặc trưng của ảnh, tách các đặc tính của ảnh dưới
dạng các thông tin định lượng hoặc để làm cơ sở cho sự phân biệt giữa lớp đối tượng
này với lớp đối tượng khác trong phạm vi của ảnh mà chúng ta nhận được.
Nhận dạng và nội suy ảnh: Nhận dạng ảnh là quá trình xác định ảnh. Bằng cách so
sánh mẫu với mẫu chuẩn đã được lưu trữ từ trước. Nội suy là phán đoán theo ý nghĩa
trên cơ sở nhận dạng. Các mô hình toán học về ảnh được phân loại với hai dạng cơ bản:
 Nhận dạng theo tham số.
 Nhận dạng theo cấu trúc.
Cơ sở tri thức: Như đã biết, ảnh là một đối tượng phức tạp về đường nét, độ sáng tối,
dung lượng điểm ảnh. Trong nhiều quá trình xử lý và phân tích ảnh. Ngoài việc đơn
giản hóa các phương pháp toán học để đảm bảo tiện lợi cho xử lý, người ta mong muốn
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. Cho
nên, cơ sở tri thức được phát huy và được xử lý theo pháp trí tuệ con người ở nhiều
khâu khác nhau.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 6
2.1.2. Các thành phần cơ bản của hệ thống ảnh
Hình 2.2: Các thành phần cơ bản của hệ thống xử lý ảnh.
Bộ phận thu nhận ảnh: Máy quay (Camera), máy quét (scaners) chuyên dụng, các bộ
cảm biến ảnh.
Phần cứng xử lý ảnh chuyên dụng: Bộ số hóa (chuyển đổi ảnh truyền thống từ bên
ngoài thành dạng dữ liệu số mà máy tính có thể hiểu được). Phần cứng thực hiện các
thao tác cơ bản để nâng cao tốc độ xử lý ảnh.
Máy tính: 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 để phục vụ và sử dụng cho quá
trình xử lý hiện tại. Lưu trữ vĩnh viễn là lưu trữ dữ diệu, truy cập không thường xuyên.
Bộ phận hiện thị: Màn hình máy tính...
In ấn: Ghi lại ảnh: máy in, máy chiếu...
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 7
2.1.3. Các vấn đề cơ bản trong xử lý ảnh [1]
2.1.3.1. Ảnh và điểm ảnh
Ảnh số là một tập hợp nhiều điểm ảnh, mỗi điểm ảnh được gọi là một pixel.
Điểm ảnh là một phần tử của ảnh số tại tọa độ (x, y) biểu diễn một màu sắc nhất định
(có thể là độ xám với ảnh đen trắng). Mỗi điểm ảnh được xem như là một chấm nhỏ li
ti trong một tấm ảnh. Bằng phương pháp đo lường và thống kê một lượng lớn các điểm
ảnh, chúng ta có thể tái cấu trúc các điểm ảnh này thành một ảnh mới gần giống với
ảnh ban đầu.
2.1.3.2. Độ phân giải của ảnh
Độ phân giải của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được
hiện thị. Khoảng cách giữa các điểm ảnh sao cho mắt người vẫn thấy được sự liên tục
của ảnh. Độ phân giải được phân bố theo trục x và y trong không gian hai chiều. Với
cùng một ảnh, độ phân giải càng cao thì ảnh càng chứa nhiều thông tin và sắc nét hơn.
Ví dụ như hình bên dưới.
Hình 2.3: Độ phân giải của ảnh.
Ở hình a có độ phân giải là 960x640 pixels, hình b có độ phân giải là 220x147
pixels. Cho thấy rằng, với độ phân giải càng cao thì độ sắc nét của ảnh càng cao và
hình ảnh càng rõ nét.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 8
2.1.3.3. Mức xám của ảnh
Một điểm ảnh có hai đặc trưng cơ bản đó chính là vị trí (x, y) của điểm ảnh và
độ xám của ảnh. Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá
trị số tại thời điểm đó.
Hình 2.4: Sự khác nhau giữa ảnh màu và ảnh xám.
Với hình a là ảnh màu và hình b là ảnh xám.
2.1.3.4. Biến đổi ảnh
Trong xử lý ảnh do số điểm ảnh lớn hơn các tính toán nhiều (độ phức tạp tính
toán cao) đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu. Các phương pháp
khoa học kinh điển áp dụng cho xử lý ảnh hầu như khó khả thi. Người ta sử dụng các
phép toán tương đương hoặc biến đổi sang miền xử lý khác để dể tính toán, sau khi đã
xử lý dể dàng, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổi
thường gặp trong xử lý ảnh bao gồm:
- Biến đổi Fourier, Cosin, Sin.
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker.
- Các biển đổi khác như KL (Karhumen Loeve), Hadamard.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 9
2.2. GIẢI THUẬT ADABOOST [5]
AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận
boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost cũng hoạt động
trên nguyên tắc kết hợp tuyến tính các “weak classifiers” để hình thành một “strong
classifier”.
Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng
số (weight) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi
“weak classifier” được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn
bị cho việc xây dựng “weak classifier” kế tiếp: tăng trọng số của các mẫu bị nhận dạng
sai và giảm trọng số của các mẫu được nhận dạng đúng bởi “weak classifier” vừa xây
dựng. Bằng cách này “weak classifer” sau có thể tập trung vào các mẫu mà các “weak
classifiers” trước nó làm chưa tốt. Sau cùng, các “weak classifers” sẽ được kết hợp tùy
theo mức độ tốt của chúng để tạo nên “strong classifier”.
Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc
trưng Haar-like theo mô hình phân tầng (cascade) như sau:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 10
Hình 2.11: Mô hình phân tầng kết hợp các bộ phân loại yếu
Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau:
ℎ𝑘(𝑥) = {
1 𝑛ế𝑢 𝑝𝑘𝑓𝑘(𝑥) < 𝑝𝑘𝜃𝑘
0 𝑛ế𝑢 𝑛𝑔ượ𝑐 𝑙ạ𝑖
(2.6)
x: cửa sổ con cần xét
Ok: ngưỡng (O = teta)
fk: giá trị của đặc trưng Haar-like
pk: hệ số quyết định chiều của phương trình
AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau:
H(x) = sign(a1h1(x) +a2h2(x) + ... + anhn(x)) (a = alpha)
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 11
Với: at >= 0 là hệ số chuẩn hoá cho các bộ phân loại yếu
Hình 2.12: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh
2.3. ĐẶC TRƯNG HAAR-LIKE [5]
Đặc trưng Haar-like được sử dụng trong việc nhận dạng đối tượng trong ảnh số
được phát biểu bởi Viola và Jones gồm 4 đặc trưng cơ bản để xác định một đối tượng
trong ảnh. Mỗi đặc trưng Haar-like là sự kết hợp gồm 2 hoặc 3 khối chữ nhật mang giá
trị “đen” hoặc “trắng”. Những khối chữ nhật này thể hiện sự liên hệ tương quan giữa
các bộ phận trong ảnh mà bản thân từng giá trị pixel không thể diễn đạt được.
Hình 2.13: Đặc trưng theo cạnh
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 12
Hình 2.14: Đặc trưng theo đường
Hình 2.15: Đặc trưng theo xung quanh tâm
Hình 2.16: Đặc trưng theo đường chéo
Dựa theo các đặc trưng trên, giá trị của đặc trưng Haar-like được xây dựng bởi độ
chênh lệch giữa tổng các pixel của các vùng đen so với tổng các pixel của các vùng
trắng.
Dưới đây là công thức tính giá trị đặc trưng Haar-like:
𝑓(𝑥) = ∑ (𝑝𝑖𝑥𝑒𝑙)
𝑣ù𝑛𝑔 đ𝑒𝑛 − ∑ (𝑝𝑖𝑥𝑒𝑙)
𝑣ù𝑛𝑔 𝑡𝑟ắ𝑛𝑔 (2.7)
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 13
Như vậy để tính giá trị đặc trưng Haar-like cần phải thực hiện tính toán tổng các
vùng pixel trên ảnh. Điều này làm cho chi phí bài toán lớn không thể đáp ứng các tính
năng yêu cầu thời gian thực. Do vậy Viola và Jones đã đề xuất ra khái niệm “Integral
Image” để giảm thiểu chi phí cho bài toán tính giá trị của đặc trưng Haar-like để bài
toán có thể xử lý với thời gian thực. Tính “Integral Image” bằng cách sử dụng mảng 2
chiều với kích thước bằng kích thước của ảnh cần tính giá trị đặc trưng Haar-like. Ảnh
chia nhỏ ở vị trí (x, y) được tính bằng tổng các giá trị pixel của vùng từ vị trí (0,0) đến
vị trí (x1, y1). Việc tính toán đơn giản là thực hiện phép cộng số nguyên nên tốc độ
thực hiện được tối ưu hóa.
Hình 2.17: Cách tính Integral Image của ảnh
𝑃(𝑥, 𝑦) = ∑ 𝑖(𝑥′
, 𝑦′)
𝑥′≤𝑥,𝑦′≤𝑦 (2.8)
Kết quả có được sau khi tính Integral Image, việc tính tổng giá trị pixel trong
vùng cần tính thực hiện như sau:
Gọi vùng cần tính tổng các giá trị pixel là vùng “A4”.
𝑃1(𝑥1, 𝑦1) = 𝐴1 (2.9)
𝑃2(𝑥2, 𝑦2) = 𝐴1 + 𝐴2 (2.10)
𝑃3(𝑥3, 𝑦3) = 𝐴1 + 𝐴3 (2.11)
𝑃4(𝑥4, 𝑦4) = 𝐴1 + 𝐴2 + 𝐴3 + 𝐴4 (2.12)
Ta được: 𝐴4 = 𝑃4 + 𝑃1 − 𝑃2 − 𝑃3 (2.13)
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 14
Hình 2.18: Cách tính tổng giá trị pixel vùng cần tính
Hình 2.19: Hệ thống phát hiện khuôn mặt
Từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành nhiều tỉ lệ rất nhỏ để tính các
đặc trưng qua các hàm đặc trưng cơ bản Haar-like. Sau khi tính toán được các hàm đặc
trưng, ta nhận được một số lượng rất lớn các đặc trưng. Thì để lựa chọn và xác định có
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 15
thể là khuôn mặt, ta dùng giải thuật Adaboost để lựa chọn và kết hợp các vùng trọng số
yếu thành trọng số mạnh. Cuối cùng, các vùng đã được lựa chọn sẽ được đưa vào bộ
phân loại “Cascade of classifier” để loại bỏ các vùng không phải khuôn mặt và xác
định vùng nào là khuôn mặt. Và đưa ra kết quả cuối cùng.
2.4. GIẢI THUẬT FACIAL LANDMARKS
Chúng ta sẽ sử dụng dlib và OpenCV để phát hiện các điểm đánh dấu các bộ
phận trên khuôn mặt trong một hình ảnh. Điểm đánh dấu các bộ phận trên khuôn mặt
được sử dụng để định vị và trình bày cho các vùng nổi bật trên mặt, chẳng hạn như:
Mắt, lông mày, mũi, miệng, đường viền khuôn mặt.
2.4.1. Giới thiệu về Facial Landmarks [6]
Facial Landmarks là một tập con của vấn đề dự đoán hình dạng. Với một hình
ảnh ngõ vào (và thông thường là một ROI chỉ định đối tượng quan tâm trong ảnh), một
dự đoán hình dạng cố gắng định vị điểm quan trọng theo hình dạng. Mục tiêu là phát
hiện các cấu trúc khuôn mặt quan trọng trên mặt bằng các phương pháp dự đoán hình
dạng. Việc phát hiện các điểm đánh dấu trên mặt là một quá trình gồm hai bước:
Bước 1: Định vị khuôn mặt trong hình ảnh.
Bước 2: Phát hiện các cấu trúc mặt chính trên mặt ROI.
Phát hiện khuôn mặt (Bước 1) có thể đạt được theo nhiều cách:
- Chúng ta có thể sử dụng thuật toán Haar Cascade được xây dựng trong OpenCV.
- Chúng ta có thể áp dụng một máy phát hiện dùng thuật toán HOG kết hợp Linear
SVM đã được huấn luyện đặc biệt cho nhiệm vụ phát hiện khuôn mặt.
Trong cả hai trường hợp, thuật toán thực tế được sử dụng để phát hiện khuôn mặt
trong hình ảnh mục đích là để thông qua các phương pháp đó chúng tôi có được hộp
bao quanh khuôn mặt (tức là, các tọa độ của (x, y) của khuôn mặt trong hình ảnh).
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16
Khi đã có vùng mặt, chúng ta có thể áp dụng Bước 2 để phát hiện các cấu trúc
mặt chính ở vùng mặt. Có rất nhiều bộ phát hiện các điểm đánh dấu bộ phận trên
khuôn mặt nhưng tất cả các phương pháp chủ yếu là cố gắng để định vị và gắn nhãn
các khu vực mặt sau đây: Miệng, lông mày phải, lông mày trái, mắt phải, mắt trái, mũi,
hàm. Máy phát hiện các dấu mốc trên khuôn mặt trong thư viện dlib là việc thực hiện
tài liệu One Millisecond Face Alignment with an Ensemble of Regression Trees của
Kazemi và Sullivan (2014).
Phương pháp này bắt đầu bằng cách sử dụng tập huấn luyện các điểm đánh dấu
trên khuôn mặt được gắn nhãn trên một hình ảnh. Những hình ảnh này được dán nhãn
theo cách thủ công, chỉ định các tọa độ cụ thể (x, y) của các vùng xung quanh mỗi cấu
trúc mặt. Cụ thể hơn hết là xác suất về khoảng cách giữa các cặp điểm ảnh đầu vào.
Với dữ liệu huấn luyện này, một nhóm các cây hồi qui được đào tạo để ước lượng các
vị trí dấu mốc trên khuôn mặt trực tiếp từ các cường độ điểm ảnh (nghĩa là không có
"trích xuất các đặc trưng" nào đang diễn ra). Kết quả cuối cùng là máy phát hiện điểm
đánh dấu trên mặt có thể được sử dụng để phát hiện trong thời gian thực với các dự
đoán chất lượng cao.
2.4.2. Tìm hiểu về bộ phát hiện dấu mốc trên khuôn mặt của dlib [6]
Bộ phát hiện các dấu mốc trên khuôn mặt đã được huấn luyện trước trong thư
viện dlib được sử dụng để ước tính vị trí của 68 tọa độ (x, y) các cấu trúc mặt trên mặt.
Các chỉ số của 68 tọa độ có thể được hình dung trên hình dưới đây:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 17
Hình 2.20: 68 tọa độ đánh dấu cấu trúc khuôn mặt từ tập dữ liệu iBUG 300-W
Các chú thích này là một phần của bộ dữ liệu iBUG 300-W 68 điểm mà bộ dự
đoán mốc mặt trên dlib đã được huấn luyện. Điều quan trọng cần lưu ý để thêm sinh
động cho máy phát hiện mốc mặt là mô hình điểm 194 có thể được huấn luyện về bộ
dữ liệu HELEN.
Bất kể bộ dữ liệu nào được sử dụng, cùng một khuôn khổ dlib có thể được tận
dụng để đào tạo một dự đoán hình dạng trên dữ liệu huấn luyện đầu vào. Dấu mốc trên
khuôn mặt đã được áp dụng thành công để căn chỉnh mặt, ước tính đầu người, trao đổi
khuôn mặt, phát hiện chớp mắt và nhiều hơn nữa.
2.5. KHOẢNG CÁCH EUCLIDE [7]
Trong toán học, khoảng cách Euclide là khoảng cách giữa hai điểm mà người ta
có thể đo bằng thước, và được tính bằng công thức Pytago.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 18
Khoảng cách Euclide giữa hai điểm A và B là chiều dài đoạn thẳng 𝐴𝐵. Trong
hệ tọa độ Descartes, nếu A = (A1, A2,…, An) và B = (B1, B2,…, Bn) là hai điểm
trong không gian Euclide n chiểu thì khoảng cách từ A đến B bằng:
𝑑(𝐴, 𝐵) = √(𝐴1 − 𝐵1)2 + (𝐴2 − 𝐵2)2 + ⋯ + (𝐴𝑛 − 𝐵𝑛)2 = √∑ (𝐴𝑖 − 𝐵𝑖)2
𝑛
𝑖=1 (2.14)
Dạng chuẩn Euclide là khoảng cách của một điểm đến điểm gốc trong không
gian Euclide:
‖𝐴‖ = √𝐴12 + 𝐴22 + ⋯ + 𝐴𝑛2 = √𝐴. 𝐴
(2.15)
Trong đó phương trình sau cùng là tích vô hướng. Đây là chiều dài của p, khi ta
xem nó là một Véc-tơ Euclide có gốc nằm ở gốc tọa độ. Khoảng cách khi đó bằng:
‖𝐴 − 𝐵‖ = √(𝐴 − 𝐵). (𝐴 − 𝐵) = √‖𝐴‖2 + ‖𝐵‖2 − 2𝐴. 𝐵 (2.16)
2.6. PYTHON
2.6.1. Giới thiệu sơ lược về Python
Python là một ngôn ngữ lập trình hướng đối tượng và rất thông dụng. Bộ thông
dịch có thể được dùng một cách tương tác, làm cho việc thử nghiệm các tính năng của
ngôn ngữ trở nên dễ dàng. Được tạo ra bởi Guido van Rossum tại Amsterdam vào năm
1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động. Python
được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software
Foundation quản lý. Python là một ngôn ngữ lập trình mạnh và dễ học. Python có tính
hiệu quả rất cao với các cấu trúc dữ liệu và đơn giản nhưng lại rất hữu dụng với ngôn
ngữ lập trình hướng đối tượng. Cú pháp Python gọn gàng và có tính năng gõ động,
cùng với tính diễn dịch tự nhiên làm Python là một ngôn ngữ lý tưởng dành cho viết
kịch bản và phát triển ứng dụng nhanh chóng trong nhiều lĩnh vực trên nhiều nền tảng
khác nhau.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19
2.6.2 Các đặc điểm của ngôn ngữ python.
Dễ học, dễ đọc: Python được thiết kế để trở thành một ngôn ngữ dễ học, mã
nguồn dễ đọc, bố cục rõ ràng, dễ hiểu.
Từ khóa: Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu
và cấu trúc, cú pháp so với các ngôn ngữ khác. Python là một ngôn ngữ phân biệt
kiểu chữ HOA, chữ thường.
Khối lệnh: Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng
cặp kí hiệu hoặc từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để
bao bọc một khối lệnh. Ngược lại, Python có một cách rất đặc biệt để tạo khối lệnh,
đó là thụt các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của
khối lệnh cha chứa nó. Ta có thể dùng dấu Tab để thụt các khối lệnh vào để dễ dàng
viết lệnh hơn.
Khả năng mở rộng: Python có thể được mở rộng. Nếu ta biết sử dụng C, ta
có thể dễ dàng viết và tích hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm
này sẽ trở thành hàm xây dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng
chức năng của trình thông dịch, hoặc liên kết các chương trình Python với các thư
viện chỉ ở dạng nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung
cấp). Hơn thế nữa, ta cũng có thể liên kết trình thông dịch của Python với các ứng
dụng viết từ C và sử dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh hỗ
trợ cho ứng dụng đó.
Trình thông dịch: Python là một ngôn ngữ lập trình dạng thông dịch, vì vậy
nên Python tiết kiệm được thời gian phát triển ứng dụng vì không cần phải thực
hiện biên dịch và liên kết. Trình thông dịch có thể được sử dụng để chạy file script,
hoặc cũng có thể được sử dụng theo cách tương tác. Ở chế độ tương tác, trình thông
dịch Python tương tự shell của các hệ điều hành họ Unix. Tại đó, ta có thể nhập vào
từng biểu thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức. Đặc
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20
điểm này rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn
ngữ; hoặc để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển
phần mềm. Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính
như với máy tính bỏ túi.
Lệnh và cấu trúc điều khiển: Mỗi câu lệnh trong Python nằm trên một dòng
mã nguồn. Ta không cần phải kết thúc câu lệnh bằng bất kì kí tự gì. Như các ngôn
ngữ khác, Python cũng có các cấu trúc điều khiển.
Chúng bao gồm:
 Cấu trúc rẽ nhánh: Cấu trúc if (có thể sử dụng thêm elif hoặc else), dùng để thực
thi có điều kiện một khối mã cụ thể.
 Lệnh while: Thực thi lặp đi lặp lại các lệnh hoặc phần thân của vòng lặp miễn là
điều kiện đã cho là true. Khi điều kiện là false, thì điều khiển sẽ thoát ra khỏi vòng
lặp.
 Vòng lặp for: Lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào
biến cục bộ để sử dụng với khối mã trong vòng lặp.
Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng
đối tượng) và lệnh def dùng để định nghĩa hàm.
Hệ thống kiểu dữ liệu: Python sử dụng hệ thống kiểu duck typing, còn gọi là latent
typing (tự động xác định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc
về kiểu dữ liệu tại thời điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu
một thao tác trên một đối tượng bị thất bại, thì có nghĩa là đối tượng đó không sử
dụng một kiểu thích hợp. Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm
mọi thao tác không hợp lệ. Ở Python, ta không cần phải khai báo biến. Biến được
xem là đã khai báo nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần
gán, Python sẽ tự động xác định kiểu dữ liệu của biến.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21
Module: Python cho phép chia chương trình thành các module để có thể sử dụng lại
trong các chương trình khác. Python cũng cung cấp sẵn một tập hợp các modules
chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ. Các module
này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ
thống, trợ giúp lập trình mạng.
Đa năng: Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.
- So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều
cấu trúc hơn.
- So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn nhiều
kiểu dữ liệu cấp cao, ví dụ như các mảng (array) linh hoạt và từ điển
(dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng C.
Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập
trình viên:
 Python thích hợp với các chương trình lớn hơn cả AWK và Perl.
 Python được sử dụng để lập trình Web. Nó có thể được sử dụng như một ngôn
ngữ kịch bản.
 Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong phú,
Python cho phép người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các thành
phần COM hay CORBA, hỗ trợ các loại định dạng dữ liệu Internet như email,
HTML, XML và các ngôn ngữ đánh dấu khác. Python cũng được cung cấp các
thư viện xử lý các giao thức Internet thông dụng như HTTP, FTP,…
 Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả năng xử
lí văn bản, tài liệu hiệu quả, và có thể làm việc tốt với các công nghệ Web khác.
 Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công cụ
Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric
Python, ScientificPython,…
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22
 Python có thể được sử dụng để phát triển các ứng dụng desktop. Lập trình viên
có thể dùng wxPython, PyQt, PyGtk để phát triển các ứng dụng giao diện đồ họa
(GUI) chất lượng cao. Python còn hỗ trợ các nền tảng phát triển phần mềm khác
như MFC, Carbon, Delphi, X11, Motif, Tk, Fox, FLTK, …
 Python cũng có sẵn một unit testing framework để tạo ra các các bộ test (test
suites).
Multiple paradigms (đa biến hóa): Python là một ngôn ngữ đa biến hóa (multiple
paradigms). Có nghĩa là, thay vì ép buộc mọi người phải sử dụng duy nhất một
phương pháp lập trình, Python lại cho phép sử dụng nhiều phương pháp lập trình
khác nhau: hướng đối tượng, có cấu trúc, chức năng, hoặc chỉ hướng đến một khía
cạnh. Python kiểu kiểu động và sử dụng bộ thu gom rác để quản lí bộ nhớ. Một đặc
điểm quan trọng nữa của Python là giải pháp tên động, kết nối tên biến và tên
phương thức lại với nhau trong suốt thực thi của chương trình.
2.6.3. Ứng dụng của Python
Python được ứng dụng trong nhiều lĩnh vực khác nhau:
 Xây dựng các tiện ích nhỏ để tự động hóa các công việc nào đó như: tự động tìm
kiếm, phân loại tập tin theo tiêu chí riêng, tự động cập nhật các tập tin văn bản theo
yêu cầu nào đó…
 Xây dựng ứng dụng web: Python cung cấp nhiều framework để ta có thể lựa chọn
để phát triển ứng dụng web tùy theo mô hình của ứng dụng như: Django, Pyramid,
Flask,…
 Lập trình các tính toán khoa học, số liệu nhờ các công cụ và lớp thư viện được xây
dựng sẵn như: SciPy, IPython,…
 Lập trình ứng dụng desktop (wxWidgets), lập trình màn hình tương tác (Kivy),…
Bên cạnh đó, Python còn là ngôn ngữ lập trình được lựa chọn để giảng dạy về
lập trình các khóa học nhập môn lập trình ở các trường Đại học lớn trên thế giới.
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23
2.7. THƯ VIỆN DLIB
Hình 2.11: Thư viện dlib
Ngoài thư viện OpenCV, chúng tôi còn sử dụng dlib, một thư viện mã nguồn
mở khác cho việc cài đặt hệ thống. Dlib được tạo ra từ 2002 bởi tác giả Davis King,
được viết trên ngôn ngữ lập trình C++.
Khác với mục đích của OpenCV là cung cấp hạ tầng thuật toán cho các ứng
dụng xử lý ảnh và thị giác máy tính, dlib được thiết kế cho các ứng dụng máy học và
trí tuệ nhân tạo với các thư viện con chính như sau:
- Classification: các kỹ thuật phân lớp chủ yếu dựa trên hai phương pháp cơ sở là
kNN và SVM
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24
- Data transformation: các thuật toán biến đổi dữ liệu nhằm giảm số chiều, loại bỏ
các dữ liệu dư thừa và tăng cường tính khác biệt (discriminant) của các đặc điểm
được giữ lại
- Clustering: các kỹ thuật phân cụm
- Regression: các kỹ thuật hồi qui
- Structure prediction: các thuật toán dự đoán có cấu trúc
- Markov Random Fields: các thuật toán dựa trên các trường Markov ngẫu nhiên
Cụ thể trong bài này, phần phát hiện khuôn mặt người một cách tự động sẽ
được lập trình bằng cách sử dụng thư viện dlib với dữ liệu huấn luyện và kỹ thuật hồi
qui đã được cung cấp trước.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25
1. A
Chương 3. TÍNH TOÁN VÀ THIẾT KẾ
Với những yêu cầu của đề tài, nhóm đã hình thành sơ đồ khối của hệ thống như
sau. Hệ thống gồm các thiết bị như: kit Raspberry Pi 3, bàn phím, màn hình, HD
webcam C310.
Hình 3.1: Sơ đồ kết nối hệ thống.
Kit Raspberry: là khối xử lý trung tâm, có chức năng xử lý tín hiệu nhận được
từ bàn phím và camera. Sau đó xuất tín hiệu, kết quả ra màn hình.
Bàn phím: Có chức năng để lập trình, điều khiển kit Rasberry.
Camera: Có chức năng lấy dữ liệu cần xử lý.
Loa: Có chức năng thông báo, cảnh báo bằng âm thanh khi phát hiện được có
ngủ gật.
Màn hình: Có chức năng hiện thị kết quả.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26
3.1. TỔNG QUAN VỀ KIT RASPBERRY PI 3
3.1.1. Giới thiệu tổng quan
Raspberry Pi được phát triển đầu tiên vào năm 2012. Raspberry Pi ban đầu là
như một thẻ card được cắm trên bo mạch máy tính được phát triển bởi các nhà phát
triển ở Anh. Sau đó Raspberry Pi đã đượ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. Được phát
triển bởi Raspberry Pi Foundation – là tổ chức phi lợi nhuận với tiêu chí xây dựng hệ
thống mà nhiều người có thể sử dụng được trong những công việc tùy biến khác nhau.
Raspberry Pi sản xuất bởi 3 OEM: Sony,Qsida, Egoman. Và được phân phối chính bởi
Element14, RS Components và Egoman.
Mặc dù chậm hơn so với các dòng laptop, máy tính hiện đại nhưng Raspberry
Pi vẫn được xem là máy tính Linux hoàn chỉnh và có thể cung cấp tất cả các khả năng
mà người dùng mong đợi, với mức tiêu thụ năng lượng thấp.
Hình 3.2: Bo mạch Raspberry Pi 3
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27
3.1.2. Cấu tạo phần cứng của kit Raspberry Pi 3
Raspberry Pi 3 Model B là thế hệ thứ 3 và mới nhất tính đến thời điểm hiện tại
của gia đình Raspberry Pi, nó ra đời vào tháng 2 năm 2016. Cấu hình Raspberry Pi 3
có khá nhiều thay đổi. Raspberry Pi 3 gồm 10 phần chính:
Chip SOC (System On Chip) Broadcom BCM 2837: chạy ở tốc độ 1.2 GHz,
được nâng cấp hơn rất nhiều so với các thế hệ trước. Chip này tương đương với nhiều
loại được sử dụng trong smartphone phổ thông hiện nay, và có thể chạy được hệ điều
hành Linux. Tích hợp trên chip này là nhân đồ họa (GPU) Broadcom VideoCore IV
Dual Core. GPU này đủ mạnh để có thể chơi một số game phổ thông và phát video
chuẩn full HD.
40 ngõ GPIO (General Purpose Input Output): Giống như các chân của vi điều
khiển, các IO này của Raspberry Pi cũng được sử dụng để xuất tín hiệu ra led, thiết
bị… hoặc đọc tín hiệu vào từ các nút nhấn, công tắc, cảm biến… Ngoài ra còn có các
IO tích hợp các chuẩn truyền dữ liệu UART, I2C và SPI.
Ngõ HDMI: dùng để kết nối Pi với màn hình máy tính hay tivi có hỗ trợ cổng
HDMI.
Cổng DSI (Display Serial Interface): Cổng này dùng để kết nối với LCD hoặc
màn hình OLED.
Ngõ audio 3.5mm: Kết nối dễ dàng với loa ngoài hay headphone. Đối với tivi
có cổng HDMI, ngõ âm thanh được tích hợp theo đường tín hiệu HDMI nên không cần
sử dụng ngõ audio này.
Cổng USB: Một điểm mạnh nữa của Pi là tích hợp 4 cổng USB 2.0. Đủ để cắm
các ngoại vi cần thiết như chuột, bàn phím và usb wifi.
Cổng Ethernet: Cho phép kết nối Internet dễ dàng. Cắm dây mạng vào Pi, kết
nối với màn hình máy tính hay tivi và bàn phím, chuột là bạn có thể lướt web dễ dàng.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28
Khe cắm thẻ nhớ SD: Raspberry Pi không tích hợp ổ cứng. Thay vào đó nó có
thể dùng thẻ SD để lưu trư dữ liệu. Toàn bộ hệ điều hành Linux sẽ hoạt động trên thẻ
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.
Jack nguồn micro USB 5V, 2.5A (tối thiểu là 1A).
Ngoài ra, Raspberry Pi 3 có đặc điểm nổi trội hơn các phiên bản trước là có tích
hợp thêm wifi để có thể kết nối mạng internet không dây và bluetooth 4.1.
Hình 3.3: Các cổng giao tiếp ngoại vi
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29
Hình 3.4: Sơ đồ chân của Raspberry Pi 3
3.1.3. Hệ điều hành của kit Raspberry Pi 3
Có 5 phiên bản hệ điều hành được cung cấp chính thức cho Raspberry Pi:
Raspian "wheezy": Đây là distro dựa trên Debian wheezy, sử dụng hard-float
ABI (tính toán dấu chấm động bằng phần cứng) cho thời gian chạy các ứng dụng
nhanh hơn với giao diện LXDE (thay vì GNOME). Có đầy đủ web browser, media
player, tools, etc … Nói chung này dành cho những người muốn dùng Raspberry Pi
như một cái PC.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30
Soft-float "wheezy": Vẫn được xây dựng dựa trên Debian wheezy nhưng việc
xử lý dấu chấm động được thực hiện bằng phần mềm. Việc này giúp bạn có thể sử
dụng máy ảo Java (Oracle JVM) trên Raspberry.
Arch Linux: Phiên bản giành cho ARM. Đảm bảo thời gian khởi động trong
vòng 10 giây. Chỉ khởi động và load các gói cần thiết. Để sử dụng được Arch Linux
bạn cần có kiến thức cơ bản về Linux.
Pidora: Là phiên bản của Fedora được tối ưu cho RPi, có sẵn giao diện đồ họa.
Giành cho những ai đã quen xài Fedora.
RISC OS: Là hệ điều hành do nhóm phát triển ARM thiết kế riêng. Đây không
phải là một phiên bản Linux, do vậy bạn cần làm quen với cấu trúc và câu lệnh đặc
trưng cho hệ điều hành này.
Ngoài ra còn nhiều hệ điều hành khác bạn có thể cài đặt: Raspbmc, Android...
3.2. CÀI ĐẶT HỆ ĐIỀU HÀNH CHO KIT RASPBERRY PI 3 [8]
3.2.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.
 Dây mạng.
 Nguồn điện 5V, 2.5A (tối thiểu là 1A).
3.2.2. Cài đặt hệ điều hành Raspbian
Bước 1: Tải bản cài đặt về máy tính và giải nén.
Chúng ta sẽ vào trang www.raspberrypi.org và tải phiên bản mới nhất đó là hệ
điều hành Raspbian Stretch with desktop.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31
Hình 3.5: 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ẻ.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32
Hình 3.6: Phần mềm SD Card Formatter
Bước 3: Tải phần mềm Win32 Disk Imager và cài đặt.
Khi cài đặt xong. Chúng ta mở phần mềm, chọn đường dẫn đến file chứa hệ
điều hành Raspbian Stretch và chọn Write. Chờ báo hoàn thành là đã xong bước cài hệ
điều hành vào thẻ nhớ.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33
Hình 3.7: Phần mềm Win32 Disk Imager.
3.2.3. Điều khiển Raspberry Pi 3 từ xa bằng cách remote máy tính
Bước 1: Gắn thẻ nhớ vào máy tính sẽ xuất hiện ổ đĩa SD tên là Boot, vào Boot và mở
file cmdline.text và thêm vào cuối dòng chữ: “ip=192.168.137.2” và lưu lại. Ở đây
192.168.137.2 là địa chỉ của Raspberry Pi (có thể đặt số khác với yêu cầu khác số 1).
Hình 3.8: Vào ổ đĩa Boot
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34
Hình 3.9: Thêm địa chỉ IP của Raspberry vào file cmdline.text
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 3.10: Nhập địa chỉ ip của Raspberry Pi
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35
Sau đó, cho phép chuyển tiếp X11
Hình 3.11: Chuyển tiếp X11
Bước 4: Sau khi nhấn Open, ta sẽ truy cập được vào màn hình command line của
Raspberry Pi, sau đó nhập username và password (mặc định là pi và raspberry).
Sau đó cài đặt xrdp bằng lệnh : sudo apt-get install xrdp
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36
Hình 3.12: Cài đặt xrdp bằng lệnh
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 3.13: Mở Remote Desktop và kết nối.
Bước 6: Sau khi đã kết nối, chúng ta đăng nhập bằng cách nhập usename và password
như bình thường.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37
Hình 3.14: Nhập usename 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 3.15: Giao diện của hệ điều hành Raspbian Stretch.
3.3. CÀI ĐẶT THƯ VIỆN CHO RASPBERRY PI 3 [8]
3.3.1. Cài đặt OpenCV
Bước 1: Mở rộng hệ thống tập tin
$ sudo raspi-config
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38
$ sudo reboot
Sau khi khởi động lại, hệ thống tập tin cần được mở rộng bao gồm tất cả các
không gian có sẵn trên thẻ nhớ micro-SD. Chúng ta xác minh rằng đĩa đã được mở
rộng bằng cách thực hiện df-h và kiểm tra đầu ra.
OpenCV, cùng với tất cả các phụ thuộc của nó, sẽ cần một vài gigabyte trong
quá trình biên dịch, vì vậy nên xóa các công cụ Wolfram để giải phóng một số không
gian trên Pi:
$ 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:
$ sudo apt-get update
$ sudo apt-get upgrade
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
Tiếp theo, chúng ta cần phải cài đặt một số gói ảnh I/O cho phép chúng ta tải
các định dạng tệp hình ảnh khác nhau từ đĩa. Ví dụ về định dạng tệp như JPEG, PNG,
TIFF, vv ..:
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Cũng 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ác thư
viện này cho phép đọc 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:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39
$ sudo apt-get install libxvidcore-dev libx264-dev
Thư viện OpenCV đi kèm với một mô đun phụ có tên highgui được sử dụng để
hiển thị hình ảnh lên màn hình của chúng tôi và xây dựng các GUI cơ bản. Để biên
dịch mô đun highgui, 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:
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
Chúng ta sẽ cài đặt đầy đủ OpenCV 3 (để có quyền truy cập vào các tính năng
như SIFT và SURF), vì vậy chúng ta cũng cần lấy tập tin chứa opencv_contrib:
$ wget -O opencv_contrib.zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
Bước 4: Python 2.7
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40
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
$ sudo python get-pip.py
Cài đặt môi trường ảo. Môi trường ảo là một công cụ đặc biệt được sử dụng để
giữ các yêu cầu phụ thuộc vào các dự án khác nhau ở các vị trí riêng biệt bằng cách tạo
ra các môi trường Python độc lập, độc lập cho mỗi môi trường ảo nên sử dụng môi
trường ảo sẽ tiện lợi và cần thiết.
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~ / .cache / pip
Mở một thiết bị đầu cuối mới
$ source ~ / .profile
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:
$ mkvirtualenv cv -p python2
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 Python hoàn toàn độc lập và bị cô lập từ phiên bản Python
mặc định được tải xuống của Raspbian Stretch. Bất kỳ gói Python nào trong thư mục
các gói trang web toàn cầu sẽ không có sẵn cho môi trường ảo cv. Tương tự như vậy,
bất kỳ gói Python nào được cài đặt trong gói trang web của cv sẽ không có sẵn cho
việc cài đặt toàn cầu của Python. Điều này sẽ giúp chúng ta tránh nhầm lẫn.
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41
Hình 3.16: 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:
$ pip install numpy
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:
$ cd ~ / opencv-3.1.0 /
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE = RELEASE
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42
-D CMAKE_INSTALL_PREFIX = / usr / local 
-D INSTALL_PYTHON_EXAMPLES = ON 
-D OPENCV_EXTRA_MODULES_PATH = ~ / opencv_contrib-3.1.0 / modules 
-D BUILD_EXAMPLES = ON ..
Cuối cùng, chúng ta biên dịch OpenCV:
$ make -j4
Hình 3.17: Biên dịch OpenCV 3 trên Raspbian Stretch thành công.
Từ đó, cài đặt OpenCV 3 trên Raspberry Pi 3:
$ sudo make install
$ sudo ldconfig
Bước 6: Kết thúc cài đặt OpenCV trên Raspberry Pi
Đối với Python 2.7:
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43
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:
$ workon cv
$ python
>>> import cv2
>>> version cv2 .____
'3.1.0'
>>>
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44
Hình 3.18: Xác nhận OpenCV 3 đã cài đặt thành công.
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
3.3.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:
1. Boost
2. Boost.Python
3. Cmake
4. X11
Tất cả những điều này có thể được cài đặt qua các lệnh sau:
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45
$ sudo apt-get update
$ 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:
$ workon <tên virtualenv>
Chúng ta truy cập vào môi trường ảo đã tạo từ trước tên là cv:
$ workon 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:
$ pip install numpy
$ pip install scipy
$ pip install scikit-image
Sau đó chúng ta có thể cài đặt dlib qua pip:
$ pip install dlib
Bước 4: Kiểm tra cài đặt dlib
$ python
Type "help", "copyright", "credits" or "license" for more information.
>>> import dlib
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46
Thư viện dlib đã được cài đặt thành công trên Raspberry Pi 3 trong môi trường
Python 2.7
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47
Chương 4. THI CÔNG HỆ THỐNG
4.1. SƠ ĐỒ KHỐI HỆ THỐNG
Hình 4.1: Sơ đồ khối hệ thống
Ảnh (từ camera)
Tiền xử lý
Phát hiện khuôn mặt
dùng giải thuật
Adaboost
Đánh dấu cấu trúc
khuôn mặt dùng Facial
Landmarks
Trích xuất vùng mắt
Tính toán tỷ lệ mắt
Phát hiện ngủ gật
Cảnh báo
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48
Trước tiên, ta sẽ thiết lập một camera theo dõi khuôn mặt. Để phát hiện một
người có buồn ngủ hay không, ta chỉ cần vùng mắt. Một khi đã có vùng mắt, ta có thể
áp dụng tỷ lệ cạnh mắt để xác định xem mắt có đóng lại hay không. Nếu đôi mắt đã
được đóng lại trong khoảng thời gian đủ dài, ta có thể giả định rằng tài xế có nguy cơ
buồn ngủ và báo động kịp thời để thu hút sự chú ý của tài xế.
4.1.1. Ảnh từ camera
Để truy cập vào camera, ta cần dùng thư viện imutils – một bộ các chức năng
xử lý hình ảnh 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ý.
4.1.2. Tiền xử lý
Chúng tôi bắt đầu vòng lặp vô hạn các khung hình trong video. Sau đó tiến
hành bước tiền xử lý bằng cách thay đổi kích thước nó để có chiều rộng là 450 pixel và
chuyển sang màu xám với câu lệnh trong OpenCV: gray=cv2.cvtColor(frame,
cv2.COLOR_BGR2GRAY)
4.1.3. Phát hiện khuôn mặt dùng HOG
Để 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.
Lặp lại quá trình đó cho mỗi pixel đơn trong ảnh, quá trình sẽ kết thúc 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 và
chúng thể hiện hướng từ sáng đến tối trên toàn bộ hình ảnh.
Lý do để thay thế các điểm ảnh bằng các gradient là nếu 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 sẽ có các giá trị pixel khác
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49
nhau. Nhưng khi xem xét về hướng thay đổi độ sáng thì khi kết thúc quá trình ảnh thật
sự sáng và thật sự tối sẽ cùng được diễn tả chính xác.
Việc lưu trữ gradient cho mỗi pixel sẽ cho quá nhiều chi tiết nên tốt hơn là chỉ
cần nhìn thấy hướng cơ bản của ánh sáng hay bóng tối ở mức cao hơn để nhìn thấy các
mẫu cơ bản của hình ảnh. Để thực hiện việc này, thực hiện chia nhỏ hình ảnh thành
những ô vuông nhỏ kích thước 16x16 pixel. Trong mỗi hình vuông đó, thực hiện đếm
gradient trong mỗi hướng chính (bao nhiêu điểm lên, điểm lên phải, điểm lên trái,
điểm xuống…). Sau đó thay thế hình vuông đó trong hình ảnh bằng hướng mũi tên
mạnh nhất. Kết quả cuối cùng là biến hình ảnh ban đầu thành 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 một cách đơn giản.
Để phát hiện mặt người với các đặc trưng HOG, thực hiện tìm một phần của
hình ảnh trong 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, chúng tôi tiến hành các bước sau:
Bước 1: Chuẩn bị P mẫu là ảnh mặt người và trích xuất các vector đặc trưng HOG từ
các bức ảnh này.
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) và trích xuất
các vector HOG từ các ảnh này.
Bước 3: Sử dụng một bộ phân loại SVM tuyến tính để học các vector của các mẫu tích
cực (là ảnh mặt người) và tiêu cực (các ảnh không phải mặt người) đã chuẩn bị.
Bước 4: Đối với mỗi bức ảnh trong bộ ảnh tiêu cực, sử dụng một cửa sổ trượt di
chuyển đi qua tất cả các vị trí có thể của ảnh vào. Tại mỗi vị trí của cửa sổ trượt tính
vector HOG của cửa sổ và đưa vào bộ phân lớp. Nếu bộ phân lớp sai một cửa sổ là ảnh
mặt thì ghi lại vector tương ứng cùng với xác xuất phân lớp.
Bước 5: Lấy các mẫu nhận dạng sai ở bước 4 và sắp xếp chúng theo mức xác xuất
nhận dạng sai và cho bộ phân lớp học lại sử dụng các mẫu sai này.
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50
Bước 6: Á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.
Trong đề tài này, để tìm và phát hiện vị trí khuôn mặt trong ảnh, chúng tôi sử
dụng hệ thống phát hiện khuôn mặt của thư viện dlib:
detector=dlib.get_frontal_face_detector().
4.1.4. Đánh dấu cấu trúc khuôn mặt dùng Facial Landmarks
Bước tiếp theo là áp dụng 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 để định vị từng khu vực quan trọng trên khuôn mặt. Các khu vực
đó bao gồm: mày, mắt, mũi, miệng và đường viền khuôn mặt.
Sau đó, chuyển đổi kết quả sang mảng NumPy.
4.1.5. Trích xuất vùng 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.
Sử dụng phương pháp cắt mảng NumPy, chúng ta có thể trích xuất các tọa độ (x, y)
của mắt trái và mắt phải.
4.1.6. Tính toán tỷ lệ mắt
Với các tọa độ của (x, y) cho cả hai mắt, ta sẽ tính tỷ lệ mắt, trong bài báo của
Soukupová và Čech khuyến nghị sử dụng cả hai tỷ lệ cạnh mắt để có được ước tính tốt.
Mỗi mắt được đại diện bởi 6 tọa độ (x, y), bắt đầu từ góc trái của mắt (như thể
bạn đang nhìn người đó), và sau đó làm việc theo chiều kim đồng hồ xung quanh phần
còn lại của khu vực:
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51
Hình 4.1: Đánh dấu mắt bằng 6 điểm
Có một mối quan hệ giữa chiều rộng và chiều cao của các tọa độ này. Dựa trên
bài báo của Soukupová và Čech trong bài báo năm 2016 [4], chúng ta có thể lấy được
một phương trình phản ánh mối quan hệ này gọi là tỉ số mắt (EAR):
2 6 3 5
1 4
|| || || ||
2|| ||
p p p p
EAR
p p
  

 (4.1)
Trong đó p1đến p6 là các vị trí đánh dấu mốc trên mắt. Tử số của phương trình
này tính khoảng cách giữa các điểm mốc dọc trong khi mẫu số tính khoảng cách giữa
các điểm mốc ngang, trọng số mẫu số bằng 2 là thích hợp vì chỉ có một tập các điểm
ngang mà có hai bộ điểm thẳng đứng.
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.
Sử dụng phương trình đơn giản này, chúng ta có thể tránh các kỹ thuật xử lý
hình ảnh và chỉ đơn giản dựa vào tỷ lệ khoảng cách mốc thời gian để xác định xem
một mắt đang nhắm hay không.
Để làm cho điều này rõ ràng hơn, hãy xem xét các con số sau đây từ Soukupová
và Čech [4]:
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52
Hình 4.3: Hình ảnh của mốc đánh dấu mắt khi mắt mở, mắt nhắm và tỉ lệ
Ở phía trên bên trái của hình, chúng ta có một mắt hoàn toàn mở - tỉ lệ mắt ở
đây sẽ lớn và tương đối ổn định theo thời gian.
Tuy nhiên, một khi mắt nhấp nháy (phía trên bên phải hình) tỷ lệ mắt giảm đáng
kể gần bằng không.
Phát hiện ngủ gật: Đầu tiên chúng ta sẽ thiết lập một ngưỡng mắt để nhận dạng
trạng thái mắt nhắm hay mắt mở. Và chúng ta sẽ chọn ngưỡng mắt là 0,2. Theo báo
cáo năm 2016 trong bài Real-Time Eye Blink Detection using Facial Landmarks
của Tereza Soukupová and Jan Čech [4]. Dó đó, chúng ta chọn ngưỡng mắt là 0,2. Sau đó
chúng ta sẽ kiểm tra tỉ số mắt EAR đã tính toán ở trước đó. Nếu tỉ số mắt nhỏ hơn
ngưỡng mắt trong một khoảng thời gian nào đó thì cho rằng người đó đang ngủ gật và
gửi thông báo tới màn hình. Công việc này sẽ được thực hiện trong suốt quá trình để
phát hiện trạng thái ngủ gật.
4.1.7. Phát hiện ngủ gật
Chúng tôi bắt đầu phát hiện ngủ gật bằng việc thiết lập trước các giá trị:
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53
 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 là tổng số khung liên tiếp mà người đó đã nhắm mắt.
 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.
- Tiếp đến chúng tôi kiểm tra tỷ số mắt EAR đã được tính có dưới ngưỡng
NGUONG_MAT hay không để xác định mắt đóng hoặc mở. Nếu tỷ số mắt EAR
được xác định nhỏ hơn ngưỡng NGUONG_MAT thì tăng biến DEM. Nếu DEM
vượt quá SO_KHUNG_HINH đã đặt trước thì chúng tôi giả định rằng người đó
đang ngủ gật và bắt đầu bậ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 lớn hơn SO_KHUNG_HINH
thì thiết lập lại DEM ban đầu =0 và tắt cảnh báo. Thực hiện lại công việc đó trong
suốt quá trình thu hình để phát hiện tình trạng ngủ gật.
4.1.8. 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
ON và bật âm thanh để cảnh báo.
Để thực sự phát báo động WAV / MP3, chúng tôi cần thư viện pygame. Thư
viện pygame được cài đặt thuận tiện qua pip lệnh “pip install pygame”.
4.2. KẾT QUẢ
CHƯƠNG 4 THI CÔNG HỆ THỐNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54
Hình 4.4: Phát hiện ngủ gật.
Hình 4.4 là kết quả của quá trình phát hiện ngủ gật. Trên hình ảnh, chúng ta có
thể thấy rằng vùng mắt đã được đánh dấu. Sau khi được xử lý và phát hiện được đối
tượng cần xử lý ngủ gật thì sẽ thông báo trên màn hình là chữ “NGU GAT” và âm
thanh sẽ phát ra từ loa.
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55
Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
5.1. Kết quả
Hình 5.1: Phát hiện khuôn mặt
Hình 5.2: Đánh dấu 68 điểm của khuôn mặt dùng giải thuật Facial Landmarks.
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56
Hình 5.3: Phát hiện trạng thái mắt ở nhiều trường hợp.
Hình 5.4: Phát hiện ngủ gật vào ban ngày không đeo kính.
Hình 5.5: Phát hiện ngủ gật vào ban ngày có đeo kính.
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57
Hình 5.6: Phát hiện ngủ gật vào ban đêm không đeo kính.
5.2. Nhận xét
Để đánh giá, nhận xét một cách thực tế, nhóm đã phát hiện ngủ gật ảnh tĩnh ở
nhiều góc độ và trường hợp khác nhau. Nhóm sử dụng các hình ảnh ở nhiều trường
hợp khác nhau như: mặt người góc thẳng, góc nghiêng, mắt nhắm, mắt mở, đeo kính,
không đeo kính, đủ ánh sáng, thiếu ánh sáng, ban ngày, ban đêm.v.v. Kết quả được thể
hiện ở bảng 5.1 và 5.2:
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58
Bảng 5.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
Nhắm
26/30
= 86.6%
28/30
= 93.3%
23/30
= 76.7%
26/30
= 86.7%
Mở
28/30
= 93.3%
29/30
= 96.7%
26/30
= 86.7%
27/30
= 90%
Bảng 5.1 cho ta thấy được kết quả của việc nhận dạng trạng thái của mắt với
trường hợp khuôn mặt đối diện với camera. Độ chính xác tương đối cao và tương đồng
ở 2 trường hợp đủ ánh sáng và thiếu ánh sáng. Trường hợp người không đeo kính đạt
chính xác rất cao (trên 90%) và thấp hơn (trung bình đạt 80%) ở trường hợp người có
đeo kính. Khi đeo kính, hệ thống khó nhận biết được mắt và chỉ sử dụng bộ dự đoán để
vẽ mí mắt nên độ chính xác sẽ thấp hơn trường hợp có đeo kính.
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59
Bảng 5.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
Nhắm
21/30
= 70%
24/30
= 80%
19/30
= 63.3%
25/30
= 83.3%
Mở
29/30
= 96.7%
30/30
= 100%
26/30
= 86.7%
27/30
= 90%
Bảng 5.2 cho ta thấy được kết quả của việc nhận dạng trạng thái của mắt với
trường hợp khuôn mặt xoay nhiều góc khác nhau không quá 450
. Độ chính xác gần
như tương đồng ở 2 trường hợp đủ ánh sáng và thiếu ánh sáng. Trường hợp người
không đeo kính đạt chính xác tương đối cao và thấp hơn ở trường hợp người có đeo
kính. Qua bảng 5.2, ta thấy được sự khác biệt của việc nhận dạng trạng thái nhắm hay
mở của mắt. Trường hợp nhận dạng mắt mở đạt độ chính xác rất cao (trên 95%) trong
khi trường hợp 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ả cho thấy rằng độ chính xác khá cao ở cả phát hiện vào ban ngày.
Nhưng về ban đêm, thiếu ánh sáng nên độ chính xác thấp hơn so với ban ngày. Và việc
nhận dạng phải chính diện khuôn mặt, không vượt quá 30o
.
CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60
Đối với việc đeo kính, gây khó khăn trong việc đánh dấu mắt. Vì vậy, về ban
đêm việc sử dụng kính sẽ gây ảnh hưởng cho việc phát hiện ngủ gật và làm cho việc
phát hiện không được chính xác, thật chí không thể phát hiện được.
Việc phát hiện ngủ gật, khoảng cách giữa camera và mắt người là khoảng dưới
1,2 mét thì việc phát hiện được chính xác nhất.
Việc sử dụng kính cũng vô cùng quan trọng. Chỉ phát hiện được khi đối tượng
sử dụng loại kính trong suốt để dễ dàng phát hiện được mắt và xử lý. Đối với những
loại kính râm, kính chống nắng sẽ không nhận dạng được mắt nên việc phát hiện ngủ
gật cũng không thể được.
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1. KẾT LUẬN
Trong suốt quá trình thực hiện đề tài nhóm đã xây dựng được một hệ thống ứng
dụng cho tài xế khi điều khiển phương tiện tham gia giao thông. Đề tài được xây dựng
trên hệ điều hành Linux để mô phỏng và kit Raspberry Pi 3 để sử dụng thực tế với sự
hỗ trợ của phương tiện phần mềm xử lý ảnh là thư viện mã nguồn mở OpenCV và dlib
với nhiệm vụ là phát hiện và cảnh báo khi tài xế đang điều khiển phương tiện gia thông
có dấu hiệu buồn ngủ.
Trên thực tế chương trình này đã đáp ứng được các yêu cầu sau: Chương trình ứng
dụng thực tế chạy trên kit Raspberry Pi. Chương trình ứng dụng trên nền Linux được
viết từ ngôn ngữ Python và được truy xuất hàm từ thư viện mã nguồn mở OpenCV và
dlib để xử lý ảnh trên kit Raspberry Pi 3. Với kết quả chạy trên thiết bị kit Raspberry
Pi 3 tốc độ xử lý 1.2GHz, RAM 1GB, camera với độ phân giải 3MP, kích thước khung
ảnh rộng 400 pixel. Tốc độ xử lý mỗi khung ảnh tương ứng khoảng 0.15 giây chậm
hơn mô phỏng khoảng 2 lần nhưng không ảnh hưởng nhiều đến kết quả cuối cùng cho
việc phát hiện và cảnh báo tài xế ngủ gật vẫn đảm bảo độ chính xác cao trong thời gian
thực. Kết quả đáp ứng tốt với yêu cầu của hệ thống.
6.1.1. Ưu điểm
- Là chương trình được lập trình do đó tiết kiệm được chi phí thiết kế và thi công
phần cứng cho một hệ thống cảnh báo với chức năng tương tự.
- Linh hoạt và tiện lợi do kích thước của kit Raspberry Pi 3 rất nhỏ nên có thể tích
hợp trực tiếp trên xe ô tô hoặc có thể dựa vào các hệ thống an ninh có sẵn của xe.
Từ đó có thể phát triển được ứng dụng một cách hiệu quả hơn.
- Kết quả mô phỏng và ứng dụng thực tế trên kit Raspberry Pi 3 đều cho độ chính
xác cao.
- Chương trình đáp ứng được yêu cầu thực tế, thời gian xử lý và cảnh báo đủ nhanh
để đáp ứng cho một ứng dụng yêu cầu thời gian thực.
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf
Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf

Weitere ähnliche Inhalte

Ähnlich wie Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf

Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩmỨng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩmhieu anh
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhạm Trung Đức
 
Udcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtUdcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtmrnxthanh
 
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...anh hieu
 
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l... Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...anh hieu
 
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdf
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdfThiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdf
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdfMan_Ebook
 

Ähnlich wie Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf (20)

Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩmỨng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
 
Đề tài: Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Đề tài: Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩmĐề tài: Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
Đề tài: Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm
 
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minhĐề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
 
Đề tài: Robot vận chuyển mẫu xét nghiệm trong bệnh viện, HAY
Đề tài: Robot vận chuyển mẫu xét nghiệm trong bệnh viện, HAYĐề tài: Robot vận chuyển mẫu xét nghiệm trong bệnh viện, HAY
Đề tài: Robot vận chuyển mẫu xét nghiệm trong bệnh viện, HAY
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tập
 
Đề tài: Thiết kế mô hình hệ thống và quản lý trang trại heo, HAY
Đề tài: Thiết kế mô hình hệ thống và quản lý trang trại heo, HAYĐề tài: Thiết kế mô hình hệ thống và quản lý trang trại heo, HAY
Đề tài: Thiết kế mô hình hệ thống và quản lý trang trại heo, HAY
 
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAYĐề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
 
Udcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtUdcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyết
 
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắcĐề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
 
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua WebserverĐề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
 
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...
Nghiên cứu, thiết kế và thi công hệ thống phân loại sản phẩm theo cân nặng, m...
 
Đề tài: Thiết kế hộp điều khiển thiết bị bằng sóng hồng ngoại
Đề tài: Thiết kế hộp điều khiển thiết bị bằng sóng hồng ngoạiĐề tài: Thiết kế hộp điều khiển thiết bị bằng sóng hồng ngoại
Đề tài: Thiết kế hộp điều khiển thiết bị bằng sóng hồng ngoại
 
Đề tài: Thiết kế dây chuyền phân loại đai ốc ứng dụng xử lý ảnh
Đề tài: Thiết kế dây chuyền phân loại đai ốc ứng dụng xử lý ảnhĐề tài: Thiết kế dây chuyền phân loại đai ốc ứng dụng xử lý ảnh
Đề tài: Thiết kế dây chuyền phân loại đai ốc ứng dụng xử lý ảnh
 
Đề tài: Thiết kế xe điều khiển từ xa có live stream camera, HAY
Đề tài: Thiết kế xe điều khiển từ xa có live stream camera, HAYĐề tài: Thiết kế xe điều khiển từ xa có live stream camera, HAY
Đề tài: Thiết kế xe điều khiển từ xa có live stream camera, HAY
 
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l... Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnhĐề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
 
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdf
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdfThiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdf
Thiết kế và chế tạo robot gắp thức ăn sử dụng xử lý ảnh và tay gắp mềm.pdf
 
Đề tài: Thiết kế hộp thuốc thông minh cho người bệnh, HAY
Đề tài: Thiết kế hộp thuốc thông minh cho người bệnh, HAYĐề tài: Thiết kế hộp thuốc thông minh cho người bệnh, HAY
Đề tài: Thiết kế hộp thuốc thông minh cho người bệnh, HAY
 
Đề tài: Giải pháp giả lập thiết bị mạng với Unetlab-EVE, HAY
Đề tài: Giải pháp giả lập thiết bị mạng với Unetlab-EVE, HAYĐề tài: Giải pháp giả lập thiết bị mạng với Unetlab-EVE, HAY
Đề tài: Giải pháp giả lập thiết bị mạng với Unetlab-EVE, HAY
 
Đề tài: Triển khai giải pháp giả lập thiết bị mạng với Unetlab EVE
Đề tài: Triển khai giải pháp giả lập thiết bị mạng với Unetlab EVEĐề tài: Triển khai giải pháp giả lập thiết bị mạng với Unetlab EVE
Đề tài: Triển khai giải pháp giả lập thiết bị mạng với Unetlab EVE
 

Kürzlich hochgeladen

Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfhoangtuansinh1
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-KhnhHuyn546843
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgsNmmeomeo
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 

Kürzlich hochgeladen (20)

Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 

Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry.pdf

  • 1. BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH --------------------------------- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀO VIỆC PHÁT HIỆN NGỦ GẬT DÙNG KIT RASPBERRY GVHD: Th.s Nguyễn Duy Thảo SVTH1: Nông Văn Tân MSSV: 13141299 SVTH2: Trần Thị Mỹ Khiêm MSSV: 13141147 Tp. Hồ Chí Minh - 01/2018 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 2. BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH --------------------------------- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀO VIỆC PHÁT HIỆN NGỦ GẬT DÙNG KIT RASPBERRY GVHD: Th.s Nguyễn Duy Thảo SVTH: Nông Văn Tân MSSV: 13141299 SVTH: Trần Thị Mỹ Khiêm MSSV: 13141147 Tp. Hồ Chí Minh - 01/2018 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 3. TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ Độc lập – Tự do – Hạnh phúc BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH TP. Hồ Chí Minh, ngày 01 tháng 01 năm 2018 BẢNG MÔ TẢ CÔNG VIỆC Họ tên sinh viên 1: Nông Văn Tân MSSV: 13141299 Lớp: 13141DT2C Họ tên sinh viên 2: Trần Thị Mỹ Khiêm MSSV: 13141147 Lớp: 13141DT1D Tên đề tài: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry 1. MÔ TẢ MỤC TIÊU CỦA ĐỀ TÀI: Đề tài sẽ đi tìm hiểu kit Raspberry, kiến thức xử lý ảnh, kỹ thuật nhận dạng và xây dụng bài toán phát hiện ngủ gật. 2. MÔ TẢ CÔNG VIỆC THỰC HIỆN ĐỀ TÀI CỦA TỪNG SINH VIÊN: Họ tên Sinh viên 1: Nông Văn Tân Các công việc thực hiện trong đề tài: STT NỘI DUNG CÔNG VIỆC 1 Tìm kiếm tài liệu về lập trình Python, OpenCV. 2 Cài đặt hệ điều hành và thư viện liên quan. 3 Viết chương phát hiện ngủ gật. 4 Viết báo cáo.
  • 4. Họ tên Sinh viên 2: Trần Thị Mỹ Khiêm Các công việc thực hiện trong đề tài: STT NỘI DUNG CÔNG VIỆC 1 Tìm kiếm tài liệu về lập trình Python, OpenCV. 2 Tìm kiếm lý thuyết nhận dạng, phát hiện. 3 Viết và chỉnh sửa báo cáo. SINH VIÊN 1 SINH VIÊN 2 (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) Nông Văn Tân Trần Thị Mỹ Khiêm XÁC NHẬN CỦA GIẢNG VIÊN HƯỚNG DẪN (Ký ghi rõ họ tên) Th.s Nguyễn Duy Thảo
  • 5. TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP. HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH Tp. HCM, ngày 01 tháng 01 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nông Văn Tân MSSV: 13141299 Trần Thị Mỹ Khiêm MSSV: 13141147 Chuyên ngành: Điện tử công nghiệp – y sinh Mã ngành: 01 Hệ đào tạo: Đại học chính quy Mã hệ: 1 Khóa: 2013 Lớp: 13141DT2C I. TÊN ĐỀ TÀI: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry II. NHIỆM VỤ 1. Các số liệu ban đầu:  1 bộ kit Raspberry Pi 3.  1 camera.  1 loa  Các hình ảnh cần xử lý. 2. Nội dung thực hiện:  Tìm hiểu về xử lý ảnh.  Tìm hiểu về kit Raspberry Pi.  Các kỹ thuật nhận dạng.
  • 6.  Phát hiện ngủ gật bằng Raspberry Pi.  Viết báo cáo. III. NGÀY GIAO NHIỆM VỤ: 25/9/2017 IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 15/01/2018 V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Th.s Nguyễn Duy Thảo CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP-Y SINH Th.s Nguyễn Duy Thảo
  • 7. TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP. HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Tp. HCM, ngày 01 tháng 01 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nông Văn Tân Lớp: 13141DT2C MSSV: 13141299 Họ tên sinh viên 2: Trần Thị Mỹ Khiêm Lớp: 13141DT MSSV: 13141147 Tên đề tài: Ứng dụng xử lý ảnh vào việc phát hiện ngủ gật dùng Kit Raspberry Tuần/ngày Nội dung Xác nhận GVHD Tuần 1 Nhận đề tài Tuần 2 Tìm hiểu nội dung liên quan đề tài: - Xử lý ảnh - Raspberry - Các ngôn ngữ lập trình Tuần 3 → 5 Tìm hiểu và cài đặt hệ điều hành cho Raspberry Pi 3. Chạy các chương trình đơn giản kiểm tra kit Raspberry đã cài đặt thành công. Tuần 6 → 10 Tìm hiểu tài liệu về ngôn ngữ Python, OpenCV Tìm hiểu về các thuật toán nhận dạng Tuần 10 → 13 Xây dựng chương trình phát hiện và nhận dạng khuôn mặt.
  • 8. Tuần 14+15 Xây dựng chương trình phát hiện ngủ gật. Tuần 16 → 20 Viết báo cáo. Tuần 21 Chỉnh sửa và hoàn thành báo cáo. GV HƯỚNG DẪN (Ký và ghi rõ họ và tên) Th.s Nguyễn Duy Thảo
  • 9. i LỜI CAM ĐOAN Đề tài này là do chúng tôi tự thực hiện dưới sự hướng dẫn của Th.s Nguyễn Duy Thảo và dựa vào một số tài liệu, đề tài trước đó và không sao chép từ tài liệu hay công trình đã có trước đó. Người thực hiện đề tài 1 Người thực hiện đề tài 2 Nông Văn Tân Trần Thị Mỹ Khiêm
  • 10. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii LỜI CẢM ƠN Trong thời gian thực hiện luận văn nhóm sinh viên thực hiện đề tài đã được học hỏi nhiều kiến thức bổ ích trong giáo trình và thực tế từ thầy cô. Qua đây em xin gửi lời cảm ơn chân thành đến: Quý thầy cô trong khoa điện điện tử của trường Đại Học Sư Phạm Kỹ Thuật Thành phố Hồ Chí Minh đã truyền đạt kiến thức, những kinh nghiệm quý báu trong chuyên môn cũng như trong các lĩnh vực khác. Sự tận tụy say mê, lòng nhân ái, nhiệt tình của thầy cô là động lực lớn giúp chúng em trau dồi thêm kiến thức giúp chúng em vượt qua khó khăn trong học tập cũng như trong cuộc sống. Chúng em xin gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Duy Thảo đã giúp đỡ và hướng dẫn chúng em hoàn thành đồ án tốt nghiệp này. Đồng thời cũng cảm ơn đến tất cả các bạn bè đã gắn bó và giúp đỡ nhau trong học tập cũng như trong suốt quá trình thực hiện đồ án tốt nghiệp. Xin chân thành cảm ơn! Nhóm thực hiện đề tài Nông Văn Tân Trần Thị Mỹ Khiêm
  • 11. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii MỤC LỤC LỜI CAM ĐOAN ............................................................................................................i LỜI CẢM ƠN .................................................................................................................ii MỤC LỤC......................................................................................................................iii DANH MỤC HÌNH.......................................................................................................vi DANH MỤC BẢNG ...................................................................................................viii TÓM TẮT......................................................................................................................ix Chương 1. TỔNG QUAN......................................................................................... 2 1.1. ĐẶT VẤN ĐỀ............................................................................................... 2 1.2. MỤC TIÊU ĐỀ TÀI...................................................................................... 2 1.3. NỘI DUNG NGHIÊN CỨU ......................................................................... 3 1.4. GIỚI HẠN..................................................................................................... 3 1.5. BỐ CỤC ........................................................................................................ 3 Chương 2. CƠ SỞ LÝ THUYẾT.............................................................................. 4 2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH.................................................................. 4 2.1.1. Giới thiệu về xử lý ảnh [1]...................................................................... 4 2.1.2. Các thành phần cơ bản của hệ thống ảnh................................................ 6 2.1.3. Các vấn đề cơ bản trong xử lý ảnh.......................................................... 7 2.1.3.1. Ảnh và điểm ảnh............................................................................... 7 2.1.3.2. Độ phân giải của ảnh ........................................................................ 7 2.1.3.3. Mức xám của ảnh.............................................................................. 8 2.1.3.4. Biến đổi ảnh...................................................................................... 8 2.2. GIẢI THUẬT ADABOOST [5].................................................................... 9 2.3. ĐẶC TRƯNG HAAR-LIKE [5]................................................................. 11 2.4. GIẢI THUẬT FACIAL LANDMARKS .................................................... 15 2.4.1. Giới thiệu về Facial Landmarks [6] ...................................................... 15 2.4.2. Tìm hiểu về bộ phát hiện dấu mốc trên khuôn mặt của dlib [6] ........... 16 2.5. KHOẢNG CÁCH EUCLIDE [7]............................................................... 17
  • 12. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iv 2.6. PYTHON..................................................................................................... 18 2.6.1. Giới thiệu sơ lược về Python................................................................. 18 2.6.2 Các đặc điểm của ngôn ngữ python...................................................... 19 2.6.3. Ứng dụng của Python............................................................................ 22 2.7. THƯ VIỆN DLIB........................................................................................ 23 Chương 3. TÍNH TOÁN VÀ THIẾT KẾ ............................................................... 25 3.1. TỔNG QUAN VỀ KIT RASPBERRY PI 3 ............................................... 26 3.1.1. Giới thiệu tổng quan.............................................................................. 26 3.1.2. Cấu tạo phần cứng của kit Raspberry Pi 3............................................ 27 3.1.3. Hệ điều hành của kit Raspberry Pi 3..................................................... 29 3.2. CÀI ĐẶT HỆ ĐIỀU HÀNH CHO KIT RASPBERRY PI 3........................ 30 3.2.1. Thiết bị cần dùng để cài đặt .................................................................. 30 3.2.2. Cài đặt hệ điều hành Raspbian.............................................................. 30 3.2.3. Điều khiển Raspberry Pi 3 từ xa bằng cách remote máy tính............... 33 3.3. CÀI ĐẶT THƯ VIỆN CHO RASPBERRY PI 3......................................... 37 3.3.1. Cài đặt OpenCV .................................................................................... 37 3.3.2. Cài đặt thư viện dlib.............................................................................. 44 Chương 4. THI CÔNG HỆ THỐNG ...................................................................... 47 4.1. SƠ ĐỒ KHỐI HỆ THỐNG......................................................................... 47 4.1.1. Ảnh từ camera....................................................................................... 48 4.1.2. Tiền xử lý .............................................................................................. 48 4.1.3. Phát hiện khuôn mặt dùng HOG........................................................... 48 4.1.4. Đánh dấu cấu trúc khuôn mặt dùng Facial Landmarks......................... 50 4.1.5. Trích xuất vùng mắt .............................................................................. 50 4.1.6. Tính toán tỷ lệ mắt ................................................................................ 50 4.1.7. Phát hiện ngủ gật................................................................................... 52 4.1.8. Cảnh báo................................................................................................ 53 Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ................................................. 55 5.1. Kết quả ........................................................................................................ 55
  • 13. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH v 5.2. Nhận xét....................................................................................................... 57 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................ 61 6.1. KẾT LUẬN ................................................................................................. 61 6.1.1. Ưu điểm................................................................................................. 61 6.1.2. Nhược điểm........................................................................................... 62 6.2. HƯỚNG PHÁT TRIỂN.............................................................................. 62 6.2.1. Hướng khắc phục .................................................................................. 62 6.2.2. Hướng phát triển ................................................................................... 63 TÀI LIỆU THAM KHẢO............................................................................................. 64 PHỤ LỤC...................................................................................................................... 65
  • 14. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vi DANH MỤC HÌNH Hình Trang Hình 2.1: Các bước cơ bản trong xử lý ảnh.....................................................................4 Hình 2.2: Các thành phần cơ bản của hệ thống xử lý ảnh ...............................................6 Hình 2.3: Độ phân giải của ảnh........................................................................................7 Hình 2.4: Sự khác nhau giữa ảnh màu và ảnh xám..........................................................8 Hình 2.5: Ảnh trước khi cân bằng Histogram..................................................................9 Hình 2.11: Mô hình phân tầng các bộ phận loại yếu .......................................................10 Hình 2.12: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh. ...............................11 Hình 2.13: Đặc trưng theo cạnh .......................................................................................11 Hình 2.14: Đặc trưng theo đường ....................................................................................12 Hình 2.15: Đặc trưng theo xung quanh tâm.....................................................................12 Hình 2.16: Đặc trưng theo đường chéo............................................................................12 Hình 2.17: Cách tính Integral Image của ảnh ..................................................................13 Hình 2.18: Cách tính tổng giá trị pixel vùng cần tính......................................................14 Hình 2.19: Hệ thống phát hiện khuôn mặt.......................................................................17 Hình 2.20: 68 tọa độ đánh dấu cấu trúc khuôn mặt từ tập dữ liệu iBUG 300-W ............23 Hình 3.1: Sơ đồ khối hệ thống .........................................................................................25 Hình 3.2: Bo mạch Raspberry Pi 3 ..................................................................................26 Hình 3.3: Các cổng giao tiếp ngoại vi..............................................................................28 Hình 3.4: Sơ đồ chân của Raspberry Pi 3 ........................................................................29 Hình 3.5: Hệ điều hành Raspbian Stretch........................................................................31 Hình 3.6: Phần mềm SD Card Formatter.........................................................................32 Hình 3.7: Phần mềm Win32 Disk Imager........................................................................33 Hình 3.8: Vào ổ đĩa Boot .................................................................................................33
  • 15. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vii Hình 3.9: Thêm địa chỉ IP của Raspberry vào file cmdline.text......................................34 Hình 3.10: Nhập địa chỉ ip của Raspberry Pi...................................................................34 Hình 3.11: Chuyển tiếp X11 ............................................................................................35 Hình 3.12: Cài đặt xrdp bằng lệnh ...................................................................................36 Hình 3.13: Mở Remote Desktop và kết nối .....................................................................36 Hình 3.14: Nhập usename và password...........................................................................37 Hình 3.15: Giao diện của hệ điều hành Raspbian Stretch................................................37 Hình 3.16: Môi trường ảo cv............................................................................................41 Hình 3.17: Biên dịch OpenCV 3 trên Raspbian Stretch thành công................................42 Hình 3.18: Xác nhận OpenCV 3 đã cài đặt thành công...................................................44 Hình 4.1: Sơ đồ khối hệ thống .........................................................................................47 Hình 4.2: Đánh dấu mắt 6 điểm .......................................................................................51 Hình 4.3: Hình ảnh của mốc đánh dấu mắt khi mắt mở, mắt nhắm và tỉ lệ.....................52 Hình 4.4: Phát hiện ngủ gật..............................................................................................54 Hình 5.1: Phát hiện khuôn mặt.........................................................................................55 Hình 5.2: Đánh dấu 68 điểm của khuôn mặt dùng giải thuật Facial Landmarks.............55 Hình 5.3: Hình 5.2: Phát hiện trạng thái mắt ở nhiều trường hợp. ..................................56 Hình 5.4: Phát hiện ngủ gật vào ban ngày không đeo kính .............................................56 Hình 5.5: Phát hiện ngủ gật vào ban ngày có đeo kính....................................................56 Hình 5.6: Phát hiện ngủ gật vào ban đêm không đeo kính ..............................................57
  • 16. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH viii DANH MỤC BẢNG Bảng 5.1 Kết quả nhận dạng trạng thái mắt với trường hợp góc thẳng.................... 58 Bảng 5.1 Kết quả nhận dạng trạng thái mắt với trường hợp góc nghiêng................ 59
  • 17. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ix TÓM TẮT 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 đề tài cần được quan tâm và phát triển. Từ những nghiên cứu ban đầu về ảnh trắng đen, ảnh xám, ảnh màu, xử lý ảnh đã được nghiên cứu chuyên sâu và ứng dụng rất nhiều trong cuộc sống. Bên cạnh đó, 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 đề tài 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 đồ án này, chúng tôi cố gắng tìm ra các thuật toán đáp ứng trong thời gian thực, 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ế. Chúng tôi 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 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 Haar-like; 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.
  • 18. CHƯƠNG 1 TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2 Chương 1. TỔNG QUAN 1.1. ĐẶT VẤN ĐỀ Cùng với sự phát triển ngày càng mạnh mẽ của khoa học kĩ thuật trong một vài thập kỷ gần đây. Xử lý ảnh tuy là một ngành khoa học còn tương đối mới mẻ so với nhiều ngành khoa học khác nhưng hiện nay nó đang là một trong những lĩnh vực phát triển rất nhanh và thu hút sự quan tâm đặc biệt từ các nhà khoa học, thúc đẩy các trung tâm nghiên cứu, ứng dụng về lĩnh vực hấp dẫn này. Xử lý ảnh đóng vai trò quan trọng trong nhiều ứng dụng thực tế về khoa học kĩ thuật cũng như trong cuộc sống thường ngày như: sản xuất và kiểm tra chất lượng, sự di chuyển của Robot, các phương tiện đi lại tự trị, công cụ hướng dẫn cho người mù, an ninh và giám sát, nhận dạng đối tượng, nhận dạng mặt, các ứng dụng trong y học, sản xuất, hiệu chỉnh video… Thời gian gần đây, sự phổ biến và hiện quả sử dụng của kit Raspberry Pi vào các ứng dụng trong khoa học kỹ thuật đã thôi thúc nhóm nghiên cứu ứng dụng kit Raspberry Pi vào xử lý ảnh. Với đặc điểm như một máy tính thu nhỏ có kích thước xấp xỉ chiếc điện thoại cầm tay, chạy hệ điều hành mở, được trang bị bộ vi xử lý mạnh mẽ, mức tiêu thụ điện năng thấp, giá thành rẻ, cho phép ta có thể cấu hình cho kit Raspberry Pi như một máy tính xử lý các bài toán. Nhận thấy điều này, nhóm chúng em quyết định chọn đề tài “Ứng dụng kit Raspberry vào xử lý ảnh” nhằm đưa ra một số giải pháp xử lý ảnh để có thể áp dụng vào đời sống. 1.2. MỤC TIÊU ĐỀ TÀI Đề tài là bước đầu tìm hiểu những ứng dụng của xử lý ảnh trong thực tế, đồng thời cũng là bước triển khai những kiến thức đã được học. Thông qua việc nghiên cứu và làm việc nghiêm túc để rèn luyện tác phong, cũng như hoàn thiện phương pháp, tư duy nghiên cứu, giải quyết một vấn đề. Với những mục tiêu của đề tài hướng đến là:  Tìm hiểu những kiến thức về xử lý ảnh.
  • 19. CHƯƠNG 1 TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3  Tìm hiểu về kỹ thuật nhận dạng.  Tìm hiểu kit Raspberry Pi 3.  Xây dựng chương trình phát hiện ngủ gật trên kit Raspberry Pi 3. 1.3. NỘI DUNG NGHIÊN CỨU  NỘI DUNG 1: Tìm hiểu những kiến thức cơ bản về xử lý ảnh, kit Raspberry Pi 3, ngôn ngữ lập trình Python…  NỘI DUNG 2: Tìm hiểu về các kỹ thuật, thuật toán nhận dạng.  NỘI DUNG 3: Cài đặt hệ điều hành, thư viện cần thiết cho kit Raspberry Pi 3.  NỘI DUNG 4: Viết chương trình phát hiện ngủ gật.  NỘI DUNG 5: Đánh giá kết quả thực hiện.  NỘI DUNG 6: Viết luận văn. 1.4. GIỚI HẠN Đặc tính của hệ thống xử lý ảnh thông thường bị ảnh hưởng bởi nhiều yếu tố. Trong điều kiện thực tế cho phép nhóm thực hiện đề tài trong một số điều kiện giới hạn sau:  Điều kiện thu nhận hình ảnh vào ban ngày và ban đêm khác nhau, cho nên nhóm chỉ tìm hiểu trong điều kiện ánh sáng ổn định đạt kết quả tốt hơn.  Đối với việc nhận dạng, thì khoảng cách từ camera đến đối tượng dưới 1.2 mét, trên khoảng cách này thì việc nhận dạng có thể không được chính xác.  Do hạn chế về thời gian do đó nhóm chỉ tập trung vào xử lý các bài toán xử lý ảnh đơn giản và một vài ứng dụng phổ biến trên kit Raspberry Pi. 1.5. BỐ CỤC Như vậy, với các yêu cầu về nhiệm vụ và mục tiêu đề ra, luận văn được xây dựng bao gồm các chương sau:  Chương 1: Tổng quan Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn đề tài và bố cục đồ án.
  • 20. CHƯƠNG 1 TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4  Chương 2: Cơ sở lý thuyết. Chương này trình bày giới thiệu tổng quan về tổng quan về xử lý ảnh, các thư viện sử dụng; tìm hiểu lý thuyết các thuật toán nhận dạng: giải thuật Adaboost, đặc trưng Haar-like, giải thuật Facial Landmarks, khoảng cách Euclide…  Chương 3: Tính toán thiết kế. Chương này trình bày tổng quan về kit Raspberry Pi 3, cách cài đặt hệ điều hành và thư viện cho kit.  Chương 4: Thi công hệ thống Chương này trình bày về các chương trình và xây dụng bài toán phát hiện ngủ gật trên kit Raspberry Pi 3.  Chương 5: Kết quả, nhận xét và đánh giá Trình bày kết quả đạt được sau khi thực hiện, đánh giá, nhận xét những gì đã đạt và chưa đạt những gì so với mục tiêu đề ra.  Chương 6: Kết luận và hướng phát triển Đưa ra kết luận về việc thực hiện đồ án, đồng thời đưa ra hướng phát triển để có được một đề tài hoàn thiện và đáp ứng được nhu cầu cho cuộc sống hiện đại như ngày nay.
  • 21. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4 Chương 2. CƠ SỞ LÝ THUYẾT 2.1. TỔNG QUAN VỀ XỬ LÝ ẢNH 2.1.1. Giới thiệu về xử lý ảnh [1] Trong những năm gần đây, xử lý ảnh là một nghành khoa học mới mẻ nhưng tốc độ phát triển nhanh chóng và được nghiên cứu, phát triển bởi các trung tâm nghiên cứu, các trường đại học.v.v. Và với rất nhiều ứng dụng khác nhau. Các phương pháp xử lý ảnh bắt đầu từ những ứng dụng chính như: nâng cao chất lượng độ sáng và độ phân giải của ảnh, phân tích ảnh. Ứng dụng đầu tiên được biết đến đó chính là nâng cao chất lượng hình ảnh báo được truyền qua cáp từ Luân Đôn đến New York từ những năm 1920. Càng về sau, nhờ sự xuất hiện và phát hiện mạnh mẽ của máy tính đã tạo điều kiện cho các quá trình thực hiện các thuật toán xử lý ảnh được nâng cao và phát triển hơn. Các ứng dụng của xử lý ảnh càng được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau như: khôi phục hình ảnh, chỉnh sửa, điều chỉnh độ phân giải; trong lĩnh vực y tế; trong do thám, thám hiểm; truyền và mã hóa; thị giác máy tính, robot; xử lý màu; lĩnh vực nhận dạng.v.v. Các bước cần thiết trong xử lý ảnh. Trước đây, hình ảnh được thu từ camera là các ảnh tương tự. Gần đây, với sự phát triển không ngừng của công nghệ, ảnh màu hoặc ảnh đen trắng được lấy từ camera, sau đó được chuyển trực tiếp qua ảnh số để dễ dàng cho các bước xử lý tiếp theo. Dưới đây sẽ mô tả về các bước trong xử lý ảnh. Hình 2.1: Các bước cơ bản trong xử lý ảnh.
  • 22. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 5 Thu nhận ảnh: Ảnh được nhận qua camera màu hoặc trắng đen. Thông thường ảnh được nhận qua camera, video, máy scan.v.v. Tiền xử lý: Sau bộ thu nhận ảnh, hình ảnh có thể có độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng hình ảnh. Bộ tiền xử lý có chức năng lọc nhiễu, nâng độ tương phản để làm cho ảnh rõ hơn và sắc nét hơn. Phân đoạn ảnh: Còn gọi là phân vùng ảnh. Là tách một ảnh đầu vào 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. Biểu diễn ảnh và mô tả ảnh: Ảnh đã được phân loại chứa nhiều điểm ảnh của vùng ảnh. Việc biến đổi các số liệu này thành dạng thích hợp cho việc xử lý tiếp theo của máy tính. Chúng ta phải tìm các vùng đặc trưng của ảnh, tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc để làm cơ sở cho sự phân biệt giữa lớp đối tượng này với lớp đối tượng khác trong phạm vi của ảnh mà chúng ta nhận được. Nhận dạng và nội suy ảnh: Nhận dạng ảnh là quá trình xác định ảnh. Bằng cách so sánh mẫu với mẫu chuẩn đã được lưu trữ từ trước. Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng. Các mô hình toán học về ảnh được phân loại với hai dạng cơ bản:  Nhận dạng theo tham số.  Nhận dạng theo cấu trúc. Cơ sở tri thức: Như đã biết, ảnh là một đối tượng phức tạp về đường nét, độ sáng tối, dung lượng điểm ảnh. Trong nhiều quá trình xử lý và phân tích ảnh. Ngoài việc đơn giản hóa các phương pháp toán học để đảm bảo tiện lợi cho xử lý, người ta mong muốn 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. Cho nên, cơ sở tri thức được phát huy và được xử lý theo pháp trí tuệ con người ở nhiều khâu khác nhau.
  • 23. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 6 2.1.2. Các thành phần cơ bản của hệ thống ảnh Hình 2.2: Các thành phần cơ bản của hệ thống xử lý ảnh. Bộ phận thu nhận ảnh: Máy quay (Camera), máy quét (scaners) chuyên dụng, các bộ cảm biến ảnh. Phần cứng xử lý ảnh chuyên dụng: Bộ số hóa (chuyển đổi ảnh truyền thống từ bên ngoài thành dạng dữ liệu số mà máy tính có thể hiểu được). Phần cứng thực hiện các thao tác cơ bản để nâng cao tốc độ xử lý ảnh. Máy tính: 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 để phục vụ và sử dụng cho quá trình xử lý hiện tại. Lưu trữ vĩnh viễn là lưu trữ dữ diệu, truy cập không thường xuyên. Bộ phận hiện thị: Màn hình máy tính... In ấn: Ghi lại ảnh: máy in, máy chiếu...
  • 24. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 7 2.1.3. Các vấn đề cơ bản trong xử lý ảnh [1] 2.1.3.1. Ảnh và điểm ảnh Ảnh số là một tập hợp nhiều điểm ảnh, mỗi điểm ảnh được gọi là một pixel. Điểm ảnh là một phần tử của ảnh số tại tọa độ (x, y) biểu diễn một màu sắc nhất định (có thể là độ xám với ảnh đen trắng). Mỗi điểm ảnh được xem như là một chấm nhỏ li ti trong một tấm ảnh. Bằng phương pháp đo lường và thống kê một lượng lớn các điểm ảnh, chúng ta có thể tái cấu trúc các điểm ảnh này thành một ảnh mới gần giống với ảnh ban đầu. 2.1.3.2. Độ phân giải của ảnh Độ phân giải của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiện thị. Khoảng cách giữa các điểm ảnh sao cho mắt người vẫn thấy được sự liên tục của ảnh. Độ phân giải được phân bố theo trục x và y trong không gian hai chiều. Với cùng một ảnh, độ phân giải càng cao thì ảnh càng chứa nhiều thông tin và sắc nét hơn. Ví dụ như hình bên dưới. Hình 2.3: Độ phân giải của ảnh. Ở hình a có độ phân giải là 960x640 pixels, hình b có độ phân giải là 220x147 pixels. Cho thấy rằng, với độ phân giải càng cao thì độ sắc nét của ảnh càng cao và hình ảnh càng rõ nét.
  • 25. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 8 2.1.3.3. Mức xám của ảnh Một điểm ảnh có hai đặc trưng cơ bản đó chính là vị trí (x, y) của điểm ảnh và độ xám của ảnh. Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tại thời điểm đó. Hình 2.4: Sự khác nhau giữa ảnh màu và ảnh xám. Với hình a là ảnh màu và hình b là ảnh xám. 2.1.3.4. Biến đổi ảnh Trong xử lý ảnh do số điểm ảnh lớn hơn các tính toán nhiều (độ phức tạp tính toán cao) đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu. Các phương pháp khoa học kinh điển áp dụng cho xử lý ảnh hầu như khó khả thi. Người ta sử dụng các phép toán tương đương hoặc biến đổi sang miền xử lý khác để dể tính toán, sau khi đã xử lý dể dàng, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổi thường gặp trong xử lý ảnh bao gồm: - Biến đổi Fourier, Cosin, Sin. - Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker. - Các biển đổi khác như KL (Karhumen Loeve), Hadamard.
  • 26. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 9 2.2. GIẢI THUẬT ADABOOST [5] AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các “weak classifiers” để hình thành một “strong classifier”. Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng số (weight) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi “weak classifier” được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng “weak classifier” kế tiếp: tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu được nhận dạng đúng bởi “weak classifier” vừa xây dựng. Bằng cách này “weak classifer” sau có thể tập trung vào các mẫu mà các “weak classifiers” trước nó làm chưa tốt. Sau cùng, các “weak classifers” sẽ được kết hợp tùy theo mức độ tốt của chúng để tạo nên “strong classifier”. Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc trưng Haar-like theo mô hình phân tầng (cascade) như sau:
  • 27. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 10 Hình 2.11: Mô hình phân tầng kết hợp các bộ phân loại yếu Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau: ℎ𝑘(𝑥) = { 1 𝑛ế𝑢 𝑝𝑘𝑓𝑘(𝑥) < 𝑝𝑘𝜃𝑘 0 𝑛ế𝑢 𝑛𝑔ượ𝑐 𝑙ạ𝑖 (2.6) x: cửa sổ con cần xét Ok: ngưỡng (O = teta) fk: giá trị của đặc trưng Haar-like pk: hệ số quyết định chiều của phương trình AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau: H(x) = sign(a1h1(x) +a2h2(x) + ... + anhn(x)) (a = alpha)
  • 28. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 11 Với: at >= 0 là hệ số chuẩn hoá cho các bộ phân loại yếu Hình 2.12: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh 2.3. ĐẶC TRƯNG HAAR-LIKE [5] Đặc trưng Haar-like được sử dụng trong việc nhận dạng đối tượng trong ảnh số được phát biểu bởi Viola và Jones gồm 4 đặc trưng cơ bản để xác định một đối tượng trong ảnh. Mỗi đặc trưng Haar-like là sự kết hợp gồm 2 hoặc 3 khối chữ nhật mang giá trị “đen” hoặc “trắng”. Những khối chữ nhật này thể hiện sự liên hệ tương quan giữa các bộ phận trong ảnh mà bản thân từng giá trị pixel không thể diễn đạt được. Hình 2.13: Đặc trưng theo cạnh
  • 29. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 12 Hình 2.14: Đặc trưng theo đường Hình 2.15: Đặc trưng theo xung quanh tâm Hình 2.16: Đặc trưng theo đường chéo Dựa theo các đặc trưng trên, giá trị của đặc trưng Haar-like được xây dựng bởi độ chênh lệch giữa tổng các pixel của các vùng đen so với tổng các pixel của các vùng trắng. Dưới đây là công thức tính giá trị đặc trưng Haar-like: 𝑓(𝑥) = ∑ (𝑝𝑖𝑥𝑒𝑙) 𝑣ù𝑛𝑔 đ𝑒𝑛 − ∑ (𝑝𝑖𝑥𝑒𝑙) 𝑣ù𝑛𝑔 𝑡𝑟ắ𝑛𝑔 (2.7)
  • 30. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 13 Như vậy để tính giá trị đặc trưng Haar-like cần phải thực hiện tính toán tổng các vùng pixel trên ảnh. Điều này làm cho chi phí bài toán lớn không thể đáp ứng các tính năng yêu cầu thời gian thực. Do vậy Viola và Jones đã đề xuất ra khái niệm “Integral Image” để giảm thiểu chi phí cho bài toán tính giá trị của đặc trưng Haar-like để bài toán có thể xử lý với thời gian thực. Tính “Integral Image” bằng cách sử dụng mảng 2 chiều với kích thước bằng kích thước của ảnh cần tính giá trị đặc trưng Haar-like. Ảnh chia nhỏ ở vị trí (x, y) được tính bằng tổng các giá trị pixel của vùng từ vị trí (0,0) đến vị trí (x1, y1). Việc tính toán đơn giản là thực hiện phép cộng số nguyên nên tốc độ thực hiện được tối ưu hóa. Hình 2.17: Cách tính Integral Image của ảnh 𝑃(𝑥, 𝑦) = ∑ 𝑖(𝑥′ , 𝑦′) 𝑥′≤𝑥,𝑦′≤𝑦 (2.8) Kết quả có được sau khi tính Integral Image, việc tính tổng giá trị pixel trong vùng cần tính thực hiện như sau: Gọi vùng cần tính tổng các giá trị pixel là vùng “A4”. 𝑃1(𝑥1, 𝑦1) = 𝐴1 (2.9) 𝑃2(𝑥2, 𝑦2) = 𝐴1 + 𝐴2 (2.10) 𝑃3(𝑥3, 𝑦3) = 𝐴1 + 𝐴3 (2.11) 𝑃4(𝑥4, 𝑦4) = 𝐴1 + 𝐴2 + 𝐴3 + 𝐴4 (2.12) Ta được: 𝐴4 = 𝑃4 + 𝑃1 − 𝑃2 − 𝑃3 (2.13)
  • 31. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 14 Hình 2.18: Cách tính tổng giá trị pixel vùng cần tính Hình 2.19: Hệ thống phát hiện khuôn mặt Từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành nhiều tỉ lệ rất nhỏ để tính các đặc trưng qua các hàm đặc trưng cơ bản Haar-like. Sau khi tính toán được các hàm đặc trưng, ta nhận được một số lượng rất lớn các đặc trưng. Thì để lựa chọn và xác định có
  • 32. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 15 thể là khuôn mặt, ta dùng giải thuật Adaboost để lựa chọn và kết hợp các vùng trọng số yếu thành trọng số mạnh. Cuối cùng, các vùng đã được lựa chọn sẽ được đưa vào bộ phân loại “Cascade of classifier” để loại bỏ các vùng không phải khuôn mặt và xác định vùng nào là khuôn mặt. Và đưa ra kết quả cuối cùng. 2.4. GIẢI THUẬT FACIAL LANDMARKS Chúng ta sẽ sử dụng dlib và OpenCV để phát hiện các điểm đánh dấu các bộ phận trên khuôn mặt trong một hình ảnh. Điểm đánh dấu các bộ phận trên khuôn mặt được sử dụng để định vị và trình bày cho các vùng nổi bật trên mặt, chẳng hạn như: Mắt, lông mày, mũi, miệng, đường viền khuôn mặt. 2.4.1. Giới thiệu về Facial Landmarks [6] Facial Landmarks là một tập con của vấn đề dự đoán hình dạng. Với một hình ảnh ngõ vào (và thông thường là một ROI chỉ định đối tượng quan tâm trong ảnh), một dự đoán hình dạng cố gắng định vị điểm quan trọng theo hình dạng. Mục tiêu là phát hiện các cấu trúc khuôn mặt quan trọng trên mặt bằng các phương pháp dự đoán hình dạng. Việc phát hiện các điểm đánh dấu trên mặt là một quá trình gồm hai bước: Bước 1: Định vị khuôn mặt trong hình ảnh. Bước 2: Phát hiện các cấu trúc mặt chính trên mặt ROI. Phát hiện khuôn mặt (Bước 1) có thể đạt được theo nhiều cách: - Chúng ta có thể sử dụng thuật toán Haar Cascade được xây dựng trong OpenCV. - Chúng ta có thể áp dụng một máy phát hiện dùng thuật toán HOG kết hợp Linear SVM đã được huấn luyện đặc biệt cho nhiệm vụ phát hiện khuôn mặt. Trong cả hai trường hợp, thuật toán thực tế được sử dụng để phát hiện khuôn mặt trong hình ảnh mục đích là để thông qua các phương pháp đó chúng tôi có được hộp bao quanh khuôn mặt (tức là, các tọa độ của (x, y) của khuôn mặt trong hình ảnh).
  • 33. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16 Khi đã có vùng mặt, chúng ta có thể áp dụng Bước 2 để phát hiện các cấu trúc mặt chính ở vùng mặt. Có rất nhiều bộ phát hiện các điểm đánh dấu bộ phận trên khuôn mặt nhưng tất cả các phương pháp chủ yếu là cố gắng để định vị và gắn nhãn các khu vực mặt sau đây: Miệng, lông mày phải, lông mày trái, mắt phải, mắt trái, mũi, hàm. Máy phát hiện các dấu mốc trên khuôn mặt trong thư viện dlib là việc thực hiện tài liệu One Millisecond Face Alignment with an Ensemble of Regression Trees của Kazemi và Sullivan (2014). Phương pháp này bắt đầu bằng cách sử dụng tập huấn luyện các điểm đánh dấu trên khuôn mặt được gắn nhãn trên một hình ảnh. Những hình ảnh này được dán nhãn theo cách thủ công, chỉ định các tọa độ cụ thể (x, y) của các vùng xung quanh mỗi cấu trúc mặt. Cụ thể hơn hết là xác suất về khoảng cách giữa các cặp điểm ảnh đầu vào. Với dữ liệu huấn luyện này, một nhóm các cây hồi qui được đào tạo để ước lượng các vị trí dấu mốc trên khuôn mặt trực tiếp từ các cường độ điểm ảnh (nghĩa là không có "trích xuất các đặc trưng" nào đang diễn ra). Kết quả cuối cùng là máy phát hiện điểm đánh dấu trên mặt có thể được sử dụng để phát hiện trong thời gian thực với các dự đoán chất lượng cao. 2.4.2. Tìm hiểu về bộ phát hiện dấu mốc trên khuôn mặt của dlib [6] Bộ phát hiện các dấu mốc trên khuôn mặt đã được huấn luyện trước trong thư viện dlib được sử dụng để ước tính vị trí của 68 tọa độ (x, y) các cấu trúc mặt trên mặt. Các chỉ số của 68 tọa độ có thể được hình dung trên hình dưới đây:
  • 34. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 17 Hình 2.20: 68 tọa độ đánh dấu cấu trúc khuôn mặt từ tập dữ liệu iBUG 300-W Các chú thích này là một phần của bộ dữ liệu iBUG 300-W 68 điểm mà bộ dự đoán mốc mặt trên dlib đã được huấn luyện. Điều quan trọng cần lưu ý để thêm sinh động cho máy phát hiện mốc mặt là mô hình điểm 194 có thể được huấn luyện về bộ dữ liệu HELEN. Bất kể bộ dữ liệu nào được sử dụng, cùng một khuôn khổ dlib có thể được tận dụng để đào tạo một dự đoán hình dạng trên dữ liệu huấn luyện đầu vào. Dấu mốc trên khuôn mặt đã được áp dụng thành công để căn chỉnh mặt, ước tính đầu người, trao đổi khuôn mặt, phát hiện chớp mắt và nhiều hơn nữa. 2.5. KHOẢNG CÁCH EUCLIDE [7] Trong toán học, khoảng cách Euclide là khoảng cách giữa hai điểm mà người ta có thể đo bằng thước, và được tính bằng công thức Pytago.
  • 35. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 18 Khoảng cách Euclide giữa hai điểm A và B là chiều dài đoạn thẳng 𝐴𝐵. Trong hệ tọa độ Descartes, nếu A = (A1, A2,…, An) và B = (B1, B2,…, Bn) là hai điểm trong không gian Euclide n chiểu thì khoảng cách từ A đến B bằng: 𝑑(𝐴, 𝐵) = √(𝐴1 − 𝐵1)2 + (𝐴2 − 𝐵2)2 + ⋯ + (𝐴𝑛 − 𝐵𝑛)2 = √∑ (𝐴𝑖 − 𝐵𝑖)2 𝑛 𝑖=1 (2.14) Dạng chuẩn Euclide là khoảng cách của một điểm đến điểm gốc trong không gian Euclide: ‖𝐴‖ = √𝐴12 + 𝐴22 + ⋯ + 𝐴𝑛2 = √𝐴. 𝐴 (2.15) Trong đó phương trình sau cùng là tích vô hướng. Đây là chiều dài của p, khi ta xem nó là một Véc-tơ Euclide có gốc nằm ở gốc tọa độ. Khoảng cách khi đó bằng: ‖𝐴 − 𝐵‖ = √(𝐴 − 𝐵). (𝐴 − 𝐵) = √‖𝐴‖2 + ‖𝐵‖2 − 2𝐴. 𝐵 (2.16) 2.6. PYTHON 2.6.1. Giới thiệu sơ lược về Python Python là một ngôn ngữ lập trình hướng đối tượng và rất thông dụng. Bộ thông dịch có thể được dùng một cách tương tác, làm cho việc thử nghiệm các tính năng của ngôn ngữ trở nên dễ dàng. Được tạo ra bởi Guido van Rossum tại Amsterdam vào năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý. Python là một ngôn ngữ lập trình mạnh và dễ học. Python có tính hiệu quả rất cao với các cấu trúc dữ liệu và đơn giản nhưng lại rất hữu dụng với ngôn ngữ lập trình hướng đối tượng. Cú pháp Python gọn gàng và có tính năng gõ động, cùng với tính diễn dịch tự nhiên làm Python là một ngôn ngữ lý tưởng dành cho viết kịch bản và phát triển ứng dụng nhanh chóng trong nhiều lĩnh vực trên nhiều nền tảng khác nhau.
  • 36. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19 2.6.2 Các đặc điểm của ngôn ngữ python. Dễ học, dễ đọc: Python được thiết kế để trở thành một ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục rõ ràng, dễ hiểu. Từ khóa: Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu và cấu trúc, cú pháp so với các ngôn ngữ khác. Python là một ngôn ngữ phân biệt kiểu chữ HOA, chữ thường. Khối lệnh: Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng cặp kí hiệu hoặc từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một khối lệnh. Ngược lại, Python có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa nó. Ta có thể dùng dấu Tab để thụt các khối lệnh vào để dễ dàng viết lệnh hơn. Khả năng mở rộng: Python có thể được mở rộng. Nếu ta biết sử dụng C, ta có thể dễ dàng viết và tích hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành hàm xây dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng chức năng của trình thông dịch, hoặc liên kết các chương trình Python với các thư viện chỉ ở dạng nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp). Hơn thế nữa, ta cũng có thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và sử dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh hỗ trợ cho ứng dụng đó. Trình thông dịch: Python là một ngôn ngữ lập trình dạng thông dịch, vì vậy nên Python tiết kiệm được thời gian phát triển ứng dụng vì không cần phải thực hiện biên dịch và liên kết. Trình thông dịch có thể được sử dụng để chạy file script, hoặc cũng có thể được sử dụng theo cách tương tác. Ở chế độ tương tác, trình thông dịch Python tương tự shell của các hệ điều hành họ Unix. Tại đó, ta có thể nhập vào từng biểu thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức. Đặc
  • 37. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20 điểm này rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn ngữ; hoặc để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển phần mềm. Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính như với máy tính bỏ túi. Lệnh và cấu trúc điều khiển: Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần phải kết thúc câu lệnh bằng bất kì kí tự gì. Như các ngôn ngữ khác, Python cũng có các cấu trúc điều khiển. Chúng bao gồm:  Cấu trúc rẽ nhánh: Cấu trúc if (có thể sử dụng thêm elif hoặc else), dùng để thực thi có điều kiện một khối mã cụ thể.  Lệnh while: Thực thi lặp đi lặp lại các lệnh hoặc phần thân của vòng lặp miễn là điều kiện đã cho là true. Khi điều kiện là false, thì điều khiển sẽ thoát ra khỏi vòng lặp.  Vòng lặp for: Lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào biến cục bộ để sử dụng với khối mã trong vòng lặp. Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng đối tượng) và lệnh def dùng để định nghĩa hàm. Hệ thống kiểu dữ liệu: Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự động xác định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ liệu tại thời điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu một thao tác trên một đối tượng bị thất bại, thì có nghĩa là đối tượng đó không sử dụng một kiểu thích hợp. Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác không hợp lệ. Ở Python, ta không cần phải khai báo biến. Biến được xem là đã khai báo nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python sẽ tự động xác định kiểu dữ liệu của biến.
  • 38. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21 Module: Python cho phép chia chương trình thành các module để có thể sử dụng lại trong các chương trình khác. Python cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ. Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, trợ giúp lập trình mạng. Đa năng: Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả. - So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều cấu trúc hơn. - So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn nhiều kiểu dữ liệu cấp cao, ví dụ như các mảng (array) linh hoạt và từ điển (dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng C. Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập trình viên:  Python thích hợp với các chương trình lớn hơn cả AWK và Perl.  Python được sử dụng để lập trình Web. Nó có thể được sử dụng như một ngôn ngữ kịch bản.  Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong phú, Python cho phép người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các thành phần COM hay CORBA, hỗ trợ các loại định dạng dữ liệu Internet như email, HTML, XML và các ngôn ngữ đánh dấu khác. Python cũng được cung cấp các thư viện xử lý các giao thức Internet thông dụng như HTTP, FTP,…  Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả năng xử lí văn bản, tài liệu hiệu quả, và có thể làm việc tốt với các công nghệ Web khác.  Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công cụ Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric Python, ScientificPython,…
  • 39. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22  Python có thể được sử dụng để phát triển các ứng dụng desktop. Lập trình viên có thể dùng wxPython, PyQt, PyGtk để phát triển các ứng dụng giao diện đồ họa (GUI) chất lượng cao. Python còn hỗ trợ các nền tảng phát triển phần mềm khác như MFC, Carbon, Delphi, X11, Motif, Tk, Fox, FLTK, …  Python cũng có sẵn một unit testing framework để tạo ra các các bộ test (test suites). Multiple paradigms (đa biến hóa): Python là một ngôn ngữ đa biến hóa (multiple paradigms). Có nghĩa là, thay vì ép buộc mọi người phải sử dụng duy nhất một phương pháp lập trình, Python lại cho phép sử dụng nhiều phương pháp lập trình khác nhau: hướng đối tượng, có cấu trúc, chức năng, hoặc chỉ hướng đến một khía cạnh. Python kiểu kiểu động và sử dụng bộ thu gom rác để quản lí bộ nhớ. Một đặc điểm quan trọng nữa của Python là giải pháp tên động, kết nối tên biến và tên phương thức lại với nhau trong suốt thực thi của chương trình. 2.6.3. Ứng dụng của Python Python được ứng dụng trong nhiều lĩnh vực khác nhau:  Xây dựng các tiện ích nhỏ để tự động hóa các công việc nào đó như: tự động tìm kiếm, phân loại tập tin theo tiêu chí riêng, tự động cập nhật các tập tin văn bản theo yêu cầu nào đó…  Xây dựng ứng dụng web: Python cung cấp nhiều framework để ta có thể lựa chọn để phát triển ứng dụng web tùy theo mô hình của ứng dụng như: Django, Pyramid, Flask,…  Lập trình các tính toán khoa học, số liệu nhờ các công cụ và lớp thư viện được xây dựng sẵn như: SciPy, IPython,…  Lập trình ứng dụng desktop (wxWidgets), lập trình màn hình tương tác (Kivy),… Bên cạnh đó, Python còn là ngôn ngữ lập trình được lựa chọn để giảng dạy về lập trình các khóa học nhập môn lập trình ở các trường Đại học lớn trên thế giới.
  • 40. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23 2.7. THƯ VIỆN DLIB Hình 2.11: Thư viện dlib Ngoài thư viện OpenCV, chúng tôi còn sử dụng dlib, một thư viện mã nguồn mở khác cho việc cài đặt hệ thống. Dlib được tạo ra từ 2002 bởi tác giả Davis King, được viết trên ngôn ngữ lập trình C++. Khác với mục đích của OpenCV là cung cấp hạ tầng thuật toán cho các ứng dụng xử lý ảnh và thị giác máy tính, dlib được thiết kế cho các ứng dụng máy học và trí tuệ nhân tạo với các thư viện con chính như sau: - Classification: các kỹ thuật phân lớp chủ yếu dựa trên hai phương pháp cơ sở là kNN và SVM
  • 41. CHƯƠNG 2 CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24 - Data transformation: các thuật toán biến đổi dữ liệu nhằm giảm số chiều, loại bỏ các dữ liệu dư thừa và tăng cường tính khác biệt (discriminant) của các đặc điểm được giữ lại - Clustering: các kỹ thuật phân cụm - Regression: các kỹ thuật hồi qui - Structure prediction: các thuật toán dự đoán có cấu trúc - Markov Random Fields: các thuật toán dựa trên các trường Markov ngẫu nhiên Cụ thể trong bài này, phần phát hiện khuôn mặt người một cách tự động sẽ được lập trình bằng cách sử dụng thư viện dlib với dữ liệu huấn luyện và kỹ thuật hồi qui đã được cung cấp trước.
  • 42. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25 1. A Chương 3. TÍNH TOÁN VÀ THIẾT KẾ Với những yêu cầu của đề tài, nhóm đã hình thành sơ đồ khối của hệ thống như sau. Hệ thống gồm các thiết bị như: kit Raspberry Pi 3, bàn phím, màn hình, HD webcam C310. Hình 3.1: Sơ đồ kết nối hệ thống. Kit Raspberry: là khối xử lý trung tâm, có chức năng xử lý tín hiệu nhận được từ bàn phím và camera. Sau đó xuất tín hiệu, kết quả ra màn hình. Bàn phím: Có chức năng để lập trình, điều khiển kit Rasberry. Camera: Có chức năng lấy dữ liệu cần xử lý. Loa: Có chức năng thông báo, cảnh báo bằng âm thanh khi phát hiện được có ngủ gật. Màn hình: Có chức năng hiện thị kết quả.
  • 43. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26 3.1. TỔNG QUAN VỀ KIT RASPBERRY PI 3 3.1.1. Giới thiệu tổng quan Raspberry Pi được phát triển đầu tiên vào năm 2012. Raspberry Pi ban đầu là như một thẻ card được cắm trên bo mạch máy tính được phát triển bởi các nhà phát triển ở Anh. Sau đó Raspberry Pi đã đượ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. Được phát triển bởi Raspberry Pi Foundation – là tổ chức phi lợi nhuận với tiêu chí xây dựng hệ thống mà nhiều người có thể sử dụng được trong những công việc tùy biến khác nhau. Raspberry Pi sản xuất bởi 3 OEM: Sony,Qsida, Egoman. Và được phân phối chính bởi Element14, RS Components và Egoman. Mặc dù chậm hơn so với các dòng laptop, máy tính hiện đại nhưng Raspberry Pi vẫn được xem là máy tính Linux hoàn chỉnh và có thể cung cấp tất cả các khả năng mà người dùng mong đợi, với mức tiêu thụ năng lượng thấp. Hình 3.2: Bo mạch Raspberry Pi 3
  • 44. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27 3.1.2. Cấu tạo phần cứng của kit Raspberry Pi 3 Raspberry Pi 3 Model B là thế hệ thứ 3 và mới nhất tính đến thời điểm hiện tại của gia đình Raspberry Pi, nó ra đời vào tháng 2 năm 2016. Cấu hình Raspberry Pi 3 có khá nhiều thay đổi. Raspberry Pi 3 gồm 10 phần chính: Chip SOC (System On Chip) Broadcom BCM 2837: chạy ở tốc độ 1.2 GHz, được nâng cấp hơn rất nhiều so với các thế hệ trước. Chip này tương đương với nhiều loại được sử dụng trong smartphone phổ thông hiện nay, và có thể chạy được hệ điều hành Linux. Tích hợp trên chip này là nhân đồ họa (GPU) Broadcom VideoCore IV Dual Core. GPU này đủ mạnh để có thể chơi một số game phổ thông và phát video chuẩn full HD. 40 ngõ GPIO (General Purpose Input Output): Giống như các chân của vi điều khiển, các IO này của Raspberry Pi cũng được sử dụng để xuất tín hiệu ra led, thiết bị… hoặc đọc tín hiệu vào từ các nút nhấn, công tắc, cảm biến… Ngoài ra còn có các IO tích hợp các chuẩn truyền dữ liệu UART, I2C và SPI. Ngõ HDMI: dùng để kết nối Pi với màn hình máy tính hay tivi có hỗ trợ cổng HDMI. Cổng DSI (Display Serial Interface): Cổng này dùng để kết nối với LCD hoặc màn hình OLED. Ngõ audio 3.5mm: Kết nối dễ dàng với loa ngoài hay headphone. Đối với tivi có cổng HDMI, ngõ âm thanh được tích hợp theo đường tín hiệu HDMI nên không cần sử dụng ngõ audio này. Cổng USB: Một điểm mạnh nữa của Pi là tích hợp 4 cổng USB 2.0. Đủ để cắm các ngoại vi cần thiết như chuột, bàn phím và usb wifi. Cổng Ethernet: Cho phép kết nối Internet dễ dàng. Cắm dây mạng vào Pi, kết nối với màn hình máy tính hay tivi và bàn phím, chuột là bạn có thể lướt web dễ dàng.
  • 45. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28 Khe cắm thẻ nhớ SD: Raspberry Pi không tích hợp ổ cứng. Thay vào đó nó có thể dùng thẻ SD để lưu trư dữ liệu. Toàn bộ hệ điều hành Linux sẽ hoạt động trên thẻ 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. Jack nguồn micro USB 5V, 2.5A (tối thiểu là 1A). Ngoài ra, Raspberry Pi 3 có đặc điểm nổi trội hơn các phiên bản trước là có tích hợp thêm wifi để có thể kết nối mạng internet không dây và bluetooth 4.1. Hình 3.3: Các cổng giao tiếp ngoại vi
  • 46. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29 Hình 3.4: Sơ đồ chân của Raspberry Pi 3 3.1.3. Hệ điều hành của kit Raspberry Pi 3 Có 5 phiên bản hệ điều hành được cung cấp chính thức cho Raspberry Pi: Raspian "wheezy": Đây là distro dựa trên Debian wheezy, sử dụng hard-float ABI (tính toán dấu chấm động bằng phần cứng) cho thời gian chạy các ứng dụng nhanh hơn với giao diện LXDE (thay vì GNOME). Có đầy đủ web browser, media player, tools, etc … Nói chung này dành cho những người muốn dùng Raspberry Pi như một cái PC.
  • 47. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30 Soft-float "wheezy": Vẫn được xây dựng dựa trên Debian wheezy nhưng việc xử lý dấu chấm động được thực hiện bằng phần mềm. Việc này giúp bạn có thể sử dụng máy ảo Java (Oracle JVM) trên Raspberry. Arch Linux: Phiên bản giành cho ARM. Đảm bảo thời gian khởi động trong vòng 10 giây. Chỉ khởi động và load các gói cần thiết. Để sử dụng được Arch Linux bạn cần có kiến thức cơ bản về Linux. Pidora: Là phiên bản của Fedora được tối ưu cho RPi, có sẵn giao diện đồ họa. Giành cho những ai đã quen xài Fedora. RISC OS: Là hệ điều hành do nhóm phát triển ARM thiết kế riêng. Đây không phải là một phiên bản Linux, do vậy bạn cần làm quen với cấu trúc và câu lệnh đặc trưng cho hệ điều hành này. Ngoài ra còn nhiều hệ điều hành khác bạn có thể cài đặt: Raspbmc, Android... 3.2. CÀI ĐẶT HỆ ĐIỀU HÀNH CHO KIT RASPBERRY PI 3 [8] 3.2.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.  Dây mạng.  Nguồn điện 5V, 2.5A (tối thiểu là 1A). 3.2.2. Cài đặt hệ điều hành Raspbian Bước 1: Tải bản cài đặt về máy tính và giải nén. Chúng ta sẽ vào trang www.raspberrypi.org và tải phiên bản mới nhất đó là hệ điều hành Raspbian Stretch with desktop.
  • 48. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31 Hình 3.5: 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ẻ.
  • 49. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32 Hình 3.6: Phần mềm SD Card Formatter Bước 3: Tải phần mềm Win32 Disk Imager và cài đặt. Khi cài đặt xong. Chúng ta mở phần mềm, chọn đường dẫn đến file chứa hệ điều hành Raspbian Stretch và chọn Write. Chờ báo hoàn thành là đã xong bước cài hệ điều hành vào thẻ nhớ.
  • 50. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33 Hình 3.7: Phần mềm Win32 Disk Imager. 3.2.3. Điều khiển Raspberry Pi 3 từ xa bằng cách remote máy tính Bước 1: Gắn thẻ nhớ vào máy tính sẽ xuất hiện ổ đĩa SD tên là Boot, vào Boot và mở file cmdline.text và thêm vào cuối dòng chữ: “ip=192.168.137.2” và lưu lại. Ở đây 192.168.137.2 là địa chỉ của Raspberry Pi (có thể đặt số khác với yêu cầu khác số 1). Hình 3.8: Vào ổ đĩa Boot
  • 51. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34 Hình 3.9: Thêm địa chỉ IP của Raspberry vào file cmdline.text 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 3.10: Nhập địa chỉ ip của Raspberry Pi
  • 52. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35 Sau đó, cho phép chuyển tiếp X11 Hình 3.11: Chuyển tiếp X11 Bước 4: Sau khi nhấn Open, ta sẽ truy cập được vào màn hình command line của Raspberry Pi, sau đó nhập username và password (mặc định là pi và raspberry). Sau đó cài đặt xrdp bằng lệnh : sudo apt-get install xrdp
  • 53. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36 Hình 3.12: Cài đặt xrdp bằng lệnh 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 3.13: Mở Remote Desktop và kết nối. Bước 6: Sau khi đã kết nối, chúng ta đăng nhập bằng cách nhập usename và password như bình thường.
  • 54. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37 Hình 3.14: Nhập usename 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 3.15: Giao diện của hệ điều hành Raspbian Stretch. 3.3. CÀI ĐẶT THƯ VIỆN CHO RASPBERRY PI 3 [8] 3.3.1. Cài đặt OpenCV Bước 1: Mở rộng hệ thống tập tin $ sudo raspi-config
  • 55. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38 $ sudo reboot Sau khi khởi động lại, hệ thống tập tin cần được mở rộng bao gồm tất cả các không gian có sẵn trên thẻ nhớ micro-SD. Chúng ta xác minh rằng đĩa đã được mở rộng bằng cách thực hiện df-h và kiểm tra đầu ra. OpenCV, cùng với tất cả các phụ thuộc của nó, sẽ cần một vài gigabyte trong quá trình biên dịch, vì vậy nên xóa các công cụ Wolfram để giải phóng một số không gian trên Pi: $ 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: $ sudo apt-get update $ sudo apt-get upgrade 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 Tiếp theo, chúng ta cần phải cài đặt một số gói ảnh I/O cho phép chúng ta tải các định dạng tệp hình ảnh khác nhau từ đĩa. Ví dụ về định dạng tệp như JPEG, PNG, TIFF, vv ..: $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev Cũng 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ác thư viện này cho phép đọc 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: $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
  • 56. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39 $ sudo apt-get install libxvidcore-dev libx264-dev Thư viện OpenCV đi kèm với một mô đun phụ có tên highgui được sử dụng để hiển thị hình ảnh lên màn hình của chúng tôi và xây dựng các GUI cơ bản. Để biên dịch mô đun highgui, 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: $ cd ~ $ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip $ unzip opencv.zip Chúng ta sẽ cài đặt đầy đủ OpenCV 3 (để có quyền truy cập vào các tính năng như SIFT và SURF), vì vậy chúng ta cũng cần lấy tập tin chứa opencv_contrib: $ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip $ unzip opencv_contrib.zip Bước 4: Python 2.7
  • 57. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40 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 $ sudo python get-pip.py Cài đặt môi trường ảo. Môi trường ảo là một công cụ đặc biệt được sử dụng để giữ các yêu cầu phụ thuộc vào các dự án khác nhau ở các vị trí riêng biệt bằng cách tạo ra các môi trường Python độc lập, độc lập cho mỗi môi trường ảo nên sử dụng môi trường ảo sẽ tiện lợi và cần thiết. $ sudo pip install virtualenv virtualenvwrapper $ sudo rm -rf ~ / .cache / pip Mở một thiết bị đầu cuối mới $ source ~ / .profile 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: $ mkvirtualenv cv -p python2 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 Python hoàn toàn độc lập và bị cô lập từ phiên bản Python mặc định được tải xuống của Raspbian Stretch. Bất kỳ gói Python nào trong thư mục các gói trang web toàn cầu sẽ không có sẵn cho môi trường ảo cv. Tương tự như vậy, bất kỳ gói Python nào được cài đặt trong gói trang web của cv sẽ không có sẵn cho việc cài đặt toàn cầu của Python. Điều này sẽ giúp chúng ta tránh nhầm lẫn.
  • 58. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41 Hình 3.16: 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: $ pip install numpy 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: $ cd ~ / opencv-3.1.0 / $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE = RELEASE
  • 59. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42 -D CMAKE_INSTALL_PREFIX = / usr / local -D INSTALL_PYTHON_EXAMPLES = ON -D OPENCV_EXTRA_MODULES_PATH = ~ / opencv_contrib-3.1.0 / modules -D BUILD_EXAMPLES = ON .. Cuối cùng, chúng ta biên dịch OpenCV: $ make -j4 Hình 3.17: Biên dịch OpenCV 3 trên Raspbian Stretch thành công. Từ đó, cài đặt OpenCV 3 trên Raspberry Pi 3: $ sudo make install $ sudo ldconfig Bước 6: Kết thúc cài đặt OpenCV trên Raspberry Pi Đối với Python 2.7:
  • 60. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43 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: $ workon cv $ python >>> import cv2 >>> version cv2 .____ '3.1.0' >>>
  • 61. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44 Hình 3.18: Xác nhận OpenCV 3 đã cài đặt thành công. 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 3.3.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: 1. Boost 2. Boost.Python 3. Cmake 4. X11 Tất cả những điều này có thể được cài đặt qua các lệnh sau:
  • 62. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45 $ sudo apt-get update $ 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: $ workon <tên virtualenv> Chúng ta truy cập vào môi trường ảo đã tạo từ trước tên là cv: $ workon 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: $ pip install numpy $ pip install scipy $ pip install scikit-image Sau đó chúng ta có thể cài đặt dlib qua pip: $ pip install dlib Bước 4: Kiểm tra cài đặt dlib $ python Type "help", "copyright", "credits" or "license" for more information. >>> import dlib
  • 63. CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46 Thư viện dlib đã được cài đặt thành công trên Raspberry Pi 3 trong môi trường Python 2.7
  • 64. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47 Chương 4. THI CÔNG HỆ THỐNG 4.1. SƠ ĐỒ KHỐI HỆ THỐNG Hình 4.1: Sơ đồ khối hệ thống Ảnh (từ camera) Tiền xử lý Phát hiện khuôn mặt dùng giải thuật Adaboost Đánh dấu cấu trúc khuôn mặt dùng Facial Landmarks Trích xuất vùng mắt Tính toán tỷ lệ mắt Phát hiện ngủ gật Cảnh báo
  • 65. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48 Trước tiên, ta sẽ thiết lập một camera theo dõi khuôn mặt. Để phát hiện một người có buồn ngủ hay không, ta chỉ cần vùng mắt. Một khi đã có vùng mắt, ta có thể áp dụng tỷ lệ cạnh mắt để xác định xem mắt có đóng lại hay không. Nếu đôi mắt đã được đóng lại trong khoảng thời gian đủ dài, ta có thể giả định rằng tài xế có nguy cơ buồn ngủ và báo động kịp thời để thu hút sự chú ý của tài xế. 4.1.1. Ảnh từ camera Để truy cập vào camera, ta cần dùng thư viện imutils – một bộ các chức năng xử lý hình ảnh 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ý. 4.1.2. Tiền xử lý Chúng tôi bắt đầu vòng lặp vô hạn các khung hình trong video. Sau đó tiến hành bước tiền xử lý bằng cách thay đổi kích thước nó để có chiều rộng là 450 pixel và chuyển sang màu xám với câu lệnh trong OpenCV: gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 4.1.3. Phát hiện khuôn mặt dùng HOG Để 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. Lặp lại quá trình đó cho mỗi pixel đơn trong ảnh, quá trình sẽ kết thúc 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 và chúng thể hiện hướng từ sáng đến tối trên toàn bộ hình ảnh. Lý do để thay thế các điểm ảnh bằng các gradient là nếu 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 sẽ có các giá trị pixel khác
  • 66. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49 nhau. Nhưng khi xem xét về hướng thay đổi độ sáng thì khi kết thúc quá trình ảnh thật sự sáng và thật sự tối sẽ cùng được diễn tả chính xác. Việc lưu trữ gradient cho mỗi pixel sẽ cho quá nhiều chi tiết nên tốt hơn là chỉ cần nhìn thấy hướng cơ bản của ánh sáng hay bóng tối ở mức cao hơn để nhìn thấy các mẫu cơ bản của hình ảnh. Để thực hiện việc này, thực hiện chia nhỏ hình ảnh thành những ô vuông nhỏ kích thước 16x16 pixel. Trong mỗi hình vuông đó, thực hiện đếm gradient trong mỗi hướng chính (bao nhiêu điểm lên, điểm lên phải, điểm lên trái, điểm xuống…). Sau đó thay thế hình vuông đó trong hình ảnh bằng hướng mũi tên mạnh nhất. Kết quả cuối cùng là biến hình ảnh ban đầu thành 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 một cách đơn giản. Để phát hiện mặt người với các đặc trưng HOG, thực hiện tìm một phần của hình ảnh trong 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, chúng tôi tiến hành các bước sau: Bước 1: Chuẩn bị P mẫu là ảnh mặt người và trích xuất các vector đặc trưng HOG từ các bức ảnh này. 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) và trích xuất các vector HOG từ các ảnh này. Bước 3: Sử dụng một bộ phân loại SVM tuyến tính để học các vector của các mẫu tích cực (là ảnh mặt người) và tiêu cực (các ảnh không phải mặt người) đã chuẩn bị. Bước 4: Đối với mỗi bức ảnh trong bộ ảnh tiêu cực, sử dụng một cửa sổ trượt di chuyển đi qua tất cả các vị trí có thể của ảnh vào. Tại mỗi vị trí của cửa sổ trượt tính vector HOG của cửa sổ và đưa vào bộ phân lớp. Nếu bộ phân lớp sai một cửa sổ là ảnh mặt thì ghi lại vector tương ứng cùng với xác xuất phân lớp. Bước 5: Lấy các mẫu nhận dạng sai ở bước 4 và sắp xếp chúng theo mức xác xuất nhận dạng sai và cho bộ phân lớp học lại sử dụng các mẫu sai này.
  • 67. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50 Bước 6: Á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. Trong đề tài này, để tìm và phát hiện vị trí khuôn mặt trong ảnh, chúng tôi sử dụng hệ thống phát hiện khuôn mặt của thư viện dlib: detector=dlib.get_frontal_face_detector(). 4.1.4. Đánh dấu cấu trúc khuôn mặt dùng Facial Landmarks Bước tiếp theo là áp dụng 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 để định vị từng khu vực quan trọng trên khuôn mặt. Các khu vực đó bao gồm: mày, mắt, mũi, miệng và đường viền khuôn mặt. Sau đó, chuyển đổi kết quả sang mảng NumPy. 4.1.5. Trích xuất vùng 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. Sử dụng phương pháp cắt mảng NumPy, chúng ta có thể trích xuất các tọa độ (x, y) của mắt trái và mắt phải. 4.1.6. Tính toán tỷ lệ mắt Với các tọa độ của (x, y) cho cả hai mắt, ta sẽ tính tỷ lệ mắt, trong bài báo của Soukupová và Čech khuyến nghị sử dụng cả hai tỷ lệ cạnh mắt để có được ước tính tốt. Mỗi mắt được đại diện bởi 6 tọa độ (x, y), bắt đầu từ góc trái của mắt (như thể bạn đang nhìn người đó), và sau đó làm việc theo chiều kim đồng hồ xung quanh phần còn lại của khu vực:
  • 68. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51 Hình 4.1: Đánh dấu mắt bằng 6 điểm Có một mối quan hệ giữa chiều rộng và chiều cao của các tọa độ này. Dựa trên bài báo của Soukupová và Čech trong bài báo năm 2016 [4], chúng ta có thể lấy được một phương trình phản ánh mối quan hệ này gọi là tỉ số mắt (EAR): 2 6 3 5 1 4 || || || || 2|| || p p p p EAR p p      (4.1) Trong đó p1đến p6 là các vị trí đánh dấu mốc trên mắt. Tử số của phương trình này tính khoảng cách giữa các điểm mốc dọc trong khi mẫu số tính khoảng cách giữa các điểm mốc ngang, trọng số mẫu số bằng 2 là thích hợp vì chỉ có một tập các điểm ngang mà có hai bộ điểm thẳng đứng. 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. Sử dụng phương trình đơn giản này, chúng ta có thể tránh các kỹ thuật xử lý hình ảnh và chỉ đơn giản dựa vào tỷ lệ khoảng cách mốc thời gian để xác định xem một mắt đang nhắm hay không. Để làm cho điều này rõ ràng hơn, hãy xem xét các con số sau đây từ Soukupová và Čech [4]:
  • 69. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52 Hình 4.3: Hình ảnh của mốc đánh dấu mắt khi mắt mở, mắt nhắm và tỉ lệ Ở phía trên bên trái của hình, chúng ta có một mắt hoàn toàn mở - tỉ lệ mắt ở đây sẽ lớn và tương đối ổn định theo thời gian. Tuy nhiên, một khi mắt nhấp nháy (phía trên bên phải hình) tỷ lệ mắt giảm đáng kể gần bằng không. Phát hiện ngủ gật: Đầu tiên chúng ta sẽ thiết lập một ngưỡng mắt để nhận dạng trạng thái mắt nhắm hay mắt mở. Và chúng ta sẽ chọn ngưỡng mắt là 0,2. Theo báo cáo năm 2016 trong bài Real-Time Eye Blink Detection using Facial Landmarks của Tereza Soukupová and Jan Čech [4]. Dó đó, chúng ta chọn ngưỡng mắt là 0,2. Sau đó chúng ta sẽ kiểm tra tỉ số mắt EAR đã tính toán ở trước đó. Nếu tỉ số mắt nhỏ hơn ngưỡng mắt trong một khoảng thời gian nào đó thì cho rằng người đó đang ngủ gật và gửi thông báo tới màn hình. Công việc này sẽ được thực hiện trong suốt quá trình để phát hiện trạng thái ngủ gật. 4.1.7. Phát hiện ngủ gật Chúng tôi bắt đầu phát hiện ngủ gật bằng việc thiết lập trước các giá trị:
  • 70. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53  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 là tổng số khung liên tiếp mà người đó đã nhắm mắt.  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. - Tiếp đến chúng tôi kiểm tra tỷ số mắt EAR đã được tính có dưới ngưỡng NGUONG_MAT hay không để xác định mắt đóng hoặc mở. Nếu tỷ số mắt EAR được xác định nhỏ hơn ngưỡng NGUONG_MAT thì tăng biến DEM. Nếu DEM vượt quá SO_KHUNG_HINH đã đặt trước thì chúng tôi giả định rằng người đó đang ngủ gật và bắt đầu bậ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 lớn hơn SO_KHUNG_HINH thì thiết lập lại DEM ban đầu =0 và tắt cảnh báo. Thực hiện lại công việc đó trong suốt quá trình thu hình để phát hiện tình trạng ngủ gật. 4.1.8. 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 ON và bật âm thanh để cảnh báo. Để thực sự phát báo động WAV / MP3, chúng tôi cần thư viện pygame. Thư viện pygame được cài đặt thuận tiện qua pip lệnh “pip install pygame”. 4.2. KẾT QUẢ
  • 71. CHƯƠNG 4 THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54 Hình 4.4: Phát hiện ngủ gật. Hình 4.4 là kết quả của quá trình phát hiện ngủ gật. Trên hình ảnh, chúng ta có thể thấy rằng vùng mắt đã được đánh dấu. Sau khi được xử lý và phát hiện được đối tượng cần xử lý ngủ gật thì sẽ thông báo trên màn hình là chữ “NGU GAT” và âm thanh sẽ phát ra từ loa.
  • 72. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.1. Kết quả Hình 5.1: Phát hiện khuôn mặt Hình 5.2: Đánh dấu 68 điểm của khuôn mặt dùng giải thuật Facial Landmarks.
  • 73. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 Hình 5.3: Phát hiện trạng thái mắt ở nhiều trường hợp. Hình 5.4: Phát hiện ngủ gật vào ban ngày không đeo kính. Hình 5.5: Phát hiện ngủ gật vào ban ngày có đeo kính.
  • 74. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 Hình 5.6: Phát hiện ngủ gật vào ban đêm không đeo kính. 5.2. Nhận xét Để đánh giá, nhận xét một cách thực tế, nhóm đã phát hiện ngủ gật ảnh tĩnh ở nhiều góc độ và trường hợp khác nhau. Nhóm sử dụng các hình ảnh ở nhiều trường hợp khác nhau như: mặt người góc thẳng, góc nghiêng, mắt nhắm, mắt mở, đeo kính, không đeo kính, đủ ánh sáng, thiếu ánh sáng, ban ngày, ban đêm.v.v. Kết quả được thể hiện ở bảng 5.1 và 5.2:
  • 75. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 Bảng 5.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 Nhắm 26/30 = 86.6% 28/30 = 93.3% 23/30 = 76.7% 26/30 = 86.7% Mở 28/30 = 93.3% 29/30 = 96.7% 26/30 = 86.7% 27/30 = 90% Bảng 5.1 cho ta thấy được kết quả của việc nhận dạng trạng thái của mắt với trường hợp khuôn mặt đối diện với camera. Độ chính xác tương đối cao và tương đồng ở 2 trường hợp đủ ánh sáng và thiếu ánh sáng. Trường hợp người không đeo kính đạt chính xác rất cao (trên 90%) và thấp hơn (trung bình đạt 80%) ở trường hợp người có đeo kính. Khi đeo kính, hệ thống khó nhận biết được mắt và chỉ sử dụng bộ dự đoán để vẽ mí mắt nên độ chính xác sẽ thấp hơn trường hợp có đeo kính.
  • 76. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 Bảng 5.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 Nhắm 21/30 = 70% 24/30 = 80% 19/30 = 63.3% 25/30 = 83.3% Mở 29/30 = 96.7% 30/30 = 100% 26/30 = 86.7% 27/30 = 90% Bảng 5.2 cho ta thấy được kết quả của việc nhận dạng trạng thái của mắt với trường hợp khuôn mặt xoay nhiều góc khác nhau không quá 450 . Độ chính xác gần như tương đồng ở 2 trường hợp đủ ánh sáng và thiếu ánh sáng. Trường hợp người không đeo kính đạt chính xác tương đối cao và thấp hơn ở trường hợp người có đeo kính. Qua bảng 5.2, ta thấy được sự khác biệt của việc nhận dạng trạng thái nhắm hay mở của mắt. Trường hợp nhận dạng mắt mở đạt độ chính xác rất cao (trên 95%) trong khi trường hợp 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ả cho thấy rằng độ chính xác khá cao ở cả phát hiện vào ban ngày. Nhưng về ban đêm, thiếu ánh sáng nên độ chính xác thấp hơn so với ban ngày. Và việc nhận dạng phải chính diện khuôn mặt, không vượt quá 30o .
  • 77. CHƯƠNG 5 KẾT QUẢ NHẬN XÉT ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 Đối với việc đeo kính, gây khó khăn trong việc đánh dấu mắt. Vì vậy, về ban đêm việc sử dụng kính sẽ gây ảnh hưởng cho việc phát hiện ngủ gật và làm cho việc phát hiện không được chính xác, thật chí không thể phát hiện được. Việc phát hiện ngủ gật, khoảng cách giữa camera và mắt người là khoảng dưới 1,2 mét thì việc phát hiện được chính xác nhất. Việc sử dụng kính cũng vô cùng quan trọng. Chỉ phát hiện được khi đối tượng sử dụng loại kính trong suốt để dễ dàng phát hiện được mắt và xử lý. Đối với những loại kính râm, kính chống nắng sẽ không nhận dạng được mắt nên việc phát hiện ngủ gật cũng không thể được.
  • 78. CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1. KẾT LUẬN Trong suốt quá trình thực hiện đề tài nhóm đã xây dựng được một hệ thống ứng dụng cho tài xế khi điều khiển phương tiện tham gia giao thông. Đề tài được xây dựng trên hệ điều hành Linux để mô phỏng và kit Raspberry Pi 3 để sử dụng thực tế với sự hỗ trợ của phương tiện phần mềm xử lý ảnh là thư viện mã nguồn mở OpenCV và dlib với nhiệm vụ là phát hiện và cảnh báo khi tài xế đang điều khiển phương tiện gia thông có dấu hiệu buồn ngủ. Trên thực tế chương trình này đã đáp ứng được các yêu cầu sau: Chương trình ứng dụng thực tế chạy trên kit Raspberry Pi. Chương trình ứng dụng trên nền Linux được viết từ ngôn ngữ Python và được truy xuất hàm từ thư viện mã nguồn mở OpenCV và dlib để xử lý ảnh trên kit Raspberry Pi 3. Với kết quả chạy trên thiết bị kit Raspberry Pi 3 tốc độ xử lý 1.2GHz, RAM 1GB, camera với độ phân giải 3MP, kích thước khung ảnh rộng 400 pixel. Tốc độ xử lý mỗi khung ảnh tương ứng khoảng 0.15 giây chậm hơn mô phỏng khoảng 2 lần nhưng không ảnh hưởng nhiều đến kết quả cuối cùng cho việc phát hiện và cảnh báo tài xế ngủ gật vẫn đảm bảo độ chính xác cao trong thời gian thực. Kết quả đáp ứng tốt với yêu cầu của hệ thống. 6.1.1. Ưu điểm - Là chương trình được lập trình do đó tiết kiệm được chi phí thiết kế và thi công phần cứng cho một hệ thống cảnh báo với chức năng tương tự. - Linh hoạt và tiện lợi do kích thước của kit Raspberry Pi 3 rất nhỏ nên có thể tích hợp trực tiếp trên xe ô tô hoặc có thể dựa vào các hệ thống an ninh có sẵn của xe. Từ đó có thể phát triển được ứng dụng một cách hiệu quả hơn. - Kết quả mô phỏng và ứng dụng thực tế trên kit Raspberry Pi 3 đều cho độ chính xác cao. - Chương trình đáp ứng được yêu cầu thực tế, thời gian xử lý và cảnh báo đủ nhanh để đáp ứng cho một ứng dụng yêu cầu thời gian thực.