Bilderkennung Programmieren?
Hallo, ich habe hier ein Beispielbild:
Kann mir jemand Tipps geben wie man etwas am besten programmieren koennte, das andere Bilder die aehnlich aussehen erkennt?
Ich weis das sowas wie neuronale netzwerke fuer sowas gebaut werden, aber ich dachte vielleicht kann man sowas einfach wie die Erkennung von diesen Linienmustern auch anders bauen, oder auch wenn man es mit einem neurnalen netz bauen sollte, mueste ich anfangspunkte oder beispielcode finden, damit ich weis wie ich das selber aufbauen soll.
Oder vielleicht kann mir jemand ein Forum oder aehnliches empfehlen wo man mehr Hilfe und beispiele findet?
5 Antworten
Hallo alberttomasusw,
ein NN wird eine durchgehende Linie schon erkenne können, allerdings könntest Du diese auch mit einer sehr simplen Prüfung erreichen.
Du prüfst für jeder vertikale Bildlinie ob sich dort genau ein weißes Pixel befindet. Dann prüfst Du noch ob diese weißen Pixel mit ihren Nachbarn jeweils zusammenhängen.
Gruß
Was verstehst Du unter gleich? Der beschriebene Algorithmus erkennt alle Bilder positiv, die eine weiße Linie enthalten, die durchgehend von links nach rechts geht.
Was bedeutet also "ähnlich"? Hast Du ein Beispiel?
Gruß
Zum Beispiel wenn eine Linie an verschiedenen stellen andere zacken hat aber im groben gesehen aehnlich aussieht soll das erkannt werden. Ich denke man wird da irgendetwas einbauen muessen das Punkte vergibt wenn beim Bild welches beobachtet wird Aehnlichkeiten auftauchen und je nachdem wenn die Punktzahl ein bestimmten Wert erreicht koennte man sagen das es ein aehnliches Bild ist.
Andere Zacken? Das sind halt anders verbundene weiße Punkte. Solange in jeder vertikalen Linie genau ein weißer Punkt ist, ist doch alles ok.
Du hast offenbar nur folgende Regeln:
- Ein Punkt pro vertikale Linie (genau ein y für jedes x)
- Jeder Punkt (außer Start und Ende) müssen zwei direkten Nachbarn besitzen
Gruß
Danke, ich glaub ich verstehe jetzt besser was du meinst. Im Prinzip werde ich auch nicht drum herum kommen in diesem Gebiet viele einzelne Test zu machen.
Mh, ich sehe noch immer nicht wie Du auf "viele einzelne Tests" kommst.
Es sind doch recht wenige, einfache Bedingungen.
Ansonsten vielleicht noch 1-2 Beispielbilder?
Gruß
ich sehe hier keine Moeglilchkeit im Kommentar ein Bild ein zu fuegen,
sonst koennte ich noch ein Bild zeigen das aehnlich aussieht.
Jedoch werde ich schon etwas mehr Erkennung programmieren muessen.
Das Program soll nicht einfach nur erkennen ob eine weise Linie in einem
schwarzen Bild zu sehen ist. Es soll erkennen ob diese weise Linie von
Bild A aehnlich aussieht wie die weise Linie in Bild B. Also ich denke das
koennte man ein wenig vergleichen wie das erkennen von Zahlen in Bildern, wo
die Zahlen per hand geschrieben werden und immer bisjen anders aussehen
koennen, aber halt weitgehend erkannt werden sollen.
Ah, ok verstehe. Der Verlauf der Linie soll auch "ähnlich" sein.
Du kannst die mittlere Abweichung der Linien berechnen. Dann stellst Du einen gewissen Schwellenwert ein.
Ansonsten ja, das kann ein NN natürlich auch ganz gut. Aber die Berechnung ist so simpel, dass das mit einfacher Logik auch geht.
Interessant sind Fälle wo die selbe Linie einfach x Pixel verschoben ist. Ziemlich ähnlich und sollte daher positiv erkannt werden. Wird bei automatischer Chartanalyse auch gemacht um die verschiedenen Muster zu erkennen.
Gruß
Ja ich denke auch das man es mit ein paar Vergleichsfunktionen bauen koennte. Ich werde da bisjen rumtesten. NN ist aber auch ein interessantes Gebiet wo ich mal vielleicht was bauen will, wobei es bestimmt mittlerweile schon viele fertige NN Sachen kostenlos gibt mit denen man arbeiten koennte. Aber der Anfang, der Einstieg ist immer das schwierigste, ich will beim Anfang schon so gut wie jede Kleinigkeit nachvollziehen koennen und das ist selbstbauen ein guter Lehrweg.
Wenn du zufaellig Sachen kennst fuer automatische Chartanalyse wuerde ich mich auch drueber freuen. Ich will zwar am liebsten alles selber bauen, aber ich schaue mir auch gerne fertige Sachen an.
Die Erkennung selbst ist einfach. Ebenso ist es einfach ein Bild zu finden, welches exakt gleich ist.
Das wäre dann einfach das Vergleichen von 2 2D-Arrays auf Gleichheit.
Interessanter ist da vmtl. eher die Linienerkennung.
Eine Möglichkeit: https://de.wikipedia.org/wiki/Hough-Transformation
Problematisch wird es Bilder zu erkennen, die ähnlich aber nicht gleich sind.
Wenn dich sowas interessiert: https://www.amazon.de/Digitale-Bildverarbeitung-algorithmische-Einführung-X-media-press/dp/3642046037
Danke fuer die Links ich. Ich will versuchen aehnliche Bilder erkennen zu koennen.
Hallo, zwar etwas spät, aber du kannst eine Fourier Transformation Drüberlaufen lassen und dann das Fourier Transformierte Bild mit einer Weichzeichnerfunktion weichzeichnen und dann die werte von beiden Transformierten Weichgezeichneten Multiplizieren und dann das Integral davon bilden. Und dann hast du eine Fuzzy Logische Einschätzung dafür, wie ähnlich die Bilder sind. Je höher des do ähnlicher.
opencv sollte helfen
Kurz und knapp :
Schau dir mal Firebase an - sie besitzen ein sehr großes "Sortiment" an ML-Kits.
Ja was du da beschreibst hoert sich so an wie man exakt gleiche Bilder erkennen koennte. Ich will etwas bauen das aehnliche Bilder erkennt.