Sat1=regionprops(MaskIm, {'Area', 'Eccentricity', 'EulerNumber', 'MajorAxisLength', 'MinorAxisLength', 'Orientation', 'Perimeter'});
How to divide MajorAxisLength with MinorAxisLength and then add it to Sat1 structure under 'AspectRatio' name?

 Accepted Answer

KSSV
KSSV on 12 Oct 2017
MaskIm = imread('text.png');
Sat1=regionprops(MaskIm, {'Area', 'Eccentricity', 'EulerNumber', 'MajorAxisLength', 'MinorAxisLength', 'Orientation', 'Perimeter'});
AR = [Sat1.MajorAxisLength]./[Sat1.MinorAxisLength] ;
[Sat1.AspectRatio] = deal(AR) ;

6 Comments

Thank you for this. It is adding a double array into each row. Please see the attached photo.
MaskIm = imread('text.png');
Sat1=regionprops(MaskIm, {'Area', 'Eccentricity', 'EulerNumber', 'MajorAxisLength', 'MinorAxisLength', 'Orientation', 'Perimeter'});
AR = [Sat1.MajorAxisLength]./[Sat1.MinorAxisLength] ;
for i = 1:length(AR)
Sat1(i).AspectRatio = AR(i) ;
end
Great. Many thanks for your time.
Cheers
YOu can avoid loop too, check the following:
MaskIm = imread('text.png');
Sat1=regionprops(MaskIm, {'Area', 'Eccentricity', 'EulerNumber', 'MajorAxisLength', 'MinorAxisLength', 'Orientation', 'Perimeter'});
AR = [Sat1.MajorAxisLength]./[Sat1.MinorAxisLength] ;
AR=num2cell(AR);
[Sat1(:).AspectRatio] = deal(AR{:}) ;
Thank you. This is working but then I am not able to filter the region using 'bwpropfilt' anymore.
%
% AR =( [MaskIminFinal_log_properties.MajorAxisLength]./[MaskIminFinal_log_properties.MinorAxisLength])' ;
for i = 1:length(AR)
MaskIminFinal_log_properties(i).AspectRatio = AR(i) ;
end
MaskIminFinal_log_New = bwpropfilt(MaskIminFinal_log, 'AspectRatio', [1, 3]);
I am trying to filter out noise (scanning pattern) on my negative control image (attached).

Sign in to comment.

More Answers (0)

Asked:

on 12 Oct 2017

Commented:

on 12 Oct 2017

Community Treasure Hunt

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

Start Hunting!