Automated video looping with progressive dynamism

Automated video looping with progressive dynamism
Zicheng Liao, Neel Joshi, Hugues Hoppe.
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.)