JavaRush /Java Blog /Random-IT /Trovare il centro di una figura irregolare su un piano
fatfaggy
Livello 26
Киев

Trovare il centro di una figura irregolare su un piano

Pubblicato nel gruppo Random-IT
Ciao a tutti. Sto risolvendo un semplice problema proprio adesso. La condizione suona più o meno così:
Data una matrice (array bidimensionale), in cui ogni elemento rappresenta un pixel. I pixel possono essere rossi, neri o di altro colore. È necessario implementare la ricerca dell'effetto occhi rossi nell'immagine. Se il centro dei pixel neri coincide con il centro dei pixel rossi, allora abbiamo trovato un occhio rosso.
Si presuppone che i confini dell'intervallo dei pixel rossi siano più ampi dei confini dell'intervallo dei pixel neri. Inoltre, le opzioni non vengono prese in considerazione se l'immagine contiene pixel rossi e neri all'esterno dell'“occhio”. Tutto al di fuori dell '"occhio" sarà di un colore diverso. Ho pianificato di implementarlo utilizzando (approssimativamente) questo algoritmo. Due anelli, uno annidato nell'altro. Uno passa per X, l'altro passa per Y. Non appena troviamo il pixel rosso, fissiamo le sue coordinate come quelle iniziali e cerchiamo le coordinate finali. Non appena si scopre che i pixel rossi non compaiono più, fissiamo l'ultimo pixel rosso che abbiamo trovato come coordinate finali dell'intervallo di pixel rossi. Lo stesso con i pixel neri. Quindi dividiamo gli intervalli a metà e troviamo i centri. Un tale algoritmo funzionerà abbastanza bene con figure di forma più o meno regolare (cerchio). E qui ho deciso di complicare il mio compito)) Vale a dire capire come migliorare l'algoritmo per le forme irregolari. Ad esempio, se una persona ha dei problemi di vista (a causa dei quali la forma dell'occhio potrebbe non essere corretta), o la foto è stata scattata da un'angolazione, o altre situazioni... Una rapida ricerca mi ha portato agli articoli di Wikipedia sull'argomento centro di massa e baricentro. Ma c'è così tanto linguaggio spaventoso e terribile che ho deciso di metterlo da parte per ora e chiedere alla comunità come lo implementeresti? :)
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION