필터 지우기
필터 지우기

Masking certain RGB values for an image

조회 수: 8 (최근 30일)
Oliver
Oliver 2011년 9월 26일
Hello. I was wondering if there is a way to mask/delete certain pixels in an image if you know the range of RGB values you want to remove. Thanks for any help, Olly

채택된 답변

Jan
Jan 2011년 9월 26일
Yes.
RGB = rand(400, 200, 3);
R = RGB(:, :, 1);
G = RGB(:, :, 2);
B = RGB(:, :, 3);
mask2D = (0.2 < R & R < 0.3) & ... % [EDITED]: && -> &
(0.1 < G & G < 0.4) & ...
(0.6 < B & B < 0.65);
mask = cat(3, mask2D, mask2D, mask2D);
RGB(mask) = 0;
I do not know how a pixel could be deleted without destroying the shape of the image.
  댓글 수: 4
Image Analyst
Image Analyst 2011년 10월 8일
An alternate way if you want to use mask2D and not create the 3D mask:
% Mask the image.
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask2D, class(rgbImage)));
In the end, it doesn't make any difference though - this is just the style that Sean prefers.
Walter Roberson
Walter Roberson 2011년 10월 8일
Hmmm, which is faster, cat(3,X,X,X) or repmat(X,1,1,3) ?
Logically cat(3) should be, but I can't test at the moment.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2011년 9월 26일

태그

Community Treasure Hunt

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

Start Hunting!

Translated by