使用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中文網其他相關文章!