【问题标题】:How to add HOG features into matrix (matlab)如何将 HOG 特征添加到矩阵中(matlab)
【发布时间】:2015-05-20 15:01:25
【问题描述】:

提取图像文件夹的 HOG 特征后,我想将所有这些结果添加到一个矩阵中。我怎么能做到这一点?这是我在 matlab 中的代码:

training_female = 'E:\Training Set\Female Images';

% read all images with specified extention, its jpg in our case
filenames = dir(fullfile(training_female, '*.jpg'));

% count total number of photos present in that folder
total_images = numel(filenames);

for n = 1:total_images

% Specify images names with full path and extension    
full_name= fullfile(training_female, filenames(n).name);

% Read images
training_images = imread(full_name);
[featureVector, hogVisualization] = extractHOGFeatures(training_images);
figure (n)

    % Show all images
    imshow(training_images); hold on;                  
    plot(hogVisualization);
end

【问题讨论】:

  • 您尝试将其加载到矩阵中但不起作用的代码在哪里?
  • 我刚刚准备了上面的代码,它读取并提取了一组图像的 Hog 特征。我需要帮助来创建矩阵并在其中添加 HoG 功能。
  • 我认为这个页面可以帮助你:geocities.ws/talh_davidc

标签: matlab image-processing matrix computer-vision matlab-cvst


【解决方案1】:

通过查看documentation,调用extractHOGFeatures 计算给定输入图像的1 x N 向量。因为计算它的输出大小可能有点麻烦,这还取决于您为 HOG 检测器设置的参数,最好先创建一个空矩阵并在每次迭代时动态连接特征。通常,如果您想在迭代的基础上填充元素,您会预先分配一个矩阵以提高性能。不这样做会使性能略有下降,但考虑到您的情况,它是最适应的。您可能想要调整 HOG 参数,如果我们以动态方式进行调整,则无需确定矩阵的总大小应该是多少。

所以做这样的事情。我已将 %//New 标签放在我修改过您的代码的位置:

training_female = 'E:\Training Set\Female Images';

% read all images with specified extention, its jpg in our case
filenames = dir(fullfile(training_female, '*.jpg'));

% count total number of photos present in that folder
total_images = numel(filenames);

featureMatrix = []; %// New - Declare feature matrix

for n = 1:total_images

    % Specify images names with full path and extension    
    full_name= fullfile(training_female, filenames(n).name);

    % Read images
    training_images = imread(full_name);
    [featureVector, hogVisualization] = extractHOGFeatures(training_images);

    %// New - Add feature vector to matrix
    featureMatrix = [featureMatrix; featureVector];
    figure(n);

    % Show all images
    imshow(training_images); hold on;                  
    plot(hogVisualization);
end

featureMatrix 将包含您的 HOG 特征,其中每一行代表每个图像。因此,对于特定图像i,您可以通过以下方式确定 HOG 特征:

feature = featureMatrix(i,:);

警告

我需要提一下,上面的代码假定您目录中的所有图像大小相同。如果不是,那么每个 HOG 调用的输出向量大小将会不同。如果是这种情况,您将需要一个元胞数组来适应不同的大小。

因此,请执行以下操作:

training_female = 'E:\Training Set\Female Images';

% read all images with specified extention, its jpg in our case
filenames = dir(fullfile(training_female, '*.jpg'));

% count total number of photos present in that folder
total_images = numel(filenames);

featureMatrix = cell(1,total_images); %// New - Declare feature matrix

for n = 1:total_images

    % Specify images names with full path and extension    
    full_name= fullfile(training_female, filenames(n).name);

    % Read images
    training_images = imread(full_name);
    [featureVector, hogVisualization] = extractHOGFeatures(training_images);

    %// New - Add feature vector to matrix
    featureMatrix{n} = featureVector;
    figure(n);

    % Show all images
    imshow(training_images); hold on;                  
    plot(hogVisualization);
end

要访问特定图像的功能或图像i,请执行以下操作:

feature = featureMatrix{i};

【讨论】:

  • 我接受了。真的再次感谢rayryeng先生。
猜你喜欢
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多