跟踪昂贵的 2D 函数的等值线

计算科学 优化 图像处理
2021-12-22 06:23:46

我有一个与这篇文章类似的问题,有一些显着的区别:

有哪些简单的方法可以自适应地对 2D 函数进行采样?

就像在那篇文章中一样:

  • 我有一个f(x,y)并且对这个函数的评估计算起来有点昂贵

不像那个帖子:

  • 我对函数的值不是在任何地方都准确感兴趣,而只是对找到函数的单个等高线感兴趣。

  • 我可以对函数的自相关做出重要的断言,从而得出平滑度的大小。

有没有一种智能的方法来逐步/采样这个函数并找到这个轮廓?

更多信息

该函数是Haralick 特征的计算N点周围的像素,并通过某种分类器/回归器进行软分类。它的输出是一个浮点数,指示该点属于哪个纹理/材质。这个数字的缩放可以是估计的类概率(SoftSVM 或统计方法等)或一些非常简单的东西,比如线性/逻辑回归的输出。与从图像中提取特征所花费的时间相比,分类/回归是准确且便宜的。

周边统计N意味着窗口通常对重叠区域进行采样,因此附近样本之间存在显着相关性。(我什至可以用数字/符号来接近)因此,这可以被认为是一个更复杂的函数f(x,y,N)哪里更大N将给出与邻域更相关(高度相关)的估计值,以及更小的N将给出更多变量,但更局部的估计。

我尝试过的事情:

  • 蛮力计算 - 效果很好。95% 正确的分割与常数N. 之后使用任何标准方法绘制轮廓时,结果看起来都很棒。这需要永远我可以简化基于每个样本计算的特征,但理想情况下我想避免这种情况,以使此代码对具有纹理的图像具有通用性,这些图像的差异出现在特征空间的不同部分。

  • Dumb Stepping - 在每个方向上走一个像素“步”,并根据与等值线值的接近程度选择要移动的方向。仍然很慢,它会忽略等值线的分叉。此外,在具有平坦梯度的区域,它会“游走”或自行翻倍。

我想我想做一些类似于第一个链接中提出的细分的事情,但对绑定感兴趣的等值线的框进行了修剪。我觉得我应该能够利用N也,但我不知道如何处理。

2个回答

计算机图形学中有一篇名为Provably Good Sampling and Meshing of Surfaces的论文,它依赖于您提供一个预言机来确定等值线与给定线段的所有交点。这样,假设您可以提供局部特征比例(类似于最大局部曲率)以及与所有轮廓相交的一组初始线段,它会对所有轮廓进行采样。这不是最简单的实现,因为它依赖于计算 Delaunay 三角剖分,但它是在CGAL中以 3D 实现的。它在 2D 中要简单得多,因为存在像Triangle这样的良好三角测量软件。从某种意义上说,这非常接近您可能做的最好的事情。

您可以尝试应用高效全局可靠性分析 (EGRA) 方法的核心功能。这种方法是为了有效计算故障概率而衍生的,但它的核心是专注于做你所描述的事情——创建一个仅在感兴趣的特定轮廓附近准确的模型。

这可能是一个有趣的起点,但我不确定它会解决您的问题。这在很大程度上取决于您的功能的形状。如果它可以用克里金模型很好地近似,那么它应该表现良好。这些模型非常灵活,但通常需要平滑的底层函数。过去我曾尝试将 EGRA 应用于图像分割应用程序,但收效甚微,因为将代理模型拟合到不是由函数关系真正定义的东西根本没有意义。不过,如果您的应用程序与我预想的不同,我还是会提到它作为您可能想要研究的东西。

如果我还没有说服您,您可以在此处(PDF 链接)和此处阅读有关 EGRA 的更多信息,Sandia 的DAKOTA项目中有一个现有的实现——据我所知,这是唯一可用的 EGRA 开源实现。