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

Image Processing Toolbox: Watershed verbessern

 

Gerne93
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2018, 11:46     Titel: Image Processing Toolbox: Watershed verbessern
  Antworten mit Zitat      
Moin Moin liebes GoMatlab-Forum,
ich habe schon ein bisschen im Forum gesucht, aber bin zu keinem wirklichen Ergebnis gekommen.
Mein Problem besteht darin, dass ich über die Watershed-Funktion gerne Objekte trennen würde, die aber keine perfekten Umrisse besitzen...
Bei relativ "perfekten" Kreisen hat mein Vorgehen funktioniert, aber bei nicht so klaren Formen, bei denen aber eindeutig eine Überlappung vorliegt, funktioniert sie nicht mehr...
Ich habe mehrere Tropfen, die sich überlagern. In Beispielbild_1 ist meine Ausgangssituation. Beispielbild_2 zeigt die Grenze, die ich über Watershed gerne erzeugen würde.
Mit folgendem Code habe ich es versucht:
Code:

clear all

E2 = imread('Beispielbild_1.jpg');
E2 = im2bw(E2);

J = imcomplement(E2);
figure(1), imshow(J)

% Löcher füllen
BWfill = imfill(J, 'holes');
figure(2), imshow(BWfill)

BWfertig = imcomplement(BWfill);
figure(3), imshow(BWfertig)

C=bwdist(~BWfertig);
figure(4), imshow(C,[],'InitialMagnification','fit')

C = -C;
C(~BWfertig) = Inf;

L = watershed(C);
L(~BWfertig) = 0;
rgb = label2rgb(L,'jet',[.5 .5 .5]);
figure(5), imshow(rgb,'InitialMagnification','fit')
 


Da kommt dann allerdings nicht wirklich was Gescheites raus (siehe Beispielbild_3).
Hat jemand ne Idee, wie ich das Löse?
Freundliche Grüße und Danke im Voraus
Gerne93

Beispielbild_3.jpg
 Beschreibung:
Mein Ergebnis (nicht gerade zufriedenstellend)

Download
 Dateiname:  Beispielbild_3.jpg
 Dateigröße:  21.84 KB
 Heruntergeladen:  433 mal
Beispielbild_2.jpg
 Beschreibung:
Erwünschtes Ergebnis (oder so ähnlich)

Download
 Dateiname:  Beispielbild_2.jpg
 Dateigröße:  1.56 MB
 Heruntergeladen:  445 mal
Beispielbild_1.jpg
 Beschreibung:
Ausgangsbild

Download
 Dateiname:  Beispielbild_1.jpg
 Dateigröße:  40.63 KB
 Heruntergeladen:  450 mal
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2018, 17:13     Titel:
  Antworten mit Zitat      
Bei deinem Beispiel-Bild würde ich versuchen mit Markern zu arbeiten.
Dazu werden erst die Objekte getrennt (z.B. durch Erosion), die getrennten Objekte werden dann als Marker verwendet. imimposemin stellt sicher, dass nur an den Marker -sprich Objekt-Positionen- lokale Minima vorliegt. Damit lassen sich die Objektgrenzen dann meist besser finden.

Code:

E2 = rgb2gray(imread('Beispielbild_1.jpg'));
BW = ~im2bw(E2);
BW = imfill(BW,'holes');
marker = imerode(BW,strel('disk',19));
E2 = imimposemin(E2,marker);
L = watershed(E2);
BW(L==0) = 0;
imshow(BW)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gerne93
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2018, 21:51     Titel:
  Antworten mit Zitat      
Vielen Dank, hat mir sehr geholfen Wink
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.