BM3D and BM4D algorithms have been notoriously hard to understand. This implementation has been developed primarily for getting into the details of the algorithms and tries to keep everything simple.
Almost all code is contained in one file: main.cpp.
At the current stage this implementation requires OpenCV for DCT transforms.
This implementation also contains 2D and 3D Haar Wavelets.
make