Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - delimitare il contorno di un oggetto
Forum - Algoritmi - delimitare il contorno di un oggetto

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2306
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:35
Martedì, 29/03/2016
Buongiorno ragazzi ho una domanda.

In che modo voi (se dovreste realizzare un qualcosa del genere) riuscireste a delimitare l'area di un oggetto grafico
in un file immagine?

vi spiego.

Io utilizzo il classico metodo di split mediante il numero degli elementi presenti nell'immagine.

ovviamente se sò che un immagine è esempio 30x30 pixel ed il file immagine è largo 120 pixel sono 4 elementi.

Me se vorrei splittare le immagine per una dimensione che non conosco come posso fare?
che algoritmo usereste per farlo?

un esempio.


http://unitycoder.com/blog/wp-content/uploads/2013/11/unit ...


come vedete dall'immagine, il programma ha automaticamente suddiviso tutti gli elementi grafici presenti
ricavandone altezza e larghezza.

come hanno fatto?


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 15:51
Martedì, 29/03/2016
Se hai delle immagini su uno sfondo trasparente oppure monocromatico come in quel caso allora è molto facile, basta che filtri sul fondo e trovi le aree di pixel connesse.
La "dimensione" nell'immagine che hai messo è il cosiddetto max bounding rect.

Ultima modifica effettuata da lumo il 29/03/2016 alle 15:51
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2306
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:23
Martedì, 29/03/2016
il dubbio però è:

con quale metodo riesco a capire un oggetto dove sta?
o quanto è grande?

devo scrollare pixel per pixel?



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:33
Martedì, 29/03/2016
Non riesco a capire la domanda...

L'esempio dell'Unity editor non e' appropriato, siccome le immagini che vedi in quello screenshots sono gia' "separate" (l'editor conosce gia' le loro dimensioni e le loro posizioni a priori).

Data una singola immagine, con al suo interno diverse sprites, non e' facile scrivere un algoritmo (accurato) che classifichi le bounding boxes delle sprites, visto che ci sono dei casi particolari (ad esempio se una sprite non e' continua e ha degli spazi all'interno dei suoi elementi). Il problema e' piu' facile da risolvere se tutte le sprites sono degli oggetti continui (ma non e' una soluzione generale).

Il primo step e' quello di identificare i bordi di un oggetto. Per ogni pixel controlla i suoi 8 vicini immediati, se non sono del colore dello sfondo allora sono vicini. Tieni traccia dei pixels che hai visitato tramite un grafo. Dovrai scrollare pixel per pixel, si.

Altri links interessanti:

https://geidav.wordpress.com/2014/01/23/computing-oriented- ...
http://www.geometrictools.com/Documentation/MinimumAreaRec ...





Il mio blog: https://piero.dev
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2306
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:44
Martedì, 29/03/2016
Grazie piero,
il secondo link è molto intuitivo con anche degli esempi.
capisco che è abbastanza complicata la cosa, ma credo che sia necessaria per il mio tool.

Cmq posso assicurarti che su unity c'è un pulsante.

Selezioni [Auto] e contorna in quel modo in meno di un secondo.

ovviamente non posso paragonarmi ad un team di 100 persone che ci lavorano ogni giorno su unity.
ma cmq hanno un sistema eccezionale.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 17:16
Sabato, 02/04/2016
Forse parlo di argomenti esagerati per l'ambito di aplicazione, ma che io sappia per identificare i bordi in immagini arbitrarie si tende ad usare delle derivate direzionali su di essa. http://bias.csr.unibo.it/fei/Dispense/3%20-%20FEI%20-%20Es ...
Non ho idea se ti possa essere utile, ma almeno è cultura :heehee:

Ultima modifica effettuata da Roby94 il 02/04/2016 alle 17:16
PM Quote