There are a few options for downsampling 3D images with anti-aliasing:
- One can first apply a low-pass filter (e.g Gaussian blur) and then apply downsampling. Both functions are separable, so for a 3D image this is six 1D passes. The disadvantage is a Gaussian blur has pretty long tails, so it is a wide kernel. You also want to consider the appropriate precision for the data between these two stages, which might have heavy memory demands for large images. The advantage is that you can bolt together two existing stages.
- Adjust the kernel width of the downsampling kernel. This is described by Schumacher’s General Filtered Image Rescaling, with code here. Since the filter is separable, one completes three 1D passes. This is what MRIcroGL uses.
- FFT can be even more efficient, but requires a bit of work to apply to non-power-of-two images.