Penghirisan Numpy yang Cekap untuk Pemotongan Imej Rawak
Untuk pemangkasan tompok 16x16 rawak yang cekap daripada tatasusunan Numpy 4D yang mewakili imej berbilang warna (di mana dimensi pertama ialah bilangan imej, dan yang kedua dan ketiga ialah lebar dan tinggi yang sama), pendekatan berasaskan langkah boleh digunakan.
Menggunakan np.lib.stride_tricks.as_strided atau scikit- image's view_as_windows
Kaedah ini mencipta tetingkap gelongsor sebagai pandangan ke dalam tatasusunan input, mengurangkan overhed memori. Scikit-image's view_as_windows memudahkan persediaan dengan menentukan bentuk tetingkap sebagai tuple yang elemennya sepadan dengan dimensi tatasusunan input. Paksi untuk gelongsor ditetapkan panjang tetingkap dan paksi lain ditetapkan kepada 1.
Contoh Kod
<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>
Kod ini menjana empat pasangan rawak (x_offset, y_offset) dan mengekstrak 4 tampalan rawak 16x16 dalam parameter yang diberikan, dengan overhed memori minimum.
Atas ialah kandungan terperinci Bagaimana untuk Memangkas Tampalan Imej Rawak dengan Cekap daripada Array Numpy 4D menggunakan Penghirisan Berasaskan Berjalur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!