Canny边缘检测的形状特征

3

我试图实现Canny边缘检测,这里找到了Canny边缘来区分基于形状的对象。我想知道有哪些特征?我需要找到一个得分/度量标准,以便可以从形状的平均值等信息中定义概率。目的是区分不同形状的对象。所以,假设Object1和Object2的平均形状(x)分别为x1、x2,并且标准差(s)分别为s1、s2。我应该从哪里计算这些信息?如何找到这些信息?


1
如果您可以发布一个示例图像,显示您想要检测的对象和背景,那么这将非常有帮助。根据这些条件,可能可以或者不可能估计形状。 - Totoro
如果您需要,我可以为您提供有关形状和轮廓描述符的论文参考。 - GilLevi
1个回答

3
Canny算法是一种边缘检测器。它通过计算x和y方向的导数的大小来搜索图像中的高频率。最终得到物体的轮廓。你要做的是分类物体,使用Canny似乎不是一个正确的方法,我并不是说你不能从边缘构建特征,但它可能表现不佳。
为了实现你想要的,你需要首先确定对你来说哪些特征是重要的。你提到了“形状”,但“颜色”是否是你要寻找的对象类别的好特征?你的图片显示非常丰富多彩的物体。你只是试图区分一个对象和另一个对象(考虑到图像仅显示感兴趣的对象),还是想要在屏幕上定位它们?图像中是否只包含一个对象或多个对象?
我会给你一些关于特征建模的指导。
  1. 如果颜色对于您的对象是重要信息,您可以使用直方图信息对其特征进行建模,为所有对象计算n个bin,并将bin的分布存储为特征向量。您可以使用HOG

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

  3. 如果您对颜色信息不满意,并且希望通过比较其邻域中的信息来区分对象,则可以使用本地二进制模式,这对于您拥有的信息类型可能已足够。

一旦您确定了重要的特征并对其进行了建模,您可以进行分类(这将确定在给定某些特征的情况下您正在看到哪个对象)。

  1. 概率框架尝试估计后验概率P(X|C),即在观察到C(C可能是您的特征)的情况下成为对象X的概率,这非常强大。您可以考虑阅读关于最大似然估计最大后验概率的内容。此外,朴素贝叶斯分类器是OpenCV上可用的简单现成算法。

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

  3. 如果您想了解如何将感兴趣的对象与背景分离,您正在谈论图像分割,可以查看K-Means或更强大的Graph Cuts技术。当然,您始终可以先进行分割,然后对分割的斑点进行分类。

塞缪尔


感谢您的详细解释。根据您的回答,我考虑使用颜色、大小和如果可能的话形状。哪些技术应该用于大小和形状特征提取?实际上,我正在使用机器人操作系统(ROS)和OpenCV进行机器人图像视觉。在导航过程中,它需要区分属于“家庭物品”类别和另一个类别“车间物品”的不同对象。根据识别出的对象,将做出决策并执行适当的动作。您对此应用程序中的模式识别有什么建议吗? - Srishti M
1
我展示了一个完整的流程来完成这个任务。尝试一下我指出的词袋教程,它非常直观易懂。 - Sam Felix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接