Bagaimana untuk Meningkatkan Pelaksanaan Penapis Purata Bergerak dengan Trik Langkah?

Susan Sarandon
Lepaskan: 2024-10-19 10:02:30
asal
229 orang telah melayarinya

How to Enhance Moving Average Filter Implementation with Stride Tricks?

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>
Salin selepas log masuk

Kelebihan Penyelesaian Dipertingkat

  • Penjanaan terus tetingkap bergerak menggunakan helah langkah, menghapuskan keperluan untuk langkah perantaraan.
  • Kesesuaian pada tatasusunan berbilang dimensi, membenarkan untuk penapisan yang cekap di sepanjang berbilang paksi.
  • Vektorisasi operasi tetingkap bergerak, menyebabkan masa pengiraan dikurangkan dengan ketara.

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!