2011-12-21 40 views
19

Tôi hiện đang làm việc trên một hệ thống để phát hiện tay mạnh mẽ.Phát hiện tay mạnh mẽ qua Computer Vision

Bước đầu tiên là chụp ảnh tay (trong không gian màu HSV) bằng tay đặt trong một hình chữ nhật nhỏ để xác định màu da. Sau đó tôi áp dụng một bộ lọc thresholding để thiết lập tất cả các điểm ảnh không phải da thành màu đen và tất cả các điểm ảnh màu trắng.

Cho đến nay nó hoạt động khá tốt, nhưng tôi muốn hỏi xem có cách nào tốt hơn để giải quyết vấn đề này không? Ví dụ, tôi tìm thấy một vài giấy tờ đề cập đến không gian màu bê tông cho người da trắng, nhưng không có gì so sánh với tông màu châu á/châu phi/da trắng.

Nhân tiện, tôi đang làm việc với OpenCV thông qua các ràng buộc Python.

Trả lời

22

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:

  1. Chuyển hình ảnh sang không gian màu HSV.
  2. 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.
  3. Ngưỡng pixel có độ bão hòa thấp do sự bất ổn định của chúng.
  4. 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.
  5. 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.
  6. 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.

+2

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

+1

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

+0

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

5

Here là một bài báo về phát hiện da mô hình hỗn hợp gaussian thích ứng mà bạn có thể thấy thú vị.

Ngoài ra, tôi nhớ đọc một bài báo (tiếc là tôi không thể theo dõi nó xuống) sử dụng một kỹ thuật rất thông minh, nhưng nó yêu cầu bạn phải đối mặt trong lĩnh vực xem. Ý tưởng cơ bản là phát hiện khuôn mặt của người đó và sử dụng bản vá da được phát hiện từ khuôn mặt để xác định màu da tự động. Sau đó, sử dụng một mô hình hỗn hợp gaussian để cô lập các pixel da mạnh mẽ.

Cuối cùng, Google Scholar có thể là một trợ giúp lớn trong việc tìm kiếm trạng thái hiện đại trong phát hiện da. Nó được nghiên cứu rất nhiều trong adademia ngay bây giờ cũng như được sử dụng trong ngành công nghiệp (ví dụ: Google Images và Facebook tải lên chính sách hình ảnh).

+0

tôi cũng nghĩ về ý tưởng thực hiện nhận diện khuôn mặt Đầu tiên. Thật không may, tôi không thể tin chắc rằng có một khuôn mặt hiện diện. – Nicolas

4

Bạn sẽ khó tìm thấy tông màu da chỉ dựa trên màu sắc.
Trước hết, nó phụ thuộc mạnh vào thuật toán cân bằng trắng tự động. Ví dụ, trong hình ảnh này, bất kỳ người nào có thể thấy rằng màu sắc là tông màu da. Nhưng đối với máy tính, nó sẽ có màu xanh. enter image description here

Thứ hai, hiệu chỉnh màu chính xác trong máy ảnh kỹ thuật số là một điều khó và nó sẽ hiếm khi đủ chính xác cho mục đích của bạn.
Bạn có thể xem www.DPReview.com, để hiểu ý tôi.

Tóm lại, tôi thực sự tin rằng màu sắc của chính nó có thể là đầu vào, nhưng nó không đủ.

+0

Giả sử bạn không thể điều khiển cân bằng trắng. Trên nhiều máy ảnh, nó có thể được điều khiển bằng tay. Ngoài ra, nếu tông màu da được ước tính thông qua phát hiện khuôn mặt cũng sẽ hoạt động trong các tình huống cân bằng trắng tùy ý. – mevatron

+0

OP hỏi về phát hiện tay chỉ từ các kênh màu HSV. Ngoài ra, tôi có thể tưởng tượng rất nhiều tình huống mà bạn không có khuôn mặt trong hình ảnh. –

5

Tôi đã làm việc về điều tương tự 2 năm trước. Bạn có thể thử với Particle Filter (Condensation), sử dụng pixel màu da làm đầu vào để khởi tạo. Nó khá mạnh mẽ và nhanh chóng. Cách tôi áp dụng nó cho dự án của tôi là tại link này. Bạn có cả bản trình bày (trang trình bày) và bản khảo sát. Nếu bạn khởi tạo màu sắc của bàn tay với màu thực được chiết xuất từ ​​bàn tay bạn sẽ theo dõi bạn không nên có bất kỳ vấn đề nào với người da đen.

Đối với bộ lọc hạt Tôi nghĩ bạn có thể tìm thấy một số mẫu triển khai mã. Chúc may mắn.

0

Vâng kinh nghiệm của tôi với người mẫu da là xấu, bởi vì: 1) sét có thể khác nhau - Phân khúc da không phải là mạnh mẽ 2) nó sẽ đánh dấu khuôn mặt của bạn cũng (như các đối tượng da khác giống)

tôi sẽ sử dụng kỹ thuật học máy như Haar đào tạo, theo ý kiến ​​của tôi, nếu cách tiếp cận tốt hơn nhiều so với mô hình hóa và sửa chữa một số ràng buộc (như phát hiện da + đập ...)

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