Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV中基本矩阵的本质矩阵_Opencv_Computer Vision_Camera Calibration_3d Reconstruction - Fatal编程技术网

OpenCV中基本矩阵的本质矩阵

OpenCV中基本矩阵的本质矩阵,opencv,computer-vision,camera-calibration,3d-reconstruction,Opencv,Computer Vision,Camera Calibration,3d Reconstruction,我已经通过使用SURF找到的对应点计算了立体对的基本矩阵。根据Hartley和Zisserman的说法,基本矩阵的计算方法如下: E = K.t() * F * K 我是怎么得到K的?还有其他方法计算E吗?我不知道你从哪里得到的公式,但正确的方法是 E=K'^T。FK(见Hartley&Zisserman第二版第257页第9.6节) K是相机的固有参数,包含图像中心的比例因子和位置,以像素单位表示 | \alpha_u 0 u_0 | K = | 0 \

我已经通过使用SURF找到的对应点计算了立体对的基本矩阵。根据Hartley和Zisserman的说法,基本矩阵的计算方法如下:

E = K.t() * F * K

我是怎么得到K的?还有其他方法计算E吗?

我不知道你从哪里得到的公式,但正确的方法是
E=K'^T。FK
(见Hartley&Zisserman第二版第257页第9.6节)

K
是相机的固有参数,包含图像中心的比例因子和位置,以像素单位表示

    | \alpha_u     0     u_0 |
K = |    0      \alpha_u v_0 |
    |    0         0      1  |
(很抱歉,SO上不支持Latex)

编辑:要获取这些值,您可以:

  • 校准照相机
  • 如果有制造商数据,请计算近似值。如果镜头在传感器上正确居中,则u_0和v_0分别是图像分辨率宽度和高度的一半。和
    alpha=k.f
    ,其中f为焦距(m),k为像素比例因子:如果像素为6 um,则
    k=1/6um
    。 例如,如果镜头为8mm,像素大小为8um,则
    alpha=1000
计算E

当然,有几种方法可以计算E,例如,如果你已经对摄像机组进行了强校准,那么你可以在两台摄像机之间提取R和t(旋转矩阵和平移向量),E被定义为斜对称矩阵t和矩阵R的乘积

但是如果你有这本书,所有这些都在里面


编辑刚刚注意到,关于这个话题甚至还有一个新的话题

对不起,我没有提到立体图像是用同一台相机拍摄的,所以K'=K,对于t(),我指的是用于转置矩阵的OpenCV函数。所以,我现在的问题是:如何从图像中获取K(我事先不知道)?