How to remove rows from structure based on value condition of field?

34 views (last 30 days)
Hi all,
In my structure class titled 'rawMeasurements' created by the function 'regionprops', I want to remove all rows with a value <10 from the first field called Area.
I tried this to start filtering out all the row's with a value of 1, but it doesn't seem to work and I'm guessing this isn't the best way to do this:
idx = ismember({rawMeasurements.Area}, {'1'});
rawMeasurements = rawMeasurements(~idx);
Does anyone know a way to fix this approach or come up with a new approach entirely?
If you need any additional info, please let me know.
Thank you!

Accepted Answer

Image Analyst
Image Analyst on 12 Nov 2021
If you want a binary image with no blobs less than 10, call bwareaopen() before calling regionprops():
mask = bwareaopen(mask, 10); % Throw away blobs of 9 pixels or smaller.
rawMeasurements = regionprops(mask, 'Area');
allAreas = [rawMeasurements.Area]

More Answers (2)

KSSV
KSSV on 12 Nov 2021
rawMeasurements.Area(rawMeasurements.Area<10) = []
  1 Comment
Stan Wissink
Stan Wissink on 12 Nov 2021
Thank you for your answer!
Unfortunately, I get an error saying "Error using '<', too many input arguments."

Sign in to comment.


Awais Saeed
Awais Saeed on 12 Nov 2021
S.A = [1 2 3 4 5 6; 11 12 13 14 15 16; 21 22 23 24 25 26; 31 32 1 34 35 36];
S.B = ceil(50*rand(2,2));
S.C = "Some string";
S.D = 3;
[rows,~] = find(S.A < 10);
rows = unique(rows);
S.A(rows,:) = [];

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!