开启左侧

双目三维测量得到的高度与实际差好多

[复制链接]
dgzxwcl 发表于 2018-8-21 13:22:45 | 显示全部楼层 |阅读模式
标定部分代码:
  1. binocular_calibration (X, Y, Z, RowsL, ColsL, RowsR, ColsR, StartCamParL, StartCamParR, StartPosesL, StartPosesR, 'all', CamParamL, CamParamR, NFinalPoseL, NFinalPoseR, cLPcR, Errors)
复制代码

双目矫正的代码:
  1. gen_binocular_rectification_map (MapL, MapR, CamParamL, CamParamR, cLPcR, 1, 'geometric', 'bilinear', RectCamParL, RectCamParR, CamPoseRectL, CamPoseRectR, RectLPosRectR)
复制代码


读取矫正后的标定图,提取圆心坐标,并求得三维坐标:
  1. read_image (ImageMapped1, ImgPath + 'L_rec1')
  2. read_image (ImageMapped2, ImgPath + 'R_rec1')
  3. dev_set_window (WindowHandle1)
  4. dev_display (ImageMapped1)
  5. dev_set_window (WindowHandle2)
  6. dev_display (ImageMapped2)
  7. find_caltab (ImageMapped1, CaltabL_rec, 'caltab_0.6.descr', 3, 112, 5)
  8. find_marks_and_pose (ImageMapped1, CaltabL_rec, 'caltab_0.6.descr', RectCamParL, 128, 10, 18, 0.9, 15, 100, RCoordL_rec, CCoordL_rec, StartPose1)
  9. disp_caltab (WindowHandle1, CaltabFile, RectCamParL, StartPose1, 1)

  10. find_caltab (ImageMapped2, CaltabR_rec, 'caltab_0.6.descr', 3, 112, 5)
  11. find_marks_and_pose (ImageMapped2, CaltabR_rec, 'caltab_0.6.descr', RectCamParR, 128, 10, 18, 0.9, 15, 100, RCoordR_rec, CCoordR_rec, StartPose2)
  12. disp_caltab (WindowHandle2, CaltabFile, RectCamParR,StartPose2 , 1)
  13. *stop()
  14. Disparity := CCoordR_rec - CCoordL_rec
  15. disparity_to_distance (RectCamParL, RectCamParR, RectLPosRectR, Disparity, Distance)
  16. disparity_to_point_3d (RectCamParL, RectCamParR, RectLPosRectR, RCoordL_rec, CCoordL_rec, Disparity, X, Y, Z)
  17. pose_to_hom_mat3d (CamPoseRectL, c1Trect1)
  18. affine_trans_point_3d (c1Trect1, X, Y, Z, c1X, c1Y, c1Z)
复制代码


标定误差为0.1pixl,矫正误差也是0.1,得到的c1Z数值与真实距离查了十几厘米.
这里的X, Y, Z, c1X, c1Y, c1Z 单位是m吗?
wangwei 发表于 2018-8-21 17:59:44 | 显示全部楼层
是m,注意单位换算
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表