Che cos’è un codice a catena?

Nella computer grafica e nell’elaborazione delle immagini, un codice a catena è un algoritmo utilizzato per codificare i contorni di un oggetto in un’immagine in bianco e nero o monocromatica. La sequenza di codici risultante può descrivere come disegnare il contorno dell’oggetto rispetto all’immagine in cui si trova, oppure può essere una raccolta di indicazioni relative alla posizione sul contorno in cui è iniziato l’algoritmo, fornendo essenzialmente passaggi che può essere seguito per ridisegnare l’oggetto. Questi codici possono essere normalizzati secondo una formula e quindi confrontati con un altro codice a catena per determinare se due oggetti sono identici. Un codice a catena può essere utilizzato per isolare oggetti in un programma di visione artificiale o segmentazione di immagini nell’elaborazione delle immagini, sebbene più comunemente possa essere utilizzato nei programmi di riconoscimento ottico dei caratteri (OCR).

Sebbene ci siano diversi algoritmi stabiliti per un codice a catena, il concetto di base è lo stesso in ciascuno. Innanzitutto, viene individuato il bordo di un oggetto, di solito spostando pixel per pixel attraverso un’immagine raster. Una volta individuato, la posizione viene registrata e vengono rilevati i bordi circostanti. A seconda che l’algoritmo di rilevamento si sposti in senso orario o antiorario, la posizione corrente viene spostata in una direzione o nell’altra lungo il bordo finché non torna alla posizione originale.

Ogni volta che la posizione corrente si sposta, viene registrato un numero nel codice catena. Questo numero indica generalmente la direzione che è stata spostata lungo il bordo dell’oggetto. Ad esempio, se un algoritmo di codice a catena sta seguendo un bordo dritto da destra a sinistra, ogni volta che il bordo viene tracciato a sinistra, il codice numerico per sinistra viene aggiunto alla fine del codice. Il codice risultante è una stringa di numeri in cui, se si segue la sequenza da un punto di partenza arbitrario e si posiziona un pixel ad ogni passaggio, il contorno dell’oggetto verrebbe ridisegnato.

Una volta completata la stringa di numeri che compongono il codice, è possibile applicarvi diversi algoritmi per aiutare a fare confronti con altre sequenze di codici a catena. Innanzitutto, il numero viene normalizzato ruotando il numero iniziale fino a determinare il valore intero più basso. In questo modo è possibile confrontare due oggetti che hanno lo stesso contorno, indipendentemente da dove su ciascun oggetto è iniziata la codifica.

Esistono altre versioni più complesse dell’algoritmo del codice a catena. Questi includono la codifica basata su vettori in cui il contorno di un oggetto è descritto da una sequenza di coordinate collegate da linee, sebbene questo metodo possa essere con perdita se utilizzato su contorni finemente dettagliati. Esiste anche una versione dell’algoritmo che utilizza la codifica run-length (RLE) per comprimere ulteriormente i codici per oggetti eccezionalmente grandi o complessi in modo che possano essere archiviati in modo più efficiente.