【问题标题】:how to find bad points in a linear interpolation?如何在线性插值中找到坏点?
【发布时间】:2014-08-19 12:34:23
【问题描述】:

我有一组点,我知道:

  1. 都是0-255
  2. 它们的格式是递增的(因此 Point[0]
  3. 他们正在压制一条线(有一些噪音)。

但是有些地方表现不好。我需要检测这些点。最快的方法是什么?

一般我可以得到第一个和最后一个并找到线公式,然后计算每个点的误差,如果误差太大,我将该点标记为坏点。

有没有更好的方法(更快更准确)?

是否有任何库可以提供帮助(我正在使用 OpenCV 和 Boost)。

【问题讨论】:

  • 你能定义“行为不端”吗?如果第一行和最后一行实际上是“坏点”怎么办?是什么让您认为选择这两个是最好的方法?
  • 是的,拿第一点和最后一点可能是个坏主意,因此:fitLine
  • @berak fitLine 似乎是一个不错的解决方案。我怎样才能找到不好的点?与实际线有很大偏差的点?

标签: c++ algorithm opencv boost


【解决方案1】:

您应该计算linear regression 并测量点与该趋势线的距离,而不是取第一个点和最后一个点。可能是您的第一点/最后一点表现不佳。

【讨论】:

  • 如何求点到线的距离?最快的方法是什么?
  • @mans 您可以在点的 x 坐标处评估线函数 f(x)=kx+a 并检查 abs(kpoint_x+a -point_y) 超过某个阈值(k 和 a 是线系数)。这不是“垂直”距离,但我想你的情况已经足够了。
  • 这个距离是多少?
【解决方案2】:

循环遍历它们,如果 p[i]

我不知道你为什么提到 lerp,这听起来不相关。 lerp 函数不能返回错误的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多