Distorsion optique et les paramètres a, b et c de Panorama Tools

Les utilisateurs d’outils basés sur Panorama Tools (PTGui, PTAssembler, Hugin, PTLens, et bien d’autres) ont certainement déjà vu passer les paramètres a, b et c. Cet article explique à quoi servent ces trois paramètres.

Avant de poursuivre l’article, vous pouvez parcourir l’article distorsion optique sur wikipedia.

Distorsion en barillet et coussinet

On distingue donc deux types de distorsion : la distorsion en barillet ou en coussinet.

Ci-dessous des images d’une grille de référence transformée sur PTGui avec des paramètres respectifs de b=0.02 et b=-0.02

Grille de départ

Grille déformée en coussinet avec b = 0.02 (pour corriger une distorsion en barillet)

Grille déformée en barillet avec b = – 0.02 (pour corriger une distorsion en coussinet)

En numérique, il est assez simple de corriger ce type d’aberration en agrandissant les bords de l’image pour une distorsion de type barillet, et en faisant l’opération inverse pour une distorsion en coussinet, tout cela en maintenant le centre de l’image tel quel. La question est de savoir à partir de quand le logiciel doit corriger la distorsion, et dans quelle proportion.

Les valeurs a, b et c représentent en fait le degré de la courbe à appliquer pour corriger la distorsion, selon la formule suivante :

Θsrc = a × Θ^4 + b × Θ^3 + c × Θ^2 + Θ

Θ allant de 0 à 1, 0 étant le centre de l’image et 1 le bord (je ne sais si la valeur 1 correspond à un bord dans les angles ou sur un des cotés ; si quelqu’un a des précisions, qu’il n’hésite pas !)

Le paramètre a effectue donc une correction polynomiale de degré 4, b de degré 3 et c de degré 2. Cela veut dire en d’autres termes que le paramètre a va permettre de corriger une aberration plus importante sur les bords que si on utilise le paramètre c.

Correction d’une image en coussinet

Un petit exemple avec a=0.01 et c=0.02

L’image avec les coins les plus arrondies a la valeur de 0.01 pour a. L’autre image a une valeur de 0.02 pour c.

Le centre a très peu bougé pour les deux images, en revanche on voit bien la divergence sur les bords. Le paramètre a corrige de façon beaucoup plus prononcée les bords.

Sur une courbe …

En regardant ce que ça donne à partir d’une courbe, voici ce qu’on obtient :

La courbe bleue a les valeurs suivantes : a = 0.1 et c = 0 et la courbe rouge a = 0 et c = 0.1. La courbe représente un polynôme de 0 à 1 avec :

f(x) = a x^4 + c x^2 + (1 - (a+c)) x

Si les deux courbes sont censés corriger une distorsion du type barillet, la courbe bleue…

Après réflexion, cette courbe ne montre pas grand chose. Ce qu’il faudrait faire, c’est montrer la dérivée de cette courbe, on verrait  clairement mieux l’évolution de la correction de la distorsion. Mais je n’ai pas de logiciel sous la main pour tracer une courbe de ce type facilement.

Remarques

Les valeurs a, b et c sont toujours petites, et proches de zéro. D’après mon expérience, les valeurs tournent souvent entre -0.1 et 0.1. Lorsqu’elles sont supérieures à 0.3, c’est généralement qu’il y a un problème de stitching, ou que l’optique a de sérieux problèmes de distorsion.

En pratique, on utilise soit la valeur b seule, les deux autres restant à zéro, soit les trois valeurs. En fait cela dépend surtout de l’optique, certaines ont une grosse distorsion, alors que d’autres ont une distorsion relativement faible.

Distorsion en moustache

Certaines optiques combinent les distorsions en barillet et coussinet. On dit alors qu’elles ont une distorsion en moustache. Comment est-ce possible de combiner ces deux distorsions alors qu’elles sont à priori contraire ?

En fait, la distorsion évolue au fur et à mesure que l’on s’écarte du centre. Typiquement, au départ la distorsion est de forme coussinet, et elle se transforme en barillet en approchant les bords. C’est très courant sur les trés grand angles rectilinéaires, les 14mm par exemple.

La distorsion vient du fait que, pour avoir un angle de champ important tout en restant dans une perspective linéaire, les opticiens doivent utiliser un nombre important de lentilles – pour corriger les aberrations latérales également – et cela créé une distorsion assez difficile à corriger pour un logiciel d’assemblage.

Un 14mm Canon a 14 lentilles en 10 groupes par exemple alors qu’un 50mm 1.8 a seulement 7 éléments optiques en 6 groupes.

Cela peut paraitre surprenant au premier abord, car les distorsion parait maitrisée : à l’œil, elle semble contrôlée, mais en fait, elle est très relativement complexe.

PTGui

Pour information, dans l’optimizer de PTGui il y a un réglage Minimize Lens distorsion, avec quatre options :

L’option Médium n’utilise que la valeur b, les valeurs a et c restent à 0. L’option Heavy quant a elle intervient sur les valeurs a, b et c, alors que l’option Heavy + lens shift utilise les valeurs a, b, c, d et e (mais nous verrons à quoi servent d et e dans un autre article ;-) )

Pour aller plus loin

Plus d’informations sur la distorsion optique, en particulier avec les fisheyes, sur les site de Michel Thoby et de Bob Atkins.

Un commentaire

  1. thomas : site

    Bonjour
    sur les legends grilles coussinet et barillet y aurait il une inversion?
    cordialement

    15 décembre 2013 à 12:39