【问题标题】:Fourier Descriptors with SVM Implementation for object class recognition based on shape傅里叶描述符与支持向量机实现基于形状的对象类识别
【发布时间】:2013-06-21 23:32:51
【问题描述】:

我想根据图像的形状将图像分为两类。为此,我使用了带有 SVM 分类器的傅立叶描述符。我的问题是傅立叶描述符的长度取决于边界点的数量,因此各种图像的描述符长度是不同的。但是对于训练 SVM,我需要将描述符作为矩阵行的训练矩阵(cv::Mat)。我正在使用 openCV 在 c++ 中实现它。我应该怎么做?我应该:
1.用零将剩余描述符填充到最长描述符的长度
2.仅从边界采样固定数量的点

否则建议我正确的方式。

【问题讨论】:

  • 您能分享一下您使用什么方法对固定数量的点进行采样以及效果如何?例如,您是如何选择保留哪些积分的?

标签: opencv fft svm shape feature-descriptor


【解决方案1】:

在这种情况下,最好的方法是从边界采样固定数量的点,以便输入向量的长度相等。填充是一个坏主意,因为这样做会隐式更改填充点和非填充点之间的距离定义。

【讨论】:

  • 谢谢 Marc。我还有一个疑问。在边界点(x+jy x-real y-imaginary (x,y)-coordinates of boundary)上应用 dft 后,我​​得到的是一个双通道 Mat,它是描述复数值的 Mat。但是SVM只需要一个单通道浮点矩阵作为训练数据。我应该将复数的大小作为单通道实值描述符还是应该将描述符的虚部即第二通道复制到第一个通道中,使原始列长度加倍垫并减少 1 个通道或我还需要做什么?
  • "通过忽略相位信息并仅采用 FD 的幅度值来实现 FD 的旋转不变量。" - 如研究论文中所写。这是否意味着我只需要获取我所拥有的复数描述符值的大小,这也将解决我将 2 通道 cv::Mat 转换为单通道以训练 SVM 的问题。
  • @user2442331 我不知道您的问题的具体情况,但我想忽略数据的复杂部分是个坏主意。您确实可以按照您的建议为每个复数使用两个输入,或者可以使用幅度+相位(每个复数也有 2 个输入)。关于研究论文:这完全取决于它的假设和应用。最好同时尝试这两种方法,看看哪种方法最适合您。
  • 谢谢马克。如果有新手打算使用傅立叶描述符,那么本文可能会有用
  • @MarcClaesen 我将 SVM 与 SURF 一起使用,我在描述符训练时遇到错误,因为描述符的大小不同,而 SVM 每个图像只需要一行
猜你喜欢
  • 1970-01-01
  • 2012-05-06
  • 2010-10-11
  • 2013-06-11
  • 2011-07-07
  • 1970-01-01
  • 2015-02-16
  • 2015-07-12
  • 2013-06-13
相关资源
最近更新 更多