Search code examples
kinectregistrationopen3d

Number of iterations Open3D


I'm working with point clouds taken with a Kinect. My goal is the total registration for 3D mapping of places or crops. I'm using the multiway registration code.

I'm wondering if there is a way to change the number of iterations of this code? I've seen that it only does 30 iterations by default.


Solution

  • What kind of iterations do you mean, the iterations performed by ICP for registration or the iterations performed during global optimization?

    You can change the number of iterations for global optimization by adjusting the global optimization convergence criteria. Instead of typing

    o3d.registration.global_optimization(
        pose_graph, o3d.registration.GlobalOptimizationLevenbergMarquardt(),
        o3d.registration.GlobalOptimizationConvergenceCriteria(), option)
    

    write

    o3d.registration.global_optimization(
        pose_graph, o3d.registration.GlobalOptimizationLevenbergMarquardt(),
        o3d.registration.GlobalOptimizationConvergenceCriteria(max_iteration_lm=number_of_iterations), option)
    

    For ICP, it works in a similar way by adjusting the ICP convergence criteria:

            result_icp = o3d.registration.registration_icp(source, target, 
                 max_correspondence_distance_coarse, np.identity(4),
                 o3d.registration.TransformationEstimationPointToPlane(),                                  
                 o3d.registration.ICPConvergenceCriteria(max_iteration=number_of_iterations))
    

    Hope this could help!