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

时间:2019-02-08 07:09:43

标签: python image resize grayscale channels

我有不同尺寸的灰度图像,因此在进行实验时需要将它们转换为相同尺寸(例如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”,我也得到类似的结果。

1 个答案:

答案 0 :(得分:1)

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


如果您希望获得灰度图像,请确保得到的是灰度图像。因此,请更改此内容:

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

收件人:

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

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

  • PIL.Image.NEAREST
  • PIL.Image.BOX
  • PIL.Image.BILINEAR
  • PIL.Image.HAMMING
  • PIL.Image.BICUBIC
  • PIL.Image.LANCZOS

因此,您需要用上述行中上面列表中的内容替换ANTI_ALIAS

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

另存为PNG时,它总是无损。品质因数与JPEG图像的作用不同,因此,除非您对它如何影响PNG编码器有很好的了解,否则应将其忽略。


如果您进行这些更改(尤其是第一个更改),我认为您的问题将消失。请记住,尽管PNG编码器可以拍摄RGB图像并将其保存为货盘图像,或者可以拍摄灰度图像并将其编码为RGB或RGB alpha。

相关问题