Projections (2)

Projections inverses et transformations d'images

On peut avoir l'impression que la transformation qui mène de \((\lambda,\varphi)\) vers les coordonnées planaires \((x,y)\) sur notre carte, c'est la seule chose nous aurons besoin. Cependant, réflechissons comment effectuer une projection non-triviale, et afficher une image bitmap, et non pas des données vectorielles.

En principe on peut considérer que chaque pixel de l'image source constitue un élément primitif à afficher, et effectuer les transformations qui s'imposent. Ceci est très risqué, et donne des résultats pollués par des artefacts, à cause du fait que le bitmap (image - raster) est un objet discret; les coordonnées des pixels sont entières, avec la précision qui dépend de la taille du raster.

On peut avoir des pixels différents (voisins ou non) qui sont mappés sur les même pixel-cible, pixels qui vont "nulle part" (seront invisibles) ou des "trous" non-remplis. Ceci complique le rendu considérablement, en général. Plusieurs procédures d'interpolation peuvent aider à éliminer quelques difficultés, mais en général, ceci n'est pas une bonne approche, et ceci est une vérité générale qui conditionne les techniques du traitement d'images. La solution du problème est basée sur la transformation de la cible vers la source :

La transformation inverse parfois est plus facile, mais parfois considérablement plus difficile que la directe, et au lieu d'avoir une formula mathématique, il faut appliquer un algorithme itératif. Ici la partie conceptuellement triviale, mais techniquement indispensable : la transformation affine entre les coordonnées "géographiques" et les coordonnées "pixel", se fait deux fois.

Pour les exemples montrés ici c'est tout. Cependant il faut vraiment faire attention à cause de la géométrie discrète. Si une zone d'image-source subit un agrandissement considérable, on pourra voir les effets de pixélisation, la création des "plages". Il faut alors obligatoirement appliquer les algorithmes d'interpolation (bi-linéaire, bicubique, ou autre). Faute de temps, nous n'aborderons pas ce sujet.

Exemples de projections

Voici un échantillon de quelques projections considérées traditionnelles, populaires, utiles, etc. (Au moins utiles pour la connaissance générale des outils de projections, de la terminologie et des besoins des cartographes).

Projection de Mercator

mercaproj (13K) Ceci est la plus célèbre projection cylindrique, conforme, formalisée par Gerardus Mercator en 1569.

La projection de Mercator peut être obtenue de manière similaire à celle montrée. Les rayons projetés du centre de la sphère "mappent" les points de la surface sphérique sur le cylindre. Il est évident que la region des pôles est singulière, la distortion verticale des zones polaires est grande. La correspondance horizontale est bonne.

Si on utilisait les mathématiques de ce dessin, on aurait \(y=\tan(\varphi)\), ce qui n'est pas exact. Voici les formules mathématiques concernées (il est utile d'apprendre leur dérivation, mais pas forcément mémoriser). Nous avons la liberté de choisir le méridien central de la carte, disons, que cela correspond à la latitude \(\lambda_0\) . Si le résultat final de la projection est le tuple $\((x,y)\), il est évident que \(x = \lambda - \lambda_0\), comme pour toute projection cylindrique (R=1). Avec la coordonnée verticale, c'est un peu plus complexe.

La formule \(y = R\cdot\tan(\varphi)\) ne fait pas les loxodromies droites, et ne préserve pas des angles. Les vraies formules sont ci-dessous.

\(y = \log\, \tan(\frac{1}{4} \pi + \frac{\varphi}{2}) = \frac{1}{2} \log \frac{\displaystyle 1+\sin(\varphi)}{\displaystyle 1-\sin(\varphi)}\)
\(\, = \sinh^{-1}(\tan(\varphi)) = \tanh^{-1}(\sin(\varphi)) = \log(\tan(\varphi) + \sec(\varphi))\)

(Plusieurs variantes équivalentes peuvent être utilisées). On peut continuer l'exercice de traçage en implémentant cette transformation, ainsi que son inverse, afin de transformer l'image de la Terre en format plate carrée.

D'où viennent ces formules? Nous savons déjà que quand on s'éloigne de l'équateur, la distorsion (agrandissement) verticale s'accentue. Il faut donc que la carte subisse l'agrandissement vertical correspondant, et les "formules de Cauchy géographiques" nous disent comment.

varphi} \cdot \cos(\varphi)\), et à gauche nous avons une constante, 1, et \(y\) évidemment ne dépend pas de \(\lambda\), alors \(y = \int{\frac{1}{\cos(\varphi)}d\varphi}\). Le calcul intégral nous donne \(\log\, \tan(\varphi/2)\), modulo les constantes d'intégration. Pour \(\varphi=0\) la valeur est \(y=0\).

Quand l'angle \(\varphi\) s'approche à 90 degrés, \(y\) s'enfuit vers l'infini, même si moins rapidement que \(\tan(\varphi)\), ce qui est évident, car l'échelle horizontale explose également. Ainsi la carte de Mercator est inutile dans les zones polaires, ce qui n'a pas dérangé le Flamand Gerhard Kremer vel Mercator, bien dans son XVIème siècle.

On peut aller facilement jusqu'à 85 degrés, ou un peu plus, et rendre la totalité de Groenland, mais cet exemple prouve que les projections cartographiques peuvent cacher plusieurs problèmes mathématiques et du rendu.

Les transformations Mercator inverses sont également simples, la projection est séparable.

\(\phi = 2 \tan^{-1}(e^y) -1/2 \pi = \tan^{-1}(\sinh y)\) ,
\(\lambda = x + \lambda_0\).

Nous verrons que les zones polaires peuvent être très bien rendu par l'UTM, le Mercator transversal, mais d'abord construisons quelques autres projections, connues de l'école, des livres de géographie, etc.

Si la distance horizontale pas loin des poles retrécit jusqu'à zéro, le modification verticale peut rester fini, donc l'"explosion" d'une carte conforme n'est aucune fatalite.

Le site de Carlos Furuti (Brésil) montre quelques autres, avec des images d'excellente qualité.

Projection sinusoïdale

On peut la considérer comme la plus simple parmi les projections "sérieuses". Les formules qui la définissent sont : \(y=\phi\,;\quad x=\lambda\cos(\phi)\). Le Jacobien de la transformation vaut


$$ \displaystyle{\frac{\partial x}{\partial \lambda}\cdot \frac{\partial y}{\partial \phi} - \frac{\partial x}{\partial \phi} \cdot \frac{\partial y}{\partial \lambda}} = \cos(\phi) $$

ce qui démontre l'équivalence de cette transformation. Les distorsions angulaires polaires sont importantes, l'angle total 360° est rétréci à 115°. (Exercice. Comment trouver ce nombre?).

Les transformations inverses sont évidentes : \(\phi=y\,; \quad \lambda = x/\cos(y)\). La gestion de la singularité aux pôles n'est pas difficile. De toute façon, cette expression \(0/0\) dans le contexte du mapping des images peut être résolue de manière arbitraire (toute la ligne sur la plate carrée a la même couleur).

La projection est connue sous le nom de Sanson-Flamsteed, mais un de premiers à l'avoir utilisé, c'est Jehan Cossin de Dieppe, autour de 1570.

Cette projection est un cas particulier (équatorial) de la projection équivalente de Bonne, présentée plus tard dans le texte. Elle est souvent un simple point de départ pour la présentation des projections discontinues (découpées), qui seront également brièvement présentées un peu plus tard.

Projection de Mollweide

Une autre projection équivalente, souvent présente dans les livres de géographie (elle est considérée plus esthétique que la sinusoïdale), cartes scolaires, etc., a été proposée par Karl Mollweide en 1805. (Jacques Babinet l'a popularisée en France sous le nom "homolographique").

Il n'y a pas de formule close pour cette projection. Introduisons un angle auxiliaire \(\theta\), défini par : \(2\theta + \sin(2\theta) = \pi \sin(\varphi)\). Notez que ceci est une équation pour \(\theta\), qui'il faut résoudre, non pas une définition directe. Seulement quand \(\varphi=\pm \pi/2\) on voit que \(\theta= \pm \pi/2\) également (le cas de zéro est également trivial). On peut utiliser plusieurs méthodes itératives pour résoudre cette équation, celle de Newton marche très bien. La solution de l'équation \(f(x)=0\), si on connaît une approximation \(x_0\), peut être obtenue par l'itération : \(x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\), jusqu'à la convergence. Ici :

$$ \theta_0 = \phi\,; \quad \theta_{n+1} = \theta_n -\displaystyle{\frac{2\theta_n + \sin(2\theta_n) - \pi \sin(\phi)} {2 + 2 \cos(2\theta_n)}}\,. $$
(mieux : \(\theta_0 = \arcsin(2\phi/\pi)\) ; 5 - 6 itérations suffisent). Avec \(\theta\), la projection est : $$ x = \frac{2\sqrt{2}}{\pi} \lambda \cos(\theta)\,; \quad y = \sqrt{2} \sin(\theta)\,. $$ Les paramètres numériques (échelle) viennent uniquement de l'équivalence de la projection, et de la volonté de Mollweide d'avoir une "jolie" ellipse, approximativement deux fois plus large que haute.

Pour la transformation des images, pixel par pixel, des itérations comme ça ralentisseraient le processus considérablement, mais ici la transformation inverse est – comme on le voit – donnée directement :

$$ \theta = \arcsin(y/\sqrt{2})\,; \quad \phi=\arcsin((2\theta+\sin(2\theta))/\pi)\,; \quad \lambda = \displaystyle{\frac{\pi x}{2\sqrt{2} \cos(\theta)}}\,. $$
Il y a 200 ans la connaissance de la géometrie et de méthodes numériques était assez bonne, mais imaginez le travail manuel nécessaire pour tracer une carte avec une précision suffisante ! Remarque générale. Les images et les formules utilisent un répère particulier, le méridian central de la carte est \(\lambda=0\), et verticalement les cartes sont centrées sur l'équateur. Pour les projections (pseudo)cylindriques, le choix d'un autre méridien est trivial, il suffit de translater horizontalement/cycliquement les données ou les images. Verticalement ceci est plus délicat et complique les formules, mais parfois c'est une bonne option : on peut ainsi déplacer les singularités sur des zones moins intéressantes, et rendre mieux les zones polaires.

Exercice. Effectuer une rotation des données standard ("plate carrée") autour de l'axe \(y\), perpendiculaire au méridien zéro sur l'équateur. Regardez l'applet sur la section précédente afin de voir la distorsion de la graticule. Voici un échantillon.

Mercator Transverse ; UTM

La Transverse Mercator (connue en Allemagne comme Gauss-Krüger), est une projection cylin­drique conforme importante. Le cylindre de projection est "horizontal", tangent à un méridien, les distorsions augmentent horizontale­ment, et la projection globale, est inadaptée aux cartes mondiales.

L'UTM ("Universelle") développé par le Corps des Ingénieurs de l'armée des États­Unis, ajoute des précisions à Mercator. Dans plusieurs pays elle est officielle. UTM constitue un système de coordonnées \((E,N)\), utilisé pour le géo-réferencement, comme alterna­tive à \((\lambda,\varphi)\).

Le schéma officiel découpe la surface en 60 zones verticales de 6 degrés (parfois modifiées), et considère que les zones polaires, au dessus de 85° restent dehors du système (même si on a éliminé les vraies singularités de projection).

Les formules de Mercator transversal sont basées sur le Mercator d'origine, adaptées. Nous présentons des formules simplifiées, uniquement pour référence. Les vraies, elliptiques, utilisent les excentricités et sont peu lisibles. Cherchez le Web... Ci-dessous le facteur de correction d'échelle \(k_0\) est très proche de 1, et le facteur d'échelle global \(a\) est quelconque.

$$ x = \frac{1}{2}k_0 a \log\left(\displaystyle{\frac{1+\sin\lambda \cos\phi} {1-\sin\lambda\cos\phi}}\right)\,; \quad y = k_0 a \arctan(\tan\phi \sec\lambda)\,. $$

Et les inverses :

$$ \lambda = \arctan\left(\sinh\displaystyle{\frac{x}{k_0 a}} \sec\displaystyle{\frac{y}{k_0 a}}\right)\,; \quad \phi = \arcsin\left(\mathrm{sech}\displaystyle{\frac{x}{k_0 a}} \sin\displaystyle{\frac{y}{k_0 a}}\right)\,. $$

La construction des coordonnées \((E,N)\) est basée sur le développement de cela. Les formules sont longues et dépassent le cadre de ce cours. Mais elles ont la précision meilleure qu'un centimètre !