Algorithmus für einen Zeichnungs- und Lackierroboter -
Hallo
Ich möchte eine Software schreiben, die ein Bild analysiert und dann ein Bild erzeugt, das erfasst, was ein menschliches Auge im Originalbild wahrnimmt, indem es ein Minimum an Bezierpfad-Objekten mit variierender Farbe und Opazität verwendet.
Im Gegensatz zum letzten Twitter-Superkomprimierungswettbewerb ( siehe: stackoverflow.com/questions/891643/ twitter-image-encoding-challenge ) , mein Ziel ist es nicht, eine Replik zu erstellen, die dem Image treu bleibt, sondern die menschliche Erfahrung des Betrachtens des Bildes zu reproduzieren.
Wenn das Originalbild zum Beispiel einen roten Ballon in der oberen linken Ecke zeigt und die Reproduktion etwas wie einen roten Ballon in der oberen linken Ecke hat, dann habe ich mein Ziel erreicht, auch wenn der Ballon in die Reproduktion ist nicht ganz in der gleichen Position und nicht ganz die gleiche Größe oder Farbe.
Wenn ich sage "wie von einem Menschen wahrgenommen", meine ich das in einem sehr begrenzten Sinne. Ich versuche nicht, die Bedeutung eines Bildes zu analysieren, ich muss nicht wissen, was ein Bild ist, ich interessiere mich nur für die wichtigsten visuellen Merkmale, die ein menschliches Auge bemerken würde, in dem Maße, wie dies durch ein Algorithmus, der nicht in der Lage ist zu konzeptualisieren, was er tatsächlich beobachtet.
Warum dieses ungewöhnliche Kriterium der menschlichen Wahrnehmung gegenüber der fotografischen Genauigkeit?
Diese Software wird verwendet, um einen Zeichnungs- und Lackierroboter zu steuern, der mit einem menschlichen Künstler zusammenarbeiten wird ( siehe: video.google.com/videosearch?q=mr%20squiggle ) .
Anstatt die vom Menschen gemachten Bilder, die nicht fotografisch perfekt sind, als Fehler zu behandeln, sollte der Algorithmus versuchen, das, was bereits auf der Leinwand ist, in das endgültige Bild einzubeziehen.
Daher sind relative Helligkeit, Farbton, Sättigung, Größe und Position viel wichtiger als fotografisch identisch mit dem Original. Die Aufrechterhaltung der Topologie der Features, Farbblock, Gradienten, konvexe und konkave Kurve wird wichtiger sein, die genaue Größe Form und Farbe dieser Funktionen
Immer noch mit mir?
Mein Problem ist, dass ich etwas an dem "wenn du einen Hammer hast, sieht alles wie ein Nagel" -Syndrom aus. Für mich scheint dies der Weg zu sein, einen genetischen Algorithmus zu verwenden, der vergleichbar ist mit dem Vergleich von Wavelet-Transformationen (siehe: grail.cs.washington.edu/projects/query/ ) verwendet von retrievr (siehe: labs.systemone.at/retrievr ) um passende Lösungen auszuwählen.
Aber der Hauptgrund, warum ich das als die Antwort sehe, ist, dass dies die Techniken sind, die ich kenne, es gibt wahrscheinlich viel elegantere Lösungen mit Techniken, über die ich jetzt nichts weiß.
Es wäre besonders interessant zu berücksichtigen, auf welche Weise das menschliche Sehsystem ein Bild analysiert, so dass besondere Aufmerksamkeit auf gerade Linien und Winkel, kontrastreiche Ränder und große Blöcke ähnlicher Farben gelegt werden muss.
>Haben Sie Vorschläge für Dinge, die ich über Vision, Bildalgorithmen, genetische Algorithmen oder ähnliche Projekte lesen sollte?
Danke
Mat
PS. Einige der obigen Schreibweisen können für Sie und Ihre Rechtschreibprüfung falsch erscheinen. Es sind nur Variationen der internationalen Schreibweise, die sich von dem Standard in Ihrem Land unterscheiden können: z. Australischer Standard: Farbe gegen amerikanischen Standard: Farbe
Es gibt ein Modell, das als Algorithmus implementiert werden kann, um eine Ausprägungskarte für ein Bild zu berechnen und zu bestimmen, welche Teile des Bildes die meiste Aufmerksamkeit von einem Menschen erhalten würden.
Das Modell heißt Itti Koch Model
Hier finden Sie eine Übersicht hier
Und mehr Ressourcen und C ++ Quellcode hier
Ich kann deine Frage nicht direkt beantworten, aber du solltest dir wirklich einen Künstler / Programmierer (Lisp) Harold Cohen ansehen 's Malmaschine
Das ist eine ziemlich große Aufgabe. Vielleicht interessieren Sie sich für die Vektorisierung von Bildern (ich weiß nicht, wie es offiziell heißt), mit der gerasterte Bilder aufgenommen werden (z. B. Bilder, die Sie mit einer Kamera aufnehmen), und gibt eine Reihe von Bezier-Linien aus Bild, das Sie einfügen. Da gute Algorithmen oft sehr hochwertige (lese: komplexe) Zeilensätze ausgeben, wären Sie auch an Vereinfachungsalgorithmen interessiert, die enorm helfen können.
Leider bin ich nicht neben meiner Bibliothek, oder ich könnte eine Reihe von Büchern über Wahrnehmungspsychologie empfehlen.
Das erste, was Sie beachten müssen, ist, dass die Physiologie des menschlichen Auges so ist, dass wir, wenn wir ein Bild oder eine Szene untersuchen, nur sehr kleine Teile auf einmal erfassen, während unsere Augen schnell herumfliegen. Unser Verstand packt die verschiedenen Teile zusammen, um zu versuchen, ein Ganzes zu bilden.
Sie können damit beginnen, einen Algorithmus für den Pfad eines Augapfels zu finden, während er herumspielt. Vielleicht ist es zu Kontrast angezogen?
Als nächstes passen unsere Augen die "Belichtung" abhängig vom Kontext an. Es ist wie diese Bilder mit hoher Dynamik, wenn sie nicht durch Mehrfachbelichtungen einer ganzen Szene zusammengefügt werden, sondern durch viele kleine Bilder, die jeweils für sich allein ausgeglichen sind, sich aber in ihre Umgebung einfügen, um eine hohe Dynamik zu erzeugen.
Nun wurde in einem Affengehirn festgestellt, dass ein einziges Neuron aufleuchtet, wenn sich oben links in seinem Sichtfeld eine diagonale Linie befindet. Ähnliche Neuronen können für vertikale Linien und horizontale Linien in verschiedenen Bereichen des Gesichtsfeldes dieses Affen gefunden werden. Die "Diagonalität" bestimmt die Häufigkeit, mit der das Neuron feuert.
Man könnte spekulieren, dass andere Neuronen gefunden und auf andere Eigenschaften wie Rötung oder Textur und andere Dinge abgebildet werden können.Es gibt etwas, was Menschen tun können, was ich noch nie in einem Computerprogramm gesehen habe. Es ist etwas, das man "Schließung" nennt, wo ein Mensch Informationen über etwas, das er sieht, ausfüllen kann, das im Bild nicht existiert. ein Beispiel:
%Vor%ist das ein Dreieck? Wenn Sie wussten, dass es im Voraus war, dann könnten Sie wahrscheinlich ein Programm machen, um die Punkte zu verbinden. Aber was ist, wenn es nur Punkte sind? Wie kannst du das wissen? Ich würde diesen hier nicht versuchen, wenn ich nicht wirklich clever damit umgehen könnte.
Es gibt viele andere Fakten über die menschliche Wahrnehmung, die Sie verwenden könnten. Viel Glück, Sie haben keine einfache Aufgabe ausgewählt.
Ich denke, eine Sache, die Ihnen bei dieser enormen Aufgabe helfen könnte, ist die menschliche Beteiligung. Ich meine Daten. als ob du viele Leute sitzen hättest, die auf zufällige Punkte starren (wie aus dem vorherigen Post) und sie verbinden, wie sie richtig sehen. Sie könnten diese Daten nutzen.
Tags und Links image-processing computer-vision artificial-intelligence robotics