我有一个代码要运行,它使用原始图像和掩码图像。代码假定原始图像是RGB,但我的原始图像是灰度。这必须是运行代码时MATLAB whos命令的结果:
Name Size Bytes Class Attributes
mask 308x206 63448 logical
origImg 308x206x3 190344 uint8 面具是通过使图像的一部分变成白色,其余的是黑色(在一个简单的软件,如windows油漆)。
我希望使用灰度图像作为origImg,并从origImg中生成窗口涂料中的掩码,但是当我想使用带有属性的自定义照片时,MATLAB whos命令的结果如下所示:
Name Size Bytes Class Attributes
mask 490x640x3 940800 uint8
origImg 490x640 313600 uint8 我必须将origImage维度转换为x3,从掩码中删除x3,并将其类从unit8转换为逻辑。在这种情况下,我认为代码应该正常工作。
为了达到这个目标,我应该做些什么来为origImg和mask做好准备?
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...发布于 2019-07-03 22:10:10
我不确定我是否正确地理解了你。
若要从仍然显示为灰度图像的灰度图像中生成RGB图像,可以使用
origImg = repmat(origImg,1,1,3);它只会重复RGB图像的每一个通道的灰度图像。
对于面具,你必须做相反的事情。因为我不知道您的image_mask.png文件,所以我假设它是一个只使用黑白的RGB图像。在这种情况下,所有三个通道都是相同的,您可以简单地使用其中一个作为掩码,而不管哪个通道:
mask = mask(:,:,1);若要将其转换为逻辑,请使用
mask=logical(mask);https://stackoverflow.com/questions/56876788
复制相似问题