Tools for bi- multiple exponential decay of a MRI pixel
Show older comments
Hello Folk!
I would be really happy if someone could help me to solve this problem. A MRI dataset should be analysed according to the T2 FID and displayed within a bi or multiple exponential decay diagram (time vs. intensity).
My professor says, he does not know where but there should be programs within MATLAB. Therefore I would like to know if there are programs for that or how to construct a new script for that?
Probably you can help me?
Thanks in advance for all useful answers, Chris
Answers (2)
Henric Rydén
on 2 Jun 2014
use fittype to create your fittype object, and pass that to the fit command. Something like this
g = fittype('a0*exp(-x/t2)','coefficients',{'a0','t2'});
f = fit(x,y,g);
You will likely need to set limits on your model. Here is an example where I limit a0 between 0 and +Inf, and t2 between 10 and 50:
opts = fitoptions(g)
opts.Upper = [Inf 50]
opts.Lower = [0 10]
Henric Rydén
on 3 Jun 2014
If you want another model, simply change this line
g = fittype('a0*exp(-x/t2)','coefficients',{'a0','t2'});
to something like this
g = fittype('a0*exp(-x/z1) + a1*exp(-x/z2)','coefficients',{'a0','a1','z1','z2'});
I don't know your exact model so adjust it to what you want to do. I tried running your code but there is an error here:
I=a=(:,2);
8 Comments
Christoph
on 3 Jun 2014
Henric Rydén
on 3 Jun 2014
Edited: Henric Rydén
on 3 Jun 2014
I don't know what you mean with the binary equation, but you get the fitted parameters from f after you applied your fit:
f = fit(x,y,g);
disp(f.a0)
Load the image with dicomread . To read the header, use dicominfo . The image you sent me is a 256-by-256 that contains only one echo, you need more echoes to do this analysis.
Christoph
on 3 Jun 2014
Henric Rydén
on 4 Jun 2014
Edited: Henric Rydén
on 4 Jun 2014
No problem. This is a different question from your original one and you should post it separately next time. Once you've loaded your images in a 3D matrix A:
figure;
imshow(A(:,:,1),[])
h = impoint;
wait(h); % Double-click the ROI to finish
mask = h.createMask;
mask = repmat(mask,1,1,size(A,3)); % Make the mask 3D
y = A(mask);
Christoph
on 4 Jun 2014
Henric Rydén
on 4 Jun 2014
Are you asking how you load the images into A?
Christoph
on 6 Jun 2014
Henric Rydén
on 9 Jun 2014
The error occurs because you are passing a string to the imshow command. You need to load the image first, using dicomread (for DICOM files) or imread (for jpg, png, ...).
A=imread('fileName.IMA');
figure;
imshow(A,[]);
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!