Python 双线性/双三次插值是否在每个颜色通道上独立运行?

Python 双线性/双三次插值是否在每个颜色通道上独立运行?,python,scipy,interpolation,bicubic,bilinear-interpolation,Python,Scipy,Interpolation,Bicubic,Bilinear Interpolation,我正在使用scipy.ndimage.interpolation.zoom进行双线性插值或双三次插值(如果我正确的话,顺序为1或3) 使用RGB图像时,双线性/双三次插值算法是否在每个颜色通道上独立运行,或者颜色通道之间是否存在某种依赖关系?nImage.interpolation.zoom没有RGB通道的概念;它可以缩放任意的n维数组,对每个维度没有任何特殊意义。例如,如果将图像存储为形状数组(20,20,3),则在缩放(图像,2)后,它将成为形状数组(40,40,6),这当然是不可取的 大

我正在使用
scipy.ndimage.interpolation.zoom
进行双线性插值或双三次插值(如果我正确的话,顺序为1或3)


使用RGB图像时,双线性/双三次插值算法是否在每个颜色通道上独立运行,或者颜色通道之间是否存在某种依赖关系?

nImage.interpolation.zoom
没有RGB通道的概念;它可以缩放任意的n维数组,对每个维度没有任何特殊意义。例如,如果将图像存储为形状数组
(20,20,3)
,则在
缩放(图像,2)
后,它将成为形状数组
(40,40,6)
,这当然是不可取的

大概您将使用
zoom(图像,(2,2,1))
在两个维度上进行2倍的缩放,而在通道维度上不进行“缩放”。如果是这样,那么渠道之间就没有溢出。阅读的C代码,我看到缩放是通过执行一维样条插值(不是双线性或双三次)实现的。这意味着缩放将包括:

  • 检查每个1D切片
    图像[:,c,ch]
    并通过1D插值进行缩放(切片之间没有交互)
  • 检查每个1D切片
    图像[r,:,ch]
    ,并通过1D插值进行缩放
  • 检查每一个1D切片
    图像[r,c,:]
    并通过1D插值进行缩放-缩放因子为1时,数值将保持不变,直至机器精度
  • 上述测试:缩放整个图像与分别缩放每个通道

    import numpy as np
    from scipy.ndimage.interpolation import zoom
    image = np.random.uniform(size=(20, 20, 3))
    output = zoom(image, (2, 2, 1))
    for k in range(3):
        output_channel = zoom(image[:, :, k], 2)
        print(np.max(np.abs(output_channel - output[:, :, k])))
    
    打印值约为1e-15,即输出相同,直至出现浮点错误