Jump to content
PLC Forum


Ricerca di una possibile formula - ... idee e suggerimenti


Federico Milan
 Share

Recommended Posts

Federico Milan

Ciao a tutti,

immaginate di avere un foglio di carta bianco ed una sola matita nera.

Disegnamo sul foglio di carta una nuvola! Dove per nuvo intendo proprio un disegna artistico in bianco e nero di una nuvola del cielo.

Il foglio, ora lo vediamo come una matrice di punti, che per semplicità (in prima approssimazione) possono assumere solo due valori.

1: Essite un modo per estrapolare una funzione parametrica che, in qualche modo replichi la nuvola?

2: Oppure, esistono delle funzioni parametriche che riempiono il foglio (matrice), creando un effetto nuvola?

qualche idea?

Link to comment
Share on other sites


Livio Orsini

Federico credo che sia un sistema quasi casuale. Il contorno è casuale perchè non segue nessuna legge geomentrica. Anche il riempimento, pur limitando al bianco-nero senza scala di gligio, è casuale. Per il riempimento si pèoterebbe ipotizzare una funzione simile a quella per generare rumore rosa. Per il perimetro forse potresti ipotizzare un sorta di composizione tra alcune poliginali.

Link to comment
Share on other sites

Federico Milan

Grazie Livio smile.gif,

Effetivamente ho usato il termine nuvola, perchè rende bene l'idea di ciò che si avvicina alla mia applicazione smile.gif.

Avevo pensato alle poligonali, ma hanno un problema, necessitano di un numero definito di parametri, cosa succede se poi voglio realizzare uno scaling?

L'idea è vettorizzare il tutto, ma come?

Riprendiamo l'esempio nuvola, facciamo una nuvola semplice con un riempimento puntiforme con desità maggiore nell'are nord-est della figura.

A quasto punto ho una matrice. Voglio trovare una formulazione matematica:

[x, y] = f(parametri, t)

Accetto anche di perdere delle informazioni, ossia alcuni punti o insieme di punti possono essere alterati. Qaule potrebbe essere il metodo migliore?

Oppure, vista così, che struttura dati conviene utilizzare?

Lo scopo, alla fine è vettorizzare l'immagine smile.gif .

Link to comment
Share on other sites

roberto1953

Dividiamo la nuvola circa alla metà che ci è più conveniente, per ottenere quelle che immaginiamo due semionde di un segnale ciclico.

Al computer cerchiamo e sommiamo tante sinusoidi fino ad ottenere il profilo della nostra seminuvola.

Ora non ci resta che scrivere la trasformata di Fourier che abbiamo ricavato, definendo l' intervallo che c' interessa.

Per moltissime nuvole ma non per tutte, credo.

Io proverei intanto così, ciao.

Link to comment
Share on other sites

Federico Milan

Ciao Robeto, sì l'idea l'ho capita, ma con una trasformata (qualunque essa sia) avrei che il numero di sinusoidi (coseni, ...) trovato è paragonabile al numero di punti da memorizzare, quindi non facilmente parametrizzabile.

Quello che sto cercado è di riprodurre la "nuvola" con il minor numero di parametri possibile, diciamo 2 al più 4! smile.gif

Link to comment
Share on other sites

roberto1953

Il numero di sinusoidi da trovare dipende da quanto vuoi approssimare la nuvola.

Altrimenti se disegni una nuvola su di una matrice di 100000 bit quella nuvola è un numero di 100000 bit.

Una sola funzione con 4 valori non può rappresentare 100000 combinazioni di singoli bit. Allora o scrivi una funzione per ogni nuvola, che la comprime in un suo chiamiamolo DNA, oppure con un algoritmo ed un paio di semplici funzioni disegni innumerevoli nuvole a caso.

Il tuo è lo stesso problema che comprimere matrici numeriche, oltre un certo limite, nei casi di possibile compressione, per rappresentare n numeri occorrono n valori, purchè non ti accontenti di particolari successioni sequenziali data quella di partenza.

Credo, ciao.

Link to comment
Share on other sites

fulvioromano

Federico...per come scrivi la funzione sembra il campo di applicazione delle reti neurali. Ci sono alcune reti (ad esempio le perceptron) che lavorano su soglia di attivazione, quindi proprio 0/1 del valore di uscita.

Dunque:

- stabilisci gli ingressi e le uscite

- definisci i parametri della rete neurale (tipo, numero di strati, numero di neuroni)

- prendi un po' di nuvolette per addestrare la macchina

a questo punto, la rete addestrata è la tua funzione. Non sai cosa c'è dentro, ma se gli metti un ingresso, l'uscita è quello che vuoi.

Se ti interessa la strada, vediamo di approfondire la situazione.

Edited by fulvioromano
Link to comment
Share on other sites

roberto1953

Provate a disegnare un profilo rettangolare con lo sviluppo di una serie do Fourier.

f(x)=4*sommatora per n da 1 ad infinito di (-1)^(n-1)/(2*n-1)*cos((2*n-1)*x)

Scrivo in qbasic per disegnare al computer.

cls

n = (vi consiglio un numero intero da 1 a 30)

screen 12

for z= 100 to 1150

x = z/100

fx = 0

for nx = 1 to n

fx = (-1)^(nx-1)/(2*nx-1)*cos((2*nx-1)*x)+fx

next nx

pset (140 + z/4 , 300 + fx * 100)

next z

end

Variando solo il parametro n da 1 a 30 il profilo varia da sinusoidale a quasi rettangolare, ecco come con una opportuna serie di Fourier si potrebbero approssimare moltissimi profili variando pochi parametri. Il numero di valori da attribuire ai parametri resta comunque quello del numero di profili che vogliamo ottenere.

P.S non sò sviluppare le trasformate... Ciao.

Link to comment
Share on other sites

fulvioromano

Scusa roberto...tu non stai trasformando un segnale, stai ottenendo un segnale sommando le componenti che conosci perché è nota la trasformata di un'onda quadra.

La trasformata di Fourier è poco, o per niente usata in ingegneria. Viene di solito sostituita dalla FFT che è un algorimo diverso per ottenere un risultato simile...ma è come usare la contraerea per abbattere le zanzare...

Link to comment
Share on other sites

fulvioromano

Federico, però credo dovresti spiegare meglio il tuo problema. Infatti devi ricostruire dell'informazione, ora, questa informazione o la metti nei parametri (tanti parametri, ma formule semplici) o la metti nella formula (pochi parametri, formule complesse).

Non credo che puoi pretendere di ignorare le informazioni e poi recuperarle dal nulla.

Mi spiego meglio?

Se devo riscostruire una retta posso o mettere insieme infinite coppie (x,y) oppure i due parametri m e q...ma in ques'ultimo caso metto nella formula (equazione della retta) una fortissima informazione, e cioè che i punti sono allineati.

Link to comment
Share on other sites

roberto1953

Scritta una formula con cui disegnare tanti profili con pochi parametri; con un programma basterà sostituire in successione i valori alle variabili, fino ad ottenere il profilo più simile a quello che abbiamo disegnato a mano stando al computer, magari agendo per approssimazioni successive, prima scegliendo un profilo assai approssimato, da cui ricavarne uno sempre più preciso; sempre tramite il programma.

Ciao.

Link to comment
Share on other sites

Federico Milan

Diciamo che le nuvole, dovrebbero avere una "auto similarità"!

a me son venuti in mente i frattali, in quanto hanno il concetto dell'auto similarità.

Ora il porblema mio è trovare il modo di formulare o meglio ricercare il frattale o frattali che approsimano la forma.

Teoricamente, devo ancora studiarne le basi, data una formualzone generica di un frattale, dati i punti di interesse, si potrebbe ricercare quali paramtri approssimano meglio il frattale alla forma data data.

A questo punto ho solo qalche problemino, non riesco a trovare del materiale di studio che mi soddisfi. Del resto, probabilmente vi sono anche altre strade da pecorrere vedi le nurbs ... ma, prima di studiarmi tomi non proprio banali, sto cercando varie soluzioni possibili.

Link to comment
Share on other sites

roberto1953

Rigiriamo sempre il solito problema.

Un' altra soluzione è disegnare la nuvola tra due assi cartesiani, scegli n punti

(i tuoi parametri) sul profilo della nuvola e la ridisegni di nuovo, collegando quei punti con una funzione variabile curva da punto a punto (come farebbe un curvilineo).

In qualunque modo ridefinisci la nuvola puoi comprimerne i dati, approssimandone il contorno, ma per n nuvole occorreranno sempre n combinazioni di numeri.

Ciao.

Link to comment
Share on other sites

Federico Milan

Forse mi sono espresso male, e forse è fuor viante il discorso iiziale di pesare ad una nuola monocromatica, ma il mio intento non è solo il bordo, ma è l'insieme delle sfumature (che in monocromatico sono rappresentate da densità puntiformi di pixel) che assieme al bordo distinguono una nuvola da altre ...

Le soluzioni basate su trasformate, le ho escluse a priori, proprio per il fatto di dover utilizzare molti parmetri. A dire il vero a me on interessa archiviare l'effettiva forma, ma solo qulcosa che assomiglia all'originale.

Provo a fare qulche altro esempio, immaginate di disengare un'albero, sempre con il concetto delle nuvole voglio memorizzarlo tramite pochi paramtri, che modifcandoli, mi cambierà la forma dell'albero, aggiungendo o togliendo rami, infoltendo o meno le foglie, aumentando o diminuendo la forma ...

Link to comment
Share on other sites

Beatrice_Ru

Hai pensato alle formule di un Frattale.

Abbinando il concetto del Frattale e quello dei Graffi, puoi trovare la

soluzione al tuo problema.

La nuvola così pure altre figure e solidi presenti in natura, seguono

delle semplici legge di accrescimento e di modellazione.

Normalmente si cerca di studiare questo modello usando appunto la

geometria frattale (Solidi e Piani, non ha 2 o tre dimensioni, ma bensi

oggetti geometrici con numero di dimensioni frazionarie, ad esempio 1.2)

Nel particolare un tipo di frattale chiamato IFS (Iterated Function Systems).

Pensa ad una linea che si biforca (Quante dimensioni ha ?)

La nuvola, fiocchi di neve, alberi, fiori, ragnatele etc. seguono queste formule

Mi sembra di ricordare che un oggetto come la nuvola, può essere espressa

con una semplice formula.

Link Frattale di una Nuvola

Semplice descrizione della geometria Frattale

Teoria

Guarda a Pag. 30

Che Bellezza nella Natura vero .

Link to comment
Share on other sites

fulvioromano

Quello che dice Beatrice Ru è vero. Un frattale ha una formula semplice che genera forme complesse autosimili. Attenzione all'autosimilarità, se stiamo parlando di memorizzare una forma semplificandola, essa va quantizzata, che senso ha renderla infinitamente autosimile?

Avendo la formula di un frattale, ottenere la sua rappresentazione è molto semplice. Fare il contrario è molto complesso e non è granché automatizzabile, è necessario intuito matematico.

Più che altro puoi utilizzare il concetto. Per esempio per l'albero, se ogni ramo ne genera due ti basteranno i seguenti parametri:

- 2 (il numero di rami che vengono generati)

- l'angolo dei due rami rispetto al padre

- la lunghezza dei due rami

- numero di interazioni

In questo modo, con questi sei parametri (il secono ed il terzo sono doppi) ricostruisci l'albero. Naturalmente l'algoritmo contiene la solita forte informazione sulla natura dell'iterazione. Se vuoi fare qualcosa che assomigli alla natura dovresti aggiungere un po' di rumore sui secondi e terzi parametri.

Edited by fulvioromano
Link to comment
Share on other sites

roberto1953

Ora se da una nuvola qualsiasi siete capaci di tornale alla primitiva forma del frattale da cui è generata siete proprio bravi.

Io avevo cominciato un programma semplice per definire i profili con i numeri, in modo da poter poi riconoscere facilmente ad esempio le impronte digitali. Usare quei frattali non è tanto alla portata di un dilettante, se avete un computer provateci.

Ciao.

Link to comment
Share on other sites

roberto1953

Mi ricredo, forse non è difficile con un programma frattalizzare i contorni di certe nuvole pensando poi di ripiegarle come fanno con la carta i Giapponesi ( Origami ).

I frattali non li hanno mica ispirati loro?

Ciao.

Link to comment
Share on other sites

Livio Orsini

Nel mio messaggio del 7 u.s. avevo suggerito l'uso dei frattali, sebbene in modo interrogativo.

Ripensando al problema son giunto alla conclusione che questo è un tipico problema da logica Fuzzy.

Molti problemi di riconoscimento forme, auto fuoco e simili si risolvono al meglio usando logica fuzzy. Questo mi sembra un problema che rientra in questa categoria.

C'è un ostacolo: Federico se non conosci la logica Fuzzy devi prima studiarla e poi studiarti il problema. sad.gif

Link to comment
Share on other sites

roberto1953

Beato te che conosci la logica Fuzzi... Magari quella con tre parametri a due cifre ed una variabile quasi fissa riesce a discriminare 2^100000000 profili casualmente diversi più o meno sparpagliati... o no?

Ciao.

Link to comment
Share on other sites

Federico Milan

Ciao Beatrice, interessanti i link proposti, devo dire che forse ho trovato quello che cerco smile.gif.

Per Livio, si qulcosa di fuzzy avevo letto, ma non è il riconoscimento che cerco, ma bensì proprio un modo per generare curve "stilisticamente artistiche smile.gif" e magariri ricavarle da bozze fatte a mano.

L'idea dei frattali che avevi suggerito, l'ho presa in considerazione e purtroppo - nel senso che i farattali non son strumenti matemamtici proprio semplici - mi sa che dovrò studiarmeli per bene smile.gif ....

grazie ancora a tutti smile.gif ... se riesco nell'itento vi terrò aggiornati.

A dire il vero vi sarebbe anche la teoria delle nurbs, ma anche qui c'è un bel po' da studire per tirar fuori il potenziale di questi strumenti ... ma alla fine, credo che i frattali siano la strada da proseguire.

Link to comment
Share on other sites

fulvioromano

Le NURBS? Se devi andare a fare la spesa non usare un Ferrari...

Forse non ti serve tutta la potenzialità delle NURBS, con lo stesso concetto lavorano le curve di Bezier, Hermite, Spline, BSpline, Polinomiali...sono più semplici da trattare matematicamente, anche se meno manegevoli per la modellazione (per questo sono state quasi ovunque sostituite con le NURBS)

Link to comment
Share on other sites

roberto1953

Se volete rappresentare tutte le combinazioni possibili di 100 bit con tutte le combinazioni possibili fatte con meno do 100 bit, ci state tutta la vita ( i numeri non sono comprimibili).

Se volete disegnare o discriminare qualche figurina con funzioni più o meno complesse, iniziando con qualche semplice programmino in basic, magari ci divertiamo un pò tutti.

Questa è la mia conclusione, io amo dire, ma anche fare.

Ciao.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...