View Full Version : [JAVA]: "memorizzazione" punti
Ciao a tutti !
Sono alle prese con un progetto nel quale mi è richiesto di, una volta suddivisa un'immagine in rettangoli (tanti quanti vuole prenderne l'utente), e aver preso il punto centrale per ogni rettangolo, elaborare tutti i pixel di quel rettangolo.. per fare un esempio.. se avessi un'immagine di 16x16pixel, e voglio prendere 2x2=4 punti, ottengo 4 rettangoli.
Ora per ogni rettangolo devo cercare il punto con una certa caratteristica, più vicino al mio punto centrale del rettangolo stesso.
Per questo devo fare una scansione di tutti i punti..meglio un algoritmo a "spirale" a partire dal centro, o meglio utilizzare una Lista?
Grazie in anticipo :help:
In effetti non sono stata chiara.. se ho un'immagine 16x16 pixel, la divido in 4 "rettangoli" (se l'utente vuole prendere 4 punti). Ogni punto acquisito è il centro di ogni rettangolo..ad esempio per il primo rettangolo, che in questo caso sarà un quadrato, ovvero avrà dimensione 8x8 , il primo punto acquisito dall'utente ha coordinate x=4 y=4 .. in questo modo intendo risulta il centro del primo rettangolo..e cosi via per i tre rettangoli rimanenti (in questo esempio).. l'acquisizione dei punti in questo modo l'ho già fatta.. ora devo effettuare una scansione per ogni rettangolo in modo da trovare il punto con una certa caratteristica, più vicino al mio punto centrale di quel specifico rettangolo.
Spero di essere stata piu dettagliata .. :)
Grazie
UpdatedMind
21-06-2012, 13:39
In effetti non sono stata chiara.. se ho un'immagine 16x16 pixel, la divido in 4 "rettangoli" (se l'utente vuole prendere 4 punti). Ogni punto acquisito è il centro di ogni rettangolo..ad esempio per il primo rettangolo, che in questo caso sarà un quadrato, ovvero avrà dimensione 8x8 , il primo punto acquisito dall'utente ha coordinate x=4 y=4 .. in questo modo intendo risulta il centro del primo rettangolo..e cosi via per i tre rettangoli rimanenti (in questo esempio).. l'acquisizione dei punti in questo modo l'ho già fatta.. ora devo effettuare una scansione per ogni rettangolo in modo da trovare il punto con una certa caratteristica, più vicino al mio punto centrale di quel specifico rettangolo.
Spero di essere stata piu dettagliata .. :)
Grazie
Potresti sia implementare un algoritmo "a spirale" come hai giustamente detto prima (il che significherebbe iterare fino a quando non trovi il primo punto di interesse che rispecchia le caratteristiche, ergo interrompere il processo... questo ti darà la garanzia di aver trovato il più vicino).
Oppure scansionare tutti i punti del rettangolo, generando una sorta di reticolo. Individuare dunque tutti i punti di interesse e confrontarli calcolando la distanza dal centro. (geometricamente la distanza "in linea d'aria" dal centro del rettangolo) La funzione restituirà il punto dunque più vicino tra quelli identificati.
Il primo metodo mi sembra comunque più efficace e risparia tempo, anche se ovviamente dovrai lavorare di più sul codice :)
Esatto..sono più orientata sul primo metodo, qualcuno però saprebbe dirmi come si imposta il ciclo for per far partire la scansione dal punto centrale verso l'esterno (a spirale, e quindi in modo circolare)?
Grazie,
Mery
UpdatedMind
22-06-2012, 18:34
Dipende dalla mentalità, potrebbe cambiare da programmatore a programmatore.
Le soluzioni sono infinite.
Personalmente immaginerei di scandire a priori il rettangolo in un numero di elementi di uguale dimensione in modo che l'iterazione sia standard, ovvero spostarsi di un elemento equivale a sommare sempre una stessa porzione di spazio.
Dopodichè potresti partire dal centro e seguire questo movimento:
Centro -> Destra -> Su -> 2x Sinistra -> 2x Giù -> 3x Destra -> 3x Su -> 4x Sinistra -> 4x giù... etc...
Sarà possibile procedere iterativamente aumentando sempre di uno il numero di spostamenti ogni due movimenti che compi :)
Questa è solo un'idea che mi è appena venuta, ci sarà sicuramente di meglio :)
Ok grazie mille adesso ci ragiono su!
;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.