Marking pixels above a certain value

Hello. I have a problem.Let's say we have an image called img1 and I want to do the following two things (without loops):
"1. Create logical image where every pixel is marked that has a green channel which is greater or equal 0.5. The result should be stored in mark_green."
"2. Set all pixels in the original image (the double image from step 2) to black where _mark_green is true. Store the result in image_masked. Use repmat to complete this task."
Any ideas?

 Accepted Answer

Hint for the 1st part,
G = (insert code here to pick off the green plane)
mark_green = G >= 0.5; % the marked pixels
For the 2nd part, repmat ~mark_green so that it can be used for all of the color planes. You might want to .* the result with your image.
Give it a try, and then post your code if you have problems and need specific advice.

4 Comments

G = image(:,:, 2);
mark_green = G >= 0.5;
Should work right? I'm not sure how to use repmat for the second part.
idxmat = repmat(image_mark_green,[1,1,3]);
image_masked = image;
image_masked(idxmat) = 0;
This works. Thanks! Could you shortly explain what it does exactly?
1,1,3 means three dimensional right. But from where do three dimensions come here..? Thanks.

Sign in to comment.

More Answers (0)

Asked:

on 8 Apr 2016

Commented:

on 1 Mar 2018

Community Treasure Hunt

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

Start Hunting!