⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://usage.imagemagick.org/lens/index.html).

ImageMagick Examples -- Correction d'objectif

ImageMagick Examples : préface et index
Introduction à la correction d'objectif
Contrainte de non-mise à l'échelle
Jeux de paramètres prêts à l'emploi
Étalonnage à partir de zéro

Introduction à la correction d'objectif

Les objectifs fisheye et les objectifs grand-angle bon marché (ou plutôt les zooms réglés sur une courte focale) produisent typiquement une distorsion en barillet prononcée. Cette distorsion peut toutefois être corrigée en grande partie en appliquant des transformations algorithmiques adaptées à la photographie numérique. L'un des algorithmes de correction d'objectif les plus utilisés, introduit par Panorama Tools et employé par PTlens, est également proposé par ImageMagick sous la forme de la méthode de distorsion par correction en barillet (Barrel Correction Distortion Method). Dans cette approche du problème, la distorsion est contrôlée par quatre paramètres de transformation a, b, c, d, qu'il faut choisir judicieusement pour corriger la distorsion produite par un objectif donné (ou plutôt par un zoom réglé sur une certaine focale). Les valeurs adéquates de ces paramètres ne peuvent guère être trouvées par tâtonnement. Nous décrivons ci-après comment déterminer efficacement les paramètres de correction d'objectif de ce modèle à l'aide de Hugin, une interface graphique libre pour Panorama Tools, disponible pour divers systèmes d'exploitation. Si vous ne souhaitez pas entrer dans les détails de la correction d'objectif, vous pouvez sauter le reste de cette page et simplement acheter PTlens, qui offre une correction d'objectif sophistiquée pour un très grand nombre d'appareils photo numériques et d'objectifs à un prix raisonnable (grâce à sa vaste base de données d'objectifs). De nos jours, certains appareils photo numériques (comme le Nikon P7000) intègrent même la correction d'objectif dans leurs étapes internes de traitement d'image. Pour les photographies prises avec des appareils qui n'offrent pas cette possibilité, ImageMagick vous permet d'intégrer la correction d'objectif comme une étape d'un script de traitement d'image plus vaste. Le texte suivant est une version abrégée de l'article Correcting Lens Distortion (PDF) (traitant d'applications à la reconstruction d'accidents). Les explications données ici adoptent une approche plus concrète, centrée sur les moyens d'obtenir les paramètres de correction d'objectif adéquats.

Contrainte de non-mise à l'échelle

Comme décrit dans les distorsions en barillet, la distorsion en barillet est définie par la formule mathématique

  R = ( a * r^3  +  b * r^2  +  c * r  +  d ) * r

r est la distance au centre géométrique de l'image de la photographie numérique et R le rayon équivalent dans l'image d'origine. Comme toujours avec de telles applications, l'équation ci-dessus définit une sorte de « fonction de consultation des couleurs », c'est-à-dire où chercher la couleur du pixel situé au rayon r. Les rayons r et R sont normalisés par la moitié de la plus petite dimension de l'image (c'est-à-dire habituellement la hauteur de l'image), de sorte que r = R = 1 pour les milieux des bords supérieur et inférieur de l'image. Lors de la correction de photographies numériques, il convient de prêter attention à la contrainte de non-mise à l'échelle

  a + b + c + d = 1

qui donne évidemment R = 1 pour r = 1. Panorama Tools calcule le paramètre d à partir des autres paramètres via

  d = 1 - a - b - c

ce qui laisse trois paramètres de modèle libres, si bien que le paramètre d est typiquement omis. ImageMagick calcule automatiquement d par la contrainte de non-mise à l'échelle s'il est omis. Ainsi, une ligne de commande ImageMagick typique pour la correction d'objectif ressemblerait à quelque chose comme

  magick input.jpg -distort barrel '0.06335 -0.18432 -0.13008' output.jpg

en laissant le calcul de d à ImageMagick. La méthode de correction d'objectif de Panorama Tools dont nous parlons ici suppose que l'axe optique de l'objectif et le centre de l'image sont identiques, ce qui n'est pas strictement le cas en pratique (en raison des tolérances de fabrication). Par ailleurs, elle laisse de côté des effets tels que la distorsion en moustache (mustache distortion). Néanmoins, elle semble fonctionner avec une précision étonnante en pratique. [Graph]Comme le montre la courbe (a = 0.05, b = -0.25, c = 0.05), la relation est typiquement utilisée dans la plage 0 à 1,5 (rapport d'aspect 3:2), passe par les points (0,0) et (1,1) et doit être dégressive pour r > 1.


Jeux de paramètres prêts à l'emploi

La base de données d'objectifs actuelle de PTlens, qui est la « moelle » du programme, est chiffrée et ne peut être lue que par PTlens lui-même. Jusqu'en février 2006, cependant, la base de données de PTlens était codée au format XML, c'est-à-dire un format texte facilement modifiable. Cette version 2006 de la base de données XML de PTlens est toujours disponible (légalement) sur le site SourceForge de Hugin et fournit des données pour de nombreux modèles d'appareils anciens. Lorsque la base de données de PTlens est devenue chiffrée, les auteurs de Hugin ont tenté d'établir une base de données d'objectifs libre codée en XML comme solution de remplacement. Cette base de données s'appelle LensFun et peut être téléchargée. Elle est fournie avec une interface de programmation complète, mais tout ce dont vous avez fondamentalement besoin, c'est de l'information relative à votre appareil dans le fichier XML. À titre d'exemple, les paramètres de correction d'objectif du Nikon Coolpix 995, autrefois populaire, se trouvent dans le fichier compact-nikon.xml, situé dans le répertoire \data\db. Le fichier peut être examiné à l'aide d'un éditeur de texte ou d'une visionneuse XML :

  <lens>
    <maker>Nikon</maker>
    <model>Standard</model>
    <mount>nikon995</mount>
    <cropfactor>4.843</cropfactor>
    <calibration>
      <distortion model="ptlens" focal="8.2" a="0" b="-0.019966" c="0" />
      <distortion model="ptlens" focal="10.1" a="0" b="-0.010931" c="0" />
      <distortion model="ptlens" focal="13.6" a="0" b="-0.002049" c="0" />
      <distortion model="ptlens" focal="18.4" a="0" b="0.003845" c="0" />
      <distortion model="ptlens" focal="23.4" a="0" b="0.006884" c="0" />
      <distortion model="ptlens" focal="28.3" a="0" b="0.008666" c="0" />
      <distortion model="ptlens" focal="31" a="0" b="0.009298" c="0" />
    </calibration>
  </lens>

Comme on peut le lire sur la fiche technique de l'appareil, la plage de zoom du Nikon Coolpix 995 est de 8,2 – 31,0 mm, correspondant à 38 – 152 mm pour les appareils argentiques 35 mm. Cela donne un facteur de recadrage de 152 / 31 = 4,90, ce qui correspond approximativement au 4,843 indiqué dans le fichier XML. Les coefficients de la correction par distorsion en barillet sont fournis pour six focales, à savoir 8,2 mm, 10,1 mm, 13,6 mm, 18,4 mm, 23,4 mm, 28,3 mm et 31,0 mm. Les coefficients a et c sont, pour cet objectif, fixés à zéro, c'est-à-dire que la distorsion est décrite uniquement par le terme du second ordre b. Notez que de nombreux objectifs auront aussi des valeurs pour les paramètres a et c, et celles-ci devraient également être interpolées de manière similaire. Si nous disposons d'une photographie DSCN0001.jpg prise avec un Nikon Coolpix 995 réglé sur la focale la plus courte, cette photographie pourrait être corrigée par ImageMagick via

   magick DSCN0001.jpg -distort barrel '0.0 -0.019966 0.0' DSCN0001_pt.jpg

(Le suffixe de nom de fichier _pt est utilisé par PTlens pour marquer les images corrigées.) Pour les six focales fournies, le coefficient de correction b peut être lu dans le fichier XML. Pour d'autres focales, la valeur adéquate peut être déterminée par interpolation entre les deux focales voisines. En variante, la dépendance de b vis-à-vis de la focale f peut être approchée par le polynôme

  b = 0.000005142 * f^3 - 0.000380839 * f^2 + 0.009606325 * f - 0.075316854

Ainsi, la focale (lue dans les informations EXIF) est utilisée pour calculer le paramètre de correction d'objectif b dans une première étape, puis, dans une seconde étape, la correction d'objectif (c'est-à-dire la distorsion en barillet) est réalisée en utilisant cette valeur comme paramètre b. La section Windows présente un exemple VBScript dans lequel les équations ci-dessus sont utilisées, la focale étant extraite d'une photographie du Nikon Coolpix 995 via magick identify.


Étalonnage à partir de zéro

Approche de base

Pour déterminer les paramètres d'objectif, tous les programmes s'appuient sur le même paradigme : l'application de perspective idéale doit faire correspondre les lignes droites du monde réel à des lignes droites dans l'image. Ainsi, si l'on sait qu'un ensemble de points du monde réel P0, P1, ..., Pn se trouve sur une ligne droite, leurs images p0, p1, ..., pn doivent elles aussi tomber sur une ligne droite. Tout écart par rapport à cette règle doit être attribué à la distorsion de l'objectif. Il faut deux points pour déterminer les deux paramètres définissant une ligne droite (par exemple la pente et l'intersection avec l'axe des y). Chaque point supplémentaire fourni apporte une équation de plus pour déterminer les paramètres de correction d'objectif. Ainsi, si notre approche fonctionnelle n'a qu'un seul paramètre libre b (comme pour le Nikon Coolpix 995 ci-dessus), il faudrait fournir au moins trois points sur une ligne droite du monde réel et son image afin de déterminer le paramètre de correction d'objectif b recherché. Plus concrètement : le modèle de distorsions n'utilise que le paramètre b, c'est-à-dire que les coordonnées de l'image corrigée X1, Y1 peuvent être calculées à partir des coordonnées de la photographie numérique par

r = s * sqrt(x1^2 + y1^2)
X1 = [(1-b) + b r^2] * x1
Y1 = [(1-b) + b r^2] * y1
Y1 = k1 * X1 + k2

Cela donne une équation pour chaque point fourni sur la même ligne droite

[(1-b) + b r^2] * y1 = k1 * [(1-b) + b r^2] * x1 + k2

with: r = s * sqrt(x1^2 + y1^2)

Ainsi, trois points du monde réel et leurs points image correspondants suffiraient à déterminer les paramètres décrivant la ligne droite et la distorsion de l'objectif k1, k2, b. En pratique, les coordonnées des points du monde réel sont rarement connues, si bien qu'il faut plus de trois points pour déterminer les paramètres recherchés. La plupart des logiciels d'étalonnage utilisent une grille rectangulaire de lignes droites (souvent un damier) pour générer un ensemble d'équations, puis calculent les paramètres de l'application par un ajustement non linéaire des moindres carrés. Certains programmes génèrent eux-mêmes l'ensemble des points de contrôle, souvent à l'aide de modèles prédéfinis ; d'autres programmes exigent que l'utilisateur sélectionne les points de contrôle sur l'image d'étalonnage.

Déterminer des jeux de paramètres d'objectif avec Hugin

Nous allons montrer ci-après comment déterminer un jeu de paramètres de correction d'objectif à l'aide de Hugin. Il existe aussi un « Simple Lens Calibration Tutorial » prêt à l'emploi sur le site de Hugin, mais au moment de la rédaction (2014), il semble trop simple pour fournir des paramètres fiables réutilisables ensuite pour une multitude de corrections. Tout d'abord, il faut se procurer une mire de test adéquate. Fondamentalement, un motif en damier d'environ 10 × 7 carrés, imprimé sur du ISO 216 A3 ou similaire, ferait l'affaire et est souvent utilisé. Les zooms bon marché (les objectifs dits varifocaux) devraient toutefois être réglés sur la mise au point à l'infini pendant l'étalonnage, car leur focale réelle peut différer largement de celle inscrite dans l'EXIF pour une mise au point rapprochée. Pour les objectifs à focale fixe, vous pouvez aussi utiliser une mire de test en damier, ce qui est particulièrement recommandé pour l'étalonnage d'un objectif fisheye, car il peut être difficile de trouver un objet du monde réel assez grand pour couvrir son champ de vision. Ainsi, en particulier pour l'étalonnage de zooms / d'appareils à zoom, il vaut mieux prendre en photo un bâtiment moderne, comme le propose le site de PTlens. Suivez les instructions qui y sont données. Les photographies peuvent présenter une distorsion de perspective :

[IM Output]
avec perspective | [IM Output]
sans perspective
---|---

Lancez Hugin, cliquez sur le bouton « Add images ... » dans le premier onglet et ouvrez l'image d'étalonnage. (Voir hugin.sourceforge.net pour une capture d'écran de l'interface de Hugin.) En bas de l'onglet, réglez « Optimise » sur « Custom parameters » (ce qui ajoutera un nouvel onglet nommé « Optimiser », que vous ne verriez pas autrement). Dans l'onglet « Stitcher », réglez « Projection » sur « Rectilinear ». Dans l'onglet « Control Points », vous voyez votre photographie de test deux fois et vous pouvez définir des ensembles de points situés sur la même ligne droite en désignant ces groupes de points dans les deux versions de la photographie.

Mais ne choisissez pas exactement les mêmes points dans les deux versions, de sorte que les points soient identiques dans les deux images, car cela induirait l'optimiseur à prendre la voie facile et à déterminer les paramètres d'une correspondance un pour un. Choisissez plutôt des points différents sur la même ligne dans les deux versions de l'image. À des fins de test, vous pouvez définir quelques-uns de ces ensembles de points, de préférence près des bords de l'image, là où les lignes droites sont plus déformées. Vous constaterez que définir de tels ensembles de points dans Hugin est une tâche assez fastidieuse (ce qui pourrait être l'une des raisons pour lesquelles la base de données lensfun est si réduite).

Passez ensuite à l'onglet « Optimiser » et choisissez les paramètres à optimiser en cliquant dessus avec le bouton gauche tout en maintenant la touche ctrl enfoncée. (Voir l'indication en haut de l'onglet.) Je recommanderais d'optimiser « Yaw(y) », « Pitch (p) » et les paramètres d'objectif « a », « b » et « c ». Le champ de vision horizontal « Hfov (f) » est calculé à partir des données EXIF de l'image de test, en utilisant l'entrée FocalLengthIn35mmFilm f :

 Hfov = 2 × arctan (18 mm / f)

18 mm étant la moitié de la largeur d'un négatif 35 mm (qui mesure 36 × 24 mm). Appuyez ensuite sur le bouton « Optimize now! ». Les paramètres « a », « b » et « c » obtenus devraient tomber en dessous de 0,01 pour les objectifs grand-angle et en dessous de 0,1 pour les objectifs fisheye. Si les valeurs sont plus grandes, l'optimisation a probablement échoué. Le cas échéant, vérifiez les ensembles de points dans l'onglet « Control Points » : les points de contrôle sont probablement dans le désordre ou pas correctement associés à leurs lignes correspondantes. L'optimiseur semble aussi sensible à l'ensemble de départ fourni (mathématiquement parlant : le vecteur de départ), c'est-à-dire que mettre tous les paramètres à zéro pourrait être un mauvais choix. Vous pouvez modifier le vecteur de départ soit en double-cliquant sur les valeurs dans l'onglet « Optimiser », soit en activant la case à cocher « Edit script before optimising » en bas à droite de la page de l'onglet. Cela fera apparaître une zone de texte avant l'optimisation, qui vous permettra de modifier la section correspondante du fichier de projet Hugin. Remettez le vecteur de départ a, b, c à a0.0 b0.0 c0.0 (ou à d'autres valeurs adéquates) avant de relancer l'optimiseur. L'expérience montre qu'il peut être utile de régler « a » sur une valeur positive, en particulier pour les objectifs fisheye. Pour un appareil équipé d'un objectif fixe, on effectue cet étalonnage une fois pour toutes. Pour un appareil à zoom, il faut couvrir toute la plage des focales en étalonnant à environ cinq focales différentes. Une fois un tel jeu de paramètres déterminé, testez-le dans ImageMagick via

  magick calibration_image.jpg -distort barrel '_a b c_ ' flat.jpg

en remplaçant les valeurs _a b c_ par celles que vous venez de déterminer. Les lignes de l'image de sortie devraient être parfaitement droites, faute de quoi l'optimisation a échoué et doit être refaite avec un vecteur de départ différent ou un ensemble de points de contrôle corrigé.

Définir des ensembles de points

Pour un étalonnage sérieux, il est recommandé de modifier manuellement le fichier de projet Hugin et de définir les coordonnées des points et les ensembles de points par d'autres moyens. Le fichier de projet est un fichier texte brut portant l'extension PTO ; vous pouvez l'ouvrir avec un simple éditeur de texte et fournir une liste de points. Une seule ligne de sa section # control points ressemble à ceci :

  c n0 N0 x175.0 y87.8 X1533.3 Y62.6 t3

x, y sont les coordonnées en pixels dans l'image source (image de gauche dans l'onglet) et X, Y les coordonnées en pixels dans l'image cible (image de droite dans l'onglet) – qui sont en réalité deux versions de la même image dans ce cas particulier. (Habituellement, il s'agirait de deux images différentes placées côte à côte dans un panorama.) L'en-tête c n0 N0 est un code standard et le suffixe t3 est la numérotation de la ligne droite associée, commençant à l'indice 3. Comme on peut le voir dans l'exemple ci-dessus, les coordonnées en pixels peuvent comporter des parties fractionnaires. Bien entendu, x, y et X, Y doivent se trouver sur la même ligne droite. Ils ne doivent toutefois pas être identiques, car l'optimiseur refuserait de fonctionner dans ce cas (voir ci-dessus). L'approche la plus simple pour garantir cela est d'utiliser les mêmes points dans les deux images, mais dans l'ordre inverse pour les coordonnées cibles ; par exemple, utilisez p1, p2, p3, p4 dans l'image de gauche et P4, P3, P2, P1 dans celle de droite. Déterminez les coordonnées en pixels dans l'image source à l'aide d'un outil de pointage. Vous pouvez utiliser n'importe quelle visionneuse d'images pour cela, en particulier une qui puisse enregistrer de telles données. Un outil indépendant de la plateforme pour cela serait Fiji. Pour ma part (travaillant sous Windows), j'ai utilisé des polylignes dans WinMorph. Vous devriez suivre une stratégie prédéfinie lors du pointage des points, par exemple choisir le même nombre de points sur chaque ligne (plus ou moins) horizontale, en allant de gauche à droite (c'est-à-dire suivre une ligne en zigzag sur toute l'image, comme le faisceau du canon à électrons dans un tube de télévision). Une telle stratégie simplifiera l'ordonnancement des coordonnées des points cibles. Les lignes du fichier texte définissant les coordonnées des points source et cible peuvent alors être établies soit manuellement, soit au moyen d'un outil logiciel. (J'utilise une sous-routine Excel VBA pour effectuer cette tâche.) Une fois prêt, copiez la liste de points dans la section correspondante du fichier PTO, enregistrez-le et rouvrez-le avec Hugin. Le résultat devrait ressembler à ceci :

[IM Output]
Grille de points de contrôle dans Hugin


Un exemple prêt à l'emploi, comprenant à la fois une image d'étalonnage et le projet Hugin correspondant, est fourni dans le fichier ZIP olympus_c2500l.zip. Reconstitution à partir de la miniature créée par l'appareilIl existe plusieurs cas où l'on dispose déjà d'une paire d'images, l'une déformée en barillet, l'autre déjà corrigée. Cette correction peut avoir été effectuée avec un autre logiciel de correction d'objectif, qui ne nous renseigne pas sur les paramètres de correction. En outre, beaucoup d'appareils photo contemporains (2019) proposent d'effectuer la correction d'objectif en interne pour les images JPEG. Cependant, cette fonctionnalité n'est habituellement pas appliquée aux images RAW. (Eh bien, c'est du brut.) Néanmoins, l'image RAW contient un aperçu JPEG auquel la correction a déjà été appliquée par l'appareil. ImageMagick peut lire les images RAW grâce à dcraw. On peut donc convertir avec magick l'image brute en JPEG sans correction d'objectif et comparer le résultat à la miniature JPEG corrigée en interne. Dans le cas d'une telle paire d'images, les paramètres de correction peuvent être calculés directement. En choisissant des paires de points correspondants dans les deux images, on peut établir directement la relation entre r et R. [RAW Image]
Image brute (déformée en barillet) [Corrected Image]
Miniature corrigée (à reconstituer) |
---|---
Comme le montre l'exemple ci-dessus, nous sommes libres de choisir les paires de points ; celles-ci n'ont ni à suivre des lignes droites ni même à se trouver sur des motifs géométriques. Il nous suffit de remplir un tableau avec les valeurs correspondantes de r et R, puis de calculer une courbe de régression, par exemple au moyen d'un diagramme de tableur.

[Calabration]
Points d'étalonnage | [Regression]
Régression (mise à l'échelle)
---|---

La ligne de commande ImageMagick est donc

  magick barrel.jpg -distort barrel '0.0099 -0.0678 0.0014 1.0511' flat.jpg

Vous pouvez également appliquer la même commande directement à l'image au format d'appareil DNG « barrel.dng ».


Exemples de correction d'objectif

Camp Mobile

[IM Output]
Original | [IM Output]
Corrigé | [IM Output]
Différence
---|---|---

La photographie originale du campmobile à gauche a dû être prise à une distance plutôt courte au crépuscule, l'espace étant limité par une pente raide à l'arrière du photographe. (Les mauvaises conditions d'éclairage expliquent la teinte bleue, qui provient d'un fort éclaircissement au post-traitement.) La photographie originale présente une distorsion en barillet prononcée, visible surtout dans la bande horizontale près du haut de l'image et pour l'angle arrière de la construction. Le Nikon Coolpix 995 utilisé pour cette prise de vue figure dans la base de données de PTlens, si bien que la distorsion a pu être corrigée sans peine, comme on le voit au centre. L'image de droite montre la différence entre les versions en niveaux de gris des deux photographies, calculée par soustraction des deux, suivie d'une négation, d'un écrêtage extrême et d'une correction gamma. Là encore, les effets de la correction sont le mieux illustrés par la bande horizontale en haut. Le cercle blanc (indiquant une différence nulle) résulte de la contrainte de non-mise à l'échelle : les points situés sur un cercle dont le diamètre est égal à la plus petite dimension de l'image restent inchangés.

Aplatissement GoPro

L'objectif de la caméra GoPro produit une distorsion en barillet prononcée, qui semble faire partie de son image de marque. Par exemple, la GoPro Hero 3+ silver edition possède un objectif fisheye à focale fixe de 2,77 mm, correspondant à une focale de 16 mm en film 35 mm, si toute la surface photosensible est utilisée. La GoPro Hero 3+ a trois modes photo :

  • 10 mégapixels = 3680 × 2760 pixels grand-angle (16 mm en film 35 mm)
  • 7 mégapixels = 3072 × 2304 pixels grand-angle (16 mm en film 35 mm)
  • 5 mégapixels = 2624 × 1968 pixels angle moyen (23 mm en film 35 mm)

La GoPro Hero 3+ est équipée d'un capteur 1/2,3", dont le facteur de recadrage est de 5,64. (Ce qui donne une focale de seulement 15,62 mm en film 35 mm, les 16 mm fournis par les informations EXIF étant probablement dus à un arrondi.) Les deux premiers modes semblent utiliser toute la surface photosensible ; la résolution réduite étant manifestement obtenue par sous-échantillonnage. Les paramètres de distorsion sont donc les mêmes, comme on peut le prouver en pratique. Le mode 5 mégapixels n'utilise manifestement qu'une partie de la surface photosensible, puisque 3680 / 2624 × 16 ≈ 23. Les paramètres d'objectif peuvent être déterminés comme suit

  • grand-angle :
    • a = 0.06335
    • b = -0.18432
    • c = -0.13009
  • angle moyen :
    • a = 0.01359
    • b = -0.06034
    • c = -0.10618

En théorie, les paramètres du second mode peuvent être dérivés du premier, car les rayons ri et Ri sont liés par le facteur d'échelle κ = 3680 / 2624 = 1,402, ce qui conduit à :

  • a2 = a1 / κ³
  • b2 = b1 / κ²
  • c2 = c1 / κ

Les paramètres ci-dessus, issus d'une optimisation indépendante, ne diffèrent pas beaucoup de ces valeurs théoriques. De la même manière, les paramètres des différents modes vidéo peuvent être dérivés soit par optimisation, soit à partir de la portion de surface du capteur utilisée par ce mode. Pour la vidéo, le champ de vision horizontal ne peut pas être dérivé des données EXIF. Il peut être calculé à partir de la surface photosensible utilisée, déterminé à partir de la vidéo elle-même (en filmant dans des conditions contrôlées) ou simplement estimé conjointement avec les autres paramètres, c'est-à-dire laissé comme paramètre libre dans l'optimisation. Les paramètres pour la vidéo HD (1920 × 1080) sont : * a = 0.030530 * b = -0.124312 * c = -0.038543

Ces paramètres peuvent servir à une correction image par image avec ImageMagick. En variante, ils peuvent être utilisés pour « aplatir » toute la vidéo grâce au greffon DeBarrel d'AVIsynth, qui utilise lui aussi le modèle de correction d'objectif de Panorama Tools.

Deux claviers par el_supremo

La photo que j'ai prise de mes deux claviers présente une distorsion en barillet très évidente, car elle a été prise à une focale de 17 mm.

[IM Output]

Ce type de distorsion peut être corrigé avec, par exemple, Digital Photo Professional de Canon (je possède un appareil Canon 50D). D'autres fabricants d'appareils reflex fournissent habituellement des logiciels pour effectuer ce type de correction pour leurs objectifs, mais je voulais voir dans quelle mesure les exemples ci-dessus fonctionneraient sur cette photo. La première étape consiste à se rendre sur le site de LensFun et à télécharger la dernière version de leur base de données d'appareils. Décompressez le paquet (winzip peut décompresser un fichier .tar.gz sous Windows), puis, dans le répertoire « lensfun/data/db », cherchez le fichier qui correspond au fabricant de votre appareil. Dans mon cas, j'ai regardé « slr-canon.xml », qui peut être modifié avec n'importe quel éditeur de texte. Je trouve alors les informations relatives à l'objectif précis que j'utilise, en l'occurrence un « EF-S 17-85mm ». Les informations de cet objectif se présentent ainsi :

<lens>
  <maker>Canon</maker>
  <model>Canon EF-S 17-85mm f/4-5.6 IS USM</model>
  <mount>Canon EF-S</mount>
  <cropfactor>1.6</cropfactor>
  <calibration>
    <distortion model="ptlens" focal="17" a="0.021181" b="-0.055581" c="0" />
    <distortion model="ptlens" focal="20" a="0.019344" b="-0.043786" c="0" />
    <distortion model="ptlens" focal="22" a="0.015491" b="-0.026682" c="0" />
    <distortion model="ptlens" focal="28" a="0.008084" b="-0.007472" c="0" />
    <distortion model="ptlens" focal="30" a="0.005522" b="-0.001763" c="0" />
    <distortion model="ptlens" focal="35" a="0.003149" b="0.002207" c="0" />
    <distortion model="ptlens" focal="44" a="0" b="0.008269" c="0" />
    <distortion model="ptlens" focal="53" a="0" b="0.008792" c="0" />
    <distortion model="ptlens" focal="61" a="0" b="0.00738" c="0" />
    <distortion model="ptlens" focal="72" a="0" b="0.006226" c="0" />
    <distortion model="ptlens" focal="78" a="0" b="0.007095" c="0" />
    <distortion model="ptlens" focal="85" a="0" b="0.007288" c="0" />
  </calibration>
</lens>

Les entrées d'étalonnage donnent des valeurs de distorsion pour une plage de focales allant de 17 mm à 85 mm. Si la focale dont j'avais besoin se situait entre deux de ces valeurs, je pourrais soit choisir celle qui est la plus proche, soit interpoler les valeurs. Comme la photo que je corrige a été prise à 17 mm, il me faut les informations de la première ligne des informations d'étalonnage. Cela me donne les valeurs : a="0.021181" b="-0.055581" c="0" Ce sont les trois paramètres utilisés pour corriger la distorsion de l'objectif. Cependant, pour certaines versions plus anciennes d'IM, la correction de distorsion en barillet exige un quatrième paramètre d. Heureusement, il est facile de calculer la valeur de d à partir des trois autres à l'aide de cette formule simple : d = 1-a-b-c Cela signifie : d="1.0344". IM déterminera automatiquement la valeur de « d » si elle n'est pas fournie comme argument de distorsion, mais certaines versions plus anciennes d'IM ne le faisaient pas.
Cela donne la distorsion en barillet effective, pour corriger la distorsion de l'objectif…
    magick keyboards.jpg \
          -distort barrel "0.021181 -0.055581 0" \
          keyboards_ptlens.jpg

[IM Output]

| Bien entendu, vous ne devriez pas enregistrer au format JPEG avant d'avoir complètement terminé le traitement de votre image, en raison de la compression avec perte du JPEG.
---|---
Dans la photo originale, la distorsion est particulièrement évidente le long du bas du pupitre à musique et le long du clavier supérieur. Ces distorsions ont presque entièrement disparu dans la photo de sortie. Une comparaison visuelle de ce résultat avec celui obtenu à l'aide du logiciel de Canon montre un résultat pour l'essentiel identique. El-Supremo