DE102017128297A1 - Technologie zur Merkmalserkennung und -verfolgung - Google Patents

Technologie zur Merkmalserkennung und -verfolgung Download PDF

Info

Publication number
DE102017128297A1
DE102017128297A1 DE102017128297.1A DE102017128297A DE102017128297A1 DE 102017128297 A1 DE102017128297 A1 DE 102017128297A1 DE 102017128297 A DE102017128297 A DE 102017128297A DE 102017128297 A1 DE102017128297 A1 DE 102017128297A1
Authority
DE
Germany
Prior art keywords
data
sliding window
feature
reuse
buffer
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.)
Pending
Application number
DE102017128297.1A
Other languages
English (en)
Inventor
Dipan Kumar Mandal
Om J. Omer
Lance E. Hacking
James Radford
Sreenivas Subramoney
Eagle Jones
Gautham Chinya
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102017128297A1 publication Critical patent/DE102017128297A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • 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/10016Video; Image sequence
    • 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/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/467Encoded features or binary features, e.g. local binary patterns [LBP]
    • 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/62Extraction of image or video features relating to a temporal dimension, e.g. time-based feature extraction; Pattern tracking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

Aspekte der vorliegenden Offenbarung beziehen sich auf Technologien (Systeme, Geräte, Verfahren usw.) zum Durchführen von Merkmalserkennung und/oder Merkmalsverfolgung auf Grundlage von Bilddaten. In Ausführungsformen enthalten oder nutzen Technologien einen SLAM-Hardwarebeschleuniger (SLAM Hardware Accelerator; SWA), der eine Merkmalserkennungskomponente und optional eine Merkmalsverfolgungskomponente enthält. Die Merkmalserkennungskomponente kann dafür konfiguriert sein, Merkmalserkennung anhand von Arbeitsdaten, die von einem Gleitfenster umschlossen sind, durchzuführen. Die Merkmalsverfolgungskomponente ist konfiguriert, Merkmalsverfolgungsoperationen zum Verfolgen von einem oder mehreren erkannten Merkmal/en durchzuführen, beispielsweise unter Verwendung normierter Kreuzkorrelation (Normalized Cross Correlation; NCC) oder einem anderen Verfahren.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft generell Merkmalserkennungs- und Verfolgungstechnologien und insbesondere Merkmalserkennungs- und Verfolgungstechnologien, die für Computer-Vision-Anwendungen, wie etwa simultane Lokalisierung und Kartenerstellung (Simultaneous Localization and Mapping; SLAM), verwendbar sind. Es werden auch Verfahren, Geräte und Systeme, die solche Technologien verwenden, beschrieben.
  • HINTERGRUND
  • Simultane Lokalisierung und Kartenerstellung (Simultaneous Localization and Mapping; SLAM) ist eine Computer-Vision-Aufgabe, die sich mit dem Berechnungsproblem des Konstruierens und/oder Aktualisierens einer Karte einer Umgebung bei gleichzeitigem Verfolgen eines Agenten/einer Plattform innerhalb der Karte befasst. Es ist eine große Vielzahl von SLAM-Algorithmen bekannt und sie werden häufig dazu verwendet, um Computer Vision im Kontext verschiedener Plattformen, wie etwa automatisierte Roboter, selbstfahrende Fahrzeuge, Virtual Reality (VR) Headsets, Augmented Reality (AR) Headsets und dergleichen, zu ermöglichen. Viele SLAM-Algorithmen sind auf Ressourcen zugeschnitten, die der Plattform, auf der sie implementiert sind, zur Verfügung stehen. Ein visueller SLAM-Algorithmus kann beispielsweise dafür konfiguriert sein, Bilddaten, die von einer oder mehreren Kamera/s auf einer Plattform bereitgestellt werden, dafür zu verwenden, um eine dreidimensionale Karte des Umfelds, das die Plattform umgibt, sowie die Position (Pose) der Kamera innerhalb der Karte zu ermitteln. In solchen Fällen kann die Karte des Umfelds und die dreidimensionale (3D) Position der Plattform und/oder einer Kamera durch Analysieren einer zeitlichen Sequenz von Bildern, die von der Kamera bereitgestellt werden, geschätzt werden, beispielsweise wenn die Plattform und/oder die Kamera sich bewegt.
  • Merkmal- (d. h. Ecken)-Erkennung ist häufig ein anfänglicher Bildverarbeitungsschritt in vielen visuellen SLAM-Algorithmen. Es wurden daher viele Merkmal- (d. h. Ecken)-Detektoren entwickelt, obwohl die praktische Implementierung solcher Detektoren in manchen Anwendungen schwierig bleibt. Manche Merkmaldetektoren für visuelles SLAM sind beispielsweise konfiguriert, Merkmale in einem Bildfluss mit 30 Bildern pro Sekunde (30 Frames per Second; FPS) Video Graphics Array (VGA), der von einer Kamera auf Einzelbildbasis bereitgestellt wird, zu erkennen. Wenn solche Merkmaldetektoren eine Erkennung auf Einzelpixelbasis in Hinblick darauf durchführen, ob Merkmale (d. h. Ecken) in jedem Bild vorhanden sind, können große Mengen an Berechnungszyklen, Eingabe/Ausgabe (Input/Output; I/O) Operationen, elektrische Leistung usw. konsumiert werden. In der Tat können viele existierende Merkmaldetektoren, trotz des enormen Anstiegs der Rechenleistung im Laufe der Zeit, immer noch einen großen Teil oder sogar die gesamte Verarbeitungsbandbreite eines Prozessors konsumieren. Die Implementierung von Merkmaldetektoren für visuelles SLAM in Software (zum Beispiel über einen Allzweckprozessor) kann auch für latenzempfindliche Anwendungen, wie etwa, aber nicht beschränkt auf VR, AR und/oder Merkmalserkennungs-/Verfolgungstechniken in Echtzeit, zu langsam sein.
  • Ähnliche Herausforderungen bestehen in Hinblick auf andere Aspekte von visuellem SLAM. Zusätzlich zu einem oder mehreren Merkmalsdetektor/en können manche Systeme zum Implementieren von visuellem SLAM zum Beispiel einen oder mehrere Merkmalsverfolger zum Verfolgen der Position der in den Bilddaten erkannten Merkmale enthalten. Wie die vorstehend angesprochenen Merkmaldetektoren sind viele Merkmalverfolgungstechniken rechnerisch teuer, konsumieren signifikante I/O-Operationen und/oder konsumieren signifikante elektrische Leistung.
  • Die Implementierung von Merkmalserkennungs- und/oder Merkmalsverfolgungsoperationen für visuelles SLAM bleibt daher bei manchen Anwendungen schwierig. Dies gilt insbesondere für die Implementierung von visuellem SLAM auf Plattformen mit beschränkten Rechen- und/oder Stromressourcen (z. B. mobile Plattformen, wie etwa Smartphones, Roboter, Laptop-Computer, Tablet-Computer usw.) und/oder auf Plattformen, die latenzsensibel sind (z. B. AR, VR, Echtzeit-Erkennung und/oder Verfolgung usw.).
  • Figurenliste
  • Merkmale und Vorteile der Ausführungsformen des beanspruchten Gegenstands lassen sich aus der nachfolgenden ausführlichen Beschreibung erschließen und unter Bezugnahme auf die Zeichnungen, wobei ähnliche Referenzzeichen ähnliche Teile markieren, und in denen:
    • 1A ein Blockdiagramm eines Systems zum Durchführen von Merkmalserkennung unter Verwendung eines visuellen SLAM-Algorithmus dem Stand der Technik entsprechend ist;
    • 1B ein Beispiel einer Pixelnachbarschaft, einschließlich eines Kandidatenpixels, der zum Durchführen von FAST-Eckenerkennung geeignet ist, entsprechend dem Stand der Technik darstellt;
    • 2A ein Blockdiagramm eines Beispiels eines Systems zum Durchführen von Merkmalserkennung und/oder -verfolgung nach der vorliegenden Offenbarung ist;
    • 2B ein High-Level-Blockdiagramm eines SLAM-Hardwarebeschleunigers (Hardware Accelerator; HWA) nach der vorliegenden Offenbarung ist;
    • 3 ein Blockdiagramm eines Beispiels einer Merkmalserkennungskomponente eines SLAM HWA nach der vorliegenden Offenbarung ist;
    • 4 ein Flussdiagramm beispielhafter Operationen gemäß einem beispielhaften Verfahren zum Durchführen von Merkmalsverfolgung unter Verwendung eines Gleitfensters nach der vorliegenden Offenbarung ist;
    • 5A-5H die Verwendung eines Gleitfensters während der Durchführung der Merkmalsverfolgung nach beispielhaften Ausführungsformen der vorliegenden Offenbarung veranschaulichen;
    • 6A-6E schrittweise die Durchführung von Merkmalserkennungsoperationen für Arbeitsdaten innerhalb eines Gleitfensters nach der vorliegenden Offenbarung veranschaulichen;
    • 7 ein Flussdiagramm beispielhafter Operationen eines beispielhaften Verfahrens des Durchführens von Merkmalserkennung, einschließlich Merkmalsbewertung, nach der vorliegenden Offenbarung ist;
    • 8 ein Blockdiagramm eines Beispiels einer Merkmalsverfolgungskomponente nach der vorliegenden Offenbarung ist;
    • 9 ein Flussdiagramm der Operationen eines Verfahrens zum Durchführen von Merkmalsverfolgung nach der vorliegenden Offenbarung ist;
    • 10 ein Flussdiagramm beispielhafter Operationen gemäß einem Verfahren zum Durchführen von Merkmalsverfolgung unter Verwendung von Ganzzahlpräzisions-NCC ist;
    • 11 ein Blockdiagramm eines Systems zum Durchführen von Ganzzahlpräzisions-NCC nach der vorliegenden Offenbarung ist;
    • 12 ein Blockdiagramm eines Systems zum Durchführen von On-the-Fly-Merkmalserkennung und -verfolgung nach der vorliegenden Offenbarung ist;
    • 13 ein Flussdiagramm beispielhafter Operationen eines Beispiels eines Verfahrens zum Durchführen von On-the-Fly-Merkmalserkennung und -verfolgung nach der vorliegenden Offenbarung ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie kurz im Hintergrund diskutiert ist die Merkmals- (z. B. Ecken-) Erkennung oft ein anfänglicher Verarbeitungsschritt in vielen Computer-Vision-Prozessen, wie etwas visuellem SLAM. Ein Beispiel für einen Merkmaldetektor, der für die Verwendung im SLAM geeignet ist, ist Features von Accelerated Segment Test, der auch als FAST-Eckendetektor bekannt ist. Der FAST-Eckendetektor ist herkömmlich in Software implementiert, d. h. über die Durchführung von Bildverarbeitungsoperationen durch einen Allzweckprozessor.
  • Obwohl die Implementierung eines FAST-Eckendetektors in Software gut verstanden ist, fährt die vorliegende Offenbarung damit fort, den Betrieb eines beispielhaften FAST-Eckendetektors zum Zweck der Klarheit und des Gesamtzusammenhangs zu beschreiben. Es wird sich daher auf 1A bezogen, die ein Blockdiagramm eines beispielhaften Systems nach dem Stand der Technik 100 zum Durchführen von FAST-Eckenerkennung in Software, die einen Allzweckprozessor verwendet, zum Beispiel in Verbindung mit visuellem SLAM, zeigt. System 100 enthält einen Bildsensor 101, einen Bildsignalprozessor (Image Signal Prozessor; ISP) 103, einen Speicher 105, einen Prozessor 107 und einen Bus 109. Bildsensor 101 ist für das Senden eines Sensorsignals an ISP 103 betreibbar, der für das Verarbeiten des Sensorsignals zum Produzieren von Bilddaten, die in Speicher 105 gespeichert sind, betreibbar ist. Die Bilddaten können als eine Datenstruktur entsprechend einem zweidimensionalem (2D) Pixelfeld, das hierin auch als ein digitales Bild bezeichnet wird, gespeichert werden.
  • Zum Durchführen der FAST-Eckenerkennung holt (liest) Prozessor 107 Bilddaten, die einer gesamten Pixelnachbarschaft innerhalb des digitalen Bildes entsprechen, aus dem Speicher 105 ein. Prozessor 107 führt dann FAST-Eckenerkennungsoperationen für einen einzelnen Kandidatenpixel in der Nachbarschaft durch, um festzustellen, ob der Kandidatenpixel eine Ecke ist, und die resultierende Feststellung (Ausgabe) wird in den Speicher 105 geschrieben. Die Bilddaten, die der gesamten berücksichtigten Pixelnachbarschaft entsprechen, werden dann verworfen und der Prozessor holt aus dem Speicher 105 Bilddaten ein, die einer vollständig neuen Nachbarschaft entsprechen. Es werden dann für die neue Nachbarschaft Merkmalserkennungsoperationen durchgeführt. Der Prozess iteriert bis viele oder alle Pixel in dem digitalen Bild von Prozessor 107 auf „Eckigkeit“ analysiert wurden. Der generelle Informationsfluss durch System 100 (d. h. von Bildsensor 101 zu ISP 103 zu Speicher 105 und zu/von Prozessor 107) wird durch gestrichelte Linien 111 angezeigt.
  • 1B zeigt ein Beispiel einer Nachbarschaft 115 von Pixeln 113 für die FAST-Eckenerkennungsoperationen gemäß dem Stand der Technik durchgeführt werden können. Nachbarschaft 115 enthält mehrere Pixelreihen R und mehrere Pixelspalten C. Genauer gesagt enthält Nachbarschaft 115 sieben Pixelreihen (R0-R6) und sieben Pixelspalten (C1-C6), wobei jede Pixelreihe R sieben Pixel (R0,C0; RO,C1; R0,C2 usw.) und jede Pixelspalte C sieben Pixel (C0,R0; C0,R1; C0,R2 usw.) enthält. Nachbarschaft 115 ist daher die Mindestgröße, in der ein Bresenham-Kreis mit Radius 3 definiert werden kann. Schattierte Blöcke (nummeriert von 1 bis 16) werden in 1B dafür verwendet, um Pixel 113 an der Peripherie eines Bresenham-Kreises mit Radius 3 relativ zu einem Zentrum-Pixel p1 (der hierin auch als ein Kandidatenpixel bezeichnet wird) anzuzeigen.
  • Zum Durchführen der FAST-Eckenerkennung vergleicht Prozessor 107 die Intensität jedes der Pixel (1-16) an der Peripherie des Bresenham-Kreises mit der Intensität (Ip) des Kandidatenpixels p1 plus oder minus einem Schwellenwert (t). Prozessor 107 kann den Kandidatenpixel p1 als eine Ecke klassifizieren, wenn ein Satz mit einer Schwellenzahl (n) benachbarter Pixel an der Peripherie des Bresenham-Kreises existiert, die jeweils eine Intensität von größer als Ip + t aufweisen oder die eine Intensität von kleiner als Ip - t aufweisen.
  • Die Analyse der „Eckigkeit“ von Pixel p1 über den FAST-Eckendetektor kann daher das Einholen von 49 Pixeln Bilddaten aus dem Speicher und das Durchführen von bis zu 32 Intensitätsvergleichen umfassen - bis zu 16 für den Vergleich der Intensität jedes der Pixel 1-16 mit Ip + t und bis zu 16 für den Vergleich der Intensität jedes Pixels 1-16 mit Ip - t. Obwohl alle 32 Vergleiche für Kandidatenpixel p1 durchgeführt werden können, wurden Optimierungen des FAST-Eckendetektors entwickelt, die die Anzahl der Intensitätsvergleiche, die zum Ermitteln, ob ein Kandidatenpixel p1 eine Ecke ist oder nicht, erforderlich sind, potenziell reduzieren können. Durch Festlegen von n auf einen hinreichend hohen Wert (z. B. 12) kann beispielsweise festgestellt werden, dass Pixel p1 keine Ecke ist, wenn die Intensität eines der Pixel 1, 5, 9 oder 13 in dem Bresenham-Kreis nicht größer ist als die Intensität von Pixel p1 + t oder kleiner als die Intensität von p1 - t. Prozessor 107 kann daher zuerst die Intensität der Pixel 1, 5, 9 und 13 mit Ip +/- t vergleichen, um festzustellen, ob die Intensität aller dieser Pixel größer als Ip + t oder kleiner als Ip - t ist oder nicht. Falls nicht, kann p1 schnell als keine Ecke klassifiziert werden. Dennoch kann die Durchführung zahlreicher Intensitätsvergleiche durch Prozessor 107 zum Feststellen, ob Pixel p1 eine Ecke ist oder nicht, immer noch erforderlich sein.
  • Im Kontext der vorliegenden Offenbarung wird angenommen, dass Pixel eine quadrilaterale Form aufweisen, und dass zwei Pixel „benachbart“ zueinander sind, wenn eine oder mehrere ihrer Seite/n oder Ecken angrenzend zueinander liegen (d. h. sich berühren). Pixel 2 in 1B ist daher zu Pixeln 1 und 3 benachbart, aber nicht zu Pixel 16 benachbart. Ebenso ist Pixel 9 in 1B zu Pixeln 10 und 8 benachbart, aber nicht zu Pixeln 11 und 7 benachbart. Demgegenüber wird der Begriff „direkt angrenzend“ hierin verwendet, um zwei oder mehr Pixel zu beschreiben, die mindestens eine angrenzende Seite, Oberseite und/oder Unterseite haben. Dementsprechend ist Pixel 8 in 1B benachbart zu Pixeln 9 und 7, aber nur an Pixel 9 direkt angrenzend. Ebenso ist Pixel 9 zu Pixeln 10 und 8 benachbart und direkt angrenzend.
  • Es versteht sich weiterhin, dass Nachbarschaft 115 nur eine Nachbarschaft in einem berücksichtigten digitalen Bild ist, und dass p1 nur ein Pixel in solch einer Nachbarschaft ist. Zum Analysieren der „Eckigkeit“ jedes (oder der meisten) Pixel in einem in Speicher 205 gespeicherten digitalen Bild, müssen von Prozessor 107 möglicherweise viele Nachbarschaften und Kandidatenpixel, die Nachbarschaft 115 und Pixel p1 ähnlich sind, analysiert werden. Dies gilt insbesondere, wenn jede Nachbarschaft eine relativ kleine Teilmenge von Pixeln innerhalb des berücksichtigten digitalen Bildes darstellt. Weiterhin versteht es sich im Kontext von 1A, dass nach der Durchführung der FAST-Eckenerkennung für Pixel P1 in Nachbarschaft 115 alle Bilddaten, die der Nachbarschaft 115 entsprechen, verworfen werden, Bilddaten, die einer vollständig neuen Nachbarschaft entsprechen, aus dem Speicher gelesen werden und die FAST-Eckenerkennung für einen Kandidatenpixel in der neuen Nachbarschaft durchgeführt wird. Dieser Prozess kann iterieren bis die Eckigkeit aller oder der meisten Pixel in dem berücksichtigten Bild festgestellt wurden. Viele Rechenzyklen, I/O-Operationen (d. h. Lesen von Bilddaten aus dem Speicher) und/oder elektrische Leistung können daher konsumiert werden, wenn Prozessor 107 die FAST-Eckenerkennung für ein einzelnes digitales Bild durchführt. Solche Probleme können in Fällen, in denen der Prozessor 107 die FAST-Eckenerkennung für mehrere digitale Bilder durchführen soll, beispielsweise in einem Videostream, der von dem Bildsensor 101 und ISP 103 bereitgestellt wird, noch verschärft werden.
  • Aspekte der vorliegenden Offenbarung beziehen sich auf Technologien (Systeme, Geräte, Verfahren usw.) zum Durchführen von Merkmalserkennung und/oder Merkmalsverfolgung auf Grundlage von Bilddaten. In Ausführungsformen enthalten oder nutzen Technologien einen SLAM-Hardwarebeschleuniger (Hardware Accelerator; SWA), der eine Merkmalserkennungskomponente und optional eine Merkmalsverfolgungskomponente enthält. Die Merkmalserkennungskomponente kann dafür konfiguriert sein, Merkmalserkennung anhand von Arbeitsdaten, die von einem Gleitfenster umschlossen sind, durchzuführen.
  • Merkmalserkennungsoperationen, wie etwa FAST-Eckenerkennung, können anhand von Arbeitsdaten, die von einem Gleitfenster umschlossen sind, beispielsweise unter Verwendung von einem oder mehreren Merkmalserkennungsprozess/en, wie hierin beschrieben durchgeführt werden. Die Verwendung des hierin beschriebenen Gleitfensters kann es ermöglichen, signifikante Bilddatenmengen für Merkmalserkennungsoperationen wiederzuverwenden. Anders als Merkmalsdetektoren, die von dem Einholen eines vollständig neuen Satzes von Bilddaten jedes Mal, wenn eine Merkmalserkennungsoperation durchgeführt wird, abhängig sind, können die hierin beschriebenen Technologien beispielsweise mindestens einen Teil der zuvor eingeholten Bilddaten für das Arbeiten in mehreren Merkmalserkennungsoperationen verwenden. Es muss daher vor der Durchführung jeder Merkmalserkennungsoperation nur eine relativ kleine Menge neuer Daten aus dem Speicher gelesen oder anderweitig eingegeben werden.
  • In Ausführungsformen der hierin beschriebenen Technologien ist eine Merkmalserkennungsanordnung enthalten, die dafür konfiguriert ist, die Merkmalserkennungsoperationen für mehrere Kandidatenpixel innerhalb der Arbeitsdaten durchzuführen (z. B. durch individuelle Merkmalserkennungsprozessoren innerhalb der Merkmalserkennungsanordnung). Ein Allzweckprozessor des Systems/des Geräts kann daher bei der Durchführung der Merkmalserkennungsoperationen entlastet werden. Die Anzahl der für die Durchführung solcher Operationen erforderlichen Rechenzyklen kann ebenfalls reduziert werden, insbesondere in Fällen, in denen die Merkmalserkennungsanordnung mehrere Merkmalserkennungsprozessoren enthält, die Merkmalerkennungsoperationen für mehrere Kandidatenpixel in den Arbeitsdaten parallel zueinander durchführen.
  • In weiteren Ausführungsformen können die hierin beschriebenen Technologien auch die Bewertung von in einem Bild entdeckten Merkmalen ermöglichen. In Ausführungsformen der hierin beschriebenen Technologien können beispielsweise ein oder mehrere Merkmalserkennungsprozessor/en enthalten sein (z. B. in einer Merkmalserkennungsanordnung), die dafür konfiguriert sind, Merkmalserkennungsoperationen unter Verwendung der FAST-Eckenerkennungs-Methode durchzuführen. Die Merkmalserkennungsprozessoren können dafür konfiguriert sein, einen Kandidatenpixel als eine Ecke zu klassifizieren, beispielsweise durch Vergleichen der Intensität (Ip) des Kandidatenpixels plus oder minus einem Schwellenwert (t) mit der Intensität der Pixel an der Peripherie eines Bresenham-Kreises mit Radius 3, wie vorstehend unter Bezugnahme auf 1A diskutiert. Falls eine Schwellenwertzahl n von Pixeln an der Peripherie des Bresenham-Kreises jeweils einen Intensitätswert von größer als Ip + t oder kleiner als Ip - t aufweist, kann der Merkmalerfassungsprozessor den betreffenden Kandidatenpixel als eine Ecke klassifizieren. In Ausführungsformen kann der bzw. können die Merkmalerkennungsprozessor/en einen Eckenstärkewert für eine erkannte Ecke festlegen, wobei der Eckenstärkewert einen Grad darstellt, in dem davon ausgegangen wird, dass eine erkannte Ecke eine Ecke ist. Dies kann beispielsweise durch Erhöhen oder Verringern des Schwellenwerts t, der zum Klassifizieren eines Kandidatenpixels als eine Ecke verwendet wird, und ein erneutes Durchführen der FAST-Eckenerkennung für den Kandidatenpixel unter Verwendung des angeglichenen Schwellenwerts erreicht werden. Dieser Prozess kann iterieren bis ein angeglichener Schwellenwert verwendet wird, der nicht darin resultiert, dass der Kandidatenpixel als eine Ecke klassifiziert wird. Der höchste Schwellenwert, bei dem der Kandidatenpixel noch als eine Ecke klassifiziert wurde, kann dann als der Eckenstärkewert verwendet werden.
  • Ausführungsformen des SLAM HWA enthalten auch eine Merkmalsverfolgungskomponente, die dafür konfiguriert ist, ein oder mehrere Merkmal/e, die von der Merkmalserkennungskomponente erkannt wurde/n, zu verfolgen. In Ausführungsformen können ein oder mehrere Merkmal/e, die von der Merkmalserkennungskomponente erkannt wurde/n, in einer Datenstruktur (z. B. eine Liste erkannter Merkmale) in einem Speicher, der von der Merkmalserkennungskomponente und der Merkmalsverfolgungskomponente geteilt wird, gespeichert werden. Die Merkmalverfolgungskomponente kann dafür konfiguriert werden, Merkmale in der Liste erkannter Merkmale nach ihren Pixelkoordinaten innerhalb eines digitalen Bildes zu sortieren. Die Verfolgungskomponente kann beispielsweise konfiguriert werden, erkannte Merkmale auf Basis einer Reihenfolge, in der Zeilen (die auch als Reihen bezeichnet werden) der Bilddaten, die von einem Bildsensor und/oder einem Bildsignalprozessor (Image Signal Processor; ISP) produziert (gerastert) werden, zu sortieren. In Fällen, in denen Zeilen von Bilddaten beispielsweise von oben nach unten gerastert werden, kann die Verfolgungskomponente dafür konfiguriert werden, Merkmale in der Liste erkannter Merkmale nach ihrer vertikalen Pixelkoordinate zu sortieren. Erkannte Merkmale nahe an einem oberen Rand eines vorherigen Bildes können dann von der Verfolgungskomponente zuerst verfolgt werden. Anders ausgedrückt: Merkmale in der Liste erkannter Merkmale können in der gleichen Reihenfolge verfolgt werden, in der sie als in neuen Bilddaten erscheinend vorhergesagt werden, wodurch die Verfolgungslatenz potenziell verringert wird. Die Verfolgungskomponente kann daher für das Verfolgen von Merkmalen in der Liste erkannter Merkmale in Echtzeit (d. h. während neue Bilddaten bereitgestellt werden) nützlich sein, was zu der nützlichen Anwendung der Technologien hierin in Echtzeit und bei latenzsensiblen Merkmalserkennungs- und/oder Verfolgungsanwendungen führen kann.
  • Die Merkmalsverfolgungskomponente kann auch konfiguriert sein, Merkmalsverfolgungsoperationen zum Verfolgen von einem oder mehreren erkannten Merkmal/en durchzuführen, beispielsweise unter Verwendung normierter Kreuzkorrelation (Normalized Cross Correlation; NCC) oder einem anderen Verfahren. In diesen Fällen kann die Merkmalsverfolgunskomponente ein Verfolgungselement und ein Erkennungselement enthalten. Das Verfolgungselement kann konfiguriert sein, ein ausgewähltes, zu verfolgendes Merkmal aus einer Liste erkannter Merkmale, die beispielsweise in einem mit dem Erkennungselement geteilten Speicher gespeichert ist, zu identifizieren. In solchen Fällen kann die Liste erkannter Merkmale Bilddaten, einschließlich Merkmalen, die von einer Merkmalserkennungskomponente erkannt wurden, sowie eine Nachbarschaft (Patch) von Pixeln um jedes erkannte Merkmal herum, enthalten. In Ausführungsformen kann das Verfolgungselement Bilddaten verwenden, die ein ausgewähltes, zu verfolgendes Merkmal und seine Nachbarschaft als einen „Referenzpatch“, beispielsweise für das Durchführen von NCC-Operationen, enthalten. In diesem Wissen kann das Verfolgungselement ferner konfiguriert sein, eine vorhergesagte Bildposition, an der das Erscheinen eines ausgewählten Merkmals innerhalb neuer Bilddaten vorhergesagt ist, festzustellen. Das Verfolgungselement kann das Erkennungselement veranlassen neue Bilddaten, die der vorhergesagten Position entsprechen, beispielsweise aus einem gemeinsamen Speicher, abzurufen (z. B. lesen). Die neuen Bilddaten können mehreren Pixelnachbarschaften (Patches) innerhalb des neuen Bildes, die sich an oder um die vorhergesagte Bildposition befinden, entsprechen. In Ausführungsformen kann das Erkennungselement ein Gleitfenstermodul enthalten, das dafür konfiguriert ist, Merkmalerkennungsoperationen für jede der mehreren Nachbarschaften unter Verwendung von einem oder mehreren Gleitfenster/n durchzuführen, beispielsweise weitgehend auf die gleiche Weise, wie die hierin beschriebenen Merkmalserkennungskomponenten. Von dem Erkennungselement erkannte Merkmale könnten an die Verfolgungskomponente gemeldet werden, beispielsweise als ein oder mehr Testpatch/es. Das Verfolgungselement kann die Testpatches und das Referenzpatch unter Verwendung einer NCC-Methode vergleichen. In Ausführungsformen kann das Verfolgungselement eine Ganzzahlpräzisions-NCC-Methode zum Vergleichen der Test- und Referenzpatches verwenden, was potenziell zu weiteren Verbesserungen führt.
  • Die hierin beschriebenen Merkmalserkennungs- und/oder Verfolgungstechnologien können in einem oder mehreren elektronischen Geräten implementiert werden. Wie hierin verwendet werden die Bezeichnungen „Gerät“, „Geräte“, „elektronisches Gerät“ und „elektronische Geräte“ austauschbar verwendet, um individuell oder kollektiv Bezug auf jedwede der zahlreichen elektronischen Geräte zu nehmen, die Merkmalserkennungs- und/oder Verfolgungstechnologien nach der vorliegenden Offenbarung implementieren oder enthalten können. Nicht einschränkende Beispiele für solche Geräte umfassen jedwede Art von mobilem Gerät und/oder stationärem Gerät, wie etwa Kameras, Mobiltelefone, Computerterminals, Desktop-Computer, elektronische Lesegeräte, Faxmaschinen, Kioske, Netbook-Computer, Notebook-Computer, Internetgeräte, Bezahlterminals, persönliche digitale Assistenten, Medienspieler und/oder - rekorder, Server, Set-Top-Boxen, Smartphones, Tablet-Personal-Computer, ultramobile Personal Computer, verdrahtete Telefone, autonome Roboter, autonome Fahrzeuge, Virtual und/oder Augmented Reality-Plattformen (Headsets, Brillen usw.), Kombinationen davon und dergleichen. Solche Geräte können tragbar oder stationär sein. Ohne Einschränkungen sind die hierin beschriebenen Merkmalerkennungs- und/oder Verfolgungstechnologien in manchen Ausführungsformen in oder mit einem oder mehreren mobilen Elektronikgerät/en implementiert, wie etwa einem oder mehreren Mobiltelefonen, Desktop-Computern, elektronischen Lesegeräten, Laptop-Computern, Smartphones, Tablet-Personal-Computern, tragbaren Elektronikgeräten, autonomen Robotern, autonomen Fahrzeugen, Virtual und/oder Augmented Reality-Plattformen (Headsets, Brillen usw.).
  • Wie hierin verwendet bezeichnet die Formulierung „und/oder“, wenn sie im Zusammenhang mit den zwei Elementen (A) und (B) verwendet wird, (A) oder (B) oder (A) und (B). Ebenso bezeichnet die Formulierung „und/oder“, wenn sie im Zusammenhang mit drei oder mehr Elementen, wie etwa (A), (B) und (C) verwendet wird, (A) oder (B) oder (C), (A) und (B) oder (C), (A) und (C) oder (B), (B) und (C) oder (A) oder (A), (B) und (C).
  • Die vorliegende Offenbarung kann perspektivisch basierte Beschreibungen verwenden (z. B. oben, unten, in, aus, über, unter und dergleichen), um die relative Position eines Elements zu einem anderen zu beschreiben. Es versteht sich, dass solche Beschreibungen zum Zweck der Klarheit und des besseren Verständnisses verwendet werden und nicht als Einschränkung der Anwendung der hierin beschriebenen Ausführungsformen in einer bestimmten Orientierung vorgesehen sind, es sei denn es wird ausdrücklich etwas anderes angegeben.
  • Wie hierin verwendet werden die Formulierungen „in einer Ausführungsform“ und „in Ausführungsformen“ austauschbar zur Bezugnahme auf eine oder mehrere der gleichen oder unterschiedlicher Ausführungsformen verwendet. Darüber hinaus werden die Begriffe „umfassen“, „umfasst“, „enthalten“, „enthält“, „weist auf“ und dergleichen hierin austauschbar in Verbindung mit Beschreibungen der Ausführungsformen der vorliegenden Offenbarung verwendet und sind synonym.
  • Die Begriffe „erste“, „zweite“, „dritte“, „neue“, „vorherig“ und dergleichen werden hierin generell verwendet, um zwischen Elementen zu unterscheiden, und nicht zwangsläufig um eine bestimmte sequenzielle oder chronologische Reihenfolge zu beschreiben. Es versteht sich, dass solche Begriffe unter angemessenen Umständen austauschbar verwendet werden können, und dass verschiedene Aspekt der vorliegenden Offenbarung in einer anderen Reihenfolge betreibbar sein können, als wie hierin explizit beschrieben.
  • Wie hierin verwendet bedeuten die Begriffe „im Wesentlichen“ und „etwa“, wenn sie in Verbindung mit einem Wert oder einem Wertbereich verwendet werden, plus oder minus 5 Prozent des angegebenen Werts oder der Endpunkte des angegebenen Bereichs. Soweit Bereiche angeführt werden, versteht es sich, dass die Bereiche nicht auf die angegebenen Endpunkte beschränkt sind, sondern jeden Punkt darin und Bereiche zwischen zwei beliebigen Punkten darin miteinschließen, als wären solche Punkte und Bereiche ausdrücklich mit angeführt worden. Zum Beispiel muss der Bereich 1 bis 10 so aufgefasst werden, dass er 2, 3, 4 usw. enthält, sowie die Bereiche 2 bis 10, 3 bis 9 usw.
  • Wie in einer Ausführungsform hierin verwendet kann sich der Begriff „Modul“ auf Software, Firmware, Schaltungsanordnungen und Kombinationen davon, die dafür konfiguriert ist bzw. sind eine oder mehrere Operationen nach der vorliegenden Offenbarung durchzuführen, beziehen. Software kann als ein Softwarepaket, Code, Anweisungen, Anweisungssätze und/oder Daten, die auf nichttransitorischen, computerlesbaren Speichermedien aufgezeichnet sind, die, wenn sie ausgeführt werden, ein elektronisches Gerät veranlassen können, Operationen nach der vorliegenden Offenbarung durchzuführen, beispielsweise wie in den hierin bereitgestellten Verfahren beschrieben, verkörpert sein. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten, die in Speichervorrichtungen hartkodiert sind (z. B. nichtflüchtig), verkörpert sein. „Schaltungsanordnung“, wie in einer Ausführungsform hierin verwendet, kann beispielsweise einzeln oder in einer beliebigen Kombination, festverdrahtete Schaltungsanordnungen, programmierbare Schaltungsanordnungen, wie etwa Computerprozessoren, die einen oder mehrere individuelle anweisungsverarbeitende/n Kern/e enthalten, Zustandsmaschinenschaltungsanordnungen, Software und/oder Firmware, die Anweisungen speichert, die von programmierbaren Schaltungsanordnungen ausgeführt werden, umfassen. Die Module können kollektiv oder individuell als Schaltungsanordnungen verkörpert sein, die einen Teil eines oder mehrerer Geräte gemäß vorstehender Definition bilden. In manchen Ausführungsformen können ein oder mehrere der hierin beschriebenen Module in Form von Logik sein, die mindestens teilweise in Hardware implementiert ist, um Merkmalserkennungs- und/oder Merkmalsverfolgungsoperationen gemäß der vorliegenden Offenbarung durchzuführen.
  • Wie hierin verwendet, bezieht sich die Formulierung „digitales Bild“ auf eine Datenstruktur, einschließlich Bilddaten, die als eine zweidimensionale (2D) Anordnung von Pixeln repräsentiert sein kann. Jeder Pixel in den Bilddaten kann daher über seine entsprechenden Pixelkoordinaten beschrieben werden.
  • Wie hierin verwendet bezieht sich der Begriff „Bilddaten“ auf alle oder einen Teil der Daten innerhalb eines digitalen Bildes, das beispielsweise von einem Bildsensor und/oder Bildsignalprozessor (Image Signal Processor; ISP) bereitgestellt wird.
  • Wie hierin verwendet bezeichnen die Begriffe „Bildbreite“ und „Bildhöhe“ die Gesamtbreite bzw. -höhe (in Pixel) eines digitalen Bildes gemäß Definition durch die Auflösung des digitalen Bildes.
  • Wie hierin verwendet bezieht sich der Begriff „Bildrand“ auf einen vertikalen oder einen horizontalen Rand eines Bildes.
  • Wie hierin verwendet werden die Begriffe „Vertikalzugriffstiefe“ und „VAdepth“ austauschbar als Bezug auf eine Schwellenwertposition entlang einer vertikalen Achse eines digitalen Bildes verwendet. Demgegenüber werden die Begriffe „Horizontalzugriffstiefe“ und „HAwidth“ austauschbar als Bezug auf eine Schwellenwertposition entlang eines horizontalen Zugriffs auf ein digitales Bild verwendet.
  • Wie hierin verwendet bezieht sich die Formulierung „Gleitfenster“ auf eine Menge von Bilddaten (Arbeitsdaten), die einer Teilmenge von Pixeln innerhalb eines berücksichtigten digitalen Bildes entspricht. Wie noch erklärt werden wird, kann ein (vorheriges) Gleitfenster „versetzt“ oder „neu definiert“ sein, um ein neues Gleitfenster zu definieren, das in eine weitere Richtung versetzt ist. Das neue Gleitfenster kann eine unterschiedliche Teilmenge von Bilddaten eines berücksichtigten Bildes umschließen, als das vorherige Gleitfenster. Das bedeutet, das neue Gleitfenster kann neue Arbeitsdaten umschließen, wobei die neuen Arbeitsdaten einen Teil der Arbeitsdaten enthalten, die in einem vorherigen Gleitfenster enthalten waren, sowie neue Bilddaten.
  • Die hierin beschriebenen Gleitfenster können eine oder mehrere Pixelreihen und eine oder mehrere Pixelspalten enthalten, so dass sie eine Gesamtform haben. In manchen Ausführungsformen sind die hierin beschriebenen Gleitfenster von der Form her quadrilateral. In solchen Fällen weisen die Gleitfenster eine Gleitfensterbreite (SWW) und eine Gleitfensterhöhe (SWH) auf. Die Formulierungen „Gleitfensterhöhe“ und „SWH“ werden austauschbar als Bezugnahme auf die Anzahl der Pixelreihen, die in den Arbeitsdaten, die von einem Gleitfenster umschlossen werden, enthalten sind, verwendet. Demgegenüber werden die Formulierungen „Gleitfensterbreite“ und „SWW“ austauschbar als Bezugnahme auf die Anzahl der Pixelspalten, die in den Arbeitsdaten, die von einem Gleitfenster umschlossen werden, enthalten sind, verwendet.
  • Im Zusammenhang mit Hardware wird die Formulierung „Gleitfenster“ als Bezug auf Arbeitsdaten verwendet, die innerhalb eines Gleitfensterpuffers vorhanden sind, z. B. während einer bestimmten Zeitphase. In solch einem Kontext kann ein Gleitfenster durch das Verändern mindestens eines Teils der Arbeitsdaten innerhalb des Gleitfensterpuffers „versetzt“ („Versatz“) oder „neu definiert“ sein. Weiterhin beziehen sich in diesem Zusammenhang die Formulierungen „Gleitfensterbreite“ und „Gleitfensterhöhe“ auf die Menge (Anzahl) der Pixelspalten von Bilddaten (Breite) und die Menge (Anzahl) der Pixelreihen von Bilddaten (Höhe), die in einem Gleitfensterpuffer gespeichert sein kann. Als solches können die Dimensionen eines Gleitfensters in Ausführungsformen durch die Größe eines Gleitfensterpuffers festgelegt sein.
  • Die Begriffe „derzeitig“, „aktuell“, „erste/s“, „neu“, „vorherig“ und „nachfolgend“ werden, wenn sie in Verbindung mit dem Begriff „Gleitfenster“ verwendet werden, ausschließlich zu Referenzzwecken verwendet. Solche Begriffe werden insbesondere als Bezugnahme auf unterschiedliche Gleitfenster (d. h. Gleitfenster, die unterschiedliche Sätze von Arbeitsdaten umschließen), die zu unterschiedlichen Zeitphasen verwendet werden, verwendet. Im Zusammenhang mit Hardware können solche Begriffe so verstanden werden, als würden sie sich auf Arbeitsdaten beziehen, die innerhalb eines Gleitfensterpuffers zu unterschiedlichen Zeiten vorhanden sind oder sein werden. Die Formulierung „erstes Gleitfenster“ bezieht sich daher nicht zwangsläufig auf das allererste Gleitfenster, das bei Initiieren der Analyse der Bilddaten gemäß der vorliegenden Offenbarung definiert wird. Vielmehr wird die Formulierung „erstes Gleitfenster“ generell als Bezugnahme auf ein Gleitfenster verwendet, das vor (z. B. unmittelbar vor) der Verwendung/Definition eines neuen Gleitfensters verwendet wurde. Ebenso wird die Formulierung „neues Gleitfenster“ hierin als Bezugnahme auf ein Gleitfenster verwendet, das nach (z. B. unmittelbar nach) der Verwendung eines ersten Gleitfensters verwendet wird. Weiterhin werden die Formulierungen „vorheriges Gleitfenster“ und „nachfolgendes Gleitfenster“ hierin generell als Bezugnahme auf ein Gleitfenster verwendet, das vor einem ersten Gleitfenster bzw. nach einem aktuellen Gleitfenster verwendet wurde.
  • Wie hierin verwendet, bezieht sich der Begriff „Arbeitsdaten“ auf Bilddaten, die von einem Gleitfenster umschlossen werden, und im Zusammenhang mit Hardware, auf Arbeitsdaten die innerhalb eines Gleitfensterpuffers vorhanden sind oder sein werden. Arbeitsdaten enthalten daher alle Pixelreihen und Pixelspalten (d. h. alle Bilddaten), die von einem Gleitfenster umschlossen sind. Die Anzahl der Pixelreihen in den Arbeitsdaten wird generell von der Gleitfensterhöhe definiert und die Anzahl der Pixelspalten in den Arbeitsdaten wird generell von der Gleitfensterbreite definiert.
  • Die Formulierungen „erste Arbeitsdaten“ und „neue Arbeitsdaten“ werden hierin verwendet, um zwischen Arbeitsdaten zu unterscheiden, die von einem oder mehreren Gleitfenstern (oder im Fall von Hardware einem Gleitfensterpuffer) zu unterschiedlichen Zeitphasen umschlossen werden. In Ausführungsformen bezeichnet die Formulierung „neue Arbeitsdaten“ Arbeitsdaten in einem Gleitfenster, die eine Kombination aus neuen Daten (d. h. neue Bilddaten, die einem Versatz, der auf ein vorheriges Gleitfenster zum Definieren des neuen Gleitfensters angewendet wurde, zugeordnet sind) und wiederverwendeten Daten, d. h. ein Teil der Arbeitsdaten, die in einem oder mehreren vorherigen Gleitfenster/n enthalten waren, enthält. Je nach Umständen können die Wiederverwendungsdaten, wie später beschrieben, „horizontale Wiederverwendungdsdaten“, „vertikale Wiederverwendungdsdaten“ oder eine Kombination davon sein.
  • Wie hierin verwendet, sind „horizontale Wiederverwendungdsdaten“ eine oder mehrere Spalte/n von Bilddaten, die zuvor in Verbindung mit einem (z. B. ersten) Gleitfenster verwendet wurden, und die mit neuen Daten verknüpft werden können, um neue Arbeitsdaten für das Durchführen der Merkmalserkennungsoperationen zu produzieren. In Ausführungsformen sind horizontale Wiederverwendungdsdaten eine oder mehrere Pixelspalte/n, die in einem Wiederverwendungspuffer, einem Gleitfensterpuffer oder einer Kombination davon gespeichert werden. In manchen Ausführungsformen können horizontale Wiederverwendungsdaten mit neuen Daten durch Ausrichten der Pixelreihen der horizontalen Wiederverwendungsdaten auf entsprechende Pixelreihen einer am weitesten rechts oder am weitesten links gelegenen Pixelspalte der neuen Bilddaten verknüpft werden.
  • Wie hierin verwendet, sind „vertikale Wiederverwendungsdaten“ eine oder mehrere Pixelreihe/n von Bilddaten, die zuvor in Verbindung mit einem (z. B. ersten) Gleitfenster verwendet wurden, und die mit neuen Daten verknüpft werden können, um neue Arbeitsdaten für das Durchführen der Merkmalserkennungsoperationen zu produzieren. In Ausführungsformen sind vertikale Wiederverwendungsdaten eine oder mehrere Pixelreihe/n von Bilddaten, die in einem Wiederverwendungspuffer, einem Gleitfensterpuffer oder einer Kombination davon gespeichert werden. In manchen Ausführungsformen können vertikale Wiederverwendungsdaten mit neuen Daten durch Ausrichten der Pixelspalten der vertikalen Wiederverwendungsdaten auf entsprechende Pixelspalten einer am weitesten oberen oder am weitesten unteren Pixelspalte der neuen Bilddaten verknüpft werden.
  • Wie hierin verwendet bezeichnet der Begriff „versetzt“ bzw. „Versatz“ einen Wert, der auf Pixelkoordinaten aller Pixel in einem (ersten) Gleitfenster angewendet werden kann, um ein neues Gleitfenster zu definieren, dass neue Arbeitsdaten enthält. In Ausführungsformen kann ein vertikaler, horizontaler oder diagonaler Versatz verwendet werden. Wie hierin verwendet ist ein „vertikaler Versatz“ oder „VO“ („Vertical Offset“) ein Versatz, der auf Pixelkoordinaten aller Pixel in einem ersten Gleitfenster angewendet werden kann, um ein neues Gleitfenster zu definieren, das relativ zu dem ersten Gleitfenster vertikal versetzt (nach oben oder unten) ist. Ein „horizontaler Versatz“ oder „HO“ („Horizontal Offset“) ist ein Versatz, der auf Pixelkoordinaten aller Pixel in einem ersten Gleitfenster angewendet wird, um ein neues Gleitfenster zu definieren, das zu dem ersten Gleitfenster horizontal versetzt (nach links oder rechts) ist. Ein „diagonaler Versatz“ oder „DO“ („Diagonal Offset“) ist ein Versatz, der eine HO und eine VO umfasst. Wenn unabhängig verwendet kann eine VO kleiner sein als die gleitende Fensterhöhe eines aktuellen Gleitfensters. Ebenso kann, wenn unabhängig verwendet, eine HO kleiner sein als die gleitende Fensterbreite eines aktuellen Gleitfensters. Im Kontext eines diagonalen Versatzes kann die HO-Komponente den diagonalen Versatz und/oder die VO-Komponente des diagonalen Versatzes kleiner sein als die entsprechende Dimension (d. h. Gleitfensterhöhe, Gleitfensterbreite) eines aktuellen Gleitfensters.
  • Wie hierin verwendet werden die Begriffe „Nachbarschaft“ und „Pixelnachbarschaft“ austauschbar zur Bezugnahme auf eine Mindestmenge an Daten verwendet, die erforderlich ist, um Merkmalerkennungsoperationen durchzuführen. In Fällen, in denen Bilderkennungsoperationen FAST-Eckenerkennungsoperationen unter Verwendung eines Bresenham-Kreises mit Radius 3 sind oder diese enthalten, ist eine Nachbarschaft eine Menge von Bilddaten, die mindestens einem 7x7-Pixelfeld entspricht (d. h. ein 2D Feld, das 7 Pixelreihen enthält, die 7 Pixel lang sind, und 7 Pixelspalten, die 7 Pixel tief sind). Generell enthalten Arbeitsdaten in den hierin beschriebenen Gleitfenstern eine oder mehrere Pixelnachbarschaften.
  • Wie hierin verwendet bezieht sich der Begriff „Kandidatenpixel“ auf einen Pixel innerhalb einer Nachbarschaft für die Merkmalserkennungsoperationen durchgeführt werden können. Kandidatenpixel können beliebige Pixel innerhalb von Arbeitsdaten sein, die von einer Pixelnachbarschaft umgeben sind. In Fällen, in denen FAST-Eckenerkennungsoperationen unter Verwendung eines Bresenham-Kreises mit Radius 3 durchgeführt werden, ist ein Kandidatenpixel zum Beispiel ein beliebiger Pixel innerhalb von Arbeitsdaten, der von drei Pixeln auf jeder der vier Seiten des Kandidatenpixels (oben, unten, links, rechts) gebunden ist (siehe 1B).
  • Ein Aspekt der vorliegenden Offenbarung bezieht sich auf ein System zum Durchführen von Merkmalserkennung und/oder -verfolgung. Solche Systeme können zur Verwendung in Computer-Vision-Anwendungen geeignet sein, wie etwa visuelles SLAM, oder in anderen Anwendungen, in denen die Erkennung und/oder Verfolgung von Merkmalen innerhalb von Bilddaten gewünscht sein kann.
  • Es wird sich daher auf 2A bezogen, die ein Blockdiagramm eines Beispiels eines Systems 200 zum Durchführen von Merkmalserkennung und/oder -verfolgung nach der vorliegenden Offenbarung zeigt. Wie gezeigt enthält System 200 Bildsensor 201, Bildsignalprozessor (ISP) 203, Speicher 205, Prozessor 207, Bus 209 und SLAM-Hardwarebeschleuniger (SLAM HWA) 211.
  • Bildsensor 201 und ISP 203 arbeiten generell zum Bereitstellen von Bilddaten für das Durchführen von Merkmalserkennungs- und/oder -verfolgungsoperationen nach der vorliegenden Offenbarung. Bildsensor 201 kann daher eine beliebige Art von Sensor sein, die für das Erkennen und Übertragen von Informationen, die ein Bild innerhalb seines Sichtfeldes konstituieren, geeignet ist. Bildsensor 201 kann beispielsweise dafür konfiguriert sein, eine variable Attenuierung von Lichtwellen in ein oder mehrere Sensorsignale zu wandeln. Nicht-einschränkende Beispiele geeigneter Bildsensoren, die als Bildsensor 201 verwendet werden können, umfassen einen oder mehrere ladungsgekoppelte Halbleiterbauelemente (CCD), Flachbilddetektoren, aktive Pixelsensoren, z. B. in komplementären Metalloxid-Halbleiter (CMOS) oder n-Metalloxidhalbleiter (NMOS) Technologien, Kombinationen davon und dergleichen. In Ausführungsformen sind Bildsensor 201 und/oder ISP dafür konfiguriert, Bilddaten in Form von einem oder mehreren digitalen Bild/ern für das Durchführen der Merkmalserkennung und/oder - verfolgung bereitzustellen.
  • Wie ferner in 2A gezeigt können Sensorsignale vom Bildsensor 201 (z. B. über Bus 209 oder eine andere Kommunikationsmodalität) an ISP 203 übertragen werden. ISP 203 kann generell konfiguriert sein, das bzw. die Sensorsignal/e in Bilddaten, die der von dem Sensorsignal 201 abgebildeten Umgebung entsprechen, zu wandeln. Es sind viele ISPs bekannt und es kann jeder geeignete ISP als ISP 203 verwendet werden. Es ist anzumerken, dass obwohl 2A Bildsensor 201 und ISP 203 als einzelne Komponenten zeigt, solch eine Konfiguration nicht erforderlich ist. In manchen Ausführungsformen können Bildsensor 201 und ISP 203 miteinander oder in eine übergeordnete Sensorplattform integriert sein. Bildsensor 201 und ISP 203 können beispielsweise jeweils in einer Kamera oder einer anderen Bildsensorplattform, die kommunikativ mit anderen Elementen des Systems 200 verbunden ist, enthalten sein.
  • Speicher 205 kann jedwede geeignete Art von computerlesbarem Speicher sein. Beispielhafte Speicherarten, die als Speicher 205 verwendet werden können, umfassen, sind aber nicht beschränkt auf: Halbleiter-Firmware-Speicher, programmierbare Speicher, nichtflüchtige Speicher, Nur-Lese-Speicher, elektrisch programmierbare Speicher, Direktzugriffsspeicher, Flash-Speicher (die beispielsweise Speicherstrukturen vom NAND- oder NOR-Typ umfassen können), Magnetplattenspeicher, optische Plattenspeicher, Kombinationen davon und dergleichen. Zusätzlich oder alternativ hierzu kann Speicher 205 andere und/oder später entwickelte Arten von computerlesbaren Speichern umfassen. In manchen Ausführungsformen ist Speicher 205, ohne Einschränkungen, für das Speichern von Daten, wie etwa computerlesbaren Anweisungen, in einer nicht-flüchtigen Weise konfiguriert.
  • Von ISP 203 produzierte Bilddaten können dem ganzen oder einem Teil eines digitalen Bildes der Umgebung innerhalb des Sichtfeldes von Bildsensor 201 entsprechen. In Ausführungsformen können die Bilddaten im Speicher 205 gespeichert werden, zum Beispiel als ein digitales Bild. Alternativ oder zusätzlich können alle oder ein Teil der Bilddaten in einem gemeinsamen Speicher 219 des SLAM HWA 211 gespeichert werden, wonach Komponenten des SLAM HWA 211 (beispielsweise eine Merkmalserkennungskomponente oder eine Merkmalsverfolgungskomponente) Merkmalserkennungs- und/oder Merkmalsverfolgungsoperationen nach der vorliegenden Offenbarung dafür durchführen. In weiteren Ausführungsformen können Bilddaten (z. B. auf Einzelzeilenbasis) von ISP 201 an eine oder mehrere Komponente/n des SLAM HWA 211, wie etwa eine Merkmalserkennungs- oder eine Merkmalsverfolgungskomponente des SLAM HWA 211, bereitgestellt werden.
  • Bildsensor 201 und/oder ISP 203 können dafür konfiguriert sein, ein einzelnes Bild oder eine zeitliche Sequenz von Bildern (z. B. ein Video oder anderen Datenstream), wie etwa, aber nicht beschränkt auf, einen Video Graphics Array (VGA) Stream mit 30 Bildern pro Sekunde oder einer anderen Bildrate, bereitzustellen. Die Auflösung der Bilder und/oder der Bildrate, die von Bildsensor 201 und ISP 203 bereitgestellt wird, kann erheblich variieren und es kann jede geeignete Auflösung und/oder Bildrate verwendet werden. Das Erhöhen der Auflösung und/oder der Bildrate kann die der Merkmalserkennung und/oder -verfolgung zugeordnete Verarbeitungslast erhöhen. Es kann daher wünschenswert sein, die Auflösung und/oder Bildrate der Bilddaten, die von Bildsensor 201 und ISP 203 bereitgestellt werden, derart auszuwählen, dass ein gewünschtes Gleichgewicht zwischen solchen Merkmalen und der Bildverarbeitungslast erreicht wird.
  • 2B zeigt ein Beispiel eines SLAM HWA nach der vorliegenden Offenbarung. Wie gezeigt enthält SLAM HWA 211 SLAM-Steuereinrichtung 213, Merkmalserkennungskomponente 215, die optionale Merkmalsverfolgungskomponente 217 und den gemeinsamen Speicher 219. Die SLAM-Steuereinrichtung 213 arbeitet generell als eine Top-Level-Steuereinrichtung und steuert den Betrieb und/oder die Konfiguration der Merkmalsverfolgungskomponente 217, der Merkmalserkennungskomponente 215 und optional andere Komponenten des SLAM HWA (nicht gezeigt). Die SLAM-Steuereinrichtung 213 kann zum Beispiel zum Konfigurieren und Steuern der Merkmalserkennungskomponente 215, der Merkmalsverfolgungskomponente 217 oder von beiden arbeiten. In Ausführungsformen kann die SLAM-Steuereinrichtung 213 beispielsweise die Reihenfolge der Einzelschritte, mit der die Merkmalserkennungskomponente 215 und die Merkmalsverfolgungskomponente 217 ihre jeweiligen Operationen durchführen, verwalten. Die SLAM-Steuereinrichtung 213 kann auch dafür verwendet werden, um beispielsweise einen oder mehrere Parameter festzulegen, die von der Merkmalserkennungskomponente 215 verwendet werden (z. B. angewendete Versätze, Schwellenwertpositionen usw.) und/oder einen oder mehrere Parameter, die von der Merkmalsverfolgungskomponente 217 verwendet werden (z. B. Verfolgungsreihenfolge, Auswahl der Region von Interesse usw.), festlegen.
  • In Ausführungsformen können Bilddaten von Bildsensor 201 und/oder ISP 203 im geteilten Speicher 205 gespeichert werden und/oder direkt in den SLAM HWA 211 (z. B. Merkmalserkennungskomponente 215 und/oder Merkmalsverfolgungskomponente 217) eingegeben werden. In dem erstgenannten Fall (Speichern im Speicher 205) kann bzw. können SLAM-Steuereinrichtung 213 und/oder Prozessor 207 veranlassen, dass alle oder ein Teil der Bilddaten in den gemeinsamen Speicher 219 geschrieben werden. Im letztgenannten Fall (z. B. Eingabe von Bilddaten direkt in SLAM HWA 211) können die Bilddaten von einem Bildsensor und/oder ISP an den gemeinsamen Speicher 219 und/oder einem oder mehreren Puffer/n (oder anderen Speicherstrukturen) der Merkmalserkennungskomponente 215 und/oder der Merkmalsverfolgungskomponente 217 gesendet werden. In jedem Fall ist der SLA HWA 211 konfiguriert, Merkmalserkennungs- und/oder Merkmalsverfolgungoperationen für die Bilddaten wie hierin beschrieben durchzuführen.
  • Wie Speicher 205 kann Speicher 219 jede geeignete Art von computerlesbarem Speicher sein. Beispielhafte Speicherarten, die als Speicher 219 verwendet werden können, umfassen, sind aber nicht beschränkt auf: Halbleiter-Firmware-Speicher, programmierbare Speicher, nichtflüchtige Speicher, Nur-Lese-Speicher, elektrisch programmierbare Speicher, Direktzugriffsspeicher, Flash-Speicher (die beispielsweise Speicherstrukturen vom NAND- oder NOR-Typ umfassen können), Magnetplattenspeicher, optische Plattenspeicher, Kombinationen davon und dergleichen. Zusätzlich oder alternativ hierzu kann Speicher 402 andere und/oder später entwickelte Arten von computerlesbaren Speichern umfassen. In manchen Ausführungsformen ist Speicher 219, ohne Einschränkungen, für das Speichern von Daten, wie etwa computerlesbaren Anweisungen, in einer nicht-flüchtigen Weise konfiguriert.
  • Die vorliegende Offenbarung fährt nun damit fort, Beispiel der Durchführung der Merkmalserkennungs- und Verfolgungsoperationen unter Verwendung der Merkmalserkennungs- und Merkmalsverfolgungskomponenten nach der vorliegenden Offenbarung zu beschreiben. Es wird betont, dass die folgende Beschreibung nur beispielhaft ist, und dass die Merkmalserkennungs- und Merkmalsverfolgungskomponenten nicht auf die spezifischen, hierin beschriebenen Beispiele beschränkt sind. Zur besseren Übersicht beginnt die Diskussion mit einer Beschreibung eines Beispiels einer Merkmalserkennungskomponente, die als Merkmalserkennungskomponente 215 verwendet werden kann, sowie ihres Betriebs zur Durchführung von Merkmalserkennungsoperationen mit einem oder mehreren Gleitfenster/n nach der vorliegenden Offenbarung. Dann werden Verfahren zum Durchführen von Merkmalserkennung (z. B. unter Verwendung einer Merkmalserkennungskomponente) beschrieben. Dann wird ein Beispiel für eine geeignete Merkmalsverfolgungskomponente, die als Merkmalsverfolgungskomponente 217 verwendet werden kann, beschrieben, sowie ihr Betrieb zum Durchführen der Merkmalsverfolgungsoperationen nach der vorliegenden Offenbarung. Dann werden Verfahren zum Durchführen des Verfolgens (z. B. unter Verwendung einer Merkmalsverfolgungskomponente) präsentiert.
  • Wie vorstehend erwähnt arbeiten manche Merkmalserkennungsalgorithmen bei der Feststellung, ob ein Kandidatenpixel in der Nachbarschaft ein Merkmal ist oder nicht, mit einer Pixelnachbarschaft. Zum Beispiel und wie vorstehend in Verbindung mit 1B diskutiert arbeitet der FAST-Eckendetektor bei der Feststellung, ob ein einzelner Kandidatenpixel darin eine Ecke ist oder nicht, mit einer Pixelnachbarschaft mit einer Mindest-Pixelanordnung von 7x7. Nach der Durchführung der FAST-Eckenerkennung für einen Kandidatenpixel in der Nachbarschaft, wird die Nachbarschaft verworfen und es wird eine neue Nachbarschaft eingeholt.
  • Anders als bei der herkömmlichen FAST-Eckenerkennung nutzen die Merkmalserkennungskomponenten der vorliegenden Offenbarung die Tatsache zu ihrem Vorteil, dass ein Teil der für die Analyse eines ersten Kandidatenpixels in einer ersten Nachbarschaft eingeholten Bilddaten für die Analyse eines oder mehrerer Pixel, die angrenzend und/oder nahe an dem ersten Kandidatenpixel liegen, wiederverwendet werden. Insbesondere und wie nachfolgend beschrieben können (erste) Arbeitsdaten, die für die Analyse eines oder mehrerer Kandidatenpixel geeignet sind, in einen Gleitfensterpuffer geladen werden. Nach der Analyse des bzw. der Kandidatenpixel in den (ersten) Arbeitsdaten, können alle oder ein Teil der (ersten) Arbeitsdaten in dem Gleitfensterpuffer verworfen werden. Der verworfene Teil der (ersten) Arbeitsdaten entspricht einem angewendeten Versatz zum Ändern der Arbeitsdaten innerhalb des Gleitfensterpuffers, d. h. es wird zum Definieren neuer Arbeitsdaten (und somit eines neuen Gleitfensters) innerhalb des Gleitfensterpuffers ein Versatz angewendet. Neue Bilddaten, die dem angewendeten Versatz entsprechen, können dann in den Gleitfensterpuffer geladen werden, um den verworfenen Teil zu ersetzen, was in dem Vorhandensein neuer Arbeitsdaten innerhalb des Gleitfensterpuffers resultiert, wobei die neuen Arbeitsdaten neue Bilddaten sowie Wiederverwendungsdaten enthalten. Je nach Art des angewendeten Versatzes können die Wiederverwendungsdaten horizontale Wiederverwendungsdaten (d. h. Bilddaten, die in einem Wiederverwendungspuffer gespeichert sind), vertikale Wiederverwendungsdaten (d. h. einen Teil der ersten Arbeitsdaten, die in dem Gleitfensterpuffer zurückgehalten wurden) oder eine Kombination davon enthalten. In jedem Fall können die neuen Arbeitsdaten Bilddaten enthalten, die einem oder mehreren neuen Kandidatenpixel/n entsprechen, für die die Merkmalserkennungsoperationen durchgeführt werden können.
  • Die Verwendung von Gleitfenstern (Gleitfensterpuffer) kann die Anzahl der Lesevorgänge zum Speicher, die erforderlich sind, um eine Pixelnachbarschaft bereitzustellen, die für das Durchführen der FAST-Eckenerkennung hinreichend ist, im Vergleich zu der Durchführung solcher Operationen mit einem Allzweckprozessor reduzieren. Bei einer herkömmlichen FAST-Eckenerkennung holt beispielsweise ein Allzweckprozessor jedes Mal, wenn er eine FAST-Eckenerkennung für einen einzelnen Kandidatenpixel darin durchführt, neue Bilddaten, die 49 Pixeln entsprechen (d. h. eine Nachbarschaft von 7 Reihen von 7 Pixeln) aus dem Speicher ein. Demgegenüber müssen bei Verwendung des bzw. der hierin beschriebenen Gleitfenster (Gleitfensterpuffer) und Versätze neue Bilddaten, die nur einem Teil einer Nachbarschaft entsprechen, aus dem Speicher gelesen werden, um eine hinreichende Menge von Bilddaten, die für die Durchführung der FAST-Merkmalserkennung für neue Kandidatenpixel erforderlich sind, bereitzustellen.
  • Es wird sich nun auf 3 bezogen, die ein Beispiel einer Merkmalserkennungskomponente 215 zeigt, die zum Durchführen von Merkmalserkennungsoperationen unter Verwendung von einem oder mehreren Gleitfenster/n nach der vorliegenden Erfindung arbeiten kann. Wie gezeigt enthält die Merkmalserkennungskomponente 215 das Gleitfenstermodul 301, Erkennungssteuereinrichtung 303 und Erkennungsanordnung 317. Gleitfenstermodul 301 enthält Adressengenerator 305, First-In-First-Out-Puffer (FIFO) 307, Wiederverwendungspuffer 309, Konkatenator 311, Gleitfenstersteuereinrichtung 313 und Gleitfensterpuffer 315. Zum Zweck der Klarheit zeigt 3 eine Ausführungsform, in der die Merkmalserkennungskomponente 215 zum Durchführen von Merkmalserkennungsoperationen mit Bilddaten 319 arbeitet, die aus dem gemeinsamen Speicher 219 des SLAM HWA 211 gelesen werden. Es versteht sich, dass die Beschreibung beispielhaft ist, und dass eine Merkmalserkennungskomponente nicht mit Bilddaten arbeiten muss, die (zuvor) in dem gemeinsamen Speicher 219 gespeichert sind. In Ausführungsformen können die Bilddaten 319 direkt von einem ISP oder einer anderen Komponente an das Gleitfenstermodul 301 bereitgestellt werden. In manchen Ausführungsformen können zum Beispiel Bilddaten von einem ISP (z. B. ISP 203) direkt und auf Einzelzeilenbasis an Adressengenerator 305 und/oder FIFO-Puffer 307 eingegeben werden.
  • Merkmalerkennungskomponente 215 ist generell konfiguriert, um Merkmalerkennungsoperationen für Bilddaten unter Verwendung von einem oder mehreren Gleitfenster/n (d. h. Bereichen von Arbeitsdaten) durchzuführen. In Ausführungsformen ist Gleitfenstersteuereinrichtung 313 konfiguriert, ein oder mehrere Gleitfenster und eine oder mehrere Schwellenwertposition/en innerhalb der Bilddaten 319 eines digitalen Bildes zu definieren. Das Definieren des bzw. der Gleitfenster/s kann beispielsweise die Festlegung der Dimensionen solcher Gleitfenster einschließen (z. B. Gleitfensterbreite, Gleitfensterhöhe usw.). Einzelheiten hierzu werden später, z. B. in Verbindung mit FIGS, 5A-5D bereitgestellt. Jedes hierin beschriebene Gleitfenster kann beispielsweise derart dimensioniert sein, dass des Arbeitsdaten umschließt, die mindestens eine Pixelnachbarschaft enthält, die für das Durchführen der Merkmalserkennungsoperationen hinreichend ist, wie etwa FAST-Eckenerkennung an einem oder mehreren Kandidatenpixel/n (siehe z. B. 6A-6E). Die Gleitfensterhöhe und -breite können auch zumindest teilweise auf Grundlage der Größe eines Gleitfensterpuffers festgelegt werden, wie etwa, aber nicht beschränkt auf, den Gleitfensterpuffer 315.
  • In Ausführungsformen umfasst das Definieren von einer oder mehreren Schwellenwertposition/en in den Bilddaten das Identifizieren von einer oder mehreren Schwellenwert-Tiefe/Vertikalzugriffspositionen (VAdepth) und/oder Schwellenwert-Breite/Horizontalzugriffspositionen (HAwidth) innerhalb der betreffenden Bilddaten. Die eine oder mehreren Schwellenwertposition/en können sich darauf auswirken, wie viele Bilddaten für die Durchführung der Merkmalserkennungsoperationen wiederverwendet werden, welche Daten für Merkmalserkennungsoperationen wiederverwendet werden und wie ein Gleitfenster versetzt wird (d. h. wie Arbeitsdaten innerhalb eines Gleitfensterpuffers neu definiert werden). 5A zeigt ein Beispiel dieses Konzepts und ein Beispiel, in dem eine Schwellenwert-Vertikalzugriffstiefe (VAdepth) auf einer vertikalen Achse (Y) einer 2D-Repräsentation eines digitalen Bildes 500 definiert wird. Es ist anzumerken, dass VAdepth in 5A nur ein Beispiel einer (ersten) Schwellenwertposition, die herangezogen werden kann, ist, und dass wie nachfolgend diskutiert auch andere Schwellenwertpositionen verwendet werden können. Weiterhin dient die Position von VAdepth in 5A nur als Beispiel.
  • Gleitfenstersteuereinrichtung 313 kann auch zum Definieren eines oder mehrerer Gleitfenster an einer oder mehreren Positionen eines berücksichtigten digitalen Bildes arbeiten. Das Konzept wird in 5A gezeigt, die ein Beispiel zeigt, in dem ein Gleitfenster SW1 an einer anfänglichen Position relativ zu einer 2D-Repräsentation der Bilddaten des digitalen Bildes 500 definiert ist. In dem veranschaulichten Beispiel hat SW1 eine quadrilaterale (rechteckige) Form mit einer Gleitfensterbreite SW1w und einer Gleitfensterhöhe SW1H. SW1 umschließt daher Arbeitsdaten, d. h. Bilddaten des digitalen Bildes 500, die innerhalb der Grenzen von SW1 liegen. Die Arbeitsdaten innerhalb der hierin beschriebenen Gleitfenster enthalten generell Bilddaten, die mindestens einer Pixelnachbarschaft entsprechen. Das Konzept wird in 6A gezeigt, die ein Beispiel veranschaulicht, in dem ein Gleitfenster SW1 Bilddaten, die 7 Pixelreihen (R) und 16 Pixelspalten (C) von Bilddaten des digitalen Bildes 500 entsprechen, enthält, d. h. Bilddaten, die hinreichend sind, um die Durchführung von FAST-Merkmalserkennung für zehn Kandidatenpixel p1...p10 unter Verwendung eines Bresenham-Kreises mit Radius 3 durchzuführen.
  • Gleitfenstersteuereinrichtung 313 kann daher ein Gleitfenster „definieren“, indem sie eine Teilmenge (benachbarter) Pixeladressen innerhalb eines Bildes identifiziert, die in einem Gleitfensterpuffer verwendet werden (z. B. geladen/vorhanden sind), wie etwa Gleitfensterpuffer 315. Jede Pixeladresse kann mit einem oder mehreren Pixeln korrelieren und somit kann die Anzahl der Pixeladressen mit der Größe des einzusetzenden Gleitfensterpuffers korrespondieren. Gleitfenstersteuereinrichtung 313 kann neue Gleitfenster „definieren“, indem sie neue Kombinationen von Pixeladressen, die in einem Gleitfensterpuffer verwendet werden sollen, auswählt. In Ausführungsformen definiert Gleitfenstersteuereinrichtung 313 ein Gleitfenster durch Identifizieren von Pixeladressen (innerhalb von Bilddaten), die einer oder mehreren Pixelreihen und einer oder mehreren Pixelspalten entsprechen. Die Anzahl der Pixelspalten und/oder Pixelreihen in den Gleitfenstern, die von der Gleitfenstersteuereinrichtung 313 definiert werden, kann derart gewählt werden, dass sie mindestens eine Pixelnachbarschaft enthalten, die für die Durchführung der Merkmalerkennungsoperationen (z. B. FAST-Eckenerkennungsoperationen) für einen Kandidatenpixel hinreichend ist. Insgesamt entsprechen die von der Gleitfenstersteuereinrichtung 313 während der Definition eines Gleitfensters identifizierten Pixeladressen den Arbeitsdaten innerhalb dieses Gleitfensters und somit den Arbeitsdaten, die in dem Gleitfensterpuffer, wie etwa dem Gleitfensterpuffer 315, vorhanden sind oder sein werden.
  • Gleitfenstersteuereinrichtung 313 kann auch konfiguriert sein, Adressengenerator 305 zu veranlassen, Bilddaten, die allen oder einem Teil der Arbeitsdaten innerhalb eines (aktuellen) Gleitfensters entsprechen, an FIFO-Puffer 307 bereitzustellen. Gleitfenstersteuereinrichtung 313 kann beispielsweise ein oder mehr Steuersignale an Adressengenerator 305 ausgeben oder deren Ausgabe veranlassen, wobei die Steuersignale konfiguriert sind, den Adressgenerator 305 zu veranlassen, Bilddaten an FIFO-Puffer 307 bereitzustellen. In Ausführungsformen enthalten oder spezifizieren das bzw. die Steuersignal/e anderweitig eine oder mehrere Pixeladresse/n (z. B. einen Pixeladressbereich) innerhalb eines berücksichtigten digitalen Bildes.
  • Adressengenerator 305 kann dafür konfiguriert sein, unabhängig von oder in Reaktion auf den Empfang eines Steuersignals von der Gleitfenstersteuereinrichtung Bilddaten an FIFO-Puffer 307 bereitzustellen, z. B. auf Einzelreihenbasis oder auf Einzelspaltenbasis. Die Bilddaten können im gemeinsamen Speicher 219 (wie in 3 gezeigt) gespeichert werden oder auf irgendeine andere Weise bereitgestellt werden, beispielsweise von einem Speicher 205 (z. B. einem digitalen Direktzugriffsspeicher (DRAM), von ISP 203 usw.). Generell entsprechen die von Adressengenerator 305 bereitgestellten Bilddaten allen oder einem Teil der Arbeitsdaten innerhalb eines Gleitfensters. In Ausführungsformen kann der Adressengenerator 305 die Form einer Speichersteuereinrichtung des gemeinsamen Speichers 219 haben oder diese enthalten.
  • Zum Beispiel und unter Bezugnahme auf die Ausführungsform in 6A kann die Gleitfenstersteuereinrichtung 313 ein oder mehrere Steuersignale an Adressengenerator 305 ausgeben, die die Pixeladressen der Pixel 605 innerhalb der Arbeitsdaten von SW1 spezifizieren. In Reaktion auf diese Steuersignale kann der Adressengenerator 305 veranlassen, dass Bilddaten 319, die jeder Reihe R oder Spalte C der Arbeitsdaten entsprechen, aus Speicher 219 gelesen und an FIFO-Puffer 307 bereitgestellt werden. Die Menge der Bilddaten in jeder Reihe oder Spalte, die von Adressengenerator 305 bereitgestellt wird, kann variieren und in manchen Ausführungsformen der Anzahl an Pixeln in einer Reihe oder Spalte der Arbeitsdaten in einem Gleitfenster entsprechen. Adressengenerator 305 kann beispielsweise i-te Reihe/n / Spalte/n der Bilddaten 119 lesen, wobei jede i-te Reihe/Spalte den Pixeln in einer Reihe R oder Spalte C von SW1 in 6A entspricht. Adressengenerator 305 kann dann diese i-te Reihe/Spalte Bilddaten an FIFO-Puffer 307 bereitstellen. Daraufhin können zusätzliche i-te Reihen/Spalten der Arbeitsdaten in SW1 von Adressengenerator 305 gelesen und an FIFO-Puffer 307 zugeführt werden.
  • Gleitfenstersteuereinrichtung 313 kann auch einen Versatz oder mehrere Versätze anwenden, um neue Gleitfenster zu definieren, d. h. eine neue Teilmenge von Pixeladressen innerhalb eines Bildes für die dann die Merkmalserkennung durchgeführt wird. Je nach Art des angewendeten Versatzes kann ein Teil der Pixeladressen in dem neuen Gleitfenster Bilddaten entsprechen, die zuvor in einen Gleitfensterpuffer geladen wurden (z. B. Gleitfensterpuffer 315) und/oder die zuvor in einen Wiederverwendungspuffer (z. B. Wiederverwendungspuffer 309) geladen wurden. In solchen Fällen können die von der Gleitfenstersteuereinrichtung ausgegebenen Steuersignale den Adressengenerator veranlassen nur Bilddaten aus dem Speicher einzuholen, die noch nicht in dem Wiederverwendungspuffer und/oder dem Gleitfensterpuffer vorhanden sind, d. h. neue Daten. In solchen Fällen können die eingeholten neuen Daten mit den (Wiederverwendungs-) Daten in dem Gleitfensterpuffer, dem Wiederverwendungspuffer oder in beiden verknüpft werden.
  • Anders ausgedrückt: Gleitfenstersteuereinrichtung 313 kann ein neues Gleitfenster definieren, das neue Arbeitsdaten umschließt, wobei die neuen Arbeitsdaten neue Daten und Wiederverwendungsdaten enthalten. Die Wiederverwendungsdaten sind Daten, die zuvor in einen Wiederverwendungspuffer (309) oder einen Gleitfensterpuffer (315) geschrieben wurden. Die neuen Daten sind Bilddaten, die von dem neuen Gleitfenster umschlossen werden, die aber nicht zuvor in einen Wiederverwendungspuffer (309) oder einen Gleitfensterpuffer (315) geschrieben wurden. Das bzw. die von der Gleitfenstersteuereinrichtung 313 ausgegebene/n Steuersignal/e können daher den Adressengenerator 305 veranlassen, nur die neuen Daten aus dem gemeinsamen Speicher 219 (oder von woanders her) einzuholen und die neuen Bilddaten an FIFO-Puffer 307 bereitzustellen. Die neuen Daten können dann mit Wiederverwendungsdaten im Wiederverwendungspuffer 309, Wiederverwendungsdaten im Gleitfensterpuffer 315 oder in beiden verknüpft werden, was im Vorhandensein der neuen Arbeitsdaten innerhalb des Gleitfensterpuffers 315 resultiert. Welche Wiederverwendungsdaten mit den neuen Bilddaten verknüpft werden kann von dem durch die Gleitfenstersteuereinrichtung zum Definieren des neuen Gleitfensters angewendeten Versatz abhängen.
  • Wie bereits erwähnt kann die Gleitfenstersteuereinrichtung 313 auch eine oder mehrere Schwellenwertposition/en innerhalb eines berücksichtigten digitalen Bildes definieren. In Ausführungsformen umfasst das Definieren von einer oder mehreren Schwellenwertposition/en in den Bilddaten das Festlegen einer Position von einer oder mehreren Schwellenwert-Tiefe/Vertikalzugriffspositionen (VAdepth) und/oder Schwellenwert-Breite/Horizontalzugriffspositionen (HAwidth) entlang einer vertikalen oder horizontalen Achse eines berücksichtigten digitalen Bildes. Alternativ kann ein horizontaler oder vertikaler Rand eines Bildes als eine Schwellenwertposition verwendet werden.
  • In Ausführungsformen können sich eine oder mehrere Schwellenwertposition/en darauf auswirken, wie viele Bilddaten innerhalb des Wiederverwendungspuffers 309, beispielsweise als Wiederverwendungsdaten, zurückbehalten werden. Zum Beispiel kann eine Schwellenwertposition (z. B. VAdepth) festlegen, wie viele Bilddaten als horizontale Wiederverwendungsdaten innerhalb des Wiederverwendungspuffers 309 zurückbehalten werden, wenn beispielsweise ein vertikaler Versatz zum Definieren neuer Gleitfenster angewendet wird. Es kann daher wünschenswert sein eine VAdepth zumindest teilweise auf Grundlage der Größe des Wiederverwendungspuffers 309 festzulegen. Demgegenüber kann es wünschenswert sein, die Größe des Wiederverwendungspuffers 309 zumindest teilweise auf Grundlage der Position festzulegen, für die ein Schwellenwert, wie etwa VAdepth, besteht oder festgelegt wird.
  • Die hierin beschriebenen Schwellenwertpositionen können sich auch darauf auswirken, wie ein Gleitfenster versetzt wird (d. h. wie Arbeitsdaten innerhalb eines Gleitfensterpuffers neu definiert werden), wenn die Merkmalserkennung für ein berücksichtigtes digitales Bild durchgeführt wird. Eine Gleitfenstersteuereinrichtung kann beispielsweise konfiguriert sein einen ersten Versatz auf ein aktuelles Gleitfenster anzuwenden, um ein neues Gleitfenster zu definieren, das in eine erste Richtung versetzt ist, wenn das aktuelle Gleitfenster eine Schwellenwertposition noch nicht erreicht hat. Wenn ein aktuelles Gleitfenster jedoch eine Schwellenwertposition erreicht hat, kann die Schwellenwertsteuereinrichtung einen zweiten (unterschiedlichen) Versatz auf das aktuelle Gleitfenster anwenden, um ein neues Gleitfenster zu definieren, das in eine andere Richtung versetzt ist. Weiterhin kann, wenn ein aktuelles Gleitfenster sowohl eine Schwellenwertposition als auch einen Rand eines Bildes erreicht hat, die Gleitfenstersteuereinrichtung einen dritten (unterschiedlichen) Versatz auf das aktuelle Gleitfenster anwenden, um ein neues Gleitfenster zu definieren, das in wieder eine andere Richtung versetzt ist.
  • 5A-5H veranschaulichen generell die vorstehenden Konzepte im Kontext eines Beispiels, in dem eine Gleitfenstersteuereinrichtung unterschiedliche Versätze zum Definieren unterschiedlicher Gleitfenster auf Grundlage der Position eines aktuellen Gleitfensters relativ zu einer Schwellenwertposition und/oder einem Rand eines Bildes anwendet. Zur besseren Übersicht zeigen diese Figuren ein berücksichtigtes digitales Bild 500 unter Verwendung eines zweidimensionalen (2D) Koordinatensystems. Wie gezeigt enthält Bild 500 einen horizontalen Rand 501 und einen vertikalen Rand 503. In dieser Ausführungsform hat eine Gleitfenstersteuereinrichtung ein Gleitfenster SW1 derart definiert, dass es eine Teilmenge benachbarter Pixel in der oberen linken Ecke des Bildes 500, wie in 5A gezeigt, umschließt. Es versteht sich selbstverständlich, dass die Startposition von SW1 nicht auf die in 5A gezeigte Position beschränkt ist.
  • In den Ausführungsformen in 5A-5D hat die Gleitfenstersteuereinrichtung eine erste Schwellenwertposition entlang der vertikalen Achse (Y) des Bildes 500 definiert. Weil die erste Schwellenwertposition einen Punkt entlang der vertikalen Achse definiert, an der sich der Versatz eines Gleitfensters ändern könnte, wird sich hierauf als eine Vertikalzugriffstiefe oder „VAdepth“ bezogen. Es ist anzumerken, dass VAdepth nur ein Beispiel für eine (erste) Schwellenwertposition, die verwendet werden kann, ist, und dass auch andere Schwellenwertpositionen verwendet werden können. Weiterhin dient die Position von VAdepth in 5A nur als Beispiel.
  • Merkmalerkennungsoperationen können für die von SW1 umschlossenen (und in einem Gleitfensterpuffer vorliegenden) Arbeitsdaten durchgeführt werden. Auf solche Operationen folgend kann die Gleitfenstersteuereinrichtung feststellen, ob SW1 VAdepth erreicht hat. Bei Feststellung, dass SW1 VAdepth nicht erreicht hat, wendet die Gleitfenstersteuereinrichtung in dieser Ausführungsform einen vertikalen Versatz (VO) auf die Pixelkoordinaten, die im Gleitfenster SW1 enthalten sind, an, um ein neues Gleitfenster SW1' zu definieren, das in eine erste Richtung versetzt ist. In diesem Fall die erste Richtung nach unten von SW1, so dass SW1' vertikal von SW1 versetzt ist, dieses aber überlappt. SW1' kann daher neue Arbeitsdaten umschließen, die neue Bilddaten, die VO entsprechen, enthalten und Daten, die einem Teil der Arbeitsdaten, die von SW1 umschlossen waren, und die in einem Gleitfensterpuffer vorhanden sind, d. h. vertikale Wiederverwendungsdaten, wiederverwenden. Merkmalserkennungsoperationen können sich dann fortsetzen und der Prozess kann iterieren, was in der Produktion zusätzlicher vertikal versetzter Gleitfenster resultiert, bis ein aktuelles Gleitfenster VAdepth erreicht, wie in 5B und 5C gezeigt. In dieser Hinsicht zeigt 5C ein Beispiel, in dem ein Gleitfenster SW1" VAdepth erreicht hat.
  • Um festzustellen, ob ein Gleitfenster eine Schwellenwertposition erreicht hat, kann eine Gleitfenstersteuereinrichtung Pixelkoordinaten von Pixeln innerhalb eines aktuellen Gleitfensters mit Pixelkoordinaten, die einer Schwellenwertposition entsprechen, vergleichen. In dieser Hinsicht kann eine Schwellenwertposition als eine Linie definiert werden, die senkrecht von einer vertikalen oder horizontalen Achse einer 2D-Repräsentation eines berücksichtigten Bildes projiziert. Dieses Konzept wird in 5A-5D gezeigt, die eine Schwellenwert-VAdepth als eine horizontale Linie zeigen, die sich senkrecht von einer vertikalen Achse des Bildes 500 erstreckt. Die Gleitfenstersteuereinrichtung kann feststellen, dass ein aktuelles Gleitfenster eine Schwellenwertposition erreicht hat, wenn Pixelkoordinaten innerhalb des aktuellen Gleitfensters Pixelkoordinaten, die der Schwellenwertposition entsprechen, enthalten oder an diese anstoßen. In 5C und 5D kann eine Gleitfenstersteuereinrichtung beispielsweise feststellen, dass Gleitfenster SW1" VAdepth erreicht hat, weil eine oder mehrere Pixelkoordinate/n in SW1" eine oder mehrere Pixelkoordinate/n, die VAdepth entspricht bzw. entsprechen, enthält bzw. enthalten oder an diese anstoßen.
  • Nach der Durchführung der Merkmalserkennungsoperationen für Kandidatenpixel in einem Gleitfenster, das eine Schwellenwertposition (z. B. SW1") erreicht hat, kann die Gleitfenstersteuereinrichtung einen zweiten Versatz auf Pixelkoordinaten eines aktuellen Gleitfensters anwenden, um ein neues Gleitfenster zu definieren, das in eine zweite Richtung versetzt ist, wobei die zweite Richtung sich von der ersten Richtung, die durch die Anwendung des ersten Versatzes erreicht wurde, unterscheidet. Wenn beispielsweise ein erster angewendeter Versatz ein vertikaler Versatz war, kann der zweite Versatz ein horizontaler oder diagonaler Versatz sein. Wenn der erste angewendete Versatz ein horizontaler Versatz war, kann der zweite Versatz ein vertikaler oder diagonaler Versatz sein, und wenn der erste angewendete Versatz ein diagonaler Versatz war, kann der zweite Versatz ein horizontaler oder ein vertikaler Versatz sein. 5D zeigt ein Beispiel dieses Konzepts, in dem eine Gleitfenstersteuereinrichtung einen diagonalen Versatz auf Pixelkoordinaten eines Gleitfensters SW1" anwendet, um ein neues Gleitfenster SW2 zu definieren, das diagonal von SW1" versetzt ist. In dieser Ausführungsform enthält der diagonale Versatz 505 eine vertikale Versatzkomponente VO, die größer ist als die Gleitfensterhöhe von SW1", und eine horizontale Komponente HO, die kleiner ist als die Gleitfensterbreite von SW1". Die VO-Komponente des diagonalen Versatzes in dieser Ausführungsform ist derart konfiguriert, dass das neue Gleitfenster SW2 angrenzend an oder in der Nähe eines oberen vertikalen Randes 503 des Bildes 500 positioniert ist. Insbesondere ist die VO-Komponente in dieser Ausführungsform der Anzahl der Pixelreihen zwischen einer obersten Pixelreihe, die in SW1" enthalten ist, und einer obersten Pixelreihe (d. h. ein oberer Rand) des Bildes 500 gleich. Demgegenüber war die HO-Komponente des diagonalen Versatzes derart konfiguriert, dass das neue Gleitfenster SW2 mindestens einen Teil der Arbeitsdaten eines vorherigen Gleitfensters, beispielsweise SW1, umschließt. Selbstverständlich dient die Verwendung des diagonalen Versatzes 505 und die Positionierung von SW2 nur als beispielhafte Veranschaulichung und es können auch andere Arten von Versätzen (die in unterschiedlichen Positionierungen von SW2 resultieren) verwendet werden.
  • Merkmalserkennungsoperationen können dann an Arbeitsdaten im Gleitfenster SW2 durchgeführt werden. Auf solche Operationen folgend kann die Gleitfenstersteuereinrichtung 313 feststellen, ob SW2 eine Schwellenwertposition erreicht hat. Falls nicht, kann die Gleitfenstersteuereinrichtung 313 wieder einen ersten Versatz auf Pixelkoordinaten in dem aktuellen Gleitfenster anwenden, um ein neues Gleitfenster zu definieren, das in eine erste Richtung relativ zu dem aktuellen Gleitfenster versetzt ist. Dieses Konzept wird in 5E gezeigt, worin ein vertikaler Versatz VO auf Pixelkoordinaten von SW2 angewendet wird, um ein neues Gleitfenster SW2' zu definieren. Wenn ein aktuelles Gleitfenster jedoch eine Schwellenwertposition erreicht, kann wieder ein zweiter Versatz auf die Pixelkoordinaten in dem aktuellen Gleitfenster angewendet werden, um ein neues Gleitfenster zu definieren, das in eine andere Richtung versetzt ist. Dieses Konzept wird in 5F gezeigt, die die Anwendung eines diagonalen Versatzes 505 auf die Pixelkoordinaten von SW2" zeigt, um ein neues Gleitfenster SW3 zu definieren.
  • Der vorstehende Prozess kann iterieren bis ein aktuelles Gleitfenster sowohl eine Schwellenwertposition als auch einen Rand eines Bildes erreicht. In solchen Fällen (und vorausgesetzt, dass ein Ende des berücksichtigten Bildes noch nicht erreicht wurde) kann die Gleitfenstersteuereinrichtung einen dritten Versatz auf die Pixelkoordinaten des aktuellen Gleitfensters anwenden, um ein neues Gleitfenster zu definieren, das von dem aktuellen Gleitfenster in eine dritte Richtung, die sich von der ersten und der zweiten Richtung, die durch Anwenden des ersten und des zweiten Versatzes erhalten werden, unterscheidet.
  • Das Konzept wird in 5G gezeigt, die ein Beispiel zeigt, in dem ein aktuelles Gleitfenster (SW3") eine Schwellenwertposition (in diesem Fall VAdepth) sowie einen rechten horizontalen Rand 501 des Bildes 500 erreicht hat. In dieser Ausführungsform wendet eine Gleitfenstersteuereinrichtung einen dritten Versatz 507 (einen diagonalen Versatz) an, um ein neues Gleitfenster SW4 zu definieren, das in eine dritte Richtung versetzt ist, wobei die dritte Richtung sich von der ersten und der zweiten Richtung, die durch die Anwendung des ersten bzw. des zweiten Versatzes erhalten wurden, unterscheidet. In diesem Beispiel ist die horizontale Versatzkomponente HO des dritten Versatzes 507 derart konfiguriert, dass die am weitesten linke Pixelspalte von SW4 an einen linken horizontalen Rand 501 des Bildes 500 angrenzt. Weiterhin ist die vertikale Komponente VO des dritten Versatzes 507 derart konfiguriert, dass mindestens ein Teil von SW4 unter einer zuvor definierten Schwellenwertposition liegt (in diesem Fall zumindest teilweise unter VAdepth). An diesem Punkt kann die Gleitfenstersteuereinrichtung eine neue Schwellenwertposition entlang einer Achse des betreffenden Bildes definieren. Dieses Konzept wird in 5G gezeigt, die die Spezifikation einer neuen Vertikalzugriffstiefe, d. h. VAdepth‘, entlang der vertikalen Achse von Bild 500 zeigt.
  • Das Verarbeiten von Bild 500 kann dann auf die Weise fortgesetzt werden, die vorstehend diskutiert wurde (d. h. mit einer Gleitfenstersteuereinrichtung, die neue Gleitfenster durch entsprechende Anwendung (erster, zweiter, dritter usw.) Versätze definiert), und es können für die Arbeitsdaten, die von den neuen Gleitfenstern umschlossen werden, Merkmalserkennungsoperationen durchgeführt werden, bis ein aktuelles Gleitfenster ein Ende des betreffenden Bildes erreicht. Die Gleitfenstersteuereinrichtung kann feststellen, dass ein aktuelles Gleitfenster ein Ende eines Bildes auf eine geeignete Weise erreicht hat. Die Gleitfenstersteuereinrichtung kann beispielsweise feststellen, dass das aktuelle Gleitfenster ein Ende eines Bildes erreicht hat, wenn es Pixelkoordinaten eines Bildes umschließt, die einer oder mehreren Ecken des betreffenden Bildes entsprechen. Wie in 5H gezeigt kann zum Beispiel eine Gleitfenstersteuereinrichtung feststellen, dass ein Gleitfenster SWN ein Ende eines Bildes 500 erreicht hat, wenn es Pixelkoordinaten enthält, die eine Ecke 520 des Bildes 500 umschließen oder daran anstoßen. In diesem Fall entspricht Ecke 520 einer gegenüberliegenden Ecke, an der Gleitfenster SW1 ursprünglich definiert wurde.
  • Die Gleitfenstersteuereinrichtung kann selbstverständlich feststellen, dass ein aktuelles Gleitfenster ein Ende eines Bildes auf eine andere Weise erreicht hat. Eine Gleitfenstersteuereinrichtung kann beispielsweise Pixelkoordinaten von Pixeln in Bild 500 verfolgen, die noch nicht in ein Gleitfenster aufgenommen wurden. In solchen Fällen kann die Gleitfenstersteuereinrichtung feststellen, dass ein Gleitfenster ein Ende eines Bildes erreicht hat, wenn alle Pixel innerhalb des Bildes in einem oder mehreren Gleitfenstern aufgenommen wurden. Noch weiterhin kann die Gleitfenstersteuereinrichtung feststellen, dass ein Gleitfenster ein Ende eines Bildes erreicht hat, wenn alle potenziellen Kandidatenpixel in dem Bild Merkmalserkennungsoperationen, wie etwa einer FAST-Merkmalserkennung, unterzogen wurden. In dieser Hinsicht kann eine Gleitfenstersteuereinrichtung auf Grundlage der Gleitfenster, die erwartungsgemäß angewendet werden, und der Auflösung des Bildes vorhersagen, welche, innerhalb eines betreffenden Bildes, Kandidatenpixel sein werden.
  • Zurückkehrend zu 3 arbeitet FIFO-Puffer 307 generell zum Speichern einer oder mehrerer Reihen und/oder Spalten von Bilddaten, die von Adressengenerator 305 auf einer First-in-First-out-Basis bereitgestellt werden. Die Größe von FIFO-Puffer 307 kann stark variieren und entspricht in manchen Ausführungsformen der Größe einer Spalte oder einer Reihe von Bilddaten, die in den Arbeitsdaten eines Gleitfensters und/oder Gleitfensterpuffers 315 enthalten sind. Die Größe des FIFO-Puffers 307 kann daher eine gewisse Beziehung zu der Größe des Gleitfensterpuffers 315 aufweisen. Weiterhin kann die Menge der Daten, die von dem Adressengenerator 305 eingeholt wird und an den FIFO-Puffer 307 zu einem Zeitpunkt bereitgestellt wird, zumindest teilweise anhand der Größe des FIFO-Puffers 307 festgestellt werden. Ohne Einschränkungen ist FIFO-Puffer 307 in manchen Ausführungsformen derart bemessen, dass er Bilddaten enthält, die einer Pixelreihe oder einer Pixelspalte von Arbeitsdaten in einem Gleitfenster entsprechen.
  • Zum Beispiel und unter Bezugnahme auf 5A und 6A kann die Gleitfenstersteuereinrichtung 313 in Ausführungsformen zum Definieren eines Gleitfensters SW1 arbeiten, das Arbeitsdaten in Form von 7 Pixelreihen R, die 16 Pixel breit sind, und 16 Pixelspalten, die 7 Pixel tief sind, umschließen, wobei jeder Pixel von acht Bits Imagedaten repräsentiert wird. In solchen Fällen kann FIFO-Puffer 307 zum Speichern von Bilddaten, die einer Pixelreihe R oder einer Pixelspalte C der Arbeitsdaten im SW1 entsprechen, bemessen werden. Das bedeutet, FIFO-Puffer 307 kann ein 128-bit FIFO-Puffer (1 Reihe) oder ein 56-bit FIFO-Puffer (1 Spalte) sein.
  • Selbstverständlich ist die Größe des Gleitfensters nicht auf die Ausführungsform in 6A beschränkt und somit ist auch die Größe des FIFO-Puffers 307 nicht auf die vorstehend genannten Werte beschränkt. Während der Durchführung von Merkmalserkennungsoperationen kann die Gleitfenstersteuereinrichtung 313 beispielsweise Gleitfenster definieren, die sich in ihrer Größe unterscheiden. Unter Bezugnahme auf 5C und 6E kann Gleitfenstersteuereinrichtung 313 zum Beispiel ein Gleitfenster SW2 definieren, das Arbeitsdaten in Form von 7 Pixelreihen R, die 22 Pixel breit sind, und 22 Pixelspalten, die 7 Pixel tief sind, definieren. In solchen Fällen kann FIFO-Puffer 307 zum Beispiel ein 176-bit FIFO-Puffer (1 Pixelreihe) oder ein 56-bit FIFO-Puffer (1 Pixelspalte) sein.
  • Solche Größen werden selbstverständlich nur zur beispielhaften Veranschaulichung angeführt und FIFO-Puffer 307 kann jede geeignete Größe haben. Es versteht sich weiterhin, dass wenn kein vollständiger Satz Arbeitsdaten bereitgestellt wird (z. B. wenn ein aktuelles Gleitfenster einen Rand/ein Ende eines berücksichtigten digitalen Bildes überlappt), Daten, die in den FIFO-Puffer (und/oder den Gleitfensterpuffer) zugeführt werden, aufgefüllt sein können, beispielsweise mit Nullen oder anderen Daten. Weiterhin kann es in Fällen, in denen Gleitfenstersteuereinrichtung 313 Gleitfenster während der Durchführung der Merkmalserkennung für ein Bild unterschiedliche Dimensionen definiert, wünschenswert sein, die Größe des FIFO-Puffers 307 auf Grundlage der Dimensionen des kleinsten und/oder größten Gleitfensters, das von der Gleitfenstersteuereinrichtung 313 definiert werden könnte, festzulegen.
  • Zurückkehrend zu 3 kann, wie vorstehend beschrieben, Adressengenerator 305 Bilddaten aus dem Speicher in Reaktion auf Steuersignale von Gleitfenstersteuereinrichtung 313 einholen und die eingeholten Bilddaten an FIFO-Puffer 307 bereitstellen. Wenn FIFO-Puffer 307 voll ist, wird mindestens ein Teil der Bilddaten darin an Wiederverwendungspuffer 309 übertragen und alle Bilddaten im FIFO-Puffer 307 werden an Konkatenator 311 übertragen.
  • Generell arbeitet Wiederverwendungspuffer 309 zum Speichern von „Wiederverwendungsdaten“, d. h. Bilddaten, die von Adressengenerator 305 zur Verwendung als Arbeitsdaten in Verbindung mit einem vorherigen Gleitfenster eingeholt werden, und die als ein Teil der neuen Arbeitsdaten in einem oder mehreren neuen Gleitfenstern wiederverwendet werden können. Ob Wiederverwendungsdaten im Wiederverwendungspuffer 309 in neuen Arbeitsdaten verwendet werden oder nicht, hängt davon ab, ob Pixeladressen der Wiederverwendungsdaten im Wiederverwendungspuffer 309 in den Pixeladressen eines neuen Gleitfensters, das von der Gleitfenstersteuereinrichtung 313, zum Beispiel nach der Anwendung eines Versatzes, definiert wird, enthalten sind. In Ausführungsformen und wie nachfolgend beschrieben können Wiederverwendungsdaten im Wiederverwendungspuffer 309 als Arbeitsdaten in einem neuen Gleitfenster, das horizontal und/oder diagonal von einem vorherigen Gleitfenster versetzt ist, verwendet werden. In solchen Fällen können alle oder ein Teil der Daten im Wiederverwendungspuffer 309 hierin als „horizontale Wiederverwendungsdaten“ oder „HRD“ (Horizontal Reuse Data) bezeichnet werden.
  • Der Teil der Bilddaten im FIFO-Puffer 307, der an Wiederverwendungspuffer 309 übertragen wird (d. h. der Teil der Bilddaten, der als Wiederverwendungsdaten gespeichert wird) hängt von der Position eines neuen/versetzten Gleitfensters (das neue Arbeitsdaten umschließt) relativ zu einem aktuellen Gleitfenster (das aktuelle/erste Arbeitsdaten umschließt) ab. Genauer gesagt: Der Teil der Bilddaten im FIFO-Puffer 307, der an den Wiederverwendungspuffer übertragen wird, hängt von der Art und Weise ab, in der Gleitfenstersteuereinrichtung 313 die neuen Gleitfenster definiert.
  • Wie vorstehend diskutiert kann Gleitfenstersteuereinrichtung 313 neue Gleitfenster durch Anwendung von einem Versatz oder mehreren Versätzen definieren. Zum Beispiel und wie in 5A-5H gezeigt kann Gleitfenstersteuereinrichtung 313 erste, zweite und/oder dritte Versätze auf Pixelkoordinaten eines aktuellen Gleitfensters anwenden, um Pixelkoordinaten für ein neues Gleitfenster, das von dem aktuellen Gleitfenster in eine oder mehrere Richtungen versetzt ist, definieren. Generell und wie in 5A-5H gezeigt resultieren der angewendete Versatz bzw. die angewendeten Versätze in der Definition eines neuen Gleitfensters, das neue Arbeitsdaten enthält, wobei die neuen Arbeitsdaten neue Bilddaten (d. h. neue Bilddaten, die aus Speicher 219 gelesen werden) und Wiederverwendungsdaten (d. h. Bilddaten, die im Wiederverwendungspuffer 309 erhalten oder im Gleitfensterpuffer 315 einbehalten werden) enthalten. Anders ausgedrückt: Gleitfenstersteuereinrichtung 313 kann einen Versatz oder mehrere Versätze zum Definieren eines neuen Gleitfensters definieren, das mit einer oder mehreren Ober-, Links-, Rechts- oder Unterseite/n oder einem vorherigen Gleitfenster überlappt.
  • 5B zeigt ein Beispiel, in dem ein neues Gleitfenster SW1' einen unteren Teil eines ersten Gleitfensters SW1 nach Anwendung eines vertikalen Versatzes VO auf Pixelkoordinaten von SW1 überlappt. Demgegenüber zeigt 5D ein Beispiel, in dem ein neues Gleitfenster SW2 einen Seitenteil eines vorherigen Gleitfensters (SW1) nach Anwenden eines diagonalen Versatzes 505 auf Pixelkoordinaten eines Gleitfensters SW1" überlappt.
  • In Fällen, in denen ein neues Gleitfenster einen unteren oder oberen Teil eines vorherigen Gleitfensters überlappt, können die Wiederverwendungsdaten eine oder mehrere Bilddatenreihe/n sein, die zuvor als Arbeitsdaten eines vorherigen Gleitfensters verwendet wurde/n, und die einer oder mehreren Pixelreihe/n neuer Arbeitsdaten in dem neuen Gleitfenster (d. h. vertikale Wiederverwendungsdaten) entsprechen. In Fällen, in denen ein neues Gleitfenster ein Seitenteil eines vorherigen Gleitfensters überlappt, können die Wiederverwendungsdaten eine oder mehrere Spalte/n Bilddaten sein, die zuvor als Arbeitsdaten eines vorherigen Gleitfensters verwendet wurden, und die einer oder mehreren Pixelreihe/n neuer Arbeitsdaten in dem neuen Gleitfenster (d. h. horizontale Wiederverwendungsdaten) entsprechen.
  • Gleitfenstersteuereinrichtung 313 kann ferner konfiguriert sein, ein oder mehrere Wiederverwendungssteuersignal/e auszugeben, beispielsweise an Wiederverwendungspuffer 309, Adressengenerator 305 und/oder FIFO-Puffer 307. Die Wiederverwendungssteuersignale können einen Wiederverwendungsinformationsindikator enthalten, der spezifiziert, welcher Teil der Bilddaten im FIFO-Puffer 307 im Wiederverwendungspuffer 309 gespeichert werden soll. Der Teil der Bilddaten im FIFO-Puffer 307, der im Wiederverwendungspuffer gespeichert ist, kann von der relativen Position eines neuen Gleitfensters relativ zu einem aktuellen Gleitfenster abhängen. Anders ausgedrückt: Der Teil der Bilddaten im FIFO-Puffer 307, der im Wiederverwendungspuffer 309 gespeichert ist, kann vertikalen Wiederverwendungsdaten, horizontalen Wiederverwendungsdaten oder einer Kombination davon entsprechen.
  • Zur beispielhaften Veranschaulichung wird sich die vorliegende Offenbarung auf die Beschreibung des Betriebs der Gleitfenstersteuereinrichtung 313 in Verbindung mit dem Einbehalt vertikaler und horizontaler Wiederverwendungsdaten im Kontext der Ausführungsform in 5A-5H konzentrieren. In diesem Beispiel ist ein Teil der Bilddaten im FIFO-Puffer 307, der horizontalen Wiederverwendungsdaten entspricht (d. h. eine oder mehrere Pixelspalte/n) im Wiederverwendungspuffer 309 gespeichert, während vertikale Wiederverwendungsdaten (d. h. eine oder mehrere Pixelreihe/n) im Gleitfensterpuffer 315 einbehalten werden. Diese Beschreibung ist selbstverständlich nicht einschränkend und die im FIFO-Puffer 307 und/oder Gleitfensterpuffer 315 einbehaltenen Wiederverwendungsdaten sind nicht auf horizontale bzw. vertikale Wiederverwendungsdaten beschränkt. In Ausführungsformen, in denen beispielsweise ein horizontaler Versatz auf Pixelkoordinaten eines aktuellen Gleitfensters zum Definieren eines neuen Gleitfensters angewendet wird, kann der horizontale Versatz kleiner sein als die Gleitfensterbreite des aktuellen Gleitfensters. In diesem Fall können die horizontalen Wiederverwendungsdaten im Gleitfensterpuffer 315 einbehalten und vertikale Wiederverwendungsdaten im Wiederverwendungspuffer 309 einbehalten werden.
  • Unter Bezugnahme auf 5A kann die Gleitfenstersteuereinrichtung 313, wie gesagt, ein erstes Gleitfenster SW1 mit einer Gleitfensterbreite SW1W und einer Gleitfensterhöhe SW1H an einer oberen linken Ecke des Bildes 500 definieren. In Reaktion auf Steuersignale von Gleitfensterpuffer 313 kann Adressengenerator 319 neue Bilddaten 319, die den Arbeitsdaten von SW1 entsprechen, aus dem gemeinsamen Speicher 219 einholen. Die neuen Bilddaten können FIFO-Puffer 307 auf Einzelzeilenbasis zugeführt werden. In dieser Ausführungsform kann ein Teil der am weitesten rechts liegenden Pixelspalten der Bilddaten in FIFO 307 im Wiederverwendungspuffer 307 gespeichert werden und alle Bilddaten im FIFO 307 werden in Gleitfensterpuffer 315 geschrieben. Die Anzahl der am weitesten rechts liegenden Pixelspalten, die im Wiederverwendungspuffer 309 gespeichert werden, entspricht einem horizontalen Versatz, der später angewendet wird, wenn ein aktuelles Gleitfenster eine Schwellenwertposition (VAdepth) wie nachfolgend beschrieben erreicht.
  • Wenn Gleitfensterpuffer 315 voll ist (d. h. er enthält alle Arbeitsdaten von SW1) können Merkmalserkennungsoperationen für die Kandidatenpixel darin durchgeführt werden, wie später in Verbindung mit 6A-6E beschrieben. Nach solchen Operationen kann Gleitfenstersteuereinrichtung 313 feststellen, dass SW1 eine vertikale Schwellenwertposition innerhalb eines digitalen Bildes (z. B. VAdepth oder einen vertikalen Rand des Bildes 500) nicht erreicht hat und kann einen vertikalen Versatz VO zum Definieren eines neuen Gleitfensters SW1', wie vorstehend beschrieben und in 5B gezeigt, anwenden. Der angewendete VO ist oder entspricht einer Teilmenge der Gesamtzahl der Pixelreihen, die in den Arbeitsdaten des ersten Gleitfensters enthalten sind. Das neue Gleitfenster SW1' ist daher durch VO vertikal von SW1 versetzt und enthält neue Arbeitsdaten, wobei die neuen Arbeitsdaten vertikale Wiederverwendungsdaten (Vertical Reuse Data; VRD) und neue Daten (ND) enthalten, wie in 5B gezeigt.
  • Vor Anwenden des VO ist Gleitfensterpuffer 315 voll mit den Arbeitsdaten, die von SW1 umschlossen werden, d. h. ersten Arbeitsdaten. Gleitfenstersteuereinrichtung 313 kann daher ein Wiederverwendungssteuersignal an Gleitfensterpuffer 315 ausgeben, wobei das Wiederverwendungssteuersignal konfiguriert ist, Gleitfensterpuffer 315 zu veranlassen, einen Teil der ersten Arbeitsdaten darin, die dem anzuwendenden VO entsprechen, zu verwerfen, und den verbleibenden Teil der ersten Arbeitsdaten als vertikale Wiederverwendungsdaten einzubehalten. Je nach dem Zeichen der VO kann das Wiederverwendungssteuersignal Gleitfensterpuffer 315 auch dazu veranlassen, die vertikalen Wiederverwendungsdaten nach oben oder unten zu verschieben, beispielsweise um eine dem VO entsprechende Anzahl von Pixelreihen. Gleitfenstersteuereinrichtung 313 kann dann den Adressengenerator veranlassen, nur die neuen Daten (ND), die von SW1' umschlossen sind, aus Speicher 219 einzuholen. Die neuen Daten werden dann an FIFO 307 bereitgestellt. Ein Teil der neuen Daten in FIFO 307 kann im Wiederverwendungspuffer 309 gespeichert werden und alle neuen Daten können an Konkatenator 311 übertragen werden. Wie nachfolgend diskutiert kann Konkatenator 311 die neuen Daten mit den vertikalen Wiederverwendungsdaten im Gleitfensterpuffer 315 verknüpfen, was in der Präsentation der neuen Arbeitsdaten (die von SW1' umschlossen werden) im Gleitfensterpuffer 315 resultiert.
  • Ein Beispiel für die Bewegung von Bilddaten im Gleitfensterpuffer 315 in Verbindung mit der Anwendung eines vertikalen Versatzes lässt sich durch Vergleichen der 6A und 6D entnehmen. In der Ausführungsform in 5A hat Gleitfenstersteuereinrichtung 313 ein Gleitfenster SW1 an einer oberen linken Ecke des Bildes 500 definiert. Wie in 6A gezeigt kann SW1 Arbeitsdaten enthalten, die einer 7 x 16 Pixelanordnung entsprechen, d. h. Arbeitsdaten, die hinreichend sind, um 10 Kandidatenpixel für das Durchführen von FAST-Eckenerkennung zu enthalten. Merkmalserkennungsoperationen, wie etwa FAST-Eckenerkennung, können für Kandidatenpixel in den Arbeitsdaten von SW1 durchgeführt werden, wie in 6A-6C gezeigt.
  • Nach solchen Operationen kann Gleitfenstersteuereinrichtung 313 einen vertikalen Versatz VO zum Definieren eines neuen Gleitfensters SW1' anwenden, wie vorstehend diskutiert. Wie ebenfalls bereits diskutiert kann Gleitfenstersteuereinrichtung 313 konfiguriert sein, Gleitfensterpuffer 315 zu veranlassen (z. B. durch Ausgabe von Wiederverwendungssteuersignalen), einen Teil der ersten Arbeitsdaten, die darin gespeichert sind, und der dem angewendeten VO entspricht (d. h. eine Anzahl von Pixelreihen, die dem Wert des vertikalen Versatzes gleich ist) zu verwerfen und einen Teil der ersten Arbeitsdaten, die darin gespeichert sind, als vertikale Wiederverwendungsdaten einzubehalten. Das Konzept wird in 6D veranschaulicht, die die Bewegung von Daten im Gleitfensterpuffer 315 in einem Beispiel zeigt, in dem ein VO, der einer Pixelspalte der Arbeitsdaten in SW1 gleich ist (d. h. Pixelreihe R0 aus 5A) angewendet wird, um ein neues Gleitfenster SW1', das um eine Pixelreihe nach unten versetzt ist, zu definieren.
  • Wie in 6D gezeigt kann Gleitfenstersteuereinrichtung 313 (über Wiederverwendungssteuersignale) Gleitfensterpuffer 315 veranlassen, die oberste Reihe (R0) der ersten Arbeitsdaten, die aktuell darin gespeichert sind, zu verwerfen und die anderen Reihen (R1-R6) als vertikale Wiederverwendungsdaten einzubehalten. Zusätzlich kann Gleitfensterpuffer 315 (in Reaktion auf Wiederverwendungssteuersignale) Reihen R1-R6 der ersten Arbeitsdaten um eine Pixelreihe nach oben verschieben. Neue Bilddaten (ND) in FIFO 307, die einer Pixelreihe entsprechen (d. h. Pixelreihe 7) können dann mit den vertikalen Wiederverwendungsdaten verknüpft und im Gleitfensterpuffer 315 als unterste Pixelreihe gespeichert werden. Im Resultat werden die neuen Arbeitsdaten in SW1' im Gleitfensterpuffer 315 präsentiert. Wie in 6D gezeigt enthalten die neuen Arbeitsdaten mehrere neue Kandidatenpixel p1'...p10', von denen jeder vertikal um eine Reihe relativ zu den zuvor analysierten Kandidatenpixeln p1...p10 in SW1 versetzt ist.
  • Die vorstehende Diskussion hat sich auf die Verwendung vertikaler Wiederverwendungsdaten im Gleitfensterpuffer 315 im Kontext der Anwendung eines vertikalen Versatzes konzentriert. Es versteht sich aber, dass auch andere Arten von Wiederverwendungsdaten verwendet werden können. In der Tat kann Gleitfenstersteuereinrichtung 313 konfiguriert sein, einen Teil der Bilddaten im FIFO-Puffer 307 zu veranlassen, im Wiederverwendungspuffer 309 gespeichert zu werden, beispielsweise zur Wiederverwendung in anderen Szenarien.
  • Gleitfenstersteuereinrichtung 313 kann beispielsweise, nach Durchführung der ersten Merkmalserkennungsoperationen für einen oder mehrere erste Kandidatenpixel in ersten Arbeitsdaten eines ersten Gleitfensters (SW1), feststellen, dass das erste Gleitfenster eine Schwellenwertposition in einem digitalen Bild (z. B. VAdepth oder einen vertikalen/horizontalen Rand) erreicht hat. In solchen Fällen kann Gleitfenstersteuereinrichtung einen zweiten (z. B. horizontalen und/oder diagonalen) Versatz auf Pixelkoordinaten des ersten Gleitfensters anwenden, um eine neue Teilmenge von Pixeln im Digitalbild 500 zur Analyse auszuwählen, d. h. um ein neues Gleitfenster zu definieren, das in eine andere Richtung als das erste Gleitfenster versetzt ist. Der zweite Versatz kann beispielsweise einen horizontalen Versatz enthalten, der kleiner ist als die Breite eines zuvor angewendeten Gleitfensters, d. h. der einem Teil der Anzahl der Pixelspalten, die in einem vorherigen Gleitfenster enthalten sind, gleich ist. Im Resultat können die Pixeladressen, die das neue Gleitfenster definieren, Pixeladressen von einem oder mehreren vorherigen Gleitfenstern umschließen. Das neue Gleitfenster kann daher neue Arbeitsdaten enthalten, die Wiederverwendungsdaten enthalten (überlappen) (d. h. Arbeitsdaten von einem oder mehreren vorherigen Gleitfenster/n) und neue Bilddaten. Genauer gesagt: Das neue Gleitfenster kann eine linke oder rechte Seite eines zuvor verwendeten Gleitfensters überlappen. In solchen Fällen können die Wiederverwendungsdaten als mindestens einen Teil der am weitesten links oder rechts gelegenen Pixelspalten der Arbeitsdaten von einem oder mehreren vorherigen Gleitfenster/n enthaltend verstanden werden, d. h. links oder rechts der neuen Bilddaten, die in den neuen Arbeitsdaten enthalten sind. Aus diesem Grund werden solche Wiederverwendungsdaten als „horizontale Wiederverwendungsdaten“ bezeichnet.
  • Wenn von einer Gleitfenstersteuereinrichtung zum Definieren eines neuen Gleitfensters nur ein horizontaler Versatz angewendet wird, kann der Wert des horizontalen Versatzes einem Teil der Pixelspalten in einem aktuellen Gleitfenster entsprechen. Je nach seinem Zeichen kann der horizontale Versatz einer Anzahl von am weitesten rechts oder links liegenden Spalten der Arbeitsdaten in einem Gleitfensterpuffer entsprechen. In solchen Fällen kann Gleitfenstersteuereinrichtung 313 veranlassen (über Wiederverwendungssteuersignale), dass eine Anzahl von Pixelspalten in dem Gleitfensterpuffer 315, die dem horizontalen Versatz entspricht, verworfen wird und die verbleibenden Pixelspalten in dem Gleitfensterpuffer 315 als horizontale Wiederverwendungsdaten einbehalten werden. Gleitfenstersteuereinrichtung 313 kann dann veranlassen, dass neue Daten, die dem horizontalen Versatz entsprechen, eingeholt (z. B. durch Adressengenerator 305 aus dem gemeinsamen Speicher 219) und in einen FIFO-Puffer eingegeben werden. Die eingeholten neuen Daten können dann mit den horizontalen Wiederverwendungsdaten (z. B. wie in 6E gezeigt und nachfolgend diskutiert) verknüpft werden, was in dem Vorhandensein neuer Arbeitsdaten (die dem neuen Gleitfenster entsprechen) in dem Gleitfensterpuffer resultiert.
  • In anderen Ausführungsformen und wie in 5D und 5F gezeigt, kann Gleitfenstersteuereinrichtung 313 einen diagonalen Versatz (d. h. eine Kombination aus einem vertikalem Versatz und einem horizontalen Versatz) zum Definieren eines neuen Gleitfensters anwenden. In den Ausführungsformen in 5D und 5F hat das Gleitfenster (SW1", SW2") eine Schwellenwertposition (in diesem Fall VAdepth) entlang einer vertikalen Achse von Bild 500 erreicht. Nachdem festgestellt wurde, dass das Gleitfenster eine Schwellenwertposition (und nicht einen Rand oder ein Ende des Bildes 500) erreicht hat, kann Gleitfenstersteuereinrichtung 313 einen diagonalen Versatz 505 auf die Pixelkoordinaten, die das vorherige Gleitfenster (SW1", SW2") definieren, anwenden, um ein neues Gleitfenster (SW2, SW3) zu definieren, das diagonal von dem vorherigen Gleitfenster versetzt ist.
  • In diesem Beispiel ist die VO-Komponente des diagonalen Versatzes 505 größer als die Gleitfensterhöhe des vorherigen Gleitfensters (SW1", SW2"), aber die HO-Komponente des diagonalen Versatzes 505 ist kleiner als die Gleitfensterbreite des vorherigen Gleitfensters (SW1", SW2"). Das neue Gleitfenster (SW2, SW3) umschließt daher neue Arbeitsdaten, die sich von einem oberen Rand des Bildes 500 erstrecken, und die sowohl neue Daten ND als auch horizontale Wiederverwendungsdaten (HRD) enthalten. In diesem Fall entsprechen die HRD einer oder mehreren der am weitesten rechts liegenden Pixelspalten der von SW1, d. h. einem vorherigen Gleitfenster, umschlossenen Arbeitsdaten, die zuvor in einem Wiederverwendungspuffer, wie etwa Wiederverwendungspuffer 309, gespeichert waren. SW2 überlappt daher einen Teil der am weitesten rechts gelegenen Pixelspalten der Arbeitsdaten in SW1.
  • Es ist erwähnenswert, dass die neuen Arbeitsdaten in dem neuen Gleitfenster (SW2, SW3) nicht die Arbeitsdaten in dem vorherigen Gleitfenster (SW1", SW2") enthalten und daher keine der Arbeitsdaten, die aktuell in einem Gleitfensterpuffer (z. B. Gleitfensterpuffer 315) enthalten. Bei Anwendung des diagonalen Versatzes 505 kann die Gleitfenstersteuereinrichtung 313 daher veranlassen (über Wiederverwendungssteuersignale), dass alle Arbeitsdaten in einem Gleitfensterpuffer verworfen werden. Weiterhin kann Gleitfenstersteuereinrichtung 313 (über Steuersignale) Adressengenerator 305 veranlassen, neue Bilddaten, die den neuen Daten, die von SW2 umschlossen werden, aus dem Speicher einzuholen. Die eingeholten neuen Bilddaten können einem FIFO-Puffer (z. B. FIFO 307) zugeführt und mit den HRD in einem Wiederverwendungspuffer (z. B. Wiederverwendungspuffer 309) verknüpft werden, wie generell in 6E gezeigt. Genauer gesagt: Pixelreihen (R0-R6) einer am weitesten links liegenden Spalte C16 der neuen Daten ND werden mit Pixelreihen (R0-R6) der horizontalen Wiederverwendungsdaten HRD wie gezeigt verknüpft.
  • Die Gleitfenstersteuereinrichtung 313 kann ein neues Gleitfenster derart definieren, dass es die gleichen wie oder unterschiedliche Dimensionen als ein zuvor verwendetes Gleitfenster hat. Ein Beispiel dieses Konzepts wird durch Vergleich von 6A, 6D und 6E gezeigt. Ohne Einschränkungen sind in manchen Ausführungsformen die Dimensionen jedes Gleitfensters (z. B. die Menge der nicht aufgefüllten Arbeitsdaten in einem Gleitfensterpuffer) die gleichen, wie in 6A und 6D gezeigt. In anderen Ausführungsformen können sich die Dimensionen jedes Gleitfensters voneinander unterscheiden (z. B. die Menge der Auffüllungen, die auf Bilddaten in einem Gleitfensterpuffer angewendet wird, kann sich unterscheiden). In der Ausführungsform in 6E hat Gleitfenster SW2 beispielsweise eine Gleitfensterbreite (SW2W), die sich von der (in diesem Falls ist sie größer als die) Gleitfensterbreite eines vorherigen Gleitfensters (SW1, SW1', SW1"- siehe 6A-6C) unterscheidet. In jedem Fall können die Arbeitsdaten von SW2 zusätzliche Kandidatenpixel enthalten, einschließlich Pixel, die in den von dem vorherigen Gleitfenster (SW1) umschlossenen Arbeitsdaten keine Kandidatenpixel waren, enthalten (z. B. p11, p12, p13 ...).
  • Die hierin beschriebenen Gleitfenstersteuereinrichtungen können auch dafür konfiguriert sein, ein Versatzschema zu implementieren, wobei neue Gleitfenster von der gesteuerten Anwendung eines Versatzes oder mehrerer Versätze definiert wird, beispielsweise auf eine vordefinierte Weise. Ein Beispiel dieses Konzept wird in 5A-5H und 6A-6E gezeigt. Wir bereits erklärt kann die Analyse eines Bildes 500 mit der Definition eines Gleitfensters SW1, wie in 5A gezeigt, beginnen. Den Arbeitsdaten in SW1 entsprechende Bilddaten können aus dem Speicher eingeholt und in einen FIFO geladen werden. Eine oder mehrere Pixelzeilen der Bilddaten in dem FIFO (entsprechend einem horizontalen Versatz, der später anzuwenden ist) können in einen Wiederverwendungspuffer zur späteren Verwendung als horizontale Wiederverwendungsdaten (HRD) geladen werden. Alle Bilddaten in dem FIFO werden dann in einen Gleitfensterpuffer geladen. Wenn der Gleitfensterpuffer voll ist, werden Merkmalserkennungsoperationen (z. B. FAST-Eckenerkennungsoperationen) für Kandidatenpixel in den Arbeitsdaten in dem Gleitfensterpuffer durchgeführt, beispielsweise wie in 6A-6C gezeigt.
  • In Verbindung mit dem Versatzschema kann von einer Gleitfenstersteuereinrichtung ein vertikaler Versatz VO auf die Pixelkoordinaten des SW1 angewendet werden, um ein neues Gleitfenster SW1' vertikal davon zu versetzen, wie in 5B gezeigt. Eine oder mehrere Reihen Bilddaten, die dem angewendeten VO entsprechen, können aus dem Gleitfensterpuffer verworfen werden und die verbleibenden Reihen (vertikale Wiederverwendungsdaten) können um eine Menge, die den verworfenen Reihen entspricht, (in diesem Fall nach oben) verschoben werden. Neue Bilddaten, die den neuen Daten in dem neuen Gleitfenster SW1' entsprechen, können aus dem Speicher eingeholt und mit den vertikalen Wiederverwendungsdaten derart verknüpft werden, dass SW1' entsprechende Arbeitsdaten präsentiert werden. Merkmalserkennungsoperationen können dann für Kandidatenpixel der neuen Arbeitsdaten auf die gleiche Weise durchgeführt werden, wie in 5A-5C gezeigt.
  • Der Prozess kann iterieren bis ein Gleitfenster eine Schwellenwert-VAdepth erreicht, wie von SW1" in 3 gezeigt. An diesem Punkt kann die Gleitfenstersteuereinrichtung (in Verbindung mit dem Versatzschema) einen diagonalen Versatz 505 zum Definieren eines neuen Gleitfensters SW2 anwenden, wie in 5D gezeigt. Das neue Gleitfenster SW2 umschließt neue Arbeitsdaten, die HRD enthalten, d. h. Bilddaten die zuvor von SW1 umschlossen (und in einem Wiederverwendungspuffer gespeichert) wurden sowie neue Daten ND. Neue ND entsprechende Daten werden gelesen (wobei ein Teil im Wiederverwendungspuffer 309 zur späteren Verwendung als HRD gespeichert werden) und mit HRD in dem Wiederverwendungspuffer verknüpft, um neue SW2 entsprechende Arbeitsdaten in dem Gleitfensterpuffer zu präsentieren. Merkmalserkennung für Kandidatenpixel in den Arbeitsdaten von SW2 kann dann durchgeführt werden, wie in 6E gezeigt. Vertikales Versetzen kann dann auf SW2 zum Definieren neuer Gleitfenster (SW2', SW2") durchgeführt werden, wie in 5E-5F gezeigt, und auf die gleiche Weise, wie vorstehend in Hinblick auf die Anwendung vertikaler Versätze auf SW1, SW1' usw. diskutiert.
  • Während FIFO-Puffer 307 neue Zeilen von Bilddaten 319 vom Adressengenerator 305 zur Population des Gleitfensters SW1, SW1', SW1" usw. empfängt, kann Gleitfenstersteuereinrichtung 313 veranlassen, dass ein Teil der Bilddaten im FIFO-Puffer 307 im Wiederverwendungspuffer 309 gespeichert werden. Gleitfenstersteuereinrichtung 313 kann insbesondere veranlassen, dass einer oder mehreren am weitesten rechts liegenden Pixelspalten der Arbeitsdaten von SW1, SW1' usw. entsprechende Bilddaten im Wiederverwendungspuffer 309 zur späteren Verwendung als HRD in den Arbeitsdaten von SW2, SW2' usw. gespeichert werden. Die horizontalen Arbeitsdaten können mit neuen Daten, die in SW2, SW2' usw. enthalten sind, wie angemessen verknüpft werden. Gleitfenstersteuereinrichtung 313 kann SW2, SW2', SW' auch derart konfigurieren, dass eine oder mehrere ihrer Dimension/en den Dimensionen von SW1, SW' usw. gleich oder größer als diese ist bzw. sind.
  • Ein Beispiel für dieses Konzept ist in 6E veranschaulicht, das Gleitfenster SW2 als 7 Pixelreihen (R0-R7) und 22 Pixelspalten (C10-C31) enthaltend veranschaulicht, was angibt, dass ein horizontaler Versatz von 10 Pixelspalten auf SW1" angewendet wurde. Die resultierenden neuen Arbeitsdaten enthalten horizontale Wiederverwendungsdaten (d. h. Pixelreihen 10-15 - entsprechend den 6 am weitesten rechts liegenden Pixelreihen der Arbeitsdaten in SW1) und neue Daten (d. h. Pixelreihen 16-31), wobei eine am weitesten rechts liegende Pixelspalte der HRD (d. h. Spalte 15) mit einer am weitesten links liegenden Reihe neuer Daten (d. h. Spalte 16) verknüpft ist. In diesem Beispiel kann Gleitfenstersteuereinrichtung 313 veranlassen, dass die 6 am weitesten rechts liegenden Spalten jeder neuen Reihe von Pixeldaten im FIFO 307 in Wiederverwendungspuffer 309 zur späteren Verwendung als horizontale Wiederverwendungsdaten in einem oder mehreren (horizontal versetzten) Gleitfenster/n geschrieben werden.
  • Zurückkehrend zu 3 kann Puffer 309 ein beliebiger Puffer oder andere Speichervorrichtung sein, die für das Speichern (horizontaler) Wiederverwendungsdaten nach der vorliegenden Offenbarung geeignet ist. Die Größe des Wiederverwendungspuffers 309 kann beispielsweise auf Grundlage der Menge (horizontaler) erwarteter darin zu speichernder Wiederverwendungsdaten gewählt/festgelegt werden. Die Menge der Wiederverwendungsdaten kann beispielsweise von der Größe der Gleitfenster, der Position der Schwellenwertpunkte in den Bilddaten, dem Wert der Versätze, die zum Definieren neuer Gleitfenster angewendet werden, der Auflösung der berücksichtigten digitalen Bilder, Kombinationen davon und dergleichen abhängen. Wenn VAdepth beispielsweise flach ist (d. h. nahe an einem oberen Rand eines Bildes) kann eine relativ kleine Menge horizontaler Wiederverwendungsdaten darin gespeichert werden, da relativ wenige neue Gleitfenster durch vertikales Versetzten bis VAdepth erreicht wird definiert werden. Demgegenüber ist, wenn VAdepth tief ist (d. h. der Gesamthöhe (Y) eines Bildes gleich), die Menge horizontaler Wiederverwendungsdaten, die in einem Wiederverwendungspuffer zu speichern sind, relativ groß, da relativ viele neue Gleitfenster durch vertikales Versetzen definiert werden können, bevor VAdepth erreicht wird. Zusammenfassend kann eine zunehmende VAdepth die Menge der Daten, die im Wiederverwendungspuffer 309 gespeichert sind, erhöhen (was die Verwendung eines größeren Puffers diktiert), während eine abnehmende VAdepth die Menge der Wiederverwendungsdaten, die im Wiederverwendungspuffer gespeichert werden, reduzieren kann (was die Verwendung eines kleineren Puffers ermöglicht).
  • Zurückkehrend zu FIG. 3 können, wie vorstehend diskutiert, alle Bilddaten im FIFO-Puffer 307 an Konkatenator 311 übertragen werden. Generell arbeitet Konkatenator 311 zum Verknüpfen neuer Bilddaten vom FIFO-Puffer 307 mit Wiederverwendungsdaten, beispielsweise horizontale Wiederverwendungsdaten im Wiederverwendungspuffer 309, vertikalen Wiederverwendungsdaten im Gleitfensterpuffer 315 oder beiden. Verknüpfung kann zum Beispiel das Verbinden von Wiederverwendungsdaten mit neuen Bilddaten umfassen, beispielsweise bei Aufrechterhaltung einer angemessenen Ausrichtung (oder von Indikatoren der Ausrichtung) zwischen Pixelspalten/-reihen neuer Daten und Pixelspalten/-reihen von Wiederverwendungsdaten. Alternativ oder zusätzlich hierzu kann Verknüpfung das Auffüllen neuer Bilddaten mit Nullen oder anderen Daten umfassen, beispielsweise in Fällen, in denen ein Gleitfenster Bilddaten umschließt, die kleiner sind als eine Größe eines Gleitfensterpuffers 315 und/oder wobei ein Gleitfenster einen Rand eines berücksichtigten Bildes umschließt.
  • Gleitfenstersteuereinrichtung 313 kann daher konfiguriert sein, eine Positionsbeziehung zwischen Pixeln neuer Bilddaten (Eingabe über FIFO 307) und Pixeln von Wiederverwendungsdaten (z. B. Eingabe über Wiederverwendungspuffer 309 oder im Gleitfensterpuffer 315 einbehaltene) zu überwachen und/oder festzulegen, um festzustellen, wie neue Bilddaten mit Wiederverwendungsdaten zu verknüpfen sind. Die Art und Weise, in der die Ausrichtung durchgeführt wird, kann davon abhängen, ob die Verknüpfung vertikale oder horizontale Wiederverwendungsdaten betrifft.
  • Wenn neue Bilddaten mit vertikalen Wiederverwendungsdaten verknüpft werden sollen (z. B. nach Anwendung eines vertikalen Versatzes), kann Gleitfenstersteuereinrichtung 313 Konkatenator 311 (z. B. über Steuersignale) veranlassen, eine Anzahl von Pixelspalten neuer Bilddaten im FIFO-Puffer 307 auf entsprechende Pixelspalten einer obersten oder untersten Pixelreihe der vertikalen Wiederverwendungsdaten im Gleitfensterpuffer 315 auszurichten. Ob eine Verknüpfung mit der obersten oder untersten Pixelreihe der vertikalen Wiederverwendungsdaten erfolgt, kann von dem Zeichen des angewendeten vertikalen Versatzes abhängen. Ein Beispiel für dieses Konzept wird in 6D gezeigt.
  • Wenn neue Bilddaten im FIFO-Puffer 307 mit horizontalen Wiederverwendungsdaten verknüpft werden sollen (z. B. nach Anwendung eines horizontalen und/oder diagonalen Versatzes) kann Gleitfenstersteuereinrichtung 313 Konkatenator 311 veranlassen, eine Anzahl von Pixelreihen neuer Bilddateneingaben durch FIFO-Puffer 307 auf entsprechende Reihen einer am weitesten links gelegenen oder am weitesten rechts gelegenen Pixelspalte der horizontalen Wiederverwendungsdaten im Wiederverwendungspuffer 309 auszurichten. Ob eine Verknüpfung mit der am weitesten links oder rechts gelegenen Pixelspalte der Wiederverwendungsdaten erfolgt, kann von dem Zeichen des angewendeten horizontalen Versatzes abhängen. Ein Beispiel für dieses Konzept wird in 6E gezeigt.
  • FIFO-Puffer 307 kann daher neue Bilddaten vom Adressengenerator 305 auf Einzelreihenbasis oder auf Einzelspaltenbasis empfangen und der Einbehalt horizontaler und/oder vertikaler Wiederverwendungsdaten und die Verknüpfung von Wiederverwendungsdaten mit neuen Bilddaten kann ebenfalls auf Einzelreihenbasis oder Einzelspaltenbasis durchgeführt werden. Konkatenator 311 lässt sich daher als eine oder mehrere Zeilen neuer Daten mit einer oder mehreren Zeilen von Wiederverwendungsdaten verknüpfend verstehen, was in der Produktion (neuer) Arbeitsdaten resultiert, die im Gleitfensterpuffer 315 gespeichert werden.
  • Gleitfensterpuffer 315 ist generell konfiguriert, um Bilddaten, die den Arbeitsdaten in einem Gleitfenster nach der vorliegenden Offenbarung entsprechen, zu speichern. Jeder geeignete Puffer oder andere Speichervorrichtung kann als Gleitfensterpuffer 315 verwendet werden. Ohne Einschränkungen ist Gleitfensterpuffer 315 in manchen Ausführungsformen ein Puffer (z. B. ein FIFO-Puffer), der dafür konfiguriert ist, eine Menge von Bilddaten, die der Menge von Arbeitsdaten in einem Gleitfenster gleich oder im Wesentlichen gleich ist, zu speichern. Die Größe des Gleitfensters 315 kann daher zumindest teilweise auf der Menge von Bilddaten basieren, die in einem Gleitfenster, das zum Durchführen von Merkmalserkennungen nach der vorliegenden Offenbarung verwendet wird, enthalten sind. Die Größe des Gleitfensterpuffers 315 kann der Anzahl der Pixel, die in den Arbeitsdaten eines Gleitfensters enthalten sind, multipliziert mit der Menge der Daten, die jedem Pixel entsprechen, gleich oder im Wesentlichen gleich sein.
  • In Fällen, in denen ein Gleitfenster dimensioniert ist, Arbeitsdaten einschließlich 7 Pixelreihen, die jeweils 16 Pixel breit sind (wie in 6A-6D gezeigt) zu umschließen, enthalten die Arbeitsdaten in dem Gleitfenster 112 Pixel. In solchen Fällen und wenn Pixel mit 8 Bits Daten repräsentiert werden, kann Gleitfensterpuffer 315 ein Puffer sein, der konfiguriert ist, 896 Bits Daten (112 Pixel x 8 Bit pro Pixel) zu speichern. Alternativ hierzu enthalten die Arbeitsdaten in dem Gleitfenster, in Fällen, in denen ein Gleitfenster dimensioniert ist, Arbeitsdaten, die 7 Pixelreihen, die jeweils 22 Pixel breit sind, zum umschließen (wie in 6E gezeigt), 154 Pixel. In solch einem Fall und wenn ein Pixel von 8 Bits Daten repräsentiert wird, kann Gleitfensterpuffer 315 ein Puffer sein, der konfiguriert ist, 1232 Bits Daten (154 Pixel x 8 Bits pro Pixel) zu speichern. In Fällen, in denen Gleitfenster mit unterschiedlichen Dimensionen verwendet werden, kann die Größe des Gleitfensterpuffers 315 zumindest teilweise auf den Dimensionen des größten Gleitfensters, das eingesetzt werden kann, basieren. Selbstverständlich dienen diese Größen nur der beispielhaften Veranschaulichung und es können beliebige Puffer/Speichervorrichtungen mit geeigneter Größe als Gleitfensterpuffer 315 verwendet werden. In Fällen, in denen ein Gleitfenster Arbeitsdaten umschließt, die kleiner sind als die Größe eines Gleitfensterpuffers, kann ein Teil der Bilddaten im Gleitfensterpuffer mit Nullen oder anderen Daten aufgefüllt werden.
  • Gleitfenstersteuereinrichtung 313 kann auch konfiguriert sein, Gleitfensterpuffer 315 zu überwachen und festzustellen, ob er voll ist oder nicht. Wenn Gleitfensterpuffer 315 nicht voll ist, kann Gleitfenstersteuereinrichtung 313 weitere Steuersignale an Adressengenerator 305 ausgeben, die den Adressengenerator 305 veranlassen, zusätzliche neue Bilddaten (neue Daten) an FIFO-Puffer 307 bereitzustellen. Die zusätzlichen neuen Daten können von Konkatenator 311, wie vorstehend angemerkt, mit Wiederverwendungsdaten verknüpft werden und die resultierenden Arbeitsdaten können im Gleitfensterpuffer 315 gespeichert werden. Die Bereitstellung neuer Daten kann fortgesetzt werden, bis Gleitfensterpuffer 315 voll ist. An diesem Punkt kann Gleitfenstersteuereinrichtung 313 veranlassen, dass die Arbeitsdaten darin an Erkennungsanordnung 317 zum Durchführen der Merkmalserkennungsoperationen, beispielsweise durch Erkennungsanordnung 317, übertragen werden.
  • Erkennungsanordnung 317 ist generell konfiguriert, die Durchführung der Merkmalserkennungsoperationen für Kandidatenpixel in den Arbeitsdaten, die im Gleitfensterpuffer 315 enthalten sind und/oder von diesem übertragen werden, durchzuführen oder die Durchführung zu veranlassen. Hierfür enthält Erkennungsanordnung 317 einen oder mehrere Merkmalserkennungsprozessoren FD0, FD1, FD2... FDn, wobei jeder Merkmalserkennungsprozessor konfiguriert ist, Merkmalserkennungsoperationen für einen oder mehrere Kandidatenpixel in Arbeitsdaten durchzuführen.
  • In Ausführungsformen enthalten die Arbeitsdaten in Gleitfensterpuffer 315 mehrere Kandidatenpixel und der eine oder die mehreren Merkmalserkennungsprozessor/en sind konfiguriert, jeden der mehreren Kandidatenpixel in Serie zu bearbeiten. Alternativ hierzu enthält Erkennungsanordnung 317 in Ausführungsformen mehrere Merkmalserkennungsprozessoren, wobei jeder Merkmalserkennungsprozessor konfiguriert ist, einen jeweiligen einen der mehreren Kandidatenpixel in den Arbeitsdaten parallel zu bearbeiten. In solchen Fällen kann das Initiieren der Operation jeweils eines Merkmalserkennungsprozessors an einem Kandidatenpixel nicht durch den Abschluss von Merkmalserkennungsoperationen durch einen anderen Merkmalserkennungsprozessor an einem anderen Kandidatenpixel bedingt sein. Der Zeitraum, der für das Durchführen der Merkmalserkennungsoperationen an allen Kandidatenpixeln innerhalb der Arbeitsdaten erforderlich ist, kann daher im Vergleich zur seriellen Verarbeitung solcher Kandidatenpixel und/oder der Durchführung von Merkmalserkennungsoperationen durch einen Allzweckprozessor reduziert werden. In manchen Ausführungsformen kann Merkmalserkennungsanordnung 317 zum Beispiel derart konfiguriert sein, dass Merkmalserkennungsoperationen für jeden Kandidatenpixel in Arbeitsdaten im Gleitfensterpuffer 315 von Merkmalserkennungsprozessoren FD0...FDn in einem einzelnen Rechenzyklus abgeschlossen werden können.
  • Die Anzahl der Merkmalserkennungsprozessoren ist nicht beschränkt und ein oder mehrere Merkmalserkennungsprozessoren können in Merkmalserkennungsanordnung 317 enthalten sein. In manchen Ausführungsformen ist die Anzahl der Merkmalserkennungsprozessoren in der Merkmalserkennungsanordnung zumindest teilweise auf Grundlage einer maximalen Anzahl erwarteter Kandidatenpixel in Arbeitsdaten eines Gleitfensters (d. h. in den Bilddaten, die in dem Gleitfensterpuffer 315 gespeichert sind) festgelegt. Wenn zum Beispiel Gleitfensterpuffer 315 Bilddaten speichern kann, von denen erwartet wird, dass sie maximal 10 Kandidatenpixel enthalten, können in der Merkmalserkennungsanordnung 317 zehn Merkmalserkennungsprozessoren verwendet werden. In Fällen, in denen der Gleitfensterpuffer Bilddaten speichern kann, von denen erwartet wird, dass sie maximal 16 Kandidatenpixel enthalten, können 16 Merkmalserkennungsprozessoren verwendet werden. In Fällen, in denen erwartet wird, dass sich die Anzahl der Kandidatenpixel in dem Gleitfensterpuffer 315 ändert, kann die Anzahl der Merkmalserkennungsprozessoren in Merkmalserkennungsanordnung 317 der größten Anzahl Kandidatenpixeln entsprechen, die in den Bilddaten im Gleitfensterpuffer 315 vorhanden sein können. Die Anzahl der verwendeten Merkmalserkennungsprozessoren kann daher auf Grundlage der Größe der Arbeitsdaten im Gleitfensterpuffer 315 und der Art der durchgeführten Merkmalserkennungsoperationen festgelegt werden.
  • Die Art und Natur der Merkmalserkennungsoperationen, die von Merkmalserkennungsprozessoren FD0...FDn usw. durchgeführt werden, ist nicht beschränkt und es kann jede geeignete Art von Merkmalserkennungsoperationen verwendet werden. Ohne Einschränkungen sind in manchen Ausführungsformen Merkmalserkennungsprozessoren FD0...FDn konfiguriert, Ecken- oder andere Merkmalserkennungsoperationen an Bilddaten durchzuführen oder anderweitig zu implementieren, beispielsweise unter Verwendung von einer oder mehreren Version/en der FAST-Eckenerkennung, wie hierin beschrieben. In manchen Ausführungsformen führen Merkmalserkennungsprozessoren FD0...FDn FAST9- oder FAST12-Eckenerkennungsoperationen an Kandidatenpixeln in Arbeitsdaten eines Gleitfensters durch. In solchen Fällen beziehen sich die Ausdrücke „9“ und „12“ auf die Anzahl n von Pixeln eines Bresenham-Kreises, der einen Kandidatenpixel P umschließt, die jeweils eine Intensität von größer als die Intensität Ip des Kandidatenpixels plus einem Schwellenwert (t) (i.e., Ip+t) aufweisen müssen, oder die jeweils eine Intensität von weniger als Ip - t aufweisen müssen, damit ein Merkmalserkennungsprozessor den relevanten Kandidatenpixel als eine Ecke klassifiziert. Ohne Einschränkungen ist in Ausführungsformen jeder Merkmalserkennungsprozessor ein Hardwareprozessor, der zweckgebunden gebaut wird, um Merkmalserkennungsoperationen in Übereinstimmung mit einem oder mehreren Merkmaldetektoren, wie etwa einem FAST-Eckendetektor, durchzuführen.
  • 6A-6E zeigen ein Beispiel für die Durchführung von Merkmalserkennungsoperationen an Kandidatenpixeln in Arbeitsdaten von Gleitfenstern gemäß der vorliegenden Offenbarung, beispielsweise unter Verwendung von einem oder mehreren Merkmalserkennungsprozessor/en, die konfiguriert sind, FAST-Eckenerkennung unter Verwendung eines Bresenham-Kreises mit Radius 3 zu implementieren. Wie vorstehend diskutiert können die Arbeitsdaten, die von einem ersten Gleitfenster SW1 umschlossen sind, an Gleitfensterpuffer 315 bereitgestellt werden. Wie in 6A-6C gezeigt enthalten die Arbeitsdaten 10 Kandidatenpixel p1 ... p10. Wie gezeigt sind p1 und p10 die ersten und letzten Kandidatenpixel in den Arbeitsdaten, da sie die ersten und die letzten Pixel sind, die von einem Bresenham-Kreis mit Radius 3 begrenzt werden können (durch schattierte Pixel 1-16 veranschaulicht). In Übereinstimmung mit der vorstehenden Diskussion können Merkmalserkennungsprozessoren in Merkmalserkennungsanordnung 317 FAST-Eckenerkennung an Kandidatenpixeln durchführen, beispielsweise seriell oder parallel. Ohne Einschränkungen enthält die Merkmalserkennungsanordnung in manchen Ausführungsformen mindestens 10 Merkmalserkennungsprozessoren, wobei jeder Merkmalserkennungsprozessor FAST-Merkmalserkennung für einen entsprechenden Kandidatenpixel p1...p10 durchführt. In solchen Fällen kann FAST-Eckenerkennung für Kandidatenpixel p1...p10 parallel durchgeführt werden.
  • Wie vorstehend beschrieben kann eine Gleitfenstersteuereinrichtung vertikale, horizontale oder andere Versätze zum Definieren neuer Gleitfenster, die neue Arbeitsdaten enthalten, anwenden. In jedem Fall resultiert die Anwendung eines Versatzes in der Präsentation neuer Arbeitsdaten in einem Gleitfensterpuffer, wobei die neuen Arbeitsdaten neue Kandidatenpixel für das Durchführen von Merkmalserkennungsoperationen, wie etwa FAST-Eckenerkennung, enthalten. Im Fall eines vertikalen Versatzes werden die neuen Kandidatenpixel vertikal relativ zu vorher berücksichtigten Kandidatenpixeln versetzt. Das Konzept wird in 6D gezeigt, das die Durchführung von FAST-Eckenerkennung an neuen Kandidatenpixeln p1'...p10' in neuen Arbeitsdaten von Gleitfenster SW1' zeigt, wobei die neuen Kandidatenpixel in 1 Pixelreihe unter den zuvor berücksichtigten Kandidatenpixeln p1-p10 vorhanden sind.
  • Selbstverständlich ist die Anzahl der Kandidatenpixel in Arbeitsdaten nicht auf die 10 in 6A-6C gezeigten Kandidatenpixel beschränkt. In der Tat kann die Anzahl der Kandidatenpixel in Arbeitsdaten in manchen Ausführungsformen variieren, wobei die Anzahl der Kandidatenpixel von den Dimensionen der Arbeitsdaten in einem Gleitfenster abhängt. Zum Beispiel kann, wie vorstehend in Verbindung mit 5D diskutiert, ein diagonaler und/oder horizontaler Versatz zum Definieren eines neuen Gleitfensters, das neue Arbeitsdaten umschließt, die von der Größe her größer sind als die Arbeitsdaten in einem vorherigen Gleitfenster, angewendet werden.
  • Zum Beispiel kann ein neues Gleitfenster SW2 definiert werden, das eine größere Gleitfensterbreite (SW2W) hat als die Breite (SW1"W) eines vorherigen Gleitfensters SW1". Die Anzahl der Kandidatenpixel in SW2 kann daher relativ zu der Anzahl der Kandidatenpixel in SW1" erhöht werden. Das Konzept wird in 6E gezeigt, die SW2 als Arbeitsdaten umschließend veranschaulicht, die 7 Pixelreihen hoch und 22 Pixelspalten breit sind, was größer ist als die Gleitfensterbreite der zuvor verwendeten Gleitfenster (SW1, SW1', SW1''), wie in 6A-6D) gezeigt. SW2 umschließt daher, im Gegensatz zu den Arbeitsdaten von SW1...SW1", die 10 Kandidatenpixel enthalten (p1...p10), Arbeitsdaten, die 16 Kandidatenpixel (p11...p27) enthalten. Es ist anzumerken, dass 6E Pixel p9 und p10 zum Zweck der Veranschaulichung der Aufnahme von horizontalen Daten (HRD) in die Arbeitsdaten von SW2 zeigt. Pixel p9 und p10 sind jedoch keine Kandidatenpixel für die Durchführung der FAST-Eckenerkennung in 6E, da sie nicht von einem Bresenham-Kreis mit Radius 3 begrenzt werden können. In der Ausführungsform in 6E sind Pixel p11 und p27 somit der erste und der letzte Kandidatenpixel in den Arbeitsdaten von SW2.
  • Wie weiter in 3 gezeigt enthält System 300 eine Erkennungssteuereinrichtung 303. Erkennungssteuereinrichtung 303 ist generell konfiguriert, die Durchführung der Merkmalserkennungsoperationen durch Erkennungsanordnung 317 zu überwachen, die Aufzeichnung der erkannten Merkmale im Speicher zu steuern und Adressengenerator 305 zu informieren, wenn Merkmalserkennungsoperationen für alle Kandidatenpixel in den berücksichtigten Arbeitsdaten abgeschlossen sind.
  • In Ausführungsformen ist Erkennungssteuereinrichtung 303 konfiguriert, die Durchführung von Merkmalserkennungsoperationen durch Erkennungsanordnung 317 zu überwachen und, wenn ein oder mehrere Kandidatenpixel als ein Merkmal klassifiziert werden (z. B. eine Ecke), die Aufzeichnung dieses Merkmals in einer Speichervorrichtung, wie etwa gemeinsamen Speicher 219, zu veranlassen. Merkmalserkennungsanordnung 317 kann beispielsweise ein Erkennungssignal an Erkennungssteuereinrichtung 303 ausgeben, wobei das Erkennungssignal einen Erkennungsindikator enthält, der spezifiziert, wann ein Merkmalserkennungsprozessor der Merkmalserkennungsanordnung 317 einen Kandidatenpixel als ein Merkmal klassifiziert hat und/oder nicht. Kandidatenpixel, die als ein Merkmal von einer Merkmalserkennungssteuereinrichtung klassifiziert wurden, werden hierin als „erkannte Merkmale“ bezeichnet.
  • In Reaktion auf den Empfang eines Merkmalerkennungssignals, einschließlich eines Merkmalerkennungsindikators, der ein erkanntes Merkmal angibt, kann Erkennungssteuereinrichtung 303 veranlassen, dass eine Aufzeichnung des erkannten Merkmals bzw. der erkannten Merkmale im gemeinsamen Speicher 219 gespeichert wird. Die Aufzeichnung kann in einer Datenstruktur enthalten sein, wie etwa, aber nicht beschränkt auf, die Liste erkannter Merkmale 321. In Ausführungsformen hat die Liste erkannter Merkmale 321 die Form einer Nachschlagetabelle oder einer anderen Datenstruktur, in der erkannte Merkmale nach den Pixelkoordinaten ihrer entsprechenden Kandidatenpixel aufgezeichnet werden.
  • In zusätzlichen Ausführungsformen kann Erkennungssteuereinrichtung 303 die Pixelkoordinaten eines erkannten Merkmals aufzeichnen oder deren Aufzeichnung veranlassen (z. B. in der Liste erkannter Merkmale 321) sowie die von Pixelkoordinaten jedes der Pixel in der Pixelnachbarschaft, die von der Merkmalserkennungsanordnung 317 zum Klassifizieren von Kandidatenpixel als ein erkanntes Merkmal (nachfolgend „entsprechende Nachbarschaft“) verwendet wird. Und in noch weiteren Ausführungsformen kann die Erkennungssteuereinrichtung das Speichern (z. B. in der Liste erkannter Merkmale 321) der Pixelkoordinaten eines Kandidatenpixels, der als ein erkanntes Merkmal klassifiziert wurde, der Pixelkoordinaten jedes der Pixel in der entsprechenden Nachbarschaft sowie ergänzender Informationen veranlassen. Nicht einschränkende Beispiele für ergänzende Informationen umfassen Intensitätsinformationen, d. h. die Intensität der Kandidatenpixel, die als ein Merkmal identifiziert wurden, sowie die Intensität jedes der Pixel innerhalb der entsprechenden Nachbarschaft. Ergänzende Informationen können auch einen Stärkewert für ein erkanntes Merkmal enthalten, beispielsweise einen Stärkewert, der durch iteratives Bewerten eines erkannten Merkmals, wie nachfolgend diskutiert, festgestellt wurde. Die Informationen in der Liste erkannter Merkmale 321 (z. B. erkannte Merkmalskoordinaten, Pixelnachbarschaftskoordinaten, ergänzende Informationen usw.) können von einer Verfolgungskomponente der vorliegenden Offenbarung als ein „Referenzpatch“ verwendet werden, beispielsweise für das Durchführen von Merkmalsverfolgungsoperationen, wie etwa normierte Kreuzkorrelation (NCC).
  • Erkennungssteuereinrichtung 303 kann ferner konfiguriert sein, die Durchführung von Merkmalserkennungsoperationen durch Merkmalserkennungsanordnung 317 für Kandidatenpixel in Arbeitsdaten zu überwachen und Adressengenerator 305 zu informieren, wenn die Durchführung solcher Merkmalserkennungsoperationen für alle Kandidatenpixel durch Erkennungsanordnung 317 abgeschlossen ist. In dieser Hinsicht kann das von der Merkmalserkennungsanordnung 317 produzierte Merkmalserkennungssignal einen Abschlussindikator enthalten, der angibt, ob Merkmalserkennungsoperationen für alle Kandidatenpixel in berücksichtigten Arbeitsdaten abgeschlossen sind oder nicht. In Reaktion auf den Empfang eines Merkmalerkennungssignals, einschließlich eines Abschlussindikators, der den Abschluss von Merkmalserkennungsoperationen angibt, kann Merkmalserkennungssteuereinrichtung 303 solch einen Abschluss an Adressengenerator 305 und/oder Gleitfenstersteuereinrichtung 313 signalisieren. Erkennungssteuereinrichtung 303 kann zum Beispiel ein oder mehrere Erkennungsabschlusssignale an Adressengenerator 305 und/oder Gleitfenstersteuereinrichtung 313 ausgeben, die den Abschluss der Merkmalserkennungsoperationen von Merkmalserkennungsanordnung 317 für die aktuellen Arbeitsdaten signalisieren.
  • In Reaktion auf ein oder mehrere Erkennungsabschlusssignale kann die Gleitfenstersteuereinrichtung 313 einen Versatz auf das in Frage kommende Gleitfenster anwenden, um ein neues Gleitfenster, wie vorstehend erklärt, zu definieren. Die Spezifikation und/oder das Speichern der Wiederverwendungsdaten, das Durchführen der Merkmalserkennungsoperationen usw. können dann wie vorstehend beschrieben fortfahren und iterieren bis ein Ende des berücksichtigten Bildes erreicht wird (5H).
  • Wie sich aus dem Vorstehenden verstehen lässt, können bei der Durchführung der Merkmalserkennungsoperationen für Kandidatenpixel signifikante Bilddatenmengen wiederverwendet werden. Wenn beispielsweise ein vertikaler Versatz auf ein aktuelles Gleitfenster angewendet wird, werden nur die Arbeitsdaten in einem Gleitfensterpuffer verworfen, die dem vertikalen Versatz entsprechen, und die verbleibenden Arbeitsdaten werden in dem Gleitfensterpuffer als vertikale Wiederverwendungsdaten einbehalten. Im Resultat kann nur eine relativ kleine Menge an neuen Bilddaten zur Eingabe (z. B. über FIFO 317) erforderlich sein, um neue Arbeitsdaten zu produzieren, die unterschiedliche Kandidatenpixel für das Durchführen von Merkmalserkennungsoperationen enthalten. Im Resultat müssen im Vergleich zu Merkmalserkennungsprozessen, die vom Einholen einer vollständig neuen Nachbarschaft von Bilddaten vor dem Durchführen jeder Merkmalserkennungsoperation abhängig sind, möglicherweise signifikant weniger Lesevorgänge für neue Bilddaten durchgeführt werden.
  • Weiterhin können, wenn ein horizontaler Versatz angewendet wird, horizontale Wiederverwendungsdaten (z. B. innerhalb eines Wiederverwendungspuffers) mit neuen Bildzeilen von Bilddaten verknüpft werden, um einen neuen Satz Arbeitsdaten zu produzieren. Aufgrund der Geschwindigkeit und/oder Position des Wiederverwendungspuffers (Speichern horizontaler Wiederverwendungsdaten) kann die Durchführung der Merkmalserkennungsoperationen im Vergleich zu den Merkmalserkennungsprozessen, die von dem Einholen vollständig neuer Nachbarschaften von Bilddaten vor Durchführung jeder Merkmalserkennungsoperation abhängig sind, beschleunigt werden. Die Verwendung horizontaler Wiederverwendungsdaten kann auch eine große Zahl an Kandidatenpixeln zur Analyse präsentieren, was die Geschwindigkeit, mit der die Merkmalserkennung durchgeführt werden kann, weiter erhöht wird (insbesondere, wenn mehrere Merkmalserkennungsprozessoren an mehreren Kandidatenpixeln parallel arbeiten können).
  • Ein anderer Aspekt der vorliegenden Erfindung betrifft Verfahren zum Durchführen von Merkmalserkennung unter Verwendung von einem oder mehreren Gleitfenster/n. In diesem Zusammenhang wird auf 4 Bezug genommen, die ein Flussdiagramm der Operationen eines beispielhaften Verfahrens 400 zum Durchführen von Merkmalserkennung nach der vorliegenden Offenbarung ist. Zur besseren Übersicht und ein besseres Verständnis werden die Operationen des Verfahrens 400 kurz in Verbindung mit 5A-5H und 6A-6E beschrieben.
  • Vor Diskussion des Verfahrens in 4, wie vorstehend beschrieben, kann ein Bildsensor und/oder ein ISP alle oder einen Teil der Bilddaten eines digitalen Bildes für das Durchführen der Bilderkennungsoperationen bereitstellen. Das digitale Bild kann derart als ein zweidimensionales Pixelfeld repräsentiert werden, dass das digitale Bild eine Gesamtbildhöhe Y (in Pixeln) und eine Gesamtbildbreite X (in Pixeln) hat. Dieses Konzept wird in 5A-5H gezeigt, die jeweils ein digitales Bild 500 mit einer Gesamtbildhöhe Y und einer Gesamtbildbreite X zeigen. Die Auflösung (d. h. die Anzahl der Pixel darin) des Bildes 500 lässt sich durch Multiplikation von X und Y ermitteln. Es ist anzumerken, dass zum Zweck der Klarheit und einem leichteren Verständnis die folgende Diskussion des Verfahrens in 4 und die Ausführungsform in 5A-5H und 6A-6C sich auf das Durchführen von Merkmalserkennungsoperationen für ein einzelnes Bild 500 konzentrieren. Es versteht sich, dass die hierin beschriebenen Technologien nicht auf die Durchführung von Merkmalserkennungsoperationen für einzelne Bilder beschränkt sind, und dass Bild 500 eines von mehreren Bildern sein kann, beispielsweise in einem Videostream, der von einem Bildsensor und/oder ISP bereitgestellt wird.
  • Zurückkehrend zu 4 kann Verfahren 400 an Block 401 beginnen. Das Verfahren kann dann zu optionalem Block 403 fortfahren, gemäß dem eine oder mehrere Schwellenwertpositionen identifiziert werden können, und die Dimensionen eines ersten Gleitfensters können festgestellt werden. Wie vorstehend diskutiert können solche Operationen von einer Gleitfenstersteuereinrichtung einer Erkennungskomponente eines SLAM HWA durchgeführt werden. 5A zeigt eine beispielhafte Ausführungsform, in der ein erster Schwellenwert (z. B VAdepth) und ein erstes Gleitfenster SW1 innerhalb eines digitalen Bildes 500 definiert werden, wobei SW1 in einer oberen linken Ecke des Bildes 500 positioniert ist. In diesem Beispiel ist eine Schwellenwert-Vertikalzugriffstiefe (VAdepth) an einer vertikalen Pixelkoordinate definiert, die unter SW1 ist. Selbstverständlich sind die Position des ersten Gleitfensters SW1 und VAdepth nicht auf die in 5A und 5B veranschaulichten Positionen beschränkt. In der Tat kann Gleit-fenster SW1 Arbeitsdaten an jeder geeigneten Position innerhalb des Bildes 200 umschließen und VAdepth kann auf jede geeignete Position festgelegt werden. In manchen Ausführungsformen kann sich SW1 beispielsweise anfangs unter VAdepth befinden (z. B. wenn zum Definieren neuer Gleitfenster aufwärts-vertikale Versätze angewendet werden). Ebenso können andere Punkte als VAdepth als eine erste Schwellenwertposition verwendet werden. In manchen Ausführungsformen kann beispielsweise ein unterer vertikaler Rand 503 des Bildes 500 als ein erster Schwellenwert verwendet werden. Des Weiteren kann eine Horizontalzugriffsbreite (HAwidth, nicht gezeigt) als ein erster Schwellenwert verwendet werden und als ein Punkt entlang des horizontalen Randes 501 des Bildes 500 definiert sein.
  • Zurückkehrend zu 4 kann das Verfahren, nach den Operationen des Blocks 403 (oder falls solche Operationen nicht erforderlich sind), zu Block 405 fortfahren. Gemäß Block 405 können i-te Reihen und/oder Spalten Bilddaten innerhalb der Arbeitsdaten eines Gleitfensters auf Einzelreihenbasis oder Einzelspaltenbasis gelesen und/oder empfangen (z. B. aus dem Speicher) und an einen Puffer, wie etwa einen FIFO-Puffer, bereitgestellt werden. Die Art solcher Operationen ist die gleiche, wie vorstehend in Hinblick auf die Durchführung des Adressengenerators 305 und FIFO-Puffer 307 beschrieben, und werden daher nicht erneut beschrieben. Jede i-te Reihe/Spalte kann der ganzen oder einem Teil einer einzelnen Reihe/Spalte Arbeitsdaten innerhalb eines Gleitfensters entsprechen (z. B. SW1, SW1', SW1", SW2 ...).
  • Nach den Operationen des Blocks 405 kann das Verfahren zu Block 407 fortfahren. Gemäß Block 407 kann ein Teil der i-ten Spalte/Reihe von Daten innerhalb des FIFO-Puffers in einen Wiederverwendungspuffer geschrieben werden, beispielsweise zur späteren Verwendung als horizontale Wiederverwendungsdaten. Dieses Konzept wurde vorstehend in Verbindung mit dem Speichern von Wiederverwendungsdaten im Wiederverwendungspuffer 309 beschrieben und wird daher nicht erneut beschrieben. Das Verfahren kann dann zu Block 409 fortfahren, gemäß dem die Daten in dem FIFO-Puffer optional mit Wiederverwendungsdaten verknüpft werden können, was in der Produktion von einer oder mehreren Reihen/Spalten neuer Arbeitsdaten resultiert, die in einem Gleitfensterpuffer gespeichert werden. Wie vorstehend beschrieben können die Wiederverwendungsdaten horizontale Wiederverwendungsdaten, vertikale Wiederverwendungsdaten, Auffüllungen (z. B. wenn das Gleitfenster kleiner ist als der Gleitfensterpuffer 315 und/oder mit horizontalem Rand 501 oder vertikalem Rand 503 des Bildes 500 überlappt) oder eine Kombination davon usw. enthalten.
  • Das Verfahren kann dann zu Block 413 fortfahren, gemäß dem eine Feststellung getroffen wird, ob der Gleitfensterpuffer voll ist (z. B. mit Arbeitsdaten). Falls nicht, kann das Verfahren zu Block 405 zurückkehren. Falls dem so ist, kann das Verfahren zu Block 415 fortfahren. Gemäß Block 415 können für die Arbeitsdaten innerhalb des Gleitfensterpuffers Merkmalserkennungsoperationen durchgeführt werden, beispielsweise von einem oder mehreren Merkmalserkennungsprozessor/en einer Merkmalserkennungsanordnung. Die Merkmalserkennungsoperationen können FAST-Eckenerkennung für Kandidatenpixel innerhalb der Arbeitsdaten umfassen, wie in 6A-6E gezeigt und vorstehend beschrieben.
  • Das Verfahren kann dann zu Block 416 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob Merkmale erkannt wurden (d. h. ob Kandidatenpixel innerhalb der Arbeitsdaten als erkannte Merkmale (Ecken) klassifiziert wurden). Falls dem so ist, kann das Verfahren zu Block 417 fortfahren, gemäß dem eine Aufzeichnung des erkannten Merkmals bzw. der erkannten Merkmale vorgenommen werden kann, beispielsweise in einem gemeinsamen Speicher. Die Aufzeichnung kann eine Datenstruktur in Form einer Liste erkannter Merkmale sein, wobei die Liste erkannter Merkmale Pixelkoordinaten eines als ein erkanntes Merkmal klassifizierten Kandidatenpixels enthält, optional in Kombination mit Pixelkoordinaten einer Pixelnachbarschaft, die zum Klassifizieren des erkannten Merkmals verwendet wird und/oder ergänzenden Informationen, wie vorstehend diskutiert.
  • Nach der Aufzeichnung eines erkannten Merkmals (oder falls keine Merkmale erkannt werden) kann das Verfahren zu Block 419 fortfahren. Gemäß Block 419 wird eine Feststellung getroffen, ob ein erster Schwellenwert in einem berücksichtigten digitalen Bild erreicht wurde. Wie vorstehend in Verbindung mit 6A-6C diskutiert, kann der erste Schwellenwert einer Schwellenwert-Vertikalzugriffstiefe VAdepth innerhalb eines berücksichtigten digitalen Bildes 500 entsprechen. Dies kann nützlich sein, wenn anfänglich ein vertikaler Versatz zum Definieren neuer Gleitfenster angewendet werden soll. Obwohl nicht gezeigt, kann in anderen Ausführungsformen eine Horizontalzugriffsbreite (HAwidth) als ein erster Schwellenwert verwendet werden. Dies kann nützlich sein, wenn anfänglich ein horizontaler Versatz zum Definieren eines oder mehrerer neuer Gleitfenster angewendet werden soll. In jedem Fall kann VAdepth oder HAwidth auf die Gesamtbildhöhe bzw. -breite festgelegt werden oder auf eine Position entlang der vertikalen oder horizontalen Achse des berücksichtigten Bildes. Wie diskutiert kann sich die Position von VAdepth und HAwidth auf die Menge der Wiederverwendungsdaten, die in einem Wiederverwendungspuffer gespeichert sind, auswirken und somit für die Größe des Wiederverwendungspuffers entscheidend sein.
  • Falls gemäß Block 416 festgestellt wird, dass der erste Schwellenwert nicht erreicht wurde (siehe 5A, 5B und 5E), kann das Verfahren zu Block 420 fortfahren, gemäß dem eine Feststellung getroffen wird, ob ein vertikaler oder horizontaler Rand des berücksichtigten digitalen Bildes erreicht wurde. Die Feststellung, ob ein aktuelles Gleitfenster einen Rand eines Bildes erreicht hat, kann wie vorstehend beschrieben durchgeführt werden (z. B. mit einer Gleitfenstersteuereinrichtung) .
  • Falls ein aktuelles Gleitfenster keinen Rand eines Bildes erreicht hat, kann das Verfahren von Block 420 zu Block 421 fortfahren, gemäß dem ein erster Versatz auf ein aktuelles Gleitfenster angewendet wird, um ein neues Gleitfenster zu definieren, das in eine erste Richtung relativ zum aktuellen Gleitfenster versetzt ist. Das Konzept wird in 5B, 5C und 5E veranschaulicht, die die Anwendung eines ersten Versatzes (in diesem Fall ein vertikaler Versatz VO) auf ein aktuelles Gleitfenster (z. B. SW1, SW1', SW2), um ein neues Gleitfenster (SW1', SW1", SW2') zu definieren, das relativ zu dem aktuellen Gleitfenster (SW1, SW1', SW2) vertikal versetzt ist, zeigen. Selbstverständlich muss der erste Versatz, der gemäß Block 421 angewendet wird, kein vertikaler Versatz sein. In der Tat ist in manchen Ausführungsformen der erste gemäß Block 421 angewendete Versatz ein horizontaler Versatz. In diesem Fall kann ein neues Gleitfenster definiert werden, das relativ zu einem aktuellen Gleitfenster horizontal versetzt ist.
  • Nach den Operationen des Blocks 421 kann das Verfahren zu Block 403 zurückkehren, gemäß dem optional ein oder mehrere Schwellenwert/e definiert sein können, wonach das Verfahren dann wieder zu Block 405 fortschreitet. Während der folgenden Durchführung der Operationen von Block 405 werden jedoch nur neue Bilddaten, die in den neuen Arbeitsdaten des neuen Gleitfensters enthalten sind, gemäß Block 407 aus dem Speicher gelesen, und die neuen Daten werden mit (horizontalen oder vertikalen) Wiederverwendungsdaten gemäß Block 409 wie vorstehend diskutiert verknüpft. Ansonsten kann das Verfahren wie vorstehend in Hinblick auf das neue Gleitfenster beschrieben fortfahren.
  • Zu Blöcken 419 und 420 zurückkehrend kann das Verfahren, falls festgestellt wird, dass ein aktuelles Gleitfenster einen ersten Schwellenwert (Block 419) oder einen Rand eines Bildes (Block 420) erreicht hat, zu Block 423 fortfahren. Gemäß Block 423 kann eine Feststellung erfolgen, ob ein Ende des berücksichtigten Bildes erreicht wurde. Ob ein aktuelles Gleitfenster ein Ende eines Bildes erreicht hat, kann wie vorstehend beschrieben festgestellt werden (z. B. mit einer Gleitfenstersteuereinrichtung).
  • Falls gemäß Block 423 festgestellt wird, dass ein aktuelles Gleitfenster ein Ende eines Bildes nicht erreicht hat, kann das Verfahren zu Block 425 fortfahren. Gemäß Block 425 kann (z. B. ein zweiter, dritter usw.) Versatz auf ein aktuelles Gleitfenster angewendet werden, um ein neues Gleitfenster zu definieren, das von dem aktuellen Gleitfenster in eine Richtung versetzt ist, die sich von der ersten Versatzrichtung gemäß Block 421 unterscheidet. Zum Beispiel und wie in 5D und 5F veranschaulicht kann ein zweiter Versatz (in diesem Fall diagonaler Versatz 505 - Blöcke 419, 423, 425) auf ein aktuelles Gleitfenster (SW1", SW2"), das einen ersten Schwellenwert (in diesem Fall VAdepth) erreicht hat, angewendet werden, um ein neues Gleitfenster (SW2, SW3) zu definieren, das relativ zu dem aktuellen Gleitfenster (SW1", SW2") diagonal versetzt ist. Alternativ und wie in 5G veranschaulicht kann auf ein Gleitfenster, das einen ersten Schwellenwert erreicht hat und an einen Rand eines Bildes 500 anstößt, ein dritter Versatz (Blöcke 420, 423, 425) angewendet werden, um ein neues Fenster (SW4) zu definieren, das von dem aktuellen Gleitfenster versetzt ist.
  • Nach den Operationen des Blocks 425 kann das Verfahren zu Block 403 zurückkehren und iterieren. In Fällen, in denen ein neues Gleitfenster unter einem vorherigen Schwellenwert definiert wurde, kann ein bzw. können mehrere Schwellenwertpositionen innerhalb der Bilddaten gemäß Block 403 definiert werden. Das Konzept wird in 5G veranschaulicht, die die Anwendung eines dritten Versatzes 507 auf ein Gleitfenster SW' zum Definieren eines neuen Gleitfensters SW4, das unter einem ersten Schwellenwert (VAdepth) liegt, sowie zum Einrichten eines neuen Schwellenwerts (VAdepth‘), zeigt. Das Verfahren kann dann wie vorstehend beschrieben iterieren. Wie zuvor werden nur neue Bilddaten, die neuen Daten in dem neuen Gleitfenster entsprechen, gemäß Block 405 gelesen und die neuen Daten werden mit Wiederverwendungsdaten (sofern zutreffend) gemäß Block 409 verknüpft.
  • Zu Block 423 zurückkehrend kann das Verfahren, wenn festgestellt wird, dass ein aktuelles Gleitfenster ein Ende eines Bildes erreicht hat, zu Block 427 fortfahren und enden.
  • Wie vorstehend diskutiert enthält die Merkmalserkennungskomponente 215 eine Merkmalserkennungsanordnung, die konfiguriert ist, Merkmalserkennungsoperationen an einem oder mehreren Kandidatenpixeln in Arbeitsdaten innerhalb eines Gleitfensterpuffers durchzuführen. Der bzw. die Merkmalserkennungsprozessor/en innerhalb der Merkmalserkennung kann bzw. können beispielsweise konfiguriert sein, FAST-Eckenerkennung für Kandidatenpixel innerhalb der Arbeitsdaten in einem Gleitfensterpuffer durchzuführen. Wie vorstehend diskutiert umfasst die Durchführung von FAST-Eckenerkennung generell einen Vergleich der Intensität mehrerer Pixel an der Peripherie eines Bresenham-Kreises um einen Kandidatenpixel p mit der Intensität (Ip) des Kandidatenpixels plus oder minus einem Schwellenwert t. Wenn eine Schwellenwertzahl (n) benachbarter Pixel an der Peripherie des Bresenham-Kreises jeweils eine Intensität hat, die größer als Ip+t ist, oder kleiner als Ip - t, kann Kandidatenpixel p als eine Ecke klassifiziert werden.
  • Obwohl die vorstehende Implementierung des FAST-Eckendetektors zum Identifizieren von Ecken innerhalb eines Eingabebildes effektiv sein kann, können in manchen Fällen viele falsche Positive produziert werden. Wenn zum Beispiel der angewendete Schwellenwert t auf einen relativ niedrigen Wert festgelegt wird, können unter Verwendung der FAST-Eckenerkennungsmethode viele Kandidatenpixel als eine Ecke klassifiziert werden. Ebenso können, falls die Schwellenwertzahl/en (n) benachbarter Pixel, die für das Klassifizieren eines Kandidatenpixels als eine Ecke relativ klein ist (z. B. kleiner als oder gleich 12), bei Verwendung der FAST-Eckenerkennungsmethode viele Kandidatenpixel als Ecken klassifiziert werden. In beiden Fällen können viele falsche Positive (d. h. unzutreffend klassifizierte Kandidatenpixel) in der Ausgabe enthalten sein.
  • In diesem Wissen kann die Erkennungskomponente 215 der hierin beschriebenen Technologien die Durchführung der FAST-Eckenerkennungsoperationen für Kandidatenpixel im Vergleich zu der Durchführung solcher Operationen durch einen Allzweckprozessor signifikant beschleunigen. In der Tat können in Ausführungsformen die hierin beschriebenen Merkmalserkennungsanordnungen FAST-Eckenerkennung für mehrere Pixel parallel derart durchführen, dass jeder Kandidatenpixel in einem einzigen Rechenzyklus als eine Ecke (oder nicht) klassifiziert werden kann. Diese Leistungsverbesserung schafft Gelegenheiten zum Verbessern der Genauigkeit der durch die Durchführung der FAST-Eckenerkennungsoperationen für Kandidatenpixel produzierten Ausgaben.
  • Eine andere Ausführungsform der vorliegenden Offenbarung betrifft daher ein Verfahren zum Durchführen iterativer FAST-Eckenerkennung mit einer Merkmalserkennungsanordnung. Generell umfasst solch ein Verfahren das Bereitstellen von Arbeitsdaten an eine Merkmalserkennungsanordnung, wobei die Arbeitsdaten mehrere Kandidatenpixel enthalten, die für das Durchführen von FAST-Eckenerkennungsoperationen geeignet sind. Wie vorstehend in Verbindung mit Merkmalserkennungsanordnung 317 diskutiert kann die verwendete Merkmalserkennungsanordnung mehrere Merkmalserkennungsprozessoren enthalten, wobei jeder Merkmalserkennungsprozessor konfiguriert ist, iterativ FAST-Eckenerkennungsoperationen (z. B. FAST9, FAST12 usw.) für einen jeweiligen einen der mehreren Kandidatenpixel parallel durchzuführen.
  • In einer ersten Iteration kann ein Merkmalserkennungsprozessor die „Eckigkeit“ eines Kandidatenpixels in den Arbeitsdaten unter Verwendung eines ersten Schwellenwerts (t1) und der FAST-Eckenerkennungsmethode auswerten. Das bedeutet: Ein Merkmalserkennungsprozessor kann die Intensität der Pixel an der Peripherie eines Bresenham-Kreise mit Radius 3 mit der Intensität (Ip) eines Kandidatenpixels (p) plus oder minus dem ersten Schwellenwert t1 (d. h. Ip +/- t1) vergleichen. Falls eine Schwellenwertzahl (n) benachbarter Pixel an der Peripherie des Bresenham-Kreises jeweils eine Intensität aufweist, die größer als Ip + t oder kleiner als Ip - t ist, kann der Kandidatenpixel als eine Ecke klassifiziert werden.
  • Der Merkmalserkennungsprozessor kann dann den angewendeten Schwellenwert nach oben anpassen. Das bedeutet: Der Merkmalserkennungsprozessor kann t1 zu t2 anpassen, wobei t2 ein höherer Schwellenwert ist als t1. Der Merkmalserkennungsprozessor kann dann FAST-Eckenerkennung für den gleichen Kandidatenpixel unter Verwendung des angeglichenen Schwellenwerts t2 durchführen. Falls der Kandidatenpixel bei Verwendung des angepassten Schwellenwerts t2 als eine Ecke klassifiziert bleibt, kann der Merkmalserkennungsprozessor den Schwellenwert wieder nach oben anpassen. D. h. der Merkmalserkennungsprozessor kann t2 zu t3 anpassen, wobei t3 ein höherer Schwellenwert ist als t2. Es kann dann FAST-Eckenerkennung unter Verwendung von t3 durchgeführt werden. Der Prozess kann iterieren bis ein Schwellenwert angewendet wird, der den Merkmalserkennungsprozessor veranlasst, den Kandidatenpixel nicht als eine Ecke zu klassifizieren.
  • An diesem Punkt kann der Merkmalserkennungsprozessor einen Stärkewert feststellen, die indikativ für das Vertrauen ist, mit dem davon ausgegangen wird, dass ein Kandidatenpixel eine Ecke ist. In Ausführungsformen kann der Stärkewert zumindest teilweise der letzte angewendete Schwellenwert sein oder darauf basieren, bei dem ein Kandidatenpixel von einem Merkmalserkennungsprozessor als eine Ecke klassifiziert wurde. In manchen Ausführungsformen kann der Stärkewert eines erkannten Merkmals (Ecke) als ergänzende Daten aufgezeichnet werden usw., beispielsweise in einer Liste erkannter Merkmale, wie vorstehend diskutierte Liste erkannter Merkmale 321.
  • In manchen Fällen können alle erkannten Merkmale ungeachtet ihres Stärkewerts aufgezeichnet werden. Alternativ können in manchen Ausführungsformen nur erkannte Ecken mit einem Schwellenwertstärkewert aufgezeichnet werden, beispielsweise in Liste erkannter Merkmale 321. Anders ausgedrückt: Eine erkannte Ecke mit einem niedrigeren Stärkewert als der Schwellenwertstärkewert kann von einem Merkmalserkennungsprozessor als ein falsches Positiv klassifiziert und daher nicht aufgezeichnet werden.
  • 7 zeigt ein Beispiel für die Durchführung iterativer FAST-Eckenerkennung im Kontext von Verfahren 400 in 4. Bevor diese Implementierung diskutiert wird, ist zu betonen, dass die Implementierung der hierin beschriebenen schnellen Bewertungsmethode nicht auf Verfahren beschränkt ist, in denen eine Merkmalserkennungskomponente nach der vorliegenden Offenbarung verwendet wird, oder die auf das Verfahren nach 4 beschränkt sind.
  • Wie zuvor in Verbindung mit Block 413 in 4 erklärt, können, wenn ein Gleitfensterpuffer mit Arbeitsdaten voll ist, Merkmalserkennungsoperationen durchgeführt werden. Wie in 7 gezeigt kann Verfahren 400 in manchen Ausführungsformen von Block 413 zu Block 415' fortfahren, gemäß dem iterative Merkmalserkennungsoperationen durchgeführt werden können. Operationen von Block 415' können mit Block 717 beginnen, gemäß dem Merkmalserkennungsoperationen mit einem ersten Schwellenwert durchgeführt werden können. In Ausführungsformen können Merkmalserkennungsoperationen gemäß Block 717 FAST-Eckenerkennungsoperationen sein, wie etwa FAST9 oder FAST12-Eckenerkennungsoperationen.
  • Das Verfahren kann dann von Block 717 zu Block 719 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob ein Kandidatenpixel unter Verwendung des angewendeten Schwellenwerts als ein Merkmal klassifiziert wurde, d. h. ob ein Merkmal (Ecke) erkannt wurde. Wenn festgestellt wird, dass ein Kandidatenpixel unter Verwendung eines angewendeten Schwellenwerts als ein Merkmal klassifiziert wurde (d. h. ein Merkmal/eine Ecke wurde erkannt), kann das Verfahren von Block 719 zu Block 721 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob das erkannte Merkmal iterativ bewertet wird. Falls nicht, kann das Verfahren zu Block 720 fortfahren. Falls dem aber so ist, kann das Verfahren zu Block 723 fortfahren, gemäß dem der angewendete Schwellenwert angeglichen (z. B. erhöht) werden kann. Das Verfahren kann dann zu Block 717 zurückkehren, gemäß dem Merkmalserkennungsoperationen unter Verwendung des angeglichenen Schwellenwerts durchgeführt werden.
  • Das Verfahren kann iterieren bis gemäß Block 719 festgestellt wird, dass ein Merkmal nicht erkannt wurde, d. h. dass ein Kandidatenpixel nicht unter Verwendung eines angewendeten Schwellenwerts als eine Ecke klassifiziert wurde. An diesem Punkt kann das Verfahren zu Block 720 fortfahren. Gemäß Block 720 kann eine Feststellung erfolgen, ob eine Aufzeichnung gemacht werden soll, beispielsweise im Speicher gemäß Block 417 des Verfahrens 400. In manchen Ausführungsformen kann das Ergebnis des Blocks 720 davon abhängen, ob ein Stärkewert für einen berücksichtigten Kandidatenpixel erzeugt wurde. Wie vorstehend angemerkt, kann der Stärkewert der höchste Schwellenwert sein, an dem ein Kandidatenpixel als ein Merkmal klassifiziert wurde, oder diesem entsprechen. In Ausführungsformen, in denen ein Kandidatenpixel mit Anwendung eines Standardschwellenwerts nicht als ein Merkmal klassifiziert wird, kann kein Stärkewert erzeugt werden. In solchen Fällen kann gemäß Block 720 eine Feststellung nicht aufzuzeichnen getroffen werden und das Verfahren kann zu Block 419 in 4 fortfahren. Iteratives Bewerten kann daher schnell beendet werden, wenn ein Kandidatenpixel nicht als ein Merkmal/eine Ecke unter Verwendung eines Standardschwellenwerts klassifiziert wird.
  • In Fällen, in denen jedoch ein Stärkewert erzeugt wurde (d. h. wenn ein Kandidatenpixel als ein Merkmal/eine Ecke unter Verwendung von mindestens einem Standardschwellenwert oder höher klassifiziert wurde), kann die Feststellung, die gemäß Block 720 getroffen wird, variieren. In manchen Ausführungsformen kann eine Feststellung gemäß Block 720 getroffen werden, alle Kandidatenpixel, für die ein Stärkewert erzeugt wurde, (d. h. alle Merkmale) aufzuzeichnen. In solchen Fällen kann das Verfahren für alle erkannten Merkmale von Block 720 zu Block 417 in 4 fortfahren.
  • Alternativ kann in manchen Ausführungsformen das Ergebnis des Blocks 720 davon abhängen, ob ein Stärkewert eines Merkmals einen Mindeststärkeschwellenwert überschreitet. Falls dem so ist, kann das Verfahren von Block 720 zu Block 419 in 4 fortfahren, gemäß dem Merkmale mit einem Stärkewert, der den Mindeststärkeschwellenwert überschreitet, aufgezeichnet werden können. Falls ein Stärkewert eines Merkmals unter dem Mindeststärkeschwellenwert liegt, kann das Verfahren jedoch zu Block 419 in 4 fortfahren.
  • Die vorstehende Diskussion konzentrierte sich auf Merkmalserkennung und die Durchführung von Merkmalserkennungsoperationen für Bilddaten unter Verwendung eines Gleitfensters, z. B. unter Verwendung von FAST-Eckenerkennung. Wie vorstehend angemerkt darf SLAM HWA 211 jedoch nicht auf die Durchführung von Merkmalserkennungsoperationen allein beschränkt werden. In der Tat kann SLAM HWA 211, wie in 2B gezeigt, eine optionale Merkmalsverfolgungskomponente 217 enthalten.
  • Ein anderer Aspekt der vorliegenden Offenbarung bezieht sich daher auf Technologien zum Durchführen von Merkmalsverfolgung. Solche Technologien umfassen Systeme, Geräte und Verfahren zum Durchführen von Merkmalsverfolgung, wie nachfolgend diskutiert. Solche Systeme können zur Verwendung in Computer-Vision-Anwendungen geeignet sein, wie etwa visuelles SLAM, oder in anderen Anwendungen, in denen die Erkennung und/oder das Verfolgen von Merkmalen innerhalb von Bilddaten gewünscht sein kann.
  • Es wird sich daher auf 8 bezogen, die ein Beispiel für eine Merkmalsverfolgungskomponente 217 nach der vorliegenden Offenbarung zeigt. Es wird angemerkt, dass es sich, obwohl Merkmalsverfolgungskomponente 217 hierin und in den Figuren im Kontext ihrer Verwendung in SLAM HWA 211 beschrieben und dargestellt wird (z. B. in Verbindung mit Merkmalserkennungskomponente 215), versteht, dass Verfolgungskomponente 217 auch in anderen Zusammenhängen verwendet werden kann. Verfolgungskomponente 217 kann beispielsweise unabhängig von SLAM HWA 211 verwendet werden und kann für das Verfolgen von Merkmalen, die durch jedwede geeignete Merkmalserkennungsmethode erkannt wurden, geeignet sein.
  • Wie in 8 gezeigt enthält Merkmalsverfolgungskomponente 217 ein Verfolgungselement 801 und ein Erkennungselement 802. Verfolgungselement 801 enthält eine Verfolgungssteuereinrichtung 818 und Verfolgungsmodul 820. Erkennungselement 802 enthält Erkennungssteuereinrichtung 803, Merkmalserkennungsanordnung 817 und Gleitfenstermodul 822. Gleitfenstermodul 822 enthält Adressengenerator 805, FIFO-Puffer 807, Wiederverwendungspuffer 809, Konkatenator 811, Gleitfenstersteuereinrichtung 813 und Gleitfensterpuffer 815. Die Art und Funktion der Komponenten des Erkennungselements 802 ist generell den entsprechenden Komponenten der vorstehend beschriebenen Merkmalserkennungskomponenten 215 gleich. Eine ausführliche Beschreibung des Betriebs der Komponenten des Erkennungselements 802 wird daher im Interesse der Kürze nicht wiederholt.
  • Generell ist die Merkmalsverfolgungskomponente 217 für das Verfolgen von einem oder mehreren Merkmal/en unter Verwendung von Bilddaten, die beispielsweise von einem Bildsensor und/oder einem ISP bereitgestellt werden, konfiguriert. Die verfolgten Merkmale können in einer Liste erkannter Merkmale, wie etwa Liste erkannter Merkmale 321, die in einem gemeinsamen Speicher eines SLAM HWA gespeichert sind, gespeichert werden, wie in 3 und 8 gezeigt.
  • Verfolgungssteuereinrichtung 818 des Verfolgungselements 801 ist zum Durchführen von Merkmalsverfolgung generell konfiguriert, ein oder mehrere erkannte Merkmale zum Verfolgen auszuwählen, beispielsweise aus der Liste erkannter Merkmale 321. In Ausführungsformen kann die Liste erkannter Merkmale 321 eine Nachschlagetabelle oder eine andere Aufzeichnungsliste enthalten, die mehrere Merkmalskennungen enthält, wobei jede Merkmalskennung Pixelkoordinaten eines Kandidatenpixels, der als ein Merkmal klassifiziert wurde (z. B. durch Erkennungskomponente 315), Pixelkoordinaten von Pixeln in der entsprechenden Pixelnachbarschaft des Kandidatenpixels und ergänzenden Informationen in Form von Intensitätsinformationen für den Kandidatenpixel und den Pixeln in der entsprechenden Nachbarschaft des Kandidatenpixels zugeordnet ist. Die ergänzenden Informationen können ferner einen Stärkewert, der wie vorstehend beschrieben einem Merkmal zugeordnet ist, enthalten. Einträge in der Liste erkannter Merkmale 321 können in Reaktion auf Operationen einer Merkmalserkennungskomponente der vorliegenden Offenbarung, wie etwa Merkmalserkennungskomponente 215, produziert werden.
  • In Ausführungsformen kann Verfolgungssteuereinrichtung 818 konfiguriert sein, eine Auswahlreihenfolge festzulegen. Die Auswahlreihenfolge kann eine Reihenfolge spezifizieren, in der Merkmale in der Liste erkannter Merkmale 321 zu verfolgen sind und somit eine Reihenfolge, in der solche Merkmale zum Verfolgen auszuwählen sind. Verfolgungssteuereinrichtung 818 kann die Auswahlreihenfolge zumindest teilweise auf Grundlage einer Reihenfolge festlegen, in der neue Bilddaten 823 von einem Bildsensor und/oder einem ISP bereitgestellt (gerastert) werden, einer Reihenfolge, in der Merkmale in einer Liste erkannter Merkmale in neuen Bilddaten 823 zu erscheinen erwartet werden, nach den Pixelkoordinaten der erkannten Merkmale in einer Liste erkannter Merkmale oder einer Kombination davon. In manchen Ausführungsformen ist Verfolgungssteuereinrichtung 818 konfiguriert, eine Auswahlreihenfolge zumindest teilweise auf Grundlage einer Reihenfolge festzulegen, in der Merkmale in einer Liste erkannter Merkmale in neuen Bilddaten zu erscheinen erwartet werden und/oder von Pixelkoordinaten der erkannten Merkmale in einer Liste erkannter Merkmale.
  • In Ausführungsformen, in denen beispielsweise neue Bilddaten 823 von oben nach unten (oder umgekehrt) von einem Bildsensor und/oder ISP gerastert werden, kann Verfolgungssteuereinrichtung 818 konfiguriert sein, eine Auswahlreihenfolge zumindest teilweise auf Grundlage der vertikalen (y) Pixelkoordinaten, die jeder Merkmalskennung in der Liste erkannter Merkmale 321 zugeordnet ist, festzulegen. Verfolgungssteuereinrichtung 818 kann beispielsweise eine Auswahlreihenfolge festlegen, bei der Merkmale, die einer Merkmalskennung mit der bzw. den höchsten oder niedrigsten vertikalen Koordinate/n entsprechen, zuerst verfolgt werden. Alternativ oder zusätzlich kann Verfolgungssteuereinrichtung 818 auch konfiguriert sein, eine Auswahlreihenfolge zumindest teilweise auf Grundlage der vertikalen (y) Pixelkoordinaten, die jeder Merkmalskennung in der Liste erkannter Merkmale 321 zugeordnet ist, sowie auf Grundlage einer Vorhersage der Position einer Region von Interesse festzulegen, in der Merkmale in der Liste erkannter Merkmale 321 in neuen Bilddaten zu erscheinen erwartet werden.
  • In jedem Fall kann Verfolgungssteuereinrichtung 818 Merkmale in der Liste erkannter Merkmale auswählen, beispielsweise in Übereinstimmung mit einer Auswahlreihenfolge. Nachdem ein Merkmal für das Verfolgen ausgewählt wurde, kann Verfolgungssteuereinrichtung 818 und/oder Verfolgungsmodul 820 ein Referenzpatch auf Grundlage der Pixelkoordinaten und von Intensitätsinformationen des Kandidatenpixels, die dem ausgewählten Merkmal entsprechen, und von Pixeln in dessen Pixelnachbarschaft erzeugen. Generell ist das Referenzpatch derart konfiguriert, dass es für die Verwendung als Referenzpatch in einem Kreuzkorrelationsprozess geeignet ist, wie etwa, aber nicht beschränkt auf, normierte Kreuzkorrelation (NCC), Hamming-Distanz über Zähltransformation von Referenz- und Testpatches, Hamming-Distanzen über einen binären Merkmalsdeskriptor von Referenz- und Testpatches, Kombinationen davon und dergleichen. Ohne Einschränkungen wird in Ausführungsformen eine gewisse Form von NCC durch Verfolgungselement 801 verwendet, wobei das Referenzpatch derart konfiguriert ist, das es für eine Verwendung als ein Referenzpatch in einem NCC-Prozess geeignet ist.
  • Verfolgungssteuereinrichtung 818 kann auch konfiguriert sein, eine oder mehrere Region/en von Interesse innerhalb neuer Bilddaten zu identifizieren (z. B. ein neues Einzelbild, das von einem Bildsensor und/oder ISP bereitgestellt wird). Generell ist eine Region von Interesse ein Teil der neuen Bilddaten, an dem der Referenzpatch zu erscheinen vorhergesagt ist, und sie kann als ein Satz von Pixelkoordinaten in neuen Bilddaten repräsentiert werden. In Ausführungsformen kann Verfolgungssteuereinrichtung 818 eine oder mehrere Region/en von Interesse zumindest teilweise auf Grundlage von Sensordaten von einem oder mehreren Sensoren (nicht gezeigt) einer Plattform, mit der die Merkmalsverfolgungskomponente verwendet wird, identifizieren. Sensordaten können beispielsweise von Verfolgungssteuereinrichtung 818 verwendet werden, um eine Schätzung der Bewegung eines erkannten Merkmals relativ zu einem Bildsensor (z. B. Bildsensor 201) zu ermitteln, beispielsweise durch Anwendung erweiterten Kalman-Filterns auf Sensordaten (z. B. Gyroskop-, Beschleunigungssensordaten usw.), die Ausgabe vorheriger Merkmalsverfolgungsoperationen oder eine andere Methode. Auf Grundlage dieser Schätzung kann Verfolgungssteuereinrichtung 818 eine oder mehrere Region/en von Interesse in neuen Bilddaten 823, die von einem Bildsensor und/oder ISP bereitgestellt werden, ableiten, d. h. eine oder mehrere Positionen der neuen Bilddaten 823, von denen vorhergesagt wird, dass sie das Referenzpatch und somit das ausgewählte Merkmal enthalten.
  • Nachdem eine oder mehrere Regionen von Interesse festgestellt wurden, kann Verfolgungssteuereinrichtung 818 Pixelkoordinaten der Region/en von Interesse an Erkennungskomponente 802 übertragen oder, konkreter, an Gleitfenstersteuereinrichtung 813 des Gleitfenstermoduls 822. Wie vorstehend angemerkt sind die Art und Funktion der Komponenten der Erkennungskomponente 802 der Art und Funktion der Elemente der vorstehend beschriebenen Merkmalserkennungskomponente 215 im Wesentlichen ähnlich. Es ist ähnlich, wie Merkmalserkennungskomponente 215, Erkennungselement 802 beim Durchführen von Merkmalserkennungsoperationen (z. B. FAST-Eckenerkennung) für Bilddaten unter Verwendung eines Gleitfensters arbeiten. Anstatt solche Operationen für ein ganzes Bild durchzuführen kann Erkennungselement 802 jedoch konfiguriert sein, Merkmalerkennungsoperationen nur für die Region/en von Interesse, die von Verfolgungssteuereinrichtung 818 identifiziert werden, durchzuführen.
  • In Fällen, in denen die Regionen von Interesse relativ klein sind, kann Gleitfenstersteuereinrichtung 813 konfiguriert sein, relativ kleine Schwellenwertpositionen (z. B. VAdepth, HAwidth usw.) zu definieren, um die Verwendung von Wiederverwendungsdaten zu optimieren. Weiterhin können, anders als manche Ausführungsformen der Merkmalserkennungskomponente 215, alle von der Merkmalserkennungsanordnung erkannten Merkmale ohne iterative Bewertung ausgegeben werden. Noch weiter umfasst die Ausgabe des Erkennungselements 802 Pixelkoordinaten für jedes erkannte Merkmal und Pixel in seiner entsprechenden Nachbarschaft sowie Intensitätsinformationen für jeden dieser Pixel. Anders ausgedrückt: Erkennungselement 802 kann ein oder mehrere Testpatches ausgeben, wobei jedes Testpatch die Pixelkoordinaten eines erkannten Merkmals enthält und Pixel in seiner entsprechenden Nachbarschaft sowie die Intensität jedes Kandidatenpixels, der als das erkannte Merkmal klassifiziert wurde, und Pixel in der entsprechenden Nachbarschaft. Schließlich wird, wie in 8 gezeigt, die Ausgabe des Erkennungsmerkmals 802 (d. h. der Merkmalerkennungsanordnung 817) an Verfolgungsmodul 820 bereitgestellt.
  • Verfolgungsmodul 820 ist generell konfiguriert Merkmalsverfolgungsoperationen unter Verwendung eines Referenzpatch und ein oder mehrerer Testpatch/es durchzuführen. In dieser Hinsicht kann Verfolgungssteuereinrichtung 818 einen Referenzpatch eines Merkmals, das für das Verfolgen ausgewählt wurde, an Verfolgungsmodul 820 bereitstellen. Zusätzlich kann das Verfolgungsmodul ein oder mehrere Testpatch/es von Erkennungselement 802 oder, konkreter, von Merkmalserkennungsanordnung 817 empfangen. Verfolgungsmodul 820 kann dann feststellen, ob ein oder mehrere empfangene/s Testpatch/es dem Referenzpatch entsprechen und daher mit dem Merkmal, das für das Verfolgen ausgewählt wurde, korrelieren. In Ausführungsformen kann Verfolgungsmodul 820 beispielsweise eine Vorlagenvergleichsmethode nutzen, um festzustellen, ob ein oder mehrere empfangene/s Testpatch/es einem Referenzpatch entspricht bzw. entsprechen. Ohne Einschränkungen, nutzt Verfolgungsmodul 820 in manchen Ausführungsformen eine normierte Kreuzkorrelation (NCC) Funktion, um festzustellen, ob ein oder mehrere empfangene/s Testpatch/es einem Referenzpatch entspricht bzw. entsprechen.
  • In dieser Hinsicht gibt die Gleichung (1) unten eine grundsätzliche Definition eines Beispiels einer NCC-Funktion, die von Verfolgungsmodul 820 implementiert werden kann: γ = x , y ( f ( x , y ) f ¯ u , v ) ( t ( x u , y v ) t ¯ ) x , y ( f ( x , y ) f ¯ u , v ) 2 x , y ( t ( x u , y v ) t ¯ ) 2
    Figure DE102017128297A1_0001
    in der y der normierte Kreuzkorrelationskoeffizient (hierin auch als NCC-Wert bezeichnet), f(x,y) der Intensitätswert eines Testpatch mit der Größe (Mx × My) am Punkt (x,y) ist (wobei x ein Element des Satzes {0, ..., Mx - 1} und y ein Element des Satzes (0, ..., My - 1} ist) und t der Referenzpatch, der um u Schritte in die x-Richtung und um v Schritte in die y-Richtung verschoben wurde. In (1) ist f u,v der mittlere Intensitätswert von f(x,y) innerhalb des Bereichs des Referenzpatch t, verschoben nach (u,v), wie durch die untenstehende Gleichung (2) berechnet: f ¯ u , v = 1 N x N y x = u u + N x 1 y = v v + N y 1 f ( x , y ) .
    Figure DE102017128297A1_0002
    Mit ähnlicher Notation ist t der mittlere Intensitätswert des Referenzpatch t. Der Nenner (1) ist die Varianz der Null-Mittelwert-Bildfunktion f(x,y) - f und die verschobene Null-Mittelwert-Vorlagenfunktion t(x - y, y - v) - t.
  • Verfolgungsmodul 820 kann in Ausführungsformen unter Verwendung der vorstehenden Gleichung (1) einen NCC-Wert für jeden Testpatch gegenüber einem gegebenen Referenzpatch berechnen (d. h. für jeden Testpatch relativ zu einem für das Verfolgen ausgewählten Merkmal). Verfolgungsmodul 820 kann dann feststellen, ob eines der Testpatches, das von Erkennungselement 802 bereitgestellt wird, dem ausgewählten Merkmal entspricht, d. h. ob ein Testpatch ein verfolgtes Merkmal ist. Das Verfolgungsmodul kann diese Feststellung durch Vergleichen der NCC-Werte, die aus der Verwendung der Testpatches erzeugt werden, treffen. Verfolgungsmodul 802 kann in Ausführungsformen ein Testpatch identifizieren, das den höchsten als dem Referenzpatch (d. h. dem ausgewählten Merkmal) entsprechenden NCC-Wert produziert. Alternativ hierzu kann Verfolgungsmodul 802 in Ausführungsformen NCC-Werte, die aus der Verwendung der Testpatches erzeugt werden, mit einem NCC-Wert-Schwellenwert vergleichen. Testpatches, die NCC-Werte unter dem NCC-Wert-Schwellenwert produzieren, können verworfen werden, und ein Testpatch, das den höchsten NCC-Wert über dem NCC-Wert-Schwellenwert produziert, kann als dem Referenzpatch, d. h. einem verfolgten Merkmal, entsprechend identifiziert werden. Verfolgungssteuereinrichtung 818 kann Verfolgungsmodul 820 veranlassen, ein verfolgtes Merkmal im gemeinsamen Speicher 219, wie etwa in einer Datenstruktur, wie etwa der verfolgten Ausgabe 824 oder der Liste erkannter Merkmale 321, zu speichern. In Ausführungsformen kann das verfolgte Merkmal Pixelkoordinaten und Intensitätsinformationen eines erkannten Merkmals in dem Testpatch, das als ein verfolgtes Merkmal identifiziert wurde, enthalten sowie dessen entsprechende Pixelnachbarschaft. Das Verfolgen des ausgewählten Merkmals kann dann, wie vorstehend diskutiert, weiter das verfolgte Merkmal als ein ausgewähltes Merkmal verfolgen.
  • Die Verwendung des NCC-Wert-Schwellenwerts kann Verfolgungsmodul 820 darin einschränken oder davon abhalten, ein Testpatch mit einem niedrigen NCC-Wert fälschlich als einem Referenzpatch entsprechend zu identifizieren. Dies kann in Situationen, in denen Verfolgungssteuereinrichtung 818 eine Region von Interesse in neuen Bilddaten 319 identifiziert, die tatsächlich nicht das ausgewählte Merkmal enthalten, oder die ein oder mehr Merkmal/e enthalten, die nicht tatsächlich mit dem für das Verfolgen ausgewählten Merkmal korrelieren, besonders nützlich sein. In Fällen, in denen keine der Testpatches aus einer Region von Interesse den NCC-Wert-Schwellenwert überschreiten, kann Verfolgungsmodul 820 feststellen, dass keines der Testpatches dem Referenzpatch entspricht und somit keines der Testpatches das ausgewählte Merkmal enthält. In solchen Fällen kann die Verfolgungssteuerung 818, wie angemessen, eine neue Region von Interesse für eine Auswertung durch Erkennungselement 802 definieren, ein anderes Merkmal zum Verfolgen auswählen oder die Merkmalsverfolgung einstellen.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft Verfahren zum Durchführen von Merkmalsverfolgung. Es wird sich daher auf 9 bezogen, die ein Flussdiagramm beispielhafter Operationen eines Verfahrens zum Durchführen von Merkmalsverfolgung nach der vorliegenden Offenbarung ist. Wie gezeigt beginnt Verfahren 900 an Block 901. Das Verfahren kann dann zum optionalen Block 903 fortfahren, gemäß dem eine Liste verfolgter Merkmale, die mehrere erkannte Merkmale (z. B. von einer Erkennungskomponente) enthält, wie nachfolgend diskutiert sortiert werden kann. Nach den Operationen des Blocks 903 oder, falls solche Operationen nicht erforderlich sind, kann das Verfahren zu Block 905 fortfahren, gemäß dem ein Merkmal zum Verfolgen ausgewählt werden kann. Wie bereits erwähnt kann das Auswählen eines Merkmals auf eine Weise erfolgen, die einer Auswahlreihenfolge entspricht, die wiederum auf Grundlage des Sortierens der Liste verfolgter Merkmale (Block 903) oder auf andere Weise festgelegt werden kann.
  • Nachdem ein Merkmal ausgewählt wurde, kann das Verfahren zu Block 907 fortfahren, gemäß dem ein Referenzpatch festgelegt werden kann. Das Festlegen eines Referenzpatches kann das Lesen von Pixelkoordinaten und Intensitätsinformationen für einen Kandidatenpixel, die dem ausgewählten Merkmal entsprechen, und seiner entsprechenden Pixelnachbarschaft aus einem Speicher umfassen. Nachdem ein Referenzpatch festgelegt wurde, kann das Verfahren zu Block 909 fortfahren, gemäß dem eine Region von Interesse in neuen Bilddaten festgelegt werden kann. Das Festlegen einer Region von Interesse kann das Feststellen (z. B. aus der Anwendung von Kalman-Filtern auf Sensordaten oder mit einer anderen Methode) der relativen Bewegung eines Bildsensors relativ zu einer vorherigen Verfolgung des ausgewählten Merkmals und das Schätzen einer Position innerhalb neuer Bilddaten, an der das verfolgte Merkmal befindlich zu sein erwartet wird, auf Grundlage der festgestellten relativen Bewegung umfassen. Selbstverständlich ist dies nur ein Beispiel dafür, wie eine Region von Interesse festgelegt werden kann, und es kann jede geeignete Methode zum Festlegen einer Region von Interesse verwendet werden. In jedem Fall kann die Region von Interesse einer Teilmenge der Pixelkoordinaten neuer Bilddaten entsprechen.
  • Das Verfahren kann dann zu Block 911 fortfahren, gemäß dem die Region von Interesse an ein Erkennungselement übertragen werden kann, wie etwa ein Erkennungselement, das konfiguriert ist, Merkmalsverfolgung unter Verwendung eines Gleitfensters wie hierin beschrieben durchzuführen. Wie vorstehend diskutiert kann das Erkennungselement Merkmalserkennungsoperationen für die Region von Interesse in neuen Bilddaten durchführen und einen oder mehrere Testpatch/es, die den in der Region erkannten Merkmalen entsprechen, sofern zutreffend, ausgeben.
  • Das Verfahren kann dann zu Block 913 fortfahren, gemäß dem eine Feststellung getroffen wird, ob Testpatches von der Erkennungseinheit empfangen wurden. Falls nicht, kann das Verfahren zu Block 915 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob ein Schwellenwertzeitraum abgelaufen ist (Timeout). Falls nicht, kann das Verfahren zu Block 913 zurückkehren; falls dem aber so ist, kann das Verfahren von Block 915 zu Block 917 fortschreiten. Gemäß Block 917 kann eine Feststellung getroffen werden, ob die Region von Interesse angepasst werden soll. Falls dem so ist, kann das Verfahren zu Block 909 zurückkehren, gemäß dem eine neue Region von Interesse definiert werden kann. Falls aber nicht, kann das Verfahren zu Block 919 fortschreiten. Gemäß Block 919 kann eine Feststellung getroffen werden, ob ein anderes Merkmal zum Verfolgen ausgewählt werden soll. Falls dem so ist, kann das Verfahren zu Block 905 zurückkehren; falls aber nicht, kann das Verfahren zu Block 933 fortfahren und enden.
  • Zu Block 913 zurückkehrend kann das Verfahren, falls ein oder mehrere Testpatch/es empfangen wurden, zu Block 923 fortfahren. Gemäß Block 923 können das Testpatch und das Referenzpatch verglichen werden, beispielsweise unter Verwendung einer Patchvergleichsfunktion, wie bereits erwähnt. Ohne Einschränkungen kann das Testpatch und das Referenzpatch normierter Kreuzkorrelation (NCC) unterzogen werden, beispielsweise unter Verwendung der vorstehenden Gleichung 1 oder einer anderen Methode (z. B. Ganzzahlspräzisions-NCC, wie nachfolgend diskutiert). Das Verfahren kann dann zu Block 925 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob das oder eines der Testpacht/es dem Referenzpatch entspricht (damit übereinstimmt). In Ausführungsformen kann das Ergebnis von Block 925 in manchen Ausführungsformen davon abhängen, ob ein NCC-Wert, der auf Grundlage eines der Testpatches erzeugt wurde, einen Mindest-NCC-Wert überschreitet. Falls gemäß Block 925 aber festgestellt wird, dass ein Testpatch nicht mit dem Referenzpatch übereinstimmt (diesem entspricht), kann das Verfahren zu Block 927 fortfahren, gemäß dem eine Feststellung getroffen wird, ob es ein anderes Testpatch, das zu berücksichtigten ist, gibt. Falls dem so ist, kann das Verfahren wieder zu Block 923 zurückkehren; falls aber nicht, kann das Verfahren zu Block 917 fortfahren.
  • Rückkehrend zu Block 925 kann das Verfahren, falls festgestellt wird, dass ein Testpatch einem Referenzpatch entspricht, zu Block 929 fortfahren. Gemäß Block 929 kann das Testpatch, von dem festgestellt wurde, dass es dem Referenzpatch entspricht, als ein verfolgtes Merkmal aufgezeichnet werden, beispielsweise in einem gemeinsamen Speicher. In Ausführungsformen kann das verfolgte Merkmal in einer verfolgten Ausgabe und/oder einer Liste erkannter Merkmale aufgezeichnet werden, d. h. in einer oder mehreren Datenstrukturen in einem computerlesbaren Speicher.
  • Das Verfahren kann dann von Block 929 zu Block 931 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob das verfolgte Merkmale weiter verfolgt werden soll. Falls nicht, kann das Verfahren zu Block 919 fortfahren; falls dem aber so ist, kann das Verfahren zu Block 933 fortfahren. Gemäß Block 933 kann eine Feststellung getroffen werden, ob eine Anpassung der Region von Interesse vorgenommen werden soll. Das Ergebnis von Block 933 kann beispielsweise davon abhängen, ob Sensordaten darauf hindeuten, dass sich die Position eines verfolgten Merkmals relativ zu einem Bildsensor verändert hat (d. h. ob der Bildsensor sich bewegt hat.). Falls die Region von Interesse verändert werden soll, kann das Verfahren zu Block 909 zurückkehren, gemäß dem eine neue Region von Interesse festgelegt werden kann. Falls die Region von Interesse aber nicht verändert werden soll, kann das Verfahren zu Block 911 fortfahren, gemäß dem eine vorherige Region von Interesse an ein Erkennungselement gesendet werden kann. Das Verfahren kann dann wie vorstehend diskutiert weiterlaufen, bis Block 933 erreicht wird.
  • Wie vorstehend diskutiert können die Merkmalsverfolgungstechnologien der vorliegenden Offenbarung in Ausführungsformen normierte Kreuzkorrelation (NCC) verwenden, um einen oder mehrere Testpatch/es mit einem Referenzpatch zu vergleichen. Generell umfasst die Durchführung von NCC unter Verwendung eines Testpatch und eines Referenzpatch die drei folgenden Gleitkommaberechnungen: 1) Patch-Mittelwertberechnung - d. h. das Berechnen eines Patch-Mittelwerts für das Testpatch und die Referenzpatches (d. h. durch Summieren der Intensität von N Pixeln jedes Patch, gefolgt von der Division des Resultats durch N); 2) Patch-Normalisierung - d. h. die Normalisierung jedes Referenzpatch und des Testpatch (d .h. durch Subtrahieren des Test- oder Referenzpatch-Mittelwerts von dem Intensitätswert jedes Pixels in dem Testpatch bzw. Referenzpatch); und 3) Patch-Kreuzkorrelation - d. h. Kreuzkorrelation der normierten Test- und Referenzpatches (was generell Gleitkommamultiplikations- und Divisionsoperationen umfasst). Die Ausgabe der Gleitkomma-NCC (z. B. gemäß Gleichung (1) oben) ist ein gebrochener NCC-Wert, der im Bereich von 0,0 bis 1,0 liegt.
  • Obwohl Gleitkommapräzisions-NCC für manche Anwendungen nützlich ist, kann sie in Hinblick auf Latenz, Logikbereich und Leistungskonsum aufwendig sein. Es kann daher in manchen Anwendungen wünschenswert sein, Merkmalserkennung unter Verwendung von NCC auf andere Weise zu implementieren. In dieser Hinsicht haben die Erfinder erkannt, dass ein Punkt des NCC-Patchabgleichs das Finden eines „Maximums“ auf der NCC-Wertebene ist. Dementsprechend kann eine Modifikation/Transformation der NCC-Wert-Werte, die sich nicht auf die relative Position eines maximalen Punkts auswirkt, immer noch für das Finden eines Maximums oder einer besten Übereinstimmung zwischen einem Referenzpatch und einem Testpatch nützlich sein.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft daher Systeme, Geräte und Verfahren zum Durchführen von Merkmalsverfolgungsoperationen unter Verwendung von Ganzzahlpräzisions-NCC. Generell wird der Begriff „Ganzzahlpräzisions-NCC“ hierin als Bezugnahme auf eine NCC-Operation verwendet, die mindestens einen Testpatch mit einem Referenzpatch vergleicht, und die mindestens teilweise durch ganzzahlbasiertes Berechnen durchgeführt wird. Ohne Einschränkungen ist Ganzzahlpräzisions-NCC in Ausführungsformen eine NCC-Operation, die zwei Patches vergleicht und die vollständig mit ganzzahlbasiertem Berechnen durchgeführt wird.
  • Es wird sich daher auf 10 bezogen, die ein Flussdiagramm beispielhafter Operationen gemäß einem Verfahren zum Durchführen von Merkmalsverfolgung unter Verwendung von Ganzzahlpräzisions-NCC ist. Die Operationen in FIG. 10 können beispielsweise als Teil oder als Ersatz der Operationen von Block 923 des Verfahrens in 9 durchgeführt werden. Das Verfahren kann jedoch wie nachfolgend beschrieben auch unabhängig implementiert werden.
  • Wie gezeigt beginnt Verfahren 1000 an Block 1001. Das Verfahren kann dann zu Block 1003 fortfahren, gemäß dem ein oder mehrere Testpatch/es und ein Referenzpatch empfangen werden. Das bzw. die Testpatch(es) und das Referenzpatch können beispielsweise auf die gleiche Weise wie in Blöcken 907 und 913 in 9 festgelegt werden. Nachdem das bzw. die Testpatch/es und das Referenzpatch empfangen wurden, kann das Verfahren zu Block 1005 fortschreiten, gemäß dem die Summe der Pixelintensitäten aller Pixel in dem bzw. den Testpatch/es festgestellt werden können, und die Summe der Pixelintensitäten aller Pixel in dem Referenzpatch kann festgestellt werden.
  • Das Verfahren kann dann zu Block 1007 fortfahren, gemäß dem eine ganzzahlige Durchschnittsintensität für das bzw. die Testpatch/es und das Referenzpatch festgestellt werden können. Das Feststellen einer ganzzahligen Durchschnittsintensität kann das Durchführen ganzzahliger konstanter Division für die Summe der Pixelintensitäten des bzw. der Testpatch/es und der Summe der Pixelintensitäten des bzw. der Testpatch/es und der Summe der Pixelintensitäten des Referenzpatch umfassen. In Ausführungsformen kann das Durchführen ganzzahliger konstanter Division unter Verwendung von Skalenmultiplikation mit einer unvoreingenommenen nächsten ganzzahligen Rundung implementiert werden, um eine ganzzahlige durchschnittliche Pixelintensität des bzw. der Testpatch/es und eine ganzzahlige durchschnittliche Intensität des Referenzpatch festzustellen.
  • Das Verfahren kann dann zu Block 1009 fortschreiten, gemäß dem die Test- und Referenzpatches normiert werden können, um normierte Test- und normierte Referenzpatches zu produzieren. In Ausführungsformen kann das Normalisieren jedes Testpatch durch Subtrahieren der ganzzahligen durchschnittlichen Intensität des Testpatch von der Intensität jedes seiner Pixel durchgeführt werden. Ebenso kann das Normalisieren des Referenzpatch durch Subtrahieren der ganzzahligen durchschnittlichen Intensität des Referenzpatch von der Intensität jedes seiner Pixel durchgeführt werden.
  • Nach Block 1009 kann das Verfahren zu Blöcken 1011 und 1013 fortfahren. Gemäß Block 1011 kann der Zählerterm des NCC-Algorithmus (z. B. der Gleichung (1) oben) bestimmt werden. Das Bestimmen des Zählerterms kann beispielsweise das Multiplizieren ganzzahliger Werte der Intensität von Pixeln der Test- und Referenzpatches paarweise umfassen (d. h. Pixel (0,0) des Referenzpatch wird mit Pixel (0,0) des Testpatch multipliziert, Pixel (0,1) des Referenzpatch wird mit Pixel (0,1) des Testpatch multipliziert usw.) und die resultierenden Produktterms werden zusammenaddiert, um den Zähler zu berechnen. Zur besseren Übersicht werden solche Operationen hierin als „Multiplikationsakkumulieren“ bezeichnet. Der Zähler kann dann um einen angemessenen Skalar skaliert werden, um einen skalierten Zähler zu produzieren, der in dem gewünschten ganzzahligen Bereich liegt, beispielsweise eine Breite und/oder Bit-Zahl, die in einem endgültigen ganzzahligen NCC-Wert gewünscht sind. In Ausführungsformen ist der ganzzahlige Skalar 210, so dass der endgültige ganzzahlige NCC-Wert ein 10-Bit-Wert ist.
  • Gleichzeitig oder während eines unterschiedlichen Zeitraums kann der Nennerterm des NCC-Algorithmus (z. B. der Gleichung (1) oben) gemäß Block 1013 bestimmt werden. Wie Block 1011 kann die Bestimmung des Nennerterms des NCC-Algorithmus durch paarweises Multiplikationsakkumulieren der Test- und Referenzpatchpixel erfolgen.
  • Das Verfahren kann dann zu Block 1015 fortfahren, gemäß dem ein ganzzahliger NCC-Wert bestimmt werden kann. Das Bestimmen eines ganzzahligen NCC-Werts kann beispielsweise das Dividieren des skalierten Zählerterms durch den Nennerterm umfassen. Wie ein Gleitkommapräzisions-NCC-Wert kann der ganzzahlige NCC-Wert indikativ für den Grad sein, in dem sich ein Testpatch und ein Referenzpatch ähnlich sind, wobei hohe ganzzahlige NCC-Werte indikativ für einen höheren Grad an Ähnlichkeit sind. In Ausführungsformen kann der ganzzahlige NCC-Bereich signifikant größer sein als der 0-1,0 Bereich der NCC-Werte, die durch Gleitkomma-NCC produziert werden. In manchen Ausführungsformen kann der ganzzahlige NCC-Wert beispielsweise von 0 bis etwa 2000 reichen, wie etwa von 0 bis etwa 1500 oder sogar von 0 bis etwa 1023. Diese Bereiche werden nur zur beispielhaften Veranschaulichung angeführt und es können jedwede geeignete ganzzahlige NCC-Wert-Bereiche verwendet werden.
  • Anders ausgedrückt: In Ausführungsformen können Ganzzahlpräzisions-NCC-Operationen zum Vergleichen eines Referenzpatch mit einem Testpatch durchgeführt werden. In solchen Ausführungsformen kann eine mit Gleichung (1) identische NCC-Funktion unter Verwendung eines Test- und eines Referenzpatch angewendet werden, außer dass jede Gleitkommaoperation der Gleichung (1) durch eine entsprechende Ganzzahloperation ersetzt wird.
  • Nach den Operationen des Blocks 1015 kann das Verfahren zu Block 1017 fortfahren, gemäß dem eine Feststellung getroffen werden kann, ob die Berechnung eines Ganzzahl-NCC-Werts weitergehen soll. Das Ergebnis des Blocks 1017 kann beispielsweise davon abhängen, ob es zusätzliche Testpatches zum Vergleichen mit einem Referenzpatch gibt. Falls dem so ist, kann das Verfahren zu Block 1003 zurückkehren; falls aber nicht, kann das Verfahren zu Block 1019 fortfahren und enden. Alternativ dazu kann das Verfahren, in Fällen, in denen das Verfahren in 10 im Kontext einer Merkmalsverfolgungskomponente verwendet wird, von Block 1017 zu Block 925 des Verfahrens in 9 fortfahren.
  • Es wird sich nun auf 11 bezogen, die ein Blockdiagramm eines Beispiels eines Systems zum Durchführen von Ganzzahlpräzisions-NCC ist. Es ist anzumerken, dass die folgende Diskussion sich auf die Verwendung des in 11 gezeigten Systems im Kontext eines Verfolgungsmoduls in einem Verfolgungselement nach der vorliegenden Offenbarung konzentriert, beispielsweise Verfolgungselement 801 in 8. Es versteht sich, dass solch eine Beschreibung nur der beispielhaften Veranschaulichung dient, und dass das System in 11 unabhängig oder als ein Element eines anderen geeigneten Systems verwendet werden kann.
  • Wie in 11 gezeigt enthält System 820' eine Ganzzahl-NCC-Schaltungsanordnung 1100, die generell konfiguriert ist, einen ganzzahligen NCC-Wert nach der vorliegenden Offenbarung zu produzieren, beispielsweise wie in Verbindung mit 10 vorstehend beschrieben. Ganzzahl-NCC-Schaltungsanordnung 11 enthält Testpatchnormalisierungsschaltungsanordnung (Test Patch Normalization Circuitry; TPNC) 1101, Referenzpatchnormalisierungsschaltunsanordnung (Reference Patch Normalization Circuitry; RPNC) 1103 und Skalenaufteilungsschaltungsanordnung (Scale Division Circuitry; SDC) 1105. TPNC 1101 ist generell konfiguriert, einen ganzzahlpräzisionsnormierten Testpatch zu bestimmen, und RPNC ist konfiguriert, einen ganzzahlpräzisionsnormierten Referenzpatch zu bestimmen. Skalenaufteilungsschaltungsanordnung 1105 ist generell konfiguriert, einen ganzzahlig skalierten Zählerterm zu bestimmen und einen ganzzahligen Nennerterm für eine ganzzahlige NCC-Funktion, und einen ganzzahligen NCC-Wert durch Dividieren des ganzzahligen skalierten Zählerterms durch den ganzzahligen Nennerterm zu produzieren.
  • Insbesondere kann ein Testpatch in TPNC 1101 eingegeben werden. Der Testpatch kann Pixelkoordinaten für ein erkanntes Merkmal enthalten und dessen entsprechende Nachbarschaft in einer Region von Interesse sowie Intensitätsinformationen für das erkannte Merkmal und Pixel in der entsprechenden Nachbarschaft. Wie gezeigt kann der Testpatch zuerst von der Testpatchsummierungsschaltungsanordnung (Test Patch Summation Circuitry; Tsum 1107) bearbeitet werden, die die Funktion hat, eine Summe der Pixelintensitäten des Testpatch zu berechnen. Die resultierende Summe wird an Testdivisionsschaltungsanordnung 1109 bereitgestellt, die konfiguriert ist, eine ganzzahlige durchschnittliche Intensität des Testpatch zu berechnen, beispielsweise durch Durchführen ganzzahliger konstanter Division der Summe, die von Tsum 1107 bereitgestellt wird, unter Verwendung von Skalenmultiplikation mit einer unvoreingenommenen ganzzahligen Rundung. Die resultierende ganzzahlige Durchschnittsintensität des Testpatch wird dann an die Testpatchnormalisierungsschaltungsanordnung (Tnorm 1111) bereitgestellt, die den Testpatch durch Subtrahieren der ganzzahligen Durchschnittsintensität von der Intensität jedes Pixels in dem Testpatch normiert, wodurch ein normierter Testpatch produziert wird.
  • Wie ebenfalls in 11 gezeigt, kann ein Referenzpatch in RPNC 1103 eingegeben werden. Der Referenzpatch kann Pixelkoordinaten für ein Merkmal enthalten, das für das Verfolgen ausgewählt wurde, und dessen entsprechende Nachbarschaft in der Region von Interesse sowie Intensitätsinformationen für das ausgewählte Merkmal und Pixel in der entsprechenden Nachbarschaft. Wie gezeigt kann der Referenzpatch zuerst von der Referenzpatchsummierungsschaltung (Reference Patch Summation Circuitry; Rsum 1113) bearbeitet werden, die die Funktion hat, eine Summe der Pixelintensitäten des Referenzpatch zu berechnen. Die resultierende Summe wird der Referenzdivisionsschaltungsanordnung 1115 bereitgestellt, die konfiguriert ist, eine ganzzahlige durchschnittliche Intensität des Referenzpatch zu berechnen, beispielsweise durch Durchführen ganzzahliger konstanter Division der Summe, die von Rsum 1113 bereitgestellt wird, unter Verwendung von Skalenmultiplikation mit einer unvoreingenommenen ganzzahligen Rundung. Die resultierende ganzzahlige Durchschnittsintensität des Referenzpatch wird dann an die Referenzpatchnormalisierungsschaltungsanordnung (Rnorm 1117) bereitgestellt, die den Referenzpatch durch Subtrahieren der ganzzahligen Durchschnittsintensität von der Intensität jedes Pixels in dem Referenzpatch normiert, wodurch ein normierter Referenzpatch produziert wird.
  • Wie weiter in 11 gezeigt, werden die normierten Referenz- und normierten Testpatches an Multiplikationsakkumulator-Zähler (MAN) Schaltungsanordnung 1119 und Multiplikationsakkumulator-Nenner (MAD) Schaltungsanordnung 1125 bereitgestellt. MAN 1119 kann die Form eines Multiplikations-Addierer-Baums haben, der konfiguriert ist, die normierten Referenz- und Testpatches Pixel-paarweise für den Zählerterm des ganzzahligen NCC-Algorithmus zu Multiplikationsakkumulieren. Von der ersten Multiplikationsschaltungsanordnung M1 (1121) wird ein Quadrat der Ausgabe von MAN 1119 erzeugt und das Ergebnis wird durch einen ganzzahligen Wert durch Skalar 1123 skaliert, so dass ein skalierter ganzzahliger Zählerterm produziert wird. MAD 1125 kann die Form eines Multiplikations-Addierer-Baums haben, der konfiguriert ist, die normierten Referenz- und Testpatches Pixel-paarweise für den Nennerterm des ganzzahligen NCC-Algorithmus zu Multiplikationsakkumulieren. Dann wird das Quadrat der resultierenden Ausgabe von der zweiten Multiplikationsschaltungsanordnung M2 (1127) bestimmt, wodurch der Nennerterm für den ganzzahligen NCC-Algorithmus produziert wird. Die skalierten Zähler- und Nennerterms werden dann von der Skalarschaltungsanordnung 1123 und der zweiten Multiplikationsschaltungsanordnung 1127 an die Divisionsschaltungsanordnung 1129 bereitgestellt. Die Teilerschaltungsanordnung ist konfiguriert, den skalierten Zählerterm durch den Nennerterm zu dividieren und einen ganzzahligen NCC-Wert zu produzieren und auszugeben.
  • Wie vorstehend in Hinblick auf 1A diskutiert wird visuelles SLAM häufig in Software implementiert, die von einem Allzweckprozessor ausgeführt wird. In solchen Fällen werden Bilddaten zur Verarbeitung häufig von einem Bildsensor und/oder ISP produziert und in System-RAM oder längerfristige Speicher (z. B. Festplatte, Solid-State-Laufwerk usw.) gespeichert, bevor sie von dem Prozessor bearbeitet werden. Das Konzept wird in 1A veranschaulicht, das Datenfluss 111 zeigt, der von Bildsensor 101 zu ISP 103 und dann zu Speicher 105 verläuft, wonach er weiter zu Prozessor 107 verläuft. In Ausführungsformen, die einen SLAM HWA verwenden (z. B. 2A) kann ein ähnlicher Datenfluss verwendet werden, außer dass Bilddaten im Systemspeicher 205 gespeichert werden können, wonach sie zu SLAM HWA 211 zum Verarbeiten übertragen werden. Obwohl nützlich, kann das Schreiben der Bilddaten in Systemspeicher 205 vor den Operationen des SLAM HWA die Latenz erhöhen und das Durchführen vieler Lese-/Schreiboperationen umfassen, da Bilddaten in Speicher 205 geschrieben und von dort zu dem gemeinsamen Speicher des SLAM HWA 211 gelesen werden.
  • In diesem Wissen betrifft ein anderer Aspekt der vorliegenden Offenbarung Technologien zum Durchführen von On-the-Fly-Merkmalserkennung und/oder -verfolgung, die hierin auch als Merkmalserkennung und/oder -verfolgung „in Echtzeit“ bezeichnet wird. Generell vermeiden solche Technologien die Notwendigkeit, Bilddaten in einen externen Systemspeicher (z. B. Speicher 205) vor dem Durchführen von Merkmalserkennungs- und Verfolgungsoperationen zu schreiben. Vielmehr können Bilddaten von einem Bildsensor 201 und/oder ISP (über Bus 209) direkt an den gemeinsamen Speicher 219 des SLAM HWA 211 übertragen werden. In solchen Fällen können Merkmalserkennungs- und/oder Verfolgungsoperationen beginnen, wenn eine Schwellenwertmenge an Bilddaten im gemeinsamen Speicher 219 empfangen wurde. In Ausführungsformen kann die Datenschwellenwertmenge durch einen oder mehrere Schwellenwert/e festgelegt werden, der bzw. die durch eine Gleitfenstersteuereinrichtung der Merkmalserkennungskomponente 215 angewendet wird bzw. werden, d. h. Gleitfenstersteuereinrichtung 313, wie vorstehend diskutiert.
  • Zum Beispiel und wie vorstehend diskutiert kann die Gleitfenstersteuereinrichtung in Ausführungsformen eine Schwellenwert-VAdepth und/oder -HAwidth festlegen. Bei in Echtzeit verfolgenden Ausführungsformen können sich die Schwellenwert-VAdepth/HAwidth nicht nur darauf auswirken, wie sich ein Gleitfenster bewegt und wie viele Daten während der Merkmalserkennung wiederverwendet werden, sondern sie kann sich auch daraus auswirken, wann Merkmalserkennungsoperationen beginnen, indem sie eine Mindestmenge an Bilddaten spezifiziert, die im gemeinsamen Speicher 219 vorhanden sein muss, bevor Merkmalserkennungsoperationen beginnen.
  • Generell spezifizieren größere VAdepth/HAwidth-Werte, dass eine größere Mindestmenge an Bilddaten vor Initiieren der Merkmalsverfolgungsoperationen im gemeinsamen Speicher 219 vorhanden sein muss, aber auf Kosten einer höheren Latenz. Demgegenüber spezifizieren kleinere VAdepth/HAwidth-Werte, dass eine kleinere Mindestmenge von Bilddaten vor dem Initiieren der Merkmalsverfolgungsoperationen im gemeinsamen Speicher 219 vorliegen muss, riskieren dabei aber das Auftreten eines „Buffer Starvation“-Zustands, wenn Merkmalsverfolgungsoperationen an Bilddaten im gemeinsamen Speicher 219 mit höherer Geschwindigkeit durchgeführt werden, als Bilddaten an den gemeinsamen Speicher 219 bereitgestellt werden. Daher kann die Gleitfenstersteuereinrichtung in Ausführungsformen konfiguriert sein, eine VAdepth und/oder HAwidth festzulegen, die einen Buffer-Starvation-Zustand vermeidet (d. h. wobei Bilddaten aus dem gemeinsamen Speicher 219 schneller analysiert werden als neue Daten aufgefüllt werden können), während gleichzeitig eine gewünschte Latenzmenge erreicht wird. Dies kann beispielsweise durch Festlegen von VAdepth und/oder HAwidth zumindest teilweise auf Grundlage einer Geschwindigkeit erreicht werden, mit der neue Bilddaten an den gemeinsamen Speicher 219 bereitgestellt werden, und mit einer Geschwindigkeit, mit der SLAM HWA 211 Merkmalserkennung- und Verarbeitungsoperationen durchführen kann. Ohne Einschränkungen legt in manchen Ausführungsformen eine Gleitfenstersteuereinrichtung der Merkmalserkennungskomponente 215 eine VAdepth von 32 Reihen Bilddaten fest.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft Verfahren zum Durchführen von Merkmalserkennung- und -verfolgung in Echtzeit, beispielsweise unter Verwendung eines SLAM HWA nach der vorliegenden Offenbarung. In diesem Zusammenhang wird auf 13 Bezug genommen, die ein Flussdiagramm beispielhafter Operationen eines Beispiels eines Verfahrens zum Durchführen von Merkmalserkennung- und -verfolgung in Echtzeit nach der vorliegenden Offenbarung ist. Wie gezeigt beginnt Verfahren 1300 an Block 1301. Das Verfahren kann dann zu Block 1303 fortfahren, gemäß dem eine Feststellung getroffen wird, ob eine Schwellenwertmenge Bilddaten verfügbar ist (z. B. im gemeinsamen Speicher 219). Wie erwähnt kann die Schwellenwertmenge Bilddaten auf Grundlage einer oder mehrerer Schwellenwertposition/en (VAdepth, HAwidth usw.), die von einer Gleitfenstersteuereinrichtung festgelegt werden, festgelegt werden. Falls eine Schwellenwertmenge Daten nicht empfangen wurde, kann das Verfahren zu Block 1305 fortfahren, gemäß dem Bilddaten empfangen werden können, wonach das Verfahren zu Block 1303 zurückkehrt. Falls jedoch eine Schwellenwertmenge Bilddaten empfangen wurde, kann das Verfahren zu Block 1309 fortfahren.
  • Gemäß Block 1309 können Merkmalserkennungsoperationen unter Verwendung von Bilddaten in dem gemeinsamen Speicher durchgeführt werden. Die Durchführung der Merkmalserkennungsoperationen kann die gleiche sein, wie vorstehend in Verbindung mit 3-6E beschrieben. Das Verfahren kann dann zu Block 1309 fortfahren, gemäß dem eine Feststellung getroffen wird, ob Merkmale erkannt wurden. Falls nicht, kann das Verfahren zu Block 1313 fortfahren. Aber wenn ein oder mehrere Merkmal/e erkannt wurden, kann das Verfahren zu Block 1311 fortfahren. Gemäß Block 1311 können Merkmalserkennungsoperationen unter Verwendung eines erkannten Merkmals (und seiner Pixelnachbarschaft) als ein Referenzpatch, wie vorstehend in Verbindung mit 7-11 diskutiert, durchgeführt werden. Das Verfahren kann dann zu Block 1313 fortfahren.
  • Gemäß Block 1315 kann eine Feststellung getroffen werden, ob das Verfahren weiterlaufen soll. Falls dem so ist, kann das Verfahren zu Block 1303 zurückkehren; falls aber nicht, kann das Verfahren zu Block 1315 fortfahren und enden.
  • Ausführungsformen der hierin beschriebenen Verfahren können in einer Vorrichtung (beispielsweise einer Rechenvorrichtung) implementiert werden, die ein oder mehrere computerlesbare Speichermedien enthält, auf denen, individuell oder in Kombination, Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die hierin beschriebenen Verfahren durchführen. Hier kann der Prozessor beispielsweise eine System-CPU (z. B. Kernprozessor) und/oder programmierbare Schaltungsanordnung enthalten. Es ist daher beabsichtigt, dass Operationen gemäß den hierin beschriebenen Verfahren über ein oder mehrere physische Vorrichtungen verteilt sein können, wie etwa Verarbeitungsstrukturen an einer oder an mehreren verschiedenen physischen Standorten. Es ist auch beabsichtigt, dass die Verfahrensoperationen individuell oder in einer Unterkombination durchgeführt werden können, wie es dem Fachmann verständlich ist. Es müssen daher nicht alle der Operationen jedes der Flussdiagramme durchgeführt werden und die vorliegende Offenbarung beabsichtigt ausdrücklich, dass alle Unterkombinationen solcher Operationen ermöglicht werden, wie es dem Fachmann verständlich ist.
  • Das computerlesbare Speichermedium kann jedwede Art von materiellem Medium, beispielsweise jedwede Art von Magnetplatten, einschließlich Disketten, optische Platten, Compact-Disk Read-Only Memories (CD-ROM), wiederbeschreibbare Compact-Disks (CD-RW), Digital Versatile Disks (DVD) und magnetoptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROM), Direktzugriffspeicher (RAM), wie etwa dynamische und statische RAM, löschbare programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), Flash-Speicher, magnetische oder optische Karten oder jedwede Art von Medien, die für das Speichern elektronischer Anweisungen geeignet sind, umfassen.
  • BEISPIELE
  • Die folgenden Beispiele repräsentieren zusätzliche, nicht-einschränkende Ausführungsformen der vorliegenden Offenbarung.
  • Beispiel 1: Gemäß diesem Beispiel wird ein computerimplementiertes Verfahren zum Erkennen von Merkmalen in einem digitalen Bild bereitgestellt, einschließlich der folgenden computerimplementierten Operationen: Definieren eines ersten Gleitfensters, das erste Arbeitsdaten umschließt, wobei die ersten Arbeitsdaten einen ersten Teil Bilddaten des digitalen Bildes enthalten; Durchführen erster Merkmalserkennungsoperationen an einem oder mehreren ersten Kandidatenpixel/n in den ersten Arbeitsdaten in dem Gleitfensterpuffer zum Klassifizieren, ob der eine oder die mehreren ersten Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; Definieren eines zweiten Gleitfensters, das zweite Arbeitsdaten umschließt, wobei die zweiten Arbeitsdaten Wiederverwendungsdaten und neue Daten enthalten; und Durchführen zweiter Merkmalserkennungsoperationen an einem oder mehreren Kandidatenpixel/n in den zweiten Arbeitsdaten zum Klassifizieren, ob der eine oder die mehreren zweiten Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; wobei die Wiederverwendungsdaten einen Teil der ersten Arbeitsdaten enthalten und die neuen Daten Bilddaten des digitalen Bildes enthalten, die nicht in den ersten Arbeitsdaten enthalten waren.
  • Beispiel 2: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 1, wobei das Definieren des zweiten Gleitfensters das Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln umfasst, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist.
  • Beispiel 3: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 2, wobei der erste Versatz aus der Gruppe gewählt wird, die aus einem vertikalen Versatz, einem horizontalen Versatz und einem diagonalen Versatz besteht.
  • Beispiel 4: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 3, wobei der Versatz ein vertikaler Versatz ist und die Wiederverwendungsdaten vertikale Wiederverwendungsdaten enthalten, wobei die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten sind.
  • Beispiel 5: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 4, wobei: die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten ein oberster oder unterster Satz Pixelreihen der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und das Definieren des zweiten Gleitfensters das Verknüpfen einer obersten oder untersten Pixelreihe der neuen Daten mit den vertikalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 6: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 4, wobei: die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihe/n der ersten Arbeitsdaten, die in einem Wiederverwendungspuffer gespeichert sind, enthalten; und das Definieren des zweiten Gleitfensters das Verknüpfen einer obersten oder untersten Pixelreihe der neuen Daten mit den vertikalen Wiederverwendungsdaten in dem Wiederverwendungspuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 7: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 3, wobei der erste Versatz ein horizontaler Versatz ist und die Wiederverwendungsdaten horizontale Wiederverwendungsdaten enthalten, wobei die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalten der ersten Arbeitsdaten sind.
  • Beispiel 8: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 7, wobei:
  • Die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten ein am weitesten rechts oder am weitesten links liegender Satz Pixelspalten der ersten Arbeitsdaten in dem Gleitfensterpuffer sind und das Definieren des zweiten Gleitfensters das Verknüpfen einer am weitesten links oder am weitesten rechts liegenden Pixelspalte der neuen Daten mit den horizontalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 9: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 7, wobei: die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalte/n der ersten Arbeitsdaten, die in einem Wiederverwendungspuffer gespeichert sind, enthalten; und das Definieren des zweiten Gleitfensters das Verknüpfen einer am weitesten links oder am weitesten rechts liegenden Pixelspalte der neuen Daten mit den horizontalen Wiederverwendungsdaten in dem Wiederverwendungspuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 10: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 2, wobei: das erste Gleitfenster eine erste Gleitfensterbreite (SW1W) und eine erste Gleitfensterhöhe (SW1H) hat; der erste Versatz ein diagonaler Versatz, einschließlich einer vertikalen Versatzkomponente und einer horizontalen Versatzkomponente, ist; und die vertikale Versatzkomponente und/oder die horizontale Versatzkomponente kleiner ist als SW1H bzw. SW1W.
  • Beispiel 11: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 1, wobei das Definieren des zweiten Gleitfensters umfasst: Feststellen, ob das erste Gleitfenster eine Schwellenwertposition innerhalb des digitalen Bildes erreicht hat; wenn das erste Gleitfenster die Schwellenwertposition nicht erreicht hat, Anwenden eines ersten Versatzes auf Pixelkoordinaten, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und wenn das erste Gleitfenster die Schwellenwertposition erreicht hat, Anwenden eines zweiten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine zweite Richtung, die sich von der ersten Richtung unterscheidet, versetzt ist.
  • Beispiel 12: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 11, wobei die Schwellenwertposition aus der Gruppe ausgewählt wird, die aus einer Schwellenwertposition entlang einer vertikalen Achse des digitalen Bildes (VAdepth), einer Schwellenwertposition entlang einer horizontalen Achse des digitalen Bildes (HAwidth), einem Rand des digitalen Bildes und Kombinationen davon besteht.
  • Beispiel 13: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 1, wobei: die ersten Arbeitsdaten mehrere erste Kandidatenpixel enthalten; die zweiten Arbeitsdaten mehrere zweite Kandidatenpixel enthalten, die sich von den ersten Kandidatenpixeln unterscheiden; das Durchführen der ersten Merkmalserkennungsoperationen das Durchführen von Features from Accelerated Segment Test (FAST) Operationen an jedem der mehreren ersten Kandidatenpixel umfasst, um jeden der ersten Kandidatenpixel als ein Merkmal oder kein Merkmals zu klassifizieren; und das Durchführen der zweiten Merkmalserkennungsoperationen das Durchführen von FAST-Operationen an jedem der mehreren zweiten Kandidatenpixel umfasst, um jeden der zweiten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren.
  • Beispiel 14: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 13, wobei die FAST-Operationen das Feststellen umfassen, ob eine der folgenden Beziehungen von einer Schwellenwertzahl n der Pixel an einer Peripherie eines Bresenham-Kreises, der einen Kandidatenpixel eingrenzt, erfüllt wird: (1) I > Ip + t; oder (2) I < Ip - t; wobei: I eine Intensität eines Pixels an der Peripherie des Bresenham-Kreises ist, Ip eine Intensität des einzelnen Kandidatenpixel ist und t ein erster Schwellenwert ist; und der einzelne Kandidatenpixel nur als ein Merkmal klassifiziert wird, wenn eine Schwellenwertzahl n der Pixel an der Peripherie des Bresenham-Kreises Beziehung (1) oder Beziehung (2) erfüllt.
  • Beispiel 15: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 14, wobei, wenn ein Kandidatenpixel unter Verwendung eines ersten Schwellenwerts t als ein Merkmal klassifiziert wird, das Verfahren ferner umfasst: Erhöhen des ersten Schwellenwerts (tl) auf einen zweiten Schwellenwert (t2); Feststellen unter Verwendung des zweiten Schwellenwerts (t2), ob eine Schwellenwertzahl n von Pixeln an dem Bresenham-Kreis Beziehung (1) oder Beziehung (2) erfüllt; und wenn eine Schwellenwertzahl n der Pixel an dem Bresenham-Kreis unter Verwendung des zweiten Schwellenwerts (t2) Beziehung (1) oder Beziehung (2) nicht erfüllt; Festlegen eines Stärkewerts für den Kandidatenpixel, wobei der Stärkewert einen Grad des Vertrauens angibt, mit dem der berücksichtigte Kandidatenpixel ein Merkmal ist.
  • Beispiel 16: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 1, wobei die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen und das Verfahren ferner umfasst: Empfangen nur der neuen Daten in einem First-In-First-Out (FIFO) Puffer; Speichern mindestens eines Teils der neuen Daten in einem Wiederverwendungspuffer; Übertragen aller neuer Daten in dem FIFO an den Gleitfensterpuffer; und Verknüpfen der neuen Daten mit den Wiederverwendungsdaten, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 17: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 16 und umfasst ferner das Verwerfen eines ersten Teils der ersten Arbeitsdaten aus dem Gleitfensterpuffer, so dass ein zweiter Teil der ersten Arbeitsdaten in dem Gleitfensterpuffer verbleibt, wobei: das Verknüpfen das Verbinden der neuen Daten mit dem zweiten Teil der ersten Arbeitsdaten umfasst.
  • Beispiel 18: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 17, wobei: das Definieren des zweiten Gleitfensters das Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln umfasst, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Teil der ersten Arbeitsdaten dem ersten Versatz entspricht.
  • Beispiel 19: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 18 und umfasst ferner das Verschieben des zweiten Teils der ersten Arbeitsdaten in dem Gleitfensterpuffer um einen Betrag, der dem ersten Versatz entspricht.
  • Beispiel 20: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 13, wobei die ersten und zweiten Merkmalserkennungsoperationen von einer Merkmalserkennungsanordnung durchgeführt werden, wobei die Merkmalserkennungsanordnung mehrere Merkmalserkennungsprozessoren enthält, wobei jeder der mehreren Merkmalserkennungsprozessoren konfiguriert ist, die FAST-Operationen an einem jeweiligen einen der mehreren Kandidatenpixel oder der zweiten Kandidatenpixel parallel durchzuführen.
  • Beispiel 21: Gemäß diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Anweisungen zum Erkennen von Merkmalen in einem digitalen Bild enthält, wobei die Anweisungen, wenn sie von einer Rechenvorrichtung ausgeführt werden, im Durchführen der folgenden Operationen resultieren, einschließlich: Definieren eines ersten Gleitfensters, das erste Arbeitsdaten umschließt, wobei die ersten Arbeitsdaten einen ersten Teil Bilddaten des digitalen Bildes enthalten; Durchführen erster Merkmalserkennungsoperationen an einem oder mehreren ersten Kandidatenpixel/n in den ersten Arbeitsdaten in dem Gleitfensterpuffer zum Klassifizieren, ob der eine oder die mehreren ersten Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; Definieren eines zweiten Gleitfensters, das zweite Arbeitsdaten umschließt, wobei die zweiten Arbeitsdaten Wiederverwendungsdaten und neue Daten enthalten; und Durchführen zweiter Merkmalserkennungsoperationen an einem oder mehreren Kandidatenpixel/n in den zweiten Arbeitsdaten zum Klassifizieren, ob der eine oder die mehreren zweiten Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; wobei die Wiederverwendungsdaten einen Teil der ersten Arbeitsdaten enthalten und die neuen Daten Bilddaten des digitalen Bildes enthalten, die nicht in den ersten Arbeitsdaten enthalten waren.
  • Beispiel 22: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 21, wobei das Definieren des zweiten Gleitfensters das Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln umfasst, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist.
  • Beispiel 23: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 22, wobei der erste Versatz aus der Gruppe gewählt wird, die aus einem vertikalen Versatz, einem horizontalen Versatz und einem diagonalen Versatz besteht.
  • Beispiel 24: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 23, wobei der Versatz ein vertikaler Versatz ist und die Wiederverwendungsdaten vertikale Wiederverwendungsdaten enthalten, wobei die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten sind.
  • Beispiel 25: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 24, wobei:
    die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten einen obersten oder untersten Satz Pixelreihen der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und das Definieren des zweiten Gleitfensters das Verknüpfen einer obersten oder untersten Pixelreihe der neuen Daten mit den vertikalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 26: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 24, wobei:
    die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihe/n der ersten Arbeitsdaten, die in dem Wiederverwendungspuffer gespeichert sind, enthalten; und das Definieren des zweiten Gleitfensters das Verknüpfen einer obersten oder untersten Pixelreihe der neuen Daten mit den vertikalen Wiederverwendungsdaten in dem Wiederverwendungspuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 27: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 23, wobei der erste Versatz ein horizontaler Versatz ist und die Wiederverwendungsdaten horizontale Wiederverwendungsdaten enthalten, wobei die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalten der ersten Arbeitsdaten sind.
  • Beispiel 28: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 27, wobei:
  • Die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten ein am weitesten rechts oder am weitesten links liegender Satz Pixelspalten der ersten Arbeitsdaten in dem Gleitfensterpuffer sind und das Definieren des zweiten Gleitfensters das Verknüpfen einer am weitesten links oder am weitesten rechts liegenden Pixelspalte der neuen Daten mit den horizontalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 29: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 27, wobei:
    die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalte/n der ersten Arbeitsdaten, die in einem Wiederverwendungspuffer gespeichert sind, enthalten; und das Definieren des zweiten Gleitfensters das Verknüpfen einer am weitesten links und einer am weitesten rechts liegenden Pixelspalte der neuen Daten mit den horizontalen Wiederverwendungsdaten in dem Wiederverwendungspuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 30: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 22, wobei: das erste Gleitfenster eine erste Gleitfensterbreite (SW1W) und eine erste Gleitfensterhöhe (SW1H) hat; der erste Versatz ein diagonaler Versatz, einschließlich einer vertikalen Versatzkomponente und einer horizontalen Versatzkomponente, ist; und die vertikale Versatzkomponente und/oder die horizontale Versatzkomponente kleiner ist als SW1H bzw. SW1W.
  • Beispiel 31: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 21, wobei das Definieren des zweiten Gleitfensters umfasst: Feststellen, ob das erste Gleitfenster eine Schwellenwertposition innerhalb des digitalen Bildes erreicht hat; wenn das erste Gleitfenster die Schwellenwertposition nicht erreicht hat, Anwenden eines ersten Versatzes auf Pixelkoordinaten, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und wenn das erste Gleitfenster die Schwellenwertposition erreicht hat, Anwenden eines zweiten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine zweite Richtung, die sich von der ersten Richtung unterscheidet, versetzt ist.
  • Beispiel 32: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 31, wobei die Schwellenwertposition aus der Gruppe ausgewählt wird, die aus einer Schwellenwertposition entlang einer vertikalen Achse des digitalen Bildes (VAdepth), einer Schwellenwertposition entlang einer horizontalen Achse des digitalen Bildes (HAwidth), einem Rand des digitalen Bildes und Kombinationen davon besteht.
  • Beispiel 33: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 21, wobei: die ersten Arbeitsdaten mehrere erste Kandidatenpixel enthalten; die zweiten Arbeitsdaten mehrere zweite Kandidatenpixel enthalten, die sich von den ersten Kandidatenpixeln unterscheiden; das Durchführen der ersten Merkmalserkennungsoperationen das Durchführen von Features from Accelerated Segment Test (FAST) Operationen an jedem der mehreren ersten Kandidatenpixel umfasst, um jeden der ersten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren; und das Durchführen der zweiten Merkmalserkennungsoperationen das Durchführen von FAST-Operationen an jedem der mehreren zweiten Kandidatenpixel umfasst, um jeden der zweiten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren.
  • Beispiel 34: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 33, wobei die FAST-Operationen das Feststellen umfassen, ob eine der folgenden Beziehungen von einer Schwellenwertzahl n der Pixel an einer Peripherie eines Bresenham-Kreises, der einen Kandidatenpixel eingrenzt, erfüllt wird: (1) I > Ip + t; oder (2) I < Ip - t; wobei: I eine Intensität eines Pixels an der Peripherie des Bresenham-Kreises ist, Ip eine Intensität des einzelnen Kandidatenpixels ist und t ein erster Schwellenwert ist; und der einzelne Kandidatenpixel nur als ein Merkmal klassifiziert wird, wenn eine Schwellenwertzahl n der Pixel an der Peripherie des Bresenham-Kreises Beziehung (1) oder Beziehung (2) erfüllt.
  • Beispiel 35: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 34, wobei, wenn ein Kandidatenpixel unter Verwendung eines ersten Schwellenwerts t als ein Merkmal klassifiziert wird, die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Erhöhen des ersten Schwellenwerts (t1) auf einen zweiten Schwellenwert (t2); Feststellen unter Verwendung des zweiten Schwellenwerts (t2), ob eine Schwellenwertzahl n von Pixeln an dem Bresenham-Kreis Beziehung (1) oder Beziehung (2) erfüllt; und wenn eine Schwellenwertzahl n der Pixel an dem Bresenham-Kreis unter Verwendung des zweiten Schwellenwerts (t2) Beziehung (1) oder Beziehung (2) nicht erfüllt; Festlegen eines Stärkewerts für den Kandidatenpixel, wobei der Stärkewert einen Grad des Vertrauens angibt, mit dem der berücksichtigte Kandidatenpixel ein Merkmal ist.
  • Beispiel 36: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 21, wobei die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen und die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Empfangen neuer Daten in einem First-In-First-Out (FIFO) Puffer; und Speichern mindestens eines Teils der neuen Daten in einem Wiederverwendungspuffer; und Übertragen aller neuen Daten in dem FIFO an den Gleitfensterpuffer; und Verknüpfen der neuen Daten mit den Wiederverwendungsdaten, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 37: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 36, wobei die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Verwerfen eines ersten Teils der ersten Arbeitsdaten aus dem Gleitfensterpuffer, so dass ein zweiter Teil der ersten Arbeitsdaten in dem Gleitfensterpuffer verbleibt, wobei: Das Verknüpfen das Verbinden der neuen Daten mit dem zweiten Teil der ersten Arbeitsdaten umfasst.
  • Beispiel 38: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 37, wobei: das Definieren des zweiten Gleitfensters das Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln umfasst, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Teil der ersten Arbeitsdaten dem ersten Versatz entspricht.
  • Beispiel 39: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 38, wobei die Anweisungen, wenn sie ausgeführt werden, im Durchführen der folgenden Operationen resultieren, einschließlich: Verschieben des zweiten Teils der ersten Arbeitsdaten in dem Gleitfensterpuffer durch einen Betrag, der dem ersten Versatz entspricht.
  • Beispiel 40: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 39, wobei die ersten zweiten Merkmalserkennungsoperationen von einer Merkmalserkennungsanordnung der Rechenvorrichtung durchgeführt werden, wobei die Merkmalserkennungsanordnung mehrere Merkmalserkennungsprozessoren enthält, wobei jeder der mehreren Merkmalserkennungsprozessoren konfiguriert ist, die FAST-Operationen an einem jeweiligen einen der mehreren Kandidatenpixel oder der zweiten Kandidatenpixel parallel durchzuführen.
  • Beispiel 41: Gemäß diesem Beispiel wird ein Simultaneous Location and Monitoring Hardware Accelerator (SLAM HWA) bereitgestellt, einschließlich: einer Merkmalserkennungskomponente, einschließlich: einem Gleitfensterpuffer; und einer Gleitfenstersteuereinrichtung; wobei: die Gleitfenstersteuereinrichtung konfiguriert ist: das Durchführen der ersten Merkmalserkennungsoperationen an einem oder mehreren ersten Kandidatenpixeln innerhalb erster Arbeitsdaten innerhalb des Gleitfensterpuffers durchzuführen, um zu klassifizieren, ob der eine oder die mehreren erste/n Kandidatenpixel ein Merkmal ist oder nicht, wobei die ersten Arbeitsdaten Bilddaten eines digitalen Bildes enthalten, die von einem ersten Gleitfenster umschlossen werden; Definieren eines zweiten Gleitfensters, das von dem ersten Gleitfenster versetzt ist, und die zweiten Arbeitsdaten, einschließlich Wiederverwendungsdaten und neue Daten umschließt; und Veranlassen des Durchführens der zweiten Merkmalserkennungsoperationen an einem oder mehreren zweiten Kandidatenpixeln innerhalb der zweiten Arbeitsdaten, um zu klassifizieren, ob der eine oder die mehreren Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; wobei die Wiederverwendungsdaten einen Teil der ersten Arbeitsdaten enthalten; und die neuen Daten Bilddaten des digitalen Bildes enthalten, die nicht in den ersten Arbeitsdaten enthalten waren.
  • Beispiel 42: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 41, wobei die Gleitfenstersteuereinrichtung konfiguriert ist, das zweite Gleitfenster zumindest teilweise durch Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, zu definieren, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist.
  • Beispiel 43: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 42, wobei der erste Versatz aus der Gruppe gewählt wird, die aus einem vertikalen Versatz, einem horizontalen Versatz und einem diagonalen Versatz besteht.
  • Beispiel 44: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 43, wobei der Versatz ein vertikaler Versatz ist und die Wiederverwendungsdaten vertikale Wiederverwendungsdaten enthalten, wobei die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten sind.
  • Beispiel 45: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 44, wobei: die Merkmalserkennungskomponente ferner eine Merkmalserkennungsanordnung, einschließlich mehrerer Merkmalserkennungsprozessoren enthält; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten ein oberster oder unterster Satz von Pixelreihen der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine oberste oder unterste Pixelreihe der neuen Daten zu veranlassen, mit den vertikalen Wiederverwendungsdaten in dem Gleitfensterpuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 46: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 44, wobei: die Merkmalserkennungskomponente ferner einen Wiederverwendungspuffer und eine Merkmalserkennungsanordnung, einschließlich mehrerer Merkmalserkennungsprozessoren enthält; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorhanden sind; und die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihe/n der ersten Arbeitsdaten, die in dem Wiederverwendungspuffer gespeichert sind, enthalten; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine oberste oder unterste Pixelreihe der neuen Daten zu veranlassen mit den vertikalen Wiederverwendungsdaten in dem Wiederverwendungspuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorhanden sind.
  • Beispiel 47: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 43, wobei der erste Versatz ein horizontaler Versatz ist und die Wiederverwendungsdaten horizontale Wiederverwendungsdaten enthalten, wobei die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalten der ersten Arbeitsdaten sind.
  • Beispiel 48: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 47, wobei: die Merkmalserkennungskomponente ferner eine Merkmalserkennungsanordnung, einschließlich mehrerer Merkmalserkennungsprozessoren enthält; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten ein am weitesten rechts oder links liegenden Satz von Pixelspalten der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine am weitesten links oder am weitesten rechts liegende Pixelspalte der neuen Daten zu veranlassen, mit den horizontalen Wiederverwendungsdaten in dem Gleitfensterpuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 49: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 47, wobei: die Merkmalserkennungsanordnung ferner einen Wiederverwendungspuffer und eine Merkmalserkennungsanordnung, einschließlich mehrerer Merkmalserkennungsprozessoren enthält; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorhanden sind; die horizontalen Wiederverwendungsdaten ein am weitesten rechts oder am weitesten links liegender Satz Pixelspalten der ersten Arbeitsdaten in dem Wiederverwendungspuffer sind und die Gleitfenstersteuereinrichtung konfiguriert ist, die am weitesten links oder am weitesten recht liegende Pixelspalte der neuen Daten zu veranlassen, mit den horizontalen Wiederverwendungsdaten in dem Wiederverwendungspuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorhanden sind.
  • Beispiel 50: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 42, wobei: das erste Gleitfenster eine erste Gleitfensterbreite (SW1W) und eine erste Gleitfensterhöhe (SW1H) hat; der erste Versatz ein diagonaler Versatz, einschließlich einer vertikalen Versatzkomponente und einer horizontalen Versatzkomponente, ist; und die vertikale Versatzkomponente und/oder die horizontale Versatzkomponente kleiner ist als SW1H bzw. SW1W.
  • Beispiel 51: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 41, wobei die Gleitfenstersteuereinrichtung ferner konfiguriert ist: Festzustellen, ob das erste Gleitfenster eine Schwellenwertposition innerhalb des digitalen Bildes erreicht hat; wenn das erste Gleitfenster die Schwellenwertposition nicht erreicht hat, einen ersten Versatz auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, anzuwenden, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und wenn das erste Gleitfenster die Schwellenwertposition erreicht hat, einen zweiten Versatz auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, anzuwenden, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine zweite Richtung, die sich von der ersten Richtung unterscheidet, versetzt ist.
  • Beispiel 52: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 51, wobei die Schwellenwertposition aus der Gruppe ausgewählt wird, die aus einer Schwellenwertposition entlang einer vertikalen Achse des digitalen Bildes (VAdepth), einer Schwellenwertposition entlang einer horizontalen Achse des digitalen Bildes (HAwidth), einem Rand des digitalen Bildes und Kombinationen davon besteht.
  • Beispiel 53: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 52, wobei: die ersten Arbeitsdaten mehrere erste Kandidatenpixel enthalten; die zweiten Arbeitsdaten mehrere zweite Kandidatenpixel enthalten, die sich von den ersten Kandidatenpixeln unterscheiden; der SLAM HWA ferner eine Merkmalserkennungsanordnung, einschließlich mehrerer Merkmalserkennungsprozessoren, enthält, wobei die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen und die zweiten Merkmalserkennungsoperationen durchzuführen; wobei die ersten Merkmalserkennungsoperationen das Durchführen von Features from Accelerated Segment Test (FAST) Operationen an jedem der mehreren ersten Kandidatenpixel umfasst, um jeden der ersten Kandidatenpixel als ein Merkmal oder kein Merkmals zu klassifizieren; und die zweiten Merkmalserkennungsoperationen das Durchführen von FAST-Operationen an jedem der mehreren zweiten Kandidatenpixel umfasst, um jeden der zweiten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren.
  • Beispiel 54: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 53, wobei die FAST-Operationen das Feststellen umfassen, ob eine der folgenden Beziehungen von einer Schwellenwertzahl n der Pixel an einer Peripherie eines Bresenham-Kreises, der einen Kandidatenpixel eingrenzt, erfüllt wird: (1) I > Ip + t; oder (2) I < Ip - t; wobei: I eine Intensität eines Pixels an der Peripherie des Bresenham-Kreises ist, Ip eine Intensität des einzelnen Kandidatenpixels ist und t ein erster Schwellenwert ist; und der einzelne Kandidatenpixel nur als ein Merkmal klassifiziert wird, wenn eine Schwellenwertzahl n der Pixel an der Peripherie des Bresenham-Kreises Beziehung (1) oder Beziehung (2) erfüllt.
  • Beispiel 55: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 54, wobei, wenn ein Kandidatenpixel unter Verwendung eines ersten Schwellenwerts t als ein Merkmal klassifiziert wird, mindestens ein Merkmalserkennungsprozessor der Merkmalserkennungsanordnung konfiguriert ist: den ersten Schwellenwert (t1) auf einen zweiten Schwellenwert (t2) zu erhöhen; unter Verwendung des zweiten Schwellenwerts (t2) festzustellen, ob eine Schwellenwertzahl n von Pixeln an dem Bresenham-Kreis Beziehung (1) oder Beziehung (2) erfüllt; und wenn eine Schwellenwertzahl n der Pixel an dem Bresenham-Kreis unter Verwendung des zweiten Schwellenwerts (t2) Beziehung (1) oder Beziehung (2) nicht befriedigt, einen Stärkewert für den Kandidatenpixel festzulegen, wobei der Stärkewert einen Grad des Vertrauens angibt, mit dem der berücksichtigte Kandidatenpixel ein Merkmal ist.
  • Beispiel 56: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 41, wobei: die Merkmalserkennungskomponente ferner einen Adressengenerator, einen First-in-First-out (FIFO) Puffer und einen Wiederverwendungspuffer enthält; und die Gleitfenstersteuereinrichtung ferner konfiguriert ist zu veranlassen: der Adressengenerator stellt dem FIFO-Puffer nur die neuen Daten bereit; das Speichern von mindestens einem Teil der neuen Daten in dem Wiederverwendungspuffer; das Bereitstellen aller neuen Daten im FIFO an den Gleitfensterpuffer; und das Verknüpfen der neuen Daten mit den Wiederverwendungsdaten, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  • Beispiel 57: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 56, wobei: der Gleitfensterpuffer konfiguriert ist, in Reaktion auf den Empfang eines Wiederverwendungssteuersignals von der Gleitfenstersteuereinrichtung, einen ersten Teil der ersten Arbeitsdaten zu verwerfen, so dass ein zweiter Teil der ersten Arbeitsdaten im Gleitfensterpuffer verbleibt; und die Gleitfenstersteuereinrichtung konfiguriert ist, zu veranlassen, dass die neuen Daten mit dem zweiten Teil der ersten Arbeitsdaten mindestens teilweise durch Verbinden des zweiten Teils der ersten Arbeitsdaten mit den neuen Daten verknüpft werden.
  • Beispiel 58: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 57, wobei: die Gleitfenstersteuereinrichtung konfiguriert ist, das zweite Gleitfenster zumindest teilweise durch Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, zu definieren, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Teil der ersten Arbeitsdaten dem ersten Versatz entspricht.
  • Beispiel 59: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 57, wobei der Gleitfensterpuffer ferner konfiguriert ist, in Reaktion auf den Empfang des Wiederverwendungssteuersignals, den zweiten Teil der ersten Arbeitsdaten um einen Betrag, der dem ersten Versatz entspricht, zu verschieben.
  • Beispiel 60: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 53, wobei die Merkmalserkennungsanordnung konfiguriert ist, die FAST-Operationen an den mehreren ersten Kandidatenpixeln oder den mehreren zweiten Kandidatenpixeln parallel durchzuführen.
  • Beispiel 61: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 40 und ferner eine Merkmalsverfolgungskomponente und einen gemeinsamen Speicher, wobei: der gemeinsame Speicher kommunikativ mit der Merkmalsverfolgungskomponente und der Merkmalserkennungskomponente verbunden ist; die Merkmalserkennungskomponente konfiguriert ist, ein oder mehrere erkannte/s Merkmal/e in einer Liste erkannter Merkmale in dem gemeinsamen Speicher aufzuzeichnen; und die Merkmalsverfolgungskomponente konfiguriert ist: ein zu verfolgendes Merkmal aus der Liste erkannter Merkmale zu identifizieren; und das ausgewählte Merkmal in neuen Bilddaten, die in dem gemeinsamen Speicher empfangen werden, zu verfolgen.
  • Beispiel 62: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 61, wobei: die Liste erkannter Merkmale mehrere erkannte Merkmale enthält, wobei jedes der erkannten Merkmale Pixelkoordinaten eines entsprechenden Kandidatenpixels enthält, wobei die Pixelkoordinaten eine vertikale (y) Koordinate und eine horizontale (x) Koordinate enthalten; die Merkmalsverfolgungskomponente konfiguriert ist, das ausgewählte Merkmal zumindest teilweise auf Grundlage der y-Koordinate des entsprechenden Kandidatenpixels zu identifizieren.
  • Beispiel 63: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 61, wobei: die Merkmalsverfolgungskomponente konfiguriert ist, mehrere Merkmale in der Liste erkannter Merkmale gemäß einer Auswahlreihenfolge zu verfolgen; und die Auswahlreihenfolge zumindest teilweise auf einer Reihenfolge beruht, in der die neuen Bilddaten an den gemeinsamen Speicher bereitgestellt werden, einer Reihenfolge, in der erkannte Merkmale in der Liste erkannter Merkmale in den neuen Bilddaten zu erscheinen erwartet werden, die Pixelkoordinaten der erkannten Merkmale in der Liste erkannter Merkmale oder einer Kombination davon.
  • Beispiel 64: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 61, wobei die Merkmalsverfolgungskomponente das ausgewählte Merkmal unter Verwendung einer normierten Kreuzkorrelation (NCC) Funktion verfolgen soll.
  • Beispiel 65: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 64, wobei die NCC-Funktion eine Ganzzahlpräzisions-NCC-Funktion ist.
  • Beispiel 66: Gemäß diesem Beispiel wird ein computerimplementiertes Verfahren zum Verfolgen von Merkmalen in Bilddaten bereitgestellt, einschließlich: Auswählen eines Merkmals zum Verfolgen aus mehreren Merkmalen, die in einer Liste erkannter Merkmale gespeichert sind; Festlegen eines Referenzpatch aus dem ausgewählten Merkmal; Festlegen einer Region von Interesse in neuen Bilddaten; Durchführen von Merkmalserkennungsoperationen zum Identifizieren von mindestens einem Testpatch in der Region von Interesse, wobei der mindestens eine Testpatch einen Kandidatenpixel enthält, der als ein Merkmal klassifiziert ist; Vergleichen des Referenzpatch mit dem Testpatch unter Verwendung einer normierten Kreuzkorrelation (NCC), um einen NCC-Wert zu erzeugen, wobei der NCC-Wert indikativ für einen Grad ist, in dem der Referenzpatch und der Testpatch ähnlich sind.
  • Beispiel 67: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 66, wobei: jedes der mehreren in einer Liste erkannter Merkmale gespeicherten Merkmale Pixelkoordinaten eines entsprechenden einzelnen Kandidatenpixels, der als ein Merkmal klassifiziert ist, zugeordnet ist, wobei die Pixelkoordinaten eine vertikale (Y) Koordinate und eine horizontale (X) Koordinate enthalten; und das Auswählen eines Merkmals zum Verfolgen das Auswählen eines der mehreren Merkmale zumindest teilweise auf Grundlage seiner entsprechenden Y-Koordinate umfasst.
  • Beispiel 68: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 67 und ferner das Sortieren der mehreren Merkmale in der Liste erkannter Merkmale nach ihrer entsprechenden Y-Koordinate vor Auswählen von einem der mehreren Merkmale zum Verfolgen.
  • Beispiel 69: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 66 und ferner: Festlegen einer vorhergesagten Reihenfolge, in der erkannte Merkmale in der Liste erkannter Merkmale in den neuen Bilddaten erscheinen sollen; Festlegen einer Auswahlreihenfolge zumindest teilweise auf Grundlage der vorhergesagten Reihenfolge; und Auswählen eines der Merkmale für das Verfolgen zumindest teilweise auf Grundlage der Auswahlreihenfolge.
  • Beispiel 70: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 66, wobei die NCC-Funktion aus der Gruppe ausgewählt wird, die aus einer Gleitkommapräzisions-NCC-Funktion und einer Ganzzahlpräzisions-NCC-Funktion besteht.
  • Beispiel 71: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 70, wobei die NCC-Funktion eine Ganzzahlpräzisions-NCC-Funktion ist.
  • Beispiel 72: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 66 und umfasst ferner: Vergleichen des NCC-Werts mit einem Wert-Schwellenwert; und wenn der NCC-Wert größer oder gleich dem Wert-Schwellenwert ist, Identifizieren des Testpatch als dem für das Verfolgen ausgewählten Merkmal entsprechend.
  • Beispiel 73: Gemäß diesem Beispiel wird mindestens ein computerlesbares Medium, einschließlich Anweisungen zum Verfolgen von Merkmalen in Bilddaten, bereitgestellt, wobei die Anweisungen, wenn sie von einer Rechenvorrichtung ausgeführt werden, im Durchführen der folgenden Operationen resultieren, einschließlich: Auswählen eines Merkmals für das Verfolgen aus mehreren Merkmalen, die in einer Liste erkannter Merkmale gespeichert sind; Festlegen eines Referenzpatch aus dem ausgewählten Merkmal; Festlegen einer Region von Interesse in neuen Bilddaten; Durchführen von Merkmalserkennungsoperationen zum Identifizieren von mindestens einem Testpatch in der Region von Interesse, wobei das mindestens eine Testpatch einen Kandidatenpixel enthält, der als ein Merkmal klassifiziert ist; Vergleichen des Referenzpatch mit dem Testpatch unter Verwendung einer normierten Kreuzkorrelation (NCC), um einen NCC-Wert zu erzeugen, wobei der NCC-Wert indikativ für einen Grad ist, in dem das Referenzpatch und das Testpatch ähnlich sind.
  • Beispiel 74: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 73, wobei: jedes der mehreren in einer Liste erkannter Merkmale gespeicherten Merkmale Pixelkoordinaten eines entsprechenden einzelnen Kandidatenpixels, der als ein Merkmal klassifiziert ist, zugeordnet ist, wobei die Pixelkoordinaten eine vertikale (Y) Koordinate und eine horizontale (X) Koordinate enthalten; und das Auswählen eines Merkmals zum Verfolgen das Auswählen eines der mehreren Merkmale zumindest teilweise auf Grundlage seiner Koordinate umfasst.
  • Beispiel 75: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 74, wobei die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Sortieren der mehreren Merkmale in der Liste erkannter Merkmale nach ihrer entsprechenden Y-Koordinate vor Auswählen einer der mehreren Koordinaten für das Verfolgen.
  • Beispiel 76: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 73, wobei die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Festlegen einer vorhergesagten Reihenfolge, in der erkannte Merkmale in der Liste erkannter Merkmale in den neuen Bilddaten erscheinen sollen; Festlegen einer Auswahlreihenfolge zumindest teilweise auf Grundlage der vorhergesagten Reihenfolge; und Auswählen eines der Merkmale zum Verfolgen zumindest teilweise auf Grundlage der Auswahlreihenfolge.
  • Beispiel 77: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 73, wobei die NCC-Funktion aus der Gruppe ausgewählt wird, die aus einer Gleitkommapräzisions-NCC-Funktion und einer Ganzzahlpräzisions-NCC-Funktion besteht.
  • Beispiel 78: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 77, wobei die NCC-Funktion eine Ganzzahlpräzisions-NCC-Funktion ist.
  • Beispiel 79: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 73, wobei die Anweisungen, wenn sie ausgeführt werden, ferner im Durchführen der folgenden Operationen resultieren, einschließlich: Vergleichen des NCC-Werts mit einem Wert-Schwellenwert; und wenn der NCC-Wert größer oder gleich dem Wert-Schwellenwert ist, Identifizieren des Testpatch als dem für das Verfolgen ausgewählten Merkmal entsprechend.
  • Beispiel 80: Gemäß diesem Beispiel wird ein Simultaneous Location and Monitoring Hardware Accelerator (SLAM HWA) bereitgestellt, einschließlich: einem gemeinsamen Speicher; und einer Merkmalsverfolgungskomponente, die ein Erkennungselement und ein Verfolgungselement enthält, wobei das Verfolgungselement eine Verfolgungssteuereinrichtung und ein Verfolgungsmodul enthält; wobei: die Verfolgungssteuereinrichtung konfiguriert ist: ein Merkmal für das Verfolgen aus mehreren Merkmalen, die in einer Liste erkannter Merkmale in dem gemeinsamen Speicher gespeichert sind, auszuwählen; einen Referenzpatch aus dem ausgewählten Merkmal für das Verfolgen festzulegen; und eine Region von Interesse in neuen Bilddaten, die in dem gemeinsamen Speicher empfangen werden, festzulegen; das Erkennungselement zu veranlassen, die Merkmalserkennungsoperationen zum Identifizieren zumindest eines Testpatch in der Region von Interesse durchzuführen, wobei das mindestens eine Testpatch einen Kandidatenpixel enthält, der als ein Merkmal klassifiziert ist; und das Verfolgungsmodul zu veranlassen, das Referenzpatch mit dem Testpatch unter Verwendung einer normierten Kreuzkorrelation (NCC) Funktion zu vergleichen und einen NCC-Wert zu erzeugen, wobei der NCC-Wert indikativ für einen Grad ist, in dem der Referenzpatch und der Testpatch ähnlich sind.
  • Beispiel 81: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 80, wobei: jedes der mehreren in einer Liste erkannter Merkmale gespeicherten Merkmale Pixelkoordinaten eines entsprechenden einzelnen Kandidatenpixels, der als ein Merkmal klassifiziert ist, zugeordnet ist, wobei die Pixelkoordinaten eine vertikale (Y) Koordinate und eine horizontale (X) Koordinate enthalten; und die Verfolgungssteuereinrichtung ferner konfiguriert ist, das Merkmal für das Verfolgen zumindest teilweise auf Grundlage seiner entsprechenden Y-Koordinate auszuwählen.
  • Beispiel 82: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 81, wobei die Verfolgungssteuereinrichtung ferner konfiguriert ist, die mehreren Merkmale in der Liste erkannter Merkmale vor der Auswahl von einem der mehreren Merkmale für das Verfolgen nach ihrer entsprechenden Y-Koordinate zu sortieren.
  • Beispiel 83: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 80, wobei die Verfolgungssteuereinrichtung ferner konfiguriert ist: eine vorhergesagte Reihenfolge festzulegen, in der erkannte Merkmale in der Liste erkannter Merkmale in den neuen Bilddaten erscheinen sollen; eine Auswahlreihenfolge zumindest teilweise auf Grundlage der vorhergesagten Reihenfolge festzulegen; und das Merkmal für das Verfolgen zumindest teilweise auf Grundlage der Auswahlreihenfolge auszuwählen.
  • Beispiel 84: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 80, wobei die NCC-Funktion aus der Gruppe ausgewählt wird, die aus einer Gleitkommapräzisions-NCC-Funktion und einer Ganzzahlpräzisions-NCC-Funktion besteht.
  • Beispiel 85: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 84, wobei die NCC-Funktion eine Ganzzahlpräzisions-NCC-Funktion ist.
  • Beispiel 86: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 80, wobei das Verfolgungsmodul ferner konfiguriert ist: den NCC-Wert mit einem Wert-Schwellenwert zu vergleichen; und wenn der NCC-Wert größer oder gleich dem Wert-Schwellenwert ist, das Testpatch als dem für das Verfolgen ausgewählten Merkmal entsprechend zu identifizieren.
  • Beispiel 87: Dieses Beispiel enthält jedwede oder alle der Merkmale des Beispiels 78, wobei das Verfolgungsmodul umfasst: Testpatchnormalisierungsschaltungsanordnung zum Berechnen eines ganzzahlpräzisionsnormierten Testpatch; Referenzpatchnormalisierungsschaltungsanordnung zum Berechnen eines ganzzahlpräzisionsnormierten Referenzpatch; und Skalenaufteilungsschaltungsanordnung, die konfiguriert ist: einen ganzzahlig skalierten Zählerterm einer Ganzzahlpräzisions-NCC-Funktion zu berechnen; einen ganzzahligen Nennerterm der Ganzzahlpräzisions-NCC-Funktion zu berechnen; und einen Ganzzahl-NCC-Wert durch Dividieren des ganzzahlig skalierten Zählers durch den ganzzahligen Nenner zu produzieren.
  • Beispiel 88: Gemäß diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Anweisungen umfasst, die, wenn sie ausgeführt werden, in der Durchführung des computerimplementierten Verfahrens nach einem der Beispiele 1 bis 20 resultiert.
  • Beispiel 89: Gemäß diesem Beispiel wird mindestens ein computerlesbares Medium bereitgestellt, das Anweisungen umfasst, die, wenn sie ausgeführt werden, in der Durchführung des computerimplementierten Verfahrens nach einem der Beispiele 66 bis 72 resultiert.
  • Die hierin verwendeten Begriffe und Formulierungen werden als beschreibende und nicht als einschränkende Begriffe verwendet und es ist nicht beabsichtigt, dass durch Verwendung dieser Begriffe und Formulierungen Äquivalente der gezeigten und beschriebenen Merkmale (oder von Teilen davon) ausgeschlossen werden. Es versteht sich auch, dass verschiedene Modifikationen möglich sind, die im Umfang der Ansprüche liegen. Dementsprechend ist beabsichtigt, dass die Ansprüche alle solche Äquivalente abdecken. Hierin wurden verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen lassen sich miteinander kombinieren sowie variieren und modifizieren, wie der Fachmann verstehen wird. Die vorliegende Offenbarung sollte daher derart aufgefasst werden, dass sie solche Kombinationen, Variationen und Modifikationen miteinschließt.

Claims (25)

  1. Computerimplementiertes Verfahren zum Erkennen von Merkmalen in einem digitalen Bild, die folgenden computerimplementierten Operationen umfassend: Definieren eines ersten Gleitfensters, das erste Arbeitsdaten umschließt, wobei die ersten Arbeitsdaten einen ersten Teil der Bilddaten des digitalen Bildes umfassen; Durchführen erster Merkmalserkennungsoperationen an einem oder mehreren ersten Kandidatenpixel/n in den ersten Arbeitsdaten in dem Gleitfensterpuffer zum Klassifizieren, ob das eine oder die mehreren Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; Definieren eines zweiten Gleitfensters, das zweite Arbeitsdaten umschließt, wobei die zweiten Arbeitsdaten Wiederverwendungsdaten und neue Daten umfassen; und Durchführen zweiter Merkmalserkennungsoperationen an einem oder mehreren zweiten Kandidatenpixel/n in den zweiten Arbeitsdaten zum Klassifizieren, ob der eine oder die mehreren Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; wobei die Wiederverwendungsdaten einen Teil der ersten Arbeitsdaten umfassen und die neuen Daten Bilddaten des digitalen Bildes umfassen, die nicht in den ersten Arbeitsdaten enthalten waren.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei: das Definieren des zweiten Gleitfensters das Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, umfasst, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Versatz aus der Gruppe ausgewählt wird, die aus einem vertikalen Versatz, einem horizontalen Versatz und einem diagonalen Versatz besteht.
  3. Computerimplementiertes Verfahren nach Anspruch 2, wobei: der Versatz ein vertikaler Versatz ist und die Wiederverwendungsdaten vertikale Wiederverwendungsdaten umfassen, wobei die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten sind; die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten ein oberster oder unterster Satz von Pixelreihen der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und das Definieren des zweiten Gleitfensters das Verknüpfen einer obersten oder untersten Pixelreihe der neuen Daten mit den vertikalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  4. Computerimplementiertes Verfahren nach Anspruch 2, wobei: der erste Versatz ein horizontaler Versatz ist und die Wiederverwendungsdaten horizontale Wiederverwendungsdaten umfassen, wobei die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalten der ersten Arbeitsdaten sind; die ersten Merkmalserkennungsoperationen durchgeführt werden, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten ein am weitesten rechts liegender oder am weitesten links liegender Satz Pixelspalten der ersten Arbeitsdaten in dem Gleitfensterpuffer sind und das Definieren des zweiten Gleitfensters das Verknüpfen einer am weitesten links liegenden oder am weitesten rechts liegenden Pixelspalte der neuen Daten mit den horizontalen Wiederverwendungsdaten in dem Gleitfensterpuffer umfasst, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  5. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Definieren des zweiten Gleitfensters umfasst: Feststellen, ob das erste Gleitfenster eine Schwellenwertposition innerhalb des digitalen Bildes erreicht hat; wenn das erste Gleitfenster die Schwellenwertposition nicht erreicht hat, Anwenden eines ersten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und wenn das erste Gleitfenster die Schwellenwertposition erreicht hat, Anwenden eines zweiten Versatzes auf Pixelkoordinaten von Pixeln, die in den ersten Arbeitsdaten enthalten sind, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine zweite Richtung, die sich von der ersten Richtung unterscheidet, versetzt ist.
  6. Computerimplementiertes Verfahren nach Anspruch 1, wobei: die ersten Arbeitsdaten mehrere erste Kandidatenpixel enthalten; die zweiten Arbeitsdaten mehrere zweite Kandidatenpixel enthalten, die sich von den ersten Kandidatenpixeln unterscheiden; das Durchführen der ersten Merkmalserkennungsoperationen das Durchführen von Features from Accelerated Segment Test (FAST) Operationen an jedem der mehreren ersten Kandidatenpixel umfasst, um jedes der ersten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren; und das Durchführen der zweiten Merkmalserkennungsoperationen das Durchführen von FAST-Operationen an jedem der mehreren zweiten Kandidatenpixel umfasst, um jedes der zweiten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren; wobei die FAST-Operationen das Feststellen umfassen, ob eine der folgenden Beziehungen von einer Schwellenwertzahl n von Pixeln an einer Peripherie eines Bresenham-Kreises, der ein Kandidatenpixel eingrenzt, erfüllt wird: I > I p + t;
    Figure DE102017128297A1_0003
    oder I < I p t ;
    Figure DE102017128297A1_0004
    wobei: I eine Intensität eines Pixels an der Peripherie des Bresenham-Kreises ist, Ip eine Intensität des einzelnen Kandidatenpixels ist und t ein erster Schwellenwert ist; und das einzelne Kandidatenpixel nur als ein Merkmal klassifiziert wird, wenn eine Schwellenwertzahl n von Pixeln an der Peripherie des Bresenham-Kreises Beziehung (1) oder Beziehung (2) erfüllt.
  7. Computerimplementiertes Verfahren nach Anspruch 1, wobei die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen und das Verfahren ferner umfasst: Empfangen nur der neuen Daten in einem First-in-First-out (FIFO) Puffer; und Speichern mindestens eines Teils der neuen Daten in einem Wiederverwendungspuffer; und Übertragen aller neuen Daten in dem FIFO an den Gleitfensterpuffer; und Verknüpfen der neuen Daten mit den Wiederverwendungsdaten, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  8. Mindestens ein computerlesbares Medium, das Anweisungen für das Erkennen von Merkmalen in einem digitalen Bild enthält, wobei die Anweisungen, wenn sie von einer Rechenvorrichtung ausgeführt werden, im Durchführen des computerimplementierten Verfahrens nach einem der Ansprüche 1 bis 7 resultieren.
  9. Simultaneous Location and Monitoring Hardware Accelerator (SLAM HWA), umfassend: eine Merkmalserkennungskomponente, umfassend: einen Gleitfensterpuffer; und eine Gleitfenstersteuereinrichtung; wobei: die Gleitfenstersteuereinrichtung konfiguriert ist zum: Veranlassen des Durchführens erster Merkmalserkennungsoperationen an einem oder mehreren ersten Kandidatenpixel/n in ersten Arbeitsdaten in dem Gleitfensterpuffer, um zu klassifizieren, ob das eine oder die mehreren Kandidatenpixel ein Merkmal ist bzw. sind oder nicht, wobei die ersten Arbeitsdaten Bilddaten eines digitalen Bildes umfassen, die von einem ersten Gleitfenster umschlossen werden; Definieren eines zweiten Gleitfensters, das von dem ersten Gleitfenster versetzt ist, das zweite Arbeitsdaten umschließt, wobei die zweiten Arbeitsdaten Wiederverwendungsdaten und neue Daten umfassen; und Veranlassen des Durchführens zweiter Merkmalserkennungsoperationen an einem oder mehreren zweiten Kandidatenpixel/n in den zweiten Arbeitsdaten zum Klassifizieren, ob das eine oder die mehreren zweiten Kandidatenpixel ein Merkmal ist bzw. sind oder nicht; die Wiederverwendungsdaten einen Teil der ersten Arbeitsdaten umfassen; und die neuen Daten Bilddaten des digitalen Bildes umfassen, die nicht in den ersten Arbeitsdaten enthalten waren.
  10. SLAM HWA nach Anspruch 9, wobei: die Gleitfenstersteuereinrichtung konfiguriert ist, das zweite Gleitfenster zumindest teilweise durch Anwenden eines ersten Versatzes auf Pixelkoordinaten der Pixel, die in den ersten Arbeitsdaten enthalten sind, zu definieren, so dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Versatz aus der Gruppe ausgewählt wird, die aus einem vertikalen Versatz, einem horizontalen Versatz und einem diagonalen Versatz besteht.
  11. SLAM HWA nach Anspruch 10, wobei: der Versatz ein vertikaler Versatz ist und die Wiederverwendungsdaten vertikale Wiederverwendungsdaten umfassen, wobei die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten sind; die Merkmalserkennugskomponente ferner eine Merkmalserkennungsanordnung umfasst, die mehrere Merkmalserkennungsprozessoren umfasst; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die vertikalen Wiederverwendungsdaten ein oberster oder unterster Satz von Pixelreihen der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine oberste oder unterste Pixelreihe der neuen Daten zu veranlassen, mit den vertikalen Wiederverwendungsdaten in dem Gleitfensterpuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  12. SLAM HWA nach Anspruch 11, wobei: die Merkmalserkennugskomponente ferner einen Wiederverwendungspuffer und eine Merkmalserkennungsanordnung umfasst, die mehrere Merkmalserkennungsprozessoren umfasst; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die vertikalen Wiederverwendungsdaten eine oder mehrere Pixelreihen der ersten Arbeitsdaten, die in dem Wiederverwendungspuffer gespeichert sind, umfasst; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine oberste oder unterste Pixelreihe der neuen Daten zu veranlassen, mit den vertikalen Wiederverwendungsdaten in dem Wiederverwendungspuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  13. SLAM HWA nach Anspruch 9, wobei: der erste Versatz ein horizontaler Versatz ist und die Wiederverwendungsdaten horizontale Wiederverwendungsdaten umfassen, wobei die horizontalen Wiederverwendungsdaten eine oder mehrere Pixelspalten der ersten Arbeitsdaten sind; die Merkmalserkennugskomponente ferner eine Merkmalserkennungsanordnung umfasst, die mehrere Merkmalserkennungsprozessoren umfasst; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; und die horizontalen Wiederverwendungsdaten ein am weitesten rechts liegender oder am weitesten links liegender Satz von Pixelspalten der ersten Arbeitsdaten in dem Gleitfensterpuffer sind; und die Gleitfenstersteuereinrichtung konfiguriert ist, eine am weitesten links liegende oder am weitesten rechts liegende Pixelspalte der neuen Daten zu veranlassen, mit den horizontalen Wiederverwendungsdaten in dem Gleitfensterpuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  14. SLAM HWA nach Anspruch 13, wobei: die Merkmalserkennungsanordnung ferner einen Wiederverwendungspuffer und eine Merkmalserkennungsanordnung umfasst, die mehrere Merkmalserkennungsprozessoren umfasst; die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen durchzuführen, wenn die ersten Arbeitsdaten in einem Gleitfensterpuffer vorliegen; die horizontalen Wiederverwendungsdaten ein am weitesten rechts liegender oder am weitesten links liegender Satz von Pixelspalten der ersten Arbeitsdaten in dem Wiederverwendungspuffer sind und die Gleitfenstersteuereinrichtung konfiguriert ist, eine am weitesten links liegende oder am weitesten rechts liegende Pixelspalte der neuen Daten zu veranlassen, mit den horizontalen Wiederverwendungsdaten in dem Wiederverwendungspuffer verknüpft zu werden, so dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  15. SLAM HWA nach Anspruch 9, wobei: die ersten Arbeitsdaten mehrere erste Kandidatenpixel enthalten; die zweiten Arbeitsdaten mehrere zweite Kandidatenpixel enthalten, die sich von den ersten Kandidatenpixeln unterscheiden; der SLAM HWA ferner eine Merkmalserkennungsanordnung umfasst, die mehrere Merkmalserkennungsprozessoren umfasst, wobei die Merkmalserkennungsanordnung konfiguriert ist, die ersten Merkmalserkennungsoperationen und die zweiten Merkmalserkennungsoperationen durchzuführen; die ersten Merkmalserkennungsoperationen das Durchführen von Features from Accelerated Segment Test (FAST) Operationen an jedem der mehreren ersten Kandidatenpixel umfasst, um jedes der ersten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren; und die zweiten Merkmalserkennungsoperationen das Durchführen von FAST-Operationen an jedem der mehreren zweiten Kandidatenpixel umfasst, um jedes der zweiten Kandidatenpixel als ein Merkmal oder kein Merkmal zu klassifizieren; wobei die FAST-Operationen das Feststellen umfassen, ob eine der folgenden Beziehungen von einer Schwellenwertzahl n von Pixeln an einer Peripherie eines Bresenham-Kreises, der einen Kandidatenpixel eingrenzt, erfüllt wird: I > I p + t;
    Figure DE102017128297A1_0005
    oder I < I p t;
    Figure DE102017128297A1_0006
    wobei: I eine Intensität eines Pixels an der Peripherie des Bresenham-Kreises ist, Ip eine Intensität des einzelnen Kandidatenpixels ist und t ein erster Schwellenwert ist; und das einzelne Kandidatenpixel nur als ein Merkmal klassifiziert wird, wenn eine Schwellenwertzahl n von Pixeln an der Peripherie des Bresenham-Kreises Beziehung (1) oder Beziehung (2) erfüllt.
  16. SLAM HWA nach Anspruch 9, wobei: die Merkmalserkennungskomponente ferner einen Adressengenerator, einen First-in-First-out (FIFO) Puffer und einen Wiederverwendungspuffer umfasst; und die Gleitfenstersteuereinrichtung ferner konfiguriert ist zu veranlassen, dass: der Adressengenerator nur die neuen Daten an den FIFO-Puffer bereitstellt; mindestens ein Teil der neuen Daten in dem Wiederverwendungspuffer gespeichert wird; alle neuen Daten in dem FIFO an den Gleitfensterpuffer bereitgestellt werden; und die neuen Daten mit den Wiederverwendungsdaten derart verknüpft werden, dass die zweiten Arbeitsdaten in dem Gleitfensterpuffer vorliegen.
  17. SLAM HWA nach Anspruch 16, wobei: der Gleitfensterpuffer konfiguriert ist, in Reaktion auf den Empfang eines Wiederverwendungssteuersignals von der Gleitfenstersteuereinrichtung einen ersten Teil der ersten Arbeitsdaten zu verwerfen, so dass ein zweiter Teil der ersten Arbeitsdaten in dem Gleitfensterpuffer verbleibt; und die Gleitfenstersteuereinrichtung konfiguriert ist, die neuen Daten zu veranlassen mit dem zweiten Teil der ersten Arbeitsdaten zumindest teilweise durch Verbinden des zweiten Teils der ersten Arbeitsdaten mit den neuen Daten verknüpft zu werden.
  18. SLAM HWA nach Anspruch 17, wobei: die Gleitfenstersteuereinrichtung konfiguriert ist, das zweite Gleitfenster zumindest teilweise durch Anwenden eines ersten Versatzes auf Pixelkoordinaten der Pixel, die in den ersten Arbeitsdaten enthalten sind, derart zu definieren, dass das zweite Gleitfenster von dem ersten Gleitfenster in eine erste Richtung versetzt ist; und der erste Teil der ersten Arbeitsdaten dem ersten Versatz entspricht.
  19. SLAM HWA nach Anspruch 17, wobei der Gleitfensterpuffer ferner konfiguriert ist, in Reaktion auf den Empfang des Wiederverwendungssteuersignals, den zweiten Teil der ersten Arbeitsdaten um einen Betrag, der dem ersten Versatz entspricht, zu verschieben.
  20. SLAM HWA nach Anspruch 16, wobei die Merkmalserkennungsanordnung konfiguriert ist, die FAST-Operationen an den mehreren ersten Kandidatenpixeln oder den mehreren zweiten Kandidatenpixeln parallel durchzuführen.
  21. SLAM HWA nach Anspruch 9, ferner eine Merkmalsverfolgungskomponente und einen gemeinsamen Speicher umfassend, wobei: der gemeinsame Speicher kommunikativ mit der Merkmalsverfolgungskomponente und der Merkmalserkennungskomponente verbunden ist; die Merkmalserkennungskomponente konfiguriert ist, ein oder mehrere erkannte/s Merkmal/e in einer Liste erkannter Merkmale in dem gemeinsamen Speicher aufzuzeichnen; und die Merkmalsverfolgungskomponente konfiguriert ist: ein für das Verfolgen ausgewähltes Merkmal in der Liste erkannter Merkmale zu identifizieren; und das ausgewählte Merkmal in neuen Bilddaten, die in dem gemeinsamen Speicher empfangen werden, zu verfolgen.
  22. SLAM HWA nach Anspruch 21, wobei: die Liste erkannter Merkmale mehrere erkannte Merkmale umfasst, wobei jedes der erkannten Merkmale Pixelkoordinaten eines entsprechenden Kandidatenpixels umfasst, wobei die Pixelkoordinaten eine vertikale (y) Koordinate und eine horizontale (x) Koordinate enthalten; die Merkmalsverfolgungskomponente konfiguriert ist, das für das Verfolgen ausgewählte Merkmal mindestens teilweise auf Grundlage der y-Koordinate des entsprechenden Kandidatenpixels zu identifizieren.
  23. SLAM HWA nach Anspruch 21, wobei: die Merkmalsverfolgungskomponente konfiguriert ist, mehrere Merkmale in der Liste erkannter Merkmale gemäß einer Auswahlreihenfolge zu verfolgen; und die Auswahlreihenfolge zumindest teilweise auf einer Reihenfolge, in der die neuen Bilddaten an den gemeinsamen Speicher bereitgestellt werden, einer Reihenfolge, in der erkannte Merkmale in der Liste erkannter Merkmale in den neuen Bilddaten zu erscheinen erwartet werden, den Pixelkoordinaten der erkannten Merkmale in der Liste erkannter Merkmale oder einer Kombination davon beruht.
  24. SLAM HWA nach Anspruch 21, wobei die Merkmalsverfolgungskomponente das ausgewählte Merkmal unter Verwendung einer Funktion einer normierten Kreuzkorrelation (NCC) verfolgt.
  25. SLAM HWA nach Anspruch 24, wobei die NCC-Funktion eine Ganzzahlpräzisions-NCC-Funktion ist.
DE102017128297.1A 2016-12-29 2017-11-29 Technologie zur Merkmalserkennung und -verfolgung Pending DE102017128297A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641044794 2016-12-29
IN201641044794 2016-12-29

Publications (1)

Publication Number Publication Date
DE102017128297A1 true DE102017128297A1 (de) 2018-07-05

Family

ID=62568012

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128297.1A Pending DE102017128297A1 (de) 2016-12-29 2017-11-29 Technologie zur Merkmalserkennung und -verfolgung

Country Status (3)

Country Link
US (1) US20180189587A1 (de)
CN (1) CN108257176A (de)
DE (1) DE102017128297A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190200154A1 (en) * 2017-12-21 2019-06-27 Facebook, Inc. Systems and methods for audio-based augmented reality
CN108942939A (zh) * 2018-07-31 2018-12-07 深圳市山龙智控有限公司 基于滑动滤波的scara机器人速度规划方法及其系统
US10733742B2 (en) 2018-09-26 2020-08-04 International Business Machines Corporation Image labeling
US11176427B2 (en) 2018-09-26 2021-11-16 International Business Machines Corporation Overlapping CNN cache reuse in high resolution and streaming-based deep learning inference engines
US10955245B2 (en) * 2019-04-30 2021-03-23 Samsung Electronics Co., Ltd. System and method for low latency, high performance pose fusion
CN113011231B (zh) * 2019-12-20 2023-07-07 舜宇光学(浙江)研究院有限公司 分类滑窗方法和slam定位方法及其系统和电子设备
CN111818037A (zh) * 2020-07-02 2020-10-23 上海工业控制安全创新科技有限公司 基于信息熵的车载网络流量异常检测防御方法及防御系统
KR20220061769A (ko) 2020-11-06 2022-05-13 삼성전자주식회사 Slam을 가속화하는 방법 및 이를 이용한 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504569B1 (en) * 1998-04-22 2003-01-07 Grass Valley (U.S.), Inc. 2-D extended image generation from 3-D data extracted from a video sequence
CN101344966B (zh) * 2008-08-18 2011-06-15 浙江大学 一种智能视觉监控中检测异常目标行为的方法
CN102547296B (zh) * 2012-02-27 2015-04-01 开曼群岛威睿电通股份有限公司 移动估计加速电路、移动估计方法及环路滤波加速电路
US8934675B2 (en) * 2012-06-25 2015-01-13 Aquifi, Inc. Systems and methods for tracking human hands by performing parts based template matching using images from multiple viewpoints
US9477889B2 (en) * 2013-06-27 2016-10-25 Intel Corporation Face recognition with parallel detection and tracking, and/or grouped feature motion shift tracking
US9298988B2 (en) * 2013-11-08 2016-03-29 Analog Devices Global Support vector machine based object detection system and associated method
US10430169B2 (en) * 2014-05-30 2019-10-01 Apple Inc. Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit
US9762834B2 (en) * 2014-09-30 2017-09-12 Qualcomm Incorporated Configurable hardware for computing computer vision features

Also Published As

Publication number Publication date
US20180189587A1 (en) 2018-07-05
CN108257176A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
DE102017128297A1 (de) Technologie zur Merkmalserkennung und -verfolgung
DE102019216136A1 (de) Verfahren und system zur 3d-rekonstruktion mit volumenbasierter filterung zur bildverarbeitung
US11568682B2 (en) Recognition of activity in a video image sequence using depth information
CN111738344B (zh) 一种基于多尺度融合的快速目标检测方法
DE102018133582A1 (de) Vorrichtung zur Ausführung einer neuronalen Netzoperation und Verfahren zum Betreiben dieser Vorrichtung
DE102016120775A1 (de) System und Verfahren zum Erkennen von Linien in einem Bild mit einem Sichtsystem
DE102016100101A1 (de) System zum maschinellen sehen und analytisches verfahren zur segmentierung planarer oberflächen
DE112016005776T5 (de) Systeme und Verfahren zum Bereitstellen eines Bild-Klassifikators
DE112011103690T5 (de) Erkennung und Verfolgung sich bewegender Objekte
US11900676B2 (en) Method and apparatus for detecting target in video, computing device, and storage medium
US9542732B2 (en) Efficient image transformation
EP3640886B1 (de) Homografierektifizierung
US20180137641A1 (en) Target tracking method and device
DE102019122402A1 (de) Das klassifizieren von zeitreihenbilddaten
US20170316570A1 (en) Image processing apparatus and method
DE202016006008U1 (de) Automatische Erkennung von Panoramagesten
US10275863B2 (en) Homography rectification
DE102015122116A1 (de) System und Verfahren zur Ermittlung von Clutter in einem aufgenommenen Bild
Tombari et al. Stereo for robots: quantitative evaluation of efficient and low-memory dense stereo algorithms
DE102019007837A1 (de) Bildschattendetektion unter Verwendung mehrerer Bilder
Schaffner et al. Towards edge-aware spatio-temporal filtering in real-time
CN112686247A (zh) 一种身份证号码检测方法、装置、可读存储介质和终端
US9798932B2 (en) Video extraction method and device
EP2037407A1 (de) Verfahren zur Objekterfassung
DE102018127738B4 (de) Kamerablockadeerfassung für autonome Fahrsysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: HGF EUROPE LP, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009480000

Ipc: G06V0030182000

R016 Response to examination communication