MATLAB Answers


How to find the X axis length and Yaxis length of the object

Asked by saravanakumar D on 27 Dec 2013
Latest activity Commented on by Image Analyst
on 30 Dec 2013
    I have to find the shape of the object so i have to find the length of the x and y axis length of the shape. So please help me


Log in to comment.

2 Answers

Answer by Sean de Wolski
on 27 Dec 2013
 Accepted Answer

doc regionprops


Show 1 older comment

'MajorAxisLength', 'MinorAxisLength'

But i think there is major difference between X&Y axis length and Major&Minor axis length

Then use 'Orientation' property to convert between the direction of the ellipse and x/y.

Log in to comment.

Answer by Image Analyst
on 27 Dec 2013

You could use bounding box, or MajorAxisLength and MinorAxisLength, which is the axes of an ellipse fitted to the blob. There is no farthest end-to-end measurement available. And there is no definitive crossways width. If you had an elongated, irregularly-shaped blob and the major axis was where you think it would be, then what is the minor axis? The narrowest one? The cross distance at the midpoint (which may be at the widest point, the narrowest point, or something else)?


I have no clue why you're seeing that, IA. I run the exact same code (tried 13a and 13b), and I get the following:

  • .

The error message doesn't even make sense, the second argument passed into imshow is [] or empty, which is not nan as the message is suggesting.

Either way, you could just replace the nan's with zeros.

D(isnan(D)) = 0;

Sorry Sean, I found the problem. I had a file called rice.png that was a binary mask file in a folder (that I had created for a project I was working on) and that was earlier on the path. It used that instead. That's the danger of not specifying the full path. It's not your fault - how could you know that I'd just happen to have a different image called that? - but I'm showing the more robust code below:

% Define folder where rice.png lives.
folder = fullfile(matlabroot, '\toolbox\images\imdemos');
baseFileName = 'rice.png';
% Get the full filename, with path prepended.
fullFileName = fullfile(folder, baseFileName);
I = imread(fullFileName);
rice = imclearborder(stdfilt(I)<15);
skel = bwmorph(rice,'skel',inf);
endpoints = bwmorph(skel,'endpoints');
L = bwlabel(rice);
L(~endpoints) = 0;
for ii = 2:max(L(:))
  idx = find(L == ii); 
  endpoints(idx(2:end)) = 0;        %keep only one end point per object
D = bwdistgeodesic(rice,endpoints,'quasi-euclidean');

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!