Bonjour à tous j'ai en entrée 25 images IRM(dicom).
je metsen un point fixe (x,y) et je garde l'emplacement de ce pixel pour les autres images.
je veux tracer la courbe de progression de ce pixel. comment programmer ça?
Hello everyone, I have 25 MRI images (dicom) as input. I put a fixed point (x, y) and I keep the location of this pixel for the other images. I want to plot the progression curve of this pixel. how to program that?

20 Kommentare

Rik
Rik am 8 Apr. 2021
How does my answer not work for you?
Also, you should mention the release you're using if you're using a release as old as R2014b.
Amal Felhi
Amal Felhi am 8 Apr. 2021
acutually my image is not 3D so i think that's why it didn't work for me and yes i'm using R2014b if u have another proposition i'll be glad and thanks
Rik
Rik am 8 Apr. 2021
You have 25 images, each image being 2D. That means you can store it in a 3D array. If you didn't, how did you store your images?
Image Analyst
Image Analyst am 8 Apr. 2021
Might get more answers if it were translated into English. Some of us don't know what is being asked unless we take the trouble to go to Google Translate.
Amal Felhi
Amal Felhi am 8 Apr. 2021
how I will store the 25 images in a 3D array?
Rik
Rik am 8 Apr. 2021
What size are your 25 images and how do you load them?
i load the 25 images with this codes:
rep = uigetdir;
Imgs = dir(rep);
thisname = Imgs(3).name;
[path,name,ext]=fileparts(thisname);
ext=strcat('*',ext);
chemin = fullfile(rep,ext);
list = dir(chemin);
nbr_images= numel(list);
for n=1:numel(list)
k=dicomread(fullfile(rep, list(n).name));
end;
IM=double(img);
figure(1),subplot(5,5,1),imshow(IM,[]);
figure(1),subplot(5,5,2),imshow(IM,[]);
figure(1),subplot(5,5,3),imshow(IM,[]);
figure(1),subplot(5,5,4),imshow(IM,[]);
figure(1),subplot(5,5,5),imshow(IM,[]);
figure(1),subplot(5,5,6),imshow(IM,[]);
figure(1),subplot(5,5,7),imshow(IM,[]);
figure(1),subplot(5,5,8),imshow(IM,[]);
figure(1),subplot(5,5,9),imshow(IM,[]);
figure(1),subplot(5,5,10),imshow(IM,[]);
figure(1),subplot(5,5,11),imshow(IM,[]);
figure(1),subplot(5,5,12),imshow(IM,[]);
figure(1),subplot(5,5,13),imshow(IM,[]);
figure(1),subplot(5,5,14),imshow(IM,[]);
figure(1),subplot(5,5,15),imshow(IM,[]);
figure(1),subplot(5,5,16),imshow(IM,[]);
figure(1),subplot(5,5,17),imshow(IM,[]);
figure(1),subplot(5,5,18),imshow(IM,[]);
figure(1),subplot(5,5,19),imshow(IM,[]);
figure(1),subplot(5,5,20),imshow(IM,[]);
figure(1),subplot(5,5,21),imshow(IM,[]);
figure(1),subplot(5,5,22),imshow(IM,[]);
figure(1),subplot(5,5,23),imshow(IM,[]);
figure(1),subplot(5,5,24),imshow(IM,[]);
figure(1),subplot(5,5,25),imshow(IM,[]);
on this zip files you will find the 25 images
Rik
Rik am 8 Apr. 2021
Bearbeitet: Rik am 8 Apr. 2021
Please delete the zip file, as it seems to contain actual patient information.
I expect you can use this in your loop to load your images to a 3D array:
IM=dicomread(fullfile(rep, list(1).name));
IM(1,1,numel(list))=0;%extend array to fit all slices
for n=2:numel(list)
IM(:,:,n)=dicomread(fullfile(rep, list(n).name));
end
And your other block of code can be replaced by something this:
figure(1),clf(1)
WW_WL=[min(IM(:)) max(IM(:))];
for n=1:25
subplot(5,5,n)
imshow(IM(:,:,n),WW_WL)
end
Or simply:
montage(permute(IM,[1 2 4 3]),'DisplayRange',[0 1000])
Amal Felhi
Amal Felhi am 8 Apr. 2021
okay thank you so much.
after the code of the 3D array , i put this code for progression of the pixel?
S=load('mri');
I=squeeze(S.D);
x=randi(size(I,1));y=randi(size(I,2));
intensity=squeeze(I(x,y,:));
plot(intensity)
Rik
Rik am 9 Apr. 2021
The first two lines load an example image and the third line selects random coordinates. That means you only need the last two lines.
Amal Felhi
Amal Felhi am 9 Apr. 2021
there is an error it does not work
Rik
Rik am 9 Apr. 2021
All the subplot code is not necessary, you can replace it with the loop.
You made the command window so small that I can't see the full error message. Did you define a value for x and y?
Amal Felhi
Amal Felhi am 9 Apr. 2021
ok thanks it works.
Rik
Rik am 9 Apr. 2021
You're welcome. If you feel my answer solved your problem, please consider marking it as accepted answer. If not, feel free to comment with your remaining issues.
Amal Felhi
Amal Felhi am 9 Apr. 2021
Alright!
otherwise yes I have another problem I want to create a GUI interface which contains a push button, an axis and a popupmenu. from the push button I select 25 images and these 25 images will be saved in a popup menu. for example if I click on the 1st item of the popupmenu I display the 1st image
Rik
Rik am 9 Apr. 2021
Did I already point you to this thread?
Amal Felhi
Amal Felhi am 9 Apr. 2021
yes but my problem is not solved.
my problem in saving 25 images the popupmenu
Rik
Rik am 9 Apr. 2021
You can use the popmenu callback to update the image. You can store the 25 images in the guidata struct. What exactly is the part you have trouble with?
Amal Felhi
Amal Felhi am 9 Apr. 2021
my problem the update of the 25 images on the popmenu.
can you send to me the code of the update?
Rik
Rik am 10 Apr. 2021
You can either use imshow (use the axes object handle), or you can set the CData property of an image object (which is the output of the imshow function).

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Rik
Rik am 7 Apr. 2021

0 Stimmen

%load an example image
S=load('mri');
I=squeeze(S.D);
x=randi(size(I,1));y=randi(size(I,2));
intensity=squeeze(I(x,y,:));
plot(intensity)

4 Kommentare

Amal Felhi
Amal Felhi am 7 Apr. 2021
merci pour votre réponse mais je veux choisi un pixel à partir d'une image IRM (dicom) je garde l'intensité de ce pixel pour les 25 images pour tracer la courbe de progression de ce pixel
Rik
Rik am 7 Apr. 2021
The example I used actually is an MRI image, just not DICOM. If you have stored your image as a 3D array, you can use this code to trace the intensity. Can you explain why my code doesn't work for you?
Amal Felhi
Amal Felhi am 7 Apr. 2021
votre code me donne ce resultat:
Rik
Rik am 7 Apr. 2021
You should put in your own image and coordinates. It can happen that an x-y-combination is 0 for all z values. This will happen around the edge. Unfortunately, this example image is about half edge, so if you want to use random coordinates, you will get this line about half the time.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2014b

Gefragt:

am 7 Apr. 2021

Kommentiert:

Rik
am 10 Apr. 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by