Win10+vs2019配置与运行RenderMatch+用contextcapture进行重建
继上一篇博客,ground image 和aerial image影像匹配结果将会被保存为match.bin二进制文件里
再次运行时,只需要把这个bin文件load进来就可以了,不需要再次进行匹配,修改命令参数
-a G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-UAV.json -g G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-TER.json -m G:\study\Dataset\SWJTU-LIB\model\Data\root.osgb -c G:\study\RenderMatch-master\config.json -t 2967,5742,0 -r G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-TER_match.bin
但是这时候会发现还有一个参数 -b还没有使用
也就是merge block, 经过我的研究,发现这里需要一个xml文件,并且这个xml文件是contextcapture(以下简称cc)导出的格式,于是先下载一个cc
1.使用cc导入工程
之前只顾着跑通代码,没有研究它的数据集文件的格式,发现里面的xml文件都是cc导出的,因此直接在cc导入xml就可以打开项目
先分别导入数据集给的两个xml,这两分别对应地面影像和无人机影像
导入时有报错,提示SRSID错误,发现是xml文件里的contropoints 的srsid不对,把2改成5(每个xml文件里有4个gcp,因此要改4个),再次导入cc,就成功了
2.导入成功后,分别进行一个空三进行连接点匹配
参数设置的时候选择使用控制点
然后就等待空三结束,等两个数据都完成之后,同时选中这两个工程
右键,选择merge block,这时候会有一个新的合并工程产生,导出这个merge block的xml文件。坐标系都选择和原来的xml文件一致的坐标系。
3.在merge block.xml里添加aerial images 和ground images的匹配点
有了merge.xml, 就可以在源程序的输入命令里加上参数-b merge.xml的路径
我的就是
-a G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-UAV.json -g G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-TER.json -m G:\study\Dataset\SWJTU-LIB\model\Data\root.osgb -c G:\study\RenderMatch-master\config.json -t 2967,5742,0 -r G:\study\Dataset\SWJTU-LIB\AerialTiled\SWJTU-LIB-TER_match.bin -b G:\study\Dataset\SWJTU-LIB\CCpro\project\merged_block.xml
源程序中,merge_block()这个函数就是将匹配点添加到merge.xml文件中去的,最后会生成一个merge_block_tiepoints.xml的文件。
4.使用cc进行三维重建
再次用cc导入刚刚生成的merge_block_tiepoints.xml
重新进行一次空三平差
然后再进行三维重建,时间会比较久,重建之后就是下图这样
看下与仅无人机影像重建的局部对比
仅无人机重建效果
无人机和地面影像一起重建结果
还是看得出来,中间那个门里的大洞被补全了蛮多,一些细节也丰富了许多。