当前位置:   article > 正文

【逆透视变换+刚体变换求解二维图像坐标对应三维点云C++代码】_透视变换 点云

透视变换 点云

逆透视变换+刚体变换求解二维图像坐标对应三维点云C++代码

世界坐标系坐标(下标为w)左乘RT矩阵,变换到相机坐标系(下标为c)下

[ R T 0 1 ] [ X w Y w 0 1 ] = [ X c Y c Z c 1 ] ( 1 )

[RT01]
[XwYw01]
=
[XcYcZc1]
(1) [R0T1] XwYw01 = XcYcZc1 (1)

[ r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 r 31 r 32 r 33 t 3 0 0 0 1 ] [ X w Y w 0 1 ] = [ X c Y c Z c 1 ] ( 2 )

[r11r12r13t1r21r22r23t2r31r32r33t30001]
[XwYw01]
=
[XcYcZc1]
(2) r11r21r310r12r22r320r13r23r330t1t2t31 XwYw01 = XcYcZc1 (2)

上式左右两边可以写为:

r 11 X w + r 12 Y w + t 1 = λ u − c x f x r 21 X w + r 22 Y w + t 2 = λ v − c y f y ( 3 ) r 31 X w + r 32 Y w + t 3 = λ r_{11}X_{w}+r_{12}Y_{w}+t_{1}=\lambda\frac{u-c_{x}}{f_{x}}\\r_{21}X_{w}+r_{22}Y_{w}+t_{2}=\lambda\frac{v-c_{y}} {f_{y}} (3)\\r_{31}X_{w}+r_{32}Y_{w}+t_{3}=\lambda r11Xw+r12Yw+t1=λfxucxr21Xw+r22Yw+t2=λfyvcy(3)r31Xw+r32Yw+t3=λ

其中,等式右边等价为像素坐标uv左乘相机内参的结果,Lambda为scaling factor.

[ X c Y c Z c 1 ] = λ M − 1 [ u v 1 ] = [ λ u − c x f x λ v − c y f y λ ] ( 4 )

[XcYcZc1]
=\lambda M^{-1}
[uv1]
=
[λucxfxλvcyfyλ]
(4) XcYcZc1 =λM1 uv1 = λfxucxλfyvcyλ (4)

式(3)可以写为:

r 11 X w + r 12 Y w − λ u − c x f x = − t 1 r 21 X w + r 22 Y w − λ v − c y f y = − t 2 r 31 X w + r 32 Y w − λ = − t 3 r_{11}X_{w}+r_{12}Y_{w}-\lambda\frac{u-c_{x}}{f_x}=-t_{1}\\r_{21}X_{w}+r_{22}Y_{w}-\lambda\frac{v-c_{y}}{f_{y}}=-t_2\\r_{31}X_{w}+r_{32}Y_{w}-\lambda=-t_3 r11Xw+r12Ywλfxucx=t1r21Xw+r22Ywλfyvcy=t2r31Xw+r32Ywλ=t3

于是,上式等价为AX=b, 解出X后,取X(3)即为 λ \lambda λ, 带入式(4),即可求得 X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc

Eigen::Vector3d featureMap2d_3d(cv::Point2d p, cv::Mat camK,  Eigen::Matrix3d R, Eigen::Vector3d t)
{
	double fx = camK.at<double>(0, 0);
	double fy = camK.at<double>(1, 1);
	double cx = camK.at<double>(0, 2);
	double cy = camK.at<double>(1, 2);

	//归一化平面z=1
	Eigen::Vector3d P_normal((p.x - cx) / fx,
		(p.y - cy) / fy,
		1.);


	Eigen::Matrix3d A = R;
	A.block(0, 2, 3, 1) = -P_normal;
	Eigen::Vector3d b = -t;

	Eigen::Vector3d x = A.colPivHouseholderQr().solve(b);

	//x.z()为lambda系数
	Eigen::Vector3d Pc = x.z() * P_normal;

	return Pc;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/374819
推荐阅读
相关标签
  

闽ICP备14008679号