使用word做网站,wordpress英文版 菜单,东莞百度推广排名,ui设计工作室小杨说事-基于Halcon的多相机坐标系统一原理个人理解_多相机标定统一坐标系-CSDN博客
一、概述
最近在搞多相机标定等的相关问题#xff0c;对于很大的场景#xff0c;单个相机的视野是不够的#xff0c;就必须要统一到一个坐标系下#xff0c;因此我也用了4个相机#…小杨说事-基于Halcon的多相机坐标系统一原理个人理解_多相机标定统一坐标系-CSDN博客
一、概述
最近在搞多相机标定等的相关问题对于很大的场景单个相机的视野是不够的就必须要统一到一个坐标系下因此我也用了4个相机如图; 二、流程
准备
标定板
这个标定板是比较特殊的由于我设定的是4个相机那么我需要在搞标定板的时候需要在每个相机的视野范围内进行所以如下 就像上面红色的是我的标定板在每个标定板的四角区域有各自有一个mark 点。我让我同事在solidworks上画了一个A4纸一样大小的标定板同时我让我同事那cad 的坐标全部都给到我物理距离
思路
1、放置标定板
将标定板放到统一高度而且保证每个相机都能在自己的视野里面看到标定板中各自的mark点最好是处在视野的中央
2、确定一个主相机
就是要统一坐标系首先 要定好要把其他的坐标系统一到那个坐标系找那个。默认是第一个相机
3、检查图像中的位置
使用图像预处理找出对应的mark点是按照顺序的在计算的时候一定要和cad 的那个数据一一对应
4、辅助相机到主相机的变换矩阵 这一步是最重要的一步具体步骤如下 a、计算主相机中像素-》物理坐标的矩阵 HomMat2DMainMachine2Image b、计算辅助相机中像素-》物理坐标的矩阵 HomMat2DOtherMachine2Image c、计算其他相机到主相机的坐标矩阵
5、重复第4步
三、代码
代码用上面博主的我做的cad 还没有做完
First_Source_X:[111.8119,258.1092 ,111.8119 ,258.1092]
First_Source_Y:[-93.0713,-93.0713,-209.3316,-209.3316]
First_ImageX:[0 ,146.2973,0 ,146.2973 ]
First_ImageY:[0 ,0 ,-116.2603 ,-116.2603 ]vector_to_hom_mat2d(First_Source_X, First_Source_Y, First_ImageX, First_ImageY, HomMat2DMainMachine2Image)
*test
affine_trans_point_2d (HomMat2DMainMachine2Image, 258.1092,-93.0713, Qx, Qy)Second_Source_X:[-186.9897,-60.2925 ,-245.1198,-118.4226]
Second_Source_Y:[-128.7077,-201.8564,-229.3921,-302.5408]
Second_Image_X:[1137.1291,1283.4262,1137.1291,1283.42641]
Second_Image_Y:[0,0,-116.2603,-116.2603 ]vector_to_hom_mat2d(Second_Source_X, Second_Source_Y, Second_Image_X, Second_Image_Y, HomMat2DOtherMachine2Image)
*test
affine_trans_point_2d (HomMat2DOtherMachine2Image, -60.2925,-201.8564, Qx2, Qy2)*计算主相机 像素-》Machine
hom_mat2d_invert(HomMat2DMainMachine2Image,HomMat2DMainImage2Machine)*计算其他坐标系中点在主相机坐标系下的位置
hom_mat2d_compose(HomMat2DMainImage2Machine,HomMat2DOtherMachine2Image,HomMat2DOtherimage2Image)tuple_cos (rad(30), Cos)//0.84
tuple_sin (rad(30), Sin)//0.5 四、标定板矩阵
有个问题就是Halcon 双相机标定与拼图二-CSDN博客 中最后 计算
*计算的是物理坐标的
vector_to_hom_mat2d (Second_Source_X, Second_Source_Y,First_Source_X, First_Source_Y, HomMat2DCam1ToCam1)
* 测试
affine_trans_point_2d (HomMat2DCam1ToCam1, -186.9897,-128.7077, Qx1, Qy1)
tuple_cos (rad(-30), Cos2)//0.86
tuple_sin (rad(-30), Sin2)//0.5
First_Source_X:[111.8119,258.1092 ,111.8119 ,258.1092]
First_Source_Y:[-93.0713,-93.0713,-209.3316,-209.3316]
First_ImageX:[0 ,146.2973,0 ,146.2973 ]
First_ImageY:[0 ,0 ,-116.2603 ,-116.2603 ]vector_to_hom_mat2d(First_Source_X, First_Source_Y, First_ImageX, First_ImageY, HomMat2DMainMachine2Image)
*test
affine_trans_point_2d (HomMat2DMainMachine2Image, 258.1092,-93.0713, Qx, Qy)Second_Source_X:[-186.9897,-60.2925 ,-245.1198,-118.4226]
Second_Source_Y:[-128.7077,-201.8564,-229.3921,-302.5408]
Second_Image_X:[1137.1291,1283.4262,1137.1291,1283.42641]
Second_Image_Y:[0,0,-116.2603,-116.2603 ]vector_to_hom_mat2d(Second_Source_X, Second_Source_Y, Second_Image_X, Second_Image_Y, HomMat2DOtherMachine2Image)
*test
affine_trans_point_2d (HomMat2DOtherMachine2Image, -60.2925,-201.8564, Qx2, Qy2)*计算主相机 像素-》Machine
hom_mat2d_invert(HomMat2DMainMachine2Image,HomMat2DMainImage2Machine)*计算其他坐标系中点在主相机坐标系下的位置
hom_mat2d_compose(HomMat2DMainImage2Machine,HomMat2DOtherMachine2Image,HomMat2DOtherimage2Image)tuple_cos (rad(30), Cos)//0.84
tuple_sin (rad(30), Sin)//0.5*测试第二个相机在主相机中的位置
affine_trans_point_2d (HomMat2DOtherimage2Image, 0, 0, Qx1, Qy1)*计算的是物理坐标的
vector_to_hom_mat2d (Second_Source_X, Second_Source_Y,First_Source_X, First_Source_Y, HomMat2DCam1ToCam1)
* 测试
affine_trans_point_2d (HomMat2DCam1ToCam1, -186.9897,-128.7077, Qx1, Qy1)
tuple_cos (rad(-30), Cos2)//0.86
tuple_sin (rad(-30), Sin2)//0.5 结果如下 我买的相机、支架、镜头等都还没有到等到了更新全部数据采用cad 打印标定板