我正在尝试使用C++和OpenCV将脑肿瘤的MRI图像分为良性和恶性。我计划在使用kmeans对SIFT描述符进行聚类之后,使用词袋(BoW)方法。意思是,我将每个图像表示为一个直方图,x轴带有整个“codebook”/字典,y轴上它们在图像中的出现次数。这些直方图将成为我的SVM(带有RBF内核)分类器的输入。

但是,使用BoW的缺点是它会忽略图像中描述符的空间信息。有人建议使用SPM代替。我阅读了有关内容,发现this link提供了以下步骤:



现在,我有以下问题:

  • 什么是坐标直方图?直方图不只是显示x轴上每个分组的计数吗?它如何提供有关点坐标的信息?
  • 我将如何计算第k个视觉单词的概率?
  • 我将获得的“内核值”的用途是什么?如何将其用作SVM的输入?如果我理解正确,是在测试阶段使用内核值,而不是在训练阶段使用内核值?如果是,那我将如何训练我的SVM?
  • 还是您认为我不需要为自己的空间信息(良性和恶性肿瘤)负担太多的空间信息,而只需要坚持正常的BoW?

  • 有人请帮助这个可怜的小本科生。如果您这样做的话,我将永远感激不已。如果您有任何澄清,请随时询问。

    最佳答案

    这是实际论文http://www.csd.uwo.ca/~olga/Courses/Fall2014/CS9840/Papers/lazebnikcvpr06b.pdf的链接

    此处提供了MATLAB代码http://web.engr.illinois.edu/~slazebni/research/SpatialPyramid.zip

    坐标直方图(在您的文章中提到)只是图像中计算直方图的一个子区域。这些幻灯片在视觉上对其进行了解释http://web.engr.illinois.edu/~slazebni/slides/ima_poster.pdf

    您在这里有多个直方图,每个直方图分别对应图像中的每个不同区域。概率(或项目数量取决于该子区域中的筛选点)。

    我认为您需要定义幻灯片中提到的金字塔内核。

    如果您有足够的训练样本,则卷积神经网络可能更适合您的任务。您可能可以看一看Torch或Caffe。

    关于c++ - 然后将SIFT的空间金字塔匹配(SPM)输入到C++中的SVM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31997661/

    10-12 18:45