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_Camera Calibration - Fatal编程技术网

OpenCV中不失真点()和项目点()之间的差异

OpenCV中不失真点()和项目点()之间的差异,opencv,camera-calibration,Opencv,Camera Calibration,根据我的理解,无畸变点在畸变图像上获取一组点,并计算它们的坐标在同一图像的无畸变版本上的位置。同样,projectPoints将一组对象坐标映射到其相应的图像坐标 但是,我不确定projectPoints是将对象坐标映射到扭曲图像(即原始图像)上的一组图像点,还是映射到未扭曲图像(直线)上的一组图像点 此外,针对不失真点的OpenCV文档声明“该函数执行到projectPoints()的反向转换”。您能解释一下这是怎么回事吗?引用3.2文档中的以下内容: 将三维点投影到图像平面 该函数计算 将3

根据我的理解,无畸变点在畸变图像上获取一组点,并计算它们的坐标在同一图像的无畸变版本上的位置。同样,projectPoints将一组对象坐标映射到其相应的图像坐标

但是,我不确定projectPoints是将对象坐标映射到扭曲图像(即原始图像)上的一组图像点,还是映射到未扭曲图像(直线)上的一组图像点


此外,针对不失真点的OpenCV文档声明“该函数执行到projectPoints()的反向转换”。您能解释一下这是怎么回事吗?

引用3.2文档中的以下内容:

将三维点投影到图像平面

该函数计算 将3D点投影到给定的图像平面,并 外部摄像机参数

您有参数
distcoefs

如果向量为空,则假定失真系数为零

在没有失真的情况下,方程为:

使用
K
内部矩阵和
[R|t]
外部矩阵或将对象或世界帧中的点转换为相机帧的变换


对于,您有参数R:

对象空间中的校正变换(3x3矩阵)。可以将cv::StereoRective计算的R1或R2传递到此处。如果矩阵为空,则使用恒等式变换

反向变换是一种操作,在该操作中,您可以使用内部参数为二维图像点(
[u,v]
)计算标准化相机帧中相应的三维点(
[x,y,z=1]

使用外部矩阵,可以获得摄影机帧中的点:

归一化相机帧通过除以深度获得:

假设没有失真,图像点为:

以及假设无失真的“反向变换”: