Chương I: Giới thiệu tổng quan và giới thiệu về đề tài, tình hình nghiên cứu, mục tiêu và giới hạn đề tài. Chương II: Cơ sở lý thuyết. Chương II: Hệ thống nhận dạng cử chỉ tay đề xuất. Chương IV: Kết quả thực hiện.
Chương V: Kết luận và hướng phát triển. Luận văn thạc sĩ 15 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Truong Quang Vinh CHUONG II: CƠ SỞ LÝ THUYÉT 2.1 Cảm biến Kinect và các thư viện hỗ trợ 2.1 Cảm biến Kinect 2.1 Giới thiệu KINECT Hình 2-1 Kinect xbox 360 Kinect 360 là sản phâm của Microsoft, dựa trên công nghệ camera được phát triển bởi PrimeSens. Khi kết nối vào Xbox 360, người chơi có thé điều khiến và tương tác với máy console mà không cần tay cầm điều khiến, thông qua giao diện người dùng tự nhiên sử dụng cử chỉ và lệnh thoại. Khả năng nhận dạng cử chỉ của Kinect dựa trên hai đặc tính chính sau: thông tin về độ sâu ảnh (depth map), khả năng phát hiện và bám theo đặc tính cơ thể người (body skeleton tracking).
Bên cạnh phục vụ cho mục đích chơi game, sản phâm Kinect còn được dùng vào mục đích nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ (gesture recognition), bám theo người (body tracking) và nhiều mục đích khác.2Cấu tạo phần cứng IR Emitter Color Sensor IR Depth Sensor Tilt Motor “ <⁄4 Microphone Array Hinh 2-2 Cac thanh phan chinh cua Kinect Luan van thac si 16 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Trương Quang Vnh Kinect bao gồm 1 RGB camera, các thành phần sử dụng để cảm biến độ sâu, một dãy các microphone và I động cơ điều khiển góc nâng. - RGB Camera: là một camera thu nhận anh màu 8-bit thông thường tới bộ lọc màu bayer, tốc độ khung hình 30Hz, có độ phân giải chuẩn VGA (640 x 480 điểm ảnh). - Cảm biến độ sâu: bao gồm một thiết bị chiếu tia laser hồng ngoai (IR projector) kết hợp với một bộ cảm bién CMOS don sac (IR camera), cho phép thu thập dữ liệu độ sâu dưới hầu hết mọi điều kiện ánh sáng xung quanh. Nguyên lý các cảm biến độ sâu: Met ©.
a Hình 2-3 Mô tả thực hiện của cảm biến độ sấu eo @ ie Light source (3 Cặp cảm biến IR camera và IR projector sẽ phối hợp với nhau để tạo ra giá trị độ sâu bằng công nghệ Light Coding của PrimeSense. Kĩ thuật Light Coding đùng nguồn sáng hồng ngoại chiếu liên tục kết hợp với một camera hồng ngoại để tính khoảng cách. Việc tính toán này được thực hiện bằng chip PS1080 Soc của PrimeSen. Projector sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở không gian phía trước Kinect, tập hợp đốm sáng được phát ra này là có định.
Những đốm sáng Luận văn thạc sĩ 17 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Trương Quang Vnh này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ (diffraction gratings). Tập hợp các đốm sáng này được IR camera chụp lại, thông qua giải thuật đặc biệt được tích hợp trong PS1080 SoC cho ra bản đồ độ sâu. Ban chat của giải thuật này là các phép toán hình học dựa trên quan hệ giữa hai cảm biến IR camera và Projector. -_ Dãy Microphone: Dãy Micro bao gồm 4 micro được bố trí dọc theo thân Kinect có khả năng thu lại âm thanh đồng thời xác định hướng của âm thanh.
- Ngoài ra, Kinect còn có 1 cảm biến đo gia tốc để xác định hướng và 1 động cơ dùng đề điều khiến góc ngắng camera.3 Dữ liệu thu được từ Kinect Các cảm biến của Kinect được điều khiển đồng thời thu thập và xử lý đữ liệu thông qua chip PS1080 có tần số 12MHz, sau đó được lưu trữ vào bộ nhớ Flash. Các dữ liệu này có thể truyền vào máy tính thông qua công USB 2. Depth Color © Mandatory Depth image Color image GB Optional 9 VS .p Audlo Hình 2-4 Sơ đô khối phan cứng thu thập dữ liệu từ kinect Các tín hiệu thu thập bao gồm dữ liệu về độ sâu, màu sắc và âm thanh trong đó dữ liệu về độ sâu là dữ liệu quan trọng có nhiều ứng dụng. Sở dĩ dữ liệu về chiều độ sâu có tầm quan trọng như vậy bởi nó giúp việc nhận dạng các vật thể đơn giản hơn nhiều so với xử lý ảnh thông thường.
Luận văn thạc sĩ 18 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Truong Quang Vinh Các thuật toán xử lý ảnh thông thường dựa vào sự tương đồng về mầu sắc, tuy nhiên, có thể những vật có mầu sắc tương tự nhau nhưng không củng một vật thé hoặc các phần của cùng một đối tượng nhưng có mầu khác nhau, do vậy gây khó khăn trong quá trình nhận dạng. Trong khi đó, với thông tin về độ sâu, các vật thể được phân biệt với nhau thông qua vị trí. Những điểm có khoảng cách gần nhau có xu hướng cùng một đối tượng mà không phân biệt mầu sắc. Chỉ khi độ sâu giảm đột ngột như ở cạnh và ở một số phần nhỏ của đối tượng thì khi đó, hình ảnh trên bản đồ độ sâu mới có sự thay đồi.
Giá trị độ sâu hay là khoảng cách từ kinect đến vật thể bản thân Kinect thực sự không tính toán độ sâu, nó trả về một giá trị trừu tượng hơn cho hệ thống xử lý và tủy vào driver sẽ xuất theo dạng dữ liệu nào. Trong khi OpenNI và MS Kineck SDK xuất giá trị này ra dưới khoảng cách tính bằng mm, còn libfreenect xuất ra các giá trị lượng tir 11-bit. Z [m] Camera Ni [pixels] Hình 2-5 Hệ tọa độ độ sâu trong Kinect 2.2 Cac thư viện xử lý ảnh sử dụng cho lập trình với Kinect Các thư viện xử lý ảnh được sử dụng phổ biến: Libfreenect, Code Laboratories Kinect, OpenNI và Kinect SDK. Mỗi thư viện xử lý ảnh đi kèm với driver của từng thư viện.
Riêng OpenNI phiên bản 2 hỗ trợ driver của nhà phát triển thứ 3. Luận văn thạc sĩ 19 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Trương Quang Vnh Libfreenect: Libfreenect là thư viện được phát triển bởi OpenKinect, do một cộng đồng những người quan tâm đến Kinect viết và chia sẻ. Libfreenect được đóng gói sử dụng trên nhiều ngôn ngữ khác nhau như Python, C, C++, C#, Java JNI, Java JNA, Javascript. Code Laboratories Kinect: Code Laboratories (CL) là một công ty về phần mềm chuyên hỗ trợ các nhà phát triển, lập trình viên khai thác các tính năng của các thiết bị xử lý ảnh.
trong đó Kinect,CL cung cấp cho người sử dụng những tính năng cơ bản nhất của Kinect về camera, audio va motor. Windows Kinect SDK: Windows Kinect SDK chứa các trình điều khiển tương thích hệ điều hành Windows 7 cho Kinect. SDK cho phép nhà phát triển xây dựng các ứng dung Kinect với C++, C# hoặc Visual Basic trên Microsoft Visual Studio 2010 và bao gồm các đặc tính: - _ Stream đữ liệu cảm biến gốc: truy cập đến stream cấp thấp thu được từ cảm biến độ sâu, cảm biến màu sắc, và mảng micro bốn phần tử. - Theo dõi cơ thể: khả năng theo dõi skeleton nhiều người di chuyển trong vùng nhận biết của Kinect phục vụ cho ứng dụng điều khiển bởi cử chỉ.
- Nâng cao khả năng xử lý âm thanh: khả năng xử lý âm thanh bao gồm bộ khử nhiễu và bộ lọc tiếng, hình thành chùm tia để xác định nguồn âm thanh, và tích hợp API nhận dạng giọng nói của Windows. OpenNI/NITE: OpenNI (Open Natural Interaction) 14 m6t framework da nền tảng, đa ngôn ngữ, và nó định nghĩa giao diện lập trình ứng dung (API) dé viết các ứng dụng dùng tương tác tự nhiên. OpenNI API bao gồm một tập hợp các giao diện để viết các ứng dụng tương tác tự nhiên. Mục đích chính của OpenNI là tạo nên API tiêu chuân cho phép giao tiếp với: - Cảm biến âm thanh và hình ảnh.
Luận văn thạc sĩ 20 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Trương Quang Vnh - _ Các middleware cảm nhận hình ảnh và âm thanh (các thành phần phần mềm mà phân tích các dữ liệu âm thanh và hình ảnh được ghi lại, và hiểu nó). Ví dụ, phần mềm nhận đữ liệu hình ảnh, chẳng hạn nhận một hình ảnh, trả về vị trí của lòng bàn tay của một bàn tay được phát hiện trong hình ảnh. Tháng 4/2013 tổ chức OpenNI phát hành phiên bản OpenNI2/NiTE2 đơn giản hóa cac APIs, kiểu dữ liệu, dễ dàng giao tiếp giữa các middleware và hỗ trợ driver từ các nhà phát triển thứ 3. Các thư viện hỗ trợ xử lý ảnh khác: Open CV: Open CV là một thư viện mở gồm các hàm được xây dựng phục vụ cho việc xử lý ảnh thời gian thực.
Các thuật toán xử lý anh thông thường lẫn cao cấp đều được tối ưu hóa bởi các nhà phát triển thành các hàm đơn giản rất dễ sử dụng. OpenCV hỗ trợ 2 ngôn ngữ chính : C/C++ và python. OpenGL: Là một giao diện phần mềm độc lập với phần cứng hỗ trợ cho lập trình đồ họa. Để làm được điều này, OpenGL không thực hiện các tác vụ thuộc về hệ điều hành cũng như không nhận dữ liệu nhập của người dùng (người dùng giao tiếp với OpenGL thong qua OpenGL API).
Nó là lớp trung gian giữa người dùng và phần cứng. Nghĩa là nó giao tiếp trực tiếp với driver của thiết bị đồ họa. Lựa chọn thư viện: Vì những ưu điểm kể trên của bộ thư viện OPENNI2/NITE2, ngoài ra bộ thư viện này còn hỗ trợ cho cả ARM-linux sẽ giúp các nhà nghiên đễ dàng phát triển phần cứng riêng, nên chúng tôi quyết định lựa chọn thư viện OPENNI2/NITE2 trong luận văn nảy.2 Máy học véctơ hỗ trợ (Support Vector Machine) Support Vector Machine (SVM), là một trong những thuật toán học máy tốt nhất, đã được đề xuất trong năm 1995 bởi Vapnik. Đây là một phương pháp dựa trên lý thuyết học thống kê (Statistical Learning Theory) nên có một nền tảng toán học chặt chẽ để bảo đảm rằng kết quả đạt được tối ưu.
Ý tưởng chính của SVM là chuyên Luận văn thạc sĩ 21 12/2014 HV: Nguyễn Trọng Trí GVHD: T.S Trương Quang Vnh tập mẫu từ không gian biêu diễn Rn của chúng sang một không gian Rd có số chiều lớn hơn. Trong không gian Rd tìm một siêu phẳng tối ưu để phân hoạch tập mẫu này dựa trên phân lớp của chúng, cũng có nghĩa là tìm ra miền phân bố của từng lớp trong không gian biễu diễn Rn, để từ đó xác định được phân lớp của một mẫu cần nhận dạng. Cũng như mạng nơ-ron, phương pháp SVM là một phương pháp có tính tổng quát cao, có thể áp dụng cho nhiều loại bài toán nhận dạng khác nhau.1 SVM trong trường hợp tập phân hoạch tuyến tính Trong trường hợp này, tập mẫu là một tập có thể phân chia tuyến tính bằng một siêu phẳng và SVM đi tìm siêu phẳng này.