# convert matrix to rgb

조회 수: 125 (최근 30일)
Philipp 2012년 8월 6일
댓글: DGM 2023년 1월 15일
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

댓글을 달려면 로그인하십시오.

### 채택된 답변

Matt Fig 2012년 8월 6일
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이전 댓글 3개 표시이전 댓글 3개 숨기기
Mathieu 2015년 8월 12일
Thank you so Much Matt, very helpful!!
DGM 2023년 1월 15일
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')

댓글을 달려면 로그인하십시오.

### 추가 답변 (3개)

Jurgen 2013년 5월 1일
The FEX has mat2im and real2rgb. Can recommend both!
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Jurgen 2013년 5월 1일
Just noticed this thread was old...

댓글을 달려면 로그인하십시오.

Image Analyst 2012년 8월 6일
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이전 댓글 -2개 표시이전 댓글 -2개 숨기기

댓글을 달려면 로그인하십시오.

Walter Roberson 2012년 8월 6일

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Blue에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by