【发布时间】: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