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



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

Name           Size                Bytes  Class      Attributes
mask         308x206               63448  logical              
origImg      308x206x3            190344  uint8                

掩码是通过制造一部分图像白色而产生的,其余的是黑色的(在Windows Paint(例如Windows Paint(的简单软件中(。

我想将灰度图像用作origImg,并在Windows Paint中从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_pathtomy_customimage.png');
mask=imread('G:the_pathtomy_customimage_mask.png');
% I have to do something here to make it work.
whos;
% Rest of the code...

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

用灰度图像制作RGB图像,该图像仍然显示为灰度图像,您可以使用

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

只需重复RGB图像的每个通道的灰度图像。

对于面具,您必须相反。由于我不知道您的image_mask.png文件,因此我认为它是仅使用黑白的RGB图像。在这种情况下,所有三个频道都是相同的,您可以简单地将其中一个用于面具,都没关系:

mask = mask(:,:,1);

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

mask=logical(mask);

最新更新