Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bilderkennung (https://www.delphipraxis.net/177797-bilderkennung.html)

Finki 27. Nov 2013 22:55

Bilderkennung
 
Hey hier bin ich mal wieder.

Und nun in eigenem Interesse.

Mich würde interessieren wie man eine Bild Erkennung programmiert und welche Sprache oder besser welche Programme man braucht um eine Bilderkennung Software zu programmieren. Hat da jemand Erfahrung gemacht?
LG Finki

Sir Rufo 27. Nov 2013 23:03

AW: Bilderkennung
 
Was willst du im Bild erkennen?

Deine Oma, einen roten Fleck, Mädels oben ohne, Text, Barcodes, ...

Die Sprache ist da irgendwie erstmal egal, vor allem solange nicht klar ist, wohin die Reise gehen soll

Finki 27. Nov 2013 23:09

AW: Bilderkennung
 
Am Ende soll ein Programm heraus kommen in das ich 2 Bilder laden Kann und dann schreib ich Namen einer Sache, zB Baum, welche auf beiden Bildern zusehen ist und das Programm soll mir dann zeigen was/ wo die Sache ist.

Aber was meintest du mit den Mädchen oben ohne:? Ne Spaß den bedarf hab ich grade nicht

Sir Rufo 27. Nov 2013 23:19

AW: Bilderkennung
 
Ist der zu suchende Baum ähnlich oder exakt (pixelgenau) gleich (wurde aus dem anderen Bild heraus kopiert)?

Finki 27. Nov 2013 23:55

AW: Bilderkennung
 
Eher ähnlich

Namenloser 28. Nov 2013 00:07

AW: Bilderkennung
 
Das ist mehr oder weniger ein aktuelles Forschungsgebiet.

Mit anderen Worten: Wenn du so fragen musst, gib es auf ;). Nicht böse gemeint, ich könnte es selber ja auch nicht.

Aber wenn es dich interessiert, kannst du dir ja dieses Projekt aus der DP mal anschauen: http://www.delphipraxis.net/102386-n...erkennung.html – sozusagen "Objekterkennung light". Aber zwischen dem und der Erkennung und Zuordnung von beliebigen Objekten auf Bildern liegen von der Komplexität her noch mal mehrere Größenordungen...

Edit: Bei Google suchenFourier Descriptor kann ich noch in den Raum werfen. Habe ich aber auch nur mal von gelesen... Damit ist es wohl möglich, Konturen von Objekten abzugleichen, unabhängig von Skalierung, Rotation usw..

Popov 28. Nov 2013 00:41

AW: Bilderkennung
 
Wenn man sich so anguckt was Google so bei seiner Bildersuche bietet - und die ist schon gut - dann könnte man sich da paar Ideen rauspicken. Also nochmal, ich weiß nicht wie sie das machen, aber man kann da schon was erkennen.

Zuerst einmal erkennt Google mehr oder weniger die Farbe des Bildes. Also ein Bild besteht natürlich aus vielen Farben, aber es tendiert in eine Richtung, z. B. da gibt es viel grün, oder gelb oder rot. Dann ist das Bild eben grün, gelb oder rot. Sucht man ein Gesicht und wählt die Farbe Lila, tendiert das Bild in diese Richtung.

Ein Baum hat zum Beispiel einen braunen und grünen Klecks. Der Braune ist unter dem Grünen. Das könnte schon mal ein Anzeichen für einen Baum sein. Es könnte aber auch ein Afrikaner mit einem grünen Pullover sein, der einen Handstand macht.

Ich denke (ich denke, ich weiß es nicht), dass Google die Bilder reduziert. So kann man schneller Bereiche erkennen. Nehmen wir an du hast ein Bild 1000 x 1000 Pixel und ein Bild 300 x 300 Pixel. Du vergleichst jetzt aber nicht die Pixel miteinander, sondern reduzierst das Bild zuerst auf 10 x 10 Pixel. Sind sich die Bilder ähnlich, sollten die reduzierten Bilder auch ähnlich sein. Evtl. sogar gleich.

Namenloser 28. Nov 2013 00:54

AW: Bilderkennung
 
Ich glaube, dass Google mehrere Ansätze kombiniert.

1. Ein Algorithmus um identische ("pixelgleiche") Bilder (oder Teilbilder) zu finden.
2. Verschiedene Algorithmen um basierend auf Farbe, Helligkeitsverteilung usw. "ähnliche" Bilder zu erkennen. Da merkt man auch immer sofort, dass die Ergebnisse deutlich schlechter sind als bei 1.
Und 3. dürfte Google auch die Ergebnisse aus der "Vorwärts"-Bildersuche mitberücksichtigen. Das heißt, Google wird sich (bei bekannten Bildern) wohl angucken, bei welchen Suchworten das eingegebene Bild in der normalen Google-Bildersuche am häufigsten auftaucht und dann andere Bilder aus seiner Datenbank heraussuchen, die sich viele Suchworte mit dem Quellbild teilen.

Wenn es sehr eindeutig ist, gibt Google ja sogar einen vorgeschlagenen Suchbegriff aus, dann steht da z.B. "Vermutung für dieses Bild: Afrikaner, der Kopfstand macht".

Ich denke, dass Google vor allem durch den letzten Punkt deutlich bessere Ergebnisse liefern kann als Mitbewerber wie z.B. Tineye, obwohl es die schon länger gibt.

BUG 28. Nov 2013 01:11

AW: Bilderkennung
 
Zitat:

Zitat von Popov (Beitrag 1237718)
Wenn man sich so anguckt was Google so bei seiner Bildersuche bietet - und die ist schon gut - dann könnte man sich da paar Ideen rauspicken.

Das was die Google-Suche bietet, würde ich klar als Multimedia-Retrieval einstufen ... wenn man da ein Stichwort für die weitere Recherche sucht.

Die Frage von Finki würde ich eher als maschinelles Lernen einordnen (obwohl die Themen durchaus Berührungspunkte haben).
Allerdings ist die Aufgaben-Stellung ("Finde etwas, was auf beiden Bildern vorhanden ist und nenne es 'Baum'.") auch für einen Menschen nicht wirklich einfach :mrgreen:

Medium 28. Nov 2013 09:53

AW: Bilderkennung
 
Gerade bei derart generischen Begriffen wie "Baum", "Haus", "Auto" usw. wird es eher etwas für einen Science Fiction Autor als einen Entwickler. Namenlosers dritter Punkt erledigt dabei einen sehr wesentlichen Beitrag: Es stellt einen Kontext zu einem Bild her, ohne dass Objekte im Bild direkt erkannt werden müssen. Eine riesige Hürde die dort via Datamining geschickt genommen wird, für einen Nicht-Googleaner aber kaum erreichbar ist.

Das best mögliche, was man ohne Forschungsteam im Rücken imho noch ganz gut schaffen könnte, wäre eine Ähnlichkeitsanalyse zweier Bilder (bzw. Teilbilder). Das alleine ist schon richtig übel harter Tobak. Den Schwung zum gesprochenen/geschriebenen Wort würde ich mir weit hinten ans ToDo packen, noch hinter Doktor der Mathematik werden und solchen Dingen :D

Zu Fourierdeskriptoren: Die sind auch nicht immer so einfach einsetzbar. Man braucht schon einen gewaltigen Pre-Processing Schritt um gewünschte Objekte vorab zu isolieren, da man sie dann noch vektorisieren muss. Und aus Bitmaps dann noch z.B. einen generischen Baum heraus zu bekommen... ich glaube das ist nicht wirklich ein Königsweg, weil das Pre-Processing ja dann schon das erledigen müsste, was man mit dem FD erreichen will.

Finki 28. Nov 2013 10:23

AW: Bilderkennung
 
okay das klingt ja alles schon ziemlich interessant. und ich verstehe auch das es schwer ist. ich will nur mal wissen wie es überhaupt im ansatz progtrammiert wird und was der hintergedanke/die logik ist. Sagen wir ich habe eine landschafts, mit sonnenuntergang, aufnahme und nun wioll ich das mir mein programm den horizont mit einer grünen linie nachfährt. wie wird das gemacht?

Neutral General 28. Nov 2013 10:32

AW: Bilderkennung
 
Zitat:

Zitat von Finki (Beitrag 1237772)
Sagen wir ich habe eine landschafts, mit sonnenuntergang, aufnahme und nun wioll ich das mir mein programm den horizont mit einer grünen linie nachfährt. wie wird das gemacht?

Ich denke mal das sollte nicht mal so schwer sein wenn du dich auf Sonnenuntergänge bzw. Horizonte beschränkst. Mit einem Kantenerkennungsalgorithmus kann man da vllt was machen. Oder meistens hat der Himmel ja einen anderen Farbton als der Rest davor. Das sollte man sicher auch ganz gut abgrenzen können.

Kann dir aber ohne selbst nachzuschauen keine konkreten Algorithmen nennen.

Edit: Mir ist grad der "Zauberstab" aus Photoshop in den Sinn gekommen.
Floodfill eines Gebiets solange benachbarte Pixel sich vom Farbton nur zu einem gewissen Teil unterscheiden. Angefangen wird bei einem geeigneten Pixel im Horizont. Die Pixel bei denen das Floodfill terminiert weil ein benachbarter Pixel zu sehr abweicht ist dann wahrscheinlich die Grenze zum Horizont.

Finki 28. Nov 2013 10:37

AW: Bilderkennung
 
Zitat:

Zitat von BUG (Beitrag 1237721)
Die Frage von Finki würde ich eher als maschinelles Lernen einordnen (obwohl die Themen durchaus Berührungspunkte haben).
Allerdings ist die Aufgaben-Stellung ("Finde etwas, was auf beiden Bildern vorhanden ist und nenne es 'Baum'.") auch für einen Menschen nicht wirklich einfach :mrgreen:

Hey nicht schlecht du hast den Grundgedanken dahinter erkannt. Ich weiß das so weiß heftig ist aber iwann muss man den ersten schritt machen, oder?

Finki 28. Nov 2013 10:41

AW: Bilderkennung
 
Zitat:

Zitat von Neutral General (Beitrag 1237775)
Zitat:

Zitat von Finki (Beitrag 1237772)
Sagen wir ich habe eine landschafts, mit sonnenuntergang, aufnahme und nun wioll ich das mir mein programm den horizont mit einer grünen linie nachfährt. wie wird das gemacht?

Ich denke mal das sollte nicht mal so schwer sein wenn du dich auf Sonnenuntergänge bzw. Horizonte beschränkst. Mit einen Kantenerkennungsalgorithmus kann man da vllt was machen. Oder meistens hat der Himmel ja einen anderen Farbton als der Rest davor. Das sollte man sicher auch ganz gut abgrenzen können.

Kann dir aber ohne selbst nachzuschauen keine konkreten Algorithmen nennen.

Okay, aber hier hab ich ja wieder das Problem das ich nicht weiß wie amn soetwas programmiert, bzw was es für möglichkeiten gibt!

Neutral General 28. Nov 2013 10:52

AW: Bilderkennung
 
Siehe mein Edit oben:
Zitat:

Edit: Mir ist grad der "Zauberstab" aus Photoshop in den Sinn gekommen.
Floodfill eines Gebiets solange benachbarte Pixel sich vom Farbton nur zu einem gewissen Teil unterscheiden. Angefangen wird bei einem geeigneten Pixel im Horizont. Die Pixel bei denen das Floodfill terminiert weil ein benachbarter Pixel zu sehr abweicht ist dann wahrscheinlich die Grenze zum Horizont.

Popov 28. Nov 2013 10:55

AW: Bilderkennung
 
Ich denke mir mal, dass jeder hier die Google Bildersuche kennt. Und damit meine ich nicht, dass wenn man Baum aus Suchbegriff eingibt, Google viele Baumbilder liefert. Denn darunter wird vermutlich auch Gerhart Baum von der FDP sein.

Was ich meine ist, dass man Google ein Bild als Suchbegriff gibt, denn das kann man seit ein paar Monaten machen. Und da merkt man, dass Google nicht Pixel für Pixel vergleicht, sondern Gesichter in Bildern findet. Es reicht also auch einen Ausschnitt zu liefern um das ganze Bild zu finden.

Popov 28. Nov 2013 11:26

AW: Bilderkennung
 
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:

Zitat von Medium (Beitrag 1237765)
Das best mögliche, was man ohne Forschungsteam im Rücken imho noch ganz gut schaffen könnte, wäre eine Ähnlichkeitsanalyse zweier Bilder (bzw. Teilbilder). Das alleine ist schon richtig übel harter Tobak.

Ich hab weiter vorne die Idee mit der Verkleinerung des Bildes erwähnt. Die Idee ist nicht aus den Fingern gesogen. Ich hab mal vor einiger Zeit Tests durchgeführt wie man Bilder am einfachsten vergleichen kann. Pixel für Pixel war die schlechteste Idee, da in Zeiten von Jpeg sich kaum ein Bild gleicht. Man muss die Bilder vereinheitlichen. Ich hab das gemacht in dem ich sie stark verkleinerte. Was bleib waren lediglich Abdrücke. Ich hab dann die Abdrücke verglichen. Und die waren bei mir 10 Pixel breit (oder hoch).

Hier ein Beispiel. Im Anhang gibt es zwei Bilder. Bild 1 ist das Originalbild, Bild 2 ist dem ersten Bild nachgezeichnet. Es ist ganz anders, hat aber eine gewisse Ähnlichkeit zum ersten Bild. Mit Pixelvergleich kommt man da nicht weiter. Dann gibt es da noch die Abdrücke (eigentlich 10 Pixel hoch, ich hab sie aber wieder vergrößert). Man erkennt die Ähnlichkeit der Abdrücke. Jetzt muss man noch eine gewisse Toleranz einbauen und schon erkennt man, dass Bild 2 dem Bild 1 ähnlich ist.

Wie gesagt, das Eine ist der Abdruck des einen Bildes, das Andere, die des zweiten Bildes. Eine gewisse Ähnlichkeit ist ja da.

Finki 28. Nov 2013 11:37

AW: Bilderkennung
 
Jungs des sind viele informationen und auch echt gut. Aber mich würde auch interessieren wie man si was programmiert

Neutral General 28. Nov 2013 11:42

AW: Bilderkennung
 
Zitat:

Zitat von Finki (Beitrag 1237798)
Jungs des sind viele informationen und auch echt gut. Aber mich würde auch interessieren wie man si was programmiert

Dann versuch doch mal diese Informationen zu nutzen..
Wir können/wollen dir jetzt hier auch nicht nen kompletten Quelltext präsentieren so wie du ihn willst.

Mit den Informationen kann man schonmal etwas weiter recherchieren und auch mal ein bisschen Code schreiben um ein paar Sachen auszuprobieren.
Und danach weißt du schon besser Bescheid, hast evtl schon Code und kannst spezifischere Sachen nachfragen.

Popov 28. Nov 2013 11:51

AW: Bilderkennung
 
Ich verstehe die Frage nicht, auf was willst du damit hinaus? Wie programmiert man sowas?

Also zuerst erstellt man eine Prozedur. Dazu gibt man in eine Zeit zuerst das Wort Procedure und dann den Namen der Prozedur. Dann erstellt man einen Block. Ein Block beginnt mit dem Wort Begin und endet mit End. Wobei hinter ein ein Semikolon sein muss, also End;

Also, das wäre schon mal ein Ansatz, ein Anfang. Ansonsten könnte man sagen, dass solche Firmen wie Microsoft, Google, Adobe sich die besten Leute von der Uni holt und ihnen gute Gehälter zahlt. Dann sagt einer, wir wollen Bäume auf Bildern erkennen. Programmiert das mal. Dann wird Monate damit verbracht intelligente Routinen zu programmieren, die Bäume auf Bildern erkennen.

Damit will ich nicht sagen, dass das hier keiner drauf hat, aber was erwartest du mit der Frage? Eine fertige Funktion die Bäume in Bildern erkennt? Wenn es drum geht Himmel und Erde zu unterscheiden, das könnte man am Kontrast erkennen. Guck dir mal in Photoshop das magnetische Lasso. Es erkennt den Kontrast zwischen zwei Bereichen. Das ist der Ansatz.

Neutral General 28. Nov 2013 12:01

AW: Bilderkennung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mal innerhalb von 10 Minuten meine Idee in ein paar Zeilen Code umgewandelt (siehe Anhang).

Testweise ohne Floodfilling sondern einfach nur einen Pixel des Horizont als Vergleichsbasis genommen und dann für jeden Pixel geschaut ob die Abweichung zum Basispixel größer als die Toleranz ist. Falls ja, dann wurde der Pixel rot eingefärbt, ansonsten wurde der Pixel übernommen.

Und schon habe ich ein Recht gutes Ergebnis. Mit der etwas besseren ähnlichen Methode die ich genannt habe bekommt man aber auch eine richtige Linie hin.

sh17 28. Nov 2013 12:02

AW: Bilderkennung
 
Hier die können das in Ansätzen mit Gesichtern:

http://www.imageen.com/info/Index.html#IEVision

Dafür das man für IEVision den Source nicht bekommt wie bei ImageEN, lässt die Komplexität dahinter erahnen.

Finki 28. Nov 2013 13:09

AW: Bilderkennung
 
Zitat:

Zitat von Neutral General (Beitrag 1237803)
Habe mal innerhalb von 10 Minuten meine Idee in ein paar Zeilen Code umgewandelt (siehe Anhang).

Testweise ohne Floodfilling sondern einfach nur einen Pixel des Horizont als Vergleichsbasis genommen und dann für jeden Pixel geschaut ob die Abweichung zum Basispixel größer als die Toleranz ist. Falls ja, dann wurde der Pixel rot eingefärbt, ansonsten wurde der Pixel übernommen.

Und schon habe ich ein Recht gutes Ergebnis. Mit der etwas besseren ähnlichen Methode die ich genannt habe bekommt man aber auch eine richtige Linie hin.

Hey könnte ich mir den Quellcod mal anschauen :D:?
wäre echt net :D

Neutral General 28. Nov 2013 13:33

AW: Bilderkennung
 
Hab dir jetzt kein ganzes Projekt gemacht weil ich das testweise in ein anderes von mir eingebaut habe, aber hab dir die Funktion(en) und den Aufruf mal hochgeladen:

http://pastebin.com/we4dcCLL

arnof 28. Nov 2013 14:01

AW: Bilderkennung
 
Für iOS geht das bei den nativen Komponenten von TMS:

http://www.tmssoftware.com/site/img/...eDetection.png

Bei GoogleDrive ist auch irgendwie eine OCR drin, er findet Bilder anhand von Textinhalten des Bildes.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz