为什么scipy.ndimage zoom添加新频道?

时间:2018-07-25 10:29:36

标签: python python-3.x image scipy image-zoom

当我发现执行缩放时python scipy.ndimage.zoom自动添加新频道时,我感到很惊讶:

from scipy.misc import imread
from scipy.ndimage import zoom
img = imread('lena.jpg')
img=imread('lena.jpg')
img.shape
(468, 792, 3)
x = zoom(img, 1.0)
x.shape
(468, 792, 3)
x = zoom(img, 1.5)
x.shape
(702, 1188, 4)
x = zoom(img, 2)
x.shape
(936, 1584, 6)

宽度,高度尺寸正确,我无法理解其他尺寸的来源。

这种奇怪的行为仅在彩色图像上表现出来:

x = zoom(img[:, :, 0], 2)
x.shape
(936, 1584)

1 个答案:

答案 0 :(得分:0)

ndimage.zoom对频道(或图像)一无所知。它使用n维数组进行操作。如果给定形状为(9, 5, 3)的数组,并要求将其缩放2倍,则将生成形状为(9*2, 5*2, 3*2)的数组,(18, 10, 6)

当然,当第三个轴是颜色通道时,这不是您想要的。使用每轴缩放,将最后一个轴的缩放设置为1:

zoom(img, (2, 2, 1))