How can I extract color feature of an image without extracting white color?

3 views (last 30 days)
I = imread('coriander.png');
imshow(I);
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
count = 0;
if R == 255 && G == 255 && B == 255
count = count;
else
count = count +1;
end
disp(count);
I don't want to extract white color and just want to count the number of pixel where is not white color.

Accepted Answer

Walter Roberson
Walter Roberson on 21 Sep 2018
count = nnz( R ~= 255 | G ~= 255 | B ~= 255 );
Or more simply,
count = nnz( ~all(I == 255, 3) );
  2 Comments
test test
test test on 21 Sep 2018
Edited: Image Analyst on 21 Sep 2018
Thanks. By the way, how can I separate the values of RGB without calculating the white pixel values?
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
just like to get the values as above, but without white pixel values.
Image Analyst
Image Analyst on 21 Sep 2018
If you want a 2-D image, you can't because the white pixels must be in there because 2-D images must remain rectangular. If you want a 1-D vector, you can delete them
mask = R==255 & G==255 & B=255;
RwithoutWhite = R(~mask);
GwithoutWhite = G(~mask);
BwithoutWhite = B(~mask);
Again, those are vectors (lists of pixel values), NOT images. However you can reassign the white pixels to some other value if you want
R(mask) = 137; % Whatever value you want.
THIS will still be a 2-D image.

Sign in to comment.

More Answers (0)

Categories

Find more on Images 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!