-
Hintergrund
-
In herkömmlichen Computersystemen mit einer oder mehreren integrierten Kameras besteht ein Problem darin, dass übermäßige Mengen an Bilddaten an den Verarbeitungskern des Computersystems (z. B. einen oder mehrere Anwendungsprozessoren eines tragbaren Gerätes) gestreamt werden, um dem Verarbeitungskern zu ermöglichen, die Bilddaten zu verarbeiten und, basierend auf deren Inhalt, intelligente Entscheidungen zu treffen. Bedauerlicherweise sind viele der an den Prozessor gestreamten Daten nicht relevant oder von Interesse. Somit wird eine bedeutende Menge an Energie und Ressourcen dazu verwendet, bedeutungslose Daten durch das System zu transportieren.
-
Kurzdarstellung
-
Eine Vorrichtung wird beschrieben. Die Vorrichtung beinhaltet ein erstes Kamerasystem mit einem Prozessor und einem Speicher. Das erste Kamerasystem beinhaltet eine Schnittstelle, um Bilder von einem zweiten Kamerasystem zu empfangen. Das erste Kamerasystem beinhaltet einen Prozessor und einen Speicher. Der Prozessor und der Speicher sind vorgesehen, einen Bildverarbeitungsprogrammcode für erste Bilder, die von dem ersten Kamerasystem aufgenommen werden, sowie für zweite Bilder, die von dem zweiten Kamerasystem aufgenommen werden und an der Schnittstelle empfangen werden, auszuführen.
-
Eine Vorrichtung wird beschrieben. Die Vorrichtung beinhaltet Mittel zum Verarbeiten von Bildern an einem ersten Kamerasystem, die von dem ersten Kamerasystem empfangen werden. Die Vorrichtung beinhaltet ebenfalls Mittel zum Verarbeiten von Bildern an dem ersten Kamerasystem, die von einem zweiten Kamerasystem empfangen werden und mittels einer Kommunikationsverbindung, die das erste und das zweite Kamerasystem miteinander verbindet, an das erste Kamerasystem gesendet werden. Die Vorrichtung beinhaltet ebenfalls Mittel zum Versenden von Benachrichtigungen von dem ersten Kamerasystem an einen Anwendungsprozessor bezüglich Ereignissen, die das erste und das zweite Kamerasystem, oder auch beide, betreffen.
-
Figuren
-
Die nachfolgende Beschreibung und die angeführten Zeichnungen dienen der Veranschaulichung von Ausführungsformen der Erfindung. In den Zeichnungen:
-
stellt 1 eine erste vom Stand der Technik erfasste Dualkamera-Anordnung dar;
-
stellt 2 eine zweite vom Stand der Technik erfasste Dualkamera-Anordnung dar;
-
stellt 3 eine dritte vom Stand der Technik erfasste Dualkamera-Anordnung dar;
-
stellt 4 eine verbesserte Dualkamera-Anordnung dar;
-
stellt 5 ein von der Kamera der Dualkamera-Anordnung gemäß 4 durchgeführtes Verfahren dar;
-
stellt 6 ein Computersystem dar
-
Ausführliche Beschreibung
-
1 stellt ein erstes vom Stand der Technik erfasstes Computersystem mit einer Dualkamera-Anordnung dar, in der zwei verschiedene Kameras 101, 102 jeweils getrennte Hardware(105, 106)-Kanäle zu einem Anwendungsprozessor 103 aufweisen. Gemäß des Betriebs des Systems von 1 leiten die zwei Kameras 101, 102 ihre eigenen Bildströme und andere Kommunikationsformen im Wesentlichen unabhängig voneinander über ihre jeweiligen Kanäle 105, 106 durch die Hardwareplattform 104 des Systems an den Prozessor.
-
Ein Problem des Ansatzes gemäß 1 besteht darin, dass im Vergleich zu einer Lösung mit einer einzigen Kamera die doppelte Menge an Materialaufwand und Verkabelung im Computersystem anfällt. Wenn beispielsweise die erste Kamera 101 eine Kommunikation an den Prozessor 103 beabsichtigt, werden ein oder mehrere Signale durch den Kanal 105 gesendet, während ein oder mehrere Signale durch den Kanal 106 gesendet werden, wenn die zweite Kamera 102 eine Kommunikation an den Prozessor 103 beabsichtigt.
-
Der Prozessor 103 muss demnach geeignet sein, zwei verschiedene Kommunikationen an zwei verschiedenen Prozessoreingängen 107, 108 zu bedienen. (z. B. Prozessor-Interrupt-Eingänge) Der Verbrauch von zwei verschiedenen Prozessoreingängen 107, 108 ist in der Weise ineffizient, dass der Prozessor 103 lediglich eine begrenzte Anzahl von Eingängen aufweist, und zwei dieser Eingänge, 107, 108, durch das Dualkamerasystem verbraucht werden. Demnach kann es schwierig sein, andere direkte Kanäle von anderen Komponenten des Systems (welche zahlreich sein können) zu versorgen, was sich als besonders kompliziert erweisen kann, falls eine der Komponenten, die den Prozessor nicht auf direktem Weg erreichen kann, vergleichsweise wichtig ist.
-
Ein weiteres Problem des Ansatzes gemäß 1 ist die komplexe Verdrahtungsdichte und der hiermit verbundene Energieverbrauch. Hier ist eine Situation zu beachten, in der beide Kameras über ihre jeweiligen Kanäle 105, 106 an den Prozessor 103 streamen. Beide Datenströme werden demnach getrennt voneinander durch die Hardwareplattform 104 zu dem Prozessor transportiert.
-
Aufgrund der Konzipierung von zwei mit der Hardwareplattform 104 verbundenen Hardwarekanälen 105, 106 und des hieraus zwangsläufig resultierenden Verdrahtungsaufwandes besteht außerdem das Problem eines ineffizienten Energieverbrauchs, insbesondere dann, falls Rohdaten oder geringfügig verarbeitete Bilddaten an den Prozessor 104 geleitet werden (beispielsweise dann, wenn der Prozessor vergleichsweise komplexe Funktionen bezüglich der von den Kameras 101, 102 gestreamten Daten durchführt). In diesem Fall müssen zwei getrennte Ströme, die potentiell große Datenmengen beinhalten, über potentiell weite Entfernungen innerhalb der Plattform 104 transportiert werden, wozu erhebliche Energiemengen erforderlich sind.
-
Ein weiteres Problem des Ansatzes gemäß 1 besteht darin, dass die Schnittstellen 109, 110 zu dem Dualkamerasystem vergleichsweise inflexibel sind. Hier müssen die zwei Kameras mit den beiden für sie bereitgestellten physischen Schnittstellen 109, 110 verbunden werden. Dies bedeutet, dass es dem Entwickler der Hardwareplattform 104 nicht möglich ist, Kameras zu integrieren, welche mit den Schnittstellen 109 und 110 nicht kompatibel sind; ebenso ist es Kameraherstellern nicht möglich, ihre Kameras in die Plattform 104 des Entwicklers zu integrieren.
-
Ein verbesserter Ansatz, vom Stand der Technik erfasst und bekannt, wird in 2 veranschaulicht. Gemäß des Ansatzes der 2 ist eine Brückenfunktion 212 zwischen dem Dualkamerasystem 201, 202 und dem Prozessor 203 vorgesehen. Die Brückenfunktion 212 vereint und/oder bündelt die Kommunikationen von den zwei Kameras 201, 202 (z. B. duale Bildströme usw.) in einen einzigen Kanal 213, der den Prozessor 203 versorgt.
-
Der Einsatz der Brückenfunktion 212 hilft, einige der zuvor bezüglich 1 erörterten Unzulänglichkeiten abzumildern. Insbesondere wird an dem Prozessor lediglich ein Eingang 207 verbraucht, wodurch ein Eingang 208 „freigemacht“ wird (im Vergleich zu dem Ansatz gemäß 1), sodass z. B. andere, von der Kamera verschiedene, Systemkomponenten direkt mit dem Prozessor 203 kommunizieren können.
-
Jedoch stellt der Energieverbrauch weiterhin ein verbesserungsfähiges Anliegen dar. Hier ist die Brückenfunktion 212 auf eine Bündelung und/oder Verzahnung beschränkt und führt keine wesentlichen Datenreduktionsprozesse (wie beispielsweise Datenkomprimierung) durch. Wenn große Datenmengen an den Prozessor 203 gestreamt werden, muss die Hardwareplattform 204 somit erhebliche Energiemengen aufwenden, um große Datenmengen über weite Entfernungen innerhalb der Plattform 204 zu transportieren.
-
Außerdem löst die Brückenfunktion 212 nicht das Problem einer möglichen Inkompatibilität der Art von Schnittstellen 209, 210, welche von der Plattform 204 zwecks Verbindens mit einer Kamera bereitgestellt werden, mit der Art von Schnittstellen vorhandener Kameras, deren Konzipierung eine Integration in das System ermöglichen könnte.
-
Bezugnehmend auf 3 kann das Problem des Energieverbrauchs zumindest teilweise durch den Einsatz von Verarbeitungsintelligenz in einer der Kameras abgemildert werden. Hier stellt 3 einen weiteren vom Stand der Technik erfassten Ansatz dar, in dem eine der Kameras innerhalb des Dualkamerasystems („primäre“ Kamera 301) über einen lokalen Prozessor 314 und einen lokalen Speicher 315 verfügt. Der Prozessor 314 führt einen Programmcode aus dem Speicher 315 aus und kann bestimmte Funktionen zur Reduktion der Datengröße durchführen, beispielsweise Datenkomprimierung, um die Datenmenge, die zu dem Hauptprozessor 303 transportiert werden muss, in effizienter Weise zu verringern.
-
Werden weniger Daten an den Hauptprozessor 303 übertragen (z. B. wenn idealerweise lediglich diejenigen Informationen von der primären Kamera 301 an den Hauptprozessor 303 gesendet werden, die der Hauptprozessor 303 zwecks Ausführens bildbezogener Anwendungen benötigt), ist der Energieverbrauch der Hardwareplattform 304 geringer, ohne hierdurch die an den Hauptprozessor 303 gestellten Funktionalitätsanforderungen zu beeinträchtigen.
-
Jedoch ist zu beachten, dass der Ansatz gemäß 3 lediglich eine Lösung für einen einzelnen Prozessor 314 in einer einzelnen der Kameras 301 beinhaltet. Hier verfügen Dualkamerasysteme typischerweise über eine primäre Kamera 301 und eine sekundäre Kamera 302 (beispielsweise kann die sekundäre Kamera eine „Rückseiten“-Kamera sein, die von dem Benutzer eines tragbaren Gerätes weg gerichtet ist, während die primäre Kamera eine „Vorderseiten“-Kamera sein kann, die auf den Benutzer eines tragbaren Gerätes gerichtet ist (oder alternativ kann die sekundäre Kamera die primäre Kamera, und die Vorderseiten-Kamera kann die sekundäre Kamera sein). Die geringere Funktionsfähigkeit der sekundären Kamera 302 rechtfertigt üblicherweise nicht die zusätzlichen Kosten des Prozessors 314 und des sich in der primären Kamera 301 befindlichen Speichers 315. Somit findet die Verbesserung der Senkung des Energieverbrauchs in Form des Versendens von weniger Daten über die Plattform 304 an den Hauptprozessor 303 lediglich für Übertragungen von der primären Kamera 301 an den Hauptprozessor 303 statt, hingegen nicht für Übertragungen von der sekundären Kamera 302 an den Hauptprozessor 303.
-
Wie in den Ansätzen gemäß s. 1 und 2, stellt die Hardwareplattform 304 gemäß 3 außerdem ein Paar Schnittstellen 309, 310 für das Dualkamerasystem bereit. Somit besteht weiterhin das Problem der Inkompatibilität der Schnittstellen 309, 310, welche mit der Hardwareplattform 304 kompatibel sind, mit den Schnittstellen, die für Kameras entwickelt sind, die anderweitig als potentielle Kandidaten für eine Integration in die Plattform 304 in Frage kämen. Darüber hinaus verbraucht der Ansatz gemäß 3 zwei Prozessoreingänge 307, 308, welche, wie bezüglich 1 erörtert wurde, eine direkte Kommunikation anderer wichtiger Komponenten innerhalb des Computersystems mit dem Hauptprozessor 303 verhindern könnten.
-
.4 veranschaulicht einen neuartigen Ansatz, der die zuvor erwähnten Probleme in besserer Weise bewältigt als irgendeine der vom Stand der Technik erfassten Lösungen, welche zuvor bezüglich der 1 bis 3 erörtert wurden. Der Ansatz gemäß 4 beinhaltet einen Kommunikationskanal 416 zwischen der sekundären Kamera 402 und der primären Kamera 401. Ebenfalls ist eine Brückenfunktion 417 in der primären Kamera 401 vorgesehen, zwecks z. B. Bündelung und/oder Kombinieren von Bildströmen von beiden Kameras 401, 402 durch den Einzelkanal 405, der zwischen der primären Kamera 401 und dem Hauptprozessor 403 besteht. Wie weiter unten detaillierter erörtert, kann der Kanal 405 ein direkter festverdrahteter Kanal sein, oder ein logischer Kanal, der physisch durch die verschiedenen Komponenten der Hardwareplattform 404 verläuft.
-
In dem Ansatz gemäß 4 werden die Bilddaten von der zweiten Kamera 402 über den Kommunikationskanal 416, der zwischen den zwei Kameras 401, 402 besteht, an die primäre Kamera 401 geleitet. Die Brückenfunktion 417, die in die primäre Kamera 401 eingebettet ist (z. B. in Form eines ausführbaren Softwareprogramms, das der Prozessor 414 ausführt) ermöglicht es der primären Kamera 401, sowohl Bilddaten der sekundären Kamera, als auch Bilddaten der primären Kamera, über den Kanal 405 an den Hauptprozessor 403 zu senden.
-
Wie in dem Ansatz gemäß 2 verbraucht der verbesserte Ansatz gemäß 4 lediglich einen Eingang 407 am Hauptprozessor 403, wodurch ein Prozessoreingang 408 „freigemacht“ wird, sodass dieser zur direkten Kommunikation mit anderen Komponenten des Systems verwendet werden kann.
-
Wie in dem Ansatz gemäß 3 wird Energie gespart, da Datenreduktionsmaßnahmen, beispielsweise Datenkomprimierung, seitens der primären Kamera 401 durchgeführt werden können, wodurch die Gesamt-Datenmenge, die durch die Plattform 404 zu dem Hauptprozessor 403 transportiert werden muss, verringert wird. Während jedoch der Ansatz gemäß 3 lediglich den Energieverbrauch für die primäre Kamera 301 senken konnte (d. h. lediglich die Größe der Bilddaten der primären Kamera konnten verringert werden), kann der Ansatz gemäß 4 den mit dem Transport von Informationen an den Hauptprozessor 403 verbundenen Energieverbrauch für beide Kameras 401, 402 senken.
-
Hier können die von der primären Kamera 401 bezüglich ihrer eigenen Bilddaten durchgeführten Datenreduktionsprozesse (beispielsweise Datenkomprimierung) ebenfalls bezüglich der Bilddaten durchgeführt werden, die sie von der sekundären Kamera 402 mittels Kanal 416 empfängt. Somit können Datenströme mit geringeren Datenmengen von beiden Kameras 401, 402 an den Hauptprozessor 403 gesendet werden.
-
Darüber hinaus ist die sekundäre Kamera 402 mindestens neutral in Bezug auf die bestimmte Kamera-Schnittstelle 409, die auf der Host-Hardwareplattform 404 umgesetzt wurde. Demnach erfordert lediglich die primäre Kamera 401 eine Schnittstelle, die mit einer Schnittstelle 409 der Plattform 404 kompatibel ist. Die Schnittstelle 419 der sekundären Kamera braucht lediglich mit der zweiten Schnittstelle 418 der primären Kamera kompatibel zu sein, damit die Lösung umgesetzt werden kann. Demnach liefert die Existenz des Kanals 416 zwischen der primären und sekundären Kamera 401, 402 dem Systementwickler eine potentiell höhere Wahlfreiheit bezüglich der Kameras, die mit ihrer Plattform 404 integriert werden können.
-
Ein konkretes Beispiel anführend, kann der Kanal 416, der zwischen den Kameras 401, 402 liegt, ein proprietärer Kanal des Kameraherstellers sein, welcher sowohl die primäre Kamera 401, als auch die sekundäre Kamera 402 herstellt. Selbst wenn die sekundäre Kamera 402 nicht über eine mit der Host-Plattform 404 kompatible Schnittstelle verfügt, kann sie ungeachtet dessen ihre Daten über den die beiden Kameras verbindenden Kanal 416 und die Brückenfunktion 417 der primären Kamera 401 an den Hauptprozessor 403 streamen.
-
Außerdem kann der Ansatz gemäß 4 naturgemäß effizienter sein für Anwendungen, in denen Bilder von den zwei Kameras 401, 402 kombiniert oder anderweitig vereint werden zwecks Bildung eines kohäsiven einzigen Informationssatzes. Ein Beispiel ist eine Umsetzung, in der die zwei Kameras 401, 402 in Form eines Stereopaars funktionieren und ihre jeweiligen Bilder kombiniert werden, um ein dreidimensionales Tiefenprofil („Tiefenkarte“) eines Objektes, auf welches die beiden Kameras 401, 402 fokussiert sind, zu bestimmen. Das Tiefenprofil kann von dem Hauptprozessor 403 verwendet werden, um gewisse Bildtiefenfunktionen durchzuführen (beispielsweise Hand/Finger-Bewegungserkennung, Gesichtserkennung usw.).
-
Hier kann die auf der primären Kamera 401 ausgeführte Software ihre eigenen Bildstrom-Daten, sowie Bildstrom-Daten der sekundären Kamera 402, verarbeiten, um die Tiefenkarte zu berechnen. Die Tiefenkarte kann sodann von der primären Kamera 401 an den Hauptprozessor 403 gesendet werden. Hier war es im Rahmen bereits bekannter Lösungen notwendig, dass beide Bildströme zu dem Hauptprozessor 403 gesendet wurden. Der Hauptprozessor 403 führt seinerseits die Berechnungen durch, um die Tiefenkarte zu bestimmen.
-
In dem soeben vorstehend beschriebenen verbesserten Ansatz, in dem die Tiefenkarte in der primären Kamera 401 berechnet wird, findet eine bedeutende Senkung des Energieverbrauchs statt, da lediglich eine Tiefenkarte durch die Plattform 404 zu dem Hauptprozessor 403 transportiert wird, und die (potentiell großen Mengen an) Bildstrom-Daten bleiben in dem Dualkamerasystem 401, 402 lokalisiert. Hier ist die Tiefenkarte als bedeutend geringere Datenmenge zu verstehen, als die Daten der Bildströme, aus denen die Tiefenkarte berechnet wird.
-
Ein weiteres Beispiel ist der Autofokus. Hier kann Tiefenprofilinformation, die anhand von Bildströmen von beiden Kameras 401, 402 durch auf der primären Kamera 401 ausgeführte Software berechnet wird, verwendet werden, um eine Autofokus-Funktion für eine oder beide Kameras 401, 402 zu steuern. Beispielsweise kann auf der primären Kamera 401 ausgeführte Software Bildströme von beiden Kameras 401, 402 verarbeiten, um Steuersignale für Schwingspulen, Auslöser oder andere elektro-mechanische Vorrichtungen innerhalb einer oder beiden Kameras 401, 402 bereitzustellen, um die Fokuspositionen des/der Linsensystem(e) der Kamera(s) 401, 402 einzustellen.
-
Vergleichsweise sei erwähnt, dass herkömmliche Systeme die Bilddaten an den Hauptprozessor streamen und der Hauptprozessor die Autofokuseinstellungen bestimmt. In dem verbesserten Ansatz, welcher von dem verbesserten System gemäß 4 durchgeführt werden kann, empfängt der Hauptprozessor 403 bereits fokussierte Bilddaten (d. h. es ist nicht nötig, dass der Hauptprozessor 403 verschiedene Autofokus-Vorgänge durchführt). Die geringere Menge an Daten, die an den Hauptprozessor 403 gesendet wird, trägt zusätzlich zu einer Senkung des Energieverbrauchs bei.
-
Andere Funktionen können ebenfalls durch die auf der primären Kamera 401 ausgeführte Software durchgeführt werden, um die Informationsmenge, die von der Dualkamera 401, 402 an den Hauptprozessor 403 gesendet wird, zu verringern. Insbesondere ist in herkömmlichen Systemen ein Großteil der Informationen, die an den Hauptprozessor 403 gestreamt werden, von geringem Wert.
-
Im Fall einer Bilderkennungsfunktion werden beispielsweise große Datenmengen, die das gesuchte Bild nicht enthalten, in verschwenderischer Weise an den Hauptprozessor 403 gestreamt, nur um ausgesondert zu werden, sobald der Hauptprozessor 403 feststellt, dass das gesuchte Bild nicht vorhanden ist. Ein besserer Ansatz wäre, die Bilderkennung innerhalb des primären Prozessors 401 durchzuführen und den Hauptprozessor 403 nur dann zu benachrichtigen, wenn ein gesuchtes Bild erkannt wurde, dass das gewünschte oder gesuchte Bild momentan im Sichtfeld der Kamera(s) ist.
-
Nachdem das gesuchte Element (oder das Element, an dem Interesse besteht) von der primären Kamera 401 erkannt wird, können Bilddaten an den Hauptprozessor 403 gestreamt werden, sodass der Prozessor beliebige entsprechende Funktionen ausführen kann, die nach der Identifikation des gewünschten Bildes auszuführen vorgesehen sind (z. B. Verfolgung des Objekts, Aufnahme von Merkmalen der Umgebung des Objekts usw.). Somit werden idealerweise lediglich relevante Informationen, oder Informationen, an denen Interesse besteht (oder solche Informationen, die mit großer Wahrscheinlichkeit relevante Informationen und Informationen, an denen Interesse besteht, beinhalten) durch die Plattform 404 an den Hauptprozessor 403 geleitet. Andere Informationen, die keine relevanten Elemente beinhalten, werden idealerweise von der primären Kamera 401 ausgesondert.
-
Hier ist zu beachten, dass das gesuchte Element, an dem Interesse besteht, in dem Bildstrom der primären Kamera, oder in dem Bildstrom der sekundären Kamera gefunden werden kann, da die primäre Kamera beide Ströme verarbeiten kann. Abhängig von der Umsetzung kann der Auslöser der Meldung an den Hauptprozessor 403, dass ein Element, an dem Interesse besteht, gefunden wurde, konfiguriert sein, das Bild in beiden Strömen, oder auch nur in einem Strom zu identifizieren.
-
Die zugehörigen Merkmale der Suchverfahren, die von der primären Kamera bezüglich der Bildströme von einer oder beiden Kameras 401, 402 ausgeführt werden, können beispielsweise Gesichtsdetektion (Detektieren des Vorhandenseins eines beliebigen Gesichts), Gesichtserkennung (Detektieren des Vorhandenseins eines bestimmten Gesichts), Gesichtsausdruckserkennung (Detektieren eines speziellen Gesichtsausdrucks), Objektdetektion oder -erkennung (Detektieren des Vorhandenseins eines generischen oder bestimmten Objekts), Bewegungsdetektion oder -erkennung (Detektieren einer allgemeinen oder bestimmten Art von Bewegung), Ereignisdetektion oder -erkennung (Detektieren einer allgemeinen oder bestimmten Art von Ereignis), Bildqualitätsdetektion oder -erkennung (Detektieren eines allgemeinen oder bestimmten Bildqualitätsniveaus) beinhalten.
-
Nachdem die primäre Kamera ein gesuchtes Element in einem Bildstrom detektiert hat, kann sie ebenfalls anschließend eine Anzahl von zugehörigen „Nachfolge“-Vorgängen durchführen, um die Informationsmenge, die letztlich an den Hauptprozessor 403 geliefert wird, weiter zu begrenzen. Einige Beispiele der zusätzlichen Maßnahmen, die von der primären Kamera durchgeführt werden können, beinhalten eine oder mehrere der folgenden: 1) Identifizieren eines Interessenbereichs innerhalb eines Bildes (z. B. der unmittelbare Umgebungsbereich einer oder mehrerer Suchmerkmale innerhalb des Bildes); 2) Analysieren eines Interessenbereichs innerhalb eines Bildes und dessen Übermittlung an andere Verarbeitungskomponenten (z. B. Komponenten mit höherer Leistungsfähigkeit) des Systems; 3) Aussondern des Bereichs des Bildes, an dem kein Interesse besteht; 4) Komprimieren eines Bildes oder eines Teils eines Bildes, bevor dieses an andere Komponenten innerhalb des Systems übermittelt wird; 5) Aufnahme einer bestimmten Bildart (z. B. eines Snapshots, einer Serie von Snapshots, eines Videostreams); 6) Ändern einer oder mehrerer Kameraeinstellungen (z. B. Ändern der Einstellungen der an die Optik zum Vergrößern und Verkleinern gekoppelten Servomotoren, oder anderweitige Einstellung des Fokus und der Optik der Kamera; Ändern der Belichtungseinstellung; Auslösen eines Blitzes).
-
Es ist zu beachten, dass, obwohl 4 einen direkten Kanal 405 zwischen der primären Kamera 401 und dem Hauptprozessor 403 darstellt, der vollständige Pfad, von einem Ende zum anderen, zwischen der primären Kamera 401 und dem Hauptprozessor 403 ein direkter Hardwarekanal sein kann, der an dem Hauptprozessor 403 endet und/oder eine Anzahl von System-Funktionsblöcken durchläuft, bevor er die Kamera erreicht. In einer Ausführungsform besteht ein direkter Hardwarepfad von der primären Kamera 401 zu einem Interrupt-Eingang des Hauptprozessors 403 zwecks Benachrichtigens des Hauptprozessors 403 von an der primären Kamera detektierten plötzlichen Ereignissen. Außerdem können aktuelle Daten an den Systemspeicher der Plattform 404 (nicht dargestellt) übermittelt werden, wo sie anschließend von dem Hauptprozessor 403 gelesen werden.
-
In einer Ausführungsform kann die Schnittstelle, in welche die primäre Kamera eingesteckt wird, von einer Peripherie-Steuerzentrale (nicht dargestellt) bereitgestellt werden. Die Daten von der primären Kamera können sodann von der Peripherie-Steuerzentrale direkt an den Prozessor geliefert oder im Speicher gespeichert werden.
-
Software/Firmware, die von der primären Kamera 401 ausgeführt wird, kann in einem nichtflüchtigen Speicher, der innerhalb der Kamera 401 oder an einer anderen Stelle der Plattform 404 angebracht ist, gespeichert werden. Im letzteren Fall wird die Software/Firmware während des Hochfahrens des Systems von der Plattform an die primäre Kamera 401 geladen. Ebenso können der Kameraprozessor 414 und/oder -speicher 415 als Komponenten der primären Kamera 401 integriert sein, oder sie können physisch außerhalb der Kamera 401 angebracht sein, jedoch sehr nah an der Kamera platziert werden, sodass sie effektiv als lokale Verarbeitungssysteme der Kamera 401 betrieben werden. Somit ist die unmittelbare Anwendung im Allgemeinen eher für Kamerasysteme als für spezifische Kameras bestimmt.
-
Es ist zu beachten, dass jede der Kameras 401, 402 eine Visible-Light-Kamera, eine Tiefeninformationskamera (beispielsweise eine ToF(„time-of-flight“)-Kamera, die Infrarotlicht ausstrahlt und effektiv die Zeit misst, welche das ausgestrahlte Licht benötigt, nach der Reflektion zu der Kamera zurückzukehren), oder eine Kamera, in der sowohl Visible-Light-Detektion, als auch Tiefeninformationsaufnahme als Gesamtlösung integriert werden.
-
Obwohl sich die vorstehende Erörterung auf die Ausführung von Programmcodes (Software/Firmware) durch ein Kamerasystem fokussiert hat, können einige oder sämtliche der vorstehenden Funktionen vollständig in Hardware durchgeführt werden (z. B. in Form eines anwendungsspezifischen integrierten Schaltkreises oder einer programmierbaren logischen Schaltung, programmiert zwecks Durchführens dieser Funktionen), oder als Kombination von Hardware und Programmcode.
-
Die Schnittstellen zwischen der primären Kamera 401 und der Hardwareplattform 404 können eine Industriestandardschnittstelle, beispielsweise eine MIPI-Schnittstelle, sein. Die Schnittstellen und/oder der Kanal zwischen den zwei Kameras können eine Industriestandardschnittstelle (beispielsweise eine MIPI-Schnittstelle), oder eine proprietäre Schnittstelle sein.
-
.5 stellt eine vorstehend beschriebene Methodik dar, die von einem System mit mehreren Kameras, in welchem eine Kommunikationsverbindung zwischen Kameras besteht, durchgeführt werden kann. Gemäß 5 beinhaltet die Methodik das Verarbeiten von Bildern, die von einem ersten Kamerasystem 501 empfangen werden, am ersten Kamerasystem. Die Methodik beinhaltet ebenfalls das Verarbeiten von Bildern an dem ersten Kamerasystem, die von einem zweiten Kamerasystem empfangen werden und mittels einer Kommunikationsverbindung, die das erste und das zweite Kamerasystem 502 miteinander verbindet, an das erste Kamerasystem gesendet werden. Die Methodik beinhaltet ebenfalls das Versenden von Benachrichtigungen von dem ersten Kamerasystem an einen Anwendungsprozessor bezüglich Ereignissen, die das erste und zweite Kamerasystem 503, oder auch beide, betreffen.
-
.6 stellt eine exemplarische Darstellung eines Computersystems bereit. Viele der Komponenten des nachfolgend beschriebenen Computersystems sind auf ein Computersystem mit integrierter Kamera und zugehörigem Bildprozessor (z. B. ein tragbares Gerät in Form eines Smartphones oder eines Tablet-Computers) anwendbar. Personen mit durchschnittlichem Fachwissen werden leicht zwischen beiden unterscheiden können.
-
Wie in 6 veranschaulicht kann das Basiscomputersystem eine zentrale Verarbeitungseinheit 601 (die beispielsweise eine Vielzahl von Allgemeinzweck-Verarbeitungskernen 615_1 bis 615_N und eine Hauptspeichersteuerung 617, angeordnet auf einem Mehrkernprozessor oder einem Anwendungsprozessor, beinhalten kann), einen Systemspeicher 602, eine Anzeige 603 (z. B. Touchscreen, Flachbildschirm), eine lokal kabelgebundene Punkt-zu-Punkt(z. B. USB)-Verbindungsschnittstelle 604, verschiedene Netzwerk-I/O-Funktionen 605 (beispielsweise eine Ethernet-Schnittstelle und/oder ein Mobilfunkmodem-Subsystem), eine WLAN(z. B. WiFi)-Schnittstelle 606, eine drahtlose Punkt-zu-Punkt(z. B. Bluetooth)-Verbindungschnittstelle 607 und eine GPS-Schnittstelle 608, verschiedene Sensoren 609_1 bis 609_N, eine oder mehrere Kameras 610, eine Batterie 611, eine Energieverwaltungssteuerungseinheit 612, einen Lautsprecher und Mikrofon 613 und einen Audio-Coder/Decoder 614, beinhalten.
-
Ein Anwendungsprozessor oder Mehrkernprozessor 650 kann in seiner zentralen Verarbeitungseinheit 601 einen oder mehrere Allgemeinzweck-Verarbeitungskerne 615, eine oder mehrere GPUs (Graphical Processing Unit) 616, eine Speicherverwaltungsfunktion 617 (z. B. eine Speichersteuerung), eine I/O-Steuerfunktion (beispielsweise die zuvor genannte Peripherie-Steuerzentrale) 618, beinhalten. Die Allgemeinzweck-Verarbeitungskerne 615 führen üblicherweise das Betriebssystem und die Anwendungssoftware des Computersystems aus. Die GPUs (Graphical Processing Unit) 616 führen üblicherweise graphikintensive Funktionen aus, z. B. Erzeugen von Informationsgraphiken, die auf der Anzeige 603 angezeigt werden. Die Speichersteuerungsfunktion 617 ist mittels einer Schnittstelle mit dem Systemspeicher 602 verbunden, um Daten an den Systemspeicher 602 zu schreiben, sowie Daten des Systemspeichers zu lesen. Die Energieverwaltungssteuerungseinheit 612 steuert im Allgemeinen den Energieverbrauch des Systems 600.
-
Die Touchscreen-Anzeige 603, die Kommunikationsschnittstellen 604–607, die GPS-Schnittstelle 608, die Sensoren 609, die Kamera 610 und die Lautsprecher/Mikrofon-Coder 613, 614 können allesamt als verschiedene Formen von I/O (Eingang und/oder Ausgang) bezüglich des gesamten Computersystems, einschließlich gegebenenfalls eines integrierten Peripheriegeräts (z. B. die eine oder mehreren Kameras 610) betrachtet werden. Abhängig von der Umsetzung können verschiedene dieser I/O-Komponenten in den Anwendungsprozessor/Mehrkernprozessor 650 integriert werden, oder außerhalb des Verbunds von Anwendungsprozessor/Mehrkernprozessor 650 angebracht werden.
-
In einer Ausführungsform verfügen mindestens zwei Kameras 610 über einen Kommunikationskanal zwischeneinander, und eine dieser Kameras verfügt über einen Prozessor und einen Speicher, um einige oder sämtliche der zuvor bezüglich 4 erörterten Merkmale umzusetzen.
-
Ausführungsformen der Erfindung können verschiedene der zuvor dargelegten Verfahren beinhalten. Die Verfahren können in Form von maschinenausführbaren Befehlen vorliegen. Die Befehle können verwendet werden, um einen Allgemeinzweck- oder Sonderzweck-Prozessor zu veranlassen, bestimmte Verfahren durchzuführen. Alternativ hierzu können diese Verfahren von bestimmten Hardwarekomponenten, welche über festverdrahtete Logik zur Durchführung der Verfahren verfügen, oder von beliebigen Kombinationen programmierter Computerkomponenten und benutzerdefinierten Hardwarekomponenten, durchgeführt werden.
-
Elemente der vorliegenden Erfindung können ebenfalls in Form eines maschinenlesbaren Mediums zum Speichern maschinenausführbarer Befehle bereitgestellt werden. Das maschinenlesbare Medium kann in nichteinschränkender Form Floppy-Disketten, optische Discs, CD-ROMs, magneto-optische Discs, Flash-Speicher, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Verbreitungsmedien oder andere Formen von medien- und/oder maschinenlesbaren Medien, die zum Speichern elektronischer Befehle geeignet sind, beinhalten. Beispielsweise kann die vorliegende Erfindung als Computerprogramm heruntergeladen werden, welches von einem Remote-Computer (z. B. einem Server) an einen anfragenden Computer (z. B. einen Client) mittels in einer Trägerwelle verkörperten Datensignalen oder einem anderen Verbreitungsmedium mittels einer Kommunikationsverbindung (z. B. eines Modems oder einer Netzwerkverbindung) übermittelt werden kann.
-
In der vorstehenden Beschreibung wurde die Erfindung unter Bezugnahme auf spezifische exemplarische Ausführungsformen der Erfindung beschrieben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Abänderungen hieran vorgenommen werden können, ohne vom weiteren Sinn und Anwendungsbereich der Erfindung, gemäß der Darlegung in den angefügten Patentansprüchen, abzuweichen. Demzufolge ist der Beschreibung und den Zeichnungen beispielhafter Charakter beizumessen und sie sind nicht in einschränkender Weise aufzufassen.