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

时间:2013-07-16 19:25:33

标签: matlab image-processing sampling convolution

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

为了便于对话,让我们将网格内核定义为可分离汉宁内核的产品:

w

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

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

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

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

我相信我理解sinc插值和网格算法的基础知识。我读过多篇论文,包括J.D. O'Sullivan和J.I.的经典着作。杰克逊,讨论不同网格内核的属性和差异。我还阅读了一些使用网格化的MRI重建论文,但大多数这些方法都采用了二维网格。

我不知道如何以离散的方式实际实现该方法,最好是在Matlab中,或者C ++,更加困惑的是如何在四维中实现这样的事情。

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

Python 4D linear interpolation on a rectangular grid

Python 4D linear interpolation on a rectangular grid

感谢您提供任何建议,见解或建议!

1 个答案:

答案 0 :(得分: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);

要将值与内核进行卷积吗?