使用 Numpy 切片进行高效图像裁剪
为了寻求一种使用 Numpy 切片裁剪图像的优化方法,一位用户质疑了跨步的可行性 -基于单次生成随机裁剪的方法。
基于步幅的补丁提取
响应建议利用 np.lib.stride_tricks.as_strided 或 scikit-image 的 view_as_windows用于创建输入数组的滑动窗口视图。此方法保持内存效率,且不会产生任何额外开销。
View_as_Windows 说明
view_as_windows 允许用户指定一个 window_shape 参数,表示沿每个维度的滑动窗口大小输入数组。不用于切片的轴接收值 1。切片后,生成的数组包含与这 1 个值相对应的单一维度(长度 1)的视图。
解决方案
建议的解决方案包括利用 view_as_windows 提取滑动窗口,然后根据随机生成的偏移量对这些窗口进行索引:
<code class="python"># Get sliding windows w = view_as_windows(X, (1, 16, 16, 1))[..., 0, :, :, 0] # Index and get specific windows out = w[np.arange(X.shape[0]), x, y] # Reshape to match loopy code format (optional) out = out.transpose(0, 2, 3, 1)</code>
这种方法可以有效地裁剪每个图像具有不同随机偏移量的图像,从而无需for 循环。
以上是Numpy Slices 可以用于高效的随机图像裁剪吗?的详细内容。更多信息请关注PHP中文网其他相关文章!