====== Entrelacer deux images ====== * **Porteur(s) du projet** : Léa Hermann (DSAA2) - Damien MUTI (Prof. de Numérique) * **Date** : 03/2021 * **objectif** : Entrelacer deux images * **Contexte** : Macro projet * **Fichiers** : * **Liens** : ===== Algorithme ===== Considérons deux images I1 et I2, de même taille: I1 : {{ :wiki:tutoriels:processing:im1.png?400 |I1}} I2: {{ :wiki:tutoriels:processing:im2.png?400 |I2}} L'algorithme consiste dans un premier temps à découper chaque image en "nbEntrelacement""bandes" élémentaires. Ensuite, chaque bande élémentaire est affichée alternativement, dans leur ordre de découpage, dans une troisième image créée à cet effet : {{ :wiki:tutoriels:processing:image_entrelacee.jpg?800 |}} ===== Programme ===== Le code Processing est le suivant : {{ :wiki:tutoriels:processing:doubleimagefin.zip |}} PImage I1, I2, I3; int W, H; int nbEntrelacement = 10; // nombre de "bande" d'images entrelacées void setup() { size(1200, 1800); I1=loadImage("im1.png"); I2=loadImage("im2.png"); W=I1.width; H=I1.height; // entrelacement images I3=entrelacer(I1, I2, nbEntrelacement); } void draw() { //image(I1, 0, 0, W/2, H/2); //image(I2, 0, I1.height/2, W/2, H/2); image(I3, 0, 0, W, H/2); } PImage entrelacer(PImage I1, PImage I2, int N) {// I1 et I2, les deux images; N : nombre de bandes d'entrelacement // largeur et hauteur de l'image créée int W = min(I1.width, I2.width); int H = min(I1.height, I2.height); // création de l'image finale PImage I3 = createImage(2*W, H, RGB); // chargement des tableaux de pixels I1.loadPixels(); I2.loadPixels(); I3.loadPixels(); // taille des bandes int L = floor(W/N); // processus d'entremacement /* n : indice de la bande et L largeur de la bande pour n=3, indices de I3 pour la bande issue de I1 : de 6*L à 7*L-1, Idem pour I2 : de 7*L à 8*L-1 pour n=4, indices de I3 pour la bande issue de I1 : de 8*L à 9*L-1, Idem pour I2 : de 9*L à 10*L-1 ... pour n=k, indices de I3 pour la bande issue de I1 : de (2*k)*L à (2*k+1)*L-1, Idem pour I2 : de (2*k+1)*L à 2*(k+1)*L-1 */ for (int i=0; i