Tôi đang cố gắng đạt được ước tính đặt ra toàn cầu từ một hình ảnh của bốn tài liệu có vị trí toàn cầu đã biết bằng cách sử dụng webcam của tôi.Ước tính đặt ra máy ảnh (OpenCV PnP)
Tôi đã kiểm tra nhiều câu hỏi stackexchange và một vài giấy tờ và tôi dường như không thể có được một giải pháp đúng. Các số vị trí tôi nhận được có thể lặp lại nhưng không có cách nào tỷ lệ thuận với chuyển động của máy ảnh. FYI Tôi đang sử dụng C++ OpenCV 2.1.
At this link is pictured hệ thống tọa độ của tôi và dữ liệu thử nghiệm được sử dụng bên dưới.
% Input to solvePnP():
imagePoints = [ 481, 831; % [x, y] format
520, 504;
1114, 828;
1106, 507]
objectPoints = [0.11, 1.15, 0; % [x, y, z] format
0.11, 1.37, 0;
0.40, 1.15, 0;
0.40, 1.37, 0]
% camera intrinsics for Logitech C910
cameraMat = [1913.71011, 0.00000, 1311.03556;
0.00000, 1909.60756, 953.81594;
0.00000, 0.00000, 1.00000]
distCoeffs = [0, 0, 0, 0, 0]
% output of solvePnP():
tVec = [-0.3515;
0.8928;
0.1997]
rVec = [2.5279;
-0.09793;
0.2050]
% using Rodrigues to convert back to rotation matrix:
rMat = [0.9853, -0.1159, 0.1248;
-0.0242, -0.8206, -0.5708;
0.1686, 0.5594, -0.8114]
Cho đến nay, ai cũng có thể thấy điều gì sai với những số này? Tôi sẽ đánh giá cao nếu ai đó sẽ kiểm tra chúng trong ví dụ MatLAB (mã ở trên là m-file thân thiện).
Từ thời điểm này, tôi không chắc chắn về cách có được tư thế toàn cầu từ rMat và tVec. Từ những gì tôi đã đọc trong this question, để có được những tư thế từ rMat và tVec chỉ đơn giản là:
position = transpose(rMat) * tVec % matrix multiplication
Tuy nhiên tôi nghi ngờ từ các nguồn khác mà tôi đã đọc nó không phải là đơn giản.
Để có được vị trí của máy ảnh trong các tọa độ thực tế, tôi cần phải làm gì? Vì tôi không chắc liệu đây có phải là vấn đề triển khai hay không (tuy nhiên có thể là vấn đề lý thuyết). Tôi muốn người dùng đã sử dụng hàm resolvePnP thành công trong OpenCV để trả lời câu hỏi này, mặc dù mọi ý tưởng đều được chào đón!
Cảm ơn bạn rất nhiều vì đã dành thời gian.
bạn quên nghịch đảo tVec. Vì vậy, đúng cách để làm điều này là -transpose (rMat) * tVec – Vlad