-
Hintergrund
-
Frühe Systeme zum Eingeben von Befehlen in Programme verwendeten Tastaturen, um Textzeichenfolgen einzugeben, die die Namen der Befehle, irgendwelche Eingabeparameter und irgendwelche Schalter umfassten, um den Betrieb der Befehle zu modifizieren. In den letzten Jahrzehnten wurden diese Systeme beinahe vollständig ersetzt durch grafische Eingabesysteme, die eine Zeigevorrichtung verwenden, um ein Icon zu bewegen, wie z. B. eine grafische Darstellung eines Pfeils, um auf Objekte zu zeigen, die auf dem Bildschirm angezeigt sind, und dann dieselben für weitere Operationen auszuwählen. Die Auswahl kann beispielsweise durchgeführt werden durch Setzen des Icons über das Objekt und Klicken einer Taste auf der Zeigevorrichtung. In den letzten Jahren wurden Systeme zum Eingeben von Befehlen entwickelt, die die physikalische Realität stärker emulieren, beispielsweise die physikalische Auswahl von Elementen auf einem berührungsempfindlichen Bildschirm ermöglichen.
-
Kurze Beschreibung der Zeichnungen
-
Bestimmte beispielhafte Ausführungsbeispiele sind in der folgenden detaillierten Beschreibung und mit Bezugnahme auf die Zeichnungen beschrieben.
-
1 ist eine Zeichnung eines Systems gemäß einem Ausführungsbeispiel;
-
2 ist ein Blockdiagramm eines Systems, das verwendet werden kann, um ein Ausführungsbeispiel zum implementieren;
-
3 ist eine Zeichnung einer Befehlsschablone gemäß einem Ausführungsbeispiel;
-
4 ist ein Beispiel einer Schablone gemäß einem Ausführungsbeispiel;
-
5 ist ein Verfahren zum Eingeben von Befehlen in einem System gemäß einem Ausführungsbeispiel;
-
6 ist ein Verfahren, das verwendet werden kann, um Befehle in ein System einzugeben, gemäß einem Ausführungsbeispiel; und
-
7 ist ein nichtflüchtiges computerlesbares Medium, das verwendet werden kann, um Codemodule zu halten, die konfiguriert sind, um einen Prozessor anzuweisen, Befehle einzugeben, gemäß einigen Ausführungsbeispielen.
-
Detaillierte Beschreibung spezifischer Ausführungsbeispiele
-
Hierin beschriebene Ausführungsbeispiele schaffen ein optisches Befehlseingabesystem, das ein optisches Sensorsystem verwenden kann, um Befehle einzugeben, die von einer Schablone ausgewählt werden. Das optische Sensorsystem kann konfiguriert sein, um einen dreidimensionalen Raum vor einem Bildschirm zu überwachen, um Positionen von Objekten bezüglich der Anzeige zu bestimmen. Ein Mustererkennungsmodul kann ein Bild des Bereichs vor der Anzeige überwachen, wie es durch das optische Sensorsystem gesammelt wird. Falls eine Schablone mit gedruckten Muster im Sichtfeld des Sensors platziert ist, kann das Mustererkennungsmodul die Muster identifizieren, ihre Positionen abbilden und dieselben bestimmten Befehlen zuordnen, wie z. B. für eine Anwendung. Ein Befehlsmodul kann eine Position eines Objekts, wie z. B. eines Fingers, einer Hand oder eines anderen Objekts vor der Anzeige bestimmen, und falls die Position des Objekts eines der Muster schneidet, kann der Befehl, der diesem Muster zugeordnet ist, zu einer Anwendung weitergeleitet werden. Falls bei einigen Ausführungsbeispielen eines der Muster einer bestimmten Anwendung zugeordnet ist, kann das Platzieren der Schablone vor die Anzeige bewirken, dass das Mustererkennungsmodul die zugeordnete Anwendung startet.
-
1 ist eine Zeichnung eines Systems 100, beispielsweise eines Allzweck-Computersystems, das Steuereingaben von einem oder mehreren Sensoren 102 erhalten kann, gemäß einem Ausführungsbeispiel. Wie es hierin verwendet wird, ist ein Allzweck-Computersystem ein Computer, der eine Anzeige, einen Prozessor, Speicher, Laufwerke und andere Funktionseinheiten in einem einzigen Gehäuse umfasst. Ausführungsbeispiele sind jedoch nicht auf das Allzweck-Computersystem beschränkt, da Ausführungsbeispiele einen unabhängigen Bildschirm umfassen können, der Sensoren aufweist, oder einen unabhängigen Bildschirm, an dem separate Sensoren angebracht sind. Die Sensoren 102 können in dem Gehäuse 104 des Systems 100 eingebaut sein oder können als getrennte Einheiten angebracht sein. Bei einem Ausführungsbeispiel können die Sensoren 102 in jeder der oberen Ecken einer Anzeige 106 positioniert sein. Bei diesem Ausführungsbeispiel kann jeder Sensor 102 ein überlappendes Volumen 108 eines dreidimensionalen Raums vor der Anzeige 106 abdecken.
-
Die Sensoren 102 können Bewegungssensoren, Infrarotsensoren, Kameras, Infrarotkameras oder jede andere Vorrichtung umfassen, die in der Lage ist, ein Bild aufzunehmen. Bei einem Ausführungsbeispiel können die Sensoren 102 ein Infrarotarray oder eine Kamera umfassen, die die Positionen von Zielen erfasst unter Verwendung einer Laufzeitberechnung für jedes Pixel in dem Infrarotarray. Bei diesem Ausführungsbeispiel kann ein Infrarotemitter Infrarotlichtpulse emittieren, die von einem Ziel reflektiert werden und zu dem Infrarotarray zurück gesendet werden. Ein Rechensystem, das dem Infrarotarray zugeordnet ist, verwendet die Zeit, die das Infrarotlicht benötigt, um ein Ziel zu erreichen und zurück zu dem Infrarotsensorarray reflektiert zu werden, um eine Abstandskarte zu erzeugen, die den Abstand von dem Sensor zu dem Ziel für jedes Pixel in dem Infrarotsensorarray anzeigt. Das Infrarotarray kann auch ein rohes Infrarotbild erzeugen, in dem die Helligkeit jedes Pixels das Infrarotreflexionsvermögen des Zielbilds an diesem Pixel darstellt. Ausführungsbeispiele sind jedoch nicht auf ein Infrarotsensorarray begrenzt, da jede Anzahl von anderen Sensoren, die ein Bild erzeugen, bei einigen Ausführungsbeispielen verwendet werden kann.
-
Das Volumen 108, das durch die Sensoren 102 abgebildet wird, kann sich über die Anzeige 106 hinaus erstrecken, beispielsweise zu einer Oberfläche 110, die das System 100, eine Tastatur 112 oder eine Maus 114 tragen kann. Eine Schablone 116 kann auf die Oberfläche 110 vor dem System 100 platziert sein, im Sichtfeld der Sensoren 102. Das System 100 kann konfiguriert sein um das Vorliegen der Schablone 116 wahrzunehmen, beispielsweise durch Erkennen von Muster 118 auf der Schablone. Das System kann beispielsweise ein Identifizierungsmuster 120 erkennen, das einem bestimmten Programm zugeordnet ist, wie z. B. unter anderem einer Zeichenanwendung oder einem computerunterstützten Entwurfsprogramm, oder durch Erkennen von Muster, die einzelnen Befehlen zugeordnet sind. Die Mustererkennung kann durch jede Anzahl von Techniken durchgeführt werden, die in der Technik bekannt sind, beispielsweise Erzeugen eines Hashcodes von dem Muster und Vergleichen des Hashcodes mit einer Bibliothek von Codes. Jede Anzahl von anderen Techniken kann ebenfalls verwendet werden.
-
Das System 100 kann auf eine Anzahl von Weisen ansprechen auf das Erkennen eines Musters, beispielsweise das Identifizierungsmuster 120 auf der Schablone 116. Bei einem Ausführungsbeispiel kann das System 100 ein Programm starten, das dem Identifizierungsmuster 120 zugeordnet ist. Das System 100 kann die Schablone 116 für andere Muster analysieren, die spezifischen Funktionen zugeordnet sein können, wie z. B. unter anderem Speichern 122, Rückgängig 124, Wiederherstellen 126 oder Füllen 128.
-
Das System 100 kann es ermöglichen, dass zum Bilden einer Schnittstelle mit Programmen Gesten verwendet werden. Beispielsweise kann ein Element 130 in einem Programm, das auf der Anzeige 106 gezeigt ist, durch eine Geste ausgewählt werden, wie z. B. durch Verwenden eines Fingers 132, um die Position des Elements 130 auf der Anzeige 106 zu berühren. Ferner kann eine Funktion, die auf der Schablone 116 identifiziert ist, ausgewählt werden, beispielsweise durch Verwenden eines Fingers 132, um das relevante Muster 128 zu berühren. Das Berühren des Musters 128 kann eine Betriebscodesequenz auslösen, die dem Muster 128 zugeordnet ist, beispielsweise Füllen eines vorher ausgewählten Elements 130 mit einer Farbe. Jede Anzahl von Funktionen und/oder Formen kann im Zusammenhang mit einem ausgewählten Element oder mit offenen Dokumenten, dem Betriebssystem selbst und dergleichen verwendet werden, wie z. B. unter anderem Drucken, Speichern, Löschen oder Schließen von Programmen. Das Entfernen der Schablone 116 oder anderer Muster aus dem Sichtfeld der Sensoren 102 kann Aktionen auslösen, wie z. B. Abfragen des Nutzers über Schließen des Programms, Sichern des Dokuments und dergleichen.
-
2 ist ein Blockdiagramm eines Systems 200, das verwendet werden kann, um ein Ausführungsbeispiel zu implementieren. Das System 200 kann durch ein Allzweck-Computersystem 202 implementiert werden, oder kann unter Verwendung eines modularen Computersystems implementiert werden. Bei einem modularen System können beispielsweise die Sensoren in einem Bildschirm eingebaut sein, können aufgebaut sein, um über eine obere Oberfläche des Bildschirms zu passen oder können frei stehende Sensoren sein, die in der Nähe des Bildschirms platziert sind.
-
In dem Allzweck-Computersystem 202 kann ein Bus 204 Kommunikation bereitstellen zwischen einem Prozessor 206 und einem Sensorsystem 208, wie z. B. den Sensoren 102, die mit Bezugnahme auf 1 beschrieben sind. Der Bus 204 kann ein PCI, PCIe oder jeder andere geeignete Bus oder jede andere geeignete Kommunikationstechnologie sein. Der Prozessor 206 kann ein Einkernprozessor, ein Mehrkernprozessor oder ein Rechencluster sein. Der Prozessor 206 kann über den Bus 204 auf ein Speichersystem 210 zugreifen. Das Speichersystem 210 kann alle Kombinationen von nichtflüchtigen computerlesbaren Medien umfassen, einschließlich Direktzugriffsspeichern (RAM), Nur-Lese-Speichern (ROM), Festplatten, optischen Laufwerken, RAM-Laufwerken und dergleichen. Das Speichersystem 210 kann Code- und Datenstrukturen halten, die verwendet werden, um Ausführungsbeispiele der vorliegenden Techniken zu implementieren, einschließlich beispielsweise eines Sensorbetriebsmoduls 212, das konfiguriert ist, um den Prozessor 206 anzuweisen, das Sensorsystem 208 zu betreiben. Ein Mustererkennungsmodul 214 kann Code umfassen, um den Prozessor 206 anzuweisen, ein Muster von dem Sensorsystem 208 zu erhalten und das Muster zu einer mathematischen Darstellung umzuwandeln, die das Muster identifizieren kann. Das Mustererkennungsmodul 214 kann auch eine Datenstruktur umfassen, die eine Bibliothek von Muster hält, beispielsweise umgewandelt in mathematische Darstellungen. Ein Befehlseingabemodul 216 kann das Sensorbetriebsmodul 212 verwenden, um zu bestimmen, ob ein Befehl auf einer Schablone ausgewählt wurde und die geeignete Befehlszeichenfolge zu einer Anwendung 218 weiterzuleiten.
-
Andere Einheiten sind allgemein in dem Allzweck-Computersystem 202 enthalten, um Funktionalität bereitzustellen. Beispielsweise kann eine Mensch-Maschine-Schnittstelle enthalten sein, um eine Schnittstelle zu bilden mit einer Tastatur oder einer Zeigevorrichtung. Bei einigen Ausführungsbeispielen können entweder die Zeigevorrichtung oder die Tastatur oder beide ausgelassen sein zugunsten der Verwendung der Funktionalität, die durch das Sensorsystem bereitgestellt wird, beispielsweise Verwenden einer Tastatur auf dem Bildschirm oder einer Tastatur, die als eine Schablone bereitgestellt oder projiziert wird. Eine Anzeige 220 ist allgemein in das Allzweck-Computersystem 202 eingebaut. Wie es hierin gezeigt ist, umfasst die Anzeige 220 Treiberelektronik, gekoppelt mit dem Bus 204 sowie dem Bildschirm selbst. Andere Einheiten, die vorliegen können, können eine Netzschnittstellenkarte (NIC) zum Koppeln des Allzweck-Computersystems mit einem Netz 226 umfassen. Die NIC kann eine Ethernetkarte, eine Drahtlosnetzkarte, eine mobile Breitbandkarte oder jede Kombination davon umfassen.
-
3 ist eine Zeichnung einer Befehlsschablone 300, die verwendet werden kann, um Programme gemäß einem Ausführungsbeispiel zu betreiben. Bei diesem Ausführungsbeispiel identifiziert kein spezifisches Muster ein Programm für die Verwendung mit der Schablone. Stattdessen kann die Anwendung manuell gestartet werden oder kann automatisch ausgelöst werden durch eine Mustererkennung einer Ansammlung von Muster, die beispielsweise verwendet werden kann, um ein Medienabspielgerät zu betreiben, wie z. B. WINDOWS MEDIA PLAYER®, REAL PLAYER®, iTUNES® und dergleichen. Die Muster können Tasten umfassen, unter anderem für Abspielen 302, Stopp 304, Rückspulen 306, Pause 308, Lauter 310 und Leiser 312. Es ist klar, dass die Steuerungen nicht auf diese Tasten oder diese Anordnung begrenzt sind, da jede Anzahl von anderen Steuerungen verwendet werden kann. Solche zusätzliche Steuerungen können weitere Icons umfassen oder können Texttasten umfassen, wie z. B. eine Taste 314 zum Auswählen anderer Medien, oder eine Taste 316 zum Erhalten von Informationen über ein Programm. Die Schablone 300 kann mit einem System gedruckt und verteilt werden. Alternativ kann die Schablone 300 ausgedruckt werden oder von Hand gezeichnet werden durch einen Nutzer, beispielsweise für ein Computersystem, das einen Infrarotsensor verwendet, die Muster können unter Verwendung eines infrarotabsorbierenden Materials erzeugt werden, wie z. B. des Toners in einem Laserdrucker oder eines Graphitstifts. Schablonen können auch von Softwarefirmen mit Programmen geliefert werden, wie sie mit Bezugnahme auf 4 erörtert werden.
-
4 ist ein Beispiel einer Schablone 400, die mit einem kommerziellen Programm geliefert werden kann, gemäß einem Ausführungsbeispiel. Wie es oben erörtert wurde, kann die Schablone 400 ein Programmmuster 402 aufweisen, das ein Programm identifizieren kann. Platzieren der Schablone 400 im Sichtfeld der Sensoren 102 (1) kann zu einer automatischen Aktivierung des zugeordneten Programms führen. Alternativ kann ein Nutzer das Programm manuell aktivieren.
-
Befehlsmuster 404 auf der Schablone 400 können erkannt werden und Befehlen für das zugeordnete Programm zugeordnet werden. Beispielsweise können die Befehlsmuster 404 Befehle umfassen wie z. B. Speichern 406, Öffnen 408, Linienzeichnen 410 und dergleichen. Auswählen eines Befehls, wie z. B. durch Berühren eines Befehlsmusters 404 auf der Schablone, kann verwendet werden, um den zugeordneten Befehl zu aktivieren, beispielsweise allgemein entsprechend dem in 5 gezeigten Verfahren.
-
5 ist ein Verfahren 500 zum Eingeben von Befehlen in ein System gemäß Ausführungsbeispielen der vorliegenden Techniken. Das System kann das System sein, das mit Bezugnahme auf 1 und 2 erörtert wurde. Das Verfahren 500 beginnt bei Block 502, wenn das System erfasst, dass eine Schablone oder ein Muster vorliegt. Die Erfassung kann auf dem Identifizieren eines Musters basieren, das im Sichtfeld eines Bilderzeugungssensors vorliegt. Das Muster kann auf die Schablone gezeichnet oder gedruckt sein, ist aber nicht auf eine bestimmte Implementierung beschränkt. In der Tat kann das Muster von Hand gezeichnet werden auf den Schreibtisch vor dem System, solange der Computer die Form als ein Programm oder einen Befehl identifizierend erkennen kann.
-
Bei Block 504 können die Muster auf der Schablone erkannt werden, beispielsweise durch Vergleichen eines Hashcodes, der von dem Muster erzeugt wird, mit einer Bibliothek von Codes, die für verschiedene Muster gespeichert sind. Sobald bei Block 506 ein Muster identifiziert ist, kann dasselbe einer Betriebscodesequenz zugeordnet werden, wie z. B. einem Befehl für ein Programm. Das Programm kann manuell ausgewählt werden durch den Nutzer oder kann automatisch ausgewählt werden durch ein Muster auf der Schablone. Ferner können äquivalente Muster unterschiedlichen Befehlen zugeordnet sein, abhängig von dem ausgewählten Programm. Beispielsweise können die Muster Abspielen 302 und Rückspulen 306, die mit Bezugnahme auf 3 erörtert wurden, Kanal-nach-oben und Kanal-nach-unten in einer TV-Tuner-Anwendung zugeordnet sein. Falls ein Nutzer ein anderes Programm wählen sollte, können die Muster automatisch dem korrekten Befehl zugeordnet werden, beispielsweise für das Programm, das aktuell für die Anzeige ausgewählt ist.
-
6 ist ein Verfahren 600, das verwendet werden kann, um Befehle in ein Computersystem einzugeben, gemäß einem Ausführungsbeispiel. Das Verfahren 600 beginnt bei Block 602 damit, dass das Computersystem eine Schablone erfasst. Die Erfassung kann nach allen Muster suchen, die in einer Bibliothek von Muster vorliegen, oder kann nach Muster suchen, die spezifische Programme identifizieren. Die letztere Situation kann verwendet werden zum Verringern von Rechenkosten auf einem System, wenn eine große Anzahl von Muster vorliegt. Falls bei Block 604 erkannt wird, dass eine Schablone vorliegt, schreitet der Fluss zu Block 606 fort, bei dem die Muster erkannt werden und relevanten Befehlen zugeordnet werden. Bei Block 608 kann ein Programm, das einem Muster auf der Schablone zugeordnet ist, automatisch geladen werden. Ausführungsbeispiele sind jedoch nicht auf das automatische Laden eines Programms beschränkt. Bei einigen Ausführungsbeispielen kann ein Nutzer ein Programm, das mit der Schablone zu verwenden ist, manuell auswählen.
-
Nachdem Muster Befehlen zugeordnet sind für ein geladenes Programm, bei Block 610, kann das Computersystem eine Eingabe identifizieren, die einer Nutzeraktion entspricht. Die Eingabe kann das Berühren eines Musters auf einer Schablone mit einem Finger oder anderen Objekt durch den Nutzer umfassen. Beispielsweise kann ein Erfassungssystem in dem Computersystem ein Objekt in dem dreidimensionalen Raum vor dem Bildschirm lokalisieren. Wenn das Objekt und eine Befehlsposition, wie z. B. ein Muster auf der Schablone sich schneiden, kann das Erfassungssystem einen Befehl an das Programm senden durch das Betriebssystem. Bei einigen Ausführungsbeispielen kann das Objekt dreidimensionale Formen umfassen, die spezifische Befehle oder Codemodule aktivieren, die relevant sind für die gewählte Form und Position.
-
Ein Beispiel einer solchen Form könnte ein pyramidenförmiges Objekt sein, das einen Drucker darstellt. Falls ein Muster auf der Schablone durch die Druckerform berührt wird, kann der zugeordnete Befehl mit einem Parameter ausgeführt werden, der durch die Form gesteuert wird. Solche Formen können auch einen Programmparameter darstellen, wie z. B. eine Betriebsauswahl. Beispielsweise kann das Berühren eines Musters auf einer Schablone durch eine erste Form ein Codemodul initiieren, das das Objekt druckt, während das Berühren eines Musters auf einer Schablone durch eine zweite Form ein Codemodul initiieren kann, das die aktuelle Datei speichert. Andere Formen können Codemodule aktivieren, die das Objekt modifizieren, oder die Daten, die das Objekt darstellen, zu einem anderen System oder einer anderen Position übertragen.
-
Fall bei Block 612 ein Schablonenmuster ausgewählt wurde, schreitet der Prozessfluss weiter zu Block 614, wo ein zugeordneter Befehl in das Programm eingegeben werden kann. Bei Block 616 kann das System bestimmen, ob die Schablone von dem abgetasteten Bereich entfernt wurde. Falls nicht, kann der Prozessfluss zurückkehren zu Block 610, um die Suche nach Nutzereingabe fortzusetzen. Obwohl das Computersystem besonders nach Eingaben sucht, die für die vorliegende Schablone relevant sind, kann dasselbe auch die Platzierung einer anderen Schablone im Sichtfeld der Bilderzeugungssensoren erfassen, beispielsweise durch Fortsetzen der parallelen Ausführung von Block 602.
-
Falls bei Block 616 bestimmt wird, dass die Schablone nicht mehr in dem abgebildeten Volumen vor dem Computersystem ist, kann der Prozessfluss fortschreiten zu Block 618, wo das System eine Reihe von Aktionen durchführen kann, um das Programm zu schließen. Ausführungsbeispiele sind jedoch nicht auf das automatische Schließen des Programms begrenzt, da der Nutzer das Programm zu jedem Zeitpunkt manuell schließen kann. Bei einem Ausführungsbeispiel kann es sein, dass das Entfernen der Schablone keinen Effekt hat, außer das Eliminieren der Auswahl der zugeordneten Befehle unter Verwendung der Schablone. Das System kann auch andere Schritte durchführen zum Schließen des Programms, wie z. B. Sichern der Dateien in dem Programm oder Auffordern eines Nutzers, die Dateien zu speichern.
-
7 ist ein nichtflüchtiges computerlesbares Medium 700, das verwendet werden kann, um Codemodule zu halten, die konfiguriert sind, um einen Prozessor 702 anzuweisen, Befehle einzugeben, gemäß einigen Ausführungsbeispielen. Der Prozessor 702 kann einen Einkernprozessor, einen Mehrkernprozessor oder ein Rechencluster umfassen. Der Prozessor 702 kann auf das nichtflüchtige computerlesbare Medium 700 zugreifen über einen Bus 704, einschließlich, beispielsweise eines PCI-Busses, eines PCIe-Busses, einer Ethernetverbindung und jede Anzahl von anderen Kommunikationstechnologien. Die Codemodule können ein Mustererfassungsmodul 706 umfassen, das konfiguriert ist, um einen Prozessor anzuweisen, ein Muster zu erfassen, das im Sichtfeld eines Sensors platziert ist, wie es hierin beschrieben ist. Ein Mustererkennungsmodul 708 kann das Muster erkennen und bei einigen Ausführungsbeispielen ein zugeordnetes Programm starten. Ein Musterzuordnungsmodul 710 kann Muster im Sichtfeld des Sensors erkennen und die Muster bestimmten Betriebscodesequenzen, wie z. B. Befehlen, zuordnen. Ein Befehlseingabemodul 712 kann eine Überschneidung eines Objekts, wie z. B. einer Hand oder einer anderen dreidimensionale Form, mit einem Muster erfassen und den zugeordneten Befehl in ein Programm eingeben.