来自canny边缘检测的形状特征

时间:2013-12-06 03:36:14

标签: opencv edge-detection

我正在尝试实现此处Canny edge中的Canny边缘检测,以根据对象的形状区分对象。我想知道有什么功能?我需要找到一个分数/指标,以便我可以根据形状的平均值等信息定义概率。目的是区分不同形状的物体。因此,假设Object1和Object2的平均形状(x)是x1,x2,标准偏差(s)分别是s1,s2。从我如何计算这些信息以及如何找到这些信息?

1 个答案:

答案 0 :(得分:2)

Canny算法是边缘检测器。它通过计算x和y方向上的导数的大小来搜索图像中的高频。最后你有对象的轮廓。你要做的是对对象进行分类并使用Canny听起来不是正确的方法,我不是说你不能用边缘构建特征,但它可能表现不佳。

为了达到您的目的,您首先需要确定哪些功能对您很重要。你提到了 shape ,但 color 是你想要找到的对象类的一个很好的特性吗?你的照片显示非常多彩的物体。你只是想把一个物体区分到另一个物体(考虑到图像只显示感兴趣的物体)或者你想在屏幕上找到它们吗?图像是仅包含一个对象还是多个对象?

我将为您提供有关特征建模的一些指导。

  1. 如果颜色是对象的强信息,则可以使用直方图信息对要素进行建模,为所有对象计算n个bin,并将bin的分布存储为要素向量。您可以使用HOG

  2. 另一种可能(天真)的解决方案是计算属于每个对象的所有颜色的补丁(例如7x7),然后计算补丁上的直方图而不是单个像素。

  3. 如果您对颜色信息不满意,并且希望通过比较邻域中的信息来区分对象,则可以使用local binary patterns,这可能足以满足您所拥有的信息类型。< / p>

  4. 一旦您确定了重要的功能并对其进行了建模,您就可以进行分类(这将决定您在给定特定功能时看到的对象)。

    1. 概率框架试图估计后验概率P(X | C),即在我们观察到C(C可能是你的特征)的情况下,对象X的概率是多少,这是非常强大的。您可以考虑阅读Maximum Likelihood EstimationMaximum a posteriori。此外,Naive Bayes分类器是Opencv上可用的简单现成算法。

    2. 您可以使用许多其他算法,例如SVM,Boost,决策树,神经网络等。 Bag of visual words也是一个不错的选择。

    3. 如果您对如何将感兴趣的对象与您正在讨论的图像分割的背景分开感兴趣,可以查看K-Means或更强大的Graph Cuts技术。当然,您可以先分段,然后对分段的blob进行分类。

    4. 塞缪尔