Counting Total Number of Pixels by Color in a Segmented Image
16 views (last 30 days)
Show older comments
Hello I have mutiple segmented images that I would like to count the number of white, red, and blue pixels in each image using a for loop. I would like to store the number of red, white, and blue pixels associated with each image in an array along with the filename of each image. I can do each image manually, but I would like to make the process faster. I count the black pixels to make sure that the sum total of pixels assigned is close to 90,000, since each image is 300x300 and some pixels might be hard to distguinsh. Any help would be greatly appreicated. Thanks
rgbImage = imread('BioM Edge 576 Gen 5 Infl Rnge Start Segmented.png');
%rgbImage = imread('BioM Edge 576 Gen 10 Infl Rnge Start Segmented.png');
%rgbImage = imread('BioM Edge 576 Gen 15 Infl Rnge Start Segmented.png');
%rgbImage = imread('BioM Edge 576 Gen 20 Infl Rnge Start Segmented.png');
%rgbImage = imread('BioM Edge 576 Gen 25 Infl Rnge Start Segmented.png');
%rgbImage = imread('BioM Edge 576 Gen 30 Infl Rnge Start Segmented.png');
%%
BluePixels = rgbImage(:,:,1) == 0 & rgbImage(:,:,2) == 0 & rgbImage(:,:,3) == 255;
numBluePixels = sum(BluePixels(:));
%%
RedPixels = rgbImage(:,:,1) == 255 & rgbImage(:,:,2) == 0 & rgbImage(:,:,3) == 0;
numRedPixels = sum(RedPixels(:));
%%
WhitePixels = rgbImage(:,:,1) == 255 & rgbImage(:,:,2) == 255 & rgbImage(:,:,3) == 255;
numWhitePixels = sum(WhitePixels(:));
%%
BlackPixels = rgbImage(:,:,1) == 0 & rgbImage(:,:,2) == 0 & rgbImage(:,:,3) == 0;
numBlackPixels = sum(BlackPixels(:));
0 Comments
Accepted Answer
Image Analyst
on 1 Jun 2020
Edited: Image Analyst
on 1 Jun 2020
Code is in the FAQ: https://matlab.fandom.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F
In the for loop over all image files, just index the variables:
numBluePixels(k) = sum(BluePixels(:));
etc.
To check that the sum of blue, red, white, and black pixels is to within some tolerance of the total number of pixels, just sum them up at the bottom of the loop
tolerance = 0.05 * numel(BluePixels); % 5% of the total number of pixels.
if numBluePixels(k) + numWhitePixels(k) + numRedPixels(k) + numBlackPixels(k) > numel(BluePixels) - tolerance
% The sum is close enough to 90,000
else
% The sum is not close enough to 90,000 because some pixels were not classified as one of those colors.
end
More Answers (0)
See Also
Categories
Find more on Image Processing and Computer Vision in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!