L'Antre du BuD
IMAC3
Outils pour la Réalité Virtuelle: TD4
Une méthode simple de correction de la distorsion radiale

Sommaire

Introduction

L'erreur est humaine parait-il. Elle se retrouve donc dans les outils que l'homme construit. Dans le cas qui nous intéresse dans ce TP, l'erreur est optique et se produit à chaque fois qu'on fait l'acquisition d'une image que ce soit avec un appareil photo ou une caméra vidéo. Cette erreur s'appelle la distorsion radiale et est propre à chaque appareil de capture d'image. Elle est visible surtout sur les bords de l'image, c'est-à-dire sur les parties de l'image où le modèle de lentille mince commence à montrer ses limites. La figure 1 montre un exemple de distorsion radiale sur une grille régulière.

figure 1

Figure 1. Distorsion radiale d'une grille régulière

Diantre!, vous direz-vous1, en quoi est-ce important? Et si ça l'est vraiment que peut-on bien y faire? Pour répondre à la première question, il suffit de considérer l'exemple suivant: on prend une photo de la figure 2 qui représente un certains nombre d'ensembles de points alignés. A cause de la distorsion radiale, la photo prise ressemblerait à la figure 3.

figure 2

Figure 2. La mire

figure 3

Figure 3. Ce à quoi pourrait ressembler une photo de la mire

En fait il s'avère impératif de tenir compte de la distortion radiale lorsque l'on cherche à résoudre un certain nombre de problèmes dont entre autres:

Pour corriger ce problème, on propose d'implanter dans ce td une méthode très simple même si elle n'est peut-être pas physiquement correcte. Cette méthode consiste à, dans un premier temps, prendre une image d'une mire telle que celle de la figure 1. On écrira ensuite un programme permettant de superposer cette image à une mire virtuelle et permettant de manipuler la mire virtuelle de façon à faire correspondre chaque point de la mire à un point de l'image.

Maillage, mon beau maillage

Question 1. Ecrire un programme prenant en paramètre le nom d'un fichier image et permettant de charger et d'afficher cette image.

Question 2. Ajouter une grille régulière à votre affichage. Définir le pas de cette grille devra être la première action à réaliser lorsque le programme sera lancé. Pour se faire, vous demanderez la sélection de deux sommets opposés d'un des carreaux du centre de l'image. Le premier ce ces points sera appelé point origine.

Question 3. Donnez la possibilité de déplacer, à la souris, les sommets de votre grille de façon à pouvoir les positionner au dessus des points correspondants de l'image affichée.

Question 4. Permettre la sauvegarde du pas de grille (en x ET en en y), des coordonnées du point origine et des coordonnées normalisées des sommets de la grille. Normalisées?, demanderez-vous. Cela signifie simplement que vous les aurez divisées par la largeur de l'image en abscisses et par sa hauteur en ordonnées.

Question 5. Appliquez votre programme sur cette image.

Let's corriger la distorsion radiale

C'est bien joli que d'avoir un fichier de points, mais qu'est-ce que j'en fais, moi, maintenant, mon bon monsieur?, pensez vous sans doute. Et bien figurez vous, que si l'on considère un maillage carré du pas sauvegardé dans votre fichier, on peut utiliser les coordonnées normalisées obtenues par le programme précédent comme autant de coordonnées de texture!

Question 1. Ecrivez un programme prenant en paramètre le nom d'un fichier vidéo et permettant de l'afficher.

Question 2. Modifiez le programme précédent pour permettre l'affichage de la vidéo sur une surface rectangulaire subdivisée en carreaux et en utilisant les coordonnées de textures dont vous disposez.


1. Enfin peut-être pas Diantre! mais vous voyez l'idée. Fichtre! peut-être.