-
BEREICH DER OFFENLEGUNG
-
Diese Offenbarung bezieht sich auf die Tiefenabtastung mittels optischer Time-of-Flight (TOF)-Techniken.
-
HINTERGRUND
-
Einige Handheld-Computergeräte, wie z. B. Smartphones, können eine Vielzahl verschiedener optischer Funktionen bieten, wie z. B. eindimensionale (1D) oder dreidimensionale (3D) Gestenerkennung, 3D-Bildgebung, Lichtlaufzeit- oder Näherungserkennung, Umgebungslichterfassung und/oder zweidimensionale (2D) Kamerabildgebung an der Vorderseite.
-
TOF-Sensoren können z. B. verwendet werden, um den Abstand zu einem Objekt zu erkennen oder um 3D-Tiefeninformationen zu erhalten. Im Allgemeinen basieren TOF-Systeme auf einer Phasenmesstechnik von emittiertem intensitätsmoduliertem Licht, das von einem oder mehreren Objekten in einer Szene reflektiert wird. Das reflektierte Licht wird auf einen Sensor abgebildet, und die photogenerierten Elektronen werden im Sensor demoduliert. Basierend auf der Phaseninformation kann der Abstand (oder die Tiefe) zu einem Punkt in der Szene für jedes Pixel im Sensor bestimmt werden.
-
Der TOF-Sensor ist manchmal unter einem Deckglas eines Host-Geräts (z. B. eines Smartphones) angeordnet. Wenn sich auf der Oberfläche des Deckglases, durch die das Licht in Richtung der Szene abgestrahlt wird, eine Verunreinigung (d. h. ein Fleck) befindet, kann der Fleck einen Teil des abgestrahlten Lichts zurück in Richtung der Erkennungspixel reflektieren. Solche Situationen können zu ungenauen Schätzungen der Abstands- oder Tiefendaten führen.
-
ZUSAMMENFASSUNG
-
Die vorliegende Offenlegung beschreibt Techniken, um die Intensität der Reflexion von einer transmissiven Abdeckung (z. B. einem Deckglas) dynamisch zu bestimmen und zu neutralisieren, um die Genauigkeit von Tiefenmessungen zu verbessern. Tiefenmessungen der Lichtmodulation bei mehreren Frequenzen - die auch für die Tiefen-Disambiguierung verwendet werden können - werden erhalten und verwendet, um die Informationen zur Schätzung der Intensität des von der transmissiven Abdeckung (d. h. der transmissiven Abdeckung selbst oder einem Fleck auf der transmissiven Abdeckung) reflektierten Signals und der Intensität des vom Zielobjekt reflektierten Signals zu entkoppeln.
-
In einem Aspekt beschreibt die vorliegende Offenbarung beispielsweise ein Verfahren, das das Aussenden von Licht von einem Modul mit einer ersten Modulationsfrequenz und das Aussenden von Licht mit einer zweiten Modulationsfrequenz umfasst, wobei das Licht durch eine durchlässige Abdeckung in Richtung eines Ziels ausgesendet wird. Das Verfahren umfasst das Messen erster Amplituden- und Phasenverschiebungswerte, die eine Kombination aus einem von dem Ziel reflektierten optischen Signal und einem von der durchlässigen Abdeckung reflektierten optischen Signal darstellen, als Reaktion auf das mit der ersten Modulationsfrequenz emittierte Licht, und das Messen zweiter Amplituden- und Phasenverschiebungswerte, die eine Kombination aus einem von dem Ziel reflektierten optischen Signal und einem von der durchlässigen Abdeckung reflektierten optischen Signal darstellen, als Reaktion auf das mit der zweiten Modulationsfrequenz emittierte Licht. Das Verfahren umfasst ferner das Schätzen einer Amplitude eines von der durchlässigen Abdeckung reflektierten optischen Signals und einer Amplitude eines von der durchlässigen Abdeckung reflektierten optischen Signals, wobei das Schätzen zumindest teilweise auf den gemessenen ersten und zweiten Amplituden- und Phasenverschiebungswerten und auf während der Kalibrierung des Moduls erhaltenen Phasenverschiebungswerten basiert.
-
In einem anderen Aspekt beschreibt die vorliegende Offenbarung eine Vorrichtung, die eine durchlässige Abdeckung, einen Speicher, der die Phasenverschiebungswerte der Kalibrierungsstufe speichert, einen Lichtemitter und eine Tiefenkamera umfasst. Der Lichtemitter ist betreibbar, um Licht von einem Modul mit einer ersten Modulationsfrequenz zu emittieren, und betreibbar, um Licht mit einer zweiten Modulationsfrequenz zu emittieren, wobei das Licht durch die durchlässige Abdeckung in Richtung eines Ziels emittiert wird. Die Tiefenkamera ist betreibbar, um erste Amplituden- und Phasenverschiebungswerte zu messen, die eine Kombination aus einem optischen Signal, das von dem Ziel reflektiert wird, und einem optischen Signal, das von der durchlässigen Abdeckung reflektiert wird, als Reaktion auf das mit der ersten Modulationsfrequenz emittierte Licht darstellen. Die Tiefenkamera ist ferner in der Lage, zweite Amplituden- und Phasenverschiebungswerte zu messen, die eine Kombination aus einem optischen Signal, das von dem Ziel reflektiert wird, und einem optischen Signal, das von der durchlässigen Abdeckung reflektiert wird, als Reaktion auf das mit der zweiten Modulationsfrequenz ausgesendete Licht darstellen. Die Vorrichtung enthält eine Verarbeitungsschaltung, die betreibbar ist, um eine Amplitude eines von der durchlässigen Abdeckung reflektierten optischen Signals und eine Amplitude eines von der durchlässigen Abdeckung reflektierten optischen Signals zu schätzen. Die Verarbeitungsschaltung kann die Schätzung zumindest teilweise auf der Grundlage der gemessenen ersten und zweiten Amplituden- und Phasenverschiebungswerte sowie der Phasenverschiebungswerte der Kalibrierungsstufe durchführen.
-
Einige Implementierungen umfassen eines oder mehrere der folgenden Merkmale. Zum Beispiel können die während der Kalibrierung des Moduls erhaltenen Phasenverschiebungswerte jeweils einen Phasenverschiebungswert für ein von der durchlässigen Abdeckung reflektiertes optisches Signal und einen Phasenverschiebungswert für ein von einem Ziel reflektiertes optisches Signal darstellen. Außerdem kann jedes der von der durchlässigen Abdeckung reflektierten optischen Signale mindestens eines von einem optischen Signal, das von der durchlässigen Abdeckung selbst reflektiert wird, oder ein optisches Signal, das von einem Fleck auf der durchlässigen Abdeckung reflektiert wird, umfassen.
-
In einigen Fällen umfasst die Schätzung das Lösen von vier nichtlinearen Gleichungen für Werte von vier unbekannten Variablen. Die Schätzung kann z. B. die Verwendung eines iterativen Prozesses (z. B. Gradientenabstieg) beinhalten.
-
Die von der Verarbeitungsschaltung geschätzten Amplitudenwerte können in einigen Fällen hochpräzise Daten liefern und können verwendet werden, um verschiedene Komponenten eines Host-Geräts zu modifizieren oder andere Aktionen auszulösen. So wird in einigen Implementierungen eine Eigenschaft eines Host-Geräts, in dem das Modul angeordnet ist, als Reaktion auf einen oder mehrere der geschätzten Werte eingestellt. Beispielsweise kann die Helligkeit eines Bildschirms als Reaktion auf einen oder mehrere der geschätzten Werte eingestellt werden. Ferner wird in einigen Fällen auf der Grundlage des geschätzten Wertes der Amplitude des von der durchlässigen Abdeckung reflektierten optischen Signals festgestellt, dass sich möglicherweise ein Fleck auf der durchlässigen Abdeckung befindet, und als Reaktion auf die Feststellung, dass sich möglicherweise ein Fleck auf der durchlässigen Abdeckung befindet, wird eine Warnmeldung erzeugt. Die Warnmeldung kann z. B. darauf hinweisen, dass die durchlässige Abdeckung gereinigt werden sollte, um Verunreinigungen auf ihrer Oberfläche zu entfernen.
-
Weitere Aspekte, Merkmale und verschiedene Vorteile werden aus der folgenden detaillierten Beschreibung, den beigefügten Zeichnungen und den Ansprüchen ersichtlich.
-
Figurenliste
-
- zeigt ein Beispiel für ein optoelektronisches Modul.
- und zeigen Diagramme, die Licht mit einer ersten Modulationsfrequenz ( und einer zweiten Modulationsfrequenz ( darstellen.
- ist ein Flussdiagramm eines Verfahrens zur Bestimmung von Tiefen-/Distanzwerten.
-
DETAILLIERTE BESCHREIBUNG
-
zeigt ein Beispiel für ein optoelektronisches Modul 100, das einen Lichtemissionskanal 102 und einen Lichterfassungskanal 104 umfasst. Ein Lichtemitter 106 und eine optoelektronische Tiefenkamera 108 sind auf einer Leiterplatte (PCB) oder einem anderen Substrat 110 montiert, das die Unterseite des Modulgehäuses bildet. Der Lichtemitter kann Licht mit verschiedenen Modulationsfrequenzen emittieren. In einigen Implementierungen ist der Lichtemitter 106 als Laserdiode oder als oberflächenemittierender Laser mit vertikalem Resonator (VCSEL) ausgeführt.
-
Im dargestellten Beispiel ist ein Abstandshalter 114 an der ersten Seite der Leiterplatte 110 angebracht und trennt die Leiterplatte 110 von einem optischen Element 116. Eine Innenwand 115 des Abstandshalters 114 kann eine optische Isolierung zwischen den beiden Kammern des Moduls (d. h. der Lichtsendekammer (Kanal) 102 und der Lichterfassungskammer (Kanal) 104) bieten. Das Optikteil 116 kann ein oder mehrere entsprechende passive optische Elemente (z. B. Linsen) 120A, 120B für jeden Kanal 102, 104 enthalten. Das Licht des Senders 106 wird aus dem Modul 100 herausgeleitet und kann, wenn es von einem Objekt zurück zum Erfassungskanal 104 des Moduls reflektiert wird, von der Tiefenkamera 108 erfasst werden.
-
Die Tiefenkamera 108 enthält ein Array räumlich verteilter lichtempfindlicher Elemente (z. B. Pixel), einschließlich aktiver Demodulationserkennungspixel 124, und kann auch Logik und andere Elektronik zum Lesen und Verarbeiten der Pixelsignale enthalten. Die Pixel und andere Schaltungen können z. B. in einem integrierten Halbleiterchip (z. B. als CCD- oder CMOS-Sensor) implementiert sein. Obwohl die Anzahl und Anordnung der Demodulationserfassungspixel 124 je nach Implementierung variieren kann, sind die Demodulationserfassungspixel in einigen Implementierungen als MxN-Array angeordnet.
-
Die Tiefenkamera
108 kann z. B. als indirekter Laufzeitsensor (iTOF) mit Einzelphotonen-Synchrondetektion (SPSD) betrieben werden. Die Pixel
124 können so betrieben werden, dass sie Licht mit der/den Wellenlänge(n) des vom Sender
106 emittierten Lichts erfassen. Bei SPSD wird eine Szene mit einer sinusförmigen oder pseudo-sinusförmigen Lichtintensität beleuchtet. Der Abstand d zu einem Punkt in der Szene kann geschätzt werden als:
wobei c die Lichtgeschwindigkeit im Vakuum, f die Modulationsfrequenz und ϕ die gemessene Phasendifferenz zwischen dem ausgehenden Lichtsignal und dem Messsignal ist. Die Phase ϕ kann direkt durch das Zählen von Photonen auf strukturierte Weise berechnet werden. In anderen Implementierungen kann die Tiefenkamera z. B. als Avalanche-Detektor realisiert werden.
-
Der Emitter 106 und die Tiefenkamera 108 können elektrisch mit der Leiterplatte 110 verbunden werden, z. B. durch leitende Pads oder Drahtverbindungen. Die Leiterplatte 110 wiederum kann elektrisch mit anderen Komponenten innerhalb eines Host-Geräts (z. B. einem Smartphone) verbunden werden.
-
Die Steuer- und Verarbeitungsschaltung 140 des Sensors (z. B. eine elektronische Steuerschaltung) kann z. B. als eine oder mehrere integrierte Schaltungen in einem oder mehreren Halbleiterchips mit geeigneter digitaler Logik und/oder anderen Hardwarekomponenten (z. B. Ausleseregistem, Verstärkern, Analog-Digital-Wandlern, Taktgebern, Timing-Logik, Signalverarbeitungsschaltungen und/oder einem Mikroprozessor) implementiert werden. Die Steuer- und Verarbeitungsschaltung 140 kann sich auf demselben Halbleiterchip wie die Tiefenkamera 108 oder auf einem oder mehreren anderen Halbleiterchips befinden. In einigen Fällen kann sich die Steuer- und Verarbeitungsschaltung 140 außerhalb des Moduls 100 befinden; zum Beispiel kann die Steuer- und Verarbeitungsschaltung in einen Prozessor für ein Host-Gerät integriert sein, in dem das Modul 100 angeordnet ist.
-
In einigen Fällen ist das Modul 100 in ein Host-Gerät (z. B. ein Smartphone oder ein anderes Handheld-Computergerät) integriert, das eine lichtdurchlässige Abdeckung (z. B. ein Deckglas) 132 enthält, unter der das Modul 100 angeordnet ist. Diese Anordnung kann in einigen Fällen dazu führen, dass störende Reflexionen erzeugt werden. Solche Störreflexionen können z. B. vom Deckglas 132 selbst oder von einem Fleck (d. h. einer verwischten oder verschmierten Markierung wie einem Fingerabdruck oder Schmutz oder einer anderen Verunreinigung) 130 auf dem Deckglas 132 stammen. Wenn Daten von der Tiefenkamera 108 erfasst werden, stellen die gesammelten Daten eine Kombination aus dem empfangenen Signal, das von einem Ziel außerhalb des Moduls reflektiert wird, und einem Signal dar, das vom Deckglas (d. h. dem Deckglas selbst oder einem Fleck auf dem Deckglas) reflektiert wird. Wenn sich beispielsweise Verunreinigungen auf dem Deckglas 132 ablagern, kann dies die Intensität des vom Deckglas reflektierten Signals verändern, was zu Fehlern und Unsicherheiten bei den Tiefenmessungen führt.
-
In diesem und den folgenden Abschnitten wird ein Verfahren beschrieben, um die Intensität der Reflexion vom Deckglas dynamisch zu bestimmen und zu neutralisieren, um die Genauigkeit der Tiefenmessungen zu verbessern. Das Verfahren verwendet vorzugsweise die gleichen Pixel 124, die zur Erfassung der Tiefendaten verwendet werden. Es ist bekannt, dass die Erfassung von Tiefendaten bei mehreren (z. B. zwei) unterschiedlichen Modulationsfrequenzen vorteilhaft genutzt werden kann, um eine nicht eindeutige Tiefenkarte zu erzeugen. Das vorliegende Verfahren verwendet die Tiefenmessungen der Lichtmodulation bei mehreren (z. B. zwei) Frequenzen - die auch zur Tiefen-Disambiguierung verwendet werden können - und entkoppelt die Informationen, um die Intensität des vom Deckglas (d. h. dem Deckglas selbst oder einem Fleck auf dem Deckglas) reflektierten Signals und die Intensität des vom Zielobjekt reflektierten Signals zu schätzen.
-
Das vorliegende Verfahren schätzt die Intensität des vom Deckglas reflektierten Signals und die Intensität des von einem Zielobjekt reflektierten Signals zumindest teilweise auf der Grundlage von Amplitudenmessungen (ampl, amp2) und Phasenverschiebungsmessungen (ϕ1, ϕ2), die während eines Messzyklus für ein bestimmtes Zielobjekt erfasst wurden, sowie von Phasenverschiebungsmessungen (α1, .α2), die zuvor erfasst und gespeichert wurden, z. B. während der Werkskalibrierung des jeweiligen Moduls 100. In diesem Fall werden die Amplituden- und Phasenverschiebungsmessungen jeweils mit zwei verschiedenen Lichtmodulationsfrequenzen (fl, f2) durchgeführt. Die Amplitudenmessungen (ampl, amp2) und Phasenverschiebungsmessungen (ϕ1, ϕ2) stellen die Summierung der vom Zielobjekt und vom Deckglas reflektierten Signale dar, während die Phasenverschiebungsmessungen (α1, α2) die vom Deckglas reflektierten Signale darstellen. Wie weiter unten erläutert, können die vorgenannten bekannten Werte von der Steuer- und Verarbeitungsschaltung 140 verwendet werden, um die Intensität des vom Deckglas reflektierten Signals und/oder die Intensität des vom Zielobjekt reflektierten Signals zu schätzen. Verweise auf vom Deckglas reflektierte Signale umfassen Signale, die vom Deckglas selbst reflektiert werden, und Signale, die von einem Fleck auf dem Deckglas reflektiert werden.
-
und zeigen Graphen (d. h. Amplitude und Phase) für Licht mit einer ersten Modulationsfrequenz f1 ( bzw. für Licht mit einer anderen zweiten Modulationsfrequenz f2 ( . Insbesondere illustriert einen Vektor T1, der ein von einem Zielobjekt in einer Szene reflektiertes Signal darstellt, einen Vektor CGI, der ein vom Deckglas reflektiertes Signal darstellt, und einen Vektor R1, der ein Signal darstellt, das der Kombination der vom Zielobjekt und vom Deckglas reflektierten Signale entspricht. Ebenso zeigt einen Vektor T2, der ein von einem Zielobjekt in einer Szene reflektiertes Signal darstellt, einen Vektor CG2, der ein vom Deckglas reflektiertes Signal darstellt, und einen Vektor R2, der ein Signal darstellt, das der Kombination der von dem Zielobjekt und dem Deckglas reflektierten Signale entspricht. In einigen Implementierungen sind die Modulationsfrequenzen 100 MHz und 115 MHz. Für einige Implementierungen können auch andere Modulationsfrequenzen geeignet sein. Vorzugsweise sind die Modulationsfrequenzen keine ganzzahligen Vielfachen voneinander. und zeigen auch die Phasenverschiebungen (d.h. relativ zur Achse des vom Sender 106 ausgesandten Strahls) für jedes der Signale. So ist in die Phasenverschiebung für das vom Deckglas reflektierte Signal α1, die Phasenverschiebung für das vom Zielobjekt reflektierte Signal ist β1, und die Phasenverschiebung für das kombinierte Signal ist ϕ1. Ebenso ist in die Phasenverschiebung für das vom Deckglas reflektierte Signal α2, die Phasenverschiebung für das vom Zielobjekt reflektierte Signal ist β2 und die Phasenverschiebung für das kombinierte Signal ist ϕ2.
-
Unter der Annahme, dass die Amplitude des kombinierten Signals vom Zielobjekt und dem Deckglas bei der ersten Modulationsfrequenz f1 ampl ist, die Amplitude des kombinierten Signals vom Zielobjekt und dem Deckglas bei der zweiten Modulationsfrequenz f2 amp2 ist, die Amplitude des vom Zielobjekt reflektierten Signals b ist und die Amplitude des vom Deckglas reflektierten Signals a ist, kann gezeigt werden, dass:
für die erste Modulationsfrequenz f1:
und für die zweite Modulationsfrequenz f2:
-
Wie oben erwähnt, sind die Amplituden ampl und amp2 sowie die Phasenverschiebungen ϕ1 und ϕ2 Messwerte, die das Modul 100 während eines bestimmten Messzyklus in Bezug auf ein Zielobjekt ermittelt. Außerdem sind die Phasenverschiebungsmessungen (α1, α2) zuvor gespeicherte Werte, die z. B. während der Werkskalibrierung des jeweiligen Moduls 100 erfasst wurden.
-
Die vier unbekannten Variablen (einschließlich der Amplitude ‚a‘ des vom Deckglas reflektierten Signals und der Amplitude ‚b‘ des vom Ziel reflektierten Signals) können aus den vier obigen Gleichungen (1) bis (4) bestimmt werden. Zur Schätzung der Werte der vier unbekannten Variablen (a, b, β1, β2) können verschiedene Techniken verwendet werden. Zum Beispiel kann ein iteratives Verfahren wie der Gradientenabstieg verwendet werden. Der Gradientenabstieg ist ein iterativer Optimierungsalgorithmus erster Ordnung zum Finden des Minimums einer Funktion und kann zur Lösung eines Systems nichtlinearer Gleichungen verwendet werden. Somit kann der Gradientenabstieg verwendet werden, um die Werte der unbekannten Variablen in den nichtlinearen Gleichungen (1) bis (4) zu schätzen.
-
In einigen Fällen, z. B. wenn der Bereich über der/den Blende(n) für den Lichtsender 106 und die Tiefenkamera 108 relativ klein ist, können die Schätzungen für eine kleine Teilmenge der Pixel verwendet werden, um die Werte für das gesamte Bild (d. h. für alle Pixel) zu extrapolieren. Die Untergruppe von Pixeln kann z. B. Pixel in der Nähe oder an den Ecken und in der Mitte des Pixelarrays umfassen.
-
ist ein Flussdiagramm eines Verfahrens zur Bestimmung von Tiefen-/Distanzwerten gemäß der vorliegenden Offenbarung. Wie durch 202 angedeutet, werden Messungen der Phasenverschiebungen (α1, α2) von optischen Signalen, die von der transmissiven Abdeckung (z. B. dem Deckglas) reflektiert werden, z. B. während der Kalibrierung eines Moduls 100 während der Produktion vorgenommen, und die Phasenverschiebungswerte werden in Speicher 142 (204) gespeichert. Der Speicher 142 kann in Hardware und/oder Software implementiert sein und kann Teil des Moduls selbst oder des Host-Geräts sein. Die Einbeziehung der Phasenverschiebungswerte (α1, α2) in das vorliegende Verfahren kann dazu beitragen, die Fehlerspreizung zu verringern und Fertigungsunterschiede und/oder Los-zu-Los-Unterschiede im Halbleitermaterial zu berücksichtigen.
-
Im Betrieb kann das Modul nacheinander Licht mit den ersten und zweiten Modulationsfrequenzen f1, f2 in Richtung eines Zielobjekts (206[0002]aussenden. Die Tiefenkamera 108 empfängt und erfasst optische Signale, die von dem Zielobjekt und/oder dem Deckglas 132 (208) reflektiert werden. Die erfassten Signale, von denen jedes eine Kombination aus einem optischen Signal, das vom Zielobjekt reflektiert wird, und einem optischen Signal, das vom Deckglas reflektiert wird, darstellen kann, werden der Verarbeitungsschaltung 140 zugeführt, die die gemessenen Amplituden (amp1, amp2) und die Phasenverschiebungswerte (ϕ1, ϕ2) aus den erfassten Signalen erhält und dann die Amplitude „a“ des vom Deckglas reflektierten Signals und die Amplitude „b“ des vom Zielobjekt reflektierten Signals schätzt (210).
-
Die von der Steuer- und Verarbeitungsschaltung 140 geschätzten Amplitudenwerte (‚a,‘ ‚b‘) können in einigen Fällen hochpräzise Daten liefern und dazu verwendet werden, verschiedene Komponenten des Host-Geräts zu verändern oder andere Aktionen auszulösen. Durch die Bereitstellung genauerer Tiefendaten als bei einigen früheren Techniken kann die aktuelle Offenlegung dazu beitragen, die Funktionalität des Host-Geräts zu verbessern. Beispielsweise kann der Tiefenwert/die Tiefenwerte für die Näherungserkennung verwendet werden, um zu bestimmen, ob die Helligkeit des Bildschirms des Host-Geräts angepasst werden soll (z. B. um die Helligkeit zu verringern, wenn ein Benutzer ein Smartphone für einen Sprachanruf neben sein Ohr gelegt hat). In ähnlicher Weise kann die Steuer- und Verarbeitungsschaltung 140 eine optische oder akustische Warnung an den Benutzer über das Host-Gerät ausgeben, wenn der Wert der Reflexion des Deckglases 132 darauf hinweist, dass sich auf dem Deckglas 132 ein Schmutzfleck befindet. Die Warnung kann den Benutzer darauf hinweisen, dass das Abdeckglas gereinigt werden sollte, um Verunreinigungen auf seiner Oberfläche zu entfernen.
-
Wie oben beschrieben, ist ein Beispiel für ein Host-Gerät, in Bezug auf das die hier beschriebenen Techniken verwendet werden können, ein Smartphone. Die Techniken können jedoch auch in Verbindung mit anderen Host-Geräten verwendet werden, z. B. mit Personal Digital Assistants (PDAs), Laptops, Tablet-Computern, Wearables, Biogeräten, mobilen Robotern, Überwachungskameras, Camcordern und Augmented-Reality-Brillen, um nur einige zu nennen.
-
Verschiedene Aspekte des in dieser Spezifikation beschriebenen Gegenstands und der funktionalen Abläufe können in digitalen elektronischen Schaltungen oder in Computersoftware, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Äquivalente, oder in Kombinationen aus einem oder mehreren davon. Einige Merkmale des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogrammprodukte implementiert werden, d. h. als ein oder mehrere Module von Computerprogrammanweisungen, die auf einem computerlesbaren Medium zur Ausführung durch eine Datenverarbeitungsvorrichtung oder zur Steuerung des Betriebs einer Datenverarbeitungsvorrichtung codiert sind. Das computerlesbare Medium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung, eine Materiezusammensetzung, die ein maschinenlesbares übertragenes Signal bewirkt, oder eine Kombination aus einem oder mehreren davon sein. Die Begriffe „Datenverarbeitungsgerät“ und „Computer“ umfassen alle Geräte, Vorrichtungen und Maschinen zur Verarbeitung von Daten, einschließlich, als Beispiel, eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Die Vorrichtung kann neben der Hardware auch Code enthalten, der eine Ausführungsumgebung für das betreffende Computerprogramm schafft, z. B. Code, der eine Prozessor-Firmware, einen Protokollstapel, ein Datenbankmanagementsystem, ein Betriebssystem oder eine Kombination aus einem oder mehreren davon darstellt.
-
Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Skript oder Code bezeichnet) kann in jeder Form von Programmiersprache geschrieben werden, einschließlich kompilierter oder interpretierter Sprachen, und es kann in jeder Form eingesetzt werden, einschließlich als eigenständiges Programm oder als Modul, Komponente, Unterprogramm oder andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm entspricht nicht unbedingt einer Datei in einem Dateisystem. Ein Programm kann in einem Teil einer Datei gespeichert sein, die auch andere Programme oder Daten enthält (z. B. ein oder mehrere Skripte, die in einem Markup-Sprachdokument gespeichert sind), in einer einzelnen Datei, die dem betreffenden Programm gewidmet ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann zur Ausführung auf einem Computer oder auf mehreren Computern bereitgestellt werden, die sich an einem Standort befinden oder über mehrere Standorte verteilt und über ein Kommunikationsnetzwerk miteinander verbunden sind.
-
Die in dieser Spezifikation beschriebenen Prozesse und Logikflüsse können von einem oder mehreren programmierbaren Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen auszuführen, indem sie auf Eingangsdaten arbeiten und Ausgaben erzeugen. Die Prozesse und Logikflüsse können auch von speziellen Logikschaltungen, z. B. einem FPGA (Field Programmable Gate Array) oder einem ASIC (Application Specific Integrated Circuit), ausgeführt werden, und die Vorrichtung kann auch als solche implementiert werden.
-
Zu den Prozessoren, die sich für die Ausführung eines Computerprogramms eignen, gehören z. B. sowohl allgemeine als auch spezielle Mikroprozessoren sowie ein oder mehrere Prozessoren jeder Art von Digitalcomputer. Im Allgemeinen empfängt ein Prozessor Befehle und Daten aus einem Festwertspeicher oder einem Speicher mit wahlfreiem Zugriff oder aus beiden. Die wesentlichen Elemente eines Computers sind ein Prozessor zur Ausführung von Befehlen und ein oder mehrere Speichergeräte zum Speichern von Befehlen und Daten. Im Allgemeinen enthält ein Computer auch ein oder mehrere Massenspeichergeräte zum Speichern von Daten, z. B. magnetische, magnetooptische oder optische Platten, oder ist operativ gekoppelt, um Daten von diesen zu empfangen oder Daten an diese zu übertragen, oder beides. Ein Computer muss jedoch nicht über solche Vorrichtungen verfügen. Darüber hinaus kann ein Computer in ein anderes Gerät eingebettet sein, z. B. in ein Smartphone, einen persönlichen digitalen Assistenten (PDA), einen mobilen Audio-Player, einen GPS-Empfänger (Global Positioning System), um nur einige zu nennen. Zu den computerlesbaren Medien, die zum Speichern von Computerprogrammanweisungen und -daten geeignet sind, gehören alle Formen von nichtflüchtigen Speichern, Medien und Speichervorrichtungen, darunter beispielhaft Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z. B. interne Festplatten oder Wechseldatenträger; magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können durch spezielle Logikschaltungen ergänzt werden oder in diese integriert sein.
-
Es wurde eine Reihe von Implementierungen beschrieben. Dennoch können verschiedene Modifikationen vorgenommen werden, ohne vom Geist der Erfindung abzuweichen. Dementsprechend sind andere Implementierungen innerhalb des Geltungsbereichs der Ansprüche.