我正在尝试使用C++和OpenCV将脑肿瘤的MRI图像分为良性和恶性。我计划在使用kmeans对SIFT描述符进行聚类之后,使用词袋(BoW)方法。意思是,我将每个图像表示为一个直方图,x轴带有整个“codebook”/字典,y轴上它们在图像中的出现次数。这些直方图将成为我的SVM(带有RBF内核)分类器的输入。
但是,使用BoW的缺点是它会忽略图像中描述符的空间信息。有人建议使用SPM代替。我阅读了有关内容,发现this link提供了以下步骤:
现在,我有以下问题:
有人请帮助这个可怜的小本科生。如果您这样做的话,我将永远感激不已。如果您有任何澄清,请随时询问。
最佳答案
这是实际论文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/