I am currently working on a project that involves taking a single color frame, performing image segmentation and then visualization of the scene. I am currently at the stage of performing alignment between two objects - one in my database and one segmented from picture. Picture data is processed: for each pixel in the color frame, I have depth data, so from a color frame I am capable of generating a (x,y,z) point for each pixel. Therefore, given my segmentation I am capable of generating a Point Cloud for each object. So given model in my database and a point cloud ( ***which might not represent full object - example: I might just see a corner of a table***, but I still need to align full table model), I would like to align object in my database with points in the cloud. I have done some research and it seems that the method widely used is the [Iterative Closest Point](https://en.wikipedia.org/wiki/Iterative_closest_point) (ICP) algorithm. But I have also a different idea, and I would appreciate your evaluation, as I have some concerns regarding ICP. **METHOD 1:ICP** Given that my model and point cloud might not be aligned by default, I have decided to pick points that should be aligned in the result output (assigning corresponding points). So I pick for instance 4 points that should be aligned. However, the issue is obviously that my selection will not be precise and therefore *two points sets do not differ just by rotation and translation, but also by small point misalignment*. I want to simplify calculations as much as possible to achieve some kind of convergence. So I was wondering whether someone has any ideas on how to solve it, and whether you can actually use ICP given this misalignment.. **METHOD 2: NON-ICP** Not use ICP, but rather use a simple one iteration calculation. Calculate centroid of selected points and pick one point from model and a corresponding point from the point cloud (obviously this is approximation, because I can't pick exact point), and create two vectors : "model centroid-to-point" vector and "point cloud centroid-to-point". Then I could just calculate rotation and translation between these two vectors. **QUESTIONS:** 1) Is there a way of solving the ICP issue? 2) Which method seems to be more sensible in terms of accuracy and possible errors?