9
votes

Un algorithme pour un robot de dessin et de peinture - tous les conseils?

algorithme pour un robot de dessin et de peinture -

Bonjour

Je veux écrire un logiciel qui analyse une image, puis produit une image qui capture quel œil humain perçoit dans l'image d'origine, à l'aide d'un minimum d'objets de chemin Bézier de variation de la couleur et de l'opacité.

Contrairement à la récente concours Twitter Super Compression ( Voir: Stackoverflow.com/questions/891643/ Twitter-Image-Encoding-Challenge ) , mon objectif n'est pas de créer une réplique qui est fidèle à l'image, mais plutôt de reproduire l'expérience humaine de regarder l'image.

Par exemple, si l'image d'origine montre un ballon rouge dans le coin supérieur gauche, et la reproduction a quelque chose qui ressemble à un ballon rouge dans le coin supérieur gauche, puis j'aurai atteint mon objectif, même si le ballon dans La reproduction n'est pas tout à fait dans la même position et pas tout à fait la même taille ou la même couleur.

Quand je dis "comme perçu par un humain", je veux dire cela dans un sens très limité. Je ne tente pas d'analyser la signification d'une image, je n'ai pas besoin de savoir quelle image est de, je ne m'intéresse que par les principales caractéristiques visuelles qu'un œil humain remarquerait, dans la mesure où cela peut être automatisé par un algorithme qui n'a aucune capacité de conceptualiser ce qu'il observe réellement.

Pourquoi ce critère inhabituel de la perception humaine sur une précision photographique?

Ce logiciel serait utilisé pour conduire un robot de dessin et de peinture, qui collaborera avec un artiste humain ( voir: video.google.com/videoseSearch?q=mr%20squiggle ) .

Plutôt que de traiter des marques fabriquées par l'homme qui ne sont pas photographiquement parfaites comme étant nécessairement des erreurs, l'algorithme devrait chercher à incorporer ce qui est déjà sur la toile dans l'image finale.

La luminosité, la teinte, la saturation, la taille et la position sont beaucoup plus importantes que d'être photographiquement identiques à l'original. Le maintien de la topologie des caractéristiques, du bloc de couleur, des gradients, des courbes convexes et concaves sera plus important la forme exacte et la couleur de ces fonctionnalités

toujours avec moi?

Mon problème est que je souffre d'un peu de la "quand tu as un marteau tout ressemble à un syndrome de clou". Pour moi, il semble que la façon de le faire consiste à utiliser un algorithme génétique avec quelque chose comme la comparaison des transformations de ondelettes (voir: grail.cs.washington.edu/projects/query/ ) utilisé par la récupération (voir: lab.systemone.at/retrievr/ ) Pour sélectionner Solutions d'ajustement.

Mais la principale raison pour laquelle je vois cela comme la réponse, c'est que celles-ci sont celles-ci sont les techniques que je sais, il y a probablement beaucoup plus de solutions élégantes à l'aide de techniques que je ne fais rien.

Il serait particulièrement intéressant de prendre en compte la manière dont le système de vision humaine analyse une image, une attention particulière doit peut-être être portée à des lignes droites et des angles, des frontières de contraste élevées et de grands blocs de couleurs similaires.

Avez-vous des suggestions pour des choses que je devrais lire sur la vision, des algorithmes d'images, des algorithmes génétiques ou des projets similaires?

merci

tapis

ps. Une partie de l'orthographe ci-dessus peut apparaître mal à vous et à votre vérification orthographique. Il s'agit simplement de variations d'orthographe internationales qui peuvent différer de la norme dans votre pays: par exemple. Standard australien: Couleur VS Standard américain: Couleur


1 commentaires

Pour le bénéfice des nouveaux utilisateurs, je souhaite souligner que cette question ne serait pas autorisée à exister s'il est affiché aujourd'hui. Il est très large, demande des recommandations générales et n'a pas de réponse définitive. Il existe probablement toujours à des fins historiques, alors n'utilisez pas cela comme un modèle pour une bonne question


5 Réponses :


1
votes

C'est une grande tâche. Vous êtes peut-être intéressé par l'image vectorisante (vous ne savez pas ce qu'on appelle officiellement), qui est utilisé pour prendre des images rastralisées (telles que des images que vous prenez avec une caméra) et génère un ensemble de lignes de Bézier (je pense) qui se rapprochent de la Image que vous mettez en place. Puisque de bons algorithmes génèrent souvent des ensembles de lignes de très haute qualité (en lecture: complexe) que vous souhaitez également être intéressé par des algorithmes de simplification qui peuvent aider énormément.


1 commentaires

Merci RCIX, j'ai l'intention de passer environ trois mois à ce sujet, l'expérience suggère qu'il sera plus long que cela.



1
votes

Malheureusement, je ne suis pas à côté de ma bibliothèque, ou je pourrais recommencer un certain nombre de livres sur la psychologie perceptuelle.

La première chose à considérer est la physiologie de l'œil humain est telle que lorsque nous examinons une image ou une scène, nous ne saisons que de très petits morceaux à la fois, comme nos yeux traînent rapidement. Notre esprit peint les différentes parties ensemble pour essayer de former un tout.

Vous pouvez commencer par trouver un algorithme pour le chemin d'un globe oculaire car il félique. Peut-être est-il attiré par contraste?

Suivant est que nos yeux ajustent l'exposition en fonction du contexte. C'est comme ces images de gamme dynamiques élevées, s'ils étaient en panne ensemble, pas par de multiples expositions d'une scène entière, mais par de nombreuses petites images, chacune étalée seul, mais mélangée dans son environnement pour former une gamme dynamique élevée.

Il y avait maintenant une découverte dans un cerveau de singe qu'il y a un seul neurone qui s'allume s'il y a une ligne diagonale en haut à gauche de son champ de vision. Des neurones similaires peuvent être trouvés pour des lignes verticales et des lignes horizontales dans divers domaines de ce champ de vision de singe. La "diagonale" détermine la fréquence avec laquelle ce neurone incendie.

On pourrait avoir spéculé que d'autres neurones peuvent être trouvés et mappés sur d'autres qualités telles que rougeur ou texturéness et autres choses. < P> Il y a quelque chose que des humains peuvent faire cela, je n'ai pas vu un programme informatique jamais capable de le faire. C'est quelque chose appelé "fermeture", où un humain est capable de remplir des informations sur quelque chose qu'ils voient, cela n'existe pas réellement dans l'image. Un exemple: xxx

est-ce un triangle? Si vous saviez que c'était à l'avance, vous pourriez probablement créer un programme pour connecter les points. Mais si c'est juste des points? Comment peux-tu savoir? Je n'essayerais pas celui-ci à moins d'avoir un moyen très intelligent de traiter celui-là.

Il existe de nombreux autres faits sur la perception humaine que vous pourriez utiliser. Bonne chance, vous n'avez pas choisi une tâche simple.


1 commentaires

Vous m'avez donné une très bonne idée, si je pouvais suivre les artistes regardez sur l'image source, je pourrais déterminer les zones clés de l'image qui attirent l'attention, les peuples faces, etc., et l'utiliser pour déterminer quelles parties de l'image besoin d'être reproduit avec de plus grands soins. Je pense que je quitterais le triangle comme c'esto, trois étoiles qui suggèrent une meilleure façon de dire mon objectif, de reproduire une image qui conserve les fonctionnalités qui transmettent la majeure partie de l'expérience de l'image. Je ne peux pas espérer diagramme l'expérience de voir l'image que je laisserai au spectateur pour trouver le triangle dans les trois étoiles



3
votes

Je ne peux pas répondre directement à votre question, mais vous devriez vraiment jeter un oeil à l'artiste / programmeur (Lisp) Harold Cohen La machine de peinture Aaron .


1 commentaires

Comme beaucoup d'artistes pionniers travaillant avec la technologie, il a commencé à travailler sur ce dos dans les années 70, que je pense le met dans les livres d'histoire. Si vous pouvez réussir à le voir quelque part, il est prêt à parler du processus à d'autres programmeurs.



3
votes

Il existe un modèle qui peut être implémenté comme algorithme pour calculer une carte de saillie pour une image, déterminant que les parties de l'image auraient le plus d'attention d'un humain.

Le modèle s'appelle ITTI Koch modèle
Vous pouvez trouver un document de starting ici
Et plus de ressources et C ++ Sourcecode ici


2 commentaires

Une bonne chose à propos du métafiltre est que vous pouvez attribuer plusieurs réponses correctes, ici, je n'obtiens ici qu'un seul choix. J'aimerais


(Suite) .. J'aurais aimé donner à tout le monde la tique verte, mais c'est la réponse qui m'a donné les directions les plus intéressantes à explorer, grâce à vous tous



0
votes

Je pense qu'une chose qui pourrait vous aider dans cette énorme tâche est la participation humaine. Je veux dire des données. Comme si vous pouviez avoir beaucoup de gens assis à regarder des points aléatoires (comme du post précédent) et de les connecter à leur guise. Vous pouvez exploiter ces données.


0 commentaires