【问题标题】:Understanding the shape of skimage.view_in_windows了解 skimage.view_in_windows 的形状
【发布时间】:2021-05-04 20:45:12
【问题描述】:

在将skimage 中的view_in_windows 应用于rgb 图像(221,95,3) 后,我留下了output 形状(217, 91, 1, 5, 5, 3)

我假设output.shape[3]output.shape[4] 是窗口的高度和宽度,而output.shape[5] 是原始通道数。

谁能解释一下output.shape 中的前两个数字是什么,以及我如何能够获得与(No. windows, height, width, No. channels) 对应的形状,因为我的任务与为图像分类准备输入有关。

到目前为止我所拥有的一切:

step = 1
window = 5
output = view_as_windows(input_image, (window, window, 3), step=step)```

【问题讨论】:

    标签: python numpy image-processing scikit-image


    【解决方案1】:

    前两个数字是沿图像高度和宽度的窗口数。由于窗口具有 (5, 5) 形状,因此不能沿行容纳 221 个窗口,只能容纳 217 个。列同上。

    作为一维类比,如果您有np.arange(4) 作为输入,并且您想要一个大小为 3 的滑动窗口,则只能容纳两个窗口,(0, 1, 2) 和 (1, 2, 3 )。

    您可以在开始时使用np.pad 填充图像以获得与像素相同的窗口数量,或者只使用缩小的图像大小。

    至于重塑,在这种情况下很容易:

    step = 1
    window = 5
    window_shape = (window, window, 3)
    output_raw = view_as_windows(input_image, window_shape, step)
    output = output.reshape((-1,) + window_shape)
    

    但是请注意,虽然output_raw 使用numpy.lib.stride_tricks.as_strided 以零复制在数组中生成视图,但步幅技巧无法表示 @987654327 @(带有重塑),因此您将创建一个 np.product(output_raw.shape) 元素数组,在本例中约为 1.5M。这很快就会失控。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 2021-10-15
      • 2019-02-21
      • 2021-04-09
      • 1970-01-01
      • 2020-08-21
      • 2020-10-03
      • 1970-01-01
      相关资源
      最近更新 更多