How do I get the brightest pixels from this image?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Alexander Moody
le 3 Oct 2023
Commenté : Alexander Moody
le 4 Oct 2023
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.
0 commentaires
Réponse acceptée
Image Analyst
le 3 Oct 2023
Modifié(e) : Image Analyst
le 4 Oct 2023
You should be able to use @bwskel to get the skeleton. Then use the skeleton as a mask to get the pixel values along the ridge. See attached example where I get the mean width by examining along the spine of the distance transform. If you wanted the pixel intensities instead of the diameters, you'd do
skelImage = bwskel(mask); % Get skeleton of the binary image (not the distance transform).
% Get 1-D vector of all the pixel intensities in the original image along the mask spine.
pixelSkelValues = grayImage(skelImage);
Plus de réponses (1)
DGM
le 3 Oct 2023
Modifié(e) : DGM
le 3 Oct 2023
% 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.
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!