During a Bachelors project  a practical setup for 3D reconstruction using the voxel coloring algorithm  was developed. The voxel coloring algorithm takes a number of photos with known camera position as input and outputs a 3D reconstruction consisting of a regular grid of cube-shaped voxels (see ﬁgure 1). Voxels are ‘volume elements’ in analogy with pixels.
Figure 1: On the left an input image for voxel coloring is shown, with 4 marked reference points (red squares) which need to be selected by the user manually in every image to determine camera position and orientation. On the right a voxel reconstruction created using voxel coloring. The images show a ﬁgure called Tweety which is trademarked and copyrighted by Warner Bros. The practical setup used consisted of a cheap webcam, a tripod and a home-built Meccano turntable. The setup could be used to take photos from diﬀerent sides of an object automatically. We are going to perform 3D reconstruction using voxel coloring as well, but without using the turntable as it was shown in  that it isn’t really needed. During this assignment we are going to look at the diﬀerent steps involved in 3D reconstruction with voxel coloring. Intuitively, the ﬁrst step is to acquire images of the object we want to reconstruct (section 3). The second step is to determine the real-world position and orientation of the camera, as that information is required by the voxel coloring algorithm. We will cover the perspective camera model and camera calibration in section 5. After several in1
termediate steps1 we will cover the actual voxel coloring. After voxel coloring is complete one wants to view the reconstruction made; for this purpose an OpenGL voxel viewer for Windows is available2 .
This assignment will span 3 lab sessions. The schedule for these lab sessions is as follows: • Week 1. Image acquisition (section 3) and camera calibration (section 5). You should take pictures of an object suitable for voxel coloring and have performed extrinsic calibration on them. Hand-ins. You have to send us the code of your Matlab image acquisition function and answer the questions on the noisiness of the images acquired and on the intrinsic calibration. • Week 2. Combine your images and calibration to form a voxel coloring dataset, implement the projectVoxel function and perform voxel coloring on your dataset (section 8). After that you can work on implementing consistency checks. Hand-ins. You have to send us the Matlab code of your projectVoxel function, your implementation of the original consistency check and a few screenshots of a reconstruction based on your own images. • Week 3. Finish your implementation of the original and adaptive consistency checks, look at the eﬀect of background removal on reconstruction quality and write your report. Hand-ins. Your report and your dataset(s). The ﬁnal result of this assignment will be a written report. Your grade will be based primarily on this report.
Step 1: Image acquisition
The Image Acquisition Toolbox for Matlab has been installed on all computers in the lab room and there are ﬁve webcams available, which should be plug and play. The Image Acquisition (IMAQ) toolbox will allow you to easily access the webcam from Matlab, independant of model or brand of webcam (though there is some conﬁguration needed). Matlab functions from the IMAQ toolbox you are going to need are: • imaqhelp [function], which can be used to obtain help about function. Use this to get speciﬁc help on IMAQ functions. • imaqhwinfo, which returns information about image acquisition hardware on the system. Use this function to get the name of your image device (only works if the webcam is connected). Supply the device name to obtain speciﬁc information about a...