8

Algoritmo per un disegno e la pittura robot -Un algoritmo per un robot di disegno e pittura - qualche consiglio?

Ciao

voglio scrivere un pezzo di software che analizza l'immagine, e quindi produce un'immagine che cattura ciò che un occhio umano percepisce nell'immagine originale, utilizzando un minimo di oggetti percorso Bezier di vari colori e opacità.

A differenza del concorso super-compressione recente Twitter (see: stackoverflow.com/questions/891643/twitter-image-encoding-challenge), il mio obiettivo non è quello di creare una replica che è fedele all'immagine, ma invece di replicare l'esperienza umana di guardare l'immagine.

Ad esempio, se l'immagine originale mostra un palloncino rosso nell'angolo in alto a sinistra e la riproduzione ha qualcosa che assomiglia ad un palloncino rosso nell'angolo in alto a sinistra, avrò raggiunto il mio obiettivo, anche se il palloncino nella riproduzione non è esattamente nella stessa posizione e non ha le stesse dimensioni o colore.

Quando dico "come percepito da un umano", intendo questo in un senso molto limitato. Non sto cercando di analizzare il significato di un'immagine, non ho bisogno di sapere di cosa sia l'immagine, mi interessano solo le principali caratteristiche visive che un occhio umano noterebbe, nella misura in cui questo può essere automatizzato da un algoritmo che non ha la capacità di concettualizzare ciò che sta effettivamente osservando.

Perché questo criterio insolito della percezione umana sulla precisione fotografica?

Questo software sarebbe utilizzato per guidare un robot di disegno e pittura, che collaborerà con un artista umano (see: video.google.com/videosearch?q=mr%20squiggle).

Piuttosto che trattare i segni fatti dall'umano che non sono fotograficamente perfetti come necessariamente errori, l'algoritmo dovrebbe cercare di incorporare ciò che è già sulla tela nell'immagine finale.

Quindi la luminosità, la tonalità, la saturazione, le dimensioni e la posizione relative sono molto più importanti di essere fotograficamente identiche all'originale. Il mantenimento della topologia delle caratteristiche, del blocco di colore, delle sfumature, della curva convessa e concava sarà più importante per la forma e il colore delle stesse dimensioni

Ancora con me?

Il mio problema è che soffro un po 'della sindrome "quando hai un martello tutto sembra un chiodo". A me sembra che il modo per farlo sia utilizzare un algoritmo genetico con qualcosa come il confronto delle trasformazioni wavelet (vedi: grail.cs.washington.edu/projects/query/) utilizzato da retrievr (vedere: labs.systemone.at/retrievr/) per selezionare le soluzioni di adattamento.

Ma la ragione principale per cui vedo questa risposta, è che queste sono le tecniche che conosco, probabilmente ci sono soluzioni molto più eleganti che usano tecniche di cui ora non so nulla.

Sarebbe particolarmente interessante tenere conto dei modi in cui il sistema di visione umano analizza un'immagine, quindi forse è necessario prestare particolare attenzione alle linee rette, agli angoli, ai bordi ad alto contrasto e ai grandi blocchi di colori simili.

Avete suggerimenti per cose che dovrei leggere su visione, algoritmi di immagine, algoritmi genetici o progetti simili?

Grazie

Mat

PS. Parte dell'ortografia sopra può sembrare sbagliata per te e per il tuo correttore ortografico. Sono solo varianti di spelling internazionali che possono differire dallo standard nel tuo paese: ad es. Australian Standard: colore vs standard americano: colore

+0

A vantaggio dei nuovi utenti che voglio far notare che la questione non sarebbe stato permesso di esistere se pubblicato oggi. È molto ampio, richiede raccomandazioni generali e non ha una risposta definita. E 'probabile che esiste ancora per scopi storici in modo da non utilizzare questo come un modello per una buona domanda –

risposta

3

C'è un modello che può implementato come un algoritmo per calcolare una mappa salienza per un'immagine, determinare quali parti dell'immagine potrebbero ottenere il massimo attenzione da un essere umano.

Il modello si chiama itti Koch modello
È possibile trovare una carta startin here
E più risorse e C++ codice sorgente here

+0

ringraziamento, che è molto interessante –

+0

una cosa bella di MetaFilter è che è possibile assegnare più risposte corrette, qui ho solo ottenere una scelta. Vorrei –

+0

(continua) ..would piaciuto dato a tutti il ​​segno di spunta verde, ma questa è la risposta che mi ha dato le indicazioni più interessanti da esplorare, grazie a tutti voi –

1

Questo è piuttosto un grande compito. Potresti essere interessato al vettorizzazione delle immagini (non so come si chiama ufficialmente), che è usato per scattare immagini rasterizzate (come le immagini che fai con una macchina fotografica) e produce un insieme di linee più bezier (penso) che approssimano il immagine che hai inserito. Poiché i buoni algoritmi spesso producono set di linee di alta qualità (leggi: complessi), ti interesserebbero anche algoritmi di semplificazione che possono aiutare enormemente.

+0

grazie rcix, sto intenzione di spendere circa tre mesi su questo, l'esperienza suggerisce che sarà più lungo di quello. –

1

Purtroppo non sono accanto alla mia biblioteca, o potrei raccomandare un numero di libri sulla psicologia percettiva.

La prima cosa che devi considerare è che la fisiologia dell'occhio umano è tale che quando esaminiamo un'immagine o una scena, catturiamo solo piccolissimi bit alla volta, mentre i nostri occhi sfrecciano rapidamente. La nostra mente scruta le diverse parti insieme per cercare di formare un tutto.

Si potrebbe iniziare trovando un algoritmo per il percorso di un bulbo oculare mentre si gira intorno. Forse è attratto dal contrasto?

Il prossimo è che i nostri occhi regolano "l'esposizione" a seconda del contesto. È come quelle immagini ad alta gamma dinamica, se sono state peiced insieme non da più esposizioni di una scena intera, ma da molte piccole immagini, ognuna bilanciata da sola, ma mescolata all'ambiente circostante per formare una gamma dinamica elevata.

Ora c'è stata una constatazione in un cervello di scimmia che non v'è un singolo neurone che si illumina se c'è una linea diagonale in alto a sinistra del suo campo visivo. Neuroni simili possono essere trovati per linee verticali e linee orizzontali in varie aree del campo visivo di quella scimmia. La "diagonalness" determina la frequenza con cui il neurone spara.

una forza ipotizzato che altri neuroni possono essere trovati e mappati ad altre qualità come arrossamento, o texturedness, e altre cose.

C'è qualcosa che gli umani possono fare che non ho mai visto un programma per computer in grado di fare. è qualcosa chiamato "chiusura", in cui un essere umano è in grado di inserire informazioni su qualcosa che stanno vedendo, che in realtà non esiste nell'immagine. un esempio:

  * 






*     * 

è un triangolo? Se sapessi che era in anticipo, probabilmente potresti creare un programma per connettere i punti. Ma cosa succede se sono solo punti? Come puoi sapere? Non tenterei di farlo a meno che non avessi un modo davvero intelligente di trattare con quello.

Ci sono molti altri aspetti della percezione umana che potresti essere in grado di utilizzare. Buona fortuna, non hai scelto un compito semplice.

+0

mi hai dato una buona idea, se potessi seguire lo sguardo degli artisti sull'immagine sorgente, potrei determinare le aree chiave dell'immagine che attirano l'attenzione, volti delle persone, ecc., E usare questo per determinare quale parti dell'immagine devono essere riprodotte con maggiore cura. Penso che avrei lasciato il triangolo così com'è, tre stelle, il che suggerisce un modo migliore di affermare il mio obiettivo, per riprodurre un'immagine che mantiene le caratteristiche che trasmettono la maggior parte della esperienza dell'immagine. Io non posso sperare di diagramma l'esperienza di vedere l'immagine Lascio allo spettatore di trovare il triangolo delle tre stelle –

3

Non posso rispondere direttamente alla tua domanda, ma dovresti dare un'occhiata alla macchina per pittura dell'artista/programmatore (Lisp) Harold CohenAaron.

+0

si ringraziano Dave che è davvero interessante –

+0

Come molti degli artisti d'avanguardia che lavorano con la tecnologia, ha iniziato lavorando su questo negli anni '70, che credo lo metta nei libri di storia. Se riesci a vederlo da qualche parte, è disposto a parlare del processo ad altri programmatori. –

0

Penso che una cosa che potrebbe aiutare in questo compito inaudito è il coinvolgimento umano. intendo i dati come se potessi avere molte persone che fissano puntini casuali (come nel post precedente) e connetterli come vedono bene. potresti sfruttare questi dati.

Problemi correlati