Interpreting the output of regionprops function
조회 수: 3 (최근 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
댓글 수: 0
채택된 답변
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
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.
추가 답변 (1개)
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
MajorAxisLength = 0.1*MajorAxisLength % in mm
Hope this helps
-Abderrahim
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!