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.
Erkennen von Ellipsen in Contouren mithilfe von OpenCV?
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.
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.
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?
Wie lade ich hier Fotos hoch, von meiner Festplatte?
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.
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.
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
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.
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.
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?
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.
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.