2013-04-08 24 views
8

Mô tả sự cố: Tôi đang làm việc tại một dự án có mục đích xác định các bộ phận cơ thể người (hình, đầu, tay trái, vv). Cách tiếp cận này dựa trên việc tìm kiếm các phần của cơ thể con người (giả thuyết) và sau đó tìm kiếm cấu hình tư thế tốt nhất (= tất cả các phần thực sự tạo thành cơ thể con người). Các ideea được mô tả tốt hơn tại liên kết này http://www.di.ens.fr/willow/events/cvml2010/materials/INRIA_summer_school_2010_Andrew_human_pose.pdf.Ước tính đặt ra con người - liên kết hiệu quả các bộ phận cơ thể

Giả thuyết thu được sau khi chạy thuật toán phát hiện (ở đây tôi đang sử dụng trình phân loại từ trường học máy) cho từng phần nội dung riêng biệt. Vì vậy, loại của mỗi giả thuyết được biết đến. Ngoài ra, mỗi giả thuyết có một vị trí (tọa độ x và y trong hình ảnh) và định hướng.

Để xác định chi phí liên kết hai phần với nhau, người ta có thể xem xét rằng mỗi giả thuyết của loại đầu có thể được liên kết với mỗi giả thuyết về loại thân (ví dụ). Tuy nhiên, giả thuyết đầu nằm ở vị trí trên cùng bên phải của hình ảnh không thể được liên kết (từ quan điểm của con người) với giả thiết thân xác ở phía dưới cùng bên trái của hình ảnh. Tôi đang cố gắng tránh các loại liên kết này dựa trên tuyên bố cuối cùng và cũng do thời gian thực hiện.

Câu hỏi: Tôi đang bào giảm không gian tìm kiếm bằng cách xem xét khoảng cách đến giả thuyết xa nhất có thể là ứng cử viên liên kết. Cách nhanh nhất để giải quyết vấn đề tìm kiếm này là gì?

+1

Bạn đang tìm kiếm tên của một thuật toán mà bạn có thể nghiên cứu thêm? –

+0

Không trả lời câu hỏi cụ thể của bạn, nhưng chỉ cho bạn một liên kết đến một dự án liên quan mà nó có thể hữu ích (hoặc không) cho bạn :-) https://github.com/joaquimrocha/Skeltrack – Nelson

+0

Có, tôi cần một thuật toán hoặc bất kỳ cách tiếp cận nào khác hoạt động tốt hơn so với cách xem xét tất cả các liên kết có thể có giữa 2 giả thuyết thuộc loại khác nhau. –

Trả lời

2

Đối với các sự cố tương tự tôi đã sử dụng để tách hình ảnh nguồn thành 16 (hoặc nhiều hơn, tùy thuộc vào kích thước tương đối của các phần bạn đang cố gắng liên kết) hình ảnh nhỏ hơn, thực hiện việc phát hiện và liên kết bước trong mỗi seperatly này và một bước bổ sung mà bạn sẽ chỉ thực hiện một bước liên kết cho mỗi ảnh phụ, và đó là (có thể là 8) hàng xóm.

Trong trường hợp này, bạn sẽ không bao giờ cố gắng liên kết một phần ở góc trên bên trái với góc dưới bên phải và phần thưởng đầu tiên của vấn đề giờ đây cực kỳ song song.

Cập nhật: Bạn có thể phát hiện cạnh trên hình ảnh trước và không bao giờ cắt hình ảnh thành 2 khi điều đó có nghĩa là cắt cạnh thành hai. đệ quy làm điều này sẽ cho phép bạn nhận được rất nhiều hình ảnh nhỏ với các bộ phận cơ thể trên chúng, bạn có thể xử lý riêng biệt.

+0

Cảm ơn bạn đã đề xuất. Tôi cung cấp cho bạn 1 cho ideea của chạy thuật toán phát hiện song song. Nhưng, tôi không chắc chắn về cách tiếp cận liên kết mà bạn đề xuất.Như tôi đã đề cập trong bình luận cuối cùng cho câu trả lời của @ sansuiso, tôi đang cố gắng thực hiện điều này bằng cách sử dụng một octree. –

1

Loại sự cố gán rời rạc này có thể được giải quyết bằng cách sử dụng Hungarian algorithm.

Trong tính toán ma trận chi phí (= khoảng cách), bạn có thể đặt mục nhập vào một số giá trị vô hạn hoặc rất cao khi khoảng cách là tỷ lệ cược so với ngưỡng được xác định trước, Điều này sẽ ngăn thuật toán gán đầu cho thân mình quá xa.

Kỹ thuật cuối cùng này còn được gọi là gating trong theo dõi bài giảng.

+0

Cảm ơn bạn đã trả lời, nhưng, theo như tôi hiểu, theo cách này tôi nên so sánh mỗi giả thuyết thân với mỗi giả thuyết đầu (ví dụ) để có được ma trận chi phí. Nhưng, ý định của tôi là tránh những tính toán không cần thiết (= cố gắng liên kết hai phần quá xa nhau). –

+0

Thuật toán Hungary là thuật toán hiệu quả để giải quyết vấn đề này. Nó thực sự là giá trị cố gắng nó. Bạn có thể kiểm tra độ phức tạp thuật toán của nó trên liên kết mà tôi đã cung cấp. – sansuiso

+0

Tôi đang xem qua liên kết bạn đã chỉ ra. Độ phức tạp là O (n^3). Nhưng, tôi nghĩ rằng quá trình liên kết này có thể được thực hiện với độ phức tạp cao hơn. Bây giờ, tôi đang cố gắng để thực hiện nó bằng cách sử dụng một octree. Nếu n là số giả thiết thân và m là số giả thuyết đầu thì độ phức tạp của việc xây dựng cây là O (nlog (n)) và để tìm các xung quanh gần cho tất cả các đầu là> = O (mlog (n)) (trường hợp tốt nhất = O (mlog (n)). –

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