Convert an RGB image to grayscale but keep one color?
Mostrar comentarios más antiguos
A = imread('C:\FFOutput\gdgf\B.jpg'); B = rgb2gray(A); figure(1),imshow(B);
I have converted the image to a grayscale but don't know how to keep one color especially green.
Respuestas (4)
yonatan gerufi
el 7 de Sept. de 2014
Editada: yonatan gerufi
el 7 de Sept. de 2014
Hi, there are several ways to do it,
i find it easy to do:
red_color = A(:,:,1);
green_color = A(:,:,2);
blue_color = A(:,:,3);
1 comentario
Jaja
el 7 de Sept. de 2014
Image Analyst
el 7 de Sept. de 2014
0 votos
I just answered this an hour ago for someone. See my comment http://www.mathworks.com/matlabcentral/answers/153732-question-concerning-color-segmentation-performance#comment_235875

3 comentarios
Image Analyst
el 7 de Sept. de 2014
Code is attached.
Jaja
el 25 de Sept. de 2014
Image Analyst
el 25 de Sept. de 2014
Why? That's pretty much what the original image is already.
Refer to this answer for more details on how this can be done. While that link includes multiple methods, I'm going to use MIMT replacepixels() for ease of use.
% this is a color image
rgbpict = imread('coloredChips.png');

% create a grayscale copy by some means
graypict = rgb2gray(rgbpict); % BT601 luma
% HSV ranges for masking
rangeR = [0.963 0.016; 0.258 1; 0.338 1];
rangeG = [0.380 0.453; 0.258 1; 0.338 1];
% create masks to select objects of specified colors
hsvpict = rgb2hsv(rgbpict);
maskR = all(hsvpict >= permute(rangeR(:,1),[2 3 1]),3) ...
| all(hsvpict <= permute(rangeR(:,2),[2 3 1]),3);
maskG = all(hsvpict >= permute(rangeG(:,1),[2 3 1]),3) ...
& all(hsvpict <= permute(rangeG(:,2),[2 3 1]),3);
% clean the masks
maskR = bwareaopen(maskR,100);
maskG = bwareaopen(maskG,100);
% composite the color and gray images using the masks
% replacepixels is from MIMT
outpictR = replacepixels(rgbpict,graypict,maskR);
outpictG = replacepixels(rgbpict,graypict,maskG);


Categorías
Más información sobre Image Arithmetic en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!