| Reconstruction of 3D objects and scenes base on 2D images is one of the most important topics in computer graphics and computer vision. Traditional visual hull reconstruction methods cannot correctly handle the situation where part of the object's concave surface are not reflected in the 2D silhouettes - for example, the inner surface of a cup cannot be recovered from its photo images at any angles. Active reconstruction methods, such as Shape from Structure Light, 3D laser scanner, can restore such concave surface info, but there are size limitation with active methods, it is difficult to reconstruct big object such as large buildings.In this paper, new algorithms are presented to solve this problem, focusing on the static reconstruction with local application of dynamic methods as a complementation. The basic idea is to first obtain a 3D model from any visual hull reconstruction method, then apply some assistant facility to get the local information of the concave surface, and finally combine the two pieces of information together to obtain a more accurate surface model of the object.The algorithms are sketched as the following:1) Use any traditional visual hull reconstruction method (e.g. the octree method) to obtain the 3D model of the object. The concave segment of the surface may not be properly represented.2) Apply some assistant facility to obtain the local information (in point clouds or triangular representation) of the concave surface.3) Merge the local information of the concave surface and the 3D model from visual hull reconstruction method to obtain a more accurate surface of the object. There are three cases to be considered:a) If the 3D model is based on the voxel representation, then the density of the grids on the concave segment must be increased according to the size of the voxel. Starting from the view point of the concave segment, a line segment is scanned voxel by voxel until a vertex voxel on a triangle of the concave surface is reached. All the voxels on this line segment will be erased from the voxel model. This is called "cave carving".b) If the 3D model is based on the points cloud, then find all those points which intersect with the line segment between view point of the concave surface and the points in points cloud and remove them from the model, meanwhile, insert all the concave points into the 3D model. This is called "cave patching".c) ]f the visual hull is represented by a polyhedral model, then a "cave pushing" process is employed instead of carving. That is, a line segment is created between the view point and a vertex on the concave surface. Find the polygon on the visual hull which intersects with the line segment. Then match the vertices of the polygon and those of the corresponding triangle on the concave surface, and "push" the polygon into the "cave". Finally remove the data of the concave surface and save the revised visual hull model. This is called "cave pushing".The algorithms presented in this paper try to solve the problem which traditional visual hull reconstruction algorithms cannot handle properly, and hence provide a good deal of improvement on generating 3D models from 2D images with more details and accuracy. |