2011-01-31 37 views
27

Gần đây tôi đã bắt đầu hack trên Kinect của tôi và tôi muốn loại bỏ bóng tối. Bóng được gây ra bởi các emitter IR được định vị một chút ở phía bên của máy ảnh, vì vậy bất kỳ đối tượng gần sẽ nhận được một cái bóng lớn và đối tượng ở xa ít hoặc không có bóng tối.Loại bỏ bóng tối Kinect

Độ dài bóng có liên quan đến khoảng cách giữa điểm gần nhất và xa nhất trên mỗi cạnh của bóng.

Mục tiêu của tôi là có thể ánh xạ chính xác hình ảnh màu lên độ sâu. Điều này không hoạt động nếu không xử lý bóng như hình ảnh này hiển thị:
enter image description here

+0

Có thể một số loại thay đổi kích thước hình thang sẽ hoạt động? – chriszero

+2

Nó sẽ giúp rõ ràng hơn về những dữ liệu bạn phải làm việc với, cho Kinectless như tôi. Có vẻ như bạn có một mạng lưới các điểm ảnh từ máy ảnh và một khoảng cách tương ứng của khoảng cách từ bộ phát hồng ngoại. Đúng? –

+0

Tôi có dữ liệu bạn thấy trong hai hình ảnh. Vùng màu đen là bóng với màu 0. Phần còn lại có một giá trị màu tùy thuộc vào khoảng cách. –

Trả lời

0

Kinect Method - MapDepthFrametoColorFrame

Lấy [x,y] vị trí trong khung chiều sâu và sử dụng phương pháp đó để điền vào

3

Bóng tối luôn luôn có màu đen?

Nếu bạn có thể sử dụng phương pháp đơn giản như trung bình thời gian để tính toán nền của hình ảnh (thông tin thêm tại đây: http://www.roborealm.com/help/Temporal_Median.php) và sau đó bất cứ khi nào pixel đen, đặt giá trị nền ở vị trí pixel đó.

2

Tôi không biết làm thế nào nó là với C# nhưng openni c + + có một chức năng gọi là xnSetViewPoint() vấn đề duy nhất là, bạn mất hàng đầu 20 hoặc nhiều hơn của imagedata do chuyển đổi.

lý do là do sử dụng hai cảm biến khác nhau, được đặt gần nhau nhưng không chính xác ở cùng một vị trí.

3

Tôi đã thực hiện một số công việc sơ bộ về vấn đề này cách đây vài tuần. Mã của tôi hoạt động trực tiếp trên WriteableBitmap thay vì dữ liệu chiều sâu, nhưng nếu bạn chỉ làm xử lý hình ảnh, nó sẽ hoạt động. Thuật toán không hoàn hảo và sẽ mang lại lợi ích cho một số chỉnh sửa thêm. Nếu bạn cập nhật mã, hãy cho tôi biết; Tôi rất muốn xem bạn đang làm gì!

Mã nguồn được đăng tải trên blog của tôi:

http://richardpianka.com/2011/02/trackingni-depth-correction/

0

Tôi xin lỗi để nói nhưng cái bóng đó là do cơ thể bạn ngăn chặn các dấu chấm suy ra từ đánh rằng chỗ của căn phòng để nó tạo ra một đốm đen ... không có gì bạn có thể làm nhưng thay đổi nền cơ sở để một màu khác ngoài màu đen vì vậy nó sẽ không phải là một cái bóng đáng chú ý

+0

Điều đó tôi hiểu, nhưng nếu bạn nhìn vào hình ảnh của tôi thì bạn sẽ thấy rằng bóng tối là một trận đấu hoàn hảo, nhưng được căn chỉnh và có kích cỡ sai. Kích thước và căn chỉnh phụ thuộc vào khoảng cách. nếu nó đã được hiệu chuẩn, tôi sẽ có thể vẽ lại chính mình một cách hoàn hảo ở nền trước trong khi loại bỏ nền. (Thật dễ dàng để thấy rằng tất cả các dữ liệu cần thiết là có.) –

+0

oh, tôi thấy những gì bạn quan tâm ... tôi không thể giúp –

0

Máy ảnh màu và máy ảnh độ sâu kinect không có cùng kích thước và nguồn gốc của các chấm đỏ không phải từ cùng một cam, máy chiếu IR của nó vài cm bên cạnh nó (như chuyển dịch được sử dụng để tính chiều sâu).

Tuy nhiên các đường nối giải pháp dễ dàng ở đây, dữ liệu bóng của bạn nằm ở bên trái. vì vậy bạn cần phải mở rộng dữ liệu màu đã biết trước khi nó chuyển sang màu đen.

Và để vừa di chuyển tốt hơn, dịch dữ liệu cam màu sang phải.

+0

Cảm ơn. Vấn đề này đã được giải quyết với Kinect SDK. Đánh dấu MapDepthFrametoColorFrame là câu trả lời chính xác. :) –

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