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

3 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Walter Roberson
Walter Roberson il 21 Set 2018
count = nnz( R ~= 255 | G ~= 255 | B ~= 255 );
Or more simply,
count = nnz( ~all(I == 255, 3) );
  2 Commenti
test test
test test il 21 Set 2018
Modificato: Image Analyst il 21 Set 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 il 21 Set 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Images in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by