首頁 > 後端開發 > Python教學 > 如何使用 NumPy 切片有效地裁剪隨機圖像塊?

如何使用 NumPy 切片有效地裁剪隨機圖像塊?

Susan Sarandon
發布: 2024-11-03 05:12:30
原創
1003 人瀏覽過

How can I efficiently crop random image patches using NumPy slicing?

高效使用多個Numpy 切片進行隨機圖像裁剪

簡介:
在機器學習和計算機視覺中在應用程式中,影像裁切是模型訓練或推理之前預處理影像的關鍵任務。裁剪有助於提取相關的興趣區域並降低處理大圖像的計算複雜度。

高效裁剪方法:
基於循環的裁剪方法,如問題所示,可以是對於大型資料集計算效率低下。為了解決這個問題,我們可以利用 numpy 的高級索引和基於跨步的方法。

利用基於跨步的方法:
Numpy 的 np.lib.stride_tricks.as_strided 函數允許提取跨步不複製資料的陣列視圖。此技術可與 scikit-image 的 view_as_windows 函數結合使用,在輸入影像陣列上建立滑動視窗。

滑動視窗的說明:
view_as_windows 在輸入中建立視圖數組數組,其中每個視圖代表一個滑動視窗。 window_shape 參數指定滑動視窗的形狀。透過為我們不想滑動的軸傳遞 1,我們可以建立單一維度,稍後可以對其進行索引以獲得所需的裁剪視窗。

程式碼實作:
以下程式碼示範了使用滑動視窗的高效裁切方法:

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

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

# Index and retrieve specific windows
out = w[np.arange(X.shape[0]), x, y]

# Rearrange format
out = out.transpose(0, 2, 3, 1)</code>
登入後複製

此程式碼有效地為每個影像產生隨機( x_offset, y_offset) 對,並將對應的16x16 裁切提取到形狀數組(4, 16, 16, 3),不會產生不必要的記憶體開銷。

以上是如何使用 NumPy 切片有效地裁剪隨機圖像塊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板