Principle of zippering:
No objects are simple enough to be represented with one range file. Objects with holes and protrusions are even worse due to self-occlusion. This is why zippering is necessary. Zippering means creating 3D meshes from individual meshes (scans). By taking several scans of the object, we can reconstruct a more reliable surface representation.
For the project, we used the program "Zipper" written by Greg Turk. In order to produce a mesh approximating a 3D object, we roughly align each parts of the initial surface scans. Zipper then closely aligns the meshes using a modified iterated closest-point algorithm. The adjacent meshes are then zippered to form a continuous surface. To improve the resulting mesh, a consensus geometry is also computed, which is to replace the points of the zippered mesh by averages of corresponding points of the scans. We did not compute this for this reconstruction though.
The meshes to merge:
|
|
|
|
|
|
|
Different views of the final merged object surface:
|
|
|
|
|
|
|
Possible Errors:
The alignment works well if and only if the scans taken are comparatively similar with a large enough surface in common. The truth is, most of the scans are not quite similar in size when computed (minor deviations in calibration?) and these little errors in size are catastrophic when the entire model is reconstructed. On the ends of the objects (the nose and the handle of the pot), the scans from the camera do not produce a large enough surface for the alignment, and the details on the neighboring surfaces are not quite sufficient for the merging of meshes. It may be necessary to take more views at these ends.
Comments about the zippering program:
The problems I had with the zippering program was that the user interface was a bit annoying. The main problem was with using the mouse to align the images. At times I found it a bit difficult to rotate an object along a certain axis. It would be nice if there were some type of "rollers" or other controls that will allow you to rotate the object (similar to the rollers on ivview). Keyboard shortcuts (i.e. Alt-<key> to switch between meshes) would be nice. If possible, an undo for editing function would also be nice.