Agisoft Metashape

Agisoft Metashape => Bug Reports => Topic started by: ebash on November 24, 2016, 05:55:06 PM

Title: Reconstructing dense point cloud produces different results
Post by: ebash on November 24, 2016, 05:55:06 PM
I was batch processing a number of projects and exporting the dense point clouds for comparisons. I accidentally processed one project twice, but noticed that the two point clouds are slightly different. I have used all the same parameters, why would this be the case?

Thank you,
Eleanor

Here are some of the summary reports - showing different total number of points are slightly different min/max values:

For Cloud 1:
  number of point records:    228257316
  min x y z:                  619810.484 5618144.535 2508.453
  max x y z:                  620933.901 5619269.224 2656.403

For Cloud 2:
  number of point records:    228101650
  min x y z:                  619810.504 5618144.115 2508.432
  max x y z:                  620933.827 5619269.190 2656.352
Title: Re: Reconstructing dense point cloud produces different results
Post by: Alexey Pasumansky on November 24, 2016, 06:14:58 PM
Hello Eleanor,

In case you have processed the project from scratch both times, the results may be different due to the stochastic element used in the alignment process. So the position and size of the bounding box may be also slightly different.

Building dense cloud basing on the same alignment should give you the same results.
Title: Re: Reconstructing dense point cloud produces different results
Post by: ebash on November 25, 2016, 09:12:34 PM
Thanks Alexey,
I have set up the project file so that the photos are pre-aligned and all the ground control is identified and the coordinates are loaded, then I run the following script:

Code: [Select]
import PhotoScan, os

path = PhotoScan.app.getExistingDirectory("Please choose the folder with .psz files:")

print("Script started")
doc = PhotoScan.app.document
doc.clear()
project_list = os.listdir(path)

for project_name in project_list:
if ".PSX" in project_name.upper():
doc.open(path + "/" + project_name)
chunk = doc.chunks[0]

        #Optimize Cameras
chunk.optimizeCameras(fit_f=True, fit_cxcy=True, fit_b1=True, fit_b2=True, fit_k1k2k3=True, fit_p1p2=True, fit_k4=False, fit_p3=False, fit_p4=False)

        #Build dense cloud
chunk.buildDenseCloud(quality=PhotoScan.HighQuality, filter=PhotoScan.AggressiveFiltering, keep_depth=False, reuse_depth=False)

        #Export dense cloud as a .laz
cloud_name=os.path.splitext(project_name)[0]
chunk.exportPoints(path + "/" + cloud_name +".laz", binary=True, precision=6, normals=True, colors=True, format='laz', projection=PhotoScan.CoordinateSystem('EPSG::26911'))

doc.save()
print("Processed project: " + project_name)

else:
continue

print("Script finished.")

So it should give the same result - or is the stochastic element in the optimization or cloud reconstruction?
Title: Re: Reconstructing dense point cloud produces different results
Post by: Alexey Pasumansky on November 26, 2016, 02:26:42 PM
Hello ebash,

I suggest to build the dense cloud basing on the same camera alignment with the same bounding box position and size, if you wish to keep the same starting conditions.