File: //test_python/codificatorev3.py
import numpy as np
from PIL import Image
import scipy.ndimage as nd
def codificatore_v3(image_path):
# Caricamento e mantenimento proporzioni reali
img = Image.open(image_path).convert('L') # Lavoriamo sulla luminanza (struttura)
original_size = img.size
data = np.asarray(img, dtype=float)
# 1. Rilevamento dei gradienti (Lo scheletro del volto)
# Usiamo l'operatore di Sobel per trovare dove "vibrano" i solitoni
dx = nd.sobel(data, 0)
dy = nd.sobel(data, 1)
mag = np.hypot(dx, dy)
mag *= 255.0 / np.max(mag) # Normalizzazione
# 2. Compressione Spettrale (Il Sasso V3)
# Salviamo solo i punti di massima energia (le rughe)
sasso_v3 = mag[::8, ::8] # Campionamento a passo 8
np.save('matrice_sasso_v3.npy', sasso_v3)
np.save('proporzioni.npy', np.array(original_size))
print("V3: Scheletro strutturale estratto.")
if __name__ == "__main__":
codificatore_v3("immagine_volto.jpg")