Removing padding after fft

asked 2020-03-05 19:20:23 -0500

Eyal321 gravatar image

updated 2020-03-05 20:17:42 -0500

Hello, in the example in OpenCV Discrete Fourier Transform, here It is mentioned that after optimizing the array (padding with zeros) to remove the padded zeros you can just do the following:

magI_rows, magI_cols = magI.shape
# crop the spectrum, if it has an odd number of rows or columns
magI = magI[0:(magI_rows & -2), 0:(magI_cols & -2)]
cx = int(magI_rows/2)
cy = int(magI_cols/2)
q0 = magI[0:cx, 0:cy]         # Top-Left - Create a ROI per quadrant
q1 = magI[cx:cx+cx, 0:cy]     # Top-Right
q2 = magI[0:cx, cy:cy+cy]     # Bottom-Left
q3 = magI[cx:cx+cx, cy:cy+cy] # Bottom-Right
tmp = np.copy(q0)               # swap quadrants (Top-Left with Bottom-Right)
magI[0:cx, 0:cy] = q3
magI[cx:cx + cx, cy:cy + cy] = tmp
tmp = np.copy(q1)               # swap quadrant (Top-Right with Bottom-Left)
magI[cx:cx + cx, 0:cy] = q2
magI[0:cx, cy:cy + cy] = tmp

But this just changes the quadrants. I think the correct approach is to remove the padded zeros after inverse-fft. In any case perhaps that part in the instructions needs to be clarified!? Thoughts?

edit retag flag offensive close merge delete