CODIFICA
Per la codifica dell’informazione si è fatto riferimento
allo standard Data Matrix esistente (standard ISO/IEC16022:
2006) e sono stati in primo luogo definiti i caratteri
d’interesse ed il numero di colori da utilizzare.
L’introduzione di altri colori per la composizione della
scacchiera comporta il passaggio da una base di dimensione n=
2 ad una più grande, aumentando così la profondità del
codice. In questo modo il codice occupa meno superficie, ed
a parità di superficie permette di inserire una quantità
di informazione che cresce esponenzialmente al crescere
della base. Nelle tabelle sottostanti vengono riportate le
combinazioni realizzabili al variare della base utilizzando
un byte di 8 bit:
N° di bit | 8 |
Base |
2 |
3 |
4 |
5 |
Combinazioni |
256 |
6561 |
65536 |
390625 |
Alternativamente, nella tabella sottostante, viene mostrato il numero di bit necessario alla codifica di 256 caratteri al variare delle dimensioni della base:
Base |
2 |
3 |
4 |
5 |
Bit necessari /256 caratteri |
8 |
6 |
4 |
4 |
Si è iniziato definendo una codifica a 5 colori, che sembrava adeguata per la realizzazione di un codice in grado di condensare adeguatamente l’informazione senza diventare eccessivamente complesso dal punto di vista della codifica.
ASCII è l'acronimo di American Standard Code for Information Interchange (ovvero Codice Standard Americano per lo Scambio di Informazioni).
È un sistema di codifica dei caratteri a 7 bit (in realtà 8 bit, di cui uno usato come bit di parità per rilevare eventuali errori) comunemente utilizzato nei calcolatori, proposto dall'ingegnere dell'IBM Bob Bemer nel 1961, e successivamente accettato come standard dall'ISO (ISO 646).
Alla specifica iniziale basata su codici di 7 bit fecero seguito negli anni molte proposte di estensione ad 8 bit, con lo scopo di raddoppiare il numero di caratteri rappresentabili. Nei pc si fa per l'appunto uso di una di queste estensioni, ormai standard di fatto, chiamata extended ASCII. In questo ASCII esteso, i caratteri aggiunti sono vocali accentate, simboli semigrafici e altri simboli di uso meno comune. I caratteri extended ASCII sono codificati nei cosiddetti codepage.
Il codice ASCII è il punto di partenza dell’algoritmo di codifica del DataMatrix a n bit.
La sequenza di operazioni effettuate dall’algoritmo di codifica è la seguente:
- la stringa da codificare viene disassemblata in caratteri singoli
- di ogni carattere viene ricavato, tramite il linguaggio di programmazione, il codice ASCII
- tale codice viene utilizzato come indice per rintracciare un codice personale collegato al carattere letto, all’interno di un file di testo appositamente creato
- il codice personale viene convertito dalla base 10 alla base scelta (a seconda del numero dei colori che si ritiene di utilizzare), utilizzando un numero di bit che sia capace di rappresentarlo
- vengono aggiunti dei bit di controllo in coda al codice ottenuto al punto precedente
- infine si creano quadretti colorati convertendo le cifre del numero ottenuto secondo una corrispondenza Cifra=Colore impostata appositamente
- tali quadretti vengono poi inseriti all’interno di una scacchiera (i cui angoli soddisfano delle caratteristiche necessarie al riconoscimento ed al corretto posizionamento dello schema in lettura per la successiva decodifica) ordinati secondo un algoritmo di interleaving
Come abbiamo visto, la codifica di tutti i caratteri ASCII utilizzando una base di dimensione 5 comporta l’uso di 4 bit. L’algoritmo di correzione degli errori esegue le somme parziali dei bit di codice per l’aggiunta di 3 bit di controllo per ogni carattere.
In questo modo si è quasi raddoppiata la lunghezza del codice, raddoppiando di fatto anche la possibilità di commettere errori, al fine di poterne correggere soltanto uno. Le valutazioni di questi aspetti hanno portato alla decisione di cambiare il sistema di codifica unitamente ad una sostanziale riduzione del set di caratteri codificabili. Tramite una routine software sono stati generati codici di 5 bit in base 5 in modo che avessero almeno 3 cifre diverse in identiche posizioni: i codici generati in tal modo ammontano a 74 unità, che sono sufficienti alla codifica di tutte le lettere, sia maiuscole che minuscole, dei numeri e dei simboli di punteggiatura più frequentemente utilizzati.
Utilizzando lo stesso sistema di confronto realizzato in precedenza per i codici a 7 bit, il software è in grado di individuare e correggere tutti gli errori singoli e di individuare gli errori doppi. In questo modo, riducendo il set di caratteri a quelli essenziali, si riesce a ridurre la lunghezza dei byte del 28% mantenendo lo stesso numero di errori correggibili (ed aumentandolo in percentuale dal 14% al 20%), avendo comunque un insieme di simboli estremamente versatile.