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?

 采纳的回答

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

6 个评论

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).

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by