undistortPoints()函数介绍
文档链接: opencv官方文档
undistortPoints()函数作用:根据相机参数和观测点坐标位置计算实际坐标位置。
接口:
void cv::undistortPoints(InputArray src,
OutputArray dst,
InputArray cameraMatrix,
InputArray distCoeffs,
InputArray R = noArray(),
InputArray P = noArray()
)
简介:
注意问题
- 观测点的shape,即src的shape是1xNx2或Nx1x2;
- R参数是用在双目里的,单目里置为空矩阵;
- P矩阵值为空时,得到的结果的点坐标是相机的归一化坐标( x , y ),这时候数值就会明显很小;
P矩阵值不为空,设置为相机内参,得到的结果点坐标是像素坐标(正常的图像坐标)。
会进行以下计算:
u ′ ← x f ′ x + c x ′ v ′ ← y f y ′ + c y ′ \begin{aligned} & u^{\prime} \leftarrow x f^{\prime}{ }_x+c_x^{\prime} \\ & v^{\prime} \leftarrow y f_y^{\prime}+c_y^{\prime} \end{aligned} u′←xf′x+cx′v′←yfy′+cy′
这时候得到的才是特征点消畸变后的像素坐标。
我们通常使用时是想得到在同一个相机下的真实像素,所以P设置为内参就可以了。
对应官方文档的这块内容:
参考连接: opencv undistortPoints函数介绍和注意