从http://www.cs.ubc.ca/~lowe/keypoints/找到了SIFT功能的Matlab实现。在stackoverflow的帮助下。我想将功能保存到.mat文件。特征是圆度,颜色,二进制图像中没有白色像素数和筛选功能。对于筛选功能,我在上面的代码中使用了描述符{[siftImage,descriptors,locs] = sift(filteredImg)}所以我的特征向量现在是FeaturesTest = [roundness,nWhite,color,descriptors,outputs];使用save('features.mat','Features')将其保存到.mat文件时;它给出了一个错误。
错误是这样的。
???使用==>时出错horzcat CAT 参数维度不是 是一致的。 ==>中的错误 user_interface> 336处的extract_features FeaturesTest = [圆度,nWhite, 颜色,描述符,输出];
据我所知,我认为问题是描述符特征向量大小。它是< 14x128 double>。这个功能有14行,其他行只有一行在.mat文件中。如何将此特征向量与我的其他功能一起保存到.mat文件中?
等待回复。提前谢谢。
答案 0 :(得分:2)
根据我的理解,您似乎试图将变量roundness
,nWhite
,color
,descriptors
和outputs
放入单个向量,所有变量都有唯一的维度。
使用单元格或结构来存储数据可能会更好。要将数据存储在单元格中,只需将方括号更改为花括号,如下所示:
FeaturesTest = {roundness, nWhite, color, descriptors, outputs};
但是,这需要您记住将数据从.mat文件中拉出时哪些单元格。结构可能对您更有用:
FeaturesTest.roundness = roundness;
FeaturesTest.nWhite = nWhite;
FeaturesTest.color = color;
FeaturesTest.descriptors = descriptors;
FeaturesTest.outputs = outputs;
然后,当您加载.mat文件时,所有数据都将包含在该结构中,您可以轻松地引用该结构。如果您只需要查看颜色变量,则可以键入FeaturesTest.color
,按Enter键,然后显示变量。或者,您可以通过在工作区窗口中双击来浏览结构。
或者,你可以像这样使用save命令:
save(filename,roundness, nWhite, color, descriptors, outputs)
希望这有帮助。