Reduced latency video stabilization
First Claim
1. A computer-implemented method of digital video stabilization, the method comprising:
- for at least one frame of a plurality of frames of a video segment, determining at least one global motion transform representing jittery video motion;
applying temporal smoothing to the at least one global motion transform to produce at least one smoothed global motion transform, the applying temporal smoothing utilizing a filter comprising a number of future taps and a number of past taps, the number of future taps and the number of past taps each being greater than zero, and the number of future taps being less than the number of past taps; and
processing the at least one of the frames of the video segment based on the at least one smoothed global motion transform to compensate for jittery video motion;
after the processing based on the at least one smoothed global motion transform, outputting the processed at least one of the frames of the video segment for display or subsequent processing.
2 Assignments
0 Petitions
Accused Products
Abstract
Reduced latency video stabilization methods and tools generate truncated filters for use in the temporal smoothing of global motion transforms representing jittery motion in captured video. The truncated filters comprise future and past tap counts that can be different from each other and are typically less than those of a baseline filter providing a baseline of video stabilization quality. The truncated filter future tap count can be determined experimentally by comparing a smoothed global motion transform set generated by applying a baseline filter to a video segment to those generated by multiple test filter with varying future tap counts, then settings the truncated filter future tap count based on an inflection point on an error-future tap count curve. A similar approach can be used to determine the truncated filter past tap count.
74 Citations
27 Claims
-
1. A computer-implemented method of digital video stabilization, the method comprising:
-
for at least one frame of a plurality of frames of a video segment, determining at least one global motion transform representing jittery video motion; applying temporal smoothing to the at least one global motion transform to produce at least one smoothed global motion transform, the applying temporal smoothing utilizing a filter comprising a number of future taps and a number of past taps, the number of future taps and the number of past taps each being greater than zero, and the number of future taps being less than the number of past taps; and processing the at least one of the frames of the video segment based on the at least one smoothed global motion transform to compensate for jittery video motion; after the processing based on the at least one smoothed global motion transform, outputting the processed at least one of the frames of the video segment for display or subsequent processing. - View Dependent Claims (2, 3, 4, 5, 6, 18, 19)
-
-
7. A computer-implemented method of determining a truncated filter future tap count for use in temporally smoothing global motion transforms representing jittery motion in a video segment, the method comprising:
-
determining global motion transforms for a plurality of frames in the video segment; filtering the global motion transforms with a baseline filter comprising n future taps to generate a set of baseline smoothed global motion transforms; filtering the global motion transforms with a plurality of test filters to generate a plurality of test smoothed global motion transform sets, each of the plurality of test filters having any of 0 through m future taps, wherein 0<
m<
n; anddetermining a truncated filter future tap count based at least in part on the set of baseline smoothed global motion transforms and the plurality of test smoothed global motion transform sets, wherein the truncated filter future tap count is greater than zero, wherein the determining the truncated filter future tap count includes; determining errors between the set of baseline smoothed global motion transforms and each of the plurality of test smoothed global motions transforms sets; determining an inflection point along an error-future tap count curve based on the errors and the number of future taps in the plurality of test filters; and selecting as the truncated filter future tap count, a number of future taps near the future tap count coordinate of the inflection point. - View Dependent Claims (8, 9)
-
-
10. Nonvolatile computer-readable storage media having encoded thereon computer-executable instructions for causing a computer system programmed thereby to perform digital video stabilization, the digital video stabilization comprising:
-
for at least one frame of a plurality of frames of a video segment, determining at least one global motion transform representing jittery video motion; applying temporal smoothing to the at least one global motion transform to produce at least one smoothed global motion transform, the applying temporal smoothing utilizing a filter comprising a number of future taps and a number of past taps, the number of future taps and the number of past taps each being greater than zero, and the number of future taps being less than the number of past taps; processing the at least one of the frames of the video segment based on the at least one smoothed global motion transform to compensate for jittery video motion; and after the processing based on the at least one smoothed global motion transform, outputting the processed at least one of the frames of the video segment for display or subsequent processing. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
20. A system for stabilizing digital video comprising:
-
a filter with a number of future taps and a number of past taps, the number of future taps and the number of past taps each being greater than zero, and the number of future taps being less than the number of past taps; a buffer storing at least one frame of a plurality of frames of a video segment; a device comprising; a processor; a memory; wherein the memory contains code that, when executed causes the processor to; determine at least one global motion transform representing jittery video motion of the least one frame of a plurality of frames of a video segment stored in the buffer; utilize the filter to apply temporal smoothing to the at least one global motion transform to produce at least one smoothed global motion transform; process the at least one of the frame of a plurality of frames of a video segment based on the at least one smoothed global motion transform to compensate for the jittery video motion; and output the processed at least one of the frames of the video segment for display or subsequent processing. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27)
-
Specification