I’m exploring 3D interactive volume convolution with some simple stencils using dask right now. Let me explain what I mean:
- Assume that you have a 3D data which you would like to process through Sobel Transform (for example to get L1 or L2 gradient).
- Then you divide your input 3D image into subvolumes (with some overlapping boundaries – for 3x3x3 stencil Sobel it will demand +2 samples overlap/padding)
- Now let’s assume that you create a delayed computation of the Sobel 3D transform on entire 3D volume – but not executing it yet.
And now the most important part:
- I want to write a function which will extract some particular 2D section from the virtually transformed data.
- And then finally let dask everything to compute:
- But what I need dask to do is not to compute the entire transform for me and then provide a section.
- I need it to execute only those tasks which are needed to compute that particular 2D transformed image slice.
- But what I need dask to do is not to compute the entire transform for me and then provide a section.
Do you think – it’s possible?
In order to explain it with image – please consider this to be a 3D domain decomposition (this is from DWT – but good for illustration from here):
illistration of domain decomposition
And assume that there is a function which computes 3D transform of the entire volume using dask. But what I would like to get – for example – is 2D image of the transformed 3D data which consists from LLL1,LLH1,HLH1,HLL1 planes (essentially a single slice).
The important part is not to compute the whole subcubes – but let dask somehow automatically track the dependencies in the compute graph and evaluate only those.
Please don’t worry about compute v.s. copy time. Assume that it has perfect ratio.
Let me know if more clarification is needed! Thanks for your help!