rgb图像化为灰度图是很容易的,matlab具有自带函数。
灰度图化为rgb图像:Google所得到的参考答案:
https://www.mathworks.com/matlabcentral/answers/377407-how-to-convert-grayscale-to-rgb
https://www.mathworks.com/matlabcentral/answers/69368-how-to-convert-gray-scale-image-into-rgb-image
https://www.cnblogs.com/minisculestep/p/4878894.html
翻译如下:
问题:如何转变灰度图为rgb图像?
我使用下面脚本转换灰度图至rgb图像:
[im, map] = imread('frame1.jpg');
if(isempty(map)) % image is RGB or grayscale
if(size(im, 3) == 1) % image is grayscale
im = cat(3, im, im, im);
end
else % image is indexed
im = ind2rgb(im, map);
end
其中 frame1是灰度图。问题是:当我执行imshow(im)时,它仍然没有颜色,但是size(im)是144 176 3,我很困惑,我怎么才能得到有颜色的图像呢?
答:
所有的代码都在执行:
im=cat(3,im,im,im)
创建了144x176x3矩阵,其中im(:,:,1)与im(:,:,2)相同,im(:,:,3)相同。因此,红色、绿色和蓝色的分量是相同的,因此图像仍然是“灰度图”
您可以使用ind2rgb()应用各种颜色映射
map = hsv(256); % Or whatever colormap you want.
rgbImage = ind2rgb(im, map); % im is a grayscale or indexed image.
使用颜色映射类型,因为您对感兴趣的颜色区域感兴趣,我认为任何颜色映射格式都足够了。例子:
close all
clear
clc % just to clear things up
I=imread('333.jpg');
R=rgb2gray(I); % It is gray now
y=colormap(hot(110));
imwrite(R,y,'rgb.jpg','jpg'); % Re-change it to colored one
imshow('rgb.jpg');
如果您的初始图像是单色的,则无法确定原始颜色。你不能。如果你只有灰度图像就不是这样了。
可以使用cat()将灰度图像转换为RGB图像:
rgbImage = cat(3, grayImage, grayImage, grayImage);
当然,它会看起来所有的灰度,即使它是一个“真正的颜色”RGB图像-只是所有的“颜色”都是灰色的。您可以对灰度值应用伪颜色查找表,将每个灰度值映射到某个颜色,以得到一个多色图像,如下所示:
rgbImage = ind2rgb(grayImage, jet(256));
然而,这些颜色并不是虹膜的原始颜色,就像你用彩色相机拍下的那样。