Newsgroup: it.comp.grafica
Titolo: Calcolo distanze

Ciao.
Sto cercando un software, anche trial, che permetta di calcolare la
distanza di un determinato punto nell'immagine data una sorgente video
realtime.
Un algoritmo utilizzato dovrebbe essere basato sulla focalizzazioni
progressive.
Qualcuno gentilmente puň indirizzarmi?
Grazie,
Matteo Migliore

 Qualcuno gentilmente può indirizzarmi?
Ciao,
stai cercando qualcosa in grado di darti la distanza di un qualsiasi punto
all'interno dell'immagine dal punto di ripresa? Sbagliero', ma se e' cosi'
credo che l'unica maniera possibile sia ricorrere alla fotogrammetria e per
farlo dovresti avere una immagine stereografica.
Sbaglio?
--
Hasta luego, chicos
El Niño
"Mia moglie estava al fiume, señor, a lavare...
un gringo l'aggredi', la voleva..."

 Sbaglio?
Devo approfondire l'argomento ma quasi certamente è possibile, come ho
scritto
nel post precedente, calcolare la distanza in base ad una stessa immagine
vista
da punti focali differenti. Sempre con un solo punto di osservazione.
Matteo Migliore.




sinceramente non credo che riuscirai a trovare qualcosa di pronto a basso
prezzo, ma non si sa mai. Comunque, visto che sembri avere qualche
competenza, potresti fartelo da solo.
Senza neanche ricorrere all'analisi nel dominio delle frequenze, puoi, per
ogni pixel e per ogni focalizzazione, prendere il massimo delle differenze
con i 4 pixel vicini, o una cosa leggermente più complicata ad 8 vicini,
considerando che quelli in diagonale hanno un fattore radice di 2 in più,
e poi trovare la distanza focale che ti massimizza questo massimo :-)
In generale comunque è sempre meglio fare un pochino di smoothing, prima di
cercare un massimo.

 da punti focali differenti. Sempre con un solo punto di osservazione.
Scusa, non mi è chiaro cosa intendi per "vista da piunti focali
differenti"... intendi dire "mettendo a fuoco a diverse ditanze", "ripresa
con lunghezze focali differenti", o qualcos'altro?
Ciao
Giacomo

 Grazie ad entrambe,
Ora, dico io, ci chiamiamo Giacoma e Waltera?  ;-)
Ciao
GiacomO

 "prendere il massimo delle differenze con i 4 pixel vicini"?
il concetto è quello di confrontare fra loro le immagini che sono le
"derivate" delle immagini alle varie distanze focali, dove la derivata è
data dalla stima del modulo del gradiente in ogni punto. Questo lo puoi
fare sui tre canali separatamente (se sei in RGB), oppure sulla sola
luminosità (eventualmente ti dico poi il modo migliore per convertire da
RGB a toni di grigio). Su un singolo canale comunque fai le differenze tra
il valore del pixel in questione e i pixel diciamo a nord, est, sud e
ovest. Per maggiore precisione puoi prendere anche i pixel a NE, SE, SW e
NW, ma devi considerare che la differenza va divisa per la radice di 2,
perché stanno più lontani dal pixel di riferimento per questo fattore. Per
velocizzare fai i conti usando dei pesi che approssimano questo rapporto, e
lavori con numeri interi, praticamente in virgola fissa. Inoltre per ogni
insieme di 8 differenze, solo 4 sono da calcolare ex novo per ogni pixel
(una orizzontale, una verticale, e due diagonali).
Nel mio post precedente avevo però dimenticato una parte complicata
dell'algoritmo. Considera uno scalino di luminosità tra due zone uniformi
nell'immagine bella a fuoco. Nelle immagini fuori fuoco i pixel
circostanti, che nell'immagine a fuoco hanno gradiente nullo, ottengono un
gradiente non nullo a causa della sfocatura. Quindi il massimo del
gradiente non l'hanno quando quella zona è a fuoco, ma quando il fuoco è un
po' davanti o un po' dietro. Forse il modo più utile per visualizzare la
situazione è di prendere una fila di pixel (diciamo con coordinata x) che
attraversa la discontinuità, e fare un grafico del modulo del gradiente in
funzione di x e di f, diciamo g(x, f). Il massimo assoluto (ma limitato a
questo segmento) ce l'hai per il valore di f cercato, diciamo in x0 per f0,
ma avrai dei massimi di dg/df (derivate parziali) per x0 +- x1 per f + f1 e
x0 +- x2 per f - f2. In qualche modo bisogna risalire nello spazio xyf alla
"cresta" del modulo del gradiente. Forse c'entra qualcosa il "greytone
thinning" o "greytone skeletonization", vedi un po' con google (occhio a
gray<->grey e ...nization<->nisation, varianti valide), ma allora si va sul
noioso spinto. Oppure, a seconda del tipo di immagine, è sufficiente
cercare i massimi locali della derivata (che poi significa azzerare il
laplaciano, che pure si approssima con una operazione su 9 pixel, cerca
laplacian con google).
Io purtroppo devo fermare qui la mia collaborazione, anche se mi piacerebbe
moltissimo continuare, perché mi manca proprio il tempo, attualmente.
ciao
Walter

 ha scritto nel messaggio
news:1k01drpnmnzcq$.jwbe8shxxo9r.dlg@40tude.net...
