Overview
This is the Doxygen Python documentation for Team G22's Multi-Projector System for Semester 2025. This documentation provides comprehensive information about the system's architecture, classes, and implementation details.
Documentation Structure
- Classes Section: Contains detailed descriptions of all classes, structs, unions, interfaces, functions, and variables used in the system.
- Files Section: Lists all documented source files with brief descriptions and inter-file dependencies.
- Technical Details: Explains the mathematical foundations, algorithms, and techniques implemented in our project.
Alpha Blending
When multiple projectors overlap, the overlapping regions receive illumination from multiple sources, resulting in excessively bright areas. Alpha blending mathematically reduces this illumination to achieve uniform brightness across the entire projection surface.
The image below illustrates the problem that occurs without alpha blending:
Visualization of Overlap Without Alpha Blending.
Linear Blending
Linear alpha blending, as the name suggests, reduces the alpha of the image linearly with distance from the start of the overlap region:
- Left projector alpha curve: \( \mathit{Left} = 1 - \frac{x}{2} \)
- Right projector alpha curve: \( \mathit{Right} = \frac{1}{2}(x + 1) \)
Linear Blending.
Quadratic Blending
Quadratic blending creates a smoother, parabolic transition:
- Left projector alpha curve: \( \mathit{Left} = (1 - x)^2 \)
- Right projector alpha curve: \( \mathit{Right} = x^2 \)
Gaussian Blending
Gaussian blending uses the error function for the most natural, bell-curve transition:
- Left projector alpha curve: \( \mathit{Left} = 1 - \mathit{Right} \)
- Right projector alpha curve: \( \mathit{Right} = \frac{4(1 + \mathit{erf}(x - \frac{1}{2}))}{\sqrt{2}} \)