【问题标题】:Interpolate the values at the contour points对等高线点的值进行插值
【发布时间】:2015-07-10 09:11:54
【问题描述】:

Given : 表示闭合轮廓的有序点 (2D) 列表 当前状态:对轮廓上的点进行采样(统一或任意),并为每个点计算一些值(比如某种描述符)。

任务:我想将在采样点计算的值插入到不在样本中的点。也许我可以按顺序取 3 个采样点,并将它们的值插入到位于所选 3 个点的两个极值点之间的非采样点。我阅读了一堆论文,但对该怎么做感到非常困惑:插入曲线(例如 Catmul Rom)或曲面。也许有一些 C++ 库可以做我想要的或一些想法。

进一步澄清:

轮廓中的二维点集(最后一个点连接到第一个点),si = (xi,yi)

s0, s1, s2, s3, s4, s5, s6, s7 ,s8, s9, s10, s11 , s12 , s13, s14, s15

采样点

s0          s3          s6          s9             s12             s15

在这些采样点计算一些值

f(s0)     f(s3)       f(s6)       f(s9)          f(s12)           f(s15)

现在的目标是在其他点找到插值

     s1 s2     s4 s5       s7 s8        s10  s11       s13  s14

【问题讨论】:

  • 如果您的点在平面 (2D) 上并且您尝试获得等高线 (1D) 为什么要插入曲面(通常是 3D 空间中的 2D 物体)?跨度>
  • 我会选择splines
  • @tobi303 我已经编辑了问题以进一步澄清。

标签: c++ opencv interpolation


【解决方案1】:

你可以做一些简单的加权平均。 例如,假设您在 A 和 B 之间有一个点 X,一个距离函数 d 和一个可以得到的属性 p

p(X) = ( p(A) * d(X, A) + p(B) * d(X,B) ) / (d(X,A) + d(X,B))

如果您想要更弯曲的结果(上面的示例将是线性的),您可以对 3 个点(A、B 和 C)执行相同的操作。

除非您对原始曲线有更多了解,否则这些应该是可以的近似值。如果您对原始曲线一无所知,就无法完美地预测这些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2020-06-12
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多