Composite video generation
View Patent ↗Composite video generation is described. In an embodiment, mobile video capture devices, such as mobile telephones, capture video streams of a common event. A network node receives the video streams and time-synchronizes them. Frames from each of the video streams are then stitched together to form a composite frame, and these are added to a composite video sequence. In embodiments, the composite video sequence is encoded and streamed to a user terminal over a communications network. In embodiments, the common event is a live event and the composite video sequence is generated in real-time. In some embodiments, the stitching of the video streams is performed by geometrically aligning the frames. In some embodiments, three or more mobile video capture devices provide video streams.
1. A computer-implemented method of generating a composite video sequence at a node in a communications network comprising a plurality of mobile video capture devices, the method comprising:
receiving a plurality of video streams relating to a common event, each of the video streams comprising a sequence of frames and originating from a different one of the mobile video capture devices;
time-synchronizing the video streams and selecting a frame set comprising a frame from each of at least two of the video streams, each frame in the frame set having a common capture time;
forming a composite frame by stitching at least two frames in the frame set together, the stitching including:
identifying previous alignment parameters used to align frames in a previous frame set;
determining whether the previous alignment parameters can be utilized;
when the previous alignment parameters can be utilized, geometrically aligning the at least two frames in the frame set according to the previous alignment parameters; and
when the previous alignment parameters cannot be utilized:
calculating new alignment parameters, calculating new alignment parameters including:
extracting a plurality of interest points from the at least two frames;
determining a plurality of orientations corresponding to the plurality of interest points;
determining a plurality of descriptors corresponding to the plurality of interest points using the plurality of orientations;
matching a first interest point of a first frame of the at least two frames to a second interest point of a second frame of the at least two frames using at least two of the plurality of descriptors; and
determining a transform, the transform geometrically aligning the first frame and the second frame; and
geometrically aligning the at least two frames in the frame set according to the new alignment parameters; and
adding the composite frame to the composite video sequence.
2. A method according to claim 1 , further comprising encoding the composite video sequence and streaming the encoded composite video sequence to a user terminal over the communications network.
3. A method according to claim 1 , wherein the video streams are of a live event and wherein the method is carried out in real-time.
4. A method according to claim 1 , wherein each frame comprises a timestamp recording the capture time of the frame, and the time-synchronizing comprises reading the timestamp and queuing the frames from each video stream according to the capture time.
5. A method according to claim 4 , wherein each of the plurality of video streams is encoded such that each video stream comprises the timestamp for each frame.
6. A method according to claim 4 , wherein the queuing comprises buffering the frames from each video stream in one of a plurality of buffers.
7. A method according to claim 1 , wherein determining whether the previous alignment parameters can be utilized comprises determining whether the previous alignment parameters were calculated within a predetermined time interval.
8. A method according to claim 1 , wherein determining whether the previous alignment parameters can be utilized comprises determining whether at least one of the mobile video capture devices is moving more than a threshold movement level.
9. A method according to claim 1 , further comprising determining that the plurality of video streams relate to a common event.
10. A method according to claim 1 , further comprising decoding each of the plurality of video streams prior to time-synchronizing the video streams.
11. A method according to claim 1 , wherein the plurality of mobile video capture devices comprises three or more mobile video capture devices, and the step of forming a composite frame comprises:
searching the frame set for frames that are able to be stitched together;
allocating each frame in the frame set to one of a plurality of clusters, such that frames that are able to be stitched together are allocated to the same cluster, at least two clusters each being allocated at least one frame;
selecting from the plurality of clusters a cluster comprising the largest number of allocated frames; and
stitching the frames in the selected cluster to form the composite frame.
12. A method according to claim 1 , further comprising transmitting a time synchronization signal to each of the mobile video capture devices over the communication network.
13. A network node for generating a composite video sequence, comprising:
a network interface arranged to:
connect to a communications network;
receive a plurality of video streams, each of the video streams comprising a sequence of frames and originating from a different one of a plurality of mobile video capture devices; and
determine that each of the plurality of video streams is related to a common event;
a plurality of buffers, each arranged to queue the sequence of frames from one of the video streams according to a frame capture time;
a processor arranged to select a frame set comprising a frame from each of the plurality of buffers, each frame having a common capture time;
an alignment engine configured to stitch at least part of each frame in the frame set together to form a composite frame, the alignment engine being further configured to:
form the composite frame by stitching at least two frames in the frame set together, the stitching including:
identifying previous alignment parameters used to align frames in a previous frame set;
determining whether the previous alignment parameters can be utilized;
when the previous alignment parameters can be utilized, geometrically aligning the at least two frames in the frame set according to the previous alignment parameters; and
when the previous alignment parameters cannot be utilized:
calculating new alignment parameters, calculating new alignment parameters including:
extracting a plurality of interest points from the at least two frames;
determining a plurality of orientations corresponding to the plurality of interest points;
determining a plurality of descriptors corresponding to the plurality of interest points using the plurality of orientations;
matching a first interest point of a first frame of the at least two frames to a second interest point of a second frame of the at least two frames using at least two of the plurality of descriptors; and
determining a transform, the transform geometrically aligning the first frame and the second frame; and
a compositing engine configured to add the composite frame to a composite video sequence and transmit the composite video sequence from the network interface to a user terminal connected to the communications network.
14. A network node according to claim 13 , wherein the network interface receives a plurality of video streams originating from a different one of a plurality of mobile telephones.
15. A computer-implemented method of generating a composite video sequence at a node in a communications network comprising three or more mobile video capture devices, the method comprising:
receiving a plurality of video streams relating to a common event, each of the video streams comprising a sequence of frames and originating from a different one of the mobile video capture devices;
time-synchronizing the video streams and selecting a frame set comprising a frame from each of at least two of the video streams, each frame having a common capture time;
forming a composite frame by:
searching the frame set for frames that are able to be stitched together;
allocating each frame in the frame set to one of a plurality of clusters, such that frames that are able to be stitched together are allocated to the same cluster;
selecting from the plurality of clusters a cluster comprising the largest number of allocated frames; and
stitching the frames in the selected cluster to form the composite frame, stitching including:
identifying previous alignment parameters used to align frames in a previous frame set;
determining whether the previous alignment parameters can be utilized;
when the previous alignment parameters can be utilized, geometrically aligning at least two frames in the frame set according to the previous alignment parameters; and
when the previous alignment parameters cannot be utilized:
calculating new alignment parameters, calculating new alignment parameters including:
extracting a plurality of interest points from the at least two frames;
determining a plurality of orientations corresponding to the plurality of interest points;
determining a plurality of descriptors corresponding to the plurality of interest points using the plurality of orientations;
matching a first interest point of a first frame of the at least two frames to a second interest point of a second frame of the at least two frames using at least two of the plurality of descriptors; and
determining a transform, the transform geometrically aligning the first frame and the second frame; and
adding the composite frame to the composite video sequence.
16. A method according to claim 9 , wherein determining that the plurality of video streams relate to a common event comprises receiving a notification from each of the plurality of mobile video capture devices indicating the event.
17. A method according to claim 9 , wherein determining that the plurality of video streams relate to a common event comprises determining that each of the plurality of mobile video capture devices navigated to a web page provided by the network node and entered or selected the event through the web page.
18. A method according to claim 9 , wherein determining that the plurality of video streams relate to a common event comprises:
receiving from each of the plurality of mobile video capture devices, an indication of the mobile video capture device's current location; and
determining, based on the current location of each mobile video capture device, that each of the plurality of mobile video capture devices are within a predefined range of each other.
19. A method according to claim 13 , wherein determining that the plurality of video streams relate to a common event comprises receiving a notification from each of the plurality of mobile video capture devices indicating the event.
20. A method according to claim 13 , wherein determining that the plurality of video streams relate to a common event comprises:
receiving from each of the plurality of mobile video capture devices, an indication of the mobile video capture device's current location; and
determining, based on the current location of each mobile video capture device, that each of the plurality of mobile video capture devices are within a predefined range of each other.