I have the following image. Now I want to separate the black and white pixel from the image so that I can fit an ellipse to each black pixel area and find the length of the major axis of each ellipse. How can I separate black pixel from the white pixel and fit an ellipse?

 Akzeptierte Antwort

Image Analyst
Image Analyst am 6 Sep. 2016

0 Stimmen

Basically, here are the steps.
% Invert your image so the black things are white.
binaryImage = grayImage < 128;
% Call bwlabel
[labeledImage, numberOfRegions] = bwlabel(binaryImage);
% Call regionprops
props = regionprops(labeledImage, 'MajorAxisLength', 'Orientation');
It's all shown in Steve's blog:

5 Kommentare

sheli whitson
sheli whitson am 6 Sep. 2016
Thank you Image Analyst.
Eyup Demir
Eyup Demir am 11 Apr. 2022
@Image Analyst In the image you attached from @Steve Eddins, two white regions in the middle are merged under one ellipse, because there is a one pixel touching. Is there a way to merge them if there was 2 or 3 pixel between them? I want to be able to control some white regions to be merged based on the closest distance between them.
Walter Roberson
Walter Roberson am 11 Apr. 2022
https://www.mathworks.com/help/images/ref/imclose.html
imclose() with a structuring element as large as the distance you want to merge.
Eyup Demir
Eyup Demir am 11 Apr. 2022
I think, I found what I was looking for! It is almost-connected-compenent labeling Thank you Steve! https://blogs.mathworks.com/steve/2010/09/07/almost-connected-component-labeling/
Image Analyst
Image Analyst am 11 Apr. 2022
Sometimes you can reduce this effect by using 4-connected labeling instead of the default 8-connected labeling.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by