[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