Here is direct and inverse Haar Wavelet transform (used for filtering): #include "opencv2/opencv.hpp" #include <iostream> #include <vector> #include <stdio.h> using namespace cv; using namespace std; // Filter type #define NONE 0 // no filter #define HARD 1 // hard shrinkage #define SOFT 2 // soft shrinkage #define GARROT 3 // garrot filter //-------------------------------- // signum //----------