在拿到相机SDK之后,首先需要仔细的查看应用开发文档;在日常的二次开发过程中遇到的70%的问题,开发指南中均有答案;
开发指南路径如下:D:\3DMVS\Development\Mv3dLpSDK\Documentations
1、MV3D_LP_DepthMosaic()接口
该接口中有三个参数,其中两个为输入一个为输出,入参参数为输入拼接的深度图列表以及对应的深度图个数;输出为拼接好的深度图数据;
其中在使用该接口时需要在配置文件中根据实际应用场景来设置对应的配置;
根据开发指南中的接口描述配置文件的路径为:C:\Program Files (x86)\Common Files\Mv3dLpSDK\Runtime\Win64_x64文件夹中Mv3dLpCfg.ini文件;
在拼接接口设置中,需要关注[DepthMosaic]节点,节点内容如下:
#SingleCamera:是否单相机多行程拼接,0 多相机,1 单相机多行程,[0,1],默认1
#MergeType:融合方式,1最远,2最近,3均值,4差值, 5交集(4/5最大只能拼2张图,1/2/3可以8张图),[1,5],默认3,算法库支持5以上,SDK只用到5,多相机相关配置
#MergeCorrection:自适应修正使能,[0,1],默认0, 多相机相关配置
#ZFixEnable:Z轴自动补偿功能,[0,2],默认2 0:关闭, 1:均值补偿, 2:拟合补偿
#RejectDistRefine:点对距离阈值,[0,1000000],默认1000
#RejectAngleThd:点对法向量夹角阈值,[0,180],默认90
#MaxIters:最大迭代次数,[0,100],默认50
#RangeMethod:匹配类型,1-机构参数拼接;2-相邻帧配准拼接;3-模型配准拼接,[1,3],默认1
#ModelInfo:模型文件
#ZMethod:Z轴补偿方法,0-不补偿,1-重叠区域补偿,2-平面全局补偿 3-平滑加权补偿,多相机相关配置
#RangeId:主深度图id,[0,9],默认0, 实际配置根据拼接相机数量,多相机相关配置
#NormalEnable:测厚法向补偿使能开关,[0,1],默认0,多相机相关配置
#------------------------------------------------------------------
[DepthMosaic]
SingleCamera=1
MergeType=3
MergeCorrection=0
ZFixEnable=2
RejectDistRefine=1000
RejectAngleThd=90
MaxIters=50
RangeMethod=1
ModelInfo=model.bin
ZMethod=3
RangeId=0
NormalEnable=0
该配置文件为接口的通用配置文件适应多种拼接场合,当前文章讲述的是多相机拼接所以第一步需要将SingleCamera节点设置为0;
第二步需要根据实际应用的场景来设置MergeType节点;例如在对射场景中,需要设置的融合方式为取差值,所以MergeType=4;所以根据场景来设置;其他算法处理节点根据自行需要来设置;
第三步来看RangeId节点,该节点需要设置主相机图片的ID;该ID的顺序是根据入参图像数据列表中的顺序相对应;
第四步设置[Depth_x]节点,该节点个数需要根据图片数据列表中图片的数量相对应以及该节点的值也需要和图片数据列表相对应;
假如我们现在在做对射拼接标定,图像数据列表中有两个图片数据,其中第二张图为主相机图则RangeId=1,[Depth_x]节点实例如下:
[Depth_0]
ScanDir=1
Tx=0
Ty=0
Tz=0
Rx=0
Ry=0
Rz=0
Code=1
ZRatio=1.0
[Depth_1]
ScanDir=1
Tx=0
Ty=0
Tz=0
Rx=0
Ry=0
Rz=0
Code=1
ZRatio=1.0
三、程序运行
在设置好所有的配置文件之后,找到多相机拼接示例程序BasicDemo_DepthMosaic,点击运行;触发出图后即可得到拼接之后的深度图图像数据
demo示例位置如下图:
注:运行demo前确保已经在3DMVS上已经完成对射拼接标定、调图等基础操作