Point Cloud Library, registro robusto de nuvens de dois pontos

Preciso encontrar a diferença de transformação e rotação entre duas nuvens de pontos 3D. Para isso, estou olhando para o PCL, como parece ideal.

Em dados de teste limpos, tenho o ponto iterativo mais próximo funcionando, mas fornecendo resultados estranhos (embora eu possa ter implementado incorretamente ...)pcl::estimateRigidTransformation funcionando, e parece melhor, embora eu assuma que o problema será pior com dados barulhentos.

Minha pergunta é:

As duas nuvens serão barulhentas e, embora devam conter os mesmos pontos, haverá algumas discrepâncias. Qual é a melhor maneira de lidar com isso?

Devo encontrar os recursos correspondentes nas duas nuvens para começar e ENTÃO usarestimateTransform? Ou devo olhar para umRANSAC função para remover outliers? ÉICP uma maneira melhor de ir do queestimateRigidTransform?