Theo dõi khung xương

Một phần của tài liệu Tương tác trực quan giữa người và máy tính bằng cảm biến quang (Trang 35 - 38)

Quá trình nhận diện một cơ thể người của cảm biến Kinect trong không gian trải qua 4 bước:

Bước 1: Quá trình nội suy từ dữ liệu độ sâu, xây dựng các khớp xương sao cho phù hợp với dữ liệu đã được dán nhãn, từ đó vẽ ra đoạn nối các khớp xương lại .

Bước 2: Khi người dùng đứng vào vùng nhìn thấy của Kinect, Kinect nhận dạng các khớp xương trên cơ thể.

Bước 3: Cảm biến tính toán các khớp được đề xuất theo mô hình 3 chiều phía trên, phía trước, và bên trái.

Bước 4: Kinect bắt đầu theo dõi cơ thể và chuyển động của cơ thể dựa trên những khớp xương và đề xuất xây dựng mô hình 3D.

Hình 2.16: Quá trình nhận diện các khớp xương

Bộ thư viện hỗ trợ Kinect SDK của Microsoft cung cấp một tập hợp các API cho phép các nhà phát triển dễ dàng truy cập đến bản đồ các khớp xương. Vị trí và tọa độ của tất cả các khớp xương riêng biệt đều được xác định bởi tên[7].

Hình 2.17: Khớp xương trên cơ thể được đánh tên

Chế độ theo dõi khung xương

Chế độ theo dõi mặc định

Ở chế độ này, cơ thể người đứng trong vùng quan sát của cảm biến sẽ được theo dõi chi tiết với đầy đủ 20 khớp.

this.kinect.SkeletonStream.TrackingMode = SkeletonTrackingMode.Default;

Chế độ dành cho cơ thể đang ngồi

Cảm biến Kinect còn hỗ trợ theo dõi một bộ xương trong tư thế đang ngồi với 10 khớp xương phần trên cơ thể sẽ được theo dõi.

this.kinect.SkeletonStream.TrackingMode = SkeletonTrackingMode.Seated;

Hình 2.19: Khung xương với 10 điểm khớp xương

Để cho nhận diện tốt hơn nhóm làm mịn khung xương giúp Kinect dễ nhận diện và tạo độ ổn định khi sử dụng các thao tác trên khung xương người.

Bộ thư viện Kinect SDK cung cấp một số API để làm mịn và lọc dữ liệu của khung xương giúp dữ liệu của khung xương thu về được ổn định và có độ tin cậy cao.

Để có thể kích hoạt các tham số lên, hàm Enable của lớp SkeletonStream chấp nhận smoothParameters như một tham số và đó là một loại cấu trúc TransformSmoothParameters.

this.kinect.SkeletonStream.Enable(smoothParameters);

Các API điều chỉnh dữ liệu khung xương[4]

Correction: Quy định mức sửa chữa cần thiết cho các dữ liệu khung xương. Giá trị phải nằm trong phạm vi từ 0 đến 1.0 và giá trị mặc định là 0.5. Với giá trị thấp hơn được áp dụng, các dữ liệu thô của khung xương được sửa chữa, và các dữ liệu trông mượt mà hơn.

Smoothing: Xác định mức làm mịn khi xử lý. Giá trị phải nằm trong phạm vi từ 0 đến 1.0 và giá trị mặc định là 0.5. Nếu tăng giá trị này lên thì dữ liệu khung xương nhận được sẽ mịn hơn. Tuy nhiên, nó làm tăng độ trễ so với thời gian thực.

JitterRadius: Sử dụng JitterRadius chúng ta có thể giới hạn giá trị bán kính cho dữ liệu không ổn định của khung xương. Điều này được đo bằng mét và giá trị mặc định là 0.5.

MaxDeviationRadius: Đây là giới hạn tối đa của độ lệch được cho phép để được xem xét xác định một điểm ảnh không ổn định. Nếu bất kỳ điểm ảnh nào nằm ngoài phạm vi của MaxDeviationRadius nó sẽ không bị coi như một điểm ảnh không ổn định. Ra khỏi phạm vi này, giá trị được coi là một vị trí hợp lệ.

Prediction: Quá trình làm mịn phụ thuộc việc vào phân tích số liệu thống kê, đôi khi chúng ta cần các giá trị được dự đoán. Việc dự báo trả về số lượng khung hình được dự đoán trong tương lai. Thuộc tính là một giá trị kiểu float với giá trị mặc định là 0,5. Giá trị dự đoán phải lớn hơn hoặc bằng 0.

Một phần của tài liệu Tương tác trực quan giữa người và máy tính bằng cảm biến quang (Trang 35 - 38)

Tải bản đầy đủ (PDF)

(63 trang)