如何把灰度图变为rgb图像

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));

然而,这些颜色并不是虹膜的原始颜色,就像你用彩色相机拍下的那样。

猜你喜欢

转载自blog.csdn.net/weixin_40758748/article/details/86769434
今日推荐