File: //test_python/codificatore.py
import numpy as np
from PIL import Image
import os
def generate_soliton_matrix(image_path, grid_size=32):
# 1. Caricamento immagine
img = Image.open(image_path).convert('RGB')
data = np.asarray(img, dtype=float) / 255.0
h, w, _ = data.shape
# 2. Inizializzazione Matrice del Sasso (Canali RGB)
# 32x32 = 1024 punti spettrali per canale
sasso = np.zeros((grid_size, grid_size, 3))
sh, sw = h // grid_size, w // grid_size
for c in range(3): # Canali R, G, B
for i in range(grid_size):
for j in range(grid_size):
# Estrazione del blocco locale (potenziale locale)
block = data[i*sh:(i+1)*sh, j*sw:(j+1)*sw, c]
if block.size > 0:
# Trasformata spettrale per identificare l'energia del solitone
# Usiamo il valore medio del modulo della FFT come autovalore zeta
zeta = np.mean(np.abs(np.fft.fft2(block)))
sasso[i, j, c] = zeta
# 3. Salvataggio della Matrice in formato binario (Differenza Zero)
np.save('matrice_sasso.npy', sasso)
print(f"Codifica completata. File 'matrice_sasso.npy' generato.")
print(f"Dimensioni matrice: {sasso.shape}")
if __name__ == "__main__":
# Inserisci qui il nome del file immagine presente sul tuo server
file_name = "immagine_volto.jpg"
if os.path.exists(file_name):
generate_soliton_matrix(file_name)
else:
print(f"Errore: Il file {file_name} non รจ stato trovato sul server.")