24.08.28–点云投影到图像参数理解;Yaml_node理解
1 点云,图像数据融合
目前项目中,需要点云图像数据融合,常见的数据融合一般是将3d点云投影到图像成像平面,以获得障碍语义信息。前期做点云投影到图像时,
因为有前人写好的内容,自己只是拿来使用。最近需要整理双目相机生成的点云投影到相机成像平面时,发现由双目生成的点云投影到成像平面
时只需考虑相机内参即可,不像由激光雷达点云投影到图像还需考虑旋转、平移矩阵及相机内参,下面做一些整理。
1.1 激光雷达点云投影到相机成像平面
整体流程:
1 首先根据相机、激光雷达之间的旋转、平移关系将每一个点云转换到相机坐标系
2 根据相机内参,将转换到相机坐标系下的点云投影到相机成像平面
总结:传感器之间存在旋转平移关系时需要考虑变换关系,并利用相机内参将点云投影到成像平面
1.2 双目或深度相机点云投影到图像成像平面
由双目相机生成的点云,尤其双目相机厂商已经集成之后,将点云投影到图像成像平面只需要利用相机内参即可,不需要考虑旋转平移关系
(针对集成之后的双目相机)。因为点云就是由双目生成的,再将点云投影到图像平面只需考虑相机内参即可。
2 yaml_cpp中的yaml_node理解
最近需要读取yaml格式的标定文件,需要根据机器上的标定文件内容来更新所需的标定参数。之前对yaml_node理解不够,yaml_node在
加载yaml文件之后,其实就是将yaml文件在内存中做了一个备份,只要加载yaml文件之后,即使删除原始yaml文件,依然可以通过yaml_node
变量读取变量中的内容。yaml_cpp内部封装了数据结构,可以根据yaml文件内容将加载的yaml文件内容存储到变量node中,其实将yaml内容
以特定格式存储在内存中,即使删除被加载的原yaml文件,依然可以从内存中读取yaml_node变量中的内容,二者不影响。
整体流程
1.机器上标定文件格式有yaml格式,txt格式两种类型
2.针对yaml格式内容,直接加载机器yaml内容及需要更改的yaml文件,只需要针对对应值做赋值即可
3.针对txt格式文件,需要先将txt内容读取到vector容器中,将之前加载的需要修改的yaml文件yaml_node
赋值,即将从txt文件中读取的存储在vector中的内容赋值(基于key值)给对应的yaml_node中的对应值,至此将yaml_node更新完成