Sovrapponi-Aggiungi contro Sovrapponi-Salva


24

Quali differenze o altri criteri possono essere utilizzati per decidere se utilizzare il filtro di sovrapposizione e di sovrapposizione per il filtro? Sia overlap-add che overlap-save sono descritti come algoritmi per eseguire una convoluzione rapida basata su FFT di flussi di dati con kernel di filtro FIR. Quali sono le differenze di latenza, efficienza computazionale o localizzazione nella cache (ecc.), Se presenti? O sono uguali?

Risposte:


27

In sostanza, il sistema operativo è leggermente più efficiente poiché non richiede l'aggiunta di transitori sovrapposti. Tuttavia, è possibile utilizzare OA se è necessario riutilizzare gli FFT con zero padding anziché campioni ripetuti.

Ecco una rapida panoramica di un articolo che ho scritto qualche tempo fa

La convoluzione rapida si riferisce all'uso in senso antiorario della convoluzione circolare per realizzare la convoluzione lineare. La convoluzione rapida può essere realizzata con metodi OA o OS. Il sistema operativo è anche noto come "overlap-scrap". Nel filtraggio OA, ogni blocco di dati di segnale contiene solo tanti campioni quanti permettono che la convoluzione circolare sia equivalente alla convoluzione lineare. Il blocco di dati del segnale è a zero prima dell'FFT per evitare che la risposta all'impulso del filtro si "avvolga" alla fine della sequenza. Il filtro OA aggiunge il transitorio di input da un blocco con il transiente di input dal blocco precedente. Nel filtraggio del sistema operativo, mostrato in Figura 1, non viene eseguito alcun riempimento zero sui dati di input, quindi la convoluzione circolare non è equivalente alla convoluzione lineare. Le porzioni che "avvolgono" sono inutili e scartate. Per compensare questo, l'ultima parte del blocco di input precedente viene utilizzata come inizio del blocco successivo. Il sistema operativo non richiede l'aggiunta di transitori, rendendolo più veloce di OA.


Ottimo articolo! =)
Phonon,

Potrebbero esserci alcune ottimizzazioni nel modo in cui viene calcolato il DFT sulla porzione con riempimento zero del buffer OA, che danno un vantaggio al metodo OA. Ciò dipende dal processore e dal pacchetto FFT. Inoltre, è possibile scrivere il proprio algoritmo FFT appositamente per l'OA che tenga conto dello zero-pad.
orodbhen,

@orodbhen, conosci qualche pacchetto FFT?
Mark Borgerding,

@MarkBorgerding In OpenCV è possibile specificare il numero di zero righe, ma questo è specifico per 2D. Per quanto riguarda quali ottimizzazioni implicite sono presenti in questo o altri pacchetti FFT, non lo so. Mi vengono in mente molti casi in cui una FFT personalizzata per sfruttare la scarsità sarebbe utile, ma non ho intrapreso questa strada da solo. Non ancora.
orodbhen,

1
Meno male che hai citato perché il link non funziona :(
Mehrdad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.