People are increasingly interacting with computers and other electronic devices in new and interesting ways. One such interaction approach involves making a detectable motion with respect to a device. While complex motion analysis devices are able to determine the motion with relative accuracy, such analysis is difficult to implement on consumer devices, particularly mobile or portable computing devices that generally have limited battery life and processing capability. Similar problems arise with other interactions and processes that can be very resource intensive, which can prevent or severely limit their usage on various devices. Further, changes in environmental conditions can affect the performance of a device, such that a device typically has to utilize more resources than necessary in order to be able to handle the wide variety of environmental conditions, even though at most times the device is using more resources than necessary for current conditions.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
a) and 2(b) illustrate example device configurations that can be utilized in accordance with various embodiments;
a), (b), (c), (d), (e), and (f) illustrate example approaches to selecting components for use in performing a task that can be used in accordance with various embodiments;
a), (b), and (c) illustrate example images for analysis with different types of illumination in accordance with various embodiments;
Systems and methods in accordance with various embodiments of the present disclosure may overcome one or more of the aforementioned and other deficiencies experienced in conventional approaches to managing resources for an electronic device. In particular, various embodiments utilize one or more control and/or optimization algorithms to attempt to determine a number and selection of resources needed to perform any of number of different types of tasks under current conditions. For example, a computing device might have multiple cameras with at least partially overlapping fields of view. In some embodiments, each of these cameras might also have an associated illumination element, which can project white light, infrared radiation, or the like. If the device is attempting to perform a task such as to identify a user using facial recognition, determine a gaze direction or head location of a user, or provide for gesture recognition, for example, the device might utilize one or more control algorithms to attempt to determine information such as whether illumination is needed, whether the device needs to compensate for motion, what type and/or how much illumination is needed, how many cameras are needed, what resolution level is needed, and other such information. In some embodiments, the algorithms can determine various combinations of components and resources to attempt to select a combination that provides for the lowest amount of consumption of at least one type of resource, such as the lowest power usage, lowest processing requirements, etc. In other embodiments, one or more algorithms can attempt to select resources for a task in order to optimize the usage and or selection of resources to perform one or more tasks under current conditions.
Various other applications, processes and uses are presented below with respect to the various embodiments.
In this example, the user 102 is performing a selected motion or gesture using the user's fingertip 110. The motion can be one of a set of motions or gestures recognized by the device to correspond to a particular input or action, or can be a specific motion or gesture associated with that particular user. If the motion is performed within the angular capture range 108 (i.e., field of view) of at least one of the cameras 106 on the device, the device can capture image information including at least a portion of the motion or gesture, analyze the image information using at least one image or video analysis algorithm, and determine movement of at least one feature of the user between subsequent frames or portions of the image information. Such detection is useful for various types of gesture, such as a user waving an arm back and forth to wake up a device, moving a hand up and down to provide navigational input, and the like. Various types of motion input are described, for example, in co-pending U.S. patent application Ser. No. 12/332,049, filed Dec. 10, 2008, and entitled “Movement Recognition as Input Mechanism,” which is hereby incorporated herein by reference.
In many instances, having a single camera on the device might be insufficient to provide all the desired input to the device for various tasks. For example, certain gestures might be distance-dependent such that a single camera might not be sufficient to provide the necessary distance information, at least without complicated image analysis algorithms. Using two or more cameras can provide depth information, which can enable the relative positions of objects near the device to be determined in three dimensions. Similarly, each camera will have a specific field of view, such that only having one or two cameras on the device might limit the ability of the device to capture information in all or most directions around the device. Similarly, a single light source (e.g., LED) will provide illumination over a specific range of angles, and may not provide adequate lighting in multiple directions. Various other limitations result from having a small number of components on a device as well as should be apparent.
a) illustrates a first example device 200 including multiple components that can be used to capture image information in accordance with various embodiments. It should be understood that, while the components of the example device are shown to be on a “front” of the device, there can be similar or alternative components on the sides or back of the device as well (or instead). Further, directions such as “top,” “side,” and “back” are used for purposes of explanation and are not intended to require specific orientations unless otherwise stated. In this example device 200, there are four cameras 204, 206, 208, 210 on a same side of the device as a primary display element 202 (e.g., an LCD display screen). Using such an arrangement, the device likely will have at least one or two cameras facing the user at any time that are unobstructed by objects, such as by the user holding the device, which can at least partially obscure a view of at least a portion of the user to various cameras on the device. In this example, the device 200 also includes an illumination element 212 operable to project illumination (e.g., white light or IR) in a direction of the user, to assist with image capture. The device also includes a light sensor 214 for use in determining when illumination might be needed.
b) illustrates another example device 220 wherein the cameras 224, 226, 228, 230 are positioned on the corners of the device. If the devices have a sufficient wide-angle lens (e.g., a fish-eye lens), the cameras can have at least partially overlapping fields of view such that the cameras might be able to capture information in substantially any direction around the device. In this example, each camera also has an associated illumination element 234, 236, 238, 240 operable to direct light over a range of angles associated with a respective camera. Although the illumination elements are shown on the front of the device for convenience, it should be understood that the illumination elements can be on the corners of the device as well, and in at least some embodiments can utilize the same wide-angle lenses to project light over a range of angles at least including the field of view of the respective camera. This example device can also include a display screen 222, light sensor 232, and other such elements as discussed elsewhere herein.
As discussed, an advantage of having a large number of cameras, illumination elements, and other such components is that image data can be captured in a number of different directions with sufficient illumination without significant concern about obstructions or other such occurrences. A potential downside, however, is that capturing image information using a large number of cameras requires a significant amount of battery power to operate the cameras, a significant amount of memory to store all the image information, and a significant amount of processing capacity to process the large amount of image information, particularly for relatively high resolution cameras. Similarly, using illumination for each of these cameras can significantly drain the battery in the device. In many instances, less than all of these components will be sufficient to perform a desired task. Approaches in accordance with various embodiments attempt to reduce and/or optimize the amount of resources used to perform a specific task under current conditions.
For example,
In many cases, however, it will not be sufficient to simply select two cameras to use to perform gesture recognition. For example, in
Other approaches can be used to select components to use to capture image information as well. For example,
In addition to the cameras to be used in capturing image information, various illumination elements can be selected to assist with image capture as well, as may depend upon various environmental factors or other such information. For example, a relatively simple image capture and analysis algorithm can utilize ambient-light imaging with a single camera (still or video) to capture images that can be analyzed with an image recognition algorithm. As illustrated in the example image 400 of
In at least some embodiments, a light emitting diode (LED) or other source of illumination can be triggered to produce illumination over a short period of time in which an image capture element is going to be capturing image information. The LED can illuminate a feature relatively close to the device much more than other elements further away, such that a background portion of the image can be substantially dark (or otherwise, depending on the implementation). For example,
Such an approach can work both in bright or dark conditions. A light sensor can be used in at least some embodiments to determine when illumination is needed due at least in part to lighting concerns. In other embodiments, a device might look at factors such as the amount of time needed to process images under current conditions to determine when to pulse or strobe the LED. In still other embodiments, the device might utilize the pulsed lighting when there is at least a minimum amount of charge remaining on the battery, after which the LED might not fire unless directed by the user or an application, etc. In some embodiments, the amount of power needed to illuminate and capture information using the gesture sensor with a short detection time can be less than the amount of power needed to capture an ambient light image with a rolling shutter camera without illumination.
In embodiments where there is not a sufficiently fast shutter, where there is a rolling shutter effect, or in other such situations, it might be difficult to substantially prevent detecting reflections from other objects near the device. For example,
Systems and methods in accordance with various embodiments can attempt to provide for adequate performance of specific tasks while optimizing and/or minimizing the power consumption or resource utilization needed to perform those tasks. In particular, one or more optimization or control algorithms are utilized in various embodiments to analyze information, such as a type of task to be performed and/or current environmental conditions, to select a minimum set of components necessary to perform the desired tasks. These algorithms can also update the selection of components over time as conditions change, when adequate results are not provided, or in response to any other such occurrence or variance. In some embodiments, a device can start with a minimum number and/or selection of components for a particular type of task, and can add, adjust, or select different components until adequate results are obtained. Various other approaches can be utilized as well within the scope of the various embodiments.
In this example, the algorithms will determine 504 the type of task and, concurrently or in sequence, attempt to determine 506 a state of one or more environmental conditions that can affect the appropriate number and type of components to be used in performing gesture recognition. As discussed, this can include an amount of ambient light, a relative orientation of the user, an amount of motion of the device, or other such factors. Based at least in part upon the type of task, the algorithms can select 508 a number of cameras to be utilized. For example, recognition of simple gestures such as swipes or two-dimensional motions might be able to utilize a single camera, as distance information might not be as important. For more complex gestures, which might include motions in three dimensions, it might be desirable to utilize components that are able to detect distance as well as position, such as two cameras or a camera and a distance sensor, etc. Based at least in part upon the state of the determined environmental factors, the algorithms can specify 510 which of the cameras (of the selected number) are to be used in capturing image information for the type of gesture recognition. As discussed, the cameras to be used can be specified based upon factors such as a relative orientation of a user with respect to the device, a current orientation of the device, the field of view of each camera, and other such information. Based at least in part upon the current environmental conditions, the algorithms can also select 512 one or more additional components to be used to capturing and/or analyzing the images. As mentioned, this can include determining whether any illumination elements are needed under current conditions, and if so how many and which illumination elements on the device should be used. Similarly, the algorithms can determine whether any motion determination elements should be activated, which processors might be needed to process the results, which processing approaches should be used, etc.
Once the number and the selection of cameras and other components are determined, the device can begin to capture 514 image information while the selected components are activated. For example, any selected illumination elements can be activated (e.g., flashed or strobed) as appropriate, and any motion-determining element can be activated to determine an amount of motion between image captures. Once a sufficient amount of image information has been captured, as may depend upon the type of task and process being used, an image analysis algorithm, or other such process or application, can analyze 516 the captured image information to attempt to recognize information for the selected task. As discussed, this can include recognizing a gesture in the image, recognizing an identity of a user in the image information, recognizing an object near the device, etc. A determination can be made 518 as to whether the results of the analysis are sufficient for the type of task based upon available information. For example, if a gesture mode has been activated but no gesture is recognized, an algorithm might determine that additional resources are needed for the gesture recognition process. In some embodiments, a detection of motion without recognition of a gesture can be further indicative that the currently utilized components might not be sufficient. In some embodiments, an analysis of the captured image information might be performed to determine whether a quality of the image information meets a minimum image quality criterion for the current task. For example, an edge-detection process might be executed against the image information to determine an amount of blur in the images, or an intensity-determining algorithm might be utilized to determine whether there is adequate lighting for the objects being captured in the image information. In some embodiments, there might be at least one image quality threshold that must be met for a type of task, such as a maximum amount of blur or minimum amount of dynamic range.
If the results are determined 520 to be sufficient for the type of task, such as a gesture being recognized or a user identified, then the process can continue to be performed with the selected cameras and components. If the results are determined not to be sufficient, the number of cameras and/or selection of components can be updated 522 to attempt to improve the results of the process. As discussed, this can involve adding another camera, changing selected cameras, activating an illumination element or changing a brightness of an illumination element, activating a motion-determining element, and the like. The process can continue and adjustments can be made until the results for the task are determined to be at least sufficient.
In addition, performance and changes in conditions can be monitored over time in order to make any changes or adjustments needed to maintain a sufficient level of performance while optimizing, minimizing, or reducing resource consumption for the performance.
Even if the performance of the task is sufficient, however, one or more algorithms executing on the computing device (or on a system or service in communication with the computing device) can still attempt to optimize the selection of components to reduce resource consumption. For example, in this process the algorithms can determine 612 whether the performance has been sufficient for at least a minimum period of time. In many embodiments, it can be undesirable to continually optimize components as the optimization process itself utilizes resources, and frequent changes can increase the likelihood that some of the results will not be adequate. In some embodiments, an algorithm might wait at least 10 seconds or 30 seconds, for example, before attempting to adjust component selections or settings when the selection is performing with sufficient results. If the results have not been sufficient for the minimum period of time, the device can continue processing with the current selection. If the results have been at least sufficient for at least the minimum period of time, a results prediction algorithm or other such process or component can attempt to predict 614 whether fewer or alternative components, settings, or configurations can be used to maintain sufficient performance while reducing resource consumption. In one embodiment, an application can attempt to determine changes in environmental conditions, such as a change in ambient lighting or movement that might indicate that a component might no longer be needed. For example, if the user went from an area that was dark to an area that is light, as may be determined by a light sensor or other such component, an optimization algorithm might be able to predict that a white light LED no longer needs to be utilized to provide sufficient light for image capture. Similarly, if a user has placed a device in a stationary setting such that the device is no longer moving, the device might be able to deactivate an electronic gyroscope or other such component. Various other changes can be made as well as discussed and suggested herein.
If no prediction is made 616 that indicates, at least with a minimum level of confidence, that a fewer number of components (or other such reduction in resources) can be used to perform the task with sufficient performance, the process can continue with the current selection and configuration of resources. If however, it is predicted that the resource allocation for the process can be reduced while maintaining performance, the number, selection, and/or configuration of components can be adjusted 618 to attempt to perform the task while consuming fewer resources. The device can then perform the task using the adjusted settings and monitor performance. If the performance stays at least sufficient for that type of task, the performance can continue with the current settings. If performance is not sufficient, the process can either go back to the previous configuration or attempt to determine a new selection of components and settings that would provide sufficient performance. Various other approaches can be used as well within the scope of the various embodiments.
Such approaches can be applied to the situation discussed above with respect to
In one embodiment, an algorithm can determine that the type of gesture recognition that has been activated generally requires depth information, or information in three-dimensional space, such that two cameras should be used to provide stereo vision. For some devices, this could instead involve one camera and a distance sensor where the device includes a distance sensor and it is determined that the one camera/sensor approach consumes fewer resources than a stereo camera approach while providing sufficient performance. As discussed, the process can also involve selecting which two cameras to use to capture image information. As discussed above, an image recognition process (or other process discussed herein) can be used to attempt to determine which hand the user is using to make the gestures and/or hold the device, which can affect the selection of the cameras. Similarly, the device can attempt to determine whether the device is being held, in motion, or otherwise in an orientation that dictates which cameras should be used to capture the gesture information. For stereo image capture, a relative orientation and/or separation of the two cameras might be needed to provide the desired stereo effect (or at least provide sufficiently overlapping fields of view). Various other processes and information can be used as well.
The device can also attempt to determine whether illumination will likely be needed, and if so how many (and which) LEDs should be activated. If the recognition approach uses IR radiation, it can be determined that at least one IR LED will likely be needed to provide for adequate gesture detection. If ambient or visible light is to be used, a mechanism such as a light sensor (or information from one of the cameras, etc.) can be used to determine an amount of light in the vicinity of the user or device, to determine whether (and how much) illumination will be needed. In some embodiments, a single LED with a relatively low brightness setting can be used initially, where the brightness can be increased until a maximum value is reached and then additional LEDs utilized until sufficient performance is obtained. In other embodiments the device can look at information such as the amount of ambient light, the distance and location of the user's hands or other features, historical performance data, and other such information to attempt to predict the minimum amount of illumination that should be provided to provide sufficient performance for the current type of task under the current conditions. The selection of which LEDs to use can be based at least in part upon which cameras are selected, the relative position and/or orientation of the user with respect to the device, and other such information.
Similarly, a determination can be made as to the amount of motion of the device at the current time to determine whether a motion- or orientation-determining element of the device should be activated. For example, a user holding an electronic device in one hand will cause small motions of the device over time. A rotation of the device can result in a significant shift in the locations of various objects in the captured image information. Based on the amount and type of motion, the device can decide to activate one or more elements to attempt to monitor an amount and direction of motion of the device during image capture, to attempt to remove the effects of the motion from the images.
As discussed, the operational state of various components can be selected as well using various algorithms discussed and suggested herein. For example, some algorithms only require a small number of pixel values in order to determine a type of gesture, such as a swipe from left to right or up and down. For such a type of process, an algorithm might select an initial resolution of a camera (e.g., a 20×20 pixel array) to use to capture the image information. As known in the art, activating more pixels consumes more energy and provides more data to be processed, so it can be desirable to limit the number of pixels used to the extent possible. If the results are not adequate, the resolution can be increased up to the full resolution of the camera. In some embodiments, lower resolution cameras might be selected first, with higher resolution cameras being used only when the results are not sufficient under current conditions for the selected type of task. Similarly, if a user goes between broad gestures (such as swipes of a hand) and fine gestures (such as drawing letters with a fingertip), the resolution and/or selection of cameras might need to be adjusted accordingly. If the environment is variable such that the lighting changes frequently or objects are moving in the background, an algorithm might select a higher number of cameras or higher resolution to attempt to provide a greater amount of information to attempt to use to recognize gestures, etc. As conditions settle, the number of cameras or other components can be reduced accordingly.
In some embodiments, one or more algorithms can attempt to predict future conditions in order to deactivate cameras or other components that are not likely to be needed in the perceivable future. For example, a user might change an orientation of the device, or move with respect to the device, such that the user is no longer within a field of view of a particular camera. In such a situation, the device might decide to deactivate that camera. If the device notices the user moving back towards that location, the device can re-activate the camera. Similarly, if the device detects that the device has been placed on a stationary surface, the device might deactivate a motion- or orientation-determining element (e.g., an accelerometer, electronic gyroscope, inertial sensor, or electronic compass) and any camera or LED that is now obscured by the surface. The device might also switch from stereo image capture to mono image capture, where stereo imaging was activated due to an amount of background movement in the images due to movement of the device. If performance is sufficient for a period of time, the device might shut off other environmental condition sensors as well, such as ambient light sensors, pressure sensors, microphones, and the like.
Certain embodiments can also attempt to optimize the processors and/or algorithms that will be used to perform a particular task. For example, if the gesture mode is looking for a wake-up motion such as a simple left to right motion, the algorithm might decide to use a single camera in a low-resolution mode, and utilize an on-board processor of the camera module with a low-resolution template-matching algorithm to attempt to recognize such a gesture, instead of using a complex matching algorithm with a central processor of the device. If sufficient performance is not obtained, the device can utilize more powerful processors, more robust algorithms, and other such components or processes.
Various actions of the user can cause components to be deactivated or adjusted as well within the scope of the various embodiments. For example, if a user is typing on a mobile device then cameras used to detect gestures can likely be deactivated during the typing as those actions are typically exclusive. If the user is holding the device up to the user's ear during a phone call, the cameras and illumination elements might be deactivated. Similarly, if the user places the device in a pocket or backpack, all cameras might be deactivated for a period of time. Various other approaches can be used as well within the scope of the various embodiments.
Other information can be considered as well in different embodiments. For example, the device can monitor a state of the battery of the device when not plugged in. If the battery is in a low power state or is subject to maximum load, for example, the device might select fewer components, lower resolutions, less robust algorithms, or other such configurations to attempt to conserve more battery power than under normal circumstances. In some embodiments, an approach might be selected that is more memory or processor consuming, for example, but provides less drain on the battery by reducing the use of lighting, secondary components, etc. In some embodiments, the time of day might be used as a factor to determine an amount of light that might be needed, in order to further reduce battery consumption.
Various types of information can also be indicators that additional resources might be needed for the current task. For example, a device can utilize one or more statistical analysis approaches to determine how often a user goes back and repeats a gesture as an indication of the sufficiency of the performance. Similarly, if the device detects motion but no gestures for a period of time, the device might at least temporarily increase the resources used for the task to attempt to determine whether gestures are being made but not recognized. In some embodiments, there might be a simple cancel motion that can easily be detected under most conditions, which can be used to determine how often a gesture is being correctly (or incorrectly) recognized. In some embodiments, the device can attempt to monitor a frustration level of the user, such as may accompany an increased heart rate, use of certain words or language, nodding the head in a “no” motion, or various facial expressions. Various other processes can be used to attempt to determine when to increase the resources dedicated to the present task.
In some embodiments, the captured video information can be pre-preprocessed to assist with gesture recognition. For example, the video information can be converted to a grayscale image to reduce the amount of processing capacity needed, as well as to more easily distinguish edges in the image. Similarly, even when more than one image is captured the images might be analyzed one at a time for certain tasks in order to reduce processing time when analysis of less than all the captured images will suffice.
Similarly, settings for various users and conditions can be stored as starting points for future tasks. For example, a first configuration might work for a first user in the car while a second configuration might work for the first user at work. A third configuration might work for a different user in the same car or workplace, due to variations in the way gestures are made, features of the user, or other such information. These combinations of users and settings can be stored on the device or in a location accessible by that device. In some embodiments, the optimization algorithms can be executed at a location remote from the device, such as a system or service operating in “the cloud.”
In order to provide various functionality described herein,
As discussed, the device in many embodiments will include at least one image capture element 808, such as one or more cameras that are able to image a user, people, or objects in the vicinity of the device. An image capture element can include, or be based at least in part upon any appropriate technology, such as a CCD or CMOS image capture element having a determined resolution, focal range, viewable area, and capture rate. The device can include at least one motion component 810, such as an accelerometer, inertial sensor, or electronic gyroscope, operable to detect changes in the position and/or orientation of the device. The device also can include at least one illumination element 812, as may include one or more light sources (e.g., white light LEDs, IR emitters, or flash lamps) for providing illumination and/or one or more light sensors or detectors for detecting ambient light or intensity, etc.
The example device can include at least one additional input device able to receive conventional input from a user. This conventional input can include, for example, a push button, touch pad, touch screen, wheel, joystick, keyboard, mouse, trackball, keypad or any other such device or element whereby a user can input a command to the device. These I/O devices could be connected by a wireless, infrared, Bluetooth, or other link as well in some embodiments. In some embodiments, however, such a device might not include any buttons at all and might be controlled only through a combination of visual (e.g., gesture) and audio (e.g., spoken) commands such that a user can control the device without having to be in contact with the device.
As discussed, different approaches can be implemented in various environments in accordance with the described embodiments. For example,
The illustrative environment includes at least one application server 908 and a data store 910. It should be understood that there can be several application servers, layers or other elements, processes or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store. As used herein, the term “data store” refers to any device or combination of devices capable of storing, accessing and retrieving data, which may include any combination and number of data servers, databases, data storage devices and data storage media, in any standard, distributed or clustered environment. The application server 908 can include any appropriate hardware and software for integrating with the data store 910 as needed to execute aspects of one or more applications for the client device and handling a majority of the data access and business logic for an application. The application server provides access control services in cooperation with the data store and is able to generate content such as text, graphics, audio and/or video to be transferred to the user, which may be served to the user by the Web server 906 in the form of HTML, XML or another appropriate structured language in this example. The handling of all requests and responses, as well as the delivery of content between the client device 902 and the application server 908, can be handled by the Web server 906. It should be understood that the Web and application servers are not required and are merely example components, as structured code discussed herein can be executed on any appropriate device or host machine as discussed elsewhere herein.
The data store 910 can include several separate data tables, databases or other data storage mechanisms and media for storing data relating to a particular aspect. For example, the data store illustrated includes mechanisms for storing content (e.g., production data) 912 and user information 916, which can be used to serve content for the production side. The data store is also shown to include a mechanism for storing log or session data 914. It should be understood that there can be many other aspects that may need to be stored in the data store, such as page image information and access rights information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store 910. The data store 910 is operable, through logic associated therewith, to receive instructions from the application server 908 and obtain, update or otherwise process data in response thereto. In one example, a user might submit a search request for a certain type of item. In this case, the data store might access the user information to verify the identity of the user and can access the catalog detail information to obtain information about items of that type. The information can then be returned to the user, such as in a results listing on a Web page that the user is able to view via a browser on the user device 902. Information for a particular item of interest can be viewed in a dedicated page or window of the browser.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server and typically will include computer-readable medium storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality of the servers are known or commercially available and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
The environment in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in
The various embodiments can be further implemented in a wide variety of operating environments, which in some cases can include one or more user computers or computing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system can also include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices can also include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network and any combination thereof.
In embodiments utilizing a Web server, the Web server can run any of a variety of server or mid-tier applications, including HTTP servers, FTP servers, CGI servers, data servers, Java servers and business application servers. The server(s) may also be capable of executing programs or scripts in response requests from user devices, such as by executing one or more Web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++ or any scripting language, such as Perl, Python or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase® and IBM®.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (CPU), at least one input device (e.g., a mouse, keyboard, controller, touch-sensitive display element or keypad) and at least one output device (e.g., a display device, printer or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as random access memory (RAM) or read-only memory (ROM), as well as removable media devices, memory cards, flash cards, etc.
Such devices can also include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device) and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium representing remote, local, fixed and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services or other elements located within at least one working memory device, including an operating system and application programs such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices or any other medium which can be used to store the desired information and which can be accessed by a system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
Number | Name | Date | Kind |
---|---|---|---|
4836670 | Hutchinson | Jun 1989 | A |
4866778 | Baker | Sep 1989 | A |
5563988 | Maes et al. | Oct 1996 | A |
5616078 | Oh | Apr 1997 | A |
5621858 | Stork et al. | Apr 1997 | A |
5632002 | Hashimoto et al. | May 1997 | A |
5850211 | Tognazzini | Dec 1998 | A |
5960394 | Gould et al. | Sep 1999 | A |
5999091 | Wortham | Dec 1999 | A |
6185529 | Chen et al. | Feb 2001 | B1 |
6272231 | Maurer et al. | Aug 2001 | B1 |
6385331 | Harakawa et al. | May 2002 | B2 |
6429810 | De Roche | Aug 2002 | B1 |
6434255 | Harakawa | Aug 2002 | B1 |
6594629 | Basu et al. | Jul 2003 | B1 |
6728680 | Aaron et al. | Apr 2004 | B1 |
6750848 | Pryor | Jun 2004 | B1 |
6863609 | Okuda et al. | Mar 2005 | B2 |
6865516 | Richardson | Mar 2005 | B1 |
6959102 | Peck | Oct 2005 | B2 |
7039198 | Birchfield | May 2006 | B2 |
7082393 | Lahr | Jul 2006 | B2 |
7095401 | Liu et al. | Aug 2006 | B2 |
7199767 | Spero | Apr 2007 | B2 |
7301526 | Marvit et al. | Nov 2007 | B2 |
7379566 | Hildreth | May 2008 | B2 |
7401783 | Pryor | Jul 2008 | B2 |
7519223 | Dehlin et al. | Apr 2009 | B2 |
7584158 | Iwaki et al. | Sep 2009 | B2 |
7587053 | Pereira | Sep 2009 | B1 |
7605837 | Yuen et al. | Oct 2009 | B2 |
7613310 | Mao et al. | Nov 2009 | B2 |
7675539 | Matsui | Mar 2010 | B2 |
7760248 | Marks et al. | Jul 2010 | B2 |
7761302 | Woodcock et al. | Jul 2010 | B2 |
8063938 | Ueki et al. | Nov 2011 | B2 |
8150063 | Chen et al. | Apr 2012 | B2 |
8165422 | Wilson | Apr 2012 | B2 |
8296151 | Klein et al. | Oct 2012 | B2 |
8788977 | Bezos | Jul 2014 | B2 |
20020071277 | Starner et al. | Jun 2002 | A1 |
20020111819 | Li et al. | Aug 2002 | A1 |
20020180799 | Peck et al. | Dec 2002 | A1 |
20020194005 | Lahr | Dec 2002 | A1 |
20030004792 | Townzen et al. | Jan 2003 | A1 |
20030028577 | Dorland et al. | Feb 2003 | A1 |
20030069648 | Douglas et al. | Apr 2003 | A1 |
20030083872 | Kikinis | May 2003 | A1 |
20030142068 | DeLuca et al. | Jul 2003 | A1 |
20030156756 | Gokturk et al. | Aug 2003 | A1 |
20030171921 | Manabe et al. | Sep 2003 | A1 |
20030179073 | Ghazarian | Sep 2003 | A1 |
20040026529 | Float et al. | Feb 2004 | A1 |
20040122666 | Ahlenius | Jun 2004 | A1 |
20040140956 | Kushler et al. | Jul 2004 | A1 |
20040205482 | Basu et al. | Oct 2004 | A1 |
20050064912 | Yang et al. | Mar 2005 | A1 |
20050133693 | Fouquet et al. | Jun 2005 | A1 |
20050162381 | Bell et al. | Jul 2005 | A1 |
20050216867 | Marvit et al. | Sep 2005 | A1 |
20050248529 | Endoh | Nov 2005 | A1 |
20050275638 | Kolmykov-Zotov et al. | Dec 2005 | A1 |
20060143006 | Asano | Jun 2006 | A1 |
20070164989 | Rochford et al. | Jul 2007 | A1 |
20080005418 | Julian | Jan 2008 | A1 |
20080013826 | Hillis et al. | Jan 2008 | A1 |
20080019589 | Yoon | Jan 2008 | A1 |
20080040692 | Sunday et al. | Feb 2008 | A1 |
20080122803 | Izadi et al. | May 2008 | A1 |
20080136916 | Wolff | Jun 2008 | A1 |
20080158096 | Breed | Jul 2008 | A1 |
20080174570 | Anzures | Jul 2008 | A1 |
20080262849 | Buck et al. | Oct 2008 | A1 |
20080266257 | Chiang | Oct 2008 | A1 |
20080266530 | Takahashi et al. | Oct 2008 | A1 |
20080276196 | Tang | Nov 2008 | A1 |
20090031240 | Hildreth | Jan 2009 | A1 |
20090079813 | Hildreth | Mar 2009 | A1 |
20090102788 | Nishida et al. | Apr 2009 | A1 |
20090103780 | Nishihara et al. | Apr 2009 | A1 |
20090153288 | Hope et al. | Jun 2009 | A1 |
20090154807 | Rossato et al. | Jun 2009 | A1 |
20090196460 | Jakobs et al. | Aug 2009 | A1 |
20090210789 | Thakkar et al. | Aug 2009 | A1 |
20090217210 | Zheng et al. | Aug 2009 | A1 |
20090265627 | Kim et al. | Oct 2009 | A1 |
20090271004 | Zecchin et al. | Oct 2009 | A1 |
20090313584 | Kerr | Dec 2009 | A1 |
20100040292 | Clarkson | Feb 2010 | A1 |
20100050133 | Nishihara et al. | Feb 2010 | A1 |
20100066676 | Kramer et al. | Mar 2010 | A1 |
20100097332 | Arthur et al. | Apr 2010 | A1 |
20100104134 | Wang et al. | Apr 2010 | A1 |
20100111416 | Meiers | May 2010 | A1 |
20100125816 | Bezos | May 2010 | A1 |
20100169840 | Chen et al. | Jul 2010 | A1 |
20100179811 | Gupta et al. | Jul 2010 | A1 |
20100233996 | Herz et al. | Sep 2010 | A1 |
20100280983 | Cho et al. | Nov 2010 | A1 |
20100306335 | Rios et al. | Dec 2010 | A1 |
20110006978 | Yuan | Jan 2011 | A1 |
20110109726 | Hwang et al. | May 2011 | A1 |
20110128223 | Lashina et al. | Jun 2011 | A1 |
20110164105 | Lee et al. | Jul 2011 | A1 |
20110184735 | Flaks et al. | Jul 2011 | A1 |
20110262010 | Thorn | Oct 2011 | A1 |
20110285807 | Feng | Nov 2011 | A1 |
20110314427 | Sundararajan | Dec 2011 | A1 |
20120005632 | Broyles et al. | Jan 2012 | A1 |
20120027252 | Liu et al. | Feb 2012 | A1 |
20120058565 | Berkelman et al. | Mar 2012 | A1 |
20120124603 | Amada | May 2012 | A1 |
20120147531 | Rabii | Jun 2012 | A1 |
20120206333 | Kim | Aug 2012 | A1 |
20120281129 | Wang et al. | Nov 2012 | A1 |
20130004016 | Karakotsios | Jan 2013 | A1 |
20130050425 | Im et al. | Feb 2013 | A1 |
20130082978 | Horvitz et al. | Apr 2013 | A1 |
20130155237 | Paek et al. | Jun 2013 | A1 |
20140285435 | Bezos | Sep 2014 | A1 |
Number | Date | Country |
---|---|---|
1694045 | Nov 2005 | CN |
2440348 | Jan 2008 | GB |
2002-164990 | Jun 2002 | JP |
2002-351603 | Dec 2002 | JP |
2004-318826 | Nov 2004 | JP |
2007-121489 | May 2007 | JP |
2007-243250 | Sep 2007 | JP |
2008-97220 | Apr 2008 | JP |
2008-186247 | Aug 2008 | JP |
WO 0215560 | Feb 2002 | WO |
WO 2006036069 | Apr 2006 | WO |
Entry |
---|
Nokia N95 8GB Data Sheet, Nokia, 2007, 5 page. |
“Face Detection: Technology Puts Portraits in Focus”, Consumerreports.org, http://www.comsumerreports.org/cro/electronics-computers/camera-photograph/cameras, 2007, 1 page. |
“Final Office Action dated Oct. 27, 2011”, U.S. Appl. No. 12/332,049, 66 pages. |
“Final Office Action dated Jun. 6, 2013”, U.S. Appl. No. 12/332,049, 70 pages. |
“First Office Action dated Mar. 22, 2013”, China Application 200980146841.0, 18 pages (including translation.). |
“International Search Report dated Apr. 7, 2010”, International Application PCT/US2009/065364, 2 pages. |
“International Written Opinion dated Apr. 7, 2010”, International Application PCT/US2009/065364, 6 pages. |
“Introducing the Wii MotionPlus, Nintendo's Upcoming Accessory for the Revolutionary Wii Remote at Nintendo:: What's New”, Nintendo Games, http://www.nintendo.com/whatsnew/detail/eMMuRj—N6vntHPDycCJAKWhE09zBvyPH, Jul. 14, 2008, 2 pages. |
“Non-Final Office Action dated Jun. 10, 2011”, U.S. Appl. No. 12/332,049, 48 pages. |
“Non-Final Office Action dated Nov. 7, 2012”, U.S. Appl. No. 12/332,049, 64 pages. |
“Office Action dated Dec. 21, 2012”, Korea Application 10-2011-7013875, 4 pages (including translation.). |
“Non-Final Office Action dated Feb. 3, 2014”, U.S. Appl. No. 13/198,008, 19 pages. |
“Notice of Allowance dated Mar. 4, 2014”, U.S. Appl. No. 12/332,049, 8 pages. |
“Office Action dated Apr. 2, 2013”, Japan Application 2011-537661, 4 pages (including translation.). |
“Office Action dated May 13, 2013”, Canada Application 2,743,914, 2 pages. |
Brashear, Helene et al., “Using Multiple Sensors for Mobile Sign Language Recognition”, International Symposium on Wearable Computers, 2003, 8 pages. |
Cornell, Jay , “Does This Headline Know You're Reading It?”, h+ Magazine, located at <http://hplusmagazine.com/articles/ai/does-headline-know-you%E2%80%99re-reading-it>, last accessed on Jun. 7, 2010, Mar. 19, 2010, 4 pages. |
Haro, Antonio et al., “Mobile Camera-Based Adaptive Viewing”, MUM '05 Proceedings of the 4th International Conference on Mobile and Ubiquitous Mulitmedia., 2005, 6 pages. |
Padilla, Raymond , “Eye Toy (PS2)”, <http://www.archive.gamespy.com/hardware/august03/eyetoyps2/index.shtml, Aug. 16, 2003, 2 pages. |
Schneider, Jason , “Does Face Detection Technology Really Work? Can the hottest new digital camera feature of 2007 actually improve your people pictures? Here's the surprising answer!”, http://www.adorama.com/catalog.tpl?article=052107op=academy—new, May 21, 2007, 5 pages. |
Tyser, Peter , “Control an iPod with Gestures”, http://www.videsignline.com/howto/170702555, Sep. 11, 2005, 4 pages. |
Valin, Jean-Marc et al., “Robust Sound Source Localization Using a Microphone Array on a Mobile Robot”, Research Laboratory on Mobile Robotics and Intelligent Systems; Department of Electrical Engineering and Computer Engineering; Universite de Sherbrooke, Quebec, Canada, 9 pages. |
Zyga, Lisa , “Hacking the Wii Remote for Physics Class”, PHYSorg.com, http://www.physorg.com/news104502773.html, Jul. 24, 2007, 2 pages. |
“Final Office Action dated Aug. 29, 2014,” U.S. Appl. No. 13/198,008, 24 pages. |
“Non-Final Office Action dated Oct. 6, 2014,” U.S. Appl. No. 14/298,577, 9 pages. |
“Third Office Action dated May 20, 2014,” Chinese Application No. 200980146841.0, 8 pages. |
“Supplementary European Search Report dated Jul. 17, 2014,” European Application No. EP09828299.9, 13 pages. |
“Reexamination Report dated Aug. 28, 2014,” Japanese Application No. 2011-537661, 5 pages. |
“Examiner's Report dated Mar. 21, 2014,” Canadian Application No. 2,743,914, 3 pages. |