Etape 4 - superposition des images

L'objectif de cette partie de code est de générer l'image nouvelle à partir des valeurs des pixels des images 1 et 2.

Pour cela, les valeur RougeVertBleu (RVB) de chaque pixel de la nouvelle image doivent être calculés à partir des valeurs RVB de chaque pixels des images sources.

Ainsi, pour chaque pixel de chacune des images sources, le programme va calculer :

  • la valeur moyenne de R1 de l'image 1 et de R2 de l'image 2, qui donnera la valeur R du pixel de la nouvelle image,

  • la valeur moyenne de V1 de l'image 1 et de V2 de l'image 2, qui donnera la valeur V du pixel de la nouvelle image,

  • la valeur moyenne de B1 de l'image 1 et de B2 de l'image 2, qui donnera la valeur B du pixel de la nouvelle image.

Pour effectuer ces calculs, on parcourt les Pixels P1 et P2 des images 1 et 2 de départ colonne par colonne (de la colonne n°0 à la colonne n°(c-1)) en traitant chaque ligne de la ligne n°0 à la ligne n°(l-1).

Chaque Pixel est repéré par ses coordonnées (x,y) et sera défini sous la forme P1(R1,V1,B1) pour l'image 1 et P2(R2,V2,B2) pour l'image 2.

Ce calcul repose sur l'utilisation de 2 boucles range :

  • une boucle range pour définir les coordonnées X qui correspondent aux colonnes,

  • une boucle range pour définir les coordonnées Y qui correspondent aux lignes.

Pour chaque couple de Pixels P1 et P2, la valeur RVB du pixel P, notée P(R,V,B), de la nouvelle image sont calculées à partir de la moyenne de chacun des composantes des pixels P1(R1,V1,B1) et P2(R2,V2,B2). Les composantes du pixel P sont alors :

P( R , V , B ) = P( (R1+R2)/2 , (V1+V2)/2 , (B1+B2)/2).

Les pixels sont ensuite rangés pour construire la nouvelle image.

Dans le fichier module5.py , ajouter les lignes ci-dessous.

1
# parcours de colonnes
2
for x in range(C):
3
    # parcours des lignes
4
    for y in range(L):
5
        # création des listes qui contiennent les composantes R,V,B des pixels
6
        P1=img1.getpixel((x,y))
7
        P2=img2.getpixel((x,y))
8
        # affectation des variables de stockage des composantes
9
        R1=P1[0]
10
        R2=P2[0]
11
        V1=P1[1]
12
        V2=P2[1]
13
        B1=P1[2]
14
        B2=P2[2]
15
        # calcul de la liste contenant les composantes R,V,B, d'un pixel de la nouvelle image
16
        P=(int((R1 + R2)/2),int((V1 + V2)/2),int((B1 + B2)/2))
17
        # stockage de la valeur de composantes du pixel dans l'image
18
        new_img.putpixel((x,y),P)
19
new_img.save("NewResultat.jpg")
20
affichage=Image.open("NewResultat.jpg")
21
affichage.show()

Sur le DR :

  • Donner le nom de la variable qui contient le niveau de la composante Bleu de l'image 1.

  • Donner le nom de la variable qui contient le niveau de la composante Vert de l'image 2.

  • Donner le nom de la variable qui permet d'afficher la nouvelle image.

  • Tester le programme, observer le résultat et valider le bon fonctionnement.

Sur le DR :

  • Valider le fonctionnement du programme en commentant le résultat obtenu.