Coherent Point Drift - Matlab Version vs Dr. Myronenko's version
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
To whom it may concern,
We successfully used the coherent point drift (CPD) code from Andriy Myronenko and Xubo Song (published in 2009) in Matlab. Interestingly, we found a Matlab CPD after version 2018b, therefore, would like to try it out. The main code body of MATLAB CPD looks like this. Both data(:,2:end) and origin(:,2:end) are two sets of data set in format n*3.
![111.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/217918/111.jpeg)
However, we found majorly two problems.
Problem 1:
While registering two sample sets, in some cases, the iteration stops at ~40 iterations and exhibits diverging errors. Such an error DID NOT happen in Dr. Myronenko's version. We also observed that there was some fluctuation of Log Likelihood derivative during the first 50 iterations, and the derivative would decrease monotonically. The threshold set in the MATLAB CPD algorithm prevents the calculation from continuing when encountering the non-convergent fluctuation.
![222.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/217919/222.jpeg)
Problem 2:
Let's say we successfully registered two data sets (move the blue dots to match orange dots, number of iteration = ~300, and log likelihood < 1e-10). After the registration, the “moving object” (the blue dots) has been just "slightly" moved when comparing the coordinates of all dots between their original state and after-registration state. However, the after-registration state was significantly different from the "target object" as shown in the image below.
![333.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/217920/333.jpeg)
In our experience with Dr. Myronenko's code, the "moving object" should be matching (virtually and numerically) the "target object" after we have done the registration (the same two data sets, as shown above, number of iteration = ~300, and log likelihood < 1e-10).
With these two problems, we wonder if anyone could help point out any apparent mistakes we made or could we be informed any known bugs of this Matlab version CPD code?
thanks,
Alan
0 comentarios
Respuestas (1)
Jakub Tomasz Kaminski
el 12 de Ag. de 2019
Dear Alan Wei,
Have you solved the problem with the pcregistericp() function? I would highly appreciate any thoughts on this topic.
I have just encountered the same problem as you had. I even went the brute force way to check if I am missing something. I ran pcregistericp() some 4 thousand times with different parameters of 'Smoothweight', 'InteractionSigma' and 'OutlierRatio' with two simple Pointcloud (130 pts each) surfaces and range of input arguments even greater than suggested in the Matlab manual. RMSE keeps oscilating about the same value. Local minima, if any, can't be the case too.
Thank your for any input in this matter.
Regards, Jakub
0 comentarios
Ver también
Categorías
Más información sobre Point Cloud Processing en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!