2011-09-05 7 views
9

Mục tiêu là hiển thị người trên nền khác (còn gọi là xóa nền).Xóa nền bằng Kinect: triệt tiêu tiếng ồn xung quanh hình dạng cơ thể

Tôi đang sử dụng Kinect với Beta Kinect SDK của Microsoft để thực hiện việc này. Với sự giúp đỡ của chiều sâu, nền được lọc và chúng tôi chỉ nhận được hình ảnh của người đó.

Điều này khá đơn giản để thực hiện và chúng tôi có thể tìm thấy mã ở mọi nơi trên Internet. Tuy nhiên, tín hiệu độ sâu là nhiễu và chúng tôi nhận được pixel không thuộc về người được hiển thị.

tôi áp dụng một máy dò cạnh để xem nếu nó là hữu ích, và tôi hiện đang có được điều này:

Đây là một mà không phát hiện cạnh:

enter image description here

Câu hỏi của tôi là: Tôi có thể loại bỏ những điểm ảnh trắng ồn ào này quanh người như thế nào?

Tôi đã thử các hoạt động hình thái, nhưng một số phần của cơ thể bị xóa và vẫn để lại các pixel màu trắng phía sau.

Thuật toán không cần phải là thời gian thực, tôi chỉ có thể áp dụng nó khi tôi nhấn nút 'Lưu hình ảnh'.

Chỉnh sửa 1:

Tôi vừa cố gắng làm nền với các khung gần nhất trên đường viền hình dạng. Các điểm ảnh duy nhất bạn nhìn thấy đang nhấp nháy, có nghĩa là nó là tiếng ồn và tôi có thể dễ dàng loại bỏ chúng.

Sửa 2:

Dự án bây giờ đã kết thúc, và đây là những gì chúng tôi đã làm: chỉnh bằng tay các Kinect bằng cách sử dụng trình điều khiển OpenNI, cung cấp trực tiếp các hình ảnh hồng ngoại. Kết quả thực sự tốt, nhưng mỗi hiệu chuẩn là đặc trưng cho mỗi Kinect.

Sau đó, chúng tôi áp dụng một chút minh bạch trên các đường viền và kết quả trông rất đẹp! Tôi không thể cung cấp hình ảnh, tuy nhiên.

+1

Bạn có thể đăng hình ảnh trước khi áp dụng đầu dò cạnh không? – misha

+1

Chỉ cần thêm điều đó. – wormsparty

+0

bạn có thể chia sẻ mã số – ravithejag

Trả lời

5

Sự cố của bạn không chỉ là các pixel trắng ồn ào. Bạn cũng đang thiếu các phần quan trọng của con người, ví dụ: một phần bàn tay phải của mình. Tôi muốn khuyên bạn nên thận trọng hơn với việc đẩy mạnh dữ liệu chiều sâu của bạn (cho phép nhiều kết quả dương tính giả). Điều này sẽ cung cấp cho bạn nhiều điểm ảnh ồn ào hơn, nhưng ít nhất bạn sẽ có toàn bộ người đó.

Để thoát khỏi các điểm ảnh ồn ào, tôi có thể nghĩ đến một vài điều:

  • Feather các điểm ảnh bên ngoài (giảm chúng trong cường độ/tăng tính minh bạch của mình nếu bạn đang sử dụng một kênh alpha)
  • Làm mịn hình ảnh, thực hiện dò tìm cạnh trên hình ảnh được làm nhẵn, sau đó sử dụng các cạnh này với hình ảnh sắc nét ban đầu của bạn.
  • Làm một số vùng da phát hiện để đánh dấu các phần chắc chắn thuộc về một người. Xem skin detection in the YUV color space?Skin Color Detection
  • Đối với quần áo, hãy làm việc với hình ảnh màu và độ bão hòa. Nếu bạn biết màu của áo phông (hoặc ít nhất đó là màu không trung tính), thì điều này sẽ nổi bật dễ dàng. Nếu bạn không biết thông tin này, có thể bạn nên xây dựng mô hình của người dùng các khung hình khác (nếu có một đốm màu xám lớn di chuyển xung quanh trong video của bạn, có thể chủ đề của bạn đang mặc áo sơ mi màu xám)

Các phương pháp này không loại trừ lẫn nhau nên có thể có giá trị khi cố gắng kết hợp chúng. Nếu tôi nghĩ về bất cứ điều gì khác, tôi sẽ đăng lại ở đây.

+0

Cảm ơn, tôi sẽ xem xét ý tưởng của bạn vào ngày mai. Về các phần của người bị mất tích, tôi không thể kiểm soát được nó, vì tôi sử dụng phát hiện người của SDK. Ngay cả khi tôi đã viết các phiên bản của riêng tôi, những lỗi này xảy ra khi tín hiệu độ sâu rất ồn ào, như trên các cạnh cánh tay hoặc tóc. Đôi khi, tại một số phần của đầu tôi nhận được độ sâu 0, mà tôi không thể phục hồi dễ dàng. – wormsparty

2

Nếu không có cách nào khác để giải quyết các jitter trên các cạnh bạn luôn có thể thử anti-alias như sau quá trình.