how can i set an images pixels to black ?
22 次查看(过去 30 天)
显示 更早的评论
hi guys , i m so new with Matlab and have a problem.
i have an image and i have to set all pixels to the 'black' which is greater then 0.5(or true it says) and without using loops. but repmat
can anyone help me ?
0 个评论
回答(2 个)
Image Analyst
2016-4-2
You would not use repmat() - that's not appropriate. I don't even know how it could be used to do this. See if this explains it
% Display original image
subplot(2,2,1);
imshow(grayScaleImage, []);
% Get a "mask" of what pixels are brighter than 0.5
% Wherever the image is >0.5 mask will be true/1/white.
% Wherever the image is <= 0.5 the mask will be false/0/black.
mask = grayScaleImage > 0.5;
subplot(2,2,2);
imshow(mask);
title('Binary Image', 'FontSize', 20);
% Now everywhere that mask is true, set the original image to zero there.
grayScaleImage(mask) = 0;
% Display the result.
subplot(2,2,3);
imshow(grayScaleImage);
title('New Image', 'FontSize', 20);
2 个评论
Image Analyst
2016-4-2
You didn't say you were going to mask a color image according to if the green channel was greater than 0.5. To do that you'd normally do this:
mask = rgbImage(:,:,2) > 0.5; % Mask determined from green channel
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
And no repmat needed.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!