【问题标题】:How to separate pattern circles from noise circles?如何区分图案圈和噪音圈?
【发布时间】:2018-03-16 11:07:18
【问题描述】:

我有一组点,其中一部分属于模式,其他是噪声。如何过滤它们?
我认为使用ceres-solver 库来查找最接近点的图案位置,因此也会知道噪声。

你还有什么可以推荐的?

图案:

【问题讨论】:

  • Ceres 库提供了一组求解器。为了使用它们,您应该首先为您的问题建模(即写下您的问题的数学公式)。然后选择一种方法来解决您的问题(例如梯度下降)。然后实现 ceres 解决问题所需的必要代码(例如,用于梯度下降的问题模型的梯度)。这就是您可以使用 ceres 的方式,而不仅仅是解决这样的任意问题!
  • 您的问题域是图像吗?还是 R^2 中的一组点?
  • @Mohammad CostFunction for ceres 是转换后的图案和点之间的最小距离的总和。这是一组点,但对于谷神星来说没问题。我只是问了任何其他合适的方法。

标签: algorithm opencv computer-vision


【解决方案1】:

如果你想为这个问题建立一个分类模型,你需要一个特征向量f[i],它可以评估一个点p[i]。我们可以构建的一个特征是该点与其 K 最近邻的距离。假设我们选择k = 4。并且特征向量看起来像下面的伪代码,

for i = 1 to count(PositivePoints)
  k = 4
  nn = KNN(p[i],k)
  for j= 1 to k
    vec = nn[j] - p[i]
    f[i][j] = norm(vec)
  end
end

在上面的代码中,f 是一个矩阵,每行 (f[i]) 是一个特征向量(点 p[i]),normL2 norm,它是为向量定义的(类似到欧几里得距离)。 PositivePoints 是属于该模式的点集。

现在您可以建立模型p(y|F) 的可能性。即,如果给定模型F(由矩阵f 推断),那么一个点(y)属于该模式的可能性是多少。为了在一般情况下执行此操作,可以使用Maximum apostriori estimationMaximum Likelihood Estimation。 但为了简单起见,让我们构建p(y|F),如下所示,

if(norm(y - F) < t) then
  p(y|F) = 1
else
  p(y|F) = 0

在上面的伪代码中,t 是一个任意阈值,您可以根据经验找到我们的阈值,这取决于正点中的噪声,y 是您想知道它是否属于正点的有趣点,@ 987654341@是由下面的伪代码决定的模型,

for j= 1 to k
  F[j] = median(f[:][j])
end

在上面的代码中,f[:][j] 类似于矩阵f 的第 j 列,F[j] 是到第 j 个邻居的距离,即积极点中最常见的。我选择了中值而不是平均值,因为它对噪声更稳健。虽然从您分享的图像来看,您似乎没有这样的噪音。

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多