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

조회 수: 3 (최근 30일)
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.

채택된 답변

Walter Roberson
Walter Roberson 2018년 9월 21일
count = nnz( R ~= 255 | G ~= 255 | B ~= 255 );
Or more simply,
count = nnz( ~all(I == 255, 3) );
  댓글 수: 2
test test
test test 2018년 9월 21일
편집: Image Analyst 2018년 9월 21일
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 2018년 9월 21일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by