DE102018125740A1 - Verfahren und vorrichtungen zur ermöglichung einer parallelen verarbeitung beim lösen von linearen gleichungen in einem computervisionsverarbeitungssystem - Google Patents

Verfahren und vorrichtungen zur ermöglichung einer parallelen verarbeitung beim lösen von linearen gleichungen in einem computervisionsverarbeitungssystem Download PDF

Info

Publication number
DE102018125740A1
DE102018125740A1 DE102018125740.6A DE102018125740A DE102018125740A1 DE 102018125740 A1 DE102018125740 A1 DE 102018125740A1 DE 102018125740 A DE102018125740 A DE 102018125740A DE 102018125740 A1 DE102018125740 A1 DE 102018125740A1
Authority
DE
Germany
Prior art keywords
matrix
equations
mask
values
subsets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018125740.6A
Other languages
English (en)
Inventor
Dror Cohen
Avigdor Eldar
Amos Goldman
Jonathan Abramson
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 DE102018125740A1 publication Critical patent/DE102018125740A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations
    • 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
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30004Biomedical image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30232Surveillance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)

Abstract

Es werden Verfahren, Vorrichtungen, Systeme und Fabrikate zum Vorbereiten eines Gleichungssatzes für einen Prozessor für schrittweise Überrelaxation offenbart. Eine beispielhafte Vorrichtung enthält eine Identifikationseinrichtung, um einen Satz von Gleichungen zu identifizieren, die Pixeln eines Eingabebilds entsprechen. Beispielhafte Vorrichtungen enthalten auch eine Partitionierungseinrichtung, um den Gleichungssatz in Untergliederungen aufzuteilen, die wechselseitig unabhängige Teilmengen der Gleichungen enthalten, und eine Sammeleinrichtung, um die Teilmengen des Gleichungssatzes auf Grundlage der Untergliederungen in Gruppen anzusammeln, die parallel durch den Prozessor für schrittweise Überrelaxation zu lösen sind.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein Computervisionsverarbeitungssysteme und insbesondere Verfahren und Vorrichtungen zur Ermöglichung einer parallelen Verarbeitung beim Lösen von linearen Gleichungen in einem Computervisionsverarbeitungssystem.
  • STAND DER TECHNIK
  • Computervisionsverarbeitungssysteme sind konstruiert, um Stand- und Videobilder zum Zweck des Durchführens von maschinenbasierten Auswertungen des Inhalts der erfassten Bilder zu erfassen und zu analysieren. In vielen Fällen ist das Ziel der maschinenbasierten Auswertung, eine Aktivität zu erkennen, die in einer erfassten Bild-/Videoaufzeichnung stattfindet. Sobald eine aufgezeichnete Aktivität erkannt ist, können Informationen in Bezug auf die Aktivität zum späteren Abrufen und zur späteren Analyse gespeichert werden und/oder Handlungen können in der Nähe der Aktivität durchgeführt werden. Derartige Handlungen können die Betätigung eines oder mehrerer Servomotorsteuerungen/Antriebe enthalten, die mit einem Robotergerät mit einer Form künstlicher Intelligenz assoziiert sind. Computervisionsverarbeitungssysteme werden in einer breiten und immer größeren Vielfalt von Anwendungen eingesetzt, einschließlich Sicherheitsüberwachung, Qualitätssteuerungsüberwachung, unterstütztes Fahren von Autos (oder anderweitig motorisiertem Fahren), computerisierte Kundendienstroboter, Fertigung usw.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines in Übereinstimmung mit den Lehren dieser Offenbarung konstruierten beispielhaften Computervisionsverarbeitungssystems.
    • 2 ist ein Blockdiagramm eines Implementierungsbeispiels einer Computervisionsverbesserungseinrichtung von 1 mit einer beispielhaften Gleichungsparallelisierungseinrichtung.
    • 3 ist ein Blockdiagramm eines Implementierungsbeispiels der beispielhaften Gleichungsparallelisierungseinrichtung von 2 mit einer beispielhaften Partitionierungseinrichtung.
    • 4A, 4B und 4C sind Diagramme, die die iterative Weise veranschaulichen, auf die eine Maske auf die Elemente/Zellen einer von der Partitionierungseinrichtung von 3 erstellten initialisierten Matrix platziert wird.
    • 5 ist ein Ablaufdiagramm von beispielhaften maschinenlesbaren Anweisungen, die ausgeführt werden können, um die beispielhafte Gleichungsparallelisierungseinrichtung von 3 zu implementieren.
    • 6 ist ein Ablaufdiagramm von beispielhaften maschinenlesbaren Anweisungen, die ausgeführt werden können, um die beispielhafte Partitionierungseinrichtung von 3 zu implementieren.
    • 7 ist ein Blockdiagramm einer beispielhaften Prozessorplattform, die fähig ist, die Anweisungen von 4-6 auszuführen, um die beispielhafte Computervisionsverbesserungseinrichtung von 1 und 2 zu implementieren.
  • Die Figuren sind nicht maßstabgetreu. Wo immer es möglich ist, werden in allen Zeichnungen und in der beigefügten Beschreibung dieselben Bezugszeichen verwendet, um auf dieselben oder ähnliche Teile Bezug zu nehmen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Computervisionsverarbeitungssysteme erfassen und analysieren Bild- und Videodaten im Bemühen, eine maschinelle Erkennung von in den erfassten Bild-/Videodaten enthaltenen Merkmalen durchzuführen. Ein primäres Ziel der Computervisionsverarbeitung ist es, auf Maschinen basierende Technologie zu verwenden, um Bild- und Videoinformationen auf eine Weise zu verstehen, die der Weise analog ist, auf die ein menschlicher Verstand derartige Daten verstehen kann. Sobald Informationen, die in einem Bild/Video enthalten sind, verstanden sind, kann eine beliebige Anzahl von Handlungen auf Grundlage der Informationen durchgeführt werden. Computervisionssysteme, die auf dem medizinischen Fachgebiet verwendet werden, können zum Beispiel Bildverarbeitungssysteme enthalten, die Bilder des menschlichen Körpers erfassen, automatisch Hinweise auf eine Krankheit in den Bildern erkennen und Informationen in Bezug auf mögliche Diagnosen bereitstellen. Computervisionsverarbeitungssysteme können auch bei unterstützten Motorantriebsanwendungen verwendet werden, um ein entgegenkommendes Objekt zu erkennen und Handlungen zu tätigen, um derartige Objekte zu vermeiden. Computervisionsverarbeitungssysteme können ferner verwendet werden, um ein Gelände zu überwachen und eine Warnung abzugeben, wenn ein Eindringling mit einer bestimmten Beschreibung erkannt wird. Die möglichen Anwendungen, auf die Computervisionsverarbeitungssysteme verwendet werden können, sind enorm und erweitern sich.
  • Ein wesentlicher Teil des Gebiets der Computervisionsverarbeitung ist einem Avancieren von Bilderkennungstechniken gewidmet. Die Bilderkennung hat sich als eine schwierige Aufgabe erwiesen, auch wenn ein Bild, das analysiert wird, detailliert und gut belichtet ist. Die Aufgabe wird noch schwieriger, wenn das zu analysierende Bild bzw. die zu analysierenden Bilder körnig ist bzw. sind, Löcher aufweist bzw. aufweisen (Pixeldaten fehlen), dunkel ist bzw. sind, Tiefeninformationen fehlen usw. Die Herausforderungen, vor denen Computervisionsexperten stehen, werden weiter verstärkt, wenn zweidimensionale Bilder, die mit mehreren Kameras an unterschiedlichen Positionen gemacht wurden, verwendet werden, um ein sich bewegendes (oder stillstehendes) Objekt zu identifizieren und/oder eine oder mehrere Schlussfolgerungen über dieses zu ziehen.
  • Viele Computervisionsprobleme, wie die oben identifizierten, sowie andere, werden unter Verwendung von linearer Optimierung gehandhabt. Lineare Optimierungen können verwendet werden, um eine beliebige Anzahl von Bildverbesserungstechniken durchzuführen, einschließlich des Füllens von Löchern (auch als Tiefen-Inpainting bekannt), optischer Ablaufabschätzung, Kolorierung, Alpha-Blenden usw., von denen alle bei der Bilderkennung helfen. In einigen Beispielen zielen die Bildverbesserungstechniken, die lineare Optimierung einsetzen, darauf ab, ein großes System linearer Gleichungen zu lösen, das durch die Gleichung „Ax = b“ repräsentiert wird, wobei „A“ eine Matrix mit Datenwerten repräsentiert, „x“ einen Vektor repräsentiert und die auf Grundlage der zu lösenden Gleichungen zu ermittelnde Variable ist und „b“ einen Vektor mit Datenwerten repräsentiert. Aufeinanderfolgende Überrelaxation ist eine solche Technik, die auf linearer Optimierung basiert, die verwendet wird, um nach dem Vektor „x“ unter Verwendung des großen linearen Systems aufzulösen, der durch einen Satz von Gleichungen mit der Form „Ax = b“ repräsentiert wird. In einigen Beispielen repräsentiert ein Satz von Pixeln/Voxeln, die mit einem ursprünglichen (z. B. nicht verbesserten) Bild/Video assoziiert sind, einen Satz von ursprünglichen, nicht verbesserten „x“-Werten und die resultierenden „x“-Werte, die mit dem großen linearen System gelöst werden, repräsentieren verbesserte „x“-Werte. In einigen derartigen Beispielen bilden die verbesserten „x“-Werte gemeinsam eine verbesserte Version des ursprünglichen Bilds/Videos, das durch die ursprünglichen, nicht verbesserten x-Werte repräsentiert wurde.
  • Schrittweise Überrelaxation ist eine iterative Technik, bei der sich jede Iteration darauf konzentriert, eine einzige Gleichung des Gleichungssatzes zu lösen, und jede Iteration wird vom Resultat von vorangehenden Iterationen beeinflusst. Wenn dies im Kontext von Bild-/Videoverbesserungen verwendet wird, wird eine Gleichung ermittelt, die jedem Pixel/Voxel der Bild-/Videodaten entspricht. Die Lösung einer Gleichung, die einem ersten Pixel/Voxel entspricht, hängt nicht nur von ersten Pixel-/Voxeldaten ab, sondern auch von benachbarten Pixel-/Voxeldatenwerten. Aufgrund dieser Abhängigkeiten können die Gleichungen, die allen der Pixel/Voxel entsprechen, nicht parallel gelöst werden, sondern müssen iterativ gelöst werden. Leider macht die iterative Natur des schrittweisen Überrelaxationsprozesses die schrittweise Überrelaxation zu einem zeitraubenden Prozess, der möglicherweise nicht zum Einsatz in Echtzeit-Bildverarbeitungs-/Erkennungsanwendungen geeignet ist. Wie hierin verwendet, repräsentiert ein Voxel einen Wert auf einem regelmäßigen Raster in einem dreidimensionalen Raum. Voxel können von Bildrendersystemen verwendet werden, um ein Visualisieren eines volumetrischen Raums in zwei Dimensionen zu unterstützen.
  • Das hierin offenbarte Computervisionsverarbeitungssystem enthält eine Computervisionsverbesserungseinrichtung, die eine Gleichungsparallelisierungseinrichtung aufweist, die Gleichungen eines linearen Optimierungssystems identifiziert, die parallel gelöst werden können. In einigen Beispielen enthält die Computervisionsverbesserungseinrichtung eine Partitionierungseinrichtung, die die zu lösenden Gleichungen in Teilmengen aufteilt. Jede Teilmenge enthält nur Gleichungen, die wechselseitig unabhängig sind und deshalb parallel gelöst werden können. Die parallel zu lösenden Gleichungen werden von der Partitionierungseinrichtung an eine Sammeleinrichtung geliefert, die die wechselseitig unabhängigen Gleichungen, die in einer Teilmenge enthalten sind, in einen gleichen Bereich einer Matrix zur Übergabe an einen Satz von Prozessoren für schrittweise Uberrelaxation gruppiert. Die Prozessoren für schrittweise Überrelaxation lösen nachfolgend wechselseitig unabhängige Gleichungen parallel, wodurch die zum Lösen der großen linearen Optimierung notwendige Zeit stark reduziert wird. In einigen Beispielen verwendet ein einziger Prozessor für schrittweise Uberrelaxation Multithreading-Techniken, um die wechselseitig unabhängigen Gleichungen parallel zu lösen. In einigen Beispielen arbeiten Single-Instruction-Multiple-Data(SIMD)-Prozessoren parallel, um die wechselseitig unabhängigen Gleichungen parallel zu lösen.
  • Die hierin offenbarten Computervisionsverarbeitungssysteme können ein großes System linearer Gleichungen, das mit Bild-/Videodaten assoziiert ist, rasch lösen. Als solche ermöglichen derartige offenbarte Computervisionsverarbeitungssysteme die Nutzung von Computervisionsverarbeitung in einer größeren Anzahl von praktischen Anwendungen, bei denen die Zeit eine große Rolle spielt.
  • 1 ist ein Blockdiagramm eines beispielhaften Computervisionsverarbeitungssystems 100 mit einer oder mehreren Video- (oder Standbild-)Kameras 110, einer beispielhaften Computervisionsverbesserungseinrichtung 120, einer beispielhaften Video-/Bilddatenanalyseeinrichtung 130 und einer beispielhaften Servomotorsteuerung/einem beispielhaften Servomotorantrieb 140. In einigen Beispielen erfassen die Kameras 110 ein Video (oder Standbild) eines Subjekts. Die von den Kameras 110 erfassten Video- (oder Standbild-)Daten werden an die Computervisionsverbesserungseinrichtung 120 geliefert, die beliebige einer Vielfalt von Bildverarbeitungstechniken anwendet, um die erfassten Video-/Bilddaten zu verbessern. Die verbesserten Video-/Bilddaten werden dann in die Computervisionsanalyseeinrichtung zum Identifizieren des in den Bild-/Videodaten erfassten Subjekts, zum Ziehen von Schlussfolgerungen über das Subjekt, zum Vorhersagen einer zukünftigen Position des Subjekts auf Grundlage einer Bewegung des Subjekts, zum Ermitteln einer Identität des Subjekts, zum Ermitteln, ob dem Subjekt Zugang zu einem eingeschränkten Zugangsbereich zu gewähren ist, und/oder eine beliebige Anzahl von anderen zusätzlichen oder alternativen Aktionen. Die Computervisionsanalyseeinrichtung kann auf Grundlage der analysierten Bild-/Videodaten die Informationen speichern und/oder einen Servomotorantrieb betätigen.
  • 2 ist ein Blockdiagramm eines Implementierungsbeispiels der Computervisionsverbesserungseinrichtung 120 von 1. Die Computervisionsverbesserungseinrichtung 120 enthält einen beispielhaften Bild-/Videodatenspeicher 210, eine beispielhafte Gleichungsparallelisierungseinrichtung 220, einen oder mehrere beispielhafte Prozessoren für schrittweise Überrelaxation 230 und eine beispielhafte Verbesserungssteuerung 240. In einigen Beispielen empfängt der Bild-/Videodatenspeicher 210 erfasste Bild-/Videodaten in Form einer mit Bild-/Videodaten gefüllten Matrix 215 von der Kamera bzw. den Kameras 110 (siehe 1) zur Speicherung. Die Verbesserungssteuerung 240 identifiziert eine Verbesserungstechnik, die auf die Bild-/Videodaten anzuwenden ist, und meldet der Gleichungsparallelisierungseinrichtung 220 die identifizierte Verbesserungstechnik. Falls die erfassten Bild-/Videodaten zum Beispiel Löcher aufweist, kann die Verbesserungssteuerung 240 ermitteln, dass eine Tiefenfüllung auf das Bild/die Daten anzuwenden ist. Falls das erfasste Bild sehr verpixelt ist, kann die Verbesserungsteuerung 240 stattdessen eine Glättungstechnik auf die Bilddaten anwenden und so weiter. Auf Grundlage der anzuwendenden Verbesserungstechnik greift die Gleichungsparallelisierungseinrichtung auf die mit Bild-/Videodaten gefüllte Matrix 215, die gespeicherte Pixel-/Voxeldaten 215 beinhaltet, identifiziert Sätze von linearen Gleichungen, die den Bild-/Videodaten entsprechen, und ordnet die Gleichungen auf eine Weise an, die das Lösen eines oder mehrerer Gleichungssätze auf parallele Weise ermöglicht. Die Gleichungssätze werden von der Gleichungsparallelisierungseinrichtung 220 an die Prozessoren für schrittweise Überrelaxation 230 zum parallelen Lösen geliefert. In einigen Beispielen bewirkt die Art, auf die die Gleichungen an die Prozessoren für schrittweise Überrelaxation geliefert werden, dass die resultierenden Lösungsdaten nicht in Reihenfolge sind. In einigen derartigen Beispielen, die Gleichungsparallelisierungseinrichtung 220 Pixel-/Voxeldaten. Die Verbesserungssteuerung 240 liefert dann die richtig geordneten Ergebnisse der gelösten Gleichungen in die Computervisionsanalyseeinrichtung 130 (siehe 1). Die Computervisionsanalyseeinrichtung 130 analysiert die Ergebnisse und verwendet die Informationen, um eine beliebige Anzahl von Handlungen durchzuführen, wie oben beschrieben.
  • 3 ist ein Blockdiagramm eines Implementierungsbeispiels der beispielhaften Gleichungsparallelisierungseinrichtung 220 von 2. Die beispielhafte Gleichungsparallelisierungseinrichtung 220 von 3 enthält eine beispielhafte Identifizierungseinrichtung 308, einen beispielhaften Identifizierungseinrichtungsspeicher 310, um eine beispielhafte M×N große, mit Gleichungen gefüllte Matrix 311 zu speichern, eine beispielhafte Partitionierungseinrichtung 330, eine beispielhafte Sammeleinrichtung 340, einen beispielhaften Initialisierungsspeicher 372, um eine beispielhafte initialisierte Matrix 374 zu speichern, einen beispielhaften Sammelspeicher 376, um eine beispielhafte M×N große, umgeordnete, mit Gleichungen gefüllte Matrix 378 zu speichern, eine beispielhafte Umordnungsverwaltung 380 und einen beispielhaften Umordnungsspeicher 382, um eine beispielhafte M×N große umgeordnete Matrix 384 und eine beispielhafte, mit Lösungen gefüllte Matrix 386 zu speichern. In einigen Beispielen enthält die Partitionierungseinrichtung 330 eine beispielhafte Matrixinitialisierungseinrichtung 340, eine beispielhafte Maskierungseinrichtung 350, eine beispielhafte Wertauswahleinrichtung 360 und eine beispielhafte Wertersetzungseinrichtung 370. In einigen Beispielen ermittelt die Verbesserungssteuerung 240 (siehe 2) eine Verbesserung, die auf die Bild-/Videodaten anzuwenden ist, und informiert die Identifizierungseinrichtung 308 über die anzuwendenden Techniken. Die Identifizierungseinrichtung 308 antwortet auf die Benachrichtigung durch Zugreifen auf die mit Bild-/Videodaten gefüllte Matrix 215, die im beispielhaften Bild-/Videodatenspeicher 210 gespeichert ist (siehe 2). Auf Grundlage des Typs der anzuwenden Verbesserung identifiziert die Identifizierungseinrichtung 308 Gleichungen, die den Bild-/Videodaten entsprechen. Jede Gleichung entspricht einem der Pixel/Voxel der Bild-/Videodaten, die in der mit Bild-/Videodaten gefüllten Matrix 215 gespeichert sind. In einigen Beispielen entsprechen die Gleichungen einem Satz von Annahmen, die über die Bild-/Videodaten und die Beziehungen zwischen benachbarten Pixeln/Voxeln gemacht wurden, die in den Bild-/Videodaten enthalten sind. Die Annahmen können durch die Verbesserungssteuerung 240 an die Identifizierungseinrichtung 308 geliefert werden. Die Annahmen basieren auf dem Typ der auf die Bild-/Videodaten anzuwendenden Verbesserungstechnik. In einigen Beispielen sind die Annahmen mit dem Einfluss verbunden, den benachbarte Pixel/Voxel aufeinander ausüben.
  • Die von der Identifizierungseinrichtung 308 identifizierten Gleichungen sind lineare Gleichungen, die, wenn sie gelöst sind, in einer verbesserten Version der Bild-/Videodaten resultieren. Die linearen Gleichungen können einer beliebigen Anzahl von Bildverbesserungstechniken entsprechen, einschließlich Glätten, Tiefenfüllung usw. Wie oben beschrieben nehmen die linearen Gleichungen allgemein die Form „Ax = b“ an, wobei „A“ einer Matrix von Koeffizienten entspricht und „b“ einem Vektor von Zwangsbedingungen entspricht. Die Werte der zwei basieren zumindest teilweise auf den Eingabe-Bild-/Videodaten. Der Vektor „x“ entspricht einem Vektor mit unbekannten Werten, die im Lösungsprozess der linearen Gleichungen abzuschätzen sind. Die Bild-/Videodaten sind in einer Bild-/Videodatenmatrix mit M × N Dimensionen gespeichert. In einigen Beispielen sind die Bild-/Videodaten Pixel- oder Voxeldaten. Die Identifizierungseinrichtung 308 platziert die zu lösenden Gleichungen in die mit Gleichungen gefüllte Matrix 311, die ebenfalls M × N Dimensionen aufweist. Die in den Elementen der mit Gleichungen gefüllten Matrix 311 enthaltenen Gleichungen entsprechen der mit Bild-/Videodaten gefüllten Matrix 215, die die Bild-/Videodaten beinhaltet. In einigen Beispielen sind die Bild-/Videodaten, die in einem Element der mit Bild-/Videodaten gefüllten Matrix 215 gespeichert sind, der bzw. den in einem entsprechenden Element der mit Gleichungen gefüllten Matrix gespeicherten Gleichung(en) als eine Eingabe geliefert. Die Gleichungen werden durch die Prozessoren für schrittweise Überrelaxation 230 gelöst, wie weiter unten beschrieben wird.
  • Die beispielhafte Partitionierungseinrichtung 320 von 3 untergliedert oder teilt die Gleichungen in Sätze von Gleichungen auf, die parallel gelöst werden können. Wie oben beschrieben, kann eine erste Gleichung (Gl. 1), die einem beispielhaften ersten Pixel (P1) von Bilddaten entspricht, von der Lösung von zweiten, dritten, vierten (usw.) Gleichungen (z. B. Gl. 2, Gl. 3, Gl. 4) abhängen, die einem oder mehreren anderen, in der mit Bild-/Videodaten gefüllten Matrix 215 gespeicherten Pixeln (P2, P3, P4) entsprechen. Als Ergebnis kann die erste Gleichung (Gl. 1) nicht parallel mit der einen oder den mehreren der zweiten, dritten, vierten usw. Gleichungen (Gl. 2, Gl. 3, Gl. 4) lösbar sein. Die Notwendigkeit, die Gleichungen (z. B. Gl. 1, Gl. 2, Gl. 3, Gl. 4) auf nicht parallele Weise zu lösen, bewirkt, dass die Verarbeitung (z. B. Verbesserung) der Bild-/Videodaten in der mit Bild-/Videodaten gefüllten Matrix 215 zeitraubend ist und schränkt die Fähigkeit ein, Verbesserungstechniken in Echtzeit- oder Fast-Echtzeitanwendungen durchzuführen. Durch Untergliedern der Gleichungen in Sätze von wechselseitig unabhängigen Gleichungen, die dann parallel gelöst werden können, verbessert die Partitionierungseinrichtung 320 die Fähigkeiten der Computervisionsverbesserungseinrichtung 120 (siehe 1 und 2) stark, indem sie die Anwendung von Bild-/Videoverbesserungstechniken in Echtzeit oder Fast-Echtzeit ermöglicht.
  • In einigen Beispielen initialisiert die beispielhafte Matrixinitialisierungseinrichtung 340 die initialisierte Matrix 374 mit den gleichen Dimensionen wie die mit Gleichungen gefüllte Matrix 311 und den gleichen Dimensionen wie die mit Bild-/Videodaten gefüllte Matrix 215 (z. B. „M × N“). Die Elemente der initialisierten Matrix 374 sind alle Nullwerte (z. B. hält jedes Element der Matrix anfänglich eine Null). Die Matrixinitialisierungseinrichtung 340 benachrichtigt die beispielhafte Maskierungseinrichtung 350, wenn die Matrixinitialisierung abgeschlossen ist. Die Maskierungseinrichtung 350 reagiert auf die Benachrichtigung durch Identifizieren/Auswählen einer Maske mit einer gewünschten Form, die auf die Elemente der initialisierten Matrix anzuwenden ist. Die Maskenform wird auf Grundlage des zu lösenden Bildverarbeitungsproblems ausgewählt und spiegelt die Abhängigkeit/Nachbarschaftsbeziehung zwischen jedem Pixel/Voxel im Bild und seinen umgebenden Pixeln/Voxeln wider, die durch die Matrix A definiert ist. Eine größere Maske deckt mehr Pixel/Voxel ab und weist auf eine stärkere Abhängigkeit von benachbarten Pixeln/Voxeln hin. Die Masken können eine beliebige benötigte Form aufweisen. Jede Maske enthält einen Satz von Vierecken, die den Elementen der initialisierten Matrix 374 entsprechen. Die Vierecke jeder Maske sind um ein mittleres Viereck der Maske symmetrisch. 4A bietet eine Veranschaulichung der beispielhaften initialisierten Matrix 374 und einer beispielhaften Maske 402. Die Maskierungseinrichtung 350 platziert die ausgewählte Maske 402 auf iterative Weise auf die Elemente der initialisierten Matrix 374, sodass die Maskierungseinrichtung 350 während jeder Iteration den Mittelpunkt der Maske auf einem anderen der Elemente der initialisierten Matrix platziert. Die Platzierung der Maske auf der initialisierten Matrix bewirkt, dass eines oder mehrere Elemente der Matrix von der Maske 402 bedeckt werden und ein oder mehrere Matrixelemente nicht von der Maske 402 bedeckt werden. In einigen Beispielen platziert die Maskierungseinrichtung 350 die Maske 402 während einer ersten Iteration so, dass der Maskenmittelpunkt (MASK CTR) auf einem ersten Element (ganz links) der ersten Zeile der initialisierten Matrix positioniert ist. Während einer zweiten Iteration verschiebt die Maskierungseinrichtung 350 die Maske 402 um ein Matrixelement nach rechts, sodass der Maskenmittelpunkt (MASK CTR) über einem zweiten Matrixelement positioniert ist, das ein Element rechts vom ersten Element der ersten Zeile der Matrix und in einer gleichen Zeile (z. B. der ersten Zeile) wie das erste Element ist. In einigen Beispielen fährt die Maskierungseinrichtung 350 fort, die Maske 402 während jeder Iteration auf die beschriebene Weise zu bewegen, bis der Mittelpunkt der Maske (MASK CTR) über dem letzten (ganz rechten) Element in der ersten Zeile der initialisierten Matrix 402 platziert wurde. Zu diesem Zeitpunkt bewegt die Maskierungseinrichtung 350 den Mittelpunkt der Maskenabdeckung, sodass er das erste (ganz linke) Element einer zweiten Zeile der initialisierten Matrix 402 bedeckt. Die Maskierungseinrichtung 350 fährt fort, den Mittelpunkt der Maske auf die beschriebene Weise über die Elemente der initialisierten Matrix zu platzieren (z. B. von links nach rechts durch jedes Element jeder Zeile fortfahrend, bevor sie mit einer nächsten fortlaufenden Zeile der Matrix fortfährt und sich wieder von links nach rechts durch die Zeile bewegt).
  • In einigen Beispielen, zusätzlich zum Bewegen der Maske über die Elemente der initialisierten Matrix 374 auf die oben beschriebene iterative Weise, arbeiten die beispielhafte Wertauswahleinrichtung 360 und die beispielhafte Wertersetzungseinrichtung 370, um die initialisierte Matrix 374 folgendermaßen mit nicht negativen ganzzahligen Werten zu füllen. Nachdem die beispielhafte Maskierungseinrichtung 350 die Maske 402 in einer Iteration auf ein Element der initialisierten Matrix 374 platziert hat, benachrichtigt die Maskierungseinrichtung 350 die Wertauswahleinrichtung 360. Die Wertauswahleinrichtung 360 reagiert auf die Benachrichtigung durch Auswählen eines Werts, der in das Matrixelement zu platzieren ist, über dem der Mittelpunkt der Maske (MASK CTR) positioniert ist. In einigen Beispielen wählt die Wertauswahleinrichtung 360 einen nicht negativen ganzzahligen Wert (z. B. 0, 1, 2, ...) aus. In einigen dieser Beispiele wählt die Wertauswahleinrichtung 360 einen niedrigsten (z. B. 0) der nicht negativen ganzzahligen Werte (z. B. 0, 1, 2, ...) aus, vorausgesetzt, dass sich der niedrigste der nicht negativen ganzzahligen Werte nicht in einem der Matrixelemente befindet, die von der Maske 402 bedeckt sind. Falls sich der niedrigste der nicht negativen ganzzahligen Werte in einem oder mehrere der von der Maske 402 bedeckten Matrixelemente befindet, wählt die Wertauswahleinrichtung 360 einen nächstniedrigsten der nicht negativen ganzzahligen Werte (z. B. 1) aus, vorausgesetzt, dass sich der nächstniedrigste der nicht negativen ganzzahligen Werte nicht in einem der Elemente der initialisierten Matrix 374 befindet, die von der Maske 402 bedeckt sind. Falls sich der nächstniedrigste (z. B. 1) der nicht negativen ganzzahligen Werte in einem oder mehreren der von der Maske 402 bedeckten Matrixelemente befindet, wählt die Wertauswahleinrichtung 360 einen nächstniedrigen (z. B. 2) der nicht negativen ganzzahligen Werte im Vergleich zum letzten nicht negativen ganzzahligen Wert (z. B. 1) aus. Die Wertauswahleinheit 360 fährt auf diese Weise fort, bis ein nicht negativer ganzzahliger Wert, der die Kriterien erfüllt (z. B. ein niedrigster aller möglichen nicht negativen ganzzahligen Werte ist, die sich in einem nicht von der Maske 402 bedeckten Matrixelement befinden), für das vom Maskenmittelpunkt (MASK CTR) bedeckte Matrixelement ausgewählt ist.
  • 4B veranschaulicht die beispielhafte initialisierte Matrix 374, in der der Mittelpunkt der Maske 402 auf einem ersten Element der initialisierten Matrix zentriert ist. 4C veranschaulicht die beispielhafte initialisierte Matrix 374, wobei der Mittelpunkt der Maske 402 auf einem zweiten Element der initialisierten Matrix 374 zentriert ist und 4D veranschaulicht die beispielhafte initialisierte Matrix 374, wobei der Mittelpunkt der Maske auf einem dritten Element der initialisierten Matrix zentriert ist. Wenn die beispielhafte Maskierungseinrichtung 350 während einer ersten Iteration (siehe 4B) die Maske auf die initialisierte Matrix 374 platziert, ist der Mittelpunkt der Maske auf einem ersten Element der initialisierten Matrix angeordnet. Die beispielhafte Wertauswahleinrichtung 360 fährt dann fort, einen Wert zu identifizieren, der in das erste Element der initialisierten Matrix zu platzieren ist. In dieser ersten Iteration wählt die Wertauswahleinrichtung anfänglich die niedrigste nicht negative ganze Zahl aus und ermittelt dann, ob der Wert von null in einem der Elemente der Matrix liegt, die während der ersten Iteration von der Maske bedeckt sind. Wie ersichtlich ist, liegt der Wert von null in mehreren der Elemente der initialisierten Matrix 374, die während der ersten Iteration von der Maske bedeckt sind, sodass die Wertauswahleinrichtung 360 einen im Vergleich zum vorher ausgewerteten nicht negativen ganzzahligen Wert von null nächstniedrigen nicht negativen ganzzahligen Wert (z. B. 1) im Vergleich auswählt. Nun ermittelt die Wertauswahleinrichtung 360, ob irgendwelche der von der Maske 402 bedeckten Elemente der initialisierten Matrix 374 den Wert 1 halten. In diesem Beispiel halten keine der von der Maske bedeckten Elemente einen Wert von 1. Als Ergebnis wählt die Wertauswahleinrichtung den Wert 1 zur Platzierung in das erste Element der initialisierten Matrix 374 aus. Die Wertauswahleinrichtung 360 liefert den ausgewählten Wert von 1 an die Wertersetzungseinrichtung 370, die den aktuell im ersten Element der Matrix gespeicherten Wert von null mit dem Wert 1 ersetzt. Nach Ersetzen des im ersten Element gespeicherten Werts mit einem Wert von 1, benachrichtigt die Wertersetzungseinrichtung 370 die Maskierungseinrichtung 350, die eine zweite Iteration durch Bewegen/Verschieben der Maske 402 beginnt, sodass ein zweites Element der initialisierten Matrix 374 vom Maskenmittelpunkt (MASK CTR) (siehe 4C) bedeckt ist.
  • Die beispielhafte Maskierungseinrichtung 350 benachrichtigt wiederum die beispielhafte Wertauswahleinrichtung 360, die durch Auswählen eines Werts reagiert, der in das zweite Element der initialisierten Matrix 374 zu platzieren ist. Nun auf 4C Bezug nehmend, wählt die Wertauswahleinrichtung 360 zuerst den niedrigsten nicht negativen ganzzahligen Wert von null aus und vergleicht dann den Wert von null mit den von den Elementen der initialisierten Matrix 374 gehaltenen Werten, die von der Maske 402 bedeckt sind. Der Wert von null wird in mindestens einem der Elemente der initialisierten Matrix 374 gehalten, die von der Maske 402 bedeckt sind, sodass die Wertauswahleinrichtung 360 den Nullwert verwirft und stattdessen den nächstniedrigsten nicht negativen ganzzahligen Wert von 1 auswählt. Die Wertauswahleinrichtung 360 ermittelt, dass mindestens eines der Elemente der initialisierten Matrix 360, das von der Maske 402 bedeckt ist, den Wert 1 hält/speichert, sodass die Wertauswahleinrichtung 360 den Wert 1 verwirft und stattdessen den nächstniedrigsten nicht negativen ganzzahligen Wert von 2 auswählt. Als Nächstes ermittelt die Wertauswahleinrichtung 360, dass keines der Elemente der initialisierten Matrix 374, die von der Maske während der aktuellen Iteration bedeckt sind, den Wert von 2 hält/speichert, und wählt deshalb den Wert 2 aus, der in das zweite Matrixelement zu platzieren ist. Die Wertauswahleinrichtung 360 liefert den ausgewählten Wert von 2 an die Wertersetzungseinrichtung 370, die mit einem Ersetzen des aktuell im zweiten Element der initialisierten Matrix 374 gespeicherten Wert von null mit dem Wert 2 reagiert. Nach Ersetzen des im zweiten Element der initialisierten Matrix 374 gespeicherten Nullwerts mit einem Wert von 2, benachrichtigt die Wertersetzungseinrichtung 370 die Maskierungseinrichtung 350, die eine dritte Iteration durch Bewegen/Verschieben der Maske 402 beginnt, sodass ein drittes Element der initialisierten Matrix 374 vom Maskenmittelpunkt (MASK CTR) (siehe 4D) bedeckt ist. Die Maskierungseinrichtung 350 benachrichtigt wiederum die Wertauswahleinrichtung 360, die durch Auswählen eines Werts reagiert, der in das dritte Element der initialisierten Matrix 374 zu platzieren ist.
  • Nun auf 4D Bezug nehmend, wählt die Wertauswahleinrichtung 360 zuerst den niedrigsten nicht negativen ganzzahligen Wert von null aus und vergleicht dann den Wert von null mit den Werten, die von den von der Maske 402 bedeckten Matrixelementen gehalten werden. Der Wert von null wird in mindestens einem der von der Maske bedeckten Matrixelemente gehalten, sodass die Wertauswahleinrichtung 360 den Nullwert verwirft und stattdessen den nächstniedrigsten nicht negativen ganzzahligen Wert von 1 auswählt. Die Wertauswahleinrichtung 360 ermittelt, dass keines der Elemente der Matrix, die von der Maske während der dritten Iteration bedeckt sind, den Wert von 1 hält/speichert, sodass die Wertauswahleinrichtung 360 den Wert 1 auswählt, der in das dritte Element der initialisierten Matrix 374 zu platzieren ist. Der Wert von 1 wird an die Wertersetzungseinrichtung 370 geliefert, die mit einem Ersetzen des aktuell im dritten Element der initialisierten Matrix 374 gespeicherten Nullwert mit dem Wert 1 reagiert.
  • Die beispielhafte Maskierungseinrichtung 350, die beispielhafte Wertauswahleinrichtung 360 und die beispielhafte Wertersetzungseinrichtung 370 fahren fort, auf die oben beschriebene Weise die Elemente der initialisierten Matrix 374 zu maskieren und in den Elementen der initialisierten Matrix 374 gespeicherte Werte auszuwählen/zu ersetzen, bis eine Anzahl von Iterationen, die gleich der Anzahl der Elemente (z. B. „M×N“) der initialisierten Matrix 374 ist, durchgeführt wurde, wobei zu diesem Zeitpunkt alle der Elemente der initialisierten Matrix 374 mit einem von einer Gruppe von nicht negativen ganzzahligen Werten gefüllt wurden, wie in 4E veranschaulicht. Wie unter Bezugnahme auf 4E ersichtlich ist, enthält die gefüllte Matrix 374 zwei Untergliederungen (Teilmengen) von Elementen/Zellen, wobei eine erste Untergliederung allen Elementen/Zellen entspricht, die mit dem Wert 1 gefüllt sind, und eine zweite Untergliederung allen Elementen/Zellen entspricht, die mit dem Wert 2 gefüllt sind. Deshalb können alle der Gleichungen, die den Zellen der nun gefüllten initialisierten Matrix 374 mit einer 1 entsprechen, parallel gelöst werden und alle der Gleichungen, die den Zellen der nun gefüllten initialisierten Matrix 374 mit einer 2 entsprechen, können parallel gelöst werden.
  • Wiederum auf 3 Bezug nehmend, liefert die beispielhafte Wertersetzungseinrichtung 370 die nun gefüllte initialisierte Matrix 374 an die beispielhafte Sammeleinrichtung 330. Die Sammeleinrichtung 330 verwendet die nun gefüllte initialisierte Matrix 374, um die in der mit Gleichungen gefüllten Matrix 311 gespeicherten Gleichungen umzuordnen. In einigen Beispielen greift die Sammeleinrichtung 330 auf die mit Gleichungen gefüllte Matrix 311 zu, die im Identifizierungseinrichtungsspeicher 310 gespeichert ist, und verwendet die mit Gleichungen gefüllte Matrix 311, um die umgeordnete mit Gleichungen gefüllte Matrix 378 zu erstellen. In der umgeordneten mit Gleichungen gefüllten Matrix 378 wurden die in den Elementen der mit Gleichungen gefüllten Matrix 311 gespeicherten Gleichungen auf Grundlage des Inhalts der nun gefüllten initialisierten Matrix 374 umgeordnet. In einigen derartigen Beispielen sind die Elemente der mit Gleichungen gefüllten Matrix 311 mit einem gleichen nicht negativen ganzzahligen Wert in der nun gefüllten initialisierten Matrix 374 zusammen in der umgeordneten mit Gleichungen gefüllten Matrix 378 gruppiert. In einigen derartigen Beispielen werden alle der Elemente der mit Gleichungen gefüllten Matrix 374 mit einem Wert von 1 in einem an der gleichen Position befindlichen Element in der nun gefüllten initialisierten Matrix 374 zusammen in einer Gruppe von Zeilen der umgeordneten mit Gleichungen gefüllten Matrix 378 gesammelt. Gleichermaßen werden alle der in der mit Gleichungen gefüllten Matrix 311 gespeicherten Gleichungen mit einem Wert von 2 in einem an der gleichen Position befindlichen Element in der nun gefüllten initialisierten Matrix 374 in einer Gruppe von Zeilen der umgeordneten mit Gleichungen gefüllten Matrix 374 gesammelt. Die Sammeleinrichtung 330 fährt fort, die restlichen Gleichungen auf diese Weise zu sammeln, bis alle der Gleichungen in der mit Gleichungen gefüllten Matrix 311 zusammen in Übereinstimmung mit den entsprechenden Elementen der nun gefüllten initialisierten Matrix 374 gesammelt worden sind und in der umgeordneten mit Gleichungen gefüllten Matrix 378 gespeichert sind. Die Sammeleinrichtung 330 liefert dann die umgeordnete mit Gleichungen gefüllte Matrix 378, in der die Gleichungen auf die beschriebene Weise zusammen gesammelt/gruppiert wurden, an den bzw. die beispielhafte(n) Prozessor(en) für schrittweise Überrelaxation 230 (siehe 2). Der bzw. die Prozessor(en) für schrittweise Überrelaxation 230 löst bzw. lösen die in einer gleichen Zeile der umgeordneten mit Gleichungen gefüllten Matrix 378 enthaltenen Gleichungen unter Verwendung von SIMD-Prozessoren, Programmierung mit mehreren Threads usw. parallel. Das parallele Lösen der in der gleichen Zeile der umgeordneten mit Gleichungen gefüllten Matrix 378 enthaltenen Gleichungen reduziert die Verarbeitungszeit stark, die zum Lösen aller der Gleichungen der umgeordneten mit Gleichungen gefüllten Matrix 378 erforderlich ist, wodurch die Computervisionsverbesserungseinrichtung 120 zur Verwendung in Echtzeit-Computervisionsverarbeitungsanwendungen geeignet gemacht wird.
  • Im veranschaulichten Beispiel werden die Lösungswerte von dem bzw. den beispielhaften Prozessor(en) für schrittweise Überrelaxation 230 an die beispielhafte Umordnungsverwaltung 380 der beispielhaften Gleichungsparallelisierungseinheit 220 geliefert. In einigen Beispielen speichert die Umordnungsverwaltung 380 die Lösungswerte in einer beispielhaften, mit Lösungen gefüllten Matrix 386 im beispielhaften Umordnungsspeicher 382. Die Umordnungsverwaltung 380 bewegt die in den Elementen der mit Lösungen gefüllten Matrix 386 enthaltenen Lösungswerte in Elemente (ordnet diese um), die die entsprechenden Gleichungen eingenommen haben, bevor sie von der beispielhaften Sammeleinrichtung 330 zusammen gesammelt wurden. In einigen Beispielen bilden die endgültigen umgeordneten Lösungswerte der mit Lösungen gefüllten Matrix 386 (die als die beispielhafte umgeordnete Matrix 384 gespeichert sind) ein verbessertes Bild/Video, das nachfolgend von der Verbesserungssteuerung 240 an die beispielhafte Computervisionsanalyseeinrichtung 130 (siehe 1) zur Verwendung beim Durchführen beliebiger der oben beschriebenen Handlungen gesendet wird.
  • Während in 2 und in 3 eine beispielhafte Art und Weise zum Implementieren der Computervisionsverbesserungseinrichtung 120 von 1 veranschaulicht ist, können eines oder mehrere der in 2 und 3 veranschaulichten Elemente, Prozesse und/oder Vorrichtungen auf beliebige andere Weise kombiniert, aufgeteilt, umgeordnet, weggelassen, eliminiert und/oder implementiert werden. Ferner können der beispielhafte Bild-/Videodatenspeicher 210, die beispielhafte Gleichungsparallelisierungseinrichtung 220, die beispielhaften Prozessoren für schrittweise Überrelaxation 230, die beispielhafte Verbesserungssteuerung 240, die beispielhafte Identifizierungseinrichtung 308, der beispielhafte Identifizierungseinrichtungsspeicher 310, die beispielhafte Partitionierungseinrichtung 320, die beispielhafte Sammeleinrichtung 330, die beispielhafte Matrixinitialisierungseinrichtung 340, die beispielhafte Maskierungseinrichtung 350, die beispielhafte Wertauswahleinrichtung 360, die beispielhafte Wertersetzungseinrichtung 370, der beispielhafte Initialisierungseinrichtungsspeicher 372, die beispielhafte Umordnungsverwaltung 380, der beispielhafte Sammelspeicher 376, der beispielhafte Umordnungsspeicher 382 und/oder allgemeiner die beispielhafte Computervisionsverbesserungseinrichtung 120 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Deshalb können zum Beispiel beliebige des beispielhaften Bild-/Videodatenspeichers 210, der beispielhaften Gleichungsparallelisierungseinrichtung 220, der beispielhaften Prozessoren für schrittweise Uberrelaxation 230, der beispielhaften Verbesserungssteuerung 240, der beispielhaften Identifizierungseinrichtung 308, des beispielhaften Identifizierungseinrichtungsspeichers 310, der beispielhaften Partitionierungseinrichtung 320, der beispielhaften Sammeleinrichtung 330, der beispielhaften Matrixinitialisierungseinrichtung 340, der beispielhaften Maskierungseinrichtung 350, der beispielhaften Wertauswahleinrichtung 360, der beispielhaften Wertersetzungseinrichtung 370, des beispielhaften Initialisierungseinrichtungsspeichers 372, des beispielhaften Sammelspeichers 376, der beispielhaften Umordnungsverwaltung 380, des beispielhaften Umordnungsspeichers 382 oder allgemeiner der beispielhaften Computervisionsverbesserungseinrichtung 120 durch einen oder mehrere analoge oder digitale Schaltkreise, Logikschaltkreise, programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC(s)), programmierbare Logikvorrichtungen (PLD(s)) und/oder feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Wenn irgendwelche der Einrichtungs-oder Systemansprüche dieses Patents so gelesen werden, dass sie eine reine Software- und/oder Firmware-Implementierung abdecken, ist bzw. sind mindestens eine der beispielhaften Computervisionsverbesserungseinrichtung 120, des beispielhaften Bild-/Videodatenspeichers 210, der beispielhaften Gleichungsparallelisierungseinrichtung 220, der beispielhaften Prozessoren für schrittweise Überrelaxation 230, der beispielhaften Verbesserungssteuerung 240, der beispielhaften Identifizierungseinrichtung 308, des beispielhaften Identifizierungseinrichtungsspeichers 310, der beispielhaften Partitionierungseinrichtung 320, der beispielhaften Sammeleinrichtung 330, der beispielhaften Matrixinitialisierungseinrichtung 340, der beispielhaften Maskierungseinrichtung 350, der beispielhaften Wertauswahleinrichtung 360, der beispielhaften Wertersetzungseinrichtung 370, der beispielhaften Umordnungsverwaltung 380, des beispielhaften Sammelspeichers 376 und/oder des beispielhaften Umordnungsspeichers 382 hierdurch ausdrücklich als eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte wie einen Arbeitsspeicher, eine Digital Versatile Disk (DVD), eine Compact-Disk (CD), eine Blu-ray Disk usw. enthaltend definiert, einschließlich der Software und/oder Firmware. Darüber hinaus kann die beispielhafte Computervisionsverbesserungseinrichtung 120 von 1 zusätzlich zu oder statt des bzw. der in 2 und 3 veranschaulichten ein oder mehrere Elemente, einen oder mehrere Prozesse und/oder eine oder mehrere Vorrichtungen enthalten und/oder kann mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen enthalten.
  • Für beispielhafte maschinenlesbare Anweisungen repräsentative Ablaufdiagramme zum Implementieren der Computervisionsverbesserungseinrichtung 120 von 1 und 2 sind in 5 und 6 gezeigt. In diesen Beispielen umfassen die maschinenlesbaren Anweisungen ein Programm zur Ausführung durch einen Prozessor wie den Prozessor 712, der in der beispielhaften Prozessorplattform 700 gezeigt ist, die unten in Verbindung mit 7 besprochen wird. Das Programm kann in auf einem nichtflüchtigen computerlesbaren Speichermedium wie einer CD-ROM, einer Diskette, einer Festplatte, einer Digital Versatile Disk (DVD), einer Blu-ray Disk oder einem mit dem Prozessor 712 verbundenen Arbeitsspeicher gespeicherter Software ausgebildet sein, aber das gesamte Programm und/oder Teile davon könnten alternativ von einer anderen Vorrichtung als dem Prozessor 712 ausgeführt werden und/oder in Firmware oder dedizierter Hardware ausgebildet sein. Ferner, obwohl das beispielhafte Programm in Bezug auf die in 5 und 6 veranschaulichten Ablaufdiagramme beschrieben ist, können alternativ viele andere Verfahren zum Implementieren der beispielhaften Computervisionsverbesserungseinrichtung 120 verwendet werden. Die Reihenfolge der Ausführung der Blöcke kann zum Beispiel geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch einen oder mehrere Hardwareschaltkreise (z. B. diskrete und/oder integrierte analoge und/oder digitale Verschaltung, ein feldprogrammierbares Gatearray (FPGA), einen anwendungsspezifischen integrierten Schaltkreis (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), einen Logikschaltkreis usw.) implementiert sein, die strukturiert sind, die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen.
  • Wie oben erwähnt, können die beispielhaften Prozesse von 5 und 6 unter Verwendung von codierten Anweisungen (z. B. computer- und/oder maschinenlesbaren Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium wie einem Festplattenlaufwerk, einem Flashspeicher, einem Nur-Lese-Speicher, einer Compact-Disk, einer Digital Versatile Disk, einem Zwischenspeicher, einem Speicher mit wahlfreiem Zugriff und/oder einer beliebigen anderen Speichervorrichtung oder Speicherplatte gespeichert sind, auf der Informationen für eine beliebige Dauer gespeichert sind (z. B. für längere Zeiträume, dauerhaft, für kurze Augenblicke, zum temporären Puffern und/oder zum Zwischenspeichern der Informationen). Wie hierin verwendet, ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich definiert, alle Typen von computerlesbarer Speichereinrichtung und/oder Speicherplatte zu enthalten und sich ausbreitende Signale auszuschließen und Sendemedien auszuschließen. „Einschließen“ und „umfassen“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Immer wenn ein Anspruch irgendetwas auflistet, das irgendeiner Form von „einschließen“ oder „umfassen“ folgt (z. B. umfasst, umfasst, umfasst, einschließlich usw.), versteht sich, dass zusätzliche Elemente, Ausdrücke usw. vorhanden sein können, ohne in den Schutzbereich des entsprechenden Anspruchs zu fallen. Wenn hier der Begriff „mindestens“ als Übergangsbegriff in einem Oberbegriff eines Anspruchs verwendet wird, ist er in der gleichen Weise offen, wie die Begriffe „umfassend“ und „enthalten“ offen sind.
  • Das Programm 500 von 5 beginnt bei Block 502, bei dem die beispielhafte Verbesserungssteuerung 240 (siehe 2) auf einen Satz von Bild-/Videodaten zugreift, die im beispielhaften Bild-/Videodatenspeicher 210 gespeichert sind, und identifiziert eine auf die Bild-/Videodaten anzuwendende Verbesserungstechnik. Wie oben beschrieben kann die Verbesserungstechnik Beliebiges von Glätten, Tiefenfüllung, Blenden, Kolorieren usw. enthalten. Die Bild-/Videodaten sind als eine Bild-/Videodatenmatrix gespeichert und die in den Elementen der Bild-/Videodatenmatrix gespeicherten Bild-/Videodaten sind Pixel oder Voxel, die zusammen ein Bild oder einen Videorahmen bilden. In einigen Beispielen hat die Bild-/Videodatenmatrix M × N Dimensionen.
  • Auf Grundlage der anzuwendenden Verbesserungstechnik identifiziert die Identifizierungseinrichtung 308 der beispielhaften Gleichungsparallelisierungseinrichtung 220 (siehe 2) einen Satz von Gleichungen, der in Verbindung mit den Bild-/Videodaten (Block 504) zu lösen ist. In einigen Beispielen erstellt die Identifizierungseinrichtung 308 eine Matrix, die die Gleichungen mit den gleichen Dimensionen wie die Matrix von Bild-/Videodaten enthält. Die beispielhafte Partitionierungseinrichtung 320 der Gleichungsparallelisierungseinrichtung 220 identifiziert die in der mit Gleichungen gefüllten Matrix enthaltenen Gleichungen, die parallel gelöst werden können (Block 506). Nachdem die Partitionierungseinrichtung 320 die zu verarbeitenden (z. B. zu lösenden) Gleichungen identifiziert, ordnet die beispielhafte Sammeleinrichtung 330 der Gleichungsparallelisierungseinrichtung 220 die identifizierten Gleichungen auf eine Weise, die ein gleichzeitiges Liefern von parallel zu lösenden Gleichungen an die beispielhaften Prozessoren für schrittweise Überrelaxation 230 (Block 508) ermöglicht. In einigen Beispielen sammelt die Sammeleinrichtung 330 die Gleichungen, die parallel gelöst werden können, in eine gleiche Zeile oder Gruppen von Zeilen der mit Gleichungen gefüllten Matrix. Die Sammeleinrichtung 330 liefert die neu geordneten Gleichungen (in der Matrix) auf die Prozessoren für schrittweise Überrelaxation 230 (Block 510). In einigen Beispielen werden die Gleichungen an die Prozessoren für schrittweise Überrelaxation 230 in einer Matrix geliefert, die so formatiert ist, dass alle der in einer gleichen Zeile enthaltenen Gleichungen parallel zu lösen sind. In einigen Beispielen werden die Gleichungen so an die Prozessoren für schrittweise Uberrelaxation 230 geliefert, dass alle Gleichungen, die in mehreren der Zeilen enthalten sind, parallel zu lösen sind. Die Prozessoren für schrittweise Überrelaxation 230 lösen die von der Gleichungsparallelisierungseinrichtung 220 (Block 512) gelieferten Gleichungen, um eine Matrix mit Lösungsdaten (z. B. die mit Lösungen gefüllte Matrix 386) zu erzeugen. In einigen Beispielen sind die Prozessoren für schrittweise Überrelaxation 230 ausgelegt, Gleichungen gleichzeitig (z. B. parallel) zu verarbeiten, die in der gleichen Zeile oder mehreren Zeilen enthalten sind. Die beispielhaften Prozessoren für schrittweise Uberrelaxation 230 liefern die Matrix mit Lösungsdaten an eine Lösungsumordnungsverwaltung 380 der beispielhaften Gleichungsparallelisierungseinrichtung 220. Sobald die Gleichungen gelöst sind, stellen die resultierenden Lösungsdaten eine verbesserte Version der ursprünglichen im Bild-/Videodatenspeicher 210 gespeicherten Bild-/Videodaten dar. Die Lösungsumordnungsverwaltung 380 ordnet die Reihenfolge der Lösungsdaten in der mit Lösungen gefüllten Matrix 386 neu, sodass sie mit der Reihenfolge der Bild-/Voxeldaten in der Bild-/Videomatrix 215 übereinstimmt, die im Bild-/Videodatenspeicher 210 gespeichert ist (Block 514). Falls deshalb die erste Gleichung, die dem ersten Element der mit Gleichungen gefüllten Matrix 311 entspricht (siehe 3) während des Parallelisierungsprozesses vom ersten Element der mit Gleichungen gefüllten Matrix 311 zu einem zweiten Element der mit Gleichungen gefüllten Matrix 311 bewegt wurde, dann werden die im zweiten Element der mit Lösungen gefüllten Matrix 386 gespeicherten Lösungsdaten zum ersten Element der umgeordneten Matrix 384 bewegt. Die in der umgeordneten Matrix 384 gespeicherten umgeordneten Lösungsdaten bilden das verbesserte Bild/Video. Danach werden die umgeordneten Lösungsdaten (z. B. verbesserte Bild-/Videodaten) durch die Verbesserungssteuerung 240 (siehe 2) zur Verwendung zum Analysieren des Subjekts der Bild-/Videodaten und/oder zum Durchführen von Handlungen auf Grundlage des Subjekts der Bild-/Videodaten an die Computervisionsanalyseeinrichtung 130 (siehe 1) geliefert (Block 516). Wie oben beschrieben kann das Durchführen von Handlungen auf Grundlage des Subjekts der Bild-/Videodaten eine beliebige Anzahl von Handlungen wie ein Aktualisieren eines Informationsberichts über das Subjekt, Betätigen eines oder mehrerer Servomotoren über einen oder mehrere Servomotorantriebe, Bereitstellen einer Benachrichtigung in Bezug auf das Vorhandensein des Subjekts an ein Sicherheitsüberwachungssystem usw. Nachdem die verbesserten Bild-/Videodaten an die Computervisionsanalyseeinrichtung 130 geliefert wird und/oder eine oder mehrere Handlungen auf Grundlage des verbesserten Bilds getätigt werden, endet das Programm.
  • Das Programm 600 von 6 repräsentiert die beispielhaften Operationen, die von der beispielhaften Partitionierungseinrichtung 320 (siehe 3) der beispielhaften Gleichungsparallelisierungseinrichtung 220 durchgeführt werden (siehe 2 und 3). 6 ist eine beispielhafte Implementierung des Blocks 506 und des Blocks 508 des Programms 500 von 5. In einigen Beispielen beginnt das Programm 600 bei Block 602, wo die beispielhafte Matrixinitialisierungseinrichtung 340 (siehe 3) eine Matrix (z. B. die initialisierte Matrix 374) mit den gleichen Dimensionen wie die Bild-/Videomatrix 215 (siehe 2) (z. B. M × N) nur mit Nullwerten initialisiert (z. B. hält jedes Element der initialisierten Matrix 374 eine Null). In einigen Beispielen setzt die Matrixinitialisierungseinrichtung 340 auch einen Iterationszähler „i“ gleich null und benachrichtigt dann die beispielhafte Maskierungseinrichtung 350 (siehe 3), dass die Initialisierung der initialisierten Matrix 374 abgeschlossen ist.
  • Die beispielhafte Maskierungseinrichtung 350 (siehe 3) reagiert auf die Benachrichtigung durch schrittweises Erhöhen des Iterationszählers um einen Wert von 1 und nachfolgendes Ermitteln, ob der Iterationszähler „i“ gleich „M × N“ ist (Block 604). Falls der Iterationszähler „i“ nicht gleich M × N ist, definiert die Maskierungseinrichtung 350 eine Maske, die auf die Elemente/Zellen der initialisierten Matrix 374 anzuwenden ist, und platziert die Maske auf die initialisierte Matrix (Block 606). Die Maske wird auf Grundlage des zu lösenden Verarbeitungsproblems ausgewählt (z. B. des Typs der anzuwendenden Verbesserung) und spiegelt die Abhängigkeit/Nachbarschaftsbeziehung zwischen den Pixeln/Voxeln in den Bild-/Videodaten und ihren umgebenden Pixeln/Voxeln wider, die durch die Matrix A definiert ist. Wie oben beschrieben entspricht eine größere Maske einer stärkeren Abhängigkeit und eine kleinere Maske entspricht einer schwächeren Abhängigkeit. Bei Block 606 platziert die Maskierungseinrichtung 350 die Maske auf die initialisierte Matrix 374, sodass der Mittelpunkt der Maske auf dem „i-ten“ Element/der „i-ten“ Zelle der initialisierten Matrix angeordnet ist. Darüber hinaus benachrichtigt die Maskierungseinrichtung 350 die beispielhafte Wertauswahleinrichtung 360, dass die Maske platziert ist (ebenfalls bei Block 606). Die Wertauswahleinrichtung 360 reagiert auf die Benachrichtigung durch Auswählen eines Werts, der in das Matrixelement zu platzieren ist, über dem sich der Maskenmittelpunkt (MASK CTR) (siehe 4A) während der entsprechenden (z. B. „i-ten“) Iteration (Block 608) befindet. In einigen Beispielen wählt die Wertauswahleinrichtung 360 einen nicht negativen ganzzahligen Wert (z. B. 0, 1, 2, ...) aus. In einigen dieser Beispiele wählt die Wertauswahleinrichtung 360 einen niedrigsten (z. B. 0) der nicht negativen ganzzahligen Werte (z. B. 0, 1, 2, ...) aus, vorausgesetzt, dass sich der niedrigste der nicht negativen ganzzahligen Werte nicht in einem der Elemente der initialisierten Matrix 374 befindet, die aktuell von der Maske bedeckt sind. Falls sich der niedrigste der nicht negativen ganzzahligen Werte in einem oder mehrere der von der Maske bedeckten Elemente der initialisierten Matrix 374 befindet, wählt die Wertauswahleinrichtung 360 einen nächstniedrigsten der nicht negativen ganzzahligen Werte (z. B. 1) aus, vorausgesetzt, dass sich der nächstniedrigste der nicht negativen ganzzahligen Werte nicht in einem der Elemente der initialisierten Matrix 374 befindet, das/die von der Maske bedeckt ist/sind. Falls sich der nächstniedrigste (z. B. 1) der nicht negativen ganzzahligen Werte in einem oder mehreren der von der Maske bedeckten Matrixelemente befindet, wählt die Wertauswahleinrichtung 360 einen nächstniedrigen (z. B. 2) der nicht negativen ganzzahligen Werte im Vergleich zum letzten nicht negativen ganzzahligen Wert (z. B. 1) aus. Die Wertauswahleinheit 360 fährt auf diese Weise fort, bis ein nicht negativer ganzzahliger Wert, der die Kriterien erfüllt (z. B. ein niedrigster aller möglichen nicht negativen ganzzahligen Werte ist, die sich in einem nicht von der Maske bedeckten Matrixelement befinden), für das vom Maskenmittelpunkt (MASK CTR) bedeckte Element der initialisierten Matrix 374 ausgewählt ist.
  • Nach Auswählen des nicht negativen ganzzahligen Werts liefert die Wertauswahleinrichtung 360 den ausgewählten Wert von 1 an die Wertersetzungseinrichtung 370, die den aktuell im ersten Element der Matrix gespeicherten Wert von null mit dem Wert 1 ersetzt (Block 610).
  • Nach Ersetzen des im „i-ten“ Element gespeicherten Nullwerts mit einem ausgewählten Wert, ermittelt die Wertersetzungseinrichtung 370, ob zusätzliche Elemente der initialisierten Matrix zu verarbeiten sind, durch Ermitteln, ob der Iterationszähler „i“ gleich „M × N“ ist (ebenfalls bei Block 612). Falls nicht, gibt es zusätzliche Elemente/Zellen der initialisierten Matrix 374, die zu verarbeiten sind, und das Programm 600 kehrt zum Block 604 zurück, wo der Iterationszähler wiederum schrittweise erhöht wird. Die Blöcke 604-610 werden wiederholt, bis alle der Elemente/Zellen der initialisierten Matrix verarbeitet worden sind.
  • Wenn alle der Elemente/Zellen verarbeitet wurden (z. B. „i“ = M×N), liefert die beispielhafte Wertaustauscheinrichtung 370 die initialisierte Matrix, die mit nichtnegativen ganzzahligen Werten gefüllt wurde, (nun als die nun gefüllte initialisierte Matrix 374 bezeichnet) an die beispielhafte Sammeleinrichtung 330. Die beispielhafte Sammeleinrichtung 330 verwendet die nun gefüllte initialisierte Matrix 374, um den Inhalt der Elemente/Zellen der mit Gleichungen gefüllten Matrix umzuordnen (Block 614). In einigen Beispielen bewirkt die Sammeleinrichtung 330, dass die in den Elementen der mit Gleichungen gefüllten Matrix 311 gespeicherten Gleichungen auf Grundlage des Inhalts der nun gefüllten initialisierten Matrix 374 umgeordnet werden. In einigen derartigen Beispielen sind die Elemente der mit Gleichungen gefüllten Matrix 311 mit einem gleichen nicht negativen ganzzahligen Wert in der gefüllten Matrix zusammen in der mit Gleichungen gefüllten Matrix 311 gesammelt/gruppiert. In einigen derartigen Beispielen werden alle der Elemente der mit Gleichungen gefüllten Matrix 311 mit einem Wert von 1 in einem an der gleichen Position befindlichen Element in der gefüllten Matrix in einer Gruppe von Zeilen der mit Gleichungen gefüllten Matrix zusammengesammelt. Gleichermaßen werden alle der in der mit Gleichungen gefüllten Matrix 311 gespeicherten Gleichungen mit einem Wert von 2 in einem an der gleichen Position befindlichen Element in der nun gefüllten initialisierten Matrix 374 in einer Gruppe von Zeilen der mit Gleichungen gefüllten Matrix 311 gesammelt. Die Sammeleinrichtung 330 fährt fort, die restlichen Gleichungen zu sammeln, bis alle der Gleichungen in Übereinstimmung mit den entsprechenden Elementen der nun gefüllten Matrix 374 zusammengesammelt wurden. In einigen Beispielen speichert die Sammeleinrichtung 330 die umgeordneten Gleichungen in der umgeordneten mit Gleichungen gefüllten Matrix 378 im Sammelspeicher 376. Die in der umgeordneten mit Gleichungen gefüllten Matrix 378 gespeicherten Gleichungen sind nun zur Lösung bereit, sodass die Gleichungen, die der gleichen Zeile der umgeordneten mit Gleichungen gefüllten Matrix 378 entsprechen, parallel gelöst werden können, und das Programm 600 endet.
  • 7 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 700, die fähig ist, die Anweisungen von 5 und 6 auszuführen, um die Vorrichtung von 2 und 3 zu implementieren. Die Prozessorplattform 700 kann beispielsweise ein Server, ein Personalcomputer, eine mobile Vorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie ein iPad™), ein Roboter, ein unbemanntes Luftfahrzeug (UAV), ein Fertigungssteuerungsprozessor oder ein beliebiger anderer Typ von Rechenvorrichtung sein.
  • Die Prozessorplattform 700 des illustrierten Beispiels enthält einen Prozessor 712. Der Prozessor 712 des illustrierten Beispiels ist Hardware. Der Prozessor 712 kann zum Beispiel durch einen oder mehrere integrierte Schaltkreise, Logikschaltkreise, Mikroprozessoren oder Steuerungen einer beliebigen gewünschten Familie oder von einem beliebigen gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor 712 die beispielhafte Computervisionsverbesserungseinrichtung 120, die beispielhafte Gleichungsparallelisierungseinrichtung 220, den beispielhaften Prozessor für schrittweise Überrelaxation 230, die beispielhafte Verbesserungssteuerung 240, die beispielhafte Identifizierungseinrichtung 308, die beispielhafte Matrixinitialisierungseinrichtung 340, die beispielhafte Maskierungseinrichtung 350, die beispielhafte Wertauswahleinrichtung 360, die beispielhafte Wertersetzungseinrichtung 370, die beispielhafte Umordnungsverwaltung 380 und die beispielhafte Sammeleinrichtung 330.
  • Der Prozessor 712 des veranschaulichten Beispiels enthält einen lokalen Arbeitsspeicher 713 (z. B. einen Zwischenspeicher). Der Prozessor 712 des veranschaulichten Beispiels steht über einen Bus 718 in Kommunikation mit einem Hauptarbeitsspeicher, der einen flüchtigen Arbeitsspeicher 714 und einen nichtflüchtigen Arbeitsspeicher 716 enthält. Der flüchtige Arbeitsspeicher 714 kann durch synchronen dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (SDRAM), dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM), dynamischen RAMBUS-Arbeitsspeicher mit wahlfreiem Zugriff (RDRAM) und/oder einen beliebigen anderen Typ von Arbeitsspeichervorrichtung mit wahlfreiem Zugriff implementiert sein. Der nichtflüchtige Arbeitsspeicher 716 kann durch Flashspeicher und/oder einen beliebigen anderen Typ von Arbeitsspeichervorrichtung implementiert sein. Zugriff auf den Hauptarbeitsspeicher 714, 716 wird durch eine Arbeitsspeichersteuerung gesteuert. In diesem Beispiel implementieren beliebige vom flüchtigen Arbeitsspeicher 714, nichtflüchtigen Arbeitsspeicher 716 und/oder dem lokalen Arbeitsspeicher 713 beliebige des beispielhaften Bild-/Videodatenspeichers 210, des beispielhaften Identifizierungseinrichtungsspeichers 310, des beispielhaften Initialisierungseinrichtungsspeichers 372, des beispielhaften Sammelspeichers 376 und des beispielhaften Umordnungsspeichers 382.
  • Die Prozessorplattform 700 des illustrierten Beispiels enthält auch einen Schnittstellenschaltkreis 720. Der Schnittstellenschaltkreis 720 kann durch einen beliebigen Typ von Schnittstellenstandard, wie einer Ethernet-Schnittstelle, einer Universal-Serial-Bus(USB)- und/oder einer PCI-Express-Schnittstelle implementiert sein.
  • Im veranschaulichten Beispiel sind die eine oder die mehreren Eingabevorrichtungen 722 mit dem Schnittstellenschaltkreis 720 verbunden. Die Eingabevorrichtung(en) 722 ermöglicht bzw. ermöglichen einem Benutzer, Daten und/oder Befehle in den Prozessor 712 einzugeben. Die Eingabevorrichtung(en) kann bzw. können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kammer (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Berührungsbildschirm, ein Tastfeld, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabevorrichtungen 724 sind ebenfalls mit dem Schnittstellenschaltkreis 720 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 724 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine lichtemittierende Diode (LED), eine organische lichtemittierende Diode (OLED), eine Flüssigkristallanzeige, eine Kathodenstrahlröhrenanzeige (CRT), einen Berührungsbildschirm, eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher) implementiert sein. Der Schnittstellenschaltkreis 720 des veranschaulichten Beispiels enthält deshalb üblicherweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor.
  • Der Schnittstellenschaltkreis 720 des veranschaulichten Beispiels enthält auch eine Kommunikationsvorrichtung wie einen Sender, einen Empfänger, einen Sende-Empfänger, ein Modem und/oder eine Netzwerkschnittstellenkarte, um einen Austausch von Daten mit externen Maschinen (z. B. Recheneinrichtungen irgendeiner Art) über ein Netzwerk 726 (z. B. eine Ethernet-Verbindung, einen digitalen Teilnehmeranschluss (DSL), eine Telefonleitung, ein Koaxialkabel, ein Mobiltelefonsystem usw.) zu ermöglichen.
  • Die Prozessorplattform 700 des veranschaulichten Beispiels enthält auch eine oder mehrere Massenspeichervorrichtungen 728 zum Speichern von Software und/oder Daten. Beispiele derartiger Massenspeichervorrichtungen 728 enthalten Diskettenlaufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Blu-ray-Plattenlaufwerke, RAID-Systeme und Digital-Versatile-Disk(DVD)-Laufwerke. In diesem Beispiel kann der Massenspeicher 728 auch beliebige des beispielhaften Bild-/Videodatenspeichers 210, des beispielhaften Identifizierungseinrichtungsspeichers 310, des beispielhaften Initialisierungseinrichtungsspeichers 372, des beispielhaften Sammelspeichers 376 und des beispielhaften Umordnungsspeichers 382 implementieren.
  • Die codierten Anweisungen 732 der 5 und 6 können in der Massenspeichervorrichtung 728, im flüchtigen Arbeitsspeicher 714, im nichtflüchtigen Arbeitsspeicher 716 und/oder auf einem entfernbaren greifbaren computerlesbaren Speichermedium wie einer CD oder DVD gespeichert sein.
  • Aus dem Vorstehenden ist ersichtlich, dass beispielhafte Verfahren, Einrichtungen und Fabrikate offenbart wurden, die die Zeit reduzieren, die zum Verbessern von Bild-/Videodaten in einem Computervisionsverarbeitungssystem erforderlich ist. Offenbarte Verfahren, Einrichtungen und Fabrikate erreichen diese Reduktion der Verarbeitungszeit durch Untergliedern eines Satzes linearer Gleichungen in Teilmengen, die parallel gelöst werden können. Die Teilmengen der Gleichungen werden an einen Satz von einem oder mehreren Prozessoren für schrittweise Überrelaxation zum parallelen Lösen geliefert. Durch paralleles Lösen von zumindest einigen der Gleichungen werden die Bild-/Videodaten viel schneller verarbeitet, was die Nutzung von Computervisionssystemen auf Basis von Prozessoren mit schrittweiser Überrelaxation in Echtzeit- und/oder Fast-Echtzeit-Anwendungen ermöglicht.
  • Hierin werden die folgenden weiteren Beispiele offenbart.
    • Beispiel 1 ist eine Vorrichtung zum Vorbereiten eines Gleichungssatzes für einen Prozessor für schrittweise Überrelaxation und enthält eine Identifizierungseinrichtung zum Identifizieren des Gleichungssatzes. Jeweilige Gleichungen des Satzes der Gleichungen entsprechen jeweiligen Pixeln eines Eingabebilds. Die Vorrichtung enthält auch eine Partitionierungseinrichtung, um den Gleichungssatz in Untergliederungen aufzuteilen, die wechselseitig unabhängige Teilmengen der Gleichungen enthalten. Eine Sammeleinrichtung der Vorrichtung sammelt die Teilmengen des Gleichungssatzes auf Grundlage der Untergliederungen in Gruppen, und die in einer Gruppe enthaltenen Gleichungen sind parallel durch den Prozessor für schrittweise Überrelaxation zu lösen.
    • Beispiel 2 ist die Vorrichtung von Beispiel 1, wobei jeweilige des Gleichungssatzes in jeweiligen Elementen einer Matrix gespeichert sind und die Sammeleinrichtung die Teilmengen des Gleichungssatzes durch Neupositionieren der Gleichungen in der Matrix in Gruppen anzusammeln hat.
    • Beispiel 3 ist die Vorrichtung von Beispiel 1. In Beispiel 3 enthält die Partitionierungseinrichtung eine Matrixinitialisierungseinrichtung, um Elemente einer Matrix mit null zu initialisieren, eine Maskierungseinrichtung, um die Werte der Matrix über einen Iterationssatz schrittweise zu maskieren, eine Wertauswahleinrichtung, um von null verschiedene Werte schrittweise für jeweilige der Elemente der Matrix auf Grundlage von Werten der Teilmengen der von der Maske maskierten Elemente auszuwählen und eine Wertersetzungseinrichtung, um die Nullwerte der Matrix mit den von der Wertauswahleinrichtung ausgewählten, von null verschiedenen Werten zu ersetzen.
    • Beispiel 4 ist die Vorrichtung von Beispiel 3, wobei die Maskierungseinrichtung die Werte der Matrix durch Definieren einer eine Form aufweisenden Maske und Platzieren des Mittelpunkts der Maske über jeweilige Matrixwerte während jeweiliger Iterationen zu maskieren hat.
    • Beispiel 5 ist die Vorrichtung von Beispiel 4, wobei die Form durch einen Typ von Pixelnachbarschaftsbeziehung definiert ist.
    • Beispiel 6 ist die Vorrichtung von einem der Beispiele 3 und 4, wobei die Matrix eine erste Matrix ist und der Gleichungssatz in einer zweiten Matrix angeordnet wird, wenn er von der Identifikationseinrichtung identifiziert ist. In der Vorrichtung von Beispiel 6 weisen die erste Matrix und die zweite Matrix die gleichen Dimensionen auf und die Sammeleinrichtung hat die Teilmengen des Gleichungssatzes in Gruppen durch Neupositionieren jeweiliger Gleichungen des Gleichungssatzes in der zweiten Matrix auf Grundlage der in jeweils entsprechenden Positionen der ersten Matrix gespeicherten, von null verschiedenen Werten anzusammeln.
    • Beispiel 7 ist die Vorrichtung von Beispiel 6, wobei die Sammeleinrichtung die jeweiligen des Gleichungssatzes neu zu positionieren hat, indem sie die jeweiligen des Gleichungssatzes, die einem ersten, von null verschiedenen Wert entsprechen, in einen ersten Satz von Zeilen der zweiten Matrix platziert und die jeweiligen des Gleichungssatzes, die einem zweiten, von null verschiedenen Wert entsprechen, in einen zweiten Satz von Zeilen platziert. In Beispiel 7 sind der erste und der zweite Satz von Zeilen verschiedene Sätze von Zeilen.
    • Beispiel 8 ist bzw. sind ein oder mehrere nichtflüchtige maschinenlesbare Speichermedien, das bzw. die maschinenlesbare Anweisungen enthält bzw. enthalten, die, wenn sie ausgeführt werden, bewirken, dass ein oder mehrere Prozessor zumindest einen zu lösenden Gleichungssatz identifiziert. In Beispiel 8 entsprechen jeweilige Gleichungen des Satzes der Gleichungen jeweiligen Pixeln eines Eingabebilds. Die Anweisungen des Beispiels 8 bewirken ferner, dass ein oder mehrere Prozessoren den Gleichungssatz in Untergliederungen aufteilen, die wechselseitig unabhängige Teilmengen der Gleichungen enthalten. Die Anweisungen bewirken auch, dass der eine oder die mehreren Prozessoren die Teilmengen des Gleichungssatzes auf Grundlage der Untergliederungen in parallel durch einen Satz von Prozessoren für schrittweise Überrelaxation zu lösende Gruppen platzieren. In Beispiel 8 bilden die von den Prozessoren für schrittweise Uberrelaxation generierten Ergebnisse eine verbesserte Version des Eingabebilds.
    • Beispiel 9 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von Beispiel 8, wobei der Gleichungssatz in einer Matrix angeordnet ist und die Teilmengen des Gleichungssatzes durch Umordnen der Positionen der Gleichungen in der Matrix in Gruppen platziert sind, sodass Gleichungen, die in einer gleichen Teilmenge enthalten sind, in der Matrix nahe beieinander sind.
    • Beispiel 10 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von Beispiel 8, wobei die Anweisungen zum Aufteilen des Gleichungssatzes Anweisungen enthalten, die bewirken, dass der eine oder die mehreren Prozessoren eine Matrix mit Nullwerten füllen, eine Maske auf Grundlage einer Beziehung zwischen den Pixeln definieren, die Maske iterativ während jeweiliger Iterationen auf der Matrix mit Nullwerten platzieren, wobei die Maske jeweils auf jeweiligen der Nullwerte in der Matrix zentriert ist, während jeweiliger Iterationen jeweilige von null verschiedene Werte auswählen, die den jeweiligen der Nullwerte entsprechen, auf Grundlage der Abdeckung der Matrix durch die Maske, und während jeweiliger Iterationen die jeweiligen Nullwerte in der Matrix mit den jeweiligen, ausgewählten von null verschiedenen Werten ersetzen.
    • Beispiel 11 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von einem der Beispiele 8-10, wobei der Gleichungssatz auf Grundlage einer Annahme über die Pixel identifiziert wird.
    • Beispiel 12 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von Beispiel 10, wobei eine Form der Maske auf der Nachbarschaft der Pixel basiert.
    • Beispiel 13 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von Beispiel 10, wobei die jeweiligen von null verschiedenen Werte auf Grundlage von Elementen der Matrix ausgewählt werden, die nicht von der Maske bedeckt sind.
    • Beispiel 14 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von einem der Beispiele 10, 12 und 14, wobei Gleichungen, die einem ersten, von null verschiedenen Wert entsprechen, in einer ersten Teilmenge enthalten sind, Gleichungen, die einem zweiten, von null verschiedenen Wert entsprechen, in einer zweiten Teilmenge enthalten sind und die Anweisungen zum Bewirken, dass der eine oder die mehreren Prozessoren die Teilmengen der Gleichungen in Gruppen platziert, ferner Anweisungen enthalten, um zu bewirken, dass der eine oder die mehreren Prozessoren die erste Teilmenge der Gleichungen in einen ersten Satz von Zeilen der Matrix platziert und die zweite Teilmenge der Gleichungen in einen zweiten Satz von Zeilen der Matrix platziert.
    • Beispiel 15 ist das eine oder die mehreren nichtflüchtigen maschinenlesbaren Speichermedien von Beispiel 14, wobei die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren die Teilmenge von Gleichungen, die einer Zeile der Matrix entsprechen, als parallele Eingaben an den Satz von Prozessoren für schrittweise Überrelaxation liefern.
    • Beispiel 16 ist eine Vorrichtung zum Vorbereiten von Gleichungen für einen Prozessor für schrittweise Überrelaxation, der Mittel zum Identifizieren der Gleichungen enthält, wobei jeweilige Gleichungen des Satzes der Gleichungen jeweiligen Pixeln eines Eingabebilds entsprechen. Die Vorrichtung von Beispiel 16 enthält auch Mittel, um den Gleichungssatz in Untergliederungen aufzuteilen, die wechselseitig unabhängige Teilmengen der Gleichungen enthalten, und Mittel, um die Teilmengen der Gleichungen in Gruppen anzusammeln, die parallel durch den Prozessor für schrittweise Überrelaxation zu lösen sind.
    • Beispiel 17 ist die Vorrichtung von Beispiel 16, wobei jeweilige der Gleichungen in jeweiligen Elementen einer Matrix gespeichert sind und das Sammelmittel die Teilmengen der Gleichungen durch Neupositionieren der Gleichungen in der Matrix in Gruppen ansammelt.
    • Beispiel 18 ist die Vorrichtung von Beispiel 16, wobei das Aufteilungsmittel Mittel, um eine Matrix mit Nullen enthaltenden Elementen zu bilden, Mittel, um die Werte der Matrix über einen Iterationssatz schrittweise zu maskieren, Mittel, um von null verschiedene Werte schrittweise für jeweilige der Elemente der Matrix auf Grundlage von Werten der Teilmengen der von der Maske maskierten Elemente auszuwählen und Mittel enthält, um die Nullwerte der Matrix mit von der Wertauswahleinrichtung ausgewählten, von null verschiedenen Werten zu ersetzen.
    • Beispiel 19 ist die Vorrichtung von Beispiel 18, wobei das Mittel zum schrittweisen Maskieren der Werte der Matrix eine eine Form aufweisende Maske definiert und den Mittelpunkt der Maske jeweils während jeweiliger Iterationen über einen jeweiligen Matrixwert platziert.
    • Beispiel 20 ist die Vorrichtung von Beispiel 19, wobei die Form der Maske durch einen Typ von Pixelnachbarschaftsbeziehung definiert ist.
    • Beispiel 21 ist die Vorrichtung von einem der Beispiele 18-20, wobei die Matrix eine erste Matrix ist, die Gleichungen nach Identifizierung durch das Mittel zum Identifizieren in einer zweiten Matrix angeordnet sind, die erste Matrix und die zweite Matrix die gleichen Dimensionen aufweisen und das Mittel zum Sammeln der Teilmengen der Gleichungen in Gruppen jeweilige Gleichungen des Gleichungssatzes in der zweiten Matrix auf Grundlage der in jeweils entsprechenden Positionen der ersten Matrix gespeicherten von null verschiedenen Werten neu positioniert.
    • Beispiel 22 ist die Vorrichtung von Beispiel 21, wobei das Mittel zum Sammeln die jeweiligen des Gleichungssatzes neu zu positionieren hat, indem sie die jeweiligen des Gleichungssatzes, die einem ersten, von null verschiedenen Wert entsprechen, in einen ersten Satz von Zeilen platziert und die jeweiligen des Gleichungssatzes, die einem zweiten, von null verschiedenen Wert entsprechen, in einen zweiten Satz von Zeilen platziert. In Beispiel 22 sind der erste und der zweite Satz von Zeilen verschiedene Sätze von Zeilen.
    • Beispiel 23 ist ein Verfahren zum Parallelisieren des Lösens eines mit Bilddaten assoziierten linearen Gleichungssatzes, das Identifizieren, durch Ausführen einer Anweisung mit einem Prozessor, von zu lösenden Gleichungen, wobei jeweilige der Gleichungen jeweiligen Pixeln der Bilddaten entsprechen, Ermitteln, durch Ausführen einer Anweisung mit dem Prozessor, von Teilmengen der Gleichungen, die voneinander wechselseitig unabhängig sind; und gleichzeitiges Liefern, durch Ausführen einer Anweisung mit dem Prozessor, der in einer Teilmenge enthaltenen Gleichungen zur parallelen Lösung an einen Algorithmus für schrittweise Überrelaxation enthält.
    • Beispiel 24 ist das Verfahren von Beispiel 22, wobei die Gleichungen in einer Matrix angeordnet sind und die Teilmengen der Gleichungen durch Umordnen der Positionen der Gleichungen in der Matrix in Gruppen platziert werden, sodass Gleichungen, die in einer gleichen Teilmenge enthalten sind, in der Matrix nahe beieinander sind.
    • Beispiel 25 ist das Verfahren von Beispiel 22, wobei das Ermitteln der Teilmengen ein Initialisieren einer Matrix mit Nullwerten, Definieren einer Maske auf Grundlage einer Nachbarschaftsbeziehung der Pixel, Platzieren der Maske auf der Matrix mit Nullwerten, wobei die Maske während eines Satzes von Iterationen auf jeweiligen der Nullwerte in der Matrix zentriert ist, während jeweiliger des Satzes von Iterationen, Auswählen von jeweiligen von null verschiedenen Werten, die den jeweiligen der Nullwerte entsprechen, auf Grundlage der Abdeckung der Matrix durch die Maske, und während jeweiliger des Satzes von Iterationen Ersetzen der jeweiligen Nullwerte in der Matrix mit den jeweiligen, ausgewählten von null verschiedenen Werten.
    • Beispiel 26 ist ein maschinenlesbares Medium, das Code enthält, die, wenn sie ausgeführt werden, bewirken, dass eine Maschine die Vorrichtung nach einem der Beispiele 16-22 realisiert.
    • Beispiel 27 ist ein maschinenlesbarer Speicher, der maschinenlesbare Anweisungen enthält, um bei Ausführung ein Verfahren nach einem der vorangehenden Ansprüche zu implementieren oder eine Vorrichtung zu realisieren, wie sie in einem vorangehenden Beispiel enthalten ist.
  • Obwohl hierin bestimmte beispielhafte Verfahren, Einrichtungen und Fabrikate offenbart wurden, ist der Geltungsbereich dieses Patents nicht auf diese beschränkt. Im Gegenteil deckt dieses Patent alle Verfahren, Einrichtungen und Herstellungsgegenstände ab, die in den Umfang der Ansprüche dieses Patents fallen.

Claims (25)

  1. Vorrichtung zum Vorbereiten eines Gleichungssatzes für einen Prozessor für schrittweise Überrelaxation, umfassend: eine Identifikationseinrichtung, um den Gleichungssatz zu identifizieren, wobei jeweilige Gleichungen des Gleichungssatzes jeweiligen Pixeln eines Eingabebilds entsprechen; eine Partitionierungseinrichtung, um den Gleichungssatz in Untergliederungen aufzuteilen, wobei die Untergliederungen wechselseitig unabhängige Teilmengen der Gleichungen enthalten; und eine Sammeleinrichtung, um die Teilmengen des Gleichungssatzes auf Grundlage der Untergliederungen in Gruppen anzusammeln, wobei die in einer Gruppe enthaltenen Gleichungen parallel durch den Prozessor für schrittweise Überrelaxation zu lösen sind.
  2. Vorrichtung nach Anspruch 1, wobei jeweilige des Gleichungssatzes in jeweiligen Elementen einer Matrix gespeichert sind und die Sammeleinrichtung die Teilmengen des Gleichungssatzes durch Neupositionieren der Gleichungen in der Matrix in Gruppen anzusammeln hat.
  3. Vorrichtung nach Anspruch 1, wobei die Partitionierungseinrichtung enthält: eine Matrixinitialisierungseinrichtung, um Elemente einer Matrix mit null zu initialisieren; eine Maskierungseinrichtung, um die Werte der Matrix über einen Iterationssatz schrittweise zu maskieren; eine Wertauswahleinrichtung, um von null verschiedene Werte schrittweise für jeweilige der Elemente der Matrix auf Grundlage von Werten der Teilmengen der von der Maske maskierten Elemente auszuwählen; und eine Wertersetzungseinrichtung, um die Nullwerte der Matrix mit den von der Wertauswahleinrichtung ausgewählten, von null verschiedenen Werten zu ersetzen.
  4. Vorrichtung nach Anspruch 3, wobei die Maskierungseinrichtung die Werte der Matrix durch Definieren einer eine Form aufweisenden Maske und Platzieren des Mittelpunkts der Maske über jeweilige Matrixwerte während jeweiliger Iterationen zu maskieren hat.
  5. Vorrichtung nach Anspruch 4, wobei die Form durch einen Typ von Pixelnachbarschaftsbeziehung definiert ist.
  6. Vorrichtung nach einem der Ansprüche 3 und 4, wobei die Matrix eine erste Matrix ist, der Gleichungssatz bei Identifizierung durch die Identifikationseinrichtung in einer zweiten Matrix angeordnet ist, die erste Matrix und die zweite Matrix die gleichen Dimensionen aufweisen und die Sammeleinrichtung die Teilmengen des Gleichungssatzes durch Neupositionieren jeweiliger Gleichungen des Gleichungssatzes in der zweiten Matrix auf Grundlage der in jeweils entsprechenden Positionen der ersten Matrix gespeicherten von null verschiedenen Werte in Gruppen anzusammeln hat.
  7. Vorrichtung nach Anspruch 6, wobei die Sammeleinrichtung die jeweiligen des Gleichungssatzes neu zu positionieren hat, indem sie die jeweiligen des Gleichungssatzes, die einem ersten, von null verschiedenen Wert entsprechen, in einen ersten Satz von Zeilen der zweiten Matrix platziert und die jeweiligen des Gleichungssatzes, die einem zweiten, von null verschiedenen Wert entsprechen, in einen zweiten Satz von Zeilen platziert, wobei der erste und der zweite Satz von Zeilen verschiedene Sätze von Zeilen sind.
  8. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien, das bzw. die maschinenlesbare Anweisungen umfasst bzw. umfassen, die, wenn sie ausgeführt werden, bewirken, dass ein oder mehrere Prozessoren zumindest: einen zu lösenden Gleichungssatz identifizieren, wobei jeweilige Gleichungen des Gleichungssatzes jeweiligen Pixeln eines Eingabebilds entsprechen; den Gleichungssatz in Untergliederungen aufteilen, wobei die Untergliederungen wechselseitig unabhängige Teilmengen der Gleichungen enthalten; und auf Grundlage der Untergliederungen die Teilmengen des Gleichungssatzes in parallel durch einen Satz von Prozessoren für schrittweise Überrelaxation zu lösende Gruppen platzieren, wobei die von den Prozessoren für schrittweise Überrelaxation generierten Ergebnisse eine verbesserte Version des Eingabebilds bilden.
  9. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach Anspruch 8, wobei der Gleichungssatz in einer Matrix angeordnet ist und die Teilmengen des Gleichungssatzes durch Umordnen der Positionen der Gleichungen in der Matrix in Gruppen platziert sind, sodass Gleichungen, die in einer gleichen Teilmenge enthalten sind, in der Matrix nahe beieinander sind.
  10. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach Anspruch 8, wobei die Anweisungen zum Aufteilen des Gleichungssatzes Anweisungen enthalten, die bewirken, dass der eine oder die mehreren Prozessoren: eine Matrix mit Nullwerten füllen; eine Maske auf Grundlage einer Beziehung zwischen den Pixeln definieren; die Maske iterativ auf der Matrix mit Nullwerten platzieren, wobei die Maske während eines jeweiliger Iterationen auf jeweiligen der Nullwerte in der Matrix zentriert ist, während jeweiliger Iterationen jeweilige von null verschiedene Werte auswählen, die den jeweiligen der Nullwerte entsprechen, auf Grundlage der Abdeckung der Matrix durch die Maske; und während jeweiliger Iterationen die jeweiligen Nullwerte in der Matrix mit den jeweiligen, ausgewählten von null verschiedenen Werten ersetzen.
  11. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach einem der Ansprüche 8-10, wobei der Gleichungssatz auf Grundlage einer Annahme über die Pixel identifiziert wird.
  12. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach Anspruch 10, wobei eine Form der Maske auf der Nachbarschaftsbeziehung der Pixel basiert.
  13. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach Anspruch 10, wobei die jeweiligen von null verschiedenen Werte auf Grundlage von Elementen der Matrix ausgewählt werden, die nicht von der Maske bedeckt sind.
  14. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach einem der Ansprüche 10, 12 und 13, wobei Gleichungen, die einem ersten, von null verschiedenen Wert entsprechen, in einer ersten Teilmenge enthalten sind, Gleichungen, die einem zweiten, von null verschiedenen Wert entsprechen, in einer zweiten Teilmenge enthalten sind und die Anweisungen zum Bewirken, dass der eine oder die mehreren Prozessoren die Teilmengen der Gleichungen in Gruppen platziert, ferner Anweisungen enthalten, um zu bewirken, dass der eine oder die mehreren Prozessoren die erste Teilmenge der Gleichungen in einen ersten Satz von Zeilen der Matrix platziert und die zweite Teilmenge der Gleichungen in einen zweiten Satz von Zeilen der Matrix platziert.
  15. Nichtflüchtiges maschinenlesbares Speichermedium oder mehrere nichtflüchtige maschinenlesbare Speichermedien nach Anspruch 14, wobei die Anweisungen ferner bewirken, dass der eine oder die mehreren Prozessoren die Teilmenge von Gleichungen, die einer Zeile der Matrix entsprechen, als parallele Eingaben an den Satz von Prozessoren für schrittweise Überrelaxation liefern.
  16. Vorrichtung zum Vorbereiten von Gleichungen für einen Prozessor für schrittweise Überrelaxation, umfassend: Mittel, um die Gleichungen zu identifizieren, wobei jeweilige Gleichungen des Gleichungssatzes jeweiligen Pixeln eines Eingabebilds entsprechen; Mittel, um die Gleichungen in Untergliederungen aufzuteilen, wobei die Untergliederungen wechselseitig unabhängige Teilmengen der Gleichungen enthalten; und Mittel, um die Teilmengen der Gleichungen in Gruppen anzusammeln, die parallel durch den Prozessor für schrittweise Überrelaxation zu lösen sind.
  17. Vorrichtung nach Anspruch 16, wobei jeweilige der Gleichungen in jeweiligen Elementen einer Matrix gespeichert sind und das Sammelmittel die Teilmengen der Gleichungen durch Neupositionieren der Gleichungen in der Matrix in Gruppen ansammelt.
  18. Vorrichtung nach Anspruch 16, wobei die Mittel zum Aufteilen enthalten: Mittel, um eine Matrix aus Nullen enthaltenden Elementen zu bilden; Mittel, um die Elemente der Matrix über einen Iterationssatz schrittweise zu maskieren; Mittel, um von null verschiedene Werte schrittweise für jeweilige der Elemente der Matrix auf Grundlage von Werten der Teilmengen der von der Maske maskierten Elemente auszuwählen; und Mittel, um die Nullwerte der Matrix mit von der Wertauswahleinrichtung ausgewählten, von null verschiedenen Werten zu ersetzen.
  19. Vorrichtung nach Anspruch 18, wobei das Mittel zum schrittweisen Maskieren die Werte der Matrix eine eine Form aufweisende Maske definiert und den Mittelpunkt der Maske während jeweiliger Iterationen über jeweilige der Matrixwerte platziert.
  20. Vorrichtung nach Anspruch 19, wobei die Form der Maske durch einen Typ von Pixelnachbarschaftsbeziehung definiert ist.
  21. Vorrichtung nach einem der Ansprüche 18-20, wobei die Matrix eine erste Matrix ist, die Gleichungen nach Identifizierung durch das Mittel zum Identifizieren in einer zweiten Matrix angeordnet sind, wobei die erste Matrix und die zweite Matrix die gleichen Dimensionen aufweisen und das Mittel zum Ansammeln der Teilmengen der Gleichungen in Gruppen jeweilige Gleichungen des Gleichungssatzes in der zweiten Matrix auf Grundlage der in jeweils entsprechenden Positionen der ersten Matrix gespeicherten von null verschiedenen Werten neu positioniert.
  22. Vorrichtung nach Anspruch 21, wobei das Mittel zum Ansammeln die jeweiligen des Gleichungssatzes neu zu positionieren hat, indem die jeweiligen des Gleichungssatzes, die einem ersten, von null verschiedenen Wert entsprechen, in einen ersten Satz von Zeilen der zweiten Matrix platziert werden und die jeweiligen des Gleichungssatzes, die einem zweiten, von null verschiedenen Wert entsprechen, in einen zweiten Satz von Zeilen der zweiten Matrix platziert werden, wobei der erste und der zweite Satz von Zeilen verschiedene Sätze von Zeilen sind.
  23. Verfahren zum Parallelisieren des Lösens eines mit Bilddaten assoziierten linearen Gleichungssatzes, wobei das Verfahren enthält: Identifizieren, durch Ausführen einer Anweisung mit einem Prozessor, von zu lösenden Gleichungen, wobei jeweilige der Gleichungen jeweiligen Pixeln der Bilddaten entsprechen; Ermitteln, durch Ausführen einer Anweisung mit dem Prozessor, von Teilmengen der Gleichungen, die voneinander wechselseitig unabhängig sind; und gleichzeitiges Liefern, durch Ausführen einer Anweisung mit dem Prozessor, der in einer Teilmenge enthaltenen Gleichungen zur parallelen Lösung an einen Algorithmus für schrittweise Überrelaxation.
  24. Verfahren nach Anspruch 23, wobei die Gleichungen in einer Matrix angeordnet sind und die Teilmengen der Gleichungen durch Umordnen der Positionen der Gleichungen in der Matrix in Gruppen platziert werden, sodass Gleichungen, die in einer gleichen Teilmenge enthalten sind, in der Matrix nahe beieinander sind.
  25. Verfahren nach Anspruch 23, wobei das Ermitteln der Teilmengen enthält: Initialisieren einer Matrix mit Nullwerten; Definieren einer Maske auf Grundlage einer Nachbarschaftsbeziehung der Pixel; Platzieren der Maske auf der Matrix mit Nullwerten, wobei die Maske während eines Satzes von Iterationen auf jeweiligen der Nullwerte in der Matrix zentriert ist; während jeweiliger des Satzes von Iterationen, Auswählen jeweiliger von null verschiedener Werte, die den jeweiligen der Nullwerte entsprechen, auf Grundlage der Abdeckung der Matrix durch die Maske; und während jeweiliger des Satzes von Iterationen Ersetzen der jeweiligen Nullwerte in der Matrix mit den jeweiligen, ausgewählten von null verschiedenen Werten.
DE102018125740.6A 2017-11-08 2018-10-17 Verfahren und vorrichtungen zur ermöglichung einer parallelen verarbeitung beim lösen von linearen gleichungen in einem computervisionsverarbeitungssystem Pending DE102018125740A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/807,253 2017-11-08
US15/807,253 US10762602B2 (en) 2017-11-08 2017-11-08 Methods and apparatus to enable parallel processing when solving linear equations in a computer vision processing system

Publications (1)

Publication Number Publication Date
DE102018125740A1 true DE102018125740A1 (de) 2019-05-09

Family

ID=65023048

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018125740.6A Pending DE102018125740A1 (de) 2017-11-08 2018-10-17 Verfahren und vorrichtungen zur ermöglichung einer parallelen verarbeitung beim lösen von linearen gleichungen in einem computervisionsverarbeitungssystem

Country Status (4)

Country Link
US (1) US10762602B2 (de)
KR (1) KR20190052610A (de)
CN (1) CN109753626A (de)
DE (1) DE102018125740A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110362785A (zh) * 2019-06-13 2019-10-22 上海交通大学 基于多文件流的任意对角线性方程组并行求解方法和系统
US11563899B2 (en) 2020-08-14 2023-01-24 Raytheon Company Parallelization technique for gain map generation using overlapping sub-images
US11889049B2 (en) 2020-08-14 2024-01-30 Raytheon Company Gain map generation with rotation compensation
US11271865B1 (en) 2020-12-02 2022-03-08 Microsoft Technology Licensing, Llc Resource popularity assessment and utilization

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090268085A1 (en) * 2008-04-25 2009-10-29 Myaskouvskey Artiom Device, system, and method for solving systems of linear equations using parallel processing

Also Published As

Publication number Publication date
CN109753626A (zh) 2019-05-14
US20190026865A1 (en) 2019-01-24
KR20190052610A (ko) 2019-05-16
US10762602B2 (en) 2020-09-01

Similar Documents

Publication Publication Date Title
DE102018125740A1 (de) Verfahren und vorrichtungen zur ermöglichung einer parallelen verarbeitung beim lösen von linearen gleichungen in einem computervisionsverarbeitungssystem
DE102014220302B4 (de) Verfahren zur Durchführung einer Aktions-Erkennung auf einem Bild eines Fahrers in einem Fahrzeug sowie entsprechendes Nichtflüchtiges, Computer-lesbares Speichermedium und Verfahren zum Lernen eines Random Forest Modells zur Aktionserkennung
DE102014210820B4 (de) Verfahren zum Nachweis von großen und Passagierfahrzeugen von festen Kameras
EP3341891A1 (de) Aktives maschinelles lernen zum trainieren eines ereignisklassifikators
DE112018006337T5 (de) Verfahren und System zum Klassifizieren eines Objekts von Interesse unter Verwendung eines künstlichen neuronalen Netzes
DE112012004809B4 (de) Kantenverfolgung mit Hysterese-Schwellenwertbildung
DE102004057026A1 (de) Erfassung zeitlicher Bildveränderungen und Darstellungsverfahren und -vorrichtung
DE102019110721A1 (de) Workflow zum trainieren eines klassifikators für die qualitätsprüfung in der messtechnik
DE112017005651T5 (de) Vorrichtung zur Klassifizierung von Daten
DE102014113692A1 (de) Verdichtung von longitudinalen epa für eine verbesserte phänotypisierung
DE112019001044T5 (de) Verfahren und vorrichtung für maschinelles lernen, programm, gelerntes modell und diskriminiervorrichtung
DE112016002496T5 (de) Getemperte Spärlichkeit durch adaptives und dynamisches Schrumpfen
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
WO2005122092A1 (de) Verfahren und vorrichtung zur segmentierung einer digitalen abbildung von zellen
DE102018206108A1 (de) Generieren von Validierungsdaten mit generativen kontradiktorischen Netzwerken
DE102021100444A1 (de) Mikroskopiesystem und verfahren zum bewerten von bildverarbeitungsergebnissen
DE102021201124A1 (de) Trainieren von bildklassifizierernetzen
DE112020005732T5 (de) Erzeugen von trainingsdaten zur objekterkennung
DE102009055418A1 (de) Routing über Multi-Core-Netzwerke unter Verwendung von Realweltdaten oder modellierten Daten
DE102019117680A1 (de) Automatisiertes segmentierungsverfahren für die qualitätsprüfung
DE102019124809A1 (de) Bildgebungsvorrichtung und Bildgebungssystem
EP2642749B1 (de) Vorrichtung und Verfahren zur Optimierung der Bestimmung von Aufnahmebereichen
DE102023101265A1 (de) Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse
BE1029610A1 (de) Systeme und Verfahren zum Verbessern einer Performanz einer trainierbaren optischen Zeichenerkennung (OCR)
DE112021005555T5 (de) Multitasking-lernen über gradienteilung zur umfangreichen menschlichen analyse

Legal Events

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

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: HGF EUROPE LP, DE