2012-05-11 34 views
5

Tôi đang sử dụng Kinect với OpenNI/NITE. OpenNI có thể theo dõi bàn tay con người với sự hỗ trợ của NITE. Ngoài ra, OpenNI có thể làm trơn đường tay được theo dõi, và tôi đã cố gắng tìm ra cách làm như thế.Làm mịn trực tuyến cho dữ liệu theo dõi tay bằng Bộ lọc Kalman

Tôi đã thử sử dụng bộ lọc Kalman, thay thế vị trí cũ bằng tay với vị trí tay kalman ước tính, nhưng vẫn mượt mà hơn trong OpenNI là tốt hơn nhiều.

Tôi đánh giá cao bất kỳ manh mối nào về cách làm mịn dữ liệu trực tuyến hoặc cách đặt thông số trong bộ lọc Kalman (điều gì đó đặc biệt cho theo dõi tay, vì tôi đã biết các thông số làm gì).

Trả lời

4

Sử dụng bộ lọc Kalman không phải là dễ dàng như nó có vẻ. Bạn cần chọn một mô hình chuyển động tốt, một vector trạng thái tốt và một mô hình đo lường tốt. Đối với vấn đề của bạn, như tôi đoán bạn làm theo dõi 3d vị trí, không định hướng (x, y và z vị trí của tay trên màn hình) tôi sẽ chọn như sau:

State vector =[x, y, z, v_x, v_y, v_z] 

Update equations: (x,y,z) = (x,y,z)+ (v_x,v_y,v_z)*delta(t) 
velocity would be constant 

Bạn cũng cần phải thiết lập các hiệp phương sai của lỗi đúng, vì điều này sẽ mô hình lỗi của việc chọn vận tốc là hằng số (điều này không đúng).

Kiểm tra điều này paper. Có một cái nhìn để các Jacobians cần thiết cho các phương trình dự đoán và cập nhật của bộ lọc. Chúng rất quan trọng. Nếu bạn xem xét danh tính, bộ lọc sẽ hoạt động, nhưng nó sẽ chỉ hoạt động với độ chính xác nếu bạn chọn đúng Jacobians W (nhân Q), H và A. Q và R là đường chéo, cố gắng cung cấp giá trị thử nghiệm.

Hy vọng điều này sẽ giúp, chúc may mắn.

+2

Tôi đã thử mô hình này, đã thử nó với khả năng tăng tốc. Tuy nhiên, trong khi nó làm trơn tru tín hiệu trong khi đang chuyển động, khi bàn tay vẫn đứng yên vẫn còn xuất hiện. Hơn nữa, bản thân mô hình có vẻ sai. Đó là để mô hình chuyển động tay bằng cách sử dụng các phương trình chuyển động tiêu chuẩn, bàn tay không thực sự theo đó, phải không? –

0

Here Có một ví dụ đơn giản cho thấy cách đặt thông số của bộ lọc kalman.

Ví dụ này đại diện cho một cách đơn giản để kiểm tra đầu ra được làm phẳng khác nhau một cách trực quan. Kiểm tra các bình luận cũng giúp tôi hiểu các thông số khác nhau (tiếng ồn, mô hình chuyển động, khởi tạo, vv).

Hy vọng nó sẽ giúp, nó hoạt động khá tốt và mã đơn giản để hiểu.

Nó sử dụng triển khai opencv.

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan