LabVIEWForum.de
Erkennung von mehreren Kreisen in einer JPG-Datei - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Grafik & Sound (/Forum-Grafik-Sound)
+---- Thema: Erkennung von mehreren Kreisen in einer JPG-Datei (/Thread-Erkennung-von-mehreren-Kreisen-in-einer-JPG-Datei)



Erkennung von mehreren Kreisen in einer JPG-Datei - TiCy - 18.03.2013 15:14

Hallo zusammen.

Ich suche nach einer Möglichkeit mit LabVIEW mehrere Kreise in einer JPG-Datei zu ermitteln. Im aktuellen VI werte ich die einzelnen Pixel nach einem vordefinierten Farbton auf. Somit stehen mir die Koordinaten der Kreiskanten zur Verfügung. Das spätere VI soll bestimmen, wie viele Kreise vorhanden sind. Im Forum habe ich interessante Beträge gefunden, nur leider wird hier nur ein Kreis betrachtet.

Als Beispiel ist im Anhang ein entsprechendes JPG. Hat eventuell jemand ne Idee wie sich ein solches Programm realisieren lässt? Ich selbst habe leide keine Idee, sry.

MFG Timm


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - eb - 18.03.2013 18:05

Hallo,

ich hab mal kurz drüber nachgedacht und mein zweiter Gedanke war folgender: "scanne" das Bild nach Kanten und beobachte die Veränderung der Kantenanzahl. Dazu habe ich ein kleines Beispiel gezeichnet: man scannt von oben nach unten. immer wenn die Anzahl der erkannten Kreiskanten steigt, wurden neue Kreise erkannt. Je Kreis sind es 2 Kanten mehr.

Heißt konkret(siehe Bild):
Wenn die Kantenzahl von 0 auf 2 steigt, dann wird +1 Kreis gezählt.
Wenn die Anzahl von 2 auf 4 steigt wird +1 Kreis gezählt.
Wenn sie gleich bleibt, ändert sich die Anzahl der Kreise nicht.
Wenn sie von 4 auf 6 steigt, wird +1 Kreis gezählt.
Wenn die Kantenanzahl pro Zeile dann fällt oder gleich bleibt passiert nichts weiter.
Steigt sie wieder, dann wird wieder +1 Kreis addiert.
Sollte die KantenZahl um mehr als 2 steigen sind es immer Kantenzahl/2 Kreise mehr.
[attachment=43987]

Das Spiel funktioniert für Zeilen oder Spalten.
Auch für Ovale geeignet.
Der Scanabstand definiert den kleinstmöglichen Kreisradius.

Wie gut das funktioniert habe ich selbst noch nicht ausprogrammiert! Smile
Wenn du fertig bist, freue ich mich darauf dein programmiertes VI hier gepostet zu bekommen.


ps.: Wenn Tangenten oder Kreuzungspunkte erkannt werden oder eben nicht könnte es noch ein wenig komplizierter werden. die würde ich bei der reinen Kreiszählung erst mal rauslassen und solche Zeilen ignorieren, die ungerade Kantenzahlen zurückliefern. Nur so eine weitere schnelle Idee von mir.

Grüße


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - eb - 20.03.2013 15:55

Hallo nochmal,

ich habe versucht, meinen eigenen Ratschlag umzusetzen und hatte einigen Erfolg bisher.
Leider ist die Erkennungsrate nicht 100%. Sie hängt von der Kreisanzahl ab und wird bei steigender Kreisanzahl schlechter. Problematisch sind die Tangenten, sowie der Umstand das Kreise sich berühren können. Dabei entstehen Erkennungsfehler, die noch nicht ausgemerzt sind.

Vielleicht hat ja jemand Lust weiterzumachen?

Hier mein bisheriger Code: (beinhaltet ein Snippet, dass man direkt auf ein leeres Blockdiagramm ziehen kann)
[attachment=44032]
[attachment=44033]

Gruß


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - TiCy - 21.03.2013 09:05

Hallo eb.

Leider konnte ich mich die Tage nicht viel mit dem VI zur Kreiserkennung beschäftigen. Vielen Dank schon mal für deine Mühen und Ideen. Mein aktuelles VI erzeugt keine Kreise, sondern ließt eine JPG-Datei mit Kreisen ein. Bei mir scheitert es schon bei der Kantenerkennung. Um die Kanten hervorzuheben falte ich das 1D-Image mit einem 2D-Filter-Maske. http://www.cs.uni-paderborn.de/fileadmin/Informatik/AG-Domik/teaching/lectures/ws0809_dbv/slides/ZweiteAbleitung.pdf

Leider sind die Kanten nicht so markant, dass sie nachfolgenden Strukturen diese erkennen können. Ich werte im weiteren Verlauf des VIs dann die einzelnen Pixel aus, um die Kanten zu ermitteln. Gibt es noch andere Möglichkeiten eventuell?

MFG Timm


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - SeBa - 21.03.2013 09:34

Als ich zu ersten Mal hier durchgelesen habe, dachte ich du willst die Kreise erkennen.. im Sinne von Bildverarbeitung "wo ist der Kreis", "welchen Radius hat der Kreis" ect... und da wäre ja das Vision Pack angebracht...

Wenn du "nur" die Anzahl brauchst, geht das bestimmt (behaupte ich mal) mit dem Vision Pack schneller.. aber zu Fuß sollte das auch möglich sein. Einen ersten Ansatz haben wir dank eb ja schon.

Ich würde dir aber empfehlen mal eins deiner richtigen Bilder hochzuladen. Denn nur dann reden wir von den gleichen Voraussetzungen und programmieren nicht aneinander vorbei...

Gruß SeBa


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - TiCy - 21.03.2013 10:38

Das VI soll in einer JPG-Datei Kreise erkennen (deswegen die Themenbeschreibung) und im weiteren Verlauf die Anzahl der Kreise bestimmen. Als Beispiel-JPG-Datei soll die hochgeladene Datei mit den drei Kreisen dienen. Benötigt wird jetzt der Programmteil der die Kanten in der JPG-Datei erkennen kann. Den Teil zur Bestimmung der Anzahl der Kreise besitzen wir dank eb schon.

MFG Timm


RE: Erkennung von mehreren Kreisen in einer JPG-Datei - jg - 21.03.2013 11:02

Offtopic2
Ein Problem wurde bisher nicht beachtet: Die bisherigen Bsp-VIs gehen von "idealen" Kreisen aus. Das wirst du bei einer JPG-Datei auf Grund der Artefakte nicht haben!

Gruß, Jens