Hello,
I want to perform a wavelet level filtering in a private project using. The GSL
and the functions gsl_wavelet2d_transform_forward + backward and
gsl_wavelet2d_transform_matrix.
I previously used the Python wavelet library but I want to switch to C/C++
code. In my old code I used wavedec2 + waverec2 with 8 levels. Afterwards I
looped over the coefficients of the 8 levels and set all except the levels I
wanted to filter to zero. So here are my questions:
How can I filter the levels of the returning data from
gsl_wavelet2d_transform_forward?
I tried to adapt the 1D example, but it seems not to work.
// looping over all of my data returned by the
gsl_wavelet2d_transform_forward(wavelet, data, tda, rows, cols, workspace)
for(int i = 0; i < rows * cols; ++i) {
coefficients[i] = fabs(data[i]);
}
gsl_sort_index(p, coefficients, 1, rows * cols);
for(int i = 0; i < rows * cols; ++i) {
// condition to only keep the values of level 8
data[p[i]] = 0;
}
How do I have to interpret the tda parameter? The documentation says it is the
physical row length, so this is equal to my image height?
Best regards
Marco