![0000 Screenshot.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/200565/0000%20Screenshot.png)
problem displaying a satellite image
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
dakhli mohamed
el 10 de En. de 2019
Comentada: Image Analyst
el 11 de En. de 2019
Hello
I have a problem displaying a satellite image. I want to go from a grayscale image to a color image, and more precisely the zonne that has black pixels, I want to make it red (image attached).
0 comentarios
Respuesta aceptada
Image Analyst
el 11 de En. de 2019
That's not a gray scale image you attached, it's an RGB image. So try this
rgbImage = imread('C1fig.jpg');
whos rgbImage
subplot(2, 1, 1);
imshow(rgbImage);
title('Original RGB image C1fig.jpg');
axis('on', 'image');
impixelinfo
mask = rgbImage(:, :, 1) == 0;
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
redChannel(mask) = 255;
greenChannel(mask) = 0;
blueChannel(mask) = 0;
% Recombine separate color channels into a single, true color RGB image.
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
subplot(2, 1, 2);
imshow(rgbImage);
axis('on', 'image');
impixelinfo
title('Altered RGB image');
![0000 Screenshot.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/200565/0000%20Screenshot.png)
If it really is a gray scale image, you can try this:
grayImage = imread('C1fig.jpg');
if ndims(grayImage) == 3;
grayImage = rgb2gray(grayImage);
end
whos grayImage
subplot(2, 1, 1);
imshow(grayImage);
title('Original image C1fig.jpg');
axis('on', 'image');
impixelinfo
mask = grayImage == 0;
% Initialize the individual red, green, and blue color channels.
redChannel = grayImage;
greenChannel = grayImage;
blueChannel = grayImage;
redChannel(mask) = 255;
greenChannel(mask) = 0;
blueChannel(mask) = 0;
% Recombine separate color channels into a single, true color RGB image.
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
subplot(2, 1, 2);
imshow(rgbImage);
axis('on', 'image');
impixelinfo
title('Altered RGB image');
2 comentarios
Image Analyst
el 11 de En. de 2019
If white is more than 250 or so, do this:
mask = grayImage >= 250;
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!