DE602004011648T2 - Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten - Google Patents

Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten Download PDF

Info

Publication number
DE602004011648T2
DE602004011648T2 DE602004011648T DE602004011648T DE602004011648T2 DE 602004011648 T2 DE602004011648 T2 DE 602004011648T2 DE 602004011648 T DE602004011648 T DE 602004011648T DE 602004011648 T DE602004011648 T DE 602004011648T DE 602004011648 T2 DE602004011648 T2 DE 602004011648T2
Authority
DE
Germany
Prior art keywords
contour
points
point
listing
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602004011648T
Other languages
English (en)
Other versions
DE602004011648D1 (de
Inventor
Robert Wilcke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Prime Vision BV
Original Assignee
Prime Vision BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Prime Vision BV filed Critical Prime Vision BV
Publication of DE602004011648D1 publication Critical patent/DE602004011648D1/de
Application granted granted Critical
Publication of DE602004011648T2 publication Critical patent/DE602004011648T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/12Edge-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/155Segmentation; Edge detection involving morphological operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/16Image preprocessing
    • G06V30/168Smoothing or thinning of the pattern; Skeletonisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/18Extraction of features or characteristics of the image
    • G06V30/182Extraction of features or characteristics of the image by coding the contour of the pattern
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • G06T2207/10008Still image; Photographic image from scanner, fax or copier
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20036Morphological image processing
    • G06T2207/20044Skeletonization; Medial axis transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30176Document
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character 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

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren und einer Vorrichtung zum Extrahieren von Skelettdaten aus Bilddaten.
  • In dem speziellen Feld der Bildverarbeitung und der Mustererkennung werden so genannte skelettale Algorithmen seit vielen Jahren verwendet. Das dort bestehende Ziel ist üblicherweise eine Beschreibung der Zeichen geschriebenen und/oder gedruckten Texts, sodass die darauf folgende Bildanalyse und Wiedererkennung weniger komplex ist. Seit dem Aufkommen von artifiziellen neuronalen Netzen wurde das Erkennen von Zeichen weitgehend gelöst und das Interesse an diesen Algorithmen hat in gewissem Maße abgenommen. Jedoch können neuen Probleme, beispielsweise die Wiederkennung von Text in zusammengeschriebener Schrift (kursive Schrift) und die Segmentierung von Text, der über Dateneingabefelder hinweg geschrieben wurde, tatsächlich nur dann gut gelöst werden, wenn Zugriff auf „unendlich dünne Schreiblinien und Schnittpunkte" besteht, auf denen das Binärbild des geschriebenen oder gedruckten Texts basiert. Das Erhalten eines „Skeletts" mit guten Eigenschaften ist daher sehr wichtig.
  • Stand der Technik
  • Das US-Patent US-B 6,377,710 beschreibt ein Verfahren und ein System zum Extrahieren des Skeletts einer binären Figur mittels konturbasierter Abtragung. Mit diesem Verfahren wird ein Pixel (nach innen gerichtet) in jedem Fall von einer Kontur eines Bildes entfernt, wenn spezifische Zustände eintreten, wobei als Ergebnis letztlich ein Skelett von vollständigen, miteinander verbundenen Pixel verbleibt.
  • Der Artikel "A New Safe-Point Thinning Algorithm Based an the Mid-Crack Code Tracing" von F. Shih et al., IEEE Transactions an Systems, Man and Cybernetics, 25 (1995) Februar, Nr. 2, S. 370–378 offenbart einen Ausdünnungsalgorithmus zum Vorsehen eines Binärbildes mit einer ein-Pixel-breiten Skelettdarstellung als Ausgabe. In den darauf folgenden iterativen Schritten wird jeder Pixeln mittels eines Codes basierend auf der Analyse eines zugehörigen 3×3-Pixelfensters, ausgehend von dem ursprünglichen Bild, wiedergegeben. Das Löschen von Pixel in dem Bild wird ermittelt, indem das zugehörige 3×3-Pixelfenster unter Verwendung einer Look-up-Tabelle klassifiziert wird. In jeder Iteration werden nur Grenzpixel verarbeitet, d. h. Pixel an der Kante einer Form in dem (verarbeiteten) Bild.
  • Der Artikel „Medial Lines by Parallewise Erosion of Successive Contour Pairs" von C. Arcelli et al., IEEE Region 10 Conference, Tencon 1992, S. 66–70 offenbart einen iterierten parallelen Ausdünnungsalgorithmus, der lokale 3×3-Operationen verwendet. Das offenbarte Verfahren erlaubt Pixelabtragung in einem Bild in zwei Richtungen gleichzeitig.
  • Derartige Skelettalgorithmen sind seit langem bekannt, einschließlich des Gebiets der Zeichenerkennung. Die Mehrheit der Algorithmen basiert auf Abtragen von Pixelbildern. Mit dieser Prozedur werden „schwarze" Pixel Schritt für Schritt unter der Bedingung eliminiert, dass die Struktur des Bildes als Ergebnis der Abtragung nicht unterbrochen oder verändert wird.
  • Es werden manchmal deutliche Beschleunigungen mittels konturbasierter Abtragungen des Pixelbilds erreicht, wie es in dem zitierten US-Patent US-B 6,377,710 offenbart ist. Es wurde erkannt, dass viele in der Literatur beschriebene Algorithmen drei oder mehr der folgenden Nachteile aufweisen:
    • 1. Die Skelettausgabe wird als ein Pixelbild mit einer „Dicke" von 1 Pixel definiert. Aufgrund der Definition der Verbindung ist dies eine erörterungswerte Definition. In manchen Fällen wird eine Binärstruktur auf Grund dieser Vorraussetzung durch die bestehenden Abtragungsalgorithmen nicht weiter verändert. Dies kann zu einem Skelett führen, das an einigen Stellen eine Dicke von deutlich mehr als 1 Pixel aufweist. Jedoch entspricht die Skelettausgabe üblicherweise dem Erfordernis der Dicke von 1 Pixel, und „Knoten" mit drei oder mindestens vier „Zweigen" werden erzeugt.
    • 2. Um die Beschreibung in Form von Knoten mit dazwischen liegenden linearen Zweigen (unendlich dünn und im Allgemeinen nicht geradlinig) zur weiteren Verarbeitung der Skelettausgabe zu erhalten, beispielsweise zur Zeichenerkennung, muss die unter Punkt 1 erwähnte Skelettausgabe ebenso einem getrennten Prozess unterworfen werden. Ein solcher Prozess ist mit Sicherheit nicht trivial.
    • 3. Als eine Folge des Prinzips, demgemäß in jedem Fall komplette Pixel aus der Struktur „eliminiert" werden, sehen die bekannten Abtragungsalgorithmen per Definition eine asymmetrische Skelettausgabe vor. In diesem Kontext soll beispielsweise eine vertikallineare Struktur mit einer Dicke von 2 Pixel angenommen werden. Der eine Algorithmus wird beispielsweise die Pixel auf der linken eliminieren, während ein weiterer Algorithmus spezifisch die Pixel auf der rechten Seite eliminiert. In beiden Fällen kann von einem asymmetrischen Skelett gesprochen werden. In dem Fall dieses einfachen Beispiels ist die Asymmetrie natürlich keine Störung, jedoch im Fall von komplexeren Strukturen sieht das Ergebnis „nicht korrekt" aus, und beispielsweise die Stelle der Knoten entspricht „visuell" im geringeren Maße dem tatsächlich darunter Liegenden, als im Fall eines symmetrischen Skeletts.
    • 4. Eine große Anzahl von Skelettalgorithmen sind drehungsabhängig, d. h., dass die Skelettausgabe sich ändert, wenn das binäre Muster in dem Bildspeicher um 90° oder Vielfaches hiervon gedreht wird. Manchmal variiert sogar die Anzahl an Zweigen. Dies tritt auf, während hinsichtlich der Form das Bild auf Pixelebene exakt gleich bleibt.
    • 5. Die Algorithmen, die auf konturgesteuerter Abtragung des Pixelbildes basieren, sind hinsichtlich der Auswahl der Ursprünge auf den äußeren und inneren Konturen der Struktur empfindlich. Eine Änderung der Reihenfolge, in der die äußere und innere Struktur in jedem Abtragungsschritt bearbeitet wird, erzeugt im Allgemeinen ebenso eine unterschiedliche Skelettausgabe. Die zu Grunde liegende Ursache hierfür ist tatsächlich die gleiche, wie die für das unter Punkt 3 erwähnte Phänomen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung zielt darauf ab, ein Verfahren und eine Vorrichtung vorzusehen, die es möglich macht, charakteristische Merkmale aus Bilddaten zu extrahieren, beispielsweise zur Handschrifterkennung, die Nachteile des Stands der Technik, die genannt wurden, zu reduzieren oder zu eliminierten.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung wird ein Verfahren zum Vorsehen einer Ausgabe in Skelettform vorgesehen, die eine vereinfachte Wiedergabe eines Pixelbilds mit zusammengefügten Pixel ist. Das Verfahren kann ebenso für einen Satz von Bildern dieses Typs (beispielsweise eine „fünf mit abgelösten Balken") verwendet werden, und umfasst:
    Umwandeln des Pixelbilds mit zusammengefügten Pixel in eine Konturliste, wobei eine Konturliste aus einer oder mehreren Folgen (mehrere Folgen im Falle von ein oder mehreren inneren Konturen) von zweidimensionalen Konturpunkten besteht bzw. bestehen, wobei die Entfernung zwischen aufeinander folgenden Konturpunkten die Breite eines Pixels aufweist;
    Verdoppeln der Anzahl an Konturpunkten durch Definieren eines weiteren Punkts zwischen zwei aufeinander folgenden Konturpunkten, wodurch der Abstand zwischen zwei aufeinander folgenden Konturpunkten die Hälfte der Breite eines Pixels beträgt;
    wiederholtes (auch „iterativ" genanntes) Abziehen des von der Konturauflistung beschriebenen Bildes durch wiederholtes Erzeugen einer neuen Konturauflistung, bis die neue Konturauflistung ein Bild beschreibt, das durchgehend eine Dicke von null hat, und somit eine Ausgabe in Skelettform beschreibt, wobei das Abziehen ausgeführt wird durch Erzeugen von null, ein, zwei oder drei Punkten in der neuen Konturauflistung für jeden Konturpunkt, abhängig von dem Konturpunkt, dem vorangehenden Konturpunkt und dem nachfolgenden Konturpunkt in der Konturauflistung, und abhängig von weiteren Konturpunkten in der Konturauflistung, die die gleichen zweidimensionalen Koordinaten mit dem jeweiligen zugehörigen vorangehenden Konturpunkt und dem folgenden Konturpunkt aufweisen,
    wobei die neuen Punkte entweder die gleichen Koordinaten wie der alte Konturpunkt (an den Stellen, an denen kein Abziehen vorgenommen werden kann) haben, oder die über eine Entfernung verschoben wurden, die um die Hälfte einer Pixelbreite in der X-Richtung und/oder der Y-Richtung zum Inneren des Bildes hin verschoben wurden, das von der Konturauflistung beschrieben wird.
  • Durch Verwendung dieses Verfahrens wird ein abgetragenes Konturbild erhalten, wobei der Abtragungsprozess symmetrisch ist. Dies ist für die Qualität des erhaltenen Ergebnisses vorteilhaft, wodurch sich in den folgenden Verarbeitungsschritten ein besseres Erkennungsergebnis ergibt.
  • In einer weiteren Ausführung wird ein Code-Array mit einem spezifischen Bereich von zweidimensionalen Adressen gespeichert. Der Bereich ist mindestens so groß wie der Bereich der zweidimensionalen Koordinaten aller auftretenden Bildstrukturen (beschrieben durch die verdoppelte Konturauflistung, die in den vorangehenden Schritten erhalten wurde). In dieser Ausführung umfasst das Abziehen:
    • – Durchgehen der Folge oder der Anzahl von Folgen von Konturpunkten in der Konturauflistung;
    • – Bestimmen eines aktualisierten Situationsindikators abhängig von dem Wert des Situationsindikators (der bei einem Anfangswert von 0 startet), der bereits in dem Code-Array bei der Adresse vorliegt, die dem Konturpunkt und dem vorangehenden und nächsten Konturpunkt in der Folge angehört, und Speichern des Situationsindikators unter der selben Adresse;
    • – wiederholtes punktweises Durchgehen durch die Konturauflistung und Erzeugen einer neuen Konturauflistung auf der Basis der jeweiligen Situationsindikatoren in dem Code-Array. Im Falle von vier spezifischen Situationsindikatoren (der 15) gibt es in jedem Fall zwei „Verschiebungsschritte" anstatt eines. Welche von den beiden gewählt wird, hängt in diesem Fall von der Konturrichtung in dem betreffenden Konturpunkt ab, d. h. von der Richtung ausgehend von Punkt k zum Punkt k + 1. Die Richtung ausgehend von Punkt k – 1 zu Punkt k kann als alternative Zusatzinformation verwendet werden. Durch Verwendung eines derartigen Code-Arrays ist es möglich, den Abtragungsprozess in einer sehr effizienten Weise in dem iterativen Prozess auszuführen.
  • In einer weiteren Ausführung sind die Konturpunkte in einem zweidimensionalen Raster angeordnet, wobei der Rasterabstand einer halben Breite eines Pixels entspricht und der Situationsindikator ein hexadezimaler Code ist. Durch Verwenden eines solchen Rasters ist es möglich, die Kontur in Schritten von einer halben Pixelbreite abzuziehen, wodurch ein symmetrischer Prozess erzeugt wird und das Abziehen rechtzeitig beendet werden kann.
  • Es können sich kleine Unregelmäßigkeiten bei dem Abtragungs- oder Abziehprozess gemäß der vorliegenden Erfindung ergeben. In einer weiteren Ausführung der vorliegenden Erfindung umfasst das Verfahren ferner Beschneiden der neuen Konturauflistung, die nach einem Abziehschritt erzeugt wurde, wobei das Beschneiden umfasst:
    Ermitteln ob ein während dieses Abziehschritts erzeugter Ursprung ein wesentlicher oder unwesentlicher Ursprung ist, und Entfernen der unwesentlichen Ursprünge aus der in der Konturliste vorliegenden Folge oder Anzahl von Folgen von Konturpunkten, wobei ein Ursprung ein Konturpunkt ist, für den der direkt vorangehende und der direkt folgende Konturpunkt in der Folge die gleichen Koordinaten aufweisen.
  • In einer weiteren Ausführung wird jedem Konturpunkt in der Konturauflistung eine Iterationsnummer zugeordnet, die den Iterationsdurchlauf angibt, in der der betreffende Konturpunkt zum ersten Mal erzeugt wurde. Die Iterationsnummer wird nicht weiter erhöht, wenn der erzeugte Konturpunkt eine Kopie des alten Konturpunkts ist. Dadurch wird eine (lokale) Information bzgl. des Abtragungsprozesses vorgesehen, die effizient bei der weiteren Verarbeitung verwendet werden kann.
  • In einer weiteren Ausführung hängt die Ermittlung, ob ein Ursprung ein wesentlicher oder ein unwesentlicher Ursprung ist, von einem oder mehreren vorangehenden und einem oder mehreren folgenden Konturpunkten in der Folge ab. Hinsichtlich der vorgesehenen Details kann der Abtragungsprozess dadurch optimiert werden, beispielsweise abhängig von der Anwendung (getrennte Zeichen, zusammengefügte Zeichen, ...). In einer Ausführung der vorliegenden Erfindung umfasst das Beschneiden:
    Durchgehen der Folge von Konturpunkten;
    Abhängig von einem oder mehreren vorangehenden oder einem oder mehreren folgenden Konturpunkten der Folge oder Anzahl von Folgen von Konturpunkten, Zuordnen eines Beschneidungsindikators zu dem Konturpunkt und zu einem oder mehreren vorangehenden und/oder folgenden Konturpunkten;
    Erneutes Durchgehen der Folge von Konturpunkten und Erzeugen einer neuen Folge von Konturpunkten auf der Basis des Beschneidungsindikators. Der Beschneidungsindikator ist in der Konturauflistung aufgenommen, um dadurch die vorliegende Erfindung in effizienter Weise auszuführen.
  • Zur weiteren Verarbeitung der Ausgabe in der erzeugten Skelettform ist es vorteilhaft, die Ausgabe in einer Form bereitzustellen, die in einfacher Weise weiterverarbeitet werden kann. Hierzu umfasst in einer weiteren Ausführung das Verfahren Transformieren der Konturauflistung, die aus einer Folge oder Anzahl von Folgen von Konturpunkten mit einem zugehörigen Bild mit einer Dicke von null besteht, in einer Auflistung der Ursprünge und Knoten und Zweige, die zwischen den Ursprüngen und Knoten in dem Bild bestehen.
  • Die Transformation wird vorteilhaft und effizient gemäß einer weiteren Ausführung der vorliegenden Erfindung ausgeführt. In dieser Ausführung umfasst das Transformieren:
    Führen eines Zählers in dem Code-Array zweidimensionaler Adressen, der angibt, wie oft eine spezifische zweidimensionale Koordinate in der Konturauflistung auftritt, die das Bild wiedergibt, das eine Dicke von null aufweist;
    Extrahieren eines Zweigs durch Speichern sukzessiver Konturpunkte in der Folge, für welche der Zähler in dem Code-Array bei der zugehörigen zweidimensionalen Adresse zwei ist, unterstützt von Zweigpunkten, wobei die Zweigpunkte durch den vorangehenden des ersten Punkts und den Nachfolger des letzten Punkts gebildet werden (da ein Zweig an einem bestimmten Punkt startet und endet, gehören diese beiden Punkte zu dem Zweig);
    Speichern spezieller Konturpunkte aus der Folge, für die der Zähler in dem Code-Array eins oder mehr als zwei ist. Wenn der Zähler eins ist, ist der Konturpunkt ein Ursprung, wenn der Zähler zwei ist, dann ist der Konturpunkt Teil eines Zweigs, und wenn der Zähler größer als zwei ist, ist der Konturpunkt ein Knoten.
  • In einer weiteren Ausführung wird ein extrahierter Zweig, für den die ersten zwei Konturpunkte mit den letzten zwei Konturpunkten eines bereits gespeicherten Zweigs übereinstimmen, nicht gespeichert. Der Grund hierfür ist es, zu vermeiden, einen Zweig doppelt zu speichern (in beiden Durchlaufrichtungen). In gleicher Weise werden, wenn die speziellen Punkte gespeichert werden, die Punkte, welche eine zweidimensionale Koordinate aufweisen, die bereits gespeichert wurden, nicht in der Liste spezieller Punkte gespeichert.
  • Zur weiteren Verarbeitung wird die Ausgabe der durch das vorliegende Verfahren vorgesehenen Skelettform in einer weiteren Ausführung ein extrahierter Zweig räumlich gefiltert, beispielsweise durch Ermitteln eines laufenden Mittelwerts der jeweiligen zweidimensionalen Koordinatenwerte.
  • Gemäß einem weiteren Aspekt betrifft die vorliegende Erfindung eine Vorrichtung zum Vorsehen einer Ausgabe in Skelettform, die eine vereinfachte Wiedergabe eines Pixelbild ist, bei dem Pixel aneinandergefügt sind, umfassend:
    einen Detektor zum Erfassen des Pixelbilds;
    Verarbeitungsmittel, die mit dem Detektor verbunden sind, wobei die Verarbeitungsmittel eingerichtet sind, um:
    das Pixelbild mit aneinander gefügten Pixeln in eine Konturauflistung umzuwandeln, wobei eine Konturauflistung aus ein oder mehreren Folgen zweidimensionaler Konturpunkte besteht, wobei die Entfernung zwischen aufeinander folgenden Konturpunkten die Breite von einem Pixel aufweist;
    Verdoppeln der Anzahl von Konturpunkten durch Definieren eines zusätzlichen Punkts zwischen zwei aufeinander folgenden Konturpunkten, wodurch der Abstand zwischen zwei aufeinander folgenden Konturpunkten die Hälfte einer Pixelbreite ist;
    Wiederholtes Abziehen des Bildes, das von der Konturauflistung beschrieben ist, durch wiederholte Erzeugung einer neuen Konturauflistung, bis die neue Konturauflistung ein Bild beschreibt, das durchgehend eine Dicke von null aufweist und somit die Ausgabe in Skelettform beschreibt,
    wobei das Abziehen ausgeführt wird durch Erzeugen von null, einem, zwei oder drei Punkten in der neuen Konturauflistung für jeden Konturpunkt, abhängig von dem Konturpunkt, dem vorangehenden Konturpunkt und dem folgenden Konturpunkt in der Konturliste, und abhängig von den anderen Konturpunkten der Konturauflistung, die die gleichen zweidimensionalen Koordinaten mit dem betreffenden zugeordneten vorangehenden Konturpunkt und dem folgenden Konturpunkt aufweisen,
    wobei die neuen Punkte entweder die gleichen Koordinaten wie die alten Konturpunkte aufweisen oder um eine Distanz von der Hälfte einer Pixelbreite in X-Richtung und/oder in Y-Richtung zur Innenseite der binären Struktur hin verschoben wurden, welche durch die Konturauflistung beschrieben wird.
  • In einer weiteren Ausführung sind die Verarbeitungsmittel ferner eingerichtet, um das betreffende Verfahren auszuführen.
  • Mittels der vorliegenden Erfindung können Vorteile erreicht werden, die mit den oben genannten Vorteilen hinsichtlich des vorliegenden Verfahrens vergleichbar sind.
  • Ein weiterer Aspekt der vorliegenden Erfindung betrifft ein Computerprogrammprodukt, das computerlesbaren Code enthält, wobei, nachdem dieser in einen Computer geladen wurde, der computerlesbare Code den Computer mit der Funktionalität des vorliegenden Verfahrens vorsieht.
  • Kurzbeschreibung der Zeichnungen
  • Im Folgenden wird die vorliegende Erfindung detaillierter auf der Basis einer Anzahl von darstellenden Beispielen unter Bezugnahme auf die angefügten Zeichnungen betrachtet, wobei:
  • 1 ein vereinfachtes Blockdiagramm eines Zeichenerkennungssystems ist, in dem der Skelett-Prozess gemäß der vorliegenden Erfindung verwendet wird;
  • 2 ein Flussdiagramm einer Ausführung des vorliegenden Verfahrens ist;
  • 3 diagrammartig eine Konturauflistung darstellt, wie sie in einer Ausführung gemäß der vorliegenden Erfindung verwendet wird, wobei die Folge zweidimensionaler Koordinaten (X und Y) um die Iterationsnummer und die Beschneidungskennung für die betreffenden Konturpunkte erweitert wurde;
  • die 4a bis 4l Beispiele möglicher Situationen darstellen, die sich während des Abziehprozesses gemäß einer Ausführung der vorliegenden Erfindung ergeben;
  • 5 ein Beispiel einer Kontur ist, die gemäß einer Ausführung der vorliegenden Erfindung verarbeitet wurde;
  • 6 ein Beispiel einer spezifischen Situation ist, die bei einer Ausführung des betreffenden Abziehprozesses auftreten kann;
  • 7 Beispiele von Ursprüngen zeigt, die während des Abziehprozesses ausgebildet wurden;
  • 8 Beispiele weniger wesentlicher Ursprünge zeigt, wobei die Konturpunkte k – 1 und k + 1 bzw. k – 2 und k + 2 die gleichen Koordinaten pro Paar aufweisen;
  • 9 Beispiele weniger unwesentlicher Ursprünge darstellt;
  • 10 Beispiele weniger weiterer unwesentlicher Ursprünge darstellt;
  • 11 Beispiele weniger wesentlicher Ursprünge darstellt, wobei die Konturpunkte k – 1 und k + 1, k – 2 und k + 2 bzw. k – 3 und k + 3 die gleichen Koordinaten pro Paar aufweisen;
  • 12 Beispiele wesentlicher Ursprünge darstellt, wobei die Konturpunkte k – 3 und k + 3 nicht übereinstimmend sind;
  • 13 Beispiele von zurückzuhaltenden Ursprüngen darstellt;
  • 14 Beispiele spezieller Ursprünge darstellt;
  • 15 Beispiele zu löschender Ursprünge darstellt;
  • 16 ein Beispiel eines Skeletts darstellt, welches sich durch die Verwendung des vorliegenden Skelett-Verfahren ergibt, und auf dem dargestellten Pixelbild basiert;
  • 17 ein Beispiel des Verfahrens zum Glätten von Zweigen darstellt, die sich unter Verwendung des vorliegenden Verfahrens ergeben, und insbesondere das Spiegeln von Konturpunkten nahe an speziellen Punkten; und
  • 18 das Beispiel von 16 darstellt, nachdem die Zweige unter Verwendung eines Sieben-Punkt-Filters gefiltert wurden.
  • Detaillierte Beschreibung beispielhafter Ausführungen
  • Die vorliegende Erfindung kann vorzugsweise in beispielsweise einem System zur Erkennung von Handgeschriebenem oder von Zeichen verwendet werden, wie es in einer vereinfachten Ausführung hiervon in 1 dargestellt ist. Das Widererkennungssystem 15 hat einen Detektor 11, beispielsweise eine CCD-Kamera, die ein digitales Pixelbild von beispielsweise einem Umschlag aufzeichnet. Das Pixelbild wird an einen Skelett-Prozessor 10 gesendet, der mit dem Detektor 11 verbunden ist, und ausgestattet ist, die vorliegende Erfindung zu realisieren, indem eine mit dem Pixelbild verknüpfte Skelettdarstellung erzeugt wird. Die Skelettdarstellung wird daraufhin an einen weiteren Prozessor 12 gesendet, der mit dem Skelett-Prozessor 10 verbunden ist, und die weitere Erkennung und Verarbeitung (beispielsweise Drucken eines Codes) ausführt.
  • Die Begriffe Skelett-Prozessor 10 und weiterer Prozessor 12 sollen für jedes in Software, Hardware oder einer Kombination hiervon dargestelltes System angeben, das eingerichtet ist, die zugehörige Funktion auszuführen. Diese können individuelle Computersysteme (zentralisiert oder verteilt) basierend auf Mikroprozessortechnik sein, die mit Peripheriegeräten verknüpft sind, jedoch auch Elemente, die insbesondere für die Funktion geeignet sind, beispielsweise Digitalsignalprozessoren.
  • Der vollständige Prozess, der letztendlich zu einem Skelett führt, das mittels Zweigpunkte und Ursprünge (auch Endpunkte genannt) führt, zwischen denen (glatte) Zweige gleichmäßig verlaufen, besteht aus vier Hauptprozessen, die im Weiteren detailliert beschrieben sind.
  • Ein Flussdiagramm, das den gesamten Prozess darstellt, ist in 2 gezeigt. Der erste Hauptprozess ist ein Konturprozess 20, der eine erste Konturauflistung erzeugt, die für den aktuellen Skelett-Prozess eingegeben wird. Ein Beispiel einer Konturauflistung ist in 3 dargestellt. Das von dem Detektor 11 erzeugte Pixelbild wird von dem Skelett-Prozessor 10 mit Hilfe des Konturprozesses 20 in eine Konturauflistung konvertiert, die aus einer oder einer Folge von zweidimensionalen Konturpunkten (mehr als eine, wenn innere Konturen bestehen), besteht, beispielsweise in Form von Koordinatenpaaren (X und Y). Eine einzelne Folge von zweidimensionalen Konturpunkten wird auch als ein (geschlossenes) Konturpolygon bezeichnet. In dieser ersten Konturauflistung in diesem Fall sind die Konturpolygone „rechteckig" und der Abstand zwischen zwei aufeinander folgenden Konturpunkten entspricht exakt einer Pixelbreite. Beispielsweise ein binäres Bild, das nur aus einem Pixel besteht, führt zu einem Konturpolygon, das aus vier Konturpunkten besteht. Die hier verwendete Konturauflistung besteht somit aus der Liste bzw. Listen aus den zweidimensionalen Koordinaten der aufeinander folgenden Konturpunkte. Dies steht im Gegensatz zu einer Liste oder Listen aufeinander folgender Richtungen (die so genannten „Kettencodes") die üblicherweise verwendet werden. Sofort nach der Umwandlung des binären Bilds wird die Anzahl der Konturpunkte in der Konturauflistung verdoppelt, indem das Koordinatensystem modifiziert wird (X- und Y-Werte werden mit zwei multipliziert), und indem Konturpunkte, die in der Mitte zwischen jedem originalen Paar von Konturpunkten liegen, eingearbeitet werden. Der Abstand zwischen zwei aufeinander folgenden Konturpunkten entspricht dann exakt der Hälfte einer Pixelbreite.
  • Der zweite Hauptprozess ist ein iterativer Abtragungsprozess 21, der aus den Unterprozessen 21a und 21b besteht, die in einer Schleife untergebracht sind. Der erste Unterprozess in dieser Schleife ist der Abziehprozess 21a.
  • Nach Abschluss des iterativen Abtragungsprozesses 21 (die Schleife) wird das provisorische Skelett von der Kontur beschrieben, die verbleibt, wenn alles Schwarze von dem Binärbild in einer symmetrischen Weise „abgestreift" wurde. Dies wird umgesetzt, indem die Konturfunktion bzw. Konturfunktionen (in diesem Fall geschlossene Polygone, Rechtecke nur beim Start mit acht möglichen Richtungen im weiteren Prozess) „nach innen" über eine Distanz von einer halben Pixelbreite pro Abstreifoperation in dem Abstreifprozess 21a verschoben werden. Eine solche Verschiebung über einen Abstand bzw. Distanz über die Hälfte einer Pixelbreite ist möglich mittels dem oben genannten Verdoppeln der Anzahl von Konturpunkten. Der Prozess des nach innen Schiebens wird an den Punkten „verhindert", an denen das Bild unendlich dünn geworden ist (die Stellen, an denen exakt alles Schwarze in dem vorangehenden Schritt abgestreift wurde), d. h. an den Punkten, an denen die Kontur „sich selbst berührt". Tatsächlich wurde an diesen Stellen bereits ein Teil des Skeletts gebildet. Vorsehen, dass die Kontur sich selbst berührt, wird realisiert durch Zählen, wie oft die Rasterpunkte in der zweidimensionalen Ebene (mit einem Rasterabstand der Hälfte einer Pixelbreite) von der Kontur „getroffen werden". Da die Verschiebungen einer halben Pixelbreite bei der Verarbeitung verwendet werden, wird gewährleistet, dass das Verschieben der Kontur immer sich selbst zuerst berührt, bevor es an sich selbst vorbeigeleitet wird. Mit anderen Worten kann das Abstreifen rechtzeitig an den bereits ausgebildeten Skelettpunkten beendet werden. Der Prozess, der das Einwärtsverschieben der Konturpunkte umfasst, wird beendet, wenn sich zwischen der (geschlossenen) Konturfunktion bzw. Konturfunktionen kein schwarzer Bereich mehr befindet. Das durch diese „endgültige Kontur" beschriebene Bild ist dann unendlich dünn geworden. Im Gegensatz zu der Situation bei bestehenden Algorithmen wird das originale Pixelbild in dem oben genannten Abtragungsprozess nicht verwendet. Es ist ferner klar, dass die Ausgabe des iterativen Abtragungsprozesses 21 (die Schleife) kein Pixelbild ist, sondern eine Konturbeschreibung oder Auflistung eines unendlich dünnen Bildes.
  • Wenn das Skelett noch nicht vollständig ausgebildet wurde (Entscheidungsblock 21c, Bilddicke = 0), findet der Beschneidungsprozess 21b sofort nach jedem Abstreifungsprozess 21a statt, wie in 2 dargestellt ist.
  • Ohne den Beschneidungsprozess 21b würde das provisorische Skelett (d. h. die oben genannte endgültige Kontur) im Allgemeinen auch eine Anzahl kleiner Zweige beim Abschluss des iterativen Abtragungsprozesses enthalten. Häufig sind diese Zweige unwesentlich für die Struktur des Binärmusters. Tatsächlich sind alle auf skelettbezogene Algorithmen durch dieses Phänomen in größerem oder geringerem Maße betroffen, abhängig von den „Beschneidungsmaßnahmen", die verwendet werden. Da in dem vorliegenden Prozess die Erosion in einzelnen Schritten mit einem halben Pixel stattfindet, geht kein einziges Detail verloren, und jedes Pixel, das hervorsteht, führt zu der Erzeugung eines sogenannten Ursprungs, der sozusagen der Start eines neuen Zweigs ist. Relativ häufig führt ein derartiger Ursprung zu einem unwesentlichen Zweig. Ein getrennter Beschneidungsprozess 21b, der auf einer expliziten Listen von Ursprüngen basiert, für die es nicht gestattet ist, einen neuen Zweig zu erzeugen, wird daher in den betreffenden iterativen Abtragungsprozess 21 eingefügt. Mit dieser Prozedur nach jedem Abstreifungsschritt 21a wurden alle neu erzeugten Ursprünge der neuen Kontur, die nach innen geschoben werden, getestet, und ein Beschneidungsindikator wird im Falle jeden neuen Ursprungs aufgezeichnet. Diejenigen Ursprünge, die eine „Form" aufweisen, die von der Liste umfasst werden, werden daraufhin aus der betreffenden Konturbeschreibung entfernt. Die Liste ist derart erstellt, dass Skelette erzeugt werden, die in der Praxis verwendet werden können, und nicht zu viele oder zuwenig Zweige aufweisen. Falls erforderlich, kann die Liste mit weiteren Formen für unwesentliche Ursprünge erweitert werden, um ein ausführlicheres Beschneiden vorzusehen. Mit diesen Verfahren muss ein größerer, um die Kontur herum vorgesehener benachbarter Bereich daraufhin untersucht werden, wodurch die Berechnungszeit steigt. Jedoch ist in dem vorliegenden Fall diese Steigerung nicht quadratisch, wie sie in dem Fall üblicher skelettbezogener Algorithmen ist, bei denen zur ausführlicheren Beschneidung ein größerer zweidimensionaler benachbarter Bereich für jedes zu eliminierende Pixel überprüft werden muss. Anstatt mit einer Liste von Formen zu arbeiten, ist es auch möglich, mit einem Beschneidungskriterium oder basierend auf dem „zur Kontur benachbarten Bereich" eines Ursprungs zu arbeiten, wobei dieser benachbarte Bereich optional gefiltert (geglättet) wird, beispielsweise mittels Regression. Das beschriebene Beschneiden 21b wird nach jedem Abstreifprozess 21a in dem iterativen Abtragungsprozess 21 (die Schleife in 2) aktiv.
  • Eine alternative Option ist das separate darauf folgende Beschneiden, d. h. nach dem Abschluss des iterativen Abtragungsprozesses. Ein solcher Prozess ist nicht unabsehbar, da in dem vorliegenden Fall die ursprüngliche Strukturdicke an allen Zweigpunkten bekannt ist, so dass grundsätzlich die ursprüngliche Form jedes Zweigs immer noch ermittelt werden kann.
  • Nachdem in dem Entscheidungsblock 21c vorgesehen wurde, dass die erzeugte Konturauflistung ein Bild mit einer Dicke von 0 beschreibt (die Kontur wurde an keinem Punkt weiter verschoben), wird der Prozess fortgeführt mit der Extraktion von Knoten und Zweigen (Hauptprozess 22).
  • Eine Eigenschaft der Ausgabe des iterativen Abtragungsprozesses 21 des vorliegenden Prozesses liegt darin, dass die Transformation in einer „zweiten" Beschreibung mittels Knoten und Zweigen einfach ist. Die erzeugte Konturauflistung ist, wie sie war, doppelt: beim Durchlaufen durch die endgültige Kontur werden die Zweige, die in dem endgültigen Skelett erzeugt werden sollen, doppelt durchgegangen. Vereinfacht ist es dann lediglich notwendig, die Hälfte zu eliminieren. Wie angegeben wird in dem Abstreifprozess 21a ein zweidimensionales Code-Array verwendet, welches unter anderem es ermöglicht, zu zählen, wie oft die Kontur auf eine spezifische zweidimensionale Koordinate trifft. Wenn eine solche Zählung mit der endgültigen Kontur ausgeführt ist, ist daraufhin nach der Beendigung bekannt, welche Konturpunkte einen Ursprung durchlaufen (einmal durchlaufen), und welche Punkte einen Schnittpunkt (oder einen Knoten) durchlaufen (dreimal bis zu einem Maximum von achtmal durchlaufen). Alle anderen zweidimensionalen Koordinaten, auf die die Kontur trifft, werden genau zweimal durchlaufen, wobei diese nun die „internen" Punkte der Zweige sind, die zwischen den „speziellen" Punkten (Ursprünge und Knoten) angeordnet sind. Durch ein erneutes Verarbeiten der endgültigen Kontur nach der Zählung kann die vollständige Skelettbeschreibung aller speziellen Punkte und Zweige erzeugt werden.
  • Grundsätzlich ist die auf diese Weise ausgeführte Skelettbeschreibung eine nutzbare Beschreibung, in der ausgebildete Zweige, die zwischen den speziellen Punkten angeordnet sind, mittels der Folge der zweidimensionalen Koordinaten der Rasterpunkte beschrieben sind, welche durchlaufen werden, wenn die Zweige in einer zu wählenden Richtung durchgearbeitet werden. In diesem Fall sind die Punkte auf einem Raster angeordnet, welches doppelt so dünn wie das ursprüngliche Raster ist, da jedes Mal die Hälfte einer Pixelbreite abgezogen wird. Jedoch liegt ein Nachteil der in dem Hauptprozess 22 gebildeten Skelettbeschreibung darin, dass die kleinen Zweigelemente, sozusagen die Linienabschnitte von Punkt i zu Punkt i + 1, nur acht Richtungen „aufweisen". Für bestimmte Zwecke ist es besser, Zugriff auf eine Zweigbeschreibung zu haben, die etwas „glatter" verläuft, beispielsweise um Merkmale abzuleiten, in denen Winkelrichtungen eine Rolle spielen. Ein letzter Hauptprozess 23 wurde daher ausgestattet, indem spezielle Punkte dort bleiben, wo sie sind, wobei jedoch die dazwischen liegenden Zweigpunkte „verschoben" werden, indem derart gefiltert wird, dass glatt verlaufende (glatte) Zweige erzeugt werden. Der Glätt- oder Filterprozess 23, der im Weiteren detaillierter beschrieben ist, hat eine einstellbare Stärke, wobei die höchste Stärke die glattesten Zweige erzeugt. Das verwendete Prinzip ist ein so genannter laufender Mittelwert über eine wählbare Anzahl an Zweigpunkten, wobei das Festhalten der speziellen Punkte erreicht werden kann, indem die zu filternden Zweige an den speziellen Punkten „gespiegelt" werden. Für den oben genannten Zweck des Glättens von Zweigen können grundsätzlich alle bekannten räumlichen Filterverfahren zum Beschreiben einer Folge von Punkten in einer flachen Ebene verwendet werden.
  • Es ist dem Fachmann bekannt, dass die ersten zwei Hauptprozesse 20 und 21 zusammen als eine getrennte Einheit in der vollständigen Prozedur des Zeichenerkennens verwendet werden können, die die bereits in der Beschreibungseinleitung bekannten Vorteile aufweist.
  • Der Betriebsmodus der vorliegenden Erfindung und insbesondere die zahlreichen Hauptprozesse und Unterprozesse werden in dem unten genannten Beispiel detaillierter betrachtet.
  • Der Prozess beginnt mit der Ermittlung der Konturbeschreibung des binären Musters. Hier findet die Konturbeschreibung mit rechteckigen Konturpolygonen statt, wobei die Entfernung von Punkt k zu Punkt k + 1 immer genau einer Pixelbreite entspricht. Wie bereits oben anhand des Konturprozesses 20 betrachtet, wird die Anzahl an Konturpunkten verdoppelt, indem ein zusätzlicher Punkt in der Mitte zwischen zwei aufeinander folgenden Konturpunkten hinzugefügt wird. Diese neue Konturbeschreibung führt daraufhin Schritte einer halben Pixelbreite in jedem Fall durch. Ferner wird der Maßstab für die zweidimensionalen Koordinaten derart gewählt, dass die „Mitte zwischen Konturpunkten" ebenso auf einem geradzahligen Raster liegt. Dies ist zweckdienlich, da die zweidimensionale Position oder Koordinate dann der gleichen Position (zweidimensionaler Index) in einem zweidimensionalen Code-Array entspricht. Dieses Code-Array hat daher die gleiche Anzahl an Adressen wie die Anzahl von Rasterprodukten (mit einem Rasterabstand von einer halben Pixelbreite) in der zweidimensionalen Ebene eines Bereichs, der ausreichend groß ist, um alle Muster zu beschreiben, die auftreten. Das Code-Array ist tatsächlich ein Bildspeicher von hexadezimalen (4 Bit) Speicherelementen, das doppelt so fein ist (sowohl in X- als auch in Y-Richtung). Nun gibt nicht jedes Speicherelement ein Pixel wieder, das „schwarz" ist, oder nicht, sondern gibt X-Y-Orte wieder, an denen die Kontur ein oder mehrere Male durchlauft, laufen wird, oder nicht. Mit dieser Prozedur wird die Art und Weise, in der das Durchlaufen stattfindet, vorgesehen, indem dem Speicherelement ein spezieller Wert gegebenen wird, der sogenannte Situationsindikator (0 = kein Durchlauf; die Werte 1 ... 15 geben eine bestimmte Klassifikation der verschiedenen Situationen an). Der Wert an jeder Adresse des Code-Arrays wird einmal auf „0" gesetzt und bei 0 bei jedem Durchlauf in dem Skelett-Prozess „belassen".
  • Der erste Abziehschritt beginnt somit mit der oben genannten „verdoppelten" Konturbeschreibung und mit Speicherelementen in dem Code-Array, die alle auf Null gesetzt sind. Bei jedem Abziehschritt (ein Aufruf in dem Abziehprozess 21a) des iterativen Abtragungsprozesses 21 erzeugt die letzte Konturbeschreibung an dem aktuellen Punkt eine neue Beschreibung. Diese neue Konturbeschreibung gibt dann die Kontur wieder, die einen Schritt (1/2 Pixel) weiter nach innen verschoben wurde.
  • Gemäß einer speziellen Vorgehensweise erzeugen während dieses Prozesses die „alten" Konturpunkte mindestens null und maximal drei Punkte der neuen Kontur. Was genau von jedem Punkt der alten Kontur erzeugt wird, hängt von der lokalen Situation an dem Punkt ab. In diesem Zusammenhang ist unter anderem zu ermitteln, ob ein Skelettpunkt bereits an der Stelle in der zweidimensionalen Ebene erzeugt wurde, oder nicht. Falls dies der Fall ist, kann die Kontur nicht länger an diesen Punkt verschoben werden und ein Punkt mit den gleichen Koordinaten wie der alte (Skelett-)Punkt wird in der neuen Konturbeschreibung erzeugt. Daher wird, bevor die Kontur verschoben wird, die Kontur als erstes einmal durchlaufen, wobei die Situation an allen Rasterpunkten, auf die die Kontur trifft, in dem Code in dem zweidimensionalen Code-Array aufgezeichnet wird. Ein hexadezimaler Code wurde als ausreichend erachtet, um die zahlreichen Situationen zu unterscheiden, für die in jedem einzelnen Fall eine andere „Verschiebeaktion" für den betreffenden zweidimensionalen Konturpunkt anzuwenden ist. Das zweidimensionale Code-Array oder Zähler-Array ist daher ein „ökonomisches" Array mit Elementen von 4 Bits. Grundsätzlich würde ein Code genügen, der sogar noch etwas ökonomischer ist, jedoch wurde der Code ausgewählt, um eine effiziente Implementierung zu ermöglichen.
  • Die zahlreichen möglichen Situationen für die Punkte der alten Kontur mit den zugehörigen erzeugten Punkten der neuen Kontur sind in den 4a bis 4l dargestellt, die auf einem Raster mit einem Rasterabstand von einer halben Pixelbreite aufgetragen wurden.
  • Eine einfache Situation, in der die gesamte Kontur auf dem zweidimensionalen Ort des Konturpunkts A nur einmal trifft, und die Kontur sich nicht an Punkt A krümmt (geradeaus verläuft), ist in der 4a dargestellt. Der genannte Code ist derart ausgestaltet, dass aus dem Wert des Code-Arrays an der zweidimensionalen Adresse des Punkts A „erkannt" werden kann, dass diese spezifische Situation zutrifft. In diesem Fall ist das Vorgehen einfach. Der Punkt A erzeugt den Punkt B, der um einen halben Pixel in der neuen Konturbeschreibung nach innen verschoben wurde. Wenn die Situation in der 4a dreimal um 90° rotiert wird, ergeben sich drei ähnliche Situationen mit einer ähnlichen Vorgehensweise. Diese drei Situationen können auch aus dem Code erkannt werden, der in der zweidimensionalen Adresse in dem Code-Array aufgenommen ist.
  • In der 4b ist eine Situation dargestellt, in der der zweidimensionale Ort nur einmal getroffen wird, und in der der Punkt A in der alten Kontur drei aufeinander folgende Punkte B1, B2 und B3 in der neuen Konturbeschreibung erzeugt. Die Situation ist nun auch aus dem Code zu erkennen, der an der betreffenden zweidimensionalen Adresse in dem Code-Array aufgezeichnet ist. Ferner trifft es abermals zu, dass dreimaliges Rotieren um 90° drei ähnliche Situationen mit einer ähnlichen Abarbeitungsregel ergibt. Es wurden nun bis zu vier „Geradeaus"-Situationen und vier „Linksabbiegen"-Situationen beschrieben. Dies bedeutet, dass acht Werte des hexadezimalen Codes daher benutzt wurden (zuzüglich des Wertes 0).
  • Für die Situation in 4c und die dadurch mittels Rotation erzeugten drei Situationen wird nur ein Wert verwendet, insbesondere ein „Rechtsabbiegen"-Wert, unabhängig von der Drehung. Die Regel für diese vier Situationen ist, dass der Punkt A in der alten Kontur keinen Punkt in der neuen Konturbeschreibung erzeugt. Daher ist kein Punkt auf der rechten Seite der 4c zu finden. Der Grund, warum der Punkt A hier keinen Punkt erzeugen muss, liegt darin, dass an dem nach innen verschobenen Ort ein Punkt bereits in der neuen Beschreibung von dem „Vorgänger" von Punkt A erzeugt wurde.
  • Zwei Fälle in einer etwas komplexeren Vorgehensweise in denen Punkt A zwei Punkte B1 und B2 nacheinander erzeugt, sind in den 4d und 4e dargestellt. In beiden Fällen wurde der Ort des Punkts A zweimal von der Kontur getroffen, und es wurde bereits ein Skelettpunkt an dieser Stelle erzeugt und in der in 4d/e dargestellten Weise bearbeitet. Der Code an dem Ort von Punkt A ist in beiden Fällen der gleiche, da in beiden Fällen die gleiche lokale Situation vorliegt. Welche Vorgehensweise zu wählen ist (4d oder 4e) wird mittels des Konturpunkts A ermittelt: Der Punkt A, wo das bereits ausgebildete Skelett „beginnt" (4d), oder der Punkt A, bei dem das bereits ausgebildete Skelett „endet" (4e). In beiden Fällen wird der „Kontur-/Skelett-Punkt" A in der neuen Konturbeschreibung wiederholt. In 4d ist dies B2 und in 4e B1. Die lokale Situation in den 4d/e stellt wieder die ähnlichen Situationen dar, wenn eine dreimalige Drehung von 90° vorgesehen wird. Wiederum werden vier Werte unseres Hexadezimalcodes verwendet, um diese vier lokalen Situationen unterscheiden zu können. Durch Untersuchen des Konturpunkts A selbst, sehen die zahlreichen Situationen daher acht Vorgehensweisen vor.
  • Die letzten zwei Werte des Hexadezimalcodes werden für alle anderen Situationen verwendet, die während des iterativen Abtragungsprozesses auftreten können. Es gibt daraufhin Kontur-/Skelettpunkte des „einfachen" Typs, die bereits erzeugt wurden und lediglich sich selbst in der neuen Konturbeschreibung wiederholen (Kopie). Daher müssen diese nur einen Punkt mit den gleichen Koordinaten erzeugen. Einige wenige Beispiele für Situationen dieses Typs, die umso öfter auftreten, je näher der iterative Abtragungsprozess sich an der endgültigen Situation befindet, sind in den 4f bis 4l dargestellt. Alle diese Figuren sind Situationen, die graduell in dem Prozess auftreten können. In den Figuren, in denen Teile des Skeletts bereits produziert wurden, wurden aus Gründen, die mit der Erstellungstechnik zusammenhängen, dem Skelett eine endliche Dicke zugeordnet, so dass die „Vorwärtsrichtung" und die „Rückwärtsrichtung" der Skelettkontur erkannt werden kann. Die betreffenden Skelettpunkte wurden ferner „gestreckt". Beispielsweise haben in 4g die drei Konturpunkte, die in der Mitte dargestellt sind, tatsächlich dieselben zweidimensionalen Koordinaten. Es wurde in „Skelettsprache" ein dreifacher Zweig an dieser Stelle erzeugt. (Im Übrigen wurde das gleiche Erzeugungsprinzip bereits in den 4e und 4d verwendet.)
  • In der 4j ist eine Situation aufgezeichnet, in der der zweidimensionale Ort von Punkt A von einer Kontur „bei 45 Grad", die geradeaus führt, doppelt durchlaufen wird. Eine solche Situation, in der der Ort nur einmal getroffen wird, beispielsweise von Punkt A, scheint bei dem iterativen Abtragungsprozess nicht vermieden werden zu können. Die Codes „geradeaus", „links abbiegen" und „rechts abbiegen" in den 4a bis 4c inklusive deren Drehungen sind daher explizit für Richtungen entlang des Rasters reserviert. In dem Fall von Drehungen um ungefähr 45° oder um ungefähr 135° wird somit garantiert, dass es Situationen gibt, in denen ein Skelettpunkt bereits erzeugt wurde, und somit garantiert ist, dass der Ort mehr als einmal durchlaufen wird. An derartigen Orten muss die Kontur nicht weitergehend verschoben werden und die durchlaufenden Konturpunkte müssen lediglich sich selbst in der neuen Konturbeschreibung wiederholen.
  • In der 4l ist ein Ursprung für ein Skelett als ein endgültiges Beispiel dargestellt. Die Skelettkontur durchlauft den Punkt nur einmal. Hier kann die Kontur nicht weitergehend verschoben werden und der Punkt A muss somit in der neuen Konturbeschreibung wiederholt werden. So lange der Konturpunkt immer noch an andere Orte verschoben werden kann, wird die Erzeugung der neuen Konturbeschreibungen einfach fortgeführt (der Schleifenprozess ist noch nicht abgeschlossen). Wenn jedoch kein weiteres Verschieben möglich ist, wird die Abtragung beendet und dieser Hauptprozess ist somit abgeschlossen (wenn keine weiteren Verschiebungen zulässig sind, bedeutet dies „Bildfläche ist null").
  • Jedoch gibt es einen weiteren Punkt, der der Aufmerksamkeit bedarf. Insbesondere wenn eine neue Konturbeschreibung gemäß den obigen 18 (4 + 4 + 1 + 8 + 1) Vorgehensweisen erzeugt wurde, dann werden manchmal Konturpunkte mit den gleichen zweidimensionalen Koordinaten direkt nacheinander erzeugt. Ein Beispiel ist in 5 vorgesehen, in dem der komplette Satz der erzeugten neuen Konturpunkte dargestellt ist. Die hiermit verknüpfte Konturbeschreibung ist kein echtes Polygon, da die obersten drei aufeinander folgenden Punkte die gleichen Koordinaten aufweisen. Dieses Problem kann unter anderem, neben der Situation in 4c, durch Unterscheiden der anderen Situationen der Konturpunkte gelöst werden, die ebenso keinen Punkt in der neuen Konturbeschreibung erzeugen können.
  • Eine für diese Implementierung ausgewählte alternative Lösung ist wie folgt: Während der Erzeugung der neuen Beschreibung wird für jeden Punkt, der gemäß der Vorgehensweisen hätte erzeugt werden müssen, eine Überprüfung durchgeführt, um zu ermitteln, ob der direkt davor erzeugte Punkt die gleichen zweidimensionalen Koordinaten hat. Wenn dies der Fall ist, wird der zu erzeugende neue Punkt einfach übergangen.
  • Wie bereits bemerkt, wird die lokale Situation in den betreffenden Rasterpunkten als Code jedes Mal aufgezeichnet, bevor die Kontur einen Schritt weiter verschoben wird. Zu diesem Zweck wird die Kontur einmal durchgearbeitet und das Code-Array wird aktualisiert. Mit dieser Prozedur beginnen die relevanten Elemente in dem Code-Array bei einem Wert von Null. Alle Konturpunkte werden dann durchgearbeitet und während dieser Operation erfassen die zu den zweidimensionalen Orten in jedem Fall gehörenden Array-Elemente einen neuen Wert, der von dem Konturweg an dem betreffenden Konturpunkt abhängt, und von dem Wert, den das Array-Element bereits aufweist. Wenn der Wert des Elements immer noch Null ist, dann bedeutet dies, dass dieser Ort zum ersten Mal durchlaufen wird, wobei in diesem Fall die folgenden Werte zugeordnet werden:
    • – Die Werte von 1 bis 4 für die 4 „Linksabbiegen"-Konturpfade (4b + Drehungen).
    • – Der Wert 5 bis 8 für die 4 „Geradeaus"-Konturpfade (4a + Drehungen).
    • – Der Wert 9 für die 4 „Rechtsabbiegen"-Konturpfade (4c + Drehungen).
    • – Der Wert 15 für die Struktur, die zu einem Ursprung gehört (eine Krümmung um 180 Grad in der Kontur, vgl. 4l).
    • – Der Wert 14 für alle anderen Konturpfade.
  • Es ist dann gewährleistet, dass an dem Ort ein Skelettpunkt des „einfachen" Typs vorliegt, der bereits erzeugt wurde, d. h. ein Punkt, der sich lediglich selbst wiederholt. Daher ist auch dann, wenn der Ort zum ersten Mal getroffen wird, gewährleistet, dass er mindestens ein weiteres Mal in einer Weise wiedergegeben wird, die eine „Skelettbildung" umfasst. Beispiele sind in den 4h bis 4k dargestellt, in denen beispielsweise Punkt A der erste ist, der den betreffenden zweidimensionalen Ort trifft.
  • Die vier Codewerte 10 bis 13 sind für die örtliche Situation in den 4d/e sowie für die drei reserviert, die sich daraus mittels Drehung ergeben. Es ist ersichtlich, dass ein solcher Wert an dem Punkt rechtzeitig erzeugt wird, wenn die Kontur den betreffenden Ort zum zweiten Mal durchläuft. An diesem Punkt muss der Code rechtzeitig einen der Werte 1 bis 4 („Linksabbiegen") aufweisen. Wenn die „Konturkrümmung" ein weiteres Mal „ein Linksabbiegen" auf dem zweiten Durchlauf ist, wird einer der Werte 10 bis 13 erzeugt, abhängig von dem genauen Ort der zwei „Linksabbiegen-Krümmungen" zueinander. Falls dies nicht der Fall ist, wird ein weiteres Mal gewährleistet, dass eine Skelettsituation des einfachen Typs vorliegt, und dass das betreffende Array-Element den Wert 14 erhält. In der nächsten Stufe des Abziehprozesses (das momentane Abziehen) ist dann bekannt, dass die Konturpunkte, die diesen Ort durchlaufen, sich nur selbst wiederholen müssen. Ein Beispiel, in dem der Code 14 erzeugt werden muss, ist in 6 dargestellt, wobei der Punkt à der zweite Konturpunkt ist, der auf den betreffenden Ort trifft. In diesem Fall ist es daher bereits zu diesem Zeitpunkt bekannt, dass die Kontur diesen Ort mindestens ein weiteres Mal durchläuft, beispielsweise entlang der punktiert dargestellten Linie. Der betreffende Skelettpunkt ist daher ein Skelettpunkt des einfachen Typs. Im Gegensatz hierzu, wie aus den Vorgehensweisen in den 4d und 4e (+ Drehungen) erkannt werden kann, stellen die Situationen mit den Code-Werten 10 bis 13 Skelettpunkte eines weniger einfachen Typs dar, die bereits erzeugt wurden. Dies sind dann Skelettpunkte, bei denen sich dann die durchlaufenden von Konturpunkte nicht nur wiederholen, sondern auch einen neuen Punkt erzeugen.
  • Oben wurde beschrieben, wie vorgegangen wird, wenn ein Ort zum zweiten Mal durchlaufen wird, und der Code zu diesem Zeitpunkt einen der Werte 1 bis 4 aufweist. Wenn jedoch der Wert während des zweiten Durchlaufs in den Bereich 5 ... 8, 9 (4 × geradeaus, 4 × rechts abbiegen) fällt, dann erhält das Code-Array an diesem Ort den Wert 14. In diesem Fall ist ebenso gewährleistet, dass ein Skelettpunkt des einfachen Typs vorliegt. Wenn ein Ort getroffen wird und der Code bereits einen der Werte 10 bis 13 aufweist, dann ist ersichtlich, dass dieser Punkt zum dritten Mal durchlaufen wurde, wobei in diesem Fall auch der Code an dem Ort wieder auf 14 gesetzt wird. Dies ist dann beispielsweise die Situation in der 4g, in der der Punkt P der dritte ist, der den Ort durchläuft. Schließlich wird der Code nicht weiter verändert, wenn erfasst wurde, dass dieser Bereich 14 oder 15 ist, unabhängig davon, wie oft der betreffende Ort im Weiteren noch getroffen wird. In der endgültigen Situation des iterativen Abtragungsprozesses erzeugt der Codierungsprozess daher nur die Werte 14 und 15.
  • Kurz zusammengefasst sind die vier Regeln für den Codierprozess (die erste Operation des Abstreifprozesses), der oben detailliert beschrieben wurde, wie folgt zusammengefasst:
    • 1. Aktueller Wert 0, dann neuer Wert 1 ... 4, 5 ... 8, 9, 14 oder 15, abhängig von der Konturkrümmung und der Richtung.
    • 2. Aktueller Wert 1 ... 4, dann neuer Wert 10 ... 13 oder 14, abhängig von der Konturkrümmung und Richtung.
    • 3. Aktueller Wert 5 ... 8, 9 oder 10 ... 13, dann neuer Wert 14.
    • 4. Aktueller Wert 14 oder 15, dann aktuellen Wert unverändert lassen.
  • Der folgende Unterprozess in der Schleife von 2 betrifft das Beschneiden der neuen Kontur, die in dem ersten Unterprozess ausgebildet wurde. Alle Ursprünge, die zu der neuen Konturbeschreibung während der letzten Abziehoperation hinzugefügt wurden, werden untersucht. Durch Untersuchen der „benachbarten Bereiche der Kontur" der Ursprünge ist es möglich, zu ermitteln, ob die Ursprünge eine Form aufweisen, die im Wesentlichen ausreicht, es zu ermöglichen, das Ausbilden eines neuen Zweiges zu beginnen. Wenn dies nicht der Fall ist, wird die „Projektion" von der Konturbeschreibung entfernt, indem eine Anzahl aufeinander folgender Konturpunkte „übergangen" wird, d. h. indem diese von der Liste zweidimensionaler Koordinaten gelöscht wird. Die Kriterien bei dem Erfassungsprozess wurden derart gewählt, dass in der Praxis Skelette erzeugt werden, die nicht zu viele und nicht zu wenige Zweige aufweisen. Diese Kriterien können wie gewünscht erweitert werden, beispielsweise um ein weitergehenderes Beschneiden vorzusehen. Grundsätzlich sind auch andere Kriterien als die hier verwendeten möglich.
  • Der in diesem darstellenden Beispiel implementierte Prozess arbeitet wie folgt: Eine Konturpunktnummer k der letzten Kontur ist ein neuer Ursprung, wenn zwei Erfordernisse erfüllt sind. Zunächst muss dieser während der letzten Erzeugung erstellt worden sein und darf daher keine Kopie oder Wiederholung eines bereits vorher erzeugten Skelettpunkts sein. Dies kann auf Basis einer Iterationsnummer ermittelt werden, die mit dem Punkt assoziiert ist, und die für alle Konturpunkte während des iterativen Abtragungsprozesses aktualisiert wird. Mit dieser Prozedur erhalten nur die neu erzeugten Punkte eine Nummer der letzten Abziehoperation, während die Nummer der bereits erzeugten Skelettpunkte nicht weiter verändert wird. Ein zusätzlicher Vorteil dieser Iterationsnummer liegt darin, dass bei der Beendigung des Skelettprozesses für jeden Skelettpunkt bekannt ist, in welcher Abziehiteration dieser erzeugt wurde, so dass tatsächlich die ursprüngliche Strukturdicke an diesen bekannten Orten bekannt ist. Zweitens muss der Konturpunkt k ein Ursprung sein, und somit müssen die Konturpunkte k – 1 und k + 1 die gleichen zweidimensionalen Koordinaten aufweisen. Ein derartiger Ursprung kann in einer Richtung gemäß dem Raster erzeugt worden sein oder „bei 45 Grad". Vergleiche 7 für einige Beispiele.
  • Soweit es die Kriterien betrifft, werden nun die Ursprünge, die diagonal auf dem Raster angeordnet sind, als erstes behandelt. Zu diesem Zweck werden die Punkte k – 2 und k + 2 entlang der Kontur untersucht. Wenn diese zwei Punkte auch die gleichen Koordinaten aufweisen, wird der Ursprung als wesentlich bezeichnet, da die „Länge" des gerade erzeugten Zweiges dann immer größer als die eine Pixelbreite ist. Einige Beispiele sind in der 8 dargestellt. Wenn jedoch die zwei Punkte nicht die gleichen Koordinaten aufweisen, dann liegt ein nicht wesentlicher Ursprung mit einer Zweiglänge von ½·√2, d. h. mit einer Länge von weniger als einer Pixelbreite vor. Ein solcher Ursprung wird somit von der Konturbeschreibung entfernt, insbesondere durch einfaches Übergehen der Punkte k und k + 1. Einige Beispiele können der 9 entnommen werden.
  • Die Ermittlung der Ursprünge, die in einer Richtung erzeugt wurden, welche dem Raster folgt, ist etwas komplexer. In diesem Fall werden die Punkte k – 2 und k + 2 ebenso zunächst untersucht und auch in diesem Fall, wenn die zwei Punkte nicht die gleichen Koordinaten aufweisen, ist der betreffende der Ursprung ein unwesentlicher Ursprung, insbesondere mit einer Zweiglänge von nur einer halben Pixelbreite. Vergleiche 10 für einige Beispiele. Wenn jedoch die Punkte k – 2 und k + 2 die gleichen Koordinaten aufweisen, wird die weitere Ermittlung etwas komplexer. Es wurde in diesem Fall erkannt, dass immer zutrifft, dass in diesem Teil des gerade gebildeten Zweiges keine Krümmung vorliegt, und dass die Länge dieses Teils somit eine Pixelbreite ist. Daraufhin werden nun die Konturpunkte k – 3 und k + 3 untersucht. Wenn diese Punkte ebenso die gleichen Koordinaten aufweisen, wird der Ursprung wiederum als wesentlich erfasst, unabhängig von dem exakten Konturpfad. Vergleiche die Beispiele in der 11.
  • Die Erfassung wird nur etwas schwieriger, wenn die Punkte k – 3 und k + 3 nicht die gleichen Koordinaten aufweisen. Die Hauptregel ist dann, dass die betreffenden Ursprünge nicht wesentlich sind, es sei denn, dass eine von noch näher zu beschreibenden Situationen besteht. Zunächst sind alle diese vier Situationen in 12 dargestellt, sowie die 12 Situationen, die aus diesen erzeugt werden, indem um 1, 2 oder 3 Mal um 90° gedreht wird. Der Grund dafür, dass diese Ursprünge immer noch als wesentliche bezeichnet werden, ist die Tatsache, dass in dem ursprünglichen Bild eine andere „keilförmige" Projektion in der Kontur an diesem Ort vorliegt. Die Formen in der 12 werden detektiert, indem Punkte k – 4 bis k + 6 bzw. k – 6 bis k + 4 untersucht werden. Zusätzlich zu den Formen in 12 gibt es ferner drei Ursprünge mit einem Ort k – 3, der nicht dem Ort k + 3 entspricht, die nicht gelöscht werden können. Deren Formen sind in der 13 dargestellt, wobei diese Figur, wiederum mittels Drehung, 9 ähnliche Situationen vorsieht. Diese Formen werden ebenso wieder detektiert, indem die Punkte in dem Teil der Figur untersucht werden, die nicht in gestrichelten Linien gezeigt sind. Die Punkte B und B ~ in 13 sind ebenso Ursprünge des Typs „Ort k – 3 ist nicht der gleiche Ort wie k + 3", jedoch haben sie keine der Formen der Ursprünge, wie sie mittels k in 13 gekennzeichnet sind, und ebenso nicht die Formen von 12. Mit anderen Worten werden, wenn die Prozedur diese Punkte erreicht, diese „Seitenzweige" mittels des vorliegenden Beschneideprozesses entfernt. Tatsächlich führt dies auch zum gewünschten Ergebnis: Die „Geradeaus"-Richtung wird bevorzugt. Schließlich können, zusätzlich zu den sieben Formen (4 × 7 Situationen) in den 12 und 13 zwei spezielle Formen um den Koordinatenursprung herum in dem Konturpfad entstehen, für die eine nicht standardmäßige Behandlung notwendig ist, um klare Skelette zu erhalten, die nicht ausgefranst sind. Das Letztere bedeutet, dass der Ursprung verbleiben kann, wobei jedoch der Ort und die zugehörige Zweiglänge justiert werden. Diese zwei speziellen Formen sind in der 14 dargestellt, sowie deren Transformationen. Weitere sechs ähnliche Situationen werden aus dieser Figur durch dreifaches Drehen erzeugt. Die beabsichtigte Transformation ergibt sich durch Übergehen der Punkte k – 1 und k + 2 und durch Übergehen zu dem Punkt k an dem Ort Q. Die Ursprünge B in der 14 werden mittels des vorliegenden Beschneideprozesses vollständig gelöscht, wie diejenigen in 13. Die letztliche Wirkung ist dann eine Zweigstruktur, die nicht ausgefranst ist und die „klar" geradeaus läuft.
  • Alle anderen Formen von Ursprüngen mit dem Ort k – 3, der nicht dem Ort k + 3 entspricht, die daher nicht unter eine der Formen in 12 bis 14 fallen, werden daher vollständig gelöscht. Für diese Situationen besteht eine Löschung aus dem Übergehen der Punkte k – 1, k, k + 1 und k + 2 in der Konturbeschreibung. Einige dieser Situationen sind in einem Beispiel in 14 dargestellt. Der vollständige Beschneideprozess 21b wird implementiert, indem die Kontur einmal durchgearbeitet wird und indem während dieses Schritts die Punkte markiert werden, die übergangen werden, sowie die Punkte, die verschoben werden, beispielsweise die Ursprünge k in der 14. Nur dann wird die Kontur ein weiteres Mal durchgearbeitet, wobei während dieses Vorgehens die Liste von Konturpunkten gesäubert wird. Daher werden in der ersten „Runde" Punkte nicht sofort eliminiert oder verschoben, sondern nur markiert. Dies ist ein sicheres Verfahren, in dem die Detektion der definierten Formen immer korrekt stattfindet, da die Kontur noch nicht geändert wurde.
  • Unter Verwendung der gemäß der oben beschriebenen Prozedur beschnittenen Kontur wird dann (das Kodieren und) der Abziehprozess 21a wieder mittels der Schleife durchlaufen, wobei darauf wieder der Beschneideprozess 21b folgt, usw. Diese Iterationen werden weitergeführt, bis kein einziger Konturpunkt verschoben wird. Zu diesem Zeitpunkt gewährleistet der Entscheidungsprozess 21c, dass der iterative Abtragungsprozess beendet wird. Die endgültige Kontur, die durch den Abstreifprozess 21a erzeugt wird, ist dann die gleiche wie die vorletzte Kontur, und wurde daher bereits beschnitten. Das sich ergebende endgültige Ergebnis ist die Konturbeschreibung eines unendlich dünnen Bildes und daher wurde das Skelett in einer spezifischen Form vorgesehen.
  • Der dritte Hauptprozess 23 umfasst die Transformation der Konturskelettbeschreibung, die durch den iterativen Abtragungsprozess erzeugt wurde, in einer Beschreibung aller Ursprünge und Knoten und der zwischen diesen angeordneten Zweigen. Die erzeugte Skelettkontur ist die endgültige Kontur des iterativen Abtragungsprozesses 21. Mit Hilfe des zweidimensionalen Code-Arrays oder Zähler-Arrays ist es dann möglich, zu ermitteln, wie oft die endgültige Kontur alle Skelettorte durchläuft. Für die Ursprünge ist dies einmal, für die Knoten ist dies drei- bis maximal achtmal, und für die „internen" Punkte der Zweige, die zwischen den speziellen Punkten angeordnet sind, exakt zweimal. Die endgültige Kontur wird dann ein letztes Mal durchgearbeitet, und während dieses Schritts wird die Zweigliste erzeugt. Sobald ein erster spezieller Punkt angetroffen wird, der erkannt werden kann durch „Zähler ungleich 2", wird das Speichern des ersten Zweigs begonnen, wo in Reihenfolge die zweidimensionalen Koordinaten und die Iterationsnummer der durchlaufenden Kontur-/Skelettpunkte in eine Liste platziert werden. Das Speichern des Zweiges endet, sobald ein folgender Spezialpunkt angetroffen wird. Der erste und der letzte Punkt eines Zweigs sind somit immer Spezialpunkte. Es können zusätzliche Daten pro Zweig gespeichert werden, falls erforderlich, beispielsweise den „Abzweigungswert" des ersten und letzten Werts (1 = Ursprung, 3 ... 8 = Knoten). Direkt nach dem Abschluss des Speicherns eines Zweigs wird mit dem Beginn eines neuen Zweigs begonnen. Jedoch wird das Speichern dieses neuen Zweigs abgebrochen, wenn erkannt wird, dass die ersten zwei Punkte dieses Zweigs exakt die gleichen sind wie die letzten zwei Punkte einer der Zweige, die bereits in die Liste von Zweigen eingefügt wurden. Die Situation ist dann diejenige, dass die Kontur beginnt, einen Zweig zu durchlaufen, der bereits in der entgegengesetzten Richtung gespeichert wurde. Daher wird in diesem Fall bis zu dem nächsten speziellen Punkt nichts gespeichert, und der oben genannte Prozess beginnt wieder an diesem Punkt.
  • Schließlich wird die Liste spezieller Punkte aus der Zweigliste erzeugt, wobei eine spezifische Datenquantität, beispielsweise zweidimensionale Koordinaten, die Iterationsnummer und der Abzweigewert pro speziellem Punkt, wie erforderlich, gespeichert werden. Die Prozedur beginnt mit dem ersten Zweig und die Daten für den ersten Punkt werden unter Nr. 1 in der Liste spezieller Punkte gespeichert. Der letzte Punkt des gleichen Zweigs wird im Allgemeinen als spezieller Punkt Nr. 2 gespeichert, es sei denn, dass die Koordinaten die gleichen sind wie die des bereits gespeicherten Punkts (in diesem Fall bildet der Zweig eine Schleife). In dem Fall einer solchen Situation wird das Speichern abgebrochen. Für die folgenden Zweige werden der erste und der letzte Punkt dieser Zweige mit den bereits gespeicherten speziellen Punkten verglichen. Dadurch wird verhindert, dass Ursprünge und Knoten mehr als einmal gespeichert werden. In dieser zweiten Runde gibt es eine Beziehung zwischen den ersten und den letzten Punkten der Zweige, und der Anzahl, die die zugehörigen speziellen Punkte in der betreffenden Liste erhalten haben. Dies bedeutet, dass die Daten in der Zweigliste optional mit einer Indexnummer für den ersten und den letzten Punkt „angereichert" werden können, die auf die Position in der Liste spezieller Punkte zeigt. Die in dieser Ausführung gewählte Beschreibung ist eine der Möglichkeiten zum Beschreiben eines Skeletts mittels spezieller Punkte und Zweige. Andere oder weitere ausführliche Beschreibungen können in gleicher Weise von der Skelettkontur abgeleitet werden. Wenn die mittels individueller Punkte dargestellten speziellen Punkte und die Zweige mittels durchgezogener Linien dargestellt werden, ergibt sich ein gutes Bild dieses sogenannten Basisskeletts. Ein durch den kompletten Prozess erzeugtes Beispiel, einschließlich des beschriebenen Beschneidens, kann in der 16 betrachtet werden. In dieser Figur ist leicht zu erkennen, dass als Ergebnis des Beschneidens das Skelett nicht zu viele Zweige aufweist.
  • Ein abschließender, optionaler Hauptprozess 23 umfasst das Filtern oder Glätten der Zweige. Wie aus dem Beispiel von 16 erkannt werden kann, erscheinen die Zweige, die zwischen den speziellen Punkten angeordnet sind, etwas „gestört". Dies ergibt sich dadurch, dass der Prozess Zweigelemente erzeugt (die Abschnitte der Linie von Punkt i zu Punkt i + 1), die nur 8 mögliche Richtungen aufweisen. Für bestimmte Zwecke ist es notwendig, Zugriff zu Zweigen zu haben, die etwas „glatter" sind, beispielsweise um Eigenschaften abzuleiten, bei denen Winkelrichtungen und Krümmungen eine Rolle spielen. Daher wurde ein Filterprozess ausgestaltet, in dem spezielle Punkte bleiben, wo sie sind, aber die inneren Abzweigepunkte, die zwischen diesen liegen, werden durch das Filtern derart verschoben, dass glatt verlaufende (glatte) Zweige erzeugt werden. Grundsätzlich können viele bekannte Näherungsverfahren zum Beschreiben einer Folge von Punkten in einer flachen Ebene für diesen Zweck verwendet werden. Der in dieser Ausführung implementierte Prozess hat eine einstellbare „Stärke", wobei die größte Stärke die glattesten Zweige erzeugt. Das verwendete Prinzip ist ein so genannter „laufender" Mittelwert, über eine auswählbare Anzahl von Abzweigepunkten. Beispielsweise im Fall eines „Fünf-Punkt"-Filters werden die neuen Koordinaten für jeden Abzweigepunkt i auf der Basis der folgenden Mittelung berechnet: 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
  • Jedoch stellen diese Gleichungen ein Problem dar, wenn die Nähe des ersten oder letzten Punkts des betreffenden Zweigs erreicht wird, d. h. sozusagen in der Nähe der speziellen Punkte. Es ist dann beispielsweise möglich, die Filterbreite umso kürzer vorzusehen, je mehr dem speziellen Punkt angenähert wird. Der Filter erfordert dann eine Breite von nur „1" an den speziellen Punkten selbst. Dadurch kann tatsächlich gewährleistet werden, dass die speziellen Punkte dort bleiben, wo sie sind, wobei jedoch am Beginn und am Ende eines Zweigs diese variable Filterbreite ein weniger glattes Ergebnis als das hier gewählte Verfahren vorsieht.
  • Daher wird an dem Beginn und an dem Ende eines zu filternden Zweigs ein Teil des Zweigs an den betreffenden speziellen Punkten „gespiegelt". Dies hat den Vorteil, dass die Filterbreite (beispielsweise 5) ausgehend von dem ersten Zweigpunkt bis zu dem letzten Zweigpunkt gleich bleiben kann, während es trotzdem gewährleistet ist, dass die speziellen Punkte dort bleiben, wo sie sind. Eine solche „imaginäre" Spiegelung für den unteren linken Zweig der 16 ist in der 17 dargestellt. Indem der Punkt 7 am Punkt 9 gespiegelt wird, ergibt sich der Punkt 7 ~. In gleicher Weise ist der Punkt 3 ~ der Spiegelpunkt von Punkt 3, wenn wir am Punkt 1 spiegeln. Als Ergebnis des Spiegelns „arbeitet" der Fünfpunkt-Filter, der als ein Beispiel gewählt wurde, somit beispielsweise auch am Punkt 8: X8n = (X6 + X7 + X8 + X9 + X8 ~)/5 Y8n = (Y6 + Y7 + Y8 + Y9 + Y8 ~)/5
  • Es ist ersichtlich, dass als ein Ergebnis des Spiegelns diese Gleichungen zu unveränderten Koordinaten für die Punkte 1 und 9 führen. Das Ergebnis eines Sieben-Punkt-Filters, der an dem Basisskelett in 16 angewandt wurde, ist in 18 dargestellt. Schließlich wird hier dargestellt, dass die Verwendung von zwei Filtern nacheinander, beispielsweise an einem Sieben-Punkt-Filter, gefolgt von einem Drei-Punkt-Filter, zu einem sogenannten Faltungsfilter führt, der wiederum einen etwas anderen Effekt vorsieht.
  • Die so erhaltene Skelettbeschreibung kann dem weiteren Prozessor 12 eingegeben werden, in welchem beispielsweise Zeichenerkennung ausgeführt wird. Es ist ersichtlich, dass die vorliegende Erfindung insbesondere bei der automatischen Zeichenerkennung kursiver Schrift verwendet werden kann, insbesondere bei dem Segmentieren des Bildes in getrennte Zeichen oder Zeichenteile.

Claims (14)

  1. Verfahren zum Vorsehen einer Ausgabe in Skelettform, die eine vereinfachte Wiedergabe eines Pixelbilds mit zusammengefügten Pixel ist, umfassend: Umwandeln des Pixelbilds mit Pixel der Grenzen von binären Strukturen, die in einer Konturauflistung zusammengefügt sind, wobei eine Konturauflistung aus einer oder mehreren Folgen zweidimensionaler Konturpunkte besteht, wobei jede Folge eine geschlossene Kontur wiedergibt, wobei die Entfernung zwischen zwei aufeinander folgenden Konturpunkten die Breite eines Pixels aufweist, dadurch gekennzeichnet, dass das Verfahren ferner umfasst: Verdoppeln der Anzahl an Konturpunkten durch Definieren eines weiteren Punkts zwischen zwei aufeinander folgenden Konturpunkten, wodurch der Abstand zwischen zwei aufeinander folgenden Konturpunkten die Hälfte der Breite eines Pixels beträgt; Wiederholtes Abziehen des von der Konturauflistung beschriebenen Bildes durch wiederholtes Erzeugen einer neuen Konturauflistung durch Analyse jeder Folge der zweidimensionalen Konturpunkte, wobei alle Folgen im Wechsel verarbeitet werden, bis die neue Konturauflistung ein Bild beschreibt, das durchgehend eine Dicke von Null aufweist und somit die Ausgabe in Skelettform beschreibt, wobei das Abziehen ausgeführt wird durch Erzeugen von null, ein, zwei oder drei Punkten in der neuen Konturauflistung für jeden Konturpunkt, abhängig von dem Konturpunkt, dem vorangehenden Konturpunkt und dem folgenden Konturpunkt in der Konturauflistung, und abhängig von den anderen Konturpunkten in der Konturauflistung, die die gleichen zweidimensionalen Koordinaten mit den jeweiligen zugeordneten vorangehenden Konturpunkten und Folgekonturpunkten aufweisen, wobei die zwei Punkte entweder die gleichen Koordinaten wie der alte Konturpunkt aufweisen, oder über eine Entfernung von der halben Breite eines Pixels in X-Richtung und/oder in Y-Richtung zum Inneren der Binärstruktur verschoben wurden, die von der Konturauflistung beschrieben ist.
  2. Verfahren nach Anspruch 1, wobei ein Codearray mit einem spezifischen Bereich von zweidimensionalen Adressen gespeichert ist, und wobei das Abziehen umfasst: – Durchgehen der Folge oder Anzahl von Folgen von Konturpunkten in der Konturauflistung; – Bestimmen eines aktualisierten Situationsindikators abhängig von dem Wert des Situationsindikators, der bereits in dem Codearray bei der Adresse vorliegt, die dem Konturpunkt und dem vorangehenden und nächsten Konturpunkt in der Folge angehört, und Speichern des Situationsindikators unter der selben Adresse; – wiederholtes punktweises Durchgehen durch die Konturauflistung und Erzeugen einer neuen Konturauflistung auf der Basis der jeweiligen Situationsindikatoren in dem Codearray.
  3. Verfahren nach Anspruch 2, wobei die Konturpunkte auf einem zweidimensionalen Raster angeordnet sind, wobei der Rasterabstand einer halben Breite eines Pixels entspricht und der Situationsindikator ein hexadezimaler Code ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, die ferner das Beschneiden der Konturlisten umfasst, die nach einem Abziehschritt erzeugt wurde, wobei das Beschneiden umfasst: Ermitteln, ob ein während dieses Abziehschritts erzeugter Ursprung ein wesentlicher oder ein unwesentlicher Ursprung ist, und Entfernen der unwesentlichen Ursprünge von in der Konturliste vorliegenden Folge oder Anzahl von Folgen von Konturpunkten, wobei ein Ursprung ein Konturpunkt ist, für den der direkt vorangehende und der direkt darauf folgende Konturpunkt in der Folge die gleichen Koordinaten aufweisen.
  5. Verfahren nach Anspruch 4, wobei eine Iterationsnummer, welche den Iterationsdurchlauf angibt, in der der betreffende Konturpunkt zum ersten Mal erzeugt wurde, jedem Konturpunkt in der Konturauflistung zugeordnet ist.
  6. Verfahren nach einem der Ansprüche 4 oder 5, wobei das Ermitteln, ob ein Ursprung ein wesentlicher oder ein unwesentlicher Ursprung ist, von einem oder mehreren vorangehenden oder einem oder mehreren folgenden Konturpunkten in der Folge abhängt.
  7. Verfahren nach einem der Ansprüche 4, 5 oder 6, wobei das Beschneiden umfasst: Durchgehen der Folge von Konturpunkten; Abhängig von einem oder mehreren vorangehenden und einem oder mehreren folgenden Konturpunkten der Folge oder Anzahl von Folgen von Konturpunkten, Zuordnen eines Beschneidungsindikators zu dem Konturpunkt und zu dem ein oder mehreren vorangehenden und/oder folgenden Konturpunkten; Erneutes Durchgehen der Folge von Konturpunkten und Erzeugen einer neuen Folge von Konturpunkten auf der Basis des Beschneidungsindikators.
  8. Verfahren nach einem der Ansprüche 1 bis 7, umfassend: Transformieren der Konturauflistung, die aus der Folge oder Anzahl von Folgen von Konturpunkten mit einem zugehörigen Bild mit einer Dicke von null besteht, in eine Auflistung der Ursprünge und Knoten und Zweige, die zwischen den Ursprüngen und Knoten in dem Bild bestehen.
  9. Verfahren nach Anspruch 8, wobei das Transformieren umfasst: Führen eines Zählers in dem Codearray zweidimensionaler Adressen, der angibt, wie oft eine spezifische zweidimensionale Koordinate in der Konturauflistung auftritt, die das Bild wiedergibt, welches eine Dicke von null hat; Extrahieren eines Zweigs durch Speichern sukzessiver Konturpunkte in der Folge, für welchen der Zähler in dem Codearray bei der zugehörigen zweidimensionalen Adresse zwei ist, unterstützt von Zweigpunkten, wobei die Zweigpunkte durch den Vorangehenden des ersten Punkts und den Nachfolger des letzten Punkts vorgesehen sind; Speichern spezieller Konturpunkte aus der Folge, für die der Zähler in dem Codearray eins oder mehr als zwei ist.
  10. Verfahren nach Anspruch 9, wobei ein extrahierter Zweig, für den die zwei Konturpunkte mit den letzten zwei Konturpunkten eines bereits gespeicherten Zweigs zusammenfallen, nicht gespeichert wird.
  11. Verfahren nach Ansprüchen 9 oder 10, wobei ein extrahierter Zweig räumlich gefiltert wird, beispielsweise durch Ermitteln eines laufenden Mittelwerts der betreffenden zweidimensionalen Koordinatenwerte.
  12. Vorrichtung zum Vorsehen einer Ausgabe in Skelettform, die eine vereinfachte Wiedergabe eines Pixelbilds ist, bei dem Pixel aneinandergefügt sind, umfassend: einen Detektor (11) zum Erfassen des Pixelbilds; Verarbeitungsmittel (10), die mit dem Detektor (11) verbunden sind, wobei die Verarbeitungsmittel (20) eingerichtet sind, um: das Pixelbild mit Pixeln der Grenzen von binären Strukturen zu konvertieren, die in einer Konturliste zusammengefügt sind, wobei eine Konturliste aus einer oder mehreren Folgen von zweidimensionalen Konturpunkten besteht, wobei jede Folge eine geschlossene Kontur wiedergibt, wobei der Abstand zwischen aufeinander folgenden Konturpunkten der Breite eines Pixels entspricht, dadurch gekennzeichnet, dass die Verarbeitungseinrichtung (10) ferner eingerichtet ist, um: die Anzahl von Konturpunkten zu verdoppeln, indem ein zusätzlicher Punkt zwischen zwei aufeinander folgenden Konturpunkten definiert wird, wodurch ihr Abstand zwischen zwei aufeinander folgenden Konturpunkten der halben Breite eines Pixels entspricht; wiederholtes Abziehen des Bildes, das von der Konturauflistung beschrieben ist, durch wiederholte Erzeugung einer neuen Konturauflistung durch Analyse jeder der Folgen der zweidimensionalen Konturpunkte, wobei alle Folgen im Wechsel verarbeitet werden, bis die neue Konturauflistung ein Bild beschreibt, das durchgehend eine Dicke von null aufweist und somit die Ausgabe in Skelettform beschreibt, wobei das Abziehen ausgeführt wird durch Erzeugen von null, einem, zwei oder drei Punkten in der neuen Konturauflistung für jeden Konturpunkt, abhängig von dem Konturpunkt, dem vorangehenden Konturpunkt und dem folgenden Konturpunkt in der Konturliste und abhängig von den anderen Konturpunkten in der Konturliste, die die gleichen zweidimensionalen Koordinaten mit dem betreffenden zugeordneten vorangehenden Konturpunkt und folgenden Konturpunkt aufweisen, wobei die neuen Punkte entweder die gleichen Koordinaten wie die alten Punkte aufweisen, oder um eine Distanz von der Hälfte einer Pixelbreite in X-Richtung und/oder in Y-Richtung zur Innenseite der binären Struktur hin verschoben wurden, welche durch die Konturauflistung beschrieben wird.
  13. Vorrichtung nach Anspruch 12, wobei die Verarbeitungseinrichtung ferner eingerichtet ist, um das Verfahren nach einem der Ansprüche 2 bis 11 auszuführen.
  14. Computerprogrammprodukt mit computerlesbarem Code, wobei, nachdem dieser in einen Computer geladen wurde, der computerlesbare Code den Computer mit der Funktionalität des Verfahrens gemäß einem der Ansprüche 1 bis 11 versieht.
DE602004011648T 2003-12-03 2004-12-03 Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten Active DE602004011648T2 (de)

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 (2)

Publication Number Publication Date
DE602004011648D1 DE602004011648D1 (de) 2008-03-20
DE602004011648T2 true DE602004011648T2 (de) 2009-02-05

Family

ID=34464928

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004011648T Active DE602004011648T2 (de) 2003-12-03 2004-12-03 Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten

Country Status (4)

Country Link
EP (1) EP1538547B1 (de)
AT (1) ATE385594T1 (de)
DE (1) DE602004011648T2 (de)
NL (1) NL1024932C2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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 凌云光技术股份有限公司 一种纹理背景下弱线的提取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
EP1538547A1 (de) 2005-06-08
NL1024932C2 (nl) 2005-06-06
DE602004011648D1 (de) 2008-03-20
EP1538547B1 (de) 2008-02-06
ATE385594T1 (de) 2008-02-15

Similar Documents

Publication Publication Date Title
DE69312401T2 (de) Vorrichtung und verfahren zur erzeugung von linien von variabler breite
DE69328589T2 (de) System und Verfahren zur Darstellung von Bezier-Splines-Kurven
DE69129342T2 (de) Verfahren und Gerät zum Herausziehen von Bildranddaten
DE3853885T2 (de) Vektorisationsverfahren.
DE60020887T2 (de) Optischer fluss und bildaufbau
WO2000010119A1 (de) Verfahren zum erkennen von objekten in digitalisierten abbildungen
DE60000678T2 (de) Optischer Scanner und zugehörige Software
DE102004004528A1 (de) Verfahren, Vorrichtung und Programm zur Verarbeitung eines Stereobildes
DE69328230T2 (de) Entfernungbildverarbeitungsvorrichtung und -verfahren
DE3685571T2 (de) Verfahren zum ueberbruecken von luecken zwischen konturelementen in einem bild.
DE2752421A1 (de) Anordnung fuer die abtastung und digitalisierung von grafischen darstellungen oder daten
DE102007040070B4 (de) Bilddichteumwandlungsverfahren, Bildverbesserungsverarbeitungseinrichtung und dafür geeignetes Programm
EP1037166A1 (de) Verfahren zur Detektion von Konturen in einem Röntgenbild
DE102008013789A1 (de) Vorrichtung, Verfahren und Programm zum Eliminieren von Zeichenstörungen
DE19531392C1 (de) Verfahren zur Erzeugung einer Graphrepräsentation von Bildvorlagen
DE3524505A1 (de) Bilderkennungsvorrichtung
DE102009006414B3 (de) Verfahren und Mittellinien-Ermittlungseinrichtung sowie Bildbearbeitungseinrichtung und Computerprogramm zur Ermittlung einer Mittellinie eines Abschnitts eines Hohlorgans
DE10132618A1 (de) Computergestütztes Verfahren zur Vektorisierung von Rasterbildern
DE102006044595A1 (de) Verfahren und Vorrichtung zur Bildverarbeitung
DE102005060503A1 (de) Verfahren und Vorrichtung für die effiziente Berechnung von Morphologie-Operationen
DE602004011648T2 (de) Verfahren und Vorrichtung zur Skelettbilder Extraktion von Bilddaten
DE102012204063A1 (de) Generierung von Visualisierungs-Befehlsdaten
WO2005073911A1 (de) Bildverarbeitungssystem
DE3854822T2 (de) Gerät zur Bildkonturentdeckung
EP2893510B1 (de) Verfahren und bildverarbeitungsanlage zum entfernen eines visuellen objektes aus einem bild

Legal Events

Date Code Title Description
8364 No opposition during term of opposition