NL1024932C2 - Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. - Google Patents
Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. Download PDFInfo
- Publication number
- NL1024932C2 NL1024932C2 NL1024932A NL1024932A NL1024932C2 NL 1024932 C2 NL1024932 C2 NL 1024932C2 NL 1024932 A NL1024932 A NL 1024932A NL 1024932 A NL1024932 A NL 1024932A NL 1024932 C2 NL1024932 C2 NL 1024932C2
- Authority
- NL
- Netherlands
- Prior art keywords
- contour
- points
- point
- administration
- series
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/155—Segmentation; Edge detection involving morphological operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/16—Image preprocessing
- G06V30/168—Smoothing or thinning of the pattern; Skeletonisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/18—Extraction of features or characteristics of the image
- G06V30/182—Extraction of features or characteristics of the image by coding the contour of the pattern
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
- G06T2207/10008—Still image; Photographic image from scanner, fax or copier
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20036—Morphological image processing
- G06T2207/20044—Skeletonization; Medial axis transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30176—Document
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Geometry (AREA)
- Image Analysis (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Description
.*
Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata i
Gebied van de uitvinding
De onderhavige uitvinding heeft betrekking op een werkwijze en inrichting voor 5 het extraheren van skeletdata uit beelddata.
In het vakgebied der beeldverwerking en patroonherkenning worden al vele jaren zogenaamde skeletalgoritmes toegepast. Het doel daarbij is veelal een zodanige beschrijving van de karakters van geschreven en/of gedrukte tekst dat de daarop volgende beeldanalyse en herkenning minder complex is. Sinds de opkomst van de 10 kunstmatige neurale netwerken is het herkennen van karakters grotendeels opgelost en is de belangstelling voor deze algoritmes wat afgenomen. Echter nieuwe problemen, zoals het herkennen van aan elkaar geschreven tekst (lopend schrift) en het segmenteren van tekst die door invulkaders heen is geschreven, kunnen eigenlijk alleen maar goed worden opgelost wanneer we de beschikking hebben over de 'oneindig 15 dunne schrijflijnen en kruispunten'die ten grondslag liggen aan het binaire beeld van de geschreven of gedrukte tekst. Het verkrijgen van een 'skelet' met goede eigenschappen is daarom van groot belang.
Stand van de techniek 20 Het Amerikaanse octrooi US-B-6.377.710 beschrijft een werkwijze en systeem voor het extraheren van het skelet van een binaire figuur door middel van contourgebaseerde erosie. Hierbij wordt langs een contour van een afbeelding telkens één pixel (naar binnen gericht) weggehaald indien voldaan is aan bepaalde voorwaarden, waardoor uiteindelijk een skelet overblijft van hele, met elkaar 25 verbonden pixels.
Dergelijke skeletalgoritmes zijn al lang bekend, ook op het gebied van karakterherkenning. De meeste algoritmes zijn daarbij gebaseerd op een erosie van het pixelbeeld Daarbij worden stap voor stap 'zwarte' pixels weggegooid onder de randvoorwaarde dat de structuur van het beeld door de erosie niet mag worden 30 onderbroken of veranderd. Soms worden er flinke versnellingen bereikt door een op de contour gebaseerde erosie van het pixelbeeld, zoals in het genoemde Amerikaanse octrooi US-B-6.377.710. In dat geval behoeven veel minder pixels bekeken te worden.
102 4932* .2
De vele algoritmes, die in de literatuur beschreven zijn, blijken altijd drie of meer van de volgende nadelen te hebben: 1. De skeletuitvoer is gedefinieerd als een pixelbeeld met een 'dikte' van 1 pixel. Dat is een aanvechtbare definitie vanwege de definitie van connectiviteit. In 5 sommige gevallen wordt een binair patroon door de bestaande erosiealgoritmes niet verder aangetast vanwege de genoemde randvoorwaarde. Dit kan leiden tot een skelet dat op sommige plaatsen duidelijk een dikte heeft die groter is dan 1 pixel. Veelal voldoet de skeletuitvoer echter wel aan die eis van 1 pixel dik en worden 'knooppunten' met drie of hooguit vier 'takken' opgeleverd.
10 2. Om te komen tot een beschrijving in de vorm van knooppunten met daartussen lijnvormige takken (oneindig dun en i.h.a. niet rechtlijnig) voor verdere verwerking van de skeletuitvoer, bijvoorbeeld voor karakterhérkenning, dient de in punt 1 genoemde skeletuitvoer nog te worden onderworpen aan een apart proces. Zo'n proces is zeker niet triviaal.
15 3. De bekende erosiealgoritmes leveren ten gevolge van het principe dat telkens hele pixels van het patroon worden 'weggegooid' per definitie een asymmetrische skeletuitvoer op. Denk daarbij bijvoorbeeld aan een verticaal lijnvormig patroon met een dikte van twee pixels. Het ene algoritme zal bijvoorbeeld de linker pixels weggooien terwijl een ander algoritme juist de 20 rechter pixels weggooit. In beide gevallen is er sprake van een asymmetrisch skelet. Bij dit eenvoudige voorbeeld is de asymmetrie uiteraard niet hinderlijk, echter in geval van complexere structuren ziet het resultaat er 'niet correct' uit en is bijvoorbeeld de ligging der knooppunten 'op het oog? minder in overeenstemming met de onderliggende werkelijkheid dan bij een symmetrisch 25 skelet.
4. Een groot aantal skeletalgoritmes is rotatieaihankelijk, dat wil zeggen dat wanneer het binaire patroon in het beeldgeheugen over 90 graden of veelvouden daarvan geroteerd wordt, dat dan de skeletuitvoer verandert. Soms varieert zelfs het aantal takken. En dat terwijl het beeld qua vorm zelfs op pixelniveau exact 30 gelijk blijft.
5. De algoritmes die gebaseerd zijn op een door de contour gestuurde erosie van het pixelbeeld, zijn gevoelig voor de keuze van de startpunten op de buiten- en 1 02 4932 ( 3 Λ binnencontouren van het patroon. Ook een verandering van de volgorde, waarin die buiten- en binnencontouren in elke erosiestap worden afgehandeld, levert in het algemeen een andere skeletuitvoer op. De onderliggende oorzaak hiervan is eigenlijk dezelfde als die van het onder punt 3 genoemde verschijnsel.
5
Samenvatting van de uitvinding
De onderhavige uitvinding tracht een werkwijze en inrichting te verschaffen die het mogelijk maakt om karakteristieke kenmerken te extraheren uit beelddata, bijvoorbeeld ten behoeve van handschriftherkenning, die de genoemde nadelen uit de 10 stand van de techniek vermindert of opheft
Volgens een eerste aspect van de onderhavige uitvinding wordt een werkwijze verschaft voor het verkrijgen van een skeletvormige uitvoer die een vereenvoudigde weergave is van een pixelbeeld met aaneensluitende pixels. De werkwijze is ook toepasbaar op een samenstel van dit soort beelden (zoals een ‘vijf met 15 een losse streep’), en omvat: het omvormen van het pixelbeeld met aaneensluitende pixels in een contouradministratie, waarbij een contouradministratie bestaat uit één of meer reeksen (meer reeksen in het geval van één of meer binnencontouren) van tweedimensionale contourpunten waarbij de afstand tussen opeenvolgende contouipunten één 20 pixelbreedte bedraagt; het verdubbelen van het aantal contourpunten door tussen twee opeenvolgende contouipunten een additioneel punt te definiëren, waardoor de afstand tussen twee opeenvolgende contourpunten een halve pixelbreedte bedraagt; het herhaald (ook wel genoemd iteratief) afschillen van het door de 25 contouradministratie beschreven beeld door het herhaald genereren van een nieuwe contouradministratie, totdat de nieuwe contouradministratie een beeld beschrijft met overal de dikte nul en daarmee de skeletvormige uitvoer beschrijft, i waarbij het afschillen plaatsvindt door voor elk contourpunt, afhankelijk van dat contourpunt, het voorgaande contourpunt en het volgende contourpunt in de 30 contouradministratie en afhankelijk van de andere contourpunten in de contouradministratie met dezelfde tweedimensionale coördinaten met het respectieve daarbij behorende voorgaande contourpunt en volgende contourpunt, nul, één, twee of drie punten van de nieuwe contouradministratie te genereren, 1 02 4932"" 4 Λ waarbij die nieuwe punten ofwel dezelfde coördinaten hebben als het oude contourpunt (op de plaatsen waar niet afgeschild mag worden) ofwel over een afstand van een halve pixelbreedte in de x-richting en/of de y-richting verschoven zijn naar de binnenzijde van het door de contouradministratie beschreven beeld.
5 Door deze werkwijze toe te passen wordt een geërodeerd contourbeeld verkregen, waarbij het erosieproces symmetrisch is. Dit komt de kwaliteit van het verkregen resultaat ten goede, waardoor in verdere bewerkingen een beter herkenningsresultaat verkregen wordt.
In een verdere uitvoeringsvorm wordt een codearray, met een bepaald bereik aan 10 tweedimensionale adressen, opgeslagen. Het bereik is ten minste zo groot als het bereik van de tweedimensionale coördinaten van alle voorkomende beeldpatronen (beschreven door in de eerdere stappen verkregen verdubbelde contouradministratie). Het afschillen omvat in deze uitvoeringsvorm: - het doorlopen van de reeks of reeksen van contourpunten van de contouradministratie; IS - het, afhankelijk van de waarde van de in hét codearray op het bij het contourpunt behorende adres reeds aanwezige situade-indicatie (die start op de initiële waarde 0) én het voorgaande en volgende contourpunt in de reeks, bepalen van een bij gewerkte situade-indicatie en het opslaan daarvan op dat zelfde adres; - het nogmaals punt voor punt doorlopen van de contouradministratie en het genereren 20 van een nieuwe contouradministratie op basis van de respectieve situatie-indicaties in het codearray. Bij via* specifieke situatie-indicaties (van de 15) horen telkens twee ‘verplaatsingsrecepten’ i.p.v. één. Welke van de twee gekozen moet worden is daarbij afhankelijk van de contourrichting in het betreffende contourpunt, d.w.z. de richting van punt k naar punt k+1. Als alternatieve aanvullende informatie kan ook de richting 25 van punt k-1 naar punt k gebruikt worden. Door het gebruik van een dergelijk codearray is het mogelijk om in het iteratieve proces op een zeer efficiënte wijze het erosieproces uit te voeren.
In een verdere uitvoeringsvorm zijn de contourpunten gelegen op een tweedimensionaal rooster, waarbij de steekafstand van het rooster overeenkomt met een 30 halve pixelbreedte, en de situatie-indicatie een 16-waardige code is. Door het gebruik van een dergelijk rooster is het mogelijk om effectief de contour met stapjes van een halve pixelbreedte af te schillen, waardoor een symmetrisch proces ontstaat en het afschillen op tijd gestopt kan worden.
1 02 4932~* \ 5
Bij het erosie- of afschilproces volgens de onderhavige uitvinding kunnen kleine onregelmatigheden ontstaan. In een verder uitvoeringsvorm van de onderhavige uitvinding omvat de werkwijze verder het ontrafelen van de na een afschilactie ontstane nieuwe contouradministratie, waarbij het ontrafelen omvat: 5 het beoordelen of een bij deze afschilactie ontstaan beginpunt een essentieel of een niet-essentieel beginpunt is, en het verwijderen van de niet-essentiële beginpunten uit de reeks of reeksen van contourpunten van de contouradministratie, waarbij een beginpunt een contourpunt is waarvoor het direct voorgaande en direct volgende contourpunt in de reeks dezelfde coördinaten hebben.
10 In een nog verdere uitvoeringsvorm is aan elk contourpunt in de contouradministratie een iteratienummer toegewezen dat aangeeft in welke iteratieslag het betreffende contourpunt voor het eerst is gegenereerd. Het iteratienummer wordt niet meer opgehoogd wanneer het gegenereerde contourpunt een kopie is van het oude contourpunt. Dit verschaft (lokale) informatie over het erosieproces, die in verdere 15 verwerking doelmatig gebruikt kan worden.'
Het beoordelen of een beginpunt een essentieel of een niet-essentieel beginpunt is, is in een verdere uitvoeringsvorm afhankelijk van een of meer voorgaande en een of meer volgende contourpunten in de reeks. Hierdoor kan het erosieproces, qua opgeleverde details, geoptimaliseerd worden, bijvoorbeeld afhankelijk van de 20 toepassing (losse karakters, aan elkaar geschreven karakters,...)
Het ontrafelen omvat in een uitvoeringsvorm van de onderhavige uitvinding: het doorlopen van de reeks van contourpunten; het afhankelijk van een of meer voorgaande en een of meer volgende contourpunten van de reeks of reeksen contourpunten toewijzen van een ontrafelindicatie aan het 25 contourpunt én aan een of meer voorgaande en/of volgende contourpunten; het nogmaals doorlopen van de reeks van contourpunten en het vormen van een nieuwe reeks contourpunten op basis van de ontrafelindicatie. De ontrafelindicatie wordt opgenomen in de contouradministratie, om zodanig op een efficiënte wijze de onderhavige werkwijze uit te voeren.
30 Voor de verdere verwerking van de verkregen skeletvormige uitvoer, heeft het voordeel om de uitvoer in een eenvoudig verder te verwerken vorm beschikbaar te stellen. Hiertoe omvat de werkwijze in een nog verdere uitvoeringsvorm het transformeren van de door de reeks of reeksen van contourpunten gevormde 1 02 493 2”· \ 6 contouradministratie met bijbehorend beeld met dikte nul in een administratie van de in dat beeld aanwezige beginpunten en knooppunten en tussen de begin- en knooppunten aanwezige takken.
Op een voordelige en efficiënte wijze wordt het transformeren uitgevoerd volgens 5 een nog verdere uitvoeringsvorm van de onderhavige werkwijze. Hierbij omvat het transformeren: het bijhouden van een telwaarde in het codearray met tweedimensionale adressen, die aangeeft hoe vaak een bepaalde tweedimensionale coördinaat voorkomt in de contouradministratie die het beeld met dikte nul vertegenwoordigt; 10 het extraheren van een tak door het opslaan van aaneensluitende contourpunten in de reeks, waarvoor de telwaarde in het codearray op het bijbehorende tweedimensionale adres twee is, aangevuld met takpunten, waarbij de takpunten worden gevormd door de voorganger van het eerste punt en de opvolger van het laatste punt (daar een tak begint en eindigt in een speciaal punt, horen deze beide punten erbij); 15 het opslaan van speciale contourpunten uit de reeks, waarvoor de telwaarde in het codearray één of meer dan twee is. Indien de telwaarde één is, is het contouipunt een beginpunt, indien de telwaarde twee is, dan is het contouipunt een deel van een tak, en als de telwaarde groter dan twee is, is het contouipunt een knooppunt.
In een verdere uitvoeringsvorm wordt een geëxtraheerde tak, waarvan de eerste 20 twee contourpunten samenvallen met de laatste twee contourpunten van een reeds opgeslagen tak, niet opgeslagen. Dit om te voorkomen dat een tak twee keer wordt opgeslagen (in beide doorlooprichtingen). Evenzo worden bij het opslaan van de speciale punten de punten die een tweedimensionale coördinaat hebben die reeds is opgeslagen, niet opgeslagen in de lijst van speciale punten.
25 Voor de verdere verwerking van de skeletvormige uitvoer van de onderhavige werkwijze, wordt in een nog verdere uitvoeringsvorm een geëxtraheerde tak ruimtelijk gefilterd, bijvoorbeeld door het bepalen van een lopend gemiddelde van de respectieve tweedimensionale coördinaatwaarden.
In een verder aspect heeft de onderhavige uitvinding betrekking op een inrichting 30 voor het verkrijgen van een skeletvormige uitvoer die een vereenvoudigde weergave is van een pixelbeeld met aaneensluitende pixels, omvattende: een detector voor het verkrijgen van het pixelbeeld; 1 02 4932” \ 7 verwerkingsmiddelen die verbonden zijn met de detector, waarbij de verwerkingsmiddelen zijn ingericht voor: het omvormen van het pixelbeeld met aaneensluitende pixels in een contouradministratie, waarbij een contouradministratie bestaat uit één of meer reeksen 5 van tweedimensionale contourpunten waarbij de afstand tussen opeenvolgende contourpunten één pixelbreedte bedraagt; het verdubbelen van het aantal contourpunten door tussen twee opeenvolgende contourpunten een additioneel punt te definiëren, waardoor de afstand tussen twee opeenvolgende contourpunten een halve pixelbreedte bedraagt; 10 het herhaald afschillen van het door de contouradministratie beschreven beeld door het herhaald genereren van een nieuwe contouradministratie, totdat de nieuwe contouradministratie een beeld beschrijft met overal de dikte nul en daarmee de skeletvormige uitvoer beschrijft, waarbij het afschillen plaatsvindt door voor elk contouipunt, afhankelijk van dat 15 contourpunt, het voorgaande contourpunt en het volgende contourpunt in de contouradministratie en afhankelijk van de andere contouipunten in de contouradministratie met dezelfde tweedimensionale coördinaten met het respectieve daarbij behorende voorgaande contourpunt en volgende contourpunt, nul, één, twee of drie punten van de nieuwe contouradministratie te genereren 20 waarbij die nieuwe punten ofwel dezelfde coördinaten hebben als het oude contouipunt ofwel over een afstand van een halve pixelbreedte in de x-richting en/of de y-richting verschoven zijn naar de binnenzijde van het door de contouradministratie beschreven beeld.
In een verdere uitvoeringsvorm zijn de verwerkingsmiddelen verder ingericht 25 voor het uitvoeren van de onderhavige werkwijze.
Met de onderhavige inrichting zijn voordelen te bereiken die vergelijkbaar zijn met de eerder genoemde voordelen met betrekking tot de onderhavige werkwijze.
In een nog verder aspect heeft de onderhavige uitvinding betrekking op een computerprogrammaproduct dat computerleesbare code omvat, waarbij de 30 computerleesbare code, na laden in een computer, de computer verschaft met de functionaliteit van de onderhavige werkwijze.
Korte beschrijving van de tekeningen 1 02 4932^ i
X
t 8
De onderhavige uitvinding zal nu in meer detail worden besproken aan de hand van een aantal voorbeelduitvoeringsvormen, met verwijzing naar de bijgevoegde tekeningen, waarin
Fig. 1 een vereenvoudigd blokschema is van een karakterherkenningssysteem 5 waarin het skeletproces volgens de onderhavige uitvinding wordt toegepast;
Fig. 2 een stroomschema is van een uitvoeringsvorm van de onderhavige werkwijze;
Fig. 3 een schematische weergave is van een contouradministratie zoals toegepast in een uitvoeringsvorm volgens de onderhavige uitvinding, waarbij de reeks van 10 tweedimensionale coördinaten (x en y) is uitgebreid met het iteratienummer en de ontrafelmarkering van de betreffende contourpunten;
Fig. 4a t/m 41 voorbeelden tonen van mogelijke situaties die kunnen voorkomen bij het afschilproces volgens een uitvoeringsvorm van de onderhavige uitvinding;
Fig. 5 een voorbeeld is van een volgens een uitvoeringsvorm van de onderhavige 15 uitvinding bewerkte contour;
Fig. 6 een voorbeeld is van een specifieke situatie die bij een uitvoeringsvorm van het onderhavige afschilproces kan voorkomen;
Fig. 7 voorbeelden toont van tijdens het afschilproces gevormde beginpunten;
Fig. 8 voorbeelden toont van enkele essentiële beginpunten, waarbij de 20 contourpunten k-1 en k+1 resp. k-2 en k+2 per paar dezelfde coördinaten hebben;
Fig. 9 voorbeelden toont van enkele niet-essentiële beginpunten;
Fig. 10 voorbeelden toont van enkele verdere niet-essentiële beginpunten;
Fig. 11 voorbeelden toont van enkele essentiële beginpunten, waarbij de contourpunten k-1 en k+1, k-2 en k+2 resp. k-3 en k+3 per paar dezelfde coördinaten 25 hebben;
Fig. 12 voorbeelden toont van essentiële beginpunten, waarbij de contourpunten k-3 en k+3 niet samenvallen;
Fig. 13 voorbeelden toont van te behouden beginpunten;
Fig. 14 voorbeelden toont van speciale beginpunten; 30 Fig. 15 voorbeelden toont van te verwijderen beginpunten;
Fig. 16 een voorbeeld toont van een met de onderhavige skeletwerkwijze verkregen skelet op basis van het getoonde pixelbeeld; 1024932" ♦ 9
Fig. 17 een voorbeeld toont van de werkwijze voor het afvlakken van met de onderhavige werkwijze verkregen takken, en met name het spiegelen van contourpunten dicht bij speciale punten;
Fig. 18 het voorbeeld van Fig. 16 toont na filtering van de takken met een 5 zevenpuntsfilter.
Gedetailleerde beschrijving van voorbeelduitvoeringsvormen
De onderhavige uitvinding kan met voordeel worden toegepast in bijvoorbeeld een systeem voor het herkennen van geschrift of karakters, zoals in een vereenvoudigde 10 uitvoeringsvorm daarvan is weergegeven in Fig. 1. Het herkenningssysteem 15 omvat een detector 11, zoals een CCD-camera, die een digitaal pixelbeeld opneemt van bijvoorbeeld een envelop. Het pixelbeeld wordt doorgegeven aan een met de detector 11 verbonden skeletprocessor 10, die is ingericht om de onderhavige uitvinding te belichamen, door een bij het pixelbeeld behorende skeletomschrijving te genereren. De 15 skeletomschrijving wordt verder doorgegeven naar een met de skeletprocessor 10 verbonden verdere processor 12, die de verdere herkenning en verwerking (bijvoorbeeld drukken van een code) uitvoert.
De aanduiding skeletprocessor 10 en verdere processor 12 zijn bedoeld om elk systeem in software, hardware of een combinatie daarvan aan te duiden, dat in staat is 20 om de bijbehorende functie uit te voeren. Dit kunnen afzonderlijke op microprocessortechniek gebaseerde computersystemen (gecentraliseerd of gedistribueerd) zijn met bijbehorende randapparatuur, maar ook speciaal voor die functie geschikte elementen, zoals digitale signaalprocessoren.
Het totale proces dat uiteindelijk leidt tot een skelet beschreven door middel van 25 vertakkingspunten en beginpunten (ook wel eindpunten genoemd) met daartussen rustig verlopende (gladde) takken, bestaat uit een viertal hoofdprocessen die hieronder in detail zullen worden beschreven.
In Fig. 2 is een stroomschema getoond dat het hele proces laat zien. Het eerste hoofdproces is een contourproces 20 dat een eerste contouradministratie oplevert die de 30 input is van het eigenlijke skeletproces. Een voorbeeld van een contouradministratie is in Fig. 3 getoond. Het door de detector 11 gegenereerde pixelbeeld wordt door de skeletprocessor 10 met behulp van het contourproces 20 omgezet in een contouradministratie, bestaande uit één of meer reeksen van tweedimensionale 1 02 493 2" -τ----------
V
10 contourpunten (meer dan één wannéér er binnencontouren aanwezig zijn), bijvoorbeeld in de vorm van paren coördinaten (x en y). Een enkele reeks van tweedimensionale contourpunten wordt ook wel een (gesloten) contourpolygoon genoemd. In deze eerste contouradministratie zijn de contouipolygonen in ons geval ‘rechthoekig’ en is de 5 afstand tussen twee opeenvolgende contouipunten precies één pixelbreedte. Een binair beeld bestaande uit slechts één pixel geeft als voorbeeld aanleiding tot een contourpolygoon bestaande uit vier contourpunten. De hier gebruikte contouradministratie bestaat dus uit de lijst(en) van de tweedimensionale coördinaten van de opeenvolgende contourpunten. Dit in tegenstelling tot een lijst of lijsten van 10 opeenvolgende richtingen (de zgn. ‘chaincode’) die meestal gebruikt wordt. Direct na de omzetting van het binaire beeld wordt het aantal contourpunten van de contouradministratie verdubbeld, door een aanpassing van het coördinatenstelsel (x en y waardes maal twee) en het opnemen van halverwege tussen elk oorspronkelijk paar contourpunten gelegen contourpunten. Daarna is de afstand tussen twee opeenvolgende 15 contouipunten precies een halve pixelbreedte.
Het tweede hoofdproces is een iteratief erosieproces 21, bestaande uit de in een lus opgenomen deelprocessen 21a en 21b. Het eerste deelproces van de lus is het afschilproces 21a.
Na afloop van het iteratieve erosieproces 21 (de lus) wordt het voorlopige skelet 20 beschreven door de contour die overblijft wanneer op een symmetrische wijze al het zwart van het binaire beeld is'weggeschild'. Dat gebeurt door per afschilactie in afschilproces 21a de contourfunctie(s) (in dit geval gesloten polygonen, alleen bij de start rechthoekig, verder in het proces acht mogelijke richtingen) over een afstand van een halve pixelbreedte ‘naar binnen toe’ te verplaatsen. Zo’n verplaatsing over een 25 afstand van een halve pixelbreedte is mogelijk door de hierboven genoemde verdubbeling van het aantal contourpunten. Het proces van naar binnen toe verplaatsen is 'verboden' in die punten waar het beeld inmiddels oneindig dun geworden is (de plaatsen waar in de vorige slag precies al het zwart is weggeschild) ofwel in die punten waar de contour 'zichzelf raakt'. Op die plaatsen heeft zich in feite al een deel van het 30 skelet gevormd. Het vaststellen dat de contour zichzelf raakt vindt plaats door te tellen hoe vaak de roosteipunten in het tweedimensionale vlak (met een roosterafstand van een halve pixelbreedte) door de contour worden 'aangedaan'. Doordat met verplaatsingen van een halve pixelbreedte wordt gewerkt, is gegarandeerd dat de zich 1 02 4932^ 11
V
verplaatsende contour altijd eerst zichzelf raakt voordat hij zichzelf zou passeren. Met » andere woorden het afschillen kan tijdig worden stopgezet in de reeds gevormde i skeletpunten. Het proces van de zich naar binnen toe veiplaatsende contour stopt wanneer er nergens meer zwart oppervlak zit tussen de (gesloten) contourfunctie(s).
5 Het door die 'eindcontour1 beschreven beeld is dan oneindig dun geworden. In tegenstelling tot de situatie in bestaande algoritmes wordt in het bovenstaande erosieproces het oorspronkelijke pixelbeeld niet gebruikt. Ook is duidelijk dat de uitvoer van het iteratieve erosieproces 21 (de lus) geen pixelbeeld is maar de contourbeschrijving of-administratie van een oneindig dun beeld.
10 Direct na elk afschilproces 21a vindt, indien het skelet nog niet volledig is gevormd (beslissingsblok 21c, dikte beeld = 0), het ontrafelproces 21b plaats zoals weergegeven in Fig. 2.
Zonder het ontrafelproces 21b zou na afloop van het iteratieve erosieproces het voorlopige skelet (dat is de hierboven genoemde eindcontour) in het algemeen ook een 15 aantal kleine takjes bevatten. Vaak zijn die takjes niet-essentieel voor de structuur van het binaire patroon. In feite hebben alle skeletalgoritmes in meer of mindere mate last van dit verschijnsel, afhankelijk van dé 'ontrafelingmaatregelen' die worden toegepast Omdat in het onderhavige proces de erosie plaats vindt met stapjes van een halve pixel tegelijk, gaat er geen enkel detail verloren en geeft elk pixel dat uitsteekt aanleiding tot 20 het ontstaan van een zogenaamd beginpunt, dat wil zeggen de start van een nieuwe tak. Vrij vaak levert zo'n beginpunt een niet-essentiële tak op. Daarom is er in het onderhavige iteratieve erosieproces 21 een apart ontrafelproces 21b opgenomen dat uitgaat van een duidelijke lijst van beginpunten die geen nieuwe tak mogen genereren. Na elke afschilactie 21 a worden daarbij van de nieuwe naar binnen toe verplaatste 25 contour alle nieuw gegenereerde beginpunten bekeken en wordt een ontrafelindicatie opgenomen bij elk nieuw beginpunt. Vervolgens worden die beginpunten, die een 'vorm' hebben die in de genoemde lijst is opgenomen, verwijderd uit de betreffende contourbeschrijving. De lijst is zo samengesteld dat er in de praktijk bruikbare skeletten ontstaan met niet te veel en niet te weinig takken. Naar behoefte is de lijst uit te breiden 30 met meer vormen van niet-essentiële beginpunten ter verkrijging van een zwaardere ontrafeling. Daarbij moet dan een grotere omgeving langs de contour bekeken worden waardoor de rekentijd zal toenemen. Echter die toename is in het onderhavige geval niet kwadratisch zoals bij de gangbare skeletalgoritmes waar voor een zwaardere 102 4932 ' 12 ontrafeling een grotere tweedimensionale omgeving van elk weg te gooien pixel moet worden beoordeeld. In plaats van het werken met een lijst van vormen is het ook mogelijk om te werken met een of ander ontrafelingcriterium op basis van de 'contouromgeving' van een beginpunt, waarbij die omgeving al dan niet gefilterd (glad 5 gemaakt) wordt, bijvoorbeeld door middel van regressie. De beschreven ontrafeling 21b is actief na elk afschilproces 21a van het iteratieve erosieproces 21 (de lus in Fig. 2).
Een aparte ontrafeling achteraf, dus na beëindiging van het iteratieve erosieproces, is een alternatieve optie. Zo'n proces is niet ondenkbaar omdat in het 10 onderhavige geval in alle takpunten nog de oorspronkelijke patroondikte bekend is, zodat de oorspronkelijke vorm van elke tak in principe nog beoordeeld kan worden.
Nadat in beslissingsblok 21c geconstateerd is dat de gegenereerde contouradministratie een beeld beschrijft met dikte nul (de contour is dan in geen enkel punt meer verplaatst), wordt het proces verder voortgezet met de extractie van 15 knooppunten en takken (het hoofdproces 22).
Een eigenschap van de uitvoer van het iteratieve erosieproces 21 van het onderhavige proces is dat de transformatie naar een 'tweede' beschrijving door middel van knooppunten en takken eenvoudig is. De opgeleverde contouradministratie is als het ware dubbel op: wanneer die eindcontour wordt doorlopen, dan worden de op te 20 leveren takken van het uiteindelijke skelet twee maal gepasseerd. Eenvoudig gezegd is het alleen nodig om de helft weg te gooien. Zoals gezegd wordt bij het afschilproces 21a gebruik gemaakt van een tweedimensionaal codearray waarmee o.a. geteld kan worden hoe vaak de contour een bepaalde tweedimensionale coördinaat aandoet. Wanneer zo'n telling wordt uitgevoerd met de eindcontour, dan is na afloop bekend 25 welke contourpunten een beginpunt passeren (één maal passeren) en welke punten een knooppunt (of een vertakkingspunt) passeren (drie tot maximaal acht keer passeren). Alle andere tweedimensionale coördinaten die de contour aandoet, worden precies twee keer gepasseerd en dat nu zijn de 'interne' punten van de takken die zich tussen de 'speciale' punten (beginpunten en vertakkingspunten) bevinden. Door na die telling de 30 eindcontour nog één keer te doorlopen kan de complete skeletbeschrijving van alle speciale punten en takken gegenereerd worden.
De aldus gevormde skeletbeschrijving is in principe een bruikbare beschrijving waarbij de gevormde takken, die zich tussen de speciale punten bevinden, beschreven 1n? 49 3 2" 13 % worden door de opeenvolging van de tweedimensionale coördinaten van de roosterpunten die gepasseerd worden indien de takken in een te kiezen richting doorlopen worden. Daarbij liggen die punten op een rooster dat twee maal zo fijn is als het oorspronkelijke rooster vanwege het afschillen met telkens een halve pixelbreedte.
i 5 Een nadeel echter van de in hoofdproces 22 gevormde skeletbeschrij ving is dat de tak-elementjes, dat wil zeggen de lijnstukjes van punt i naar punt i+1, slechts acht richtingen kennen'. Voor bepaalde doeleinden is het beter qm de beschikking te hebben i over een wat 'rustiger' verlopende takbeschrijving, bijvoorbeeld voor het afleiden van kenmerken waarin hoekrichtingen een rol spelen. Daarom is een laatste hoofdproces 23 ' 10 ontworpen waarbij de speciale punten op hun plaats blijven, maar de tussenliggende takpunten door filtering zodanig 'verschoven' worden dat rustig verlopende (gladde) takken ontstaan. Het hierna in meer detail te beschrijven afVlak- of filteiproces 23 heeft een instelbare sterkte waarbij de grootste sterkte de gladste takken oplevert Het gebruikte principe is een zogenaamd lopend gemiddelde over een instelbaar aantal 15 takpunten waarbij het op hun plaats blijven van de speciale punten kan worden bereikt door de te filteren takken te ‘spiegelen’ in die speciale punten. Voor bovenstaand doel, het glad maken van de takken, kunnen in principe alle bekende ruimtelijke filteringmethoden voor het beschrijven van een reeks punten in een plat vlak gebruikt worden.
20 Voor de deskundige zal duidelijk zijn, dat de eerste twee hoofdprocessen 20 en 21 tezamen als apart geheel toegepast kunnen worden in het gehele traject van karakterherkenning, met de reeds in de inleiding genoemde voordelen.
In het onderstaande voorbeeld, zal de werking van de onderhavige uitvinding en met name van de verschillende hoofdprocessen en deelprocessen in meer detail 25 besproken worden.
Het proces start met de bepaling van de contourbeschrijving van het binaire patroon. De contourbeschrijving vindt hier plaats met rechthoekige contouipolygonen waarbij de afstand van punt k naar punt k+1 telkens precies een pixelbreedte is. Zoals hierboven reeds besproken bij het contourproces 20, wordt het aantal contourpunten 30 verdubbeld door tussen elke twee opeenvolgende contourpunten een extra punt halverwege op te nemen. Die nieuwe contourbeschrijving maakt dan telkens stapjes van een halve pixelbreedte. Verder kiezen we de schaling van de tweedimensionale coördinaten zodanig dat ook de 'contourpunten halverwege' op een integer raster liggen.
102 493 2 * 4 % 14 »
Dat is handig omdat dan elke tweedimensionale positie of coördinaat overeenkomt met dezelfde positie (tweedimensionale index) in een tweedimensionaal codearray. Dit codeairay heeft dus evenveel adressen als het aantal roosterpunten (met 'een roosterafstand van een halve pixelbreedte) in het tweedimensionale vlak van een gebied 5 dat groot genoeg is om alle voorkomende patronen te beschrijven. Het codearray is in feite een tweemaal zo fijn (zowel in de x-richting als in de y-richting) beeldgeheugen van 16 waardige (4 bits) geheugenelementen. Elk geheugenelement vertegenwoordigt nu niet een pixel dat wel of niet ‘zwart’ is, maar de x-y-lokaties waar de contour één of meerdere keren passeert of niet passeert. De wijze waarop dat passeren plaatsvindt 10 wordt daarbij vastgelegd door het geheugenelement een bepaalde waarde te geven, de zgn. situatie-indicatie (0 = niet passeren, de waardes 1..15 geven een bepaalde indeling van de diverse situaties). De waarde op elk adres van het codearray wordt eenmalig op 'nul'gezet en verder door het skeletproces telkens op nul ‘achtergelaten’.
De eerste afschilactie start dus met bovenstaande ‘verdubbelde’ IS contourbeschrijving en met alle geheugepelementen van het codearray op nul. In elke afschilactie (één aanroep van het afschilproces 21a) van het iteratieve erosieproces 21 genereert de laatste contourbeschrij ving van dat moment een nieuwe beschrijving. Die nieuwe contourbeschrijving vertegenwoordigt dan de één stap (1/2 pixel) verder naar binnen toe verplaatste contour.
20 Volgens een bepaald recept genereren daarbij de 'oude' contourpunten minimaal nul en maximaal drie punten van de nieuwe contour. Wat er door elk punt van de oude contour precies gegenereerd moet worden, is afhankelijk van de lokale situatie in dat punt. Daarbij willen we o.a. weten of zich op die locatie in het tweedimensionale vlak al een skeletpunt heeft gevormd of niet. Indien wel dan mag de contour in dat punt niet 25 meer verplaatst worden eri wordt in de nieuwe contourbeschrijving een punt gegenereerd met dezelfde coördinaten als het oude (skelet)punt. Voordat de contour verplaatst wordt, wordt daarom eerst de contour één keer doorlopen waarbij in het tweedimensionale codearray de situatie in alle roosterpunten, die door de contour worden aangedaan, gecodeerd wordt vastgelegd. Het blijkt dat een 16-waardige code 30 voldoende is om de diverse situaties te onderscheiden waarvoor telkens een ander 'verplaatsingsrecept' geldt voor het betreffende tweedimensionale contourpunt. Het tweedimensionale codearray of telarray is daarom een 'zuinig' array van 4 bits 1024932^ t 15 elementen. In principe zou een nog iets zuiniger code ook voldoende zijn, echter de gekozen code maakt een efficiënte implementatie mogelijk.
De diverse mogelijke situaties van de punten van de oude contour met de daarbij gegenereerde punten van de nieuwe contour, zijn weergegeven in de figuren 4a t/m 41 5 die getekend zijn op een rooster met een steekafstand van een halve pixelbreedte.
In figuur 4a is een eenvoudige situatie getoond waarbij de hele contour de tweedimensionale locatie van contourpunt A maar één keer 'aandoet' en de contour in punt A geen knik maakt (gaat rechtdoor). De genoemde codering is zodanig ontworpen dat aan de waarde van het codearray op het tweedimensionale adres van het punt A te 10 'zien' is dat deze specifieke situatie voorligt. Het recept is in dit geval eenvoudig. Het punt A genereert in de nieuwe contourbeschrijving het punt B dat een halve pixel naar binnen toe is verschoven. Wanneer we de situatie van figuur 4a drie keer roteren over 90 graden, dan krijgen we drie soortgelijke situaties met een soortgelijk recept. Ook die drie situaties zijn herkenbaar aan de vastgelegde code op het betreffende 15 tweedimensionale adres in het codearray.
Een situatie waarbij de tweedimensionale locatie ook slechts één keer wordt aangedaan en waarbij het punt A van de oude contour in volgoide drie punten BI, B2 en B3 genereert in de nieuwe contourbeschrijving, is weergegeven in figuur 4b. Ook nu is deze situatie herkenbaar aan de vastgelegde code op het betreffende 20 tweedimensionale adres in het codearray. En ook nu geldt weer dat drie keer roteren over 90 graden drie soortgelijke situaties oplevert met een soortgelijke spelregel. Tot nu toe zijn er vier situaties 'rechtdoor* en vier situaties 'linksom' beschreven. Daarmee zijn dus acht waardes van de 16-waardige code gebruikt (plus de waarde 0).
Voor de situatie van figuur 4c en de drie die daaruit ontstaan door rotatie, wordt 25 slechts één waarde gebruikt, namelijk één waarde 'rechtsom' ongeacht de rotatie. De regel voor deze vier situaties is dat het punt A van de oude contour géén punt genereert in de nieuwe contourbeschrijving. In figuur 4c is daarom aan de rechteikant geen nieuw punt te vinden. De reden dat het punt A hier geen punt hoeft te genereren is het feit dat op de naar binnen toe verschoven locatie altijd al een punt in de nieuwe beschrijving is 3 0 gegenereerd door de 'voorganger' van punt A.
Twee gevallen met een wat complexer recept, waarbij het punt A in volgorde twee punten BI en B2 genereert, zijn weergegeven in figuur 4d en 4e. In beide gevallen wordt de locatie van het punt A door de contour twee keer aangedaan en heeft zich op 1024932 16 ♦ % die locatie al een skeletpunt gevormd en wel op de specifieke manier van figuur 4d/e. De code in de locatie van het punt A is in beide gevallen hetzelfde daar er in beide gevallen sprake is van dezelfde lokale situatie. Welk recept gekozen moet worden (4d of 4e) wordt bepaald door het contouipunt A: het punt A waar het reeds gevormde 5 skelet wordt 'binnengekomen' (figuur 4d) of het punt A waar het reeds gevormde skelet weer 'verlaten' wordt (figuur 4e). In beide gevallen wordt het 'contour-skeletpunt' A herhaald in de nieuwe contourbeschrijving. In figuur 4d is dat B2 en in figuur 4e is dat BI. De lokale situatie van figuur 4dIe geeft weer soortgelijke situaties door drie keer te roteren over 90 graden. Nog eens vier waardes van onze 16-waardige code worden 10 gebruikt om deze vier lokale situaties te kunnen onderscheiden. Door ook te kijken naar het contourpunt A zelf levert e.e.a. dus acht recepten op.
De laatste twee waardes van de 16 waardige code worden gebruikt voor alle andere situaties, die op kunnen treden tijdens het iteratieve erosieproces. Er is dan sprake van reeds gevormde contour-skeletpunten van de 'simpele' soort die alleen maar 15 zichzelf herhalen (kopiëren) in de nieuwe contourbeschrijving. Ze hoeven dus maar één punt te genereren met dezelfde coördinaten. Enkele voorbeelden van dit soort situaties, die steeds vaker optreden naarmate de eindsituatie van het iteratieve erosieproces dichterbij komt, zijn weergegeven in figuur 4f t/m 41. Al deze figuren zijn situaties die gaandeweg het proces kunnen voorkomen. In de figuren waar al een deel van het skelet 20 is gevormd, is om tekentechnische redenen het skelet een eindige dikte gegeven zodat de heenrichting' en de 'temgrichting' van de skeletcontour herkenbaar zijn. Ook de betreffende skeletpunten zijn ’opgerekt'. Bijvoorbeeld in figuur 4g hebben de in het centrum getekende drie contourpunten in feite dezelfde tweedimensionale coördinaten. In 'skelettaal' heeft zich op deze locatie een drievoudige vertakking gevormd.
25 (Overigens is al in de figuren 4d en 4e hetzelfde tekenprincipe toegepast.)
In figuur 4j is een situatie opgenomen waarbij de tweedimensionale locatie van het punt A twee keer wordt gepasseerd door een recht doorlopende contour 'onder 45 graden'. Een dergelijke situatie waarbij die locatie maar één keer wordt aangedaan, bijv. door het punt A, blijkt niet te kunnen voorkomen in het iteratieve erosieproces. De 30 codes 'rechtdoor’, 'linksom’ en 'rechtsom' van de figuren 4a t/m 4c plus hun rotaties zijn dan ook uitdrukkelijk gereserveerd voor richtingen langs het rooster. Bij rotaties over plus of min 45 graden of plus of min 135 graden is dus gegarandeerd sprake van situaties waar zich reeds een skeletpunt heeft gevormd en de betreffende locatie dus 1 02 4932 ' 17 gegarandeerd meer dan één keer wordt gepasseerd. Op dergelijke locaties mag de contour dus niet meer verplaatst worden en behoeven de passerende contourpunten alleen maar zichzelf te herhalen in de nieuwe contouibeschrijving.
In figuur 41 is als laatste voorbeeld een beginpunt van een skelet weergegeven.
5 De skeletcontour passeert dat punt slechts één keer. Ook hier mag de contour niet meer verplaatst worden en moet het punt A dus herhaald worden in de nieuwe contouibeschrijving. Zolang de contour op andere locaties nog wel verplaatst mag worden, gaat het genereren van nieuwe contourbeschrijvingen gewoon door (het ‘lus-proces’ is nog niet klaar). Echter zodra er nergens meer verplaatst mag worden, stopt de 10 erosie en is dit hoofdproces dus klaar (niet meer mogen verplaatsen betekent ‘beeldoppervak nul’).
Er is echter nog een punt dat aandacht behoeft. Wanneer namelijk een nieuwe contourbeschrijving gegenereerd wordt volgens bovenstaande 18 recepten (4 + 4 + 1 + 8 + 1), dan worden er soms direct na elkaar contourpunten gegenereerd met dezelfde 15 tweedimensionale coördinaten. Een voorbeeld' is te vinden in figuur 5 waar de complete set van gegenereerde nieuwe contourpunten is weergegeven. De contourbeschrijving die daarbij hoort is geen correcte polygoon daar de bovenste drie opeenvolgende punten dezelfde coördinaten hebben. Dit probleem is o.a. op te lossen door naast de situatie van figuur 4c de andere situaties te onderkennen van contourpunten die ook 20 geen punt mogen genereren in de nieuwe contouibeschrijving.'
Een alternatieve oplossing waarvoor in deze implementatie is gekozen, is de volgende. Tijdens het genereren van de nieuwe beschrijving wordt bij elk punt dat volgens de recepten gegenereerd zou moeten worden, gekeken of het direct daarvoor gegenereerde punt dezelfde tweedimensionale coördinaten heeft. Zo ja, dan wordt het 25 nieuw te genereren punt simpelweg overgeslagen.
Zoals gezegd wordt elke keer, vóór dat de contour een stap verder verplaatst wordt, de lokale situatie in de betreffende roosteipunten gecodeerd vastgelegd. Daartoe wordt de contour één keer doorlopen en wordt het codearray bijgewerkt. De betreffende elementen van het codearray starten daarbij op de waarde nul. Vervolgens worden alle 30 contourpunten afgelopen en daarbij krijgen de bij die tweedimensionale locaties behorende arrayelementen telkens een nieuwe waarde die afhankelijk is van het contourverloop in het onderhavige contourpunt én van de waarde die het arrayelement inmiddels al heeft. Is de waarde van het element nog nul, dan wil dat zeggen dat we 1 02 /<93 2 ' » 18 die locatie voor het eerst passeren en in dat geval worden de volgende waardes uitgedeeld: • De waarde 1 t/m 4 voor de 4 contourverlopen 'linksom' (fig 4b + rotaties).
• De waarde 5 t/m 8 voor de 4 contourverlopen 'rechtdoor* (fig 4a + rotaties).
• 1 5 · De waarde 9 voor de 4 contourverlopen 'rechtsom' (fig 4c + rotaties).
• De waarde 15 voor het verloop dat hoort bij een beginpunt (een knik in de contour van 180 graden / zie fig 41).
• De waarde 14 voor alle andere contourverlopen. Op die locatie is dan gegarandeerd sprake van een reeds gevormd skeletpunt van de 'simpele' soort, 10 d.w.z. een die alleen zichzelf herhaald. Dus ook al wordt voor de eerste keer die locatie aangedaan, het is zeker dat daar minsten? nog één keer teruggekomen wordt op een manier die 'skeletvorming' inhoudt. Voorbeelden zijn te vinden in figuur 4h t/m 4k waarbij bijvoorbeeld het punt A als eerste de betreffende tweedimensionale locatie aandoet.
15 Voor de lokale situatie van figuur 4d/e en de drie die daaruit via rotatie verkregen worden, zijn de vier codewaardes 10 t/m 13 gereserveerd. Duidelijk is dat zo'n waarde gegenereerd wordt op het moment dat de contour de betreffende locatie voor de tweede keer passeert. De code moet op dat moment een van de waardes 1 t/m 4 ('linksom') hebben. Wanneer nu de 'contourknik' bij die tweede passage ook weer 'linksom' is, dan 20 wordt een van die waardes 10 t/m 13 gegenereerd, afhankelijk van de precieze ligging van beide 'linksom knikken' t.o.v. elkaar. Zo niet dan is weer gegarandeerd sprake van een skeletsituatie van de simpele soort en krijgt het betreffende arrayelement de waarde 14. In de volgende fase van het afschilproces (het afschillen zelf) is dan bekend dat de contourpunten die deze locatie passeren slechts zichzelf behoeven te herhalen. Een 25 voorbeeld waarbij de code 14 gegenereerd moet worden is weergegeven in figuur 6 waarbij het punt A~ het tweede contourpunt is die de betreffende locatie aandoet. In dit geval is op dét moment dus al bekend dat de contour minstens nog een keer deze locatie zal passeren, bijvoorbeeld via de getekende stippellijn. Het betreffende skeletpunt is er dus een van de simpele soort. De situaties met de codewaardes 10 t/m 30 13 daarentegen vertegenwoordigen, zoals zichtbaar in de recepten van figuur 4d en 4e (+ rotaties), reeds gevormde skeletpunten van een minder simpele soort. Dat zijn dan 1024932 ♦ 19 skeletpunten waarbij de passerende contourpunten niet alleen zichzelf herhalen maar ook nog een nieuw punt genereren.
In het bovenstaande is beschreven wat er gebeurt wanneer een locatie voor de tweede keer gepasseerd wordt en de code op dat moment een van de waardes 1 t/m 4 5 heeft. Indien de waarde bij die tweede passage echter valt in het gebied S..8,9 (4x rechtdoor, 4x rechtsom), dan krijgt het codearray op die plaats de waarde 14. Ook dan is gegarandeerd sprake van een skeletpunt van dé simpele soort. Wanneer een locatie wordt aangedaan en de code staat al op een van de waardes 10 t/m 13, dan is bekend dat dat punt voor de derde keer gepasseerd wordt en ook dan wordt de code op die plek ' 10 weer op 14 gezet. Er is dan bijvoorbeeld sprake van de situatie van figuur 4g waarbij het punt P als derde de locatie passeert. Tenslotte wordt niets meer aan de waarde van de code veranderd indien die al op 14 of 15 blijkt te staan, ongeacht hoe vaak de betreffende locatie nog aangedaan wordt. In de eindsituatie van het iteratieve erosieproces levert het codeerproces dus alleen maar waardes 14 en 15 op.
15 Beknopt samengevat zijn hieronder de vier regels van het codeerproces (de eerste actie van het afschilproces), dat hierboven in detail is beschreven, opgesomd: 1. Huidige waarde 0, dan nieuwe waarde 1..4, 5..8, 9,14 of 15 afhankelijk van de contourknik en richting.
2. Huidige waarde 1..4, dan nieuwe waarde 10..13 of 14 afhankelijk van de 20 contourknik en richting.
3. Huidige waarde 5..8,9 of 10..13, dan nieuwe waarde 14.
4. Huidige waarde 14 of 15, dan waarde ongewijzigd laten.
Het volgende deelproces in de lus van Fig.2 betreft het ontrafelen van de in het eerste deelproces gevormde nieuwe contour. Van die nieuwe contourbeschrijving 25 worden alle beginpunten bekeken die er bij die laatste afschilactie bijgekomen zijn.
Door naar de 'contouromgeving' van die beginpunten te kijken, is te beoordelen of die beginpunten een vorm hebben die essentieel genoeg is om een nieuwe tak te mogen gaan vormen. Zo niet dan wordt het 'uitsteeksel' verwijderd uit de contourbeschrijving door een aantal opeenvolgende contourpunten 'over te slaan', dat wil zeggen te 30 verwijderen uit de lijst van tweedimensionale coördinaten. De criteria in het beoordelingsproces zijn zo gekozen dat in de praktijk skeletten ontstaan met niet te veel en niet te weinig takken. Naar behoefte kunnen die criteria worden uitgebreid, 1024932 20 ι bijvoorbeeld ter verkrijging van een zwaardere ontrafeling. Ook andere criteria dan de hier gebruikte zijn in principe mogelijk.
Het in dit uitvoeringsvoorbeeld geïmplementeerde proces werkt als volgt. Een contouipunt nummer k van de laatste contour is een nieuw beginpunt wanneer het aan 5 twee eisen voldoet. Ten eerste moet het bij die laatste generatie zijn ontstaan en mag het dus geen kopie of herhaling zijn van een al eerder gevormd skeletpunt. Dit is te bepalen aan de hand van een bij dat punt behorend iteratienummer dat voor alle contouipunten bij wordt gehouden tijdens het iteratieve erosieproces. Daarbij krijgen alleen de nieuw gegenereerde punten het nummer van de laatste afschilactie, terwijl het 10 nummer van de reeds gevormde skeletpunten niet meer veranderd. Een extra voordeel van dat iteratienummer is dat na afloop van het skeletproces van elk skeletpunt bekend is in welke afschiliteratie het is ontstaan zodat op die locaties in feite de oorspronkelijke patroondikte bekend is. Ten tweede moet het contourpunt k een beginpunt zijn en moet er dus gelden dat de contourpunten k-1 en k+1 dezelfde 15 tweedimensionale coördinaten hebben. Zo'n beginpunt kan ontstaan zijn in een richting volgens het raster of 'onder 45 graden'. Zie figuur 7 voor enkele voorbeelden.
Voor wat betreft de criteria, worden nu eerst de diagonaal op het raster gelegen beginpunten afgehandeld. Daartoe kijken we naar de punten k-2 en k+2 langs de contour. Wanneer ook die twee punten dezelfde coördinaten hebben, dan noemen we 20 het beginpunt essentieel omdat dan de 'lengte' van de pas ontstane tak altijd groter is dan 1 pixelbreedte. Enkele voorbeelden zijn weergegeven in figuur 8. Wanneer die twee punten echter niet dezelfde coördinaten hebben, dan is sprake van een niet-essentieel beginpunt met een taklengte van l/2*\2, dus een lengte kleiner dan 1 pixelbreedte. Zo'n beginpunt wordt dus verwijderd uit de contourbeschrijving en wel 25 door de punten k en k+1 domweg over te slaan. Enkele voorbeelden zijn te zien in figuur 9.
Wat complexer is de beoordeling van de beginpunten die zijn ontstaan in een richting volgens het raster. Ook dan wordt eerst naar de punten k-2 en k+2 gekeken en ook dan geldt dat wanneer die beide punten ongelijke coördinaten hebben, dat we te 30 maken hebben met een niet-essentieel beginpunt en wel een met een taklengte van slechts een halve pixelbreedte. Voor enkele voorbeelden zie figuur 10. Echter wanneer de punten k-2 en k+2 wel dezelfde coördinaten hebben, dan wordt de verdere beoordeling wat complexer. Het blijkt dat in dit geval altijd geldt dat er in dit deel van 1024932 t 21 > de pas gevormde tak geen knik zit en dat de lengte van dit deel dus 1 pixelbreedte is.
We kijken'nu vervolgens naar de contourpunten k-3 en k+3. Wanneer ook deze punten gelijke coördinaten hebben, dan wordt het beginpunt weer beoordeeld als essentieel, ongeacht het precieze contourverloop. Zie de voorbeelden van figuur 11.
5 Pas wanneer de punten k-3 en k+3 ongelijke coördinaten hebben, dan wordt de beoordeling lastiger. De hoofdregel is dan dat het betreffende beginpunt niet-essentieel is tenzij een van de nog nader te omschrijven situaties bestaat. Allereerst zijn dat de 4 situaties van figuur 12 en de 12 situaties die daaruit ontstaan door 1,2 of 3 keer te roteren over 90 graden. De reden dat deze beginpunten toch als essentieel worden 10 aangeduid is het feit dat in het oorspronkelijke beeld op die plaats in de contour een duidelijk 'wigvormig' uitsteeksel zit. De vormen van figuur 12 worden gedetecteerd door te kijken naar de punten k-4 t/m k+6 respectievelijk k-6 t/m k+4. Naast de vormen van figuur 12 zijn er nog drie beginpunten, met locatie k-3 ongelijk aan locatie k+3, die niet verwijderd mogen worden. Hun vormen zijn weergegeven in figuur 13 en deze 15 figuur levert ook weer door rotatie 9 soortgelijke situaties op. Ook deze vormen worden weer gedetecteerd door te kijken naar de punten van het niet gestippelde deel der | figuren. De punten B en B~ in figuur 13 zijn ook beginpunten van de soort 'locatie k-3 ! ongelijk locatie k+3', echter ze hebben niet een van de vormen van de met k aangeduide beginpunten in figuur 13 en ook niet die van figuur 12. Met andere woorden wanneer 20 bij die punten is aangeland, dan zullen deze 'zijtakjes' wél worden verwijderd door het onderhavige ontrafelingproces. Eigenlijk is dat ook precies wat wenselijk is: de 'doorgaande' richting heeft de voorkeur. Tenslotte kunnen er naast de 7 vormen (4x7 situaties) van figuur 12 en 13 nog twee speciale vormen van het contourverloop rond het kandidaat beginpunt k optreden waar een niet standaard behandeling voor nodig is 25 ter verkrijging van fraaie, niet rafelige, skeletten. Dat laatste wil zeggen dat het beginpunt wel mag blijven maar dat de ligging en de bijbehorende taklengte aangepast worden. Deze twee speciale vormen zijn weergegeven in figuur 14 evenals hun transformaties. Door drie keer rotatie ontstaan uit deze figuur nog eens zes soortgelijke situaties. De beoogde transformatie wordt verkregen door de punten k-1 en k+1 over te 30 slaan en het punt k te verplaatsen naar de locatie Q. De beginpunten B van figuur 14 zullen net als die van figuur 13 wél volledig verwijderd worden door het onderhavige ontrafelproces. Het uiteindelijke effect is dan een niet rafelige takstructuur die 'netjes' rechtdoor loopt.
1 02 4932 22 %
Alle andere vormen van beginpunten met locatie k-3 ongelijk locatie k+3, die dus niet vallen onder een van de vormen van figuur 12 t/m 14, worden dus volledig verwijderd. Dat verwijderen bestaat voor die situaties uit het overslaan van de punten k-1, k, k+1 en k+2 in de contourbeschrijving. Enkele van die situaties 2ijn als 5 voorbeeld getoond in figuur 15. Het totale ontrafelproces 21b is geïmplementeerd door eerst één keer de contour af te lopen en daarbij de punten te merken die overgeslagen moeten worden evenals de punten die verplaatst moeten worden zoals de beginpunten k van figuur 14. Pas daarna wordt nog eens door de contour gelopen en daarbij de lijst van contourpunten opgeschoond. In de eerste 'ronde' worden dus nog geen punten 10 weggegooid of verplaatst, maar alleen gemerkt. Dat is een veilige werkwijze waarbij de detectie van de gedefinieerde vormen altijd correct plaats vindt daar de contour nog niet is aangetast.
Met de volgens bovenstaand recept ontrafelde contour wordt vervolgens weer via de lus het (codeer- en) afschilproces 21a doorlopen en daarna weer het ontrafelproces 15 21b enz. Met deze iteraties wordt net zo lang doorgegaan totdat er geen enkel contourpunt meer verplaatst wordt. Het beslissingsblok 21c zorgt er op dat moment voor dat het iteratieve erosieproces beëindigd wordt. De laatste contour die door het afschilproces 21a wordt opgeleverd is dan dezelfde als de voorlaatste contour en is dus al ontrafeld. Het verkregen eindresultaat is de contourbeschrijving van een oneindig 20 dun beeld en daarmee is in feite het skelet opgeleverd in een bepaalde vorm.
Het derde hoofdproces 22 omvat de transformatie van de door het iteratieve erosieproces opgeleverde contourskeletbeschrijving naar een beschrijving van alle beginpunten en vertakkingspunten en de daartussen gelegen takken. De opgeleverde skeletcontour is de eindcontour van het iteratieve erosieproces 21. Met behulp van het 25 tweedimensionale codearray of telarray kan vervolgens bepaald worden hoe vaak die eindcontour alle skeletlocaties passeert. Voor de beginpunten is dat 1 keer, voor de vertakkingspunten 3 tot maximaal 8 keer en voor de 'interne' punten van de takken, die zich tussen die speciale punten bevinden, precies 2 keer. Daarna wordt die eindcontour nog een laatste keer doorlopen en daarbij de lijst van takken gegenereerd. Zodra een 30 eerste speciaal punt tegen wordt gekomen, te zien aan 'teller ongelijk 2', wordt de opslag van de eerste tak gestart waarbij, in volgorde, van de gepasseerde contourskeletpunten de tweedimensionale coördinaten en het iteratienummer in een lijst gezet worden. De opslag van die tak eindigt zodra een volgend speciaal punt tegen 1024932 .23 wordt gekomen. Het eerste en het laatste punt van een tak is dus altijd een speciaal punt. Naar behoefte kunnen per tak nog extra gegevens opgeslagen worden, bijvoorbeeld de 'vertakkingswaarde' van het eerste en het laatste punt (1 = beginpunt, 3..8 = vertakkingspunt). Meteen bij het beëindigen van de opslag van een tak wordt 5 gestart met het begin van een nieuwe tak. Die opslag van die nieuwe tak wordt echter geannuleerd wanneer de eerste twee punten van die tak exact gelijk blijken te zijn aan de twee laatste punten van een van de takken die reeds zijp opgenomen in de lijst van takken. Er is dan sprake van de situatie dat de contour een reeds opgeslagen tak in de tegenovergestelde richting begint te doorlopen. In dat geval wordt dus niets opgeslagen' 10 tot het eerstvolgende speciale punt en daar begint bovenstaand proces opnieuw.
Tenslotte wordt uit de lijst van takken de lijst van speciale punten gegenereerd waarbij per speciaal punt naar behoefte een bepaalde hoeveelheid gegevens worden opslagen, bijvoorbeeld de tweedimensionale coördinaten, het iteratienummer en de vertakkingswaarde. Er wordt gestart met de eerste tak en de gegevens van het eerste 15 punt worden opgeslagen bij het nummer 1 van de lijst van speciale punten. Het laatste punt van diezelfde tak wordt in het algemeen opgeslagen als speciaal punt nummer 2, tenzij de coördinaten gelijk zijn aan die van het reeds opgeslagen punt (de tak vormt in dat geval een lus). In geval van zo'n situatie wordt de opslag geannuleerd. Bij de volgende takken worden zowel het eerste als het laatste punt van die takken vergeleken 20 met de reeds opgeslagen speciale punten. Op die wijze wordt voorkomen dat beginpunten en vertakkingspunten meer dan één keer worden opgeslagen. In deze tweede ronde is er een relatie tussen de eerste en de laatste punten der takken en het nummer dat de bijbehorende speciale punten hebben gekregen in de betreffende lijst Daarmee kunnen de gegevens in de lijst van takken eventueel Verrijkt' worden met een 25 indexnummer voor de eerste en laatste punten dat verwijst naar de plaats in de lijst van speciale punten. De in deze uitvoeringsvorm gekozen beschrijving is een van de mogelijkheden om een skelet te beschrijven door middel van speciale punten en takken. Ook andere of uitgebreidere beschrijvingen kunnen worden afgeleid uit de skeletcontour. Wanneer de speciale punten worden weergeven door duidelijke stippen 30 en de takken d.m.v. doorlopende lijnen, dan wordt een goed beeld verkregen van dit zgn. basisskelet. Een voorbeeld opgeleverd door het totale proces, inclusief de beschreven ontrafeling, is te zien in figuur 16. Daaraan is goed te zien dat het skelet door de ontrafeling niet te veel takjes bevat.
1 n ·> λ o q ? - 24 »
Een laatste, optioneel hoofdproces 23 omvat het filteren of afVlakken van de takken. Zoals uit het voorbeeld van figuur 16 blijkt, zien de takken die zich tussen de speciale punten bevinden er wat 'onrustig' uit. Dit komt omdat het proces tak-elementjes (de lijnstukjes van punt i naar punt i+1) oplevert die slechts 8 richtingen 5 kennen. Voor bepaalde doeleinden is het nodig om de beschikking te hebben over wat 'rustiger* verlopende takken, bijvoorbeeld voor het afleiden van kenmerken waarin hoekiichtingen en krommingen een rol spelen. Daarom is een filterproces ontworpen waarbij de speciale punten op hun plaats blijven, maar de tussenliggende interne takpunten door die filtering zodanig Verschoven' worden dat rustig verlopende (gladde) 10 takken ontstaan. Voor dat doel kunnen in principe vele bekende benaderingsmethoden, voor het beschrijven van een reeks punten in een plat vlak, gebruikt worden. Het in deze uitvoeringsvorm geïmplementeerde proces heeft een instelbare 'sterkte' waarbij de grootste sterkte de gladste takken oplevert. Het gebruikte principe is een zogenaamd 'lopend' gemiddelde over een instelbaar aantal takpunten. Bijvoorbeeld bij een 15 'vijfpunts' filter worden voor elk takpunt i de nieuwe coördinaten berekend op basis van de volgende middeling:
Xn[i] = ( X[i-2] + X[i-1] + X[i] + X[i+1] + X[i+2]) / 5 Yn[i] = ( Y[i-2] + Y[i-1] + Y[i] + Y[i+1] + Y[i+2]) / 5
Echter deze formules geven een probleem wanneer in de buurt van het eerste of 20 laatste punt van de betreffende tak wordt aangekomen, dus in de buurt van de speciale punten. Het is dan mogelijk om bijvoorbeeld de filterbreedte korter te maken naarmate het speciale punt dichter genaderd wordt. In de speciale punten zelf krijgt het filter dan een breedte van slechts '1'. Daarmee is weliswaar gegarandeerd dat de speciale punten op hun plaats blijven, echter die variabele filterbreedte geeft aan het begin en einde van 25 een tak een wat minder glad resultaat dan de hier gekozen methode.
Daarom wordt aan het begin en het einde van een te filteren tak een stukje van die tak 'gespiegeld' in de betreffende speciale punten. Het voordeel daarvan is dat van het eerste takpunt t/m het laatste takpunt de filterbreedte (bijv. 5) dezelfde mag blijven, terwijl toch gegarandeerd is dat de speciale punten op hun plaats blijven. In figuur 17 is 30 zo'n 'fictieve' spiegeling, voor het takje linksonder in figuur 16, weergegeven. Door bijvoorbeeld het punt 7 te spiegelen in punt 9 verkrijgen we het punt 7~. Idem is het punt 3~ het spiegelbeeld van punt 3 wanneer we spiegelen in punt 1. Door de spiegeling 'werkt' het als voorbeeld gekozen vijfpunts filter dus bijv. ook in punt 8 : 1024932 t 25 \ X8n = (X6+X7 + X8 + X9 + X8~)/5 Y8n = (Y6 + Y7 + Y8 + Y9 + Y8~)/5
Het zal duidelijk zijn dat door de spiegeling deze formules voor de punten 1 en 9 ongewijzigde coördinaten opleveren. In figuur 18 is het resultaat getoond van een 5 zevenpuntsfilter dat is losgelaten op het basisskelet van figuur 16. Tenslotte wordt opgemerkt dat het toepassen van twee filters na elkaar, bijvoorbeeld een zevenpunts-gevolgd door een driepuntsfilter, een zgn. convolutiefilter oplevert met een weer iets ander effect.
De aldus verkregen skeletbeschrijving kan worden toegevoerd aan de verdere 10 processor 12, waarin bijvoorbeeld karakterherkenning wordt uitgevoerd. De onderhavige uitvinding blijkt met name bruikbaar bij de automatische karakterherkenning van aan elkaar geschreven tekst, met name bij het segmenteren van het beeld in afzonderlijke karakters of karakterdelen.
102 493 2”
Claims (14)
1. Werkwijze voor het verkrijgen van een skeletvormige uitvoer die een vereenvoudigde weergave is van een pixelbeeld met aaneensluitende pixels, S omvattende: het omvormen van het pixelbeeld met aaneensluitende pixels in een contouradministratie, waarbij een contouradministratie bestaat uit één of meer reeksen van tweedimensionale contourpunten waarbij de afstand tussen opeenvolgende contourpunten één pixelbreedte bedraagt; 10 het verdubbelen van het aantal contourpunten door tussen twee opeenvolgende contourpunten een additioneel punt te definiëren, waardoor de afstand tussen twee opeenvolgende contourpunten een halve pixelbreedte bedraagt; het herhaald afschillen van het door de contouradministratie beschreven beeld door het herhaald genereren van een nieuwe contouradministratie, totdat de nieuwe 15 contouradministratie een beeld beschrijft met overal de dikte nul en daarmee de skeletvormige uitvoer beschrij ft, waarbij het afschillen plaatsvindt door voor elk contourpunt, afhankelijk van dat contourpunt, het voorgaande contourpunt en het volgende contourpunt in de contouradministratie en afhankelijk van de andere contourpunten in de 20 contouradministratie met dezelfde tweedimensionale coördinaten met het respectieve daarbij behorende voorgaande contourpunt en volgende contourpunt, nul, één, twee of drie punten van de nieuwe contouradministratie te genereren waarbij die nieuwe punten ofwel dezelfde coördinaten hebben als het oude contourpunt ofwel over een afstand van een halve pixelbreedte in de x-richting en/of de y-richting 25 verschoven zijn naar de binnenzijde van het door de contouradministratie beschreven beeld.
2. Werkwijze volgens conclusie 1, waarbij een codearray, met een bepaald bereik aan tweedimensionale adressen wordt opgeslagen, en waarbij het afschillen omvat: 30. het doorlopen van de reeks of reeksen van contourpunten van de contouradministratie; - het, afhankelijk van de waarde van de in het codearray op het bij het contourpunt behorende adres reeds aanwezige situatie-indicatie en het voorgaande en volgende 1024932’ V > contourpunt in de reeks, bepalen van een bij gewerkte situatie-indicatie en het opslaan daarvan op dat zelfde adres; i - het nogmaals punt voor punt doorlopen van de contouradministratie en het genereren van een nieuwe contouradministratie op basis van de respectieve situatie-indicaties in 5 het codearray.
3. Werkwijze volgens conclusie 2, waarbij de contourpunten gelegen zijn op een tweedimensionaal rooster, waarbij de steekafstand van het rooster overeenkomt met een halve pixelbreedte, en de situatie-indicatie een 16-waardige code is. 10
4. Werkwijze volgens een van de conclusies 1 tot en met 3, verder omvattende het ontrafelen van de na een afschilactie ontstane nieuwe contouradministratie, waarbij het ontrafelen omvat: het beoordelen of een bij deze afschilactie ontstaan beginpunt een essentieel of een IS niet-essentieel beginpunt is, en het verwijderen van de niet-essentiële beginpunten uit de reeks of reeksen van contourpunten van de contouradministratie,' waarbij een beginpunt een contourpunt is waarvoor het direct voorgaande en direct volgende contourpunt in de reeks dezelfde coördinaten hebben.
5. Werkwijze volgens conclusie 4, waarbij aan elk contompunt in de contouradministratie een iteratienummer is toegewezen dat aangeeft in welke iteratieslag het betreffende contourpunt voor het eerst is gegenereerd.
6. Werkwijze volgens conclusie 4 of 5, waarbij het beoordelen of een beginpunt 25 een essentieel of een niet-essentieel beginpunt is afhankelijk is van een of meer voorgaande en een of meer volgende contourpunten in de reeks.
7. Werkwijze volgens een van de conclusies 4,5, of 6, waarbij het ontrafelen omvat: 30 het doorlopen van de reeks van contourpunten; het afhankelijk van een of meer voorgaande en een of meer volgende contourpunten van de reeks of reeksen contourpunten toewijzen van een ontrafelindicatie aan het contompunt én aan een of meer voorgaande en/of volgende contourpunten; 1024932 * te het nogmaals doorlopen van de reeks van contouipunten en het vormen van een nieuwe reeks contourpunten op basis van de ontrafelindicatie.
8. Werkwijze volgens een van de conclusies 1 tot en met 7, omvattende het 5 transformeren van de door de reeks of reeksen van contourpunten gevormde contouradministratie met bijbehorend beeld met dikte nul in een administratie van de in dat beeld aanwezige beginpunten en knooppunten en de tussen de begin- en knooppunten aanwezige takken.
9. Werkwijze volgens conclusie 8, waarbij het transformeren omvat: het bijhouden van een telwaarde in het codearray met tweedimensionale adressen, die aangeeft hoe vaak een bepaalde tweedimensionale coördinaat voorkomt in de contouradministratie die het beeld met dikte nul vertegenwoordigt; het extraheren van een tak door het opslaan van aaneensluitende contouipunten in de 15 reeks, waarvoor de telwaarde in het codearray op het bijbehorende tweedimensionale adres twee is, aangevuld met takpunten, waarbij de takpunten worden gevormd door de voorganger van het eerste punt en de opvolger van het laatste punt; het opslaan van speciale contourpunten uit de reeks, waarvoor de telwaarde in het codearray één of meer dan twee is. 20
10. Werkwijze volgens conclusie 9, waarbij een geëxtraheerde tak, waarvan de eerste twee contourpunten samenvallen met de laatste twee contouipunten van een reeds opgeslagen tak, niet wordt opgeslagen.
11. Werkwijze volgens conclusie 9 of 10, waaibij een geëxtraheerde tak ruimtelijk gefilterd wordt, bijvoorbeeld door het bepalen van een lopend gemiddelde van de respectieve tweedimensionale coördinaatwaarden.
12. Inrichting voor het verkrijgen van een skeletvormige uitvoer die een 30 vereenvoudigde weergave is van een pixelbeeld met aaneensluitende pixels, omvattende: een detector voor het verkrijgen van het pixelbeeld; 1024932 * % , 29 verwerkingsmiddelen die verbonden zijn met de detector, waarbij de verwerkingsmiddelen zijn ingericht voor: het omvormen van het pixelbeeld met aaneensluitende pixels in een contouradministratie, waarbij een contouradministratie bestaat uit één of meer reeksen 5 van tweedimensionale contourpunten waarbij de afstand tussen opeenvolgende contourpunten één pixelbreedte bedraagt; het verdubbelen van het aantal contourpunten door tussen twee opeenvolgende contourpunten een additioneel punt te definiëren, waardoor de afstand tussen twee opeenvolgende contourpunten een halve pixelbreedte bedraagt; 10 het herhaald afschillen van het door de contouradministratie beschreven beeld door het herhaald genereren van een nieuwe contouradministratie, totdat de nieuwe contouradministratie een beeld beschrijft met overal de dikte nul en daarmee de skeletvormige uitvoer beschrijft, waarbij het afschillen plaatsvindt door voor elk contouipunt, afhankelijk van dat 15 contourpunt, het voorgaande contourpunt en het volgende contourpunt in de contouradministratie en afhankelijk van de andere contourpunten in de contouradministratie met dezelfde tweedimensionale coördinaten met het respectieve daarbij behorende voorgaande contourpunt en volgende contouipunt, nul, één, twee of drie punten van de nieuwe contouradministratie te genereren 20 waarbij die nieuwe punten ofwel dezelfde coördinaten hebben als het oude contouipunt ofwel over een afstand van een halve pixelbreedte in de x-richting en/of de y-richting verschoven zijn naar de binnenzijde van het door de contouradministratie beschreven beeld.
13. Inrichting volgens conclusie 12, waarbij de verweikingsmiddelen verder zijn ingericht voor het uitvoeren van de werkwijze volgens een van de conclusies 2 tot en met 11.
14. Computerprogrammaproduct omvattende computerleesbare code, waarbij de 30 computerleesbare code, na laden in een computer, de computer verschaft met de functionaliteit van de werkwijze volgens een van de conclusies 1 tot en met 11. 1 024932"
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL1024932A NL1024932C2 (nl) | 2003-12-03 | 2003-12-03 | Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. |
DE602004011648T DE602004011648T2 (de) | 2003-12-03 | 2004-12-03 | Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten |
EP04078289A EP1538547B1 (en) | 2003-12-03 | 2004-12-03 | Method and device for extracting skeletal data from image data |
AT04078289T ATE385594T1 (de) | 2003-12-03 | 2004-12-03 | Verfahren und vorrichtung zur skelettbilder extraktion von bilddaten |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL1024932 | 2003-12-03 | ||
NL1024932A NL1024932C2 (nl) | 2003-12-03 | 2003-12-03 | Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. |
Publications (1)
Publication Number | Publication Date |
---|---|
NL1024932C2 true NL1024932C2 (nl) | 2005-06-06 |
Family
ID=34464928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NL1024932A NL1024932C2 (nl) | 2003-12-03 | 2003-12-03 | Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1538547B1 (nl) |
AT (1) | ATE385594T1 (nl) |
DE (1) | DE602004011648T2 (nl) |
NL (1) | NL1024932C2 (nl) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4928325B2 (ja) * | 2006-03-31 | 2012-05-09 | キヤノン株式会社 | 画像処理方法、画像処理装置、プログラムおよび記憶媒体 |
US7889938B2 (en) * | 2006-03-31 | 2011-02-15 | Canon Kabushiki Kaisha | Method and apparatus for processing line drawings in images |
CN112598689B (zh) * | 2020-12-29 | 2024-05-17 | 凌云光技术股份有限公司 | 一种纹理背景下弱线的提取方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6377710B1 (en) * | 1998-11-25 | 2002-04-23 | Xerox Corporation | Method and apparatus for extracting the skeleton of a binary figure by contour-based erosion |
-
2003
- 2003-12-03 NL NL1024932A patent/NL1024932C2/nl not_active IP Right Cessation
-
2004
- 2004-12-03 EP EP04078289A patent/EP1538547B1/en not_active Not-in-force
- 2004-12-03 DE DE602004011648T patent/DE602004011648T2/de active Active
- 2004-12-03 AT AT04078289T patent/ATE385594T1/de not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6377710B1 (en) * | 1998-11-25 | 2002-04-23 | Xerox Corporation | Method and apparatus for extracting the skeleton of a binary figure by contour-based erosion |
Non-Patent Citations (3)
Title |
---|
ARCELLI C ET AL: "Medial lines by parallelwise erosion of successive contour pairs", TENCON '92. ''TECHNOLOGY ENABLING TOMORROW : COMPUTERS, COMMUNICATIONS AND AUTOMATION TOWARDS THE 21ST CENTURY.' 1992 IEEE REGION 10 INTERNATIONAL CONFERENCE. MELBOURNE, VIC., AUSTRALIA 11-13 NOV. 1992, NEW YORK, NY, USA,IEEE, US, 11 November 1992 (1992-11-11), pages 66 - 70, XP010067537, ISBN: 0-7803-0849-2 * |
LAM L ET AL: "THINNING METHODOLOGIES-A COMPREHENSIVE SURVEY", IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, IEEE INC. NEW YORK, US, vol. 14, no. 9, 1 September 1992 (1992-09-01), pages 869 - 885, XP000306454, ISSN: 0162-8828 * |
SHIH F Y ET AL: "A NEW SAFE-POINT THINNING ALGORITHM BASED ON THE MID-CRACK CODE TRACING", IEEE TRANSACTIONS ON SYSTEMS, MAN AND CYBERNETICS, IEEE INC. NEW YORK, US, vol. 25, no. 2, 1 February 1995 (1995-02-01), pages 370 - 378, XP000501499, ISSN: 0018-9472 * |
Also Published As
Publication number | Publication date |
---|---|
DE602004011648T2 (de) | 2009-02-05 |
EP1538547A1 (en) | 2005-06-08 |
DE602004011648D1 (de) | 2008-03-20 |
EP1538547B1 (en) | 2008-02-06 |
ATE385594T1 (de) | 2008-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wenyin et al. | From raster to vectors: extracting visual information from line drawings | |
CN105894464B (zh) | 一种中值滤波图像处理方法和装置 | |
CN109948393B (zh) | 一种一维条码的定位方法及装置 | |
JP2002342017A (ja) | 光学式ナビゲーションシステムにおいて木目を取り除く方法 | |
EP1093088B1 (en) | A region growing based noise reduction method for digital images | |
CN111476188B (zh) | 基于特征金字塔的人群计数方法、系统、介质及电子设备 | |
CN108898148B (zh) | 一种数字图像角点检测方法、系统及计算机可读存储介质 | |
NL1024932C2 (nl) | Werkwijze en inrichting voor het extraheren van skeletdata uit beelddata. | |
Sirjani et al. | On representation of a shape's skeleton | |
JP2001319239A (ja) | 物体輪郭抽出装置及び方法 | |
Farella et al. | Handling critical aspects in massive photogrammetric digitization of museum assets | |
DE10142457B4 (de) | Digitale Bildmessung retroreflektierender Marken | |
CN113361442A (zh) | 图像识别方法、装置、电子设备和存储介质 | |
JP7316771B2 (ja) | 学習装置、パラメータの作成方法、ニューラルネットワーク及びこれを用いた情報処理装置 | |
JP3275252B2 (ja) | 3次元情報入力方法及びそれを使った3次元情報入力装置 | |
JP2995650B2 (ja) | 罫線除去方式 | |
CN113420770B (zh) | 图像数据处理方法、装置、电子设备和存储介质 | |
CN117788306B (zh) | 一种基于多线程的多焦距极耳图像融合方法 | |
Haas et al. | Pitch length measurement of stents using dynamically cropped images | |
JP4214462B2 (ja) | 画像処理装置および方法、記録媒体、並びにプログラム | |
JPH02138677A (ja) | 画像特徴点検出方法 | |
Colchester et al. | A method for multi-scale representation of data sets based on maximum gradient profiles: initial results on angiographic images | |
JPS6086684A (ja) | 画像細線化プロセス | |
Qian et al. | Skeletonization of gray-scale images by gray weighted distance transform | |
CN113420641A (zh) | 图像数据处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PD2B | A search report has been drawn up | ||
V1 | Lapsed because of non-payment of the annual fee |
Effective date: 20100701 |