Fixed DEMs orthophoto misalignment bug

pull/947/head
Piero Toffanin 2019-02-15 12:15:01 -05:00
rodzic 7f83ffe27a
commit a203653b98
3 zmienionych plików z 12 dodań i 13 usunięć

Wyświetl plik

@ -1330,8 +1330,8 @@ void Georef::performFinalTransform(Mat4 &transMat, pcl::TextureMesh &mesh, pcl::
double transX = static_cast<double>(transMat.r1c4_);
double transY = static_cast<double>(transMat.r2c4_);
transform(0, 3) = static_cast<double>(0.0f);
transform(1, 3) = static_cast<double>(0.0f);
transform(0, 3) = transX;
transform(1, 3) = transY;
transform(2, 3) = static_cast<double>(transMat.r3c4_);
transform(3, 3) = static_cast<double>(transMat.r4c4_);
@ -1367,20 +1367,14 @@ void Georef::performFinalTransform(Mat4 &transMat, pcl::TextureMesh &mesh, pcl::
log_ << "Successfully saved model.\n";
}
transform(0, 3) = transX;
transform(1, 3) = transY;
// GCPs and EXIF modes includes a translation
// but not UTM offsets. We want our point cloud
// and odm_georeferencing_model_geo.txt file
// to include the UTM offset.
// OpenSfM already has UTM offsets
if (addUTM){
georefSystem_.eastingOffset_ += transX;
georefSystem_.northingOffset_ += transY;
transform(0, 3) = georefSystem_.eastingOffset_;
transform(1, 3) = georefSystem_.northingOffset_;
transform(0, 3) = georefSystem_.eastingOffset_ + transX;
transform(1, 3) = georefSystem_.northingOffset_ + transY;
}
printFinalTransform(transform);

Wyświetl plik

@ -60,11 +60,15 @@ class ODMGeoreferencingCell(ecto.Cell):
runs = []
if not args.use_3dmesh:
runs += [{
# Make sure 2.5D mesh is georeferenced before the 3D mesh
# Because it will be used to calculate a transform
# for the point cloud. If we use the 3D model transform,
# DEMs and orthophoto might not align!
runs.insert(0, {
'georeferencing_dir': tree.odm_25dgeoreferencing,
'texturing_dir': tree.odm_25dtexturing,
'model': os.path.join(tree.odm_25dtexturing, tree.odm_textured_model_obj)
}]
})
for r in runs:
odm_georeferencing_model_obj_geo = os.path.join(r['texturing_dir'], tree.odm_georeferencing_model_obj_geo)

Wyświetl plik

@ -69,7 +69,8 @@ class ODMOrthoPhotoCell(ecto.Cell):
# TODO: we should move this to a more central
# location (perhaps during the dataset initialization)
if georef and not georef.utm_east_offset:
odm_georeferencing_model_txt_geo_file = os.path.join(tree.odm_georeferencing, tree.odm_georeferencing_model_txt_geo)
georeferencing_dir = tree.odm_georeferencing if args.use_3dmesh and not args.skip_3dmodel else tree.odm_25dgeoreferencing
odm_georeferencing_model_txt_geo_file = os.path.join(georeferencing_dir, tree.odm_georeferencing_model_txt_geo)
if io.file_exists(odm_georeferencing_model_txt_geo_file):
georef.extract_offsets(odm_georeferencing_model_txt_geo_file)