3DScanner
Goals
Our goal was to capture real-world objects and recreate them as 3D objects in a virtual environment. This process should be kept as comfortable as possible for the user.
![]() | ![]() |
| (a) Photo of Gauss statue | (b) Reconstructed 3D model |
What is 3DScanner?
3DScanner is a tool for reconstructing 3D models from unstructured images, taken with uncalibrated cameras. 3DScanner takes a set of JPEG images as input and produces a polyhedron mesh in the OBJ file format. In order to optimize the results and to ensure expandability and maintainability of the code, we implemented a modular concept, using state-of-the-art open source software and self-implemented code. Thus, it is possible to substitute specific parts of the system with later versions or alternative components, respectively. A great benefit of our system is, that only one camera is needed and no manual camera calibration is necessary.

3DScanner mainly consists of two components:
- a camera calibration system
- a hull reconstruction library
These components are connected and extended via software, that converts the calibration data into a format readable by the hull reconstruction system and the reconstructed model into a standard OBJ file respectively. The workflow is as follows:
- Camera Calibration with Bundler (excerpt from Bundler website)The main initial steps are to generate features and pairwise feature matches for the image set. Any type of image features can be used, but Bundler assumes the features are in the SIFT format, and so David Lowe’s SIFT detector is probably the easiest to get working with Bundler (RunBundler.sh assumes that SIFT is used). A list of images containing estimating focal length information also must be created. The four steps to creating a reconstruction are therefore:
- Create a list of images (this extracts focal length information, when available, from each image, and stores it in an image list).
- Generate (SIFT) features for each image.
- Match features between each pairs of images (this step can take a while).
- Run Bundler with a suitable options file.
- Projection Matrix Conversion
The bundle_converter takes the bundle.out file, that is generated from step 1, as input. Therefore, the bundle.out file is copied to the path you specified after running 3DScan.sh. The converter uses the camera data as well as the specified image resolution to calculate a 3×4 projection matrix for each camera. These matrices are stored in a calib file in the directory specified for the PGM images. - Mesh Reconstruction
The input for the executable reconstruct is a calibration file with N 3×4 calibration matrices, and N greyscale image files containing the silhouette mask – the only formats supported for now are the raw greyscale (P5) pgm format (0=background, non-zero = foreground) and the TIFF format (thanks to libtiff). In the following, only the PGM format is taken into account, because we did not test the library with TIFF images. The output is an OFF model file with triangles. - OFF to OBJ Conversion
The executable off2obj converts the OFF model created in step 3 into a standard OBJ file.
Further Information
Please also visit the 3DScanner website at the Computer Graphics Lab at TU Braunschweig.










Pingback: 3DScanner fertiggestellt | Timpner.com
Can you provide more information on this?
@Computer Questions
Sure, please visit the 3DScanner website at the Technical University Braunschweig for further information. If you have any specific questions, let me know.
I found your blog on google and read a few of your other posts. I just added you to my Google News Reader. Keep up the good work. Look forward to reading more from you in the future.
@Computer Tutorials
Thank you!
Hi,
I liked your work, you talked about some file called “bundle_converter”, can you please elaborate more on that, as we need to extract the camera parameters as part of our project
Thanks in anticipation
Do you provide any code for this ?
Where could i get 3dScanner?
Do you provide any code for this or could you send me the code?
thanks in advance for any help .
my email address is zhouqinsong0000@163.com
Hi qinsong,
please address yourself to Miss Georgia Albuquerque in order to request the code and additional information. You can find her contact info at http://graphics.tu-bs.de/teaching/labs/ws0809/team_project/scanner_3d/.
Regards