WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Winkel in einem Bild bestimmen.

 

smjh2581
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2016, 11:40     Titel: Winkel in einem Bild bestimmen.
  Antworten mit Zitat      
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.

Hier mein bisheriger Code:

Code:

clear all;
close all;
clc;

[BildDatei,PathName,FilterIndex] = uigetfile({'*.jpg','All Image Files';
           '*.*','All Files' },'Auswahl des Bildes','P:\Master\Kontakwinkel\Bilder');

img =  importdata(strcat(PathName,BildDatei));

B = size(img);      
if length(B(1,:))==3            
    if B(1,3)==3                
        img_2=rgb2gray(img);
    end
end

figure, imshow(img_2);
h = imrect(gca, [10 10 3500 2000]);
setResizable(h,1)
rect = wait(h);
resize = imcrop(img_2, rect);

BW = edge(resize,'canny',[0.25 0.35],1);
edges_open=imclose(BW,ones(3,3));
edges2=bwareaopen(edges_open,1000);

 


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.

Vielen Dank im Voraus

Canny.png
 Beschreibung:
Cannyfilter

Download
 Dateiname:  Canny.png
 Dateigröße:  5.43 KB
 Heruntergeladen:  578 mal
HI2B0446.JPG
 Beschreibung:
Originalbild

Download
 Dateiname:  HI2B0446.JPG
 Dateigröße:  6.76 MB
 Heruntergeladen:  670 mal
Private Nachricht senden Benutzer-Profile anzeigen


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2016, 11:52     Titel:
  Antworten mit Zitat      
Hallo,

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

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
smjh2581
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2016, 12:11     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort.

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.
Private Nachricht senden Benutzer-Profile anzeigen
 
bigert
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2016, 14:12     Titel:
  Antworten mit Zitat      
Hallo,

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?!

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
smjh2581
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2016, 15:40     Titel:
  Antworten mit Zitat      
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.

Gruß
smjh2581
Private Nachricht senden Benutzer-Profile anzeigen
 
bigert
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2016, 16:38     Titel:
  Antworten mit Zitat      
Das klingt ziemlich gut! mal sehen ob ich das dann demnächst auch hinbekomme Wink
wie schnell bist du ungefähr mit deinem Algorithmus? bei mir wird es wahrscheinlich auf eine große Anzahl an Einzelfotos (Film) hinauslaufen.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
smjh2581
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2016, 20:38     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.