将灰度uint8图像转换为RGB uint8图像

时间:2019-07-03 19:27:08

标签: matlab image-processing rgb grayscale

我有一个要运行的代码,该代码使用原始图片蒙版图像。该代码假定原始图像是RGB,但是我的原始图像是灰度。这必须是运行代码时MATLAB whos命令的结果:

Name           Size                Bytes  Class      Attributes

mask         308x206               63448  logical              
origImg      308x206x3            190344  uint8                

通过将图像的一部分变成白色而其余部分变成黑色(在像Windows paint这样的简单软件中)来制作蒙版。

我想使用灰度图像作为origImg并从Windows画图中的origImg生成蒙版,但是在以下情况下,MATLAB whos命令的结果如下我想使用带有属性的自定义照片:

Name           Size                Bytes  Class    Attributes

mask         490x640x3            940800  uint8              
origImg      490x640              313600  uint8              

我必须将origImage维度转换为 x3 ,并从蒙版中删除 x3 ,还要从 unit8转换其类。

strong>改为逻辑。在那种情况下,我认为代码应该可以正常工作。

在这里我该怎么做才能为该目标准备origImgmask

origImg=imread('G:\the_path\to\my_custom\image.png');
mask=imread('G:\the_path\to\my_custom\image_mask.png');
% I have to do something here to make it work.
whos;
% Rest of the code...

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确。

要使用仍显示为灰度图像的灰度图像制作RGB图像,可以使用

origImg = repmat(origImg,1,1,3);

仅对RGB图像的每个通道重复灰度图像。

对于面具,您必须执行相反的操作。由于我不知道您的image_mask.png文件,因此我假设它是仅使用黑白的RGB图像。在这种情况下,所有三个通道都相同,您可以简单地将其中一个用作掩码,而与哪个通道无关:

mask = mask(:,:,1);

要将其转换为逻辑,请使用

mask=logical(mask);