1. Field of the Invention
Embodiments of the present invention generally relate to methods and apparatuses for collaborative environment sharing.
2. Description of the Related Art
Typical video conferencing systems are effective at allowing people to conduct meetings in which participants can see each other and can collaboratively work on documents, for example, displayed on a computing device. Such systems utilize video capture devices to allow participants to see each other. Such systems also generally have application sharing capabilities in which one participant can share their display or portions of their display where applications are being executed. Furthermore, these video conferencing systems typically permit participants to collaboratively engage in providing input to the shared information in the video conference. This type of collaboration is representative of a structured meeting in which people traditionally came together in a meeting room and collaborated on a document, spreadsheet, or the like. Current video conferencing technology is well suited for this type of collaboration and has allowed people to effectively have structured meetings without needing to be physically collocated.
Although typical video conferencing systems have allowed people to have structured meeting from physically different locations, there are many other scenarios where physically meeting someone enables a much broader range of tasks to be accomplished. For example, being with a tour guide while in a foreign city is significantly more helpful than having the tour guide available for a video call because the tour guide can immediately recognize their surroundings and physically point you towards a landmark. Similarly, shopping is enhanced by the physical presence of another, as both individuals can view the items together and point to features to illustrate likes and dislikes. There are numerous other scenarios where being physically together if much easier for solving various types of tasks that cannot be addressed by existing technology. However, sometimes physical presence is impossible, unfeasible or inefficient.
Therefore, there is a need in the art for technology that allows a person to reap the benefits of the physical presence of another person through mobile video transmission.
Embodiments of the present invention relate to methods and apparatus for collaborative environment sharing.
Other and further embodiments of the present disclosure are described below.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. The figures are not drawn to scale and may be simplified for clarity. It is contemplated that elements and features of one embodiment may be beneficially incorporated in other embodiments without further recitation.
Embodiments of the present invention generally relate to a method and apparatus for collaborative environment sharing. In some embodiments, a user of the system described herein can share a real-time video stream of their surroundings with others who are not physically present, via the user's computing device, e.g., a mobile phone or the like. The local user is able to direct a remote user's attention to a particular region of the video stream by the use of visual cures. Similarly, remote users can draw the local user's attention to particular regions of the video stream containing certain objects by the use of their own visual cues. In order to maintain the visual cues accuracy, as time lapses and the local user's device shifts, the visual cues are transformed accordingly. Those of ordinary skill in the art will recognize that “local” and “remote” are relative terms where local indicates an example of a device that captures a video stream, while remote represents the device the stream is transmitted to. Additionally, the local and remote devices are interchangeably usable in the present invention relative to each other.
Some portions of the detailed description which follow are presented in terms of operations on binary digital signals stored within a memory of a specific apparatus or special purpose computing device or platform. In the context of this particular specification, the term specific apparatus or the like includes a general purpose computer once it is programmed to perform particular functions pursuant to instructions from program software. In this context, operations or processing involve physical manipulation of physical quantities. Typically, although not necessarily, such quantities may take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to such signals as bits, data, values, elements, symbols, characters, terms, numbers, numerals or the like. It should be understood, however, that all of these or similar terms are to be associated with appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device.
As illustrated in
If the local device 702 simply displays the visual cue 705 in the drawn location selected by the remote user of device 704, the visual cue 705 may no longer correspond to the intended object 701 due to object movement in the video stream. Accordingly in one embodiment, both the video stream and the visual cues are associated with timestamps to determine how much time has elapsed since a video frame or visual cue was created. In other embodiments, other registration means may be used to determine elapsed time since visual cue creation. By using the elapsed time information and motion prediction of objects in the video stream, the local device 702 compensates for the movement of object 701 by transforming the location visual cue 705 to correspond to the new location of object 701 when the visual cue 705 is displayed at the local device 702.
The video stream, visual cues and corresponding timestamp information are collected and transmitted through the network 108 by a stream generator 805 or similar mechanism. The local device 800 receives visual cue data 808 from other devices over the network, wherein the visual cue data 808 comprises visual cue and corresponding timestamp information in relation to the video stream. Because of the various time delays in the network between getting the video from the local device 800 to remote devices and retrieving visual cues from remote devices, the position of visual cues may frequently need to be transformed before they can be displayed. To accomplish this, the local device 800 contains a video buffer 807 which stores video for some period of time sufficient to account for the cumulative delays between when a video frame is recorded and when a corresponding video cue could be received.
The visual cue transformation module (VCTM) 809 receives a visual cue and timestamp in the form of the visual cue data 808 from a remote device. The visual cue transformation module 809 requests the video frame from the video buffer 807 corresponding to the timestamp stored in visual cue data 808. The VCTM module 809 first detects an object in the vicinity of a visual cue in visual cue data 808 from the video frame corresponding to the visual cue timestamp. Object detection within an image may, in some embodiments, utilize one or more image processing techniques such as scale invariant feature transform, edge detection, or blob detection to determine distinguishing attributes of the objects corresponding to the visual cues created by the user. Subsequently, the VCTM module 809 attempts to determine if the object corresponding to the visual cue has moved from its position at the visual cue timestamp in visual cue data 808 in comparison to its position in the video stream being currently displayed on local device 800. If the position of the object of interest has moved, the VCTM module 809 will transform the visual cue corresponding to the new object position. In one embodiment, the transformation of the visual cue may be accomplished by tracking the position of the distinguishing attributes of the previously determined objects as they change over time. Alternatively, in another embodiment the transformation of the visual cue may be accomplished without requiring pre-determination of object features to be tracked by utilizing a visual tracking algorithm such as structured output tracking with kernels method or visual tracking with online multiple instance learning method. The local user device then superimposes both the visual cues generated from the local device 800 and visual cues from remote devices and displays them over the current video input over the network.
In some embodiments, a number of objects (e.g., a car, building, person, and the like) are identified/detected within the video stream. Each of the identified may be selected and highlighted in some manner. In some embodiments, a single selection may provide a first visual cue (e.g., a circle highlight around the object, or highlight the object in first color) while a second selection of the highlighted object may change the visual cue to a second visual cue (e.g., an X across the object, or highlight the object in a second color.) Although a timestamp may be used as described above to help track movement of identified objects, in other embodiments, objects may be tracked without the use of a timestamp. For example, in some embodiments, the each device may identify objects within the video stream. Information about an object selected and/or highlighted on one device may be transmitted to the second device. The second device may use the received information about the object selected to determine the same object in the video stream it is displaying, and select/highlight that object accordingly.
The computer system 1200 includes a processor 1202, various support circuits 1205, and memory 1204. The processors 1202 may include one or more microprocessors known in the art. The support circuits 1207 for the processor 1202 include conventional cache, power supplies, clock circuits, data registers, I/O interface 1206, and the like. The I/O interface 1206 may be directly coupled to the memory 1204 or coupled through the support circuits 1207. The I/O interface 1206 may also be configured for communication with input devices and/or output devices 1209 such as network devices, various storage devices, mouse, keyboard, display, video and audio sensors and the like.
The memory 1204, or computer readable medium, stores non-transient processor-executable instructions and/or data that may be executed by and/or used by the processor 1202. These processor-executable instructions may comprise firmware, software, and the like, or some combination thereof. Modules having processor-executable instructions that are stored in the memory 1204 comprise a transform module 1220, a display module 1222, a selection module 1224 and a detection module 1226. Memory 1204 also contains data 1228 used by the modules 1220-1226, including video data 1230 and selection data 1232. In other instances, portions of the data 1228 are stored on another server (for example, in cloud storage) for access and retrieval.
The computer system 1200 may be programmed with one or more operating systems 1250, which may include OS/2, Linux, SOLARIS, UNIX, HPUX, AIX, WINDOWS, IOS, and ANDROID among other known platforms. The memory 1204 may include one or more of the following: random access memory, read only memory, magneto-resistive read/write memory, optical read/write memory, cache memory, magnetic read/write memory, and the like, as well as signal-bearing media as described below.
Those skilled in the art will appreciate that computer system 1200 is merely illustrative and is not intended to limit the scope of embodiments. In particular, the computer system and devices may include any combination of hardware or software that can perform the indicated functions of various embodiments, including computers, network devices, Internet appliances, PDAs, wireless phones, pagers, and the like. Computer system 1200 may also be connected to other devices that are not illustrated, or instead may operate as a stand-alone system. In addition, the functionality provided by the illustrated components may in some embodiments be combined in fewer components or distributed in additional components. Similarly, in some embodiments, the functionality of some of the illustrated components may not be provided and/or other additional functionality may be available.
Those skilled in the art will also appreciate that, while various items are illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with the illustrated computer system via inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or a portable article to be read by an appropriate drive, various examples of which are described above. In some embodiments, instructions stored on a computer-accessible medium separate from computer system 1200 may be transmitted to computer system 1200 via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link. Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium or via a communication medium. In general, a computer-accessible medium may include a storage medium or memory medium such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g., SDRAM, DDR, RDRAM, SRAM, and the like), ROM, and the like.
The methods described herein may be implemented in software, hardware, or a combination thereof, in different embodiments. In addition, the order of methods may be changed, and various elements may be added, reordered, combined, omitted or otherwise modified. All examples described herein are presented in a non-limiting manner. Various modifications and changes may be made as would be obvious to a person skilled in the art having benefit of this disclosure. Realizations in accordance with embodiments have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the example configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of embodiments as defined in the claims that follow.
The method begins at step 1302 and proceeds to step 1304. At step 1304 input regarding user-selected portions of video content of a surrounding environment is received by the selection module 1224. The user-selected portions may be user created visual cues, e.g. those generated by menu screens shown in
At step 1306, the computer system 1200 transmits the video content (the video stream) of the surrounding environment along with the visual cue data (e.g., visual cue data 806 shown in
At step 1308, remote selections of portions of the video content/video stream are received at the local device (e.g., device 106 from
At step 1310 the detection module 1226 detects objects within the remote selection in the video content at the time indicated in the time signature. The detection module 1226 then determines the new location of that object in the current video frame being displayed on the local device (e.g., device 106 from
At step 1314, the transform module 1220 (which implements the visual cue transformation module 809) transforms the remote visual cue data in accordance with the new location of the objects. The local device accesses a video buffer (e.g., video buffer 807 of
At step 1316, the display module 1222 displays the remote selections and the user-selected portions on the user device. Thus, the user of a local device can view remote and local visual cues, gain instruction on purchasing an item, or input regarding important objects in the user's surrounding environment. The method terminates at step 1318.
Various embodiments of method and apparatus for organizing, displaying and accessing contacts in a contact list, as described herein, may be executed on one or more computer systems, which may interact with various other devices. One such computer system is computer system 1400 illustrated by
In the illustrated embodiment, computer system 1400 includes one or more processors 1410a-1410n coupled to a system memory 1420 via an input/output (I/O) interface 1430. Computer system 1400 further includes a network interface 1440 coupled to I/O interface 1430, and one or more input/output devices 1450, such as cursor control device 1460, keyboard 1470, and display(s) 1480. In various embodiments, any of the components may be utilized by the system to receive user input described above. In various embodiments, a user interface may be generated and displayed on display 1480. In some cases, it is contemplated that embodiments may be implemented using a single instance of computer system 1400, while in other embodiments multiple such systems, or multiple nodes making up computer system 1400, may be configured to host different portions or instances of various embodiments. For example, in one embodiment some elements may be implemented via one or more nodes of computer system 1400 that are distinct from those nodes implementing other elements. In another example, multiple nodes may implement computer system 1400 in a distributed manner.
In different embodiments, computer system 1400 may be any of various types of devices, including, but not limited to, a personal computer system, desktop computer, laptop, notebook, or netbook computer, mainframe computer system, handheld computer, workstation, network computer, a camera, a set top box, a mobile device, a consumer device, video game console, handheld video game device, application server, storage device, a peripheral device such as a switch, modem, router, or in general any type of computing or electronic device.
In various embodiments, computer system 1400 may be a uniprocessor system including one processor 1410, or a multiprocessor system including several processors 1410 (e.g., two, four, eight, or another suitable number). Processors 1410 may be any suitable processor capable of executing instructions. For example, in various embodiments processors 1410 may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs). In multiprocessor systems, each of processors 1410 may commonly, but not necessarily, implement the same ISA.
System memory 1420 may be configured to store program instructions 1422 and/or data 1432 accessible by processor 1410. In various embodiments, system memory 1420 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing any of the elements of the embodiments described above may be stored within system memory 1420. In other embodiments, program instructions and/or data may be received, sent or stored upon different types of computer-accessible media or on similar media separate from system memory 1420 or computer system 1400.
In one embodiment, I/O interface 1430 may be configured to coordinate I/O traffic between processor 1410, system memory 1420, and any peripheral devices in the device, including network interface 1440 or other peripheral interfaces, such as input/output devices 1450. In some embodiments, I/O interface 1430 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 1420) into a format suitable for use by another component (e.g., processor 1410). In some embodiments, I/O interface 1430 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface 1430 may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface 1430, such as an interface to system memory 1420, may be incorporated directly into processor 1410.
Network interface 1440 may be configured to allow data to be exchanged between computer system 1400 and other devices attached to a network (e.g., network 1490), such as one or more external systems or between nodes of computer system 1400. In various embodiments, network 1490 may include one or more networks including but not limited to Local Area Networks (LANs) (e.g., an Ethernet or corporate network), Wide Area Networks (WANs) (e.g., the Internet), wireless data networks, some other electronic data network, or some combination thereof. In various embodiments, network interface 1440 may support communication via wired or wireless general data networks, such as any suitable type of Ethernet network, for example; via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks; via storage area networks such as Fiber Channel SANs, or via any other suitable type of network and/or protocol.
Input/output devices 1450 may, in some embodiments, include one or more display terminals, keyboards, keypads, touchpads, scanning devices, voice or optical recognition devices, or any other devices suitable for entering or accessing data by one or more computer systems 1400. Multiple input/output devices 1450 may be present in computer system 1400 or may be distributed on various nodes of computer system 1400. In some embodiments, similar input/output devices may be separate from computer system 1400 and may interact with one or more nodes of computer system 1400 through a wired or wireless connection, such as over network interface 1440.
In some embodiments, the illustrated computer system may implement any of the methods described above, such as the methods illustrated by the flowchart of
Those skilled in the art will appreciate that computer system 1400 is merely illustrative and is not intended to limit the scope of embodiments. In particular, the computer system and devices may include any combination of hardware or software that can perform the indicated functions of various embodiments, including computers, network devices, Internet appliances, PDAs, wireless phones, pagers, and the like. Computer system 1400 may also be connected to other devices that are not illustrated, or instead may operate as a stand-alone system. In addition, the functionality provided by the illustrated components may in some embodiments be combined in fewer components or distributed in additional components. Similarly, in some embodiments, the functionality of some of the illustrated components may not be provided and/or other additional functionality may be available.
Those skilled in the art will also appreciate that, while various items are illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with the illustrated computer system via inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or a portable article to be read by an appropriate drive, various examples of which are described above. In some embodiments, instructions stored on a computer-accessible medium separate from computer system 1400 may be transmitted to computer system 1400 via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link. Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium or via a communication medium. In general, a computer-accessible medium may include a storage medium or memory medium such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g., SDRAM, DDR, RDRAM, SRAM, and the like), ROM, and the like.
The methods described herein may be implemented in software, hardware, or a combination thereof, in different embodiments. In addition, the order of methods may be changed, and various elements may be added, reordered, combined, omitted or otherwise modified. All examples described herein are presented in a non-limiting manner. Various modifications and changes may be made as would be obvious to a person skilled in the art having benefit of this disclosure. Realizations in accordance with embodiments have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the example configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of embodiments as defined in the claims that follow.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
This application claims benefit of U.S. Provisional Patent Application No. 62/151,608, filed Apr. 23, 2015, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62151608 | Apr 2015 | US |