MATLAB Answers

Compiling features from regionprops with its filename

1 view (last 30 days)
Lim
Lim on 30 Jul 2015
Commented: Walter Roberson on 30 Jul 2015
I am working on extracting features on my images and compiling the features into one file. I want to put the file name under that file too but it only display the name and it's in 'char'.
My code:
files = dir('*_cell.bmp'); %the folder has 5 images with this extension
[m1 n1] = size(files);
Feature = [];
for i = 1:m1
x1 = files(i).name;
[path, name, extension] = fileparts(x1);
OriginalImage = imread(x1);
Blue = OriginalImage(:,:,3);
binaryImage = Blue > 0.1;
CellMeasure = regionprops(binaryImage,'all');
CellArea = CellMeasure.Area;
Feature = [Feature; name CellArea];
end
Output: - on the Workspace, >> Feature 5x10 char
>> Feature
Feature =
0201_cell
0205_cell
0206_cell
0401_cell
4101_cell
Please help.

  0 Comments

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 30 Jul 2015
Before:
Feature = cell(m1, 2);
In the loop:
Feature(i,:) = {name CellArea};

  0 Comments

Sign in to comment.

More Answers (1)

Lim
Lim on 30 Jul 2015
It works! Thanks Walter! What if I have more features? I do this:
files = dir('*_cell.bmp');
[m1 n1] = size(files);
Feature = cell(m1,2);
for i = 1:m1
x1 = files(i).name;
[path, name, extension] = fileparts(x1);
OriginalImage = imread(x1);
Blue = OriginalImage(:,:,3);
binaryImage = Blue > 0.1;
CellMeasure = regionprops(binaryImage,'all');
CellArea = CellMeasure.Area;
CellPerimeter = CellMeasure.Perimeter;
ShapeFeat = [CellArea CellPerimeter];
Red = OriginalImage(:,:,1);
Green = OriginalImage(:,:,2);
RMean = mean(Red(:));
GMean = mean(Green(:));
BMean = mean(Blue(:));
ColorFeat = [RMean GMean BMean];
AllFeat = [ShapeFeat ColorFeat];
Feature(i,:) = {name AllFeat};
end
...and it returns
>>Feature
Feature =
'001_cell' [1x16 double]
'002_cell' [1x16 double]
'003_cell' [1x16 double]
How do I expand all the features (in this case, 16) under 'Feature' so that I can save it in an excel file later?
filename = 'M3_Cell.xlsx';
xlswrite(filename,Feature);

  1 Comment

Walter Roberson
Walter Roberson on 30 Jul 2015
Feature(i,:) = [name num2cell(AllFeat)];
This assumes that AllFeat will be strictly a row vector of numeric values. If that is not the case then you would have to construct, for example,
{name RMean CellMeasure.PixelIDList}

Sign in to comment.

Sign in to answer this question.