Speed up DFT by specifying ROI in frequency domain

asked 2018-05-21 03:26:55 -0500

masahiro.dll gravatar image

updated 2019-08-15 00:30:48 -0500

Note: This question is also asked at Stack Overflow a couple of days later since this post.

I'm building an application which extensively use dft, discrete Fourier transform. I'm trying to speed up so as to run in real-time.

In that application I only use a part of dft output specified by a rectangular ROI. My current implementation follows the steps below:

  1. Compute dft of the input image f (typically size of 512x512) and get the entire dft result F
  2. Crop F into a pre-specified ROI (typically size of 32x32, located arbitrary), R

This process basically works well, but involves useless calculation since I only need partial information of F. I'm looking for a way to accelerate this calculation only by computing necessary part of dft.

I found OpenCV with Intel IPP computes dft with Intel IPP functions, which results in an order of magnitude faster than naive OpenCV implementation. I'm wondering if I can even accelerate this computation by only computing necessary frequency domain of dft.

Since I'm new to OpenCV, I've lost my way here, so I hope you could provide a way to do this.

Kindly note that I don't mean to do a dft to an ROI of an image, i.e. dft(ROI(f)), but I want to compute ROI(dft(f)).

Thanks in advance.

EDIT: I've got a nice answer on Stack Overflow. Refer to the URL as pointed in the main text.

edit retag flag offensive close merge delete