Recovering
surface constraints
To construct our models, we first place an object of desire on a
turntable (with a calibration chart in the background) and take several
photos of the object rotated to different angles. If needed, we can move the
camera to different vantage points and repeat the process to obtain a
more complete set of photos.
When the 3D location of several image points are known,
it is possible to determine the position, orientation, and intrinsic
parameters of a camera directly from a photo. We recover these parameters
once for each vantage point used by matching points on our calibration
chart with their known locations.
After calibrating the camera for each photo, we extract the object's
silhouette. Note: usually this would be done by backlighting the shape,
but in these experiments we have outlined the silhouette by
hand. One key to our method is that a silhouette point in a calibrated
image
corresponds to a ray in space; the ray starts at the camera's
focal point, passes through the silhouette point in the image plane,
then continues into space. We know these silhouette rays are tangent to
the object, and we even know the surface's normal at
the point of tangency (what we don't know is where this tangency
occurs). If we collect this information across many images, we can bound
the object's shape.


|
Constructing the spline surface
By approximating each silhouette as a polygon (possibly with
holes), we create a set of polyhedral "view cones" which extend into
space. Intersecting these cones creates a polyhedron that roughly
contains the object.
For many applications, working directly with this
polyhedron would be enough. But for our purposes, we would like a
smooth surface, so we manipulate the polyhedron to create a spline
control mesh.
The raw polyhedron is often very irregular, so we first triangulate it,
then simplify the triangulation to eliminate small edges and
angles. This gives us an initial spline
control mesh.
To get G1 continuous surfaces, we construct three patches over
each triangle. First, we determine the control points around each vertex
(using a theorem presented by Loop at Siggraph 94), then we use
Chiyokura & Kimura's approach for cross-boundary continuity and Sherman
& Sequin's method for continuity among each set of three patches. This
particular construction interpolates the vertices, and it's local and
linear in the vertex positions, allowing for easy manipulation of the
surface and easy computation of derivatives.
|
Improving the
model
Once we have an initial surface that captures the object's rough shape
and topology, we improve the model by minimizing the distance from each
of the silhouette rays to the surface. Unlike many other approaches, we
compute both the true distance to the surface and the actual
derivatives, then use a gradient descent algorithm to improve the fit.
At left are a fitted spline surface and its underlying
mesh.
After fitting, we can project the original calibrated photographs back onto
the model for texturing. Modeling and calibration inaccuracies can introduce
error, but initial experiments look promising.
|
|
|
Spline Models
|
|
Each icon below links to our latest results for automatic spline
surface modeling. While this is still work in progress, you can see what
kind of results we are working toward. VRML models of the objects are
available on each page, along with .OFF files which can be viewed with
Geomview or imported into CAD programs.
|
|
|
|
Mesh
models
|
The icons below link to experiments with triangular mesh models. These
are more preliminary than the above, but they indicate the complexity
of shape we hope to recover with our approach
|
|