2012-06-15 60 views
21

Khi sử dụng chức năng findHomography của OpenCV để ước tính một homography giữa hai tập hợp điểm, từ các hình ảnh khác nhau, đôi khi bạn sẽ nhận được một homography xấu do ngoại lệ trong các điểm đầu vào của bạn, ngay cả khi bạn sử dụng RANSAC hoặc LMEDS.Làm cách nào để biết ma trận homography có được chấp nhận hay không?

// opencv java example: 
Mat H = Calib3d.findHomography(src_points, dst_points, Calib3d.RANSAC, 10); 

Làm thế nào để bạn biết liệu ma trận đồng bộ 3x3 có được chấp nhận hay không?

Tôi đã tìm kiếm câu trả lời cho điều này tại đây trong Stackoverflow và trong Google và không thể tìm thấy nó.

tôi tìm thấy bài viết này, nhưng nó là một chút khó hiểu với tôi:

"The geometric error for homographies"

+2

Xem câu hỏi http://stackoverflow.com/questions/10972438/detecting-garbage-homographies-from-findhomography-in-opencv/10981249#10981249 –

+0

nếu chuyển động của máy ảnh bị giới hạn, bạn có thể cố gắng phân tích tính đồng nhất và kiểm tra quy mô, luân chuyển và/hoặc các thông số dịch cho các giá trị drastical. Phương pháp khác: Nếu bạn biết (hoặc lấy ràng buộc) rằng các phần lớn của hình ảnh sẽ chồng lên nhau, bạn có thể tính toán sự chồng chéo sau khi cong vênh và quyết định xem đó có phải là một bản sao hoàn toàn sai không. Phương pháp khác: nếu bạn sử dụng RANSAC bạn có thể quyết định số lượng inlier (và/hoặc tỷ lệ inlier/total) cho dù homography có bị từ chối không) – Micka

+0

@Micka cảm ơn sự giúp đỡ của bạn, tôi đã sử dụng RANSAC, không giới hạn và tôi đang tìm kiếm các phương pháp để loại bỏ homographies (chủ yếu là toán học) trước khi đi vào tính toán nặng hơn như áp dụng homography và kiểm tra chồng chéo. –

Trả lời

22

Cách tốt nhất để biết nếu homography có thể chấp nhận được.

1- Lấy điểm của một hình ảnh và chiếu lại chúng bằng cách sử dụng tính toán homography.

//for one 3D point, this would be the projection 
px' = H * px; 
py' = H * py; 
pz' = H * pz; 

2- Tính euclidean distance giữa các điểm chiếu lại và những điểm thực sự trong hình ảnh.

Reprojection error cho một điểm. p là điểm dự kiến ​​và q là điểm thực.

enter image description here

3- Thiết lập một treshold rằng quyết định nếu lỗi chiếu lại là chấp nhận được.

Ví dụ: một lỗi lớn hơn một pixel sẽ không được chấp nhận cho nhiều ứng dụng theo dõi.

+11

Những gì bạn đề xuất có giá trị để theo dõi, khi bạn biết rằng rất có thể hai hình ảnh chia sẻ một bản vá ở các vị trí tương tự. Khi bạn tính toán một homography giữa hai hình ảnh khác nhau để kiểm tra xem một hình ảnh có chứa các khác reprojection lỗi là không hữu ích cả. Ví dụ, trong trường hợp của tôi, tôi thường nhận được nhiều (~ 30) điểm từ một hình ảnh được ánh xạ lên cùng một điểm (hoặc ít, điểm đóng) trong một hình ảnh thứ hai. Bạn có bất cứ đề nghị cho trường hợp này? –