3D Pose Reconstruction

Dec 12, 2018   |   3 min read   |   casual

The task of figuring out how a person’s body is arranged in space is commonly referred to as human pose estimation. Human pose estimation is important in computer vision since it helps computers understand how a person is situated in physical space, and it also aids in interpreting how they are moving. This ability is useful for security cameras, modeling historical footage, tracking social behavior in crowds, and for safely navigating around pedestrians. While three-dimensional human pose reconstruction is already routinely performed in cinematography and in video game development, this is typically accomplished with the aid of trackers and video capture from multiple perspectives. Inferring human pose from a monocular camera, which refers to a camera with only a single-view, is one of the ultimate goals for 3D human analysis since it requires no special equipment.


Usage Demonstration


Pose reconstruction from an image. Image source (Wikipedia)

After selecting an image, the application asks you to select the approximate locations of key joints along with a region of uncertainty for each. For two joints connected by a limb, it also needs to know which one is closer to the camera. If the joints are roughly equidistant from the camera, the limb is assumed to be in the plane of the image and neither should be selected.

Selecting joint locations and ordering for 3D pose estimation.

Selecting joint locations and ordering for 3D pose estimation.

The application optimizes the joint locations within the regions of uncertainty and reports the selected positions on the image.

Joint location optimized for limbs in the image plane.

Joint location optimized for limbs in the image plane.

An interactive ball-and-stick model of the pose is returned.

Reconstructed pose from the same perspective as the original image.

Reconstructed pose from the same perspective as the original image.

The position of the camera can be adjusted to view the pose from different perspectives.

Reconstructed pose from a different perspective than the original image.

Reconstructed pose from a different perspective than the original image.


Installation Instructions

The application requires a Python installation equipped with the packages Pillow, numpy, scipy, and vpython.

If you are using the Anaconda Python package manager (recommended), you can run these commands in a terminal to set up a conda environment called 3dpose with the required package dependencies.

conda create -n 3dpose numpy scipy pillow
conda activate 3dpose
conda install -c vpython vpython

To run the application, you can then git clone it from GitHub and run the file run.py.

git clone https://github.com/cflamant/3d-pose-reconstruction.git
cd 3d-pose-reconstruction
cd code
python run.py


Additional information: 3D Pose Reconstruction on GitHub


Additional Technical Information

My method is an extension of Reconstruction of Articulated Objects from Point Correspondences in a Single Uncalibrated Image [Taylor, 2000]. A document detailing my approach and some tests is available on GitHub.

Follow @cflamant Watch Star Fork

Tags: