反向投影误差的计算

感谢广大的SLAM开源科研和工作人员,给我提供了很大的便利和捷径。当然该看的得看,该学的得学。

通过上一讲3D-2D的位姿计算后,现在求取反向投影误差


  • 首先通过 cv::solvePnPRansac(pts3d,pts2d,K,Mat(),rvec,tvec,false,100,4.0,0.99,inliers); 函数获得旋转向量 rvec 和平移向量 tvec
  • 其次通过 cv::Rodrigues(rvec,Rot); 函数获得旋转矩阵 Rot
  • 进行BA光束平差法,通过 bundleAdjustment(pts3d,pts2d,K,Rot,tvec); 函数获得 4×4 的矩阵 T
  • 通过下面的代码可以获得第一帧的三维相机坐标点和经过旋转和平移后获得的三维相机坐标点。

    Mat point = (Mat_<double>(3,1)<<pts3d[i].x,pts3d[i].y,pts3d[i].z);
    Mat R_BA=(Mat_<double>(3,3)<<T(0,0),T(0,1),T(0,2),T(1,0),T(1,1),T(1,2),T(2,0),T(2,1),T(2,2));
    Mat T_BA=(Mat_<double>(3,1)<<T(0,3),T(1,3),T(2,3));
    Mat BA_Point=R_BA*point+T_BA;
  • 通过相机三维坐标到像素坐标的转换,计算经过旋转和平移后获得的三维相机坐标点所对应的像素坐标,与第二帧的所对应特征点的像素坐标的误差,|uiK(RX+T)|2,该式中 ui 代表的是是几个特征点所对应的坐标,K代表的是相近内参,代表的从相机的三维坐标点到像素坐标的映射,R和T代码的是相机坐标点相对于第二帧的旋转和平移变换。

    double sum_pnp=0,sum_ba=0;
    for(int i=0;i<pts3d.size();i++)
    {
    Vector2d ba_reprojected=camera2pixel(Vector3d(BA_Point.at<double>(0,0),BA_Point.at<double>(1,0),BA_Point.at<double>(2,0)));
    delt_ba=(pts2d[i].y-ba_reprojected_pixel[1])*(pts2d[i].y-ba_reprojected_pixel[1])+(pts2d[i].x-ba_reprojected_pixel[0])*(pts2d[i].x-ba_reprojected_pixel[0]);
    sum_ba+=delt_ba;
    }


  • 优点和存在的问题

 优点:使用 solvePnPRansac 的函数具有明显的鲁棒性,相较于 solvePnP 函数而言。
缺点:
1.自己在三维点的尺度问题上理解还是比较模糊。以三维坐标点 (x,y,d) 为例。

uv1=fx000fy0cxcy1xy1(1)
  其中x=d*x’,y=d*y’,d=depth*scale;depth是深度传感器的测量值,scale是深度测量值的比例系数.
2.自己没有明白在对极几何约束中使用基础矩阵和本质矩阵求取的误差值存在差异。


下一步计划:
1.实现完成较为独立的BA。
2.加入ICP,比较效果。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IDL即“Image Difference Learning”(图像差异学习),是一种基于图像的机器学习算法。BP后向投影算法是一种常用的神经网络算法,结合了反向传播和梯度下降算法。 BP后向投影算法是一种有监督学习算法,用于训练多层前馈神经网络。它的目标是通过不断调整神经网络的权重和偏置,最小化训练样本与期望输出之间的误差。通过迭代学习和反向传播,神经网络能够逐渐提取出输入数据中的特征,从而实现分类、识别等任务。 在IDL算法中,BP后向投影算法的应用主要为特征提取和分类。通过构建多层神经网络,IDL能够自动学习输入图像的特征表达,比如边缘、纹理等。然后,利用训练好的神经网络模型,对新的图像进行分类。通过不断迭代和调整网络权重,BP后向投影算法能够提高分类准确性,提取更具有区分度的特征。 IDL BP后向投影算法的一个优点是具有较好的泛化能力,即能够对未知数据进行较好的分类。另外,该算法还能够自动学习和提取特征,减少了对手动特征工程的依赖。然而,该算法也存在一些缺点,比如对初始权重和学习率的选择敏感,容易陷入局部最优解。 总之,IDL BP后向投影算法是一种常用的图像分类和特征提取算法,通过构建多层神经网络,并利用反向传播和梯度下降算法进行训练和优化,能够有效地提取图像特征,并实现对图像的分类任务。 ### 回答2: IDL (bp)后向投影算法是一种计算机视觉中常用的图像重建方法。该算法通过将一幅二维投影图像反向投影到三维空间中,然后再将其投影回二维图像平面,从而实现对原始图像的重建。 该算法的步骤如下: 1. 首先,根据待重建的二维投影图像,确定重建图像的尺寸和像素分辨率。通常情况下,重建图像的尺寸与二维投影图像相同。 2. 在重建图像的每个像素位置,通过反投影算法计算其在三维空间中的坐标。这个过程需要根据已知投影角度和距离,以及重建图像的尺寸和像素分辨率进行数学计算。 3. 然后,根据这些坐标值,计算与它们最近的重建图像像素的灰度值。可以使用一些插值技术,如最近邻插值或双线性插值,来计算这些灰度值。 4. 最后,将这些计算得到的灰度值投影回二维图像平面,得到重建的二维图像。 通过IDL (bp)后向投影算法,可以对二维投影图像进行重建,从而还原出原始三维图像的形状和内部结构。这个算法在医学图像处理、工业检测等领域得到了广泛的应用。它可以帮助人们更好地理解和分析图像数据,从而提高图像处理和分析的准确性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值