【问题标题】:Image warping by a displacement field sampled on a regular grid由在规则网格上采样的位移场引起的图像变形
【发布时间】:2019-08-06 23:17:18
【问题描述】:

假设我有一个图像 I(x,y) 和一个矢量场 w(x,y),都在同一个规则网格上采样。我的目标是根据矢量场扭曲图像并创建输出图像 J(u,v)。这是通过将 I 中的点 (x,y) 映射到 J 中的点 (u,v) 来完成的.问题是我不知道实现这一点的最简单方法是什么。我在网上看到,这类问题基本上有两种主要的方法。

正向映射:只需将位移向量添加到图像I的每个坐标(x,y)。这里的问题是,这样我会在 J 中的非规则网格上得到非整数坐标点 (u',v'),因为 w(x,y) 不一定是整数值,并且因像素而异。我的问题是:如何将此图像插入整数坐标?例如,如果我想计算 J(12,25) 的像素值,如果样本为不在常规网格上?

后向映射:找出I中哪些非整数坐标(x',y')对应整数坐标(u,v) 在 J 中通过将变换的逆应用于坐标 (u,v)。 I 中与非整数坐标 (x',y') 对应的值可以很容易地插值。我的问题是:我可以以某种方式将此应用于我的问题吗?我可以以某种方式反转我的位移场吗?我如何找到将整数值从 J 映射到 I 中的非整数值的位移场的倒数?

为了澄清,我不是在寻找解决这个问题的现有实现(我知道在 Matlab 和 OpenCV 中有可以做到这一点的函数)。我只想了解其背后的理论并开始自己进行实验。

【问题讨论】:

  • 你解决了吗,大卫?
  • 并非如此。我仍然不知道它是如何完成的。我找到了一些信息,例如在 SimpleITK 中有一个名为 InverseDisplacementFieldImageFilter 的类。在描述中,您可以找到基于样条的技术。但是,我不知道 SimpleITK 中的 DisplacementFieldTransform 或 WarpImageFilter 等类在使用置换场扭曲图像时是否使用此方法。
  • 如果您仍在为此寻找解决方案和 cmets,我最近不得不解决同样的问题,并在那里提交了我对类似问题的解决方案:stackoverflow.com/a/65566295/1560876

标签: image image-processing computer-vision transform interpolation


【解决方案1】:

您可能正在寻找的是bilinear interpolation

【讨论】:

  • 感谢您的回答。双线性插值的问题是我应该如何找到可用于插值的点。例如:使用前向映射我想计算 J(12,25)。也许我需要从 J(11.5,24.10),J(15.6,21),J(10.6,25.1),J(12.9,26) 进行插值,因为在这个(组成的)示例中,这些将是 J 中最近的邻居。如何从坐标列表中找出这些是最近的点?有没有一种快速的方法来做到这一点(也许排序+搜索)?是否有更好的方法来解决整个问题或者这是正确的方法?
猜你喜欢
  • 2021-11-17
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 2021-12-13
  • 2011-10-04
相关资源
最近更新 更多