Astrid-lati vor 8 Monaten
Ursprung
Commit
b802bb539b
1 geänderte Dateien mit 43 neuen und 16 gelöschten Zeilen
  1. 43 16
      main.py

+ 43 - 16
main.py

@@ -1,6 +1,6 @@
 from PIL import Image
 from numpy import asarray, ndarray, array, uint8, delete
-import random
+from random import choice
 
 # image = Image.open("images/hibou.jpg")
 
@@ -52,8 +52,13 @@ def tab_image_blanche(longueur: int, hauteur: int) -> ndarray:
     # On crée autant de lignes que de pixels de hauteur, et autant de pixels que de hauteur
     tab = [ [255] * longueur] * hauteur
     return array(tab)
-
-
+    
+def tab_image_noir(longueur: int, hauteur: int) -> ndarray:
+    """Génère un tableau contenant des pixels blancs avec les dimensions données"""
+    # On crée autant de lignes que de pixels de hauteur, et autant de pixels que de hauteur
+    tab = [ [0] * longueur] * hauteur
+    return array(tab)
+    
 def get_longueur_img(tab_img: ndarray) -> int:
     """Renvoie la longueur du tableau à deux dimensions (représentant une image) donné"""
     return len(tab_img[0])
@@ -92,6 +97,7 @@ def visible(clou1: tuple, clou2: tuple) -> bool:
     return clou1[2] != clou2[2]
     
 def clou_choisi_al(liste_clous : list) -> tuple:
+    """On choisie un clou aléatoirement"""
     return random.choice(liste_clous)
 
 def tracer_droite(clou1: tuple, clou2: tuple, image: list) -> list:
@@ -102,29 +108,49 @@ def tracer_droite(clou1: tuple, clou2: tuple, image: list) -> list:
         
         pass
 
-def zone(image) -> list:
-    lst =[]
-    lst_coor_angle_zone=[]
+def lst_zone(image) -> list:
+    """Renvoie une liste avec les coordonées de chaques zones"""
+    lst = []
     hauteur = get_hauteur_img(image)
-    longeur = get_longueur_img(image)
-    pass
-
-def erreur_moyenne_zone(image1, image2, zone):
-    
-    pass
+    longueur = get_longueur_img(image)
+    pas = 10
+    for i in range(0,longueur,pas):
+        for j in range(0,hauteur, pas):
+            lst += [(i,j)] #prends les coordonnées du pixel en haut à gauche de chaque zone
+    return lst  
+
+def erreur_moyenne_zone(image1, image2, zone : tuple, longueur : int)  -> float:
+    """Renvoie l'erreur moyenne pour une zone"""
+    haut = get_hauteur_img(image1)
+    long = get_longueur_img(image1)
+    coo1 = zone[0]
+    coo2 = zone[1]
+    pix1 = image1[coo1][coo2]
+    pix2 = image2[coo1][coo2]
+    diff = abs(pix1 - pix2)
+    for i in range(coo1, coo1+longueur):
+        for j in range(coo2, coo2+longueur):
+            if i != 0 and j != 0:
+                if i > long and j > haut:
+                    pix1 = image1[i][j]
+                    pix2 = image2[i][j]
+                    diff += abs(pix1 - pix2)
+    return (diff / (longueur * longueur *255)) * 100
 
 def erreur(image1, image2, zones : list) -> float:
+    """Renvoie l'erreur moyenne entre les deux images"""
     moy = 0
     for i in range(len(zones)):
-        moy += erreur_moyenne_zone(image1, image2,zone[i])
-    return moy
-    pass
+        moy += erreur_moyenne_zone(image1, image2,zones[i])
+    return moy/len(zones)
 
 image = import_image("images/hibou.jpg")
 print(image)
 
 image_blanche = tab_image_blanche(get_longueur_img(image), get_hauteur_img(image))
 
+image_noir = tab_image_noir(get_longueur_img(image), get_hauteur_img(image))
+
 print(image_blanche)
 
 img = Image.fromarray(uint8(image_blanche))
@@ -148,7 +174,8 @@ for i in range(0, len(c)):
 im_test = Image.fromarray(uint8(test))
 im_test.show()
 
-
+l_zones = lst_zone(image)
+print(erreur_moyenne_zone(image, image_blanche,l_zones[500],10))
 ### TODO ###
 
 # On peut essayer de regarder des clous aléatoire plutôt que de tout tester