Strange phase for gaussian beam 2D(二维高斯光束的奇异位相)
本文介绍了二维高斯光束的奇异位相的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有2D高斯光束:
做fft2和角度后得到奇怪的结果:
def finite2D(x,y, N, M, a, hx):
f = np.array([[0.0]*N]*N)
for i in range(len(x)):
for k in range(len(y)):
f[i][k] = np.exp(-(x[i]*x[i] + y[k]*y[k]))
D1 = fftpack.fft2(f)
D2 = fftpack.fftshift(D1)
b = N*N/(4*a*M)
x = np.linspace(-b, b, N)
y = np.linspace(-b, b, N)
xx, yy = np.meshgrid(x, y)
plt.imshow(np.abs(D2))
plt.show()
plt.imshow(np.angle(D2))
plt.show(True)
return D2, phas
a = 5
N = 128
M = 256
b = N*N/(4*a*M)
hx = 2*a/N
x = np.linspace(-a, a, N)
y = np.linspace(-a, a, N)
finite2D(x,y, N, M, a, hx)
它应该是阶段0或接近0。为什么不是这样,我如何解决这个问题?
/更新:
def finite2D(x,y, N, M, a, hx):
f = np.array([[0.0]*N]*N)
for i in range(len(x)):
for k in range(len(y)):
f[i][k] = np.exp(-(x[i]*x[i] + y[k]*y[k]))
f = fftpack.ifftshift(f)
D1 = fftpack.fft2(f)
D2 = fftpack.fftshift(D1)
b = N*N/(4*a*M)
x = np.linspace(-b, b, N)
y = np.linspace(-b, b, N)
xx, yy = np.meshgrid(x, y)
plt.imshow(np.abs(D2))
plt.show()
plt.imshow(np.angle(D2))
plt.show(True)
return D2
a = 5
N = 128
M = 256
b = N*N/(4*a*M)
hx = 2*a/N
x = np.linspace(-a, a, N, endpoint=False)
y = np.linspace(-a, a, N, endpoint=False)
finite2D(x,y, N, M, a, hx)
阶段:
推荐答案
FFT假定原点在图像的左上角。因此,您要计算的是将图像大小平移一半的高斯型图像的FFT。这种移位会导致频域中的高频相移。
要解决这个问题,您需要将高斯信号的原点移到图像的左上角。ifftshift执行此操作:
f = fftpack.ifftshift(f)
D1 = fftpack.fft2(f)
D2 = fftpack.fftshift(D1)
请注意,在震级很小的情况下,相位是由舍入误差定义的,不要期望那里有零相位。
更新结果看起来不错,但中心区域仍有很小的梯度。这是由高斯的半像素偏移引起的。此移位由x和y坐标的定义给出:
N = 128
x = np.linspace(-a, a, N)
y = np.linspace(-a, a, N)
对于偶数大小的N,请
x = np.linspace(-a, a, N, endpoint=False)
y = np.linspace(-a, a, N, endpoint=False)
使得有一个样本x==0。
这篇关于二维高斯光束的奇异位相的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:二维高斯光束的奇异位相
基础教程推荐
猜你喜欢
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
