courbe de progression du pixel

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 Comments

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.
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
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?
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.
how I will store the 25 images in a 3D array?
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 on 8 Apr 2021
Edited: Rik on 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])
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)
The first two lines load an example image and the third line selects random coordinates. That means you only need the last two lines.
there is an error it does not work
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?
ok thanks it works.
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.
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
Did I already point you to this thread?
yes but my problem is not solved.
my problem in saving 25 images the popupmenu
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?
my problem the update of the 25 images on the popmenu.
can you send to me the code of the update?
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).

Sign in to comment.

 Accepted Answer

%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 Comments

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
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?
votre code me donne ce resultat:
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.

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2014b

Asked:

on 7 Apr 2021

Commented:

Rik
on 10 Apr 2021

Community Treasure Hunt

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

Start Hunting!