Feature extraction surf, storing points

I have some number of images that contains faces. First, I am collecting features from all images and need to store features for further purposes. What is the best way to store features? Later, I am gonna use them to match input images to detect face.
face = rgb2gray(imread('...'));
facePoints = detectSURFFeatures(face);
features = selectStrongest(facePoints, 100);

Réponses (1)

Turlough Hughes
Turlough Hughes le 20 Oct 2019
Modifié(e) : Turlough Hughes le 20 Oct 2019
One way is to store as a struct, for example
s(ii).features=features; %where ii would be incrementing as you iterate through each image (i.e. for loop)
You can access the features of a given image afterwards as:
features=s(ii).features;
This way of storing your data will be particularly useful if you have other information you wish you wish to store that relates to each image such as:
s(ii).ImageName=ImName;
s(ii).folder=folder;
s(ii).otherdata=otherdata;
If you are not very familiar with structures I recomend reading the following documentation and working through some of the examples.

5 commentaires

I want to store them persistently.
Image Analyst
Image Analyst le 20 Oct 2019
Do you mean like to disk in a .mat file by using the save() function?
anythin but persistently? I could store in txt file but would not be effective so looking for a neat way.
Ömer Faruk Kurular
Ömer Faruk Kurular le 21 Oct 2019
Modifié(e) : Ömer Faruk Kurular le 21 Oct 2019
It would be so good if I could store structure array persistently.
Ah ok, you can save the struct as follows:
for ii=1:n_imgs
%load image
features= %etc
s(ii).features=features;
end
save('s.mat','s')
this will save the struct in your working directory as a file called s.mat.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by