opencv / opencv_contrib

Repository for OpenCV's extra modules
Apache License 2.0
9.31k stars 5.74k forks source link

3D position from multiple 2D measurements #563

Open Tetragramm opened 8 years ago

Tetragramm commented 8 years ago

This is a question about a new module or part of a module for OpenCV, and whether you think it's suitable and desirable.

I have been working on a project that involves estimating the 3D position (or position and velocity) of a point from multiple 2D measurements using the psuedo-linear estimator from Selective angle measurements for a 3D-AOA instrumental variable TMA algorithm.

The inputs are a camera rotation and translation matrix like you get from estimatePoseBoard, the pixel location of the object in the image, and optionally distortion parameters. Plus time if you want velocity estimated as well.

I have a bit of cleanup and commenting to do to turn it into an OpenCV module/file, but I'd like to know if it would be useful. Also, would this be best in an existing module, or as a new one? It doesn't quite fit with any of the existing ones.

I have a demo video of it working on a CHARUCO board and a purple ball, so you can see it converging. https://www.youtube.com/watch?v=V_wV1LsTBUk There's no smoothing on the camera pose, so it's a bit wobbly, but as you can see, it estimates just fine.

The reverse (estimating camera location and rotation from world points) using a similar method exists, but I don't have it implemented and that would be a new mode for solvePnP anyway.

StevenPuttemans commented 8 years ago

I would say, if you are up to it, do make a PR with the functionality. I would also make a new module for this, it can then later be integrated into the part where it fits the most.