• Halcon 多相机统一坐标系


    小杨说事-基于Halcon的多相机坐标系统一原理个人理解_多相机标定统一坐标系-CSDN博客

    一、概述

    最近在搞多相机标定等的相关问题,对于很大的场景,单个相机的视野是不够的,就必须要统一到一个坐标系下,因此我也用了4个相机,如图;

     二、流程

    准备:

    标定板

    这个标定板是比较特殊的,由于我设定的是4个相机,那么我需要在搞标定板的时候需要在每个相机的视野范围内进行,所以如下:

    就像上面,红色的是我的标定板,在每个标定板的四角区域有各自有一个mark 点。我让我同事在solidworks上画了一个A4纸一样大小的标定板,同时我让我同事那cad 的坐标全部都给到我(物理距离)

    思路:

    1、放置标定板

    将标定板放到统一高度,而且保证每个相机都能在自己的视野里面看到标定板中各自的mark点,最好是处在视野的中央

    2、确定一个主相机

    就是要统一坐标系,首先 要定好要把其他的坐标系统一到那个坐标系找那个。默认是第一个相机

    3、检查图像中的位置

    使用图像预处理找出对应的mark点,是按照顺序的,在计算的时候一定要和cad 的那个数据一一对应

    4、辅助相机到主相机的变换矩阵

      这一步是最重要的一步,具体步骤如下:

      a、计算主相机中像素-》物理坐标的矩阵 HomMat2DMainMachine2Image

      b、计算辅助相机中像素-》物理坐标的矩阵 HomMat2DOtherMachine2Image

      c、计算其他相机到主相机的坐标矩阵

    5、重复第4步

    三、代码

    代码用上面博主的,我做的cad 还没有做完

    1. First_Source_X:=[111.8119,258.1092 ,111.8119 ,258.1092]
    2. First_Source_Y:=[-93.0713,-93.0713,-209.3316,-209.3316]
    3. First_ImageX:=[0 ,146.2973,0 ,146.2973 ]
    4. First_ImageY:=[0 ,0 ,-116.2603 ,-116.2603 ]
    5. vector_to_hom_mat2d(First_Source_X, First_Source_Y, First_ImageX, First_ImageY, HomMat2DMainMachine2Image)
    6. *test
    7. affine_trans_point_2d (HomMat2DMainMachine2Image, 258.1092,-93.0713, Qx, Qy)
    8. Second_Source_X:=[-186.9897,-60.2925 ,-245.1198,-118.4226]
    9. Second_Source_Y:=[-128.7077,-201.8564,-229.3921,-302.5408]
    10. Second_Image_X:=[1137.1291,1283.4262,1137.1291,1283.42641]
    11. Second_Image_Y:=[0,0,-116.2603,-116.2603 ]
    12. vector_to_hom_mat2d(Second_Source_X, Second_Source_Y, Second_Image_X, Second_Image_Y, HomMat2DOtherMachine2Image)
    13. *test
    14. affine_trans_point_2d (HomMat2DOtherMachine2Image, -60.2925,-201.8564, Qx2, Qy2)
    15. *计算主相机 像素-》Machine
    16. hom_mat2d_invert(HomMat2DMainMachine2Image,HomMat2DMainImage2Machine)
    17. *计算其他坐标系中点在主相机坐标系下的位置
    18. hom_mat2d_compose(HomMat2DMainImage2Machine,HomMat2DOtherMachine2Image,HomMat2DOtherimage2Image)
    19. tuple_cos (rad(30), Cos)//0.84
    20. tuple_sin (rad(30), Sin)//0.5

     四、标定板矩阵

    有个问题就是Halcon 双相机标定与拼图(二)-CSDN博客 中最后

     计算:

    1. *计算的是物理坐标的
    2. vector_to_hom_mat2d (Second_Source_X, Second_Source_Y,First_Source_X, First_Source_Y, HomMat2DCam1ToCam1)
    3. * 测试
    4. affine_trans_point_2d (HomMat2DCam1ToCam1, -186.9897,-128.7077, Qx1, Qy1)
    5. tuple_cos (rad(-30), Cos2)//0.86
    6. tuple_sin (rad(-30), Sin2)//0.5
    1. First_Source_X:=[111.8119,258.1092 ,111.8119 ,258.1092]
    2. First_Source_Y:=[-93.0713,-93.0713,-209.3316,-209.3316]
    3. First_ImageX:=[0 ,146.2973,0 ,146.2973 ]
    4. First_ImageY:=[0 ,0 ,-116.2603 ,-116.2603 ]
    5. vector_to_hom_mat2d(First_Source_X, First_Source_Y, First_ImageX, First_ImageY, HomMat2DMainMachine2Image)
    6. *test
    7. affine_trans_point_2d (HomMat2DMainMachine2Image, 258.1092,-93.0713, Qx, Qy)
    8. Second_Source_X:=[-186.9897,-60.2925 ,-245.1198,-118.4226]
    9. Second_Source_Y:=[-128.7077,-201.8564,-229.3921,-302.5408]
    10. Second_Image_X:=[1137.1291,1283.4262,1137.1291,1283.42641]
    11. Second_Image_Y:=[0,0,-116.2603,-116.2603 ]
    12. vector_to_hom_mat2d(Second_Source_X, Second_Source_Y, Second_Image_X, Second_Image_Y, HomMat2DOtherMachine2Image)
    13. *test
    14. affine_trans_point_2d (HomMat2DOtherMachine2Image, -60.2925,-201.8564, Qx2, Qy2)
    15. *计算主相机 像素-》Machine
    16. hom_mat2d_invert(HomMat2DMainMachine2Image,HomMat2DMainImage2Machine)
    17. *计算其他坐标系中点在主相机坐标系下的位置
    18. hom_mat2d_compose(HomMat2DMainImage2Machine,HomMat2DOtherMachine2Image,HomMat2DOtherimage2Image)
    19. tuple_cos (rad(30), Cos)//0.84
    20. tuple_sin (rad(30), Sin)//0.5
    21. *测试第二个相机在主相机中的位置
    22. affine_trans_point_2d (HomMat2DOtherimage2Image, 0, 0, Qx1, Qy1)
    23. *计算的是物理坐标的
    24. vector_to_hom_mat2d (Second_Source_X, Second_Source_Y,First_Source_X, First_Source_Y, HomMat2DCam1ToCam1)
    25. * 测试
    26. affine_trans_point_2d (HomMat2DCam1ToCam1, -186.9897,-128.7077, Qx1, Qy1)
    27. tuple_cos (rad(-30), Cos2)//0.86
    28. tuple_sin (rad(-30), Sin2)//0.5

    结果如下: 

    我买的相机、支架、镜头等都还没有到,等到了更新全部数据,采用cad 打印标定板

  • 相关阅读:
    django农产品销售系统-计算机毕业设计源码65418
    MySQL(四)——正则表达式查询、插入数据、删除数据
    看到那些自以为是,却实际上很愚蠢的家长。
    圆锥药型罩采用2D、3D单层和3D三种方法侵彻结果对比(基于LS-DYNA软件平台)
    哪些因素取决于产品设计中的质量?
    openwrt篇 路由器上写cname-01
    认识ProtoBuf
    用户注册场景
    2022年审稿记录
    易点易动库存管理系统:革新企业库存管理,降本增效
  • 原文地址:https://blog.csdn.net/weixin_39354845/article/details/139596183