-
Notifications
You must be signed in to change notification settings - Fork 749
Description
The current filtering scheme often induces a spatial delay in each dimension. This implies the filter kernel is not a "zero-phase" filter. In theory, all of the example impulse responses currently in the codebase (top-hat, conic, and Gaussian) should be zero-phase, indicating our setup is wrong.
One way to get around this is to implement a "filt-filt" (essentially filter in both directions, and remove the phase delay). This is what is implemented in #1625. This, of course, is not what we want, as this changes the underlying kernel of the final filter operation, rendering all of our minimum length-scale constraint math invalid. It should be possible to properly implement a single-pass filter with the above kernels.
Since all of our kernels are separable, we can actually do a batched convolution (natively supported by autograd) so long as we construct our filter kernels properly and apply the right padding (to preserve the correct shape).
Right now we do an fft-based filter. We may not need to with a batched convolution (depending on the size of the kernel, an fft convolution may be slower).
(cc @hammy4815)