Introduction to Visual Effects: A Computational Approach is the first single introduction to the computational and mathematical aspects of visual effects, incorporating both computer vision and graphics. The book also provides the readers with the source code to a library, enabling them to follow the chapters directly and build up a complete visual effects platform. The book covers the basic approaches to camera pose estimation, global illumination, and image-based lighting, and includes chapters on the virtual camera, optimization and computer vision, path tracing and many more.
Key features include:
- Introduction to projective geometry, image-based lighting (IBL), global illumination solved by the Monte Carlo method (Pathtracing), an explanation of a set of optimization methods, and the techniques used for calibrating one, two, and many cameras, including how to use the RANSAC algorithm in order to make the process robust, and providing code to be implemented using the Gnu Scientific Library.
- C/C++ code using the OpenCV library, to be used in the process of tracking points on a movie (an important step for the matchmove process), and in the construction of modeling tools for visual effects.
- A simple model of the Bidirectional Reflectance Distribution Function (BRDF) of surfaces and the differential rendering method, allowing the reader to generate consistent shadows, supported by a code that can be used in combination with a software like Luminance HDR.
Author(s): Luiz Velho, Bruno Madeira
Publisher: CRC Press
Year: 2022
Language: English
Pages: 241
City: Boca Raton
Cover
Half Title
Title Page
Copyright Page
Dedication
Contents
Preface
Introduction
CHAPTER 1: Introduction
1.1. CAMERA CALIBRATION
1.2. HISTORICAL OVERVIEW OF TRACKING
1.3. GLOBAL ILLUMINATION
1.4. IMAGE-BASED LIGHTING
1.5. MATHEMATICAL NOTATIONS
1.6. PROJECTIVE GEOMETRY CONCEPTS
1.6.1. Projective Space
1.6.2. Projective Transforms
1.6.3. Projective Geometry on This Book
1.6.4. Parallelism and Ideal Points
1.7. ABOUT THE CODE
CHAPTER 2: Virtual Camera
2.1. BASIC MODEL
2.1.1. Camera in the Origin
2.1.2. Camera in Generic Position
2.1.3. Digital Camera
2.1.4. Intrinsic Parameters
2.1.5. Dimension of the Space of Virtual Cameras
2.2. CAMERA FOR IMAGE SYNTHESIS
2.2.1. Terminologies
2.2.2. Clipping and Visibility
2.3. TRANSFORMATION OF VISUALIZATION
2.3.1. Positioning the Camera
2.3.2. Transformation of Normalization
2.3.3. Perspective Projection
2.3.4. Device Coordinates
2.4. COMPARISON WITH THE BASIC MODEL
2.4.1. Intrinsic Parameters
2.4.2. Dimension
2.4.3. Advantages over the Basic Model
2.5. CAMERA FOR PATH TRACING
2.6. VISIBILITY AND RAY CASTING
2.7. CAMERAS FOR CALIBRATION
2.7.1. Projective Model
2.7.2. Projective Notation for Cameras
2.7.3. Generic Projective Camera
2.8. MAPPING A CALIBRATED CAMERA INTO THE S3D LIBRARY
2.8.1. Specification of Extrinsic Parameters
2.8.2. Specification of Intrinsic Parameters
2.9. API
2.9.1. MatchMove Software Functions
2.9.2. Render Software Functions
2.10. CODE
2.10.1. Code in the MatchMove Software
2.10.2. Code in the Render Software
CHAPTER 3: Optimization Tools
3.1. MINIMIZE A FUNCTION DEFINED ON AN INTERVAL
3.2. LEAST SQUARES
3.3. NON-LINEAR LEAST SQUARES
3.3.1. Gauss-Newton Method
3.3.2. Levenberg-Marquardt Algorithm
3.4. MINIMIZE THE NORM OF A LINEAR FUNCTION OVER A SPHERE
3.5. TWO STAGES OPTIMIZATION
3.6. ROBUST MODEL ESTIMATION
3.6.1. RANSAC Algorithm
3.6.2. Example of Using the RANSAC Algorithm
CHAPTER 4: Estimating One Camera
4.1. CALIBRATION IN RELATION TO A SET OF 3D POINTS
4.1.1. Calibration Using Six Matches
4.1.2. Calibration Using More Than Six Matches
4.2. NORMALIZATION OF THE POINTS
4.3. ISOLATION OF CAMERA PARAMETERS
4.4. CAMERA FOR IMAGE SYNTHESIS
4.5. CALIBRATION BY RESTRICTED OPTIMIZATION
4.5.1. Adjusting the Levenberg-Marquardt to the Problem
4.5.2. Parameterization of Rotations
4.5.3. Parameterization of the Camera Space
4.6. PROBLEM POINTS OF PARAMETERIZATION
4.7. FINDING THE INTRINSIC PARAMETERS
4.8. CALIBRATION USING A PLANAR PATTERN
4.9. API
4.10. CODE
4.11. SINGLE CAMERA CALIBRATION PROGRAM
4.12. SIX POINTS SINGLE CAMERA CALIBRATION PROGRAM
CHAPTER 5: Estimating Two Cameras
5.1. REPRESENTATION OF RELATIVE POSITIONING
5.2. RIGID MOVEMENT
5.3. OTHER PROJECTIVE MODEL
5.4. EPIPOLAR GEOMETRY
5.4.1. Essential Matrix
5.5. FUNDAMENTAL MATRIX
5.6. THE 8-POINTS ALGORITHM
5.6.1. Calculation of F
5.6.2. Using More Than 8 Points
5.6.3. Calculation of F
5.7. NORMALIZED 8-POINTS ALGORITHM
5.8. FINDING THE EXTRINSIC PARAMETERS
5.8.1. Adding Clipping to the Model
5.8.2. Three-Dimensional Reconstruction
5.9. API
5.10. CODE
CHAPTER 6: Feature Tracking
6.1. DEFINITIONS
6.2. KANADE-LUCAS-TOMASI ALGORITHM
6.3. FOLLOWING WINDOWS
6.4. CHOOSING THE WINDOWS
6.5. DISPOSAL OF WINDOWS
6.6. PROBLEMS USING KLT
6.7. CODE
CHAPTER 7: Estimating Many Cameras
7.1. DEFINITIONS
7.2. CALIBRATING IN PAIRS
7.3. CALIBRATION IN THREE STEPS
7.4. THREE-STEP CALIBRATION PROBLEMS
7.5. MAKING THE CALIBRATION OF SMALL SEQUENCES ROBUST
7.5.1. Solution to the Problem of Step 1
7.5.2. Solution to the Problem of Step 2
7.5.3. Solution to the Problem in Step 3
7.6. CHOICE OF BASE COLUMNS
7.7. BUNDLE ADJUSTMENT
7.8. REPRESENTATION OF A CONFIGURATION
7.9. REFINEMENT CYCLES
7.10. EXAMPLE
7.11. DECOMPOSITION OF THE VIDEO INTO FRAGMENTS
7.12. JUNCTION OF FRAGMENTS
7.12.1. Alignment of Fragments
7.12.2. Compatibility of Scales
7.12.3. Robust Scale Compatibility
7.13. OFF-LINE AUGMENTED REALITY
7.14. GLOBAL OPTIMIZATION BY RELAXATION
7.15. CODE MODULES
7.15.1. Bundle Adjustment API
7.15.2. Bundle Adjustment Code
7.15.3. RANSAC API
7.15.4. RANSAC Code
7.15.5. Features List API
7.15.6. Features List Code
7.15.7. Sequence of Frames API
7.15.8. Sequence of Frames Code
7.15.9. Relaxation API
7.15.10. Relaxation Code
7.16. MATCHMOVE PROGRAM
7.17. RELAXATION PROGRAM
CHAPTER 8: Modeling Tools
8.1. API
8.2. CODE
8.3. POINT CLOUD DEFINER PROGRAM
8.4. POINT CLOUD CALIB PROGRAM
CHAPTER 9: Light Transport and Monte Carlo
9.1. RADIANCE
9.2. THE INVARIANCE OF THE RADIANCE
9.3. THE BRDF AND THE RENDERING EQUATION
9.4. OTHER DEFINITION FOR THE RENDERING EQUATION
9.5. EXAMPLES OF BRDF
9.5.1. The perfect Lambertian Surface BRDF
9.5.2. The Perfect Mirror BRDF
9.5.3. The Modified Blinn-Phong’s BRDF
9.6. NUMERICAL APPROXIMATION
9.7. MONTE CARLO INTEGRATION METHOD
9.8. PATH TRACING
9.9. UNIFORM SAMPLING OVER A HEMISPHERE
9.10. SPLITTING THE DIRECT AND INDIRECT ILLUMINATION
9.11. POLYGONAL LUMINARIES
9.12. CODE MODULES
9.12.1. Path Tracing API
9.12.2. Path Tracing Code
9.12.3. Poly Light API
9.12.4. Poly Light Code
9.13. RENDERING PROGRAM
9.14. RESULT
CHAPTER 10: Image-Based Lighting
10.1. HDR PICTURES
10.2. RECONSTRUCTING THE HDR RADIANCE MAP
10.3. COLORED PICTURES
10.4. RECOVERING AN HDR RADIANCE MAP
10.5. THE PFM FILE FORMAT
10.6. CONVERSIONS BETWEEN LDR AND HDR IMAGES
10.7. FROM HDR PICTURES TO EQUIRECTANGULAR PROJECTIONS
10.8. ORIENTING THE RADIANCE DOME
10.9. RENDERING USING A RADIANCE MAP
10.10. INTERACTION BETWEEN THE REAL AND VIRTUAL SCENES
10.10.1. Modeling the BRDF of the Local Scene
10.10.2. Differential Rendering
10.11. CODE MODULES
10.11.1. HDR Image API
10.11.2. HDR Image Code
10.11.3. Image-Based Light API
10.11.4. Image-Based Light Code
10.11.5. HDR Scene API
10.11.6. HDR Scene Code
10.11.7. Dome Path Tracing API
10.11.8. Dome Path Tracing Code
10.12. POLYSHADOW COLOR ADJUST PROGRAM
10.13. VISUAL EFFECTS PROGRAM
10.14. RESULTS
Bibliography
Index