Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Meningkatkan Pelaksanaan Penapis Purata Bergerak dengan Trik Langkah?
Menggunakan Trik Langkah untuk Pelaksanaan Penapis Purata Pergerakan yang Cekap
Siasatan ini meneroka penggunaan helah langkah untuk membangunkan penapis purata bergerak yang lebih cekap daripada kaedah berasaskan lilitan yang diterangkan dalam catatan sebelumnya. Matlamatnya adalah untuk menapis tatasusunan titik terapung yang besar untuk tugasan yang scipy.ndimage.filters.convolve agak perlahan.
Pendekatan awal menggunakan helah langkah untuk menjana satu siri tatasusunan yang mewakili bahagian atas, tengah dan bawah baris kernel penapis 3x3. Tatasusunan ini kemudiannya dijumlahkan dan dipuratakan untuk menghasilkan output penapis bagi setiap piksel. Walau bagaimanapun, penyoal mencari kaedah yang lebih cekap yang secara langsung boleh mendapatkan jumlah atau nilai individu bagi elemen kernel untuk keseluruhan tatasusunan.
Pendekatan Yang Diperbaiki Menggunakan Trik Langkah Berbilang Dimensi
Penyelesaian yang dipertingkatkan melibatkan penggunaan helah langkah berbilang dimensi untuk mencipta paparan tatasusunan asal di mana setiap elemen mewakili tetingkap bergerak dengan saiz yang dikehendaki. Ini membolehkan untuk menggunakan fungsi arbitrari pada paksi terakhir beberapa kali, mengira purata bergerak atau ukuran statistik lain yang dikehendaki pada tetingkap gelongsor.
Contoh Kod
<code class="python">import numpy as np def rolling_window(array, window): """Multidimensional moving window function""" # Validate window dimensions if not hasattr(window, '__iter__'): return rolling_window_lastaxis(array, window) for i, win in enumerate(window): if win > 1: array = array.swapaxes(i, -1) array = rolling_window_lastaxis(array, win) array = array.swapaxes(-2, i) return array filtsize = (3, 3) array = np.arange(100).reshape((10, 10)) windowed_array = rolling_window(array, filtsize) blurred_array = windowed_array.mean(axis=-1).mean(axis=-1)</code>
Kelebihan Penyelesaian Dipertingkat
Penghadan
Walaupun demikian kelebihan, adalah penting untuk ambil perhatian bahawa menggunakan helah langkah untuk tetingkap bergerak multidimensi boleh membawa kepada peningkatan penggunaan memori. Oleh itu, pertimbangan yang teliti harus diberikan kepada sumber yang tersedia dan saiz tatasusunan input.
Perbandingan dengan scipy.ndimage
Sementara helah langkah menawarkan faedah fleksibiliti dan vektorisasi , fungsi scipy.ndimage biasanya lebih cekap memori dan dioptimumkan untuk tugas pemprosesan imej berbilang dimensi. Untuk tatasusunan yang besar, scipy.ndimage.uniform_filter disyorkan sebagai pilihan yang lebih pantas dan lebih mantap untuk menggunakan penapis purata bergerak.
Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Pelaksanaan Penapis Purata Bergerak dengan Trik Langkah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!