4  Risultati

Il capitolo è costruito come una catena di verifiche: ogni sezione risponde a una domanda precisa e prepara il terreno per quella successiva. Dalla qualità del dato di ingresso alla stima del carico articolare al ginocchio, ogni passaggio dipende dalla robustezza di ciò che lo precede — un’impostazione coerente con la natura modulare della pipeline stessa.

Il dataset principale è costituito da quattro salti del soggetto principale (sessione_09), elaborati in varianti sistematiche che modificano un solo parametro alla volta: risoluzione spaziale, frame rate, metodo di stima della forza di reazione al suolo, strategia di scaling del modello muscoloscheletrico. Un dataset secondario di tre soggetti femminili (sessione_10) permette di verificare se i risultati siano specifici dell’individuo su cui la pipeline è stata sviluppata maggiormente o se il framework utilizzato generalizza correttamente. La struttura di questo capitolo segue l’ordine logico della pipeline: verifica del dato di ingresso (§4.1–§4.3), cinematica e sensibilità parametrica (§4.4–§4.6), costi computazionali e output dinamici (§4.7–§4.9), generalizzabilità (§4.10).

4.1 Setup di analisi

Questa prima sezione definisce il perimetro sperimentale del capitolo. Prima di discutere curve, forze o tempi di calcolo, viene chiarito quali acquisizioni sono state analizzate, quali varianti sono state costruite e quale configurazione hardware/software ha prodotto i risultati.

Il dataset principale della tesi è costituito dalle acquisizioni di sessione_09: soggetto adulto di sesso maschile caratterizzato da 180 cm di altezza e 70 kg di massa corporea, ripreso con due telecamere consumer — un iPhone 13 e una GoPro Hero 9 Black — posizionate a circa 90° l’una dall’altra attorno al volume di salto. Dall’acquisizione sono stati estratti quattro salti, ciascuno con un ruolo definito nell’analisi. I trial_02 e trial_03, entrambi Countermovement Jump (CMJ) standard con mani sui fianchi, costituiscono il riferimento primario: tutte le comparazioni tra varianti di risoluzione, frame rate e metodo GRF sono costruite su questi due salti. Il trial_01, eseguito con le braccia parzialmente libere e un atterraggio attivamente ammortizzato, è usato per confrontare l’effetto della tecnica esecutiva. Il trial_04, CMJ standard seguito da un atterraggio volutamente rigido, consente di valutare se la strategia di contatto al suolo si rifletta sui picchi di carico articolare.

Il dataset secondario comprende tre soggetti di sesso femminile i cui salti sono stati acquisiti in una sessione antecedente a quella principale, in una fase preliminare dello sviluppo della pipeline e della maturazione delle tecniche di registrazione. La disponibilità dei soggetti era volontaria e limitata nel tempo; per ragioni legate a questa fase — in cui le procedure del protocollo non erano ancora pienamente consolidate — i video presentano alcune imperfezioni rispetto al dataset principale, tra cui un frame rate inferiore a quanto effettivamente supportato dai dispositivi. Queste differenze si riflettono sulla qualità della stima delle pose bidimensionali e, a cascata, sulle fasi successive della pipeline; i limiti che ne derivano saranno discussi in Sezione 5.4.

Ciascuno dei tre soggetti ha eseguito un singolo tentativo di salto verticale con braccia a supporto — tecnica in cui le braccia contribuiscono alla propulsione verso l’alto, diversamente dal CMJ a mani fisse del soggetto principale. La prima (soggetto_02, 153 cm, 45 kg) ha eseguito un doppio salto consecutivo; la seconda (soggetto_03, 168 cm, 65 kg) e la terza (soggetto_04, 160 cm, 42,5 kg) un singolo salto. Il gruppo non costituisce un campione statistico, ma consente di verificare se la pipeline produce output plausibili su soggetti con altezze e masse diverse da quelle del soggetto principale, ampliando la portata qualitativa del framework. Le caratteristiche complete dei due dataset sono riassunte in Tab. 4.1.

Tabella 4.1: Caratteristiche del dataset principale (sessione_09, soggetto M) e secondario (soggetti F).
Soggetto Sesso Altezza Massa Tipo di salto Ruolo
Principale – trial_02/03 M 180 cm 70 kg CMJ standard (mani sui fianchi) riferimento primario
Principale – trial_01 M 180 cm 70 kg salto braccia libere, atterraggio ammortizzato confronto tecnica esecutiva
Principale – trial_04 M 180 cm 70 kg CMJ standard, atterraggio rigido confronto strategia atterraggio
Secondario – soggetto_02 F 153 cm 45,0 kg doppio salto con braccia a supporto verifica generalizzabilità
Secondario – soggetto_03 F 168 cm 65,0 kg salto con braccia a supporto verifica generalizzabilità
Secondario – soggetto_04 F 160 cm 42,5 kg salto con braccia a supporto verifica generalizzabilità

Nella fase di validazione della pipeline, l’analisi non si è limitata a processare i trial nella loro configurazione originale: per ciascuno dei trial del dataset principale sono state costruite varianti sistematiche che modificano un solo parametro alla volta, tenendo invariati tutti gli altri stadi del processo. Questa impostazione permette di attribuire le differenze osservate nei segnali biomeccanici — cinematica articolare, forze di reazione al suolo, reazioni articolari al ginocchio — alla specifica scelta tecnica in esame, anziché alla sovrapposizione di più fattori simultanei. Le dimensioni di variazione esplorate sono quattro, più una quinta legata all’identità del soggetto.

La prima dimensione riguarda la risoluzione spaziale del video. I trial in analisi sono stati elaborati alla risoluzione originale di acquisizione (1080p), ridotti a 480p, e in una terza configurazione in cui il video degradato a 480p viene riscalato a 1080p prima dell’inferenza della pose estimation. Quest’ultima variante è concettualmente distinta dall’acquisizione diretta a 480p: consente di separare l’effetto della riduzione dell’informazione visiva disponibile al modello dall’effetto della sola dimensione del fotogramma in ingresso, chiarendo se il degrado della stima dipende dal contenuto dell’immagine o dalla sua risoluzione nominale.

La seconda dimensione riguarda la frequenza di campionamento temporale. Gli stessi trial sono stati elaborati al frame rate nativo, sottocampionati a 50 fps e a 25 fps, e in una variante in cui le pose stimate a 25 fps vengono interpolate linearmente alla griglia temporale originale — il procedimento di allineamento frame-per-frame descritto in Sezione 3.8. Il frame rate è uno dei parametri più vincolanti nelle acquisizioni con dispositivi consumer non specializzati: comprendere fino a quale soglia di sottocampionamento le grandezze biomeccaniche rilevanti rimangano affidabili ha un peso concreto sull’adottabilità del sistema in contesti con attrezzatura limitata o con vincoli di memoria e banda.

La terza dimensione riguarda il metodo di stima delle forze di reazione al suolo. Come descritto in Sezione 3.12, la pipeline implementa due approcci basati sulla stessa identità meccanica ma diversi nella qualità del punto di riferimento. La stima dal punto bacino approssima il baricentro corporeo con la posizione del centro dell’anca e ne calcola l’accelerazione verticale: computazionalmente semplice, non richiede un modello personalizzato ed è disponibile sin dalle prime fasi dell’elaborazione. La stima del CoM ricava invece il baricentro reale dal modello muscoloscheletrico scalato al soggetto, integrando la distribuzione di massa di tutti i segmenti corporei: il risultato è fisicamente più accurato, specialmente nelle fasi di flessione profonda in cui il bacino si discosta significativamente dal baricentro reale, ma diventa disponibile soltanto dopo la fase di scaling e di analisi cinematica inversa. Confrontare i due metodi sugli stessi trial consente di quantificare quanto questa differenza si propaghi, attraverso la dinamica inversa, fino alle reazioni articolari finali.

La quarta dimensione riguarda il metodo di scaling del modello muscoloscheletrico: scaling standard e scaling segmentale, descritti in Sezione 3.10. Il metodo segmentale personalizza ogni singolo segmento anatomico sulla base delle traiettorie tridimensionali misurate, mentre quello standard si affida ai soli parametri globali di massa e altezza. La scelta influenza le proporzioni del modello e, di conseguenza, la soluzione dell’analisi cinematica inversa e tutti i risultati dinamici a valle. La motivazione della scelta operativa è discussa in Sezione 4.3; per la maggior parte dei confronti del capitolo si usa lo scaling standard (ScaleTool Pose2Sim).

La quinta dimensione è il soggetto. I quattro trial del dataset principale vengono elaborati nelle varianti sopra descritte; i tre soggetti secondari contribuiscono ciascuno con un singolo trial in un sottoinsieme rappresentativo di configurazioni. Questa dimensione non isola un parametro tecnico della pipeline, ma risponde a una domanda complementare: i risultati ottenuti sono specifici dell’individuo, oppure la pipeline produce output plausibili anche su soggetti con antropometria diversa? Le combinazioni effettivamente eseguite per ciascun trial sono riassunte in Tab. 4.2.

Tabella 4.2: Dimensioni di variazione e livelli analizzati nel dataset principale e secondario.
Dimensione Livelli analizzati Step della pipeline
Risoluzione spaziale nativa (1080p) · 480p · 480p→upscale 1080p Pose 2D
Frame rate nativo · 100 fps · 50 fps · 25 fps · 25 fps→upsampling Pose 2D / allineamento FPF
Metodo GRF stima dal punto bacino · stima del CoM Stima GRF
Scaling standard · segmentale Scaling modello
Soggetto M principale (4 trial) · F secondarie (3 × 1 trial)

La tracciabilità dello stato di avanzamento della pipeline è assicurata dal grafo aciclico diretto (DAG) generato automaticamente dal componente Variant Manager del framework per ogni trial base (si veda Sezione 3.15 per la descrizione del sistema). Il grafo rappresenta ogni step di elaborazione come un nodo: dalla sorgente comune — video grezzi e calibrazione — il flusso attraversa pose estimation 2D, allineamento FPS, sincronizzazione, triangolazione, filtraggio e marker augmentation, producendo i 65 marker virtuali necessari a OpenSim. Da questo punto il grafo si dirama: per ciascuna combinazione di parametri viene istanziata una catena indipendente che percorre scaling del modello → IK → stima GRF → ID → JRA. I nodi condivisi a monte — tipicamente le fasi Pose2Sim — vengono elaborati una sola volta e il risultato propagato a tutti i rami discendenti tramite un nodo di copia, evitando rielaborazioni ridondanti. Lo stato di ogni nodo è codificato cromaticamente: verde per i passi completati, rosso per i fallimenti, grigio per i nodi non ancora avviati, grigio-blu per i nodi saltati per mancanza di dati qualitativamente validi. La Fig. 4.1 mostra il DAG del trial_03 come esempio rappresentativo della struttura.

In totale il dataset di sessione_09 comprende 9 varianti per trial e quattro trial base; la totalità ha completato la catena fino a Inverse Dynamics, mentre la Joint Reaction Analysis è stata annullata per la quasi totalità dei trial in analisi. Le cause e quindi anche le conseguenze di questa scelta saranno trattate approfonditamente in Sezione 4.7. Il dataset di sessione_10 presenta le stesse varianti, ma distribuite sui tre soggetti secondari.

Figura 4.1: DAG delle varianti per trial_02 e trial_03 (sessione_09). I nodi verdi sono passi completati; grigio-blu = saltati (JRA); viola/ciano = trasformazioni video. Le frecce mostrano le dipendenze tra step: le fasi Pose2Sim sono condivise a monte del branching OpenSim; il grafo mostra la struttura per-variante (scaling, IK, GRF, ID, JRA). Nodi romboidali = trasformazioni video (downsample/upsample); nodi arrotondati = copie del risultato Pose2Sim. Codice sorgente: dag_to_mermaid() in codice/lib/variant_dag.py.

L’intera pipeline è stata eseguita su un unico MacBook Pro con chip Apple M2 Max e 32 GB di memoria unificata, senza ricorrere a server cloud o hardware specializzato. L’ambiente di esecuzione è Python 3.9 all’interno di un ambiente virtuale conda; i principali pacchetti di elaborazione sono OpenSim 4.5.2 (canale opensim-org), Pose2Sim con RTMPose integrato (pip), ffmpeg (conda-forge) e Streamlit per l’interfaccia di supervisione del workflow. La scelta del backend di esecuzione è automatica in funzione dell’hardware disponibile: la fase di pose estimation 2D utilizza il backend MPS di Apple Silicon, che espone le unità di calcolo della GPU integrata con accesso unificato alla memoria; tutti gli step OpenSim — triangolazione, scaling, IK, stima GRF, ID e JRA — vengono eseguiti su CPU, poiché le API di OpenSim non supportano accelerazione GPU. Lo stack completo con le versioni esatte è riassunto in Tab. 4.3.

Tabella 4.3: Stack hardware e software della pipeline di analisi.
Componente Versione / Specifiche Step della pipeline
MacBook Pro M2 Max · 32 GB RAM tutti
Python 3.9 (conda biomech) tutti
OpenSim 4.5.2 (canale opensim-org) scaling · IK · GRF · ID · JRA
Pose2Sim pip, stable pose 2D · triangolazione · marker aug
RTMPose via Pose2Sim · backend MPS pose estimation 2D
ffmpeg conda-forge conversione · split · upsample
Streamlit pip interfaccia supervisione workflow

4.2 Qualità della calibrazione e della posa 2D/3D

Il perimetro sperimentale è definito — dataset, varianti, hardware — ma nessun risultato biomeccanico è interpretabile finché non si è stabilito che il dato di ingresso è adeguato. Errori geometrici nella calibrazione, instabilità nella stima 2D della posa o lacune nelle traiettorie 3D si propagano a ogni step successivo: una pipeline corretta che riceve dati difettosi produce output sistematicamente sbagliati, non recuperabili a valle.

La qualità geometrica del setup di ripresa è sintetizzata dall’errore di riproiezione, cioè la distanza in pixel tra la posizione osservata di un keypoint nell’immagine e la sua riproiezione dalla ricostruzione tridimensionale. Tale valore costituisce il filtro di primo livello sull’affidabilità dell’intera catena di analisi (Sezione 3.3).

La calibrazione intrinseca, basata su una scacchiera 6×9 con passo di 27 mm, ha restituito un errore quadratico medio di 0,40 px per la cam01 (iPhone 13) e di 0,36 px per la cam02 (GoPro Hero 9 Black), entrambi ampiamente al di sotto della soglia di 1 px ritenuta accettabile per la triangolazione markerless [@pagnon_2022_sensors_part1]. La calibrazione estrinseca, eseguita con sette punti di controllo a coordinate tridimensionali note, ha prodotto errori per-camera di 3,1 px (cam01) e 2,1 px (cam02), con un errore simmetrico globale di 10,1 px riportato nel file di calibrazione.

L’errore di riproiezione operativo — calcolato dal modulo di triangolazione Pose2Sim sui keypoint del trial_02 nativo (circa 200/210 fps, 1080p) — è in media 7,0 px (circa 30 mm) sull’intero set di 26 keypoint. Per i keypoint dell’arto inferiore i valori restano nell’intervallo 2,6–6,7 px (circa 11–29 mm); il punto Neck registra il valore massimo (14,5 px) a causa dell’occlusione intermittente degli arti superiori durante la propulsione. Nessun keypoint dell’arto inferiore ha superato la soglia di rifiuto automatico di 25 px applicata da Pose2Sim. I valori di sintesi sono riportati in Tab. 4.4 per le componenti locali e in Tab. 4.5 per le metriche globali di sistema; la distribuzione per keypoint è mostrata in Fig. 4.2.

Tabella 4.4: Errori di calibrazione locali per singola telecamera (sessione_09).
Fase Metrica cam01 — iPhone 13 cam02 — GoPro Hero 9
Intrinseca RMS scacchiera (px) 0,40 0,36
Estrinseca Errore 7 pt scena (px) 3,1 2,1
Tabella 4.5: Accuratezza globale e operativa del sistema (sessione_09).
Fase Metrica Errore di sistema (px)
Estrinseca Errore simmetrico globale 10,1
Operativo Media arti inferiori (trial_02) 2,6 – 6,7
Operativo Media tutti i keypoint (trial_02) 7,0 (≈ 30 mm)
Figura 4.2: Distribuzione degli errori di riproiezione per keypoint — trial_02 nativo (sessione_09).

Oltre alla geometria del setup di ripresa, la qualità della ricostruzione 3D dipende dalla precisione della localizzazione 2D dei keypoint nelle immagini. RTMPose assegna a ciascun keypoint un punteggio di confidenza che rappresenta l’output del classificatore SimCC, non una probabilità normalizzata, quantificando l’affidabilità della sua stima in 2D. Questo punteggio è successivamente usato da Pose2Sim come peso nella triangolazione basata sull’algoritmo Direct Linear Transformation (DLT): un keypoint con confidence bassa contribuisce meno al vincolo di ricostruzione del corrispondente punto 3D, consentendo al sistema di privilegiare le stime più affidabili quando le due viste forniscono informazioni in disaccordo [@pagnon_2022_joss_pose2sim; @jiang_2023_rtmpose].

Nella configurazione nativa (trial_02, 208 fps, 1080p) i keypoint biomeccanicamente rilevanti dell’arto inferiore mostrano score medi compresi tra 0,71 (LHip) e 0,88 (RAnkle). L’anca sinistra è il punto più critico della catena cinetica inferiore: durante la fase di propulsione del CMJ, l’occlusione parziale degli arti superiori riduce la visibilità della regione pelvica in entrambe le viste, compromettendo la stima 2D indipendente. I keypoint distali del piede (tallone e punta) si attestano nell’intervallo 0,77–0,84; ginocchio e caviglia restano stabili sopra 0,82. La distribuzione per keypoint è mostrata in Fig. 4.3; i valori numerici sono riportati in Tab. 4.6.

Tabella 4.6: Confidence media RTMPose per keypoint biomeccanicamente rilevanti (sessione_09, trial_02). Media su tutti i frame e le due camere.
Keypoint Nativo 480p 25 fps
LHip / RHip 0,71 / 0,73 0,70 / 0,73 0,70 / 0,73
LKnee / RKnee 0,83 / 0,83 0,81 / 0,82 0,81 / 0,82
LAnkle / RAnkle 0,85 / 0,88 0,84 / 0,87 0,84 / 0,87
LHeel / RHeel 0,77 / 0,83 0,77 / 0,82 0,76 / 0,82
LBigToe / RBigToe 0,84 / 0,84 0,81 / 0,80 0,81 / 0,81
Media BM-rilevanti 0,838 0,823 0,824
Figura 4.3: Heatmap della confidence RTMPose per keypoint e variante (sessione_09, trial_02).

Questa stabilità nasconde tuttavia un’asimmetria sistematica legata alla geometria del setup sperimentale. Con le telecamere posizionate a circa 90° l’una dall’altra, è inevitabile che una delle due viste subisca l’auto-occlusione di “mezzo” corpo durante il salto. Mentre il lato rivolto verso la telecamera laterale è chiaramente visibile, il lato opposto viene parzialmente nascosto dal tronco o dagli arti controlaterali, riducendo la precisione della localizzazione 2D. Come mostrato in Fig. 4.4 per il trial_02, questa condizione si riflette in un errore di riproiezione sistematicamente più elevato per i keypoint del lato sinistro (L) rispetto al destro (R), specialmente per i segmenti distali del piede (caviglia, tallone e dita) dove la discrepanza raggiunge i 2-4 pixel. È in questi frangenti che la triangolazione pesata diventa determinante, permettendo al sistema di privilegiare la vista più affidabile e compensare l’incertezza informativa derivante dall’occlusione geometrica.

Figura 4.4: Confronto bilaterale degli errori di riproiezione (trial_02, nativo). L’asimmetria tra lato destro e sinistro riflette l’auto-occlusione geometrica indotta dal setup di ripresa a 90°.

La degradazione a 480p e la riduzione a 25 fps producono entrambe un calo medio di circa 1,8 punti percentuali sui keypoint biomeccanicamente rilevanti (0,838 → 0,823 e 0,824), confermando che RTMPose mantiene una qualità di stima sostanzialmente stabile al variare della risoluzione e del frame rate. Nessun keypoint dell’arto inferiore scende al di sotto della soglia di scarto automatico di Pose2Sim (0,3 di default), garantendo la disponibilità dell’intera sequenza di frame per la triangolazione.

Le traiettorie tridimensionali prodotte dalla pipeline Pose2Sim presentano, in tutti e quattro i trial di sessione_09, una completezza del 100%: nessun frame residuo mancante sui 22 marker biomeccanicamente rilevanti al termine della catena di triangolazione e filtraggio. Questo risultato è garantito dalla strategia di controllo qualità a tre stadi implementata da Pose2Sim (Sezione 3.9): in primo luogo, per ciascun frame, le camere con confidenza inferiore a 0,3 o errore di riproiezione superiore a 25 px vengono escluse dal calcolo della Direct Linear Transformation (DLT); in secondo luogo, i residui outlier isolati sono soppressi tramite filtro di Hampel; infine, i gap risultanti vengono colmati mediante interpolazione lineare se di ampiezza inferiore a 20 frame, oppure propagando l’ultimo valore valido per gap più estesi [@pagnon_2022_joss_pose2sim].

In pratica, la qualità del setup di sessione_09 ha reso questi meccanismi di recupero raramente necessari: nel trial_02 il log di triangolazione indica 0,0 camere escluse per frame in media, segnale che i keypoint dell’arto inferiore erano visibili e coerenti in entrambe le viste lungo l’intera sequenza. I quattro trial coprono da 1,9 s (trial_02) a 3,0 s (trial_01) a 200 fps (cfr. Tab. 4.7).

Tabella 4.7: Completezza delle traiettorie TRC per i quattro trial di sessione_09 (22 marker, raw).
Trial Frame Durata (s) fps NaN%
trial_01 (braccia + atterraggio ammortizzato) 609 3,0 200 0
trial_02 (CMJ standard) 386 1,9 200 0
trial_03 (CMJ standard) 411 2,1 200 0
trial_04 (atterraggio rigido) 493 2,5 200 0

La stessa completezza si riscontra nelle varianti degradate (480p e 25 fps) del trial_02, confermando che la riduzione di qualità dell’input visivo non introduce gap nella ricostruzione 3D all’interno di questo dataset.

Quale indicatore supplementare di qualità cinematica è stato analizzato il jerk — definito come la derivata terza della posizione — su un sottoinsieme rappresentativo di varianti. In biomeccanica, il jerk quantifica la fluidità del movimento (smoothness): valori elevati segnalano instabilità nel tracking dei keypoint (jitter) o rumore ad alta frequenza, spesso indotti da occlusioni o limiti del modello di pose estimation [@pagnon_2022_joss_pose2sim].

La Fig. 4.5 riporta il jerk medio per sei marker articolari (anche e ginocchia bilaterali) in quattro configurazioni del trial_02. Nella configurazione nativa (208 fps, 1080p), il valore medio è di circa 330 mm/s³, a conferma di un segnale fluido e correttamente filtrato [@kipp_2021_app_sci_butterworth]. Il degrado a 480p eleva drasticamente il jerk a circa 20000 mm/s³: la perdita di dettaglio spaziale induce un’incertezza nella localizzazione 2D che si propaga come rumore nella traiettoria 3D.

Il sottocampionamento a 25 fps produce invece valori artificialmente bassi (~55 mm/s³), dovuti a un effetto di aliasing temporale: poiché la frequenza di campionamento è insufficiente per risolvere i transienti rapidi del salto, le componenti ad alta frequenza del segnale — inclusi il rumore e le accelerazioni repentine — vengono perse o distorte, generando curve di interpolazione apparentemente lisce che nascondono la reale dinamica del segnale. L’upsampling non altera questo risultato, confermando che l’interpolazione non recupera l’informazione fisica mancante. In sintesi, la stabilità del jerk nella configurazione nativa valida la qualità cinematica di sessione_09 per il proseguimento delle analisi.

Figura 4.5: Confronto del jerk medio per varianti di risoluzione e frame rate (trial_02). Il valore nativo funge da riferimento; l’elevato jerk a 480p indica rumore cinematico, mentre il valore ridotto a 25 fps riflette l’aliasing temporale.

4.3 Effetto del metodo di scaling

Una volta verificata la qualità delle traiettorie, il passaggio successivo riguarda l’adattamento del modello muscoloscheletrico al soggetto. Le proporzioni anatomiche del modello scalato determinano la soluzione dell’analisi cinematica inversa e, attraverso di essa, tutti i risultati dinamici a valle. Questa sezione confronta le strategie di scaling usate nella pipeline e motiva la configurazione scelta per il resto del capitolo.

Il confronto tra i due metodi di scaling implementati nella pipeline — lo ScaleTool standard di OpenSim (basato su coppie di marker virtuali nel template Pose2Sim LSTM) e lo scaling segmentale (basato su fattori di scala derivati direttamente dalle distanze tridimensionali tra le traiettorie TRC, si veda Sezione 3.10) — è stato condotto nel trial_02 in configurazione nativa. Al fine di isolare l’effetto della parametrizzazione anatomica del modello (@rajagopal_2016_model) sugli output biomeccanici, è stato mantenuto costante il metodo di stima della forza di reazione al suolo (GRF) utilizzando la variante com_model. I risultati di questa analisi di sensibilità sono sintetizzati in Tab. 4.8.

L’analisi dimensionale rivela divergenze sostanziali nella stima dei segmenti lunghi. Per quanto concerne il femore, lo ScaleTool standard riporta una lunghezza di 40,4 cm (fattore di scala sf = 0,989, pari a una riduzione dell’1,1% rispetto al template generico), mentre il metodo segmentale stima 44,5 cm (sf = 1,091, +3,7 cm rispetto allo standard). Quest’ultimo valore risulta maggiormente plausibile sotto il profilo anatomo-antropometrico per un soggetto di sesso maschile con statura di 180 cm. Di contro, l’approccio segmentale mostra una criticità significativa sugli arti superiori, stimando per l’omero un fattore sf = 1,625 (46,6 cm contro i 28,7 cm del template), valore che genera un segnale di errore (warning_large_deviation). Tale anomalia è riconducibile alla minore affidabilità della stima markerless della posa per i segmenti distali dell’arto superiore durante la fase propulsiva del salto, dove le rapide accelerazioni e le auto-occlusioni aumentano l’incertezza nella localizzazione dei keypoint [@dipietro_2024_ast_scaling].

Sotto il profilo della cinematica articolare, la discrepanza tra i due metodi si traduce in un errore quadratico medio (RMSE - Root Mean Square Error) contenuto per il ginocchio (1,2°) e la caviglia (2,8°), ma significativo per l’anca in flessione, dove si registra un RMSE di 8,3° e una variazione nel Range of Motion (ROM - l’escursione angolare totale dell’articolazione) di 7,3°. Nonostante queste variazioni cinematiche, l’effetto sulla dinamica globale è trascurabile: la stima del picco di GRF differisce di soli 17 N (< 1,3%), confermando che l’accelerazione del centro di massa (CoM - Center of Mass) è dominata dalla traiettoria complessiva dei segmenti piuttosto che dalla loro precisa lunghezza individuale.

Tabella 4.8: Confronto quantitativo tra scaling standard (Pose2Sim) e segmentale sul trial 02 nativo. Nota: il valore dell’omero nel metodo segmentale supera la soglia di plausibilità fisica (warning_large_deviation).
Metrica Unità Standard (ScaleTool) Segmentale (TRC) Delta (Δ)
Cinematica (ROM)
Ginocchio Dx [°] 108,3 107,8 −0,5
Anca Dx [°] 128,6 135,9 +7,3
Caviglia Dx [°] 87,5 87,8 +0,3
Accuratezza (RMSE)
Ginocchio Dx [°] 1,2
Anca Dx [°] 8,3
Antropometria (sf)
Femore Dx [-] 0,989 (40,4 cm) 1,091 (44,5 cm) +0,102
Omero Dx [-] 1,227 (35,2 cm) 1,625 (46,6 cm)* +0,398
Dinamica
Escursione Pelvis (ty) [m] 0,700 0,716 +0,016
Picco GRF (com_model) [N] 1338 1321 −17

Alla luce del confronto presentato, per tutte le analisi batch e le comparazioni tra varianti sviluppate nel resto del presente capitolo è stato adottato lo scaling standard (ScaleTool Pose2Sim) come configurazione di riferimento. La scelta è motivata da tre criteri di rigore metodologico.

In primo luogo, la stabilità della distribuzione di massa: l’approccio segmentale, pur essendo teoricamente più accurato nel misurare le lunghezze ossee dal TRC, introduce distorsioni non plausibili in segmenti critici (come l’omero), che alterano la posizione del CoM e, di conseguenza, la fedeltà del metodo di stima della GRF basato sul modello. In secondo luogo, la sensibilità dei risultati: l’impatto dello scaling sulla cinematica del ginocchio — articolazione centrale per l’analisi del salto — è minimo (RMSE < 1,5°), indicando che la qualità del tracking è il fattore dominante rispetto alla precisione millimetrica dello scaling. Infine, il criterio della comparabilità: l’utilizzo del protocollo standard di Pose2Sim garantisce la coerenza metodologica con le validazioni esistenti in letteratura per questo specifico set di marker [@pagnon_2022_joss_pose2sim], facilitando l’interpretazione dei risultati in un contesto scientifico più ampio. Lo scaling segmentale rimane integrato nella pipeline esclusivamente come variante.

4.4 Cinematica: angoli articolari

Dalle traiettorie 3D validate del modello di posa sono stati estratti gli angoli articolari dell’arto inferiore, costituendo il primo livello di quantificazione della cinematica. Gli angoli articolari descrivono il movimento in termini interpretabili — ampiezza articolare, coordinazione inter-articolare, simmetria bilaterale — e fungono da ponte tra la stima della postura e le grandezze dinamiche successive. La loro precisione è essenziale perché le variazioni di risoluzione spaziale, frame rate e metodo di stima della GRF si riflettono dapprima nelle traiettorie angolari, propagandosi successivamente alle stime di forza e carico articolare. Questa sezione presenta la cinematica angolare del dataset principale in configurazione nativa, analizza come le scelte acquisizionali si manifestino nella precisione del movimento articolare, e fornisce i valori di riferimento che supporteranno il confronto tra le metodologie alternative di stima della GRF nelle sezioni successive.

Il ginocchio è il fulcro biomeccanico del salto verticale, sottoposto a carichi articolari massimali durante la fase eccentrica di contromovimento e durante la propulsione concentrica [@mcmahon_2018_cmj_force_phases; @cleather_2013_hip_knee]. Nel dataset principale, i trial di riferimento — trial_02 e trial_03, entrambi CMJ standard con mani sui fianchi — mostrano un pattern di estensione del ginocchio coerente e simmetrico bilateralmente (si veda Fig. 4.6). L’angolo articolare minimo (massima flessione) durante il contromovimento si attesta attorno ai 90–100° in media, coerente con i range riportati in letteratura per soggetti amatoriali [@mcmahon_2018_cmj_force_phases]; la distanza angolare percorsa durante l’intera fase propulsiva (dall’angolo minimo fino alla completa estensione a decollo) risulta di circa 90–95° di range di movimento. Questa escursione articolare è il risultato della coordinazione tra i muscoli estensori (quadricipiti, soleo e complesso gastrocnemio) e dei stabilizzatori eccentrici, sfruttando i meccanismi dello Stretch-Shortening Cycle per amplificare la propulsione. La simmetria bilaterale tra i due lati è sostanzialmente conservata: le differenze di angolo tra ginocchio destro e sinistro rimangono al di sotto di 5° in tutti i frame analizzati, indicando un pattern equilibrato privo di asimmetrie motorie significative. I trial di confronto — trial_01 con braccia libere e trial_04 con atterraggio rigido — mostrano deviazioni dal pattern di base limitate alla fase specifica interessata: trial_01 esibisce un’estensione leggermente più rapida durante la propulsione, probabilmente grazie al contributo aggiuntivo delle braccia, mentre trial_04 presenta un’estensione più contenuta durante il contromovimento, riflettendo una strategia di atterraggio volutamente rigida. Nel complesso, il pattern angolare del ginocchio è leggibile, coerente e riflette una coordinazione neuromuscolare ordinata, come riassunto in Tab. 4.9.

Figura 4.6: Andamento dell’angolo del ginocchio per i quattro trial del soggetto principale (sessione_09). Le curve sono allineate temporalmente rispetto all’istante di massima flessione (\(t=0\)). Questo allineamento evidenzia le differenze nella durata delle fasi propulsiva e di atterraggio tra i diversi compiti motori.
Tabella 4.9: Range di movimento (ROM) del ginocchio destro per i quattro trial analizzati.
Trial Angolo Min (°) Angolo Max (°) ROM (°)
trial_01 (braccia libere) 8,8 100,3 91,6
trial_02 (standard) 6,6 114,8 108,3
trial_03 (standard) 1,4 137,7 136,3
trial_04 (att. rigido) 3,9 102,0 98,1

Mentre il ginocchio guida l’estensione, la coordinazione dell’intera catena cinetica emerge dal ruolo sequenziale di anca e caviglia. Durante il contromovimento, l’anca si flette in sinergia con il ginocchio ma con un’escursione più contenuta (circa 50–70°), mentre la caviglia mantiene una dorsiflessione moderata preparandosi a caricare il complesso tendineo. La sequenza di spinta inverte poi questa gerarchia: l’estensione inizia dal ginocchio, prosegue con l’apertura dell’anca e si conclude con la rapida plantarflessione della caviglia (spinta del soleo), seguendo un pattern prossimale-distale ampiamente documentato. Il trial_04, caratterizzato da un atterraggio rigido, evidenzia una chiara alterazione di questa coordinazione nella fase finale, con un range di movimento ridotto del 20–30% in caviglia e ginocchio, riflettendo una strategia di irrigidimento (“stiffness”) per minimizzare l’assorbimento dell’impatto.

La fase di transizione del CMJ — l’inversione eccentrica-concentrica del movimento — ha una durata dell’ordine di poche decine di millisecondi, il che la rende la grandezza cinematica più sensibile alla risoluzione temporale dell’acquisizione. Come mostrato nell’overlay di Fig. 4.7, la topologia delle curve articolari è conservata a tutte le cadenze analizzate: la sequenza flessione–estensione–volo–atterraggio è riconoscibile a 25 fps come al frame rate nativo, e la simmetria bilaterale rimane preservata. Le differenze si manifestano nel dettaglio locale: a 25 fps il picco di massima flessione del ginocchio registra uno sfasamento temporale dell’ordine di 40 ms (un periodo di campionamento) rispetto al nativo, e il ROM risulta sottostimato di circa 4% per effetto della perdita dei campioni in prossimità degli estremi articolari. Le componenti ad alta frequenza del transiente propulsivo — rilevabili a 200 fps come una brusca variazione di velocità angolare — appaiono smussate, non per degradazione del modello di posa ma per insufficiente densità di campionamento.

La differenza visiva più marcata tra la curva nativa e quelle a basso fps riguarda la forma complessiva del profilo angolare nell’intervallo che separa il minimo di flessione dal decollo. A 200 fps la curva nativa rivela la struttura trifasica del CMJ: dopo il primo minimo di flessione del ginocchio (t ≈ 0,72 s, ~114°), la traiettoria non discende monotonicamente verso il volo, bensì presenta una breve stabilizzazione angolare di circa 100 ms — la fase di ammortizzazione, durante la quale l’energia elastica immagazzinata nei tendini viene trattenuta prima della conversione concentrica finale — seguita da un lieve ri-affondo in anca (da ~68° a ~88°) e ginocchio (da ~98° a ~106°) immediatamente prima dello scatto propulsivo [@mcmahon_2018_cmj_force_phases]. La traiettoria verticale della pelvi ne è la lettura più diretta: dopo il minimo a 0,568 m, il bacino risale a ~0,651 m, si arresta per circa 100 ms e ridiscende di 2–3 cm prima dell’accelerazione definitiva. A 50 fps questa finestra è coperta da soli 4–5 campioni; il filtro Butterworth, applicato a quella densità, interpola il plateau come rampa continua e fonde ammortizzazione e propulsione in un unico arco monotono. A 25 fps i campioni scendono a 2–3 e la struttura trifasica è irrecuperabile: la curva discende dal picco di flessione al volo in modo indistinguibile da un gesto più semplice, occultando il pre-tensionamento eccentrico terminale che nelle applicazioni sportive costituisce un indice diagnostico rilevante. La quantificazione completa di questi effetti e la loro propagazione alla stima della GRF è sviluppata nel Sezione 4.8.

Figura 4.7: Overlay cinematica — angoli articolari a frame rate progressivamente inferiori. La curva nativa (blu) risolve la struttura trifasica del CMJ (contromovimento → ammortizzazione → propulsione) e funge da riferimento; le curve a basso fps mostrano shift temporale, smussamento del transiente propulsivo e perdita della fase di ammortizzazione per insufficiente densità di campionamento.

Oltre alla dimensione temporale, la risoluzione spaziale del video di input rappresenta una variabile determinante per l’accuratezza della ricostruzione cinematica. Come illustrato nel confronto degli overlay angolari in Fig. 4.8, si osserva una risposta non lineare del sistema al degradamento dell’immagine. La variante in cui il video a 480p viene ricampionato a 1080p prima dell’inferenza (upscaling) genera traiettorie di ginocchio e caviglia quasi perfettamente sovrapponibili al riferimento nativo, con variazioni nel ROM trascurabili e un RMSE che rimane ampiamente entro le soglie di tolleranza biomeccanica. Al contrario, la variante a 480p nativa manifesta scostamenti sistematici più evidenti, con una tendenza a smussare i picchi articolari e a introdurre instabilità nel segnale durante la fase di atterraggio. Questo comportamento evidenzia come la robustezza del tracking markerless sia influenzata non solo dalla risoluzione nominale, ma anche dal rapporto di scala tra l’input e i parametri di addestramento del modello neurale; un’analisi quantitativa dettagliata di questi errori e del loro impatto sulla stima della GRF è presentata nel Sezione 4.5.

Figura 4.8: Confronto della cinematica articolare per varianti di risoluzione spaziale (trial_01). Ginocchio e caviglia bilaterali. La variante upscalata (480p→1080p, arancio tratto-punto) è quasi indistinguibile dal nativo (blu continuo), mentre la variante 480p nativa (rosso tratteggiato) mostra deviazioni sistemiche significative.

4.5 Confronto risoluzione spaziale

Dopo aver analizzato la cinematica alla risoluzione nativa, è necessario valutare l’impatto della risoluzione spaziale sull’accuratezza dei risultati. In contesti operativi e di campo, infatti, la disponibilità di video ad alta risoluzione può essere limitata da vincoli di memorizzazione, larghezza di banda o capacità di calcolo dell’hardware mobile. La presente sezione mira a quantificare il degrado prestazionale associato alla riduzione della risoluzione a 480p e a verificare se una tecnica di ridimensionamento (upscaling) alla risoluzione nominale prima dell’inferenza possa fungere da strategia di mitigazione. L’analisi è condotta mantenendo invariati i trial e i parametri della pipeline, garantendo che le divergenze osservate siano riconducibili esclusivamente al trattamento del segnale video.

L’impiego di varianti derivate dal medesimo video sorgente consente di isolare gli effetti del trattamento spaziale eliminando la variabilità inter-prova. Dal punto di vista computazionale, un estimatore neurale come RTMPose elabora il dato visivo estraendo gerarchie di caratteristiche (feature) tramite strati convoluzionali: una risoluzione ridotta degrada la granularità informativa nei livelli iniziali del backbone, compromettendo potenzialmente la localizzazione dei keypoint, specialmente per i segmenti corporei più distali. Tuttavia, la capacità del modello di operare in uno spazio latente robusto suggerisce che l’effetto sulle ampie escursioni articolari tipiche del salto possa risultare meno marcato rispetto alla perdita di dettaglio puramente visuale [@jiang_2023_rtmpose; @pagnon_2022_joss_pose2sim]. La valutazione quantitativa è condotta su tre varianti (originale 1080p, 480p e 480p→1080p).

Le configurazioni di risoluzione analizzate sono sintetizzate in Tab. 4.10. Ogni variante è generata a partire dai medesimi trial (02 e 03) della sessione_09. La condizione nativa (1080p) riflette le specifiche di acquisizione originali (iPhone 13, ~209 fps); la variante 480p è ottenuta mediante ricampionamento bilineare decrescente (downsampling) associato a una calibrazione intrinseca ricalcolata per la nuova densità di pixel (Calib_480p.toml). La terza variante (480p→1080p) introduce uno stadio di ricampionamento bilineare crescente (upscaling) che riporta il video degradato alla risoluzione nominale di 1080p prima della fase di pose estimation, pur mantenendo la calibrazione della variante 480p opportunamente riscalata alla nuova densità di pixel (Calib_480p_up1080p.toml). Tale configurazione permette di distinguere la perdita di informazione intrinseca dall’effetto di scala sull’inferenza: l’upscaling non aggiunge contenuto informativo reale, ma ripristina la dimensione del fotogramma per la quale la rete neurale è stata originariamente addestrata, consentendo di valutare se il modello sia più sensibile alla qualità dell’immagine o alla scala geometrica dell’input.

Tabella 4.10: Varianti di risoluzione spaziale confrontate. Tutte e tre le varianti usano la medesima metodologia di scaling (standard), consentendo un confronto isolato dei soli effetti della risoluzione spaziale di input e della procedura di calibrazione intrinseca.
Variante Risoluzione input Calibrazione Scaling modello FPS
Nativo (1080p) 1080p Calib_1080p.toml standard 209
480p 480p (downsampled) Calib_480p.toml standard 209
480p→1080p 480p upscaled a 1080p Calib_480p_up1080p.toml standard 209

L’overlay delle curve cinematiche per le tre varianti (Fig. 4.9) evidenzia una risposta asimmetrica della pipeline al degrado dell’input visivo. La variante 480p→1080p produce traiettorie articolari sostanzialmente sovrapponibili al riferimento nativo: l’RMSE si mantiene inferiore a 4° per ginocchio e caviglia bilaterali, la correlazione r ≥ 0,99 è conservata lungo l’intera sequenza, inclusa la fase di atterraggio, e la deviazione nel ROM rispetto al nativo non supera i 3° per tutte le articolazioni dell’arto inferiore. La variante a 480p nativo mostra invece deviazioni sistematicamente più marcate: l’RMSE al ginocchio destro supera i 22° nel trial_02 e i 25° nel trial_03, con una sottostima del ROM di 8–9°; la caviglia registra errori compresi tra 12° e 17°; le deviazioni sono massime nella fase di atterraggio, dove i transienti rapidi amplificano gli errori di localizzazione 2D.

L’articolazione dell’anca mostra una variabilità elevata in entrambe le varianti degradate (RMSE 4°–22°), con un andamento non monotono tra le due condizioni. La distribuzione degli errori su questo segmento riflette la difficoltà intrinseca del tracking 2D della regione pelvica — soggetta a occlusioni durante la propulsione e alla minore densità di keypoint rispetto all’arto distale — piuttosto che un effetto isolabile della sola risoluzione spaziale. L’evidenza quantitativa è riportata in Tab. 4.11.

Tabella 4.11: Errori cinematici (RMSE) per variante di risoluzione rispetto al nativo 1080p. Valori medi bilaterali. Soglia di errore accettabile: 9,61°.
Variante Articolazione RMSE (trial_02) RMSE (trial_03) ROM Δ [°] r
480p→1080p Ginocchio Dx 3,6° 1,2° <1 1,00
480p→1080p Ginocchio Sx 2,4° 2,5° <1 1,00
480p→1080p Caviglia Dx 1,9° 2,8° <3 0,99
480p→1080p Caviglia Sx 2,9° 1,7° <1 0,99
480p→1080p Anca Dx 13,2° 3,9° var. 0,93–1,00
480p Ginocchio Dx 22,5° 25,1° 8–9 0,82–0,90
480p Caviglia Dx 17,2° 12,3° 26–27 0,62–0,80
480p Anca Dx 21,8° 22,2° 45–47 0,77–0,87
Figura 4.9: Confronto dei movimenti (cinematica) al variare della risoluzione (trial_02). Ginocchio e caviglia. Blu continuo: originale 1080p; rosso tratteggiato: 480p; arancio tratto-punto: 480p ingrandito a 1080p. Le curve originale e ingrandita sono quasi identiche, mentre la 480p pura mostra distorsioni all’atterraggio.

La distorsione del profilo GRF a 480p nativo emerge come conseguenza strutturale di una catena di attenuazioni cinematiche che culmina nell’operatore di doppia derivazione implicito nel metodo com_model: la relazione \(\mathbf{F} = m(\ddot{\mathbf{r}}_\text{CoM} + \mathbf{g})\) amplifica qualsiasi sottostima sistematica nella traiettoria verticale del baricentro, trasformando un errore nella cinematica articolare in un errore proporzionalmente amplificato nella forza stimata. La Fig. 4.10 illustra il confronto nei trial_02 e trial_03. La variante 480p→1080p mantiene una stima della GRF coerente con il nativo: il picco propulsivo differisce di meno di 0,3 BW (trial_02: 3,58 vs 3,90 BW; trial_03: 4,60 vs 4,64 BW) e il tempo di volo è identificato correttamente per entrambi i trial (Δ ≤ 0,02 s). La variante a 480p nativo produce invece risultati sistematicamente distorti: il picco propulsivo crolla a 1,71–1,84 BW, con una sottostima del 55–60% rispetto al nativo; il tempo di volo è ridotto da 0,43 a 0,13 s nel trial_02 e non è identificabile nel trial_03; l’impulso risulta sottostimato del 13% e del 35% rispettivamente. L’entità della distorsione esclude un’origine stocastica e indica un errore strutturale nel segnale cinematico di ingresso, la cui natura è analizzata nel paragrafo seguente. I valori numerici sono riassunti in Tab. 4.12.

Tabella 4.12: Dati sulla forza verticale (GRF) per variante di risoluzione. Valori normalizzati al peso corporeo (BW).
Variante Picco propulsivo [BW] Picco atterraggio [BW] Tempo volo [s] Impulso [BW·s]
Nativo (1080p) — trial_02 3,90 2,98 0,43 1,43
480p→1080p — trial_02 3,58 3,03 0,41 1,40
480p — trial_02 1,71 2,16 0,13 1,24
Nativo (1080p) — trial_03 4,64 3,42 0,51 1,37
480p→1080p — trial_03 4,60 3,37 0,51 1,36
480p — trial_03 1,84 2,21 0 0,89
Figura 4.10: Confronto della forza (GRF) al variare della risoluzione (trial_02). La curva originale (blu) e quella ingrandita (arancio) sono quasi sovrapposte. La variante 480p pura (rosso tratteggiato) mostra una spinta dimezzata e un errore enorme nel tempo di volo.

La coerenza degli errori tra trial_02 e trial_03 (Fig. 4.11) indica che il pattern osservato non è specifico di un singolo trial ma sistematico attraverso l’intera sessione. La variante 480p→1080p rimane entro la soglia di 9,61° per tutte le articolazioni dell’arto inferiore in tutti i trial analizzati: l’errore massimo osservato è 3,6° (ginocchio destro, trial_02); due delle sei configurazioni bilaterali esaminate risultano inferiori a 2°. La variante 480p nativo supera tale soglia in ogni caso esaminato, con errori di 2,3–4,5 volte superiori al limite di accettabilità. L’upscaling preliminare all’inferenza rappresenta pertanto una misura di mitigazione efficace: consente di processare video acquisiti o archiviati a 480p senza perdita apprezzabile di accuratezza cinematica o cinetica, a condizione che il frame rate sia mantenuto al livello nativo e che la calibrazione intrinseca sia adattata alla risoluzione target.

Figura 4.11: Errori cinematici per trial e variante di risoluzione. Barre arancioni: video ingrandito (480p→1080p) vs originale; barre rosse: 480p puro vs originale. La linea grigia tratteggiata indica la soglia di errore massimo accettabile. La variante ingrandita resta quasi sempre sotto la soglia.

L’analisi empirica consente di localizzare con precisione l’origine dell’errore GRF lungo la catena di elaborazione. La qualità dell’inferenza RTMPose è la stessa nelle due varianti: la fiducia media per keypoint è 0,806 sia a 480p nativo sia a 480p→1080p, e la dispersione angolare 2D — calcolata come deviazione standard dei keypoint nel sistema di coordinate della rispettiva calibrazione — risulta ~12 mrad in entrambi i casi. Il rumore residuo sui marker 3D dopo triangolazione e filtraggio Butterworth rimane dello stesso ordine (2–8 mm per frame) nelle due varianti. L’origine dell’errore è invece rilevabile nella fase IK: a 480p nativo il solver produce angoli articolari sistematicamente attenuati rispetto al riferimento 1080p. Il caso più marcato riguarda la caviglia, dove il ROM si riduce da 87° (1080p e upscale) a 60° (480p nativo), con una sottostima di 27°; anche il ginocchio mostra una perdita di 8° (108° → 100°). Questi angoli attenuati riducono il contributo distale dei segmenti al baricentro corporeo: la plantarflessione, che durante la propulsione raggiunge velocità angolari di circa 200°/s, contribuisce all’accelerazione verticale del CoM in misura minore, deprimendo sistematicamente il picco di \(\ddot{\mathbf{r}}_\text{CoM}\) e quindi la GRF stimata.

Il meccanismo è riconducibile alla precisione angolare del sistema di calibrazione. A 480p (lunghezza focale scalata \(f_x \approx 404\),px) un pixel dell’immagine corrisponde a 2,47,mrad di incertezza angolare; a 1080p (\(f_x \approx 909\),px) il valore scende a 1,10,mrad — un rapporto di 2,25×. Durante la propulsione, la punta del piede si sposta di circa 0,9,mm per fotogramma a 200,Hz: nel sistema 480p questa magnitudine proietta su meno di un pixel per camera, collocando il segnale cinematico dell’articolazione nel regime sub-pixel dove qualsiasi bias sistematico nella back-projection affine induce un’attenuazione sistematica della dinamica recuperata dall’IK. L’upscaling bilineare a 1080p non introduce informazione visiva nuova — le componenti ad alta frequenza spaziale rimosse dal downsampling non vengono ripristinate — ma rimappa i keypoint nel sistema di calibrazione originale a 1080p, restaurando la precisione angolare della triangolazione e consentendo all’IK di recuperare la dinamica articolare corretta. Il costo computazionale di questa operazione obbligatoria — una conversione video ffmpeg aggiuntiva prima dell’inferenza — è quantificato in Sezione 4.9. Definite le condizioni spaziali entro cui la pipeline produce stime affidabili, la sezione successiva si sposta sulla catena dinamica: la scelta del metodo di stima della GRF e il suo effetto sui momenti articolari al ginocchio.

4.6 GRF: confronto tra metodi

La GRF è il punto di ingresso del comparto dinamico della pipeline: la forza di reazione al suolo alimenta direttamente la dinamica inversa e, attraverso di essa, i momenti articolari al ginocchio. Prima del confronto tra metodi è necessario enunciare l’assunzione strutturale comune a tutti i risultati che seguono: nel CMJ bilaterale standardizzato, la GRF totale è distribuita simmetricamente tra i due arti, assegnando a ciascun piede esattamente metà della forza stimata in ogni istante temporale. Questa scelta riflette l’evidenza della letteratura — i coefficienti di asimmetria nel CMJ su superficie piana sono sistematicamente inferiori al 5% in condizioni di laboratorio — ed è la stima priva di bias a priori compatibile con la conservazione della forza totale in assenza di misure per-arto. Tutti i confronti che seguono riguardano pertanto la GRF verticale totale. La sezione confronta i due metodi di stima implementati — stima dal punto bacino e stima del CoM — usando le stesse traiettorie cinematiche per isolare l’effetto della sola scelta di modello di forza sul profilo risultante.

Il confronto tra i due metodi di stima della GRF è condotto nel trial_02, che funge da riferimento primario dell’analisi. La stima dal punto bacino approssima la forza di reazione al suolo come prodotto tra massa corporea e accelerazione verticale del centro dell’anca — il keypoint bacino nel formato HALPE-26 — trattando quella coordinata come proxy del baricentro corporeo; il calcolo è interamente in-pipeline, non richiede il modello muscoloscheletrico scalato e produce la GRF già nella fase di pre-processing. La stima del CoM ricava il baricentro corporeo direttamente dal modello Rajagopal personalizzato, integrando la distribuzione segmentale di massa di ciascun segmento anatomico; il risultato è disponibile solo dopo la fase di scaling. La Fig. 4.12 mostra l’overlay delle due stime sulla sequenza temporale completa del trial_02. Le forme d’onda sono qualitativamente sovrapponibili: entrambi i metodi restituiscono il doppio picco caratteristico del CMJ (pre-stacco e post-atterraggio) e il corridoio di volo in cui la GRF scende a zero. La differenza principale si manifesta nell’ampiezza del picco di atterraggio, dove la stima dal punto bacino supera la stima del CoM di circa 0,19 BW; nelle fasi di carico statico e nelle valli della fase di contrommovimento le due curve sono praticamente coincidenti.

Figura 4.12: Overlay della stima dal punto bacino e della stima del CoM sul trial_02, CMJ standard. GRF verticale totale normalizzata [BW]; la linea tratteggiata a 1 BW indica il peso corporeo statico.

La Tab. 4.13 riporta le metriche GRF per entrambi i metodi sui tre trial di riferimento. Nel trial_02, la stima dal punto bacino produce un picco di 4,09 BW contro i 3,90 BW della stima del CoM — una differenza di 0,19 BW (4,9%). Nel trial_03, in cui il soggetto ha eseguito un CMJ con altezza di volo leggermente maggiore, il picco con la stima dal punto bacino sale a 5,22 BW mentre la stima del CoM si ferma a 4,64 BW: lo scarto cresce a 0,58 BW (12,5%). Il trial_04, al contrario, mostra una quasi totale coincidenza tra i metodi (Δ = 0,02 BW, 0,7%). La durata della fase di contatto e il tempo al picco sono identici per i due metodi su ogni trial, confermando che il timing non è influenzato dalla scelta del metodo. L’impulso differisce in misura contenuta (0,04–0,08 BW·s), con la stima dal punto bacino sempre leggermente superiore. Non si osservano valori negativi significativi nei transitori di stacco o atterraggio: il segnale rimane fisicamente plausibile su tutta la sequenza temporale.

Tabella 4.13: Metriche GRF totale per stima dal punto bacino e stima del CoM sul trial_02, trial_03 e trial_04. Valori normalizzati per peso corporeo (BW = 686,7 N).
Trial Metodo Picco (BW) t picco (s) Durata (s) Impulso (BW·s)
Trial 2 — CMJ standard Punto bacino 4,09 1,12 1,93 2,25
Trial 2 — CMJ standard CoM 3,90 1,12 1,93 2,17
Trial 3 — CMJ standard Punto bacino 5,22 0,97 2,05 2,46
Trial 3 — CMJ standard CoM 4,64 0,97 2,05 2,41
Trial 4 — atterraggio rigido Punto bacino 3,52 1,14 2,46 2,62
Trial 4 — atterraggio rigido CoM 3,50 1,14 2,46 2,59

La differenza tra i due metodi riflette una discrepanza fisica: il punto bacino non corrisponde al baricentro del corpo, e la sua accelerazione non coincide in generale con l’accelerazione del CoM. Durante le fasi del CMJ in cui il soggetto mantiene una postura eretta — fasi di carico leggero e di volo — il punto bacino è geometricamente prossimo al CoM e le due accelerazioni convergono, producendo segnali GRF quasi identici. Nelle fasi di flessione profonda del contrommovimento e nell’istante dell’atterraggio, il tronco e gli arti superiori si spostano rispetto al centro del bacino in misura significativa: il CoM reale del modello (calcolato da OpenSim come media pesata per massa dei baricentri segmentali) può trovarsi diversi centimetri sopra o sotto il punto bacino, e la sua accelerazione verticale differisce in ampiezza e fase. La stima dal punto bacino sovrastima il picco di GRF rispetto alla stima del CoM precisamente in questi istanti.

La Fig. 4.13 mostra il confronto per i tre trial. Lo scarto è visibilmente maggiore nel trial_03 — il salto più alto del dataset — dove la fase propulsiva è più esplosiva e il bacino raggiunge accelerazioni più elevate; nel trial_04 il divario è trascurabile. Questo andamento è coerente con il meccanismo fisico: all’aumentare dell’intensità del gesto, la discrepanza geometrica tra punto bacino e CoM si amplifica nella fase propulsiva, e la stima dal punto bacino produce una sovrastima proporzionale all’ampiezza dell’accelerazione.

Figura 4.13: Confronto tra stima dal punto bacino e stima del CoM sulla GRF verticale totale [BW] per trial_02, trial_03 e trial_04. L’area ombreggiata evidenzia lo scarto tra i due metodi; l’annotazione riporta la differenza al picco in BW e percentuale relativa alla stima del CoM.

La GRF così stimata — distribuita simmetricamente tra i due arti — costituisce l’ingresso della fase di dinamica inversa: OpenSim calcola i momenti netti articolari risolvendo le equazioni di Newton-Eulero su ogni segmento corporeo, come descritto nella sezione seguente.

4.7 Momenti articolari al ginocchio e fallimento della JRA

La Joint Reaction Analysis tramite AnalyzeTool produce output interamente non validi su tutte le varianti testate: joint_reaction.sto presenta il 100% di NaN in ogni colonna forza e momento, nonostante AnalyzeTool completi l’esecuzione senza eccezioni. La causa è l’incompatibilità strutturale tra le traiettorie IK — ottimizzate frame per frame senza vincoli di continuità — e l’integrazione forward di AnalyzeTool; i vincoli geometrici rigidi del modello WalkerKnee aggravano il problema. La JRA è stata disabilitata nel DAG per i trial_02 e trial_03 (nodi grigio-blu in Fig. 4.1). Il momento netto generalizzato al ginocchio — output dell’analisi di Inverse Dynamics di OpenSim con pelvi libera — costituisce pertanto la grandezza di carico disponibile, con le qualificazioni metodologiche di convenzione discusse in Sezione 5.4.

In assenza di JRA valide, il momento netto generalizzato al ginocchio — grandezza prodotta in uscita dall’analisi di Inverse Dynamics di OpenSim con pelvi libera, che incorpora le contribuzioni inerziali di tutti i segmenti sovrastanti l’articolazione — è l’indicatore di carico disponibile. Per trial_02__nativo__com_model (CMJ standard, Metodo CoM) il picco estensore in atterraggio è +1623 Nm (+1,31 BW·m, knee_r) e +1930 Nm (+1,56 BW·m, knee_l), con asimmetria bilaterale del 16–18% attesa dal modello a GRF simmetrica (Fig. 4.14); la morfologia bifasica — momento flessore in pre-stacco, transitorio estensore in atterraggio — è coerente tra i due arti.

Figura 4.14: Overlay bilaterale del momento netto generalizzato al ginocchio per trial_02__nativo__com_model (CMJ standard). Blu = ginocchio destro, rosso tratteggiato = sinistro.

Il confronto tra Metodo Pelvis e Metodo CoM mostra differenze di picco contenute nel 2–4% (Tab. 4.14): la cinematica articolare, non il metodo di stima GRF, è la grandezza dominante nella soluzione di Inverse Dynamics.

Tabella 4.14: Differenze di picco del momento netto generalizzato al ginocchio tra Metodo Pelvis e Metodo CoM per trial_02 CMJ standard. Valori CoM normalizzati per BW·m (soggetto 70 kg, 1,80 m; 1 BW·m = 1236 Nm).
Fase Variabile Pelvis [Nm] CoM [Nm] Δ [Nm] CoM [BW·m]
Atterraggio knee_r picco estensore +1665 +1623 −41 +1,31
Atterraggio knee_l picco estensore +1982 +1930 −52 +1,56
Pre-stacco knee_r picco flessore −1313 −1252 +61 −1,01
Pre-stacco knee_l picco flessore −952 −883 +68 −0,71

I valori ottenuti (1600–1900 Nm, 1,3–1,5 BW·m) eccedono di un fattore 4–5 il range di letteratura per il momento netto esterno al ginocchio in CMJ (100–400 Nm, 0,08–0,32 BW·m) [@cleather_2013_hip_knee]. La discrepanza non riflette un errore di stima ma una differenza di convenzione metodologica fra le due grandezze: l’output di Inverse Dynamics OpenSim è il momento generalizzato a livello del grado di libertà articolare e incorpora le inerzie di tutti i segmenti sovrastanti, mentre la grandezza riportata in letteratura — misurata con sistemi optoelettronici accoppiati a pedana di forza — è il momento netto esterno articolare nel reference frame locale del segmento distale e per costruzione esclude tali inerzie. Il confronto diretto richiederebbe il ricalcolo nel reference frame locale del segmento, identificato come sviluppo futuro in Sezione 5.7. La pipeline discrimina comunque strategie di atterraggio: trial_04 (atterraggio rigido) produce un picco estensore di +1137 Nm (+0,92 BW·m) contro +1377 Nm (+1,11 BW·m) di trial_01 (atterraggio ammortizzato), come evidenziato nelle Fig. 4.15 e Fig. 4.16.

Figura 4.15: Momento netto al ginocchio destro — sovrapposizione allineata all’istante di stacco (t = 0). Blu pieno = trial_04 (atterraggio rigido); arancio tratteggiato = trial_01 (atterraggio ammortizzato). Ombreggiature: grigio = volo, rosso = atterraggio. Asse Y sinistro in Nm, asse Y destro in BW·m (soggetto 70 kg / 1,80 m).
Figura 4.16: Momento netto al ginocchio destro — trial_04 (rigido, sinistra) e trial_01 (ammortizzato, destra) disposti in serie con asse Y condiviso e gap di 2 s per leggibilità. Le linee orizzontali tratteggiate indicano i picchi estensori in atterraggio: blu = +1137 Nm (+0,92 BW·m), arancio = +1377 Nm (+1,11 BW·m). Asse Y sinistro in Nm, asse Y destro in BW·m.

4.8 Confronto frame rate

Rispetto alla risoluzione spaziale — il cui impatto è stato analizzato in Sezione 4.5 — il frame rate incide in modo più critico sulla capacità di acquisire i transienti rapidi del movimento. Questa sezione analizza l’effetto di cadenze inferiori su cinematica e GRF e individua il limite pratico oltre il quale l’accuratezza si degrada in modo significativo.

I confronti si basano sullo stesso trial_02 (CMJ standard, sessione_09) elaborato a cinque cadenze, riepilogate in Tab. 4.15. Le varianti a 208,6 fps, 100 fps, 50 fps e 25 fps sono ottenute selezionando uniformemente un sottoinsieme di fotogrammi dalla sequenza originale prima della pose estimation; tutte adottano il medesimo metodo di stima GRF (com_model) e lo stesso scaling standard. Una sesta variante ricampiona il video da 25 fps a ~200 fps prima della pose estimation.

Tabella 4.15: Varianti di frame rate confrontate (trial_02, sessione_09). FPS effettivi misurati dal passo temporale medio del file IK risultante; N fotogrammi = righe in ik_result.mot; Δt = intervallo di campionamento medio.
Variante FPS effettivi N fotogrammi Δt [ms] Durata [s]
Nativo 200 386 5,0 1,925
208,6 fps 209 407 4,8 1,943
100 fps 100 194 10,0 1,940
50 fps 50 97 20,0 1,920
25 fps 25 47 40,0 1,840

Le varianti iniziano da finestre temporali leggermente diverse; le analisi quantitative sono condotte sulla sovrapposizione comune (0,14–1,94 s).

La Fig. 4.17 sovrappone le curve cinematiche del ginocchio destro e della posizione verticale della pelvi per le cinque varianti. La topologia — flessione di contromovimento, estensione propulsiva, volo, atterraggio — è conservata a tutte le cadenze: il sottocampionamento introduce uno sfasamento temporale e una perdita di dettagli locali senza distorcere la sequenza delle fasi. La variante a 100 fps si sovrappone strettamente al nativo sia nel ROM del ginocchio (103,7° vs. 108,3°, Δ = 4,6°) sia nella traiettoria della pelvi; la ridotta densità di campioni (Δt = 10 ms) non altera la forma macroscopica delle curve. A 25 fps il ROM del ginocchio risulta lievemente sottostimato (103,8° vs. 108,3° del nativo; 102,2° a 50 fps), imputabile alla perdita di campioni agli estremi di flessione; l’angolo massimo di estensione varia di meno di 2° tra tutte le varianti. La posizione verticale della pelvi rivela la differenza qualitativa principale: la variante nativa mostra un plateau di ammortizzazione di ~100 ms tra il minimo del contromovimento e la risalita propulsiva definitiva; nelle varianti a 50 fps questo plateau è coperto da 4–5 campioni (interpolati come rampa dal filtro) e a 25 fps è indistinguibile da una normale estensione (2–3 campioni).

Le curve a 25 e 50 fps mostrano inoltre uno shift temporale globale di ~95 ms rispetto al nativo, superiore al jitter atteso dal solo campionamento (±20 ms a 25 fps). L’origine è probabilmente un artefatto nella conversione video: durante l’estrazione e la riduzione frame-rate delle varianti downsampled, il frame iniziale della clip può scivolare di alcuni fotogrammi rispetto alla clip nativa — uno spostamento che a bassa cadenza corrisponde a decine di millisecondi. Il confounding tra effetto del campionamento e questo artefatto è un limite dichiarato del confronto, discusso in Sezione 5.4.

Figura 4.17: Cinematica articolare — confronto frame rate (Trial 2, CMJ). Pannello sinistro: angolo ginocchio destro. Pannello destro: posizione verticale pelvi (ty). La curva a 100 fps (ciano tratteggiato) si sovrappone strettamente al nativo (blu continuo), confermando la conservazione della cinematica sopra la soglia di Nyquist. Le curve a 50 fps (arancio tratto-punto, cerchi) e 25 fps (rosso puntinato, quadrati) mostrano uno shift temporale rispetto al nativo (approx209 fps), con la forma complessiva preservata. L’annotazione indica Δt = 40 ms per la variante a 25 fps.

Il comportamento della GRF diverge significativamente dalla cinematica. Le varianti ad alta cadenza — nativo e 208,6 fps — mostrano la struttura bifasica attesa del CMJ: picco di braking (~1,5 BW), unloading di transizione (~0,6 BW), picco propulsivo (~3,9 BW) prima dello stacco, picco di atterraggio (~3,0 BW) dopo il volo. A 50 e 25 fps questa struttura scompare (Fig. 4.18, Tab. 4.16): il segnale mostra un’unica gobba larga nella fase di braking (1,77 BW a t ≈ 0,86 s) che poi declina monotonicamente verso lo stacco; il picco propulsivo nativo (3,9 BW a t = 1,12 s) è completamente assente.

La ragione è strutturale: il metodo com_model stima la GRF come \(\mathbf{F} = m \cdot \ddot{\mathbf{r}}_\text{CoM}\), per cui la fedeltà del segnale dipende direttamente dalla risoluzione temporale dell’accelerazione del CoM. Il transiente propulsivo dura ~100–150 ms: a 50 fps quella finestra è coperta da soli 5–7 campioni — insufficienti a risolvere un picco acuto per differenze finite — mentre a 25 fps scendono a 2–3, fondendo le accelerazioni di braking e propulsiva in un’unica escursione attenuata. Il teorema di Nyquist impone \(\Delta t \ll \tau/2\); per \(\tau \approx 100\) ms la soglia critica è ~80 fps, confermata empiricamente: sopra tale soglia, 208,6 fps e nativo risultano quasi identici (Δ picco = 0,03 BW), mentre la variante a 100 fps — primo punto effettivamente sopra soglia — recupera il picco propulsivo a 3,44 BW (trial_02) e 4,27 BW (trial_03), distante oltre 1,6 BW dalla stima a 50 fps. Di conseguenza, il rilevamento per massimo globale individua a bassa cadenza il picco di atterraggio (2,18 BW) anziché quello propulsivo; i valori in Tab. 4.16 usano il massimo GRF nella finestra pre-stacco.

Tabella 4.16: Statistiche GRF per variante di frame rate (trial_02). Picco propulsivo = massimo GRF bilaterale nella finestra pre-stacco. Picco atterraggio = massimo post-volo. Impulso = integrale trapezoidale sulla fase di contatto pre-stacco. RMSE sulla griglia temporale nativa. L’RMSE di 208,6 fps e 100 fps riflette lo sfasamento della finestra di acquisizione rispetto al nativo, non la qualità del segnale propulsivo. †Il picco di atterraggio a 100 fps (2,12 BW per trial_02 vs 2,12 BW atteso sul trial_03: 3,34 BW) riflette una finestra temporale leggermente diversa tra le varianti; il dato di trial_03 (3,34 BW) è più rappresentativo.
Variante Picco propulsivo [BW] t picco [s] Picco atterraggio [BW] Impulso pre-stacco [BW·s] RMSE vs nativo [BW]
Nativo (≈209 fps) 3,90 1,120 2,98 1,43
208,6 fps 3,87 1,072 3,08 1,47 0,80
100 fps 3,44 1,070 2,12† 1,46 0,78
50 fps 1,77 0,860 2,18 1,30 1,02
25 fps 1,75 0,800 2,16 1,27 1,03
25 fps → 209 fps (up) 1,75 0,800 2,16 1,27 1,03
Figura 4.18: GRF bilaterale normalizzata [BW] — confronto frame rate (Trial 2, CMJ). Il metodo com_model assegna \(F = m \cdot \ddot{\mathbf{r}}_\text{CoM}\) in modo simmetrico tra i due piedi; la GRF bilaterale (somma) è la grandezza fisica rilevante. Nativo (blu) e 208,6 fps (verde) mostrano la doppia struttura del CMJ: picco di braking (≈1,5 BW), unloading di transizione, picco propulsivo (≈3,9 BW) e picco di atterraggio post-volo. La variante a 100 fps (ciano tratteggiato) recupera il picco propulsivo (3,44 BW, –12%), primo punto sopra la soglia di Nyquist (~80 fps). A 50 fps (arancio, cerchi) e 25 fps (rosso, quadrati) la fase propulsiva è invisibile: una sola gobba larga nella fase di braking, poi declino verso lo stacco. La variante 25 fps→209 fps (viola, triangoli) si sovrappone al 25 fps grezzo, confermando che il ricampionamento non recupera il picco non campionato. La banda azzurra indica la fase di volo del nativo.

L’analisi rivela un’asimmetria fondamentale tra profilo cinematico e cinetico. Sotto il profilo cinematico, 25 fps è una soglia operativa accettabile per la descrizione semi-quantitativa del CMJ in soggetti non-elite: la sequenza delle fasi, il ROM e la simmetria bilaterale rimangono interpretabili, e lo sfasamento di un periodo di campionamento (40 ms) non altera la diagnosi funzionale del gesto né i confronti comparativi tra soggetti.

Cineticamente la situazione cambia radicalmente. A 25 fps il metodo com_model non sottostima il picco propulsivo: lo elimina. Il picco di atterraggio (~3,0 BW nativo), distribuito su una finestra temporale più ampia, sopravvive parzialmente a bassa cadenza (2,18 BW a 50 fps, –27%); la propulsione, transiente più breve e acuto, scompare interamente (–55%). Per applicazioni che richiedono la stima della GRF propulsiva — valutazione della potenza esplosiva, confronti clinici, analisi del rischio lesionale — la soglia critica è ~80 fps; la variante a 100 fps, primo punto effettivo sopra questa soglia, recupera il picco con una sottostima del 12% rispetto al nativo, confermando empiricamente il limite teorico.

La variante con upsampling ricampiona il video da 25 fps a ~200 fps prima della pose estimation: RTMPose elabora una sequenza densa dove i frame intermedi sono sintetici, ottenuti per interpolazione dai fotogrammi originali. La Fig. 4.19 mostra che cinematica e GRF risultanti sono indistinguibili dal 25 fps grezzo: il picco propulsivo pre-stacco resta 1,75 BW (Tab. 4.16). La pose estimation su frame sintetici produce pose coerenti con il moto interpolato, ma non recupera l’accelerazione del CoM durante i ~100 ms della propulsione — un’informazione mai acquisita dal sensore hardware.

Figura 4.19: Effetto del ricampionamento temporale (Trial 2, CMJ). Pannello sinistro: angolo del ginocchio destro (IK). Pannello destro: GRF verticale piede destro normalizzata [BW]. La variante 25 fps ricampionata a 209 fps (viola tratto-punto) è visualmente sovrapponibile al 25 fps originale (rosso quadrati) sia in cinematica sia in dinamica, mentre la baseline nativa (blu) mostra il picco GRF corretto (approx1,95 BW per piede, 3,9 BW bilaterale totale). Il ricampionamento migliora la continuità visiva della curva senza recuperare il picco di accelerazione non campionato.

4.9 Profiling tempi di esecuzione

Il confronto tra varianti ha chiarito due asimmetrie: la risoluzione spaziale è quasi ininfluente sulla qualità del segnale biomeccanico, mentre il frame rate determina in modo critico la fedeltà dei picchi dinamici. Queste stesse variabili incidono però anche sul costo computazionale della pipeline, e non sempre in modo proporzionale al loro impatto qualitativo.

I tempi di elaborazione sono stati misurati automaticamente dal motore della pipeline, che cronometra ogni nodo del grafo di varianti dall’invocazione del processo fino al completamento, registrando la durata in secondi nel file variant_dag.json del trial corrispondente. Tredici step indipendenti sono stati cronometrati: pose estimation 2D, allineamento temporale dei frame, sincronizzazione multicamera, associazione persone, triangolazione 3D, filtraggio, marker augmentation, scaling del modello, cinematica inversa (IK), stima GRF, dinamica inversa (ID), reazioni articolari (JRA) e generazione del report. Il profiling è stato condotto sull’hardware di acquisizione utilizzato per l’intera analisi: MacBook Pro con chip Apple M2 Max (12 core: 8 performance + 4 efficiency), 32 GB RAM. La stima della posa bidimensionale è eseguita su acceleratore grafico tramite Apple Metal Performance Shaders (MPS) con backend ONNXRuntime; tutti gli step OpenSim (IK, ID, JRA) operano invece su CPU. Il trial di riferimento per il profiling è il trial_04 (493 fotogrammi a circa 200 fps, durata del gesto 2,46 s), unico trial del dataset principale per il quale il grafo delle varianti registra la JRA completamente eseguita su tutte le configurazioni. L’analisi si struttura in due parti: prima si quantifica la distribuzione dei tempi sul trial_04 includendo la JRA, per evidenziarne il peso computazionale; poi, esclusa la JRA in quanto passo non riuscito (Sezione 4.7), il confronto si estende a tutti i trial della sessione.

Tabella 4.17: Setup di misurazione: step cronometrati, tecnologia e fase della pipeline. Hardware: MacBook Pro Apple M2 Max, 32 GB RAM.
Step Tecnologia Fase
Pose estimation 2D GPU (Apple MPS, ONNXRuntime) Pose2Sim
Allineamento, sincronizzazione, triangolazione, filtro, augmentation CPU Pose2Sim
Scaling modello muscoloscheletrico CPU OpenSim
Cinematica inversa (IK) CPU OpenSim
Stima GRF CPU OpenSim
Dinamica inversa (ID) CPU OpenSim
Reazioni articolari (JRA) CPU OpenSim

Nella configurazione di riferimento — frame rate nativo (approx208 fps), risoluzione 1080p — il tempo totale di elaborazione ammonta a 137 s. La distribuzione tra le fasi è fortemente asimmetrica: la JRA assorbe 54,8 s (40% del totale), la IK 35,6 s (26%), la pose estimation GPU 21,5 s (16%). Le fasi Pose2Sim successive all’inferenza della posa — sincronizzazione, triangolazione, filtraggio, augmentation — richiedono complessivamente 16,7 s (12%). Scaling, GRF e ID incidono in misura trascurabile (< 3 s ciascuna). Il quadro che emerge è quello di una pipeline in cui il bottleneck computazionale si colloca interamente nel comparto OpenSim CPU: IK e JRA da sole rappresentano il 66% del tempo totale, lasciando alla fase GPU un ruolo minoritario nella determinazione dei tempi complessivi. La Fig. 4.20 mostra la distribuzione per fase al variare della cadenza di acquisizione.

Figura 4.20: Distribuzione del tempo di elaborazione per fase di pipeline (trial_04, CMJ con atterraggio rigido, JRA inclusa). Cinque configurazioni: baseline nativo e 480p a frame rate invariato, poi 100 fps, 50 fps e 25 fps. I colori identificano le fasi; i valori in cima alle barre indicano il tempo totale in secondi.

La riduzione della cadenza di acquisizione produce uno speedup sostanziale sull’intera pipeline, mentre la riduzione della sola risoluzione spaziale non genera alcun risparmio misurabile: la variante a 480p con frame rate nativo impiega un tempo di 136,6 s, praticamente identico al baseline a 1080p (137,1 s, speedup 1,00×). La variante a 480p non riduce il numero di fotogrammi processati dalla pose estimation — il modello ricampiona l’immagine internamente a dimensione fissa prima dell’inferenza — né il numero di campioni temporali elaborati da OpenSim: la risoluzione spaziale è semplicemente irrilevante per il costo computazionale. Il beneficio cresce in modo marcato con la riduzione del frame rate: 100 fps porta il tempo totale a 81,9 s (speedup 1,67×), 50 fps a 57,6 s (speedup 2,38×), 25 fps a 44,3 s (speedup 3,09×). In termini di rapporto tra tempo di elaborazione e durata del gesto, la configurazione a 25 fps processa il video in circa 18 volte il suo tempo reale, 100 fps in 33 volte, contro le 56 volte del baseline. La Tab. 4.18 riassume i confronti.

Tabella 4.18: Confronto tempi di elaborazione per configurazione (trial_04, CMJ atterraggio rigido, 2,46 s, JRA inclusa). Pose2Sim: dalla pose estimation a marker augmentation; OpenSim: scaling, IK, GRF, ID, JRA e report. Speedup relativo al baseline nativo.
Configurazione Pose2Sim (s) OpenSim (s) Totale (s) Speedup Tempo/video
Nativo (208 fps, 1080p) 39,3 97,8 137,1 1,00× 55,7×
480p (208 fps) 38,8 97,8 136,6 1,00× 55,5×
100 fps (1080p) 28,2 53,7 81,9 1,67× 33,3×
50 fps (1080p) 23,0 34,6 57,6 2,38× 23,4×
25 fps (1080p) 21,5 22,8 44,3 3,09× 18,0×

L’insensibilità al downscaling spaziale e la forte dipendenza dalla cadenza temporale si spiegano con l’architettura dei due comparti. La fase GPU (pose estimation) elabora i fotogrammi uno a uno: il costo per fotogramma è pressoché costante indipendentemente dalla risoluzione in ingresso, perché il modello RTMPose opera su un’immagine ricampionata internamente a dimensione fissa prima dell’inferenza; ridurre la risoluzione del video di acquisizione ha quindi un impatto trascurabile. Il costo totale della fase GPU scala invece linearmente con il numero di fotogrammi, e una riduzione da 208 a 25 fps dimezza quasi il tempo di inferenza (da 21,5 a 9,1 s). Il comparto OpenSim è ancora più sensibile alla cadenza: IK e JRA operano su traiettorie 3D discretizzate sulla griglia temporale del trial, e il loro costo cresce proporzionalmente al numero di campioni. A 25 fps la JRA si riduce da 54,8 a 9,4 s (–83%), la IK da 35,6 a 7,4 s (–79%): il comparto OpenSim da solo passa da 97,8 a 22,8 s, uno speedup di 4,3×.

Il design a grafo di varianti (DAG) amplifica ulteriormente questi vantaggi in un contesto di analisi comparativa multi-variante: i nodi di pose estimation e triangolazione a un dato fps/risoluzione sono condivisi tra tutte le varianti che differiscono solo per GRF method o scaling, eliminando ogni ricalcolo ridondante. In un’analisi batch dell’intera sessione con le varianti implementate, questo meccanismo di riuso riduce il tempo cumulato di Pose2Sim proporzionalmente alla dimensione della famiglia di varianti che condivide la stessa radice nel grafo.

Poiché la JRA ha prodotto risultati inaffidabili — come evidenziato in Sezione 4.7 — includerla nel profiling di una pipeline operativa sarebbe fuorviante: i 54,8 s che assorbe nella configurazione nativa rappresentano il costo di un’analisi che non ha restituito un output utilizzabile. Escludendo la JRA è possibile confrontare i tempi sull’intera sessione e ottenere una stima più realistica del carico computazionale effettivo. Per rendere il confronto indipendente dalla durata del gesto, i tempi sono normalizzati rispetto alla durata del trial: il valore riportato è il fattore real-time, ossia quante volte il tempo di elaborazione supera la durata dell’acquisizione.

I quattro trial di sessione_09 mostrano un andamento coerente (Fig. 4.21, Tab. 4.19). Nella configurazione nativa il fattore real-time varia tra 33,5× e 38,1×; la dispersione tra trial riflette un overhead fisso di inizializzazione del modello OpenSim che pesa proporzionalmente di più sui trial più brevi. A 100 fps il fattore scende a 19–30×, a 50 fps a 14–21× e a 25 fps a 12–18×. Nessuna configurazione si avvicina al real-time processing: anche nella configurazione più economica la pipeline richiede circa 12 volte la durata del gesto, valore atteso per un’architettura batch non ottimizzata per la latenza.

Figura 4.21: Fattore real-time (tempo di elaborazione / durata trial, JRA esclusa) per tutti i trial di sessione_09 a quattro cadenze (nativo, 100 fps, 50 fps, 25 fps). La linea tratteggiata indica il limite real-time (1×). La dispersione al nativo si riduce progressivamente; a 25 fps i quattro trial si attestano tra 12× e 18×.
Tabella 4.19: Fattore real-time (elaborazione / durata trial) senza JRA, per i quattro trial di sessione_09. Nativo = fps di acquisizione originale (~209 fps).
Trial Durata (s) Nativo (×) 100 fps (×) 50 fps (×) 25 fps (×)
Trial 01 3,04 34,1 18,9 13,9 12,1
Trial 02 1,93 38,1 30,5 20,5 17,8
Trial 03 2,05 38,0 26,4 19,9 16,9
Trial 04 2,46 33,5 22,2 16,7 14,2

4.10 Generalizzabilità: confronto tra soggetti

Tutti i risultati fino a questo punto riguardano un unico individuo — soggetto maschio adulto, 180 cm, 70 kg — sul quale la pipeline è stata sviluppata e validata parametricamente. Una pipeline di analisi del movimento non è utile se i suoi output sono affidabili solo nella condizione per cui è stata costruita. Il dataset secondario di sessione_10 offre un banco di prova più ampio: tre soggetti femminili con altezze e masse differenti, che eseguono un gesto tecnicamente diverso (salto con braccia a supporto) in condizioni di acquisizione meno ottimali rispetto al dataset principale. Proprio questa imperfezione rende il confronto informativo: se la pipeline produce output coerenti e plausibili anche in condizioni non ideali, la sua robustezza ne risulta rafforzata.

Il dataset secondario è costituito da tre soggetti di sesso femminile (sessione_10), acquisiti con il medesimo setup tecnico della sessione principale. I soggetti si presentavano scalzi e indossavano una maglietta sportiva aderente e pantaloni ampi e morbidi — una scelta che garantisce visibilità del tronco ma può ridurre la precisione della stima della postura agli arti inferiori, dove il tessuto non aderente segue i segmenti con minore fedeltà. I salti sono stati eseguiti senza riscaldamento sistematico e in regime sub-massimale; i picchi di forza osservati risultano pertanto inferiori ai valori di riferimento della letteratura su atleti allenati e non devono essere confrontati direttamente con essi. Il confronto tra soggetti è qualitativo e descrittivo, non statistico. Va precisato che soggetto_02 ha eseguito un salto doppio: due impulsi propulsivi consecutivi con un breve contatto al suolo intermedio, anziché il singolo ciclo degli altri due soggetti. Di conseguenza, il profilo cinematico del gesto di soggetto_02 non è comparabile; per questo soggetto il confronto inter-soggetto si limita ai picchi di forza. I dati antropometrici e la modalità esecutiva sono riassunti in Tab. 4.20.

Tabella 4.20: Caratteristiche antropometriche e modalità esecutiva dei tre soggetti secondari.
Soggetto Sesso Altezza Massa Tipo di salto N trial Note
soggetto_02 F 153 cm 45,0 kg salto con braccia a supporto (doppio) 1 confronto limitato ai picchi di forza
soggetto_03 F 168 cm 65,0 kg salto con braccia a supporto 1 esecuzione standard
soggetto_04 F 160 cm 42,5 kg salto con braccia a supporto 1 esecuzione conservativa

La Fig. 4.22 mostra le curve angolari al ginocchio, all’anca e alla caviglia per soggetto_03 e soggetto_04 — i soli due soggetti con un gesto a singolo ciclo direttamente confrontabile. In entrambi, il pattern di flessione-estensione atteso è riconoscibile, con simmetria bilaterale DX/SX conservata entro 5–10° per tutte le articolazioni. La variabilità inter-soggetto è concentrata nelle ampiezze: soggetto_03 raggiunge circa 66° di ROM al ginocchio, soggetto_04 si ferma attorno a 55° — una differenza che riflette diverse strategie motorie, non un errore di stima. soggetto_02 è escluso dal confronto del profilo; il suo ROM al ginocchio di ~107° è di per sé plausibile ma appartiene a un’esecuzione strutturalmente diversa.

Figura 4.22: Angoli articolari inter-soggetto (ginocchio, anca, caviglia) per soggetto_03 e soggetto_04. Normalizzazione 0–100% sulla durata del trial. soggetto_02 escluso (salto doppio, profilo non confrontabile).

La normalizzazione al peso corporeo riduce la variabilità assoluta della GRF tra i tre soggetti. I picchi di forza verticale variano da 1,94 a 2,20 BW (media: 2,04 BW), coerenti con il regime sub-massimale descritto in precedenza e inferiori del 7% rispetto al range di riferimento per atleti allenati (2,2–2,8 BW). In termini assoluti, il rapporto tra il soggetto più leggero (soggetto_02, 858 N) e il più pesante (soggetto_03, 1408 N) è di 1,7×; normalizzato al peso corporeo, questa dispersione si riduce a 0,26 BW (13% di variazione relativa). La Fig. 4.23 mostra l’overlay delle curve allineato allo stacco (t = 0 s), che rende direttamente confrontabili le fasi di caricamento pre-salto e di atterraggio tra soggetti. Per soggetto_02 la curva rappresenta il solo primo impulso del salto doppio. I dati sintetici sono riportati in Tab. 4.21.

Figura 4.23: GRF inter-soggetto normalizzata al peso corporeo (BW), allineata al punto di stacco (t = 0 s). La curva tratteggiata (soggetto_02) mostra solo il primo impulso del salto doppio. La banda grigia indica il range di riferimento per CMJ su atleti allenati (2,2–2,8 BW).
Tabella 4.21: Picchi GRF normalizzati per peso corporeo (BW) e impulsi, inter-soggetto.
Soggetto Massa [kg] Picco GRF [BW] Picco GRF [N] Impulso [BW·s] Nota
soggetto_02 45,0 1,94 858 1,01 sub-massimale (1° impulso)
soggetto_03 65,0 2,20 1408 1,12 entro range letteratura
soggetto_04 42,5 1,98 830 1,05 sub-massimale

L’analisi di Joint Reaction Analysis inter-soggetto non è inclusa in questa sezione. Come descritto in Sezione 4.7, le varianti a baseline 25 fps rimangono indisponibili per i dati di reazione articolare (joint_reaction.sto) a causa del fallimento sistematico di AnalyzeTool. Una trattazione qualitativa dei picchi di momento articolare al ginocchio sarà proposta in Sezione 5.4 insieme ai limiti intrinseci della stima delle reazioni articolari in assenza di co-contrazione muscolare. Per riferimento, @cleather_2013_hip_knee riporta picchi di compressione tibio-femorale di 8–12 BW durante il landing di un salto verticale su atleti allenati; questi valori rappresentano le forze di reazione articolare (JRF), non i momenti ID qui presentati.

Nel complesso, il pattern del salto verticale è riconoscibile in tutti e tre i soggetti, la simmetria bilaterale è conservata entro 5–10° e la normalizzazione per peso corporeo riduce la dispersione GRF assoluta a meno del 13%. L’eterogeneità delle ampiezze articolari — da 55° di ROM al ginocchio di soggetto_04 a oltre 100° di soggetto_02 — riflette strategie motorie intrinseche e un’esecuzione sub-massimale, non artefatti della pipeline. Che la stessa catena di elaborazione produca output plausibili su soggetti con altezze tra 153 e 168 cm e masse tra 42,5 e 65 kg indica che il sistema non è calibrato su un singolo individuo.