Releases: bdbais/tacticalvision-releases
Release list
TacticalVision 0.9.0
Unisci video: piu' montaggi in un solo video, con cartello iniziale, titolo e didascalie in sovrimpressione e, se vuoi, una cornice.
I video registrati finiscono nella galleria (Movies/TacticalVision) e hanno l'audio. Mentre registri lo schermo resta acceso, e il tasto Indietro salva la sessione invece di perderla.
Il taglio dei soli scambi funziona anche con i video di WhatsApp, di YouTube e in formato MKV.
Il riconoscimento della pallina non scambia piu' mani e corpi dei giocatori per la pallina. Serve il nuovo modello di posa: scaricalo di nuovo dalle impostazioni (9 MB).
Corretti anche: l'esportazione dalle impostazioni che chiudeva l'app, l'anagrafica dei giocatori che poteva perdersi se l'app si chiudeva durante un salvataggio, il servizio nei set a 21 punti.
TacticalVision 0.8.0 - come riprendere
Un manuale, con i numeri misurati
Provando l'app su una partita vera e' venuto fuori che la differenza fra un'analisi che funziona e una che non trova niente sta quasi tutta nella ripresa. Ora c'e' una guida, in app e sul sito, e non e' fatta di consigli a sentimento:
Una pallina e' larga 4 cm, il tavolo 274: la pallina e' un settantesimo del tavolo. Se il tavolo occupa 800 pixel nel fotogramma, la pallina ne occupa 11; se ne occupa 300, scende a 4. Sotto i sei pixel la sua forma non si distingue piu' dal rumore, e viene scartata insieme a tutto il resto.
Da qui discende tutto il resto: il tavolo deve riempire buona parte della larghezza. L'angolo conta meno di quanto sembri - anche dall'angolo del tavolo, come si riprende di solito, va bene.
L'errore piu' costoso non si vede
WhatsApp ricomprime il video a 848 pixel di larghezza. La stessa pallina che nell'originale ne occupava tredici si riduce a sei, e finisce sotto la soglia. L'app ora avvisa quando un video importato e' troppo stretto, invece di far aspettare un'analisi che non trovera' nulla.
Un difetto vero, corretto
L'analisi sottocampionava sempre di almeno due volte, anche su un video gia' piccolo: una pallina di sei pixel ne conservava tre. Su un video mandato da WhatsApp era letale.
Impronta SHA-256: 400f096dbb77e1070b3807a55acba4999d3cd27deacbc845665236996bf4b0a6
TacticalVision 0.7.0 - calibrazione e montaggio
Calibrazione rifatta
Il primo tocco su un angolo e' sempre approssimativo, e non per disattenzione: su un video alto pochi centimetri il dito copre mezzo tavolo, e l'angolo esatto sta sotto il polpastrello proprio mentre lo si cerca.
Ora il tocco serve solo a dire "l'angolo e' da queste parti". La precisione arriva dopo:
- i quattro angoli sono elencati sotto, con le loro coordinate
- si sceglie quello da sistemare toccando la riga
- lo si sposta con le frecce, un pixel alla volta, e tenendo premuto si ripete
- si puo' passare a passo largo per i movimenti grossi
- una lente mostra ingrandito il punto esatto sotto il segnalino, in un angolo dove il dito non arriva
- gli angoli si possono anche trascinare
Il segnalino e' un mirino e non un disco: un disco coprirebbe proprio il pixel che si sta cercando.
Il montaggio non si nasconde piu'
Il pulsante "tieni solo gli scambi" compariva solo se l'analisi aveva trovato degli scambi. Chi non ne trovava restava convinto che la funzione non esistesse, mentre il problema era un altro. Ora il pulsante c'e' sempre - spento quando non c'e' niente da tenere, e con scritto perche'.
Video importati a risoluzione maggiore
L'analisi dei video importati lavora a 960 pixel di larghezza invece di 640. Una pallina da 40 mm ripresa da qualche metro occupa una decina di pixel, che sottocampionati diventano tre o quattro: troppo pochi perche' forma e riempimento dicano qualcosa. Dal vivo resta com'era, perche' li' il tempo e' un vincolo.
Impronta SHA-256: b4832684830f61b2db029ee04669e34837fddbd40c62c53d08182f80906c0391
TacticalVision 0.6.0 - rileggere un video
Rileggere un video con il motore attuale
Il riconoscimento cambia da una versione all'altra, a volte parecchio: fra la 0.3 e la 0.4 il rilevamento della pallina e' passato dal 60 al 94 per cento. Un video letto prima porta ancora i numeri di allora.
Ora il dettaglio di ogni sessione dice con quale versione e' stata prodotta l'analisi e, se e' vecchia, lo segnala e offre di rifarla. La rilettura tocca solo i numeri: giocatori, partita, note, data e punti segnati a mano restano dov'erano, perche' non li ha prodotti l'analisi e rigenerarli sarebbe una perdita.
La calibrazione si conserva
Prima la sessione ricordava se il tavolo era calibrato, non come: i quattro angoli si perdevano alla chiusura, e nessuno poteva piu' rifare quell'analisi in centimetri. Ora l'omografia viene salvata con la sessione, e una rilettura riparte dalla stessa geometria senza chiedere di nuovo nulla.
Per le sessioni gia' esistenti la calibrazione non c'e' - non era mai stata scritta - e l'app lo dice invece di far finta: quelle riletture non avranno velocita' ne' mappa dei rimbalzi.
Impronta SHA-256: 72dd0b803571914c15dc827c8c751d6c6da703b817dbbfb3eddda3b30578f0e9
TacticalVision 0.5.0 - la Partita, e il punteggio
La Partita
I nomi dei giocatori stavano nelle impostazioni, e non e' il loro posto: non sono una preferenza dell'app, sono un dato di quella partita. E una partita si riprende spesso in piu' spezzoni - la scheda si riempie, si cambia lato, la batteria finisce - che devono restare la stessa cosa.
Ora c'e' un contenitore Partita con i due giocatori, la data, il luogo e il punteggio da cui si riparte. Ogni video ne e' uno spezzone. Da qui prenderanno i loro dati anche la grafica sovrimpressa e le statistiche.
Il punteggio, con le regole vere
Non un contatore: un set finisce a 11 ma solo con due punti di scarto, e il servizio cambia ogni due punti tranne dal 10 pari in poi, dove passa a ogni punto. Il tabellino mostra set, punti e chi batte, e segnala il set point. Restano possibili le partite a 21.
Le regole hanno i loro test: sono poche ma nessuna e' ovvia, e sbagliarle si vede subito.
Segnare senza toccare il telefono
Una tastiera Bluetooth, un clicker da presentazione o persino i tasti volume di un paio di auricolari arrivano ad Android come eventi di tasto normali:
- lato vicino: freccia sinistra, A, 1, volume giu'
- lato lontano: freccia destra, L, 2, volume su'
- annulla: Backspace
- pausa: Spazio
Un clicker da pochi euro ha esattamente i due pulsanti che servono. E chi segna non tocca il telefono che riprende: spostarlo invaliderebbe la calibrazione.
Pausa manuale
Si mette in pausa la registrazione, e con essa l'analisi: durante una pausa non c'e' gioco, e tenerla accesa raccoglierebbe solo falsi positivi. Il tempo in pausa non entra nei tempi del video.
Impronta SHA-256: 6d37c7a008a869597ada815d382d173e6b29e7864b7310241f512d0f040d63a7
TacticalVision 0.4.0 - la pallina sfocata
La correzione che conta
Su un video vero l'analisi non trovava niente. La causa era un mio errore di criterio, e il banco di prova non poteva accorgersene perche' disegnava la pallina come un disco perfetto.
Un telefono espone per circa un centesimo di secondo. In quel tempo una pallina in gioco percorre diversi centimetri, e sul sensore non lascia un disco ma una striscia lunga il triplo del suo diametro. Il rilevatore chiedeva che il blob fosse tondo: cosi' scartava la pallina esattamente quando si muove, cioe' sempre.
Il criterio giusto e' il riempimento, non la rotondita'. Una scia resta piena, perche' e' una striscia continua che occupa quasi tutto il suo rettangolo. Il bordo di un braccio che si muove - l'altro candidato tipico - e' invece una mezzaluna sottile e curva, e il suo rettangolo resta vuoto per meta'.
Ho aggiunto il tempo di posa al banco di prova, cosi' il problema si riproduce: il rilevamento crollava dal 96% al 59,6%. Con il criterio corretto risale al 94%, con la scia disegnata.
Quando non trova niente, lo dice
Se un'analisi finisce con zero scambi, l'app ora mostra cosa ha visto - quanti candidati e perche' sono stati scartati - e cosa si puo' cambiare nella ripresa. Un messaggio generico non lascerebbe niente da provare.
I colori del tavolo
Blu da gara per il piano, arancione della pallina, bianco delle linee. Una heatmap adesso somiglia a un tavolo visto dall'alto invece che a un grafico qualunque.
Nomi e data della partita
Importando un video si possono creare i giocatori sul momento, senza uscire dalla schermata, e indicare quando si e' giocata la partita: un video di marzo guardato a settembre va nello storico dove gli spetta.
Montaggio
"Tieni solo gli scambi" e' ora un'azione con il suo pulsante, in cima e nella barra, invece di una sezione in fondo alla pagina.
Impronta SHA-256: f9a0d1b6e36fe7cf427e8c11cc5f47456a1e227130cbce6657756390c262dcb7
TacticalVision 0.3.3 - icona nuova
Icona nuova: la pallina che rimbalza sul tavolo.
Non una racchetta, che direbbe soltanto "tennistavolo": questo e' cio' che l'app fa, seguire la pallina e riconoscere dove tocca il piano.
Due vincoli hanno deciso il disegno, e sono geometrici, non estetici. Il primo: il lanciatore mostra solo il cerchio centrale di 72 unita' su 108, quindi ogni forma - raggio della pallina compreso - deve starci dentro; il primo tentativo aveva la pallina tranciata dalla maschera tonda. Il secondo: a 48 px, che e' la dimensione in cui l'icona vive davvero, sopravvivono tre forme e non una di piu'; una versione con rete, doppio rimbalzo e linee di campo era leggibile solo ingrandita, cioe' mai.
Supportate anche le icone a tema di Android 13, con una versione a tinta unita in cui il piano resta un contorno invece di diventare una macchia.
Sito e immagini di anteprima allineati allo stesso disegno.
Impronta SHA-256: a6cb746e0c3c9950a1518805b54df70db249d3e0c15c7207b8f23f12385082b8
TacticalVision 0.3.2
Il sito del progetto ha il suo indirizzo: https://tacticalvision.bais.info
Il motore di analisi non cambia rispetto alla 0.3.1.
Impronta SHA-256: 19d1e38ae2ecf86fff222f2b27f89d8ec302b12ac35afe6947c10be00c65d59c
TacticalVision 0.3.1 - montaggio automatico
Tieni solo gli scambi
In una registrazione di allenamento la pallina e' in campo meno di meta' del tempo: il resto e' raccoglierla, asciugarsi, parlare. L'app sa gia' dove comincia e dove finisce ogni scambio, quindi sa anche cosa buttare.
Dal dettaglio di una sessione, Tieni solo gli scambi crea una copia del video con il solo gioco e la salva fra i video del telefono, in Movies/TacticalVision.
I fotogrammi vengono copiati, non ricodificati: nessuna perdita di qualita', nessuna attesa lunga, nessun consumo di batteria. Il prezzo e' che un taglio puo' cadere solo su un fotogramma chiave, perche' quelli intermedi non si decodificano da soli: il montaggio parte quindi dal fotogramma chiave che precede lo scambio. Torna comodo, perche' cosi' il servizio si vede per intero invece di cominciare a meta'.
Su un filmato di prova: da 14,2 a 9,5 secondi, con un terzo di tempo morto tolto. Su una registrazione vera di allenamento il guadagno e' molto maggiore.
Requisiti: Android 8.0+, ARM (arm64-v8a / armeabi-v7a).
Impronta SHA-256: f92868c2e8bb43fb4cdbde82464043707603ad296a167a10e7e5c7ceba926332
TacticalVision 0.3.0 - da provare sul campo
Versione pensata per il primo giro di prove vere.
Creazione guidata degli avversari
Cinque domande invece di un campo "nome". Ognuna dice a cosa serve e ognuna si puo' saltare:
- Chi e' - nome e societa'
- Con che mano gioca - e' l'unica cosa che il riconoscimento dei colpi non puo' dedurre da solo: per distinguere un dritto da un rovescio deve sapere da che parte sta la mano che impugna
- Che impugnatura usa - non cambia i calcoli, resta come promemoria
- Che tipo di giocatore e' - la tua impressione a occhio diventa un termine di paragone: se lo segni come attaccante ma l'analisi trova scambi lunghi, quella differenza e' gia' un'informazione
- Qualcosa da ricordare - piu' un riepilogo di cio' che hai risposto
Cosa provare, e cosa aspettarsi
Telefono sul lato lungo, a bordo tavolo, poco sopra l'altezza della rete, con tutto il piano nell'inquadratura. Calibra i quattro angoli prima di registrare, altrimenti niente velocita' ne' mappa dei rimbalzi.
L'app preferisce perdere un evento piuttosto che inventarlo: su video sintetici riconosce circa quattro colpi su cinque e non ne inventa nessuno. I conteggi sono quindi per difetto, mentre le proporzioni - dove cade la palla, dove serve, quanto durano gli scambi - restano fedeli. Ogni sessione riporta in chiaro quanto la pallina e' stata seguita: e' la misura di quanto fidarsi di quei numeri.
Le condizioni difficili sono: poca luce, pubblico che si muove dietro il tavolo, tavolo piccolo nell'inquadratura.
Requisiti: Android 8.0+, ARM (arm64-v8a / armeabi-v7a).
Impronta SHA-256: c7f03642e7ccf8d793eb1a4c1d1fc53bf531078ba93dc6393c2713e224ff50e1