Strain measurement
8 次查看(过去 30 天)
显示 更早的评论
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 个评论
DGM
2023-9-7
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.
回答(2 个)
Sean de Wolski
2012-4-19
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 个评论
K BV
2012-4-19
2 个评论
Sean de Wolski
2012-4-19
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!