Developer Documentation
RAVL, Recognition And Vision Library
USER HOME PAGE CLASS LIST CONTENTS
Ravl - 3D - Carve3D


3D Voxel Carving

Given silhouettes of an object from multiple camera views, this library computes the maximum volume in 3D space which may have produced them. It requires calibration parameters for the camera views to be known - see camera calibration.

Code is designed to be fast, for real-time carving. Carving is done using a pre-computed lookup table based on the camera parameters.

VoxelSetC is the data structure which represents an occupied volume in space. To carve this based on a set of calibrated cameras, use VoxelCarveC. A lookup table is created on construction, so expect the constructor to take many seconds or even minutes depending on the size of the voxel set. Once constructed, the VoxelCarveC::Update(...) method will quickly compute the occupied volume given any set of silhouette images. The current implementation is single-threaded. Faster multi-thread versions on the way.

Voxel carving is often used for visualisation. The VoxelSurfacePoints(...) functions [1] and "[2] compute the set of points one the surface of the voxel set, expressed as a PointSetC. This can be rendered in OpenGL using RavlGUIN::DPointSetC.

Normal classes:

 VoxelSetC A cuboid of volume cells (voxels) in 3D space
 PointSetC Array of 3D vertices and attributes

Normal functions:

 operator <<(BinOStreamC &,const VoxelSetC &)
 operator >>(BinIStreamC &,VoxelSetC &)
 operator <<(BinOStreamC &,const PointSetC &)
 operator >>(BinIStreamC &,PointSetC &)

Develop classes:

 VoxelSetBodyC A cuboid of volume cells (voxels) in 3D space
 PointSetBodyC Array of 3D vertices and attributes
Documentation by CxxDoc: Tue Aug 13 10:00:48 2002