Automated video looping with progressive dynamism
ACM Trans. Graphics (SIGGRAPH), 32(4), 2013.
Representation for seamlessly looping video with controllable level of dynamism.
Abstract:
Given a short video we create a representation that captures a spectrum of looping videos with varying
levels of dynamism, ranging from a static image to a highly animated loop. In such a progressively dynamic
video, scene liveliness can be adjusted interactively using a slider control. Applications include
background images and slideshows, where the desired level of activity may depend on personal taste or mood.
The representation also provides a segmentation of the scene into independently looping regions, enabling
interactive local adjustment over dynamism. For a landscape scene, this control might correspond to
selective animation and deanimation of grass motion, water ripples, and swaying trees. Converting
arbitrary video to looping content is a challenging research problem. Unlike prior work, we explore an
optimization in which each pixel automatically determines its own looping period. The resulting nested
segmentation of static and dynamic scene regions forms an extremely compact representation.
Hindsights:
The time-mapping equation (1) has a simpler form:
ϕ(
x,
t) =
sx +
((
t -
sx)
mod
px).
(One must be careful that the C/C++
remainder
operator “
%
” differs from the
modulo
operator “
mod
”
for negative numbers.)
Thanks to Mark Finch
for preparing and optimizing the code in our demo tool release.
See also our more recent work on improving loop quality and speeding up its computation.
Errata: The formula for bj
in case (4) of page 4 has a typo; it should be
bj =
Vc(x, ϕ(z,j)).
(Note that the expression for Ψ includes a second set of terms
(a'i - b'j)2 where
a'i =
Vc(z, ϕ(x,i))
and
b'j =
Vc(z, ϕ(z,j)).)
High-resolution results:
(To play these videos, first download using “right click -> Save Link As”,
then use Windows 8 Media Player on
*.wmv
files
and the
VLC player on
*.mp4
files.
Unfortunately, with both these viewers, there is a bit of stutter when the video restarts, which is why
we include two consecutive instances of the loop.)