如何使用 Numpy Slices 高效裁剪多个图像?

Mary-Kate Olsen
发布: 2024-11-02 02:36:03
原创
295 人浏览过

How to Efficiently Crop Multiple Images Using Numpy Slices?

高效地使用多个 Numpy 切片进行随机图像裁剪

这个问题寻求一种有效的方法来从包含 4 的 numpy 数组中执行随机图像裁剪三维图像。目标是从四个图像中提取 16x16 窗口裁剪,确保每个图像都有不同的裁剪。

一个建议的解决方案采用简单的 for 循环为每个图像生成随机偏移,并将这些偏移应用于 numpy 切片。然而,为了在不牺牲内存开销的情况下实现最佳效率,我们探索了替代方法。

利用步幅和花式索引

一种方法涉及利用 numpy 的 stride_tricks.as_strided 来创建滑动充当输入数组视图的窗口。这避免了内存重复并提供了虚拟自由操作。

scikit-image 的 view_as_windows 函数通过创建具有指定窗口大小的滑动窗口并沿其他维度滑动轴来简化此过程。使用此函数,我们可以有效地提取所需的 16x16 窗口裁剪,确保每个图像的随机偏移。

实现

提供的 Python 代码演示了 view_as_windows 的应用实现随机图像裁剪,同时保持高效的内存占用:

<code class="python">from skimage.util.shape import view_as_windows

# Obtain sliding windows
w = view_as_windows(X, (1,16,16,1))[...,0,:,:,0]

# Retrieve specific windows using random offsets
out = w[np.arange(X.shape[0]), x, y]

# Rearrange to match the output format of the loop-based approach
out = out.transpose(0,2,3,1)</code>
登录后复制

这种方法提供了与基于循环的方法相比,更有效的随机图像裁剪解决方案,同时有效解决内存开销问题。

以上是如何使用 Numpy Slices 高效裁剪多个图像?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!