フィルターのクリア

Changing pixel color to white

19 ビュー (過去 30 日間)
Umer Siddique
Umer Siddique 2014 年 11 月 25 日
コメント済み: Umer Siddique 2014 年 11 月 25 日

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.

採用された回答

Image Analyst
Image Analyst 2014 年 11 月 25 日
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 件のコメント
Image Analyst
Image Analyst 2014 年 11 月 25 日
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
Umer Siddique
Umer Siddique 2014 年 11 月 25 日
Thanks alot :)

サインインしてコメントする。

その他の回答 (1 件)

Meghana Dinesh
Meghana Dinesh 2014 年 11 月 25 日
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 件のコメント
Meghana Dinesh
Meghana Dinesh 2014 年 11 月 25 日
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 2014 年 11 月 25 日
Thank you Sanya for the help :)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImage Segmentation and Analysis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by