Denoising by collaborative total-variation
Following my email on the mailing-list : https://firstname.lastname@example.org/msg02826.html
Total-variation denoising aims at minimizing the total energy of a picture, hence the sum of the RGB gradients over every pixel. This assumes piece-wise smoothness in the picture, which is a true assumption in blurry/bokeh areas. In a way, it behaves similarly to the bilateral filter.
This version, however, takes advantage of the RGB info by using a collaborative norm, acting like handcuffs between RGB channels and achieving better chroma noise removal.
- Web presentation : https://joandurangrimalt.wordpress.com/research/novel-tv-based-regularization/
- Web demo : http://demo.ipol.im/demo/141/
- Paper : http://www.ipol.im/pub/art/2016/141/
- GNU/GPL C++ lib : http://www.ipol.im/pub/art/2016/141/DMSC_TVdenoising.tgz
The gradient can be computed in very efficient way by using separable filters to approximate it, similarly to the Sobel operator :
- Paper : https://cdn.intechopen.com/pdfs-wm/39346.pdf
- My Cython example of implementation : https://github.com/aurelienpierre/Image-Cases-Studies/blob/f8688e2891f186833652432b532d8ccd6ec8762a/lib/deconvolution.pyx#L362