通过卷积将非均匀采样的数据网格化为均匀间隔的笛卡尔网格



我正在尝试将非均匀数据重新网格化到4-D空间中定义的均匀网格上。数据测量由函数d = f(xp,yp,zp,wp)给出,其中xpypzpwp是4-D坐标。我想将非均匀间隔的xpypzpwp重新栅格到xyzw的均匀间隔栅格上。

为了便于讨论,让我们将网格内核定义为可分离Hanning内核的乘积:

1/a(1+cos(2*pi*x/a))
1/b(1+cos(2*pi*y/b))
1/c(1+cos(2*pi*z/c))
1/d(1+cos(2*pi*w/d))

然后,我相信要重新网格化,我需要做的是执行4-D卷积并在均匀网格上重新采样。然而,我不确定如何使用离散数据来实现这一点。我的问题如下:

1) 我应该如何对每个网格内核进行采样?例如,在计算离散卷积值时,我应该使用非均匀的xpypzpwp值吗?还是应该使用均匀间隔的值xyzw?或者这两种观点都不正确?

2) 那么我该如何实现4-D卷积呢?我想我可能需要使用四个for循环,但不确定如何组织我的数据,即4-D数据结构或简单的4列矩阵?

我对最快的方法不感兴趣,但更感兴趣的是找到最直观或直接的方法。

我相信我了解sinc插值和网格算法的基本知识。我读过多篇论文,包括J.D.O'Sullivan和J.I.Jackson的经典著作,讨论了不同网格核的性质和差异。我也读过一些MRI重建的论文,这些论文使用了网格,但大多数方法都假设是二维网格。

我不知道如何以离散的方式实际实现该方法,最好是在Matlab或C++中,甚至更困惑于如何在四维中实现这样的东西。

我研究了几个线程,我的问题与这些线程有点相似,但我想使用通用内核的卷积,而不是线性插值,这两个线程都没有真正建议如何组织4-D数据或执行卷积:

矩形网格上的Python 4D线性插值

矩形网格上的Python 4D线性插值

感谢您的任何建议、见解或建议!

你能使用interpn函数吗?

[X Y Z W]=ndgrid(x,y,z,w); % unequally spaced
[XR YR ZR WR]=ndgrid(x_regular,y_regular,z_regular,w_regular); % equally spaced
volume=interpn(X,Y,Z,W,d,XR,YR,ZR,WR);

interpnndgrid的文档提供了更多详细信息;它们的使用将为您提供一个如何构建CCD_ 25的框架。

编辑:哦,对不起,对不起,我看到你的评论后,不想使用插值。

好吧,你可以使用上面的插值将你的值线性地定位到网格上,然后使用

volume=convn(volume,general_kernel);

将值与内核进行卷积?

最新更新