lardon3d/docs/concepts/geometric_constraints.md

172 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Geometric Constraints
## Définition
Les **geometric constraints** (contraintes géométriques) sont des règles mathématiques qui encadrent la relation entre les images 2D et la scène 3D. Elles servent à valider, filtrer et optimiser les correspondances et la reconstruction en éliminant les solutions physiquement impossibles ou improbables.
Ces contraintes exploitent la géométrie projective des caméras, la structure de la scène et les propriétés des capteurs pour garantir la cohérence géométrique du pipeline.
## Statut
**PLANNED** — Concepts mathématiques fondamentaux, pas encore implémentés comme module distinct. Utilisés implicitement dans les futurs algorithmes de matching et reconstruction.
## Place dans le pipeline
```
Matching & Tracks
Geometric Constraints (filtrage)
├── Fundamental Matrix Filter
├── Essential Matrix Filter
├── Homography Filter
├── Parallax Filter
└── Visibility Constraints
Reconstruction Layers (entrée validée)
```
Les contraintes géométriques agissent comme des filtres entre le matching brut et la reconstruction.
## Concepts clés
### 1. Fundamental Matrix (Matrice fondamentale)
La **matrice fondamentale** F encode la relation projective entre deux images pour une scène statique :
```
x'ᵀ F x = 0
```
`x` et `x'` sont les coordonnées homogènes d'un point dans les deux images.
| Propriété | Valeur |
|-----------|--------|
| Dimensions | 3×3 |
| Rang | 2 |
| Degrés de liberté | 7 |
| Nombre minimum de points | 8 (ou 7 avec DLT) |
Usage :
- Vérification géométrique après matching brut
- Filtrage des outliers (points ne satisfaisant pas l'équation)
- Estimation de la configuration relative des caméras
### 2. Essential Matrix (Matrice essentielle)
La **matrice essentielle** E est la version calibrée de F, exprimée dans le repère caméra :
```
E = K'ᵀ F K
```
`K` est la matrice intrinsèque de calibration.
| Propriété | Valeur |
|-----------|--------|
| Dimensions | 3×3 |
| Rang | 2 |
| Degrés de liberté | 5 (3 rotation + 2 translation) |
| Décomposition | E = t̂ R (rotation + translation) |
Usage :
- Extraction de la pose relative (R, t) entre deux caméras
- Triangulation des points 3D
- Estimation du baseline
### 3. Homography
L'**homographie** H encode la relation projective entre deux images d'un plan :
```
x' = H x
```
| Propriété | Valeur |
|-----------|--------|
| Dimensions | 3×3 |
| Degrés de liberté | 8 |
| Cas particulier | Scène plane ou rotation pure |
Usage :
- Détection de scènes planes (sols, murs, tableaux)
- Filtrage des matches sur plans dominants
- Warping et stitching d'images
### 4. Parallax Constraints (Contraintes de parallaxe)
La **parallaxe** est le décalage apparent d'un point entre deux images. Elle est liée à la distance focale, à la baseline et à la profondeur du point :
```
parallaxe = (f × baseline) / depth
```
| Type | Condition | Usage |
|------|-----------|-------|
| **Parallaxe minimale** | > seuil (ex: 0.5 pixel) | Éviter les dégénérescences (points à l'infini) |
| **Parallaxe maximale** | < seuil (ex: 100 pixels) | Éviter les erreurs de matching (trop de distortion) |
| **Parallaxe relative** | > baseline × sin(angle) | Garantir la qualité de triangulation |
### 5. Visibility Constraints (Contraintes de visibilité)
La **visibilité** encode quels points sont visibles depuis quelles caméras :
- **Culling** : un point derrière une caméra n'est pas visible
- **Occlusion** : un point peut être caché par un obstacle
- **Frustum** : un point hors du champ de vision n'est pas observable
```c
typedef struct {
Vec3d point_3d;
Vec3d camera_center;
Vec3d camera_direction;
float fov_horizontal;
float fov_vertical;
float near_plane;
float far_plane;
} VisibilityConstraint;
```
### 6. Triangle Quality Constraints
La qualité des triangles de triangulation影响 la précision de la reconstruction :
| Métrique | Seuil recommandé | Description |
|----------|------------------|-------------|
| **Baseline angulaire** | > 5° | Angle entre les directions de vues |
| **Aspect ratio** | < 3.0 | Rapport longueur/largeur du triangle |
| **Epipolar distance** | < seuil pixel | Distance du point à la ligne épipolaire |
| **Reprojection error** | < 1-2 pixels | Erreur de reprojection après triangulation |
## Relations avec les autres modules
| Module | Relation |
|--------|----------|
| **Matching & Tracks** | Les contraintes filtrent les matches bruts pour ne garder que les géométries cohérentes. |
| **Visual Index** | Les candidats du Visual Index sont les entrées des contraintes géométriques. |
| **Reconstruction Layers** | Chaque couche applique les contraintes appropriées pour valider ses résultats. |
| **Resource Governor** | Le gouverneur peut ajuster les seuils de contrainte en fonction des ressources disponibles. |
| **Hardware Profile** | Le calcul des matrices fondamentales/essentielles est CPU-bound. |
## Contraintes de conception
- Les seuils géométriques (parallaxe minimale, erreur de reprojection) sont calibrables mais immuables pendant un traitement.
- L'estimation de F ou E utilise RANSAC avec un nombre d'itérations borné.
- Les homographies sont détectées automatiquement mais ne remplacent pas E pour les scènes non planes.
- Les contraintes de visibilité sont recalculées à chaque ajout de caméra.
- Les résultats de filtrage géométrique sont auditables (log des rejets avec raison).
- En cas d'incertitude, les contraintes sont conservatistes (rejeter plutôt qu'accepter).
## Terminologie
| Terme | Définition |
|-------|------------|
| **Fundamental Matrix** | Matrice 3×3 encodant la relation projective entre deux images |
| **Essential Matrix** | Version calibrée de F, dans le repère caméra |
| **Homographie** | Transformation projective entre deux vues d'un plan |
| **Epipolar geometry** | Géométrie des lignes épipolaires reliant deux vues |
| **Parallaxe** | Décalage apparent d'un point entre deux images |
| **RANSAC** | Random Sample Consensus, algorithme robuste d'estimation de modèles |
| **Inlier** | Point satisfaisant la contrainte géométrique |
| **Outlier** | Point ne satisfaisant pas la contrainte, rejeté |
| **DLT** | Direct Linear Transform, méthode d'estimation linéaire |
| **Bundle adjustment** | Optimisation globale minimisant l'erreur de reprojection |