zengzhen / SEC

0 stars 1 forks source link

How to use Table Object Segmentation #1

Closed ktiwari9 closed 9 years ago

ktiwari9 commented 10 years ago

Hey there, I want to use your project with ROS Groovy to detect objects on a white table top. Have you built this project to work with ROS ? Also, how can i define the object of interest ? I am interested in looking for a green rectangle Printed Circuit Board on the table. How can i use your code to realise this ? Please help

zengzhen commented 10 years ago

Hi,

I haven't built it with ROS but with PCL, but you can rebuild the same code with ROS&PCL.

In the TableObjectSegmentation, it is assumed that any objects that are placed on the tabletop detected in the point cloud are objects of interest, so all of them will be segmented out. You can add other constraints or user interface to focus attention on the objects that you are interested in dealing with.

In your case, you are dealing with a green rectangle Printed Circuit Board on the table, then

  1. first make sure that the tabletop plane is the dominant plane within the field of view of your Kinect (or other RGBD acquisition device);
  2. if you can, remove other clutter on the table so that the Kinect sees only the tabletop and the circuit board;
  3. if step 2 is not feasible, then add other constraints such as color, size(# of points), position and shape to prune the objects clouds at the end of TableObject::Segmentation::seg. An example to prune the object point clouds function TableObject::Segmentation::prune, what I did there was to remove any extracted object point clouds that has centroid too close to the tabletop since they are probably noise.
  4. another straightforward option instead of step 3 is to add a graphic user interface to select the region that is of interest or directly select the object cloud to process.