1

SIFT 特征的 Matlab 实现可从http://www.cs.ubc.ca/~lowe/keypoints/找到。在stackoverflow的帮助下。我想将功能保存到 .mat 文件中。特征是圆度、颜色、二值图像中的白色像素数和筛选特征。对于筛选特征,我在上面的代码中使用了描述符 { [siftImage, descriptors, locs] = sift(filteredImg) } 所以我的特征向量现在是 FeaturesTest = [roundness, nWhite, color, descriptors, outputs]; 使用 save('features.mat','Features'); 将此保存到 .mat 文件时 它给出了一个错误。
错误是这样的。

???错误使用 ==> horzcat CAT 参数尺寸不一致。==> user_interface>extract_features 中的错误 336 FeaturesTest = [圆度,nWhite,颜色,描述符,输出];

据我所知,我认为问题在于描述符特征向量的大小。它是 <14x128 双>。此功能有 14 行,而其他只有 1 行在 .mat 文件中。如何将此特征向量与其他特征一起保存到 .mat 文件中?

等待答复。提前致谢。

4

1 回答 1

2

据我所知,您似乎正在尝试将变量roundnessnWhitecolordescriptorsoutputs放入单个向量中,并且所有变量都具有唯一的维度。

也许使用单元格或结构来存储数据会更好。要将数据存储在单元格中,只需将方括号更改为花括号,如下所示:

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,按回车键,变量就会显示出来。或者,您可以通过在工作区窗口中双击它来浏览结构。

或者,您可以像这样使用 save 命令:

save(filename,roundness, nWhite, color, descriptors, outputs)

希望这可以帮助。

于 2011-04-05T22:57:06.963 回答