如何将HOG特征添加到矩阵(matlab)
在提取图像文件夹的HOG特征后,我想将所有这些结果添加到一个矩阵中。我怎么能做到?这是我在matlab中的代码:如何将HOG特征添加到矩阵(matlab),matlab,image-processing,matrix,computer-vision,matlab-cvst,Matlab,Image Processing,Matrix,Computer Vision,Matlab Cvst,在提取图像文件夹的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
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
通过查看,调用extractHOGFeatures
计算给定输入图像的1 x N
向量。因为计算这个的输出大小可能有点麻烦,这也取决于为HOG检测器设置的参数,所以最好先创建一个空矩阵,并在每次迭代时动态连接特征。通常,为了提高性能,如果希望在迭代的基础上填充元素,您需要预先分配一个矩阵。不这样做会使性能略有下降,但考虑到您的情况,这是最适合的。您可能需要调整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 = []; %// 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先生。