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

Erkennung von (biologischen) Zellen mit Hilfe von watershed

 

DarkCell
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 20.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2013, 16:30     Titel: Erkennung von (biologischen) Zellen mit Hilfe von watershed
  Antworten mit Zitat      
Hey,
ich habe ein Bild, dass etwas verrauscht ist und mehre eingefärbte nuclei von Zellen zeigt. Nun möchte ich dieses Bild so segmentieren, dass ich die einzelnen Zellen voneinander abgrenzen kann.
Da ich noch neu bin bei der Bildverarbeitung mit Matlab habe ich mir erstmal verschiedene existierende Lösungen durchgelesen und bin über die folgende Lösung gestolpert:
http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/
Im Vergleich mit anderen Lösungen kann ich hier alle Schritte verstehen und mit ein wenig Anpassung habe ich damit auch schon gute Ergebnisse erzielt.
Mein Code sieht bisher so aus:
Code:
clear;
close all;

I = imread('Captured DAPI 20x 1.jpg');
figure, imshow(I),title('I')

Igray=I(:,:,3);
figure, imshow(Igray)

%I_eq = adapthisteq(Igray);
%figure, imshow(I_eq), title('I_eq')
I_eq=Igray;

bw = im2bw(I_eq, graythresh(I_eq));
figure, imshow(bw)

bw2 = imfill(bw,'holes');
figure, imshow(bw2)
bw3 = imopen(bw2, ones(5,5));
figure, imshow(bw3)

bw4 = bwareaopen(bw3, 40);
figure, imshow(bw4)

bw4_perim = bwperim(bw4);
figure, imshow(bw4_perim)

overlay1 = imoverlay(I_eq, bw4_perim, [.3 1 .3]);
figure, imshow(overlay1)

mask_em = imextendedmax(I_eq, 15);
figure, imshow(mask_em)

mask_em = imclose(mask_em, ones(5,5));
figure, imshow(mask_em)

mask_em = imfill(mask_em, 'holes');
figure, imshow(mask_em)

mask_em = bwareaopen(mask_em, 40);
figure, imshow(mask_em)

overlay2 = imoverlay(I_eq, bw4_perim | mask_em, [.3 1 .3]);
figure, imshow(overlay2)

I_eq_c = imcomplement(I_eq);

I_mod = imimposemin(I_eq_c, ~bw4 | mask_em);

L = watershed(I_mod);
figure, imshow(label2rgb(L))


figure, imshow(I_eq), hold on
himage = imshow(label2rgb(L));
set(himage, 'AlphaData', 0.3);
title('Lrgb superimposed transparently on original image')
 


Wobei eben den größten Einfluss auf das Ergebnis die Erstellung der Maske hat:
Code:
mask_em = imextendedmax(I_eq, 15);


Verringere ich den Parameter jedoch weiter, bekomme ich auch Marker in vielen anderen Regionen. Jedoch fehlen mir eben in manchen Nuclei noch Marker, sodass ich eben nicht immer zwei Zellen, die Nahe beieinander sind voneinander unterscheiden kann.
Daher die Frage:
Wie kann ich die Maske verbessern, sodass ich noch besser die Zellen voneinander unterscheiden kann?

Hier sind noch Bilder um das zu verdeutlichen:
Ausgangsbild: http://imageshack.us/a/img43/3669/captureddapi20x1.jpg
Und Ergebnisse:
http://imageshack.us/a/img839/8830/watershed.jpg
http://imageshack.us/a/img853/8989/watershedoverlay.jpg
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.