-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revamp and simplify the raster-point/P-R/P-P functionality #402
Comments
I'm wondering: is there any coregistration method that relies on the 2D array shape? If not, maybe the |
Hmm, could you please elaborate on that, @rhugonnet? I'm all for simplification, but I'm not sure I understand what you mean.
So to answer your first question (I'll call a 2D array a raster); some methods require at least one raster to solve the otherwise existing topology problem. Any 2D (or 2.5D if we want to call it that) approach requires that at least one surface is given, or else there is no easy way to compare points. If we want to make all of them fully 3D (for point-point to work), we need to implement a fast and accurate topology approximation. It could be as simple as just doing delunay triangulation of the points, but extreme outliers may be a nuisance. The best is some kind of robust averaging of sorts (but then perhaps as a preprocessing filter). My point is that for all to be fully 3D, complexity can increase.
One simple (and safe) workaround is to add some default fallback behaviour unless overridden, as suggested below. Honestly, it feels like we should have four different functions, not two which we have at the moment, since there are four potential cases of co-registration: Raster-raster:
Raster-point
Point-raster
Point-point
In this case, the only essential function is point-point. All others can use that as a fallback, so the theoretical smallest size of an approach is tiny. ICP would be the smallest, as it only works with point-point, so all other functions would be fallbacks. GradientDescending would have a Raster-point, would work on raster-raster and point-raster as fallbacks, and (currently) fail on point-point. NuthKaab would have one raster-raster and one point-raster, have raster-point as a fallback, then (currently) fail on point-point. What are your thoughts on that, @rhugonnet and @adehecq? I could take on the structuring of this. It would mean much less code in the end for each specific co-registration class, and would make new co-registration approaches easier to implement I think, as only one function (point-point) is technically needed. |
Very good point(-point)! :p I agree with the method structure! 🙂
In terms of coding structure within
It's amazing to see so much activity in xdem again!! Things converge so much better (and faster) when we're all there 😉 |
Thank you for your point-points! On point-raster and raster-pointI agree that raster-point and point-raster would very rarely both need to be implemented. My only thought was when using for example point-raster P-R
R-P
Of course, this could also just be solved inside some other function, but I just wanted to explain my reason for where P-R and R-P might be useful. Common
|
ICP
doesn't have a fit_pts_func
Great thoughts! Agree on all 😄 |
ICP is inherently a point-to-point registration method. Therefore, by logical extension, it should have a
fit_pts_func
! Currently it does not, meaning point-to-raster co-registration does not work.EDIT: The original title and topic of this issue was "ICP doesn't have a fit_pts_func", but it evolved into a more interesting conversation.
The text was updated successfully, but these errors were encountered: