Domanda

Qual è il metodo migliore per trovare picchi di impulsi (Dirac Delta) in una matrice 2D.

Più specificamente, vorrei trovare le frequenze armoniche di una data immagine e quindi ho bisogno di trovare picchi di impulsi nella DFT del valore assoluto dell'immagine.

Ho pensato di usare FindPeaks ma non esiste una versione 2D. Ho anche visto post precedenti riguardanti la ricerca di picchi ordinari usando imditate e/o imextendedmax, ma quelli trovano tutti i picchi in una matrice 2D mentre sono interessato solo a picchi d'impulso. Sono sicuro che le persone DSP hanno una ricetta comune per questo ...

Per favore aiuto,

Grazie

È stato utile?

Soluzione

Quello che vuoi fare è trovare picchi con elevato contrasto. Pertanto, hai bisogno di un modo per identificare i massimi locali, oltre a un modo per misurare la differenza tra il picco e i valori circostanti. La soglia su questa differenza identificherà i picchi di impulsi per te.

Supponendo che il tuo segnale di input sia chiamato signal

%# dilate to find, for every pixel, the maximum of its neighbors
dilationMask = ones(3);
dilationMask(5) = 0;
dilSignal = imdilate(signal, dilationMask);

%# find all peaks
%# peaks = signal > dilSignal;

%# find large peaks peaks by thresholding, i.e. you accept a peak only 
%# if it's more than 'threshold' higher than its neighbors
peaks = (signal - dilSignal) > threshold;

peaks è un array logico con 1 ovunque ci sia un buon picco. Puoi usarlo per leggere le altezze di picco dal segnale con signal(peaks), e per trovare coordinate usando find(peaks).

Altri suggerimenti

Questo documento che ho scritto Contiene il codice sorgente MATLAB per un rapido rilevamento del picco locale in 2D. Funziona in modo simile a imregionalmax() Nella cassetta degli attrezzi di elaborazione delle immagini di MathWorks ma consente di specificare un raggio di quartiere locale: raggio maggiore -> picchi più scars.

Dato che ti aspetti impulsi sparsi, il nonmaxsupp_scanline() La funzione può essere adatta a te.

Il findpeaks L'algoritmo è piuttosto banale; Se un elemento è più grande di entrambi i suoi vicini, allora è un picco. Scrivere una versione 2D di questo dovrebbe essere piuttosto semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top