繁体   English   中英

有没有办法在不更改图像的情况下将灰度图像转换为RGB图像?

[英]Is there a way to convert a grayscale image to an RGB image without altering the image?

我正在尝试使用EMNIST数据训练一个resnet50模型,该模型是一个包含300k字母和数字图像的数据集。 Resnet50需要3维图像作为其输入,而不是灰度图像,因此我尝试将所有灰度图像都转换为RGB,但它却不能像我想要的那样工作。 当我使用pyplot.imshow查看它们时,RGB图像确实与灰度图像不同,这是奇怪的,因为这些命令实际上只是在3维上复制粘贴相同的灰度矩阵。

下面是我尝试过的3个命令:

> resizedImageRGB = cv2.cvtColor(resizedImage,cv2.COLOR_GRAY2RGB)
> resizedImageRGB = np.repeat(resizedImage[:,:,np.newaxis],3,-1) arr =
> np.expand_dims(resizedImage, axis=2) resizedImageRGB =
> np.concatenate((arr,arr,arr), axis=2)

字母之一的灰度和RGB图像分别给出:

灰度图像

RGB图像

从灰度到RGB近似在数学上很难。 考虑从RGB到灰度值Y的公式(之一):

Y = 0.299R + 0.587G + 0.114B

现在您可以想象,朝另一个方向尝试从Y导出R,G和B值需要太多的信息(1个等式3个未知数)。 人们实际上将神经网络用于此类工作。

相反,适合您的方法是相反的方法。 也就是说,如果您只能访问灰度数据(或与此相关的1通道数据),则应修改网络以使其接受正确的输入。

我不确定您要从问题中使用什么库或确切的代码,但是总的来说这应该不太难。

通常,您在网上找到的代码具有使用提供的正确输入参数为您创建这些网络的功能。

def ResNET(shape=(256,256,3), ...):
    some_code()

那么您通常可以只传递自己的输入:

net = ResNET(shape=(256,256,1))

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM