2011-10-10 49 views
6

trong dự án của tôi, tôi cần so sánh với hình ảnh. Một hình ảnh hiển thị một mô hình kết xuất và hình ảnh khác là một bức ảnh, trong đó đối tượng thực, được thể hiện trong mô hình, được hiển thị. Điều tôi muốn chính xác:Làm cách nào để so sánh hai cạnh hình ảnh (trong OpenCV)?

  • Thuật toán phải so sánh hai hình ảnh và trả về một số, mô tả sự giống nhau. Giả sử số càng thấp thì hình ảnh càng phù hợp với nhau.
  • Cả hai hình ảnh được thể hiện dưới dạng hình ảnh nhị phân chỉ chứa các đường viền/cạnh của ảnh/hình ảnh hiển thị thực.
  • Ảnh có nhiều đối tượng trong đó hơn ảnh hiển thị. Vì vậy, tôi chỉ muốn kiểm tra xem quan điểm đối tượng render có gần giống với điểm quan sát đối tượng thực trong ảnh hay không. (Ví dụ: Một chiếc xe được thiết kế sao cho nó gần như là một chiếc xe thật. Tôi chụp ảnh chiếc xe thật từ một vị trí đặc biệt và định hướng. Bây giờ tôi muốn kiểm tra, nếu vị trí và hướng của máy ảnh ảo của tôi nhìn vào ô tô gần như giống nhau, so với vị trí và hướng của camera thực tế của tôi). Giải pháp là chỉ để so sánh các điểm ảnh trắng của ảnh render với các pixel của ảnh (như ảnh cạnh). Các pixel khác không thú vị.
  • Giá trị trả lại của hình ảnh so sánh sẽ giảm sự định hướng và vị trí của máy ảnh ảo tốt hơn phù hợp với hướng và vị trí của máy ảnh thực.

Tôi đã cố tính khoảng cách euclidian của hai hình ảnh nhưng kết quả chỉ tốt, khi các pixel chính xác phù hợp với nhau. Bây giờ tôi đang tìm kiếm các thay đổi.

Cho đến bây giờ tôi đã cân nhắc sử dụng mối tương quan chéo chuẩn hóa, nhưng tôi thực sự không biết liệu nó có phù hợp với nhiệm vụ của tôi hay không.

Câu hỏi đặt ra là, nếu mối tương quan chéo chuẩn hóa có giá trị để thử hoặc nếu có phương pháp tốt hơn để giải quyết vấn đề của tôi!

Thuật toán phải càng nhanh càng tốt, vì tôi so sánh rất nhiều hình ảnh.

Thanks a lot


Cám ơn góp ý của bạn. Tôi hơi bối rối vì thực tế là khoảng cách chuẩn hóa và khoảng cách Haussdorff dường như là tốt cho việc tìm kiếm một hình mẫu nhỏ trong một bức tranh lớn.

Câu hỏi đặt ra là: Hai thuật toán này có tốt cho việc so sánh 2 ảnh có cùng kích thước không?

Dưới đây là ví dụ về 2 hình ảnh phải được so sánh. Tại thời điểm này tôi đang so sánh khoảng 120 hình ảnh-cặp một giây.

Rất tệ khi tôi không thể đăng hình ảnh với tư cách người dùng mới. Đây là liên kết trực tiếp: http://s14.directupload.net/file/d/2674/t8qzbq9i_png.htm

+0

Bạn có thể gửi hai hình ảnh? – Maurits

+0

Liên kết đến một ví dụ đã được đăng. – user987979

+0

+1 cho câu hỏi thú vị. Bạn có thể đăng hình ảnh trước khi bạn phát hiện cạnh chúng không? Nó sẽ giúp thêm một số bối cảnh cho câu hỏi của bạn. – misha

Trả lời

1

Bạn cũng có thể trả phòng cosine similarity. Tôi đã sử dụng nó với thành công lớn trong việc phát hiện cảnh cắt trong luồng video. Về cơ bản, bạn xử lý toàn bộ hình ảnh dưới dạng véc tơ 1D và tiến hành đo độ tương tự cosin. Về cơ bản, góc nhỏ có nghĩa là một trận đấu gần gũi, và các giá trị lớn có nghĩa là có một sự không phù hợp. Các ngưỡng sẽ cần một số điều chỉnh cho tập dữ liệu của bạn, nhưng nó có thể hoạt động và nó rất nhanh.

Tương quan chéo được chuẩn hóa phải mạnh mẽ hơn, nhưng sẽ mất nhiều thời gian hơn một chút.Vì bạn đã đề cập cần phải xử lý các tư thế khác nhau, bạn cũng nên xem xét giải pháp phát hiện và trích xuất tính năng. Hãy xem qua các mẫu matcher_simple.cppmatching_to_many_images.cpp của opencv. Những kỹ thuật này có một số khoan dung cho sự khác biệt về quy mô và vòng quay.

Hy vọng điều đó hữu ích!

+1

Đối với dữ liệu chiều cao, chẳng hạn như hình ảnh, tôi sẽ không mong đợi bất kỳ sự khác biệt đáng kể nào giữa khoảng cách euclide và độ tương tự cosin. – Maurits

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