DE102020100684A1 - Kennzeichnung von graphischen bezugsmarkierern - Google Patents

Kennzeichnung von graphischen bezugsmarkierern Download PDF

Info

Publication number
DE102020100684A1
DE102020100684A1 DE102020100684.5A DE102020100684A DE102020100684A1 DE 102020100684 A1 DE102020100684 A1 DE 102020100684A1 DE 102020100684 A DE102020100684 A DE 102020100684A DE 102020100684 A1 DE102020100684 A1 DE 102020100684A1
Authority
DE
Germany
Prior art keywords
image
pixels
fiducial
candidate
edges
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
DE102020100684.5A
Other languages
English (en)
Other versions
DE102020100684B4 (de
Inventor
Vukasin MILOVANOVIC
Joy D'Souza
Rochelle Pereira
Jianyuan Min
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102020100684A1 publication Critical patent/DE102020100684A1/de
Application granted granted Critical
Publication of DE102020100684B4 publication Critical patent/DE102020100684B4/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
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • 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/10024Color image
    • 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/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection
    • 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/30204Marker

Abstract

In verschiedenen Beispielen können Bilddaten empfangen werden, die ein Bild darstellen. Eine Eckenerfassung kann angewandt werden, um Pixel zu kennzeichnen, die Kandidateneckpunkte sein können. Die Bilddaten können von einem höherdimensionalen Farbraum in ein konvertiertes Bild in einem niedrigerdimensionalen Farbraum konvertiert werden und Begrenzungen können innerhalb des konvertierten Bildes gekennzeichnet werden. Ein Satz der Kandidateneckpunkte kann bestimmt werden, die sich innerhalb eines Schwellenabstands zu einer der Begrenzungen befinden, und der Satz der Kandidateneckpunkte kann analysiert werden, um eine Untermenge der Kandidateneckpunkte zu bestimmen, die für Ecken von Polygonen repräsentativ sind. Unter Verwendung der Untermenge der Kandidateneckpunkte können ein oder mehrere Polygone gekennzeichnet und ein Filter kann auf die Polygone angewandt werden, um ein Polygon zu kennzeichnen, als einer Bezugsmarkiererbegrenzung eines Bezugsmarkierer zu entsprechen zu kennzeichnen.

Description

  • HINTERGRUND
  • Bezugsmarkierer, wie beispielsweise AprilTags, ARTags, ARToolkit, ARToolkitPlus, RUNE-Tags, reacTIVision, QR-Codes und dergleichen, sind in virtueller Realität, erweiterter Realität, Robotik und anderen Technologiebereichen zur Lokalisierung von Objekten (z.B., Roboter-zu-Roboter Lokalisierung), Kennzeichnung von Objekten, Erfassung der Positionen von Objekten, Erfassung der Orientierungen von Objekten, Prüfung von Virtual-Reality-Headsets, Verfolgung von Objekten in einer Umgebung, Simultaneous-Localization-and-Mapping-(SLAM)-Algorithmusbewertung, Kamerakalibrierungen und anderen Verwendungen verwendet worden. Typischerweise werden Bezugsmarkierer als Muster von graphischen Daten in einer vorbestimmten Anordnung innerhalb eines Polygons eingesetzt, wobei jedes Muster eindeutig in einen entsprechenden Datensatz (Benutzerkonto, Einheit, Produkt, Nachricht usw.) abgebildet wird. Um Bezugsmarkierer für diese Zwecke zu verwenden, werden spezialisierte Algorithmen verwendet, um die Bezugsmarkierer in einer Szene oder Umgebung zu erfassen und zu kennzeichnen.
  • Einige herkömmliche Vorgehensweisen, um Bezugsmarkierer zu erfassen, haben sich auf Graph-basierte Bildsegmentierungsalgorithmen verlassen, um Linien innerhalb eines Eingangsbildes zu kennzeichnen und sie in Polygone zu kombinieren. Diese Vorgehensweisen führten zu einer überwältigen Anzahl von gekennzeichneten Polygonen (z.B., Vierecken), um dadurch eine Belastung an Rechenressourcen beim Filtern des Polygons zu erzeugen, um tatsächliche Bezugsmarkierer in dem Bild zu kennzeichnen. Ferner verwenden einige herkömmliche Vorgehensweisen eine Segmentierung, um Begrenzungen in einem Bild zu kennzeichnen und dann jedes der Pixel entlang der Begrenzungen zu analysieren, um Ecken von Polygonen zu bestimmen. Das Analysieren jedes der Pixel entlang der Begrenzungen ist jedoch ineffizient und führt zu signifikanten Rechen-, Zeit- und Energiekosten.
  • Wie oben beschrieben, führt jedes dieser herkömmlichen Verfahren zu einer signifikanten Belastung von Rechen- und Energieressourcen. Dies wird durch ihre Abhängigkeit von Zentralverarbeitungseinheiten (CPUs) verschlimmert, um Bezugsmarkierer zu kennzeichnen. Beispielsweise können aufgrund der Verarbeitungsbeschränkungen von CPUs, diese herkömmlichen Vorgehensweisen in der Lage sein, bei einer Bildrate von dreißig Bildern pro Sekunde (fps; frames per second) mit Eingangsbildern mit einer Auflösung von 640 x 480 (z.B., 480p) zu arbeiten, wobei sie jedoch lediglich in der Lage sein können, beispielsweise bei einer Bildrate von zehn fps für Eingangsbilder mit einer Auflösung von 1920 x 1080 (z.B., 1080p) zu arbeiten. Derartige niedrige Bildraten können die Funktionalität nicht unterstützen, die für viele Verwendungen von Bezugsmarkierern erforderlich ist, insbesondere weil die Auflösung von Eingangsbildern weiter zunimmt (z.B., auf 3840 x 2160 (z.B., 4k), 7680 x 4320 (z.B., 8k) oder größer).
  • ZUSAMMENFASSUNG
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich auf graphische Bezugsmarkierer-Kennzeichnungen. Genauer gesagt werden Systeme und Verfahren offenbart, die Computer-Vision-Verarbeitung verwenden, die mindestens teilweise auf einer Graphikverarbeitungseinheit (GPU) in einigen Beispielen implementiert ist, um Bezugsmarkierer unter Verwendung von Bilddaten zu kennzeichnen, die für Umgebungen repräsentativ sind, die Bezugsmarkierer umfassen.
  • Im Gegensatz zu herkömmlichen Systemen, wie beispielsweise denen, die oben beschrieben sind, können vorliegende Systeme eine Filterung und Segmentierung für Eingangsbilder implementieren, um Begrenzungen innerhalb des Eingangsbildes zu kennzeichnen. Durch Kennzeichnen von Begrenzungen auf diese Weise werden die Nachteile von herkömmlichen Vorgehensweisen, welche die Kennzeichnung einer großen Anzahl von Vierecken oder anderen Polygone in dem Eingangsbild betreffen, signifikant verringert. Zusätzlich und in einigen Beispielen parallel zu den Bildschwellenwertbildungs- und Segmentierungsprozessen können die vorliegenden Systeme eine Eckenerfassung zur Kennzeichnung von Pixeln implementieren, die den Ecken von Objekten in dem Eingangsbild entsprechen. Die gekennzeichneten Ecken werden dann gefiltert, so dass lediglich Ecken innerhalb eines Schwellenabstands zu einer der Begrenzungen innerhalb des Eingangsbilds übrigbleiben. Durch Kennzeichnen und Filtern der Ecken auf diese Weise kann lediglich eine kleine Anzahl von Pixeln zur Erfassung und Verarbeitung von Polygonen in dem Eingangsbild erforderlich sein, um dadurch die Rechenkosten zur Kennzeichnung von Bezugsmarkierern drastisch zu verringern.
  • Außerdem können in weiterem Gegensatz zu herkömmlichen Systemen die vorliegenden Systeme mindestens einige der Prozesse auf einer GPU(s) implementieren. Dabei wird die Effizienz des Durchführens der Prozesse insbesondere erhöht, wenn zwei oder mehrere Prozesses parallel ausgeführt werden (z.B., Bildschwellenwertbildung, Bildsegmentierung und/oder Eckenerfassung). Ferner kann aufgrund des Entladens eines Teils der Verarbeitung in eine GPU(s) lediglich eine kleine Menge an Verarbeitung von einer Zentralverarbeitungseinheit(s) (CPU) erforderlich sein, womit die Gesamteffizienz und Wirksamkeit des Systems erhöht wird, während ebenfalls Rechen- und Energieanforderungen verringert werden. Beispielsweise können die hier beschriebenen Prozesse dem System ermöglichen, wirksam bei höheren Bildauflösungen (z.B., 1080p, 4k usw.) zu agieren, wie beispielsweise durch wirksames Kennzeichnen der Bezugsmarkierer innerhalb von Eingangsbildern bei einer Bildrate von dreißig Bildern pro Sekunde (fps) oder größer.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren zur graphischen Bezugsmarkierer-Kennzeichnung werden nachstehend ausführlich mit Bezugnahme auf die beigefügten Zeichnungsfiguren beschrieben, wobei:
    • 1A ein Systemdiagramm eines Bezugsmarkierer-Kennzeichnungssystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung ist;
    • 1B ein beispielhaftes Datenablaufdiagramm ist, das einen Prozess veranschaulicht, der durch das Bezugsmarkierer-Kennzeichnungssystem von 1A implementiert werden kann, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2A ein beispielhaftes Datenablaufdiagramm zur Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung ist;
    • 2B ein weiteres beispielhaftes Datenablaufdiagramm zur Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung ist;
    • 2C ist ein weiteres beispielhaftes Datenablaufdiagramm zur Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 3 eine beispielhafte Darstellung eines Abschnitts eines Bezugsmarkierer-Kennzeichnungsverfahrens gemäß einigen Ausführungsformen der vorliegenden Offenbarung ist;
    • 4 ein Ablaufdiagramm ist, das ein Verfahren zur Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 5 ein Ablaufdiagramm ist, das ein weiteres Verfahren für Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt; und
    • 6 ein Blockdiagramm einer beispielhaften Rechenvorrichtung ist, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme und Verfahren werden offenbart, die eine Bezugsmarkierer-Kennzeichnung unter Verwendung von Graphikverarbeitungseinheiten betreffen. Mit Bezugnahme auf 1A, ist 1A ein beispielhaftes Systemdiagramm eines Bezugsmarkierer-Kennzeichnungssystems 100 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Es sei zu verstehen, dass diese und andere hier beschriebenen Anordnungen lediglich als Beispiele dargelegt werden. Andere Anordnungen und Elemente (z.B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstatt der dargestellten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und Lage implementiert werden können. Verschiedene Funktionen, die hier als von Entitäten durchgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der in einem Speicher gespeicherte Anweisungen ausführt.
  • Das Bezugsmarkierer-Kennzeichnungssystem 100 kann unter anderem eine Rechenvorrichtung(en) 102, eine Rechenvorrichtung(en) 130 und/oder ein Netzwerk(e) 128 umfassen. Obwohl die Rechenvorrichtung(en) 102 und die Rechenvorrichtung(en) 130 in 1 veranschaulicht sind, ist dies nicht bestimmt, einschränkend zu sein. In jeder Ausführungsform kann es eine beliebige Anzahl von Rechenvorrichtungen 102 und/oder Rechenvorrichtung(en) 130 geben. Das Bezugsmarkierer-Kennzeichnungssystem 100 (und die Komponenten und/oder Merkmale davon) können unter Verwendung einer oder mehrerer Rechenvorrichtungen implementiert sein, wie beispielsweise der Rechenvorrichtung 600 von 6, die hier detaillierter beschrieben ist.
  • Komponenten des Bezugsmarkierer-Kennzeichnungssystems 100 können über ein Netzwerk(e) 128 kommunizieren. Das(die) Netzwerk(e) können ein Weitbereichsnetzwerk (WAN) (z.B., das Internet, ein öffentliches Telefonnetz (PSTN) usw.), ein Lokalbereichsnetzwerk (LAN) (z.B., Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet usw.), ein Niederleistungsweitbereichsnetzwerk (LPWAN) (z.B., LoRaWAN, Sigfox usw.), ein globales Navigationssatellitensystem(GNSS)-Netzwerk (z.B., das Global Positioning System (GPS)) und/oder eine andere Netzwerkart umfassen. In jedem Beispiel kann jede der Komponenten des Bezugsmarkierer-Kennzeichnungssystems 100 mit einer oder mehreren der anderen Komponenten über ein oder mehrere der Netzwerk(e) 128 kommunizieren.
  • Die Rechenvorrichtung(en) 102 (und/oder die Rechenvorrichtung(en) 130) können ein Smart-Phone, einen Laptop-Computer, einen Tablet-Computer, einen Desktop-Computer, eine tragbare Vorrichtung, eine Spielekonsole, ein Virtual-Reality-System (z.B., einen Headset, einen Computer, ein Fahrzeug, eine Spielekonsole, Fernbedienung(en), Controller und/oder andere Komponenten), ein Augmented-Reality-System, ein Smart-Home-Gerät, das einen intelligenten persönlichen Assistenten umfassen kann, eine Robotik-Vorrichtung, eine Smart- oder IoT-Kamera und/oder jede andere Art von Vorrichtung umfassen, die in der Lage ist, einen Bezugsmarkierer zu kennzeichnen (z.B., die in der Lage ist, ein Eingangsbild zu analysieren, um eine oder mehrere Bezugsmarkierer innerhalb des Eingangsbilds zu kennzeichnen).
  • Die Rechenvorrichtung(en) 102 kann(können) einen Bildmanager 104, einen Schwellenwertbildner 106, einen Bildsegmentierer 108, einen Eckendetektor 110, ein Eckenfilter 112, einen Quadanpasser bzw. Viereckanpasser 114, einen Decodierer 116, einen Bezugsmarkierermanager 118, eine Kamera(s) 120, eine Graphikverarbeitungseinheit(en) (GPU) 122, eine Zentralverarbeitungseinheit(en) (CPU) 124, einen Datenspeicher/Datenspeicher 126 und/oder zusätzliche oder alternative Komponenten umfassen. In einigen Beispielen können eine oder mehrere der Komponenten oder Merkmale durch eine erste Rechenvorrichtung 102 implementiert werden und eine oder mehrere andere der Komponenten oder Merkmale können durch eine zweite Rechenvorrichtung 102 und/oder 130 implementiert werden. Beispielsweise kann mindestens ein Teil des Prozesses 132 durch eine erste Rechenvorrichtung 102 und mindestens ein Teil des Prozesses 132 durch eine zweite Rechenvorrichtung 102 und/oder 130 implementiert werden. In anderen Beispielen kann jeder der Prozessblöcke des Prozesses 132 durch eine einzige Rechenvorrichtung implementiert werden.
  • In einem nicht einschränkenden Beispiel kann eine erste Rechenvorrichtung 102 ein Bild(er) unter Verwendung einer Kamera(s) 120 erfassen und eine andere Rechenvorrichtung(en) 102 und/oder 130 kann(können) das(die) Bild(er) gemäß dem Prozess 132 verarbeiten. In noch einem anderen nicht einschränkenden Beispiel kann die gleiche Rechenvorrichtung 102 das(die) Bild(er) unter Verwendung der Kamera(s) 120 erfassen und kann Prozess das(die) Bild(er) gemäß dem Prozess 132 verarbeiten. Beispielsweise kann eine erste Rechenvorrichtung 102 in einem Roboter sein und eine zweite Rechenvorrichtung 102 und/oder 130 kann(können) ein Server und/oder in einem anderen Roboter(s) sein, so dass der Roboter ein Bild(er) erfassen und/oder einige Verarbeitung durchführen kann, während eine andere Verarbeitung in den(die) Server und/oder den anderen Roboter entladen wird. In einigen Beispielen kann(können) die Rechenvorrichtung(en) 102 ein Virtual-Reality-System sein und das System kann einen Headset, einen Computer umfassen und/oder in Kommunikation mit einem oder mehreren Server(n) über das(die) Netzwerk(e) 128 sein. Als Ergebnis kann der Prozess 132 von dem Headset, dem Computer und/oder dem(den) Server(n) ausgeführt werden. Andere Beispiele werden angedacht, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Mit anderen Worten kann jede beliebige Kombination von Rechenvorrichtung(en) 102 und/oder 130 verwendet werden, um das Bezugsmarkierer-Kennzeichnungssystem zu implementieren und den Prozess 132 und/oder andere Prozesse zur Bezugsmarkierer-Kennzeichnung auszuführen.
  • Das Bezugsmarkierer-Kennzeichnungssystem 100 kann verwendet werden, um eine Bezugsmarkierer-Kennzeichnung gemäß einem beliebigen einer Anzahl von unterschiedlichen Verfahren und/oder Prozessen auszuführen. Mit anderen Worten ist, obwohl die Komponenten und die Funktionalität des Systems 100 hier mit Bezug auf das Datenablaufdiagramm von 1B beschrieben sind, das einen Prozess 132 zur Bezugsmarkierer-Kennzeichnung veranschaulicht, dies nicht bestimmt, einschränkend zu sein. Obwohl die adaptive Schwellenwertbildung 136 und die Bildsegmentierung 138 beispielsweise veranschaulicht sind, als parallel mit einer Eckenerfassung 140 ausgeführt zu werden, ist dies nicht bestimmt, einschränkend zu sein. In einigen Beispielen können zusätzliche oder alternative Prozessblöcke parallel ausgeführt werden oder keine der Prozessblöcke des Prozesses 132 können parallel ausgeführt werden. Als weiteres Beispiel können durch das Bezugsmarkierer-Kennzeichnungssystem 100 andere zusätzliche oder alternative Prozessblöcke als diejenigen, die in 1B veranschaulicht sind, implementiert werden.
  • Bezugnehmend nun auf 1B, ist 1B ein Beispiel eines Datenablaufdiagramms, das den Prozess 132 veranschaulicht, der durch das Bezugsmarkierer-Kennzeichnungssystem 100 von 1A implementiert werden kann, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Der Prozess 132 kann, ohne Beschränkung, auf einer GPU(s) 122 und einer CPU(s) 124 der Rechenvorrichtung(en) 102 implementiert werden. Beispielsweise können die Prozessblöcke des Prozesses 132, die rechenmäßig aufwendiger sind, auf der(den) GPU(s) 122 implementiert werden, um Effizienz zu steigern. Außerdem können durch Implementieren mindestens einige der Prozessblöcke auf den GPU(s) 122 zwei oder mehrere der Prozessblöcke parallel implementiert werden (z.B., Parallelverarbeitung unter Verwendung von NVIDIA's CUDA). Weil die GPU(s) 122 beispielsweise in der Lage sein kann(können), eine große Anzahl von Threads gleichzeitig auszuführen, und weil die GPU(s) 122 zur Verarbeitung Bilddaten besser als die CPU(s) 124 geeignet sein können, kann durch Implementieren mindestens einiger der Prozessblöcke auf der GPU(s) 122 die Rechenzeit zur Kennzeichnen von Bezugsmarkierern in Bildern verglichen mit herkömmlichen Vorgehensweisen, wie beispielsweise jene, die hier beschrieben sind, drastisch verringert werden. Außerdem umfasst, wie hier beschrieben, der Prozess 132 selbst Prozessblöcke, die, sogar wenn auf der(den) CPU(s) 124 implementiert, die Rechenzeit verglichen mit herkömmlichen Vorgehensweisen verringern würden. Als Ergebnis können durch Erzeugen eines effizienteren Prozesses 132 und durch Implementieren des Prozesses 132 mindestens teilweise auf der(den) GPU(s) 122 die Gesamtverarbeitungsleistung, Rechenleistung, Energie- und Bandbreitenressourcen, die beim Kennzeichnen von Bezugsmarkierer in Bildern erforderlich sind, signifikant verringert werden.
  • In einigen Beispielen und ohne Beschränkung können die Prozessblöcke des Prozesses 132, die oberhalb der gestrichelten Linie 150 in 1B veranschaulicht sind, mindestens teilweise auf der(den) GPU(s) 122 der Rechenvorrichtung(en) 102 ausgeführt werden, während die unterhalb der gestrichelten Linie veranschaulichten Prozessblöcke 150 mindestens teilweise auf der(den) CPU(s) 124 der Rechenvorrichtung(en) 102 ausgeführt werden können.
  • Der Prozess 132 kann einen Eingangsbildempfang 134 umfassen. Beispielsweise können Bilddaten, die für ein Eingangsbild(er) 202 repräsentativ ist(sind) (2A), durch den Bildmanager 104 empfangen (z.B., als Antwort darauf, dass das(die) Eingangsbild(er) 202 von der(den) Kamera(s) 120 erfasst werden) und/oder durch diesen verwaltet werden. Beispielsweise kann(können) das(die) Eingangsbild(er) 202 in dem(den) Datenspeicher(n) 126 durch den Bildmanager 104 beim Eingangsbildempfang 134 gespeichert werden und/oder können aus dem(den) Datenspeicher(n) 126 von dem Bildmanager 104 erhalten werden, um das Eingangsbild 202 an einen anderen Prozessblock (z.B., adaptive Schwellenwertbildung 136, Eckenerfassung 140 usw.) weiterzugeben.
  • In einigen Beispielen kann das Eingangsbild 202 von einem höherdimensionaleren Farbraum als ein konvertiertes Bild sein, das als Ergebnis der adaptiven Schwellenwertbildung 136 gebildet wird (hier ausführlicher beschrieben). Beispielsweise kann das Eingangsbild 202 ein Farbbild, wie beispielsweise ein Rot, Grün und Blau (RGB) Farbbild, ein Cyan, Magenta, Gelb und Schwarz (CMYK) Farbbild, ein indiziertes Farbbild, ein Farbton, Sättigung und Helligkeit (HSB) Farbbild und/oder eine andere Bildart sein.
  • Wie in 2A veranschaulicht, kann das Eingangsbild 202 eine beliebige Anzahl von Bezugsmarkierern 204 (z.B., Bezugsmarkierer 204A, Bezugsmarkierer 204B, Bezugsmarkierer 204C usw.) umfassen. Obwohl die mit Bezug auf 2A-2C und 3 beschriebenen Bezugsmarkierer 204 AprilTags umfassen, ist dies nicht bestimmt, einschränkend zu sein. Beispielsweise können ähnliche Prozesse und/oder Prozessblöcke des Prozesses 132 unter Verwendung von ARKit-Bezugsmarkierer, ARToolkit, ARToolKitPlus und/oder anderen Bezugsmarkiererarten ausgeführt werden, ohne vom Umfang der vorliegenden Offenbarung abzuweichen.
  • Das(die) Eingangsbild(er) 202 kann(können) ferner zusätzliche Objekte, wie beispielsweise eine Tabelle 206 und/oder ein oder mehrere andere Objekte (nicht veranschaulicht) in einem Hintergrund 208 des Eingangsbilds 202 umfassen.
  • Das Bildmanager 104 kann das Eingangsbild 202 an den Schwellenwertbildner 106 zur adaptiven Schwellenwertbildung 136 des Eingangsbildes 202 übertragen, senden und/oder weitergeben und/oder das Eingangsbild 202 an den Eckendetektor 110 zur Eckenerfassung 140 übertragen, senden und/oder weitergeben. Der Schwellenwertbildner 106 kann das Eingangsbild 202 empfangen und die adaptive Schwellenwertbildung 136 auf dem Eingangsbild 202 beispielhaft und ohne Beschränkung ausführen. In anderen Beispielen können jedoch andere Arten der Schwellenwertbildung durch den Schwellenwertbildner 106 ausgeführt werden. Beispielsweise kann eine globale Schwellenwertbildung, eine lokale Schwellenwertbildung, eine adaptive Schwellenwertbildung und/oder eine Kombination davon durch den Schwellenwertbildner zusätzlich zu oder alternativ zu der adaptiven Schwellenwertbildung ausgeführt werden.
  • Beim Implementieren der adaptiven Schwellenwertbildung 136 kann der Schwellenwertbildner 106 das Eingangsbild 202 in eine Graustufen-Version des Eingangsbilds 202 konvertieren (z.B., ein Graustufen-Eingangsbild). Sobald das Graustufen-Eingangsbild erzeugt ist, kann die adaptive Schwellenwertbildung 136 ausgeführt werden, um minimale und maximale Werte in einem Bereich um jedes Pixel des Graustufen-Eingangsbildes zu finden. In einigen Beispielen kann jedoch, anstatt genaue Extrema (z.B., minimale und maximale Werte) um jedes Pixel des Graustufen-Eingangsbildes zu berechnen, das Graustufen-Eingangsbild in Kacheln von Pixeln (z.B., 4 x 4 Pixel, in einigen Beispielen) aufgeteilt werden. Die Extrema (z.B., Maximum und Minimum) innerhalb jeder der Kacheln können dann berechnet werden. Um zu verhindern, dass Artefakte zwischen Kachelbegrenzungen entstehen, die große Unterschiede in Extremwerten aufweisen, können die Extrema in einer Gruppe von umgebenden Kacheln (z.B., eine 3 x 3 Nachbarschaft von Kacheln, in einigen Beispielen) beim Berechnen von Extrema für angrenzende Pixel in dem eingegeben Graustufen-Bild verwendet werden (z.B., um sicherzustellen, dass mindestens eine Kachelüberlappung in die Berechnung der Extrema einkalkuliert wird). Als Ergebnis kann jedes Pixel das Maximum und Minimum der umgebenden Kacheln als sein Maximum und Minimum nehmen. Wenn die Maximal- und Minimalwerte zu nahe in einer gegebenen Kachel sind, kann die Kachel gekennzeichnet werden, als keinen ausreichend hohen Kontrast aufzuweisen, und Pixel innerhalb der Kachel können einen Pixelwert zugewiesen werden, der grau (oder einer andere(n) Farbe(n)) zugeordnet ist, und von weiterer Verarbeitung weggelassen werden. Wenn eine Kachel einen ausreichenden Kontrast aufweist, kann jedem Pixel ein Wert von weiß oder schwarz unter Verwendung des Mittelwerts als die Schwelle (z.B., (Maximum + Minimum) / 2) zugewiesen werden.
  • Das Ergebnis der adaptiven Schwellenwertbildung 136 kann ein konvertiertes Bild 210 umfassen (alternativ hier als ein Schwellenwertbildungsbild 210 bezeichnet). In einigen Beispielen kann das konvertierte Bild 210 ein Binärbild sein und/oder als ein Binärbild bezeichnet werden (z.B., weil die einzigen Pixel, die bei der weiteren Verarbeitung verwendet werden, die schwarzen Pixel und die weißen Pixel sein können). Als solches kann das konvertierte Bild 210 ein niedrigerdimensionaler Farbraum als das Eingangsbild 202 sein, wie hier beschrieben. Wie in dem konvertierten Bild 210 veranschaulicht und als Ergebnis der adaptiven Schwellenwertbildung 136 können Bereiche 212 (z.B., weiße Bereiche 212A und schwarze Bereiche 212B) von schwarzen Pixeln angrenzend weißen Pixeln und weiße Pixel angrenzend schwarzen Pixeln nach adaptiver Schwellenwertbildung 136 schwarz und weiß bleiben, während andere Abschnitte 214 des konvertierten Bildes 210 (z.B., die Pixel darin) grau sein können (z.B., wie durch die eng beabstandeten diagonalen Linien veranschaulicht). Beispielsweise können Bereichen, in denen eine Kachel aus schwarzen Pixeln von Kacheln aus schwarzen Pixeln umgeben ist, keinen ausreichend hohen Kontrast aufweisen und können somit in grau konvertiert werden. In einigen Beispielen können jegliche Pixel, denen ein Pixelwert zugewiesen ist, der für grau repräsentativ ist (oder einer anderen Farbe, die für unbedeutende Pixel zur Kennzeichnung von Bezugsmarkierern indikativ ist) von jeglichen zukünftigen Verarbeitungsblöcken des Prozesses 132 ausgeschlossen werden (z.B., kann der Bildsegmentierer 108 beim Ausführen der Bildsegmentierung 138 diese Pixel von der Verarbeitung ausschließen).
  • Beim Kennzeichnen der Bezugsmarkierer, wie beispielsweise AprilTags, ARTags und/oder dergleichen, sind die den Bezugsmarkierern in dem(den) Bild(ern) zugeordneten Pixelfarben lediglich schwarz oder weiß (z.B., weil die Bezugsmarkierer schwarz und weiß sind) und als Ergebnis kann dieser Prozess der adaptiven Schwellenwertbildung 136 eine konsistente Differenzierung der weißen Pixel und der schwarzen Pixel ermöglichen, die den Bezugsmarkierer bilden, während die verbleibenden Pixel ignoriert werden, die in eine andere Farbe (z.B., grau) geändert sind.
  • Der Schwellenwertbildner 106 kann das konvertierte Bild 210 an den Bildsegmentierer 108 übertragen, senden und/oder weitergeben. Der Bildsegmentierer 108 kann eine Bildsegmentierung 138 ausführen, um die kontinuierlichen weißen Bereichen 212A und schwarzen Bereichen 212B des konvertierten Bildes 210 zu gruppieren und Begrenzungen zu extrahieren, die diese Bereiche 212 segmentieren.
  • Herkömmliche Vorgehensweisen weisen gekennzeichnete Pixel auf, die ein entgegengesetzt gefärbtes Nachbarpixel aufweisen (z.B., ein weißes Pixel angrenzend einem schwarzen Pixel) und dann gebildete verbundene Gruppen dieser gekennzeichneten Pixel (z.B., kontinuierliche Gruppierungen von weißen Pixeln, die jeweils angrenzend zu einem schwarzen Pixel sind) als Ränder. Diese herkömmlichen Vorgehensweisen können jedoch nicht wirksam sein, wenn die weißen Pixelgruppierungen lediglich ein einziges Pixel breit sind (z.B., als Ergebnis eines weit entfernten Tag oder eines physisch kleinen Tag). Bei derartigen Vorgehensweisen können schwarze Pixelgruppierungen angrenzend zu den ein einziges Pixel breiten, weißen Pixelgruppierungen inkorrekt als ein einziger Rand gekennzeichnet sein und somit dazu führen, dass die Bezugsmarkierer unerfasst bleiben.
  • Um diese Nachteile von herkömmlichen Vorgehensweisen zu überwinden, kann der Bildsegmentierer 108 eine Union-Findbasierende Bereichsclusterbildung und eine Bereichsbegrenzungsextraktion verwenden. Die Union-Findbasierende Bereichsclusterbildung kann das Segmentieren oder Gruppieren des konvertierten Bildes 210 in kontinuierlichen Bereichen von schwarz und kontinuierlichen Bereichen von weiß umfassen (z.B., den weißen Bereichen 212A und den schwarzen Bereichen 212B). Um das konvertierte Bild 210 auf diese Weise zu segmentieren, können benachbarte weiße Pixel des konvertierten Bildes 210 zusammen gruppiert werden und benachbarte schwarze Pixel des konvertierten Bildes 210 zusammen gruppiert werden. Dieser Prozess kann lokale Zusammenführung, Begrenzungsverarbeitung und Global-Union-Zusammenführung umfassen. Jeder der Prozesse kann auf einem separaten Kern unter Verwendung der GPU(s) 122 implementiert werden (z.B., lokale Zusammenführung auf einem ersten CUDA-Kern, Begrenzungsverarbeitung auf einem zweiten CUDA-Kern und Global-Union-Zusammenführung auf einem dritten CUDA-Kern).
  • Für die lokale Zusammenführungsverarbeitung der Union-Findbasierten Bereichsclusterbildung kann das konvertierte Bild 210 in Blöcke von Pixeln (z.B., 4 x 4 Pixel, 8 x 8 Pixel usw.) geteilt werden. In einigen Beispielen kann jedem der Blöcke ein unterschiedlicher Thread auf der(den) GPU(s) 122 zugewiesen werden und die unterschiedlichen Threads können in der Lage sein, miteinander unter Verwendung eines gemeinsam genutzten Speichers miteinander zu kooperieren und/oder können für eine Synchronisierung untereinander in der Lage sein. Ein Zeilenscan und ein Spaltenscan kann an jedem Block von Pixeln ausgeführt werden, um jedes Pixel mit seinem linken Nachbarpixel und seinem oberen Nachbarpixel zu verbinden. In einigen Beispielen kann die Verbindung lediglich hergestellt werden, wenn die Nachbarpixel die gleiche Intensität (z.B., schwarz oder weiß) aufweisen. Nach lokaler Zusammenführung kann es keine Verbindungen über Blöcken von Pixeln sondern lediglich zwischen Pixeln innerhalb der gleichen Blöcke geben.
  • Für die Begrenzungsverarbeitung der Union-Find basierenden Bereichsclusterbildung können Zellen (oder Pixel) entlang der Begrenzungen der Blöcke von Pixeln mit den Zellen (oder Pixeln) entlang der Begrenzungen von benachbarten Blöcken von Pixeln verbunden werden. Beispielsweise kann ein weiterer Zeilenscan und Spaltenscan auf der Begrenzung von jedem Block von Pixeln mit Bezug auf eine angrenzende Begrenzung eines angrenzenden Blocks von Pixeln ausgeführt werden. Nach der lokalen Zusammenführungsverarbeitung und der Begrenzungsverarbeitung kann jedes Pixel in dem konvertierten Bild 210 eine Verbindung mit einem benachbarten Pixel der gleichen Intensität (z.B., weiß oder schwarz) aufweisen.
  • Für die Global-Union-Zusammenführungsverarbeitung der Union-Find-basierenden Bereichsclusterbildung kann jedes der Pixel in einem kontinuierlichen schwarzen Bereich oder einem kontinuierlichen weißen Bereich mit einem gleichen repräsentativen übergeordneten Pixel verbunden sein. Jedem kontinuierlichen schwarzen Bereich und jedem kontinuierlichen weißen Bereich kann dann eine eindeutige Bereichskennung (ID) zugewiesen werden.
  • Für die Bereichsbegrenzungsextraktion können die Begrenzungen zwischen den kontinuierlichen schwarzen Bereichen und den kontinuierlichen weißen Bereichen extrahiert werden. Die Bereichsbegrenzungsextraktion kann auf der(den) GPU(s) 122 ausgeführt werden und kann genauer gesagt unter Verwendung eines Verarbeitungskerns (z.B., eines CUDA-Kerns) ausgeführt werden. Beispielsweise können die Begrenzungen als ein Satz von ungeordneten Punkten dargestellt werden, die durch Bereich-IDs. etikettiert sind. Die Begrenzungen können in einem zweidimensionalen Begrenzungsgitter gespeichert sein, wo eine Zellenposition innerhalb des Blocks von Pixeln die Begrenzungskoordinaten codieren kann und die Zellenwerte die Bereich-IDs angeben können. Begrenzungspunkte zwischen jedem schwarzen Pixel und einem benachbarten oder angrenzenden weißen Pixel können dann gekennzeichnet werden. Beispielsweise kann jedes schwarze Pixel bei Bildkoordinate „Pl“ mit Bereich-ID „ID1“ und sein benachbartes weißes Pixel bei Bildkoordinate „P2“ mit Bereich-ID „ID2“ gekennzeichnet werden. Die Begrenzungspunkte können dann durch Bildkoordinaten (z.B., (P1 + P2)/2) indiziert werden und zugewiesene Begrenzungskennung(ID)-Werte basierend auf den IDs des(der) Nachbarbereichs(e) (z.B. zwei 32-Bit-Bereichskennung-IDs können durch Verschieben einer von ihnen um 32 Bit und Hinzufügen der anderen ID kombiniert werden, um eine eindeutige 64-Bit-Begrenzung-ID zu bekommen).
  • Beispielsweise kann mit Bezug auf das konvertierte Bild 210 die Begrenzung zwischen dem weißen Bereich 212A und dem schwarzen Bereich angrenzend oder benachbart dem weißen Bereich 212A als eine Begrenzung unter Verwendung des Bereichsbegrenzung-Extraktionsprozesses gekennzeichnet werden. Auf ähnliche Weise kann für jeden der schwarzen Bereichen, die sich angrenzend der weißen Bereichen erstrecken, andere Begrenzungen gekennzeichnet werden und jeder der Begrenzungen kann eine Begrenzung-ID zugewiesen werden, wobei die Begrenzung-ID eine einzige kontinuierliche Begrenzung angibt.
  • Im Gegensatz zu den herkömmlichen Systemen, wie oben beschrieben, würde als Ergebnis der Bildsegmentierung 138 ein einziges Pixel breiter, weißer Bereich angrenzend eines ersten schwarzen Bereichs und eines zweiten schwarzen Bereichs (z.B., beiderseits des weißen Bereichs) zu der Kennzeichnung von zwei unterschiedlichen Begrenzungen führen (z.B., einer ersten Begrenzung zwischen dem ersten schwarzen Bereich und dem weißen Bereich und einer zweiten Begrenzung zwischen dem zweiten schwarzen Bereich und dem weißen Bereich).
  • Der Bildsegmentierer 108 kann die Begrenzungsinformation an das Eckenfilter 112 übertragen, senden und/oder weitergeben. Außerdem kann, wie nachstehend ausführlicher beschrieben, das Eckenfilter 112 ebenfalls Ausgaben von dem Eckendetektor 110 nach der Eckenerfassung 140 empfangen. Weil die Prozessblöcke der adaptiven Schwellenwertbildung 136 und der Bildsegmentierung 138 nicht erforderlich sein können, um die Eckenerfassung 140 auszuführen, können diese Prozesse in einigen Beispielen (z.B., unter Verwendung von Parallelverarbeitungsfähigkeiten der GPU(s) 122) vor der Übergabe an den Eckenfilter 112 zur Begrenzungseckenfilterung 142 parallel ausgeführt werden.
  • Herkömmliche Systeme können, wie hier beschrieben, jedes von den oder eine große Anzahl der Pixel entlang der Begrenzungen analysieren, die in dem Bild gekennzeichnet sind, um Ecken von Polygonen zu bestimmen. Das Analysieren jedes der Pixel entlang der Begrenzungen ist jedoch ineffizient und führt zu signifikanten Rechen- und Energiekosten. Im Gegensatz zu herkömmlichen Systemen werden durch Verwenden der Eckenerfassung 140 in der erfindungsgegenständlichen Technologie lediglich eine relativ kleine Anzahl von Punkten als Kandidatenecken gekennzeichnet - wobei eine Mehrheit davon für tatsächliche Ecken 218 (wie beispielsweise den Ecken 218A und 218B) repräsentativ sind. Während eine kleine Anzahl von Punkten vorübergehend falsch als Kandidatenecken 218 gekennzeichnet werden kann (wie beispielsweise Kandidatenecken 220A und 218D), werden die Verarbeitungs-, Rechen- und Energieanforderungen verringert, weil weniger Gesamtpixel (z.B., die Pixel, die für Kandidatenecken 218 repräsentativ sind) verarbeitet werden. Außerdem kann, weil es im Gegensatz zu herkömmlichen Systemen nicht erforderlich ist, dass die Begrenzungen in dem Eingangsbild vor der Eckenerfassung 140 gekennzeichnet wurden, die Eckenerfassung 140 parallel mit der adaptiver Schwellenwertbildung 136 und/oder der Bildsegmentierung 138 ausgeführt werden (z.B., die Prozessschritte zum Kennzeichnen der Begrenzungen), um dadurch die Verarbeitungszeit zu verringern und die Effizienz des Systems 100 zu erhöhen.
  • Der Eckendetektor 110 kann die Eckenerfassung 140 auf einer Graustufen-Version des Eingangsbildes 202 (z.B., dem Graustufen-Eingangsbild), dem Eingangsbildes 202 und/oder dem konvertierten Bild 210 ausführen (wie in 2B veranschaulicht), um Kandidatenecken 218 (z.B., veranschaulicht ohne Schattierung oder anderer Einfüllung 2B) in dem Graustufen-Eingangsbild, dem Eingangsbild 202 und/oder dem konvertierten Bild 210 zu erfassen. Die Visualisierung 216, die ein beispielhaftes Ergebnis der Eckenerfassung 140, wie auf dem Eingangsbild 202 dargestellt, veranschaulicht, kann den Bezugsmarkierer 204, die Tabelle 206, den Hintergrund und mehrere Kandidatenecken 218 umfassen. Die Kandidatenecken 218 (z.B., die Ecken 218A-218C und die unetikettierten Ecken 218) sind nicht bestimmt, einschränkend zu sein, weil zusätzliche oder alternative Kandidatenecken 218 als Ergebnis der Eckenerfassung 140 gekennzeichnet worden sein können, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. In einigen Beispielen kann die Eckenerfassung 140 auf der(den) GPU(s) 122 implementiert werden, wie hier beschrieben.
  • In einigen Beispielen kann die Eckenerfassung 140 dazu führen, dass einige Pixel als Kandidatenecken gekennzeichnet werden, sogar wenn die Pixel nicht für tatsächliche Ecken repräsentativ sind (z.B., falsch gekennzeichnete Pixel 220, veranschaulicht mit Schattierung in 2B). Beispielsweise kann die Eckenerfassung 140 empfindlich gegen Schatten, Rauschen und/oder Bildauflösungsbelange sein und als Ergebnis können einige der Pixel (z.B., die falsch gekennzeichneten Pixel 220A-220D) als Kandidatenecken 218 gekennzeichnet werden, obwohl sie tatsächliche keine Eckpunkte sind. Sogar mit den falsch gekennzeichneten Pixeln 220 kennzeichnet das Ergebnis des Verwendens der Eckenerfassung 140 jedoch weiterhin weniger Pixel (z.B., die Ecken 218), die analysiert werden müssen, als herkömmliche Vorgehensweisen. In jedem Beispiel können die Ecken 218 und die falsch gekennzeichneten Pixel 220 zusammen als ein Satz von Kandidateneckpunkten oder ein Satz von gekennzeichneten Kandidateneckpunkten bezeichnet werden.
  • In einigen Beispielen kann, um die Aspekte mit Schatten, Rauschen und/oder Bildauflösungsbelange zu berücksichtigen, eine zusätzliche Verarbeitung ausgeführt werden. Beispielsweise kann in Beispielen, in denen die Eckenerfassung 140 skalenvariant sein kann (z.B., wird lediglich das Graustufen-Eingangsbild und/oder das konvertierte Bild 210 bei einer einzigen Maßstab verwendet), eine zusätzliche Verarbeitung durchgeführt werden, um unterschiedliche Maßstabsräume in dem Bild abzudecken, wie beispielsweise durch Verwenden eines variablen Gaußschen Faltungskern. Beispielsweise kann zusätzlich zu dem Graustufen-Eingangsbild und/oder dem konvertierten Bild 210 mindestens ein zusätzliches Maßstabsraumbild erzeugt werden. In einigen nicht einschränkenden Beispielen können drei zusätzliche Maßstabsraumbilder erzeugt werden und, zusätzlich zu oder alternativ zu dem Graustufen-Eingangsbild und/oder dem konvertierten Bild 210, können die drei zusätzlichen Maßstabsraumbilder ebenfalls analysiert werden, um Kandidatenecken zu bestimmen. In einigen Beispielen kann jedes der Maßstabsraumbilder unter Verwendung eines unterschiedlichen Kerns, der spezifisch zu dem Maßstabsraum des Bildes ist, ausgeführt werden. In jedem Beispiel können die Ecken, die in dem(den) unterschiedlichen Maßstabsraumbild(ern) erfasst wurden, sowie auch das Graustufen-Eingangsbild und/oder das konvertierte Bild 210 verglichen werden, um Beziehungen zwischen den erfassten Kandidatenecken zu bestimmen. Beispielsweise können die in jedem Maßstabsraumbild erfassten Kandidatenecken gegen das Graustufen-Eingangsbild und/oder das konvertierte Bild 210 verglichen werden, um zu bestimmen, ob die Ecken in jedem Bild unterstützt (z.B., gekennzeichnet) werden. Als Ergebnis können zumindest einige der falsch gekennzeichneten Pixel (z.B., als Kandidatenecken in einem Bild jedoch nicht in einem anderen Bild eines unterschiedlichen Maßstabsraums erfasst), die als Ergebnis von Rauschen, Schatten und/oder Bildauflösungsanliegen erfasst wurden, ausgefiltert werden, um dadurch zu einer noch kleineren Anzahl von Pixeln führen, die als Ecken 218 zu analysieren sind.
  • Wie oben beschrieben, können dann die erfassten Kandidatenecken 218 (welche die falsch gekennzeichneten Pixel 220 umfassen können) an das Eckenfilter 112 zur Begrenzungseckenfilterung 142 übertragen, gesendet und/oder weitergeben werden (wie in 2C veranschaulicht). Das Eckenfilter 112 kann ebenfalls die Begrenzungen 308 (z.B., die Begrenzungen zwischen den weißen Pixelbereichen 212A und den schwarzen Pixelbereichen 212B) von der Bildsegmentierung 138 empfangen, wie oben beschrieben. Als Ergebnis kann das Eckenfilter 112 die Ecken 218, die falsch gekennzeichneten Pixel 220 und die Begrenzungen 308 verwenden, um die Begrenzungseckenfilterung 142 auszuführen. Wie hier beschrieben kann, weil die Eckenerfassung zu dem falsch gekennzeichneten Pixel 220 führen kann, wie beispielsweise den falsch gekennzeichneten Pixeln 220A und 220B, die nicht auf einer Begrenzung 308 sind, die Begrenzungseckenfilterung 142 verwendet werden, um mindestens einige der falsch gekennzeichneten Pixel 220 auszufiltern.
  • Wie in 3 veranschaulicht, können erste Pixel 302 durch den Eckendetektor 110 gekennzeichnet worden sein, die Ecken 218 sind, zweite Pixel 304 können gekennzeichnet worden sein, die auf oder nahe Begrenzungen 208 sind, jedoch falsch gekennzeichnete Pixel 220 sind, und dritte Pixel 306 (mit Schattierung in 3 veranschaulicht) können gekennzeichnet worden sein, die nicht Ecken 218 sind, sich nicht auf oder nahe Begrenzungen 208 befinden (z.B., einen Schwellenabstand entfernt von einer Begrenzung 308, wie beispielsweise zwei Pixel, vier Pixel usw. entfernt von einer Begrenzung 308) und falsch gekennzeichnete Pixel 220 sind. Die Begrenzungseckenfilterung 142 kann dann verwendet werden, um die dritten Pixel 306 auszufiltern, die falsch gekennzeichnete Pixel 220 sind und nicht innerhalb eines Schwellenabstands zu einer Begrenzung 308 sind. In einigen Beispielen kann der Schwellenabstand eine Anzahl von Pixeln entfernt von einer Begrenzung 308 sein (z.B., ein einer Begrenzung 308 zugeordnetes Pixel). Beispielsweise und ohne Beschränkung kann der Schwellenabstand zwei Pixel, drei Pixel, sieben Pixel, zehn Pixel oder dergleichen sein. Als Ergebnis können die Pixel in dem Bild ausgefiltert werden, wenn sie nicht in den Eckenkandidaten umfasst sind (z.B., nicht in den Ecken 218 und/oder den falsch gekennzeichneten Pixeln 220 enthalten sind) und nicht innerhalb des Schwellenabstands zu einer der Begrenzungen 308 sind. Die resultierenden Pixel (z.B., die ersten Pixel 302 und die zweiten Pixel 304) können zusammen als eine Untermenge des Satzes der Kandidatenecken bezeichnet werden (z.B., der Satz der Pixel kann die Ecken 218 und die falsch gekennzeichneten Pixel 220 umfassen).
  • Die Begrenzungseckenfilterung 142 kann durch die GPU(s) 122 ausgeführt werden, wie hier beschrieben, und ein Kern (z.B., ein CUDA-Kern) kann verwendet werden, um jedes der Pixel (z.B., das erste Pixel 302, das zweite Pixel 304 und das dritte Pixel 306) zu analysieren, die als Ecken 218 und/oder falsch gekennzeichnete Pixel 220 parallel gekennzeichnet werden (z.B., kann jedes Pixel auf einen separaten Thread auf den GPU(s) 122 angewandt werden).
  • Das Eckenfilter 112 kann dann die Pixel (z.B., das erste Pixel 302 und das zweite Pixel 304) an den Viereckanpasser 114 übertragen, senden und/oder weitergeben, um eine Quadanpassung bzw. Viereckanpassung 144 auszuführen. In einigen Beispielen kann die Viereckanpassung 144 von der(den) CPU(s) 124 ausgeführt werden und als Ergebnis können die Pixel von dem der(den) GPU(s) 122 zugeordneten Speicher zu dem der(den) CPU(s) 124 zugeordneten Speicher kopiert werden. Beispielsweise können die Pixel (z.B., ein Ort der Pixel in dem Bild) von dem Speicher der GPU(s) 122 abgerufen und an den Speicher der CPU(s) 124 übertragen und von diesem gespeichert werden. In einigen Beispielen kann der(die) Datenspeicher(s) 126 inklusive des(der) GPU(s) 122 zugeordneten Speichers und/oder des(der) GPU(s) 122 zugeordneten Speichers sein. Im Gegensatz zu herkömmlichen Systemen, in denen eine große Anzahl von Randpixeln (z.B., jedes der Pixel entlang Begrenzungen, die in Bildern gekennzeichnet sind) durch eine CPU(s) analysiert wurden, kann das System 100 lediglich erfordern, dass die CPU(s) 124 die Untermenge des Satzes der Pixel analysiert (z.B., das erste Pixel 302 und das zweite Pixel 304), um zu bestimmen, ob die Pixel für Ecken von Polygonen repräsentativ sind (z.B., Vierecke, wie beispielsweise die Vierecke, die Bezugsmarkiererbegrenzungen für AprilTags, ARTags und/oder dergleichen bilden). Als Ergebnis kann signifikante Rechen- und Verarbeitungszeit eingespart werden, um dadurch zu einem effizienteren und robusten System 100 zu führen, das in der Lage sein kann, höhere Bildauflösungen (z.B., 1080p, 4k usw.) als herkömmliche Systeme bei der gleichen oder höheren Bildrate zu handhaben (z.B., 30 fps, 60 fps usw.), während Bezugsmarkierer weiterhin akkurat gekennzeichnet werden.
  • Der Quadanpasser bzw. Viereckanpasser 114 kann eine Viereckanpassung 144 ausführen, um Ecken 218 von Polygonen zu kennzeichnen. Als solches, obwohl der Viereckanpasser 114 mit Bezugnahme auf ein Quad bzw. Viereck beschrieben wird, ist dies nicht bestimmt, einschränkend zu sein. Beispielsweise kann der Viereckanpasser 114 alternativ als ein Polygonanpasser 114 bezeichnet werden und die Viereckanpassung 144 alternativ als Polygonanpassung 144 bezeichnet werden (z.B., wenn die Bezugsmarkiererbegrenzung kein Viereck ist).
  • Jede der Ecken 218 und die falsch gekennzeichneten Pixel 220 können in einer Hash-Tabelle gespeichert werden. Innerhalb der Hash-Tabelle kann jede Ecke 218 (z.B., die ersten Pixel 302) und jedes falsch gekennzeichnete Pixel 220 (z.B., die falsch gekennzeichneten Pixel 220, die einer Begrenzung 308 zugeordnet sind, wie beispielsweise die zweiten Pixel 304) mit einer entsprechenden Begrenzung-ID gespeichert werden (z.B., basierend auf der Begrenzung 308, der das Pixel zugeordnet ist, wie durch die Bildsegmentierung 138 bestimmt) für eine jeweilige Begrenzung 308 bestimmt (z.B., eine Begrenzung, die während der Bildsegmentierung 138 bestimmt wird, die sich zwischen angrenzenden oder benachbarten weißen Pixelbereichen 212A und schwarzen Pixelbereichen 212B erstreckt). Als Ergebnis können jeweils die Ecken 218 und/oder die falsch gekennzeichneten Pixel 220, die der gleichen Begrenzung-ID zugeordnet sind, zusammen gruppiert werden. Dann kann der Viereckanpasser 114 jede Gruppe getrennt von jeder anderen Gruppe analysieren, um die besten Eckenkandidaten (z.B., die besten Ecken 218 und/oder falsch gekennzeichneten Pixel 220) zum Repräsentieren einer Bezugsmarkiererbegrenzung eines Bezugsmarkierers 204 zu kennzeichnen.
  • In einigen Beispielen können die Gruppen von Pixeln zuerst basierend auf einer jeder Begrenzung zugeordneten Anzahl von Pixeln analysiert werden. Beispielsweise kann für Bezugsmarkierer, die Begrenzungen einer bekannten Form aufweisen, die Anzahl von Eckpunkten ebenfalls bekannt sein (z.B., Quadrat oder Rechteck weisen vier Ecken auf, Dreieck weist drei usw.). Als solches können, sobald die Gruppen von Pixeln für jede Begrenzung gebildet sind, die Gruppen von Pixeln hinsichtlich der Anzahl von Pixeln analysiert werden, die für die Bezugsmarkiererart vorhanden sein sollten. Wenn beispielsweise bekannt ist, dass die Bezugsmarkiererbegrenzung ein Quadrat ist und somit vier Eckpunkte aufweist, können alle Gruppen von Pixeln mit weniger als vier Pixel ausgefiltert werden und nicht in irgendeiner weiteren Verarbeitung enthalten sein. In einem derartigen Beispiel kann jede der Gruppen von Pixeln, die vier Eckpunkte aufweisen, keine zusätzliche Eckenfilterung erfordern, um nur vier Kandidatenecken zu kennzeichnen, wobei das durch die vier Pixel gebildete Viereck immer noch einer Filterung unterzogen werden kann, um zu bestimmen, ob das Viereck ein Kandidat für die Bezugsmarkiererbegrenzung ist, wie nachstehend ausführlicher beschrieben. Außerdem kann, wenn die Gruppe von Pixeln größer als vier ist, eine Filterung ausgeführt werden, um die vier Pixel zu bestimmen, welche die Kandidateneckpunkte für das Viereck sein können, wie nachstehend ausführlicher beschrieben.
  • Für jede Gruppe von Kandidatenecken können Ränder 310 (z.B., Ränder 310 für eine erste Begrenzung 308A, Ränder 310B für eine zweite Begrenzung 308B usw.) erzeugt werden, die sich von jeder Kandidatenecke zu einer nächsten der am nächsten Kandidatenecke erstrecken (z.B., einem ersten Kandidaten in Uhrzeigersinn mit Bezug auf den Flächenschwerpunkt von der Kandidatenecke und eine zweiten Kandidatenecke im Gegenuhrzeigersinn von der Kandidatenecke), bis eine kontinuierlichen Kette von Rändern 310 gebildet werden kann. In einigen Beispielen können die Kandidatenecken mit Bezug auf ihren Flächenschwerpunkt (z.B., im Uhrzeigersinn, im Gegenuhrzeigersinn usw.) sortiert werden und die Ränder 310 können von jeder Kandidatenecke zu dem nächsten Eckenkandidat basierend auf der sortierten Liste von Kandidatenecken erzeugt werden. Beispielsweise können mit Bezug auf die Viereckanpassung 144 in 3 die der Begrenzung 308A zugeordneten Kandidatenecken im Uhrzeigersinn von dem Flächenschwerpunkt sortiert werden. In einem derartigen Beispiel können die Kandidatenecken als das erste Pixel 302C, das zweite Pixel 304B, das erste Pixel 302D, das erste Pixel 302E, das zweite Pixel 304A, das erste Pixel 302F, das zweite Pixel 304C und dann das erste Pixel 302C sortiert werden. Als solches kann ein erster Rand 310A erzeugt werden, der sich zwischen dem ersten Pixel 302C und dem zweiten Pixel 304B erstreckt, und ein zweiter Rand 310A erzeugt werden, der sich zwischen dem zweiten Pixel 304B und dem ersten Pixel 302D erstreckt, ein dritter Rand 310A kann erzeugt werden, der sich zwischen dem ersten Pixel 302D und dem ersten Pixel 302E erstreckt, und so weiter, bis eine kontinuierlichen Schleife oder Gruppierung von Rändern gebildet wird, die sich durch jede der Kandidatenecken erstreckt.
  • In einigen Beispielen können als Ergebnis eines Bildalias-Effekts oder Rauschens ein oder mehrere Pixel als Kandidatenecken erfasst werden, die tatsächlich keine Ecken sondern falsch gekennzeichnete Pixel entlang eines Randes sind (z.B., ein Rand, der Teil eines Polygons bildet). Daher können, um diese Pixel, die nicht ordnungsgemäß als Ecken gekennzeichnet wurden, auszufiltern, sobald die kontinuierliche Schleife oder Gruppierung von Rändern gebildet ist, Winkel 312, die zwischen jeweils zwei angrenzenden Rändern gebildet sind, errechnet (z.B., berechnet) werden, um die tatsächlichen Ecken der Polygone (z.B., Vierecke) von der Kandidatenecken zu kennzeichnen. In einigen Beispielen können die Kandidatenecken mit Bezug auf ihren Flächenschwerpunkt, in Uhrzeigerrichtung oder in Gegenuhrzeigerrichtung, geordnet werden. Für jede der Kandidatenecken kann der Winkel 312 zwischen einem ersten Vektor (z.B., einem ersten Rand) von der Kandidatenecke zu einer direkt vorangehenden Kandidatenecke und einem zweiten Vektor (z.B., einem zweiten Rand) von der Kandidatenecke zu einer direkt nachfolgenden Kandidatenecke berechnet werden. Die Kandidatenecken, die Rändern (oder Vektoren) zugeordnet sind, die zumindest kollinear sind (z.B., mit Bezug auf ihre beiden Nachbarecken) können als die tatsächlichen Ecken angesehen werden. Mit anderen Worten kann der Winkel 312 kleinster Größe oder der Winkel am nächsten zu 90 Grad (z.B., wo die Polygons Vierecke sind) verwendet werden, um die tatsächlichen Ecken (z.B., das erste Pixel 302C) zu kennzeichnen und/oder Kandidatenecken auszufiltern, die auf Rändern des Polygons sind (z.B., das zweite Pixel 304A). Als Ergebnis kann der Winkel 312 kleinster Größe oder der Winkel 312 am nächsten zu 90 Grad als die tatsächlichen Ecken für die Polygone gekennzeichnet werden (z.B., die Vierecke mit Bezug auf die Darstellung von 3). Als weiteres Beispiel kann, wie beispielsweise, wo das Polygon ein gleichseitiges Dreieck ist, der Winkel 312, der am nächsten zu 60 Grad ist, bestimmt werden, die tatsächlichen Ecken zu sein. Ähnliche Bestimmungen können abhängig von der Form vorgenommen werden, die der Begrenzung des Bezugsmarkierers entspricht, die zu kennzeichnen ist.
  • Beispielsweise kann ein Winkel 312A, der zwischen einem Rand 310A, der sich zwischen dem ersten Pixel 302F und dem zweiten Pixel 304C erstreckt, und einem Rand 310A, der sich zwischen dem ersten Pixel 302F und dem zweiten Pixel 304A erstreckt, gebildet wird, näherungsweise einen 90 Grad Winkel umfassen. In einem derartigen Beispiel kann der Winkel, der zwischen dem Rand 310A, der sich zwischen dem ersten Pixel 302F und dem zweiten Pixel 304A erstreckt, und einem Rand 310A, der sich zwischen dem zweiten Pixel 304A und dem ersten Pixel 302E erstreckt, näherungsweise 0 Grad sein. Auf ähnliche Weise kann der Winkel 312, der durch Ränder 310A gebildet wird, die sich von den ersten Pixeln 302C, 302D und 302E erstrecken, näherungsweise 90 Grad sein, während der Winkel, der durch die Ränder 310A gebildet wird, die sich von den zweiten Pixeln 304B und 304C erstrecken, näherungsweise 0 Grad sein kann. Als solches können die ersten Pixel 302C, 302D, 302E und 302F bestimmt werden, die tatsächlichen Eckpunkte für die Begrenzung 308A zu sein (z.B., die letztendlich bestimmt werden können, die Bezugsmarkiererbegrenzung zu sein).
  • Als weiteres Beispiel können die der Begrenzung 308B zugeordneten Eckenkandidaten einer ähnlichen Verarbeitung unterzogen werden, wie mit Bezug auf die Begrenzung 308A beschrieben. Als Ergebnis können vier Eckpunkte gekennzeichnet werden (z.B., die vier Eckpunkten, zwischen denen sich die Ränder 310B erstrecken). Die Ränder 310B sind ein Beispiel eines gekennzeichneten Polygons (oder Vierecks mit Bezug auf 3), das letztendlich nicht als ein Kandidat für eine Bezugsmarkiererbegrenzung enthalten sein kann (z.B., wie die Begrenzung 308A). Auf ähnliche Weise können die Begrenzungen 222B und 22D in 2C, die gekennzeichnete Polygone als Ergebnis der Viereckanpassung 144 darstellen, letztendlich nicht als Kandidaten für eine Bezugsmarkiererbegrenzung enthalten sein, während die Begrenzungen 222A und 222C Bezugsmarkiererbegrenzungen darstellen können. Als solches kann, um Bezugsmarkiererbegrenzungen zu kennzeichnen, eine zusätzliche Verarbeitung (z.B., Filterung) eingesetzt werden.
  • Ein oder mehrere Filter können durch den Viereckanpasser 114 ausgeführt werden, um die gekennzeichneten Polygone auszufiltern, die zur Verwendung als Kandidaten für Bezugsmarkiererbegrenzungen nicht erwünscht sein können. Beispielsweise kann ein erstes Filter angewandt werden, das nach Längen von Rändern 310 sucht und/oder Längen von Rändern 310 der gleichen Begrenzung 308 vergleicht, um die Proportionen oder das Verhältnis zu bestimmen. Beispielsweise können einige Bezugsmarkierer eine Mindestanzahl von Pixeln erfordern, um Daten wirksam zu codieren. Als Ergebnis kann jeder Rand 310, der eine geringere Länge als die Mindestanzahl von Pixeln aufweist, dazu führen, dass das Polygon, dem der Rand 310 zugeordnet ist, ausgefiltert wird. Als weiteres Beispiel können einige Bezugsmarkierer bekannte Formen, wie beispielsweise Quadrate, Rechtecke, Dreiecke (z.B., ein gleichseitiges Dreieck) usw., umfassen und als Ergebnis können Proportionen zwischen unterschiedlichen Rändern die Kandidatur für das Polygon als eine Bezugsmarkiererbegrenzung angeben. Für ein spezifisches Beispiel können, wenn bekannt ist, dass die Bezugsmarkiererbegrenzung ein Quadrat ist, Ränder 310 von variierenden Proportionen (z.B., außerhalb einer Schwelle, welche die Bildverzerrung oder Bezugsmarkiererorientierung in der Umgebung berücksichtigt) ausgefiltert werden.
  • Als weiteres Beispiel können Winkel innerhalb der erfassten Polygone verwendet werden, um Polygone als Kandidaten für eine Bezugsmarkiererbegrenzung auszufiltern. Beispielsweise können für Bezugsmarkierer von bekannter Form die durch Ränder der Bezugsmarkierer gebildeten Winkel bekannt sein. Beispielsweise sollten für eine quadratische Bezugsmarkiererbegrenzung die internen Winkel näherungsweise alle 90 Grad unter Berücksichtigung einer gewissen Streuung basierend auf der Orientierung der Bezugsmarkierer in dem Bild, Bildverzerrung usw. sein. Als solches kann dann, mit Bezug auf 3, wenn bekannt ist, dass die Bezugsmarkiererbegrenzung quadratisch ist, der zwischen den Rändern 310B des Polygons gebildete Winkel 312B verwendet werden, um das Polygon als einen Kandidaten für eine Bezugsmarkiererbegrenzung auszufiltern (z.B., weil der Winkel näherungsweise 45 Grad sein kann, was außerhalb einer Schwelle für einen Winkel eines erfassten Polygons in einem Bild sein kann).
  • Das Ergebnis der Viereckanpassung 144 ist ein Satz aus einem oder mehreren Polygonen, die Kandidaten für Bezugsmarkiererbegrenzungen sein können. Der Viereckanpasser 114 kann die Kandidatenpolygone an den Decodierer 116 zur Bezugsmarkiererdecodierung 146 übertragen, senden und/oder weitergeben. Der Decodierer 116 kann die Kandidatenvierecke unter Verwendung des Eingangsbildes 202, der Graustufen-Version des Eingangsbildes 202 und/oder dem konvertierten Bild 210 abhängig von der Ausführungsform decodieren. Als Ergebnis des Verwendens von Bezugsmarkierern, die Daten in Mustern von Pixelwerten (z.B., Pixeldaten) codieren können, kann der Decodierer 116 das Muster von Pixeln innerhalb der Kandidatenbezugsmarkiererbegrenzungen decodieren (z.B., die Pixel innerhalb der durch den Viereckanpasser 114 gekennzeichneten Polygone) und die decodierten Daten (z.B., die Pixelwerte repräsentieren) mit existierenden oder bekannten Pixelwertmasken oder Schablonen für Bezugsmarkierer (z.B., schwarze und weiße Pixelwertcodes oder Bezugsmarkiererdaten) vergleichen. Beispielsweise können die decodierten Daten, die für ein Code für das Polygon repräsentativ sein können, gegen ein Codetabelle verglichen werden (z.B., eine Anfrage kann auf der Codetabelle ausgeführt werden, die eine Nachschlagetabelle sein kann), einschließlich Listings von Codes (z.B., Bezugsmarkiererdaten), die für bekannte Bezugsmarkierer repräsentativ sind. Wenn der dem Polygon zugeordnete Code in der Codetabelle enthalten ist, kann ein Bezugsmarkierer erfolgreicher erkannt werden (z.B., die Bezugsmarkierer 204A, 204B und 204C von 2C), wohingegen, wenn der Code in der Codetabelle nicht enthalten ist, das Polygon als ein Falsch-Positiv betrachtet und von einer weiteren Verarbeitung ausgeschlossen werden kann.
  • Beispielsweise sind AprilTags, mit Bezugnahme auf AprilTags, im Allgemeinen von quadratischer Form und sind im Allgemeinen N x N schwarze oder weiße Zellen, wobei N abhängig von der Familie oder Klasse des AprilTag vordefiniert ist. Als Ergebnis kann jedes AprilTag in einer Familie oder Klasse mit einem N x N Bit Binärcode codiert sein, wobei 0 und 1 jeweils schwarz und weiß darstellen. Der Decodierer 116 kann einen Decodieralgorithmus ausführen, um die Daten zu bestimmen, die durch das Polygon in dem Bild dargestellt werden (z.B., wie durch die Pixel innerhalb der Begrenzung 308A in 3 dargestellt). Sobald die Pixelwerte von innerhalb der Begrenzung 308A decodiert sind, können die decodierten Pixelwerte (die, z.B., einen Code für ein Bezugsmarkierer, wie beispielsweise ein AprilTag, repräsentieren) gegen eine Nachschlagetabelle und/oder Codetabelle verglichen werden, die bekannte Mustermasken oder Schablonen für AprilTags enthält. Als Ergebnis können die Pixel innerhalb der Begrenzung 308A bestimmt werden, innerhalb einer Schwellenwertähnlichkeit zu einem der Codes in der Codetabelle zu sein (z.B., innerhalb einer Schwellen-Hamming-Distanz, wie beispielsweise zwei, drei, vier usw.). Als Ergebnis kann die Begrenzung 308A bestimmt werden, ein erfolgreicher decodierter Bezugsmarkierer zu sein (z.B., AprilTag) und kann von dem Bezugsmarkierermanager 118 verwendet werden, um eine oder mehrere Funktionen durchzuführen, um ein oder mehrere Befehle auszuführen, um einen oder mehrere Befehle durch eine weitere Komponente oder Merkmal der Rechenvorrichtung 102 und/oder einer anderen Rechenvorrichtung 102 und/oder 130 auszulösen.
  • Mit Bezugnahme auf 3 sind die Abschnitte des Bildes, die mit „weiß“ und „schwarz“ für Eckenerfassung 140 etikettiert sind, ebenfalls weiß und schwarz in den anderen Prozessblöcken (z.B., Begrenzungseckenfilterung 142, Viereckanpassung 144 und Bezugsmarkiererdecodierung 146), wobei sie jedoch zwecks Klarheit in den anderen Prozessblöcken nicht enthalten sind. Die schwarzen und weißen Bereiche in 3 können einen Bezugsmarkierer, wie beispielsweise einen AprilTag, einen ARKit, einen ARToolkit und/oder dergleichen, bilden.
  • Bezugnehmend nun auf 4 und 5 umfasst jeder Block der hier beschriebenen Verfahren 400 und Verfahren 500 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren 400 und das Verfahren 500 können ebenfalls als computernutzbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren 400 und das Verfahren 500 können durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in in ein anderes Produkt bereitgestellt werden, um einige zu nennen. Außerdem werden das Verfahren 400 und das Verfahren 500 beispielhaft mit Bezug auf das Bezugsmarkierer-Kennzeichnungssystem 100 (1A) und den Prozess 132 beschrieben (1B). Diese Verfahren können jedoch zusätzlich oder alternativ durch jedes System oder einer beliebigen Kombination von Systemen, einschließlich, jedoch nicht beschränkt auf, den hier beschriebenen, ausgeführt werden.
  • 4 ist ein Ablaufdiagramm, das ein Verfahren 400 zur Bezugsmarkierer-Kennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Das Verfahren 400 bei Block B402 umfasst das Empfangen von Bilddaten, die für ein Bild repräsentativ sind. Beispielsweise kann der Bildmanager 104 Bilddaten empfangen, die für ein Bild repräsentativ sind (z.B., am Eingangsbildempfang 134 des Prozessblocks des Prozesses 132). Das Eingangsbild kann von einer Kamera(s) 120 der Rechenvorrichtung(en) 102 erfasst worden sein. In einigen Beispielen kann das(die) Eingangsbild(er) in dem(den) Datenspeicher(n) 126 gespeichert und durch den Bildmanager 104 verwaltet werden.
  • Bei Block B404 umfasst das Verfahren 400 das Erfassen von Pixeln, die Kandidateneckpunkte darstellen. Beispielsweise kann der Eckendetektor 110 Pixel erfassen, welche die Kandidateneckpunkte (z.B., die Ecke 218 und die falsch gekennzeichneten Pixel 220 von 2B) darstellen. In einigen Beispielen kann das Erfassen der Pixel, welche die Kandidateneckpunkte darstellen, durch den Eckendetektor 110 an dem Prozessblock der Eckenerfassung 140 des Prozesses 132 ausgeführt werden.
  • Bei Block B406 umfasst das Verfahren 400 das Konvertieren der Bilddaten in ein konvertiertes Bild. Beispielsweise kann das Bild von einem höherdimensionalen Farbraum in ein konvertiertes Bild eines niedrigerdimensionalen Farbraums konvertiert werden. Dieser kann eine Schwellenwertbildung, wie beispielsweise die adaptive Schwellenwertbildung 136, des Bildes umfassen. In einigen Beispielen kann eine Graustufen-Version des Bildes vor der adaptiven Schwellenwertbildung 136 (und/oder der globalen Schwellenwertbildung) erzeugt werden. In einigen Beispielen kann das Konvertieren des Bildes in ein konvertiertes Bild durch den Schwellenwertbildner 106 ausgeführt werden.
  • Bei Block B408 umfasst das Verfahren 400 das Kennzeichnen der Begrenzungen in dem konvertierten Bild. Beispielsweise können die Begrenzungen, die angrenzende weiße Pixelbereiche (z.B., den Bereich 212A von 2A) und schwarze Pixelbereiche (z.B., den Bereich 212B von 2A) trennen, als Ergebnis der Bildsegmentierung 138 durch der Bildsegmentierer 108 gekennzeichnet werden.
  • Bei Block B410 umfasst das Verfahren 400 das Bestimmen eines Satz der Kandidateneckpunkte, die sich innerhalb eines Schwellenabstands zu einer Begrenzung befinden. Beispielsweise kann das Eckenfilter 112 die Pixel von dem Satz der Kandidateneckpunkte ausfiltern, die nicht innerhalb eines Schwellenabstands zu einer der bei Block B408 gekennzeichneten Begrenzungen sind. In einigen Beispielen kann das Eckenfilter 112 den Satz der Kandidateneckpunkte beim Ausführen der Begrenzungseckenfilterung 142 des Prozesses 132 bestimmen.
  • Bei Block B412 umfasst das Verfahren 400 das Analysieren des Satzes der Kandidateneckpunkte, um eine Untermenge der Kandidateneckpunkte zu bestimmen, die für Ecken von Polygonen repräsentativ sind. Beispielsweise kann der Viereckanpasser 114 den Satz der Kandidateneckpunkte analysieren, um die Untermenge der Kandidateneckpunkte zu bestimmen, welche die Ecken der Polygone sind. Beispielsweise können die Ränder erzeugt werden, die sich zwischen angrenzenden Kandidatenpixeln erstrecken, und der Winkel zwischen angrenzenden Rändern kann analysiert werden, um zu bestimmen, ob die Kandidateneckpunkte als Eckpunkte geeignet sein können. Das Analysieren des Satzes der Kandidateneckpunkte durch den Viereckanpasser 114 kann beim Ausführen der Viereckanpassung 144 des Prozesses 132 ausgeführt werden.
  • Bei Block B414 umfasst das Verfahren 400 das Anwenden mindestens eines Filters auf die Polygone, um ein Polygon zu kennzeichnen, das einer Bezugsmarkiererbegrenzung des Bezugsmarkierers entspricht. Beispielsweise können die Polygone basierend auf Randlänge, Randlängenproportionen, durch Ränder gebildete Winkel und/oder basierend auf Vergleichen decodierter Daten von innerhalb des Polygons mit einer Codetabelle gefiltert werden, die für bekannte Masken oder einer Schablone für Bezugsmarkierer repräsentativ ist. In einigen Beispielen können die Filter durch den Viereckanpasser 114 während der Viereckanpassung 144 angewandt werden und/oder können während der Decodierung 146 der Bezugsmarkierer durch den Decodierer 116 beim Ausführen des Prozesses 132 ausgefiltert werden. Als Ergebnis der Filter und/oder des Decodierens können die verbleibenden Polygone bestimmt werden, Bezugsmarkierer zu sein, und die Polygone können bestimmt werden, Bezugsmarkiererbegrenzungen zu sein.
  • 5 ist ein Ablaufdiagramm, das ein weiteres Verfahren 500 zur Bezugsmarkiererkennzeichnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Bei Block B502 umfasst das Verfahren 500 das Bestimmen von Pixeln in einem Bild, das Kandidateneckpunkte innerhalb eines Schwellenabstands zu mindestens einer in dem Bild gekennzeichneten Begrenzung darstellt. Beispielsweise können die Pixel in dem konvertierten Bild 210 und/oder der Graustufenversion des Eingangsbilds 202, die sich innerhalb eines Schwellenabstands zu einer der in dem konvertierten Bild 210 und/oder der Graustufen-Version des Eingangsbildes 202 gekennzeichneten Begrenzungen befinden, bestimmt werden. In einigen Beispielen können die Kandidateneckpunkte nach Eingangsbildempfang 134, adaptiver Schwellenwertbildung 136, Bildsegmentierung 138, Eckenerfassung 140 und/oder Begrenzungseckenfilter 142 des Prozesses 132 bestimmt werden. In einigen Beispielen kann, wie hier beschrieben, jeder dieser Schritte auf der(den) GPU(s) 122 und einem oder mehreren der Prozessblöcke parallel ausgeführt werden.
  • Bei Block B504 umfasst der Prozess 500 das Kopieren der Pixel von dem GPU Speicher in den CPU Speicher. Beispielsweise kann, sobald die Begrenzungseckenfilterung 142 durch den(die) GPU(s) 122 abgeschlossen ist, der Prozess 132 auf der(den) CPU(s) 124 fortfahren. Als solches können die bei Block B502 gekennzeichneten Pixel von dem GPU-Speicher in den CPU-Speicher zur weiteren Verarbeitung durch die CPU(s) 124 kopiert werden. Wie durch die gestrichelten Linien veranschaulicht, ist der Block B504 jedoch optional und in Beispielen, in denen eine GPU(s) 122 und eine CPU(s) 124 nicht beide verwendet werden oder in denen die nächsten Prozessblöcke nicht auf der(den) CPU(s) 124 ausgeführt werden, kann der Block B504 entfernt werden.
  • Bei Block B506 umfasst der Prozess 500 das Bestimmen eines Satzes der Kandidateneckpunkte, die einer gleichen Begrenzung zugeordnet sind. Beispielsweise können die Kandidateneckpunkte, die einer gleichen Begrenzung-ID zugeordnet sind, durch den Viereckanpasser 114 während der Viereckanpassung 144 bestimmt werden.
  • Bei Block B508 umfasst der Prozess 500 das Erzeugen von Rändern, die sich zwischen Elementen des Satzes der Kandidateneckpunkte erstrecken. Beispielsweise kann der Viereckanpasser 114 Ränder erzeugen, die sich zwischen jedem Kandidateneckpunkt und jedem angrenzenden Kandidateneckpunkt erstrecken.
  • Bei Block B510 umfasst der Prozess 500 das Berechnen eines Winkels, der durch angrenzende Ränder der Ränder gebildet wird. Beispielsweise kann der Viereckanpasser 114 den durch angrenzende Ränder der Ränder gebildeten Winkel berechnen.
  • Bei Block B512 umfasst der Prozess 500 das Kennzeichnen einer Untermenge des Satzes der Kandidateneckpunkte, die einem Satz der Winkel kleinster Größe als Ecken eines Polygons zugordnet sind. Beispielsweise kann der Viereckanpasser 114 eine Untermenge des Satzes der Kandidateneckpunkte kennzeichnen, die dem Winkel kleinster Größe zugeordnet sind (z.B., den ersten Pixeln 302C, 302D, 302E und 302F in 3).
  • Bei Block B514 umfasst der Prozess 500 ein Bestimmen, ob das Polygon einer Bezugsmarkiererbegrenzung eines Bezugsmarkierer entspricht. Beispielsweise kann der Viereckanpasser 114 und/oder der Decodierer 116 bestimmen, ob das(die) in dem Bild erfasste(n) Polygon(e) einer Bezugsmarkiererbegrenzung eines Bezugsmarkierers entspricht(entsprechen). Dieser Prozess kann dem von Block B414 des oben beschriebenen Verfahrens 400 von 4 ähnlich sein.
  • Bezugnehmend nun auf 6, ist 6 ein Blockdiagramm einer beispielhaften Computervorrichtung 600, die zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Die Computervorrichtung 600 kann einen Bus 602 umfassen, der direkt oder indirekt die folgenden Vorrichtungen koppelt: Speicher 604, eine oder mehrere Zentralverarbeitungseinheiten (CPUs) 606, eine oder mehrere Graphikverarbeitungseinheiten (GPUs) 608, eine Kommunikationsschnittstelle 610, Ein-/Ausgabe (I/O)-Ports 612, Eingabe-/Ausgabe-Komponenten 614, eine Leistungsversorgung 616 und eine oder mehreren Präsentationskomponenten 618 (z.B. Anzeige(n)).
  • Obwohl die verschiedenen Blöcke von 6 als über den Bus 602 mit Leitungen verbunden gezeigt sind, ist dies nicht bestimmt, einschränkend zu sein, und dient nur der Klarheit. Beispielsweise kann in einigen Ausführungsformen eine Präsentationskomponente 618, wie beispielsweise eine Anzeigevorrichtung, als eine I/O-Komponente 614 betrachtet werden (z.B., wenn die Anzeige ein Touchscreen ist). Als weiteres Beispiel können die CPUs 606 und/oder die GPUs 608 Speicher umfassen (z.B. kann der Speicher 604 für eine Speichervorrichtung zusätzlich zu dem Speicher der GPUs 608, der CPUs 606 und/oder anderer Komponenten repräsentativ sein). Mit anderen Worten ist die Computervorrichtung von 6 lediglich veranschaulichend. Es wird nicht zwischen derartigen Kategorien wie „Arbeitsstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „mobile Vorrichtung“, „Handheld-Vorrichtung“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“, und/oder anderen Vorrichtungs- oder Systemarten unterschieden, wie sie alle innerhalb des Umfangs der Computervorrichtung von 6 denkbar sind.
  • Der Bus 602 kann einen oder mehrere Busse darstellen, wie beispielsweise einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Bus 602 kann eine oder mehrere Busarten umfassen, wie beispielsweise einen Industrie-Standard-Architektur (ISA)-Bus, einen erweiterten Industrie-Standard-Architektur (EISA)-Bus, einen Video Electronics Standards Association (VESA)-Bus, einen Peripheral Component Interconnect (PCI)-Bus, einen Peripheral Component Interconnect Express (PCIe)-Bus und/oder eine andere Art von Bus.
  • Der Speicher 604 kann beliebige einer Vielzahl von computerlesbaren Medien umfassen. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf die von der Computervorrichtung 600 zugegriffen werden kann. Die computerlesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien und entfernbare als auch nicht entfernbare Medien umfassen. Beispielsweise und nicht beschränkend können die computerlesbaren Medien Computer-Speichermedien und Kommunikationsmedien umfassen.
  • Die Computer-Speichermedien können sowohl flüchtige als auch nichtflüchtige Medien und/oder entfernbare als auch nicht entfernbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen, wie beispielsweise computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und/oder anderen Datenarten, implementiert sind. Beispielsweise kann der Speicher 604 computerlesbare Anweisungen (z.B. solche, die ein Programm(e) und/oder ein Programmelement(e), wie beispielsweise ein Betriebssystem darstellen) speichern. Computer-Speichermedien können umfassen, sind jedoch nicht begrenzt auf, RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, magnetische Plattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere Medium, das verwendet werden kann, um die erwünschten Informationen zu speichern, und auf das von der Computervorrichtung 600 zugegriffen werden kann. Wie hier verwendet, umfassen Computerspeichermedien keine Signale per se.
  • Die Kommunikationsmedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datenarten in einem modulierten Datensignal, wie beispielsweise einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und beliebige Information-liefernde Medien umfassen. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, das eine oder mehrere seiner Eigenschaften eingestellt oder auf eine derartige Art und Weise geändert hat, um Informationen in dem Signal zu codieren. Beispielhaft und nicht einschränkend können die Kommunikationsmedien drahtgebundene Medien, wie beispielsweise ein drahtgebundenes Netzwerk oder eine direktverdrahtete Verbindung sowie drahtlosen Medien, wie beispielsweise akustische, HF-, Infrarot- und andere drahtlose Medien, umfassen. Kombinationen aus beliebigem des Obigen sollten ebenfalls innerhalb des Umfangs von computerlesbaren Medien umfasst sein.
  • Die CPU(s) 606 kann/können konfiguriert sein, um die computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Computervorrichtung 600 zu steuern, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 606 kann(können) jeweils einen oder mehrere Kerne (z.B. ein, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) umfassen, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 606 kann(können) jede Art von Prozessor umfassen und kann(können) unterschiedliche Arten von Prozessoren abhängig von der Art der implementierten Computervorrichtung 600 umfassen (z.B. Prozessoren mit weniger Kernen für mobile Vorrichtungen und Prozessoren mit mehr Kernen für Server). Beispielsweise kann der Prozessor abhängig von der Art von Computervorrichtung 600 ein ARM-Prozessor sein, der unter Verwendung des Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor sein, der unter Verwendung des Complex Instruction Set Computing (CISC) implementiert ist. Die Computervorrichtung 600 kann eine oder mehrere CPUs 606 zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzliche Co-Prozessoren, wie beispielsweise mathematische Co-Prozessoren, umfassen.
  • Die GPU(s) 608 kann(können) von der Computervorrichtung 600 verwendet werden, um Graphiken (z.B. 3D-Graphiken) zu rendern. Die GPU(s) 608 kann(können) Hunderte oder Tausende von Kernen umfassen, die in der Lage sind, Hunderte oder Tausende von Software-Threads gleichzeitig zu handhaben. Die GPU(s) 608 kann(können) Pixeldaten für Ausgabebilder als Antwort auf Rendering-Befehle erzeugen (z.B. Rendering-Befehle von der(den) CPU(s) 606, die über eine Host-Schnittstelle empfangen werden). Die GPU(s) 608 kann(können) Graphikspeicher, wie beispielsweise Anzeigespeicher, zum Speichern von Pixeldaten umfassen. Der Anzeigespeicher kann als Teil des Speichers 604 umfasst sein. Die GPU(s) 608 kann(können) zwei oder mehr GPUs umfassen, die in parallel (z.B. über eine Verbindung) arbeiten. Wenn zusammen kombiniert, kann jede GPU 608 Pixeldaten für unterschiedliche Abschnitte eines Ausgabebildes oder für unterschiedliche Ausgabebilder erzeugen (z.B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild). Jede GPU kann ihren eigenen Speicher umfassen oder kann sich Speicher mit anderen GPUs teilen.
  • In Beispielen, in denen die Computervorrichtung 600 die GPU(s) 608 nicht umfasst(umfassen), kann(können) die CPU(s) 606 verwendet werden, um Graphiken zu rendern.
  • Die Kommunikationsschnittstelle 610 kann einen oder mehrere Empfänger, Sender und/oder Sender-Empfänger umfassen, die es der Computervorrichtung 600 ermöglichen, mit anderen Computervorrichtungen über ein elektronisches Kommunikationsnetzwerk, einschließlich drahtgebundener und/oder drahtloser Kommunikation, zu kommunizieren. Die Kommunikationsschnittstelle 610 kann Komponenten und Funktionalität umfassen, um Kommunikation über ein beliebiges einer Anzahl von unterschiedlichen Netzwerken, wie beispielsweise drahtlose Netzwerke (z.B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netzwerke (z.B. Kommunikation über Ethernet), Low-Power-Weitbereichsnetzwerke (z.B. LoRaWAN, SigFox usw.) und/oder das Internet zu ermöglichen.
  • Die I/O-Ports 612 können es der Computervorrichtung 600 ermöglichen, logisch mit anderen Vorrichtungen, einschließlich der I/O-Komponenten 614, der Präsentationskomponente(n) 618 und/oder anderen Komponenten, von denen einigen in die Computervorrichtung 600 eingebaut (z.B. integriert) sein können, gekoppelt zu sein. Veranschaulichende I/O-Komponenten 614 umfassen ein Mikrophon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Spielecontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. Die I/O-Komponenten 614 können eine natürliche Benutzer-Schnittstelle (NUI) bereitstellen, die Luftgesten, Sprache oder andere physiologische Eingaben, die von einem Benutzer erzeugt werden, verarbeitet. In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzwerkelement übertragen werden. Eine NUI kann jede beliebige Kombination aus Spracherkennung, Styluserkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie nachstehend ausführlicher beschrieben), einer Anzeige der Computervorrichtung 600 zugeordnet sind. Die Computervorrichtung 600 kann Tiefenkameras umfassen, wie beispielsweise stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon zur Gestenerfassung und - erkennung. Zusätzlich kann die Computervorrichtung 600 Beschleunigungssensoren oder Gyroskope (z.B. als Teil einer Trägheitsmesseinheit (IMU)) umfassen, die die Erfassung von Bewegungen ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungssensoren oder Gyroskope von der Computervorrichtung 600 dazu verwendet werden, immersive erweiterte Realität oder virtuelle Realität zu rendern.
  • Die Leistungsversorgung 616 kann eine fest verdrahtete Leistungsversorgung, eine Batterieleistungsversorgung oder eine Kombination davon umfassen. Die Leistungsversorgung 616 kann e Leistung an die Computervorrichtung 600 liefern, um den Betrieb der Komponenten der Computervorrichtung 600 zu ermöglichen.
  • Die Präsentationskomponente(n) 618 kann(können) eine Anzeige (z.B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, eine Heads-up-Anzeige (HUD), andere Anzeigearten oder ein Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten umfassen. Die Präsentationskomponente(n) 618 kann(können) Daten von anderen Komponenten (z.B. den GPU(s) 608, den CPU(s) 606 usw.) empfangen und die Daten (z.B. als Bild, Video, Ton usw.) ausgeben.
  • Die Offenbarung kann im allgemeinen Kontext von Computercode oder maschinenverwendbaren Anweisungen, einschließlich computerausführbaren Anweisungen, wie beispielsweise Programmmodulen, die von einem Computer oder einer anderen Maschine, wie beispielsweise einem Assistenten für personenbezogene Daten oder einer anderen handgehaltenen Vorrichtung, ausgeführt werden, beschrieben werden. Allgemein beziehen sich Programmodule, einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., auf einen Code, der bestimmte Aufgaben ausführt oder bestimmte abstrakte Datentypen implementiert. Die Offenbarung kann in einer Vielfalt von Systemkonfigurationen praktiziert werden, die handgehaltene Vorrichtungen, Unterhaltungselektronik, Universalcomputer, spezialisiertere Computervorrichtungen usw. umfassen. Die Offenbarung kann auch in verteilten Computerumgebungen praktiziert werden, in denen Aufgaben von entfernten Verarbeitungsvorrichtungen, die über ein Kommunikationsnetzwerk verbunden sind, ausgeführt werden.
  • Wie hier verwendet, sollte eine Angabe von „und/oder“ in Bezug auf zwei oder mehr Elemente so interpretiert werden, dass nur ein Element oder eine Kombination von Elementen gemeint ist. Beispielsweise kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder Elemente A, B und C umfassen. Darüber hinaus kann „zumindest eines von Element A oder Element B“ zumindest eines von Element A, zumindest eines von Element B oder zumindest eines von Element A und zumindest eines von Element B umfassen. Weiterhin kann „zumindest eines von Element A und Element B“ zumindest eines von Element A, zumindest eines von Element B oder zumindest eines von Element A und zumindest eines von Element B umfassen.
  • Der Gegenstand der vorliegenden Offenbarung ist hier spezifisch beschrieben, um gesetzlichen Anforderungen zu entsprechen. Die Beschreibung selbst soll jedoch den Umfang dieser Offenbarung nicht einschränken. Vielmehr haben die Erfinder ins Auge gefasst, dass der beanspruchte Gegenstand auch auf andere Weisen verkörpert sein könnte, um unterschiedliche Schritte oder Kombinationen von Schritten ähnlich zu denen in diesem Dokument beschriebenen in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien zu umfassen. Außerdem sollten, obwohl die Begriffe „Schritt“ und/oder „Block“ hier verwendet werden können, um verschiedene Elemente der verwendeten Verfahren zu benennen, sollten die Begriffe nicht so interpretiert werden, dass sie eine bestimmte Reihenfolge unter oder zwischen den verschiedenen hier offenbarten Schritten bedeuten, es sei denn, dass die Reihenfolge der einzelnen Schritte ausdrücklich beschrieben wird.

Claims (20)

  1. Verfahren, umfassend: Empfangen von Bilddaten, die für ein Bild repräsentativ sind; Konvertieren der Bilddaten von einem höherdimensionalen Farbraum in ein konvertiertes Bild in einem niedrigerdimensionalen Farbraum; Kennzeichnen von Begrenzungen in dem konvertierten Bild; Erfassen von Pixeln, die Kandidateneckpunkte darstellen; Bestimmen eines Satzes der Kandidateneckpunkte, die sich innerhalb eines Schwellenabstands zu mindestens einer der Begrenzungen befinden; Analysieren des Satzes der Kandidateneckpunkte, um eine Untermenge der Kandidateneckpunkte zu bestimmen, die für Ecken von mindestens einem Polygon repräsentativ sind; und Anwenden mindestens eines Filters auf das mindestens eine Polygon, um ein Polygon des mindestens einen Polygons zu kennzeichnen, als einer Bezugsmarkiererbegrenzung eines Bezugsmarkierers zu entsprechen.
  2. Verfahren gemäß Anspruch 1, wobei das Konvertieren der Bilddaten in das konvertierte Bild mindestens eines von einer globalen Schwellenwertbildung oder einer adaptiven Schwellenwertbildung umfasst.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei das Kennzeichnen der Begrenzungen umfasst: Kennzeichnen erster aufeinanderfolgender Cluster einer ersten Farbe von Pixeln und zweiter aufeinanderfolgender Cluster einer zweiten Farbe von Pixeln in dem konvertierten Farbbild; und Bestimmen der Begrenzungen basierend mindestens teilweise auf Kennzeichnen, wo mindestens einer der ersten aufeinanderfolgender Cluster und mindestens einer der zweiten aufeinanderfolgender Cluster sich angrenzend zueinander erstrecken.
  4. Verfahren gemäß einem der vorangehenden Ansprüche, wobei der Bezugsmarkierer einer von einem AprilTag, einem ARTag, einem ARToolkit-Bezugsmarkierer oder einem ARToolkitPlus-Bezugsmarkierer ist.
  5. Verfahren gemäß einem der vorangehenden Ansprüche, wobei mindestens eines von dem Erfassen der Pixel in dem Bild, das die Kandidateneckpunkte darstellt, das Konvertieren der Bilddaten in das konvertierte Bild, das Kennzeichnen der Begrenzungen in dem konvertierten Bild, oder das Bestimmen des Satzes der Kandidateneckpunkte, die sich innerhalb des Schwellenabstands zu der mindestens einer der Begrenzungen befinden, durch eine Graphikverarbeitungseinheit (GPU) durchgeführt wird.
  6. Verfahren gemäß einem der vorangehenden Ansprüche, wobei das Konvertieren der Bilddaten in das konvertierte Bild umfasst: Konvertieren der Bilddaten in Graustufenbilddaten, die für eine Graustufen-Version des Bildes repräsentativ sind; und Schwellenwertbildung der Graustufenbilddaten, um Binärbilddaten zu erzeugen, die für eine Binärversion des Bildes repräsentativ sind, wobei das konvertierte Bild die Binärversion des Bildes ist.
  7. Verfahren gemäß einem der vorangehenden Ansprüche, wobei mindestens eines von dem Konvertieren der Bilddaten in das konvertierte Bild oder dem Kennzeichnen der Begrenzungen in dem konvertierte Bild parallel mit dem Erfassen der Pixel in dem Bild durchgeführt wird, welche die Kandidateneckpunkte darstellen.
  8. Verfahren gemäß einem der vorangehenden Ansprüche, wobei das Analysieren des Satzes der Kandidateneckpunkte, um die Untermenge der Kandidateneckpunkte zu bestimmen, die für die Ecken des mindestens einen Polygons repräsentativ sind, umfasst: Bestimmen von Elementen des Satzes der Kandidateneckpunkte, die einer gleichen Begrenzung-ID zugeordnet sind; Erzeugen von Rändern, die sich zwischen den Elementen des Satzes der Kandidateneckpunkte erstrecken; Berechnen von Winkeln, die durch angrenzende Ränder der Ränder gebildet werden; und Kennzeichnen der Elemente des Satzes der Kandidateneckpunkte, die einem Satz der Winkel kleinster Größe als die Untermenge der Kandidateneckpunkte zugeordnet sind.
  9. Verfahren gemäß einem der vorangehenden Ansprüche, wobei das Anwenden des mindestens einen Filters auf das mindestens eine Polygon umfasst: Decodieren von Pixelwerten innerhalb des mindestens einen Polygons, um Pixeldaten zu erzeugen, die für das mindestens eine Polygon repräsentativ sind; Vergleichen der Pixeldaten mit Bezugsmarkiererdaten, die für Bezugsmarkierer repräsentativ sind; und Bestimmen, basierend mindestens teilweise auf dem Vergleichen, ob irgendeines des mindestens einen Polygons irgendeinem der Bezugsmarkierer entsprechen.
  10. Verfahren, umfassend: Empfangen von Daten, die für Begrenzungen in einem ersten Bild repräsentativ sind, und zugeordneten Begrenzungskennungen (IDs) für die Begrenzungen; Bestimmen von Pixeln in mindestens einem von dem ersten Bild oder einem zweiten Bild, die Kandidateneckpunkte innerhalb eines Schwellenabstands zu mindestens einer der Begrenzungen darstellen; für jede Begrenzung der Begrenzungen: Bestimmen, basierend mindestens teilweise auf den Begrenzung-IDs, eines Satzes der Kandidateneckpunkte, die einer gleichen Begrenzung-ID zugeordnet sind; Erzeugen von Rändern, die sich zwischen Elementen des Satzes der Kandidateneckpunkte erstrecken; Berechnen von Winkeln, die durch angrenzende Ränder der Ränder gebildet werden; und Kennzeichnen einer Untermenge des Satzes der Kandidateneckpunkte, die einem Satz der Winkel kleinster Größe als Ecken eines Vierecks zugeordnet sind; und Anwenden mindestens eines Filters auf das Viereck, um zu bestimmen, ob das Viereck einer Bezugsmarkiererbegrenzung eines Bezugsmarkierers entspricht.
  11. Verfahren gemäß Anspruch 10, wobei mindestens ein erster Abschnitt des Verfahrens auf einer Zentralverarbeitungseinheit (CPU) ausgeführt wird und ein zweiter Abschnitt des Verfahrens auf einer Graphikverarbeitungseinheit (GPU) ausgeführt wird.
  12. Verfahren gemäß Anspruch 10 oder 11, wobei das Anwenden des mindestens einen Filters auf das Viereck umfasst: Decodieren von Pixelwerten innerhalb des Vierecks, um Pixeldaten zu bestimmen, die für das Viereck repräsentativ sind; Vergleichen der Pixeldaten mit Bezugsmarkiererdaten, die für Bezugsmarkierer repräsentativ sind; und Bestimmen, basierend mindestens teilweise auf dem Vergleichen, ob das Viereck irgendeinem der Bezugsmarkierer entspricht.
  13. Verfahren gemäß einem der Ansprüche 10 bis 12, wobei das Erzeugen der Ränder, die sich zwischen den Elementen des Satzes der Kandidateneckpunkte erstrecken, für jedes Element der Elemente umfasst: Erzeugen eines ersten Randes, der sich von dem Element in Richtung eines ersten angrenzenden Elements der Elemente erstreckt; und Erzeugen eines zweiten Randes, der sich von dem Element in Richtung eines zweiten angrenzenden Elements der Elemente erstreckt.
  14. Verfahren gemäß einem der Ansprüche 10 bis 13, wobei: basierend mindestens teilweise auf dem Erzeugen der Ränder, sich ein erster Rand von einem ersten Element der Elemente der Kandidateneckpunkte in Richtung eines zweiten Elements der Elemente angrenzend dem ersten Element erstreckt; basierend mindestens teilweise auf dem Erzeugen der Ränder, sich ein zweiter Rand von dem ersten Element der Elemente der Kandidateneckpunkte in Richtung eines dritten der Elemente angrenzend dem ersten Element erstreckt; der erste Rand und der zweite Rand in den angrenzenden Rändern enthalten sind; und das Berechnen der Winkel, die durch die angrenzenden Ränder der Ränder gebildet werden, das Berechnen eines Winkels umfasst, der durch den ersten Rand und den zweiten Rand gebildet wird.
  15. Verfahren gemäß einem der Ansprüche 10 bis 14, wobei der Bezugsmarkierer einer von einem AprilTag, einem ARTag, einem ARToolkit-Bezugsmarkierer, oder einem ARToolkitPlus-Bezugsmarkierer ist.
  16. Verfahren, umfassend: Bestimmen, durch eine oder mehrere Graphikverarbeitungseinheiten (GPUs) von Pixeln in einem Bild, die Kandidateneckpunkte innerhalb eines Schwellenabstands zu mindestens einer in dem Bild gekennzeichneten Begrenzung darstellen; Kopieren, durch die eine oder mehrere GPUs, der Pixel von dem GPU-Speicher in den Zentralverarbeitungseinheit(CPU)-Speicher, wobei der CPU-Speicher einem oder mehreren CPUs zugordnet ist; für jede Begrenzung der Begrenzungen: Bestimmen, durch die eine oder mehrere CPUs, eines Satzes der Kandidateneckpunkte, die einer gleichen Begrenzung der mindestens einen Begrenzung zugeordnet sind; Erzeugen, durch die eine oder mehrere CPUs, von Rändern, die sich zwischen Elementen des Satzes der Kandidateneckpunkte erstrecken; Berechnen, durch die eine oder mehrere CPUs, eines Winkels, der durch angrenzende Ränder der Ränder gebildet wird; und Kennzeichnen, durch die eine oder mehrere CPUs, einer Untermenge des Satzes der Kandidateneckpunkte, die einem Satz der Winkel kleinster Größe als Ecken eines Vierecks zugeordnet sind; und Bestimmen, durch die eine oder mehrere CPUs, ob das Viereck einer Bezugsmarkiererbegrenzung eines Bezugsmarkierers entspricht.
  17. Verfahren gemäß Anspruch 16, wobei das Bestimmen, ob das Viereck der Bezugsmarkiererbegrenzung des Bezugsmarkierers entspricht, umfasst: Decodieren von Pixelwerten innerhalb des Vierecks, um Pixeldaten zu bestimmen, die für das Viereck repräsentativ sind; Vergleichen der Pixeldaten mit Bezugsmarkiererdaten, die für Bezugsmarkierer repräsentativ sind; und Bestimmen, basierend mindestens teilweise auf dem Vergleichen, ob das Viereck irgendeinem der Bezugsmarkierer entspricht.
  18. Verfahren gemäß Anspruch 16 oder 17, wobei das Erzeugen der Ränder, die sich zwischen den Elementen des Satzes der Kandidateneckpunkte erstrecken, für jedes Element der Elemente umfasst: Erzeugen eines ersten Randes, der sich von der Element in Richtung eines ersten angrenzenden Elements der Elements erstreckt; und Erzeugen eines zweiten Randes, der sich von dem Element in Richtung eines zweiten angrenzenden Elements der Elemente erstreckt.
  19. Verfahren gemäß einem der Ansprüche 16 bis 18, wobei: basierend mindestens teilweise auf dem Erzeugen der Ränder, sich ein erster Rand von einem ersten Element der Elemente der Kandidateneckpunkte in Richtung eines zweiten Elements der Elemente angrenzend dem ersten Element erstreckt; basierend mindestens teilweise auf dem Erzeugen der Ränder, sich ein zweiter Rand von dem ersten Element der Elemente der Kandidateneckpunkte in Richtung eines dritten der Elemente angrenzend dem ersten Element erstreckt; der erste Rand und der zweite Rand in den angrenzenden Rändern enthalten sind; und das Berechnen der durch die angrenzenden Ränder der Ränder gebildeten Winkel das Berechnen eines durch den ersten Rand und den zweiten Rand gebildeten Winkels umfasst.
  20. Verfahren gemäß einem der Ansprüche 16 bis 19, wobei der Bezugsmarkierer einer von einem AprilTag, einem ARTag, einem ARToolkit-Bezugsmarkierer oder einem ARToolkitPlus-Bezugsmarkierer ist.
DE102020100684.5A 2019-01-15 2020-01-14 Kennzeichnung von graphischen bezugsmarkierern Active DE102020100684B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/248,135 US11113819B2 (en) 2019-01-15 2019-01-15 Graphical fiducial marker identification suitable for augmented reality, virtual reality, and robotics
US16/248,135 2019-01-15

Publications (2)

Publication Number Publication Date
DE102020100684A1 true DE102020100684A1 (de) 2020-07-16
DE102020100684B4 DE102020100684B4 (de) 2021-05-06

Family

ID=71132329

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020100684.5A Active DE102020100684B4 (de) 2019-01-15 2020-01-14 Kennzeichnung von graphischen bezugsmarkierern

Country Status (4)

Country Link
US (2) US11113819B2 (de)
JP (1) JP7429542B2 (de)
CN (1) CN111435438A (de)
DE (1) DE102020100684B4 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113839B2 (en) * 2019-02-26 2021-09-07 Here Global B.V. Method, apparatus, and system for feature point detection
US10496911B1 (en) 2019-03-18 2019-12-03 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing ultraviolet and infrared light
US10509991B1 (en) 2019-03-18 2019-12-17 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing infrared light
US10534948B1 (en) 2019-03-18 2020-01-14 Capital One Services, Llc Optimizing detection of images in relation to targets based on colorspace transformation techniques
US10496862B1 (en) 2019-03-18 2019-12-03 Capital One Services, Llc Detection of images in relation to targets based on colorspace transformation techniques and utilizing ultraviolet light
US10523420B1 (en) 2019-04-18 2019-12-31 Capital One Services, Llc Transmitting encoded data along transmission mediums based on colorspace schemes
US10614635B1 (en) 2019-07-25 2020-04-07 Capital One Services, Llc Augmented reality system with color-based fiducial marker
US10833852B1 (en) 2019-10-03 2020-11-10 Capital One Services, Llc Encoded data along tape based on colorspace schemes
US10715183B1 (en) 2019-10-25 2020-07-14 Capital One Services, Llc Data encoding with error-correcting code pursuant to colorspace schemes
US10867226B1 (en) 2019-11-04 2020-12-15 Capital One Services, Llc Programmable logic array and colorspace conversions
US10762371B1 (en) 2019-11-14 2020-09-01 Capital One Services, Llc Object detection techniques using colorspace conversions
US11106410B2 (en) * 2019-12-07 2021-08-31 Kyocera Document Solutions Inc. Automated template generation for tiling
US11106404B2 (en) * 2019-12-07 2021-08-31 Kyocera Document Solutions Inc. Template generation for tiling for appearance of overlap
US10878600B1 (en) * 2019-12-10 2020-12-29 Capital One Services, Llc Augmented reality system with color-based fiducial marker utilizing local adaptive technology
US20210192782A1 (en) * 2019-12-20 2021-06-24 Magic Leap, Inc. Methods and apparatuses for corner detection
US11356827B2 (en) * 2020-07-31 2022-06-07 King Abdulaziz University Compressive sensing-aided LPWAN MAC layer
WO2022037281A1 (zh) * 2020-08-19 2022-02-24 广西电网有限责任公司贺州供电局 一种基于机器视觉的变电现场作业实时监控与报警系统
US11302036B2 (en) 2020-08-19 2022-04-12 Capital One Services, Llc Color conversion between color spaces using reduced dimension embeddings
CN114155304A (zh) * 2020-09-04 2022-03-08 株式会社理光 空间平面图像比较方法、装置和计算机可读存储介质
CN112308983B (zh) * 2020-10-30 2024-03-29 北京虚拟动点科技有限公司 一种虚拟景象的布置方法、装置、电子设备及存储介质
CN112200191B (zh) * 2020-12-01 2021-07-20 北京京东尚科信息技术有限公司 图像处理方法、装置、计算设备及介质
CN114007047B (zh) * 2021-11-02 2024-03-15 广西电网有限责任公司贺州供电局 一种基于机器视觉的变电现场作业实时监控与报警系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757426B2 (en) * 2001-03-21 2004-06-29 Eastman Kodak Company System and method for image processing by automatic color dropout
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
CA2566260C (en) 2005-10-31 2013-10-01 National Research Council Of Canada Marker and method for detecting said marker
JP5109294B2 (ja) 2006-06-19 2012-12-26 三菱電機株式会社 3次元位置補正装置
WO2008118886A1 (en) * 2007-03-23 2008-10-02 Bioimagene, Inc. Digital microscope slide scanning system and methods
WO2010045271A1 (en) * 2008-10-14 2010-04-22 Joshua Victor Aller Target and method of detecting, identifying, and determining 3-d pose of the target
JP5286216B2 (ja) 2009-09-30 2013-09-11 エヌ・ティ・ティ・コムウェア株式会社 図形形状認識装置、図形形状認識方法、およびプログラム
US8622979B2 (en) 2010-10-19 2014-01-07 Baxter Healthcare S.A. Infusion system using optical imager for controlling flow and method thereof
CN104704535A (zh) * 2012-10-02 2015-06-10 索尼公司 增强现实系统
CN104732511B (zh) * 2013-12-24 2018-04-20 华为技术有限公司 一种凸多边形图像块的检测方法、装置及设备
US9641830B2 (en) * 2014-04-08 2017-05-02 Lucasfilm Entertainment Company Ltd. Automated camera calibration methods and systems
WO2015176163A1 (en) * 2014-05-21 2015-11-26 Millennium Three Technologies Inc Fiducial marker patterns, their automatic detection in images, and applications thereof
CA2991920A1 (en) * 2015-04-23 2016-10-27 The University Of British Columbia Multifocal method and apparatus for stabilization of optical systems
CN108898148B (zh) * 2018-06-27 2020-07-07 清华大学 一种数字图像角点检测方法、系统及计算机可读存储介质
US11010919B2 (en) * 2018-09-20 2021-05-18 Ford Global Technologies, Llc Object locator with fiducial marker
WO2020102803A1 (en) * 2018-11-16 2020-05-22 Geomni, Inc. Systems and methods for generating augmented reality environments from two-dimensional drawings
CN114730482A (zh) * 2019-11-27 2022-07-08 Oppo广东移动通信有限公司 关联多人增强现实系统中的设备坐标系
EP4058874A4 (de) * 2019-12-05 2023-05-03 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Verfahren und system zum zuordnen von gerätenkoordinatensystemen in einem ar-system mit mehreren personen

Also Published As

Publication number Publication date
DE102020100684B4 (de) 2021-05-06
US20200226762A1 (en) 2020-07-16
JP7429542B2 (ja) 2024-02-08
JP2020119550A (ja) 2020-08-06
CN111435438A (zh) 2020-07-21
US20210366124A1 (en) 2021-11-25
US11113819B2 (en) 2021-09-07

Similar Documents

Publication Publication Date Title
DE102020100684B4 (de) Kennzeichnung von graphischen bezugsmarkierern
US10803554B2 (en) Image processing method and device
WO2021000702A1 (zh) 图像检测方法、设备以及系统
EP3454250A1 (de) Gesichtsbildverarbeitungsverfahren und -vorrichtung und speichermedium
US8494297B2 (en) Automatic detection and mapping of symmetries in an image
DE112020001345T5 (de) Optimierung der erkennung von bildern in bezug auf ziele auf der grundlage von farbraumtransformationstechniken
DE112020001363T5 (de) Erkennung von bildern in bezug auf ziele auf der grundlage von farbraumtransformationstechniken und unter verwendung von ultraviolettem licht
Hane et al. Direction matters: Depth estimation with a surface normal classifier
DE102017009276A1 (de) Erzeugen eines dreidimensionalen modells aus einem gescannten gegenstand
US8744177B2 (en) Image processing method and medium to extract a building region from an image
DE112016006873T5 (de) Erfassung von Menschen in Bildern unter Verwendung von Tiefeninformationen
DE112014006439B4 (de) Kantenerkennungsvorrichtung, Kantenerkennungsverfahren und Programm
WO2017088637A1 (zh) 自然背景中图像边缘的定位方法及装置
JP2016095854A (ja) 画像処理方法及び装置
DE102015200260A1 (de) Verfahren zum Erstellen eines Deskriptors für ein Szenenbild
DE102018003475A1 (de) Formbasierte Grafiksuche
US20120033873A1 (en) Method and device for determining a shape match in three dimensions
Bach et al. Controlling explanatory heatmap resolution and semantics via decomposition depth
DE112013007755T5 (de) Protokoll für kommunikationen zwischen plattformen und bildgeräten
CN112651953A (zh) 图片相似度计算方法、装置、计算机设备及存储介质
CN106056575B (zh) 一种基于似物性推荐算法的图像匹配方法
DE102017131364A1 (de) Zwanglose erscheinungs-basierte blickschätzung
Körting et al. Divide And Segment-An Alternative For Parallel Segmentation.
CN116843909B (zh) 电力线提取方法及装置、存储介质、计算机设备
CN108665434B (zh) 图像合成方法及装置

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0007120000

Ipc: G06T0007130000

R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102020007997

Country of ref document: DE

R020 Patent grant now final