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

Kontrast-Anpassung

 

rcsapo
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2013, 00:35     Titel: Kontrast-Anpassung
  Antworten mit Zitat      
Liebe Matlab-Experten,

Ich versuche unterschiedliche Gewebe (namentlich Muskel- und Fettgewebe) in MR-Bildern mittels Threshold-Verfahren zu segmentieren. Das Muskelgewebe ist im Bild recht homogen dunkel, was sich in einem Histogramm mit einem prominenten Peak bei Intensitäts-Werten von 0 und knapp darüber widerspiegelt. Die Intensität von Fett hingegen ist zwar durchwegs höher, jedoch in sich sehr heterogen, so dass das Histogramm eher einen langen, flachen Ausläufer, als einen zweiten prominenten Peak zeigt.

Im Endeffekt hätte ich im Histogramm gerne zwei klar unterscheidbare Peaks, mit einem Tal dazwischen, bei dem ich meinen Threshold festsetzen kann. Wie könnte ich den Kontrast vergrößern, am besten indem niedrige Intensitäten niedrig gehalten und die höheren Intensitäten zusammengeschoben werden?

Für Vorschläge wäre ich sehr dankbar,
Robert
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 15.05.2013, 06:33     Titel:
  Antworten mit Zitat      
Moin,

da gibt es mehrere Möglichkeiten. Versuche mal das:

Code:
I = imread('pout.tif');
J = imadjust(I,stretchlim(I),[.2 .6]);
figure, imshow(I), figure, imshow(J)


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2013, 23:45     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

Vielen Dank für den Vorschlag. Bei meinen MR-Bildern (Typ int16) bekomme ich hiermit negative Intensitäten im Histogramm. Wie ist das zu erklären? Und könntest Du in Laien-Manier erklären, was die beiden Parameter, die Du der stretchlim-Funktion übergibst, eigentlich tun?

Danke,
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 16.05.2013, 07:08     Titel:
  Antworten mit Zitat      
Deine Erwartung war, die Kontraste im Bild zu ändern. Diese liegen bei uint 8 zwischen 0 + 256 und bei uint16 zwischen 0 + 65535. Um zu verstehen, wie sich die Kontraste verändern, rufe mal folgende Funktion auf:

Code:
I=imread(Bild);
figure; imshow(I)
imcontrast(gca)


Du hast jetzt alle Möglichkeiten, die Grautöne auf andere Werte zu indizieren. Gleichzeit werden die Werte für das beste Resultat ausgegeben. Es gibt eine ganze Reihe Funktionen, die je nach Schwerpunkt die Grautöne indizieren. Die Frage, was

Code:
J = imadjust(I,stretchlim(I),[.2 .6]);


macht, ist einfach. Die Funktion imadjust alleine (ohne zus. Wertangaben!) würde die Grautöne deines Bildes auf den Wertebereich zwischen 0 + 1 (bzw. 0 + 256) strecken. Die Funktion stretchlim schränkt den Wertebereich auf die Vorgabe (wie in der Zeile) ein. Die neuen Werte werden also nur noch zwischen 0.2 + 0.6 abgebildet.

Mit dieser Funktion sollte man für andere Zwecke vorsichtig sein, da alle Bildteile außerhalb dieser Werte verloren gehen! Das passiert nicht, wenn man mit einer Gradationskurve arbeitet und die Kurve nur zwischen den Endwerten verändert.

Deine negativen Werte sind vermutlich mit der Funktion "hist" entstanden, die mittig den 0-Punkt setzt. Mit "imhist" darf das eigentlich nicht passieren. Jedenfalls fällt mir im Moment kein Beispiel ein.
Private Nachricht senden Benutzer-Profile anzeigen
 
rcsapo
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 05:04     Titel:
  Antworten mit Zitat      
Danke, Hubertus. Das hilft mir weiter. Ich hab zwar nach wie vor keinen zufriedenstellenden Threshold gefunden aber wenigstens weiß ich jetzt, was imadjust kann. Möglicherweise sollte ich mal so was versuchen: http://www.mathworks.com/matlabcent.....cal-adaptive-thresholding
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 17.05.2013, 06:20     Titel:
  Antworten mit Zitat      
Die Bildverarbeitung macht letztlich nichts anderes, als Grauwerte zu ändern. Um das zu erreichen gibt es weitaus mehr Verfahren. Man sollte sich ein Bild immer mit dem Gedanken ansehen, welchen Verfahren denn noch in Betracht zu ziehen sind. Solange du keine eindeutigen Grautrennungen bekommst, wird dein Threshold wohl nicht zufrieden ausfallen. Zunächst könnte man noch versuchen, mit anderen Verfahren, im Wege der Vorverarbeitung, den Threshold zu verbessern . Das könnten z.B. richtungsabhängige Filterkernel sein oder auch Hochpassfilter, der direkt an Kanten wirkt.
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.