Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memangkas Berbilang Imej Dengan Cekap Menggunakan Slices Numpy?
Dengan Cekap Menggunakan Pelbagai Kepingan Numpy untuk Pemotongan Imej Rawak
Soalan ini mencari cara yang cekap untuk melakukan pemotongan imej rawak daripada tatasusunan numpy yang mengandungi 4 -imej berdimensi. Matlamatnya adalah untuk mengekstrak tanaman tetingkap 16x16 daripada setiap empat imej, memastikan pemangkasan yang berbeza untuk setiap imej.
Satu penyelesaian yang dicadangkan menggunakan gelung mudah untuk menjana offset rawak untuk setiap imej dan menggunakan offset tersebut pada kepingan numpy . Walau bagaimanapun, untuk mencapai kecekapan optimum tanpa mengorbankan overhed memori, pendekatan alternatif diterokai.
Memanfaatkan Langkah dan Pengindeksan Mewah
Satu pendekatan melibatkan memanfaatkan stride_tricks.as_strided numpy untuk mencipta sliding tetingkap yang bertindak sebagai pandangan ke dalam tatasusunan input. Ini mengelakkan pertindihan memori dan menyediakan operasi percuma maya.
fungsi view_as_windows scikit-image memudahkan proses ini dengan mencipta tingkap gelongsor dengan saiz tetingkap dan paksi gelongsor yang ditentukan di sepanjang dimensi lain. Menggunakan fungsi ini, kami boleh mengekstrak pemangkasan tetingkap 16x16 dengan cekap, memastikan pengimbangan rawak untuk setiap imej.
Pelaksanaan
Kod Python yang disediakan menunjukkan aplikasi view_as_windows kepada mencapai pemangkasan imej rawak sambil mengekalkan jejak memori yang cekap:
<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>
Pendekatan ini menawarkan penyelesaian yang lebih cekap untuk pemangkasan imej rawak berbanding kaedah berasaskan gelung sambil menangani kebimbangan overhed memori secara berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Memangkas Berbilang Imej Dengan Cekap Menggunakan Slices Numpy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!