2026-08-12 –, Room 2
Rigid registration seems like a simple task, on the first glance: If you have two objects, described as sets of points, how should you rotate and translate one to optimally match the other? However, it can be quite involved to do it reliably and efficiently. In this talk, I will present a new Julia package that provides a go-to solution to tackle not only rigid point cloud registration, but also non-rigid registration and other typical point cloud tasks.
The talk will contain aspects of the design, implementation, and usage of PointCloudRegistration.jl
Why is this interesting?
Be it the molecular structure of a therapeutic protein or the surface of a sculpture in an art gallery, point clouds are a convenient model to describe real world objects. If you have two of them, you might want to combine them into a bigger object, find their differences, or compare them in a more complex way. For any of these operations, you first have to find a common frame of reference by rotating and translating one point cloud (the source) to match the other (the target). This is called rigid registration.
To align the two point clouds beyond rigid transformations, you might assign an individual displacement to every point of the source such that the displaced source matches the target. Different methods of such non-rigid registration vary in what kind of displacement they consider admissible and/or plausible.
About the package
The package aims at offering a comprehensive set of tools for all point cloud registration needs, focusing on performance, a convenient interface, and broad applicability. While some implementations already exist in the Julia ecosystem, they mostly cover the simplest case of known point-to-point correspondences and no outliers (Kabsch algorithm). Our package not only has a more time and memory efficient implementation of the Kabsch algorithm but can register point clouds in more adverse settings as well. For non-rigid registration, multiple algorithms are available, letting users of the package choose between different notions of optimal matching and plausible displacement. Finally, PointCloudRegistration.jl comes with a small amount of helper functions that can be useful when dealing with point clouds, such as thinning or conversion from density maps.