我需要在Python中对地图进行傅立叶变换。快速傅立叶变换需要周期性的边界条件,但输入映射不是周期性的。因此,我需要应用一个输入过滤器/权重,在边缘将贴图慢慢向零逐渐变细。在python中有这样做的库吗?
发布于 2018-06-21 09:19:26
这样的缩减通常被称为"window“。
Scipy有很多window functions。
可以使用numpy.expand_dims创建所需的二维窗口。
关于Stefan的评论,显然numpy团队认为包括更多的than arrays was a mistake。我会坚持使用scipy进行信号处理。当心,因为他们在1.0版本中移动了相当多的函数,所以旧的文档是相当旧的。
最后要注意的是:“滤波器”通常用于在频域中应用的乘法,而不是空间域中的。
发布于 2019-12-27 16:40:07
我最喜欢的使地图变迹的函数是广义高斯(也称为'Super-Gaussian‘,它是一个高斯函数,它的指数是P的幂。通过将P设置为,比方说,4或6,你会得到一个平顶的脉冲,它会平滑地下降,这对于快速傅立叶变换的应用是很好的,因为尖锐的边缘总是在共轭空间中产生波纹。
广义高斯在Scipy上可用。以下是使用广义高斯变迹2D数组的最小代码(Python3)。正如在前面的评论中所指出的,有几十个函数可以很好地工作。
import numpy as np
from scipy.signal import general_gaussian
# A 128x128 array
array = np.random.rand(128,128)
# Define a general Gaussian in 2D as outer product of the function with itself
window = np.outer(general_gaussian(128,6,50),general_gaussian(128,6,50))
# Multiply
ap_array = window*arrayhttps://stackoverflow.com/questions/46211487
复制相似问题