Đến tháng 01 năm 2014, Intel cho ra mắt thiết bị camera 3D intel realsense với khả năng cảm nhận các vật trong không gian 3D có cự ly gần, thời gian thực và có độ chính xác cao góp phần
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
Nha Trang - Tháng 6/2017
Trang 21
LỜI NÓI ĐẦU
Công nghệ thông tin đang ngày càng trở nên quan trọng trong đời sống của mỗi chúng ta Việc tìm ra cách để giao tiếp giữa người và máy sao cho tự nhiên và thân thiện đang là mối quan tâm nghiên cứu của các nhà nghiên cứu và phát triển ứng dụng Hiện tại chúng ta đang sử dụng các thiết bị để hỗ trợ giao tiếp như chuột, bàn phím là cách tiếp cận truyền thống không tự nhiên, thay vào đó là những phương pháp giao tiếp không cần tiếp xúc như sử dụng các cử chỉ của các bộ phận trên cơ thể người là việc mà chúng ta hướng đến trong tương lai Tháng 04 năm 2010, sự xuất hiện của camera 3D Kinect - một thiết bị được phát triển bởi Microsoft thực sự là cuộc cách mạng trong lĩnh vực giao tiếp giữa người – máy Đến tháng 01 năm 2014, Intel cho ra mắt thiết bị camera 3D intel realsense với khả năng cảm nhận các vật trong không gian 3D có cự ly gần, thời gian thực và có độ chính xác cao góp phần giúp nghiên cứu về tương tác người – máy lên tầm cao mới, con người có thể giao tiếp hoàn toàn với máy thông qua cử chỉ tay, cảm xúc và giọng nói Tuy xuất hiện hơn 3 năm nhưng thiết bị intel realsense cùng những tiện ích của nó còn khá lạ lẫm tại Việt Nam Từ nghiên cứu ban đầu về thiết bị realsense của một sinh viên K54, tôi nhận thấy nhiều ứng dụng tiềm năng có thể áp dụng và phát triển được từ thiết bị này
Từ đó, tôi nhận đề tài liên quan đến thiết bị realsense này để có cơ hội tìm hiểu và tiếp tục nâng cấp, để có thể sử dụng các cử chỉ tay để ứng dụng nó trong điều khiển trình chiếu Powerpoint, sử dụng trình duyệt Chrome và kết hợp tìm kiếm thông tin bằng giọng nói hay chơi game
Em xin gửi đến thầy TS Đinh Đồng Lưỡng lời cảm ơn chân thành và sâu sắc nhất Nhờ sự hướng dẫn và giúp đỡ tận tình của thầy trong suốt 15 tuần, em đã thực hiện hoàn thành đồ án tốt nghiệp này Sự nhiệt tình hướng dẫn, chỉ bảo của thầy trong quá trình thực hiện đề tài đã giúp em có thêm rất nhiều động lực, định hướng để hoàn thành đề tài Em rất cảm ơn thầy!
Đồng thời, em xin trân trọng cảm ơn các thầy cô của khoa công nghệ thông tin đã tận tình dạy dỗ em suốt thời gian em ngồi trên ghế giảng đường đại học Những kiến
Trang 43
MỤC LỤC
LỜI NÓI ĐẦU 1
MỤC LỤC 3
DANH MỤC TỪ VIẾT TẮT 5
DANH MỤC HÌNH ẢNH, BẢNG BIỂU 6
CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI 7
1.1 Lý do chọn đề tài 7
1.2 Yêu cầu đề tài 8
1.3 Phương pháp 8
1.4 Cấu trúc của báo cáo 9
CHƯƠNG II GIỚI THIỆU VỀ CAMEA 3D INTEL REALSENSE 11
2.1 Giới thiệu camera 3D Intel RealSense 11
2.2 Thư viện mã nguồn mở SDK 13
2.2.1 Kiến trúc SDK 14
2.2.2 Các Interface cốt lõi trong Intel RealSense SDK 15
2.3 Các ứng dụng của Camera 3D 15
CHƯƠNG III PHÂN TÍCH VÀ PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN 20
3.1 Intel Realsense Camera F200 21
3.2 Thu nhận và xử lý ảnh 21
3.3 Định vị các khớp nối 22
3.4 Nhận dạng cử chỉ tay 22
3.4.1 Nhận dạng hình dáng 23
3.4.2 Nhận diện cử điệu tay 23
CHƯƠNG IV CÀI ĐẶT CHƯƠNG TRÌNH VÀ KẾT QUẢ ĐẠT ĐƯỢC 26
Trang 54
4.1 Cài đặt chương trình 26
4.1.1 Cấu trúc dữ liệu 26
4.1.2 Phương thức 29
4.1.3 Interface Handetail 31
4.2 Kết quả đạt được 35
4.2.1 Ứng dụng trong điều khiển phần mềm trình chiếu MS PowerPoint 35
4.2.2 Ứng dụng trong sử dụng trình duyệt web (Google Chrome) 37
4.2.3 Ứng dụng trong chơi game 37
CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 38
5.1 Kết luận 38
5.2 Hướng phát triển 39
TÀI LIỆU THAM KHẢO 40
PHỤ LỤC: Tài liệu hướng dẫn sử dụng và phát triển chương trình 41
Cài đặt bộ driver DCM và chạy được ứng dụng của Camera RealSense 41
Sau đó đó chúng ta có thể tải các ứng dụng của Camera 41
Khai báo thư viện và cài đặt mô-đun chính HandDetail 43
Trang 65
DANH MỤC TỪ VIẾT TẮT
OpenCL Open Computing Language
OpenCV Open Computer Vision
Trang 76
DANH MỤC HÌNH ẢNH, BẢNG BIỂU
Hình 1.1 – Minh họa các bước xử lý trong chương trình 8
Hình 2.1 – Camera 3D Realsense F200 13
Hình 2.2 – Kiến trúc Intel RealSense SDK 15
Hình 2.3 – Hệ thống các Interface C++/C# 16
Hình 2.4 – Phần mềm chơi nhạc Kagura 18
Hình 2.5 – Phần mềm Posture Monitor 18
Hình 2.6 – Phần mềm Boom Ball 19
Hình 2.7 – Phần mềm Lego Portal Racers 19
Hình 2.8 – Các game điều khiển bằng cử chỉ và khuôn mặt 20
Hình 3.1 – Minh họa các bước xử lý trong chương trình 21
Hình 3.2 – Camera Intel RealSense 3D FONT F200 22
Hình 3.3 – Hình ảnh được thu từ Camera Intel RealSense 3D 22
Hình 3.4 – Hình ảnh các thao tác của bàn tay 23
Hình 3.5 – Minh họa cách xác định hình dáng 24
Hình 3.6 – Minh họa chuyển động của các điểm trên bàn tay 30
Hình 3.7 – Hình ảnh thao tác trên PowerPoint 37
Bảng 3.1 – Cử điệu cơ bản của bàn tay sử dụng trong đồ án 25 -26 Bảng 4.1 – Ma trận nhầm lẫn 36
Trang 8ý nghĩa và mục đích đã nêu trên, đề tài nghiên cứu và phát triển ứng dụng điều khiển máy tính bằng cử chỉ tay là cần thiết và hữu ích trong thời điểm hiện tại Thế mạnh của phương pháp này so với các phương pháp truyền thống có nhiều ưu điểm như: khả năng tương tác thân thiện và tự nhiên, không cần tiếp xúc lên thiết bị điện tránh
va chạm, nâng cao độ bền thiết bị, đặc biệt nơi công cộng, không cần tiếp xúc giúp thiết bị luôn được sạch sẽ (trường hợp sử dụng máy tính trong giảng dạy kết hợp viết phấn bảng thì cách tiếp cận này là hoàn toàn chiếm ưu thế so phương pháp truyền thống, việc giữ vệ sinh máy tính khi giáo viên vừa điều khiển máy tính vừa sử dụng phấn bảng)
Từ khi ra mắt đến nay, công nghệ intel realsense đang dần được tích hợp sẵn trong các sản phẩm thương mại cùng những ứng dụng đi kèm mang đến trải nghiệm mới lạ cho người dùng Tuy nhiên, chúng còn khá mới lạ đối với phần lới người dùng phổ thông đặc biệt là nhận diện hành động cử chỉ qua không gian 3D Do đó, tôi chọn đề tài giao tiếp giữa người và máy một cách thân thiện sử dụng camera 3D intel realsense Trong đồ án này tôi muốn demo hệ thống vào việc điều khiển các ứng dụng phổ biến và được các thầy cô thường sử dụng trên giảng đường để tránh việc tiếp xúc trực tiếp với máy trong khi tay đang sử dụng phấn trắng viết bảng như ứng
Trang 98
dụng trình chiếu Microsoft Office Power Point bằng cử chỉ tay, mở ứng dụng bằng cử chỉ tay, tìm kiếm google thông qua ứng dụng GoogleChrome Sự phát triển của camera ra đời và ứng dụng trong thực tế là tất yếu Nên tôi đã chọn đề tài về intel realsense camera 3D làm đồ án tốt nghiệp của mình
1.2 Yêu cầu đề tài
Nội dung yêu cầu thực hiện đề trong đề tài:
- Tìm hiểu camera 3D và thư viện mở SDK
- Nhận dạng các tư thế của tay và sự di chuyển của tay thông qua điểm đặc trưng như các khớp nối (joints) hay các điểm đầu ngón tay (fingertip) để nhận dạng các di chuyển của tay để ứng dụng trong giao tiếp giữa người và máy
- Thực hiện cài đặt các chức năng tương tác giữa người và máy thông qua các ứng dụng như Powerpoint, duyệt web (Chrome) hay ứng dụng game thông qua các cử chỉ tay
1.3 Phương pháp
Hình 1.1 – Minh họa các bước xử lý trong chương trình
Trang 109
Chương trình gồm các bước chính sau:
- Bước 1: Thu thập dữ liệu, dữ liệu được lấy từ camera dưới dạng từng khung ảnh (frame) gồm ảnh 2D và dữ liệu 3D Bước này được đảm nhận bởi intel realsense 3D camera
- Bước 2: Phân vùng để lấy vùng bàn tay và tiến hành định vị các vị trí khớp nối trên bàn tay và nhận diện hình dáng của bàn tay Nhận diện các thành phần của tay, chương trình sử dụng các mô-đun handtracking trong thư viện SDK hỗ trợ cùng với việc xử lý để nhận diện các thành phần bàn tay
- Bước 3: Nhận diện các cử điệu tay và ứng dụng điều khiển, chương trình thực hiện xử lý dữ liệu và gọi các phương thức điều khiển máy tính
1.4 Cấu trúc của báo cáo
Báo cáo được chia thành 5 chương và 1 phụ lục:
Chương I: Tổng quan về đề tài
- Phần này trình bày lý do tại sao tôi chọn đề tài, các yêu cầu của đề tài và tổng quan về các giải quyết bài toán, tổng quan về cấu trúc của bài báo cáo này
Chương II: Giới thiệu về camera 3D intel realsense
- Phần này tập trung giới thiệu lý thuyết cơ bản được sử dụng trong quá trình tìm hiểu và thực hiện đồ án gồm các kiến thức như:
+ Giới thiệu tổng quan về camera 3D nói chung và realsense camera nói riêng
+ Ngôn ngữ lập trình C++ và phương pháp lập trình hướng đối tượng + Thư viện OpenCV
+ Kiến trúc và những interface cốt lõi trong intel realsense SDK
+ Mô-đun handtracking trong intel realsense SDK
Trang 1110
+ Cuối cùng tôi trình về các ứng dụng mà camera realsense 3D đang được sử dụng và đang phát triển có thể có mặt trong tương lai gần
Chương III Phân tích và phương pháp giải quyết bài toán
- Phần này trình bày cách thức lưu trữ dữ liệu 3D, phương pháp xử lý dữ liệu
để đưa ra các kết quả nhận diện bàn tay
+ Dữ liệu 3D: sự khác biệt so với dữ liệu 2D và tính cần thiết của dữ liệu 3D, dữ liệu về bàn tay trong – HandData trong intel realSense SDK + Phương pháp giải quyết: cách thức đóng gói dữ liệu và xử lý dữ liệu để đưa ra các kết quả nhận diện về hình dạng và cử chỉ của bàn tay
+ Phương pháp cài đặt và chạy được các ứng dụng của camera realsense F200, cài đặt thêm bộ thư viện SDK để chạy được bộ source code để phát triển thêm tính năng
Chương IV Cài đặt chương trình và kết quả đạt được
- Phần này trình bày mô-đun xử lý chính trong chương trình và diễn giải các thành phần bên trong mô-đun, khảo sát độ chính xác của thao tác từ đó ứng dụng vào các ứng dụng
- Kết quả đạt được (độ chính xác của các thao tác chính trong chương trình) + Ứng dụng vào trình chiếu powerpoint
+ Ứng dụng vào trình duyệt web (ChromeChrome)
+ Ứng dụng vào chơi trò chơi
Chương V Kết luận và hướng phát triển
Trang 12Intel realsense cho phép người dùng tương tác với máy tính (PC để bàn hoặc Laptop) thông qua cử chỉ của cơ thể bao gồm hai tay, khuôn mặt, điệu bộ thay thế cho kiểu tương tác truyền thống bằng bàn phím và chuột
Như vậy, với thao tác điều khiển mới này thì máy tính sẽ nhận diện qua các cử chỉ, khuôn mặt của người dùng Công nghệ này có thể giúp kích hoạt và mở máy tính bằng chức năng nhận diện khuôn mặt hoặc in văn bản, chơi game, vẽ, ghi chú, và thậm chí là chơi nhạc cụ chỉ bằng những cử chỉ tương tác bằng tay mà không cần phải chạm vào máy
RealSense hoạt động bằng cách sử dụng camera trên máy, camera này kết nối với thư viện lưu trữ thông tin được đơn giản hóa về các trải nghiệm thường ngày của con người như học tập, giao tiếp, chơi game hay bộc vộ cảm xúc vui, buồn, giận dữ Từ
Trang 13- Hệ điều hành 64 bit Microsoft Windows 8.1 hoặc 10
- Microsoft Visual Studio 2010-2015 với gói cập nhật mới nhất
- Framework Microsoft NET 4.0 dành cho C#
- Unity PRO 4.1.0
- Một trong số các phiên bản trình duyệt sau:
Microsoft Internet Explorer 11.0.9600
Trang 14- Các ngôn ngữ lập trình được Intel RealSense SDK hỗ trợ:
- C++, C#, Java, JavaScript, C# UWP
2.2 Thư viện mã nguồn mở SDK
Thư viện SDK của camera 3D Intel Realsense là một thư viện gồm các định nghĩa tiêu chuẩn và các thuật toán nhận diện đối tượng Chúng được sử dụng thông qua các interface đã được tiêu chuẩn hóa Mục đích của Intel realsense SDK nhằm che giấu sự phức tạp của thuật toán, giúp lập trình viên tập trung hơn vào việc sử dụng các thuật toán đó để tạo nên những ứng dụng mang tính thực tế
Bộ thư viện này được xây dựng để hỗ trợ những người lập trình phát triển viết ứng dụng để sử dụng camera Hiện nay, intel realsense SDK hỗ trợ cho 2 loại thiết bị
là camera F200 và R200
Để điều khiển được 2 chiếc camera này thì chúng ta cần cài bộ quản lý điều khiển camera cảm biến chiều sâu (Dethp Camera Manager Intel RealSense) bộ driver này chúng ta có thể tải ở website của Intel Tùy từng camera mà chúng ta sử dụng bộ DCM của nó Để cài được thì máy tính của người dùng phải có đầy đủ cấu hình mà camera yêu cầu ở trên (Hiện tôi đang sử dụng camera F200 nên tôi cài bộ Intel RS DCM F200)
Trang 1514
2.2.1 Kiến trúc SDK
Hình 2.2 Kiến trúc Intel RealSense SDK Intel realsense SDK bao gồm từ nhiều lớp hợp thành, trong đó lớp nền tảng gồm các mô-đun thuật toán (Algorithm Module) và mô-đun vào ra (I/O Module) Các mô-đun vào ra thu thập dữ liệu từ thiết bị đầu vào và gửi dữ liệu đến thiết bị xuất Các mô-đun thuật toán gồm các thuật toán nhận biết và nhận diện các mẫu khác nhau như: nhận diện khuôn mặt, nhận diện hành vi, nhận biết giọng nói
Intel realsense SDK cho phép ứng dụng (SDK Application) có thể truy cập các tính năng thông qua các interface tiêu chuẩn (SDK Interfaces) mà không cần can thiệp đến các mô-đun cài đặt bên dưới (SDK Core Modules)
Trang 16Ví dụ: PXCSession *session = PXCSession::CreateInstance();
Interface SenseManager quản lý các interface khác thực hiện các tác vụ như tạo video, bắt đầu, tạm dừng, kết thúc video thông qua các mô-đun vào ra (I/O Modules) Ngoài ra, interface SenseManager còn quản lý các mô-đun thuật toán như mô-đun khuôn mặt (FaceModule), mô-đun bàn tay (HandModule), …
Interface AudioSource quản lý các tác vụ liên quan đến âm thanh, giọng nói
2.3 Các ứng dụng của Camera 3D
Tại CES 2014 với camera 3D realsense, Intel và tập đoàn Microsoft đã kết hợp trình diễn một cuộc gọi video (video call) sống động thông qua phần mềm Skype và Lync Chiếc camera đã cho thấy khả năng kiểm soát và xóa bỏ phông nền phía sau vật thể chỉ còn thấy người gọi và không ảnh hưởng bởi những tác động xung quanh trong suốt quá trình gọi Với khả năng này, người dùng sẽ có nhiều lựa chọn hơn, họ
có thể xuất hiện trước màn ảnh cùng với phông phía sau hoặc xóa bỏ tất cả để cùng chia sẽ một bài thuyết trình, thưởng thức một bộ phim hoặc cùng xem một sự kiện thể
Trang 1716
thao Intel hy vọng rằng từ những ứng dụng nhận dạng cử chỉ, giọng nói và cảm xúc
sẽ khuyến khích trẻ em tham gia tích cực hơn trong các trò chơi hữu ích cho việc học tập Để nhấn mạnh tiềm năng trong giáo dục trẻ em và truyền thông toàn cầu, để thiết
kế các trải nghiệm tương tác cho hai thương hiệu toàn cầu Clifford Big Red Dog và I Spy, với việc trình diễn chức năng đa người dùng trong một trò chơi Clifford, Intel chứng minh các thiết bị này sẽ giúp các trẻ em từ 3 tuổi trở lên có thể học tập và nâng cao kỹ năng đọc viết thông qua việc sử dụng cánh tay, chuyển động bàn tay, nói chuyện và chạm
Tại triển lãm CES 2016, Intel đã cho ra mắt chiếc smartphone đầu tiên được trang
bị Camera Intel RealSense 3D Điều đặc biệt trên camera realsense của Intel cho phép smartphone có thể nhận diện các vật thể 3D và cử chỉ Camera realsense này có tên ZR300, bao gồm một số cảm biến như gia tốc con qua hồi chuyển, theo giở chuyển động và mô-đun camera realsense R200 Theo Intel, camera realsense ZR300 hỗ trợ cho project Tango của Google để theo dõi và đồng bộ hóa thông tin giữa các cảm biến Kết hợp với mức tiêu thụ điện năng thấp, camera này có thể cung cấp những trải nghiệm đa năng, chẳng hạn như lập bản đồ nhà và chuyển hướng, bổ sung khả năng quét 3D cho các ứng dụng có thể tận dụng lợi thế của camera realsense do Intel sản xuất
Hiện công nghệ camera intel realsense đã được tích hợp vào chiếc máy laptop Lenovo Ideapad 500 với các ứng dụng mang lại trải nghiệm 3D đến người sử dụng
- Quét khuôn mặt để mở máy truy cập vào window bằng Window Hello được tích hợp trên window 10
- Điều khiển bằng cử chỉ để cuộn trang trong trình duyệt hoặc văn bản
- Phần mềm chơi nhạc kagura
Trang 2019
Hình 2.7 – Phần mềm Lego Portal Racers
- Còn rất nhiều ứng dụng thụ vị mà camera realsense mang lại trong đó có lĩnh vực robot, giáo dục trong tương lai sẽ giúp ích rất nhiều cho sự phát triển tư duy của trẻ em, và các bạn học sinh sinh viên
Hình 2.8 – Các game điều khiển bằng cử chỉ và khuôn mặt
Trang 2120
CHƯƠNG III PHÂN TÍCH VÀ PHƯƠNG PHÁP GIẢI QUYẾT BÀI
TOÁN
Để giải quyết bài toán thì chúng ta cần thực hiện 4 bước như sau:
Hình 3.1 – Minh họa các bước xử lý trong chương trình + Bước 1: Camera F200 sẽ chụp ảnh
+ Bước 2: Thu nhận và xử lý ảnh Ảnh từ camera sẽ được loại bỏ phông nền lấy
ra các đặc trưng của tay để đưa ra hình ảnh 3D depth
+ Bước 3: Định vị các khớp nối Sử dụng các hàm nhận diện khớp nối (joint) bàn tay có trong bộ thư viện SDK
+ Bước 4: Từ tọa độ các Joint đưa ra phương pháp nhận diện thao tác và cử điện của bàn tay
Trang 2221
3.1 Intel Realsense Camera F200
Hình 3.2 – Camera Intel RealSense 3D FONT F200 Camera intel realsense 3D F200 có khả năng thu nhận hình ảnh 3D Công nghệ: CodeLight, native VGA 60fps Độ phân giải của depth camera lên đến 480x360 30fpts, còn color camera lên đến 1920x1080 30fps Khung nhìn của F200 từ 20cm – 60cm
3.2 Thu nhận và xử lý ảnh
(a) (b) (c) Hình 3.3 – Hình ảnh được thu từ Camera Intel RealSense 3D (a) ảnh depth được chụp từ camera 3D realsense
(b) ảnh của bàn tay sau khi đã được loại bỏ phông nền
(c) kết quả định vị các joint của bàn tay
Trang 2322
Sau khi ảnh được thu từ camera sẽ được xử lý phông nền bằng các thuật toán mà intel realsense SDK Dữ liệu trực quan này, được lấy kết hợp với phần mềm theo dõi chuyển động Intel realsense sử dụng interface sensemanager quản lý, sau đó sẽ tạo ra một giao diện cảm ứng không cần chạm có khả năng phản hồi theo chuyển động của tay, cánh tay, đầu và nét mặt người dùng, cho phép họ tương tác với thiết bị một cách
dễ dàng
3.3 Định vị các khớp nối
Sau khi nhận lấy được dữ liệu ảnh từ interface sensemanager Hình 3.3 Intel realsense SDK cung cấp phương thức lấy tọa độ của bàn tay từ ảnh của camera
senseManager->QueryHand(); được lưu vào interface PXCHandModule
Tiếp theo để lấy dữ liệu sử dụng phương thức CreateOutput() của Intelface PXCHandMoudle, phương thức trả về dữ liệu PXCHandData PXCHandData –
interface chứa tất cả dữ liệu đầu ra của các Mô-đun xử lý handtracking Mỗi đối tượng thuộc lớp PXCHandData lưu trữ thông tin của một frame nhất định – dữ liệu thu thập, suy ra được từ một khung hình của camera
Struct JointData lưu trữ dữ liệu một điểm khớp xương trên bàn tay, gồm nhiều
thông tin, tọa độ thuộc các hệ tọa độ khác nhau như: tọa độ trên thế giới thực – positionWorld, tọa độ trên ảnh 2D bao gồm cả độ sâu điểm ảnh – positionImage, …
3.4 Nhận dạng cử chỉ tay
Nói về thao tác tay thì con người có rất nhiều cử chỉ và cách lựa chọn đặc trưng cũng khác nhau
Trang 2423
Hình 3.4 – Hình ảnh các thao tác của bàn tay
Từ những hình dáng của bàn tay chúng ta sẽ bắt đầu phân tích nhận diện hình dáng bàn tay, sau đó theo dõi cử điệu rồi đưa ra xử lý chương trình
3.4.1 Nhận dạng hình dáng tay
Việc nhận diện hình dáng của bàn tay tôi dựa theo việc xác định trạng thái của các ngón tay đang duỗi thẳng (open) hay co lại (close)
Hình 3.5 – Minh họa cách xác định hình dáng Mỗi điểm khớp trên bàn tay có tạo độ nhất định trong không gian 3D Từ đó, ta
có thể áp dụng công thức tính khoảng cách giữa 2 điểm trong không gian ba chiều Khi bàn tay đang duỗi thẳng, độ dài đoạn A sẽ xấp xỉ giá trị B + C + D Khi ngón tay gập vào lòng bàn tay, giá trị A sẽ rất nhỏ so với B + C + D Từ đó, ta đưa ra tỷ lệ
tương đối A / (B + C + D) để xác định một ngón tay đang duỗi thẳng (Hình 3.5)
3.4.2 Nhận diện cử điệu tay
Dữ liệu từ camera được truy xuất liên tục và các biến lưu trữ được cập nhật liên tục Một điểm chuyển động hay tọa độ của chúng thay đổi theo thời gian, tức dữ liệu
sẽ thay đổi trên từng khung hình (frame)
Trang 2524
Hình 3.6 – Minh họa chuyển động của các điểm trên bàn tay Mô-đun HandDetail thực hiện lưu trữ lại giá trị một điểm trước khi cập nhật giá trị mới Sau đó, mô-đun thực hiện tính độ dài quãng đường di chuyển của điểm đó, thông quá đó nhận biết được phương hướng di chuyện của bàn tay Sau khi nhận biết được hướng di chuyển, mô-đun đưa dữ liệu vào hàng chờ “lộ trình di chuyển” Dựa vào “lộ trình di chuyển”, mô-đun xác định được các xử chỉ bàn tay
Dưới đây là một số thao tác mà tôi sẽ dùng để nhận diện một cử điệu hợp lệ của chương trình:
Bảng 3.1: Cử điệu cơ bản của bàn tay được sử dụng trong đồ án
Trang 2625
- Di chuyển chuột (nhận dạng ngón trỏ đưa ra và các ngón còn lại thì chụm lại sau đó di chuyển lên xuống qua lại)
- Thao tác chuyển slide tiếp theo (di chuyển bàn tay khi các ngón tay duỗi thẳng sang trái)
- Thao tác trở lại slide trước (di chuyển bàn tay khi các duỗi thẳng sang phải)
- Thao tác mở một chương trình mà con trỏ đang trỏ tới (đang nắm tay sau đó thực hiện xòe rộng bàn tay ra)
Trang 2726
- Thao tác show slide (đang xòe tay
di chuyển tay ra xa sau đó di chuyển lại gần camera thật nhanh)
CHƯƠNG IV CÀI ĐẶT CHƯƠNG TRÌNH VÀ KẾT QUẢ ĐẠT
+ PXCHandData (lưu trữ dữ liệu tay)
+ PXCdefs (định nghĩa dữ liệu cấu trúc)
+ Tree (cấu trúc các điểm khớp xương thành một cấu trúc cây có điểm Wrist là điểm gốc)
+ Iview (định nghĩa các chức năng hiển thị ảnh 3D)
- Mô-đun xử lý:
+ HandDetail (mô-đun chính của chương trình)
+ OpenGLView (mô-đun hiển thị ảnh 3D)
4.1.1 Cấu trúc dữ liệu
Intel realsense SDK cung cấp các cấu trúc dữ liệu để lưu trữ dữ liệu 3D thông qua các Interface như PXCdefs, PXCHandData, Tree:
PXCdefs – interface định nghĩa lại các kiểu dữ liệu nguyên thủy thành các kiểu
dữ liệu mang tên có cấu trúc Tất cả các kiểu dữ liệu nguyên thủy đều có tiền tố PXC, ngoài ra còn có các cấu trúc dữ liệu phức tạp khác với tiền tố PXC được định nghĩa
bằng từ khóa struct
Trang 28Dữ liệu tay được intel realsense SDK hỗ trợ thông qua interface PXCHandData:
PXCHandData – interface chứa tất cả dữ liệu đầu ra của các Mô-đun xử lý
Hand Tracking Mỗi đối tượng thuộc lớp PXCHandData lưu trữ thông tin của một frame nhất định – dữ liệu thu thập, suy ra được từ một khung hình của camera
, JOINT_CENTER /// The center of the palm
, JOINT_THUMB_BASE /// Thumb finger joint 1 (base)
, JOINT_THUMB_JT1 /// Thumb finger joint 2
, JOINT_THUMB_JT2 /// Thumb finger joint 3
, JOINT_THUMB_TIP /// Thumb finger joint 4 (fingertip)
, JOINT_INDEX_BASE /// Index finger joint 1 (base)
, JOINT_INDEX_JT1 /// Index finger joint 2
, JOINT_INDEX_JT2 /// Index finger joint 3
, JOINT_INDEX_TIP /// Index finger joint 4 (fingertip)
, JOINT_MIDDLE_BASE /// Middle finger joint 1 (base)
, JOINT_MIDDLE_JT1 /// Middle finger joint 2
, JOINT_MIDDLE_JT2 /// Middle finger joint 3
Trang 2928
, JOINT_MIDDLE_TIP /// Middle finger joint 4 (fingertip)
, JOINT_RING_BASE /// Ring finger joint 1 (base)
, JOINT_RING_JT1 /// Ring finger joint 2
, JOINT_RING_JT2 /// Ring finger joint 3
, JOINT_RING_TIP /// Ring finger joint 4 (fingertip)
, JOINT_PINKY_BASE /// Pinky finger joint 1 (base)
, JOINT_PINKY_JT1 /// Pinky finger joint 2
, JOINT_PINKY_JT2 /// Pinky finger joint 3
, JOINT_PINKY_TIP /// Pinky finger joint 4 (fingertip)
};
enum JointType lưu trữ giá trị loại điểm khớp mà HandModule xác định được
như: cổ tay, trọng tâm bàn tay, các khớp trên ngón tay
HandData::JointType jointType = 0; giá trị 0 tương ứng với HandData::JOINT_WRIST – cho biết điểm này là cổ tay
HandData::JointType jointType = 2; giá trị 2 tương ứng với HandData::
JOINT_THUMB_BASE – cho biết điểm này là khớp thứ nhất của ngón tay cái
Tương ứng từ 0 cho đến 21 là 22 điểm khớp khác nhau trên bàn tay
struct JointData
{
pxcI32 confidence; /* RESERVED: for future confidence score feature */
3D world coordinates, in meters */
2D image coordinates, in pixels (Note: the Z coordinate is the point's depth in millimeters.) */
PXCPoint4DF32 localRotation; /* A quaternion representing the local 3D orientation of the joint, relative to its parent joint */