The julia implementation of WNNM denoising algorithm. This repo is only for archive and benchmark purpose.
Performance tricks:
- The block matching stride is set in both dimension, while in the original implementation [2] this
is only set in one dimension, with the other dimension stride being 1. This extra computation
brings almost no benefit speaking of the PSNR/runtime. For example, when noise level is
40
and with the same default parameters, the overall PSNR is31.30
in about 50 seconds, if we set stride in both dimension, then PSNR is31.29
in about 26 seconds. - When doing block matching, we sample the patch into a smaller one by setting indexing stride
2
.
We get at most 25x performance boost compared to the original MATLAB version[2] on 48 cores CPU, for more details and benchmark cases please check out the benchmark/
folder.
[1] Gu, S., Zhang, L., Zuo, W., & Feng, X. (2014). Weighted nuclear norm minimization with application to image denoising. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 2862-2869).
[2] The MATLAB reference implementation: http://www4.comp.polyu.edu.hk/~cslzhang/code/WNNM_code.zip