[pdal] filters.icp transformation

Jim Klassen klassen.js at gmail.com
Thu Mar 5 15:53:38 PST 2020


Does a strategy of adding the centroid to the filters.icp metadata and 
updating filters.icp documentation with the pipeline to apply it sound good?

On 3/5/20 5:41 PM, Andrew Bell wrote:
> This seems the same as this already reported bug:
>
> https://github.com/PDAL/PDAL/issues/2939
>
> If you want to submit a PR, I'll look it over.
>
> Thanks!
>
>
> On Thu, Mar 5, 2020 at 6:36 PM Jim Klassen <klassen.js at gmail.com 
> <mailto:klassen.js at gmail.com>> wrote:
>
>     I am trying to do something similar (apply ICP on a subset of a large
>     dataset) and am running into confusion over the transformation
>     matrix in
>     the metadata.
>
>     The point cloud output of the ICP filter on the subset looks good.
>     However when I try to use the resulting "transform" metadata as a
>     input
>     into filters.transformation.matrix over the full dataset, the
>     resulting
>     transformation moves the points wildly out of position.
>
>     Looking at the code, in IterativeClosestPoint.cpp, it looks like the
>     transformation matrix (T) is applied after shifting the point
>     cloud to
>     the centroid of the reference point cloud (C), and the shifted
>     back to
>     regular coordinates.
>
>     So something like Pout = ((P - C) * T) + C
>
>     Where P is a 4 element input point vector (x,y,z,1), Pout is the
>     output
>     point vector, C is the centroid vector (x,y,z,0), T is the 4x4
>     transformation matrix found by ICP.
>
>     T is reported in the metadata for the stage, however, C is not
>     reported
>     in the metadata.
>
>     But the transformation matrix that filters.transformation expects
>     something more like
>
>     Pout = P * T'
>
>     If C is not (0,0,0) then T and T' will be different.
>
>     I modified IterativeClosestPoint.cpp to also export the centroid
>     to the
>     metadata and then created a pipeline with three transformations,
>     first
>     shifting by the negative of the centroid, then applying T, then
>     shifting
>     back by the centroid and that produced the expected results.
>
>
>     On 2/18/20 7:24 PM, Bradley Chambers wrote:
>     > The options are very heavily borrowed from the PCL library,
>     where this
>     > was a squared value. Also, keep in mind that the default values
>     may be
>     > better suited for terrestrial/robotics applications (as opposed to
>     > aerial), and will very likely need some tweaking.
>     >
>     > The reported transformation should also be reported in row major
>     > order, like the transformation filter. If you find it is not, I’d
>     > consider that a bug, so feel free to file a ticket.
>     >
>     > PRs are always welcome, especially for documentation!
>     >
>     > Brad
>     >
>
>     _______________________________________________
>     pdal mailing list
>     pdal at lists.osgeo.org <mailto:pdal at lists.osgeo.org>
>     https://lists.osgeo.org/mailman/listinfo/pdal
>
>
>
> -- 
> Andrew Bell
> andrew.bell.ia at gmail.com <mailto:andrew.bell.ia at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20200305/d838d2a7/attachment.html>


More information about the pdal mailing list