MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# B-spline wavelet for an image

Asked by Mahsa on 9 Oct 2012

I want to construct the wavelet matrix corresponding to the (linear) B-spline wavelet decomposition of an image ( at the lowest level). In other words, I want to construct a matrix that when multiplied by a vectorized image give me the result as applying wavedec2(img, N, 'rbio2.2') where N is the lowest level possible. Unlike Haar wavelet that different levels have a binary structure and the wavelet matrix can be simply constructed using a binary type recursion (e.g., 8 -> 4 -> 2 -> 1), B-spline wavelet doesn't have this nice structure at different levels (simply because of the length of the scaling and wavelet function). I was wondering if any one has done it before or have some idea how to deal with it.

Thanks :-)

## Products

No products are associated with this question.

Answer by Matt J on 9 Oct 2012

For any linear transform operation on 1D signals of length P, you can always find the matrix form of the transform just by transforming each column of eye(P). This is easily done using a for-loop.

For separable linear transforms on a 2D image, you can find the 1D transform matrix, A, that applies to the rows and the other 1D transform that applies to the columns and compute the matrix you're looking for as

T=kron(A,B);

The linear B-spline is separable, so this method should apply.

Lastly, a more efficient alternative to taking Kronecker products explicitly is to use this

http://www.mathworks.com/matlabcentral/fileexchange/25969-efficient-object-oriented-kronecker-product-manipulation

T=KronProd({A,B});