将灰度图像转换为 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()的主要内容,如果未能解决你的问题,请参考以下文章