为什么调整图像大小会导致通道增加



我有不同维度的灰度图像,所以我需要将它们转换为相同的维度(比如28*28)进行实验。我试着用不同的方法来做,我能够做到,但我观察到图像的大小调整会导致通道数量的增加。我是python和图像处理的新手,所以请帮忙。

from PIL import Image
image = Image.open('6.tif')
image = image.resize((28, 28), Image.ANTIALIAS)
image.save('6.png', 'PNG', quality=100)

然后下面的代码显示不同的维度:

import imageio
image_data = imageio.imread("6.tif").astype(float)
print(image_data.shape)
image_data = imageio.imread("6.png").astype(float)
print(image_data.shape)

结果是:

(65, 74)
(28, 28, 4)

我不需要最后一个维度。这是怎么回事?即使使用"从resizeimage导入resizeimage",我也会得到类似的结果。

您的代码有很多问题。。。


如果您希望得到灰度图像,请确保得到的是灰度图像。所以,改变这个:

image = Image.open('6.tif')

至:

image = Image.open('6.tif').convert('L')

调整图像大小时,需要使用正确的重采样方法之一:

  • PIL。形象最近的
  • PIL。形象箱子
  • PIL。形象双线性
  • PIL。形象锤击
  • PIL。形象双立方的
  • PIL。形象LANCZOS

因此,您需要将ANTI_ALIAS替换为此行上列表中的内容:

image = image.resize((28, 28), Image.ANTIALIAS)

当您保存为PNG时,总是损失较少。质量因子的作用与JPEG图像不同,因此除非您很好地了解它对PNG编码器的影响,否则应忽略它。


如果你做出这些改变,特别是第一个,我认为你的问题会消失。请记住,PNG编码器可以获取RGB图像并将其保存为托盘图像,也可以获取灰度图像并将它编码为RGB或RGB alpha。

最新更新