Wat is een kettingcode?
In computerafbeeldingen en beeldverwerking is een kettingcode een algoritme dat wordt gebruikt om de contouren van een object in een zwart -wit of monochrome afbeelding te coderen. De resulterende volgorde van codes kan beschrijven hoe de omtrek van het object ten opzichte van de afbeelding waarin het zich bevindt, te tekenen, of het kan een verzameling richtingen zijn ten opzichte van de locatie op de omtrek waar het algoritme is gestart, in wezen stappen die kunnen worden gevolgd om het object opnieuw te tekenen. Deze codes kunnen worden genormaliseerd volgens een formule en vervolgens vergeleken met een andere kettingcode om te bepalen of twee objecten identiek zijn. Een kettingcode kan worden gebruikt voor het isoleren van objecten in een computer vision -programma of beeldsegmentatie bij beeldverwerking, hoewel deze vaker kan worden gebruikt in Optical Character Recognition (OCR) -programma's.
Hoewel er verschillende gevestigde algoritmen zijn voor een kettingcode, is het basisconcept in elk. Ten eerste bevindt de rand van een object zich, meestal door pixel te verplaatsen door pixEL door een rasterafbeelding. Eenmaal gelokaliseerd, wordt de positie geregistreerd en worden de omliggende randen gedetecteerd. Afhankelijk van of het detectie -algoritme met de klok mee of tegen de klok in beweegt, wordt de huidige locatie in de ene of de andere richting verplaatst totdat deze terugkeert naar de oorspronkelijke positie.
Elke keer dat de huidige positie beweegt, wordt een nummer opgenomen in de kettingcode. Dit nummer geeft in het algemeen de richting aan die langs de rand van het object is verplaatst. Als een ketencode -algoritme bijvoorbeeld een rechte rand van rechts naar links volgt, wordt elke keer dat de rand naar links wordt getraceerd, de numerieke code voor links toegevoegd aan het einde van de code. De resulterende code is een reeks getallen waarin, als de reeks wordt gevolgd vanuit een willekeurig startpunt en een pixel die bij elke stap is geplaatst, de omtrek van het object opnieuw wordt getekend.
Zodra de reeks getallen die makenDe code is voltooid, verschillende algoritmen kunnen erop worden toegepast om vergelijkingen te maken met andere ketencode -sequenties. Ten eerste wordt het nummer genormaliseerd door het startnummer te roteren totdat de laagste gehele waarde wordt bepaald. Op deze manier kunnen twee objecten met dezelfde omtrek worden vergeleken, ongeacht waar op elk object de codering is gestart.
Andere, meer complexe versies van het ketencode -algoritme bestaan. Deze omvatten vectorgebaseerde codering waarbij de omtrek van een object wordt beschreven door een reeks coördinaten die zijn verbonden door lijnen, hoewel deze methode verlies kan zijn bij gebruik op fijn gedetailleerde contouren. Er bestaat ook een versie van het algoritme dat gebruik maakt van run-length codering (RLE) om de codes verder te comprimeren voor uitzonderlijk grote of complexe objecten zodat ze op een efficiëntere manier kunnen worden opgeslagen.