Dalla coppia modulo/fase di ogni pixel complesso alle sinusoidi verticali, alla FFT, al discriminante pieno/vuoto. Metodo di Biondi e Malanga, implementato e verificato riga per riga.
Ogni pagina porta le sole colonne di quella piramide in 3D e, sotto, due grafici disegnati dentro la pagina: la somma delle sinusoidi della colonna rappresentativa con il suo inviluppo, e il profilo medio di tutte le sue celle.
Da ogni pixel complesso dell’interferogramma si prendono
modulo e fase in radianti. Ogni data diventa una sinusoide
lungo la verticale, s(z) = A cos(φ − κz), dove
κ e’ il numero d’onda della baseline di quella data. La
somma delle sinusoidi viene trasformata con una FFT — le righe non
stanno su un reticolo uniforme, perche’ le baseline non lo sono, quindi
passano per un nucleo gaussiano e una deapodizzazione analitica — e il
profilo che ne esce viene confrontato con la risposta attesa da un solo
diffusore.
Non e’ un metodo alternativo, ed e’ scritto ovunque: la somma delle sinusoidi e’ la parte reale del periodogramma tomografico, e la quota che ne esce coincide con quella della catena precedente entro un centimetro sul 100 % delle celle. Cambia il costo del calcolo, e cambia che ora lo si puo’ disegnare.
| acquisizioni impilate | 43 |
| master | 20260503 |
| polarizzazione | VH |
| escursione delle baseline | 297.1 m |
| risoluzione verticale δz | 132 m |
| precisione sulla quota σh | 8.3 m |
| coerenza mediana misurata | 0.419 |
| soglia di qualita' dalla distribuzione nulla | 0.431 |
| errore della FFT contro il calcolo diretto | 1.5e-05 |
| quota identica alla catena precedente entro 1 cm | 100 % delle celle |
| soglia |z-score| dal nullo di piana | 3.72 su 3663 celle |
| celle anomale: piramidi contro piana | 28.4 % contro 19.9 % (z = +3.15) |
| colonne nel campo di onde | 706 (236 sopra soglia) |
La superficie della piana si ricostruisce con precisione metrica. Le piramidi no. Le facce a ~52° superano l’angolo di incidenza di 37°: sono in layover pieno, con centinaia di punti di superficie ripiegati nella stessa cella di risoluzione. Il piano dei diffusori dominanti sta appena sopra il deserto e non segue il profilo delle facce.




I riassunti della corsa sono dentro questa pagina, non in file da scaricare a parte: sono gli stessi da cui vengono i numeri della tabella qui sopra.
{
"generato": "2026-09-07 17:14:24",
"programma": "piramidi_v03.py (sintesi sinusoidale + FFT verticale)",
"metodo": "modulo e fase radiante dell'interferogramma multilooked -> una sinusoide verticale per data -> somma -> FFT non uniforme (NUFFT di tipo 1, nucleo gaussiano) -> profilo in quota -> residuo rispetto alla PSF di un solo diffusore -> z-score sul nullo delle celle di piana",
"identita_con_v02": "la somma delle sinusoidi e' Re[h(z)] e il suo inviluppo e' |h(z)|: e' lo stesso periodogramma di v02, calcolato per FFT invece che con il doppio ciclo. Non e' una misura indipendente.",
"date": [
"20260103",
"20260109",
"20260115",
"20260121",
"20260127",
"20260202",
"20260208",
"20260214",
"20260220",
"20260226",
"20260304",
"20260310",
"20260316",
"20260322",
"20260328",
"20260403",
"20260409",
"20260415",
"20260421",
"20260427",
"20260428",
"20260503",
"20260509",
"20260521",
"20260522",
"20260527",
"20260602",
"20260603",
"20260608",
"20260615",
"20260620",
"20260627",
"20260703",
"20260709",
"20260715",
"20260721",
"20260727",
"20260802",
"20260808",
"20260814",
"20260820",
"20260826",
"20260901"
],
"master": "20260503",
"polarizzazione": "vh",
"segno_k_z": -1.0,
"griglia_kappa": {
"n_k": 514,
"d_kappa_rad_m": 0.003911710697076785,
"dz_m": 3.125,
"sovracampionamento": 2,
"kernel_sigma_celle": 1.6,
"kernel_taps": 8,
"kappa_max_reticolo_rad_m": 1.0053096491487337
},
"errore_fft": {
"celle_verificate": 240,
"errore_relativo_medio": 1e-06,
"errore_relativo_max": 1.5e-05,
"errore_p99": 7e-06,
"secondi_fft_tutte_le_celle": 0.79,
"secondi_diretto_stimati": 5.2
},
"confronto_con_v02": {
"estimatore": "surface_from_tomogram di v02, picco raffinato a parabola",
"scarto_quota_mediano_m": 3.1e-05,
"scarto_quota_massimo_m": 0.01001,
"scarto_gamma_massimo": 6e-06,
"celle_entro_1_cm_pct": 99.99,
"passo_asse_z_m": 3.125
},
"nullo": {
"celle": 3663,
"su_celle_di_qualita": true,
"percentile": 99.0,
"soglia_zscore": 3.719519,
"sigma_mediana": 0.1436
},
"bilancio_anomalie": {
"soglia_zscore": 3.72,
"percentile_nullo": 99.0,
"celle_nullo": 3663,
"anomalie_totali": {
"frazione_piramidi": 0.2839,
"frazione_piana": 0.1987,
"celle_piramidi": 236,
"celle_piana": 3663,
"z": 3.15,
"significativo_2sigma": 1,
"esito": "le celle delle piramidi superano la soglia piu' spesso della piana"
},
"vuoto": {
"frazione_piramidi": 0.0042,
"frazione_piana": 0.003,
"celle_piramidi": 236,
"celle_piana": 3663,
"z": 0.33,
"significativo_2sigma": 0,
"esito": "nessuna differenza significativa fra piramidi e piana"
},
"pieno": {
"frazione_piramidi": 0.2754,
"frazione_piana": 0.1927,
"celle_piramidi": 236,
"celle_piana": 3663,
"z": 3.09,
"significativo_2sigma": 1,
"esito": "le celle delle piramidi superano la soglia piu' spesso della piana"
},
"spiegazione_eccesso": {
"celle": 236,
"ripiegamento_layover": {
"r": 0.07,
"campioni": 236
},
"ampiezza_dB": {
"r": -0.229,
"campioni": 236
},
"coerenza": {
"r": -0.252,
"campioni": 236
},
"quota_simulata_m": {
"r": -0.076,
"campioni": 236
},
"prima_spiegazione": "coerenza",
"varianza_spiegata_pct": 6.4,
"esito": "nessuna delle grandezze di controllo spiega l'eccesso: la correlazione piu' forte e' coerenza con r = -0.25, cioe' il 6 % della varianza. L'eccesso resta senza spiegazione misurata -- il che non lo rende una struttura: sotto delta_z non c'e' niente da risolvere, e un residuo non spiegato e' prima di tutto un residuo"
}
},
"colonne_onde": [
{
"nome": "Cheope (Khufu)",
"cella": [
67,
65
],
"sopra_soglia_di_qualita": true,
"celle_nella_maschera": 345,
"z_picco_m": 9.375,
"quota_riferimento_xml_m": 63.957798,
"vuoto_max_zscore": -1.340101,
"z_del_vuoto_m": -303.125,
"pieno_max_zscore": 1.623862,
"modulo_per_data": [
0.919143,
0.096017,
1.32898,
0.054641,
1.369071,
0.078623,
1.541682,
0.132147,
1.878997,
0.179707,
1.225537,
0.004927,
1.624925,
0.031533,
1.026763,
0.20099,
1.065593,
0.109465,
1.2616,
0.057773,
1.101496,
1.353807,
0.085955,
1.171135,
1.242763,
0.904207,
0.927031,
2.332061,
1.749541,
1.532897,
1.146923,
0.061719,
1.221357,
1.866189,
1.522931,
0.968451,
1.024418,
1.267138,
1.258737,
0.678511,
0.835165,
1.427818,
1.028771
],
"fase_rad_per_data": [
-0.008887,
-1.512417,
0.297781,
-0.696471,
0.467295,
1.788177,
1.74287,
-1.790381,
1.531324,
2.358773,
0.712054,
-2.534942,
1.551667,
-1.63301,
1.847991,
-2.78773,
1.031248,
-2.120755,
1.23308,
-0.056282,
0.673393,
0.0,
-1.13523,
1.636783,
2.031553,
0.539346,
0.575556,
1.197772,
0.079229,
0.407435,
-0.110866,
1.313723,
-1.218779,
0.320627,
1.49414,
0.800027,
-0.820989,
0.748797,
-0.28624,
-0.530319,
0.451135,
1.152243,
1.641924
],
"kappa_per_data_rad_m": [
-2.5e-05,
0.055389,
0.01711,
0.021175,
0.062018,
0.010527,
0.067764,
0.037387,
0.044803,
0.061622,
0.027036,
0.082701,
0.048539,
0.065041,
0.045083,
0.037094,
0.051178,
0.072799,
0.063876,
0.050314,
0.037821,
-0.0,
0.078458,
0.057839,
0.063328,
-0.038475,
0.028698,
0.051663,
-0.012783,
0.045617,
-0.002321,
0.074131,
0.068359,
0.081707,
0.050175,
0.093451,
0.058525,
0.063327,
0.065904,
0.043385,
0.083236,
0.052802,
0.057334
],
"b_perp_per_data_m": [
0.060095,
-124.73648,
-38.530285,
-47.684402,
-139.665259,
-23.705799,
-152.606105,
-84.196147,
-100.896279,
-138.774299,
-60.885696,
-186.244386,
-109.311446,
-146.472858,
-101.526794,
-83.535661,
-115.253238,
-163.945103,
-143.851793,
-113.309369,
-85.175554,
0.0,
-176.689857,
-130.256475,
-142.616252,
86.648089,
-64.630065,
-116.347861,
28.788192,
-102.730443,
5.226375,
-166.944446,
-153.945866,
-184.006133,
-112.996196,
-210.45551,
-131.800132,
-142.616069,
-148.418915,
-97.705052,
-187.451081,
-118.911862,
-129.117727
]
},
{
"nome": "Chefren (Khafre)",
"cella": [
44,
34
],
"sopra_soglia_di_qualita": true,
"celle_nella_maschera": 309,
"z_picco_m": 9.375,
"quota_riferimento_xml_m": 64.21637,
"vuoto_max_zscore": -0.857822,
"z_del_vuoto_m": -331.25,
"pieno_max_zscore": 1.403206,
"modulo_per_data": [
0.498146,
0.19805,
0.366057,
0.120274,
0.39118,
0.384227,
0.261596,
0.233941,
0.478462,
0.217014,
0.414048,
0.137936,
0.377806,
0.106741,
0.391987,
0.32673,
0.265794,
0.136315,
0.502031,
0.146355,
0.312035,
0.62519,
0.411589,
0.271625,
0.306655,
0.383641,
0.342468,
0.16651,
0.219637,
0.204504,
0.376288,
0.103417,
0.196732,
0.185869,
0.181856,
0.176843,
0.375137,
0.299392,
0.323336,
0.188376,
0.211459,
0.11718,
0.134482
],
"fase_rad_per_data": [
-0.189025,
-2.758212,
0.284066,
-0.86713,
0.492506,
1.27552,
1.021846,
-1.46014,
0.538263,
2.819541,
0.072043,
1.535571,
0.980024,
-1.698028,
0.787893,
1.153377,
-0.009265,
-0.982281,
0.309547,
-0.08098,
-0.06082,
0.0,
-0.777969,
-0.102097,
0.690135,
-1.004367,
-0.268448,
0.397948,
-1.050842,
0.030751,
-0.847932,
-3.067884,
1.348567,
0.057444,
-0.011396,
0.515963,
-0.170756,
-0.383622,
-0.652449,
0.069858,
1.112716,
0.725236,
0.731026
],
"kappa_per_data_rad_m": [
-1e-05,
0.055473,
0.017146,
0.021211,
0.062112,
0.010543,
0.067862,
0.037443,
0.044866,
0.061706,
0.027077,
0.082811,
0.048607,
0.06513,
0.045145,
0.037146,
0.051249,
0.072898,
0.06396,
0.050375,
0.037865,
-0.0,
0.078555,
0.057914,
0.063408,
-0.038519,
0.028733,
0.051726,
-0.012795,
0.045676,
-0.002321,
0.07423,
0.068448,
0.081813,
0.050236,
0.093569,
0.058598,
0.063408,
0.065985,
0.04344,
0.08334,
0.052868,
0.057403
],
"b_perp_per_data_m": [
0.060095,
-124.73648,
-38.530285,
-47.684402,
-139.665259,
-23.705799,
-152.606105,
-84.196147,
-100.896279,
-138.774299,
-60.885696,
-186.244386,
-109.311446,
-146.472858,
-101.526794,
-83.535661,
-115.253238,
-163.945103,
-143.851793,
-113.309369,
-85.175554,
0.0,
-176.689857,
-130.256475,
-142.616252,
86.648089,
-64.630065,
-116.347861,
28.788192,
-102.730443,
5.226375,
-166.944446,
-153.945866,
-184.006133,
-112.996196,
-210.45551,
-131.800132,
-142.616069,
-148.418915,
-97.705052,
-187.451081,
-118.911862,
-129.117727
]
}
],
"campo_onde_pixel_per_pixel": {
"descrizione": "F59: per ogni cella della superficie delle piramidi in geometria radar, la sinusoide risultante Re[h(z)] -- la somma delle sinusoidi di quella cella, una per data -- normalizzata al massimo del modulo di quella cella.",
"celle": 706,
"celle_sopra_soglia": 236,
"per_piramide": {
"Cheope (Khufu)": 335,
"Chefren (Khafre)": 301,
"Micerino (Menkaure)": 70
},
"campioni_per_curva": 87,
"sottocampionamento_asse_z": 3,
"scala_disegno_m_per_ampiezza_1": 11.0,
"quota_picco_mediana_m": 6.25,
"quota_simulata_mediana_m": 39.103661
},
"uscite": {
"onde": "out_piramidi_v03\\onde_cheope_chefren.png",
"sezione_onde": "out_piramidi_v03\\sezione_onde_sotto_piramidi.png",
"onde_3d_png": "out_piramidi_v03\\onde_3d_superficie_piramidi.png",
"onde_3d_html": "out_piramidi_v03\\onde_3d_piramidi.html",
"pagina_cheope": "out_piramidi_v03\\onde_cheope.html",
"pagina_chefren": "out_piramidi_v03\\onde_chefren.html",
"pagina_micerino": "out_piramidi_v03\\onde_micerino.html",
"png_3d": "out_piramidi_v03\\pieno_vuoto_3d.png",
"html_v03": "out_piramidi_v03\\tomografia_v03_pieno_vuoto.html"
},
"novita": [
{
"id": "F51",
"tipo": "infrastruttura",
"descrizione": "v02.run() ora restituisce anche il cubo interferometrico multilooked (y_ml) e il suo k_z (k_ml): sono la coppia modulo/fase da cui v03 sintetizza le sinusoidi. Senza questa aggiunta v03 avrebbe dovuto rileggere i .tiff una seconda volta, 60 s su 43 date, per ottenere dati identici a quelli gia' in memoria."
},
{
"id": "F52",
"tipo": "metodo",
"descrizione": "Forma polare esplicita: A = |y|, phi = atan2(Im y, Re y) in radianti. E' la stessa coppia di Pixel_Complessi/LEGGIMI.md ma calcolata sull'INTERFEROGRAMMA normalizzato e riferito, non sul DN grezzo: la fase grezza e' dominata da exp(-j4piR/lambda) e non porta quota (F01, F02). Modulo e fase non aggiungono informazione alla coppia cartesiana -- sono la stessa misura in coordinate polari."
},
{
"id": "F53",
"tipo": "metodo",
"descrizione": "Sintesi sinusoidale: ogni data e' un tono lungo la verticale, s_i(z) = A_i cos(phi_i - kappa_i z) con kappa_i = segno * k_z,i. La somma delle sinusoidi e' esattamente Re[h(z)] del periodogramma di v02 e il suo inviluppo e' |h(z)|: e' la stessa inversione, scritta nel dominio in cui si puo' disegnare. Dichiarato apertamente, non presentato come misura indipendente."
},
{
"id": "F54",
"tipo": "calcolo",
"descrizione": "Il profilo in quota si calcola con una FFT vera. Le righe spettrali stanno alle frequenze kappa_i, che NON sono uniformi (le baseline non lo sono): vengono portate su un reticolo uniforme con un nucleo gaussiano e deapodizzate analiticamente (NUFFT di tipo 1), poi una sola FFT produce il profilo per tutte le celle. L'errore rispetto al periodogramma diretto e' MISURATO su un campione di celle e stampato, non assunto; --selftest lo blocca sotto 1e-3."
},
{
"id": "F55",
"tipo": "metodo",
"descrizione": "Indice pieno/vuoto come residuo rispetto alla PSF dell'array: R(z) = |h(z)|/max - |sum A_i exp(-j kappa_i (z - z_pic))|/sum A_i. La PSF e' calcolata per cella con le SUE ampiezze e le SUE baseline, non con un modello medio. Sostituisce il prodotto di attributi normalizzati di solidity_index, che non aveva un nullo con cui confrontarsi."
},
{
"id": "F56",
"tipo": "statistica",
"descrizione": "Il residuo e' normalizzato dalla dispersione MISURATA sulle celle di sola piana, alla stessa distanza dal picco (z - z_pic): un z-score con il suo nullo empirico, come F22 per gamma. La soglia di anomalia e' un percentile di quel nullo, e il confronto piramidi/piana e' riportato come z-test fra due proporzioni, qualunque risultato dia."
},
{
"id": "F57",
"tipo": "uscita",
"descrizione": "Nuovo grafico 3D del volume pieno/vuoto (HTML interattivo autonomo + PNG): voxel di eccesso in rosso e di difetto in blu, con soglia in z-score regolabile, sopra la superficie misurata e i profili delle piramidi."
},
{
"id": "F60",
"tipo": "uscita",
"descrizione": "Una pagina per ciascuna piramide, con le SUE sole colonne e le forme d'onda calcolate disegnate dentro la pagina in SVG: la somma delle sinusoidi della colonna rappresentativa con il suo inviluppo, e la media INCOERENTE dei moduli su tutte le celle di quella piramide (la media coerente le annullerebbe, perche' le fasi fra celle sono scorrelate). Nessun file esterno e nessuna libreria: la pagina si regge da sola. Il renderer 3D e' lo stesso della pagina d'insieme, filtrato -- due copie divergerebbero."
},
{
"id": "F59",
"tipo": "uscita",
"descrizione": "Grafico 3D delle sinusoidi PIXEL PER PIXEL sulla superficie delle piramidi: una curva per cella, alla sua posizione est/nord, che e' la somma delle sinusoidi di quella cella (Re[h(z)]) normalizzata al proprio massimo. La maschera e' quella in GEOMETRIA RADAR, non l'impronta al suolo. Statico in PNG e interattivo in HTML, con la scala orizzontale a cursore perche' lo spostamento e' un artificio di disegno: l'ampiezza di un interferogramma non e' una lunghezza."
},
{
"id": "F58",
"tipo": "uscita",
"descrizione": "Disegno a parte delle onde sinusoidali SOTTO Cheope e Chefren: la sezione verticale con la sagoma della piramide in alto e, sotto il suolo, le sinusoidi di ogni data, la loro somma, l'inviluppo e il residuo pieno/vuoto con la banda del nullo."
}
],
"avvertenza": "Il residuo pieno/vuoto e' un discriminante calibrato sul nullo della piana, NON una rilevazione di cavita' risolta in profondita'. La cella di Rayleigh verticale e' 132 m: le camere note della Grande Piramide misurano metri, due ordini di grandezza sotto. Il confronto piramidi/piana e' riportato con il suo z-test qualunque risultato dia, ed e' quello il numero da leggere."
}----------------------------------------------------------------------------
BUDGET TOMOGRAFICO MULTI-BASELINE
----------------------------------------------------------------------------
lunghezza d'onda radar = 5.55 cm
slant range R = 850.84 km
angolo di incidenza th = 36.83 gradi
baseline impilate = 43
escursione baseline ortogonali = 297.1 m
deviazione standard delle baseline = 63.5 m
RISOLUZIONE (separazione di Rayleigh fra due diffusori)
delta_z = lambda*R/(2*B) in slant = 79.4 m
proiettata in verticale = 132.5 m
altezza di ambiguita' = 12715.9 m
celle sull'altezza del target = 1.05
>> struttura interna separabile? NO
PRECISIONE (quota di UN diffusore dominante) -- F15
coerenza tipica assunta gamma = 0.42
sigma_h = lambda*R*sin(th)*sigma_phi/(4*pi*sigma_B)
= 8.3 m
altezza del target = 138.5 m
>> superficie reale misurabile? SI
Le due righe non si contraddicono: separare due diffusori dentro la
stessa cella e stimare la quota di quello dominante sono problemi
diversi. Confonderli e' l'errore concettuale corretto in F15.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
BANCO DI SUB-APERTURE DOPPLER (micro-moto)
----------------------------------------------------------------------------
banda Doppler totale B_cD = 313.00 Hz
banda di guardia B_DL = 156.50 Hz
larghezza sub-banda B_sub = 156.50 Hz
separazione master/slave B_shift = 28.17 Hz
passo di marcia = 11.67 Hz
sub-aperture N_D = 12
risoluzione griglia Doppler = 2.193 Hz/bin
bin per sub-banda = 71.4
MAPPATURA FREQUENZA -> TEMPO (dal Doppler rate dell'annotation)
azimuth FM rate k_a = -2188.3 Hz/s
rate TOPS combinata k_t = 1491.5 Hz/s
tempo di illuminazione del target = 143.0 ms
passo temporale fra sub-aperture = 5.33 ms
ritardo master-slave = 12.87 ms
finestra osservata (marcia completa)= 58.64 ms
campionamento meccanico f_s = 187.57 Hz
frequenza osservabile max (Nyquist) = 38.84 Hz
frequenza osservabile min (finestra)= 17.05 Hz
>> il banco risolve una banda di frequenze meccaniche
PERCHE' LA TOMOGRAFIA ACUSTICA DELLE FONTI QUI NON E' APPLICABILE
apertura sintetica L_sa = 958 m
lambda acustica a 38.8 Hz (v=6000 m/s) = 154 m
delta_z acustica = lambda*R/(2*L_sa) = 68.5 km
Limite dei dati: il TOPS di Sentinel-1 illumina un bersaglio per
143 ms soltanto, quindi la traccia di vibrazione dura 59 ms
e la frequenza meccanica accessibile e' di decine di Hz. Le fonti
lavorano su spotlight con B_cD ~ 22 kHz e indagano a 12.5 kHz: due
ordini di grandezza in piu'. E' questa la ragione per cui qui la
profondita' viene dalle baseline orbitali e non dal micro-moto, che
resta un attributo di superficie e nulla di piu'.
----------------------------------------------------------------------------