convert matrix to rgb
86 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
dear matlab developers,
i have a double matrix (MxN). is there a way to convert it to RGB?
when i use imagesc(matrix), all the values are color coded and displayed, but is there a way to write the RGB values into a new array (MxNx3)?
br philipp
0 Kommentare
Akzeptierte Antwort
Matt Fig
am 6 Aug. 2012
I wonder if this is what you mean, Philipp?
% Say this is the given matrix:
G = rand(10,10)*300 - 100;
% Use IMAGESC to plot G.
figure('pos',[100 100 1000 800]);
% colormap(copper) % You realize this affects final image (H)?
subplot(1,2,1)
imagesc(G);
title('IMAGESC (MxN)')
% Now make an RGB image that matches display from IMAGESC:
C = colormap; % Get the figure's colormap.
L = size(C,1);
% Scale the matrix to the range of the map.
Gs = round(interp1(linspace(min(G(:)),max(G(:)),L),1:L,G));
H = reshape(C(Gs,:),[size(Gs) 3]); % Make RGB image from scaled.
subplot(1,2,2)
image(H) % Does this image match the other one?
title('IMAGE (MxNx3)')
5 Kommentare
DGM
am 15 Jan. 2023
You could also use ind2rgb() with the desired colortable.
% create a 2D array that's not in standard image data scale
myarray = repmat(linspace(-1,1,200),[100,1]);
% create whatever color table
CT = jet(256);
% rescale to index range (multiple ways to do this)
%scaledpict = round(rescale(double(myarray),1,size(CT,1))); % R2017b+
%scaledpict = gray2ind(mat2gray(myarray),size(CT,1)); % IPT
scaledpict = round(1 + mat2gray(myarray)*(size(CT,1)-1));
% convert to RGB
outpict = ind2rgb(scaledpict,CT);
% display it
imshow(outpict)
% or save it
imwrite(outpict,'mypicture.png')
Weitere Antworten (3)
Image Analyst
am 6 Aug. 2012
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
Cast to uint8 if you want to display or save to a file. Scale to 0-255 if it's not already in that range. mat2gray() might help.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Colormaps finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!