无人机航拍图像三维重建中照片GPS信息读取与修改添加

近期在做一个项目涉及到无人机三维地图重建,大部分商业三维重建软件需要照片的GPS信息,即经度 ,纬度, 高度。无人机航拍出来的照片是含有GPS信息的,但在重建之前,需要对原始图像进行语义分割,目标检测之类的工作。这样会导致原始图像丢失GPS信息,因此需要给处理后的图像重新添加恢复GPS信息。方法很简单,记录如下:
首先安装 必要的库,注意 我在 python2.7 环境测试通过,但python3环境测试时出现了问题。

pip install exifread
 
pip install GPSPhoto
 
pip install gpsimage
 
pip install cv2

接下来就是读取原始图像的 GPS 信息,然后将其保存并添加到 另外一张 图像中,即给另外一张不含有GPS信息的图像添加GPS信息(python2.7环境下测试结果)。

input_image = "./DJI_0540.jpg"
img=gpsimage.open(input_image)
print(img.lat,img.lng,img.altitude)
 
#print result:   (31.6513254586, 104.5265278899, 296.4)
info = gpsphoto.GPSInfo((float(img.lat),float(img.lng)),alt=int(img.altitude))#alt must be int
photo = gpsphoto.GPSPhoto('./output_img.jpg')
photo.modGPSData(info, './output_img.jpg')
output_image = "./output_img.jpg"
out_img=gpsimage.open(output_image)
print(out_img.lat,out_img.lng,out_img.altitude)
 
#print result: (31.6513254586, 104.5265278899, 296.0)

输出结果如上所示,大家可能注意到原图的GPS信息 的 altitude为296.4,而新的图像的altitude是296,原因在于采用这种方法修改 GPS高度信息时必须为整数。即altitude要强制转换为整数。这样的情况可以通过把需要三维重建的图像的高度信息都扩大10倍就可以,相当于整体抬高10倍的高度,不影响重建效果。
 


参考:https://blog.csdn.net/fcc_bd_stars/article/details/91872204

你可能感兴趣的:(三维重建)