用于随机图像裁剪的高效 Numpy 切片
用于从表示多个彩色图像的 4D Numpy 数组中高效裁剪随机 16x16 块(其中第一个维度是图像的数量,第二个和第三个维度是相等的宽度和高度),基于跨步的方法可以是
利用 np.lib.stride_tricks.as_strided 或 scikit-image 的 view_as_windows
这些方法创建滑动窗口作为输入数组的视图,从而减少内存开销。 Scikit-image 的 view_as_windows 通过将窗口形状指定为元组(其元素对应于输入数组的维度)来简化设置。滑动的轴指定窗口长度,其他轴设置为1。
代码示例
# Import scikit-image for view_as_windows
from skimage.util.shape import view_as_windows
# Get sliding windows
w = view_as_windows(X, (1,16,16,1))[...,0,:,:,0]
# Generate random per-image offsets
x = np.random.randint(0,12,X.shape[0])
y = np.random.randint(0,12,X.shape[0])
# Index and extract specific windows
out = w[np.arange(X.shape[0]),x,y]
# Reformat if necessary
out = out.transpose(0,2,3,1)
此代码生成四个随机 (x_offset, y_offset) 对,并在给定参数内提取 4 个随机 16x16 补丁,内存开销最小。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3