繁体   English   中英

在3维上扩展一维功能以进行数据窗口化

[英]Extending 1D function across 3 dimensions for data windowing

为了进行图像(体积)配准,我想对输入数据应用开窗功能,以使非周期性图像边界不会在FFT中引起条纹。 我在这里使用2D数据的示例:

http://mail.scipy.org/pipermail/numpy-discussion/2008-July/036112.html

h = scipy.signal.hamming(n)
ham2d = sqrt(outer(h,h))

这可以扩展到3D甚至ND吗?

Signal Processing的@nivag指出,每个维度都可以独立对待: https ://dsp.stackexchange.com/questions/19519/extending-1d-window-functions-to-3d-or-higher

这是我想出的代码(在scikit-image团队的帮助下):

def _nd_window(data, filter_function):
    """
    Performs an in-place windowing on N-dimensional spatial-domain data.
    This is done to mitigate boundary effects in the FFT.

    Parameters
    ----------
    data : ndarray
           Input data to be windowed, modified in place.
    filter_function : 1D window generation function
           Function should accept one argument: the window length.
           Example: scipy.signal.hamming
    """
    for axis, axis_size in enumerate(data.shape):
        # set up shape for numpy broadcasting
        filter_shape = [1, ] * data.ndim
        filter_shape[axis] = axis_size
        window = filter_function(axis_size).reshape(filter_shape)
        # scale the window intensities to maintain image intensity
        np.power(window, (1.0/data.ndim), output=window)
        data *= window

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM