本文代码:https://github.com/ouwenwu/UAV2GroundMapper.git
一、数据准备
无人机数据
手持扫码仪数据
二、无人机数据处理
Photoscan无人机处理流程
Align Photos->Build Point Cloud
导出camera.xml和点云备用,需要设置导出格式为blockexchange同时不需要导出tiepoints
手持激光扫描仪处理流程
RayStudio打开工程文件—-Basic Data解算图片和点云数据
点云赋色
RayStudio导出图片使用Photoscan空三
将RayStudio的文件导出图像初始位置
1 | python main.py getImageXYZ --colmap_dir J:/jyg/chibi/zhihuilou/outdoor/shading/Colmap/sparse/0/images.txt --output_path J:/jyg/chibi/zhihuilou/outdoor/shading/Colmap/image_xyz.txt |
图片路径位于:./image_undistorted/camera_front
Photoscan添加图片后,在Reference(参考页)添加图像位置作为参考,并选择之前输出的图像位置
可以适量的删除影像(只保留研究区域)以及稀疏影像,当前影像采集频率高于需求,适当减少加快效率,删除后align photos(对齐图片)->Build Point Cloud
导出camera.xml和点云备用,需要设置导出格式为blockexchange同时不需要导出tiepoints
手持与无人机融合
手持到无人机坐标系统转换
cloudcampare计算变换矩阵
包含粗配准和精配准两个步骤:其中粗配准为手动调整点云使得两个点云具有初步配齐,再使用icp进行精配准.
记录下每一步点云的变换矩阵
裁剪两个点云至相同范围,并做精配准
记录下每一步的变换矩阵如下:
将手持坐标系按照变换关系旋转
将无人机的photoscan的xml格式转为colmap格式
1 | python main.py from_photoscan_xml_2_colmap_txt --xml_path J:/jyg/test/camera_shouchi.xml --output_path J:/jyg/test/colmap |
根据colmap结果计算图像位置
1 | python main.py getImageXYZ --colmap_dir J:/jyg/test/colmap --output_path J:/jyg/test/image_xyz.txt |
旋转图像位置到无人机的坐标系下:
1 | python main.py rotate_image_xyz --image_xyz J:/jyg/test/image_xyz.txt --output_path J:/jyg/test/image_xyz_out.txt --matrix_path J:/jyg/test/matrix.txt |
根据旋转后的图像位置去纠正colmap文件到指定坐标系
1 | colmap model_aligner --input_path J:/jyg/test/colmap --output_path J:/jyg/test/colmap_rotate --ref_images_path J:/jyg/test/image_xyz_out.txt --alignment_type enu --ref_is_gps 0 --robust_alignment_max_error 3 |
将旋转后的bin文件转为txt格式
colmap->import model->export model as text
将旋转后的colmap的txt文件,写为photoscan的xml文件
1 | python main.py write_colmap_txt_2_photoscan_xml --colmap_txt_path J:/jyg/test/colmap_rotate --output_xml_path J:/jyg/test/camera_shouchi_rotate.xml --image_path J:/jyg/test/20250726162036/image_undistorted/camera_front |
融合无人机和手持影像
合并无人机的xml和手持影像的xml
1 | python main.py merge_photoscan_xml --xml_lists J:/jyg/test/camera_wrj.xml J:/jyg/test/camera_shouchi_rotate.xml --output_xml_path J:/jyg/test/merged_camera.xml |
将xml文件导出为colmap的txt格式
1 | python main.py from_photoscan_xml_2_colmap_txt --xml_path J:/jyg/test/merged_camera.xml --output_path J:/jyg/test/colmap_m |