fbcotter / pytorch_wavelets

Pytorch implementation of 2D Discrete Wavelet (DWT) and Dual Tree Complex Wavelet Transforms (DTCWT) and a DTCWT based ScatterNet
Other
894 stars 139 forks source link

Extension to 3D Wavelet Transform? #31

Open homerjed opened 2 years ago

homerjed commented 2 years ago

Hi, Is there any future work planned toward allowing 3D DWT transforms? E.g. on an array of shape (batch, channels, height, width, depth).

I'd be very interested in working on this myself if you know of any good theoretical literature etc. Cheers!

fbcotter commented 2 years ago

Hey @homerjed I hadn't planned on extending to 3D DWTs, but in practice it wouldn't be too tricky to do! There's also a 3D DTCWT available too but that may be slightly harder to implement.

As for any literature, I haven't seen much myself but I know that MRI analysis would often use 3d wavelet transforms, e.g. [1], [2] and [3]. These are all old school Signal processing techniques though, perhaps there's some room for deeplearning on top of these too?

homerjed commented 2 years ago

Thanks for your reply and the recommendations! The main thing I am looking to do is a Haar 3D-DWT as part of a parallelised layer in Pytorch.

I think all I need is the Haar wavelets in 3D as a kind of matrix/vector form; i.e. each 'lll, llh, lhl...hhh' as I have seen it expressed before. These objects would be the registered buffers of the layer, like the parameters of a basic batchnorm layer.

Sorry if I have confused any concepts here, I can't find anything on this exact issue, but have a working 2D layer that is equivalent.

affromero commented 2 years ago

@homerjed did you continue in this direction? 3D-DWT would indeed be very useful.

homerjed commented 2 years ago

No I didn't - it's an area of mystery to me but I would be very interested in a discussion / looking into a solution! There doesn't seem to be much literature on it...

RY-97 commented 1 month ago

Hi, Is there any future work planned toward allowing 3D DWT transforms? E.g. on an array of shape (batch, channels, height, width, depth).

I'd be very interested in working on this myself if you know of any good theoretical literature etc. Cheers!

Hi, Is there any future work planned toward allowing 3D DWT transforms? E.g. on an array of shape (batch, channels, height, width, depth).

I'd be very interested in working on this myself if you know of any good theoretical literature etc. Cheers!

I was doing a similar job recently and encountered the same problem. I would like to ask for your help. I want to input a (b, c, w, h, d) 3D image data. The output after discrete wavelet transform is still consistent in shape, but does not require inverse wavelet transform. Do you have any solution?