19

给你一些关于我在做什么的背景:我试图通过图像分析定量记录可压缩流体的流动变化。做到这一点的一种方法是利用流体的折射率与其密度直接相关的事实。如果您在流动后面设置某种图像,则由于整个流体场的折射率变化导致的图像失真会导致您产生密度梯度,这有助于表征流动模式。

我有一组例程可以使用常规的 2D 点图案成功地做到这一点。点阵图略有扭曲,通过对比点在扭曲图像和未扭曲图像中的位置,我得到了一个位移场,这正是我所需要的。这种方法的问题是分辨率。分辨率仅限于字段中的点数,我正在探索能够提供更多数据的方法。

我的一个想法是使用水平和垂直线的规则网格。该图像将以相同的方式扭曲,但不是仅获得点的位移,而是网格的连续扭曲。似乎必须有一些标准的算法或程序来将一个几何网格与另一个几何网格进行比较并推断出某种位移场。尽管如此,我在研究中还没有发现类似的东西。

有没有人有一些想法可以为我指明正确的方向?仅供参考,我不是计算机科学家——我是工程师。我这么说只是因为我可能因为来自不同的领域而忽略了一些明显的方法。但我会编程。我正在使用 MATLAB,但我可以阅读 Python、C/C++ 等。

以下是我正在使用的图像类型的示例:

     Regular:                               Distorted: 

在此处输入图像描述--------在此处输入图像描述

4

2 回答 2

19

我认为您正在寻找数字图像相关算法。

在这里你可以看到一个演示。

这是一个 Matlab 实现。

来自维基百科:

数字图像相关和跟踪 (DIC/DDIT) 是一种光学方法,它采用跟踪和图像配准技术对图像变化进行准确的 2D 和 3D 测量。这通常用于测量变形(工程)、位移和应变,但它广泛应用于科学和工程的许多领域。

编辑

在这里,我使用 将 DIC 算法应用于您的失真图像Mathematica,显示相对位移。

在此处输入图像描述

编辑

您还可以轻松识别最大位移区域:

在此处输入图像描述

编辑

经过一些工作(坦率地说,相当多),你可以得出这样的结果,代表“位移场”,清楚地表明你正在处理一个漩涡:

在此处输入图像描述

(更暗和更大的箭头意味着更多的位移(速度))

如果您对这个 Mathematica 代码感兴趣,请给我留言。我认为我的代码不会帮助其他任何人,所以我省略了发布它。

于 2011-02-07T03:57:44.260 回答
1

我还建议线跟踪算法会很好地工作。

只需从图像的第一条像素线开始,然后开始沿着每条垂直线向下(您只需从第一条线开始即可获得起点。这可以通过与渐变正交移动的简单图案来完成这条线, ergo 沿着一条线. 当您到达一条水平线的交叉点时, 您可以测量该点 (在 x,y 坐标中) 并将其与失真图像中的相应交叉点进行比较.

由于您的网格是规则的,您知道第 m 个垂直黑线上的第 n 个测量的交叉点在两个图像中都是对应的。然后,您只需通过计算它们的距离来比较两个点。对网格上的每条线执行此操作,您将得到网格的每个交叉点扭曲的程度。

这种沿线算法也用于基本的边缘链接算法或 Canny 边缘检测器。

(所有这些都只是理论上的想法,我无法为您提供算法。但我想它应该可以轻松处理像您那里那样的扭曲图像......但也许它对您有帮助)

于 2011-02-07T18:51:29.980 回答