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

3d

 

chucky
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2011, 09:00     Titel: 3d
  Antworten mit Zitat      
Hallo Leute,

ich habe Querschnitts Bilder von meinem Finger mit dem Mikroskop aufgenommen. Ich habe 1024 Bilder als *.jpg vorliegen.

Ich habe diese schon alle in eine Matrix eingelesen,

Wie kann ich meinen Finger als 3d darstellen, also alle bilder nebeneinander plotten?

hoffe ihr könnt mir helfen

danke
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.04.2011, 09:30     Titel:
  Antworten mit Zitat      
Wie wäre es mit einer google-Suche bevor du hier aufwendig einen Text verfasst?

Probier's mal mit:

Volume Visualization
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2011, 00:46     Titel:
  Antworten mit Zitat      
Also über Volumen Visualisation habe ich schon gelesen.

Ich habe ungefähr das selbe Problem wie unten beschrieben:

Hi there.
I have become a bit stuck with a little project I am working on. I have a series of RGB Tiff images which I have loaded into matlab, over 120 seperate images in total. I am hoping to use the functionality of matlab to render a volume by stacking each of the 2D images one top of another. I would like to in matlab define a cube where at each z position there is a different image. I have managed to render grey scale values in the z direction but I loose most of the information I was hoping to gain from a 3D model.

What I would like is a GUI built which has a sliding scale at the bottom to go from 0 to 120 in the z direction and display the different images at the different locations.

leider gibt es keine antwort dazu Sad

hoffe ihr könnt mir weiter helfen
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2011, 09:46     Titel:
  Antworten mit Zitat      
Was genau meinst du mit Querschnittsbildern? Sind das Graustufenbilder wie bei einem CT? Falls das der Fall ist, vielleicht hilft dir das Programm "sliceomatic" weiter:
http://www.mathworks.com/matlabcentral/fileexchange/764

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.04.2011, 15:42     Titel: Re: 3d
  Antworten mit Zitat      
Hallo chucky,

Zitat:
ich habe Querschnitts Bilder von meinem Finger mit dem Mikroskop aufgenommen. Ich habe 1024 Bilder als *.jpg vorliegen.

Mal eine andere Frage: Hat das nicht wehgetan Deinen Finger in 1024 Scheiben zu schneiden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2011, 05:19     Titel:
  Antworten mit Zitat      
Die Bilder liegen als Farbbilder vor.

@ Jan, Nein es hat nicht wehgetan Wink aber mich würde es freuen wenn du eine Idee hättest?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.04.2011, 12:37     Titel:
  Antworten mit Zitat      
Hallo,

in der MATLAB-Hilfe gibt es einen Abschnitt, der sich ausschließlich mit diesem Thema auseinandersetzt:
http://www.mathworks.com/access/hel.....oc/visualize/f5-6010.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 09:55     Titel:
  Antworten mit Zitat      
Hallo Community,

ich habe mir die Artikel durchgelesen und auch die Über slice Techniken.

Habe mir überlegt dass wenn ich es schaffe slices anzuzeigen, dann komme ich schon weiter. Denn dann könnte ich eine GUI basteln indem man per Schiebebalken einfach die Werte für die slices ändert und so durch das Volumen scrollen kann.

Jedoch kriege ich es nicht hin das mir die slices angezeigt werden, die Bilder werden nur schwarz angezeigt.

Ich lese erst 10 zueinandergehörende Bilder ein. Diese liegen eigentlich als n x m x 3 uint8 vor... (512 x 1024 x 3 uint8)

Code:

img_dir = uigetdir;
cd (img_dir);
img_struct = dir('*.bmp');
img_files = {img_struct.name};
temp = rgb2gray(im2double(imread(img_files{1})));
number_img = 10;
img_stack = zeros([size(temp) number_img],class(temp));

for(i=1:number_img)
    img_stack(:,:,i) = rgb2gray(im2double(imread(img_files{i})));
end

[x,y,z]=meshgrid(1:1024,1:512,1:10);
xslice = [1,100,300]; yslice = [1,100]; zslice = [1,5];
slice(x,y,z,img_stack,xslice,yslice,zslice)

 


Leider werden einfach nur schwarze slices angezeigt

hoffe ihr könnt mir weiter helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2011, 11:31     Titel:
  Antworten mit Zitat      
Hallo,

ohne das jetzt genauer zu untersuchen: das Problem könnte sein, dass die Gitterlinien so eng beieinander sind, dass du nichts farbiges dazwischen siehst. Probier mal am Ende:
Code:

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 15:30     Titel:
  Antworten mit Zitat      
danke Harald,

hat geklappt mit deinem Vorschlag.

Habe es eigentlich soweit ganz gut hin bekommen. Also kann über 3 scrollbalken jeweils in x,y, und z richtung slices erstellen und "rumslicen"...

das einzige was mich stört, dass es immer eine gewisse Zeit in Anspruch nimmt, bis das slice nach der Wertänderung per scrollbalken angezeigt wird.

Ich würde gerne in "Echtszeit" ohne Verzögerung das ganze haben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2011, 15:44     Titel:
  Antworten mit Zitat      
Hallo,

liest du denn in dem Callback jedes Mal die Bilder von neuem von der Festplatte ein? Dann wäre es kein Wunder, dass das dauert.
Vorschlag:
1. Bilder einmal einlesen (z.B. in der OpeningFcn) und mit setappdata in der Figure speichern
2. Mit getappdata nur die Daten von der Figure holen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 15:58     Titel:
  Antworten mit Zitat      
lese die bilder nur einmal per einen load button ein:

Code:

function load_Callback(hObject, eventdata, handles)

img_dir = uigetdir;
cd (img_dir);
img_struct = dir('*.bmp');
img_files = {img_struct.name};
temp = rgb2gray(im2double(imread(img_files{1})));
number_img = 10;
handles.img_stack = zeros([size(temp) number_img],class(temp));
for(i=1:number_img)
    handles.img_stack(:,:,i) = rgb2gray(im2double(imread(img_files{i})));
end
guidata(hObject, handles);
 


und anschließend für jeden slider in der callbackfunction je nach dem Welcher slider ändere ich nur den x,y oder z wert:

Code:

function yslider_Callback(hObject, eventdata, handles)
wert=uint16(get(handles.yslider,'Value'));
set(handles.yval,'Userdata',wert);
set(handles.yval,'String',num2str(wert));

handles.yslice=get(handles.yslider,'Value');
slice(handles.x,handles.y,handles.z,handles.img_stack,handles.xslice,handles.yslice,handles.zslice)
shading interp
guidata(hObject, handles);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2011, 16:05     Titel:
  Antworten mit Zitat      
Hallo,

da fällt mir als Möglichkeit nur noch ein, die Auflösung der Bilder zu verkleinern. Wenn du z.B. "nur" 256 x 512 nimmst, dürfte die Auslösung kaum sichtbar leiden, das ganze aber 4 Mal so schnell aktualisieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 16:17     Titel:
  Antworten mit Zitat      
danke harald,

wie kann ich die Auflösung verringern und dabei möglichst keine Nachteile zu haben?
Private Nachricht senden Benutzer-Profile anzeigen
 
chucky
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 14.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 16:27     Titel:
  Antworten mit Zitat      
danke harald habe es einfach per imresize halbiert.

Ist schon schneller.

Gibt es auch eine Möglichkeit den Wert des Ladebalkens auszulesen während ich die Maus gedrückt halte. (und zwar wenn ich nicht auf die Pfeile vom Balken klicke, sondern den Balken selbst verschiebe)??

Weil wenn ich den Balken selbst verschiebe, wird das Bild erst angezeigt wenn ich loslasse?
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.