Description of a fast and stable Motion blur algorithm

Hello everyone, this article is a summary of another article: Guertin, Jean-Philippe & McGuire, M. & Nowrouzezahrai, D.. (2014). A fast and stable feature-aware motion blur filter. High-Performance Graphics 2014, HPG 2014 – Proceedings. 51-60.

It describes the algorithm for the Motion blur effect, which was proposed by the authors of the original article.

So, the algorithm itself:

  1. The image is split into r*r tiles for maximum blur radius of image space rwhich ensures that each pixel is affected by no more than its (1-ring) surroundings of the tile.

Pixel velocity vectors. Green shows the dominant speed in the tile.

Pixel velocity vectors. Green shows the dominant speed in the tile.

  1. Each pixel has its own speed calculated:

V[x,y]={v(p_{x,y})\over 2r} * {max(min)|v(p_{x,y})|*E,r),0.5)\over |v(p_{x,y })|+ε} +0.5

Where ε = 10^{-5}A E — exposure time in seconds.

  1. Each tile is assigned one dominant neighborhood speed v_{max}

    Dominant velocity vectors in the tile. Green shows the dominant velocity vector among neighboring tiles

    Dominant velocity vectors in the tile. Green shows the dominant velocity vector among neighboring tiles

  2. Pixel (v(p)) and dominant (v_{max}) pixel speeds p are processed as follows: a number of samples are placed along the central direction, interpolating between the normalized directions v(p) and perpendicular to the dominant v_{max}^⊥ as the pixel speed decreases to the minimum user threshold:

    v_c(p)=lerp(norm(v(p)),v_{max}^⊥,(||v(p)||-0.5)/γ

    Sampling directions (green), (yellow) and (blue)

    Sampling directions v_{max} (green), v_{max}^⊥ (yellow) and v_c(p) (blue)
  3. On each tile, the angular difference between the maximum speeds of the tile and its neighbors is calculated:

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *