  VBM3D is an extension to video of the well known image denoising algorithm
BM3D, which takes advantage of the sparse representation of stacks of similar
patches in a transform domain. The extension is rather straightforward: the
similar 2D patches are taken from a spatio-temporal neighborhood which includes
neighboring frames. In spite of its simplicity, the algorithm offers a good
trade-off between denoising performance and computational complexity. In this
work we revisit this method, providing an open-source C++ implementation
reproducing the results. A detailed description is given and the choice of
parameters is thoroughly discussed. Furthermore, we discuss several extensions
of the original algorithm: (1) a multi-scale implementation, (2) the use of 3D
patches, (3) the use of optical flow to guide the patch search. These
extensions allow to obtain results which are competitive with even the most
recent state of the art.
