gpt4 book ai didi

c++ - 我们如何确认内在矩阵是正确的?

转载 作者:行者123 更新时间:2023-12-02 16:38:24 26 4
gpt4 key购买 nike

我使用aruco标记器进行了相机校准。由于固有矩阵是K = [fx 0 cx; 0 fy cy; 0 0 1],其中fx = image_width/2 and fy = image_height/2。我进行了两次校准,结果是:

情况1

camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [ 1.7837087835808685e+004, 0., 9.4648597205501767e+002, 0.,
1.7846680517567835e+004, 6.2655678552312384e+002, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
rows: 1
cols: 5
dt: d
data: [ 1.3214125616841757e-001, 1.3720591379476604e+001,
4.1379706976846960e-003, 3.2630160993931338e-002,
7.2446581087476508e-002 ]

案例2
camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [ 3.9925887362481939e+004, 0., 9.6015637557091463e+002, 0.,
3.5268399261164773e+003, 5.9886507612381956e+002, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
rows: 1
cols: 5
dt: d
data: [ 4.4338539084399781e-001, 4.9217843346948866e+000,
5.8004377137432547e-002, 1.1762688789809046e-004,
-5.4097967557812456e+002 ]

图片的分辨率为1920 * 1200,因此 cxcy分别为960和600。
在第二种情况下, cxcy符合预期;重投影误差很大。在其他情况下, cxcy不匹配,但重投影误差非常低(小于1)。

因此,现在可以考虑并最好地得出哪些结果,以及一般如何定义 fxfy

最佳答案

您认为cx和cy应该接近960和600是正确的。从这个 Angular 来看,情况2似乎更有可能,但情况1的中心点(946,626)当然是合理的。

更令人侧目的是获得的焦距参数。 (17837,17846)和(39925,3526)都不适合焦距对。根据经验,fx参数应将像素宽度(在这种情况下为1920)匹配2倍以内(例如,iPhone 5S的fx〜= 0.8 * pixelWidth)。并且fy应将fx匹配到1.2倍左右。对于情况1,fx的宽度偏离了10倍,对于情况2,fx和fy的失配了10x。

我建议尝试使用多个校准工具箱,并在其中任何两个工具箱之间寻求共识(例如让多个机械师检查您的汽车)。我建议Jean-Yves Bouguet's calibration toolbox,它是OpenCV方法的先驱。

关于c++ - 我们如何确认内在矩阵是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com