The present disclosure relates to a computing device.
An electronic device often has cameras for capturing videos or images. Common examples of cameras of the electronic device usually include a front camera to capture objects in front of the electronic device and a back camera to capture objects behind the electronic device. To capture an image or a video of an object, a user often needs to manually select to use either the front camera or the back camera based on a location of the object relative to the electronic device. The selected camera may then capture the object and the non-selected camera may not be utilized. In addition, the electronic device often includes various input/output elements and the position of the input/output elements relative to the user may change when the electronic device is situated in different positions. Therefore, the electronic device often requires the user to memorize the functionality associated with each input/output element and accurately localize the desired input/output element to interact with the electronic device. As a result, the electronic device is usually inconvenient for the user to use, especially for the young children and the elderly.
According to one innovative aspect of the subject matter in this disclosure, a computing device is described. One general aspect includes a computing device may include: a display screen located on a front surface of a housing; a support located on a back surface of the housing, where: the support is configured to support the display screen in a first position relative to a physical surface when situated in a first orientation; and the support is configured to support the display screen in a second position relative to the physical surface when situated in a second orientation; a first camera located on a first peripheral side of the front surface, the first camera being configured to capture a first field of view; and a second camera located on a second peripheral side of the front surface, where: the first peripheral side is opposite the second peripheral side; and the second camera is configured to capture a second field of view that is different from the first field of view.
Implementations may include one or more of the following features. The computing device where: the second orientation and the first orientation are different; when the display screen is situated in the first orientation, the display screen is in a first viewing position and the first camera captures the first field of view that includes a portion of a surface in front of the housing and the second camera captures the second field of view that includes a portion of an area in front of the display screen; and when the display screen is situated in the second orientation, the display screen is in a second viewing position and the first camera captures the first field of view that includes a first portion of an area above the display screen and the second camera captures the second field of view that includes a second portion of an area above the display screen. The computing device where: a tilt angle between the display screen and the physical surface when the display screen is positioned in the first orientation is greater than a tilt angle between the display screen and the physical surface when the display screen is positioned in the second orientation. The computing device may include: an orientation sensor that detects when the display screen is situated in the first orientation and when the display screen is situated in the second orientation; and an activity application that executes a routine based on whether the orientation sensor detects the first orientation or the second orientation. The computing device of may include: when the orientation sensor detects that the display screen is positioned in the first orientation, the activity application identifies the first camera located on the first peripheral side as a top camera of the display screen and the second camera located on the second peripheral side as a bottom camera of the display screen; the first field of view of the top camera is directed downward towards the physical surface; and the second field of view of the bottom camera is directed upward towards a user facing the display screen. The computing device where: the top camera is configured to capture a first video stream that includes an activity scene of the physical surface in the first field of view; and the bottom camera is configured to capture a second video stream that includes a face of the user in the second field of view. The computing device where: when the orientation sensor detects that the display screen is positioned in the second orientation: an activity application identifies the first camera located on the first peripheral side as a bottom camera of the display screen and the second camera located on the second peripheral side as a top camera of the display screen; and the first field of view of the bottom camera and the second field of view of the top camera are directed upward. The computing device, where: the bottom camera is configured to capture a first video stream that includes a first portion of a face of a user in the first field of view; and the top camera is configured to capture a second video stream that includes a second portion of the face of the user in the second field of view. The computing device, where: the bottom camera is configured to capture a first video stream that includes a first user in the first field of view; and the top camera is configured to capture a second video stream that includes a second user in the second field of view. The computing device where: the first peripheral side includes a protrusion that extends outwardly from the front surface of the housing; and the first camera is positioned on the protrusion towards the physical surface; and the first field of view of the first camera is configured to capture at least a portion of the physical surface. The computing device where the support may include: a supporting element that is integral with or coupled to the back surface of the housing; and the supporting element extends outwardly from the back surface of the housing and is situatable on a physical surface to support the display screen in the first orientation or the second orientation. The computing device where: the computing device transitions from the first orientation to the second orientation by rotating the computing device.
One general aspect includes a method may include: determining that a computing device is positioned in a first orientation on a physical surface, where: the computing device includes a first camera configured to capture a first field of view and a second camera configured to capture a second field of view that is different from the first field of view; and the first field of view of the first camera is directed towards the physical surface and the second field of view of the second camera is directed towards a user facing the computing device when the computing device is situated in the first orientation; capturing, using the first camera of the computing device, a first video stream that includes an activity scene of the physical surface in the first field of view; capturing, using the second camera of the computing device, a second video stream that includes the user in the second field of view; determining, in an activity application of the computing device, an operation routine of the activity application based on the first video stream including the activity scene of the physical surface and the second video stream including the user; and executing the operation routine in the activity application.
Implementations may include one or more of the following features. The method where determining the operation routine of the activity application includes: detecting, in the first video stream, a tangible object in the activity scene of the physical surface; determining, in the second video stream, a user state of the user; and determining the operation routine of the activity application based on the tangible object in the activity scene and the user state of the user. The method where: determining the user state of the user includes: determining a facial feature of the user in the second video stream; and determining the user state of the user based on the facial feature of the user; and the operation routine of the activity application includes adjusting one or more of a task complexity level and an instruction detail level associated with the user in the activity application based on the user state of the user. The method where: the first camera is located on a first peripheral side of a front surface of a housing of a display screen; and the second camera is located on a second peripheral side of the front surface of the housing of the display screen, where the first peripheral side is opposite the second peripheral side. The method may include: when the computing device is positioned in the first orientation on the physical surface: the first camera becomes a top camera of the computing device, the top camera being directed downward towards the physical surface; and the second camera becomes a bottom camera of the computing device, the bottom camera being directed upward towards the user facing the computing device. The method may include: determining that the computing device is positioned in a second orientation on the physical surface, where the first field of view of the first camera is directed towards the user facing the computing device when the computing device is situated in the second orientation, and the second field of view of the second camera is directed towards the user facing the computing device when the computing device is situated in the second orientation; capturing, using the first camera of the computing device, a third video stream that includes a first portion of a face of the user in the first field of view; capturing, using the second camera of the computing device, a fourth video stream that includes a second portion of the face of the user in the second field of view; and adjusting the operation routine of the activity application based on one or more of the third video stream including the first portion of the face of the user and the fourth video stream including the second portion of the face of the user. The method may include: when the computing device is positioned in the second orientation on the physical surface: the first camera becomes a bottom camera of the computing device, the bottom camera being directed upward towards the first portion of the face of the user in the first field of view; and the second camera becomes a top camera of the computing device, the top camera being directed upward towards the second portion of the face of the user in the second field of view. The method where: the computing device in a second orientation has been rotated as compared to the computing device in the first orientation; and a tilt angle between the computing device and the physical surface when the computing device is positioned in the second orientation on the physical surface is smaller than a tilt angle between the computing device and the physical surface when the computing device is positioned in the first orientation on the physical surface.
One general aspect includes a computing device may include: a display screen located on a front surface of the computing device in a first orientation; a first camera located on a front surface of the computing device near a top edge of the computing device in the first orientation, the first camera being configured to capture a first field of view; and a second camera located on the front surface of the computing device near a bottom edge of the computing device in the first orientation, the second camera being configured to capture a second field of view different from the first field of view, and an orientation sensor configured to detect when the computing device is oriented into a second orientation, where in the second orientation the first camera is located near a bottom edge of the computing device in the second orientation and the second camera is now located near a top edge of the computing device in the second orientation.
Other implementations of one or more of these aspects and other aspects described in this document include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices. The above and other implementations are advantageous in a number of respects as articulated through this document. Moreover, it should be understood that the language used in the present disclosure has been principally selected for readability and instructional purposes, and not to limit the scope of the subject matter disclosed herein.
The disclosure is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements.
In some implementations, the computing device 110 may be postionable in different orientations and the field of view of the first camera 110 and the second camera 120 may be different relative to the physical surface the computing device 110 is positioned on in the different orientations. In some implementations, the computing device 100 may transition from the first orientation 101 to the second orientation 103. For example, a first orientation 101, as shown in
As depicted in
The display screen 140 may be positioned on the front surface 107 of the housing 105 of the computing device 100 to allow for the display screen 140 to be easily viewed by a user. In some implementations, the display screen 140 may be viewable by a user in different orientations, such as a first orientation 101 where the display screen 140 is substantially vertical or a second orientation 103 where the display screen 140 is substantially horizontal as shown in more detail in
In some implementations, the display screen 140 may be adapted to orient the content of the display screen 140 relative to the orientation of the computing device 100 in order to allow content to be presented to the user as being upright, based on the orientation of the computing device 100. For example, when the computing device 100 is rotated from the first orientation 101 to the second orientation 103, the top of the display screen 140 in the first orientation 101 becomes the bottom of the display screen 140 in the second orientation 103. The activity application(s) 414 may receive the orientation information from the orientation sensor 522 and the activity application(s) 414 may cause the content of the display screen 140 to be rotated 180 degrees in order to account for the change in orientation as described in more detail elsewhere herein.
In some implementations, the displays screen 140 may occupy a portion of the front surface 107 of the computing device 100 and the edges of the front surface 107 around the display screen 140 may be referred to as peripheral sides. The peripheral sides (such as the first peripheral sides 102 and the second peripheral side 104) may occupy other portions of the front surface 107 of the housing 105 of the computing device 100 along the periphery of the side of the display screen 140 (such as the first side 142 of the display screen 140 and/or the second side 144 of the display screen 140). These other peripheral sides of the front surface 107 of the housing 105 may allow for other components of the computing device 100 to be positioned. For example, as depicted in
As depicted in
As depicted in
In some implementations, the activity application(s) 414 may select which cameras (from the first camera 110, second camera 120, and/or additional cameras) to use to capture a video stream and may limit the amount of cameras used to capture video streams to improve processing time. In further implementations, based on the orientation of the computing device 100, the activity application(s) 414 may select specific cameras (from the first camera 110, second camera 120, and/or additional cameras) based on the orientation of the computing device 100.
In some implementations, the first camera 110 and the second camera 120 may be positioned on the same peripheral side of the front surface 107 (such as the first peripheral side 102 or the second peripheral side 104) and the first camera 110 and the second camera 120 may be positioned to capture different fields of view despite being positioned on the same peripheral side. For example, the first camera 110 and the second camera 120 may both be positioned on the first peripheral side 102 (such as adjacent to each other, or within a distance of a couple of inches but positioned on the first peripheral side 102, etc.). In the example, the first camera 110 may have a first field of view (such as forward looking to capture things in front of the computing device, such as a user, etc.) and the second camera 120 may have a second field of view (such as downward looking to capture things (such as tangible objects, etc.) on a physical surface the computing device 100 is resting on).
In some implementations, the supporting element 130 may extend out from a back surface 150 of the housing 105 of the computing device 100. In these implementations, the back surface 150 of the housing 105 of the computing device 100 may be substantially flat, and the supporting element 130 may extend out from a portion of the back surface 150 of the housing 105 of the computing device 100. As shown in
In some implementations, the supporting element 150 may house one or more components of the computing device 100. For example, a battery and or other components of the computing device 100 may be positioned within the larger area of the supporting element 150 compared to the thinner area of the computing device 100 that includes the display screen 140. In some implementations, the supporting element may include one or more access ports 132, such as a power button 132a, a memory card slot 132b, an input/output port 132c (such as a 3.5 mm port, etc.), etc. By positioning the access ports 132 on the supporting element 130, a user can interact with the various ports 132 without obscuring the field of views of the first camera 110 and/or second camera 120, and/or the view of the display screen 140.
In some implementations, an additional supporting element 170 may be present on one or more surfaces of the housing 105 of the computing device, such as the back surface 150 of the housing 105 of the computing device 100. The additional supporting element 170 may be a protrusion on the back surface 150 of the housing 105 of the computing device 100 or a piece of plastic/rubber/metal/etc. that is positioned on the back surface 150. The additional supporting element 170 may be positioned on the back surface 150 of the housing 105 of the computing device 100, such that when the computing device 100 is placed in different orientations, such as the second orientation 103, the additional supporting element 170 comes into contact with a physical surface and assists in positioning and retaining the computing device 100 in the second orientation 103, as shown in
In some implementations, the computing device 100 may include additional hardware input/outputs, such as a volume control 180 and/or a screen lock button 182. These additional hardware input/outputs may be positioned on a side surface of the housing 105 of the computing device 100, as shown in
In some implementations, a camera protrusion 160 may be included on the housing 105 of the computing device 100. The camera protrusion 160 may be a molded portion of one of the peripheral sides (such as the first peripheral side 102 or the second peripheral side 104) of the housing 105. The camera protrusion 160 may extend out from the front surface 107 and have a camera (such as the first camera 110 and/or the second camera 120) positioned within the camera protrusion 160 in order to increase what is included in the field of view of the camera as compared to a camera mounted flat on the front surface 107 of the housing 105 of the computing device 100. For example, the camera protrusion 160 may angle the camera to look down towards a physical surface in front of the display screen 140 and the computing device 100, whereas a camera mounted flat on the front surface 107 would look out towards the area in front of the computing device 100 rather than down towards the physical surface the computing device 100 is resting on. In some implementations, the camera protrusion 160 may direct the field of view of the camera to include at least a portion of the housing 105 of the computing device 100 and/or the display screen 140 and the information captured related to the display screen 140 and or the housing 105 of the computing device 100 may be used by the activity application(s) 414 to change one or more routines being executed by the activity application(s) 414.
As shown in the example in
In some implementations, this may allow the activity application(s) 414 to capture three-dimensional information using the two different two-dimensional captured video streams. It may allow the activity applications(s) 414 to estimate the distance of the object, a range of the object, a depth, an acceleration of the object, etc. The activity application(s) 414 may perform stereopsis on the captured video streams to provide a three-dimensional visualization based on the captured video streams.
In further implementations, the activity application(s) 414 may account for when an object in one of the fields of view (such as field of view 230 and/or field of view 240) is obscured (such as by a hand moving the object, or another object being placed in front of the object) and the activity application(s) 414 may use the other field of view to continue to track the object that is obscured. It should be understood that by adding additional cameras along with the first camera 110 and the second camera 120, the stereo vision capabilities may be enhanced by the capturing of additional video streams showing additional fields of view.
In some implementations, the computing device 100 may be oriented into the second orientation 103 by rotating the computing device 100 180 degrees around itself relative to the first orientation 101 and then resting the computing device 100 on the physical surface in the second orientation 103. In further implementations, the supporting element 130 may be slidable or detachably removable and may be raised from the first portion of the back surface of the housing 105 of the computing device 100 to a second portion of the back surface of the housing 105 of the computing device 100 without rotating the computing device 100, to position the computing device in the second orientation 103.
As shown in
In some implementations, the second camera 120 may also be directed upwards above the computing device 100 and may be able to capture a field of view that includes objects such as a ceiling, a lighting array, etc. Using this field of view 230, the video stream of the second camera 120 may be analyzed to identify specific rooms or locations that the computing device 100 is located in. For example, the activity application(s) 414 may have a database of room profiles, such as a user's classroom, home, etc. and the activity application(s) 414 may compare the field of view 230 to the database of room profiles and determine which ceiling matches with what is being captured in the video stream of the second camera 120. This may allow the activity application(s) 414 to run specific applications in specific locations. For example, the activity application(s) 414 may block the request to run a game when the activity application(s) 414 determines that the computing device 100 is located in the user's classroom at the moment.
In some implementations, the second camera 120 may be configured to capture a field of view 230 that includes the first user 210 and the first camera 110 may be configured to capture a field of view 240 of a second user 220. The first user 210 and the second user 220 may be positioned on opposite sides of the computing device 100 and they may both be able to view the display screen 140 from their respective positions. The activity application(s) 414 may run an application that both users can participate in and the activity application(s) 414 may analyze objects, expressions, gestures, etc. that are presented by the first user 210 and the second user 220 in the respective fields of view. In another example, the first user 210 may be a student and the second user 220 may be a teacher. The activity application(s) 414 may capture the interactions between the teacher and the student, including the facial expressions and/or gestures of the teacher or student and execute an application based on the captured information.
The network 406 may include any number of networks and/or network types. For example, the network 406 may include, but is not limited to, one or more local area networks (LANs), wide area networks (WANs) (e.g., the Internet), virtual private networks (VPNs), mobile (cellular) networks, wireless wide area network (WWANs), WiMAX® networks, Bluetooth® communication networks, peer-to-peer networks, other interconnected data paths across which multiple devices may communicate, various combinations thereof, etc.
The computing device 100 may be a computing device that has data processing and communication capabilities. In some embodiments, the computing device 100 may include a processor (e.g., virtual, physical, etc.), a memory, a power source, a network interface, and/or other software and/or hardware components, such as front and/or rear facing cameras, display screen, graphics processor, wireless transceivers, keyboard, firmware, operating systems, drivers, various physical connection interfaces (e.g., USB, HDMI, etc.). In some embodiments, the computing devices 100 may be coupled to and communicate with one another and with other entities of the system 400 via the network 406 using a wireless and/or wired connection. As discussed elsewhere herein, the system 400 may include any number of computing devices 100 and the computing devices 100 may be the same or different types of devices (e.g., tablets, mobile phones, desktop computers, laptop computers, etc.).
As depicted in
The server 402 may include one or more computing devices that have data processing, storing, and communication capabilities. In some embodiments, the server 402 may include one or more hardware servers, server arrays, storage devices and/or storage systems, etc. In some embodiments, the server 402 may be a centralized, distributed and/or a cloud-based server. In some embodiments, the server 402 may include one or more virtual servers that operate in a host server environment and access the physical hardware of the host server (e.g., processor, memory, storage, network interfaces, etc.) via an abstraction layer (e.g., a virtual machine manager).
The server 402 may include software applications operable by one or more processors of the server 402 to provide various computing functionalities, services, and/or resources, and to send and receive data to and from the computing devices 160. For example, the software applications may provide the functionalities of internet searching, social networking, web-based email, blogging, micro-blogging, photo management, video/music/multimedia hosting/sharing/distribution, business services, news and media distribution, user account management, or any combination thereof. It should be understood that the server 202 may also provide other network-accessible services.
In some embodiments, the server 402 may include a search engine capable of retrieving results that match one or more search criteria from a data store. As an example, the search criteria may include an image and the search engine may compare the image to product images in its data store (not shown) to identify a product that matches the image. In another example, the detection engine 412 and/or the storage 510 (e.g., see
It should be understood that the system 400 illustrated in
The processor 512 may execute software instructions by performing various input/output, logical, and/or mathematical operations. The processor 512 may have various computing architectures to process data signals including, for example, a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, and/or an architecture implementing a combination of instruction sets. The processor 512 may be physical and/or virtual, and may include a single core or plurality of processing units and/or cores.
The memory 514 may be a non-transitory computer-readable medium that is configured to store and provide access to data to other components of the computing device 100. In some embodiments, the memory 514 may store instructions and/or data that are executable by the processor 512. For example, the memory 514 may store the detection engine 412, the activity applications 414, and a camera driver 506. The memory 514 may also store other instructions and data, including, for example, an operating system, hardware drivers, other software applications, data, etc. The memory 514 may be coupled to the bus 508 for communication with the processor 512 and other components of the computing device 100.
The communication unit 516 may include one or more interface devices (I/F) for wired and/or wireless connectivity with the network 406 and/or other devices. In some embodiments, the communication unit 516 may include transceivers for sending and receiving wireless signals. For example, the communication unit 516 may include radio transceivers for communication with the network 406 and for communication with nearby devices using close-proximity connectivity (e.g., Bluetooth®, NFC, etc.). In some embodiments, the communication unit 516 may include ports for wired connectivity with other devices. For example, the communication unit 516 may include a CAT-5 interface, Thunderbolt™ interface, FireWire™ interface, USB interface, etc.
The display 520 (also referred to as display screen 140) may display electronic images and data output by the computing device 100 for presentation to the user. The display 520 may include any display device, monitor or screen, including, for example, an organic light-emitting diode (OLED) display, a liquid crystal display (LCD), etc. In some embodiments, the display 520 may be a touch-screen display capable of receiving input from one or more fingers of the user. For example, the display 520 may be a capacitive touch-screen display capable of detecting and interpreting multiple points of contact with the display surface. In some embodiments, the computing device 100 may include a graphic adapter (not shown) for rendering and outputting the images and data for presentation on display 520. The graphic adapter may be a separate processing device including a separate processor and memory (not shown) or may be integrated with the processor 512 and memory 514.
The input device 518 may include any device for inputting information into the computing device 100. In some embodiments, the input device 518 may include one or more peripheral devices. For example, the input device 518 may include a keyboard (e.g., a QWERTY keyboard), a pointing device (e.g., a mouse or touchpad), a microphone, a camera, etc. In some implementations, the input device 518 may include a touch-screen display capable of receiving input from one or more fingers of the user. In some embodiments, the functionality of the input device 518 and the display 520 may be integrated, and the user may interact with the computing device 100 by touching a surface of the display 520. For example, the user may interact with an emulated keyboard (e.g., soft keyboard or virtual keyboard) displayed on the touch-screen display 520 by contacting the display 520 in the keyboard regions using his or her fingers.
The orientation sensor 522 may include one or more sensors for detecting an orientation of the computing device 100. In some implementations, the orientation sensor 522 may include on more orientation sensors 522 that can detect the orientation of the computing device 100. The orientation sensors may be configured to detect an angle or tilt of the computing device, such as by using an accelerometer or similar sensor relative to a known position and communication the angle or tilt to the activity application(s) 414. For example, the orientation sensor 522 can detect the differences in the tilt of the computing device 100 in order to determine when the computing device 100 is positioned in the first orientation 101 or the second orientation 103 and may provide that information to the activity application(s) 414.
The detection engine 412 may include a calibrator 502 and a detector 504. The components 412, 502, and 504 may be communicatively coupled to one another and/or to other components 414, 506, 510, 512, 514, 516, 518, 520, 110, 120, and/or 522 of the computing device 100 by the bus 508 and/or the processor 512. In some embodiments, the components 412, 502, and 504 may be sets of instructions executable by the processor 512 to provide their functionality. In some embodiments, the components 412, 502, and 504 may be stored in the memory 514 of the computing device 100 and may be accessible and executable by the processor 512 to provide their functionality. In any of the foregoing implementations, these components 412, 502, and 504 may be adapted for cooperation and communication with the processor 512 and other components of the computing device 100.
The calibrator 502 includes software and/or logic for performing image calibration on the video stream captured by the cameras 110 and/or 120. In some embodiments, to perform the image calibration, the calibrator 502 may calibrate the images in the video stream to adapt to the capture position of the cameras 110 and/or 120. The capture position of the cameras 110 and/or 120 may depend on the computing device 100 attributes and/or the orientation of the computing device 100. Capturing the video stream from a camera position in different orientations may cause distortion effects on the video stream. Therefore, the calibrator 502 may adjust one or more operation parameters of the cameras 110 and 120 to compensate for these distortion effects. Examples of the operation parameters being adjusted include, but are not limited to, focus, exposure, white balance, aperture, f-stop, image compression, ISO, depth of field, noise reduction, focal length, etc. Performing image calibration on the captured video streams is advantageous, because it can optimize the images of the video streams to accurately detect the objects depicted therein, and thus the operations of the activity applications 414 based on the objects detected in the video streams can be significantly improved.
In some embodiments, the calibrator 502 may also calibrate the images to compensate for the characteristics of the activity surface (e.g., size, angle, topography, etc.). For example, the calibrator 502 may perform the image calibration to account for the discontinuities and/or the non-uniformities of the activity surface, thereby enabling accurate detection of objects when the computing device 100 is set up on various activity surfaces (e.g., bumpy surface, beds, tables, whiteboards, etc.). In some embodiments, the calibrator 502 may calibrate the images to compensate for optical effect caused by the optical elements of the cameras 110 and/or 120. In some embodiments, the calibrator 502 may also calibrate the cameras 110 or 120 to split their field of view into multiple portions with the user being included in one portion of the field of view and the activity surface being included in another portion of the field of view of the cameras 110 and/or 120.
The detector 504 includes software and/or logic for processing the video stream captured by the cameras 110 or 120 to detect the objects present in the video stream. In some embodiments, to detect an object in the video streams, the detector 504 may analyze the images of the video streams to determine line segments, and determine the object that has the contour matching the line segments using the object data in the storage 510. In some embodiments, the detector 504 may provide the tangible objects detected in the video stream to the activity applications 414. In some embodiments, the detector 504 may store the objects detected in the video stream in the storage 510 for retrieval by these components. In some embodiments, the detector 504 may determine whether the line segments and/or the object associated with the line segments can be identified in the video stream, and instruct the calibrator 502 to calibrate the images of the video stream accordingly.
The activity application 414 includes software and/or logic executable on the computing device 100. In some embodiments, the activity application 414 may receive the objects detected in the video stream of the activity surface from the detector 504. In some embodiments, the activity application 414 may generate a virtual environment that incorporates, in real-time, the virtualization of the tangible objects and the user manipulation of the tangible objects on the activity surface, and display the virtual environment to the user on the computing device 100. Non-limiting examples of the activity application 414 include video games, learning applications, assistive applications, storyboard applications, collaborative applications, productivity applications, etc. Other types of activity application are also possible and contemplated.
The camera driver 506 includes software storable in the memory 514 and operable by the processor 512 to control/operate the cameras 110 and 120. For example, the camera driver 506 may be a software driver executable by the processor 512 for instructing the cameras 110 and 120 to capture and provide a video stream and/or a still image, etc. In some embodiments, the camera driver 506 may be capable of controlling various features of the cameras 110 and 120 (e.g., flash, aperture, exposure, focal length, etc.). In some embodiments, the camera driver 506 may be communicatively coupled to the cameras 110 and 120 and other components of the computing device 100 via the bus 508, and these components may interface with the camera driver 506 to capture video and/or still images using the cameras 110 and 120.
As discussed elsewhere herein, the cameras 110 and 120 are video capture devices (e.g., a camera) adapted to capture video streams and/or images in their field of view. In some embodiments, the cameras 110 and 120 may be coupled to the bus 508 for communication and interaction with the other components of the computing device 100. In some embodiments, the one or more of the cameras 110 and 120 may include a lens for gathering and focusing light, a photo sensor including pixel regions for capturing the focused light, and a processor for generating image data based on signals provided by the pixel regions. The photo sensor may be any type of photo sensor (e.g., a charge-coupled device (CCD), a complementary metal-oxide-semiconductor (CMOS) sensor, a hybrid CCD/CMOS device, etc.). In some embodiments, the cameras 110 and 120 may include a microphone for capturing sound. Alternatively, the cameras 110 and 120 may be coupled to a microphone that is coupled to the bus 508 or included in another component of the computing device 100. In some embodiments, the cameras 110 and 120 may also include a flash, a zoom lens, and/or other features. In some embodiments, the processor of the cameras 110 and 120 may store video and/or still image data being captured in the memory 514 and/or provide the video and/or still image data to other components of the computing device 100, such as the detection engine 412 and/or the activity applications 414.
The storage 510 is a non-transitory storage medium that stores and provides access to various types of data. Non-limiting examples of the data stored in the storage 510 include video stream and/or still images captured by the cameras 110 and 120, object data describing various tangible objects (e.g., object contour, color, shape and size, etc.), object detection result indicating the tangible objects, etc. In some embodiments, the data stored in the storage 510 may also include one or more orientation profiles. For example, the orientaiton profile may include the position information of the various cameras 110 and 120 as well as expected fields of view in different orientations.
In some embodiments, the storage 510 may be included in the memory 514 or another storage device coupled to the bus 508. In some embodiments, the storage 510 may be included in a distributed data store, such as a cloud-based computing and/or data storage system. In some embodiments, the storage 510 may include a database management system (DBMS). The DBMS may be a structured query language (SQL) DBMS. For example, the storage 510 may store data in an object-based data store or multi-dimensional tables including rows and columns, and may manipulate (i.e., insert, query, update, and/or delete) data entries stored in the storage 510 using programmatic operations (e.g., SQL queries and statements or a similar database manipulation library). Other implementations of the storage 510 with additional characteristics, structures, acts, and functionalities are also possible and contemplated.
At block 604, the first camera 110 may capture a first video stream including an activity scene of the physical activity surface in the first field of view 230. The activity scene may be a portion of a physical surface proximate to the computing device 100. In some implementations, one or more objects or other items may be positioned on the physical surface within the field of view 230 of the first camera 110. In further implementations, a user may draw or craft an image on a piece of paper or board situated on the physical surface and within the field of view 230 of the first camera 110. In another implementation, the objects may be passed through the field of view 230 of the first camera 110 without being placed on the physical surface, such as a gesture performed by the user in the area proximate to the computing device 100 and within the field of view 230 of the first camera 110.
At block 606, the second camera 120 may capture a second video stream including a user in the second field of view 240. The second video stream may include a profile of user positioned in front of the computing device 100 and within the second field of view 240. For example, the user can be positioned in front of the computing device 100 and viewing content on the display screen 140 while the computing device 100 rests on a table and the user sits in a chair. In some implementations, the video stream may capture at least a portion of a face of a user. In further implementations, the video stream may capture at least a portion of an appendage of the user, such as a hand, to capture a gesture. The video stream may include objects that are being held or manipulated by a user. The video stream may further include the environment around a user, such as posters in a classroom, etc. that may be detectable by the detector 504 and passed on to the activity application(s) 414. In some implementations, the video stream may include facial expression information from the user.
At block 608, the activity application(s) 414 may determine an operation routine based on the first video stream and the second video stream. For example, the first video stream may include a textbook for a student and the second video stream may identify which specific student is present in front of the computing device 100. The activity application(s) 414 may retrieve a personalized study schedule from the storage 510 related to the identity of the specific student and find which topic the student has been assigned in the specific book that has been identified from the first video stream. The activity application(s) 414 may then cause the specific topic and page number to be displayed on the display screen 140 for student to open the book to that page without having to receive any directions from the student. This is advantageous as it reduces the busy work and time needed for a student to begin learning assigned material and also reduces the opportunity for mistakes to arise from the student not knowing where to go in the book, etc.
In another example, the activity application(s) 414 may determine a user state of the user in the second video stream. The user state may include a facial feature the user state may be determined based on the facial feature. For example, the facial features may be an expression of confusion, an attention level, an emotional condition, such as happiness, sadness, angry, joy, frustration, etc. In some implementations, the detector 504 may compare identified points on a user's face to a database of facial expressions and map the identified points to the example facial expressions. When a facial expression mapping exceeds a threshold value, then the facial expression is identified based on the example. In some implementations, the example facial expressions may be based on a machine learning algorithm that is continuously updated as the sample size and accuracy increases. In further implementations, the facial expressions may be personalized for a specific user and over time as different facial expressions are captured of that specific user, the detector 504 may update the examples facial expression for that user to increase accuracy.
In some implementations, the operation routine may be a task for the user and the complexity of the task may be updated based on the captured information. In some implementations, the activity application(s) 414 may determine a task complexity level based on the user or the progress of the task. The task complexity level may be increased when it appears a task is being completed too quickly and/or the task complexity level may be decreased when it appears a task is creating confusion and/or the user is struggling to complete the task. For example, if a user exhibits frustration, such as in a facial expression, or a threshold period of time has expired without interacting with an object, the activity application(s) 414 may identify an operation routine with a lower complexity level and/or provide an instruction detail level that is appropriate for what the user is currently doing. For example, if a math problem is presented on the display screen 140 and the user is supposed to work through the problem on the surface which is captured by the first video stream. If the activity application(s) 414 determines that the user appears confused or that they haven't progressed to the next step of the problem on the surface, then the activity application(s) 414 may present an operation routine that provides a hint for what to perform next to solve the math problem.
At block 610, the activity application(s) 414 may execute the operation routine on the display screen 140. The activity application(s) 414 may cause one or more programs to be executed based on the operation routine. In some implementations, the activity application(s) 414 may cause additional information to be displayed on the display screen 140, such as page number or student information. In further implementations, the activity application(s) 414 may generate a visualization based on information detected in the first or second video stream and display the visualization on the display screen 140. For example, the first video stream may include a drawing of a ball and the second video stream may include a facial expression from the user that is happy. The activity application(s) 414 may generate a virtual avatar that is smiling and throwing a virtualization of the drawing of the ball, such as a virtualization with similar shapes, colors, contours, etc.
At block 704, the first camera 110 may capture a third video stream including a first portion of a face of the user in the first field of view 240. For example, the first portion of the face of the user may be a view of the user from below the face of the user and include a portion of the mouth and the direction the head of the user is facing. At block 706, the second camera 120 may capture a fourth video stream including a second portion of the face of the user in the second field of view 230. The second portion of the face of the user may be a forward-looking view of the user and may include the use and mouth expressions. In this way, the third video stream may show where the user is looking and how the head is tilted and the fourth video stream may include forward looking facial expressions simultaneously capture with the third video stream. By capturing two different video streams that have a high level of detail focusing on specific portions of a user's face, the activity application(s) 414 may be able to more accurately predict a user state and will receive more detailed facial expression information compared to a single camera that may be unable to provide the same level of detail as the two cameras capturing video streams simultaneously.
At 708, the activity application(s) 414 may adjust an operation routine being displayed on the display screen 140 based on the information detected in the third video stream and the fourth video stream. For example, the fourth video stream may capture the way the mouth of the user pronounces a word displayed on the display screen and the additional detail provided by the third video stream may provide additional detail of how the mouth is shaping the word. For example, using stereo vision, a three-dimensional depiction of the mouth forming the words may be presented on the display screen 140 and a user may be able to see how they are supposed to shape a word using their mouth.
In some implementations, a virtual volume up button 804 and a virtual volume down button 806 may be displayed when a user's finger is proximate to the volume control 180. In some implementations, when a user presses the volume control 180, the volume interface 802 may be displayed. In further implementations, the user may not even have to press the volume control 180. For example, a proximity sensor, such as a touch sensor or a light sensor may be installed in/near the volume control 180 and when the proximity sensor detects that the user is interacting with the volume control 180, the volume interface 802 may be displayed to signal to the user how to interact with the volume control 180. In further implementations, the first camera 110 or the second camera 120 may include a field of view that includes the volume control 180 and when the detector 504 detects that a user is trying to interact with the volume control, the volume interface 802 may be displayed. In some implementations, the user may also interact with the virtual volume interface 802 rather than the volume control 180 and if the display screen 140 detects a touch interaction with the volume interface 802, the computing device 100 may cause the volume to be changed based on the interaction with the virtual volume interface 802.
In some implementations, as shown in
As shown in
In some implementations, the activity application(s) 414 may also update the audio outputs when the computing device 100 is orientated in the second position 103. For example, the first speaker 808 may be identified as the right audio output and the second speaker 810 may be identified as the left audio output by the activity application(s) 414. In further implementations, the sound quality may change based on when the speakers are located above the display screen 140 compared to below the display screen 140. An audio profile may be executed by the activity application(s) to change the audio quality when the different orientations are detected in order to improve the audio quality in the different orientations.
It should be understood that the above-described example activities are provided by way of illustration and not limitation and that numerous additional use cases are contemplated and encompassed by the present disclosure. In the above description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, it should be understood that the technology described herein may be practiced without these specific details. Further, various systems, devices, and structures are shown in block diagram form in order to avoid obscuring the description. For instance, various implementations are described as having particular hardware, software, and user interfaces. However, the present disclosure applies to any type of computing device that can receive data and commands, and to any peripheral devices providing services.
In some instances, various implementations may be presented herein in terms of algorithms and symbolic representations of operations on data bits within a computer memory. An algorithm is here, and generally, conceived to be a self-consistent set of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout this disclosure, discussions utilizing terms including “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Various implementations described herein may relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, including, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The technology described herein can take the form of a hardware implementation, a software implementation, or implementations containing both hardware and software elements. For instance, the technology may be implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the technology can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any non-transitory storage apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems, storage devices, remote printers, etc., through intervening private and/or public networks. Wireless (e.g., Wi-Fi™) transceivers, Ethernet adapters, and modems, are just a few examples of network adapters. The private and public networks may have any number of configurations and/or topologies. Data may be transmitted between these devices via the networks using a variety of different communication protocols including, for example, various Internet layer, transport layer, or application layer protocols. For example, data may be transmitted via the networks using transmission control protocol/Internet protocol (TCP/IP), user datagram protocol (UDP), transmission control protocol (TCP), hypertext transfer protocol (HTTP), secure hypertext transfer protocol (HTTPS), dynamic adaptive streaming over HTTP (DASH), real-time streaming protocol (RTSP), real-time transport protocol (RTP) and the real-time transport control protocol (RTCP), voice over Internet protocol (VOIP), file transfer protocol (FTP), WebSocket (WS), wireless access protocol (WAP), various messaging protocols (SMS, MMS, XMS, IMAP, SMTP, POP, WebDAV, etc.), or other known protocols.
Finally, the structure, algorithms, and/or interfaces presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method blocks. The required structure for a variety of these systems will appear from the description above. In addition, the specification is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the specification as described herein.
The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the specification to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the disclosure be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the specification may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the specification or its features may have different names, divisions and/or formats.
Furthermore, the modules, routines, features, attributes, methodologies and other aspects of the disclosure can be implemented as software, hardware, firmware, or any combination of the foregoing. Also, wherever a component, an example of which is a module, of the specification is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future. Additionally, the disclosure is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure is intended to be illustrative, but not limiting, of the scope of the subject matter set forth in the following claims.
Number | Date | Country | |
---|---|---|---|
62871195 | Jul 2019 | US |