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.
# parcours de colonnes
for x in range(C):
# parcours des lignes
for y in range(L):
# création des listes qui contiennent les composantes R,V,B des pixels
P1=img1.getpixel((x,y))
P2=img2.getpixel((x,y))
# affectation des variables de stockage des composantes
R1=P1[0]
R2=P2[0]
V1=P1[1]
V2=P2[1]
B1=P1[2]
B2=P2[2]
# calcul de la liste contenant les composantes R,V,B, d'un pixel de la nouvelle image
P=(int((R1 + R2)/2),int((V1 + V2)/2),int((B1 + B2)/2))
# stockage de la valeur de composantes du pixel dans l'image
new_img.putpixel((x,y),P)
new_img.save("NewResultat.jpg")
affichage=Image.open("NewResultat.jpg")
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.