Strain measurement
5 views (last 30 days)
Show older comments
Hi,
I have a sequence of cardiac MRI and I would like to plot the circumferential strain (deformation) during the time.
For that, I made the hypothesis that I can measure the strain between every two successive points. For that, I wrote this code :
for i=1:loopimages % my images sequence
for j=1:looppoints % all points
% Initial distance between the 1st and 2nd points
distance_initiale = (MAT_Xinitial(1,j+1) - MAT_Xinitial(1,1)).^2 + (MAT_Yinitial(1,j+1) - MAT_Yinitial(1,1)).^2;
Mat_dist_init(1,j) = distance_initiale;
for k=1:((j+1) - 1) % every pair of points
distance = (MAT_Xfinal_track(j+1,i) - MAT_Xfinal_track(j,i)).^2 + (MAT_Yfinal_track(j+1,i) - MAT_Yfinal_track(j,i)).^2;
Mat_dist(1,j) = distance;
strain = (Mat_dist - Mat_dist_init) / Mat_dist_init;
Mat_strain(j,:) = strain;
end
end
plot(mm,Mat_strain,'+r')
end
I'm sure that my code is far to be perfect but I would appreciate any remarks that can help me ameliorate it.
Thank you in advance !
2 Comments
DGM
on 7 Sep 2023
OP is gone. This thread died over 11 years ago, and OP has been inactive for a decade now.
If this is truly important for your needs, you can try to contact them via their user profile, but be aware that the probability of a fruitful response is very low.
Otherwise, if you need help with something, you may consider asking a fresh question. There's no certainty that it will solve whatever problem you have, but it might be more prudent than waiting on ghosts.
Answers (2)
Sean de Wolski
on 19 Apr 2012
If you explain your use case and your data (maybe with an image to help!) I think I can help you. Strain is notoriously hard to calculate as it requires differentiation, which in turn amplifies noise.
For my MS thesis I calculated strain in CT image deformation using a method that smooths. It was still difficult since I lost a fair amount of points to noise, but overall it did a good job. I don't have my thesis or the code on me right now so I can't get you the paper until later.
For what you have above, a comment:
- Shouldn't there be a sqrt() in there? If so look at hypot(), to calculate dist_initial and dist_final
1 Comment
K BV
on 19 Apr 2012
2 Comments
Sean de Wolski
on 19 Apr 2012
So you have displacements for markers that are not on a regular grid? How irregular is your grid (i.e. marker distriubution)? The strain calculation method that I was thinking of (I believe, though I could very well be wrong) requires markers to be on a regular grid. This would require interpolating to a regular grid first or finding a different method.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!