2012-10-10 36 views
6

Có 2 hình ảnh A và B. Tôi trích xuất các điểm chính (a [i] và b [i]) từ chúng.
Tôi tự hỏi làm cách nào để xác định kết hợp giữa [i] và b [j], hiệu quả?Cách hiệu quả để phù hợp với mô tả SIFT

Phương pháp rõ ràng đến với tôi là so sánh từng điểm trong A với mỗi điểm trong B. Nhưng nó mất nhiều thời gian cho cơ sở dữ liệu hình ảnh lớn. Làm thế nào tôi có thể so sánh điểm [i] với chỉ b [k] trong đó k là phạm vi nhỏ?

Tôi nghe nói rằng kd-tree có thể là một lựa chọn tốt, phải không? Có bất kỳ ví dụ nào là tốt về kd-tree?

Bất kỳ đề xuất nào khác?

+1

kd- cây như vậy không hiệu quả cho các bộ mô tả có chiều cao như SIFT (điều này được gọi là [lời nguyền của chiều không gian] (http://en.wikipedia.org/wiki/Curse_of_dimensionality)). Tuy nhiên, có tồn tại các chiến lược lập chỉ mục khác để tìm kiếm gần đúng hàng xóm gần nhất trong không gian chiều cao. FLANN, bao gồm trong OpenCV, là một. Và việc triển khai kết hợp điểm chính bằng FLANN, hãy xem liên kết trong câu trả lời của tôi – remi

Trả lời

11

Cây KD lưu trữ các bộ mô tả được đào tạo theo cách thực sự nhanh hơn để tìm ra bộ mô tả tương tự nhất khi thực hiện khớp.

Với OpenCV nó là rất dễ dàng để sử dụng kd-cây, tôi sẽ cung cấp cho bạn một ví dụ cho các khớp Flann:

flann::GenericIndex< cvflann::L2<int> > *tree; // the flann searching tree 
tree = new flann::GenericIndex< cvflann::L2<int> >(descriptors, cvflann::KDTreeIndexParams(4)); // a 4 k-d tree 

Sau đó, khi bạn thực hiện phù hợp:

const cvflann::SearchParams params(32); 
tree.knnSearch(queryDescriptors, indices, dists, 2, cvflann::SearchParams(8)); 
+2

Khi bạn gắn cờ các câu trả lời phải là nhận xét hoặc chỉ là liên kết, hãy gắn cờ chúng là "Không phải câu trả lời" thay vì "Chất lượng rất thấp" , nó giúp chúng ta từ góc độ công việc. Nhưng hãy tiếp tục gắn cờ, chúng tôi đánh giá cao điều đó! – casperOne

8

Câu hỏi là thời tiết bạn thực sự muốn xác định một điểm ảnh phù hợp với giữa hai hình ảnh hoặc tính một số đo tương tự .

Nếu bạn muốn xác định đối sánh, tôi sợ bạn sẽ phải tìm kiếm bạo lực thông qua tất cả các cặp mô tả có thể có giữa hai hình ảnh (có một số phương pháp nâng cao hơn như FLANN - Tìm kiếm lân cận gần đúng gần nhất, nhưng tốc độ không phải là đáng kể nếu bạn có ít hơn hoặc khoảng 2000 điểm chính cho mỗi hình ảnh - ít nhất là trong kinh nghiệm của tôi). Để có được một kết hợp chính xác hơn (không nhanh hơn, chỉ cần trận đấu tốt hơn), tôi có thể đề nghị bạn hãy xem:

Nếu, mặt khác, bạn muốn chỉ là một biện pháp tương tự trên một cơ sở dữ liệu lớn, sau đó là nơi thích hợp để bắt đầu sẽ là:

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