i am currently implementing the 'Undecimated Wavelet Transform' with the 'a trous' algorithm. See e.g. http://www.znu.ac.ir/data/members/fazli_saeid/DIP/Paper/ISSUE2/04060954_2.pdf, section II-A.
As far as I understand, the implementation (in 1D) for the 'decomposition' and 'reconstruction' phase is very simple, it boils down to the convolution with a low-pass and high-pass filter (where for levels > 0, one has to add zeros between the coefficients of the filters).
E.g. for the decomposition filter of the 'Bior1.3' wavelet, i have the following filters for level 0, 1, 2 of size 6, 11 (6+5) and 16 (6 + 10):
level 0: [c1 c2 c3 c4 c5 c6]
level 1: [c1 0 c2 0 c3 0 c4 0 c5 0 c6]
level 2: [c1 0 0 c2 0 0 c3 0 0 c4 0 0 c5 0 0 c6]
I hope I inserted the zeros on the right places, if not please correct me. The actual values of the coefficients c1, c2, c3, c4, c5, c6 can be found at http://wavelets.pybytes.com/wavelet/bior1.3/.
My questions is now, what is the 'anchor' of this filter kernels, how can the anchor be calculated in a general way (for decomposition/reconstruction filters of different wavelet classes) ? I suppose its something like 'anchor_index = round_down(kernel_size / 2)', when anchor_index is 0-indexed, but i'm not sure.
Note that for implementing a convolution with a certain kernel, one has to know always the 'anchor' of the kernel (the index of the coefficient in the filter which is multiplied with the 'current' array element).
See the 1D code (and 2D image code is available also) at
http://www.sparsesignalrecipes.info
Chapter 3, in IDL star1d.pro, star2d.pro - using B3 spline à trous wavelet transform.