Le 18 octobre 2012 19:55, Balaitous <[email protected]> a écrit : > 3. Recentrage en prenant pour origine le barycentre du nuage de point > (X, Y, Z)
Là encore un problème à la source des erreurs : les photos "orthorectifiées" ne le sont pas nécessairement en fonction de l'effet de perspective (notamment les prises de vue en altitude basse). La correction de cet effet ne peut pas se contenter d'utiliser un barycentre unique, mais nécessite une dimension supplémentaire (liée au degré de liberté supplémentaire introduit par l'altitude de l'appareil de prise de vue). De la 3D on passe à la 4D (cette dimension supplémentaire est la distance entre le point au sol visible dans l'image dont on a les coordonnées 3D, et le centre optique de l'appareil de pise de vue, mais en projection pour l'image finale en 2D, cette dimension pourra être ignorée : on travaille en coordonnées homogènes). De l'effet de déformation « œil de poisson » des objectifs en grand angle, c'est plus difficile à corriger (il faudrait avoir une description précise des propriétés géométriques de l'optique de l'appareil). La seule façon d'en tenir compte de façon correcte est de ne pas traiter l'image en la découpant simplement en facettes triangulaire planes, mais en utilisant une transformation "lissante" à base de splines (au moins quadratiques sinon cubiques), et d'augmenter le nombre de points de référence pour réduire la surface des triangles retenus quitte à en augmenter le nombre (les splines à calculer contiendront donc davantage de noeuds). Toute la difficulté est là, dans le nombre de paramètres et de degrés de libertés pris en compte, et dans le choix des transformées pour tenir compte des effets à corriger. Le calcul des paramètres initiaux peut sembler compliqué, mais en fin de compte un traitement efficace des images 2D peut avoir lieu en utilisant une matrice de transformation simpel mais efficace et comportant plus de dimensions que 2 ou 3. A mon avis cette matrice carrée doit avoir au minimum 4 dimensions, ce qui implique que pour chaque point 2D de l'image cible, il faut d'abord calculer les 2 coordonnées dans l'image source, et calculer les 2 autres coordonnées par une transformée *non* linéaire tenant compte des effets à corriger, mais pour simplifier on peut effectivement faire ce calcul des 2 autres coordonnées manquantes uniquement sur les points de référence, pour ensuite estimer les autres points 4D de l'image par triangulation linéaire dans cet espace 4D augmenté et non dans le seul espace 2D de l'image source. Comme ensuite la matrice de transformation 4D est aussi linéaire, on peut combiner l'interpolation 4D des coordonnées 2D sources et la matrice en une transformation linéaire unique. On obtient alors en résultat des coordonnées 4D aussi, dont il ne reste plus qu'à ignorer les deux dernières coordonnées (représentant la hauteur dans la direction de la verticale de chaque point de l'image obtenue, et la distance de ce point au centre optique transformé de la prise de vue initiale, dans une direction variable mais passant par ce centre optique "déplacé"). Dans les faits, pour produire une image orthorectifiée, on utilise plutôt la transformée inverse (on part des corrdonnées 2D de chaque pixel dans l'image rectifiée, pour en déduire une position dans l'image source). Cela se fait par l'inversion de la matrice 4x4 (si on s'est contenté d'une triangulation plane), ou 5x5 (avec une transformation lissante à base de "spline" quadratique), ou 6x6 (spline cubique). _______________________________________________ Talk-fr mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-fr

