Пример #1
0
def fft2d(f):
    (Nr, Nc) = f.shape
    F = np.zeros((Nr, Nc), dtype=complex)
    for m in range(Nr):
        F[m,:] = mm.fft(f[m,:])
    for n in range(Nc):
        F[:,n] = mm.fft(F[:,n])
    return(F)
Пример #2
0
import math
import cmath
import numpy as np
import imageio
import MyModule as mm
import time

x=[1,2,3,4]
x1=mm.complex_idft(mm.complex_dft(x))
x2=mm.complex_idft(mm.fft(x))
x3=mm.ifft(mm.complex_dft(x))
x4=mm.ifft(mm.fft(x))

y=[5,6,7,8]
output1=mm.conv(x,y)
output2=mm.ifft(mm.fft(x)*mm.fft(y))


img=imageio.imread('lena.png')#[256-128:256+128,256-128:256+128]

t1=time.time()
imageio.imwrite('lenareconstructed.png',mm.ifft2d(mm.fft2d(img)))

t2=time.time()
print('img ifft takes %10.2f sec' %( t2-t1))

Пример #3
0
fc=0.08
Nc=int(fc*N)
for n in range(Nc):
    LP[n]=1.0
    LP[(N-n+N) % N]=1.0
    
plt.plot(np.abs(LP))
lp=mm.ifft(LP)
lpr=np.zeros((N),dtype=complex)
lpr[:N//2],lpr[N//2:]=lp[N//2:],lp[:N//2]
plt.plot(lpr.real)
#plt.plot(lp.real)

lp_trimed = np.zeros((N),dtype=complex)          
lp_trimed[N//2-M//2:N//2+M//2]=lpr[N//2-M//2:N//2+M//2]
LP_trimed=mm.fft(lp_trimed)

plt.plot(np.abs(LP_trimed))
plt.plot(lp_trimed.real)

'''lp-windowed  0.54-0.46cos(2pi*n/M)'''
window=np.zeros((N),dtype=complex)
for n in range(M):
    window[N//2-M//2+n]=0.54-0.46*math.cos(2*math.pi*n/M)
lp_windowed=lpr*window
LP_windowed=mm.fft(lp_windowed)

plt.plot(lp_windowed.real)
plt.plot(np.abs(LP_windowed))

'''hp-windowed'''