[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

US9241103B2 - Apparatus and method for playback of multiple panoramic videos with control codes - Google Patents

Apparatus and method for playback of multiple panoramic videos with control codes Download PDF

Info

Publication number
US9241103B2
US9241103B2 US13/843,599 US201313843599A US9241103B2 US 9241103 B2 US9241103 B2 US 9241103B2 US 201313843599 A US201313843599 A US 201313843599A US 9241103 B2 US9241103 B2 US 9241103B2
Authority
US
United States
Prior art keywords
panoramic
viewing
time
module
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US13/843,599
Other versions
US20140270684A1 (en
Inventor
Sankar Jayaram
Ritesh Kale
Charles DeChenne
John Harrison
Franklin W. Taylor
Vikas K. Singh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Voke Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US13/843,599 priority Critical patent/US9241103B2/en
Application filed by Voke Inc filed Critical Voke Inc
Assigned to 3D-4U, INC. reassignment 3D-4U, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SINGH, VIKAS K., TAYLOR, FRANKLIN W., DECHENNE, CHARLES, HARRISON, JOHN, JAYARAM, SANKAR, KALE, RITESH
Publication of US20140270684A1 publication Critical patent/US20140270684A1/en
Assigned to COWLES COMPANY reassignment COWLES COMPANY ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: 3D-4U, INC.
Assigned to 3D-4U, INC. (A DELAWARE CORPORATION) reassignment 3D-4U, INC. (A DELAWARE CORPORATION) MERGER (SEE DOCUMENT FOR DETAILS). Assignors: 3D-4U, INC. (A FLORIDA CORPORATION)
Assigned to VOKE INC. reassignment VOKE INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: 3D-4U, INC. (A DELAWARE CORPORATION)
Priority to US14/968,712 priority patent/US9413957B2/en
Application granted granted Critical
Publication of US9241103B2 publication Critical patent/US9241103B2/en
Priority to US15/194,044 priority patent/US10326931B2/en
Assigned to VOKE INC., 3D-4U, INC. reassignment VOKE INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: COWLES COMPANY
Assigned to COWLES COMPANY reassignment COWLES COMPANY CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 033932 FRAME: 0555. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Assignors: 3D-4U, INC.
Assigned to INTEL CAPITAL CORPORATION reassignment INTEL CAPITAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VOKE INC.
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTEL CAPITAL CORPORATION
Priority to US16/443,770 priority patent/US10951820B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • H04N5/23238
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/005Reproducing at a different information rate from the information rate of recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/66Remote control of cameras or camera parts, e.g. by remote control devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/90Arrangement of cameras or camera modules, e.g. multiple cameras in TV studios or sports stadiums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/04Synchronising
    • H04N5/06Generation of synchronising signals
    • H04N5/067Arrangements or circuits at the transmitter end
    • H04N5/073Arrangements or circuits at the transmitter end for mutually locking plural sources of synchronising signals, e.g. studios or relay stations
    • H04N5/0733Arrangements or circuits at the transmitter end for mutually locking plural sources of synchronising signals, e.g. studios or relay stations for distributing synchronisation pulses to different TV cameras
    • H04N5/23203
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • H04N7/181Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast for receiving images from a plurality of remote sources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording

Definitions

  • This disclosure pertains to videography, image capture, and playback. More particularly, this disclosure relates to systems and methods for receiving, storing, and viewing a panoramic video or a plurality of panoramic videos with simultaneous control over the playback, as well as the viewing viewport and synchronization between the multiple panoramic videos.
  • Techniques are known for capturing and viewing panoramic images. Most techniques involve a capture system that captures and processes a series of images to form panoramic images. Sequences of these images form panoramic videos. Techniques for viewing panoramic images typically include a user input method for viewing a portion of the panoramic image on a screen, giving the user a feel of being able to look around in the panoramic image.
  • Techniques are also known for transport controls using a buffer of a live video feed. These controls allow a viewer to buffer a live feed on a local device and forward, rewind, pause, and jog through the buffered video.
  • An array of monoscopic detectors, as well as an array of stereoscopic pairs of detectors, are provided in order to capture information from a surrounding environment, such as monoscopic images or stereoscopic images, and audio inputs from ranges exceeding that for a single detector or stereoscopic pair of detectors.
  • stereoscopic pairs of cameras are provided in an array.
  • a combined unit of monoscopic or stereoscopic detectors with processing circuitry configured to create panoramic image data for panoramic videos is referred to in herein as a Panoramic Video Camera Head.
  • the video data from a Panoramic Video Camera Head can be streamed to a viewer, or recorded in computer memory or storage, and retrieved by a viewer and viewed using user interface devices for control.
  • an apparatus and method for receiving a video stream from a Panoramic Video Camera Head or from a local storage disk, storing the video data in a local memory buffer, and viewing regions of interest within the panoramic video using user interface devices.
  • the user interface device allows the viewer to choose a viewing angle and zoom value which gives the user a feeling of “controlling” the camera's pan, tilt, and zoom, independent of other viewers who may be using different user interface devices and viewing displays.
  • a different aspect of the user interface allows the viewer to pause the video at any time, rewind, forward, play, skip to the start, skip forward or skip back within that buffer while the live feed continues to fill the buffer, or replace the buffer (in a circular buffer).
  • a combination of these two aspects allows a unique experience for the viewer where the viewer is able to rewind, pause, forward, or step through a video multiple times but can see a different portion of the video each time by changing the pan, tilt, or zoom at the same time.
  • an apparatus and methods are provided for receiving a plurality of time synchronized video streams from a plurality of Panoramic Video Camera Heads or from a local storage disk, storing the plurality of video data in a local memory buffer, and viewing regions of interest within any one of the panoramic videos using user interface devices.
  • the user interface device allows the viewer to choose a viewing angle and zoom value for each video stream which gives the user a feeling of “controlling” that specific camera's pan, tilt, and zoom, independent of other viewers who may be using different user interface devices and viewing displays and independent of the pan, tilt, and zoom of the other panoramic video streams.
  • a different aspect of the user interface allows the viewer to synchronously pause all the videos at any time, rewind, forward, play, skip to the start, skip forward or skip back within that buffer while the live feeds continue to fill the buffer, or replace the buffer (in a circular buffer).
  • a combination of these two aspects allows a unique experience for the viewer where the viewer is able to rewind, pause, forward, or step through a video multiple times, but can see a different portion of the video each time by changing the pan, tilt, or zoom at the same time. This different portion is from a uniquely different point of view. It also allows the user to switch to a different panoramic camera feed at any given time during the playback to not only look at the same moment in time from a different viewing angle and zoom from one camera location, but also a different viewing angle and zoom from a different camera location while continuing to be in the same state of pause, play, forward, or rewind, and at the same exact instant in time (within device tolerances).
  • FIG. 1 is a schematic diagram showing unique embodiments of time code synchronization mechanisms that could be used to synchronize frames being captured by capture stations from a plurality of panoramic camera heads before being processed and distributed.
  • FIG. 2 is a schematic diagram showing how multiple receivers, or receiving modules on a viewer machine would receive time-stamped frames from the panoramic video feeds, and to show the user interface as the intermediate application for managing how the user input requests are handled and how the clients are manipulated to cater to the user request.
  • FIG. 3 is a schematic diagram showing how multiple panoramic video feeds can be received at a client by a receiver and user interface that also has controller functionality built in.
  • FIG. 4 is a flow chart showing the steps involved in a viewer machine to receive multiple panoramic video streams, to buffer the frames from each feed, and to determine the frame from the buffer to be displayed to the end user based on the camera in view and the time stamp sought by the user.
  • FIG. 5 is a flow chart showing the steps involved in handling a Camera Changed Event triggered by the user.
  • FIG. 6 is a flow chart showing the steps involved in handling a Video Playback State Changed Event triggered by the user.
  • FIG. 7 is a flow chart showing the steps involved in handling a Viewport Changed Event triggered by the user.
  • FIG. 8 - a and 8 - b are two parts of a flowchart showing how the Transport Control Events are handled by the system and how the time stamp for the frame to be displayed to the user is determined based on the Video Playback State of the viewer application.
  • FIG. 9 shows how multiple panoramic cameras are strategically placed an event location and how they are connected to the capture stations, processing stations, and distribution channel.
  • Embodiments of the present invention disclose an apparatus and method for receiving a video stream from a plurality of Panoramic Video Camera Heads or from a local storage disk, storing the video data in a local memory buffer, and viewing regions of interest within any one of the panoramic videos using user interface devices, while controlling the video time, playback speed, and playback direction globally across all panoramic video data in a synchronous manner.
  • multiple Panoramic Video Camera Heads and are synchronized through a time code generator that triggers the image capture across all camera heads synchronously.
  • multiple camera heads are synchronized by one “Master” camera head that sends trigger signals to all the camera heads.
  • each camera head is set to “free-run” with a pre-defined frame rate, and the processing computers all capture the latest frame from each of these cameras and timestamp them with a time code from a time code generator.
  • FIGS. 1-9 Various embodiments herein are described with reference to FIGS. 1-9 . However, certain embodiments may be practiced without one or more of these specific details, or in combination with other known methods and configurations. In the following description, numerous specific details are set forth, such as specific configurations and methods, etc., in order to provide a thorough understanding of the present disclosure. In other instances, well-known construction techniques and methods have not been described in particular detail in order to not unnecessarily obscure the present disclosure.
  • Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, configuration, composition, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, configurations, compositions, or characteristics may be combined in any suitable manner in one or more embodiments.
  • Transport Control is understood to mean a user interface that allows a viewer to control the video playback, such as choosing between play, pause, rewind and forward, and the speed of rewind or forward.
  • FIG. 1 shows construction of the time code synchronization mechanism 10 extending across a plurality of panoramic camera heads 12 , 14 and 18 and capture stations 22 , 24 and 25 .
  • a time code generator 20 is used to get a consistent time stamp based on the desired rate that frames 50 , 52 and 54 need to be captured from the panoramic cameras 12 , 14 and 18 .
  • the same time code from time code generator 20 is received by each of the Capture Stations 22 , 24 and 26 , and in one of the embodiments of this mechanism, the time code is used to trigger 1 44 , 46 and 48 the panoramic cameras 12 , 14 and 18 . This is also referred to as a “software trigger” 44 , 46 and 48 of the panoramic cameras 12 , 14 and 18 .
  • the panoramic cameras 12 , 14 and 18 capture a frame 50 , 52 and 54 when triggered by trigger 44 , 46 and 48 , respectively, and return the frame 50 , 52 and 54 to the corresponding Capture Stations 22 , 24 and 26 that generated the trigger 44 , 46 and 48 .
  • the Capture Stations 22 , 24 and 26 attach the time-stamp information from the time code to the frames, forming “frames with time stamps” 56 , 58 and 60 . Because the time-code is shared between Capture Stations 22 , 24 and 26 , the frames 56 . 58 and 60 generated from each of the Capture Stations 22 , 24 and 26 for a given time-code are synchronized, as they have the same time-stamp.
  • the frames 56 , 58 and 60 are then transmitted to the Processing Station 28 , 30 and 32 , respectively, where they are compressed for transmission over the network and sent to some Distribution Channel 34 .
  • the time-stamp information on the frames 56 , 58 and 60 is maintained throughout this processing, compression, and distribution process.
  • the distribution device, or channel (switch) 34 is configured to distribute the processed images or compressed video stream to client processors in clients 36 , 38 and 40 .
  • Clients 36 , 38 and 40 also include memory.
  • FIG. 1 Another embodiment of the time code synchronization mechanism 10 of FIG. 1 involves triggering the panoramic camera heads 12 , 14 and 18 using a “hardware sync trigger 2 ” 42 .
  • the hardware trigger 42 is generated at specific time intervals based on the desired frame rate. This rate of hardware triggering has to match the rate of time codes being generated by the time code generator 20 .
  • One of the panoramic camera heads 12 , 14 and 18 acts as a “Master” and all other panoramic camera heads 12 , 14 and 18 act as “Slaves”.
  • the “Master” panoramic camera triggers itself and all the “Slave” panoramic cameras synchronously. When a trigger is generated, a frame is captured at the panoramic camera 50 , 52 or 54 .
  • an event is invoked at the Capture Station 22 , 24 or 26 , and this is when the Capture Station 22 , 24 or 26 “grabs” the frame from the camera 12 , 14 or 18 , and associates the time stamp corresponding to the latest time-code received from the time-code generator 20 to the frame 50 , 52 or 54 .
  • a third embodiment of the time code synchronization mechanism 10 of FIG. 1 involves letting the panoramic cameras 12 , 14 and 18 capture frames in a “free run” mode, where each of the panoramic cameras 12 , 14 and 18 trigger as fast as possible.
  • the Capture Station 22 , 24 and 26 uses the time code signal to “grab” the latest frame 50 , 52 or 54 that was captured by the panoramic camera 12 , 14 or 18 , and associates the time stamp corresponding to the time-code with the frame.
  • FIG. 2 shows multiple receivers 64 , 66 and 68 on a client machine 36 receiving time-stamped slices 78 , 80 and 82 , respectively, from the panoramic video feeds via distribution channel 34 .
  • a user interface 70 on the client machine 36 determines which receiver is the active receiver 64 , 66 or 68 displayed to the user.
  • User interface 70 also manages the user interaction input from devices 62 like a joystick 75 , a keyboard 76 , and a touch or gesture based device(s) 77 .
  • User interface 70 uses this input to determine which client stream should be the active stream (switch between videos 74 ), and what section of the panoramic video should be displayed (zoom/tilt/pan 73 ) to the end-user.
  • Another input from the user-interaction devices is the input related to transport control 72 .
  • User interface 70 uses this input and passes it on to all the receivers. This enables all the receivers to perform the same transport control operations to their respective panoramic video streams, and ensures that all the panoramic video streams are synchronized.
  • FIG. 3 shows another embodiment of the client application on the viewer machine.
  • a single application serves as the receiver and user interface 84 .
  • the receiver receives time-stamped frames for all the panoramic video streams via distribution channel 34 and manages each of these streams in its own application memory.
  • the receiver also includes processing circuitry.
  • User interface functionality described in FIG. 2 is also integrated in this application. As described in FIG. 2 , the user interface manages the input from the user interaction devices 86 and performs the actions for switching between videos 89 , what section of the panoramic video should be displayed (zoom/pan/tilt 88 ) to the end-user, and how to apply the transport control 87 to all the streams in memory.
  • controller module for receiver and user interface 84 that determine the state of the view that is displayed to the end-user:
  • the user interaction devices 86 could generate the following types of events that are handled by the receiver and user interface 84 :
  • FIG. 4 shows the steps involved in a viewer machine to receive multiple panoramic video streams and determine the frame to be displayed to the end user.
  • the frames from each panoramic video stream that is received by the viewer machine 102 are buffered in memory (Hard disk drive, application memory, or any other form of storage device) 104 .
  • Each frame received by the viewer machine has a time-stamp associated with it, which serves as the key to synchronize frames across multiple panoramic streams.
  • the viewer application enters a refresh cycle loop starting with a “wait for refresh cycle” 106 .
  • the refresh cycle is a periodic set of operations performed by the application at every refresh interval of the display.
  • the viewing application stores the information about the panoramic camera being displayed 108 and the information about the time stamp to be displayed based on the playback state of the application and user inputs related to transport controls. For each refresh cycle, the application checks the current panoramic camera that needs to be displayed, and then checks for the time stamp to be displayed 110 . Using these two pieces of information, the appropriate frame to be displayed is sought from the buffer in memory 112 . This frame is then passed on to the application for display 114 in that refresh cycle.
  • FIG. 5 shows the steps involved in handling the Camera Changed Event triggered by the user.
  • An initial camera is used, or defined 202 as the default after initiating a start 200 .
  • the application goes into a ‘listen’ mode 204 where it is waiting for Camera Changed Events 206 triggered by the user interaction devices.
  • the local variable in the application that stores current camera information is updated 208 , and the application goes back into the ‘listen’ mode, waiting for the next Camera Changed Event.
  • FIG. 6 shows the steps involved in handling the Video Playback State Changed Event triggered by the user from start 300 .
  • An initial video playback state 302 is used as the default to start with.
  • the application goes into a ‘listen’ mode 304 where it is waiting for Video Playback State Changed Events 306 triggered by the user interaction devices.
  • the local variable in the application that stores the current video playback state is updated 308 , and the application goes back in the ‘listen’ mode, waiting for the next Video Playback State Changed event.
  • FIG. 7 shows the steps involved in handling the Viewport Changed Event triggered by the user from start 400 .
  • the viewport could be changed by changing the zoom, tilt, or pan.
  • An initial zoom, tilt, and pan is used as a default 402 to start with.
  • the application goes into a ‘listen’ mode 404 where it is waiting for Viewport Changed Events triggered by the user interaction devices.
  • the application checks to see if the zoom 410 , pan 406 , or tilt 408 value has been changes, and updates the local variables 416 , 412 and 414 , respectively in the application that store the zoom, pan, and tilt.
  • the application then goes back in the ‘listen’ mode, waiting for the next Viewport Changed Event.
  • FIGS. 8 a and 8 b show how the Transport Control Events are handled by the viewing application initiated at start 500 .
  • the application is listening for Transport Control Changed Events 502 .
  • the application checks to see if the velocity of transport control was changed 504 . If the velocity was changed, the value of the velocity stored within the application is updated 518 and the application goes back to listening for Transport Control Changed Events. If velocity has not changed, then the application checks to see if the user has requested to “Transport to Start” 506 so that they view the start of the buffered video stream in memory.
  • the value of the current timestamp to display is changed to be the same as the timestamp of the frame at the start of the buffer in memory 520 , and the application goes back to listening for Transport Control Changed Events. If “Transport to Start” was not requested, then the application determines the current timestamp to be used for display based on playback state that the application is in. If the application is in “Play” state 508 , then the current timestamp is incremented to the next timestamp 522 . If the application is in the “Pause” state 520 , then the current timestamp is not changed 524 .
  • the current timestamp is incremented 526 or decremented 528 taking the frame rate and velocity of transport into account. If the application is in the “Live” state 516 , then the current timestamp is set to the timestamp of the frame at the end of buffered frames in memory 530 .
  • FIG. 9 shows a football field 90 as the event location where multiple panoramic cameras 12 , 14 , 16 and 18 are located at strategic locations such that they provide different angles to view a sporting event from and allow one or more end-users to choose the angle that is best suited (for them) for viewing the event at any given point in time.
  • Each of the panoramic video cameras 12 , 14 , 16 and 18 is connected to a capture station 22 , 24 , 25 and 26 , respectively.
  • Each capture station 22 , 24 , 25 and 26 receives a time-code from a time-code generator, and the time-stamp from the time-code is attached to the frames received from the panoramic video camera.
  • the frames are then transmitted to the processing stations 28 , 30 , 31 and 32 where they are processed and streamed out to the distribution channel 34 .
  • Distribution channel 34 receives the frames and communicates the frames over a network to multiple clients that are connected to the distribution channel.
  • a panoramic video capture device as used herein comprises multiple sensors placed in a circular array such that a portion of image captured by each sensor overlaps with a portion of image captured by adjacent sensors.
  • the overlapping images from the different sensors are captured synchronously based on a trigger mechanism, and these overlapping images form the basis for creation of a single, seamless panoramic image.
  • a processor is a high-performance server-grade machine housing multiple graphic processing units (GPUs).
  • a GPU is capable of performing large number of operations in parallel.
  • the use of multiple GPUs in the processor allows for highly parallelized computations on multiple image frames being communicated by the panoramic video capture device. Memory can also be resident.
  • a processor comprises the following modules.
  • a capture module is responsible for triggering the panoramic video capture device and retrieving the image frames once the exposure of the frame is complete.
  • the triggering of the sensors is not performed by this module.
  • There is a separate trigger mechanism for the sensors and the capture module is notified of the event every time a new image frame is available on the panoramic video capture device. When this notification is received by the capture module, it retrieves the image frame from the panoramic video capture device.
  • a processing module is operative to receive the raw frame from the capture module and applies the following filters to the raw frame:
  • a splicing module is responsible for using the images output from the processing module, and putting them together with the ends lined up against each other in such that the aggregate of these individual images creates one panoramic image.
  • a slicing module takes the seam blended panoramic image, and splits this image into multiple slices. This is done so that each slice of the panoramic image can be distributed over the network in an optimized fashion. This overcomes the existing limitations of certain network protocols that cannot communicate panoramic images above a certain size of the image.
  • a time stamp module listens for the time code from the time code generator. This time stamp is then attached to each slice of the image sections output from the slicing module.
  • a compression module takes the image frame output by the time stamp module and compresses it using certain image compression techniques (JPEG, H.264, etc.) for transmission of over the network.
  • JPEG image compression techniques
  • a distribution device is a kind of router or switch that is used for transmitting the compressed frames over the network. Multiple clients could connect to the distribution device and receive the image frames being transmitted. In addition to this, subsequent distribution devices themselves could be connected to a distribution device transmitting the images for relaying the images over a wide network.
  • a client process processes the combination of sub-processes and modules on a viewer's machine to receiving image frames from a distribution device, store them in buffer, manage the user input from the user interaction devices, and display the video images to the end-user.
  • the client process is broken down into the following modules:
  • a receiving module which connects to the source of the video images via the distribution device, receives the images over the network, and stores them in a buffer on the viewer's machine.
  • a user interface module is used for managing the user input from the user interaction devices.
  • the joystick controller is used for capturing the user input.
  • the user input could be provided using buttons on the joystick or using the multiple thumb pad controls on the joystick.
  • a display module is used for displaying portion of the panoramic video frames to the user.
  • the portion of the video frame to be displayed is determined based on the inputs from the user interface module.
  • Image frame from the buffer is fetched and based on the other user inputs, the portion of the panoramic image to be displayed is determined. This portion is then displayed to the end-user for viewing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Studio Devices (AREA)

Abstract

An apparatus and method are provided for viewing panoramic images and videos through the selection of a particular viewing angle and window within that panorama while allowing the viewer to simultaneously implement temporal transport control, and allowing the video to be in a state of pause, play, fast forward, fast rewind, slow forward, slow rewind, or frame-by-frame. A plurality of panoramic video or images from multiple cameras can be synchronized so that as a viewer pauses, rewinds, forwards a video in one panorama, and all panoramas are time synchronized and go through the same states as the panorama being viewed. When the user selects a different panorama for viewing from a different camera, this panorama comes up in the same state as the panorama previously being viewed.

Description

TECHNICAL FIELD
This disclosure pertains to videography, image capture, and playback. More particularly, this disclosure relates to systems and methods for receiving, storing, and viewing a panoramic video or a plurality of panoramic videos with simultaneous control over the playback, as well as the viewing viewport and synchronization between the multiple panoramic videos.
BACKGROUND OF THE INVENTION
Techniques are known for capturing and viewing panoramic images. Most techniques involve a capture system that captures and processes a series of images to form panoramic images. Sequences of these images form panoramic videos. Techniques for viewing panoramic images typically include a user input method for viewing a portion of the panoramic image on a screen, giving the user a feel of being able to look around in the panoramic image.
Techniques are also known for transport controls using a buffer of a live video feed. These controls allow a viewer to buffer a live feed on a local device and forward, rewind, pause, and jog through the buffered video.
However, the above known techniques fall short and there is a need to for an apparatus and a method that enables a user to make use of both of the above mentioned capabilities in order to provide a unique viewing experience with multiple panoramic videos.
SUMMARY OF THE INVENTION
An array of monoscopic detectors, as well as an array of stereoscopic pairs of detectors, are provided in order to capture information from a surrounding environment, such as monoscopic images or stereoscopic images, and audio inputs from ranges exceeding that for a single detector or stereoscopic pair of detectors. For the case of image inputs, stereoscopic pairs of cameras are provided in an array. A combined unit of monoscopic or stereoscopic detectors with processing circuitry configured to create panoramic image data for panoramic videos is referred to in herein as a Panoramic Video Camera Head. The video data from a Panoramic Video Camera Head can be streamed to a viewer, or recorded in computer memory or storage, and retrieved by a viewer and viewed using user interface devices for control.
According to one aspect, an apparatus and method are provided for receiving a video stream from a Panoramic Video Camera Head or from a local storage disk, storing the video data in a local memory buffer, and viewing regions of interest within the panoramic video using user interface devices. The user interface device allows the viewer to choose a viewing angle and zoom value which gives the user a feeling of “controlling” the camera's pan, tilt, and zoom, independent of other viewers who may be using different user interface devices and viewing displays. A different aspect of the user interface allows the viewer to pause the video at any time, rewind, forward, play, skip to the start, skip forward or skip back within that buffer while the live feed continues to fill the buffer, or replace the buffer (in a circular buffer). A combination of these two aspects allows a unique experience for the viewer where the viewer is able to rewind, pause, forward, or step through a video multiple times but can see a different portion of the video each time by changing the pan, tilt, or zoom at the same time.
According to another aspect, an apparatus and methods are provided for receiving a plurality of time synchronized video streams from a plurality of Panoramic Video Camera Heads or from a local storage disk, storing the plurality of video data in a local memory buffer, and viewing regions of interest within any one of the panoramic videos using user interface devices. The user interface device allows the viewer to choose a viewing angle and zoom value for each video stream which gives the user a feeling of “controlling” that specific camera's pan, tilt, and zoom, independent of other viewers who may be using different user interface devices and viewing displays and independent of the pan, tilt, and zoom of the other panoramic video streams. A different aspect of the user interface allows the viewer to synchronously pause all the videos at any time, rewind, forward, play, skip to the start, skip forward or skip back within that buffer while the live feeds continue to fill the buffer, or replace the buffer (in a circular buffer).
A combination of these two aspects allows a unique experience for the viewer where the viewer is able to rewind, pause, forward, or step through a video multiple times, but can see a different portion of the video each time by changing the pan, tilt, or zoom at the same time. This different portion is from a uniquely different point of view. It also allows the user to switch to a different panoramic camera feed at any given time during the playback to not only look at the same moment in time from a different viewing angle and zoom from one camera location, but also a different viewing angle and zoom from a different camera location while continuing to be in the same state of pause, play, forward, or rewind, and at the same exact instant in time (within device tolerances).
BRIEF DESCRIPTION OF THE DRAWINGS
Preferred embodiments of the disclosure are described below with reference to the following accompanying drawings.
FIG. 1 is a schematic diagram showing unique embodiments of time code synchronization mechanisms that could be used to synchronize frames being captured by capture stations from a plurality of panoramic camera heads before being processed and distributed.
FIG. 2 is a schematic diagram showing how multiple receivers, or receiving modules on a viewer machine would receive time-stamped frames from the panoramic video feeds, and to show the user interface as the intermediate application for managing how the user input requests are handled and how the clients are manipulated to cater to the user request.
FIG. 3 is a schematic diagram showing how multiple panoramic video feeds can be received at a client by a receiver and user interface that also has controller functionality built in.
FIG. 4 is a flow chart showing the steps involved in a viewer machine to receive multiple panoramic video streams, to buffer the frames from each feed, and to determine the frame from the buffer to be displayed to the end user based on the camera in view and the time stamp sought by the user.
FIG. 5 is a flow chart showing the steps involved in handling a Camera Changed Event triggered by the user.
FIG. 6 is a flow chart showing the steps involved in handling a Video Playback State Changed Event triggered by the user.
FIG. 7 is a flow chart showing the steps involved in handling a Viewport Changed Event triggered by the user.
FIG. 8-a and 8-b are two parts of a flowchart showing how the Transport Control Events are handled by the system and how the time stamp for the frame to be displayed to the user is determined based on the Video Playback State of the viewer application.
FIG. 9 shows how multiple panoramic cameras are strategically placed an event location and how they are connected to the capture stations, processing stations, and distribution channel.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
This disclosure is submitted in furtherance of the constitutional purposes of the U.S. Patent Laws “to promote the progress of science and useful arts” (Article 1, Section 8).
Embodiments of the present invention disclose an apparatus and method for receiving a video stream from a plurality of Panoramic Video Camera Heads or from a local storage disk, storing the video data in a local memory buffer, and viewing regions of interest within any one of the panoramic videos using user interface devices, while controlling the video time, playback speed, and playback direction globally across all panoramic video data in a synchronous manner. According to one construction, multiple Panoramic Video Camera Heads and are synchronized through a time code generator that triggers the image capture across all camera heads synchronously. According to another construction, multiple camera heads are synchronized by one “Master” camera head that sends trigger signals to all the camera heads. Further, according to yet another construction, each camera head is set to “free-run” with a pre-defined frame rate, and the processing computers all capture the latest frame from each of these cameras and timestamp them with a time code from a time code generator.
Various embodiments herein are described with reference to FIGS. 1-9. However, certain embodiments may be practiced without one or more of these specific details, or in combination with other known methods and configurations. In the following description, numerous specific details are set forth, such as specific configurations and methods, etc., in order to provide a thorough understanding of the present disclosure. In other instances, well-known construction techniques and methods have not been described in particular detail in order to not unnecessarily obscure the present disclosure. Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, configuration, composition, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, configurations, compositions, or characteristics may be combined in any suitable manner in one or more embodiments.
As used herein, the term “Transport Control” is understood to mean a user interface that allows a viewer to control the video playback, such as choosing between play, pause, rewind and forward, and the speed of rewind or forward.
FIG. 1 shows construction of the time code synchronization mechanism 10 extending across a plurality of panoramic camera heads 12, 14 and 18 and capture stations 22, 24 and 25. A time code generator 20 is used to get a consistent time stamp based on the desired rate that frames 50, 52 and 54 need to be captured from the panoramic cameras 12, 14 and 18. The same time code from time code generator 20 is received by each of the Capture Stations 22, 24 and 26, and in one of the embodiments of this mechanism, the time code is used to trigger1 44, 46 and 48 the panoramic cameras 12, 14 and 18. This is also referred to as a “software trigger” 44, 46 and 48 of the panoramic cameras 12, 14 and 18. The panoramic cameras 12, 14 and 18 capture a frame 50, 52 and 54 when triggered by trigger 44, 46 and 48, respectively, and return the frame 50, 52 and 54 to the corresponding Capture Stations 22, 24 and 26 that generated the trigger 44, 46 and 48. The Capture Stations 22, 24 and 26 attach the time-stamp information from the time code to the frames, forming “frames with time stamps” 56, 58 and 60. Because the time-code is shared between Capture Stations 22, 24 and 26, the frames 56. 58 and 60 generated from each of the Capture Stations 22, 24 and 26 for a given time-code are synchronized, as they have the same time-stamp. These frames 56, 58 and 60 are then transmitted to the Processing Station 28, 30 and 32, respectively, where they are compressed for transmission over the network and sent to some Distribution Channel 34. The time-stamp information on the frames 56, 58 and 60 is maintained throughout this processing, compression, and distribution process. The distribution device, or channel (switch) 34 is configured to distribute the processed images or compressed video stream to client processors in clients 36, 38 and 40. Clients 36, 38 and 40 also include memory.
Another embodiment of the time code synchronization mechanism 10 of FIG. 1 involves triggering the panoramic camera heads 12, 14 and 18 using a “hardware sync trigger242. The hardware trigger 42 is generated at specific time intervals based on the desired frame rate. This rate of hardware triggering has to match the rate of time codes being generated by the time code generator 20. One of the panoramic camera heads 12, 14 and 18 acts as a “Master” and all other panoramic camera heads 12, 14 and 18 act as “Slaves”. The “Master” panoramic camera triggers itself and all the “Slave” panoramic cameras synchronously. When a trigger is generated, a frame is captured at the panoramic camera 50, 52 or 54. Once the frame 50, 52 or 54 is captured, an event is invoked at the Capture Station 22, 24 or 26, and this is when the Capture Station 22, 24 or 26 “grabs” the frame from the camera 12, 14 or 18, and associates the time stamp corresponding to the latest time-code received from the time-code generator 20 to the frame 50, 52 or 54.
A third embodiment of the time code synchronization mechanism 10 of FIG. 1 involves letting the panoramic cameras 12, 14 and 18 capture frames in a “free run” mode, where each of the panoramic cameras 12, 14 and 18 trigger as fast as possible. The Capture Station 22, 24 and 26 uses the time code signal to “grab” the latest frame 50, 52 or 54 that was captured by the panoramic camera 12, 14 or 18, and associates the time stamp corresponding to the time-code with the frame.
FIG. 2 shows multiple receivers 64, 66 and 68 on a client machine 36 receiving time-stamped slices 78, 80 and 82, respectively, from the panoramic video feeds via distribution channel 34. A user interface 70 on the client machine 36 determines which receiver is the active receiver 64, 66 or 68 displayed to the user. User interface 70 also manages the user interaction input from devices 62 like a joystick 75, a keyboard 76, and a touch or gesture based device(s) 77. User interface 70 uses this input to determine which client stream should be the active stream (switch between videos 74), and what section of the panoramic video should be displayed (zoom/tilt/pan 73) to the end-user. Another input from the user-interaction devices is the input related to transport control 72. User interface 70 uses this input and passes it on to all the receivers. This enables all the receivers to perform the same transport control operations to their respective panoramic video streams, and ensures that all the panoramic video streams are synchronized.
FIG. 3 shows another embodiment of the client application on the viewer machine. In this embodiment, a single application serves as the receiver and user interface 84. The receiver receives time-stamped frames for all the panoramic video streams via distribution channel 34 and manages each of these streams in its own application memory. The receiver also includes processing circuitry. User interface functionality described in FIG. 2 is also integrated in this application. As described in FIG. 2, the user interface manages the input from the user interaction devices 86 and performs the actions for switching between videos 89, what section of the panoramic video should be displayed (zoom/pan/tilt 88) to the end-user, and how to apply the transport control 87 to all the streams in memory.
The following variables are stored with the controller module for receiver and user interface 84 that determine the state of the view that is displayed to the end-user:
    • a. Current Camera to be displayed
    • b. Current Time Stamp of the frame to be displayed
    • c. Current Video Playback State—Possible values are Play, Pause, Fast Forward, Rewind, Live
    • d. Current Viewport—The viewport is determined by the current zoom, pan, and tilt values
The user interaction devices 86 could generate the following types of events that are handled by the receiver and user interface 84:
    • a. Camera Changed Event
    • b. Video Playback State Changed Event
    • c. Viewport Changed Event
    • d. Transport Control Event
FIG. 4 shows the steps involved in a viewer machine to receive multiple panoramic video streams and determine the frame to be displayed to the end user. The frames from each panoramic video stream that is received by the viewer machine 102 are buffered in memory (Hard disk drive, application memory, or any other form of storage device) 104. Each frame received by the viewer machine has a time-stamp associated with it, which serves as the key to synchronize frames across multiple panoramic streams. Once the frames have started buffering, the viewer application enters a refresh cycle loop starting with a “wait for refresh cycle” 106. The refresh cycle is a periodic set of operations performed by the application at every refresh interval of the display. The viewing application stores the information about the panoramic camera being displayed 108 and the information about the time stamp to be displayed based on the playback state of the application and user inputs related to transport controls. For each refresh cycle, the application checks the current panoramic camera that needs to be displayed, and then checks for the time stamp to be displayed 110. Using these two pieces of information, the appropriate frame to be displayed is sought from the buffer in memory 112. This frame is then passed on to the application for display 114 in that refresh cycle.
FIG. 5 shows the steps involved in handling the Camera Changed Event triggered by the user. An initial camera is used, or defined 202 as the default after initiating a start 200. Then the application goes into a ‘listen’ mode 204 where it is waiting for Camera Changed Events 206 triggered by the user interaction devices. When a request for changing the selected camera is received, the local variable in the application that stores current camera information is updated 208, and the application goes back into the ‘listen’ mode, waiting for the next Camera Changed Event.
FIG. 6 shows the steps involved in handling the Video Playback State Changed Event triggered by the user from start 300. An initial video playback state 302 is used as the default to start with. Then the application goes into a ‘listen’ mode 304 where it is waiting for Video Playback State Changed Events 306 triggered by the user interaction devices. When a request for changing the video playback state is received, the local variable in the application that stores the current video playback state is updated 308, and the application goes back in the ‘listen’ mode, waiting for the next Video Playback State Changed event.
FIG. 7 shows the steps involved in handling the Viewport Changed Event triggered by the user from start 400. The viewport could be changed by changing the zoom, tilt, or pan. An initial zoom, tilt, and pan is used as a default 402 to start with. Then the application goes into a ‘listen’ mode 404 where it is waiting for Viewport Changed Events triggered by the user interaction devices. When a request for changing the viewport is received, the application checks to see if the zoom 410, pan 406, or tilt 408 value has been changes, and updates the local variables 416, 412 and 414, respectively in the application that store the zoom, pan, and tilt. The application then goes back in the ‘listen’ mode, waiting for the next Viewport Changed Event.
FIGS. 8 a and 8 b show how the Transport Control Events are handled by the viewing application initiated at start 500. The application is listening for Transport Control Changed Events 502. The application checks to see if the velocity of transport control was changed 504. If the velocity was changed, the value of the velocity stored within the application is updated 518 and the application goes back to listening for Transport Control Changed Events. If velocity has not changed, then the application checks to see if the user has requested to “Transport to Start” 506 so that they view the start of the buffered video stream in memory. If “Transport to Start” was requested, the value of the current timestamp to display is changed to be the same as the timestamp of the frame at the start of the buffer in memory 520, and the application goes back to listening for Transport Control Changed Events. If “Transport to Start” was not requested, then the application determines the current timestamp to be used for display based on playback state that the application is in. If the application is in “Play” state 508, then the current timestamp is incremented to the next timestamp 522. If the application is in the “Pause” state 520, then the current timestamp is not changed 524. If the application is in the “Fast Forward” 512 or “Rewind” state 514, then the current timestamp is incremented 526 or decremented 528 taking the frame rate and velocity of transport into account. If the application is in the “Live” state 516, then the current timestamp is set to the timestamp of the frame at the end of buffered frames in memory 530.
FIG. 9 shows a football field 90 as the event location where multiple panoramic cameras 12, 14, 16 and 18 are located at strategic locations such that they provide different angles to view a sporting event from and allow one or more end-users to choose the angle that is best suited (for them) for viewing the event at any given point in time. Each of the panoramic video cameras 12, 14, 16 and 18 is connected to a capture station 22, 24, 25 and 26, respectively. Each capture station 22, 24, 25 and 26 receives a time-code from a time-code generator, and the time-stamp from the time-code is attached to the frames received from the panoramic video camera. The frames are then transmitted to the processing stations 28, 30, 31 and 32 where they are processed and streamed out to the distribution channel 34. Distribution channel 34 receives the frames and communicates the frames over a network to multiple clients that are connected to the distribution channel.
A panoramic video capture device as used herein comprises multiple sensors placed in a circular array such that a portion of image captured by each sensor overlaps with a portion of image captured by adjacent sensors. The overlapping images from the different sensors are captured synchronously based on a trigger mechanism, and these overlapping images form the basis for creation of a single, seamless panoramic image.
As used herein, a processor is a high-performance server-grade machine housing multiple graphic processing units (GPUs). A GPU is capable of performing large number of operations in parallel. The use of multiple GPUs in the processor allows for highly parallelized computations on multiple image frames being communicated by the panoramic video capture device. Memory can also be resident.
A processor comprises the following modules. First, a capture module is responsible for triggering the panoramic video capture device and retrieving the image frames once the exposure of the frame is complete. In certain embodiments of the capture module, the triggering of the sensors is not performed by this module. There is a separate trigger mechanism for the sensors and the capture module is notified of the event every time a new image frame is available on the panoramic video capture device. When this notification is received by the capture module, it retrieves the image frame from the panoramic video capture device.
As used herein, a processing module is operative to receive the raw frame from the capture module and applies the following filters to the raw frame:
    • Demosaicing filter: In this filter, a full color image is reconstructed using the incomplete color samples from the raw image frames.
    • Coloring filter: The full color image output from the demosaicing filter is then converted to appropriate color space (for example, RGB) for use in downstream modules.
    • Seam blending filter: Colored images output from the coloring filter are used for blending the seam using stitching algorithms on the overlap between adjacent images.
As used herein a splicing module is responsible for using the images output from the processing module, and putting them together with the ends lined up against each other in such that the aggregate of these individual images creates one panoramic image.
Also as used herein, a slicing module takes the seam blended panoramic image, and splits this image into multiple slices. This is done so that each slice of the panoramic image can be distributed over the network in an optimized fashion. This overcomes the existing limitations of certain network protocols that cannot communicate panoramic images above a certain size of the image.
As used herein, a time stamp module listens for the time code from the time code generator. This time stamp is then attached to each slice of the image sections output from the slicing module.
As used herein, a compression module takes the image frame output by the time stamp module and compresses it using certain image compression techniques (JPEG, H.264, etc.) for transmission of over the network.
As used herein, a distribution device is a kind of router or switch that is used for transmitting the compressed frames over the network. Multiple clients could connect to the distribution device and receive the image frames being transmitted. In addition to this, subsequent distribution devices themselves could be connected to a distribution device transmitting the images for relaying the images over a wide network.
As used herein a client process processes the combination of sub-processes and modules on a viewer's machine to receiving image frames from a distribution device, store them in buffer, manage the user input from the user interaction devices, and display the video images to the end-user.
The client process is broken down into the following modules:
A receiving module which connects to the source of the video images via the distribution device, receives the images over the network, and stores them in a buffer on the viewer's machine.
A user interface module is used for managing the user input from the user interaction devices. In one of the implementations of the user interface module, the joystick controller is used for capturing the user input. The user input could be provided using buttons on the joystick or using the multiple thumb pad controls on the joystick.
    • Different buttons are used to track the video playback state change input for play, pause, fast forward, rewind, or live mode
    • A thumb pad control is used to track the viewport change inputs for zoom, pan, tilt of the view
    • Another thumb pad control is used to track the transport control input for jogging forward or back based on the velocity of jog determined by how far the thumb pad control has been pushed.
A display module is used for displaying portion of the panoramic video frames to the user. The portion of the video frame to be displayed is determined based on the inputs from the user interface module. Image frame from the buffer is fetched and based on the other user inputs, the portion of the panoramic image to be displayed is determined. This portion is then displayed to the end-user for viewing.
In compliance with the statute, embodiments of the invention have been described in language more or less specific as to structural and methodical features. It is to be understood, however, that the entire invention is not limited to the specific features and/or embodiments shown and/or described, since the disclosed embodiments comprise forms of putting the invention into effect. The invention is, therefore, claimed in any of its forms or modifications within the proper scope of the appended claims appropriately interpreted in accordance with the doctrine of equivalents.

Claims (9)

The invention claimed is:
1. A system for viewing a plurality of panoramic videos through any of a plurality of time, playback speed and direction, viewing angles and windows contained within at least one of the panoramic videos, comprising:
providing a plurality of panoramic video capture devices each generating a panoramic video comprising a sequence of panoramic images;
at least one processor communicatively connected to each of the capture devices and configured to execute a plurality of modules, the modules comprising:
a capture module for capturing frames from individual sensors in the panoramic video capture device;
a processing module for at least one of demosaicing, coloring, and seam blending;
a splicing module for generating a panoramic image;
a slicing module for slicing the panoramic image into multiple slices for processing and transfer efficiency;
a time stamp module for receiving a time code and applying a time stamp to each slice;
a compression module for compressing the slice into a smaller data package for broadcast and distribution;
a time code generator providing the time code for each of the panoramic video capture devices delivered to the time stamp module;
at least one distribution device for distributing the plurality of videos;
at least one client processor communicatively connected to the distribution device to receive the plurality of videos and configured to execute a plurality of modules, the modules comprising:
a receiving module for receiving at least one of the plurality of videos from the distribution device;
a plurality of storage memory buffers for storing the at least one of the plurality of videos;
a user input module for allowing a user to select one of the plurality of videos to be viewed and controlled at any specific time;
a user input module for allowing a user to select a portion of the selected video in time to be viewed, a viewing speed, and a temporal viewing direction, the user input module configured to simultaneously allow a user to select a portion of the panoramic video to view by choosing at least one of pan, tilt and zoom values within the panoramic video;
a synchronizing module configured to synchronize the plurality of buffers with a current display time corresponding with the portion of the selected video in time to be viewed, viewing speed, and temporal viewing direction, the synchronizing module allowing the synchronization during switching of the selected video so that the new selected video is displayed with a same current display time, viewing speed, and temporal viewing direction as the previous selected video at the time of switching; and
a display module configured to retrieve an appropriate image from the buffer and display to the viewer.
2. The system of claim 1, wherein the viewing speed is paused.
3. The system of claim 1, wherein the viewing speed is playing forward.
4. The system of claim 1, wherein the viewing speed is playing backwards.
5. The system of claim 1, wherein the viewing speed is faster than an actual speed of an event.
6. The system of claim 1, wherein the viewing speed is slower than an actual speed of an event.
7. The system of claim 1, wherein the temporal viewing direction is forward.
8. The system of claim 1, wherein the temporal viewing direction is backwards.
9. The system of claim 1, wherein the temporal viewing direction is paused.
US13/843,599 2013-03-15 2013-03-15 Apparatus and method for playback of multiple panoramic videos with control codes Expired - Fee Related US9241103B2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US13/843,599 US9241103B2 (en) 2013-03-15 2013-03-15 Apparatus and method for playback of multiple panoramic videos with control codes
US14/968,712 US9413957B2 (en) 2013-03-15 2015-12-14 System and method for viewing a plurality of videos
US15/194,044 US10326931B2 (en) 2013-03-15 2016-06-27 System and method for generating a plurality of unique videos of a same event
US16/443,770 US10951820B2 (en) 2013-03-15 2019-06-17 System and method for generating a plurality of unique videos of a same event

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/843,599 US9241103B2 (en) 2013-03-15 2013-03-15 Apparatus and method for playback of multiple panoramic videos with control codes

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/968,712 Continuation US9413957B2 (en) 2013-03-15 2015-12-14 System and method for viewing a plurality of videos

Publications (2)

Publication Number Publication Date
US20140270684A1 US20140270684A1 (en) 2014-09-18
US9241103B2 true US9241103B2 (en) 2016-01-19

Family

ID=51527432

Family Applications (4)

Application Number Title Priority Date Filing Date
US13/843,599 Expired - Fee Related US9241103B2 (en) 2013-03-15 2013-03-15 Apparatus and method for playback of multiple panoramic videos with control codes
US14/968,712 Active US9413957B2 (en) 2013-03-15 2015-12-14 System and method for viewing a plurality of videos
US15/194,044 Active US10326931B2 (en) 2013-03-15 2016-06-27 System and method for generating a plurality of unique videos of a same event
US16/443,770 Active US10951820B2 (en) 2013-03-15 2019-06-17 System and method for generating a plurality of unique videos of a same event

Family Applications After (3)

Application Number Title Priority Date Filing Date
US14/968,712 Active US9413957B2 (en) 2013-03-15 2015-12-14 System and method for viewing a plurality of videos
US15/194,044 Active US10326931B2 (en) 2013-03-15 2016-06-27 System and method for generating a plurality of unique videos of a same event
US16/443,770 Active US10951820B2 (en) 2013-03-15 2019-06-17 System and method for generating a plurality of unique videos of a same event

Country Status (1)

Country Link
US (4) US9241103B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878646B2 (en) 2005-12-08 2020-12-29 Smartdrive Systems, Inc. Vehicle event recorder systems
US8868288B2 (en) 2006-11-09 2014-10-21 Smartdrive Systems, Inc. Vehicle exception event management systems
US9241103B2 (en) 2013-03-15 2016-01-19 Voke Inc. Apparatus and method for playback of multiple panoramic videos with control codes
FR3006841B1 (en) * 2013-06-07 2015-07-03 Kolor FUSION OF SEVERAL VIDEO STREAMS
US9451162B2 (en) 2013-08-21 2016-09-20 Jaunt Inc. Camera array including camera modules
US11019258B2 (en) 2013-08-21 2021-05-25 Verizon Patent And Licensing Inc. Aggregating images and audio data to generate content
US9501878B2 (en) * 2013-10-16 2016-11-22 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9610955B2 (en) 2013-11-11 2017-04-04 Smartdrive Systems, Inc. Vehicle fuel consumption monitor and feedback systems
US8892310B1 (en) 2014-02-21 2014-11-18 Smartdrive Systems, Inc. System and method to detect execution of driving maneuvers
US9699437B2 (en) * 2014-03-03 2017-07-04 Nextvr Inc. Methods and apparatus for streaming content
US9911454B2 (en) 2014-05-29 2018-03-06 Jaunt Inc. Camera array including camera modules
US11108971B2 (en) 2014-07-25 2021-08-31 Verzon Patent and Licensing Ine. Camera array removing lens distortion
US10368011B2 (en) * 2014-07-25 2019-07-30 Jaunt Inc. Camera array removing lens distortion
US9363569B1 (en) 2014-07-28 2016-06-07 Jaunt Inc. Virtual reality system including social graph
US10440398B2 (en) 2014-07-28 2019-10-08 Jaunt, Inc. Probabilistic model to compress images for three-dimensional video
US10701426B1 (en) 2014-07-28 2020-06-30 Verizon Patent And Licensing Inc. Virtual reality system including social graph
US9774887B1 (en) 2016-09-19 2017-09-26 Jaunt Inc. Behavioral directional encoding of three-dimensional video
US10186301B1 (en) 2014-07-28 2019-01-22 Jaunt Inc. Camera array including camera modules
US11069257B2 (en) 2014-11-13 2021-07-20 Smartdrive Systems, Inc. System and method for detecting a vehicle event and generating review criteria
US9819875B2 (en) * 2015-03-02 2017-11-14 Intel Corporation Multi-camera sync pulse synchronization
US9679420B2 (en) 2015-04-01 2017-06-13 Smartdrive Systems, Inc. Vehicle event recording system and method
EP3101625A3 (en) 2015-04-30 2016-12-14 Pixia Corp. Method and system of selecting a view from a plurality of cameras
US10042532B2 (en) * 2015-05-05 2018-08-07 Facebook, Inc. Methods and systems for viewing embedded content
EP3432589A1 (en) * 2015-05-05 2019-01-23 Facebook, Inc. Methods and systems for viewing embedded videos
US10685471B2 (en) 2015-05-11 2020-06-16 Facebook, Inc. Methods and systems for playing video while transitioning from a content-item preview to the content item
US10129579B2 (en) 2015-10-15 2018-11-13 At&T Mobility Ii Llc Dynamic video image synthesis using multiple cameras and remote control
CN105872570A (en) * 2015-12-11 2016-08-17 乐视网信息技术(北京)股份有限公司 Method and apparatus for implementing multi-camera video synchronous playing
US10148874B1 (en) * 2016-03-04 2018-12-04 Scott Zhihao Chen Method and system for generating panoramic photographs and videos
CN105847851A (en) * 2016-04-19 2016-08-10 北京金山安全软件有限公司 Panoramic video live broadcast method, device and system and video source control equipment
CN105955603A (en) * 2016-04-20 2016-09-21 乐视控股(北京)有限公司 Panorama video playing direction adjusting method and device
CN105915937B (en) * 2016-05-10 2019-12-13 上海乐相科技有限公司 Panoramic video playing method and device
WO2017214291A1 (en) * 2016-06-07 2017-12-14 Visbit Inc. Virtual reality 360-degree video camera system for live streaming
CN105991992A (en) * 2016-06-21 2016-10-05 浩云科技股份有限公司 Whole-space synchronous monitoring camera system
CN105933343B (en) * 2016-06-29 2019-01-08 深圳市优象计算技术有限公司 A kind of code stream caching method for 720 degree of panoramic video netcasts
US10200608B1 (en) * 2016-07-25 2019-02-05 360fly, Inc. Panoramic image processing system, camera, and method therefor using multiple image processors
CN106331475A (en) * 2016-08-18 2017-01-11 成都英博格科技有限公司 Image acquisition method and device
CN106170094B (en) * 2016-09-07 2020-07-28 阿里巴巴(中国)有限公司 Live broadcasting method and device for panoramic video
US10681341B2 (en) 2016-09-19 2020-06-09 Verizon Patent And Licensing Inc. Using a sphere to reorient a location of a user in a three-dimensional virtual reality video
US11032536B2 (en) 2016-09-19 2021-06-08 Verizon Patent And Licensing Inc. Generating a three-dimensional preview from a two-dimensional selectable icon of a three-dimensional reality video
US11032535B2 (en) 2016-09-19 2021-06-08 Verizon Patent And Licensing Inc. Generating a three-dimensional preview of a three-dimensional video
US10810443B2 (en) 2016-09-22 2020-10-20 Apple Inc. Vehicle video system
US10306289B1 (en) 2016-09-22 2019-05-28 Apple Inc. Vehicle video viewing systems
CN106559663B (en) * 2016-10-31 2019-07-26 努比亚技术有限公司 Image display device and method
CN106797455A (en) * 2016-12-23 2017-05-31 深圳前海达闼云端智能科技有限公司 A kind of projecting method, device and robot
EP3355587A1 (en) * 2017-01-30 2018-08-01 EVS Broadcast Equipment SA Video production apparatus and method for video production
CN108882018B (en) * 2017-05-09 2020-10-20 阿里巴巴(中国)有限公司 Video playing and data providing method in virtual scene, client and server
CN108289231B (en) * 2017-06-20 2020-11-03 深圳市佳创视讯技术股份有限公司 Integrated panoramic player
CN107330960A (en) * 2017-06-28 2017-11-07 北京疯景科技有限公司 Generation, the method and device for playing image
CN107395985B (en) * 2017-08-28 2019-11-05 京东方科技集团股份有限公司 A kind of mobile terminal image composition method, device and mobile terminal
CN113794840B (en) * 2017-09-29 2023-05-19 深圳市大疆创新科技有限公司 Video processing method, video processing equipment, unmanned aerial vehicle and video processing system
EP3695593A4 (en) * 2017-10-13 2021-06-23 C360 Technologies, Inc. Creating multi-camera panoramic projections
CN107728787B (en) * 2017-10-30 2020-07-07 太平洋未来科技(深圳)有限公司 Information display method and device in panoramic video
EP3495906B1 (en) * 2017-12-07 2022-02-02 Tetra Laval Holdings & Finance S.A. Method of process monitoring in a machine
CN113395409B (en) * 2017-12-15 2022-10-11 浙江舜宇智能光学技术有限公司 Video synchronization method applied to multi-view camera
CN109522449B (en) * 2018-09-28 2021-11-30 百度在线网络技术(北京)有限公司 Searching method and device
US11087549B2 (en) 2018-10-15 2021-08-10 University Of Maryland, College Park Methods and apparatuses for dynamic navigable 360 degree environments
EP3881555A1 (en) 2018-11-14 2021-09-22 Oktein Technology Limited Multi-file streaming media delivery system and method
US10694167B1 (en) 2018-12-12 2020-06-23 Verizon Patent And Licensing Inc. Camera array including camera modules
CN109905701B (en) * 2019-03-26 2020-07-31 中国科学院长春光学精密机械与物理研究所 Detection system for time synchronization precision
EP3970381A4 (en) * 2019-05-16 2023-01-25 Tension Technology AB Methods and systems for providing a user with an image content
CN110262737A (en) * 2019-06-25 2019-09-20 维沃移动通信有限公司 A kind of processing method and terminal of video data
CN110602442B (en) * 2019-07-04 2021-06-04 安徽富煌科技股份有限公司 Method for realizing real-time code stream playing control in video monitoring system
CN110278445A (en) * 2019-07-05 2019-09-24 浙江开奇科技有限公司 Image treatment method, mobile terminal and system based on 5G network
WO2021049356A1 (en) * 2019-09-13 2021-03-18 ソニー株式会社 Playback device, playback method, and recording medium
CN111787341B (en) * 2020-05-29 2023-12-05 北京京东尚科信息技术有限公司 Guide broadcasting method, device and system
CN113194358B (en) * 2021-04-01 2023-03-24 北京凯视达科技股份有限公司 Video splicing display method, device, medium and electronic equipment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040075738A1 (en) * 1999-05-12 2004-04-22 Sean Burke Spherical surveillance system architecture
US20040162154A1 (en) * 2003-02-14 2004-08-19 Dejohn David Kinetic motion analyzer
US20090041293A1 (en) * 2007-08-08 2009-02-12 Brian Andrew Multiple camera imaging method and system for detecting concealed objects

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11284978A (en) * 1997-11-27 1999-10-15 Canon Inc Image distributor, image distribution system and image distribution method
US20050091311A1 (en) * 2003-07-29 2005-04-28 Lund Christopher D. Method and apparatus for distributing multimedia to remote clients
US7619683B2 (en) * 2003-08-29 2009-11-17 Aptina Imaging Corporation Apparatus including a dual camera module and method of using the same
CN101453662B (en) * 2007-12-03 2012-04-04 华为技术有限公司 Stereo video communication terminal, system and method
JP2010250612A (en) * 2009-04-16 2010-11-04 Canon Inc Image processing apparatus and image processing method
US20110083073A1 (en) * 2009-10-07 2011-04-07 Cisco Technology, Inc. Synchronized Recording and Playback of a Plurality of Media Content
US20140306963A1 (en) * 2011-09-12 2014-10-16 Wei Sun Use motion parallax to create 3d perception from 2d images
JP5884421B2 (en) * 2011-11-14 2016-03-15 ソニー株式会社 Image processing apparatus, image processing apparatus control method, and program
US9400347B2 (en) * 2011-11-28 2016-07-26 Panasonic Intellectual Property Management Co., Ltd. Display device
US8767040B2 (en) * 2012-01-11 2014-07-01 Google Inc. Method and system for displaying panoramic imagery
US8805158B2 (en) * 2012-02-08 2014-08-12 Nokia Corporation Video viewing angle selection
US9204041B1 (en) * 2012-07-03 2015-12-01 Gopro, Inc. Rolling shutter synchronization
US8947387B2 (en) * 2012-12-13 2015-02-03 Immersion Corporation System and method for identifying users and selecting a haptic response
US9241103B2 (en) * 2013-03-15 2016-01-19 Voke Inc. Apparatus and method for playback of multiple panoramic videos with control codes
US9509913B2 (en) * 2013-06-18 2016-11-29 Olympus Corporation Image pickup apparatus, method of controlling image pickup apparatus, image pickup apparatus system, and image pickup control program stored in storage medium of image pickup apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040075738A1 (en) * 1999-05-12 2004-04-22 Sean Burke Spherical surveillance system architecture
US20040162154A1 (en) * 2003-02-14 2004-08-19 Dejohn David Kinetic motion analyzer
US20090041293A1 (en) * 2007-08-08 2009-02-12 Brian Andrew Multiple camera imaging method and system for detecting concealed objects

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019222059A1 (en) * 2018-05-16 2019-11-21 Gopro, Inc. Systems and methods for providing rotational motion correction

Also Published As

Publication number Publication date
US20140270684A1 (en) 2014-09-18
US10326931B2 (en) 2019-06-18
US20160105610A1 (en) 2016-04-14
US10951820B2 (en) 2021-03-16
US20160309087A1 (en) 2016-10-20
US9413957B2 (en) 2016-08-09
US20200145580A1 (en) 2020-05-07

Similar Documents

Publication Publication Date Title
US10951820B2 (en) System and method for generating a plurality of unique videos of a same event
US8867886B2 (en) Surround video playback
CN108900857B (en) Multi-view video stream processing method and device
US20210281909A1 (en) Method and apparatus for sharing video, and storage medium
US20130129304A1 (en) Variable 3-d surround video playback with virtual panning and smooth transition
US20150124048A1 (en) Switchable multiple video track platform
US10778905B2 (en) Surround video recording
WO2016122985A1 (en) Methods and systems for synchronizing media stream presentations
WO2014025319A1 (en) System and method for enabling user control of live video stream(s)
CN102098443A (en) Camera, communication system and corresponding image processing method
US20190394375A1 (en) Video Production Apparatus and Method for Video Production
US7999842B1 (en) Continuously rotating video camera, method and user interface for using the same
CN110741648A (en) Transmission system for multi-channel portrait and control method thereof, multi-channel portrait playing method and device thereof
WO2019244632A1 (en) Information processing device, information processing method, and program
US20180227504A1 (en) Switchable multiple video track platform
JP2003244683A (en) Remote monitor system and program
JP2012004991A (en) Broadcast receiving apparatus and control method for the same
CN113099281B (en) Video interaction method and device, storage medium and terminal
US11792442B2 (en) Methods and systems for providing a user with an image content
Li et al. Mobilevideotiles: video display on multiple mobile devices
JP2019033362A (en) Distribution apparatus, reception apparatus, and program
JP4828354B2 (en) Multi-channel image transfer device
US11622161B2 (en) Method for operating a distributed video production system and architecture of a distributed video production system
JP2007104540A (en) Device, program and method for distributing picked-up image
KR20150027745A (en) Interactive audio/video broadcast system, method for operating the same and user device for operation in the interactive audio/video broadcast system

Legal Events

Date Code Title Description
AS Assignment

Owner name: 3D-4U, INC., FLORIDA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JAYARAM, SANKAR;KALE, RITESH;DECHENNE, CHARLES;AND OTHERS;SIGNING DATES FROM 20130621 TO 20130626;REEL/FRAME:030782/0408

AS Assignment

Owner name: COWLES COMPANY, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:3D-4U, INC.;REEL/FRAME:033932/0555

Effective date: 20140930

AS Assignment

Owner name: VOKE INC., DELAWARE

Free format text: CHANGE OF NAME;ASSIGNOR:3D-4U, INC. (A DELAWARE CORPORATION);REEL/FRAME:037277/0334

Effective date: 20151022

Owner name: 3D-4U, INC. (A DELAWARE CORPORATION), DELAWARE

Free format text: MERGER;ASSIGNOR:3D-4U, INC. (A FLORIDA CORPORATION);REEL/FRAME:037273/0417

Effective date: 20150902

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: 3D-4U, INC., FLORIDA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:COWLES COMPANY;REEL/FRAME:039986/0392

Effective date: 20160301

Owner name: VOKE INC., DELAWARE

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:COWLES COMPANY;REEL/FRAME:039986/0392

Effective date: 20160301

AS Assignment

Owner name: COWLES COMPANY, WASHINGTON

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 033932 FRAME: 0555. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:3D-4U, INC.;REEL/FRAME:040689/0555

Effective date: 20140930

AS Assignment

Owner name: INTEL CAPITAL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VOKE INC.;REEL/FRAME:043703/0709

Effective date: 20170828

AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTEL CAPITAL CORPORATION;REEL/FRAME:043703/0718

Effective date: 20170828

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.)

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20200119