The CAView FAQ

The CAView FAQ

1. What is CAView?
2. Are the source code or binary form of CAView free to use?
3. What kind of computer do I need to run CAView at an interactive rendering rate?
4. How do I compile CAView?
5. Can I use Microsoft Visual C++ to compile the code?
6. What are the arguments taken by CAView?
7. How do I operate the rendering after loading the scene successfully?
8. Is there any document that describes the algorithm used in CAView?
9. What are the assumptions made in the CAView rendering algorithm?
10. How do I know CAView does a good job? Is there any benchmark algorithm I can use to compare the result?
11. Is the reconstructed geometry always correct?
12. When I move the virtual viewpoint around, the rendered image suddenly becomes severely distorted. Why?
13. What are the important parameters in the *.cav file that affects the final rendering speed or quality?
14. What are the limitations about CAView?

CAView with GUI
15. How do I setup VC++ 2005 for CAVIEW with GUI?
16. How do I setup GLUT?
17. How do I setup GLUI?
18. How do I run CAVIEW with GUI?
19. How do I use CAVIEW with GUI?

1. What is CAView?
CAView is an image-based rendering program developed for the first generation of mobile camera array at Advanced Multimedia Processing Lab, ECE, Carnegie Mellon University. In fact, it is a simplified version which demonstrates the on-the-fly adaptive view-dependent geometry reconstruction algorithm applied in our system.

2. Are the source code or binary form of CAView free to use?
Yes, but please read the license.txt included in the source code for some regular restrictions.

3. What kind of computer do I need to run CAView at an interactive rendering rate?
CAView is written on my IBM T40 laptop computer. My laptop has a 1.5 GHz Intel Pentium M processor, 768 MB of RAM and 32 MB ATI Mobility Radeon 7500 graphics card. CAView renders novel views at 5-10 fps on my laptop. If your computer has comparable or better configuration than my laptop, you should have no problem running CAView.

4. How do I compile CAView?
There is a makefile included in the distribution. The code should be easily compiled under Linux or cygwin by typing 'make' in a console environment, but you need to revise the makefile to make sure the correct library is linked.  The default makefile assumes a cygwin environment. CAView is an OpenGL based program, and it uses the popular GLUT library available here.

5. Can I use Microsoft Visual C++ to compile the code?
Yes, but you need to create a Win32 console workspace for the code and add all the source code files (*.h and *.cpp) into the workspace manually. If you are using Microsoft Visual C++ 6.0 or earlier version, there might be some compilation errors due to redefinition of indices. This is a problem of the Microsoft Visual C++ 6.0 compiler being not compatible with the latest C++ standard. However, you can easily bypass the problem by removing the redefinition of indices.

6. What are the arguments taken by CAView?
CAView takes only one argument, i.e., the file name of a configuration file *.cav. Please read the *.cav files included in the example scene data for details.

7. How do I operate the rendering after loading the scene successfully?
In the GLUT rendering window, press 'h' or 'H' and the program will show a help menu on the keyboard operations in the console interface. Mouse operation of the rendering is not yet supported in the current distribution.

8. Is there any document that describes the algorithm used in CAView?
Yes, there is a paper on our mobile camera array published as:
        C. Zhang and T. Chen, "A Self-Reconfigurable Camera Array", 2004 Eurographics Symposium on Rendering, June, 2004.
This distribution of CAView is a simplified version of the algorithm presented in the above paper, as it focuses on the geometry reconstruction and rendering part, but omits the part on region of interest identification and image partial decoding. Instead of loading images from the network cameras, CAView loads input images directly from image files. Dynamic scene is also not supported In the current distribution, but it is not difficult to add such functionality based on the current code.

9. What are the assumptions made in the CAView rendering algorithm?
We assume that all the input images are captured from cameras roughly on a plane, which is the case in our mobile camera array. We assume that the scene and the cameras can be separated by a minimum depth plane. We also assume that the camera calibration parameters are available (internal and external). The camera model we adopt in this program is the same as Dr. Jean-Yves Bouguet 's calibration toolbox available here. You should not have much difficulty using that toolbox to calibrate your cameras.

10. How do I know CAView does a good job? Is there any benchmark algorithm I can use to compare the result?
The CAView program has a benchmark algorithm built in, which renders the scene at a user-specified constant depth. This was the algorithm adopted in the MIT distributed camera array. In the GLUT rendering window, you may press 't' or 'T' to toggle between the two algorithms, move around and compare their performance.

11. Is the reconstructed geometry always correct?
No. The reconstructed geometry could be very wrong. However, the purpose of image-based rendering is to render novel views at high quality, and the view-dependent geometry obtained in this program serves this purpose reasonably well.

12. When I move the virtual viewpoint around, the rendered image suddenly becomes severely distorted. Why?
This is a known problem cause by our view-dependent geometry reconstruction algorithm. Our algorithm has the limitation that if the synthesized light rays are too far away from the input capturing cameras, the rendering result will be very bad. Similar effect was reported in the literature (see our 2004 Eurographics Symposium on Rendering paper for references). We are still working on this problem.

13. What are the important parameters in the *.cav file that affects the final rendering speed or quality?
Speed and rendering quality is always a tradeoff. To achieve a good rendering speed, one must first specify the correct minimum and maximum depth planes (MIN_DEPTH and MAX_DEPTH). You may obtain them by switching to the constant rendering mode and adjusting the constant rendering depth and see what objects are in focus. You may also increase the number of test depth planes (NUM_DEPTH) or reduce the initial 2D mesh grid size (INIT_MESH_SIZE). Correlation based color consistency verification often produces better quality images on noisy input images. If Correlation is used, you may set AVG_DIFF_TH to be 255 and SUM2_TH to be 0 to forbidden early rejection or acceptance, although that might slow down the rendering. On the other hand, if you want to improve the rendering speed, try increasing INIT_MESH_SIZE and SUM2_TH, and reducing NUM_DEPTH, MESH/DEPTH_SUBDIV_LEVEL, WND_SIZE AND AVG_DIFF_TH.

14. What are the limitations about CAView?
There are currently two major limitations about CAView. First, the algorithm cannot perform view extrapolation well. That is, if the virtual viewpoint moves too far from the capturing cameras, the reconstructed geometry will be very wrong and the rendering quality also suffers. Second, we have not considered occlusions during the geometry reconstruction. Thus our algorithm may fail if the baseline between the capturing cameras are too far apart.

15. How do I setup the new CAView with GUI?
The CAView GUI version is developed with VisualC++ Express 2005 which can be obtained for free from Microsoft¡¯s site. If you have the more advanced version of VC++ (e.g. VC++ 2005 Standard or Professional), you do not need to get the express edition. This IDE can be obtained from:http://msdn.microsoft.com/vstudio/express/visualc/. Please follow the installation manual carefully and make sure the PlatformSDK is also installed (instruction #4 in the installation manual). Only Visual C++ component is needed, other features such as SQL server, etc. are not needed. This also requires users to register (free) before they can use the product.

After installing the SDK, make sure to have these directories in the options
After installing the SDK, make sure to have these directories in the options

16. How Do I setup GLUT?
Extract the content of GLUT.zip into the ¡°GL¡± folder inside the ¡°Include¡± folder of the SDK directory
The default directory is: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\GL For more information on GLUT, please visit http://www.xmission.com/~nate/glut.htmll

17. How Do I setup GLUI?
Create a folder name ¡°GLUI¡± inside the ¡°Include¡± folder of the SDK directory The default directory is:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\ Extract the content of GLUI.zip into the created GLUI folder For more information on GLUI, please visit http://www.cs.unc.edu/~rademach/glui/

18. How Do I run CAView?
After opening the project workspace, press ¡°Alt + F7¡± and select Configuration Properties --> Debugging.
Edit the Command Arguments with the directory of your input data (the .cav file).

Then compile and run.

19. How Do I use CAView GUI?
Left mouse drag will translate the virtual viewing position.
Right mouse drag will rotate the virtual view
Center mouse drag will adjust the zoom
Other functions are inside the GUI window