将灰度图像转换为 rgb 图像并在 matlab 中将其替换为 imread()

Posted

技术标签:

【中文标题】将灰度图像转换为 rgb 图像并在 matlab 中将其替换为 imread()【英文标题】:convert gray images to rgb images and replace it by imread() in matlab 【发布时间】:2021-12-15 13:10:09 【问题描述】:

我有一个包含 15k 灰度图像的数据集

我需要通过 matlab 中的数据集训练 Alexnet -pretrained 模型。但是 Alexnet 接受大小为 [227 * 227 * 3] 的 RBG 图像

是否可以将灰度图像转换为 RGB 图像?

我试过这个代码

 im = imread(filename);
    im = imresize(im,[227,227]);
    RGB_Image = cat(3, im,im,im);
    imshow(filename);

但是我发现了这个错误:

Multi-plane image inputs must be RGB images of size MxNx3.

【问题讨论】:

请显示完整的错误消息,包括堆栈跟踪。了解错误发生的何处与了解消息本身一样重要。 【参考方案1】:

在更广泛的色彩空间方面,无法将灰度图像转换为 rgb。但是你只想将[227,227,1]的数据结构表示为[227,227,3]的数据结构。

原来的OP代码如下。 imread 返回一个大小为 227,227,3 的数组。然后 imresize 将再次返回一个 227,227,3 数组。最终 cat 将重新创建一个 227,227,9 数组。因此,我们需要在 imread 之后强制转换数据结构。

在matlab中:

 im = imread(filename);
 im = rgb2gray(im);
 rgb_im = repmat(im, [1, 1, 3]); % or cat(3,im,im,im)
 imshow(rgb_im);

在python中:

im = matplotlib.pyplot.imread(filename)
im.resize([227,227,1])
rgb_im = numpy.matlib.reshape(numpy.matlib.repmat(im, 1, 3),[227,227,3])
matplotlib.pyplot.imshow(rgb_im)

【讨论】:

“无法将灰度图像转换为 rgb”——是的,可以。 另外,repmat 与 OP 的 cat 解决方案有何不同?结果应该是相同的。 如果您正确使用 cat 中的“dim”参数,应该没有区别。 OP 得到了 dim 参数。 imread 返回一个大小为 227,227,3 的数组。然后 imresize 将再次返回一个 227,227,3 数组。最终 cat 将重新创建一个 227,227,9 数组。 是的,这是一个很好的解释。你为什么不在你的答案中写下这个?然后,您提供具有教育意义且值得支持的内容。我认为最好的答案可以解释为什么会出现错误消息,以及为什么建议的解决方案有效。

以上是关于将灰度图像转换为 rgb 图像并在 matlab 中将其替换为 imread()的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎么将灰度图像转为rgb图像

用matlab将索引图像转换为RGB图像

matlab怎么读取一幅图像,并转换为灰度图像

matlab怎么读取一幅图像,并转换为灰度图像

matlab将视频帧转换成灰度图程序解释

Python如何将RGB图像转换为Pytho灰度图像?