BM3D Denoising Filter as Compositing node
Needs ReviewPublic

Authored by Milan Jaros (jar091) on Apr 24 2017, 1:00 PM.

Details

Summary

This patch contains the parallel implementation of Sparse 3D Transform-Domain Collaborative filter (BM3D). The parallization is based on OpenMP and OpenMP SIMD. This implementation is more efficient than Dabov or Lebrun implementation (2560x1440 - used memory: Lebrun - 13.5GB, Ours - 330 MB, 7680x4320: Lebrun - 101GB, Ours - 2.1GB).

The unofficial build and the descritpion can be found here: http://blender.it4i.cz/research/bm3d-denoising-filter-as-compositing-node/

Diff Detail

Repository
rB Blender
Milan Jaros (jar091) edited the summary of this revision. (Show Details)Apr 24 2017, 1:45 PM
Milan Jaros (jar091) edited the summary of this revision. (Show Details)Apr 24 2017, 1:48 PM

Did not test the patch yet, but following things are stricking immediately:

  • We can not use pargma omp simd since it only exists in icc. Instead we can optimize some mathutils using SSE2 intrinsics since SSE2 CPUs are requirement for quite some time now.
  • We should not re-implement mathematical utils for each node. Either use existing BLI math or extend that one. But do not re-implement it in the node.
  • Threading model seems weird and conflicting with other threading happening in compositor, If you can multithread outer loop with OpenMP it should be simple enough to use proper compositor wide threading model.
Milan Jaros (jar091) edited the summary of this revision. (Show Details)Jul 6 2017, 3:47 PM