matlab - 如何修改一组向量以使其具有相同的大小?
问题描述
我正在尝试提取 HOG_features 用于数学符号分类(我将使用 SVM 分类器)。我得到一个 1xn 向量,然后我必须将所有向量放在一个矩阵中。问题是每个图像的特征向量的大小是不同的,所以我不能将它们连接起来。有没有办法使所有向量具有相同的大小?先感谢您。
这是代码:
rep1 = 'D:\mémoire MASTER\data';
ext = '*.tif' ;
chemin = fullfile(rep1, ext);
list = dir(chemin);
for i=1:length(list)
I = imread(fullfile(rep1, list(i).name), ext(3:end));
if size(I,3)==3 % RGB image
I = rgb2gray(I);
end
I1 = imbinarize(I);
% Extract HOG features data
HOG_feat = extractHOGFeatures(I1,'CellSize', [2 2]);
HOG_feat1 = HOG_feat';
end
解决方案
您的问题是所有向量的大小都不同。不要试图通过零填充或插值(我认为这两个都是坏主意)来强制它们成为芝麻大小,而是改变你的计算,使输出向量的长度不依赖于图像的大小。
这是您当前的代码:
HOG_feat = extractHOGFeatures(I1,'CellSize', [2 2]);
% ^^^
% the image is split in cells of 2x2 pixels
无论如何,2x2 单元格对于这种方法来说太小了。您可以改为将图像分成一定数量的单元格,例如 100 个单元格:
cellSize = ceil(size(I1)/10);
HOG_feat = extractHOGFeatures(I1,'CellSize', cellSize);
(我ceil
在除法中使用,因为我认为有必要有一个整数大小。但我不确定这里是否需要ceil
or floor
or round
,并且我无权访问此函数来测试它。有点试验并且错误应该显示哪种方法可以提供一致的输出大小。)
推荐阅读
- node.js - 有没有办法从 nodejs 中的 async/await 返回数据
- google-colaboratory - OpenCV 预装在 google colab 中,但我无法从 opencv contrib 添加额外的模块。还是一样 - 没有这样的文件或目录
- c++ - C++用不同的分隔符读取两个不同的文件
- python - 如何将此递归解决方案转换为 DP 解决方案?
- nuget - 有没有办法使 NuGet 包不可更新?
- pandas - 如何在 matplotlib 上将两个不同的熊猫数据框绘制成一张图表?
- html - HTML/CSS - 具有视差效果的图像上的图像
- xaml - 如何更改 XAML 弹出窗口的大小?
- elixir - Phoenix Ecto 上的 join 和 preload 有什么区别
- python - 欧拉计划问题 15 的程序仅适用于小于 12 的数字