Tôi đang phát triển một ứng dụng cho iPhone bằng cách sử dụng opencv. Tôi phải sử dụng phương pháp solvePnPRansac:tạo ma trận máy ảnh opencv cho iPhone 5 resolvepnp
http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html
Đối với phương pháp này tôi cần phải cung cấp một ma trận camera:
__ __
| fx 0 cx |
| 0 fy cy |
| _0 0 1 _ |
trong đó cx và cy đại diện cho vị trí pixel trung tâm của hình ảnh và fx và fy đại diện cho độ dài tiêu cự, nhưng đó là tất cả tài liệu nói. Tôi không chắc chắn những gì để cung cấp cho các độ dài tiêu cự. IPhone 5 có độ dài tiêu cự là 4,1 mm, nhưng tôi không nghĩ rằng giá trị này có thể sử dụng được.
Tôi đã kiểm tra một trang web khác:
http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html
trong đó cho thấy cách opencv tạo ra ma trận camera. Ở đây nó nói rằng độ dài tiêu cự được đo bằng đơn vị pixel.
Tôi đã kiểm tra một trang web khác:
http://www.velocityreviews.com/forums/t500283-focal-length-in-pixels.html
(khoảng một nửa đường xuống) nó nói rằng độ dài tiêu cự có thể được chuyển đổi từ đơn vị milimét để pixel bằng cách sử dụng phương trình: fx = fy = focalMM * pixelDensity/25,4;
Một liên kết khác tôi thấy rằng fx = focalMM * width/(sensorSizeMM); fy = focalMM * length/(sensorSizeMM);
Tôi không chắc chắn về các phương trình này và cách tạo đúng ma trận này.
Bất kỳ sự giúp đỡ, tư vấn, hoặc liên kết về cách tạo một ma trận camera chính xác (đặc biệt dành cho iPhone 5) sẽ được đánh giá rất nhiều,
Isaac
tái bút: Tôi nghĩ rằng (fx/fy) hoặc (fy/fx) có thể bằng tỉ lệ khung hình của máy ảnh, nhưng điều đó có thể hoàn toàn sai.
UPDATE:
Pixel coordinates to 3D line (opencv)
sử dụng liên kết này, tôi có thể tìm ra cách họ muốn fx và fy phải được định dạng bởi vì họ sử dụng nó để mở rộng góc so với khoảng cách của họ từ trung tâm. do đó, fx và fy có khả năng theo pixel/(độ dài đơn vị) nhưng im vẫn không chắc chắn chiều dài đơn vị này cần phải là bao nhiêu, nó có thể tùy ý miễn là x và y được thu nhỏ với nhau không?
Cảm ơn bạn đã phản hồi, tôi đã tìm thấy thông tin và rất hữu ích. Chỉ một câu hỏi nhanh nữa thôi. Với lĩnh vực góc nhìn, tôi đã tìm thấy trực tuyến mà fy = fx = cx/(tan ((horizontalAngle)/2)) đây có phải là công thức mà bạn đề nghị không? – Isaac
cũng có, tôi vẫn có thể nhận được một vector liên quan đến máy ảnh của tôi theo cách này nếu tôi xây dựng fx của tôi theo cách này: http://stackoverflow.com/questions/3107771/pixel-coordinates-to-3d-line-opencv?rq = 1 – Isaac
upvote cho chỉ ra FoV là thuận lợi như một tham số vì nó là độc lập quy mô – hAcKnRoCk