Verfasst am: 07.02.2013, 23:10
Titel: Fluoreszenz, Tiefenbestimmung und 3D-Darstellung
Hallo ihr lieben,
# Problembeschreibung:
Ich bekomme Mikroskop-Bilder (16-Bit Grauwerte, als TIF) als Z-Stapel (20 bis 80 Bilder am Stück aufgenommen in aufeinander folgenden Z-Ebenen). Auf diesen Bildern sind fluoreszierende Partikel zu sehen, die wenn sie nicht im Fokus liegen von Beugungsringe umgeben sind. (Ausschnitt siehe Anhang) Die Ringe werden größer, je weiter man von der Fokusebene entfernt ist.
# Ziel ist es zu unterscheiden ob ein Partikel A, einen anderen Abstand zur Fokusebene hat als ein anderes Partikel B und wie weit sie voneinander entfernt sind, um ihnen dann eine Tiefe zuordnen zu können. (über den bekannten Abstand der Z-Ebenen)
# Mein Ansatz ist es,
ich lese die Bilder ein (über imread()),
ich entferne unerwünschte Bildstörungen so gut es geht (siehe Quelltext),
ich füge das gerade verarbeitete 2D-Bild zu einer 3D-Matrix hinzu (hier die Variable ImageStack) und erzeuge so einen Bildstapel.
Bis hier hin habe ich es aus anderen Programmen und mit der Hilfe-Funktion zusammenbauen können. Was jetzt fehlt und wo ich verzweifle ist:
Der ImageStack soll als 3D-Graf dargestellt werden, dort würden die Ringe trichterförmige Gebilde bilden, mit denen man auf einen Blick sagen kann, wo die Beugungsringe ihre kleinste Ausdehnung haben. Dafür soll der Grauwert 0 als durchsichtig gewertet werden und der maximale Grauwert einem hellen Weiß entsprechen. Versucht habe ich es mit surf mit hist3 mit "surface" und plot3. Aber ich bekomme nicht einmal ein 3D-Bild hin.
Ich vermute, ich muss das was ich über imread() bekomme in eine andere Form bringen, aber da ich keine Ahnung von MatLab habe und keine Passenden Beispiele finde, verzweifle ich dabei.
Dazu kommen Fragen wie:
* Wie kann man Punkte über mehrere Bilder tracken und dabei prüfen ob der Ring größer oder kleiner wird?
* Gibt es eine fertige Funktion, die Beugungsringe erkennt und auswertet?
* Die Z-Stapel-Bilder bekomme ich als .zvi-Datei, gibt es eine Möglichkeit sie direkt daraus einzulesen, ohne sie zuvor manuell als TIF exportieren zu müssen?
* Wie kann man das restliche Hintergrundrauschen sinnvoll entfernen? (siehe Bild im Anhang)
Ich wäre sehr dankbar für code-Beispiele und jeden Tip.
#Es wurde von mir sehr viel mehr ausprobiert als da steht, aber alles was nicht geklappt hat, habe ich weckgelassen.
ich kann dein Bild im Moment nicht bearbeiten, habe mir so ein "ähnliches" gemacht. Um das Rauschen zu entfernen würde ich zunächst einmal einen Medianfilter nehmen. Ich denke, dass im Bild Impulsrauschen vorliegt. Sonst liegst du mit deinen Funktionen zur Bildbearbeitung gar nicht so verkehrt. Es gibt dazu allerdings sehr viele Abwandlungen. Versuche mal:
Code:
SE=strel(..Funktion wählen..); % eine Funktion müsste zum Ziel führen
BW2=imerode(Image,SE);
BW3=imdilate(BW2,SE);
Ich habe jetzt dein Bild mal genauer betrachtet. Es hilft, das Bild notfalls zu vergrößern, weil sich dadurch die Proportionen der Funktionen verschieben. Bei 462x600 kann man auch hiermit arbeiten - es bleiben noch viele Varianten übrig.
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.