用于随机图像裁剪的高效 Numpy 切片
用于从表示多个彩色图像的 4D Numpy 数组中高效裁剪随机 16x16 块(其中第一个维度是图像的数量,第二个和第三个维度是相等的宽度和高度),可以使用基于跨步的方法。
利用 np.lib.stride_tricks.as_strided 或 scikit- image 的 view_as_windows
这些方法创建滑动窗口作为输入数组的视图,从而减少内存开销。 Scikit-image 的 view_as_windows 通过将窗口形状指定为元组(其元素对应于输入数组的维度)来简化设置。滑动的轴指定窗口长度,其他轴设置为 1。
代码示例
<code class="python"># 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)</code>
此代码生成四个随机 (x_offset, y_offset) 对并在给定参数内以最小的内存开销提取 4 个随机 16x16 补丁。
以上是如何使用基于跨步的切片从 4D Numpy 数组中高效地裁剪随机图像补丁?的详细内容。更多信息请关注PHP中文网其他相关文章!