Verfasst am: 14.01.2016, 10:40
Titel: Winkel in einem Bild bestimmen.
Hallo,
ich habe ein Bild von einem Wassertropfen auf einer Oberfläche (siehe Anhang) und ich möchte nun den Kontaktwinkel zwischen der Oberfläche und dem Tropfen bestimmen.
Ich habe bereits das Bild auf den relevanten Bereich zugeschnitten, ein Grauwertbild draus gebildet und eine Kantenerkennung mittels Cannyfilter durchgeführt (siehe Anhang). Nur leider weiß ich jetzt nicht wie ich weiter verfahren soll um den Winkel zu erhalten.
Wenn ihr mir da vielleicht einen Tipp geben könntet wie ich den Winkel erhalte, eventuell ist der Ansatz mit dem Cannyfilter ja auch gar nicht notwendig.
schau dir mal
ginput
an - da kannst du in der Figure Punkte setzen von denen du dann die x und y Koordinaten bekommst! Da wir im planaren Bereich arbeiten müssten zwei Punkte reichen um den Winkel zu einer Horizontalen zu erhalten
Das Problem hierbei ist, dass die ganze Geschichte weitestgehend automatisiert laufen soll. Der Grund ist, dass es viele verschiedene Oberflächen gibt und somit viele Bilder ausgewertet werden müssen.
ich habe zukünftig mit einem ganz ähnlichen Problem zu tuen und wollte mal fragen ob du vielleicht mittlerweile schon eine Lösung für dein Problem gefunden hast?
habe mich bisher noch nicht so intensiv mit der Thematik beschäftigt aber hätte vielleicht versucht den hellen Punkten in deinem gefilterteten Bild Koordinaten zuzuweisen und daraus dann eine gerade interpoliert, dessen Steigung ich dann einem Winkel zuweisen kann?!
Also ich habe das jetzt so gelöst, dass ich, wie bereits beschrieben, eine Kantenerkennung (Canny) angewandt habe. Das dann noch vorhandene Rauschen habe ich mit einem Opening (bwareaopen) aus dem Bild entfernt. Dann ist wirklich nur die Tropfenkontur übrig, hier kann dann der minimale und maximale X-Wert bestimmt werden. Dadurch habe ich zwei Punkte einer Geraden und kann die Gleichung aufstellen. Danach habe ich alle Objekte unterhalb dieser Geraden aus dem Bild entfernt, da es sich hier bei mir lediglich um eine Spiegelung handelt. Die obere Kontur dann mittels Polynom approximieren und die Ableitung an den beiden Schnittpunkten mit der Geraden bilden und schon hast du die Tangente im Berührungspunkt. Aus der Tangente und der Geraden ergibt sich dann der Winkel.
Das klingt ziemlich gut! mal sehen ob ich das dann demnächst auch hinbekomme
wie schnell bist du ungefähr mit deinem Algorithmus? bei mir wird es wahrscheinlich auf eine große Anzahl an Einzelfotos (Film) hinauslaufen.
Mein Code ist sehr anfällig für Bildrauschen und unterschiedliche Belichtung, für meine Zwecke reichte da eine Lichtquelle mit Netzteil, damit immer die selbe Intensität vorhanden ist, und dementsprechend eine Blende und ISO auf die der Code angepasst ist. Wenn da nicht großartig an dem Opening "gedreht" werden muss, dann läuft ein Bild bei mir in ca. 15-20s durch. Wobei ich kein Programmierer bin und da sicherlich noch Optimierungspotenzial, bezüglich der Geschwindigkeit, ist. Für meine Zwecke war es jedoch ausreichend.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.