Sto progettando una trasmissione radio di immagini ed uno dei vincoli e' che non e' garantita la perfetta qualita' della trasmissione con previsione di errori nella fase aerea e cercado una soluzione mi sono imbattuto nell'algoritmo Reed Solomon che peraltro ha una storia affascinante che riguarda le sonde Voyager
In pratica quando Voyager hanno superato Saturno il segnale era diventato cosi' debole che anche una ridondanza del 100% non permetteva di ricevere in modo affidabile. Quindi da terra i computer di bordo sono stati riprogrammati per utilizzare una codifica a correzione di errore Reed Solomon...questo algoritmo e' anche alla base della correzione degli errori nella lettura delle tracce dei CD audio rigati
A differenza di CRC algoritmo che individua se il dato e' corrotto o meno ma non dice come riparare il flusso di dati, Reed Solomon e' un algoritmo FEC (Forward Error Correction) che permette di correggere i bit errati dove presenti
Reed Solomon permette di correggere uno o piu' errore in un pacchetto dati usando dati aggiuntivi di controllo (tipicamente in un pacchetto di 255 bytes 223 bytes sono del messaggio ed i rimanenti coefficienti per l'algoritmo si possono correggere fino a 11 bytes trasmessi erroneamente.
Questo un video sulla spiegazione dal punto di vista matematico del funzionamento
https://www.youtube.com/watch?v=fBRMaEAFLE0
Il programma sottostante, usando una libreria Python, prende una immagine jpeg, la codifica con Reed Solomon, introduce degli errori e poi la ricostruisce. Visto che si tratta di un jpg e quindi compresso l'immagine con gli errori casuali non risultera' leggibile da un comune programma di gestione immagini

Nessun commento:
Posta un commento