DE102018003483A1 - Optimierte bildmerkmalsextraktion - Google Patents

Optimierte bildmerkmalsextraktion Download PDF

Info

Publication number
DE102018003483A1
DE102018003483A1 DE102018003483.7A DE102018003483A DE102018003483A1 DE 102018003483 A1 DE102018003483 A1 DE 102018003483A1 DE 102018003483 A DE102018003483 A DE 102018003483A DE 102018003483 A1 DE102018003483 A1 DE 102018003483A1
Authority
DE
Germany
Prior art keywords
circuitry
feature
sample point
feature extraction
image
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.)
Withdrawn
Application number
DE102018003483.7A
Other languages
English (en)
Inventor
Gurpreet S. Kalsi
Om J. Omer
Biji George
Gopi Neela
Dipan Kumar Mandal
Sreenivas Subramoney
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 DE102018003483A1 publication Critical patent/DE102018003483A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • 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/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • G06V10/507Summing image-intensity values; Histogram projection analysis
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

Eine Ausführungsform stellt eine Bildverarbeitungsschaltungsanordnung bereit. Die Bildverarbeitungsschaltungsanordnung beinhaltet eine Merkmalsextraktionsschaltungsanordnung und eine Optimierungsschaltungsanordnung. Die Merkmalsextraktionsschaltungsanordnung ist dazu ausgelegt, einen Merkmalsdeskriptor wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß zu bestimmen. Die Optimierungsschaltungsanordnung ist dazu ausgelegt, eine Operation der Merkmalsextraktionsschaltungsanordnung zu optimieren. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft ein Bildmerkmal, insbesondere eine Bildmerkmalsextraktion.
  • Hintergrund
  • Computersichtanwendungen, wie etwa erweiterte Realität, virtuelle Realität, gemischte Realität, Robotik, unbemannte Flugzeuge (z. B. Drohnen), Computerbildgebung usw., nutzen Objekterkennungs-, Mustererkennungs-, Verfolgungs- und/oder dreidimensionale Rekonstruktionstechniken. Eine assoziierte Bildverarbeitung kann Bilddetektion und Merkmalsextraktion beinhalten, um Erkennungs- und/oder Rekonstruktionsoperationen zu unterstützen. Merkmalserkennung beinhaltet Identifizieren von Merkmalen, z. B. Ecken, in einem erfassten Bild. Merkmalsextraktion beinhaltet Bestimmen eines oder mehrerer Bildmerkmalsdeskriptoren, die in Bezug zu den identifizierten Merkmalen stehen. Bestimmen von Bildmerkmalsdeskriptoren kann rechenintensiv sein, kann zu einer erheblichen Latenz führen und kann erhebliche Energie verbrauchen.
  • Manche Computersichtanwendungen können auf portablen Vorrichtungen und/oder Vorrichtungen mit kleinem Formfaktor, wie etwa Smartphones, Tablets und/oder IdD-Vorrichtungen (IdD: Internet der Dinge), implementiert werden. Ein Verbrauch von Vorrichtungsressourcen (z. B. Verarbeitungs-, Leistungs-, Speicherbandbreite) und assoziierte Latenzen können auf solchen portablen Vorrichtungen und/oder Vorrichtungen mit kleinem Formfaktor relativ signifikanter sein.
  • Figurenliste
  • Merkmale und Vorteile des beanspruchten Gegenstands werden aus der folgenden ausführlichen Beschreibung von damit übereinstimmenden Ausführungsformen ersichtlich, wobei die Beschreibung unter Bezugnahme auf die begleitenden Zeichnungen betrachtet werden sollte, in denen gilt:
    • 1 veranschaulicht ein funktionales Blockdiagramm eines Systems einschließlich eines Bildmerkmalssystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2 veranschaulicht ein funktionales Blockdiagramm eines Bildverarbeitungsuntersystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 3 veranschaulicht ein funktionales Blockdiagramm einer beispielhaften Integralbildschaltungsanordnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 4 veranschaulicht eine beispielhafte Probenpunktanpassung basierend auf einer Orientierung gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 5 veranschaulicht ein funktionales Blockdiagramm einer beispielhaften Deskriptorschaltungsanordnung gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 6 ist ein Flussdiagramm von Merkmalsextraktionsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung;
    • 7 ist ein Flussdiagramm von Bildintegralwertbestimmungsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung;
    • 8 ist ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform der Erfindung;
    • 9A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Reihenfolge-Pipeline als auch eine beispielhafte Registerumbenennung-außer-Reihenfolge-Ausgabe/Ausführung-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 9B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel für einen In-Reihenfolge-Architektur-Kern als auch einen beispielhaften Registerumbenennung-außer-Reihenfolge-Ausgabe/Ausführung-Architektur-Kern, der in einem Prozessor aufzunehmen ist, gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 10A-B veranschaulichen ein Blockdiagramm einer spezielleren beispielhaften In-Reihenfolge-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder unterschiedlicher Typen) in einem Chip wäre;
    • 11 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung;
    • 12-15 sind Blockdiagramme beispielhafter Computerarchitekturen; und
    • 16 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlumwandlers zum Umwandeln von binären Befehlen in einem Quellenbefehlssatz zu binären Befehlen in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung kontrastiert.
  • Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen fortfährt, werden für einen Fachmann viele Alternativen, Modifikationen und Variationen davon ersichtlich.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Allgemein betrifft diese Offenbarung eine Bildmerkmalsextraktionsschaltungsanordnung. Eine Einrichtung, ein Verfahren und/oder ein System können eine Bildverarbeitungseinrichtung beinhalten, die eine Merkmalsextraktionsschaltungsanordnung und eine Optimierungsschaltungsanordnung beinhaltet. Die Merkmalsextraktionsschaltungsanordnung ist dazu konfiguriert, einen Merkmalsdeskriptor wenigstens teilweise basierend auf einer Merkmalspunktposition und einem Ausmaß zu bestimmen. Die Optimierungsschaltungsanordnung ist dazu konfiguriert, eine Operation der Merkmalsextraktionsschaltungsanordnung zu optimieren. Zum Beispiel kann die Optimierungsschaltungsanordnung ein oder mehrere Elemente der Merkmalsextraktionsschaltungsanordnung zum Implementieren, z. B. Nutzen, jeweiliger Optimierungen konfigurieren. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren des Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Speicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, konfiguriert.
  • Optimierungen können unter anderem Folgendes beinhalten: Bestimmen jedes Integralbildwertes unter Nutzung eines Registers, eines Zeilenpuffers und zwei zusätzlicher Operationen (z. B. zwei Addiererschaltungsanordnungen); Definieren rechteckiger, z. B. quadratischer, Probenpunktgebiete; Box-Filter-Glätten von Probenpunktgebieten; Ausnützen einer räumlichen Lokalität zwischen mehreren Merkmalspunkten; Durchführen ausgewählter arithmetischer Operationen unter Nutzen einer Zwischengleitkommapräzision; Vorhersagen einer angepassten Probenpunktposition und Sortieren von Probenpunktpaaren vor einer Deskriptorbitbestimmung. Bei manchen Ausführungsformen können Optimierungen selektives lokales Puffern („Smart-Caching“) beinhalten. Selektives lokales Puffern ist dazu konfiguriert, Integralbildwerte selektiv in einem Bildcache zur Verwendung während Merkmaldeskriptorbestimmungsoperationen zu speichern. Eine Bestimmung eines oder mehrerer Merkmaldeskriptoren kann dementsprechend optimiert werden, wie unten ausführlicher beschrieben wird.
  • 1 veranschaulicht ein funktionales Blockdiagramm eines Systems 100 einschließlich eines Bildmerkmalssystems 101 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das System 100 beinhaltet ferner eine Bilderfassungsschaltungsanordnung 160 und eine Benutzerschnittstelle 162. Die Bilderfassungsschaltungsanordnung 160 kann unter anderem eine Kamera (z. B. eine Fotokamera und/oder eine Videokamera) und/oder eine Speichervorrichtung (z. B. ein Festplattenlaufwerk, ein Festkörperlaufwerk, ein Flash-Laufwerk, ein entfernbares Speichermedium usw.) beinhalten. Die Benutzerschnittstelle 162 kann eine Benutzereingabevorrichtung (z. B. ein Tastenfeld, eine Tastatur, eine Maus, eine berührungsempfindliche Anzeige, einen Berührungsbildschirm usw.) und/oder eine Ausgabevorrichtung (z. B. eine Anzeige, einen Monitor usw.) beinhalten. Die Bilderfassungsschaltungsanordnung 160 ist dazu konfiguriert, ein Bild (z. B. eine Szene) zu erfassen und eine digitale Repräsentation des erfassten Bildes, z. B. einer Bildeingabe 161, an ein Bildmerkmalssystem 101 zu liefern. Die Benutzerschnittstelle 162 ist dazu konfiguriert, eine Auswahl und/oder einen Empfang von Konfigurationsdaten durch und/oder von einem Benutzer zu erleichtern. Die Benutzerschnittstelle 162 ist ferner dazu konfiguriert, Eingabekonfigurationsdaten 163 an das Bildmerkmalssystem 101 zu liefern. Die Benutzerschnittstelle 162 kann ferner eine Anzeigeausgabe 165 von dem Bildmerkmalssystem 101 empfangen. Die Benutzerschnittstelle 162 kann dann dazu konfiguriert sein, die Bildausgabe 165 dem Benutzer anzuzeigen.
  • Das Bildmerkmalssystem 101 ist dazu konfiguriert, Eingabekonfigurationsdaten 163 zu empfangen. Die Eingabekonfigurationsdaten 163 können unter anderem eine Merkmalsextraktionstechniktypkennung und/oder eine Anzahl an Bits in einem Merkmalsdeskriptor und/oder eine Anzahl an Probenpunkten und/oder eine Position jedes Probenpunkts und/oder eine Probenpunktgröße beinhalten. Die Probenpunktgröße steht in Zusammenhang mit einer Größe des Probenpunktgebiets, das mit jedem Probenpunkt assoziiert ist. Zum Beispiel entspricht die Probenpunktgröße für ein kreisförmiges Probenpunktgebiet einem Radius des kreisförmigen Probenpunktgebiets. Die Eingabekonfigurationsdaten 163 können ferner eine Anzahl an Paaren von Probenpunkten und Probenpunktpaare, die zur Orientierungsbestimmung ausgewählt werden, beinhalten. Die Eingabekonfigurationsdaten 163 können ferner eine Anzahl an Paaren von Probenpunkten und Probenpunktpaare, die zur Merkmalsdeskriptorbestimmung ausgewählt werden, beinhalten. Die Eingabekonfigurationsdaten 163 können ferner ein zweidimensionales Array aus Winkelwerten und assoziierten Sinusfunktionen dieser Winkelwerte, ein zweites zweidimensionales Array aus Winkelwerten und assoziierten Kosinusfunktionen dieser Winkelwerte beinhalten.
  • Dementsprechend kann die Merkmalsextraktionstechnik benutzerauswählbar sein und können Operationen der Merkmalsextraktionsschaltungsanordnung durch einen Benutzer konfigurierbar sein.
  • Das Bildmerkmalssystem 101 beinhaltet eine Prozessorschaltungsanordnung 102, eine Eingabe/Ausgabe(E/A)-Schaltungsanordnung 106, eine DMA-Schaltungsanordnung (DMA: Direct Memory Access: Direktspeicherzugriff) 107, einen Systemspeicher 108, eine Bildverarbeitungsschaltungsanordnung 110 und eine Bildverarbeitungsüberwachungsschaltungsanordnung 130. Die E/A-Schaltungsanordnung 106 kann dazu konfiguriert sein, eine Eingabe an das Bildmerkmalssystem 101 zu empfangen und eine Ausgabe (z. B. Daten) von dem Bildmerkmalssystem 101 bereitzustellen. Die E/A-Schaltungsanordnung ist dazu konfiguriert, Eingabekonfigurationsdaten 163 zu empfangen und die empfangenen Daten in z. B. dem Systemspeicher 108 zu speichern. Die E/A-Schaltungsanordnung 106 kann dazu konfiguriert sein, das erste und zweite zweidimensionale Array aus Winkelwerten und entsprechenden trigonometrischen Funktionen in dem Systemspeicher 108 zu speichern. Zum Beispiel können die Arrays als Nachschlagetabellen (LUTs: Lookup Tables), z. B. LUT_Sinus (Sin_Index) und LUT_Kosinus (Cos_Index) für Indexwerte (Sin_Index, Cos_Index) zwischen null und eins, gespeichert werden. Die E/A-Schaltungsanordnung 106 ist ferner dazu konfiguriert, das empfangene Eingabebild 161 z. B. in dem Systemspeicher 108 zu speichern. Die DMA-Schaltungsanordnung 107 ist dazu konfiguriert, DMA-Operationen zwischen dem Systemspeicher 108 und der Bildverarbeitungsschaltungsanordnung 110 zu verwalten. Der Systemspeicher 108 kann dazu konfiguriert sein, Daten und/oder einen Merkmalsdeskriptor, wie hier beschrieben, zu speichern.
  • Die Prozessorschaltungsanordnung 102 kann unter anderem einen Mehrzweckprozessor und/oder einen Spezialprozessor (z. B. eine Grafikverarbeitungseinheit, eine digitale Signalverarbeitungseinheit, eine Vektorverarbeitungseinheit usw.) und/oder einen Mikrocontroller (z. B. einen Endliche-Zustandsmaschine-Mikrocontroller) beinhalten. Die Prozessorschaltungsanordnung 102 kann eine oder mehrere Verarbeitungseinheiten, z. B. die Verarbeitungseinheit 120, und ein oder mehrere Register, z. B. das Register 124, beinhalten. Zum Beispiel kann die Prozessorschaltungsanordnung 102 einem Einzelkern- oder Mehrfachkern-Mehrzweckprozessor, wie etwa jenen, die durch Intel® Corp. bereitgestellt werden, usw. entsprechen. Bei manchen Ausführungsformen kann die Prozessorschaltungsanordnung 102 einen Bildcache 140 beinhalten.
  • Die Bildverarbeitungsschaltungsanordnung 110 beinhaltet eine Merkmalsdetektionsschaltungsanordnung 132, eine Merkmalsextraktionsschaltungsanordnung 134, eine Optimierungsschaltungsanordnung 136 und eine Merkmalsnutzungsschaltungsanordnung 138. Bei manchen Ausführungsformen kann die Merkmalsnutzungsschaltungsanordnung 138 mit der Bildverarbeitungsschaltungsanordnung 110 gekoppelt sein. Bei manchen Ausführungsformen kann die Bildverarbeitungsschaltungsanordnung 110 einen lokalen Speicher 112 beinhalten. Bei manchen Ausführungsformen kann die Bildverarbeitungsschaltungsanordnung 110 einen Bildcache 140 beinhalten.
  • Das Bildmerkmalssystem 101 kann ferner Eingabebilddaten 150 und/oder Integralbilddaten 152 und/oder Konfigurationsdaten 154 und/oder Merkmalsdaten 156 beinhalten. Das Bildmerkmalssystem 101 kann ferner einen oder mehrere Merkmalsdeskriptoren, z. B. den Merkmalsdeskriptor 158, beinhalten. Die Konfigurationsdaten 154 können dementsprechend empfangene Eingabekonfigurationsdaten 163, wie hier beschrieben, beinhalten. Zum Beispiel können die Eingabebilddaten 150, die Integralbilddaten 152, die Konfigurationsdaten 154 und/oder die Merkmalsdaten 156 in dem Systemspeicher 108 gespeichert werden. Bei einem anderen Beispiel kann wenigstens ein Teil der Eingabebilddaten 150, der Integralbilddaten 152, der Konfigurationsdaten 154 und/oder der Merkmalsdaten 156 in dem lokalen Speicher 112 gespeichert werden. Bei manchen Ausführungsformen kann wenigstens ein Teil der Integralbilddaten 152 in dem Bildcache 140 gespeichert werden. Zum Beispiel kann die E/A-Schaltungsanordnung 106 dazu konfiguriert sein, das Eingabebild 161 von der Bilderfassungsschaltungsanordnung 160 zu empfangen und die Eingabebilddaten 150 in dem Systemspeicher 108 und/oder dem lokalen Speicher 112 zu speichern. Bei einem anderen Beispiel kann die E/A-Schaltungsanordnung 106 dazu konfiguriert sein, eine Anzeigeausgabe 165 an die Benutzerschnittstelle 162 zu liefern. Die E/A-Schaltungsanordnung 106 kann dazu konfiguriert sein, die empfangenen Eingabekonfigurationsdaten 163 zu den Konfigurationsdaten 154 zu speichern.
  • Das Bildmerkmalssystem 101 ist dazu konfiguriert, die Bildeingabe 161, wie hier beschrieben, zu empfangen. Das Eingabebild 161 kann einem (z. B. zweidimensionalen) Array aus Pixelwerten entsprechen, das wenigstens einen Pixelintensitätswert beinhaltet. Jede Pixelposition kann durch zum Beispiel ein Paar von Indices identifiziert werden, das einen Spaltenindex und einen Reihenindex beinhaltet. Dementsprechend kann das Eingabebild 161 einem Array aus digitalen Werten entsprechen, wobei jeder digitale Wert eine Pixelintensität repräsentiert. Das Array aus digitalen Werten kann dann den Eingabebilddaten 150 entsprechen.
  • Die Bildverarbeitungsschaltungsanordnung 110 ist dazu konfiguriert, eine oder mehrere Bildverarbeitungsoperationen an den Eingabebilddaten 150 durchzuführen. Zum Beispiel können Bildverarbeitungsoperationen unter anderem Merkmalsdetektion, Merkmalsextraktion und/oder Merkmalsnutzung beinhalten. Merkmalsnutzung kann unter anderem Operationen beinhalten, die mit Objektklassifizierung, Objekterkennung, Mustererkennung, Verfolgung, 3-D-Rekonstruktion usw. assoziiert sind. Die durchgeführten Bildverarbeitungsoperationen können wenigstens teilweise basierend auf den Eingabekonfigurationsdaten 163 ausgewählt werden.
  • Das Bildmerkmalssystem 101 kann ferner eine Bildverarbeitungsüberwachungsschaltungsanordnung 130 beinhalten. Die Bildverarbeitungsüberwachungsschaltungsanordnung 130 kann dazu konfiguriert sein, Operationen der Bildverarbeitungsschaltungsanordnung 110, wie hier beschrieben, zu überwachen, d. h. zu verwalten. Die Bildverarbeitungsüberwachungsschaltungsanordnung 130 kann ferner dazu konfiguriert sein, eine Ausgabe (z. B. einen Merkmalsdeskriptor) der Bildverarbeitungsschaltungsanordnung 110 zu empfangen.
  • Die Merkmalsdetektionsschaltungsanordnung 132 kann dazu konfiguriert sein, ein oder mehrere Merkmale in dem Eingabebild wenigstens teilweise basierend auf den Eingabebilddaten 150 zu identifizieren. Merkmale können allgemein Ecken und/oder Kanten beinhalten. Zum Beispiel kann die Merkmalsdetektionsschaltungsanordnung 132 einer FAST-Technik (FAST: Features from Accelerated Segment Test - Merkmale aus beschleunigtem Segmenttest) (z. B. E. Rosten und T. Drummond, „Machine learning for high-speed corner detection“, veröffentlicht in Proceedings of the European Conference on Computer Vision (ECCV) in 2006) entsprechen und/oder mit dieser kompatibel sein. Bei einem anderen Beispiel kann die Merkmalsdetektionsschaltungsanordnung 132 einer AGAST-Technik (AGAST: Adaptive Generic Accelerated Segment Test - Adaptiver allgemeiner beschleunigter Segmenttest) (z. B. E. Mair et al., „Adaptive and Generic Corner Detection Based on the Accelerated Segment Test“, veröffentlicht in ECCV in 2010) entsprechen oder mit dieser kompatibel sein.
  • Die Merkmalsdaten 156, die mit jedem identifizierten Merkmal assoziiert sind, können dann durch die Bildverarbeitungsüberwachungsschaltungsanordnung 130 und/oder die Merkmalsdetektionsschaltungsanordnung 132 in dem Systemspeicher 108 und/oder dem lokalen Speicher 112 gespeichert werden. Die Merkmalsdaten 156 können unter anderem eine Merkmalserkennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhalten. Jedes identifizierte Merkmal kann einem zweidimensionalen Gebiet („Merkmalsstelle“) in den Eingabebilddaten 150 entsprechen, das ein Array aus Pixeln beinhaltet. Die Merkmalspunktposition kann einer zentralen Pixelposition der Merkmalsstelle entsprechen. Das Merkmalspunktausmaß entspricht einem Radius einer Änderung von Intensitätswerten der Pixel um einen Merkmalspunkt herum. Das Merkmalspunktausmaß definiert die Merkmalsstellengröße.
  • Die Merkmalsextraktionsschaltungsanordnung 134 ist dazu konfiguriert, einen jeweiligen Binärmerkmalsdeskriptor für jedes identifizierte Merkmal zu bestimmen. Die Merkmalsdeskriptoren können einen oder mehrere Binärwerte, z. B. Bits, beinhalten, die in Zusammenhang mit einem Vergleich ausgewählter Paare von Bildintensitäten stehen. Zum Beispiel kann die Merkmalsextraktionsschaltungsanordnung 134 einer Merkmalsextraktionstechnik entsprechen und/oder mit dieser kompatibel sein. Merkmalsextraktionstechniken können unter anderem folgende beinhalten: BRISK (z. B. S. Leutenegger et al., BRISK: Binary Robust Invariant Scalable Keypoints, 2011 IEEE (Institute of Electrical and Electronic Engineers) International Conference on Computer Vision (ICCV), veröffentlicht im Januar 2012), BRIEF (z. B. M. Calonder et al., BRIEF: Binary Robust Independent Elementary Features, Computer Vision - ECCV (European Conference on Computer Vision), veröffentlicht in 2010), ORB (Oriented Fast and Rotated BRIEF - orientiertes schnelles und rotiertes BRIEF) (z. B. E. Rublee et al., ORB: An efficient alternative to SIFT (Scale Invariant Feature Transform) oder SURF (Speed-up Robust Feature), 2011 IEEE International Conference on Computer Vision (ICCV), veröffentlicht im Januar 2012) und/oder FREAK (z. B. A. Alahi et al., FREAK: Fast Retina Keypoint, 2012 IEEE Conference on Computer Vision and Pattern Recognition, veröffentlicht im Juli 2012) usw.
  • Die Optimierungsschaltungsanordnung 136 ist dazu konfiguriert, eine Operation der Merkmalsextraktionsschaltungsanordnung 134 zu optimieren. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung 134 und/oder zum Reduzieren des Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung 134 und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung 134 verwendet wird, konfiguriert, wie unten ausführlicher beschrieben wird.
  • Die Merkmalsnutzungsschaltungsanordnung 138 ist dazu konfiguriert, einen oder mehrere Merkmalsdeskriptoren von z. B. der Merkmalsextraktionsschaltungsanordnung 134 zu empfangen. Die Merkmalsnutzungsschaltungsanordnung 138 kann dann die empfangenen Merkmalsdeskriptoren verwenden, um eine Objektklassifizierung und/oder Objekterkennung und/oder Mustererkennung und/oder Verfolgung und/oder dreidimensionale Rekonstruktion durchzuführen. Zum Beispiel kann die Merkmalsnutzungsschaltungsanordnung 138 dazu konfiguriert sein, ein oder mehrere Elemente, die in dem Eingabebild enthalten sind, wenigstens teilweise basierend auf den empfangenen Merkmalsdeskriptoren zu identifizieren. Bei einem anderen Beispiel kann die Merkmalsnutzungsschaltungsanordnung 138 dazu konfiguriert sein, ein oder mehrere Merkmale wenigstens teilweise basierend auf den Merkmalsdeskriptoren zu klassifizieren. Eine Ausgabe der Merkmalsextraktionsschaltungsanordnung 134 kann dann an die Bildverarbeitungsüberwachungsschaltungsanordnung 130 und/oder die E/A-Schaltungsanordnung 106 zur Lieferung an die Benutzerschnittstelle 162 geliefert werden.
  • Dementsprechend kann das Bildmerkmalssystem 101 ein Eingabebild 161 empfangen. Das Eingabebild 161 kann als entsprechende Eingabebilddaten 150 gespeichert werden. Die Merkmalsdetektionsschaltungsanordnung 132 kann dazu konfiguriert sein, ein oder mehrere Merkmale, z. B. Merkmalspunkte, in den Eingabebilddaten 150 zu identifizieren. Die Merkmalsextraktionsschaltungsanordnung 134 kann dazu konfiguriert sein, einen oder mehrere Merkmalsdeskriptoren wenigstens teilweise basierend auf den identifizierten Merkmalspunkten und wenigstens teilweise basierend auf einem Merkmalsausmaß zu bestimmen. Die Merkmalsnutzungsschaltungsanordnung 138 kann dann dazu konfiguriert sein, z. B. Objekterkennungsoperationen wenigstens teilweise basierend auf den Merkmalsdeskriptoren durchzuführen und eine Ausgabe bereitzustellen.
  • 2 veranschaulicht ein funktionales Blockdiagramm eines Bildverarbeitungsuntersystems 200 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das Bildverarbeitungsuntersystem 200 beinhaltet eine Merkmalsextraktionsschaltungsanordnung 202, eine Optimierungsschaltungsanordnung 204, eine Bildverarbeitungsüberwachungsschaltungsanordnung 210 und einen Systemspeicher 212. Bei manchen Ausführungsformen kann das Bildverarbeitungsuntersystem 200 ferner einen Bildcache 260 beinhalten. Bei diesen Ausführungsformen kann der Bildcache 260 in der Merkmalsextraktionsschaltungsanordnung 202 enthalten oder mit dieser gekoppelt sein. Bei manchen Ausführungsformen kann die Bildextraktionsschaltungsanordnung 202 einen lokalen Speicher 262 beinhalten. Bei diesen Ausführungsformen kann das Bildverarbeitungsuntersystem 200 einen DMA 264 beinhalten. Die Bildverarbeitungsüberwachungsschaltungsanordnung 210 entspricht der Bildverarbeitungsüberwachungsschaltungsanordnung 130, der Systemspeicher 212 entspricht dem Systemspeicher 108, der Bildcache 260 entspricht dem Bildcache 140 und der lokale Speicher entspricht dem lokalen Speicher 112 aus 1. Die Merkmalsextraktionsschaltungsanordnung 202 ist ein Beispiel für die Merkmalsextraktionsschaltungsanordnung 134 aus 1.
  • Die Merkmalsextraktionsschaltungsanordnung 202 beinhaltet eine Integralbildschaltungsanordnung 220 und/oder eine SP-Intensität-Schaltungsanordnung (SP: Sample Point - Probenpunkt) 222A und/oder eine SP-Intensität-Schaltungsanordnung 222B und/oder eine Orientierungsschaltungsanordnung 224 und/oder eine Deskriptorschaltungsanordnung 226. Bei einer Ausführungsform können die SP-Intensität-Schaltungsanordnung 222A und die SP-Intensität-Schaltungsanordnung 222B eine gleiche SP-Intensität-Schaltungsanordnung sein. Die SP-Intensität-Schaltungsanordnung 222A und die SP-Intensität-Schaltungsanordnung 222B sind zur einfachen Veranschaulichung als zwei funktionale Blöcke gezeichnet.
  • Der Systemspeicher 212 ist dazu konfiguriert, Daten 230 zu speichern. Der lokale Speicher 262 ist dazu konfiguriert, Daten 231 zu speichern. Die Daten 231 können einer Teilmenge der Daten zu 130 entsprechen oder diese sein. Elemente der Daten 230 und/oder Elemente der Daten 231 können zwischen dem lokalen Speicher 262 und dem Systemspeicher 212 durch DMA über den DMA 264 übertragen werden. Die Daten 230 und/oder die Daten 231 können die Eingabebilddaten 150 und/oder Integralbilddaten 152 und/oder Konfigurationsdaten 154 und/oder Merkmalsdaten 156 und/oder den Merkmalsdeskriptor 158 aus 1 beinhalten. Die Bildverarbeitungsüberwachungsschaltungsanordnung 210 kann dazu konfiguriert sein, Elemente der Daten 230, 231 in dem Systemspeicher 212 und/oder dem lokalen Speicher 262 zu speichern und/oder Elemente der Daten 230, 231 aus dem Systemspeicher 212 und/oder dem lokalen Speicher 262 abzurufen.
  • Die Eingabebilddaten 230 können einer digitalen Repräsentation eines Bildes entsprechen, die als zweidimensionales Array aus Pixeln (Pi,j) konfiguriert ist, wobei i einem Spalten(Horizontalrichtung)-Index entspricht und j einem Reihen(Vertikalrichtung)-Index einer Matrix der Eingabebilddaten entspricht. Jedes Pixel, Pij, kann einen Pixelintensitätswert, I(Pij), aufweisen. Ein Bereich von Pixelintensitätswerten steht in Zusammenhang mit einer Anzahl an Bit pro Pixel. Zum Beispiel ist für n Bit pro Pixel der entsprechende Bereich der Pixelintensitätswerte null bis 2n-1. Dementsprechend ist der Bereich der Intensitätswerte für 8 Intensitätsbits pro Pixel 0 bis 255.
  • Die Bildverarbeitungsüberwachungsschaltungsanordnung 210 kann dazu konfiguriert sein, Merkmalskonfigurationsdaten und/oder Steuerinformationen an die Optimierungsschaltungsanordnung zu liefern. Die Bildverarbeitungsüberwachungsschaltungsanordnung 210 kann ferner dazu konfiguriert sein, eine Antwort von der Optimierungsschaltungsanordnung 204 zu empfangen. Die Merkmalskonfigurationsdaten und/oder die Steuerinformationen können in Zusammenhang mit der Merkmalsextraktionstechnik, z. B. der Merkmalsextraktionstechnikkennung, stehen und können wenigstens teilweise auf den Eingabekonfigurationsdaten 163 basieren. Merkmalsextraktionstechniken können unter anderem FREAK, BRISK, BRIEF und ORB, wie hier beschrieben, beinhalten. Merkmalskonfigurationsdaten können unter anderem eine Probenpunktgröße, eine Probenpunktposition, Probenpunktindices für jedes Paar von Probenpunkten (wobei jedes Paar von Probenpunkten einem Deskriptorbit entspricht) und eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, beinhalten, wie unten ausführlicher beschrieben wird. Eine Probenpunktposition ist eine Position eines Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition. Eine Probenpunktposition kann dementsprechend einen Abstand (z. B. einen Radius) von dem Merkmalspunkt und eine Richtung (z. B. einen Winkel von einer Referenz auf einem Kreis, der um den Merkmalspunkt zentriert ist und einen entsprechenden Radius aufweist) beinhalten. Die Merkmalskonfigurationsdaten können eine Teilmenge der Konfigurationsdaten 154 aus 1 beinhalten.
  • Die Optimierungsschaltungsanordnung 204 ist dazu konfiguriert, die Merkmalsdaten 234 aus dem Systemspeicher 212 und/oder dem lokalen Speicher 262 abzurufen. Die Merkmalsdaten 234 können den Merkmalsdaten 156 aus 1 entsprechen. Zum Beispiel können die Merkmalsdaten 234 eine Merkmalspunktposition und ein entsprechendes Ausmaß (Merkmalspunktausmaß) für jeden Merkmalspunkt, der durch die Merkmalsdetektionsschaltungsanordnung 132 identifiziert wird, beinhalten. Das Ausmaß eines Merkmalspunkts entspricht einem Radius einer Änderung von Intensitätswerten der Pixel um einen Merkmalspunkt herum. Das Ausmaß eines Merkmalspunkts definiert die Merkmalsstellengröße. Die Optimierungsschaltungsanordnung 240 ist dazu konfiguriert, eine Probenpunktposition (d. h. einen Radius) und eine Probenpunktgröße wenigstens teilweise basierend auf dem Merkmalspunktausmaß zu skalieren (z. B. durch Multiplizieren anzupassen).
  • Die Merkmalsextraktionsschaltungsanordnung 202 und die Optimierungsschaltungsanordnung 204 können dann dazu konfiguriert sein, einen oder mehrere Merkmalsdeskriptoren, z. B. den Merkmalsdeskriptor 252, für jeden Merkmalspunkt unter Verwendung der identifizierten Merkmalsextraktionstechnik zu bestimmen.
  • Allgemein kann jeder binäre Merkmalsdeskriptor durch Vergleichen von Intensitäten einer Anzahl an Paaren von Pixeln anschließend an eine Glättungsoperation bestimmt werden. Die Glättungsoperation ist dazu konfiguriert, eine Rauschempfindlichkeit zu reduzieren. Jedes Pixel in einem Paar von Pixeln kann einem jeweiligen Probenpunkt entsprechen, der in einer Merkmalsstelle enthalten ist. Die Merkmalsstelle steht in Zusammenhang mit der Merkmalsextraktionstechnik und wird so konfiguriert, dass sie einen entsprechenden Merkmalspunkt enthält. Jeder Probenpunkt kann zu mehr als einem Paar von Pixeln beitragen, die zum Bestimmen eines Deskriptorbits verwendet werden. Jedes Bit in dem binären Merkmalsdeskriptor kann dann einer Differenz von Intensitäten zwischen Paaren geglätteter Bereiche entsprechen. Jeder geglättete Bereich ist mit einem entsprechenden Probenpunkt assoziiert und so konfiguriert, dass er diesen umgibt.
  • Die Paare von Probenpunkten können dann wenigstens teilweise basierend auf der Merkmalsextraktionstechnik ausgewählt werden. Zum Beispiel können die Probenpunkte für BRIEF und ORB zufällig in der Merkmalsstelle positioniert sein. Bei einem anderen Beispiel können die Probenpunkte für BRISK gleichmäßig auf konzentrischen Kreisen beabstandet sein, die den Merkmalspunkt umgeben. Bei einem anderen Beispiel können die Probenpunkte für die FREAK-Technik auf konzentrischen Kreisen positioniert sein, wobei eine Anzahl an Probenpunkten pro Kreis für die konzentrischen Kreise gleich ist, wobei dementsprechend die Dichte von Abtastpunkten pro Kreis mit dem Abstand von dem Zentrum abnimmt.
  • In dem Folgenden werden Operationen der Merkmalsextraktionsschaltungsanordnung 202 und der Optimierungsschaltungsanordnung 204 mit Bezug auf die FREAK-Merkmalsextraktionstechnik beschrieben. Es ist anzumerken, dass ähnliche Merkmalsextraktionsoperationen (und Optimierungen) für andere Merkmalsextraktionstechniken (z. B. BRIEF, BRISK, ORB) innerhalb des Schutzumfangs der vorliegenden Offenbarung durchgeführt werden können.
  • Anfänglich kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, zu bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert. Jeder Merkmalspunkt weist eine entsprechende Merkmalsstelle auf, die einen Bereich um den jeweiligen Merkmalspunkt begrenzt und enthält. Zum Beispiel kann die Merkmalsstelle ein Kreis sein. Bei einem anderen Beispiel kann die Merkmalsstelle ein Rechteck, z. B. ein Quadrat, sein. Bei einem anderen Beispiel kann die Merkmalsstelle mehrere Seiten, z. B. ein Hexagon, aufweisen. Eine räumliche Lokalität kann zwischen zwei Merkmalspunkten existieren, deren entsprechende Merkmalsstellen überlappen. Wie hier verwendet, entspricht „einzelne Merkmalsstelle“ einer Merkmalsstelle, die nicht mit einer anderen Merkmalsstelle überlappt, entspricht „Kompositmerkmalsstelle“ einer Kombination aus überlappenden Merkmalsstellen und entspricht „Merkmalsstelle“ ohne Kennzeichnungskriterium einer einzelnen und/oder Kompositmerkmalsstelle. Die Optimierungsschaltungsanordnung 204 kann dazu konfiguriert sein, eine Grenze einer Kompositmerkmalsstelle zu bestimmen. Eine räumliche Lokalität zwischen mehreren Merkmalspunkten kann dann durch die Optimierungsschaltungsanordnung 204 ausgenutzt werden, um Operationen der Merkmalsextraktionsschaltungsanordnung 202 für jede Kompositmerkmalsstelle zu beschleunigen, wie hier beschrieben ist.
  • Die Integralbildschaltungsanordnung 220 ist dazu konfiguriert, ein Integralbild für jede Merkmalsstelle zu bestimmen. Das Integralbild ist so konfiguriert, dass Intensitätsbestimmungen für jeden Probenpunkt erleichtert werden. Ein Integralbild kann einer zweidimensionalen Nachschlagetabelle (LUT) in der Form einer Matrix mit der gleichen Größe wie die Merkmalsstelle entsprechen. Das Integralbild erleichtert eine Bestimmung einer Intensität, die mit einem rechteckigen Bereich in der Merkmalsstelle assoziiert ist, bei einer beliebigen Position oder einem beliebigen Ausmaß unter Verwendung von vier Nachschlage- und Additions- und/oder Subtraktionsoperationen. Ein Integralbild ist eine Zwischenrepräsentation eines Teils eines Eingabebildes, z. B. einer Merkmalsstelle. Jede Position, z. B. Pixelposition, in einem Integralbild enthält eine Summe von Pixelintensitäten für Pixel oberhalb und auf der linken Seite, inklusive, der Pixelposition. Eine Summe von Pixelintensitäten eines rechteckigen Arrays aus Pixeln kann dann unter Verwendung der Integralbildpixelintensitäten der vier Eckpixel des rechteckigen Arrays bestimmt werden. Allgemein kann die Summe von Pixelintensitäten des rechteckigen Arrays dann mit zwei Additionen und einer Subtraktion der vier Eckpixel bestimmt werden.
  • Bei einer Ausführungsform kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, eine Bestimmung eines Integralbildwertes einer Merkmalsstelle, z. B. des Integralbildwertes 238, durch die Integralbildschaltungsanordnung 220 zu optimieren. Die Optimierungen beinhalten Bestimmen jeder Summe von Pixelintensitäten für die Merkmalsstelle unter Nutzung eines Zeilenpuffers, eines Registers und von zwei (statt drei) Additionsoperationen, z. B. unter Verwendung von zwei Addiererschaltungsanordnungen. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 die Integralbildschaltungsanordnung 220 dazu konfigurieren, jeden Integralbildwert unter Nutzung des Registers, des Zeilenpuffers und der zwei Additionsoperationen zu bestimmen. Eine Breite des Zeilenpuffers kann der Breite der Merkmalsstelle entsprechen. Die Optimierungen sind so konfiguriert, dass sie das Bestimmen der Integralbilder der Merkmalsstelle „on-the-fly“ erleichtern, z. B., wenn Eingabebilddaten aus dem Systemspeicher 212 abgerufen werden.
  • 3 veranschaulicht ein funktionales Blockdiagramm einer beispielhaften Integralbildschaltungsanordnung 300 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die beispielhafte Integralbildschaltungsanordnung 300 ist ein Beispiel für die Integralbildschaltungsanordnung 220 aus 2. Die beispielhafte Integralbildschaltungsanordnung 300 beinhaltet einen Zeilenpuffer 302, ein Register 306 und zwei Addierer 308, 310. Der Zeilenpuffer 302 beinhaltet mehrere Elemente, z. B. Elemente 303-0 und 303-i, die dazu konfiguriert sind, einen jeweiligen Wert, z. B. L0 bzw. Li, zu speichern.
  • Die Integralbildschaltungsanordnung 300 kann dazu konfiguriert sein, eine Eingabebildmerkmalsstelle, z. B. die Eingabebildmerkmalsstelle 236, z. B. aus dem Systemspeicher 212 oder dem lokalen Speicher 236 abzurufen. Jede Eingabebildmerkmalsstelle kann ein Array aus Pixelintegralbildwerten beinhalten. Zum Beispiel kann das Array M Spalten und N Reihen aufweisen, wobei i einem Spaltenindex entspricht und j einem Reihenindex entspricht. I(Pij) kann dann einem Pixelintensitätswert für ein Pixel Pij entsprechen und I'(Pi,j) kann dann einem Pixelintegralbildwert für ein Pixel Pij entsprechen. Der Zeilenpuffer 302 kann dann eine Größe M aufweisen und ein Pufferindex kann dem Spaltenindex i entsprechen. Dementsprechend gilt i = 0, 1,..., M-1.
  • Anfänglich kann der Zeilenpuffer 302 mit einer ersten Reihe (i = 0, 1,..., M-1; j = 0) aus Merkmalsstellenpixelintensitätswerten (I(Pi,0); i = 0, 1,..., M-1) geladen werden und kann das Register 306 auf null initialisiert werden. Dann kann für jedes Element des Zeilenpuffers 302 beginnend mit dem Element 303-0 ein entsprechender Pixelintensitätswert, I(Pi,0), zu den Inhalten, R, des Registers 306 durch z. B. eine Addiererschaltungsanordnung 308 addiert werden, um R = R + I(Pi,0) zu erhalten. Die resultierenden Inhalte, R, der Register 306 können dann zu dem Wert Li des Elements 303-i des Zeilenpuffers durch z. B. die Addiererschaltungsanordnung 310 addiert werden, um Li = I'(Pi,0) zu erhalten. Bei manchen Ausführungsformen kann I'(Pi,0) zu dem entsprechenden Integralbildwert, zum Beispiel dem Integralbildwert 238, gespeichert werden, der in den Daten 230 und/oder den Daten 231 aus 2 enthalten sein kann. Für jede anschließende Iteration kann der Zeilenpuffer 302 anfänglich die Ergebnisse einer entsprechenden vorherigen Iterationen enthalten und können die Inhalte, R, des Registers 306 auf null initialisiert werden. Die Operationen im Pseudocode (nach dem Laden des Zeilenpuffers 302 mit der ersten Reihe der Merkmalsstellenintensitätswerte (I(Pi,0); i = 0,..., M-1)) kann Folgendem entsprechen:
    Figure DE102018003483A1_0001

  • Für jede Iteration der äußeren For-Schleife (for (j = 0; j < N; j = j +1)) enthält der Zeilenpuffer 302 anfänglich die Integralbildwerte I'(Pi,j-1), i = 0,..., M-1 für eine vorherige Reihe j - 1 und enthält das Register 306 null, d. h. R = 0. Während der Operation der inneren For-Schleife sind für eine Spalte i und eine Reihe j (d. h. für das Zeilenpufferelement 303-i) der Wert R = m = 0 i 1 I ( P m , j )
    Figure DE102018003483A1_0002
    des Registers 306 und der Wert Li des Zeilenpufferelements 303-i anfänglich gleich I'(Pij-1). Nach jeder Iteration der inneren For-Schleife enthält das Register 306 m = 0 i I ( P m , j )
    Figure DE102018003483A1_0003
    und enthält das Zeilenpufferelement 303-i I'(Pi,j).
  • Dementsprechend kann eine Bestimmung des Integralbildes jeder Merkmalsstelle unter Verwendung eines Zeilenpuffers, eines Registers und zwei Addierer implementiert werden. Wieder unter Zuwendung zu 2 können die Eingabebilddaten 236 für jede Merkmalsstelle aus dem Systemspeicher 212 und/oder dem lokalen Speicher 262 abgerufen werden. Das Integralbild 238 der Merkmalsstelle kann bestimmt werden und das Integralbild 238 kann in dem Systemspeicher 212 und/oder dem lokalen Speicher 262 gespeichert werden. Bei Ausführungsformen, die einen Bildcache 260 beinhalten, können ausgewählte Integralbildwerte in dem Bildcache 260 gespeichert (z. B. gecacht) werden, wie hier beschrieben. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 die Integralbildschaltungsanordnung 220 dazu konfigurieren, einen ausgewählten Integralbildwert in dem Bildcache 260 zu speichern.
  • Die SP-Intensität-Schaltungsanordnung 222A ist dazu konfiguriert, eine Intensität für jeden Probenpunkt zu bestimmen. Der Probenpunktintensitätswert entspricht einem geglätteten Intensitätswert für ein Gebiet um den Probenpunkt herum („Probenpunktgebiet“). Eine Größe des Probenpunktgebiets kann wenigstens teilweise basierend auf einer Probenpunktgröße bestimmt werden, die in den Konfigurationsdaten enthalten ist, wie hier beschrieben ist. Der geglättete Intensitätswert kann wenigstens teilweise basierend auf Integralwerten für das Probenpunktgebiet bestimmt werden. Jede Merkmalsextraktionstechnik kann das Probenpunktgebiet als einen Radius eines Kreises definieren, der um den Probenpunkt zentriert ist, und kann dazu konfiguriert sein, eine geglättete Intensität für den entsprechenden Kreis zu bestimmen. Bei der FREAK-Merkmalsextraktionstechnik können wenigstens manche dieser Probenpunktgebiete (zum Beispiel für Probenpunkte, die auf einer selben radialen Linie und auf angrenzenden konzentrischen Kreisen positioniert sind) überlappen. Das Glätten ist dazu konfiguriert, Rauscheffekte abzuschwächen.
  • Bei einer Ausführungsform kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, eine Bestimmung von jedem Probenpunktgebietsintensitätswert zu optimieren. Zum Beispiel sind die Optimierungen so konfiguriert, dass sie Charakteristiken des Bildintegrals ausnutzen, um eine Bestimmung von Probenpunktintensitätswerten zu beschleunigen. Die Optimierungen beinhalten Definieren eines rechteckigen, z. B. quadratischen, Probenpunktgebiets für jeden Probenpunkt und Nutzen eines Box-Filters zum Glätten des quadratischen Probenpunktgebiets. Eine Dimension (z. B. Länge, Breite) des quadratischen Probenpunktgebiets steht in Zusammenhang mit einer Probenpunktgröße, die durch die Merkmalsextraktionstechnik definiert wird. Zum Beispiel können die Länge und Breite eines quadratischen Probenpunktgebiets jeweils einem Durchmesser eines kreisförmigen Probenpunktgebiets entsprechen, d. h., können zweimal die Probenpunktgröße sein.
  • Die SP-Intensität-Schaltungsanordnung 222A kann dann dazu konfiguriert sein, die Intensität jedes quadratischen Probenpunktgebiets durch Anwenden eines Box-Filters auf das quadratische Probenpunktgebiet zu glätten. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 die SP-Intensität-Schaltungsanordnung 222A dazu konfigurieren, die Intensität des rechteckigen Probenpunktgebiets unter Verwendung eines Box-Filters zu glätten. Ein Box-Filter eines quadratischen Probenpunktgebiets entspricht dem Integralwert des quadratischen Probenpunktgebiets geteilt durch eine Anzahl an Pixeln, die in dem Probenpunktgebiet enthalten sind. Eine Größe des Probenpunktgebiets und dementsprechend des Box-Filter-Bereichs steht in Zusammenhang mit der Probenpunktgröße, wie hier beschrieben.
  • Der Integralwert des quadratischen Probenpunktgebiets kann wenigstens teilweise basierend auf den entsprechenden Integralwerten der vier Pixelpositionen an den Ecken des quadratischen Probenpunktgebiets bestimmt werden. Zum Beispiel kann für ein quadratisches Probenpunktgebiet mit einem Integralwert, I'(P1), einer ersten Pixelposition (P1), die einer oberen linken Ecke entspricht, einem Integralwert, I'(P2), einer zweiten Pixelposition (P2), die einer oberen rechten Ecke entspricht, einem Integralwert, I'(P3), einer dritten Pixelposition (P3), die einer linken unteren Ecke entspricht, und einem Integralwert, I'(P4), einer vierten Pixelposition (P4), die einer unteren rechten Ecke entspricht, der Integralwert des Probenpunktgebiets als I'(P4) + I'(P1) - (I'(P2) + I'(P3)) bestimmt werden. Obere, untere, linke und rechte entsprechen einem zweidimensionalen Array (z. B. N Reihen mal M Spalten) von Integralbilddaten, wobei eine Pixelposition 0,0 einer oberen linken Ecke entspricht und eine Pixelposition M-1,N-1 einer unteren rechten Ecke des Integralbildes entspricht.
  • Dementsprechend kann Implementieren eines Box-Filters für ein quadratisches Probenpunktgebiet eine Glättung einer Probenpunktintensität für jeden Probenpunkt optimieren, z. B. beschleunigen. Mit anderen Worten beinhaltet Glätten der Probenpunktintensität zwei Additionen und eine Subtraktion unabhängig von der Größe (z. B. der Anzahl an Pixeln) des Probenpunktgebiets.
  • Jeder geglättete Probenpunktintensitätswert 240 kann dann an die Orientierungsschaltungsanordnung 224 geliefert oder aus dieser abgerufen werden. Die Orientierungsschaltungsanordnung 224 kann dann dazu konfiguriert sein, eine Orientierung der entsprechenden Merkmalsstelle wenigstens teilweise basierend auf den geglätteten Probenpunktintensitäten zu bestimmen. Zum Beispiel kann die Orientierung für die FREAK-Merkmalsextraktionstechnik bestimmt werden als: O = 1 M P O G ( I ( P O r 1 ) I ( P O r 2 ) ) P O r 1 P O r 2 P O r 1 P O r 2
    Figure DE102018003483A1_0004
    wobei G die Menge an Probenpunktpaaren ist, die zum Bestimmen einer Orientierung zu verwenden ist, M die Anzahl an Paaren in G ist, P O r i
    Figure DE102018003483A1_0005
    der zweidimensionale Vektor der räumlichen Koordinaten des Zentrums des Probenpunktgebiets ist („rezeptives Feld“ in der FREAK-Merkmalsextraktionstechnik) und I ( P O r i )
    Figure DE102018003483A1_0006
    die geglättete Intensität des entsprechenden Probenpunktgebiets ist. Dementsprechend entspricht die Orientierung, O, einem zweidimensionalen Vektor (ux, uy), der wenigstens teilweise basierend auf M Paaren von Probenpunkten bestimmt wird. Die Anzahl an ausgewählten Probenpunktpaaren und die speziellen ausgewählten Probenpunktpaare, die an der Orientierungsbestimmung beteiligt sind, können in Merkmalskonfigurationsdaten, wie hier beschrieben, enthalten sein.
  • Bei manchen Ausführungsformen kann die jeweilige Position von jedem von einem oder mehreren Probenpunkten, der/die zur Merkmalsdeskriptorbestimmung zu verwenden ist/sind, wenigstens teilweise basierend auf der bestimmten Orientierung, O, der Merkmalsstelle angepasst werden. Mit anderen Worten können ein oder mehrere Probenpunkte, die von den anfänglichen Probenpunkten verschieden sind, ausgewählt werden. Probenpunktanpassungsoperationen können zum Beispiel durch die Optimierungsschaltungsanordnung 204, die Orientierungsschaltungsanordnung 224 oder die SP-Intensität-Schaltungsanordnung 222B durchgeführt werden.
  • 4 veranschaulicht ein Beispiel 400 für eine Probenpunktanpassung basierend auf einer Orientierung gemäß einer Ausführungsform der vorliegenden Offenbarung. Das Beispiel 400 beinhaltet einen Merkmalspunkt 402 und einen Probenpunkt 404, der relativ zu dem Merkmalspunkt 402 positioniert ist. Der Probenpunkt 404 ist an einem Zentrum eines Probenpunktgebiets 405 positioniert. Das Beispiel 400 beinhaltet ferner mehrere wahrscheinliche Probenpunkte 408-1, 408-2, 408-3. Jeder wahrscheinliche Probenpunkt ist in einem Zentrum eines jeweiligen Probenpunktgebiets 410-1, 410-2, 410-3 positioniert.
  • Der Probenpunkt 404 ist bei einer Probenpunktposition positioniert, die zuvor zur Orientierungsanpassung genutzt wurde. Der wahrscheinliche Probenpunkt 408-1, der auf einem Bogen zwischen wahrscheinlichen Probenpunkten 408-2 und 308-3 positioniert ist, entspricht einem vorhergesagten Probenpunkt. Der vorhergesagte Probenpunkt 408-1 ist bei einem Rotationswinkel 406 positioniert, der einer vorhergesagten Orientierung entspricht. Die vorhergesagte Orientierung 406 entspricht einem Winkel zwischen dem Probenpunkt 402 und dem vorhergesagten Probenpunkt 408-1. Die wahrscheinlichen Probenpunkte 408-2 und 408-3 sind jeweils von dem vorhergesagten Probenpunkt 408-1 durch einen Winkel, θ, getrennt.
  • Der Winkel θ kann als tan-1 (uy/ux) definiert werden. Der Winkel θ kann genutzt werden, um eine Position eines angepassten Probenpunkts wenigstens teilweise basierend auf der Orientierung zu bestimmen. Zum Beispiel können Pij und P'k,l einer Position eines Probenpunkts vor bzw. nach einer Orientierungsanpassung entsprechen. Die Indices k und l (Spalten- und Reihenindices) des angepassten Probenpunkts können dann bestimmt werden als: k = x + ( i x ) * cos ( θ ) ( j y ) * sin ( θ )
    Figure DE102018003483A1_0007
    l = y + ( i x ) + sin ( θ ) + ( j y ) * cos ( θ ) .
    Figure DE102018003483A1_0008
  • Bei diesem Beispiel verweist der Punkt (x,y) auf die Pixelpositionen des Merkmalspunkts in dem Bild. Als eine Optimierung wird der Winkel θ möglicherweise nicht explizit bestimmt. Stattdessen können sin(θ) und cos(θ) wenigstens teilweise basierend auf dem Orientierungsvektor (Ux, Uy) und unter Nutzung einer Nachschlagetabelle (LUT) mit (Ux / Uy) als ein LUT-Index bestimmt werden, wobei Ux/Uy einem Verhältnis von Ux zu Uy entspricht. Die Größe der LUT kann beschränkt werden, während eine Genauigkeit beibehalten wird, indem sin(θ) und cos(θ) bestimmt werden als: falls ( | Ux | > | Uy | ) ,  dann Verhältnis = | Uy | / | Ux |
    Figure DE102018003483A1_0009
    ansonsten ,  Verhältnis = | Ux | / | Uy |  und
    Figure DE102018003483A1_0010
    falls ( | Ux | > | Uy | ) ,  dann
    Figure DE102018003483A1_0011
    sin ( θ ) = LUT_sin ( Verhältnis ) * Signumfunktion ( Ux )
    Figure DE102018003483A1_0012
    cos ( θ ) = LUT_cos ( Verhältnis ) * Signumfunktion ( Uy ) ansonsten ,
    Figure DE102018003483A1_0013
    sin ( θ ) = LUT_cos ( Verhältnis ) * Signumfunktion ( Ux )
    Figure DE102018003483A1_0014
    cos ( theta ) = LUT_sin ( Verhältnis ) * Signumfunktion ( Uy )
    Figure DE102018003483A1_0015
    wobei die Signumfunktion(a) definiert ist als: sign_function ( a ) = { 1   f   a l l s   a 0 1   f   a l l s   a < 0 }
    Figure DE102018003483A1_0016
    Die Werte in der LUT sind für einen Wertebereich von 0 bis 1 vorbestimmt.
  • Eine Transformation eines Probenpunkts in einen orientierungsangepassten Probenpunkt basiert wenigstens teilweise auf einer allgemeinen Rotationmatrix. Die Transformation kann dann auf eine Merkmalsextraktionstechnik angewandt werden, die einen rotationsinvarianten Merkmalsdeskriptor aufweist.
  • Falls die Probenpunkte angepasst werden, kann die SP-Intensität-Schaltungsanordnung 222B dazu konfiguriert sein, die angepassten Probenpunktpositionen und/oder die Orientierung 242 von der Orientierungsschaltungsanordnung 224 zu empfangen. Die SP-Intensität-Schaltungsanordnung 222B kann dann dazu konfiguriert sein, eine Intensität für jeden angepassten Probenpunkt zu bestimmen. Eine Bestimmung der Probenpunktintensität durch die SP-Intensität-Schaltungsanordnung 222B ist ähnlich einer Bestimmung der Probenpunktintensität durch die SP-Intensität-Schaltungsanordnung 222A, wie hier beschrieben. Bei manchen Ausführungsformen können die SP-Intensität-Schaltungsanordnung 222B und die SP-Intensität-Schaltungsanordnung 222A eine gleiche SP-Intensität-Schaltungsanordnung sein.
  • In manchen Situationen kann eine Bestimmung der Probenpunktintensität durch die SP-Intensität-Schaltungsanordnung 222B nicht in Merkmalsdeskriptorbestimmungsoperationen enthalten sein. Zum Beispiel kann eine Bestimmung der Probenpunktintensität durch die SP-Intensität-Schaltungsanordnung 222B möglicherweise nicht für ausgewählte Orientierungswerte, z. B. (einen) Orientierungswinkel von 60°, 120°, 180°, 240°, 300° und/oder 0°, durchgeführt werden. Probenpunkte können in konzentrische Kreise mit unterschiedlichen jeweiligen Radien gruppiert werden. Mehrere Probenpunkte mit einem gleichen Radius (d. h. einem gleichen Abstand von dem Merkmalspunkt) können in einem konstanten Winkelabstand, z. B. 60°, platziert werden. Falls eine bestimmte Orientierung mit dem konstanten Winkel übereinstimmt oder in Form von Vielfachen dieses Winkels ausgedrückt werden kann, wird der angepasste Probenpunkt dann mit einem ursprünglichen vorangepassten Probenpunkt zusammenfallen. Dementsprechend kann die Probenpunktintensität in diesen Situationen möglicherweise nicht durch die SP-Intensität-Schaltungsanordnung 222B bestimmt werden.
  • Dementsprechend können jeweilige geglättete Probenpunktintensitäten durch die SP-Intensität-Schaltungsanordnung 222A und/oder 222B bestimmt werden. Die geglätteten Probenpunktintensitäten 240 und/oder 244 können dann an die Deskriptorschaltungsanordnung 226 geliefert werden. Die Deskriptorschaltungsanordnung 226 ist dazu konfiguriert, einen Merkmalsdeskriptor für jeden Merkmalspunkt wenigstens teilweise basierend auf den geglätteten Probenpunktintensitäten zu bestimmen. Jedes Element des Merkmalsdeskriptors kann einem Ergebnis eines Vergleichs jeweiliger geglätteter Probenpunktintensitäten eines Paares von Probenpunkten entsprechen. Jedes Paar von Probenpunkten kann einen ersten Probenpunkt und einen zweiten Probenpunkt beinhalten. Jeder Merkmalsdeskriptor 252 kann dann in dem Systemspeicher 212 gespeichert werden.
  • Bei manchen Ausführungsformen kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, eine Menge an Probenpunktpaaren vor der Operation der Deskriptorschaltungsanordnung 226 zu sortieren. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, mehrere Paare von Probenpunktintensitätswerten gemäß einer Position eines ersten oder zweiten Probenpunkts jedes Paares zu sortieren Jedes Probenpunktpaar kann einen ersten Probenpunkt und einen zweiten Probenpunkt enthalten. Die Optimierungsschaltungsanordnung 204 kann dazu konfiguriert sein, Probenpunktpaare gemäß einer assoziierten Position jedes ersten oder jedes zweiten Probenpunkts in den Probenpunktpaaren zu clustern. Es versteht sich, dass ein Probenpunkt, z. B. ein erster Probenpunkt und/oder ein zweiter Probenpunkt, beim Bestimmen mehrerer Merkmalsdeskriptorelemente (z. B. Deskriptorbits) genutzt werden kann. Die sortierten Probenpunktpaare können dann durch z. B. die Optimierungsschaltungsanordnung 204 zu einem sortierten Deskriptorbit 250 gespeichert werden. Das Sortieren der Probenpunktpaare gemäß der Position von jedem ersten oder zweiten Probenpunkt ist so konfiguriert, dass ein Leistungsverbrauch der Merkmalsextraktionsschaltungsanordnung 202 und/oder der Deskriptorschaltungsanordnung 226 reduziert wird.
  • 5 veranschaulicht ein funktionales Blockdiagramm einer beispielhaften Deskriptorschaltungsanordnung 500 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die beispielhafte Deskriptorschaltungsanordnung 500 ist ein Beispiel für die Deskriptorschaltungsanordnung 226 aus 2. Die beispielhafte Deskriptorschaltungsanordnung 500 beinhaltet ein Array 502 aus Probenpunktintensitäten, ST-Intensität 1, SP-Intensität 2, ..., SP-Intensität N.
  • Die beispielhafte Deskriptorschaltungsanordnung 500 beinhaltet ferner einen ersten Multiplexer MUX0, einen zweiten Multiplexer MUX1, eine Indexschaltungsanordnung 504 und einen Komparator 506. Der erste Multiplexer MUX0 weist einen Ausgang 508-0 auf und der zweite Multiplexer MUX1 weist einen Ausgang 508-1 auf. Die Indexschaltungsanordnung 504 ist so konfiguriert, dass sie mehrere Paare von Indices, P0, P1, enthält, die sortiert und in einer Reihenfolge sein können. Zum Beispiel können die Indices wenigstens teilweise basierend auf einem ersten Index, P0, oder einem zweiten Index, P1, wie hier beschrieben, sortiert werden. Jeder Multiplexer MUX0, MUX1 ist mit dem Array 502 aus Probenpunktintensitäten gekoppelt.
  • Die Indexschaltungsanordnung 504 ist dazu konfiguriert, den ersten Index, P0, und den zweiten Index, P1, an den ersten Multiplexer MUX0 bzw. den zweiten Multiplexer MUX1 zu liefern. Der erste Index, P0, entspricht einem ersten Selektoreingang zu dem ersten Multiplexer MUX0. Der zweite Index, P1, entspricht einem zweiten Selektoreingang zu dem zweiten Multiplexer MUX1. Eine erste Probenpunktposition eines Paares von Probenpunktpositionen kann dementsprechend dem ersten Selektoreingang, P0, entsprechen und eine zweite Probenpunktposition des Paares von Probenpunktpositionen kann dementsprechend dem zweiten Selektoreingang, P1, entsprechen.
  • Die Ausgaben 508-0, 508-1 der Multiplexer MUX0, MUX1 werden in den Komparator 506 eingegeben und die Ausgabe des Komparators 506 entspricht einem Deskriptorbitwert 510. Die Indexschaltungsanordnung 504 ist ferner dazu konfiguriert, einen Deskriptorbitindex 511 als Ausgabe der beispielhaften Deskriptorschaltungsanordnung 500 bereitzustellen. Dementsprechend kann die beispielhafte Deskriptorschaltungsanordnung 500 dazu konfiguriert sein, einen Merkmalsdeskriptor bereitzustellen, der mehrere Deskriptorbits beinhaltet, die einen Deskriptorbitwert und einen assoziierten Deskriptorbitindex beinhalten.
  • Das Clustern der ersten Probenpunkte (oder der zweiten Probenpunkte) durch eine Probenpunktposition ist so konfiguriert, dass eine Anzahl an Wechseln des ersten Multiplexers MUX0 reduziert wird. Ein Leistungsverbrauch der beispielhaften Deskriptorschaltungsanordnung 500, der Deskriptorschaltungsanordnung 226 und/oder der Merkmalsextraktionsschaltungsanordnung 202 kann dann reduziert werden. Der reduzierte Leistungsverbrauch kann dann einer Optimierung entsprechen, die durch die Optimierungsschaltungsanordnung 204 bereitgestellt wird.
  • Wieder unter Zuwendung zu 2 kann die Merkmalsextraktionsschaltungsanordnung 202 bei manchen Ausführungsformen dazu konfiguriert sein, den Merkmalsdeskriptor 252 unter Nutzung einer Zwischengleitkommapräzision zu bestimmen. Zum Beispiel können die Integralbildschaltungsanordnung 220, die SP-Intensität-Schaltungsanordnung 222A, die Orientierungsschaltungsanordnung 224 und/oder die SP-Intensität-Schaltungsanordnung 222B dazu konfiguriert sein, ihre jeweiligen Operationen unter Nutzung der Zwischengleitkommapräzision durchzuführen. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 die Merkmalsextraktionsschaltungsanordnung 202 dazu konfigurieren, den Merkmalsdeskriptor 252 unter Nutzung einer Zwischengleitkommapräzision zu bestimmen. Wie hier verwendet, entspricht die Zwischengleitkommapräzision einer Festkommapräzision, die wenigstens teilweise auf einem entsprechenden Q-Wert basiert. Zum Beispiel kann eine Gleitkommazahl unter Verwendung eines Q-Wertes zu einer Festkommazahl umgewandelt werden. Es versteht sich, dass Festkommaoperationen, d. h. Integer-Operationen, allgemein weniger rechenintensiv sind und dementsprechend im Vergleich zu Gleitkommaoperationen relativ schneller auszuführen sind. Dementsprechend können Merkmalsextraktionsoperationen beschleunigt und/oder ein Leistungsverbrauch und/oder eine Rechenintensität reduziert werden.
  • Eine digitale Repräsentation einer Gleitkommazahl beinhaltet allgemein eine Anzahl an Mantissenbits, eine Anzahl an Exponentenbits und ein Vorzeichenbit. Der Q-Wert kann genutzt werden, um eine Gleitkommazahl in eine Festkommazahl umzuwandeln, wodurch dementsprechend arithmetische Operationen erleichtert werden. Zum Beispiel können die arithmetischen Operationen unter Verwendung von Integern durchgeführt werden. Zum Beispiel kann für eine Gleitkommazahl des Wertes float_a die entsprechende Festkommazahl int_a bestimmt werden als: int_a = ( int ) ( ( float_a * ( float ) ( 1 < < Q_Wert ) ) + 0,5 )
    Figure DE102018003483A1_0017
    wobei Q_Wert einer Anzahl an Fraktionalbits entspricht und << eine Linksverschiebung des Wertes (z. B. 1) um eine Anzahl an Bits gleich dem Q_Wert nach links von dem Verschiebungssymbol entspricht. Das Addieren von 0,5 zu dem Produkt aus float_a und (float)(1 <<: Q_Wert) ist so konfiguriert, dass statt einem Abbruch eine Rundung resultiert, wenn das Gleitkommaprodukt in einen Integralwert gewandelt wird. Das Multiplizieren der nach links verschobenen 1 (die um den Q_Wert nach links verschoben wurde) ist so konfiguriert, dass float_a mit 2Q_value skaliert wird, wodurch dementsprechend die Mantisse (z. B. eine Zahl zwischen +1 und -1) in eine entsprechende ganze Zahl umgewandelt wird.
  • Zum Beispiel kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, eine Gleitkommazahl in eine Festkommazahl umzuwandeln. Merkmalsdaten 234 können eine Merkmalspunktposition und ein entsprechendes Ausmaß beinhalten. Die Merkmalspunktposition und das entsprechende Ausmaß können durch z. B. die Merkmalsdetektionsschaltungsanordnung 132 im Gleitkommaformat bereitgestellt werden. Gleichermaßen können Konfigurationsdaten 154 (z. B. Probenpunktposition, Radius, Werte für Sinus- und Kosinus-Nachschlagetabellen) durch einen Benutzer im Gleitkommaformat bereitgestellt werden. Die Merkmalsextraktionsschaltungsanordnung 202 ist dazu konfiguriert, unter Nutzung von Festkommaoperationen z. B. eine Skalierung eines Probenpunkts basierend auf einem Merkmalspunktausmaß, Positionen von jeder der vier Ecken des Probenpunktgebiets um jeden Probenpunkt herum, sin(θ) und cos(θ) und/oder der Bestimmung von orientierungsangepassten Probenpunkten gefolgt von der Bestimmung der vier Eckpunkte des Probenpunktgebiets um jeden orientierungsangepassten Probenpunkt zu bestimmen.
  • Ein ausgewählter Q-Wert kann separat, z. B. unabhängig, für jede Eingabe und/oder jede Ausgabe in jeder Operation (z. B. durch empirische Berechnung und/oder Experimente) vordefiniert werden.
  • Zum Beispiel kann eine Festkommarepräsentation einer Variablen als (v, q) definiert werden, wobei v ein Integer-Wert und q ein vordefinierter Q-Wert ist. Die Festkommarepräsentation ist äquivalent zu einer Gleitkommarepräsentation von v × 2-q. Eine Festkomma-Addition/Subtraktion-Operation kann dann durchgeführt werden als: ( v , q ) = ( ( v 1 > > ( q1 1 ) ) ± ( v 2 > > ( q2 q ) ) , q )
    Figure DE102018003483A1_0018
    wobei (v, q) einen Ausgabeoperanden repräsentiert, (v1, q1) einen ersten Eingabeoperanden repräsentiert und (v2, q2) einen zweiten Eingabeoperanden repräsentiert. Gleichermaßen kann eine Multiplikationsoperation durchgeführt werden als: ( v , q ) = ( ( v 1 * v 2 ) ) > > ( q1 + q2 q ) , q
    Figure DE102018003483A1_0019
    und kann eine Divisionsoperation durchgeführt werden als: ( v , q ) = ( ( ( v 1 < < ( q + q2 q1 ) ) /v 2 ) , q ) .
    Figure DE102018003483A1_0020
  • Ein Festkommaergebnis, int_b, der arithmetischen Festkommaoperationen kann anschließend an die arithmetischen Festkommaoperationen zurück in einen entsprechenden Gleitkommawert umgewandelt werden als: float_b = ( float ) int_b/ ( float ) ( 1 < < Q_Wert ) .
    Figure DE102018003483A1_0021
  • Bei manchen Ausführungsformen können die Eingabekonfigurationsdaten 163 und/oder die Merkmalskonfigurationsdaten 232 einen Q-Wert, eine Anzahl an Mantissenbits und/oder eine Genauigkeit beinhalten. Der Q-Wert, die Anzahl an Mantissenbits und die Genauigkeit können mit einer ausgewählten Operation und/oder Gruppe von Operationen assoziiert sein. Zum Beispiel können die Konfigurationsdaten einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhalten, die mit jeder Operation der Merkmalsextraktionsschaltungsanordnung 202 assoziiert sind. Bei einem anderen Beispiel können die Konfigurationsdaten einen Q-Wert und eine Anzahl an Mantissenbits beinhalten, die mit einer Gruppe von Operationen assoziiert sind, die dazu konfiguriert sind, eine Genauigkeit zu erreichen, die mit den Merkmalsdeskriptor assoziiert ist. Dementsprechend kann die Genauigkeit mit den Operationen der Merkmalsextraktionsschaltungsanordnung 202, wie hier beschrieben, assoziiert sein.
  • Dementsprechend kann eine Zwischengleitkommapräzision unter Nutzung eines Q-Werts zum Umwandeln einer Gleitkommazahl in eine Festkommazahl genutzt werden, um wenigstens manche arithmetischen Operationen zu beschleunigen, während eine Zielgenauigkeit beibehalten wird. Mit anderen Worten unterstützt eine Umwandlung von einer Gleitkommazahl zu einer Festkommazahl (mit vordefiniertem Q-Wert) das Ersetzen von Gleitkommaoperationen mit Integer-Operationen mit einer entsprechenden Bitpräzision. Dementsprechend können Operationen der Merkmalsextraktionsschaltungsanordnung 202 beschleunigt werden, kann ein Leistungsverbrauch reduziert werden und/oder kann bei manchen Ausführungsformen eine Größe (z. B. Siliciumfläche) der Merkmalsextraktionsschaltungsanordnung 202 reduziert werden. Das Nutzen einer Zwischengleitkommapräzision kann dementsprechend einer Optimierung der Merkmalsextraktionsschaltungsanordnung, z. B. der Merkmalsextraktionsschaltungsanordnung 202, wie hier beschrieben, entsprechen.
  • Bei manchen Ausführungsformen kann ein Bildcache, z. B. der Bildcache 140 aus 1 und/oder der Bildcache 260 aus 2, in dem Bildmerkmalssystem 101 und/oder dem Bildverarbeitungsuntersystem 200, wie hier beschrieben, enthalten sein. Der Bildcache 140, 260 ist dazu konfiguriert, eine lokale temporäre Speicherung für die Merkmalsextraktionsschaltungsanordnung 134 und/oder 202 bereitzustellen. Die Nutzung des Bildcaches 140, 260 ist so konfiguriert, dass eine Anzahl an Zugriffe auf den Systemspeicher 108, 212 und eine entsprechende Speicherbandbreitennutzung durch die Merkmalsextraktionsschaltungsanordnung während Merkmalsextraktionsoperationen, wie hier beschrieben, reduziert wird.
  • Die Optimierungsschaltungsanordnung 204 und/oder Elemente der Merkmalsextraktionsschaltungsanordnung 202 können dazu konfiguriert sein, Elemente eines Integralbildes 238 selektiv in dem Bildcache 260 zu speichern. Wie hier verwendet, entspricht „Smart-Caching“ dem selektiven Speichern von Elementen eines Integralbildes in dem Bildcache 260. Während einer Operation der Merkmalsextraktionsschaltungsanordnung 202 kann der Zielintegralbildpixelwert, falls es einen Verlust des Bildcaches 260 gibt, aus dem Systemspeicher 212 abgerufen werden. Die selektiv gespeicherten Integralbildelemente können eine Menge von Integralbildwerten beinhalten, die mit Eckpixeln eines rechteckigen Probenpunktgebiets assoziiert sind. Bei manchen Ausführungsformen kann eine jeweilige Menge von Integralbildwerten für jedes rechteckige Probenpunktgebiet gespeichert werden, das in der Merkmalsstelle enthalten ist. Bei manchen Ausführungsformen kann eine jeweilige Menge von Integralbildwerten für Probenpunktgebiete gespeichert werden, die mit Probenpunkten assoziiert sind, die in Orientierungsbestimmungsoperationen enthalten sind.
  • Bei manchen Ausführungsformen kann eine jeweilige Menge von Integralbildwerten für ausgewählte Probenpunkte gespeichert werden. Bei einem Beispiel können die Probenpunkte wenigstens teilweise basierend auf einer jeweiligen Position jedes Probenpunkts ausgewählt werden. Mengen von Integralbildwerten können für Probenpunkte gespeichert werden, die in der Merkmalsstelle enthalten sind. Integralbildwerte für Pixel, die nicht in der Merkmalsstelle enthalten sind, werden möglicherweise nicht gespeichert.
  • Bei einem anderen Beispiel können die Probenpunkte wenigstens teilweise basierend auf einer Vorhersage ausgewählt werden. Zum Beispiel kann die Optimierungsschaltungsanordnung 204 dazu konfiguriert sein, eine angepasste Probenpunktposition vorherzusagen. Die Vorhersage kann wenigstens teilweise auf einer Orientierung (z. B. einem Rotationswinkel) eines angrenzenden Merkmalspunkts und/oder auf einer Vorhersagetechnik basieren.
  • Bei einem Beispiel kann die Orientierung für einen Merkmalspunkt wenigstens teilweise basierend auf einer räumlichen Lokalität vorhergesagt werden. Zum Beispiel kann bestimmt werden, ob ein zuvor bestimmter Merkmalspunkt in einer Nähe eines momentanen Merkmalspunkts existiert. Falls ein solcher zuvor bestimmter Merkmalspunkt existiert, kann der momentane Merkmalspunkt die Orientierung des zuvor bestimmten Merkmalspunkts als eine vorhergesagte Orientierung übernehmen. Bei einem anderen Beispiel kann, falls mehrere zuvor bestimmte Merkmalspunkte in der Nähe des momentanen Merkmalspunkts existieren, ein Durchschnitt der jeweiligen Orientierungen der zuvor bestimmten Merkmalspunkte als Prädiktor der Orientierung des momentanen Merkmalspunkts genutzt werden.
  • Bei einem anderen Beispiel kann eine jeweilige räumliche Ableitung eines Bildes (Pixelintensität) bei einem Merkmalspunkt in sowohl einer horizontalen (Spalten-) als auch einer vertikalen (Reihen-) Richtung bestimmt werden. Eine Schätzung für eine Orientierung O (Ux, Uy) kann dann als Ux = Bildableitung in der horizontalen Richtung, Uy = Bildableitungen in der vertikalen Richtung vorhergesagt werden.
  • Dementsprechend kann ausgewähltes Speichern von Elementen eines Integralbildes in dem Bildcache 260 eine Optimierungsoperation der Merkmalsextraktionsschaltungsanordnung 202 erleichtern. Zum Beispiel kann eine Operation der Merkmalsextraktionsschaltungsanordnung 202 beschleunigt werden. Bei einem anderen Beispiel kann eine Anzahl an Zugriffen auf den Systemspeicher 212 reduziert werden.
  • 6 ist ein Flussdiagramm von Merkmalsextraktionsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. Insbesondere veranschaulicht das Flussdiagramm 600 das Bestimmen eines Merkmalsdeskriptors. Die Operationen können zum Beispiel durch die Merkmalsextraktionsschaltungsanordnung 134 und/oder die Optimierungsschaltungsanordnung 136 aus 1 und/oder Elemente der Merkmalsextraktionsschaltungsanordnung 202 und/oder der Optimierungsschaltungsanordnung 204 aus 2 durchgeführt werden.
  • Operationen dieser Ausführungsform können mit Empfangen von Eingabebilddaten bei Operation 602 beginnen. Operation 604 kann Empfangen von Konfigurationsdaten beinhalten. Paare von Probenpunkten können wenigstens teilweise basierend auf einem jeweiligen ersten oder zweiten Probenpunktindex jedes Probenpunktpaars bei Operation 605 sortiert werden. Operation 606 kann Empfangen von Merkmalsdaten für wenigstens ein Merkmal beinhalten. Merkmalsdaten für jedes Merkmal können eine Merkmalspunktpositionskennung und ein entsprechendes Ausmaß beinhalten. Operation 607 beinhaltet Umwandeln von Merkmalsdaten und Konfigurationsdaten zu Festkomma. Operation 608 kann Bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, beinhalten. Falls keine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, kann eine Grenze einer Kompositmerkmalsstelle bei Operation 610 bestimmt werden. Der Programmfluss kann dann zu Operation 612 übergehen. Falls keine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, kann der Programmfluss dann zu Operation 612 übergehen.
  • Operation 612 kann Bestimmen eines Integralbilds für jede Merkmalsstelle beinhalten. Bei manchen Ausführungsformen können bei Operation 614 Integralbildwerte in einem Bildcache gespeichert werden. Eine Probenpunktintensität für jeden Probenpunkt in einer ausgewählten Merkmalsstelle kann unter Nutzung quadratischer Probenpunktgebiete und eines Box-Filters bei Operation 616 bestimmt werden. Eine Orientierung jedes Merkmalspunkts kann bei Operation 618 bestimmt werden. Eine Probenpunktintensität für einen angepassten Probenpunkt kann bei Operation 620 bestimmt werden. Der Probenpunkt kann wenigstens teilweise basierend auf der Orientierung angepasst werden. Bei einer Ausführungsform kann eine angepasste Probenpunktposition vorhergesagt werden, wie hier beschrieben ist. Operation 624 kann Bestimmen eines Deskriptorbits für jedes Paar von Probenpunktintensitäten beinhalten. Ein Merkmalsdeskriptor kann bei Operation 626 ausgegeben werden. Der Programmfluss kann bei Operation 628 fortfahren.
  • Dementsprechend kann ein Merkmalsdeskriptor bestimmt werden und können ein oder mehrere Operationen der Merkmalsextraktionsschaltungsanordnung durch die Optimierungsschaltungsanordnung optimiert werden.
  • 7 ist ein Flussdiagramm von Bildintegralwertbestimmungsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. Insbesondere veranschaulicht das Flussdiagramm 700 Bestimmen eines Bildintegralwerts unter Nutzung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen. Die Operationen können zum Beispiel durch die Merkmalsextraktionsschaltungsanordnung 134 und/oder die Optimierungsschaltungsanordnung 136 aus 1, die Integralbildschaltungsanordnung 120 und/oder die Optimierungsschaltungsanordnung 204 aus 2 und oder die beispielhafte Integralbildschaltungsanordnung aus 3 durchgeführt werden.
  • Operationen dieser Ausführungsform können bei Operation 702 mit Initialisieren von Inhalten, R, eines Registers auf null beginnen. Ein Zeilenpuffer kann bei Operation 704 initialisiert werden. Zum Beispiel kann der Zeilenpuffer mit einer ersten Reihe von Merkmalsstellenintensitätswerten geladen werden. Die Merkmalsstelle kann N Reihen und M Spalten beinhalten. Ein Reihenindex, j, kann bei Operation 706 auf null eingestellt werden. Ein Spaltenindex, i, kann bei Operation 708 auf null eingestellt werden. Die Registerinhalte, R, können bei Operation 710 auf null initialisiert werden. Eine Intensität I(Pi,j) eines Pixels Pij kann dann bei Operation 712 zu R in dem Register addiert werden. Die Inhalte des Registers, R, können zu dem Wert, Li, der in der i-ten Zeilenpufferposition enthalten ist, bei Operation 714 addiert werden. Der Wert, Li, der in der i-ten Zeilenpufferposition enthalten ist, kann bei Operation 716 in einem Integralbildarray gespeichert werden. Der Spaltenindex, i, kann bei Operation 718 erhöht werden. Bei Operation 720 kann bestimmt werden, ob der Spaltenindex, i, gleich der Anzahl an Spalten, M, ist. Falls der Spaltenindex, i, nicht gleich der Anzahl an Spalten, M, ist, kann der Programmfluss dann zu Operation 712 übergehen. Falls der Spaltenindex, i, gleich der Anzahl an Spalten, M, ist, kann der Reihenindex, j, bei Operation 722 erhöht werden. Bei Operation 724 kann bestimmt werden, ob der Reihenindex, j, gleich der Anzahl an Reihen, N, ist. Falls der Reihenindex, j, nicht gleich der Anzahl an Reihen, N, ist, kann der Programmfluss zu Operation 710 übergehen. Falls der Reihenindex, j, gleich der Anzahl an Reihen, N, ist, kann der Programmfluss mit Operation 726 fortfahren.
  • Dementsprechend kann ein Bildintegralwert unter Nutzung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen bestimmt werden.
  • Während die Flussdiagramme aus 6 und 7 Operationen gemäß verschiedenen Ausführungsformen veranschaulichen, versteht es sich, dass nicht alle der Operationen, die in 6 und 7 dargestellt sind, für andere Ausführungsformen notwendig sind. Außerdem ist es hier vollständig beabsichtigt, dass bei anderen Ausführungsformen der vorliegenden Offenbarung die in 6 und/oder 7 dargestellten Operationen und/oder andere hier beschriebene Operationen auf eine nicht speziell in beliebigen der Zeichnungen gezeigte Weise kombiniert werden können und dass solche Ausführungsformen weniger oder mehr Operationen beinhalten können, als in 6 und 7 veranschaulicht sind. Dementsprechend werden Ansprüche, die sich auf Merkmale und/oder Operationen beziehen, die in einer Zeichnung nicht exakt gezeigt sind, als innerhalb des Schutzumfang liegend und als Inhalt der vorliegenden Offenbarung betrachtet.
  • Wie hier bei einer beliebigen Ausführungsform verwendet, kann der Begriff „Logik“ auf eine App, Software, Firmware und/oder Schaltungsanordnung verweisen, die dazu konfiguriert ist, beliebige der zuvor genannten Operationen durchzuführen. Software kann als ein Softwarepaket, Code, Befehle, Befehlssätze und/oder Daten, das/der/die auf einem nichtflüchtigen computerlesbaren Speichermedium aufgezeichnet ist/sind, umgesetzt werden. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten das/der die in Speichervorrichtungen festcodiert (z. B. nichtflüchtig) sind, umgesetzt werden.
  • Die Figuren unten stellen beispielhafte Architekturen und Systeme zum Implementieren von Ausführungsformen des Obigen ausführlich dar. Bei manchen Ausführungsformen werden ein/e oder mehrere Hardwarekomponenten und/oder Befehle, die oben beschrieben sind, emuliert, wie unten ausführlich beschrieben ist, oder als Softwaremodule implementiert.
  • Beispielhafte Registerarchitektur
  • 8 ist ein Blockdiagramm einer Registerarchitektur 800 gemäß einer Ausführungsform der Erfindung. Bei der veranschaulichten Ausführungsform gibt es 32 Vektorregister 810, die 512 Bit breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bit niedriger Ordnung der unteren 16 zmm-Register werden auf Register ymm0-16 überlagert. Die 128 Bit niedriger Ordnung der unteren 16 zmm-Register (die 128 Bit niedriger Ordnung der ymm-Register) werden auf Register xmm0-15 überlagert.
  • Skalare Operationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen höherer Ordnung werden in Abhängigkeit von der Ausführungsform entweder so belassen, wie sie vor dem Befehl waren, oder genullt.
  • Schreibmaskenregister 815 - bei der veranschaulichten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), jeweils mit einer Größe von 64 Bit. Bei einer alternativen Ausführungsform weisen die Schreibmaskenregister 815 eine Größe von 16 Bit auf. Bei einer Ausführungsform der Erfindung kann das Vektormaskenregister k0 nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt sie eine festverdrahtete Schreibmaske von 0×FFFF aus, wodurch eine Schreibmaskierung für diesen Befehl effektiv deaktiviert wird.
  • Mehrzweckregister 825 - bei der veranschaulichten Ausführungsform gibt es sechzehn 64-Bit-Mehrzweckregister, die zusammen mit den existierenden x86-Adressierungsmodi zum Adressieren von Speicheroperanden verwendet werden. Diese Register sind durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalar-Gleitkomma-Stapel-Registerbank (x87-Stapel) 845, auf der die MMX-gepackte-Integer-Flat-Registerbank 850 zugwiesen wird - bei der veranschaulichten Ausführungsform ist der x87-Stapel ein Acht-Element-Stapel, der verwendet wird, um skalare Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung auszuführen; dagegen werden die MMX-Register verwendet, um Operationen an 64-Bit-gepackten-Integerdaten durchzuführen sowie um Operanden für manche Operationen zu halten, die zwischen MMX- und XMM-Registern durchgeführt werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmälere Register verwenden. Außerdem können alternative Ausführungsformen der Erfindung mehr, weniger oder unterschiedliche Registerbänke und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf verschiedene Arten, für verschiedene Zwecke und in unterschiedlichen Prozessoren implementiert werden. Beispielsweise können Implementierungen solcher Kerne Folgendes beinhalten: 1) einen Mehrzweck-in-Reihenfolge-Kern, der für eine Mehrzweckberechnung bestimmt ist; 2) einen Hochleistungs-Mehrzweck-außer-Reihenfolge-Kern, der für eine Mehrzweckberechnung bestimmt ist; 3) einen Spezialkern, der primär für Grafik und/oder wissenschaftliche (Durchsatz) Berechnung bestimmt ist. Implementierungen unterschiedlicher Prozessoren können Folgendes beinhalten: 1) eine CPU einschließlich eines oder mehrerer Mehrzweck-in-Reihenfolge-Kerne, die für eine Mehrzweckberechnung bestimmt sind, und/oder eines oder mehrerer Mehrzweck-außer-Reihenfolge-Kerne, die für eine Mehrzweckberechnung bestimmt sind; und 2) einen Koprozessor, der einen oder mehrere Spezialkerne beinhaltet, die primär für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes beinhalten können: 1) den Koprozessor auf einem von der CPU getrennten Chip; 2) den Koprozessor auf einem getrennten Die in demselben Gehäuse wie eine CPU; 3) den Koprozessor auf demselben Die wie eine CPU (wobei in diesem Fall ein solcher Koprozessor manchmal als Speziallogik, wie etwa integrierte Grafik- und/oder Wissenschaft(Durchsatz)-Logik oder als Spezialkerne bezeichnet wird); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als der/die Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionalität beinhalten kann. Beispielhafte Kernarchitekturen sind als Nächstes beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-Reihenfolge- und Außer-Reihenfolge-Kern-Blockdiagramm
  • 9A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Reihenfolge-Pipeline als auch eine beispielhafte Registerumbenennung-außer-Reihenfolge-Ausgabe/Ausführung-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 9B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel für einen In-Reihenfolge-Architektur-Kern als auch einen beispielhaften Registerumbenennung-außer-Reihenfolge-Ausgabe/Ausführung-Architektur-Kern, der in einem Prozessor aufzunehmen ist, gemäß Ausführungsformen der Erfindung veranschaulicht. Die Kästen mit durchgezogenen Linien in 9A-9B veranschaulichen die In-Reihenfolge-Pipeline und den In-Reihenfolge-Kern, während die optionale Hinzufügung der Kästen mit gestrichelter Linie die Registerumbenennung-Außer-Reihenfolge-Ausgabe/Ausführung-Pipeline und den -Kern veranschaulichen. Unter der Annahme, dass der In-Reihenfolge-Aspekt eine Teilmenge des Außer-Reihenfolge-Aspekts ist, wird der Außer-Reihenfolge-Aspekt beschrieben.
  • In 9A beinhaltet eine Prozessor-Pipeline 900 eine Abrufstufe 902, eine Längendecodierungsstufe 904, eine Decodierungsstufe 906, eine Zuordnungsstufe 908, eine Umbenennungsstufe 910, eine Planungsstufe 912 (auch als Dispatch- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 914, eine Ausführungsstufe 916, eine Rückschreib-/Speicherschreibstufe 918, eine Fehlerbehandlungsstufe 922 und eine Bestätigungsstufe 924.
  • 9B zeigt einen Prozessorkern 990 einschließlich einer Frontend-Einheit 930, die mit einer Ausführung-Engine-Einheit 950 gekoppelt ist, und beide sind mit einer Speichereinheit 970 gekoppelt. Der Kern 990 kann ein RISC-Kern (RISC: Reduced Instruction Set Computing - Berechnung mit reduziertem Befehlssatz), ein CISC-Kern (CISC: Complex Instruction Set Computing - Berechnung mit komplexem Befehlssatz), ein VLIW-Kern (VLIW: Very Long Instruction Word - sehr langes Befehlswort) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 990 ein Spezialkern, wie etwa zum Beispiel ein Netz- oder Kommunikationskern, eine Kompression-Engine, ein Koprozessorkern, ein GPGPU-Kern (GPGPU: General Purpose Computing Graphics Processing Unit - Vielzweck-Berechnung-Grafikverarbeitung-Einheit) oder dergleichen sein.
  • Die Frontend-Einheit 930 beinhaltet eine Zweigprädiktionseinheit 932, die mit einer Befehlscacheeinheit 934 gekoppelt ist, die mit einem Übersetzungspuffer (TLB: Translation Lookaside Buffer) 936 gekoppelt ist, der mit einer Befehlsabrufeinheit 938 gekoppelt ist, die mit einer Decodierungseinheit 940 gekoppelt ist. Die Decodierungseinheit 940 (oder der Decoder) kann Befehle decodieren und ein/e/n oder mehrere Mikrooperationen, Mikrocodeeintragspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale, die aus den ursprünglichen Befehlen decodiert wurden oder diese anderweitig reflektieren oder anderweitig von diesen abgeleitet sind, als eine Ausgabe erzeugen. Die Decodierungseinheit 940 kann unter Verwendung zahlreicher verschiedener Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten unter anderem Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Nurlesespeicher (ROMs) usw. Bei einer Ausführungsform beinhaltet der Kern 990 einen Mikrocode-ROM oder ein anderes Medium, das einen Mikrocode für gewisse Makrobefehle speichert (z. B. in der Decodierungseinheit 940 oder anderweitig innerhalb der Frontend-Einheit 930). Die Decodierungseinheit 940 ist mit einer Umbenennung/Zuordnung-Einheit 952 in der Ausführung-Engine-Einheit 950 gekoppelt.
  • Die Ausführung-Engine-Einheit 950 beinhaltet die Umbenennung/Zuordnung-Einheit 952, die mit einer Zurückzieheinheit 954 und einem Satz aus einer oder mehreren Planereinheit(en) 956 gekoppelt ist. Die Planereinheit(en) 956 repräsentiert eine beliebige Anzahl unterschiedlicher Planer, einschließlich Reservierungsstationen, eines zentralen Befehlsfensters usw. Die Planereinheit(en) 956 ist mit der (den) physischen Registerbank(en)einheit(en) 958 gekoppelt. Jede der physischen Registerbank(en)einheiten 958 repräsentiert eine oder mehrere physische Registerbanken, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie etwa skalarer Integer, skalares Gleitkomma, gepackter Integer, gepacktes Gleitkomma, Vektorinteger, Vektorgleitkomma, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. Bei einer Ausführungsform umfasst die physische Registerbank(en)einheit 958 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Mehrzweckregister bereitstellen. Die physische(n) Registerbank(en)einheit(en) 958 ist durch die Zurückzieheinheit 954 überlappt, um verschiedene Wege zu veranschaulichen, auf die eine Registerumbenennung und Außer-Reihenfolge-Ausführung implementiert werden können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Zurückziehregisterbanken; unter Verwendung einer oder mehrerer zukünftiger Registerbanken, eines oder mehrerer vergangene Puffer und einer oder mehrerer Zurückziehregisterbanken unter Verwendung einer Registerabbildung und eines Pools von Registern usw.). Die Zurückzieheinheit 954 und die physische(n) Registerbank(en)einheit(en) 958 sind mit dem (den) Ausführungscluster(n) 960 gekoppelt. Das/die Ausführungscluster 960 beinhaltet/beinhalten einen Satz aus einer oder mehreren Ausführungseinheiten 962 und einen Satz aus einer oder mehreren Speicherzugriffseinheiten 964. Die Ausführungseinheiten 962 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Typen von Daten (z. B. Skalargleitkomma, gepackter Integer, gepacktes Gleitkomma, Vektorinteger, Vektorgleitkomma) durchführen. Während manche Ausführungsformen eine Anzahl an Ausführungseinheiten beinhalten können, die für spezielle Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle Funktionen durchführen, beinhalten. Die Planereinheit(en) 956, die physische(n) Registerbank(en)einheit(en) 958 und das (die) Ausführungscluster 960 sind als möglicherweise mehrere gezeigt, weil gewisse Ausführungsformen getrennte Pipelines für gewisse Typen von Daten/Operationen erschaffen (z. B. eine Skalarinteger-Pipeline, eine Skalargleitkomma-/Gepackter-Integer-/Gepacktes-Gleitkomma-/Vektorinteger-/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriff-Pipeline, die jeweils ihre/n eigene/n Planereinheit, physische Registerbank(en)einheit und/oder Ausführungscluster aufweisen - und im Fall einer getrennten Speicherzugriff-Pipeline sind gewisse Ausführungsformen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 964 aufweist). Es versteht sich auch, dass, wenn getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines eine Außer-Reihenfolge-Ausgabe/Ausführung und der Rest In-Reihenfolge sein können.
  • Der Satz von Speicherzugriffseinheiten 964 ist mit der Speichereinheit 970 gekoppelt, die eine Daten-TLB-Einheit 972 beinhaltet, die mit einer Datencacheeinheit 974 gekoppelt ist, die mit einer Level-2(L2)-Cache-Einheit 976 gekoppelt ist. Bei einem Ausführungsbeispiel können die Speicherzugriffseinheiten 964 eine Ladeeinheit, eine Adressenspeichereinheit und eine Datenspeichereinheit beinhalten, von denen jede mit der Daten-TLB-Einheit 972 in der Speichereinheit 970 gekoppelt ist. Die Befehlscacheeinheit 934 ist ferner mit einer Level-2(L2)-Cache-Einheit 976 in der Speichereinheit 970 gekoppelt. Die L2-Cache-Einheit 976 ist mit einem oder mehreren anderen Leveln eines Caches und schlussendlich mit einem Hauptspeicher verbunden.
  • Beispielsweise kann die beispielhafte Registerumbenennung-Außer-Reihenfolge-Ausgabe/Ausführung-Kern-Archtitektur die Pipeline 900 wie folgt implementierten: 1) Der Befehlsabruf 938 fuhrt die Abruf- und Längendecodierungsstufen 902 und 904 durch; 2) die Decodierungseinheit 940 führt die Decodierungsstufe 906 durch; 3) die Umbenennung/Zuordnung-Einheit 952 führt die Zuordnungsstufe 908 und die Umbenennungsstufe 910 durch; 4) die Planereinheit(en) 956 führt die Planungsstufe 912 durch; 5) die physische(n) Registerbank(en)einheit(en) 958 und die Speichereinheit 970 führen die Registerlese-/Speicherlesestufe 914 durch; das Ausführungscluster 960 führt die Ausführungsstufe 916 durch; 6) die Speichereinheit 970 und die physische(n) Registerbank(en)einheit(en) 958 führen die Rückschreib-/Speicherschreibstufe 918 durch; 7) verschiedene Einheiten können bei der Fehlerbehandlungsstufe 922 beteiligt sein; und 8) die Zurückzieheinheit 954 und die physische(n) Registerbank(en)einheit(en) 958 führen die Bestätigungsstufe 924 durch.
  • Der Kern 990 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit manchen Erweiterungen, die zu neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA, USA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON) von ARM Holdings in Sunnyvale, CA, USA), einschließlich des/der hier beschriebenen Befehls/Befehle, unterstützen. Bei einer Ausführungsform beinhaltet der Kern 990 eine Logik zum Unterstützen einer Gepackte-Daten-Befehlssatzerweiterung (z. B. AVX1, AVX2), wodurch ermöglicht wird, dass die Operationen, die durch viele Multimediaanwendungen verwendet werden, unter Verwendung gepackter Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und simultanes Multithreading danach, wie etwa bei der Hyperthreading-Technologie von Intel®).
  • Während eine Registerumbenennung in dem Zusammenhang einer Außer-Reihenfolge-Ausführung beschrieben ist, versteht es sich, dass eine Registerumbenennung in einer In-Reihenfolge-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch getrennte Befehls- und Datencacheeinheiten 934/974 und eine geteilte L2-Cache-Einheit 976 beinhaltet, können alternative Ausführungsformen einen einzigen internen Cache für sowohl Befehle als auch Daten aufweisen, wie etwa zum Beispiel einen internen Level-1(L1)-Cache oder mehrere Level eines internen Caches. Bei manchen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches, der extern zu dem Kern und/oder dem Prozessor ist, beinhalten. Alternativ dazu kann der gesamte Cache extern zu dem Kern und/oder dem Prozessor sein.
  • Spezielle beispielhafte In-Reihenfolge-Kernarchitektur
  • 10A-B veranschaulichen ein Blockdiagramm einer spezielleren beispielhaften In-Reihenfolge-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder unterschiedlicher Typen) in einem Chip wäre. Die Logikblöcke kommunizieren durch ein Zwischenverbindungsnetz mit hoher Bandbreite (z. B. ein Ringnetz) mit, in Abhängigkeit von der Anwendung, einer festen Funktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik.
  • 10A ist ein Blockdiagramm eines Einzelprozessorkerns zusammen mit seiner Verbindung zu dem On-Die-Verknüpfungsnetz 1002 und mit seinem lokalen Untersatz des Level-2(L2)-Caches 1004 gemäß Ausführungsformen der Erfindung. Bei einer Ausführungsform unterstützt ein Befehlsdecoder 1000 den x86-Befehlssatz mit einer Gepackte-Daten-Befehlssatzerweiterung. Ein L1-Cache 1006 ermöglicht Zugriffe mit geringer Latenz auf einen Cachespeicher in die Skalar- und Vektoreinheiten. Während bei einer Ausführungsform (um die Gestaltung zu vereinfachen) eine Skalareinheit 1008 und eine Vektoreinheit 1010 getrennte Registersätze verwenden (Skalarregister 1012 bzw. Vektorregister 1014) und Daten, die zwischen ihnen übertragen werden, in einen Speicher geschrieben werden und dann aus einem Level-1(L1)-Cache 1006 zurück eingelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (z. B. einen einzigen Registersatz verwenden oder einen Kommunikationspfad beinhalten, der ermöglicht, dass Daten zwischen den zwei Registerbänken übertragen werden, ohne geschrieben und zurückgelesen zu werden).
  • Die lokale Teilmenge des L2-Caches 1004 ist Teil eines globalen L2-Caches, der in getrennte lokale Teilsätze, einen pro Prozessorkern, unterteilt ist. Jeder Prozessorkern weist einen direkten Zugriffspfad auf seine eigene lokale Teilmenge des L2-Caches 1004 auf. Daten, die durch einen Prozessorkern gelesen werden, werden in seiner L2-Cache-Teilmenge 1004 gespeichert und auf sie kann schnell parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilsätze zugreifen, zugegriffen werden. Daten, die durch einen Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Teilmenge 1004 gespeichert und werden bei Bedarf aus anderen Teilsätzen ausgeräumt. Das Ringnetz stellt eine Kohärenz für geteilte Daten sicher. Das Ringnetz ist bidirektional, um zu ermöglichen, dass Agenten, wie etwa Prozessorkerne, L2-Caches und andere Logikblöcke, miteinander innerhalb des Chips kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 10B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 10A gemäß Ausführungsformen der Erfindung. 10B beinhaltet einen L1-Datencache 1006A, der Teil des L1-Caches 1004 ist, sowie mehr Einzelheiten hinsichtlich der Vektoreinheit 1010 und der Vektorregister 1014. Speziell ist die Vektoreinheit 1010 eine 16-breite Vektorverarbeitungseinheit (VPU: Vector Processing Unit) (siehe die 16-breite ALU 1028), die Integer- und/oder Single-Precision-Gleit- und/oder Double-Precision-Gleitbefehle ausführt. Die VPU unterstützt Swizzling der Registereingänge mit einer Swizzle-Einheit 1020, eine numerische Umwandlung mit numerischen Umwandlungseinheiten 1022A-B und eine Replikation mit einer Replikatoreinheit 1024 an dem Speichereingang. Schreibmaskenregister 1026 ermöglichen eine Vorhersage resultierender Vektorschreibvorgänge.
  • 11 ist ein Blockdiagramm eines Prozessors 1100, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die Kästen mit durchgezogenen Linien in 11 veranschaulichen einen Prozessor 1100 mit einem einzigen Kern 1102A, einen Systemagenten 1110, einen Satz aus einer oder mehreren Bussteuereinheiten 1116, während die optionale Hinzufügung der Kästen mit gestrichelten Linien einen alternativen Prozessor 1100 mit mehreren Kernen 1102A-N, einen Satz aus einer oder mehreren integrierten Speichersteuereinheiten 1114 in der Systemagenteneinheit 1110 und eine Speziallogik 1108 veranschaulicht.
  • Dementsprechend können unterschiedliche Implementierungen des Prozessors 1100 Folgendes beinhalten: 1) eine CPU mit der Speziallogik 1108, die eine integrierte Grafik und/oder Wissenschaft(Durchsatz)-Logik ist (die einen oder mehrere Kerne beinhalten kann), und wobei die Kerne 1102A-N ein oder mehrere Mehrzweckkerne sind (z. B. Mehrzweck-in-Reihenfolge-Kerne, Mehrzweck-außer-Reihenfolge-Kerne, eine Kombination der beiden); 2) einen Koprozessor mit den Kernen 1102A-N, die eine große Anzahl an Spezialkernen sind, die primär für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind; und 3) einen Koprozessor mit den Kernen 1102A-N, die eine große Anzahl an Mehrzweck-in-Reihenfolge-Kernen sind. Dementsprechend kann der Prozessor 1100 ein Mehrzweckprozessor, ein Koprozessor oder Spezialprozessor, wie etwa ein Netz- oder Kommunikationsprozessor, eine Kompression-Engine, ein Grafikprozessor, GPGPU (Mehrzweckgrafikverarbeitungseinheit), ein Hochdurchsatz-MIC-Koprozessor (MIC: Many Integrated Core - viele integrierte Kerne) (der 30 oder mehr Kerne beinhaltet), ein eingebetteter Prozessor oder dergleichen sein. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1100 kann Teil eines oder mehrerer Substrate, die eine beliebige einer Anzahl an Prozesstechnologien verwenden, wie etwa zum Beispiel BiCMOS, CMOS oder NMOS, sein und/oder auf solchen implementiert sein.
  • Die Speicherhierarchie beinhaltet ein oder mehrere Levels eines Caches innerhalb der Kerne, eine Menge aus einem oder mehreren geteilten Cacheeinheiten 1106 und einen (nicht gezeigten) externen Speicher, der mit dem Satz aus integrierten Speichersteuereinheiten 1114 gekoppelt ist. Die Menge geteilter Cache-Einheiten 1106 kann einen oder mehrere Mid-Level-Caches, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Level eines Caches, einen Last-Level-Cache (LLC) und/oder Kombinationen davon beinhalten. Während bei einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 1112 die integrierte Grafiklogik 1108, die Menge geteilter Cacheeinheiten 1106 und die Systemagentenheinheit 1110/integrierte Speichersteuereinheit(en) 1114 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zum Zwischenverbinden solcher Einheiten verwenden. Bei einer Ausführungsform wird eine Kohärenz zwischen einer oder mehreren Cacheeinheiten 1106 und Kernen 1102-A-N beibehalten.
  • Bei manchen Ausführungsformen sind einer oder mehrere der Kerne 1102A-N zum Multithreading fähig. Der Systemagent 1110 beinhaltet jene Komponenten, die die Kerne 1102A-N koordinieren und betreiben. Die Systemagentenheinheit 1110 kann zum Beispiel eine Leistungssteuereinheit (PCU: Power Control Unit) und eine Anzeigeeinheit beinhalten. Die PCU kann eine Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 1102A-N und der integrierten Grafiklogik 1108 benötigt werden, sein oder beinhalten. Die Anzeigeeinheit ist zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1102A-N können hinsichtlich eines Architekturbefehlssatzes homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1102A-N können zur Ausführung des gleichen Befehlssatzes fähig sein, während andere zum Ausführen nur eines Teilsatzes jenes Befehlssatzes oder eines unterschiedlichen Befehlssatzes fähig sein können.
  • Beispielhafte Computerarchitekturen
  • 12-15 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere Systemgestaltungen und Konfigurationen, die in der Technik für Laptops, Desktops, Handheld PCs, persönliche digitale Assistenten, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrocontroller, Mobiltelefone, portable Medienabspieler, tragbare Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenfalls geeignet. Allgemein ist eine große Vielzahl an Systemen oder elektronischen Vorrichtungen, die zum Einbinden eines Prozessors und/oder einer anderen Ausführungslogik, wie hier offenbart, fähig sind, allgemein geeignet.
  • Nun unter Bezugnahme auf 12 ist ein Blockdiagramm eines Systems 1200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1200 kann einen oder mehrere Prozessoren 1210, 1215 beinhalten, die mit einem Steuer-Hub 1220 gekoppelt sind. Bei einer Ausführungsform beinhaltet das Steuer-Hub 1220 einen Grafikspeichersteuer-Hub (GMCH: Graphics Memory Controller Hub) 1290 und einen Eingabe/Ausgabe-HUB (EAH) 1250 (die auf getrennten Chips sein können); der GMCH 1290 beinhaltet Speicher- und Grafiksteuerungen, mit denen ein Speicher 1240 und ein Koprozessor 1245 gekoppelt sind; der EAH 1250 koppelt Eingabe/Ausgabe(E/A)-Vorrichtungen 1260 mit dem GMCH 1290. Alternativ dazu sind der Speicher und/oder die Grafiksteuerungen innerhalb des Prozessors integriert (wie hier beschrieben), sind der Speicher 1240 und der Koprozessor 1245 direkt mit dem Prozessor 1210 gekoppelt und ist der Steuer-Hub 1220 in einem einzigen Chip mit dem EAH 150.
  • Die optionale Natur zusätzlicher Prozessoren 1215 ist in 12 mit gestrichelten Linien gekennzeichnet. Jeder Prozessor 1210, 1215 kann einen oder mehrere hier beschriebene Verarbeitungskerne beinhalten und kann irgendeine Version des Prozessors 1100 sein.
  • Der Speicher 1240 kann zum Beispiel dynamischer Direktzugriffsspeicher (DRAM: Direct Random Access Memory), Phasenwechselspeicher (PCM: Phase Change Memory) oder eine Kombination von den beiden sein. Für wenigstens eine Ausführungsform kommuniziert der Steuer-Hub 1220 mit dem(den) Prozessor(en) 1210, 1215 über einen Multi-Drop-Bus, wie etwa einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath-Interconnect (QPI) oder eine ähnliche Verbindung 1295.
  • Bei einer Ausführungsform ist der Koprozessor 1245 ein Spezialprozessor, wie etwa zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompression-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. Bei einer Ausführungsform kann der Steuer-Hub 1220 einen integrierten Grafikbeschleuniger beinhalten.
  • Es kann eine Vielzahl an Unterschieden hinsichtlich einem Spektrum an Leistungsmetriken, einschließlich Architektur-, Mikroarchitektur-, thermischer, Leistungsverbrauchseigenschaften und dergleichen, zwischen den physischen Ressourcen 1210, 1215 geben.
  • Bei einer Ausführungsform führt der Prozessor 1210 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Eingebettet in die Befehle können Koprozessorbefehle sein. Der Prozessor 1210 erkennt diese Koprozessorbefehle als von einem Typ, der durch den angehängten Koprozessor 1245 ausgeführt werden sollte. Entsprechend gibt der Prozessor 1210 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle repräsentieren) auf einem Koprozessorbus oder einer anderen Zwischenverbindung an den Koprozessor 1245 aus. Der(die) Koprozessor(en) 1245 nehmen die empfangenen Koprozessorbefehle an und führen diese aus.
  • Nun unter Bezugnahme auf 13 ist ein Blockdiagramm eines ersten spezielleren beispielhaften Systems 1300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 13 gezeigt, ist das Mehrfachprozessorsystem 1300 ein Punkt-zu-Punkt-Zwischenverbindungssystem und beinhaltet einen ersten Prozessor 1370 und einen zweiten Prozessor 1380, der über eine Punkt-zu-Punkt-Zwischenverbindung 1350 gekoppelt ist. Jeder der Prozessoren 1370 und 1380 kann irgendeine Version des Prozessors 1100 sein. Bei einer Ausführungsform der Erfindung sind die Prozessoren 1370 und 1380 die Prozessoren 1210 bzw. 1215, während der Koprozessor 1338 der Koprozessor 1245 ist. Bei einer anderen Ausführungsform sind die Prozessoren 1370 und 1380 der Prozessor 1210 bzw. der Koprozessor 1245.
  • Die Prozessoren 1370 und 1380 sind einschließlich IMC-Einheiten (IMC: Integrated Memory Controller - Integrierter-Speicher-Steuerung) 1372 bzw. 1382 gezeigt. Der Prozessor 1370 beinhaltet als Teil seiner Bussteuereinheiten Punkt-zu-Punkt(P-P)-Schnittstellen 1376 und 1378; gleichermaßen beinhaltet der zweite Prozessor 1380 P-P-Schnittstellen 1386 und 1388. Die Prozessoren 1370 und 1380 können Daten über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1350 unter Verwendung von P-P-Schnittstellenschaltungen 1378 bzw. 1388 austauschen. Wie in 13 gezeigt, koppeln IMCs 1372 und 1382 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1332 und einem Speicher 1334, die Teile eines Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angehängt sind.
  • Die Prozessoren 1370, 1380 können jeweils Informationen über individuelle P-P-Schnittstellen 1352, 1354 mit einem Chipsatz 1390 unter Verwendung von Punkt-zu-Punkt-Schnittstelle-Schaltkreisen 1376, 1394, 1386, 1398 austauschen. Der Chipsatz 1390 kann optional Informationen mit dem Koprozessor 1338 über eine Hochleistungsschnittstelle 1339 austauschen. Bei einer Ausführungsform ist der Koprozessor 1338 ein Spezialprozessor, wie etwa zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompression-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein (nichtgezeigter) geteilter Cache kann in beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein, jedoch über eine P-P-Zwischenverbindung mit den Prozessoren verbunden sein, so dass lokale Cacheinformationen von einem der Prozessoren oder beiden in dem geteilten Cache gespeichert werden können, falls ein Prozessor in einen Niederleistungsmodus gesetzt wird.
  • Der Chipsatz 1390 kann über eine Schnittstelle 1396 mit einem ersten Bus 1316 gekoppelt werden. Bei einer Ausführungsform kann der erste Bus 1316 ein PCI-Bus (PCI: Peripheral Component Interconnect) oder ein Bus, wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation, sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht derart beschränkt ist.
  • Wie in 13 gezeigt, können verschiedene E/A-Vorrichtungen 1314 zusammen mit einer Busbrücke 1318, die den ersten Bus 1316 mit einem zweiten Bus 1320 koppelt, mit dem ersten Bus 1316 gekoppelt sein. Bei einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1315, wie etwa Koprozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie etwa z. B. Grafikbeschleuniger oder DSP-Einheiten (DSP: Digital Signal Processing - digitale Signalverarbeitung)), vor Ort programmierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 1316 gekoppelt. Bei einer Ausführungsform kann der zweite Bus 1320 ein LPC-Bus (LPC: Low Pin Count - niedrige Pinzahl) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1320 gekoppelt sein, einschließlich zum Beispiel einer Tastatur und/oder einer Maus 1322, Kommunikationsvorrichtungen 1327 und einer Speichereinheit 1328, wie etwa einem Diskettenlaufwerk oder einer anderen Massenspeichervorrichtung, die bei einer Ausführungsform Befehle/Code und Daten 1330 enthalten kann. Ferner kann ein Audio-E/A 1324 mit dem zweiten Bus 1320 gekoppelt sein. Es wird angemerkt, dass andere Architekturen möglich sind. Zum Beispiel kann ein System statt der Punkt-zu-Punkt-Architektur aus 13 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Nun unter Bezugnahme auf 14 ist ein Blockdiagramm eines zweiten spezielleren beispielhaften Systems 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 13 und 14 tragen gleiche Bezugsziffern und gewisse Aspekte aus 13 wurden in 14 weggelassen, um eine Verschleierung anderer Aspekte von 14 zu vermeiden.
  • 14 veranschaulicht, dass die Prozessoren 1370, 1380 eine Integrierter-Speicher-und -E/A-Steuerlogik („CL“: Control Logic) 1372 bzw. 1382 beinhalten können. Dementsprechend beinhaltet die CL 1372, 1382 integrierte Speichersteuereinheiten und beinhaltet eine E/A-Steuerlogik. 14 veranschaulicht ferner, dass nicht nur die Speicher 1332, 1334 mit der CL 1372, 1382 gekoppelt sind, sondern auch, dass die E/A-Vorrichtungen 1414 ebenfalls mit der Steuerlogik 1372, 1382 gekoppelt sind. Veraltete E/A-Vorrichtungen 1415 sind mit dem Chipsatz 1390 gekoppelt.
  • Nun unter Bezugnahme auf 15 ist ein Blockdiagramm eines SoC 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 11 tragen gleiche Bezugsziffern. Außerdem Kästen sind mit Kästen gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 15 ist eine Zwischenverbindungseinheit bzw. sind Zwischenverbindungseinheiten 1502 mit Folgendem gekoppelt: einem Anwendungsprozessor 1510, der einen Satz aus einem oder mehreren Kernen 202A-N und (eine) geteilte Cacheeinheit(en) 1106 beinhaltet; einer Systemagenteneinheit 1110; (einer) Bussteuereinheit(en) 1116; (einer) Integrierter-Speicher-Steuereinheit(en) 1114; einem Satz aus einem oder mehreren Koprozessoren 1520, die eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor beinhalten können; einer SRAM-Einheit (SRAM: Static Random Access Memory - statischer Direktzugriffsspeicher) 1530; einer DMA-Einheit (DMA: Direct Memory Access - direkter Speicherzugriff) 1532; und einer Anzeigeeinheit 1540 zum Koppeln mit einer oder mehreren externen Anzeigen. Bei einer Ausführungsform beinhaltet der (die) Koprozessor(en) 1520 einen Spezialprozessor, wie etwa zum Beispiel einen Netz- oder Kommunikationsprozessor, eine Kompression-Engine, eine GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der Mechanismen, die hier offenbart sind, können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die/der auf programmierbaren Systemen ausgeführt wird/werden, die wenigstens einen Prozessor, ein Speichersystem (einschließlich eines flüchtigen und nichtflüchtigen Speichers und/oder flüchtiger und nichtflüchtiger Speicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen.
  • Ein Programmcode, wie etwa der in 13 veranschaulichte Code 1330, kann auf Eingabebefehle angewandt werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen auf bekannte Weise angewandt werden. Zum Zweck dieser Anmeldung beinhaltet ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie etwa zum Beispiel einen digitalen Signalprozessor (DSP), einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC: Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann, falls gewünscht, auch in einer Assembler- oder Maschinensprache implementiert werden. Tatsächlich sind die hier beschriebenen Mechanismen in dem Schutzumfang nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, implementiert sein, welche, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, Logik zu fabrizieren zum Durchführen der hier beschriebenen Techniken. Derartige Repräsentationen, als „IP-Kerne“ bekannt, können auf einem greifbaren maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Fabrikationsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speichermedien beinhalten unter anderem nichtflüchtige greifbare Anordnungen von Artikeln, die durch eine Maschine oder eine Vorrichtung hergestellt oder gebildet werden, einschließlich Speichermedien, wie etwa Festplatten oder einer beliebigen anderen Art von Disk, einschließlich Floppy-Disketten, optischer Disks, CD-ROMs (Compact Disk Read-Only Memories), CD-RWs (Compact Disk Rewritables) und magneto-optischer Disks, Halbleitervorrichtungen, wie etwa ROMs (Read-Only Memories), RAMs (Random Access Memories), wie etwa DRAMs (Dynamic Random Access Memories), SRAMs (Static Random Access Memories), EPROMs (Erasable Programmable Read-Only Memories), Flash-Speichern, EEPROMs (Electrically Erasable Programmable Read-Only Memories), PCM (Phase Change Memory), magnetischer oder optischer Karten oder irgendeines anderen Typs von Medien, die zum Speichern elektronischer Befehle geeignet sind.
  • Entsprechend beinhalten Ausführungsformen der Erfindung auch nichtflüchtige greifbare maschinenlesbare Medien, die Befehle enthalten oder Gestaltungsdaten enthalten, wie etwa HDL (Hardware Description Language), die Strukturen, Schaltkreise, Einrichtungen, Prozessoren und/oder Systemmerkmale definiert, die hier beschrieben sind. Solche Ausführungsformen können als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich Binärübersetzung, Codeumformung usw.)
  • In manchen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl von einem Quellenbefehlssatz zu einem Zielbefehlssatz umzuwandeln. Zum Beispiel kann der Befehlsumwandler einen Befehl in einen oder mehrere andere Befehle, die durch den Kern zu verarbeiten sind, übersetzen (z. B. unter Verwendung statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischer Kompilation), umformen, emulieren oder anderweitig umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf und teilweise außerhalb des Prozessors sein.
  • 16 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlumwandlers zum Umwandeln von binären Befehlen in einem Quellenbefehlssatz zu binären Befehlen in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung kontrastiert. Bei der veranschaulichten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl alternativ dazu der Befehlsumwandler in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert werden kann. 16 zeigt ein Programm in einer höheren Sprache 1602, das unter Verwendung eines x86-Compilers 1604 kompiliert werden kann, um einen x86-Binärcode 1606 zu erzeugen, der durch einen Prozessor mit wenigstens einem x86-Befehlsatz-Kern 1616 nativ ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1616 repräsentiert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel-x86-Befehlssatz-Kerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern ablaufen soll, durchführen kann, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern zu erreichen. Der x86-Compiler 1604 repräsentiert einen Compiler, der dazu funktionsfähig ist, einen x86-Binärcode 1606 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1616 ausgeführt werden kann. Gleichermaßen zeigt 16, dass das Programm in der höheren Sprache 1602 unter Verwendung eines Alternativer-Befehlssatz-Compilers 1608 kompiliert werden kann, um einen Alternativer-Befehlssatz-Binärcode 1610 zu erzeugen, der durch einen Prozessor ohne wenigstens einen x86-Befehlssatz-Kern 1614 (z. B. einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA, USA ausführen und/oder den ARM-Befehlssatz von ARM Holdings in Sunnyvale, CA, USA ausführen) nativ ausgeführt werden kann. Der Befehlsumwandler 1612 wird verwendet, um den x86-Binärcode 1606 in einen Code umzuwandeln, der durch den Prozessor ohne einen x86 Befehlssatz-Kern 1614 nativ ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der Alternativer-Befehlssatz-Binärcode 1610, weil es schwierig ist, einen Befehlsumwandler herzustellen, der zu diesem in der Lage ist; jedoch wird der umgewandelte Code die allgemeine Operation erzielen und aus Befehlen aus dem alternativen Befehlssatz bestehen. Dementsprechend repräsentiert der Befehlsumwandler 1612 Software, Firmware, Hardware oder eine Kombination davon, die durch Emulation, Simulation oder einen beliebigen anderen Prozess ermöglicht, dass ein Prozessor oder eine andere elektronische Vorrichtung, der/die keinen x86-Befehlssatz-Prozessor oder -Kern aufweist, den x86-Binärcode 1606 ausführt.
  • „Schaltungsanordnung“, wie bei einer beliebigen Ausführungsform hier verwendet, kann zum Beispiel eine festverdrahtete Schaltungsanordnung, eine programmierbare Schaltungsanordnung, eine Zustandsmaschinenschaltungsanordnung, eine Logik und/oder Firmware, die Befehle speichert, die durch eine programmierbare Schaltungsanordnung ausgeführt werden, alleine oder in Kombination umfassen. Die Schaltungsanordnung kann als ein integrierter Schaltkreis, wie etwa ein Integrierter-Schaltkreis-Chip, umgesetzt sein. Bei manchen Ausführungsformen kann die Schaltungsanordnung wenigstens teilweise durch den Prozessor 102 gebildet sein, der Code und/oder Befehlssätze (z. B. Software, Firmware usw.) ausführt, der/die der hier beschriebenen Funktionalität entspricht/entsprechen, wodurch dementsprechend ein Mehrzweckprozessor in eine Spezialverarbeitungsumgebung zum Durchführen einer oder mehrerer der hier beschriebenen Operationen transformiert wird.
  • Das Vorausgehende stellt beispielhafte Systemarchitekturen und Methodologien bereit, jedoch sind Modifikationen an der vorliegenden Offenbarung möglich. Bei manchen Ausführungsformen kann der Prozessor einen oder mehrere Prozessorkerne beinhalten und kann dazu konfiguriert sein, Systemsoftware auszuführen. Systemsoftware beinhaltet zum Beispiel ein Betriebssystem. Das Betriebssystem (OS: Operating System) kann dazu konfiguriert sein, Systemressourcen zu verwalten und Tasks zu steuern, die z. B. auf dem Bildmerkmalssystem 101 ablaufen. Zum Beispiel kann das OS unter Verwendung von Microsoft® Windows®, HP-UX®, Linux® oder UNIX® implementiert werden, obwohl andere Betriebssysteme verwendet werden können. Bei einem anderen Beispiel kann das OS unter Verwendung von Android™, iOS, Windows Phone® oder BlackBerry® implementiert werden. Bei manchen Ausführungsformen kann das OS durch einen Virtuelle-Maschine-Monitor (oder Hypervisor) ersetzt werden, der eine Abstraktionsschicht für darunterliegende Hardware für verschiedene Betriebssysteme (virtuelle Maschinen), die auf einer oder mehreren Prozessoreinheiten laufen, bereitstellt.
  • Der Systemspeicher 108, 212 und/oder der lokale Speicher 112, 262 beinhalten einen oder mehrere der folgenden Speichertypen: Halbleiterfirmwarespeicher, programmierbarer Speicher, nichtflüchtiger Speicher, Nurlesespeicher, elektrisch programmierbarer Speicher, Direktzugriffsspeicher, Flash-Speicher, Magnetdiskspeicher und/oder Optische-Disk-Speicher. Entweder zusätzlich oder alternativ dazu können der Systemspeicher und/oder der lokale Speicher andere und/oder später entwickelte Typen von computerlesbarem Speicher beinhalten.
  • Ausführungsformen der hier beschriebenen Operationen können in einer computerlesbaren Speichervorrichtung mit darauf gespeicherten Befehlen implementiert werden, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, die Verfahren durchführen. Der Prozessor kann zum Beispiel eine Verarbeitungseinheit und/oder eine programmierbare Schaltungsanordnung beinhalten. Die Speichervorrichtung kann eine maschinenlesbare Speichervorrichtung beinhalten, die eine beliebige Art einer greifbaren, nichtflüchtigen Speichervorrichtung beinhaltet, zum Beispiel eine beliebige Art von Disk, einschließlich Floppy-Disketten, optischer Disks, CD-ROMs (Compact Disk Read-Only Memories), CD-RWs (Compact Disk Rewritables) und magneto-optischer Disks, Halbleitervorrichtungen, wie etwa ROMs (Read-Only Memories), RAMs (Random Access Memories), wie etwa dynamische und statische RAMs, EPROMs (Erasable Programmable Read-Only Memories), EEPROMs (Electrically Erasable Programmable Read-Only Memories), Flash-Speicher, magnetische oder optische Karten oder irgendeine andere Art von Speichervorrichtungen, die zum Speichern elektronischer Befehle geeignet sind.
  • Bei manchen Ausführungsformen kann eine Hardwarebeschreibungssprache (HDL: Hardware Description Language) verwendet werden, um eine oder mehrere Schaltkreis- und/oder Logikimplementierungen für unterschiedliche hier beschriebene Logik und/oder Schaltungsanordnung zu spezifizieren. Zum Beispiel kann die Hardwarebeschreibungssprache bei einer Ausführungsformen einer VHSIC-Hardwarebeschreibungssprache (VHDL) (VHSIC: Very High Speed Integrated Circuits - integrierte Schaltkreise mit sehr hoher Geschwindigkeit) entsprechen oder mit dieser kompatibel sein, die eine Halbleiterfertigung einer oder mehrerer hier beschriebener Schaltkreise und/oder Logik ermöglichen kann. Die VHDL kann dem IEEE-Standard 1076-1987, dem IEEE-Standard 1076.2, IEEE1076.1, dem IEEE-Entwurf 3.0 von VHDL-2006, dem IEEE-Entwurf 4.0 von VHDL-2008 und/oder anderen Versionen der IEEE-VHDL-Standards und/oder anderen Hardwarebeschreibungsstandards entsprechen oder mit diesen kompatibel sein.
  • Bei manchen Ausführungsformen kann eine Verilog-Hardwarebeschreibungssprache (HDL: Hardware Description Language) verwendet werden, um eine oder mehrere Schaltkreis- und/oder Logikimplementierungen für die unterschiedliche hier beschriebene Logik und/oder Schaltungsanordnung zu spezifizieren. Zum Beispiel kann die HDL bei einer Ausführungsform Folgendem entsprechen oder damit kompatibel sein: IEEE-Standard 62530-2011: SystemVerilog - Unified Hardware Design, Specification, and Verification Language, vom 07. Juli 2011; IEEE-Standard 1800™-2012: IEEE-Standard for SystemVerilog-Unified Hardware Design, Specification, and Verification Language, veröffentlicht am 21. Februar 2013; IEEE-Standard 1364-2005: IEEE-Standard for Verilog Hardware Description Language, vom 18. April 2006 und/oder andere Versionen von Verilog-HDL- und/oder SystemVerilog-Standards.
  • Beispiele
  • Beispiele für die vorliegende Offenbarung beinhalten Gegenstandsmaterial, wie etwa ein Verfahren, ein Mittel zum Durchführen von Vorgängen des Verfahrens, einer Vorrichtung oder einer Einrichtung oder eines Systems, die/das mit einer optimierten Bildmerkmalsextraktionsschaltungsanordnung, wie unten besprochen, in Zusammenhang steht.
  • Beispiel 1. Gemäß diesem Beispiel ist eine Bildverarbeitungsschaltungsanordnung bereitgestellt. Die Bildverarbeitungsschaltungsanordnung beinhaltet eine Merkmalsextraktionsschaltungsanordnung und eine Optimierungsschaltungsanordnung. Die Merkmalsextraktionsschaltungsanordnung ist dazu ausgelegt, einen Merkmalsdeskriptor wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß zu bestimmen. Die Optimierungsschaltungsanordnung ist dazu ausgelegt, eine Operation der Merkmalsextraktionsschaltungsanordnung zu optimieren. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.
  • Beispiel 2. Dieses Beispiel beinhaltet die Elemente aus Beispiel 1, wobei die Merkmalsextraktionsschaltungsanordnung eine Integralschaltungsanordnung zum Bestimmen eines Integralbildes einer Merkmalsstelle beinhaltet, die mit der Merkmalspunktposition assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Integralschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen zu konfigurieren.
  • Beispiel 3. Dieses Beispiel beinhaltet die Elemente aus Beispiel 1, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, zu bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert.
  • Beispiel 4. Dieses Beispiel beinhaltet die Elemente aus Beispiel 1, wobei die Merkmalsextraktionsschaltungsanordnung eine Probenpunkt(SP)-Intensität-Schaltungsanordnung zum Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets beinhaltet, das mit einem Probenpunkt assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die SP-Intensität-Schaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters zu konfigurieren.
  • Beispiel 5. Dieses Beispiel beinhaltet die Elemente aus Beispiel 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, unter Nutzung eines Orientierungsvektors anzupassen. Beispiel 6. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Merkmalsextraktionsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision zu konfigurieren.
  • Beispiel 7. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, mehrere Paare von Probenpunkten gemäß einem Index eines Probenpunkts jedes Paares zu sortieren.
  • Beispiel 8. Dieses Beispiel beinhaltet die Elemente aus Beispiel 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine angepasste Probenpunktposition vorherzusagen.
  • Beispiel 9. Dieses Beispiel beinhaltet die Elemente aus Beispiel 2, wobei die Optimierungsschaltungsanordnung ausgelegt ist, die Integralschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache zu konfigurieren.
  • Beispiel 10. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 1 bis 4, wobei die Merkmalsextraktionsschaltungsanordnung einer Merkmalsextraktionstechnik, die aus der Gruppe ausgewählt ist, die FREAK (Fast Retina Keypoint), BRISK (Binary Robust Invariant Scalable Keypoints), BRIEF (Binary Robust Independent Elementary Features) und ORB (Oriented Fast and Rotated BRIEF) beinhaltet, entspricht und/oder mit dieser kompatibel ist.
  • Beispiel 11. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, Merkmalskonfigurationsdaten zu empfangen, wobei die Merkmalskonfigurationsdaten aus der Gruppe ausgewählt sind, die eine Probenpunktgröße, eine Position jedes Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition, ein Paar von Probenpunktindices für jedes Paar von Probenpunkten, eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhaltet.
  • Beispiel 12. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, Merkmalsdaten zu empfangen, wobei die Merkmalsdaten aus der Gruppe ausgewählt sind, die eine Merkmalskennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhaltet.
  • Beispiel 13. Gemäß diesem Beispiel ist ein Verfahren bereitgestellt. Das Verfahren beinhaltet Bestimmen eines Merkmalsdeskriptors durch eine Merkmalsextraktionsschaltungsanordnung wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß. Das Verfahren beinhaltet ferner Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung durch eine Optimierungsschaltungsanordnung. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.
  • Beispiel 14. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Folgendes beinhaltet: Bestimmen eines Integralbildes einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch eine Integralschaltungsanordnung; und Konfigurieren der Integralschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen.
  • Beispiel 15. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, durch die Optimierungsschaltungsanordnung beinhaltet.
  • Beispiel 16. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Folgendes beinhaltet: Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets, das mit einem Probenpunkt assoziiert ist, durch eine Probenpunkt(SP)-Intensität-Schaltungsanordnung; und Konfigurieren der SP-Intensität-Schaltungsanordnung durch die Optimierungsschaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters.
  • Beispiel 17. Dieses Beispiel beinhaltet die Elemente aus Beispiel 16, das ferner Anpassen einer Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch die Optimierungsschaltungsanordnung unter Nutzung eines Orientierungsvektors beinhaltet.
  • Beispiel 18. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Konfigurieren der Merkmalsextraktionsschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision beinhaltet.
  • Beispiel 19. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Sortieren mehrerer Paare von Probenpunkten durch die Optimierungsschaltungsanordnung gemäß einem Index eines Probenpunkts jedes Paares beinhaltet.
  • Beispiel 20. Dieses Beispiel beinhaltet die Elemente aus Beispiel 14, das ferner Konfigurieren der Integralschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache beinhaltet.
  • Beispiel 21. Dieses Beispiel beinhaltet die Elemente aus Beispiel 16, das ferner Vorhersagen einer angepassten Probenpunktposition durch die Optimierungsschaltungsanordnung beinhaltet. Beispiel 22. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, wobei die Merkmalsextraktionsschaltungsanordnung einer Merkmalsextraktionstechnik, die aus der Gruppe ausgewählt ist, die FREAK (Fast Retina Keypoint), BRISK (Binary Robust Invariant Scalable Keypoints), BRIEF (Binary Robust Independent Elementary Features) und ORB (Oriented Fast and Rotated BRIEF) beinhaltet, entspricht und/oder mit dieser kompatibel ist. Beispiel 23. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Empfangen von Merkmalskonfigurationsdaten durch die Optimierungsschaltungsanordnung beinhaltet, wobei die Merkmalskonfigurationsdaten aus der Gruppe ausgewählt sind, die eine Probenpunktgröße, eine Position jedes Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition, ein Paar von Probenpunktindices für jedes Paar von Probenpunkten, eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhaltet.
  • Beispiel 24. Dieses Beispiel beinhaltet die Elemente aus Beispiel 13, das ferner Empfangen von Merkmalsdaten durch die Optimierungsschaltungsanordnung beinhaltet, wobei die Merkmalsdaten aus der Gruppe ausgewählt sind, die eine Merkmalskennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhaltet.
  • Beispiel 25. Gemäß diesem Beispiel ist ein Bildmerkmalssystem bereitgestellt. Das Bildmerkmalssystem beinhaltet Folgendes: eine Prozessorschaltungsanordnung; einen Systemspeicher; und eine Bildverarbeitungsschaltungsanordnung. Die Bildverarbeitungsschaltungsanordnung beinhaltet eine Merkmalsextraktionsschaltungsanordnung und eine Optimierungsschaltungsanordnung. Die Merkmalsextraktionsschaltungsanordnung ist dazu ausgelegt, einen Merkmalsdeskriptor wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß zu bestimmen. Die Optimierungsschaltungsanordnung ist dazu ausgelegt, eine Operation der Merkmalsextraktionsschaltungsanordnung zu optimieren. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.
  • Beispiel 26. Dieses Beispiel beinhaltet die Elemente aus Beispiel 25, wobei die Merkmalsextraktionsschaltungsanordnung eine Integralschaltungsanordnung zum Bestimmen eines Integralbildes einer Merkmalsstelle beinhaltet, die mit der Merkmalspunktposition assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Integralschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen zu konfigurieren.
  • Beispiel 27. Dieses Beispiel beinhaltet die Elemente aus Beispiel 25, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, zu bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert.
  • Beispiel 28. Dieses Beispiel beinhaltet die Elemente aus Beispiel 25, wobei die Merkmalsextraktionsschaltungsanordnung eine Probenpunkt(SP)-Intensität-Schaltungsanordnung zum Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets beinhaltet, das mit einem Probenpunkt assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die SP-Intensität-Schaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters zu konfigurieren.
  • Beispiel 29. Dieses Beispiel beinhaltet die Elemente aus Beispiel 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, unter Nutzung eines Orientierungsvektors anzupassen.
  • Beispiel 30. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Merkmalsextraktionsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision zu konfigurieren.
  • Beispiel 31. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, mehrere Paare von Probenpunkten gemäß einem Index eines Probenpunkts jedes Paares zu sortieren.
  • Beispiel 32. Dieses Beispiel beinhaltet die Elemente aus Beispiel 26, wobei die Optimierungsschaltungsanordnung ausgelegt ist, die Integralschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache zu konfigurieren.
  • Beispiel 33. Dieses Beispiel beinhaltet die Elemente aus Beispiel 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine angepasste Probenpunktposition vorherzusagen.
  • Beispiel 34. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Merkmalsextraktionsschaltungsanordnung einer Merkmalsextraktionstechnik, die aus der Gruppe ausgewählt ist, die FREAK (Fast Retina Keypoint), BRISK (Binary Robust Invariant Scalable Keypoints), BRIEF (Binary Robust Independent Elementary Features) und ORB (Oriented Fast and Rotated BRIEF) beinhaltet, entspricht und/oder mit dieser kompatibel ist. Beispiel 35. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, Merkmalskonfigurationsdaten zu empfangen, wobei die Merkmalskonfigurationsdaten aus der Gruppe ausgewählt sind, die eine Probenpunktgröße, eine Position jedes Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition, ein Paar von Probenpunktindices für jedes Paar von Probenpunkten, eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhaltet.
  • Beispiel 36. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, Merkmalsdaten zu empfangen, wobei die Merkmalsdaten aus der Gruppe ausgewählt sind, die eine Merkmalskennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhaltet.
  • Beispiel 37. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Prozessorschaltungsanordnung aus der Gruppe ausgewählt ist, die einen Mehrzweckprozessor, einen Spezialprozessor, eine Grafikverarbeitungseinheit, eine digitale Signalverarbeitungseinheit, eine Vektorverarbeitungseinheit, einen Mikrocontroller und einen Endliche-Zustandsmaschine-Mikrocontroller beinhaltet.
  • Beispiel 38. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 25 bis 28, wobei die Bildverarbeitungsschaltungsanordnung einen Bildcache beinhaltet. Beispiel 39. Dieses Beispiel beinhaltet die Elemente aus Beispiel 26, wobei die Integralbildschaltungsanordnung den Zeilenpuffer, das Register und zwei Addiererschaltungsanordnungen beinhaltet.
  • Beispiel 40. Gemäß diesem Beispiel ist eine computerlesbare Speichervorrichtung bereitgestellt. Die computerlesbare Speichervorrichtung weist darauf gespeicherte Befehle auf, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden Operationen führen, die Folgendes beinhalten: Bestimmens eines Merkmalsdeskriptors wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß; und Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.
  • Beispiel 41. Dieses Beispiel beinhaltet die Elemente aus Beispiel 40, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Bestimmen eines Integralbildes einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist; und Konfigurieren einer Integralschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen.
  • Beispiel 42. Dieses Beispiel beinhaltet die Elemente aus Beispiel 40, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert.
  • Beispiel 43. Dieses Beispiel beinhaltet die Elemente aus Beispiel 40, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets, das mit einem Probenpunkt assoziiert ist; und Konfigurieren einer Probenpunkt(SP)-Intensität-Schaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters.
  • Beispiel 44. Dieses Beispiel beinhaltet die Elemente aus Beispiel 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Anpassen einer Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, unter Nutzung eines Orientierungsvektors.
  • Beispiel 45. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 40 bis 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Konfigurieren der Merkmalsextraktionsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision.
  • Beispiel 46. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 40 bis 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Sortieren mehrerer Paare von Probenpunkten gemäß einem Index eines Probenpunkts jedes Paares.
  • Beispiel 47. Dieses Beispiel beinhaltet die Elemente aus Beispiel 41, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Konfigurieren der Integralschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache.
  • Beispiel 48. Dieses Beispiel beinhaltet die Elemente aus Beispiel 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Vorhersagen einer angepassten Probenpunktposition
  • Beispiel 49. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 40 bis 43, wobei die Merkmalsextraktionsschaltungsanordnung einer Merkmalsextraktionstechnik, die aus der Gruppe ausgewählt ist, die FREAK (Fast Retina Keypoint), BRISK (Binary Robust Invariant Scalable Keypoints), BRIEF (Binary Robust Independent Elementary Features) und ORB (Oriented Fast and Rotated BRIEF) beinhaltet, entspricht und/oder mit dieser kompatibel ist. Beispiel 50. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 40 bis 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Empfangen von Merkmalskonfigurationsdaten, wobei die Merkmalskonfigurationsdaten aus der Gruppe ausgewählt sind, die eine Probenpunktgröße, eine Position jedes Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition, ein Paar von Probenpunktindices für jedes Paar von Probenpunkten, eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhaltet. Beispiel 51. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 40 bis 43, wobei die Befehle, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, die Folgendes beinhalten: Empfangen von Merkmalsdaten, wobei die Merkmalsdaten aus der Gruppe ausgewählt sind, die eine Merkmalskennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhaltet. Beispiel 52. Gemäß diesem Beispiel ist eine Bildverarbeitungsvorrichtung bereitgestellt. Die Bildverarbeitungsvorrichtung beinhaltet ein Mittel zum Bestimmen eines Merkmalsdeskriptors durch eine Merkmalsextraktionsschaltungsanordnung wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß. Die Vorrichtung beinhaltet ferner ein Mittel zum Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung durch eine Optimierungsschaltungsanordnung. Jede Optimierung ist zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ausgelegt.
  • Beispiel 53. Dieses Beispiel beinhaltet die Elemente aus Beispiel 52, das ferner Folgendes beinhaltet: ein Mittel zum Bestimmen eines Integralbildes einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch eine Integralschaltungsanordnung; und ein Mittel zum Konfigurieren der Integralschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen. Beispiel 54. Dieses Beispiel beinhaltet die Elemente aus Beispiel 52, das ferner ein Mittel zum Bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, durch die Optimierungsschaltungsanordnung beinhaltet.
  • Beispiel 55. Dieses Beispiel beinhaltet die Elemente aus Beispiel 52, das ferner Folgendes beinhaltet: ein Mittel zum Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets, das mit einem Probenpunkt assoziiert ist, durch eine Probenpunkt(SP)-Intensität-Schaltungsanordnung; und ein Mittel zum Konfigurieren der SP-Intensität-Schaltungsanordnung durch die Optimierungsschaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters. Beispiel 56. Dieses Beispiel beinhaltet die Elemente aus Beispiel 55, das ferner ein Mittel zum Anpassen einer Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch die Optimierungsschaltungsanordnung unter Nutzung eines Orientierungsvektors beinhaltet. Beispiel 57. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 52 bis 55, das ferner ein Mittel zum Konfigurieren der Merkmalsextraktionsschaltungsanordnung durch die Optimierungsschaltungsanordnung dazu beinhaltet, den Merkmalsdeskriptor unter Nutzung einer Zwischengleitkommapräzision zu bestimmen.
  • Beispiel 58. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 52 bis 55, das ferner ein Mittel zum Sortieren mehrerer Paare von Probenpunkten durch die Optimierungsschaltungsanordnung gemäß einem Index eines Probenpunkts jedes Paares beinhaltet.
  • Beispiel 59. Dieses Beispiel beinhaltet die Elemente aus Beispiel 53, das ferner ein Mittel zum Konfigurieren der Integralschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache beinhaltet.
  • Beispiel 60. Dieses Beispiel beinhaltet die Elemente aus Beispiel 55, das ferner ein Mittel zum Vorhersagen einer angepassten Probenpunktposition durch die Optimierungsschaltungsanordnung beinhaltet.
  • Beispiel 61. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 52 bis 55, wobei die Merkmalsextraktionsschaltungsanordnung einer Merkmalsextraktionstechnik, die aus der Gruppe ausgewählt ist, die FREAK (Fast Retina Keypoint), BRISK (Binary Robust Invariant Scalable Keypoints), BRIEF (Binary Robust Independent Elementary Features) und ORB (Oriented Fast and Rotated BRIEF) beinhaltet, entspricht und/oder mit dieser kompatibel ist.
  • Beispiel 62. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 52 bis 55, das ferner ein Mittel zum Empfangen von Merkmalskonfigurationsdaten durch die Optimierungsschaltungsanordnung beinhaltet, wobei die Merkmalskonfigurationsdaten aus der Gruppe ausgewählt sind, die eine Probenpunktgröße, eine Position jedes Probenpunkts relativ zu einer entsprechenden Merkmalspunktposition, ein Paar von Probenpunktindices für jedes Paar von Probenpunkten, eine Anzahl an Probenpunktpaaren, die an jeder Orientierungsbestimmung beteiligt sind, einen Q-Wert, eine Anzahl an Mantissenbits und eine Genauigkeit beinhaltet.
  • Beispiel 63. Dieses Beispiel beinhaltet die Elemente gemäß einem der Beispiele 52 bis 55, das ferner ein Mittel zum Empfangen von Merkmalsdaten durch die Optimierungsschaltungsanordnung beinhaltet, wobei die Merkmalsdaten aus der Gruppe ausgewählt sind, die eine Merkmalskennung, eine Merkmalspunktposition und ein Merkmalspunktausmaß beinhaltet.
  • Beispiel 64. Gemäß diesem Beispiel ist ein System bereitgestellt. Das System beinhaltet wenigstens eine Vorrichtung, die dazu eingerichtet ist, das Verfahren aus einem der Beispiele 13 bis 24 durchzuführen.
  • Beispiel 65. Gemäß diesem Beispiel ist eine Vorrichtung bereitgestellt. Die Vorrichtung beinhaltet ein Mittel zum Durchführen des Verfahrens aus einem der Beispiele 13 bis 24.
  • Beispiel 66. Gemäß diesem Beispiel ist eine computerlesbare Speichervorrichtung bereitgestellt. Die computerlesbare Speichervorrichtung weist darauf gespeicherte Befehle auf, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, zu den folgenden Operationen führen, die Folgendes beinhalten: das Verfahren gemäß einem der Beispiele 13 bis 24.
  • Die Begriffe und Ausdrücke, die hier eingesetzt wurden, werden als Begriffe der Beschreibung und nicht der Beschränkung verwendet und es besteht keinerlei Absicht bei der Verwendung solcher Begriffe und Ausdrücke, irgendwelche Äquivalente der gezeigten und beschriebenen Merkmale (oder Teile von diesen) auszuschließen, und es versteht sich, dass verschiedene Modifikationen innerhalb des Schutzumfangs der Ansprüche möglich sind. Entsprechend sollen die Ansprüche alle solchen Äquivalente abdecken.
  • Verschiedene Merkmale, Aspekte und Ausführungsformen wurden hier beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind für Kombinationen miteinander sowie für Variationen und Modifikationen empfänglich, wie ein Fachmann versteht. Die vorliegende Offenbarung sollte daher als solche Kombinationen, Variationen und Modifikationen umschließend betrachtet werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Alahi et al., FREAK: Fast Retina Keypoint, 2012 IEEE Conference on Computer Vision and Pattern Recognition, veröffentlicht im Juli 2012 [0020]

Claims (25)

  1. Bildverarbeitungsschaltungsanordnung, die Folgendes umfasst: eine Merkmalsextraktionsschaltungsanordnung zum Bestimmen eines Merkmalsdeskriptors wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß; und eine Optimierungsschaltungsanordnung zum Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung, wobei jede Optimierung zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ist.
  2. Bildverarbeitungsschaltungsanordnung nach Anspruch 1, wobei die Merkmalsextraktionsschaltungsanordnung eine Integralbildschaltungsanordnung zum Bestimmen eines Integralbildes einer Merkmalsstelle umfasst, die mit der Merkmalspunktposition assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Integralbildschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen zu konfigurieren.
  3. Bildverarbeitungsschaltungsanordnung nach Anspruch 1, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, zu bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert.
  4. Bildverarbeitungsschaltungsanordnung nach Anspruch 1, wobei die Merkmalsextraktionsschaltungsanordnung eine Probenpunkt(SP)-Intensität-Schaltungsanordnung zum Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets umfasst, das mit einem Probenpunkt assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die SP-Intensität-Schaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters zu konfigurieren.
  5. Bildverarbeitungsschaltungsanordnung nach Anspruch 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, unter Nutzung eines Orientierungsvektors anzupassen.
  6. Bildverarbeitungsschaltungsanordnung nach einem der Ansprüche 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, mehrere Paare von Probenpunkten gemäß einem Index eines Probenpunkts jedes Paares zu sortieren.
  7. Bildverarbeitungsschaltungsanordnung nach Anspruch 2, wobei die Optimierungsschaltungsanordnung ausgelegt ist, die Integralbildschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache zu konfigurieren.
  8. Bildverarbeitungsschaltungsanordnung nach einem der Ansprüche 1 bis 4, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Merkmalsextraktionsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision zu konfigurieren.
  9. Verfahren, das Folgendes umfasst: Bestimmen eines Merkmalsdeskriptors durch eine Merkmalsextraktionsschaltungsanordnung wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß; und Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung durch eine Optimierungsschaltungsanordnung, wobei jede Optimierung zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ist.
  10. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Bestimmen eines Integralbildes einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch eine Integralbildschaltungsanordnung; und Konfigurieren der Integralbildschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen.
  11. Verfahren nach Anspruch 9, das ferner Bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert, durch die Optimierungsschaltungsanordnung umfasst.
  12. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets, das mit einem Probenpunkt assoziiert ist, durch eine Probenpunkt(SP)-Intensität-Schaltungsanordnung; und Konfigurieren der SP-Intensität-Schaltungsanordnung durch die Optimierungsschaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters.
  13. Verfahren nach Anspruch 12, das ferner Anpassen einer Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, durch die Optimierungsschaltungsanordnung unter Nutzung eines Orientierungsvektors umfasst.
  14. Verfahren nach Anspruch 9, das ferner Sortieren mehrerer Paare von Probenpunkten durch die Optimierungsschaltungsanordnung gemäß einem Index eines Probenpunkts jedes Paares umfasst.
  15. Verfahren nach Anspruch 10, das ferner Konfigurieren der Integralbildschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache umfasst.
  16. Verfahren nach Anspruch 9, das ferner Konfigurieren der Merkmalsextraktionsschaltungsanordnung durch die Optimierungsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision umfasst.
  17. Bildmerkmalssystem, das Folgendes umfasst: eine Prozessorschaltungsanordnung; einen Systemspeicher; und eine Bildverarbeitungsschaltungsanordnung, die Folgendes umfasst: eine Merkmalsextraktionsschaltungsanordnung zum Bestimmen eines Merkmalsdeskriptors wenigstens teilweise basierend auf einer Merkmalspunktposition und einem entsprechenden Ausmaß; und eine Optimierungsschaltungsanordnung zum Optimieren einer Operation der Merkmalsextraktionsschaltungsanordnung, wobei jede Optimierung zum Beschleunigen der Operation der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren eines Leistungsverbrauchs der Merkmalsextraktionsschaltungsanordnung und/oder zum Reduzieren einer Systemspeicherbandbreite, die von der Merkmalsextraktionsschaltungsanordnung verwendet wird, ist.
  18. Bildmerkmalssystem nach Anspruch 17, wobei die Merkmalsextraktionsschaltungsanordnung eine Integralbildschaltungsanordnung zum Bestimmen eines Integralbildes einer Merkmalsstelle umfasst, die mit der Merkmalspunktposition assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Integralbildschaltungsanordnung zum Bestimmen jedes Integralbildwertes unter Verwendung eines Registers, eines Zeilenpuffers und von zwei Additionsoperationen zu konfigurieren.
  19. Bildmerkmalssystem nach Anspruch 17, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, zu bestimmen, ob eine räumliche Lokalität zwischen mehreren Merkmalspunkten existiert.
  20. Bildmerkmalssystem nach Anspruch 17, wobei die Merkmalsextraktionsschaltungsanordnung eine Probenpunkt(SP)-Intensität-Schaltungsanordnung zum Bestimmen einer Pixelintensität eines quadratischen Probenpunktgebiets umfasst, das mit einem Probenpunkt assoziiert ist, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die SP-Intensität-Schaltungsanordnung zum Glätten der Intensität des quadratischen Probenpunktgebiets unter Verwendung eines Box-Filters zu konfigurieren.
  21. Bildmerkmalssystem nach Anspruch 20, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, eine Position des Probenpunkts wenigstens teilweise basierend auf einer Orientierung einer Merkmalsstelle, die mit der Merkmalspunktposition assoziiert ist, unter Nutzung eines Orientierungsvektors anzupassen.
  22. Bildmerkmalssystem nach einem der Ansprüche 17 bis 20, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, mehrere Paare von Probenpunkten gemäß einem Index eines Probenpunkts jedes Paares zu sortieren.
  23. Bildmerkmalssystem nach Anspruch 18, wobei die Optimierungsschaltungsanordnung ausgelegt ist, die Integralbildschaltungsanordnung zum Speichern eines ausgewählten Integralbildwerts in einem Bildcache zu konfigurieren.
  24. Bildmerkmalssystem nach einem der Ansprüche 17 bis 20, wobei die Prozessorschaltungsanordnung aus der Gruppe ausgewählt ist, die einen Mehrzweckprozessor, einen Spezialprozessor, eine Grafikverarbeitungseinheit, eine digitale Signalverarbeitungseinheit, eine Vektorverarbeitungseinheit, einen Mikrocontroller und einen Endliche-Zustandsmaschine-Mikrocontroller umfasst.
  25. Bildmerkmalssystem nach einem der Ansprüche 17 bis 20, wobei die Optimierungsschaltungsanordnung dazu ausgelegt ist, die Merkmalsextraktionsschaltungsanordnung zum Bestimmen des Merkmalsdeskriptors unter Nutzung einer Zwischengleitkommapräzision zu konfigurieren.
DE102018003483.7A 2017-05-01 2018-04-27 Optimierte bildmerkmalsextraktion Withdrawn DE102018003483A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/582,945 US10318834B2 (en) 2017-05-01 2017-05-01 Optimized image feature extraction
US15/582,945 2017-05-01

Publications (1)

Publication Number Publication Date
DE102018003483A1 true DE102018003483A1 (de) 2018-11-08

Family

ID=63895657

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018003483.7A Withdrawn DE102018003483A1 (de) 2017-05-01 2018-04-27 Optimierte bildmerkmalsextraktion

Country Status (2)

Country Link
US (1) US10318834B2 (de)
DE (1) DE102018003483A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472662B (zh) * 2019-07-10 2023-12-29 上海理工大学 基于改进的orb算法的图像匹配方法
CN110689578A (zh) * 2019-10-11 2020-01-14 南京邮电大学 一种基于单目视觉的无人机障碍物识别方法
CN113743418B (zh) * 2020-05-28 2024-04-26 中科寒武纪科技股份有限公司 图像中特征点的描述子的生成方法、装置和存储介质
CN111967515A (zh) * 2020-08-14 2020-11-20 Oppo广东移动通信有限公司 图像信息提取方法、训练方法及装置、介质和电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9299364B1 (en) * 2008-06-18 2016-03-29 Gracenote, Inc. Audio content fingerprinting based on two-dimensional constant Q-factor transform representation and robust audio identification for time-aligned applications
US8644606B2 (en) * 2011-01-24 2014-02-04 Steven White Method for visual image detection
KR101926563B1 (ko) * 2012-01-18 2018-12-07 삼성전자주식회사 카메라 추적을 위한 방법 및 장치
ITMI20121210A1 (it) * 2012-07-11 2014-01-12 Rai Radiotelevisione Italiana A method and an apparatus for the extraction of descriptors from video content, preferably for search and retrieval purpose
EP3005297B1 (de) * 2013-06-04 2023-09-06 HRL Laboratories, LLC System zur erkennung eines bestimmten objekts in einer szene
US8965066B1 (en) * 2013-09-16 2015-02-24 Eye Verify LLC Biometric template security and key generation
US9323991B2 (en) * 2013-11-26 2016-04-26 Xerox Corporation Method and system for video-based vehicle tracking adaptable to traffic conditions
EP3113109A1 (de) * 2015-06-30 2017-01-04 Thomson Licensing Vorrichtungen und verfahren zur standortbestimmung mehrerer vorrichtungen
US10923215B2 (en) * 2016-09-20 2021-02-16 Nant Holdings Ip, Llc Sample tracking via sample tracking chains, systems and methods

Also Published As

Publication number Publication date
US10318834B2 (en) 2019-06-11
US20180314903A1 (en) 2018-11-01

Similar Documents

Publication Publication Date Title
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE102018003483A1 (de) Optimierte bildmerkmalsextraktion
DE102021128292A1 (de) Skalierbare semantische bildsuche mit deep- template- matching
DE112020004167T5 (de) Videovorhersage unter verwendung eines oder mehrerer neuronaler netze
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102018124919A1 (de) Skalierbare speicheroptimierte Hardware für Matrix-Solve
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112020005020T5 (de) Stellungsbestimmung unter verwendung eines oder mehrerer neuronaler netze
DE102018132200A1 (de) Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE102018128939A1 (de) Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen
DE112020004237T5 (de) Video-upsampling unter verwendung eines oder mehrerer neuronaler netze
DE112017003345T5 (de) Bit-prüfprozessoren, verfahren, systeme und anweisungen zum prüfen eines bits mit einem angegebenen prüfbitwert
DE102018129273A1 (de) Einrichtung und verfahren zum vektor-multiplizieren; und -akkumulieren von unsignierten doppelwörtern
DE112015006952T5 (de) Hardware-mechanismus zum ausführen atomarer handlungen in entfernten prozessoren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee