【问题标题】:Features extraction and classification特征提取和分类
【发布时间】:2011-06-28 12:54:49
【问题描述】:

我正在实施一个古钱币识别系统。我使用轮廓检测​​来提取硬币的特征。我想用 SVM 来训练图像。

我的问题是如何将这些功能提供给 SVM?我知道我必须将这些功能保存到一个文件中,然后该文件应该提供给 SVM。但是,我不知道将功能保存到文件中。

将特征保存到文件意味着保存图像中轮廓的数量,每个轮廓的x,y,宽度和高度对吗? 有人可以帮帮我吗?我在这里被困了两个月。尽管如此,我还是找不到解决方案。 将功能保存到文件后,我是否必须将硬币名称也提供给同一个文件或另一个文件?

非常感谢您的帮助。

纳迪沙尼

【问题讨论】:

    标签: opencv extraction


    【解决方案1】:

    这取决于您使用的是什么计算机视觉/图像处理器库。例如,OpenCV 具有内置的 SVM 功能:

    http://opencv.willowgarage.com/documentation/cpp/support_vector_machines.html

    因此您甚至不必导出功能。但是 LIBSVM (http://www.csie.ntu.edu.tw/~cjlin/libsvm/) 有更多的绑定,例如对于 Matlab。

    至于如何为 SVM 提供特征......大多数分类器(包括 SVM)的输入是一个多维向量,因此您可以得到一个,例如连接前 10 个 x-y-width-height 元组。然而,这种简单的解决方案不太可能奏效,因为如果你改变元组的顺序(或者你旋转硬币以改变 x-y 坐标),你将得到完全不同的向量。所以尝试组成一个硬币图像-> 硬币旋转/移动/添加噪声时不会改变的特征向量映射。 (第二个想法:按大小排序的特征,前 5-10 个,可能有一些形状描述符而不是简单的宽度/高度?)

    在此阶段,硬币名称大多无关紧要,对 SVM 输出使用 1-of-N 编码。

    【讨论】:

    • 非常感谢您的信息。我正在使用matlab。我正在尝试神经网络而不是 svm。
    • 如果我使用matlab,一旦训练,我可以保存网络对象,可以用于硬币的识别。代码是这样的。净 = newff(P,T,20); % 创建一个新的前馈网络 [net,tr] = train(net,P,T); save net;... 但是如果我使用 opencv svm 我该如何保存它。我的意思是首先要训练。然后应该保存一些对象,以后应该能够使用该对象进行识别。我可以用 opencv svm 做到这一点吗?
    猜你喜欢
    • 2020-03-09
    • 2015-05-10
    • 2023-02-03
    • 2014-10-19
    • 2011-04-07
    • 2017-12-16
    • 2011-07-25
    • 2013-04-23
    • 2018-06-27
    相关资源
    最近更新 更多