Proceedings: GI 2014

Variable-sized, circular bokeh depth of field effects

Johannes Moersch, Howard Hamilton

Proceedings of Graphics Interface 2014: Montréal, Québec, Canada, 7 - 9 May 2014, 103-107

  • BibTex

    author = {Moersch, Johannes and Hamilton, Howard},
    title = {Variable-sized, circular bokeh depth of field effects},
    booktitle = {Proceedings of Graphics Interface 2014},
    series = {GI 2014},
    year = {2014},
    issn = {0713-5424},
    isbn = {978-1-4822-6003-8},
    location = {Montr{\'e}al, Qu{\'e}bec, Canada},
    pages = {103--107},
    numpages = {5},
    publisher = {Canadian Human-Computer Communications Society},
    address = {Toronto, Ontario, Canada},


We propose the Flexible Linear-time Area Gather (FLAG) blur algorithm with a variable-sized, circular bokeh for producing depth of field effects on rasterized images. The algorithm is separable (and thus linear). Bokehs can be of any convex shape including circles. The goal is to create a high quality bokeh blur effect by post processing images rendered in real-time by a 3D graphics system. Given only depth and colour information as input, the method performs three passes. The circle of confusion pass calculates the radius of the blur at each pixel and packs the input buffer for the next pass. The horizontal pass samples pixels across each row and outputs a 3D texture packed with blur information. The vertical pass performs a vertical gather on this 3D texture to produce the final blurred image. The time complexity of the algorithm is linear with respect to the maximum radius of the circle of confusion, which compares favorably with the naive algorithm, which is quadratic. The space complexity is linear with respect to the maximum radius of the circle of confusion. The results of our experiments show that the algorithm generates high quality blurred images with variable-sized circular bokehs. The implemented version of the proposed algorithm is consistently faster in practice than the implemented naive algorithm. Although some previous algorithms have provided linear performance scaling and variable sized bokehs, the proposed algorithm provides these while also permitting more flexibility in the allowed blur shapes, including any convex shape.