Bạn đã xem giấy chuyển hướng của Gary Bradski chưa? Bạn có thể tải xuống từ here
Tôi đã sử dụng thuật toán phát hiện da một năm trước để phát hiện vùng da để theo dõi tay và nó rất mạnh. Nó phụ thuộc vào cách bạn sử dụng nó.
Vấn đề đầu tiên với việc sử dụng màu để theo dõi là nó không phải là mạnh mẽ để chiếu sáng biến thể hoặc như bạn đã đề cập, khi mọi người có tông màu da khác nhau. Tuy nhiên, điều này có thể được giải quyết dễ dàng như đã đề cập trong bài báo bằng cách:
- Chuyển hình ảnh sang không gian màu HSV.
- Vứt bỏ kênh V và xem xét kênh H và S và do đó giảm giá cho các biến thể ánh sáng.
- Ngưỡng pixel có độ bão hòa thấp do sự bất ổn định của chúng.
- Bin vùng da đã chọn vào biểu đồ 2D. (OpenCV "s calcHist chức năng) Biểu đồ này hiện hoạt động như một mô hình cho da.
- Tính toán "backprojection" (tức là sử dụng biểu đồ để tính toán "xác suất" rằng mỗi pixel trong hình ảnh của bạn có màu da) sử dụng calcBackProject. Da khu vực sẽ có giá trị cao.
- Sau đó, bạn có thể sử dụng meanShift để tìm kiếm chế độ bản đồ "xác suất" 2D được tạo bởi dự án hoặc để phát hiện các đốm màu có xác suất cao " ".
Vứt bỏ kênh V trong HSV và chỉ xem xét kênh H và S thực sự là đủ (ngạc nhiên) để phát hiện các tông màu da khác nhau và theo các biến thể ánh sáng khác nhau. Một mặt cộng là tính toán của nó là nhanh.
Các bước này và mã tương ứng có thể được tìm thấy trong OpenCV book gốc.
Như một lưu ý phụ, tôi cũng đã sử dụng Mô hình hỗn hợp Gaussian (GMM) trước đây. Nếu bạn chỉ xem xét màu sắc thì tôi sẽ nói sử dụng biểu đồ hoặc GMM không có nhiều khác biệt. Trong thực tế, biểu đồ sẽ hoạt động tốt hơn (nếu GMM của bạn không được xây dựng để tính toán các biến thể ánh sáng, v.v.). GMM là tốt nếu các vectơ mẫu của bạn tinh vi hơn (tức là bạn xem xét các tính năng khác) nhưng biểu đồ tốc độ nhanh hơn nhiều vì tính toán bản đồ xác suất sử dụng biểu đồ cơ bản là tra cứu bảng trong khi GMM yêu cầu thực hiện tính toán ma trận (đối với vector có thứ nguyên> 1 trong công thức phân phối gaussian đa chiều) có thể tốn thời gian cho các ứng dụng thời gian thực.
Vì vậy, trong kết luận, nếu bạn chỉ cố gắng để phát hiện vùng da sử dụng màu sắc, sau đó đi với phương pháp biểu đồ. Bạn có thể điều chỉnh nó để xem xét gradient cục bộ (tức là biểu đồ của gradient nhưng có thể không đi đến mức độ phát hiện con người của Dalal và Trigg.) Để nó có thể phân biệt giữa da và vùng với màu tương tự (ví dụ như bìa cứng hoặc đồ nội thất bằng gỗ)) bằng cách sử dụng thông tin kết cấu cục bộ. Nhưng điều đó đòi hỏi nhiều nỗ lực hơn.
Để biết mã nguồn mẫu về cách sử dụng biểu đồ để phát hiện da, bạn có thể xem trang OpenCV here.Nhưng lưu ý rằng trang web đó chỉ được sử dụng kênh màu và sử dụng cả hai màu sắc và độ bão hòa sẽ cho kết quả tốt hơn
Để có cách tiếp cận tinh vi hơn, bạn có thể xem công trình "Phát hiện những người khỏa thân" của Margaret Fleck và David Forsyth. Đây là một trong những công trình trước đây về phát hiện vùng da xem xét cả màu sắc và kết cấu. Chi tiết có thể được tìm thấy here.
Tài nguyên tuyệt vời cho mã nguồn liên quan đến thị giác máy tính và i xử lý mage, điều này xảy ra bao gồm mã để theo dõi trực quan có thể được tìm thấy here. Và không, OpenCV không phải của nó.
Hy vọng điều này sẽ hữu ích.
cảm ơn câu trả lời chi tiết của bạn. không biết nếu tôi sẽ thực hiện các phương pháp chính xác nhưng nó giúp đỡ rất nhiều vì nó cũng explaings một số chi tiết như bỏ qua các kênh v - mà im hiện đang làm nhưng không thực sự hiểu tại sao – Nicolas
Tôi thêm liên kết đến một trang web có rất nhiều mã nguồn của CV và các ứng dụng xử lý hình ảnh bao gồm theo dõi hình ảnh mà tôi nghĩ bạn có thể thấy hữu ích vì tôi nghĩ rằng phát hiện da có thể chỉ là một cách tiếp cận có thể có. Có thể đáng để nhìn vào người khác. – lightalchemist
Cập nhật liên kết để phát hiện những người khỏa thân - http://mfleck.cs.illinois.edu/naked.html – saurabheights