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

Imshow bei mehrdimensionalem Array

 

C_h_r_i_s
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 11.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2010, 19:29     Titel: Imshow bei mehrdimensionalem Array
  Antworten mit Zitat      
Hallo,

mein Problem:

In einem 3dim Array A möchte ich mir einzelne Schichten aus verschiedenen Perspektiven ansehen.

"Von oben" klappt das wunderbar:

imshow(A( : , : , 5 ),[0 1])

Aber z. B. imshow(A( : ,20, : ),[0 1]) klappt nicht!

(Fehler: "Unsupported dimension")

Warum?

Vielen Dank.
Christian
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.06.2010, 20:35     Titel:
  Antworten mit Zitat      
Hallo

Wie willst du 5 Dimensionen in Dreidimensionalen Raum darstellen?
Private Nachricht senden Benutzer-Profile anzeigen
 
C_h_r_i_s
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 11.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2010, 10:23     Titel:
  Antworten mit Zitat      
Wieso 5?

A( : , : , 5 )

bedeutet doch nur die 5. Schicht von z. B. insgesamt 200 Schichten...
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 22.06.2010, 11:25     Titel:
  Antworten mit Zitat      
Ich vermute mal imshow hat Probleme, da es einfach nur für 2-dimensionale Matrizen ausgelegt ist und Matlab ja sowieso sehr sensitiv auf die Richtung von Vektoren ist, so eben auch bei Matrizen und mehrdimensionalen Arrays.

Vll hilft dir die Funktion
Code:

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 22.06.2010, 11:38     Titel:
  Antworten mit Zitat      
C_h_r_i_s hat Folgendes geschrieben:
Wieso 5?

A( : , : , 5 )

bedeutet doch nur die 5. Schicht von z. B. insgesamt 200 Schichten...


Ja, so wird nur eine Dimension übergeben,
Code:

imshow(A( : ,20, : ),[0 1])
 

Okay habe unrecht mit Dimensionen, aber in diesem Fall übergibst du 5 Schichten
IMSHOW kann nur Dreidimensionale Matrizen darstellen, RGB-Bilder, dabei werden jede Schicht, als Farbe interpretiert. Es sind nur 3 Schichten erlaubt
Private Nachricht senden Benutzer-Profile anzeigen
 
crow

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2010, 14:08     Titel:
  Antworten mit Zitat      
Hallöchen,

gibts denn nun eine Lösung für das Problem? Denn ich hab genau das gleiche gerade! Aus den bisherigen antworten hier bin ich nicht schlau geworden und was anderes hab ich bis jetzt auch nicht gefunden.

Hoffe es gibt einer mal seine Lösung preis Wink

mfg
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 09.09.2010, 14:27     Titel:
  Antworten mit Zitat      
Moin,

zum Thema "Superresolution" gibt es einige Tools unter Matlab, die eine *.mat Datei laden, in der sich z.B. über 50 Bilder befinden. Das zeigt zumindest, dass es dafür eine Lösung geben muss. Vielleicht kannman über ein Tool, z.B. SRDemo zum Lösungsweg kommen.

Nachtrag:

Eine *.mat Datei mit mehreren Ebenen lässt sich wie folgt erstellen:

I=imread('1.tif');
I2=imread('2.tif');
I3=imread('3.tif'); usw.

A(:,:,1)=I;
A(:,:,2)=I2;
A(:,:,3)=I3; usw.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
crow

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2010, 14:48     Titel:
  Antworten mit Zitat      
Hey Hubertus,

jetzt versteh ich gar nichts mehr! Wie passt jetzt deine Antwort zu dem Problem?

Ich habe eine .mat datei in der ein 3D-Array ist mit 256x256x25! Das sind 25 Schnittbilder mit 256er dimension die einen Zylinder darstellen. Das Schnittbild n kann ich mit

imshow(matrix(:,:,n))

anzeigen!
Wenn ich aber nicht die schnittbilder ansehen möchte (schnitte paralles zur Zylinderachse) sondern Schnitte senkrecht zur Zylinder Achse, also das ich den Zylinder der länge nach aufschneide, müsste ich

imshow(matrix(128,:,Smile)

eingeben, damit ich ein Schnitt entlang 128 habe! aber da kommt eben dieses "Unsupported dimension"!

Da weiß ich eben nicht weiter!

grüße vom Crow
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 09.09.2010, 14:57     Titel:
  Antworten mit Zitat      
Irgendwie verstehe ich die Frage langsam auch nicht. Vielleicht liegt das an der ungenauen Terminologie. Das ist von einem 3-D Array die Rede und 200 Schichten, worauf der Einwand zu recht erfolgt, dass nur 3 Schichten erlaubt sind. Daraufhin war ich der Meinung, das jemand mehrere 2-dimensionale Matrizen übereinander legen will!

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
crow

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2010, 15:09     Titel:
  Antworten mit Zitat      
Hmm...ist ja prima *hehe*

dann versuche ich es nochmal! Im Anhang hast du die .mat datei mit der ich arbeite!

Ich stelle bis jetzt

imshow(SNR(:,:,n))

dar um eine beliebige Schicht n (<=25) darzustellen! Das klappt auch...denn imshow stellt einfach eine 256x256 Matrix dar.

Jetzt will ich aber mit

imshow(SNR(128,:,Smile)

eine 128x256x25 Matrix darstellen, also ein Schnitt entlang der Zylinderachse! Das macht imshow nicht!

Konnte ich es jetzt deutlicher ausdrücken?!

Smile
 
marzl
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2010, 15:13     Titel:
  Antworten mit Zitat      
ok,da es nicht mit dem anhang geklappt hat,jetzt mit account über ein kumpel!

hier der anhang!

ergebnisse.rar
 Beschreibung:
meine .mat datei

Download
 Dateiname:  ergebnisse.rar
 Dateigröße:  8.16 MB
 Heruntergeladen:  407 mal

_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2010, 16:23     Titel:
  Antworten mit Zitat      
Einen wunderschönen guten Tag.

Also, ich hoffe ich habe dich richtig verstanden - ich hatte nämlich mal ein ähnliches Problem:
Du hast eine 3D Matrix, sagen wir [128,256,25] und möchtest hieraus verschiedene Schnitte gezeigt bekommen, also z.B. [:,:,10] oder auch [:,10,:]. imshow bringt dir jedoch für den zweiten Fall eine Fehlermeldung.

Auch wenn ich mich nicht so richtig gut mit Matlab auskenne (also kann ich dir nicht genau sagen warum Matlab das ganze macht), hat bei mir folgendes immer geklappt:

Code:

% Als erstes weist du die gewünschte Schicht einer neuen Variable zu und zwar derart, dass die Schicht in einer 2D Matrix gespeichert wird:

schicht(:,:,1) = matrix(:,10,:);

% Diese "neue Variable" kannst du jetzt ganz einfach mit imshow plotten

imshow(schicht)
 


Ich hoffe das beantwortet deine Frage.
mfg

edit by denny: Bitte Codeumgebung verwenden.(Button mit dem Aufschrift "Code" über Editorfenster)
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2010, 12:42     Titel:
  Antworten mit Zitat      
cool,danke! So hat es geklappt...da kann wohl imshow nicht wirklich 3D matrizen verarbeiten!

Aber immer wieder schön, dass ein neues Problem auftaucht,wenn man ein anderes gelöst hat!

Jedenfalls danke an alle die sich gedanken gemacht haben und beiträge lieferten!

Schön freitag noch!

ahoi
_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
C_h_r_i_s
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 11.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2013, 11:22     Titel: danke - gelöst!
  Antworten mit Zitat      
super Ajax, danke!
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.07.2013, 13:54     Titel: Re: danke - gelöst!
  Antworten mit Zitat      
Hallo C_h_r_i_s,

Ein "Danke" ist immer schön für die Antwortenden. Nach fast 3 Jahren ist das aber recht ungewöhnlich, aber man muss sich ja nicht unbedingt der allgemeinen Hektik anschließen :-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.