【问题标题】:Gridding non-uniformly sampled data to a uniformly spaced Cartesian grid via convolution通过卷积将非均匀采样数据网格化到均匀间隔的笛卡尔网格
【发布时间】:2013-07-15 03:38:09
【问题描述】:

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

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

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 重建论文,但这些方法中的大多数都假设为 2-D 网格。

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

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

Python 4D linear interpolation on a rectangular grid

Python 4D linear interpolation on a rectangular grid

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

【问题讨论】:

  • @horchler:你还在寻找这个问题的答案吗?
  • @KDN:这不是我的问题。我只是编辑它以清理格式和排版。无论事实发生多久,始终欢迎您在 StackOverflow 上发布新答案。 OP 是否会看到它并认为它有用是另一回事,但未来几年其他人可能会。

标签: matlab image-processing sampling convolution


【解决方案1】:

可以使用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);

要将值与内核卷积?

【讨论】:

  • 谢谢 Hugh,这是个好主意,给了我一些追求。我已经考虑了您评论的顶部,但没有考虑添加 convn。我将花一些时间考虑和实施这一点,并将我的发现写回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 2021-10-31
  • 2022-11-02
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多