DE112012004809T5 - Kantenverfolgung mit Hysterese-Schwellenwertbildung - Google Patents

Kantenverfolgung mit Hysterese-Schwellenwertbildung Download PDF

Info

Publication number
DE112012004809T5
DE112012004809T5 DE112012004809.1T DE112012004809T DE112012004809T5 DE 112012004809 T5 DE112012004809 T5 DE 112012004809T5 DE 112012004809 T DE112012004809 T DE 112012004809T DE 112012004809 T5 DE112012004809 T5 DE 112012004809T5
Authority
DE
Germany
Prior art keywords
edge
labels
label
map
pixels
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.)
Granted
Application number
DE112012004809.1T
Other languages
English (en)
Other versions
DE112012004809B4 (de
DE112012004809T8 (de
Inventor
Bijesh Poyil
Anil Sripadaro
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.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
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 Analog Devices Inc filed Critical Analog Devices Inc
Publication of DE112012004809T5 publication Critical patent/DE112012004809T5/de
Application granted granted Critical
Publication of DE112012004809T8 publication Critical patent/DE112012004809T8/de
Publication of DE112012004809B4 publication Critical patent/DE112012004809B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/181Segmentation; Edge detection involving edge growing; involving edge linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/187Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
    • 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/20072Graph-based image processing

Abstract

Verfahren zum Verfolgen von Kanten eines Bildes unter Verwendung von Hysterese-Schwellenwertbildung, einschließend: (i) Erhalten eines Kantenmaps des Bildes, (ii) Scannen einer Zeile des Eingangskantenmaps, (iii) Zuweisen einer Beschriftung zu jedem Kantenpixel in der Zeile basierend mindestens teilweise auf der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels, (iv) Gruppieren fortlaufender Beschriftungen und (v) Identifizieren von Gruppen von Kantenpixeln.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht Priorität und die Vorteile der US-Anmeldung mit dem Aktenzeichen Nr. 13/426,844, eingereicht am 22. März 2012, und der vorläufigen US-Patentanmeldung Nr. 61/561,495, die am 18. November 2011 eingereicht wurde.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft in verschiedenen Ausführungsformen allgemein Bildverarbeitung und insbesondere die Verfolgung von Kanten in Bildern.
  • HINTERGRUND
  • Bildbearbeitungstechniken können zum Erkennen von Formen (z. B. Linien, Rechtecken oder Kreisen) in einem Bild verwendet werden. Formerkennung beinhaltet normalerweise zwei Schritte: Kantenerkennung und Kantenverfolgung (auch als Kantenverknüpfung bekannt). Kantenerkennung ist eine gut bekannte Technik zum Lokalisieren von bildhaft aussagekräftigen Unstetigkeiten in Graustufenniveaus, die beispielsweise einer Grenze zwischen zwei verschiedenen Regionen in dem Bild entsprechen. Nach der Kantenerkennung können Verfolgungsverfahren verwendet werden, um erkannte Kantenpixel zu größeren Kanten zusammenzufügen, die den Kanten von Objekten in dem Originalbild besser entsprechen. Nachdem die Kanten in dem Bild abgeleitet wurden, können gut etablierte Klassifizierungstechniken, wie Fourier-Formdeskriptoren und generalisierte Hough-Transformation, zur Erkennung eines Objektes in dem Bild verwendet werden.
  • In der üblichen Praxis wird auf Intensitätsgradienten des Bildes ein Schwellenwert angewendet, um zu entscheiden, ob Kanten vorhanden sind. Pixel mit Intensitätsgradienten, die über dem Schwellenwert liegen, werden als Teile einer Kante markiert, während Pixel mit Intensitätsgradienten unter dem Schwellenwert als Nichtkantenpixel angesehen werden. Es ist jedoch schwierig, einen Schwellenwert anzugeben, der Kantenpixel und Nichtkantenpixel eindeutig trennen kann. Ein höher entwickelter Kantendetektor verwendet Hysterese-Schwellenwertbildung und zwei Schwellenwerte, Tniedrig und Thoch, um die Kanten zu erkennen. Pixel mit Intensitätsgradienten über Thoch werden als Starkkantenpixel markiert, während Pixel mit Intensitätsgradienten unter Tniedrig als Nichtkantenpixel markiert werden. Pixel mit Intensitätsgradienten, die unter Thoch, jedoch über Tniedrig liegen und als Schwachkantenpixel bezeichnet werden, werden nur als Kantenpixel angesehen, wenn sie mit einem Pixel mit einem Intensitätsgradienten über Thoch (d. h. einem Starkkantenpixel) „verbunden sind” (d. h. diesem benachbart sind). Eine stetige Kantenkurve kann somit von Schwachkantenpixeln in dem Bild bis zu Starkkantenpixel verfolgt werden, wodurch eine größere Kante mit verrauschten oder unklaren Abschnitten rekonstruiert wird. Dieses Verfahren kann besser definierte Kanten in dem Bild liefern und das Verfolgen undeutlicher Kanten ermöglichen (solange ein benachbartes Starkkantenpixel identifiziert worden ist).
  • Konventionelle Kantenverfolgungssysteme und -verfahren verfolgen rekursiv den Weg der Kantenpixel, die in einem Bild identifiziert wurden. Wenn ein Pixel als Kantenpixel markiert ist, werden seine benachbarten Pixel gescannt. Die benachbarten Pixel werden, wie oben beschrieben, als Kantenpixel angesehen, wenn ihre Intensitätsgradienten größer als Tniedrig sind. Das Nachbar-Scan-Verfahren wird für alle benachbarten Kantenpixel wiederholt (d. h. für alle Nachbarn mit einem Intensitätsgradienten größer als Tniedrig). Dieser rekursive Ansatz ist somit zeitraubend und erfordert einen großen Speicher. Aufgrund der statistischen Natur des Scannens der benachbarten Pixel und der Unvorhersagbarkeit der Richtung, in die die Kante laufen kann, kann unmöglich vorab prognostiziert werden, welche Teile des Bildes benötigt werden, um eine aktuelle Kante zu erkennen, und somit muss normalerweise das Gesamtbild im lokalen Zugriff sein.
  • Prozessoren mit kleinen internen Speichern (z. B. digitale Signalprozessoren) können nicht das gesamte Bild lokal speichern (oder Informationen, die mit dem Bild assoziiert sind, wie Pixelbeschriftungen). Derartige Prozessoren müssen daher kontinuierlich auf langsamen Systemspeicher (z. B. externen Speicher) zugreifen, um weitere Abschnitte des Bildes zu holen; dies führt zu langsamen Verarbeitungsgeschwindigkeiten für die Kantenverfolgungsalgorithmen. Es besteht demzufolge ein Bedarf daran, das rasche Holen von Bildinformationen aus lokalem Speicher zu erleichtern und diese Informationen zu Zwecken der Kantenverfolgung zu verarbeiten, ohne Systemspeicher zu nutzen.
  • KURZFASSUNG
  • Die vorliegende Erfindung betrifft in verschiedenen Ausführungsformen Systeme und Verfahren zum effizienten Verfolgen von Kanten in einem Bild, indem nur in Raster-Scan-Reihenfolge auf das Bild zugegriffen wird (z. B. links-nach-rechts über jede Zeile und oben-nach-unten für alle Zeilen). Die rastergescannten Pixel in jeder Zeile werden in einem Eingangskantenmap, welches beispielsweise zwei Schwellenwerte, Tniedrig und Thoch, verwendet, in „Starkkantenpixel”, „Schwachkantenpixel” und „Hintergrundpixel” klassifiziert. Dann werden jedem Pixel bezogen auf dessen Klassifizierung sowie der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels Beschriftungen zugewiesen. Beschriftungen jeder Rasterzeile werden im Speicher gespeichert; nur Beschriftungen der aktuellen gescannten Rasterzeile und der zuvor gescannten Zeile werden benötigt, um Kantenverfolgung durchzuführen. Der Speicherbedarf ist somit sehr gering, und der Speicherraum kann nach Abschluss eines Scans einer Zeile wieder freigegeben werden, um Beschriftungen in der nächsten gescannten Rasterzeile zu speichern.
  • Um Beschriftungen basierend auf der Verbindungsfähigkeit der Pixel in dem Eingangskantenmap zu gruppieren, kann ein „Union-Find”-Ansatz verwendet werden, wodurch der Speicherbedarf zur Speicherung der Beschriftungen reduziert wird. Beschriftungen können zudem in zwei Gruppen klassifiziert werden: aktive Beschriftungen, die in dem Map propagieren, und inaktive Beschriftungen, die nicht propagieren. Der erforderliche interne Speicher kann reduziert werden, indem die inaktiven Beschriftungen in externen Speicher verschoben werden. Die „Union-Find”-Operation kann dann nur auf die aktiven Beschriftungen angewendet werden, wodurch statistischer Zugriff auf das Map vermieden und somit die Verarbeitungszeit reduziert wird. Eine Gruppe von Beschriftungen, die mit Starkkantenpixeln assoziiert sind, wird dann als Teil einer Kante identifiziert, während eine Gruppe von Beschriftungen, die nicht mit Starkkantenpixeln assoziiert sind, verworfen wird, um die Anzahl der in dem Speicher gespeicherten Beschriftungen weiter zu reduzieren. Dieser Ansatz minimiert statistischen Speicherzugriff, ermöglicht das Prognostizieren und vorherige Holen der benötigten Abschnitte des Bildes in lokalen Speicher und verarbeitet nur aktive Beschriftungen; er kann dadurch schnell Kanten des Bildes unter Verwendung von Prozessoren verfolgen, die kleine interne Speicher aufweisen können.
  • Die Erfindung betrifft demnach in einem Aspekt ein Verfahren zum Verfolgen von Kanten eines Bildes unter Verwendung von Hysterese-Schwellenwertbildung. Das Verfahren umfasst (a) Erhalten eines Kantenmaps des Bildes; (b) Scannen einer Zeile des Kantenmaps; (c) Zuweisen einer Beschriftung zu jedem Kantenpixel in der Zeile basierend mindestens teilweise auf Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels; (d) Wiederholen der Schritte (b) und (c) für jede Zeile in dem Kantenmap; (e) Gruppieren fortlaufender Beschriftungen und (f) Identifizieren von Gruppen, die zu Starkkantenpixeln gehören. Ein benachbartes Kantenpixel ist in verschiedenen Ausführungsformen irgendeines von einem linken Kantenpixel, einem oberen linken Kantenpixel, einem oberen Kantenpixel oder einem oberen rechten Kantenpixel. Die jedem Kantenpixel in der Rasterzeile zugewiesene Beschriftung kann mindestens teilweise auf einer Richtung basieren, aus der die Beschriftung propagiert.
  • Die Beschriftungen können in einer Tabelle oder Datenstruktur gespeichert werden. Wenn die Beschriftungen in einer Datenstruktur gespeichert werden, kann die Datenstruktur einen Eintrag, der beispielsweise eine x-Koordinate einschließt, eine Zählernummer und die Beschriftung einschließen, die einen fortlaufenden Lauf der Kantenpixel repräsentiert. Die Beschriftung in dem Eintrag kann mindestens teilweise basierend auf der Anwesenheit oder Abwesenheit eines zweiten Laufs von Kantenpixeln zugewiesen werden, die dem fortlaufenden Lauf der Kantenpixel benachbart sind. Die Datenstruktur kann eine Hybriddatenstruktur einschließen, die einen ersten disjunkte Menge-Datenwald, der propagierte Beschriftungen speichert, und einen zweiten disjunkte Menge-Datenwald einschließt, der nichtpropagierte Beschriftungen einschließt. Die Hybriddatenstruktur kann alternativ einen disjunkte-Menge-Datenwald, der propagierte Beschriftungen speichert, und ein Array einschließen, das nichtpropagierte Beschriftungen speichert. Den propagierten Beschriftungen können mittels eines Modulooperators oder mithilfe der niedrigstwertigen Bits der propagierten Beschriftungen, die mit einer Breite des Bildes assoziiert sind, Slotnummern eines lokalen Speichers zugewiesen werden. Die propagierten Beschriftungen können zudem mindestens teilweise basierend auf der Verbindungsfähigkeit zwischen ihnen gruppiert werden.
  • Die Beschriftung mit einem minimalen Wert unter allen zugewiesenen Nummern kann für die Starkkantenpixel reserviert werden. Die reservierte minimale Anzahl reduziert vorteilhaft die Anzahl der Beschriftungen, vermeidet Speicherbedarf zur separaten Speicherung einer Liste starker Beschriftungen und Verarbeitungszeit zum Parsen der Liste von Beschriftungen, um zu bestimmen, ob eine bestimmte Beschriftung ein Starkkantenpixel ist, und gewährleistet, dass die Starkkantenbeschriftung nicht durch andere Beschriftungen ersetzt wird.
  • Ein System zum Verfolgen von Kanten eines Bildes mittels Hysterese-Schwellenwertbildung schließt in einem anderen Aspekt einen lokalen Speicher und einen Prozessor ein, der über eine Hochgeschwindigkeitsschnittstelle mit dem lokalen Speicher verbunden ist und über eine Schnittstelle mit niedriger Geschwindigkeit mit dem Hauptspeicher verbunden ist. Der Prozessor ist konfiguriert zum: (i) Laden einer Zeile eines in einem Hauptspeicher gespeicherten Kantenmaps in den lokalen Speicher; (ii) Zuweisen einer Beschriftung zu jedem Pixel in der Zeile basierend mindestens teilweise auf der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels; (iii) Wiederholen der Schritte (i) und (ii) für jede Zeile in dem Kantenmap; (iv) Gruppieren fortlaufender Beschriftungen und (v) Identifizieren von Gruppen, die zu Starkkantenpixeln gehören.
  • Die in dem Kantenmap propagierenden Beschriftungen können in dem lokalen Speicher gespeichert werden, während die Beschriftungen, die in dem Kantenmap nicht propagieren, in dem lokalen Speicher oder dem Hauptspeicher gespeichert werden können. Der lokale Speicher ist möglicherweise beispielsweise zu klein, um das gesamte Kantenmap zu speichern. Der Prozessor ist in einigen Ausführungsformen ein digitaler Signalprozessor.
  • Die Bezugnahme auf „ein (1) Beispiel”, „ein Beispiel”, „eine (1) Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die im Zusammenhang mit dem Beispiel beschrieben wurde, in mindestens ein Beispiel der vorliegenden Technologie eingeschlossen ist. Das Vorkommen der Formulierungen „in einem (1) Beispiel”, „in einem Beispiel”, „eine (1) Ausführungsform” oder „eine Ausführungsform” bezieht sich an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf dasselbe Beispiel. Die speziellen Merkmale, Strukturen, Routinen, Schritte oder Charakteristika können ferner in jeder geeigneten Weise in einem oder mehreren Beispielen der Technologie kombiniert werden. Die hier bereitgestellten Überschriften dienen lediglich der Übersicht und sollen den Umfang oder die Bedeutung der beanspruchten Technologie weder einschränken noch diese interpretieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In der folgenden Beschreibung werden verschiedene Ausführungsformen der vorliegenden Erfindung in Bezug auf die folgenden Zeichnungen beschrieben. Es zeigen:
  • 1 ein Eingangskantenmap;
  • 2 ein beispielhaftes Beschriftungsmap basierend auf dem Kantenmap gemäß einer Ausführungsform der Erfindung;
  • 3 ein gerichtetes Beschriftungsmap gemäß einer Ausführungsform der Erfindung;
  • 4A Beschriftungen, die in einer Datenstruktur gemäß einer Ausführungsform der Erfindung gespeichert sind;
  • 4B ein weiteres Eingangskantenmap gemäß einer Ausführungsform der Erfindung;
  • 5 ein Äquivalenzmap gemäß einer Ausführungsform der Erfindung;
  • 6A eine Baumstruktur und ein Äquivalenzmap von zugewiesenen Beschriftungen in einem System des Standes der Technik;
  • 6B eine zusammengeführte Baumstruktur und ein aktualisiertes Äquivalenzmap von zugewiesenen Beschriftungen in einem System des Standes der Technik;
  • 7A eine Baumstruktur und ein Äquivalenzmap von zugewiesenen Beschriftungen gemäß einer Ausführungsform der Erfindung;
  • 7B eine zusammengeführte Baumstruktur und ein aktualisiertes Äquivalenzmap von zugewiesenen Beschriftungen gemäß einer Ausführungsform der Erfindung;
  • 8A ein aktualisiertes Beschriftungsmap gemäß einer Ausführungsform der Erfindung;
  • 8B ein Ausgangskantenkantenmap gemäß einer Ausführungsform der Erfindung;
  • 8C ein Kantenmap, welches basierend auf den Beschriftungen der Läufe gemäß einer Ausführungsform der Erfindung generiert wurde;
  • 8D ein Ausgangskantenkantenmap gemäß einer Ausführungsform der Erfindung;
  • 9 ein Verfahren zum Verfolgen von Kanten eines Bildes gemäß einer Ausführungsform der Erfindung; und
  • 10 ein System zum Verfolgen von Kanten eines Bildes gemäß einer Ausführungsform der Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt ein beispielhaftes Kantenmap 100, das von einem Quellbild abgeleitet und typischerweise von einer Bildquelle erhalten wurde. Das Kantenmap 100 ist ein pixelweises Mapping des Quellbilds, in dem jeder Eintrag (d. h. Wert von Zeile/Spalte) in dem Kantenmap 100 einem Pixel (oder Pixeln) in dem Quellbild entspricht. Das Kantenmap klassifiziert jedes Pixel (oder jede Gruppe von Pixeln) in dem Quellbild als Starkkantenpixel, Schwachkantenpixel oder Nichtkantenpixel (in dem Kantenmap 100 mit „2”, „1” beziehungsweise „0” markiert). Ein einzelnes Schwachkantenpixel 102 ist beispielsweise in einer ersten Zeile 104 des Kantenmaps 100 vorhanden, und eine Vielzahl von Schwachkantenpixeln 106 sind in einer zweiten Zeile 108 vorhanden. Starkkantenpixel 110 erscheinen in einer sechsten Zeile 112. Das Kantenmap 100 wird in einer Ausführungsform aus dem Quellbild generiert, indem die Intensitäten, Gradienten und/oder andere Faktoren in dem Quellbild gegen einen oder mehrere Schwellenwerte (z. B. Tniedrig und Thoch) analysiert werden; das Kantenmap 100 kann auch von einem Kantenanalysesystem erhalten werden.
  • Ein Starkkantenpixel kann einer kontrastreichen Grenze in dem Quellbild entsprechen, und ein Schwachkantenpixel kann einer kontrastarmen oder mäßig kontrastierenden Grenze in dem Quellbild entsprechen. Ein Nichtkantenpixel kann Regionen des Quellbilds entsprechen, die nicht mit einer Grenze assoziiert sind. Die beiden Schwellenwerte, Tniedrig, Thoch können vorab ermittelt und angepasst werden, so dass sie die Qualität des Kontrasts in dem Bild widerspiegeln. Der Unterschied zwischen Tniedrig und Thoch kann beispielsweise auf einen niedrigen Wert gesetzt werden, wenn ein Bild kontrastarm ist, oder auf einen hohen Wert, wenn der Kontrast des Bildes gut ist. (Ein) niedriger(e) Schwellenwert(e) kann/können jedoch zur Erkennung von mehr Kanten führen, und die resultierende große Anzahl der Kanten kann rauschanfällig sein (d. h. einige der erkannten Kanten entsprechen möglicherweise keinen tatsächlichen Kantenmerkmalen in dem Bild). Im Unterschied dazu nimmt ein hoher Schwellenwert subtile Kanten möglicherweise nicht wahr und führt zu fragmentierten Grenzen innerhalb des Bildes. Die vorliegende Erfindung ist weder auf irgendeinen speziellen Wert (oder irgendeine Anzahl) der Schwellenwerte begrenzt noch müssen die Schwellenwerte gut überlegt sein, damit die Erfindung vernünftig funktioniert; jegliche für ein gegebenes Bild geeigneten Schwellenwerte liegen innerhalb des Umfangs der vorliegenden Erfindung.
  • Kantenmap 100 wird gescannt (d. h. Zeile für Zeile), und die Daten darin werden analysiert, wie anschließend näher erläutert wird. Die aktuelle Diskussion geht von einer Rasterscanfolge von oben nach unten (für Zeilen) und links nach rechts (für Spalten innerhalb jeder Zeile) aus, die vorliegende Erfindung ist jedoch nicht auf irgendeine spezielle Orientierung, Richtung oder Reihenfolge des Scannens beschränkt; beispielsweise kann Scannen von unten nach oben und links nach rechts verwendet werden. Ein Fachmann wird erkennen, dass unterschiedliche Orientierungen, Richtungen und/oder Reihenfolgen des Scannens innerhalb des Umfangs der vorliegenden Erfindung liegen.
  • In Bezug auf 2 wird ein erster Scandurchlauf auf das Kantenmap 100 angewendet, um ein Beschriftungsmap 200 (oder eine Datenstruktur, wie anschließend näher erläutert wird) zu generieren, d. h. Beschriftungen werden den Kantenpixeln zugewiesen, die in jeder gescannten Zeile gefunden werden. Jedem Pixel in einer Zeile in dem Beschriftungsmap 200 kann als Initialwert eine Standardbeschriftung (z. B. „0”) zugewiesen werden; diese Beschriftung zeigt, dass jedes Pixel in der entsprechenden Zeile in dem Kantenmap 100 als Initialwert als Hintergrundpixel klassifiziert wird (oder als Stammbeschriftung, wie anschließend näher erläutert wird). Jede Zeile des Kantenmaps 100 wird auf Kantenpixel (entweder Stark- oder Schwachkanten) untersucht, und wenn Kantenpixel gefunden werden, werden ihnen Beschriftungen zugewiesen. Ist das identifizierte Kantenpixel Teil einer bereits bestehenden Gruppe von Kantenpixeln (wie nachfolgend näher erläutert wird), wird die bereits bestehende Beschriftung der Gruppe auf das neue Kantenpixel angewendet. Wenn andererseits das Kantenpixel das erste einer neuen Gruppe ist, wird ihm eine neue eindeutige Beschriftung zugewiesen.
  • Beschriftungen können mittels verschiedenen Ansätzen zugewiesen werden. In einer Ausführungsform wird jede Zeile des Kantenmaps 100 von links nach rechts gescannt, und jedem neu gefundenen Kantenpixel werden basierend auf der Anwesenheit oder Abwesenheit eines bereits gefundenen (d. h. zuvor gescannten) benachbarten Kantenpixels numerische Beschriftungen (beginnend bei einer ersten Beschriftung von „1”) zugewiesen. Wie auch in 1 zu sehen ist, tritt beispielsweise das Schwachkantenpixel 102 zuerst in der ersten Zeile 104 auf; weil keine benachbarten Pixel vorhanden sind (zumindest jetzt noch keine bekannt sind), wird das Schwachkantenpixel 102 in dem Beschriftungsmap 200 mit „1” beschriftet. In der zweiten Zeile 108 des Kantenmaps 100 treten mehr Kantenpixel 106 auf; jedes wird in dem Beschriftungsmap 200 mit „2” beschriftet, weil jedes ein benachbartes Kantenpixel hat (nämlich das vorherige Pixel links von jedem aktuellen Pixel).
  • Benachbarte Pixel können die Beschriftung eines aktuellen Pixels beeinflussen. In 2 wird das Pixel 206 in der zweiten Zeile 208 in dem Beschriftungsmap 200 mit „1” anstelle von „2” beschriftet, da es „oben” ein benachbartes Kantenpixel 202 aufweist, dem bereits eine Beschriftung von „1” zugewiesen wurde. In verschiedenen Ausführungsformen können benachbarte Kantenpixel, die den Beschriftungswert eines aktuellen Pixels beeinflussen, unmittelbar links von dem aktuellen Pixel positioniert sein oder können ein „oberer Nachbar” des aktuellen Pixels sein (d. h. die Pixel in der zuvor gescannten Zeile, die Nachbarn oben links, oben und oben rechts sind). Kantenpixel ohne zuvor gescannte benachbarte Kantenpixel werden neue Beschriftungen zugewiesen; die neuen Beschriftungen können generiert werden, indem die letzte zugewiesene Beschriftung um eins inkrementiert wird (oder nach irgendeinem anderen Verfahren zur Erstellung eindeutiger und monoton steigender Beschriftungen). Kantenpixel mit zuvor gescannten Nachbarn sind mit der gleichen Beschriftung beschriftet, die von den zuvor gescannten Nachbarn propagiert wurde. Wenn jedoch mehr als eine Beschriftung zu dem aktuellen Kantenpixel propagiert, kann dem aktuellen Kantenpixel die Beschriftung mit der kleinsten Nummer zugewiesen werden, und alle anderen propagierten höheren Nummern werden als äquivalent zu der minimalen Beschriftung angesehen.
  • Der Abschluss des beispielhaften Beschriftungsmaps 200 beinhaltet das Zuweisen einer Beschriftung von „3” an die Pixel 210 in der neunten Zeile und das Zuweisen von Beschriftungen von „4” und „5” an die Pixel in der elften bis sechzehnten Reihe. Die vorhandene Beschriftung „4” wird Pixeln 212 in der letzten Reihe 214 zugewiesen, weil sie, obwohl sie Nachbarn von Pixeln 216 mit der Beschriftung „5” sind, auch Nachbarn eines Pixels 218 mit der Beschriftung „4” in einer vorherigen Zeile sind (und 4, da kleiner als 5, den Vorrang erhält).
  • Die Anzahl der Beschriftungen, die in dem oben beschriebenen Ansatz zugewiesen werden, kann groß sein, wenn es viele separate Kantenpixelgruppen gibt, wodurch der Speicher, der zum Speichern der Beschriftungen benötigt wird, in einem inakzeptablen Grad ansteigt (z. B. eine Größe, die über derjenigen eines schnellen lokalen Speichers liegt). Die Zuweisung von zwei Bytes für jede Beschriftung führt beispielsweise zu einer erforderlichen Speichergröße, die der doppelten Größe des Eingangsbildes entspricht. In einigen Ausführungsformen können zusätzliche Informationen in die numerischen Beschriftungen kodiert werden, zusätzlich zu ihrer einfachen grundlegenden Reihenfolge, um die Anzahl der Gesamtbeschriftungen zu reduzieren. Die numerischen Beschriftungen können beispielsweise jedem Kantenpixel basierend auf der Position eines benachbarten Kantenpixels zugewiesen werden, von dem ein Beschriftungswert geerbt wurde. Die Beschriftungen „1”, „2”, „3” und „4” können beispielsweise Kantenpixeln zugewiesen werden, wenn die Beschriftungen von Nachbarn „oben links”, „oben”, „oben rechts” beziehungsweise „links” propagiert wurden. Wenn kein benachbartes Kantenpixel vorhanden ist, von dem ein aktuelles Kantenpixel eine Beschriftung erben kann, kann diesem Kantenpixel eine Wertbeschriftung von „5” zugewiesen werden. Wenn das aktuelle Pixel ein Nichtkantenpixel ist, kann eine Beschriftung von „0” zugewiesen werden. In Bezug auf die 1 und 3 erhalten die Schwachkantenpixel 102 und 114 in 1 eine Beschriftung von „5” (als 302 beziehungsweise 304 dargestellt) in dem Beschriftungsmap 300, da verfügbare Beschriftungen aus zuvor gescannten benachbarten Pixeln fehlen. Dem Schwachkantenpixel 116 in 1 wurde eine Beschriftung „4” (dargestellt als 306) in 3 zugewiesen, weil die Beschriftung von dem linken Nachbarn 304 propagiert wurde. Kantenpixel 308, 310 und 312 werden in ähnlicher Weise Beschriftungen von „3”, „2” beziehungsweise „1” zugewiesen, weil die Beschriftungen von den benachbarten Pixeln „oben rechts”, „oben” beziehungsweise „oben links” propagiert werden. Dieser Ansatz stellt unabhängig von der Anzahl der separaten Kantenpixelgruppen eine begrenzte Anzahl an Beschriftungen zur Verfügung, die den Kantenpixeln zugewiesen werden (z. B. von „0” bis „5”), und kann daher die Größe des erforderlichen Speichers um einen Faktor von vier reduzieren.
  • Die zugewiesenen Beschriftungen, wie auch immer sie zugeteilt worden sind, können in einem Tabellenmap gespeichert werden, wie in den 2 und 3 illustriert ist. In anderen Ausführungsformen werden Beschriftungen in einer Datenstruktur 400 zugewiesen und gespeichert, wie in 4A gezeigt ist; Nichtkantenpixel (und ihre entsprechenden Daten) werden nicht gespeichert, wodurch der Gesamtspeicherbedarf reduziert wird. In Bezug auf 4A kann jeder Eintrag in der Datenstruktur (oder dem „Lauf”) drei Parameter enthalten: „x”, „Zahler” und „Beschriftung”, wobei x die x-Koordinate des Starts jeder neuen Beschriftung ist, Zähler die Anzahl der Pixel (oder die Länge des Laufs) ist, die die Beschriftung in einer Zeile propagiert, und Beschriftung die dem Lauf zugewiesene Beschriftung ist, wie anschließend näher erläutert wird. 4A illustriert die Datenstruktur 400, die von einem Eingangskantenmap abgeleitet ist, das in 4B abgebildet ist. Der Lauf von (x, Zähler, Beschriftung) = (1, 2, 2) (dargestellt bei 402) in der ersten Zeile 404 von 4A repräsentiert beispielsweise eine Beschriftung „2”, die zwei fortlaufenden Kantenpixeln (d. h. Zähler = 2) 406 und 408 in 4B zugewiesen worden ist, beginnend mit einer x-Koordinate von „1”; in ähnlicher Weise repräsentiert der Lauf von (6, 2, 3) (dargestellt bei 410) Beschriftung „3”, die zwei fortlaufenden Pixeln (d. h. Zähler = 2) 412 und 414 in 4B zugewiesen worden ist, beginnend bei einer x-Koordinate von „6”. Die x-Koordinate beginnt, wie illustriert, bei 0 in den äußersten linken Kantenpixeln (d. h. Spalte 416) und nimmt inkrementell zu, wenn sich die gescannten Kantenpixel nach rechts 418 bewegen; die x-Koordinate kann jedoch in anderen Richtungen und/oder Reihenfolgen gewählt werden.
  • Beschriftungen in der Datenstruktur oder dem Beschriftungsmap können, wie oben beschrieben, basierend auf dem folgenden repräsentativen Satz von Prinzipien zugewiesen werden. Eine eindeutige Beschriftung, in einer Ausführungsform das Minimum aller zugewiesenen Nummern (z. B. Beschriftung „1”), kann für alle Starkkantenpixel (d. h. Pixel mit dem Wert von „2” in den Eingangskantenmaps 100, 420 in 1 beziehungsweise 4B) reserviert werden, wodurch die Anzahl der Beschriftungen reduziert wird und Speicherbedarf zum separaten Speichern einer Liste von Starkkanten vermieden wird. Die reservierte minimale Anzahl vermeidet, dass Verarbeitungszeit mit dem Parsen der Liste von Beschriftungen verbraucht wird, um zu bestimmen, ob eine bestimmte Beschriftung ein Starkkantenpixel ist. Diese minimale Anzahl gewährleistet zudem, dass die Starkkantenbeschriftung nicht durch andere Beschriftungen in der Datenstruktur 400 ersetzt werden kann, da die Beschriftung mit einer kleineren Nummer in der oben beschriebenen Ausführungsform den Vorrang hat, wenn zwei Beschriftungen zu demselben Kantenpixel propagieren. Beschriftungen, die den Schwachkantenpixeln zugewiesen worden sind, die keine benachbarten Kantenpixel haben, können demnach von „2” beginnen und inkrementell die letzte zugewiesene Beschriftung um eins erhöhen (oder durch irgendein anderes Verfahren zum Erstellen eindeutiger Beschriftungen). Beschriftungen „2”, „3” und „4” werden beispielsweise separaten Gruppen 422, 424 beziehungsweise 426 in den entsprechenden Läufen 402, 410 beziehungsweise 416 zugewiesen. In der zweiten Zeile 428 des Kantenmaps 420 wird eine Beschriftung „2” dem Kantenpixel 430 zugewiesen, wie in Lauf 432 der Datenstruktur 400 gezeigt ist, da es ein benachbartes Kantenpixel 406 hat, dessen zugewiesene Beschriftung „2” ist, wie in Lauf 402 gezeigt ist. Dem Kantenpixel 434 in der dritten Zeile 436 des Kantenmaps 420 wird eine Beschriftung „1” zugewiesen, wie in Lauf 438 der Datenstruktur 400 gezeigt ist, da es ein benachbartes Starkkantenpixel 440 aufweist, dem bereits eine Beschriftung von „1” zugewiesen wurde.
  • Die Anwesenheit benachbarter Kantenpixel in unterschiedlichen rastergescannten Zeilen (und die korrekten angewendeten Beschriftungen) können basierend auf den x-Koordinaten und den Zählernummern ermittelt werden. Lauf „1” mit (x1, Zähler1, Beschriftung1) und Lauf „2” mit (x2, Zähler2, Beschriftung2) in zwei aufeinanderfolgenden Zeilen werden beispielsweise als nicht verbunden (d. h. nicht Teil derselben Gruppe) angesehen, wenn die x-Koordinate von Lauf „1” plus deren Länge kleiner als die x-Koordinate von Lauf „2” (d. h. x1 + Zähler1 < x2) ist, oder wenn die x-Koordinate von Lauf „2” plus deren Länge kleiner als die x-Koordinate von Lauf „1” ist (d. h. x2 + Zähler2 < x1); während die beiden Läufe als verbunden angesehen werden, falls keine dieser beiden Bedingungen erfüllt ist. Separate Läufe in derselben rastergescannten Zeile sind definitionsgemäß nicht verbunden und somit keine Nachbarn. Jeder Lauf in der Datenstruktur 400 kann infolgedessen eine Beschriftung einschließen, die basierend auf dem repräsentativen Satz der folgenden Prinzipien zugewiesen wurde: (i) eine Beschriftung mit der minimalen Nummer ist für die Starkkantenpixel reserviert; (ii) Läufe ohne vorher gescannte benachbarte Läufe, und die keine Starkkantenpixel enthalten, können neue Beschriftungen zugewiesen werden; die neuen Beschriftungen werden beispielsweise generiert, indem die letzte zugewiesene Beschriftung um eins inkrementiert wird; (iii) eine neu generierte Beschriftung wird mit vorhandenen Beschriftungen verglichen, und falls ein Konflikt erkannt wird, wird die neue Beschriftung weiter inkrementiert und gegengeprüft, bis eine konfliktfreie Beschriftung generiert wird (d. h. die Beschriftung auf einen freien Speicherschlot zeigt); (iv) Läufe mit zuvor gescannten Nachbarn, die jedoch keine Starkkantenpixel enthalten, werden mit derselben Beschriftung beschriftet, die aus den zuvor gescannten Nachbarn propagiert ist; und (v) wenn mehr als eine Beschriftung auf den aktuellen Lauf propagiert, wird dem aktuellen Lauf die Beschriftung zugewiesen, die die kleinste Nummer aufweist, und alle anderen propagierten höheren Nummern werden als äquivalent zu der kleinsten Nummer angesehen. Im Speicher werden während der Verarbeitung möglicherweise nur Informationen zu den Läufen in der aktuellen und der vorherigen Zeile gebraucht; die Speicheranforderung ist damit sehr bescheiden.
  • In einem vierten Schritt der erörterten Ausführungsform können zugewiesene Beschriftungen basierend auf dem Verbindungsvermögen der Kantenpixel oder der Läufe zusammengruppiert werden. Wenn zwei Beschriftungen zu demselben Kantenpixel propagieren, können die beiden Beschriftungen als gleich angesehen werden und gehören zu der gleichen Gruppe. Da beispielsweise Beschriftungen „1” und „2” beide zu dem Kantenpixel 206 in 2 propagieren, können die Gruppen der Pixel mit den Beschriftungen „1” und „2” zu einer einzigen Gruppe mit einer Beschriftung von „1” zusammengeführt werden, und Beschriftung „2” ist als untergeordnete Beschriftung der übergeordnete Beschriftung „1” definiert. Die Gruppen von Pixeln mit den Beschriftungen „4” und „5” in 2 können in ähnlicher Weise zu einer einzelnen Gruppe mit einer Beschriftung von „4” zusammengeführt werden; Beschriftung „5” ist daher als untergeordnete Beschriftung zu der übergeordnete Beschriftung „4” definiert. Der äquivalente minimale Wert einer Beschriftung in jeder Gruppe ist als Stammetikett definiert; die zusammengeführten Beschriftungsinformationen und die Stammbeschriftungen können dann in einem Äquivalenzmap 500 von 5 und/oder einem aktualisierten Beschriftungsmap gespeichert werden. Das Äquivalenzmap 500 kann ein Vektorarray sein; die erste Zeile 520 des Arrays kann beispielsweise der Satz von zugewiesenen Beschriftungen sein, und die zweite Zeile 530 kann deren entsprechende Stammbeschriftungen repräsentieren. Es sei darauf hingewiesen, dass der Wert von „0” in dem Äquivalenzmap 500 zeigt, dass die Beschriftung selbst die Stammbeschriftung ist.
  • Kantenpixel oder Läufe, denen Beschriftungen zugewiesen sind, können miteinander verbunden werden, wenn die zugewiesenen Beschriftungen in derselben Gruppe sind und somit als äquivalent angesehen werden, während Kantenpixel oder Läufe möglicherweise nicht-verbunden sind, wenn ihre zugewiesenen Beschriftungen in separate Gruppen fallen. Die Gruppe der zugewiesenen Beschriftung und deren Stammbeschriftung können (z. B.) mittels eines „Union-Find”-Ansatzes identifiziert werden. Der Union-Find-Ansatz kann zwei Operationen durchführen: Find (Suchen) (d. h. Ermitteln, in welcher Gruppe eine bestimmte Beschriftung ist) und Union (Vereinigen) (d. h. Kombinieren/Zusammenführen von zwei fortlaufenden Gruppen zu einer einzelnen Gruppe). Wenn zwei Beschriftungen zu demselben Kantenpixel (oder Lauf) propagieren, kann der Union-Find-Ansatz die Beschriftungen in dem Äquivalenzmap (oder Beschriftungsmap) rekursiv verfolgen, bis ihre Stammbeschriftungen gefunden sind. Wenn die Stammbeschriftungen zu zwei separaten Gruppen gehören, werden die beiden Gruppen zu einer einzelnen Gruppe kombiniert, wodurch ihre Kantenpixel (eine der Stammbeschriftungen, wie die Stammbeschriftung, welche der kleineren Gruppe entspricht, kann als Elternteil zu der anderen Stammbeschriftung definiert werden) kombiniert werden.
  • Die Kontinuität der kombinierten Gruppen kann vertikal, horizontal und/oder diagonal sein. Die Beziehung zwischen der Gruppe/den Gruppen von Beschriftungen kann beispielsweise als Baumstruktur 610, 620 in 6A errichtet werden. Jeder Knoten in der Baumstruktur repräsentiert eine Beschriftung und hält eine Referenz auf seine übergeordnete Beschriftung. Ein Kantenmap, das eine große Anzahl an zugewiesenen Beschriftungen aufweist, beispielsweise 4B, kann mehrere Baumstrukturen einschließen (d. h. einen disjunkte Menge-Wald), wie in 6A abgebildet ist. Wenn eine neue Verbindung zwischen zwei Beschriftungen, die demselben Kantenpixel oder Lauf zugewiesen sind, vorkommt, kann das Äquivalenzmap (oder die Datenstruktur) rekursiv verfolgt werden, bis die Stammbeschriftungen der Bäume, zu denen die beiden Beschriftungen gehören, gefunden wurden. Wenn die beiden Beschriftungen zu unterschiedlichen Bäumen gehören, wie zuvor beschrieben wurde, wird die Stammbeschriftung mit einer niedrigeren Nummer als übergeordnete Beschriftung der anderen festgelegt. Unter Bezugnahme auf 6B ist Baumstruktur 630 beispielsweise die Vereinigungsmenge der zusammengeführten Gruppen 610 und 620 in 6A, und Beschriftung „1” wird als die Stammbeschriftung von Beschriftung „6” angesehen. Das Äquivalenzmap 640 in 6A kann dann aktualisiert werden, um das Map 650 in 6B zu werden.
  • Das Verfolgen der Stammbeschriftung jeder zugewiesenen Beschriftung und das Ermitteln der zugehörigen Gruppe kann jedoch einen großen Speicher benötigen, wenn die Anzahl der zugewiesenen Beschriftungen und/oder die Tiefe der Bäume zunimmt. Das Verflachen des Gesamtbaums (d. h. Aktualisieren der zugewiesenen Beschriftungen mit ihren Stammbeschriftungen) kann zudem zeitraubend sein, wenn die Nummer der Beschriftung groß ist. Die Art des Satzes von Beschriftungen, der in dem Beschriftungsmap (oder der Datenstruktur) propagiert, kann ferner von dem erfassten Eingangsmap abhängen und ist daher möglicherweise nicht prognostizierbar. Die Verwendung eines einzelnen disjunkte Menge-Walds als Datenstruktur (wie z. B. in 6A und 6B gezeigt ist) kann zu statistischem Zugriff auf das Beschriftungsmap (oder die Datenstruktur) führen, wodurch die Verarbeitungszeit steigt – insbesondere wenn das Map oder die Datenstruktur zu groß ist, um in einen schnellen lokalen Speicher zu passen. Die Verbindungsfähigkeit von Kantenpixeln wird in einer Ausführungsform in dem Beschriftungsmap (wie dem in 2 gezeigten Map) und/oder den Läufen in der Datenstruktur (wie der Datenstruktur von 4A) verwendet, um die aktiven Teile (d. h. die propagierenden Beschriftungen) der Baumstruktur zu ermitteln. Die aktiven Teile des Baums werden dann nach der Verarbeitung jeder Zeile verflacht. Weil dieser Ansatz nur die aktiven Beschriftungen (d. h. propagierten Beschriftungen) aktualisiert und die Verflachungszeit daher minimal ist, kann die gesamte Verarbeitungszeit eines erfassten Bildes signifikant reduziert werden. Beschriftungen, die Kantenpixeln (oder Läufen) in der letzten Zeile des Beschriftungsmaps (oder der Datenstruktur) zugewiesen sind, können durch ihre Stammbeschriftungen ersetzt werden, so dass nur die Stammbeschriftungen durch das Beschriftungsmap (oder die Datenstruktur) propagieren; dies verringert weiter die verarbeitete Anzahl an Beschriftungen und reduziert dadurch die Verarbeitungszeit. In Bezug auf 7A können, da in der Datenstruktur 400 die Beschriftungen „2”, „3”, „4”, „5” und „6” alle mit der Beschriftung „1” verbunden sind, sie alle mit ihrer Übergeordnete Beschriftung (oder Stammbeschriftung) „1” verflacht werden, wie in der Baumstruktur 710 und dem Äquivalenzmap 720 von 7A gezeigt ist. In der Baumstruktur 730 sind die übergeordneten Beschriftungen der Beschriftungen „8”, „9” und „10” in ähnlicher Weise die Beschriftungen „7”, „8” und „8”. Nach der Verarbeitung der letzten Zeile des Kantenmaps können die beiden disjunkten Bäume 710 und 730 zu einer Gruppe zusammengeführt worden sein; Beschriftung „7” kann dann wegen seiner höheren Nummer als untergeordnete Beschriftung der übergeordnete Beschriftung (oder Stammbeschriftung) „1” festgelegt werden. Die zusammengeführte Baumstruktur ist in 740 von 7B illustriert, und das Äquivalenzmap 750 wird entsprechend aktualisiert.
  • Die disjunkte Menge-Walddatenstruktur, die in konventionellen Kantenverfolgungstechniken verwendet wird, kann, wie oben beschrieben, zu statistischen Zugriffen auf das Beschriftungsmap führen und/oder einen großen Speicher benötigen. Um dieses Problem zu lösen, wird in einer Ausführungsform der aktuellen Erfindung eine Hybriddatenstruktur verwendet, in der die propagierten Beschriftungen (d. h. aktiven Beschriftungen) von den nicht-propagierten Beschriftungen (d. h. inaktiven Beschriftungen) in dem Beschriftungsmap oder der Datenstruktur getrennt sind. Weil nur Stammbeschriftungen propagieren, wird die Union-Find-Operation nur auf die aktiven Stammbeschriftungen angewendet, die in jeder Zeile vorhanden sind, die aktuell verarbeitet wird. Die aktiven Beschriftungen können in einem aktiven Entsprechungsmap gespeichert werden, in dem der disjunkte Menge-Datenwald verwendet wird; wohingegen die inaktiven Beschriftungen in einem inaktiven Entsprechungsmap gespeichert werden können, in dem entweder ein disjunkte Menge-Datenwald oder ein Array aus (Beschriftung, übergeordnete Beschriftung) verwendet wird (wenn z. B. in der disjunkte Menge-Datenstruktur kein freier Slot verfügbar ist, wie anschließend näher erläutert wird). Da das inaktive Entsprechungsmap allgemein über begrenzten Speicherraum verfügt, kann ein einzelner Speicherslot durch mehrere Beschriftungen gemeinsam genutzt werden. Eine neu generierte Beschriftung wird in einer Ausführungsform in dem inaktiven Entsprechungsmap mit vorhandenen Beschriftung verglichen, und falls ein Konflikt erkannt wird, wird die neue Beschriftung weiter inkrementiert und gegengeprüft, bis eine konfliktfreie Beschriftung generiert wird. Der Satz der Beschriftungen kann somit monoton erhöht werden, kann jedoch Lücken in den für die Beschriftung verwendeten Ganzzahlen einschließen.
  • Die Gesamtanzahl der Beschriftungen kann jedoch größer als die Anzahl der verfügbaren Speicherslots in einem aktiven Entsprechungsmap sein; zum Mappen der aktiven Beschriftungen auf die verfügbaren Slots kann eine „viele-zu-eins”-Funktion verwendet werden. Die Slotnummer für jede Beschriftung N wird in einer Ausführungsform als N × mod(L) berechnet, wobei mod der Modulooperator ist und L die Anzahl der verfügbaren Slots ist. In einer anderen Ausführungsform wird die viele-zu-eins-Funktion unter Verwendung der niedrigstwertigsten Bits (LSBs) der Beschriftungen durchgeführt, und die Größe des disjunkte Menge-Waldes wird als Potenzfunktion wie pow(2; B) gewählt, wobei B definiert ist als Aufrundungsfunktion ceil(log2(M/2)) (wobei M/2 die Maximalanzahl der aktiven Beschriftungen in jeder Zeile ist und M die Breite des Bildes ist). Jede Beschriftung kann dann einer Slotnummer „B LSBs” der Beschriftung in dem Entsprechungsmap zugewiesen und darüber darauf zugegriffen werden. Eine neue Beschriftung kann generiert werden, indem die Nummer des aktuellen Beschriftungszählers inkrementiert wird; Nummern, die in Konflikt mit den vorhandenen aktiven Beschriftungen stehen, denen bereits Slotnummern von „B LSBs” der Beschriftungen zugewiesen wurden, sind ausgeschlossen. Indem zuvor zugewiesene aktive Beschriftungen ausgeschlossen werden oder über diese hinaus inkrementiert wird, werden keine zwei aktiven Beschriftungen demselben Slot in dem aktiven Entsprechungsmap zugewiesen. In verschiedenen Ausführungsformen werden, wenn in der disjunkten Menge-Datenstruktur kein freier Slot verfügbar ist, alle inaktiven Beschriftungen (z. B.) als (Beschriftung, übergeordnete Beschriftung)-Array gespeichert und beispielsweise in externen Speicher verschoben, wodurch im internen/lokalen Speicher Freiraum freigegeben wird. Stammbeschriftungen, die nicht propagieren, können darüber hinaus in eine alternative Datenstruktur verschoben werden und mit einem nicht-null-Wert markiert werden, um anzuzeigen, dass es sich um einen freien Slot handelt.
  • Im fünften Schritt der erörterten Ausführungsform kann ein zweiter Durchlauf angewendet werden, um die verfolgten Kanten zu ermitteln, beispielsweise können Gruppen von Beschriftungen, die mit Starkkantenpixeln assoziiert sind, als verfolgte Kanten identifiziert werden. In Bezug auf das aktualisierte Beschriftungsmap 800 in 8A und das Kantenmap 100 in 1 werden identifizierte Gruppen von Beschriftungen mit den Positionen der Starkkantenpixel (z. B. Starkkantenpixel 110) korreliert. Gruppen von Beschriftungen in dem Beschriftungsmap 800, die mit Starkkantenpixeln in dem Kantenmap 100 zusammenfallen oder verbunden sind, werden in dem aktualisierten Kantenmap 810 von 8B mit „FF” markiert, und Gruppen von Beschriftungen, die nicht mit Starkkantenpixeln zusammenfallen oder verbunden sind, werden mit „0” markiert. Die Gruppen von Pixeln, die in dem aktualisierten Entsprechungsmap 810 mit „3” beschriftet sind, werden jedenfalls nicht mit „FF” als verfolgte Kanten markiert, da sie keine entsprechenden Starkkantenpixel in dem Kantenmap 100 haben. Wenn Datenstruktur 400 in 4A verwendet wird, können Pixel in den Läufen, die Starkkantenpixel enthalten (d. h. Beschriftung „1”) als verfolgte Kanten identifiziert werden und in dem aktualisierten Kantenmap 820 von 8C mit „FF” markiert werden. Pixel in den Läufen, in denen neue Beschriftungen generiert werden, werden mit „A” markiert, und Pixel in dem Rest der Läufe in der Datenstruktur 400 werden mit „B” markiert, wie in Map 820 von 8C gezeigt ist. Möglicherweise ist ein Neumarkierungsprozess erforderlich, um zu ermitteln, falls mit „A” und/oder „B” markierte Läufe Teile der Kantenkurven sind. Für einen in Map 820 als „A” markierten Lauf kann beispielsweise eine neue Beschriftung generiert werden, indem der aktuelle Beschriftungszähler inkrementiert wird, und die übergeordnete Beschriftung der neu generierten Beschriftung kann dann in dem Äquivalenzmap gesucht werden. Wenn dessen übergeordnete Beschriftung „1” ist, zeigt dies, dass ein solcher Lauf mit einem Starkkantenpixel verbunden ist und als verfolgte Kante identifiziert werden kann, daher wird mit „FF” markiert; während Läufe, deren Stammbeschriftungen nicht „1” sind, mit „0” markiert werden können, wie in dem aktualisierten Kantenmap 830 von 8D gezeigt ist. Mit „B” markierte Läufe können basierend auf der Markierung von jeglichen ihrer benachbarten Pixel in der zuvor gescannten Zeile neu markiert werden, da sie alle verbunden sind. Es sei darauf hingewiesen, dass der zweite Durchlauf in ähnlicher Weise auf das inaktive Entsprechungsmap angewendet werden kann, wobei inaktive Beschriftungen als Array von (Beschriftung, übergeordnete Beschriftung) oder als disjunkte Menge-Daten gespeichert werden, in denen Lücken in dem inaktiven Entsprechungsmap entfernt sind. In einer Ausführungsform werden Beschriftungen in dem inaktiven Entsprechungsmap generiert, indem der Beschriftungszähler inkrementiert wird, ohne auf in Konflikt stehende Speicherslots zu prüfen; dies reduziert die Verarbeitungszeit erheblich. Schließlich werden Läufe, die in dem aktualisierten Kantenmap 810, 830 mit „FF” markiert sind, als verfolgte Kanten angesehen.
  • Ein repräsentatives Verfahren 900 zur Kantenverfolgung gemäß Ausführungsformen der vorliegenden Erfindung ist in 9 gezeigt. In einem ersten Schritt 910 wird ein Kantenmap erhalten, das auf einem Quellbild basiert; das Kantenmap kann beispielsweise unter Verwendung von Hysterese-Schwellenwertbildung mit zwei Schwellenwerten generiert sein. In einem zweiten Schritt 920 wird Rasterscannen an jeder Zeile des Eingangskantenmaps durchgeführt. In einem dritten Schritt 930 wird jedem Kantenpixel in der Rasterzeile basierend auf der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels eine Beschriftung zugewiesen. Die Beschriftungen werden dann in einem Tabellenmap oder einer Datenstruktur gespeichert; fortlaufende Beschriftungen (d. h. Pixel, die verbunden sind), werden dann (in einem vierten Schritt 940) zu Sätzen gruppiert. Die Stammbeschriftung jeder Beschriftung wird ermittelt, und jede Gruppe wird (in einem fünften Schritt 950) basierend auf dem Wert der Stammbeschriftung als Kantenpixel oder Nichtkantenpixel identifiziert.
  • Ein System 1000 zum Kantenverfolgen gemäß Ausführungsformen der vorliegenden Erfindung ist in 10 gezeigt. Ein mit einer Bildvorrichtung 1010, wie einer Digitalkamera, erfasstes Bild wird in externem Speicher 1020 gespeichert. Der externe Speicher 1020, wie Schreib-Lese-Speicher (RAM) oder eine Festplatte, kann sich entfernt von dem Prozessor 1030 befinden und ist über eine Verknüpfung mit niedriger Geschwindigkeit 1035 verbunden. Der externe Speicher 1020, der eine Größenordnung größer als der lokale Speicher 1040 sein kann, erfordert viel mehr Taktzyklen (z. B. 100 Zyklen) als der lokale Speicher 1040 für die Speicherung und das Abrufen von Daten durch den Prozessor 1030 (z. B. 1 Zyklus für lokalen Cachezugriff). Es sei darauf hingewiesen, dass der lokale Speicher 1040 hier zur Bezeichnung des schnellen Speichers verwendet wird, dies soll jedoch nicht einschränkend gemeint sein und kann für jede Art von Registerdatei, Cache oder jeden anderen Speichertyp gelten, der in der Hierarchie dem Prozessor 1030 näher ist als der große langsame externe Speicher 1020. Informationen zu einem Abschnitt des Bildes, das in einer Rasterreihenfolge gescannt ist, wird im lokalen Speicher 1040 gespeichert und durch den Prozessor 1030 geholt, um ein Kantenmap zu generieren. Der Prozessor 1030 weist jedem Kantenpixel des Bildes Beschriftungen zu und gruppiert die Beschriftungen davon. Der Prozessor 1030, der Befehle und Anweisungen ausführt, kann ein Universalcomputer sein, kann jedoch jegliche von einer weiten Vielfalt anderer Technologien nutzen, einschließlich eines Computers für Spezialzwecke, eines Mikrocomputers, Minicomputers, Mainframecomputers, programmierten Mikroprozessors, Mikrocontrollers, eines peripheren integrierten Schaltkreiselements, eines CSIC (kundenspezifischen integrierten Schaltkreises), ASIC (anwendungsspezifischen integrierten Schaltkreises), eines Logikschaltkreises, eines digitalen Signalprozessors, einer programmierbaren Logikvorrichtung wie eines FPGA (feldprogrammierbares Gate Array), PLD (programmierbare Logikvorrichtung), PLA (programmierbares Logik-Array), RFID-Prozessor, Smartchip oder jeglicher anderen Vorrichtung oder Anordnung von Vorrichtungen, die in der Lage ist, die Schritte der erfindungsgemäßen Verfahren zu implementieren. Gruppen von Beschriftungen werden dann als Kantenpixel oder Nichtkantenpixel identifiziert; die Ergebnisse werden in dem externen Speicher 1020, dem lokalen Speicher 1040 gespeichert und/oder an eine Vorrichtung 1050 ausgegeben.
  • Die hier verwendeten Begriffe und Ausdrücke werden als beschreibende, nicht als einschränkende Begriffe und Ausdrücke verwendet, und es ist bei der Verwendung dieser Begriffe und Ausdrücke nicht vorgesehen, irgendwelche Äquivalente der gezeigten und beschriebenen Merkmale oder Teile davon auszuschließen. Indem bestimmte Ausführungsformen der Erfindung beschrieben werden, wird es zudem Fachleuten klar sein, dass andere Ausführungsformen, die die hier offenbarten Konzepte integrieren, verwendet werden können, ohne von der Idee und dem Umfang der Erfindung abzuweichen. Die beschriebenen Ausführungsformen werden demnach in jeglicher Hinsicht nur als illustrierend und nicht als einschränkend angesehen.

Claims (19)

  1. Verfahren zum Verfolgen von Kanten eines Bildes unter Verwendung von Hysterese-Schwellenwertbildung, wobei das Verfahren umfasst: (a) Erhalten eines Kantenmaps des Bildes; (b) Scannen einer Zeile des Kantenmaps; (c) Zuweisen einer Beschriftung zu jedem Kantenpixel in der Zeile basierend mindestens teilweise auf der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels; (d) Wiederholen der Schritte (b) und (c) für jede Zeile in dem Kantenmap; (e) Gruppieren fortlaufender Beschriftungen; und (f) Identifizieren von Gruppen, die zu Starkkantenpixeln gehören.
  2. Verfahren nach Anspruch 1, wobei ein benachbartes Kantenpixel irgendeines von einem linken Kantenpixel, einem oberen linken Kantenpixel, einem oberen Kantenpixel oder einem oberen rechten Kantenpixel ist.
  3. Verfahren nach Anspruch 1, wobei die Beschriftungen in einer Tabelle oder Datenstruktur gespeichert werden.
  4. Verfahren nach Anspruch 3, wobei die Datenstruktur einen Eintrag umfasst, der einen fortlaufenden Lauf von Kantenpixeln repräsentiert.
  5. Verfahren nach Anspruch 4, wobei der Eintrag eine x-Koordinate, eine Zählernummer und die Beschriftung umfasst.
  6. Verfahren nach Anspruch 5, ferner umfassend Zuweisen der Beschriftung in dem Eintrag basierend mindestens teilweise auf der Anwesenheit oder Abwesenheit eines zweiten Laufs von Kantenpixeln, die dem fortlaufenden Lauf der Kantenpixel benachbart sind.
  7. Verfahren nach Anspruch 4, wobei die Datenstruktur eine Hybriddatenstruktur umfasst.
  8. Verfahren nach Anspruch 7, wobei die Hybriddatenstruktur einen ersten disjunkte Menge-Datenwald, der propagierte Beschriftungen speichert, und einen zweiten disjunkte Menge-Datenwald umfasst, der nicht-propagierte Beschriftungen speichert.
  9. Verfahren nach Anspruch 7, wobei die Hybriddatenstruktur einen disjunkte Menge-Datenwald, der propagierte Beschriftungen speichert, und ein Array umfasst, das nicht-propagierte Beschriftungen speichert.
  10. Verfahren nach Anspruch 8 oder 9, wobei die propagierten Beschriftungen mittels eines Modulooperators Slotnummern eines lokalen Speichers zugewiesen werden.
  11. Verfahren nach Anspruch 8 oder 9, wobei die propagierten Beschriftungen mittels der niedrigstwertigen Bits der propagierten Beschriftungen, die mit einer Breite des Bildes assoziiert sind, Slotnummern eines lokalen Speicherslots zugewiesen werden.
  12. Verfahren nach Anspruch 8 oder 9, ferner umfassend das Gruppieren der propagierten Beschriftungen basierend mindestens teilweise auf Verbindungsfähigkeit zwischen ihnen.
  13. Verfahren nach Anspruch 1, wobei die Beschriftung mit einem minimalen Wert unter allen zugewiesenen Nummern für die Starkkantenpixel reserviert ist.
  14. Verfahren nach Anspruch 1, ferner umfassend das Zuweisen einer Beschriftung zu jedem Kantenpixel in der Rasterzeile basierend mindestens teilweise auf einer Richtung, aus der die Beschriftung propagiert.
  15. System zum Verfolgen von Kanten eines Bildes unter Verwendung von Hysterese-Schwellenwertbildung, wobei das System umfasst: einen lokalen Speicher und einen Prozessor, der über eine Hochgeschwindigkeitsschnittstelle mit dem lokalen Speicher verbunden ist und über eine Schnittstelle mit niedriger Geschwindigkeit mit dem Hauptspeicher verbunden ist, wobei der Prozessor für Folgendes konfiguriert ist: (i) Laden einer Zeile eines Kantenmaps, die in einem Hauptspeicher gespeichert ist, in den lokalen Speicher; (ii) Zuweisen einer Beschriftung zu jedem Pixel in der Zeile basierend mindestens teilweise auf der Anwesenheit oder Abwesenheit eines benachbarten Kantenpixels; (iii) Wiederholen der Schritte (i) und (ii) für jede Zeile in dem Kantenmap; (iv) Gruppieren fortlaufender Beschriftungen; und (v) Identifizieren von Gruppen, die zu Starkkantenpixeln gehören.
  16. System nach Anspruch 15, wobei Beschriftungen, die in dem Kantenmap propagieren, in dem lokalen Speicher gespeichert werden.
  17. System nach Anspruch 15, wobei Beschriftungen, die in dem Kantenmap nicht propagieren, in dem lokalen Speicher oder dem Hauptspeicher gespeichert werden.
  18. System nach Anspruch 15, wobei der lokale Speicher zu klein ist, um das gesamte Kantenmap zu speichern.
  19. System nach Anspruch 15, wobei der Prozessor ein digitaler Signalprozessor ist.
DE112012004809.1T 2011-11-18 2012-11-15 Kantenverfolgung mit Hysterese-Schwellenwertbildung Active DE112012004809B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161561495P 2011-11-18 2011-11-18
US61/561,495 2011-11-18
US13/426,844 2012-03-22
US13/426,844 US8965132B2 (en) 2011-11-18 2012-03-22 Edge tracing with hysteresis thresholding
PCT/US2012/065160 WO2013074721A1 (en) 2011-11-18 2012-11-15 Edge tracing with hysteresis thresholding

Publications (3)

Publication Number Publication Date
DE112012004809T5 true DE112012004809T5 (de) 2014-08-07
DE112012004809T8 DE112012004809T8 (de) 2014-09-18
DE112012004809B4 DE112012004809B4 (de) 2021-09-16

Family

ID=48427030

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004809.1T Active DE112012004809B4 (de) 2011-11-18 2012-11-15 Kantenverfolgung mit Hysterese-Schwellenwertbildung

Country Status (4)

Country Link
US (1) US8965132B2 (de)
KR (1) KR101655000B1 (de)
DE (1) DE112012004809B4 (de)
WO (1) WO2013074721A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112419357A (zh) * 2020-11-18 2021-02-26 方正株式(武汉)科技开发有限公司 一种生成图像实体轮廓一笔画路径的方法及系统

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011117952A1 (ja) * 2010-03-24 2011-09-29 株式会社島津製作所 測定システム
US8965132B2 (en) * 2011-11-18 2015-02-24 Analog Devices Technology Edge tracing with hysteresis thresholding
AU2012258408A1 (en) * 2012-11-27 2014-06-12 Canon Kabushiki Kaisha Path tracing method
US9292763B2 (en) * 2013-07-25 2016-03-22 Analog Devices Global System, method, and medium for image object and contour feature extraction
US9934577B2 (en) * 2014-01-17 2018-04-03 Microsoft Technology Licensing, Llc Digital image edge detection
US9686449B1 (en) * 2016-03-18 2017-06-20 Interra Systems, Inc. Methods and systems for detection of blur artifact in digital video due to high quantization
EP3293672A1 (de) * 2016-09-07 2018-03-14 Malvern Panalytical Limited Partikelgrenzenidentifizierung
CN109035276B (zh) * 2018-06-26 2022-03-18 北京中科慧眼科技有限公司 一种图像边缘提取方法、装置及自动驾驶系统
CN110610163B (zh) * 2019-09-18 2022-05-03 山东浪潮科学研究院有限公司 一种自然场景下基于椭圆拟合的表格提取方法及系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590520A (en) 1983-11-28 1986-05-20 Ball Corporation Method and apparatus for detecting and filling-in dead spots of video signals from an image sensor
US4910786A (en) * 1985-09-30 1990-03-20 Eichel Paul H Method of detecting intensity edge paths
US5157743A (en) 1987-10-28 1992-10-20 Canon Kabushiki Kaisha Image information coding apparatus
US5245677A (en) 1991-08-08 1993-09-14 Hughes Aircraft Company Directional running average segmentation
US5420917A (en) * 1993-12-09 1995-05-30 At&T Corp. Automated recovery of telecommunication network elements
US5640468A (en) 1994-04-28 1997-06-17 Hsu; Shin-Yi Method for identifying objects and features in an image
US5715331A (en) 1994-06-21 1998-02-03 Hollinger; Steven J. System for generation of a composite raster-vector image
DE69530566T2 (de) 1995-01-13 2004-03-25 Stmicroelectronics S.R.L., Agrate Brianza Hough-Transform mit Fuzzy-Gradient und Wahl
FR2731819B1 (fr) * 1995-03-17 1997-04-11 Alsthom Cge Alcatel Methode d'extraction de contours utilisant une analyse multi-fractale
US5767978A (en) 1997-01-21 1998-06-16 Xerox Corporation Image segmentation system
AUPP128498A0 (en) 1998-01-12 1998-02-05 Canon Kabushiki Kaisha A method for smoothing jagged edges in digital images
US6798910B1 (en) 2001-05-17 2004-09-28 The United States Of America As Represented By The Secretary Of The Air Force Self-optimizing edge detection in blurred, high-noise images
JP4407801B2 (ja) 2003-12-16 2010-02-03 セイコーエプソン株式会社 エッジ生成装置、エッジ生成方法およびエッジ生成プログラム
US7450268B2 (en) 2004-07-02 2008-11-11 Hewlett-Packard Development Company, L.P. Image reproduction
EP1914667A3 (de) * 2006-03-24 2008-05-07 MVTec Software GmbH System und Verfahren zur automatischen Parameterbestimmung bei Maschinensicht
US7680303B2 (en) 2006-09-11 2010-03-16 Mitsubishi Electric Research Laboratories, Inc. Image registration using joint spatial gradient maximization
JP2008085695A (ja) 2006-09-28 2008-04-10 Fujitsu Ltd 電子透かし埋め込み装置および検出装置
EP2358269B1 (de) * 2007-03-08 2019-04-10 Sync-RX, Ltd. Bildverarbeitung und instrumentbetätigung für medizinische verfahren
US20110081087A1 (en) 2009-10-02 2011-04-07 Moore Darnell J Fast Hysteresis Thresholding in Canny Edge Detection
US8565531B2 (en) 2009-10-09 2013-10-22 Xerox Corporation Edge detection for mixed raster content (MRC) images for improved compression and image quality
US8538163B2 (en) * 2009-10-13 2013-09-17 Sony Corporation Method and system for detecting edges within an image
US8965132B2 (en) * 2011-11-18 2015-02-24 Analog Devices Technology Edge tracing with hysteresis thresholding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112419357A (zh) * 2020-11-18 2021-02-26 方正株式(武汉)科技开发有限公司 一种生成图像实体轮廓一笔画路径的方法及系统
CN112419357B (zh) * 2020-11-18 2023-06-30 方正株式(武汉)科技开发有限公司 一种生成图像实体轮廓一笔画路径的方法及系统

Also Published As

Publication number Publication date
KR20140094541A (ko) 2014-07-30
KR101655000B1 (ko) 2016-09-06
US8965132B2 (en) 2015-02-24
WO2013074721A1 (en) 2013-05-23
DE112012004809B4 (de) 2021-09-16
DE112012004809T8 (de) 2014-09-18
US20130129225A1 (en) 2013-05-23

Similar Documents

Publication Publication Date Title
DE112012004809B4 (de) Kantenverfolgung mit Hysterese-Schwellenwertbildung
DE4311172C2 (de) Verfahren und Einrichtung zum Identifizieren eines Schrägenwinkels eines Vorlagenbildes
DE102006005044B4 (de) Verfahren und System zur Bestimmung eines Datenmodells zur Überlagerung mit einem realen Objekt in einem Verfahren zur Objektverfolgung
DE2909153C2 (de) Einrichtung zur digitalen Analyse von Bild- oder Zeichenmustern
EP1797533B1 (de) Verfahren und vorrichtung zur segmentierung einer digitalen abbildung von zellen
DE112013002731T5 (de) Formerkennung unter Nutzung von Kettenkode-Statuszuständen
DE102005010169A1 (de) Aktives Polyeder für 3D-Bildsegmentierung
DE112019000972T5 (de) Verfahren und Systeme für vereinfachte grafische Abbildungen von bipartiten Graphen
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
DE112020005732T5 (de) Erzeugen von trainingsdaten zur objekterkennung
DE102006044595B4 (de) Bildverarbeitungsvorrichtung zur Segmentierung anhand von Konturpunkten
DE112012004847T5 (de) Dynamisches Liniendetektionssystem für Prozessoren mit begrenztem internen Speicher
DE112021000027T5 (de) Trainingsdatenerzeugungsverfahren, Trainingsdatenerzeugungsvorrichtung und Programm
EP1709587B1 (de) Bildverarbeitungssystem
DE102008046505B4 (de) Verfahren zur Bildverarbeitung von Stereobildern
DE102021128523A1 (de) Hierarchische bildzerlegung zur defekterkennung
DE112021004729T5 (de) Dreifarben-bitmap-array zur garbage-collection
DE102020129164A1 (de) Verfahren und vorrichtung zur unterscheidung von verschiedenen konfigurationszuständen eines objekts auf der grundlage einer bildlichen darstellung des objekts
EP2642749B1 (de) Vorrichtung und Verfahren zur Optimierung der Bestimmung von Aufnahmebereichen
DE112020004774T5 (de) Detektieren von szenenübergängen in videoaufnahmen
DE102020209958A1 (de) Vorrichtung zum Erlernen eines Bildes einer Fahrzeugkamera und Verfahren dafür
EP3876193A1 (de) Bildverarbeitungsverfahren zum anzeigen von zellen mehrerer gesamtbilder
DE102018121317A1 (de) Verfahren und Vorrichtung zur Schätzung einer durch eine Freiraumgeste vermittelten Richtungsinformation zur Bestimmung einer Benutzereingabe an einer Mensch-Maschine-Schnittstelle
DE102019127622A1 (de) Abwehrgenerator, Verfahren zur Verhinderung eines Angriffs auf eine KI-Einheit und computerlesbares-Speichermedium
DE102014109525A1 (de) System, Verfahren und Medium zur Bildobjekt- und Konturmerkmalsextraktion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: ANALOG DEVICES, INC., WILMINGTON, US

Free format text: FORMER OWNER: ANALOG DEVICES INC., NORWOOD, MASS., US

R082 Change of representative

Representative=s name: WITTE, WELLER & PARTNER PATENTANWAELTE MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final