How to estimate object POSE when there are not enough features for SolvePnP?

asked 2019-04-03 11:03:50 -0500

opencvr gravatar image

updated 2019-04-05 03:20:24 -0500

Hello,

I want to estimate 6D POSE of metal part as shown in attached Image.

image description

According to my search on internet and literature, there is SolvePnp() algorithm available in OpenCV to estimate Pose of object relative to camera frame. But as shown in image, object(originally it has only one small circle features I guess it is not enough) has not feature points(4 or more) to estimate its Pose . so solvepnp can not work.

Can I use this method of surface matching, to estimate the pose?

link text

or what I am planning is out of scope in OpenCV?

little guidance woulb be helpful.

Thanks.

edit retag flag offensive close merge delete

Comments

@berak@Tetragramm could you please guide me little bit?

opencvr gravatar imageopencvr ( 2019-04-05 03:21:10 -0500 )edit

surface matching is for aligning 2 3d point clouds (it also wants "normals", which you probably don't have.)

berak gravatar imageberak ( 2019-04-05 03:23:01 -0500 )edit

@berak so surface matching I can not use. but what about solvePnp()? what can I do with if CAD model is available for this part? is this method will work? link text but in this there are known vertices for feature points. but in my case it is not.

opencvr gravatar imageopencvr ( 2019-04-05 03:53:47 -0500 )edit

@berak also camera in FOV can not see complete object as it is on arm. if solvepnp(), I can not use then what will be other method to estimate pose? as in OpenCV only this method PnP to solve the object pose. is it possible to use feature descriptors like ORB, then do 2d-3d correspondence. but it only give 2d image points, then what about 3d model points(as there is not unique points I can define in object coordinates frame as we do in conventional method)?

what are the possibility with depth camera like realsense? I can get 3D pointcloud of object by using depth camera.

I am completely confused here after lots of reading.

opencvr gravatar imageopencvr ( 2019-04-05 04:09:07 -0500 )edit

So, I can see a lot more than one feature. Every corner is a feature. You have to do some logic to match those to the 3d points, then you can use solvePnP.

If you use a depth camera, then you should use the method you linked.

Tetragramm gravatar imageTetragramm ( 2019-04-05 17:02:09 -0500 )edit