Interpreting the output of regionprops function

12 次查看(过去 30 天)
I have some ellipse in an image and I used regionprops function to find the length of their major and minor axes.
The output of function is in pixels and I need to convert it to millimeters. Consder the following as output of regionprops function and please help me to figure the conversion out:
MajorAxisLength: 320 pixels
MinorAxisLength: 180 pixels
Orientation: 25 degrees
pixel-to-mm conversion factor: 0.1 mm/pixel
Now the question is what are the length of major and minor axes in mm?
Many thanks

采纳的回答

Image Analyst
Image Analyst 2023-10-3
Try this:
% Measure properties of all the individual blobs in the image.
props = regionprops(mask, 'MajorAxisLength', 'MinorAxisLength', 'Orientation');
% Define spatial calibration factor to convert pixels to millimeters.
scaleFactor = 0.1 % mm/pixel
% Get all the major axis lengths of all the blobs into one vector.
allMajorAxisLengths = [props.MajorAxisLength] * scaleFactor; % Will have units of mm.
% Get all the minor axis lengths of all the blobs into one vector.
allMinorAxisLengths = [props.MinorAxisLength] * scaleFactor; % Will have units of mm.
% Get all the orientations of all the blobs into one vector.
allOrientations = [props.Orientation]; % Has units of degrees
  2 个评论
Roohollah
Roohollah 2023-10-3
I think this cannot be the case. Maybe I am wrong. But what if the major axis has an angle of 25 degrees with respect to x-axis? I am asking this questions since for an image, the number of pixels are given just along x and y axes. When there is an angle between major axis and x-axis, I orientation must be taken into account for converting the length of major and minor axis of ellipse to mm.
Please correct me if I am wrong.
Image Analyst
Image Analyst 2023-10-3
The blob is somehow fitted to an ellipse, perhaps using something like this:
The major axis length is along the main axis of the blob, which will be tilted at some angle usually. It is not the bounding box, which goes parallel with the axes, which is maybe where your confusion comes in. The ellipse fitted to the blob will NOT usually fit into the bounding box of the irregularly-shaped blob (for obvious reasons if you just think about it). The minor axis is the smaller of the axes of the fitted ellipse and will be perpendicular to the main axis, and of course 90 degrees rotated from the "Orientation" angle.
If for some reason you want the projected distances along x and y of the ellipse, you can approximate that by multiplying by 2*MajorAxidLength*sind(Orientation). I have never ever needed this and don't know why you would either.
I suggest you take a look at bwferet since it might be more like what you want perhaps.

请先登录,再进行评论。

更多回答(1 个)

Abderrahim. B
Abderrahim. B 2023-10-3
Hi!
It s a simple conversion:
MajorAxisLength = 320 ; % in pixels
MinorAxisLength = 180 ; % in pixels
MinorAxisLength = 0.1*MinorAxisLength % in mm
MinorAxisLength = 18
MajorAxisLength = 0.1*MajorAxisLength % in mm
MajorAxisLength = 32
Hope this helps
-Abderrahim

标签

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by