Hvad er en kædekode?
I computergrafik og billedbehandling er en kædekode en algoritme, der bruges til at kode konturerne af et objekt i et sort / hvidt eller monokromt billede. Den resulterende kodesekvens kan enten beskrive, hvordan man tegner konturet af objektet i forhold til det billede, hvori det befinder sig, eller det kan være en samling retninger i forhold til placeringen på konturen, hvor algoritmen startede, hvilket i det væsentlige tilvejebringer trin, der kan følges for at tegne genstanden igen. Disse koder kan normaliseres efter en formel og derefter sammenlignes med en anden kædekode for at bestemme, om to objekter er identiske. En kædekode kan bruges til at isolere objekter i et computervisionsprogram eller billedsegmentering i billedbehandling, skønt den mere almindeligt kan bruges i optiske tegngenkendelsesprogrammer (OCR).
Selvom der er flere etablerede algoritmer til en kædekode, er det grundlæggende koncept det samme i hver. Først er kanten af et objekt placeret, normalt ved at flytte pixel for pixel gennem et rasterbillede. Når den først er placeret, registreres positionen, og de omgivende kanter registreres. Afhængigt af om detekteringsalgoritmen bevæger sig med uret eller mod uret, flyttes den aktuelle placering i en eller anden retning langs kanten, indtil den vender tilbage til den oprindelige position.
Hver gang den aktuelle position bevæger sig, registreres et tal i kædekoden. Dette tal angiver generelt den retning, der blev flyttet langs kanten af objektet. Hvis en kædekodealgoritme for eksempel følger en lige kant fra højre til venstre, tilføjes den numeriske kode til venstre i slutningen af koden, hver gang kanten spores til venstre. Den resulterende kode er en streng med numre, hvor, hvis sekvensen følges fra et vilkårligt udgangspunkt og en pixel placeret ved hvert trin, konturet af objektet tegnes igen.
Når strengen med numre, der udgør koden, er afsluttet, kan flere forskellige algoritmer anvendes til den for at hjælpe med at sammenligne med andre kædekodesekvenser. Først normaliseres tallet ved at dreje startnummeret, indtil den laveste heltalværdi er bestemt. På denne måde kan to objekter, der har den samme kontur, sammenlignes, uanset hvor på hvert objekt kodningen startede.
Andre, mere komplekse versioner af kædekodealgoritmen findes. Disse inkluderer vektorbaseret kodning, hvor konturet af et objekt er beskrevet af en sekvens af koordinater, der er forbundet med linjer, skønt denne metode kan være tabt, når den bruges på fint detaljerede konturer. Der findes også en version af algoritmen, der bruger kørelængde-kodning (RLE) til yderligere at komprimere koderne for usædvanligt store eller komplekse objekter, så de kan gemmes på en mere effektiv måde.