User Tools

Site Tools


in204:cpp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
in204:cpp [2020/05/25 10:43]
bmonsuez [Rendre l'interpolation générique]
in204:cpp [2024/07/10 07:26] (current)
bmonsuez [Installation d'une bibliothèque]
Line 4: Line 4:
  
  
-===== Bibliothèqe ​de manipulation d'​images =====+===== Bibliothèque ​de manipulation d'​images =====
  
 Pour lire et écrire des images, nous vous proposons d'​utiliser une bibliothèque pour accéder aux images de types .png et .jpeg. Pour lire et écrire des images, nous vous proposons d'​utiliser une bibliothèque pour accéder aux images de types .png et .jpeg.
  
-==== Installation ​de la bibliothèque ====+Il est demandé ​de supporter au moins deux formats d'​image. Dans l'​absolu,​ il est souhaitable d'​avoir le format .bmp, le format .png ainsi que le format .jpeg. Un plus serait d'​avoir le format jpeg 2000.
  
-Pour ce faire, ​vous allez installer dans un premier temps sur votre environnement ​la bibliothèque http://www.cimg.eu/ qui vous permettra de lire et d'écrire ​des fichiers '​image'​ au format '.jpeg' et '​.png'​.+==== Installation d'une bibliothèque ==== 
 + 
 +Il vous est proposé d'​utiliser ​la bibliothèque ​**[[http://​cimg.eu|CImg]]**. Cette bibliothèque ​vous permettra de lire et écrire ​les fichier ainsi que de manipuler les images. 
 + 
 +Vous installerez la bibliothèque dans votre environnement.
  
 ==== Validation de l'​installation ==== ==== Validation de l'​installation ====
Line 75: Line 79:
 ===== Redimensionnement d'une image par interpolation bilinéaire ===== ===== Redimensionnement d'une image par interpolation bilinéaire =====
  
-La technique ​précédent ​est simple à mettre en oeuvre ​mais n'est pas très satisfaisante en terme de qualité de rendu, dès que le facteur d'​agrandissement est élevé. Nous nous intéressons donc à d'​autres techniques permettant de calculer la couleur du point $(x,y)$ qui est introduit lors de la fonction d'​agrandissement. Le schéma suivant montre les techniques d'​interpolation habituelles selon leur version en une dimension et leur extension à deux dimensions.+La technique ​précédente ​est simple à mettre en œuvre ​mais n'est pas très satisfaisante en terme de qualité de rendu, dès que le facteur d'​agrandissement est élevé. Nous nous intéressons donc à d'​autres techniques permettant de calculer la couleur du point $(x,y)$ qui est introduit lors de la fonction d'​agrandissement. Le schéma suivant montre les techniques d'​interpolation habituelles selon leur version en une dimension et leur extension à deux dimensions.
  
 {{:​in204:​comparison_of_1d_and_2d_interpolation.svg.png?​400|}} {{:​in204:​comparison_of_1d_and_2d_interpolation.svg.png?​400|}}
Line 83: Line 87:
  
 **Implanter une fonction qui effectue le redimensionnement de l'​image en appliquant une interpolation billinéaire. Tester cette fonction sur la même image et pour les mêmes facteurs que pour l'​interpolation par plus proche voisin.** **Implanter une fonction qui effectue le redimensionnement de l'​image en appliquant une interpolation billinéaire. Tester cette fonction sur la même image et pour les mêmes facteurs que pour l'​interpolation par plus proche voisin.**
- 
  
 ====== Rendre l'​interpolation générique ====== ====== Rendre l'​interpolation générique ======
 +
 +==== Phase 1 ====
  
 Dans les deux cas précédents,​ l'​interpolation dépend des valeurs des quatres voisins de l'​élément $(x^o, y^o)$ que sont les éléments $(x_i, y_j)$, $(x_{i+1}, y_i)$, $(x_i, y_{i, j+1})$, $(x_{i+1}, y_{j+1})$. La seule modification entre la technique d'​interpolation des plus proches voisins et l'​interpolation biliénaire est la fonction qui calcule la valeur de la couleur de l'​élément $(x^o, y^o)$ à partir des éléments $(x_i, y_j)$, $(x_{i+1}, y_i)$, $(x_i, y_{i, j+1})$, $(x_{i+1}, y_{j+1})$. Dans les deux cas précédents,​ l'​interpolation dépend des valeurs des quatres voisins de l'​élément $(x^o, y^o)$ que sont les éléments $(x_i, y_j)$, $(x_{i+1}, y_i)$, $(x_i, y_{i, j+1})$, $(x_{i+1}, y_{j+1})$. La seule modification entre la technique d'​interpolation des plus proches voisins et l'​interpolation biliénaire est la fonction qui calcule la valeur de la couleur de l'​élément $(x^o, y^o)$ à partir des éléments $(x_i, y_j)$, $(x_{i+1}, y_i)$, $(x_i, y_{i, j+1})$, $(x_{i+1}, y_{j+1})$.
Line 135: Line 140:
 ** Effectuer la transformation de votre code pour le mettre sous la forme d'une telle classe. ** ** Effectuer la transformation de votre code pour le mettre sous la forme d'une telle classe. **
  
 +==== Phase 2 ====
  
 +Comment généraliser cette approche à des fonctions plus complexes nécessitant non pas les quatres plus proches voisins mais par exemple une matrice 4x4 définis par $(x_{i-1}\ldots x_{i+2}, y_{i-1},​\ldots y_{i+2})$ pour notamment l'​interpolation cubique, sachant que $x_i, y_i$ est égal à $(\lfloor(x^o),​ \lfloor(y^o))$.
  
  
in204/cpp.1590403386.txt.gz · Last modified: 2020/05/25 10:43 by bmonsuez