Trovare curve in un istogramma

Messaggioda Ferre82 » 29/08/2018, 22:00

Buongiorno a tutti,
vi chiedo aiuto per risolvere un problema che mi assilla:
Dato un istogramma come quello che allego, c’è un algoritmo o una procedura per programmare un sistema che riconosca delle curve come quelle disegnate in rosso quindi con un massimo locale racchiuso tra due minimi locali (anche non identici come valore, quindi con una tolleranza)?


Immagine

Ho fatto una prova normalizzando i valori del l’istogramma (ist) con la formula:
ist[n] = (ist[n]-max(ist))/(max(ist)-min(ist))
per cercare di “azzerare” i valori più bassi e trovare i minimi locali, per individuare l’inizio e le fine delle campane, ma dipende molto dai valori del l’istogramma che variano sempre. Poi ho tentato la strada di individuare i massimi locali percorrendo a destra e sinistra cercando valori in discesa e fermandomi nelle risalite, ma con il problema di individuare troppe campane (si potrebbe impostare una tolleranza ma cambierebbe da grafico a grafico).
Il numero di curve non è fisso ma deve essere ricavato automaticamente dalla procedura (nell’esempio 6 campane).




Comprendo la necessità di utilizzare delle variabili arbitrarie per questa procedura, come qualche valore di tolleranza, ma questo non è un problema se fosse fisso e stabilito a priori.

Qualcuno sa come si potrebbe procedere?
Ferre82
Starting Member
Starting Member
 
Messaggio: 1 di 2
Iscritto il: 29/08/2018, 21:53

Re: Trovare curve in un istogramma

Messaggioda claudio86 » 30/08/2018, 16:18

Innanzitutto il fatto che sia un istogramma è irrilevante. Considera l'altezza di ogni colonna e ottieni una semplice lista di coordinate (= una funzione).

Così su due piedi mi viene in mente:

- Trova i minimi locali
- Per ogni coppia di minimi locali, concentrati solo nella regione compresa tra essi
- Prendi una classe di funzioni ragionevole, e.g., $-a (x - b) ^ 2$, o una campana gaussiana, e trova il "best fit" in quella regione

Puoi anche provare a filtrare la funzione in modo che sia meno "frastagliata" così da evitare di trovare troppi minimi.
"This theorem, as many others, is proven by writing zero in a creative way…"
claudio86
Senior Member
Senior Member
 
Messaggio: 493 di 1130
Iscritto il: 09/01/2011, 15:12


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite