-
Hintergrund
-
Die Komposition eines dreidimensionalen (3D) Objektes als Teil eines zweidimensionalen Digitalbildes ist eine gängige Technik, die für Filmspezialeffekte, Produktnachbildungen für Digitalmarketingcontent und dergleichen mehr verwendet wird. Ein Digitalmarketingprofi kann beispielsweise mit einem Bildverarbeitungssystem interagieren, um ein Produkt (beispielsweise einen Schuh) als 3D-Objekt zur Verwendung in einer Anzeige, beispielsweise einer Banneranzeige, in ein Hintergrundbild einzufügen. Diese Funktionalität wird durch Fortschritte bei Bildverarbeitungssystemen möglich und unterstützt die physikbasierte Wiedergabe und die bildbasierte Beleuchtung. Diese Fortschritte ermöglichen, dass das Bildverarbeitungssystem infolge eines realistischen Lichteinfalls sowie durch Farbeffekte bei dem 3D-Objekt auf Grundlage der Umgebung des 2D-Digitalbildes das 3D-Objekt als Teil des 2D-Digitalbildes auf visuell ansprechende Weise komponiert.
-
Herkömmlichen Techniken, die zum Orientieren des 3D-Objektes relativ zu dem 2D-Digitalbild von einem Bildverarbeitungssystem verwendet werden, sind jedoch für Fortgeschrittene ineffizient und aufwändig und für Neulinge schwer verständlich. Dies führt infolge wiederholter Korrekturen, die bei der Orientierung eingesetzt werden, zu einer ineffizienten Nutzung von Rechenressourcen durch das herkömmliche Techniken einsetzende Bildverarbeitungssystem sowie zu einem Ergebnis, das nicht genau ist, das also beispielsweise bei Betrachtung nicht echt wirkt.
-
Herkömmlichen Techniken können beispielsweise in fünf Kategorien unterteilt werden, darunter Techniken auf Basis einer manuellen Rotation (manual rotation based techniques), Techniken auf Basis eines schwindenden Punktes (vanishing point based techniques), Techniken auf Basis einer Markierung (marker based techniques), Techniken auf Basis externer Daten zusätzlich zum Digitalbild (beispielsweise Tiefenfeld oder Gyroskop) und Techniken auf Basis maschinellen Lernens. Bei der herkömmlichen Technik auf Basis einer manuellen Rotation wird das 3D-Objekt in Bezug auf das 2D-Digitalbild unter Verwendung eines Trackballs orientiert. Diese Technik wird jedoch in der Praxis aufgrund dessen, dass ein falsches Drehzentrum unerwartete und unnatürliche Ergebnisse bringt, von professionellen Anwendern oftmals als aufwändig und von Neulingen als fehleranfällig angesehen.
-
Bei der herkömmlichen Technik auf Basis eines verschwindenden Punktes werden orthogonale Gruppen von parallelen Linien des 2D-Digitalbildes verwendet, um verschwindende Punkte zu bestimmen, die ausreichen, um intrinsische Kameraparameter zu gewinnen, so beispielsweise zum Definieren eines Horizonts in dem Bild. In der Praxis enthält das 2D-Digitalbild jedoch gegebenenfalls keine orthogonalen Gruppen von parallelen Linien (beispielsweise für einen „Close up“), und/oder es führen die parallelen Linien zu verschwindenden Punkten, die einen derartigen Abstand von der Bildgrenze aufweisen, dass Fehler entstehen. Zusätzlich bleibt die Orthogonalität zwischen verschiedenen Gruppen von parallelen Linien in einigen Fällen gegebenenfalls nicht erhalten (wenn verschiedene Objekte, die diese Linien definieren, beispielsweise nicht orthogonal zueinander sind), wodurch ebenfalls Fehler entstehen. Des Weiteren beruhen herkömmlichen Techniken auf Basis eines verschwindenden Punktes gegebenenfalls darauf, dass der Anwender die parallelen Linien verfolgt bzw. nachzeichnet (trace), was sowohl aufwändig ist, als auch Ungenauigkeiten entstehen lassen kann. Demgegenüber können automatisierte Techniken der Kantendetektion den Verfolgungs- bzw. Nachzeichnungsprozess teilweise automatisieren, infolge von Vordergrundtexturen und Rauschen in dem 2D-Digitalbild jedoch ebenfalls Fehler entstehen lassen.
-
Bei der herkömmlichen Technik auf Basis einer Markierung kann eine Markierung bekannter Abmessung als Teil des 2D-Digitalbildes vorhanden sein. Intrinsische und extrinsische Kameraparameter werden sodann aus dem 2D-Digitalbild von dem Bildverarbeitungssystem auf Grundlage der Markierung beispielsweise zur Kamerakalibrierung, für Sichteffekte und für eine erweiterte Realität (augmented reality) extrahiert. In der Praxis stehen diese Markierungen jedoch üblicherweise nicht zur Verfügung.
-
Bei der herkömmlichen Technik auf Basis von externen Daten werden Daten, die von Sensoren außerhalb eines Bildsensors einer Digitalbildvorrichtung bezogen werden, zur Bereitstellung zusätzlicher Information verwendet, so beispielsweise Tiefensensoren, Time-of-Flight-Kameras, Strukturgittertechniken und dergleichen mehr. Obwohl diese Daten die Genauigkeit verbessern können, lassen diese Techniken zusätzliche Probleme entstehen. So kann ein Gyroskop beispielsweise die Orientierung der erfassenden Digitalbildvorrichtung, jedoch keine beliebigen Ebenen in einer Bildszene bestimmen. Die Ausgabe eines Tiefensensors wird üblicherweise als verrauscht betrachtet und weist geringe Auflösung auf, weshalb ebenfalls Probleme entstehen können. Diese Probleme können Ungenauigkeiten und unrealistische Ergebnisse entstehen lassen.
-
Bei herkömmlichen Techniken auf Basis maschinellen Lernens, die bei einem einzelnen Digitalbild anwendbar sind, beruhen diese Techniken oftmals auf strengen Annahmen hinsichtlich der Kennwerte des Digitalbildes, die, so sie nicht erfüllt sind, Fehler entstehen lassen. Beispiele für diese Annahmen beinhalten den Typ des Digitalbildes (beispielsweise drinnen versus draußen), den Typ der Ebenen, die aus dem Digitalbild gewonnen werden sollen (beispielsweise Grundebene oder an Kameraachsen ausgerichtete Ebenen) dergleichen mehr. Diese herkömmlichen Techniken können jedoch aufgrund einer Vielzahl von Problemen versagen und beispielsweise infolge der wiederholten Anwendung herkömmlicher Techniken zu einem ineffizienten Verbrauch von Rechenressourcen führen.
-
Zusammenfassung
-
Beschrieben werden Techniken und Systeme, bei denen eine Sichtführung (visual guide) als Teil eines Bildverarbeitungssystems eingesetzt wird, um die Komposition eines 3D-Objektes als Teil eines Digitalbildes zu unterstützen. Die Sichtführung stellt eine minimalistische und rechentechnisch effiziente Technik dar (sie kann beispielsweise innerhalb eines Browsers in Echtzeit ausgeführt werden), um das 3D-Objekt als Teil des Digitalbildes hinzuzufügen, um zu einem optisch ansprechenden Ergebnis zu gelangen. Bei einem Beispiel empfängt das Bildverarbeitungssystem Eingaben zum Spezifizieren einer Orientierung einer Ebene in der Nutzerschnittstelle. Die Eingaben können durch eine Nutzerinteraktion mit einer Nutzerschnittstelle (beispielsweise durch „Klicken“ auf Ecken eines Objektes innerhalb des Digitalbildes) oder automatisch und ohne Nutzereingriff unter Verwendung von Kanten- und Eckdetektionstechniken bereitgestellt werden. In Reaktion hierauf gibt das Bildverarbeitungssystem die Sichtführung in der Nutzerschnittstelle als der Ebene entsprechend, beispielsweise in einer Visualisierung als Netz (mat), aus.
-
Die Nutzerinteraktion wird zudem unterstützt, um die Orientierung der Sichtführung derart zu modifizieren, dass die Orientierung der durch die Sichtführung definierten Ebene visuell zu einer durch das Digitalbild erfassten Bildszene konsistent ist. Das Bildverarbeitungssystem orientiert sodann ein 3D-Objekt auf Grundlage der durch die Sichtführung definierten Ebene, woran sodann Wiedergabetechniken, so beispielsweise eine physikbasierte Wiedergabe und eine bildbasierte Beleuchtung, angewendet werden. Auf diese Weise stellt die Sichtführung einen intuitiven und rechentechnisch effektiven Mechanismus zur Führung der Orientierung von 3D-Objekten als Teil eines Digitalbildes bereit.
-
Die vorliegende Zusammenfassung bietet in vereinfachter Form eine Auswahl von Konzepten, die in der nachstehenden Detailbeschreibung weiter beschrieben werden. Als solches sollte die vorliegende Zusammenfassung wesentliche Merkmale des beanspruchten Erfindungsgegenstandes weder identifizieren, noch soll sie als Hilfe beim Bestimmen des Umfangs des beanspruchten Erfindungsgegenstandes verwendet werden.
-
Figurenliste
-
Die Detailbeschreibung erfolgt anhand der begleitenden Figuren. Entitäten, die in den Figuren dargestellt sind, können eine oder mehrere Entitäten bezeichnen, weshalb in den Erläuterungen das Verweisen auf eine oder mehrere Formen der Entitäten gleichwertig erfolgen kann.
- 1 ist eine Darstellung einer Umgebung bei einer exemplarischen Implementierung, die zum Einsetzen der hier beschriebenen Kompositionstechniken betreibbar ist.
- 2 zeigt detaillierter ein System bei einer exemplarischen Implementierung zur Darstellung des Betriebes eines 3D-Objektkonfigurationsmoduls von 1.
- 3 zeigt ein Ausgabebeispiel der Sichtführung in Reaktion auf Nutzereingaben zum Definieren einer Ebene relativ zu einer Tischplatte eines Digitalbildes.
- 4 zeigt ein Verwendungsbeispiel der Sichtführung von 4 zur Orientierung eines 3D-Objektes relativ zu der Tischplatte des Digitalbildes.
- 5 ist ein Flussdiagramm zur Darstellung einer Prozedur bei einer exemplarischen Implementierung, wobei die Sichtführung ausgegeben wird, um die Komposition eines 3D-Objektes als Teil eines Digitalbildes zu unterstützen.
- 6 zeigt detaillierter eine exemplarische Implementierung zur Darstellung der Sichtführung als Netz.
- 7 zeigt eine exemplarische Implementierung, bei der die Sichtführung ein weiteres visuelles Element als Test-3D-Objekt beinhaltet.
- 8 zeigt eine exemplarische Implementierung von Erstellungs-, Größenänderungs- und Aktualisierungsinteraktionen, die beim Erstellen und anschließenden Modifizieren der Sichtführung verwendbar sind.
- 9 zeigt eine exemplarische Implementierung von Verschiebungs- und Anhebungsinteraktionen, die zum Modifizieren der Sichtführung verwendbar sind.
- 10 bis 13 zeigen Betrachtungen im Zusammenhang mit der Bestimmung der Orientierung der Sichtführung in Bezug auf ein Digitalbild.
- 14 zeigt ein exemplarisches System, das verschiedene Komponenten einer exemplarischen Vorrichtung beinhaltet, die als beliebiger Typ von Rechenvorrichtung gemäß Beschreibung oder Nutzung anhand von 1 bis 13 zur Implementierung von Ausführungsformen der hier beschriebenen Techniken implementiert sein kann.
-
Detailbeschreibung
-
Übersicht
-
Beschrieben werden Techniken und Systeme zum Unterstützen der Komposition eines 3D-Objektes durch ein Bildverarbeitungssystem als Teil eines zweidimensionalen (2D) Bildes. Die Sichtführung stellt eine minimalistische und rechentechnisch effiziente Technik (sie kann beispielsweise innerhalb eines Browsers in Echtzeit ausgeführt werden) dar, um das 3D-Objekt als Teil des Digitalbildes hinzuzufügen, um zu einem visuell ansprechenden Ergebnis zu gelangen. Zu diesem Zweck wird eine Sichtführung (visual guide) auf Grundlage von Eingaben erzeugt, die von dem Bildverarbeitungssystem empfangen werden und die manuell von einem Nutzer mittels einer Interaktion mit einer Nutzerschnittstelle oder automatisch durch eine Kanten- und/oder Eckdetektion definiert werden können. Das Bildverarbeitungssystem kann beispielsweise Eingaben empfangen, die durch eine Nutzerinteraktion mit einer Nutzerschnittstelle empfangen werden, um vier Ecken eines rechteckigen Bereiches im Hintergrund eines Digitalbildes zu spezifizieren, und zwar beispielsweise durch „Klicken“ auf die vier Ecken einer Tischplatte, um einem Fußboden zu folgen, und dergleichen mehr.
-
Das Bildverarbeitungssystem erzeugt sodann eine Sichtführung zur Ausgabe in der Nutzerschnittstelle in Verbindung mit dem Digitalbild, und zwar beispielsweise in einer Visualisierung als „Netz“. Sobald die Sichtführung erzeugt ist, können zusätzliche Nutzereingaben von dem Bildverarbeitungssystem empfangen werden, um die Sichtführung zu modifizieren. Dies kann ein Größenändern, ein Aktualisieren (beispielsweise ein Anpassen der Ecken zur Änderung der Orientierung der Sichtführung im dreidimensionalen Raum), ein Verschieben der Sichtführung (beispielsweise nach vorne, nach hinten, nach links, nach rechts), ein Anheben der Sichtführung (beispielsweise derart, dass ein Sichtpunkt über oder unter einer Ebene der Führung erscheint) und dergleichen mehr beinhalten. Auf diese Weise kann die Sichtführung ohne Weiteres auf Grundlage von Nutzereingaben modifiziert werden, um ein „optisch korrektes Aussehen“ relativ zu einer Bildszene des zweidimensionalen Bildes auch dann zu erreichen, wenn Tiefeninformation oder andere Information, die zum Definieren von dreidimensionalen Beziehungen verwendbar ist, für das zweidimensionale Bild nicht zur Verfügung steht.
-
Die Sichtführung wird sodann von dem Bildverarbeitungssystem zur Komposition eines 3D-Objektes als Teil des 2D-Digitalbildes eingesetzt. Die Sichtführung gemäß vorstehender Beschreibung definiert eine Ebene relativ zu dem 2D-Digitalbild. Entsprechend wird ein 3D-Objekt von dem Bildverarbeitungssystem automatisch und ohne Nutzereingriff zu der durch die Sichtführung definierten Ebene orientiert. Als Teil hiervon können zudem eine physikbasierte Wiedergabe und eine bildbasierte Beleuchtung derart eingesetzt werden, dass das 3D-Objekt bei einer Komposition als Teil des 2D-Digitalbildes auf Grundlage der Ebene der Sichtführung realistisch aussieht. Auf diese Weise kann das 3D-Objekt auf der Sichtführung (beispielsweise in einer Visualisierung als Platzierungsnetz) „ruhen“ und auf rechentechnisch effiziente und intuitive Weise mit minimalen Verarbeitungsressourcen visuell konsistent zu einer Bildszene des 2D-Digitalbildes erscheinen.
-
Bei der nachfolgenden Diskussion wird eine exemplarische Umgebung beschrieben, die die hier beschriebenen Techniken einsetzen kann. Zudem werden exemplarische Prozeduren beschrieben, die in der exemplarischen Umgebung wie auch in anderen Umgebungen eingesetzt werden können. Infolgedessen ist die Durchführung der exemplarischen Prozeduren nicht auf die exemplarische Umgebung beschränkt, und die exemplarische Umgebung ist nicht auf die Durchführung der exemplarischen Prozeduren beschränkt.
-
Exemplarische Umgebung
-
1 ist eine Darstellung einer Digitalmedienumgebung 100 bei einer exemplarischen Implementierung, die zum Einsetzen der hier beschriebenen Techniken betreibbar ist. Die dargestellte Umgebung 100 beinhaltet eine Rechenvorrichtung 102, die auf vielerlei Arten konfiguriert sein kann.
-
Die Rechenvorrichtung 102 kann beispielsweise als Desktopcomputer, Laptopcomputer, Mobilvorrichtung (unter Annahme der tragbaren Variante wie beispielsweise bei einem Tablet oder Mobiltelefon, wie dargestellt ist) und dergleichen mehr konfiguriert sein. Die Rechenvorrichtung 102 kann von einer Vollressourcenvorrichtung mit erheblichen Speicher- und Prozessorressourcen (beispielsweise PCs, Spielkonsolen) zu einer Niedrigressourcenvorrichtung mit begrenzten Speicher- und/oder Verarbeitungsressourcen (beispielsweise Mobilvorrichtungen) reichen. Zusätzlich kann, obwohl eine einzige Rechenvorrichtung 102 gezeigt ist, die Rechenvorrichtung 102 auch mehrere verschiedene Vorrichtungen darstellen, so beispielsweise mehrere Server, die von einer Einheit (business) zur Durchführung von Operationen „über die Cloud“, wie in 14 dargestellt ist, verwendet werden.
-
Die Rechenvorrichtung 102 ist derart dargestellt, dass sie ein Bildverarbeitungssystem 104 beinhaltet. Das Bildverarbeitungssystem 104 ist wenigstens teilweise in Hardware der Rechenvorrichtung 102 implementiert, um ein Digitalbild 106, das in einem Speicher 108 der Rechenvorrichtung 102 dargestellt ist, zu verarbeiten und umzuwandeln. Das Digitalbild 106 kann beispielsweise als zweidimensionales Digitalbild konfiguriert sein, für das Daten, die eine Beziehung von Objekten in einer Bildszene relativ zueinander entlang einer „z“-Achse definieren, nicht direkt zur Verfügung stehen. Die hier beschriebenen Techniken sind auch bei 3D-Digitalbildern einsetzbar, so beispielsweise zur Unterstützung der Vergrößerung der Genauigkeit bei der Komposition eines 3D-Objektes innerhalb einer Bildszene.
-
Beispiele für die Verarbeitung durch das Bildverarbeitungssystem 104 beinhalten eine Erstellung des Digitalbildes 106, eine Modifikation des Digitalbildes 106 und eine Wiedergabe des Digitalbildes 106 in einer Nutzerschnittstelle 110 beispielsweise zur Ausgabe durch eine Anzeigevorrichtung 112. Obwohl die Funktionalität des Bildverarbeitungssystems 104 derart dargestellt ist, dass sie lokal auf der Rechenvorrichtung 102 implementiert ist, kann sie auch gänzlich oder in Teilen durch eine Funktionalität, die über ein Netzwerk 114 verfügbar ist, so beispielsweise als Teil eines Webdienstes oder „in der Cloud“, implementiert sein.
-
Ein Beispiel für die Funktionalität, die von dem Bildverarbeitungssystem 104 zur Verarbeitung des Bildes 106 genutzt wird, ist als Assetkompositionsmodul 116 dargestellt. Das Assetkompositionsmodul 116 bietet die Funktionalität der Rechenvorrichtung 102 (beispielsweise mit Implementierung durch ein Verarbeitungssystem und ein computerlesbares Speichermedium) zum Komponieren von Objekten (beispielsweise 3D-Objekten) als Teil eines zweidimensionalen Hintergrundes eines Digitalbildes 106. Dies kann die Verwendung von Techniken zur Verarbeitung des 3D-Digitalobjektes derart, dass dieses visuell konsistent zu dem Digitalbild ist, beinhalten. Beispiele für diese Techniken beinhalten eine physikbasierte Wiedergabe und eine bildbasierte Beleuchtung. Bei der physikbasierten Wiedergabe kann das Assetkompositionsmodul 116 beispielsweise die Diffusion, die Reflexion, die Transluzenz, die Transparenz, die Energieerhaltung, Fresnel-Effekte und Mikrooberflächen zur Definition dessen, wie Licht innerhalb einer Bildszene des Digitalbildes 106 übertragen wird, berücksichtigen. Die bildbasierte Beleuchtung wird dazu verwendet, Lichtquellen innerhalb der Bildszene, so beispielsweise die Sonne, Lampen und dergleichen mehr, die eine Quelle der Lichtübertragung sind, zu berücksichtigen.
-
Das Assetkompositionsmodul 116 ist zudem derart dargestellt, dass es ein 3D-Objektkonfigurationsmodul 118 beinhaltet. Das 3D-Objektkonfigurationsmodul 118 ist wenigstens teilweise in Hardware der Rechenvorrichtung 102 (beispielsweise durch das Verarbeitungssystem und computerlesbare Speichermedien) implementiert, um die 3D-Objektkomposition als Teil des Digitalbildes 106 unter Verwendung einer Sichtführung zu unterstützen. Das 3D-Objektkonfigurationsmodul 118 kann beispielsweise zum Komponieren von 3D-Objekten, so beispielsweise der Flaschen 120, 122 und der Pflanze 124, relativ zu einem Objekt, das bereits als Teil des Digitalbildes 106 vorhanden ist (beispielsweise die Tischplatte 126), derart verwendet werden, dass das 3D-Objekt visuell konsistent zu dem Digitalbild 106 erscheint. Zu diesem Zweck setzt das 3D-Objektkonfigurationsmodul 118 eine Sichtführung ein, die dafür verwendbar ist, eine Ebene zur Orientierung des 3D-Objektes relativ zu der Bildszene des Digitalbildes 106, so beispielsweise zu der Tischplatte 126, zu definieren. Auf diese Weise stellt das 3D-Objektkonfigurationsmodul 118 eine minimalistische und rechentechnisch effiziente Technik bereit, mit der man zu einem visuell ansprechenden Ergebnis gelangen kann, wofür ein Beispiel im nachfolgenden Abschnitt beschrieben und in den entsprechenden Figuren gezeigt ist.
-
Im Allgemeinen können die Funktionalität, die Merkmale und die Konzepte, die im Zusammenhang mit den vorbeschriebenen und nachbeschriebenen Beispielen beschrieben werden, im Kontext der in diesem Abschnitt beschriebenen exemplarischen Prozeduren eingesetzt werden. Des Weiteren können die Funktionalität, die Merkmale und die Konzepte, die im Zusammenhang mit den verschiedenen Figuren und Beispielen in der vorliegenden Druckschrift beschrieben werden, untereinander ausgetauscht werden und sind nicht auf die Implementierung im Kontext einer bestimmten Figur oder Prozedur beschränkt. Darüber hinaus können Blöcke, die verschiedenen dargestellten Prozeduren und entsprechenden Figuren zugeordnet sind, auf verschiedene Weisen zusammengefasst und/oder kombiniert werden. Eine einzelne Funktionalität, einzelne Merkmale und einzelne Konzepte, die im Zusammenhang mit verschiedenen exemplarischen Umgebungen, Vorrichtungen, Komponenten und Prozeduren beschrieben werden, können in beliebigen geeigneten Kombinationen verwendet werden und sind nicht auf bestimmte Kombinationen, die in den aufgeführten Beispielen der vorliegenden Beschreibung dargestellt sind, beschränkt.
-
D-Objektkomposition als Teil eines 2D-Digitalbildes
-
2 zeigt detaillierter ein System 200 bei einer exemplarischen Implementierung zur Darstellung des Betriebs des 3D-Objektkonfigurationsmoduls 118 von 1. 3 zeigt ein Ausgabebeispiel 300 der Sichtführung in Reaktion auf Nutzereingaben zum Definieren einer Ebene relativ zu der Tischplatte 116 des Digitalbildes 106. 4 zeigt ein Verwendungsbeispiel der Sichtführung von 4 zur Orientierung eines 3D-Objektes relativ zu der Tischplatte 126 des Digitalbildes 106. 3 und 4 sind unter Verwendung der jeweiligen ersten und zweiten Stufen 302, 402, 304, 404 dargestellt. 5 zeigt eine Prozedur 500 bei einer exemplarischen Implementierung, bei der eine Sichtführung ausgegeben wird, um die Komposition eines 3D-Objektes als Teil eines Digitalbildes zu unterstützen.
-
Die nachfolgende Diskussion beschreibt Techniken, die unter Verwendung der beschriebenen Systeme und Vorrichtungen implementiert sein können. Aspekte der Prozedur können in Hardware, Firmware, Software oder in einer Kombination hieraus implementiert sein. Die Prozedur ist als Satz von Blöcken dargestellt, die Operationen spezifizieren, die von einer oder mehreren Vorrichtungen durchgeführt werden, und die nicht unbedingt auf die Reihenfolgen, die zum Durchführen der Operationen durch die jeweiligen Blöcke gezeigt sind, beschränkt sind. In Abschnitten der nachfolgenden Diskussion sind die Verweise auf 1 bis 5 gleichwertig.
-
Bei einem einleitenden Beispiel empfängt das Assetkompositionsmodul 116 ein Digitalbild 106. Das Digitalbild ist bei diesem Beispiel ein zweidimensionales Digitalbild 106, bei dem Tiefeninformation (beispielsweise eine „z“-Richtung) zur Definition der Beziehung von Objekten in einer von dem Digitalbild 106 erfassten Bildszene in dem Bild selbst nicht direkt verfügbar ist. Mit anderen Worten, bei diesem Beispiel wird Tiefeninformation der Bildszene nicht zusammen mit dem Digitalbild 106 erfasst, weshalb das Digitalbild 106 in zwei Dimensionen konfiguriert ist.
-
Das Digitalbild 106 wird sodann als Eingabe für ein 3D-Objektkonfigurationsmodul 118 bereitgestellt, um ein 3D-Objekt als Teil des Digitalbildes 106 zu komponieren. Zu diesem Zweck empfängt das Orientierungseingabemodul 202 Eingaben 204 zum Definieren einer Ebene relativ zu dem Digitalbild 106 (Block 502). Die Eingaben 204 können auf vielerlei Arten empfangen werden, so beispielsweise als Ergebnis einer Nutzerinteraktion mit einer Nutzerschnittstelle 206, durch automatisierte Techniken, die durch ein Objektdetektionsmodul 208 zur Lokalisierung von Kanten oder Ecken eines Objektes innerhalb des Digitalbildes 106 implementiert sind, und dergleichen mehr.
-
Wie in der ersten Stufe 302 von 3 gezeigt ist, können die Eingaben 306, 308, 310, 312 beispielsweise über eine Nutzerschnittstelle 206 oder automatisch und ohne Nutzereingriff von einem Objektdetektionsmodul 208 empfangen werden. Bei dem Beispiel der Nutzerschnittstelle 206 spezifiziert ein Nutzer vier Orte, die ein Rechteck definieren, unter Verwendung der Eingaben 306, 308, 310, 312 als Ebene innerhalb der Nutzerschnittstelle. Dies kann in einer definierten Reihenfolge (beispielsweise im Uhrzeigersinn oder im Gegenuhrzeigersinn) durchgeführt oder von dem Objektdetektionsmodul 208 aus einer beliebigen Reihenfolge dadurch abgeleitet werden, dass alle möglichen Permutationen von Nutzerklicks durchprobiert werden und das Ergebnis mit dem geringsten Fehlerausmaß beibehalten wird. Beim vorliegenden Beispiel wirkt die Tischplatte 126 als Nutzerunterstützung, weshalb Objekte, die in dem Digitalbild 106 vorhanden sind, zur Erhöhung der Genauigkeit bei der Definition der Ebene verwendet werden können. Weitere Beispiele der Nutzerinteraktion mit einer Nutzerschnittstelle 206 sind ebenfalls einbezogen, so beispielsweise Click-and-Drag (Klicken und Ziehen), um eine Anfangsform zu definieren, die anschließend modifiziert wird, was in der nachfolgenden Diskussion noch beschrieben wird.
-
Bei dem automatisierten Beispiel des Objektdetektionsmoduls 208 werden Kanten und/oder Ecken, die von dem Modul identifiziert werden, als Basis zum Definieren der Ebene in Bezug auf das Digitalbild verwendet. Es können beispielsweise Kantendetektionstechniken eingesetzt werden, in denen Diskontinuitäten bei der Helligkeit von Pixeln innerhalb des Digitalbildes 106 zum Definieren von Kanten, beispielsweise zwischen der Tischplatte 126 und einem Hintergrund des Digitalbildes 106, verwendet werden. Aus diesen Kanten kann das Objektdetektionsmodul 208 sodann eine Ebene, die durch die Eingaben 204 definiert ist, konstruieren.
-
Die Eingaben 204 werden sodann für das Sichtführungserzeugungsmodul 210 bereitgestellt, als Basis zur Erzeugung einer Sichtführung 212, die der Ebene entspricht, verwendet und in Verbindung mit dem Digitalbild 106 ausgegeben (Block 504). Wie in der zweiten Stufe 304 von 3 gezeigt ist, wird die Sichtführung 212 beispielsweise als Gitter ausgegeben, das die Eingaben 306 bis 312 verbindet. Die Sichtführung 212 definiert sodann eine Beziehung der definierten Ebene zu dem Digitalbild 106 als Gitter, das sodann nach Bedarf modifiziert werden kann.
-
6 zeigt eine exemplarische Implementierung 600, die die Sichtführung 212 detaillierter als Netz zeigt. Die Sichtführung 212 beinhaltet mehrere Sichtelementtypen, von denen jeder eine andere Nutzerinteraktionstechnik unterstützt. Beispiele für Sichtelementtypen beinhalten die vier Eckknoten 602, 604, 606, 608, die den Eingaben 306 bis 312 entsprechen, die vier Eckknoten 610, 612, 614, 616 und einen Zentralknoten 618, die derart miteinander verbunden sind, dass sie ein Gitter als Sichtführung 212 bilden. Die Rasterweite des Gitters weist visuell auf die Tiefenverkürzung hin. Weitere optische Hinweise können unterstützt werden, wofür im Folgenden ein Beispiel beschrieben wird.
-
7 zeigt eine exemplarische Implementierung 700, bei der die Sichtführung 212 ein weiteres visuelles Element als Test-3D-Objekt 702 beinhaltet. Das Test-3D-Objekt 702 ist bei diesem Beispiel nicht das 3D-Objekt, das als Teil des Digitalbildes 106 komponiert werden soll, sondern ist vielmehr als Beispiel zur Unterstützung des Erkennens der Orientierung der Sichtführung 212 in Bezug auf das Bild gewählt. Weitere Beispiele sind miteinbezogen, bei denen das Test-3D-Objekt 702 das 3D-Objekt ist, beispielsweise eine Version niedrigerer Auflösung, an der gegebenenfalls Effekte einer physikbasierten Wiedergabe und einer bildbasierten Beleuchtung wirken.
-
Als Test-3D-Objekt 702 ist bei diesem Beispiel ein Stuhl gewählt, da die meisten Anwender eine klare Vorstellung davon haben, wie ein Stuhl in Bezug auf den Hintergrund des Digitalbildes 106 aussieht. Das Test-3D-Objekt 702 dient als Sichtführung, die einen Nutzer beim Erkennen der Orientierung der Sichtführung 212 (beispielsweise des Netzes) in Bezug auf eine Bildszene des Digitalbildes 106 unterstützt. Bei einer Implementierung wird die Größe des Test-3D-Objektes 702 automatisch auf Grundlage der Größe der Sichtführung 212 bestimmt.
-
Die Sichtführung 212 ist, sobald sie ausgegeben ist, dafür konfiguriert, eine Nutzerinteraktion zur Modifizierung der Führung, deren Funktionalität durch das Sichtführungsmodifikationsmodul 214 dargestellt wird, zu unterstützen. Wie vorstehend beschrieben worden ist, unterstützen die visuellen Elemente der Sichtführung 212 verschiedene Typen der Nutzerinteraktion. Entsprechend kann die Sichtführung über eine Nutzerinteraktion mit der Nutzerschnittstelle (Block 506) modifiziert werden, um die Orientierung der Sichtführung in Bezug auf das Digitalbild 106 zu orientieren und zu verfeinern.
-
8 zeigt eine exemplarische Implementierung 800 von Erstellungs-, Größenänderungs- und Aktualisierungsinteraktionen 802, 804, 806, die zum Erstellen und anschließenden Modifizieren der Sichtführung 212 verwendbar sind. Bei der Erstellungsnutzerinteraktion 802 werden Nutzereingaben empfangen, um eine Positionierung der vier Ecken der Sichtführung 212 zu spezifizieren, und zwar beispielsweise durch „Klicken“ auf eine Nutzerschnittstelle, durch Verwenden einer Geste, die von einer Touchscreenfunktionalität detektiert wird, und dergleichen mehr. Die Nutzereingaben spezifizieren sodann die vier Eckknoten 602, 604, 606, 608, wie vorstehend im Zusammenhang mit 6 beschrieben worden ist.
-
Eine Größenänderungsinteraktion 804 kann, sobald die Erstellung erfolgt ist, verwendet werden, um die Gesamtgröße der Sichtführung 212 zu modifizieren. Dies ist in 8 durch Auswählen und Ziehen der Kantenknoten 610, 612, 614, 616 von 6 dargestellt, was eine entsprechende Bewegung der benachbarten Eckknoten zur Größenänderung des Gitters bewirkt.
-
Eine Aktualisierungsinteraktion 806 kann ebenfalls von dem Sichtführungsmodifikationsmodul 214 unterstützt werden. Die Aktualisierungsinteraktion 806 unterstützt Nutzereingaben zur Umpositionierung (beispielsweise zum Ziehen) der Eckknoten 602 bis 608. In Reaktion hierauf aktualisiert das Sichtführungsmodifikationsmodul 214 die Sichtführung 212 in Echtzeit in der Nutzerschnittstelle, wofür nachfolgend ein Beispiel anhand 8 beschrieben wird
-
9 zeigt eine exemplarische Implementierung 900 von Verschiebungs- und Anhebeinteraktionen 902, 904, die zum Modifizieren der Sichtführung 212 verwendbar sind. Bei einer Verschiebungsinteraktion 902 wird eine Nutzerauswahl empfangen, die einen Abschnitt der Sichtführung 212, der kein Knoten ist, beinhaltet, so beispielsweise Linien eines Gitters, die die Knoten verbinden. In Reaktion hierauf bewegt das Sichtführungsmodifikationsmodul 214 die Sichtführung als Ganzes in eine entsprechende Richtung, ohne eine Größenänderung oder Umorientierung vorzunehmen. Hierdurch wird die Fähigkeit unterstützt, die Sichtführung 212 an einem ersten Ort innerhalb des Digitalbildes 106 (an dem es beispielsweise vergleichsweise einfach ist, auf Grundlage eines Objektes an jenem Ort ein Rechteck zu definieren) zu definieren und sodann eine Umpositionierung der Sichtführung 212 zu einem in Bezug auf das Digitalbild 106 gegebenen anderen Ort, der gegebenenfalls keine klaren Hinweise zum Verfolgen bzw. Nachzeichnen aufweist, vorzunehmen.
-
Die Anhebeinteraktion 904 wird durch eine Nutzerinteraktion mit dem Zentralknoten 618 von 6 durchgeführt, um die Sichtführung 212 im dreidimensionalen Raum „über“ oder „unter“ einen Sichtpunkt (beispielsweise die Position einer „Kamera“) zum Erfassen des Digitalbildes 106 der Bildszene anzuheben oder abzusenken. Es können zahlreiche weitere Nutzerinteraktionen unterstützt werden.
-
Wie in 2 gezeigt ist, wird die Sichtführung 212 sodann von einem 3D-Objektplatzierungsmodul 216 empfangen. Das 3D-Objektplatzierungsmodul 216 ist dafür ausgestaltet, das 3D-Objekt 218 auf Grundlage einer durch die Sichtführung 212 definierten Ebene zu komponieren. Zu diesem Zweck wird die Orientierung eines 3D-Objektes durch das 3D-Objektplatzierungsmodul 216 auf Grundlage der angegebenen Ebene der Sichtführung bestimmt (Block 508). Sodann wird von dem 3D-Objektplatzierungsmodul 216 veranlasst, dass das 3D-Objekt mit der bestimmten Orientierung in Verbindung mit dem Digitalbild in der Nutzerschnittstelle angezeigt wird (Block 510).
-
Wie in der ersten Stufe 402 von 4 gezeigt ist, wird die Sichtführung 212 beispielsweise entsprechend einem Nutzerwunsch in Bezug auf die Tischplatte 126 positioniert. Das 3D-Objektplatzierungsmodul 216 empfängt sodann das 3D-Objekt 218 in Form von Daten und orientiert das Objekt in Bezug auf die Ebene, wofür Beispiele die Flaschen 120, 122 und die Pflanze 124 darstellen. Die Sichtführung 212 wird sodann entfernt, wodurch das 3D-Objekt 218 so, wie es mit dem Digitalbild 106 komponiert ist, übrigbleibt. Das 3D-Objektplatzierungsmodul 216 kann zudem weitere Techniken einsetzen, um das 3D-Objekt 218 als Teil der Komposition visuell zu modifizieren, darunter eine physikbasierte Wiedergabe und eine bildbasierte Beleuchtung.
-
Bei einer Implementierung kann die Sichtführung 212 (beispielsweise während einer definierten Zeitspanne vor oder nach der Anwendung der physikbasierten Wiedergabe und/oder der bildbasierten Beleuchtung) abwarten, bis eine weitere Modifikation an der Sichtführung und der definierten Ebene und damit der Art, wie das 3D-Objekt als Teil des Digitalbildes 106 komponiert wird, ermöglicht wird. Das 3D-Objektplatzierungsmodul 216 kann beispielsweise das 3D-Objekt 218 zunächst mit einer Orientierung anzeigen und sodann auf die Anwendung der physikbasierten Beleuchtung oder anderer Wiedergabetechniken warten, um Rechenressourcen zu schonen, bis eine gewünschte Orientierung erreicht ist.
-
Die vorstehend beschriebenen Nutzerinteraktionen beruhen auf der Fähigkeit, 3D-Koordinaten der Sichtführung 212 aus den Eingaben 206 zu berechnen. Eine derartige 2D-nach-3D-Nichtprojektion (unprojection) ist jedoch bekanntermaßen mathematisch problematisch, da eine unendliche Anzahl von 3D-Rechtecken vorhanden ist, die auf dieselben vier Bildpunkte projiziert werden können, von denen in 10 beispielhalber 1000 dargestellt sind.
-
Entsprechend können von dem 3D-Objektkonfigurationsmodul 118 Annahmen getroffen werden, um dieses Problem zu lösen. Beispiele für diese Annahmen beinhalten (1) ein bekanntes Kameraprojektionsmodell; und (2) eine bekannte Tiefe an einer Ecke der Sichtführung 212. Unter Verwendung eines bekannten Kameraprojektionsmodells kann das 3D-Objektkonfigurationsmodul 118 eine Kameraposition in Bezug auf eine von dem Digitalbild 106 erfasste Bildszene herleiten. Ohne Beschränkung der Allgemeinheit sei die Kamera am Ursprung O befindlich.
-
Die vier Bildpunkte können in Kamerakoordinaten durch qi: = (xi,yi,zi) ausgedrückt werden, wobei i ∈ {0,1,2,3} gilt. Die Bildpunkte definieren zusammen mit der Kameraposition vier Strahlen, die von der Kamera ausgehen und durch jeden der Bildpunkte verlaufen. Daher liegen die 3D-Koordinaten einer jeden Ecke des Netzes an einem Ort entlang diesen Strahlen, wie in dem exemplarischen System 1100 von 11 gezeigt ist. Entsprechend liegt bei den nachfolgenden Erläuterungen der Fokus darauf zu bestimmen, wie weit entfernt entlang jedem Strahl die Ecken der Sichtführung 212 liegen. Mit anderen Worten, der Tiefenwert di wird derart bestimmt, dass die 3D-Koordinaten einer Ecke der Sichtführung 212 als pi := (qi - 0)di = qidi definiert sind.
-
Beim vorliegenden Beispiel ist die Sichtführung
212 als 3D-Rechteck (das heißt alle Ecken weisen 90° auf) ausgestaltet, wobei als solches vier quadratische Orthogonalitätsrandbedingungen (p
i+1 - p
i) · (p
i-1 - p
i = 0 extrahiert werden können. Darüber hinaus kann auch die bekannte Tiefe
d von einer der Netzecken aus den vorgenannten Annahmen extrahiert werden. Die Tiefe der ersten Ecke sei beispielsweise d
0 =
d. Das Problem kann sodann derart definiert werden, dass diejenigen Werte von d
i ausfindig gemacht werden müssen, die den folgenden Ausdruck erfüllen:
-
Das 3D-Objektplatzierungsmodul 216 kann sodann eine Lösung berechnen, indem ein nichtlineares Least-Square-Problem durch Standardlösungsmittel, so beispielsweise mittels des Ceres-Solvers, gelöst wird. Bei einem weiteren Beispiel wird von dem 3D-Objektplatzierungsmodul 216 ein iterativer geometrischer Algorithmus eingesetzt, der nicht von einer externen Bibliothek abhängig ist und in JavaScript in weniger als 30 Zeilen codiert sein kann. Dieser einfache Algorithmus unterstützt sodann eine Echtzeitnutzerinteraktion mit einem Webbrowser.
-
Der geometrische Algorithmus basiert auf der Beobachtung, dass dann, wenn der Ort zweier benachbarter Knoten bekannt ist, also beispielsweise p
0 und p
1, der nächste Punkt p
2 zu einer orthogonalen Ebene bezüglich des Vektors (p
1 - p
0) mit Verlauf durch p
1 gehört. Die Tiefe d
2 und daher der Ort p
2 werden sodann aus der nachfolgenden Orthogonalitätsbedingung hergeleitet:
-
Daher kann bei Kenntnis von di und di+1 der Wert von di+2 berechnet werden. Da der Wert von d0 = d bekannt ist, wird der Algorithmus von dem 3D-Objektplatzierungsmodul 216 für einen ersten Rateversuch für den Wert d1 (beispielsweise d1 = d) verwendet, und es wird d2 berechnet. Sind d1 und d2 berechnet, so kann das 3D-Objektplatzierungsmodul 216 sodann d3 berechnen. Zuletzt kehrt mit d2 und d3 das 3D-Objektplatzierungsmodul 216 zu dem Strahl zurück, der als Ausgangspunkt diente, und berechnet erneut die Tiefe d0, die von d verschieden sein kann. Die Werte von d3 und d0 können von dem 3D-Objektplatzierungsmodul 216 zur Aktualisierung des Ratewertes von d1 verwendet werden.
-
Wie bei den exemplarischen Implementierungen 1200, 1300 von 12 und 13 gezeigt ist, können fortgesetzte Iterationen bewirken, dass die Tiefenwerte nach unendlich oder in eine Konvergenz zur Triviallösung der Nulltiefe laufen. Entsprechend kann das Objektplatzierungsmodul 216 einen anderen festen Punkt für die Iterationen einsetzen, nämlich die Lösung der vorstehenden ersten Annahme.
-
Um den festen Punkt zu finden, wird der Tiefenvektor (d
0,d
1,d
2,d
3) nach dem Aktualisieren von d
1 auf
skaliert, und es wird eine weitere Iteration initiiert. Zwei verschiedene Fehlermaße können zum Messen der Konvergenz verwendet werden, nämlich der Orthogonalitätsfehler (e
0) und der Planaritätsfehler (e
p).
-
Hierbei ist
die Mitte der Sichtführung
212, und n:=(p
1-p
0)×(p
3-p
0) ist die geschätzte Normale der Sichtführung
212. Die Iterationen werden angehalten, wenn beide Fehlermaße unter einer gegebenen Schwelle (beispielsweise 10
-6) sind oder die Maximalanzahl von Iterationen erreicht worden ist. In der Praxis konvergiert der iterative Algorithmus mit dem festen Punkt üblicherweise innerhalb von
10 bis
20 Iterationen, wenn eine Lösung existiert. Die Maximalanzahl von Iterationen schützt den Algorithmus zudem vor einer Überbeanspruchung von Rechenressourcen, wenn (
1) keine Lösung aufweist (wenn beispielsweise die vier Bildpunkte ein konkaves Quadrat bilden). Entsprechend wird bei der vorliegenden Implementierung die Maximalanzahl von Iterationen bei
20 gewählt, obwohl auch andere Beispiele möglich sind.
-
Auf diese Weise kann das 3D-Objektkonfigurationsmodul 118 die Orientierung auf Grundlage der angegebenen Ebene der Sichtführung bestimmen und diese Orientierung zur Komposition des 3D-Objektes 218 verwenden, um das Digitalbild 106 zu modifizieren. Dies kann auch durchgeführt werden, ohne dass eine Tiefeninformation im Zusammenhang mit dem Digitalbild 106 benötigt würde, und ist daher in einem weiten Bereich von zweidimensionalen Digitalbildern anwendbar.
-
Exemplarisches System und exemplarische Vorrichtung
-
14 zeigt allgemein bei 1400 ein exemplarisches System, das eine exemplarische Rechenvorrichtung 1402 beinhaltet, die für ein oder mehrere Rechensysteme und/oder Vorrichtungen repräsentativ ist, die verschiedene der hier beschriebenen Techniken implementieren können. Dies wird durch die Einbeziehung des Bildverarbeitungssystems 104, des Assetkompositionsmoduls 116 und des 3D-Objektkonfigurationsmoduls 118 dargestellt. Die Rechenvorrichtung 1402 kann beispielsweise ein Server eines Dienstanbieters, eine Vorrichtung, die mit einem Client (beispielsweise einer Clientvorrichtung) verknüpft ist, ein On-Chip-System und/oder eine beliebige andere geeignete Rechenvorrichtung oder ein solches Rechensystem sein.
-
Die exemplarische Rechenvorrichtung 1402 beinhaltet, wie dargestellt ist, ein Verarbeitungssystem 1404, ein oder mehrere computerlesbare Medien 1406 sowie eine oder mehrere I/O-Schnittstellen 1408, die kommunikationstechnisch miteinander gekoppelt sind. Obwohl dies nicht gezeigt ist, kann die Rechenvorrichtung 1402 des Weiteren einen Systembus oder ein anderes Daten- und Befehlsübertragungssystem beinhalten, das die verschiedenen Komponenten miteinander koppelt. Ein Systembus kann eine beliebige Busstrukur oder eine Kombination aus verschiedenen Busstrukturen beinhalten, so beispielsweise einen Speicherbus oder einen Speichercontroller, einen Peripheriebus, einen universellen seriellen Bus und/oder einen Prozessor oder lokalen Bus, der vielerlei Busarchitekturen einsetzt. Zahlreiche weitere Beispiele sind miteinbezogen, so beispielsweise Steuer- bzw. Regel- und Datenleitungen.
-
Das Verarbeitungssystem 1404 stellt eine Funktionalität zur Durchführung einer oder mehrerer Operationen unter Verwendung von Hardware bereit. Entsprechend ist das Verarbeitungssystem 1404 derart dargestellt, dass es ein Hardwareelement 1410 beinhaltet, das als Prozessoren, funktionelle Blöcke und dergleichen mehr konfiguriert sein kann. Dies kann eine Implementierung in Hardware als anwendungsspezifische integrierte Schaltung oder als andere logische Vorrichtung, die unter Verwendung eines oder mehrerer Halbleiter gebildet ist, beinhalten. Die Hardwareelemente 1410 sind nicht durch die Materialien, aus denen sie gebildet sind, oder die Prozesse und Verarbeitungsmechanismen, die dabei zum Einsatz kommen, beschränkt. Die Prozessoren können beispielsweise aus einem Halbleiter / Halbleitern und/oder Transistoren (beispielsweise elektronischen integrierten Schaltungen (ICs)) bestehen. In einem derartigen Kontext können prozessorausführbare Anweisungen elektronisch ausführbare Anweisungen sein.
-
Die computerlesbaren Speichermedien 1406 sind derart dargestellt, dass sie einen Speicher / eine Ablage 1412 beinhalten. Der Speicher / die Ablage 1412 stellt eine Speicher-/Ablagekapazität dar, die mit einem oder mehreren computerlesbaren Medien verknüpft ist. Die Speicher-/Ablagekomponente 1412 kann flüchtige Medien (so beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM)) und/oder nichtflüchtige Medien (so beispielsweise einen Nur-Lese-Speicher ROM, einen Flash-Speicher, optische Platten, magnetische Platten und dergleichen mehr) beinhalten. Die Speicher-/Ablagekomponente 1412 kann feste Medien (beispielsweise einen RAM, einen ROM, ein Festplattenlaufwerk und dergleichen mehr) wie auch entfernbare Medien (beispielsweise einen Flash-Speicher, ein entfernbares Laufwerk, eine optische Platte und dergleichen mehr) beinhalten. Die computerlesbaren Medien 1406 können auf zahlreiche andere Weisen, wie nachstehend noch beschrieben wird, konfiguriert sein.
-
Die Eingabe-/Ausgabeschnittstelle / die Eingabe-/Ausgabeschnittstellen 1408 stellt/stellen eine Funktionalität dar, die einem Nutzer ermöglicht, Befehle und Information in die Rechenvorrichtung 1402 einzugeben, und die zudem ermöglicht, dass dem Nutzer und/oder anderen Komponenten oder Vorrichtungen Information unter Verwendung verschiedener Eingabe-/Ausgabevorrichtungen präsentiert wird. Beispiele für Eingabevorrichtungen beinhalten eine Tastatur, eine Cursorsteuer- bzw. Regelvorrichtung (beispielsweise eine Maus), ein Mikrofon, einen Scanner, eine Berührfunktionalität (beispielsweise kapazitiv oder andere Sensoren, die zum Detektieren einer physischen Berührung ausgestaltet sind), eine Kamera (die beispielsweise sichtbare oder nichtsichtbare Wellenlängen, so beispielsweise Infrarotfrequenzen, zum Erkennen einer Bewegung als Geste, die keine Berührung impliziert, einsetzt), und dergleichen mehr. Beispiele für Ausgabevorrichtungen beinhalten eine Anzeigevorrichtung (beispielsweise einen Monitor oder Projektor), Lautsprecher, einen Drucker, eine Netzwerkkarte, eine Taktilreaktionsvorrichtung und dergleichen mehr. Die Rechenvorrichtung 1402 kann auf vielerlei Arten, wie nachstehend noch beschrieben wird, konfiguriert sein, um die Nutzerinteraktion zu unterstützen.
-
Es sind verschiedenartige Techniken im allgemeinen Kontext von Software, Hardwareelementen und Programmmodulen beschrieben worden. Im Allgemeinen beinhalten derartige Module Routinen, Programme, Objekte, Elemente, Komponenten, Datenstrukturen und dergleichen mehr, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Die Begriffe „Modul“, „Funktionalität“ und „Komponente“ stellen im Sinne des Vorliegenden im Allgemeinen Software, Firmware, Hardware oder eine Kombination hieraus dar. Die Merkmale der hier beschriebenen Techniken sind plattformunabhängig, was bedeutet, dass die Techniken auf vielerlei kommerziellen Rechenplattformen mit vielerlei Prozessoren implementiert werden können.
-
Eine Implementierung der hier beschriebenen Module und Techniken kann auf irgendeiner Form von computerlesbarem Medium gespeichert sein oder über dieses übertragen werden. Die computerlesbaren Medien können vielerlei Medien beinhalten, auf die von der Rechenvorrichtung 1402 zugegriffen werden kann. Beispiels- und nicht beschränkungshalber können die computerlesbaren Medien „computerlesbare Speichermedien“ und „computerlesbare Signalmedien“ beinhalten.
-
„Computerlesbare Speichermedien“ können Medien und/oder Vorrichtungen betreffen, die eine dauerhafte und/oder nichttemporäre Speicherung von Information im Gegensatz zur bloßen Signalübertragung, zu Trägerwellen oder zu Signalen per se ermöglichen. Die computerlesbaren Speichermedien betreffen nichtsignaltragende Medien. Computerlesbare Speichermedien beinhalten Hardware, beispielsweise flüchtige und nichtflüchtige, entfernbare und nichtentfernbare Medien, und/oder Speichervorrichtungen, die mit einem Verfahren oder einer Technologie mit Eignung zur Speicherung von Information implementiert sind, so beispielsweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule, logische Elemente/Schaltungen oder andere Daten. Beinhalten können die computerlesbaren Speichermedien unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD oder einen anderen optischen Speicher, Festplatten, magnetische Kassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder eine andere Speichervorrichtung, physische Medien oder physische Objekte, die zur Speicherung der gewünschten Information geeignet sind und auf die von einem Computer zugegriffen werden kann.
-
„Computerlesbare Signalmedien“ können signaltragende Medien betreffen, die dafür ausgestaltet sind, Anweisungen auf die Hardware der Rechenvorrichtung 1402 beispielsweise über ein Netzwerk zu übertragen. Die Signalmedien können üblicherweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, so beispielsweise Trägerwellen, Datensignale oder einen anderen Transportmechanismus, verkörpern. Die Signalmedien können zudem beliebige Informationsverteilungsmedien beinhalten. Der Begriff „moduliertes Datensignal“ bezeichnet ein Signal, das einen oder mehrere Kennwerte aufweist, die derart gewählt oder verändert sind, dass Information in dem Signal codiert ist. Beispiels- und nicht beschränkungshalber beinhalten die Kommunikationsmedien verdrahtete Medien, so beispielsweise ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, wie auch drahtlose Medien, so beispielsweise akustische, HFbasierte, infrarote und andere drahtlose Medien.
-
Wie vorstehend beschrieben worden ist, stellen die Hardwareelemente 1410 und die computerlesbaren Medien 1406 Module, eine programmierbare Vorrichtungslogik und/oder eine feste Vorrichtungslogik dar, die in Form von Hardware implementiert sind und die bei bestimmten Ausführungsformen dazu eingesetzt werden können, wenigstens einige Aspekte der hier beschriebenen Techniken, so beispielsweise die Durchführung einer oder mehrerer Anweisungen, zu implementieren. Die Hardware kann Komponenten einer integrierten Schaltung oder eines On-Chip-Systems, einer anwendungsspezifischen integrierten Schaltung (ASIC), eines feldprogrammierbaren Gate Arrays (FPGA), einer komplexen programmierbaren Logikvorrichtung (CPLD), und andere Implementierungen aus Silizium oder anderer Hardware beinhalten. In diesem Kontext kann die Hardware als Verarbeitungsvorrichtung arbeiten, die Programmaufgaben wahrnimmt, die durch Anweisungen und/oder eine Logik definiert sind, die durch die Hardware verkörpert ist, wie auch Hardware, die zur Speicherung von Anweisungen zur Ausführung verwendet wird, beispielsweise die vorstehend beschriebenen computerlesbaren Speichermedien.
-
Kombinationen des Vorgenannten können zudem zur Implementierung verschiedener der hier beschriebenen Techniken eingesetzt werden. Entsprechend können Software, Hardware oder ausführbare Module als eine oder mehrere Anweisungen und/oder als Logik implementiert sein, die in irgendeiner Form von computerlesbarem Speichermedium und/oder durch ein oder mehrere Hardwareelemente 1410 implementiert sind. Die Rechenvorrichtung 1402 kann dafür ausgestaltet sein, bestimmte Anweisungen und/oder Funktionen entsprechend den Software- und/oder Hardwaremodulen zu implementieren. Entsprechend kann eine von der Rechenvorrichtung 1402 ausführbare Implementierung eines Moduls als Software wenigstens teilweise auch in Hardware verwirklicht sein, so beispielsweise unter Verwendung eines computerlesbaren Speichermediums und/oder von Hardwareelementen 1410 des Verarbeitungssystems 1404. Die Anweisungen und/oder Funktionen können von einem oder mehreren physischen Objekten (beispielsweise einer oder mehreren Rechenvorrichtungen 1402 und/oder Verarbeitungssystemen 1404) ausführbar/betreibbar sein, um die hier beschriebenen Techniken, Module und Beispiele zu implementieren.
-
Die hier beschriebenen Techniken können durch verschiedene Konfigurationen der Rechenvorrichtung 1402 unterstützt werden und sind nicht auf die spezifischen Beispiele der hier beschriebenen Techniken beschränkt. Diese Funktionalität kann zudem gänzlich oder in Teilen unter Verwendung eines verteilten Systems implementiert sein, so beispielsweise über eine „Cloud“ 1414 vermittels einer Plattform 1416, wie nachstehend beschrieben wird.
-
Die Cloud 1414 beinhaltet oder stellt eine Plattform 1416 für Ressourcen 1418 dar. Die Plattform 1416 abstrahiert die darunterliegende Funktionalität von Hardware-(beispielsweise Server-) und Softwareressourcen der Cloud 1414. Die Ressourcen 1418 können Anwendungen und/oder Daten beinhalten, die genutzt werden können, während die Computerverarbeitung auf Servern erfolgt, die von der Rechenvorrichtung 1402 entfernt sind (remote). Die Ressourcen 1418 können zudem Dienste beinhalten, die über das Internet und/oder durch ein Teilnehmernetzwerk, beispielsweise ein zellbasiertes oder WIFI-Netzwerk, bereitgestellt werden.
-
Die Plattform 1416 kann zudem Ressourcen und Funktionen zum Verbinden der Rechenvorrichtung 1402 mit anderen Rechenvorrichtungen abstrahieren. Die Plattform 1416 kann dem Abstrahieren der Skalierung von Ressourcen dienen, um einen entsprechenden Grad der Skalierung für einen auftretenden Bedarf an den Ressourcen 1418, die über die Plattform 1416 implementiert sind, bereitzustellen. Entsprechend kann bei einer Ausführungsform mit untereinander verbundenen Vorrichtungen, die Implementierung der hier beschriebenen Funktionalität über das System 1400 verteilt sein. Die Funktionalität kann teilweise auf der Rechenvorrichtung 1402 wie auch auf der Plattform 1416, die die Funktionalität der Cloud 1414 abstrahiert, implementiert sein.
-
Schlussbemerkung
-
Obwohl die Erfindung in einer Sprache beschrieben worden ist, die für strukturelle Merkmale und/oder methodische Vorgänge spezifisch ist, sollte einsichtig sein, dass die in den beigefügten Ansprüchen definierte Erfindung nicht unbedingt auf die beschriebenen spezifischen Merkmale und Vorgänge beschränkt ist. Vielmehr sind die spezifischen Merkmale und Vorgänge als exemplarische Formen der Implementierung der beanspruchten Erfindung offenbart.