Untitled
unknown
plain_text
10 months ago
3.8 kB
2
Indexable
Never
import numpy as np import matplotlib.pyplot as plt from PIL import Image def zlicz_roznice_srednia_RGB(obraz, wsp): t_obraz = np.asarray(obraz) h, w, d = t_obraz.shape zlicz = 0 for i in range(h): for j in range(w): if np.mean(t_obraz[i, j, :]) > wsp: zlicz = zlicz + 1 procent = zlicz / (h * w) return zlicz, procent def zlicz_roznice_suma_RGB(obraz, wsp): t_obraz = np.asarray(obraz) h, w, d = t_obraz.shape zlicz = 0 for i in range(h): for j in range(w): if sum(t_obraz[i, j, :]) > wsp: zlicz = zlicz + 1 procent = zlicz / (h * w) return zlicz, procent # Zadanie 1 # a. print("Zadanie 1a") diff = Image.open('diff.png') black_image = Image.new('RGB', diff.size, (0, 0, 0)) stats = np.array(diff).flatten() print(f"Średnia: {np.mean(stats)}, Minimum: {np.min(stats)}, Maksimum: {np.max(stats)}") print("_________________________________________________________________________________") # b. plt.hist(stats, bins=50, color='orange', alpha=0.7) plt.savefig('histogram1.png') plt.close() # c. print("Zadanie 1c") for wsp in [15, 20, 50, 100, 140]: diff_count, diff_percentage = zlicz_roznice_srednia_RGB(diff, wsp) print(f"Dla wsp={wsp}, liczba różnic: {diff_count}, procent różnic: {diff_percentage * 100}%") print("_________________________________________________________________________________") # d. print("Zadanie 1d") for wsp in [30, 60, 120, 140, 180]: diff_count, diff_percentage = zlicz_roznice_suma_RGB(diff, wsp) print(f"Dla wsp={wsp}, liczba różnic: {diff_count}, procent różnic: {diff_percentage * 100}%") print("_________________________________________________________________________________") def zlicz_roznice_srednia_RGB(obraz, wsp): t_obraz = np.asarray(obraz) h, w, d = t_obraz.shape zlicz = 0 for i in range(h): for j in range(w): if np.mean(t_obraz[i, j, :]) > wsp: zlicz = zlicz + 1 procent = zlicz / (h * w) return zlicz, procent def zlicz_roznice_suma_RGB(obraz, wsp): t_obraz = np.asarray(obraz) h, w, d = t_obraz.shape zlicz = 0 for i in range(h): for j in range(w): if sum(t_obraz[i, j, :]) > wsp: zlicz = zlicz + 1 procent = zlicz / (h * w) return zlicz, procent # Zadanie 2 # a. obraz = Image.open('obraz.jpg') obraz.save('obraz1.jpg') # b. for i in range(2, 6): obraz = Image.open(f'obraz{i - 1}.jpg') obraz.save(f'obraz{i}.jpg') # c. obraz = Image.open('obraz.jpg') obraz5 = Image.open('obraz5.jpg') diff_pixels = np.count_nonzero(np.array(obraz) != np.array(obraz5)) print(f"Liczba różnych pikseli między obrazem a obrazem5: {diff_pixels}") # d. obraz4 = Image.open('obraz4.jpg') diff_pixels_4_5 = np.count_nonzero(np.array(obraz4) != np.array(obraz5)) print(f"Liczba różnych pikseli między obrazem4 a obrazem5: {diff_pixels_4_5}") # e. for i in range(1, 6): original = Image.open('obraz.jpg') saved = Image.open(f'obraz{i}.jpg') diff = np.count_nonzero(np.array(original) != np.array(saved)) print(f"Różnice między oryginałem a obrazem{i}: {diff}") # Zadanie 3 def odkoduj(obraz1, obraz2): t_obraz1 = np.asarray(obraz1) t_obraz2 = np.asarray(obraz2) diff_pixels = np.where(t_obraz1 != t_obraz2, 255, 0).astype(np.uint8) return Image.fromarray(diff_pixels, 'L') jesien = Image.open('jesien.jpg') zakodowany1 = Image.open('zakodowany1.bmp') kod = odkoduj(jesien, zakodowany1) kod.save('kod.bmp') zakodowany2 = Image.open('zakodowany2.bmp') kod2 = odkoduj(jesien, zakodowany2) kod2.save('kod2.bmp')