FFT based convolution

Lehmann, Gaetan1*
1.INRA
Abstract

Abstract

The Fourier transform of the convolution of two images is equal to the product of their Fourier transform. With this definition, it is possible to create a convolution filter based on the Fast Fourier Transform (FFT). The interesting complexity characteristics of this transform gives a very efficient convolution filter for large kernel images. This paper provides such a filter, as well as a detailed description of the implementation choices and a performance comparison with the "simple" itk::ConvolutionImageFilter.

Keywords

FFTKernelConvolution
Manuscript
Source Code and Data

Source Code and Data

fftconvCMakeLists.txt6.4 KBWrappingCMakeLists.txt513 Bwrap_itkClipImageFilter.cmake299 Bwrap_itkFFTConvolutionImageFilter.cmake100 Bwrap_itkFFTConvolutionImageFilterBase.cmake104 Bwrap_itkFFTPadImageFilter.cmake92 Bwrap_itkNormalizeToConstantImageFilter.cmake105 Bwrap_itkRegionFromReferenceImageFilter.cmake108 Bwrap_itkZeroFluxNeumannPadImageFilter.cmake107 BIJMacros.txt3.2 KBarticleArticle.tex24.7 KBInsightArticle.cls3.9 KBInsightJournal.bib155.8 KBInsightJournal.sty35.2 KBMakefile2 KBalgorithm.sty2.2 KBalgorithmic.sty5.4 KBamssymb.sty14.9 KBfloatflt.sty10.8 KBfancyhdr.sty14.4 KBfncychap.sty10.1 KBpseudocode.sty7.7 KBtimes.sty857 Bconv.cxx1.5 KBfftconv.cxx2.9 KBfftw3_test.cxx1.8 KBimagesconv.dot1.2 KBcthead1.tif68.1 KBfftconv.png18.8 KBdot.png172 Bfftw3-time-dim.pdf121.7 KBfftw3-ops-gpf.pdf125.2 KBimage-pad-convolved.png22.2 KBinheritance.dot1.1 KBkernel-pad-flip-shift.png449 Bkernel-pad-flip.png461 Bkernel.png157 Bnorm.png160 Bpad-image-13.png28.9 KBpad-image-0.png28.9 KBpad-image-2.png30.3 KBpad-image-mirror.png111.7 KBpad-image-wrap.png59.6 KBpad-image-zero-flux.png30.8 KBpad-kernel-0.png274 Bpad-kernel-13.png276 Bpad-kernel-no-padding.png266 Bpad-kernel-2.png464 Bperf2D-vnl.txt751 Bperf2D-wisdom.txt785 Bperf2D.gnuplot563 Bperf2D.txt821 Bperf_threads.gnuplot348 Bperf_threads.txt242 Bref.png24.2 KBitkClipImageFilter.h3.6 KBitkFFTComplexConjugateToRealImageFilter.h3.6 KBitkFFTComplexConjugateToRealImageFilter.txx5.4 KBitkFFTConvolutionImageFilter.h5 KBitkFFTConvolutionImageFilter.txx1.8 KBitkFFTConvolutionImageFilterBase.h8.6 KBitkFFTPadImageFilter.h7.2 KBitkFFTConvolutionImageFilterBase.txx17.7 KBitkFFTPadImageFilter.txx8.6 KBitkFFTRealToComplexConjugateImageFilter.h3.1 KBitkFFTRealToComplexConjugateImageFilter.txx5.3 KBitkFFTWCommon.h20.9 KBitkFFTWComplexConjugateToRealImageFilter.h3.2 KBitkFFTWComplexConjugateToRealImageFilter.txx6.3 KBitkFFTWLock.cxx5.7 KBitkFFTWLock.h2.1 KBitkFFTWRealToComplexConjugateImageFilter.h2.9 KBitkFFTWRealToComplexConjugateImageFilter.txx5.3 KBitkNormalizeToConstantImageFilter.h4.2 KBitkNormalizeToConstantImageFilter.txx3.1 KBitkRegionFromReferenceImageFilter.h4.5 KBitkRegionFromReferenceImageFilter.txx2.2 KBitkZeroFluxNeumannPadImageFilter.h5.7 KBitkTestingMacros.h2 KBitkZeroFluxNeumannPadImageFilter.txx8 KBnorm.cxx1.2 KBpad.cxx2.9 KBpad1.cxx2 KBperf2D.cxx2.6 KBperf3D.cxx3.2 KBperf_threads.cxx2.7 KBref.cxx1.9 KB

Select a file to preview