我试图实现Canny边缘检测,这里找到了Canny边缘来区分基于形状的对象。我想知道有哪些特征?我需要找到一个得分/度量标准,以便可以从形状的平均值等信息中定义概率。目的是区分不同形状的对象。所以,假设Object1和Object2的平均形状(x)分别为x1、x2,并且标准差(s)分别为s1、s2。我应该从哪里计算这些信息?如何找到这些信息?
我试图实现Canny边缘检测,这里找到了Canny边缘来区分基于形状的对象。我想知道有哪些特征?我需要找到一个得分/度量标准,以便可以从形状的平均值等信息中定义概率。目的是区分不同形状的对象。所以,假设Object1和Object2的平均形状(x)分别为x1、x2,并且标准差(s)分别为s1、s2。我应该从哪里计算这些信息?如何找到这些信息?
如果颜色对于您的对象是重要信息,您可以使用直方图信息对其特征进行建模,为所有对象计算n个bin,并将bin的分布存储为特征向量。您可以使用HOG。
另一个可能的(天真的)解决方案是计算每个对象所属的补丁(例如7x7)的所有颜色,并稍后计算补丁而不是单个像素的直方图。
如果您对颜色信息不满意,并且希望通过比较其邻域中的信息来区分对象,则可以使用本地二进制模式,这对于您拥有的信息类型可能已足够。
一旦您确定了重要的特征并对其进行了建模,您可以进行分类(这将确定在给定某些特征的情况下您正在看到哪个对象)。
概率框架尝试估计后验概率P(X|C),即在观察到C(C可能是您的特征)的情况下成为对象X的概率,这非常强大。您可以考虑阅读关于最大似然估计和最大后验概率的内容。此外,朴素贝叶斯分类器是OpenCV上可用的简单现成算法。
您可以使用许多其他算法,例如SVM、Boost、决策树、神经网络等。视觉词袋也是一个不错的选择。
如果您想了解如何将感兴趣的对象与背景分离,您正在谈论图像分割,可以查看K-Means或更强大的Graph Cuts技术。当然,您始终可以先进行分割,然后对分割的斑点进行分类。
塞缪尔