29

Tôi đang thực hiện hiệu chỉnh máy ảnh từ bản ngã tsai. Tôi có ma trận intortic và ngoại lai, nhưng làm cách nào tôi có thể tái tạo lại tọa độ 3D từ sự cố định đó?Nhận tọa độ 3D từ pixel hình ảnh 2D nếu tham số bên trong và bên trong được biết

enter image description here

1) tôi có thể sử dụng Gaussian Loại bỏ cho tìm X, Y, Z, W và sau đó điểm sẽ là X/W, Y/W, Z/W hệ thống như đồng nhất.

2) tôi có thể sử dụng phương pháp OpenCV documentation:

enter image description here

như tôi biết u, v, R, t, tôi có thể tính toán X,Y,Z.

Tuy nhiên, cả hai phương pháp đều có kết quả khác nhau không chính xác.

Tôi đang làm gì sai?

+0

Câu trả lời rất hay, xin vui lòng, nếu câu trả lời đó giúp, đánh dấu đúng là – vgonisanz

Trả lời

25

Nếu bạn có thông số bên ngoài thì bạn có mọi thứ. Điều đó có nghĩa rằng bạn có thể có Homography từ extrinsics (còn gọi là CameraPose). Đưa ra là một ma trận 3x4, homography là một ma trận 3x3, H định nghĩa là

    H = K*[r1, r2, t],  //eqn 8.1, Hartley and Zisserman 

với K là camera ma trận nội tại, r1r2 là hai cột đầu tiên của ma trận xoay , R; t là vectơ dịch.

Sau đó, bình thường hóa chia mọi thứ theo t3.

Điều gì xảy ra với cột r3, chúng ta không sử dụng? Không, bởi vì nó là thừa vì nó là sản phẩm chéo của 2 cột đầu tiên của tư thế.

Bây giờ bạn đã có bản đồ, hãy chiếu các điểm. Điểm 2d của bạn là x, y. Thêm chúng một z = 1, vì vậy chúng bây giờ là 3d. Dự án chúng như sau:

 p   = [x y 1]; 
     projection = H * p;     //project 
     projnorm = projection/p(z);  //normalize 

Hy vọng điều này sẽ hữu ích.

+2

có thể là bạn đã viết sai cột không? bạn có thể có nghĩa là cột (r12 r22 r32) và (r13 r23 và r33) thay vào đó? – EliteTUM

+3

Tôi đã sửa các cột –

+1

Bạn không giả định ở đây rằng tư thế có liên quan đến z == 0 không? Bạn có thể muốn xác định điều đó. Cột thứ ba của tư thế chỉ là dư thừa nếu tọa độ đến luôn luôn có z == 0. – Hammer

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