-1

I have a 3D point cloud and I would like to match different point clouds with each other for recognition purposes. Does OpenCV or Tensorflow do it for me? if yes, how?

Example:

src1 = pointCloud of object 1
src2 = pointCloud of object 2
compare(src1, src2)

Output: Both point clouds are of the same object or different objects.

I want to achieve something like this. Please help with some ideas or resources.

Shakir Sadiq
  • 64
  • 1
  • 5
  • 2
    In order to match two different point clouds you are usually using the iterative closest point algorithm ([ICP](https://docs.opencv.org/4.5.5/dc/d9b/classcv_1_1ppf__match__3d_1_1ICP.html)). In a first instance, you can easily do this in CloudCompare. [Here](https://github.com/VincentStimper/icp) is an approach for TensorFlow. – Grillteller Feb 25 '22 at 15:32

1 Answers1

0

OpenCV Surface Matching can be used to detect and find pose of a given point cloud within another point cloud.

In Open3d there is a 3d reconstruction module, but it is used to register (find poses) of RGBD Images and reconstruct 3d object from them. But there is a sub step in which different point cloud fragments are registered (finding pose of point clouds) to combine them into a single point cloud for reconstruction. But not sure if it is useful for your task.

There are many 3d Point cloud object detection methods which use neural networks, as well, but you have to generate the data needed to train, if your objects are not available in a standard dataset.

SFA
  • 63
  • 5