How to count the number of pixels in each section of an image set?

9 vues (au cours des 30 derniers jours)
Gabriela Almeida
Gabriela Almeida le 11 Mai 2022
Hello:)
I have a set of 80 dicom images of lungs and I was wondering if there is an automatic way or a simple way to count the number of pixels belonging to the lung in each section.
Could anyone help me?
I've searched everywhere and I can't find a way to calculate the pixels of each image at the same time, I only got the total number of pixels in the set but thats not what i wanted..
Any kind of help is welcome.
Thank you :)
  4 commentaires
Image Analyst
Image Analyst le 12 Mai 2022
@Gabriela Almeida then you must not have discovered my Image Segmentation Tutorial in my File Exchange
Gabriela Almeida
Gabriela Almeida le 12 Mai 2022
@Image Analyst I tried to find something about this but i couldnt find it on your file

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 12 Mai 2022
A = imread('toyobjects.png');
A = A<100 | A>150; % some binary image
% get total number of pixels across all objects
pixtotal = regionprops('table',A,'Area')
pixtotal = 4×1 table
Area _____ 10871 11922 8797 1644
  7 commentaires
Matt J
Matt J le 12 Mai 2022
Perhaps you are accidentally feeding the code the same image every time. Whatever the problem is, it's coming from parts of the code you haven't shown us. But you can see from the simplified examples we've given you that regionprops will work.
Gabriela Almeida
Gabriela Almeida le 12 Mai 2022
it works :) thank you so much!

Connectez-vous pour commenter.

Plus de réponses (1)

DGM
DGM le 11 Mai 2022
Modifié(e) : DGM le 11 Mai 2022
Depending on what your images are like and what you need, this may be a start. You can calculate the number of true (nonzero) pixels in an image using nnz(). If your image has more than one object, then it will include them all. If you have more than one object and you want the pixel count for each object, you can do that using bwconncomp()
A = imread('toyobjects.png');
A = A<100 | A>150; % some binary image
imshow(A)
% get total number of pixels across all objects
pixtotal = nnz(A)
pixtotal = 33234
% get number of pixels in each object
CC = bwconncomp(A);
pixperobj = cellfun(@numel,CC.PixelIdxList)
pixperobj = 1×4
10871 11922 8797 1644
  1 commentaire
Gabriela Almeida
Gabriela Almeida le 12 Mai 2022
@DGM Thanks for the help but I think something is not right because the number of pixels is increasing with the number of images but there are images where the lung part decreases and the number of pixels increases.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by