bing-jian / gmmreg

Implementations of the robust point set registration algorithm described in "Robust Point Set Registration Using Gaussian Mixture Models", Bing Jian and Baba C. Vemuri, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(8), pp. 1633-1645. For a Python implementation, please refer to http://github.com/bing-jian/gmmreg-python.
GNU General Public License v3.0
299 stars 96 forks source link

GMM based rigid registration on keypoints #1

Open saimanoj18 opened 10 years ago

saimanoj18 commented 10 years ago

Hi Bing Jian,

I am a Sai Manoj, a graduate student from Singapore. I am working on a project and found that your work on Robust Point Set Registration using GMM fits my need. Sorry for posting it here even after emailing you.

Firstly, thank you so much for providing the source code.

I need some help from you as I am not able to get good registration results.

Goal: I am trying to register keypoints extracted on two point clouds from Kinect. The detected keypoint positions are a bit noisy as the Kinect point cloud is not accurate. Just a rough estimate, the keypoint position vary around 0.03 meter in each of x,y,z dimensions. As the keypoint positions are noisy, it seems good to use your GMM based framework than ICP.

What I have tried: I have gone through your paper and source code and understood at an abstract level that GMM constructed from scene and model are registered by reducing the L2 distance metric between them.

I extracted keypoints on a point cloud, then moved the Kinect for various distances along "one axis" alone and captured the keypoints from the next position. I have provided them as input with the config_example.ini file and tried to perform RIGID registration. But I was not able to get good results.

The keypoints files which I tried to use can be downloaded from https://dl.dropboxusercontent.com/u/95042389/keypoints.tar.bz2

The keypoints files are named as 'pos0.txt', 'pos10.txt', 'pos15.txt' etc. The difference in their numerical values gives the translation between them. All the files are acquired while the Kinect is moved in the same direction. The keypoints in the file are in the units of meters.

Now, Could you please clarify some doubts.

  1. What do these parameters represent 'level', 'sigma' and 'max_function_evals' ?
  2. How can I find the "good" values for these parameters ? Does "sigma" represent the standard deviation of the each model in GMM ?
  3. Could you please try with the files provided and see if they are working for you ?
  4. I have read in the paper that all the gaussian components are initiated with same variance ? Can we give a different variance for each gaussian component in constructed GMM ? If yes, where can we do that in the code ?
  5. In your paper, you have mentioned that this density based methods in general do not work well with the point sets with different sampling densities ? Can this be a reason for GMM method to not work for my points sets?
  6. Finally, can the GMM based approach provide better results than ICP ?

Thank you so much for your time and effort. Have a good day!

With all Good wishes, Sai Manoj Prakhya