Seite 1 von 1
Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 10:38
von uLocked
Hallo,
ich habe ein Fotos mit Blutspritzern und möchte dort den Primärtropfen detektieren. Das Problem bei der Kantenerkennung ist, dass dort eine Abrintspur ist, die bei der Kanten erkennung mitdetektiert wird.
Deshalb die Idee, ob ich eine Ellipse in die Kontur legen kann und die Punkte matchen kann, um den Primärtropfen zu detektieren.
Warum eine Ellipse? Weil das die Form ist die ein aufgetroffener Bluttropfen animmt.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 10:50
von __deets__
Die Tage einem anderen User das hier geraten:
viewtopic.php?t=51205
Da sind ggf Strategien drin.
Ich könnte mir auch vorstellen, dass eine PCA hilft:
https://docs.opencv.org/3.4/d1/dee/tuto ... o_pca.html
Da reicht es ggf schon, den größten Tropfen durch zu identifizieren.
Und das ist im Grunde eine Vorbereitung deiner Idee: die beiden Hauptkomponenten entsprechen den Achsenabschnitten a, b deiner Ellipse. Ggf kannst du mit denen und dem Centroid der PCA auch eine Ellipse fitten, und dann wiederum einen Fehler mit der Kontour bestimmen. Um so noch genauer auf eine Form zu klassifizieren.
Wie immer bei sowas gilt: so viele wie möglich Testdaten erstellen, die gut gelabeld sind. Und deine Klassifikation darüber laufen lassen & eine Erfolgsquote berechnen.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 10:56
von uLocked
Das Problem dabei ist, dass das Center nicht im Primärtropfen erkannt wird, weil die Abrintspur ja auch als Teil des Tropfens erkannt wird.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 11:51
von __deets__
Man kann über solche Dinge nicht reden, ohne sie zu sehen. Bitte bring aussagekräftige Bilder und Code bei.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 12:25
von uLocked
Der Code den ich verwende ist 1:1 der hier:
https://www.pyimagesearch.com/2016/03/2 ... th-opencv/
Wie lade ich hier Fotos hoch, von meiner Festplatte?
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 12:41
von __deets__
Du musst die auf Imgur packen, und einen Link setzen. Ist leider etwas umständlich.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 14:40
von uLocked
Hier sind Fotos
So ist es zurzeit:
So hätte ich es gerne:

Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Dienstag 9. Februar 2021, 14:49
von __deets__
Man muss wirklich Links auf die Bilder setzten. Es ist etwas ärgerlich, und das eine Feature, das ich mir hier unbedingt wünsche. Aber als Mod habe ich es mal kurz repariert.
Zur Sache: ich verstehe den Wunsch. Die PCA wird da so direkt nicht helfen. Es gibt etwas, das ich neulich Steffen Brunton gesehen habe: robust PCA. Die kann outlier ausschließen. Ich habe das nicht en Detail nachvollzogen, aber vielleicht ein Weg, diese Abrintspur zu ignorieren.
Die Frage die ich mir stelle: was ist momentan der Zweck? Willst du nur wissen, was der größte Tropfen ist? Denn dann reicht doch die Konturfläche. Die kannst du ja von OpenCV Berechnen, und einfach die Kontouren danach sortieren - die größte ist der Treffer.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Mittwoch 10. Februar 2021, 12:20
von uLocked
Vielen Dank, ich habe das nicht ganz verstanden. Ich brauche nur von jedem diese Ellipse, der Primärtropfen. Das läuft in einer Schleife und vermisst alle gefundenen Konturen. Wenn diese Abrinntspur auftritt, dann brauche ich eben nur die Ellipse und möchte, dass die automatisch vermessen wird. Die Idee ist viele Ellipsen in die Contour zu packen, aber ich weiß nicht wie ich das in Python bewerkstellige. Der Zweck ist, dass diese Abrinntspur die Berechnung des Auftreffwinkels verfältscht
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Mittwoch 10. Februar 2021, 12:50
von __deets__
Verstehe. Dann ist die eigentlich Aufgabe also die Abrintspur zu finden. Dazu habe ich so aus der lameng keine Idee, muss ich länger drüber nachdenken.
Wenn es Aber am Ende nur darum geht, den Winkel zu berechnen, dann würde ich bei den gegebenen Daten einen einfachen Mehrheitsentscheid nehmen. Berechne die Winkel jeder Kontur. Nimm den median. So eliminierst du Ausreißer.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Mittwoch 10. Februar 2021, 13:14
von uLocked
Das wird so nicht funktionieren, weil ich den Winkel für jeden einzeln bestimmen muss. Gibt es eine Möglichkeit in die Fläche der Contour eine Ellipse oder Quadrat zu legen und dann das mit der größten Fläche zu nehmen?
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Mittwoch 10. Februar 2021, 14:08
von __deets__
Du bestimmst den ja auch für jeden einzelnen. Nur entscheidest du dich nur einen zu berücksichtigen, und schmeißt outlier raus. Ich sehe zb schon zwei, der komisch knubbelige ist doch auch irgendwie falsch. Und jeder wissenschaftliche Prozess gibt Fehlerwahrscheinlichkeiten an. Wenn du vor Gericht mit diesem Blutspritzer stehst, dann wird das doch auch nicht an nur einem Tropfen festmacht. Hoffe ich zumindest sehr.
Und deine Frage umzuformulieren ändert meine Antwort nicht. Ich habe schon verstanden, was du dir wünschst. Ich habe nur im Moment keine Antwort, und müsste mir da länger Gedanken machen.
Re: Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
Verfasst: Mittwoch 10. Februar 2021, 14:18
von uLocked
Okay. Danke für deine Hilfe