插值轮廓点处的值

时间:2015-07-10 09:11:54

标签: c++ opencv interpolation

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

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

进一步澄清:

轮廓中的2d点的集合(最后的点连接回第一个点),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

1 个答案:

答案 0 :(得分:0)

你可以做一些简单的加权平均。 例如,假设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)做同样的事情(上面的例子是线性的)。

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

相关问题