How do I get the brightest pixels from this image?
Ältere Kommentare anzeigen

The image in question is above. I want to get the pixel values of the bright ring that lines the center of this uneven ring.
This was a binary image (kind of an uneven donut), then I did the distance transform of the image. What you see is the result.
There is a ridge along the middle of the donut that contains the brightest pixels (farthest from edge). I want to algorithmically obtain all of those pixel values or the locations in the image where those pixel values are.
Suggestions are welcome. I do not need a fully coded solution... unless you want a coding challenge.
Akzeptierte Antwort
Weitere Antworten (1)
% assuming D is a distance map
D = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1500965/image.png');
D = im2gray(D);
% find the ridgeline
mask = ~watershed(D);
% visualize both
imshow(imfuse(mask,mat2gray(D)),'border','tight')
xlim([450 1280]) % zoom in so it's visible in the forum
ylim([550 1350])
% get the distance at the ridgeline (the local width)
Dridge = D(mask);
For most tasks, the mask can be used directly instead of trying to use subscripts. If you need subscripts for geometric purposes, use find().
This example has a different end goal, but it demonstrates the process of addressing image pixels using three different appcoaches: a mask, linear indices derived from the mask, and row/column subscripts derived from the mask.
That should serve to substantiate my recommendation to use the mask alone for addressing tasks.
1 Kommentar
Alexander Moody
am 4 Okt. 2023
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

