how can i set an images pixels to black ?
21 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
li yan
am 2 Apr. 2016
I(I > 0.5) = 0;
3 Kommentare
li yan
am 3 Apr. 2016
Assuming that you have got a 2D-metrix I, and you want to set all pixels greater than 0.5 to 0. you can do like this
row = 10; col = 10;
I = 0.5 + .1 * randn(row, col);
I(I > 0.5) = 0;
then you have set all pixels greater than 0.5 to 0 in I.
Image Analyst
am 2 Apr. 2016
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 Kommentare
Image Analyst
am 2 Apr. 2016
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.
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!