Question 1: Analyse d’un programme existant
Analyser la partie de programme ci-dessous extraite de l'application td9_geometry.c construite sur le modèle de skelet.c .
Que calcule ce programme?
Ce programme effectue un zoom-out (avec perte) d'une image passée comme argument. La fonction est la suivante (0.5 est un moyen d'avoir un pseudo-arrondi):
Voici comment ce zoom-out est fait (pour chaque pixel de chaque ligne de chaque canal):
- La position du pixel (0,0) reste inchangée (il reste toujours en haut à gauche);
- pour les autres pixels, ils ne se retrouveront pas tous (fonction non-bijective) dans l'image transformée: par exemple, le pixel de l'image originale (1,1) ne sera pas présent (car 1*1.5 + 0.5 = 2);
- si un pixel ne rentre pas dans les dimensions de l'image (inférieur à 0 ou supérieur au nombre de lignes/colonnes), il sera remplacé par un pixel de background (0).
Enfin, l'image originale suivie de l'image transformée: