Changing pixel color to white

11 views (last 30 days)

Hi, I am a newbee to Matlab. I want to change the brown color of every red blood cells into white. Could someone please help me how to do it? I want to read every pixel in image, and, if it found this color in the image, then the program should change it to white color. Thanks in advance.

Accepted Answer

Image Analyst
Image Analyst on 25 Nov 2014
Are you sure you want to turn them into pure, solid white? Why do you want to do this? Do you want to estimate background? If you do want pure white, just take the green channel (which will give you the best contrast, not the red channel obviously) and threshold around 121 to create a mask. Then use the mask to set all three color channels to 255.
If you want a better job, then do color segmentation like in my File Exchange.
  5 Comments
Image Analyst
Image Analyst on 25 Nov 2014
You need to do color segmentation. Changing the brown cells to white is not the correct approach. If you have the stats toolbox, try this demo: http://www.mathworks.com/products/demos/image/color_seg_k/ipexhistology.html
If you don't have that toolbox, try to tweak the settings in my "Simple color detection by hue" demo here: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862

Sign in to comment.

More Answers (1)

Meghana Dinesh
Meghana Dinesh on 25 Nov 2014
I assume your image is an RGB image. Use this to get only the red plane:
Image_r = Image(:,:,1)
You have to know the intensity value of the color which you wish to replace.
You can use the 'find' command in MATLAB.
ind_plain = find(Image_r == old_value);
Image_new (ind_plain) = new_value;
  3 Comments
Meghana Dinesh
Meghana Dinesh on 25 Nov 2014
Out of the MXNX3 (24 bit) image, this extracts the first plane, i.e., Red plane:
Image_r = Image(:,:,1)
Suppose the value of "brown pixel" that you want to replace is 120.
ind_plain = find(Image_r == 120);
"ind_plain" contains the indices of all pixels with those values
Image_r (ind_plain) = 255
Now, the corresponding pixels in red plane is changed to 255.
Similarly, extract the blue and green planes:
Image_Blue = Image(:,:,2);
Image_Green = Image(:,:,3);
Replace the same pixel indices with 255 (for white, R, G and B is 255)
Image_Blue (ind_plain) = 255;
Image_Green(ind_plain) = 255;
New_image = (Image_r, Image_Blue,Image_Green)
To get a better understanding, you can execute these and observe the results in each stage.
Umer Siddique
Umer Siddique on 25 Nov 2014
Thank you Sanya for the help :)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!