0

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

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

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)我应该如何对每个网格内核进行采样?例如,在计算我的离散卷积值时,我应该使用 non-uniform xpypzp和值吗?wp或者我应该使用均匀间隔的值 , x, y,zw? 或者这些想法都不正确?

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

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

我相信我了解 sinc 插值和网格算法的基础知识。我阅读了多篇论文,包括 JD O'Sullivan 和 JI Jackson 的这些经典著作,讨论了不同网格内核的属性和差异。我还阅读了一些使用网格的 MRI 重建论文,但这些方法中的大多数都假设为 2-D 网格。

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

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

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

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

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

4

1 回答 1

0

可以使用 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它们的使用将为您提供如何构建d.

编辑:哦,对不起,对不起,我看到你发表这篇文章后不想使用插值的评论。

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

volume=convn(volume,general_kernel);

将这些值与您的内核进行卷积?

于 2013-07-16T20:23:02.570 回答