Ask Your Question

3D head pose estimation

asked 2014-12-30 08:51:48 -0500

spartanhooah gravatar image

I've implemented most of the algorithm outlined here - I can display the detected points on a 2D plane. Now, I'd like to go further and estimate the head's pose from the detected points. In the linked blog post, the author says "[the features] are unprojected and intersected with the virtual cylinder. Exact solution to this ray-cylinder intersection could easily be found on the net." I'm not familiar with this problem, so I don't know how to evaluate Google search results with "ray-cylinder intersection", much less know what that actually means. Could anyone point me in the right direction for research?

A secondary issue is that my program finds "good features" behind me, as well as outlining my head, which the author's implementation doesn't do. Does anyone know how he did this?

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2014-12-30 18:25:27 -0500

MRDaniel gravatar image


Good luck with this, it is a challenge.

Firstly, your secondary issue. You could use background subtraction to mask areas where you do not want to detect features. Or use face detect to get a rectangle, and shrink the rectangle so only face features are found. Alternatively, use an active appearance model or constrained local model to get actual facial feature points.

"[the features] are unprojected and intersected with the virtual cylinder. Exact solution to this ray-cylinder intersection could easily be found on the net.

This is all camera pose guff. The main problem is the language used to describe this stuff. Anyway, you have 3D points in model space. You need to apply the rotation and translation to a model cylinder, this will align the cylinder with the points you detected and the poses that you found. R and T matrices, which form the P matrix for projections.

I recommend doing a tutorial on OpenGL so that you can see more clearly how R and T, which are decomposed from P work together. Then this stuff becomes much more straight forward. Don't get hung up on the shapes, it's all about the MVP!!!

Essentially, he has a 3D model. Using the poses that you have calculated, you can align that model into the image. If it was not a cylinder, you could use three arrows (r,b,g).

Here is another good one, the guys on this site are very good with the code available on github

Or if the ray cylinder is the way you need to go.

edit flag offensive delete link more


Thanks for the explanation. I don't (yet) know how to do any of the things you mentioned for my secondary issue, but I have things I can look into.

I'd come across the More Than Technical post, but I'm trying to do this on a video source, so I can't find points of interest ahead of time.

spartanhooah gravatar imagespartanhooah ( 2014-12-31 10:43:25 -0500 )edit

Any updates on this? Im also trying to do the same, but am stuck on trying to figure out the cylindrical projection, would posit/pnp be possible to use given the points on the cylinder model.

k2cv gravatar imagek2cv ( 2015-06-22 13:58:02 -0500 )edit
Login/Signup to Answer

Question Tools



Asked: 2014-12-30 08:51:48 -0500

Seen: 2,822 times

Last updated: Dec 30 '14