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

Zentrum von Zellen festlegen

 

Samu
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2014, 10:58     Titel: Zentrum von Zellen festlegen
  Antworten mit Zitat      
Hallo ihr,

habe folgendes Problem:

Ich habe ein Bild von verschieden Zellen(Fläche in rgb) und auf dem nächsten Bild habe ich dieselben Maße, jedoch werden da nur noch die Zellkerne (Fläche in rgb Image) angezeigt. Jetzt möchte ich gerne die Zellkerne als Zentren der Zellen vom voherigen Bild festlegen um dann mit Hilfe von watershed unterscheiden zu können, ob ich eine oder mehrere zusammenhängende Zellen habe und deren Flächen zu bestimmen.

Aktuell würde ich es aber gerne mit einer einfachen Zwischen lösung probieren, d.h. wenn ich eine Fläche habe, die mehr als einen Zellkern enthält, dann soll er mir diese Fläche durch die Anzahl der enthaltenen Zellkerne teilen.

Wäre nett, wenn mir jemand weiterhelfen könnte, bin Neueinsteiger in Matlab.

DIe doc zu regionprops habe ich mir schon durchgelesen, aber leider keine nützliche Hilfe daraus ziehen können.
Private Nachricht senden Benutzer-Profile anzeigen


Samu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2014, 15:37     Titel:
  Antworten mit Zitat      
Folgende Aktualisierung:

Möchte nun eigentlich nur festlegen, dass wenn ich mehr als einen der Kerne in einer Fläche habe, ich diese Fläche nicht auswerte.

Die Kerne habe ich bis jetzt mit folgende Code numerieren Können
Code:

stat = regionprops(bw42,'Area');
idx = find([stat.Area]);
position = regionprops(bw42,'centroid');
         for i=1:size(idx,2)
         fprintf('areanr %d = size %.2f\n',i);    
         output = sprintf('Nr%d %.2f',i);
         text(position(i).Centroid(1),position(i).Centroid(2),output,'Color','y');
        end
 


Wie kann ich nun sagen, dass für eine Zellfläche ich nur maximal eine der Zellkernflächen haben darf?

Wäre lieb, wenn mir jmd. weiterhelfen könnte
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 04.02.2014, 16:40     Titel:
  Antworten mit Zitat      
Hi,

Leider keine Image Processing Spezialist, aber kannst du dir nicht die Position von dem Umkreis bzw. Kontur der Zelle besorgen und dann einfach überprüfen ob die Position des gefundenen Zellkerns innerhalb der Kontur liegt?
Danach Abfragen in welcher Kontur mehr wie ein Zellkern liegt und die dann nochmal betrachten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2014, 18:11     Titel:
  Antworten mit Zitat      
Hey, erstmal vielen Dank für deine Antwort.

Finde diese Lösung ganz gut, war auch gerade dabei, es über die Fläche zu machen, meine Idee war, die Fläche nur noch zu betrachten und zu schauen wie viele Zellkerne sich daran befinden, indem ich die Zellkerne wie obig identifiziere und eine
Code:

if size(idx,2) == 1
 dann ....
else .....
 


Mein großes Problem bei dieser Lösung aber auch deinem Vorschlag ist, dass ich nicht weiß, wie ich es schaffe nur noch auf die einzelne Fläche (der einen Zelle die ich betrachte) zuzugreifen ...
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 05.02.2014, 09:02     Titel:
  Antworten mit Zitat      
Hi,

Ich hab mir gerade mal die Befehle die du verwendest angeschaut. Habe bisher noch nichts in Matlab mit Bildverarbeitung zu tun gehabt aber wenn ich es nicht komplett falsch verstehe dann müsste doch mit:
Code:
regionprops(bw42,'PixelIdxList')

dir die Indizes deiner ROI zurück gegeben werden. VL. lohnt es sich auch vorher die einzelnen Regionen die du unterscheiden möchtest zu labeln damit du einfacher darauf zugreifen kannst. Denke
Code:
sollte dir das relativ einfach zurückgeben. Wenn ich es richtig verstehe bekommst du eine Matrix mit 1 bis n Werten. Dabei stehen 1 an allen Stellen an der das erste Objekt ist, 2 an Stellen vom zweiten Objekt usw.

Hoffe hilft ein wenig. Ich meine mich auch an ein Beispiel für das zählen von Bakterien zu erinnern. Vl. hilft google da auch nochmal etwas weiter.

Wenn etwas unverständlich ist einfach nochmal nachfragen Smile.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2014, 13:40     Titel:
  Antworten mit Zitat      
Hi, vielen Dank dir schon mal.

Das mit bwlabel ist schon ziemlich hilfreich, habe nun alle meine Gegenden damit labeln können.
Aber muss leider gestehen, habe keine Ahnung, wie ich dem Programm jetzt sagen soll, dass es nur diese Gegend anschauen soll, habe es mal wie folgt versucht:
Code:

L =bwlabel(bw4,4);
for i = 1:size(idx2,1)
   if L == i    % hiermit wollte ich auf die Gegenden mit Index 1 zugreifen,
                   % macht er aber leider nicht, weiß nicht, was ich da
                  % auswählen muss
      q = regionprops(bw42,'all');     % Dann von diesen Gegenden die
                                                   % Eigenschaften
     idx = find([stat.Area]);
    if size(idx,1) == 1
       M(i,1) = cellarea_in_sqmicrons(i)
       else
           M(i,1) = 0;
       end    
    else
        M(i,1) = 0;
    end    
end
 


Vielen Dank dir schon einmal Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Samu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2014, 14:43     Titel:
  Antworten mit Zitat      
Konnte es wie folgt lösen, vielen Dank dir für deine Hilfe, hat mich zum Ziel geführt

Code:

M = zeros (size(idx2,2), 1);
L =bwlabel(bw4,4);
I4 = bw42 + bw4;
subplot(2,2,4);
imagesc(I4), title('Zusammen');

figure;subplot(2,2,1);
imagesc(L), title ('bwlabel');
for i=1:size(idx2,2);
   bw4(L==i) = 1;
   bw4(L>i) = 0;
   bw4(L<i) = 0;
   subplot(2,2,2);
   imagesc(bw4);
   I5 = bw4 + bw42;
   subplot(2,2,3);
   imagesc(I5);


   I7 = zeros(1024,1344);
   I7(I5==2)=1;
   I7(I5<2) = 0;
   subplot(2,2,4);
   imagesc(I7);
   Q = bwlabel(I7,4);
   stat3=regionprops(Q,'all');
   idx5 = find([stat3.Area]);
   
if size(idx5,2) == 1
    M(i,1) = cellarea_in_sqmicrons(i);
else
    M(i,1)= 0;
end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 05.02.2014, 16:57     Titel:
  Antworten mit Zitat      
Hey,

Danke für die Rückmeldung. Freut mich das es funktioniert hat.

Viele Grüße
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 - 2025 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.