kopia lustrzana https://github.com/OpenDroneMap/ODM
Fixed DEMs orthophoto misalignment bug
rodzic
7f83ffe27a
commit
a203653b98
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue