Track muscle tissue displacement by segmentati​on/morphol​ogical processing in video

4 次查看(过去 30 天)
I have a video of a microscopic size muscle tissue contracting and I have to track the displacement. I am trying to track a point by segmenting the cantilever that stretches the muscle and using the furthest right point of the cantilever (the point closest to the muscle tissue) to track that coordinate frame by frame. The problem is, when I run the program frame by frame the segmentation is not consistent enough throughout every frame. I am currently trying these steps to get my final image for each frame:
  1. manual threshold to threshold only the cantilever in the image (Otsu's created for many objects)
  2. dilating
  3. filling
  4. eroding
  5. using stats to find the furthest x point of the one object in the image
I need help with either optimizing my segmentation/morphological processing or a completely different way of tracking displacement frame by frame for the video.

采纳的回答

Image Analyst
Image Analyst 2016-7-24
Can you indicate the cantilever, and the point on it that you are trying to find?
And also explain this: "using stats to find the furthest x point of the one object in the image" What "stats" are you using? What is the "one object"? Is it the cantilever? Are you just trying to find the rightmost column of the black finger-like thing? Have you considered just getting the coordinates and then (in post processing) filtering/smoothing the locations along the z direction so that it does not move too much from one frame to the next?
  3 个评论
Image Analyst
Image Analyst 2016-7-25
You can use activecontour() or sgolayfilt() to smooth out the boundaries and make it less sensitive to noise. I'm attaching demos for each of those.
You don't need to computer PixelList, though you can. I'd probably ask for the bounding box.
You're manually thresholding it which should get you a good threshold but you don't remember necessarily what the prior thresholds were. You might start out with your prior threshold and then maybe limit the new threshold to be within a few gray levels of the prior threshold so it doesn't vary too drastically.
See my interactive visual threshold app in my File Exchange: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862. It may make it easier for you to threshold.
I don't think the y values matter at all if you're just looking for the right edge of the bounding box, so I don't know why you mentioned the y values or are concerned about them.
I fixed your link. In the future, enclose your URL in angle brackets href = ""</a> to make it a clickable link. http://www.mathworks.com/matlabcentral/answers/13205#answer_18099
SP
SP 2016-7-26

1) I would use activecontour() or sgolayfilt() after I threshold, dilate, fill, erode...then activecontour() or sgolayfilt() or when should I implement the functions?

2) I looked up boundingbox, and I am not sure how I would use that to track a single pixel point furthest right of the object?

3) The manual threshold is set to 30 (intensity of the cantilever) for the entire video/program, how would I limit each threshold based on the previous threshold?

4) The y value matters because the cantilever moves in a diagonal format so I need x and y values so I can find displacement = sqrt((x2-x1)^2+(y2-y1)^2) of the high and low peaks of every period.

I have attached the link again and added my code and the video I am using. The code is well commented, but if you have any questions please ask. I truly appreciate all your help. These last questions should clear up everything.

https://drive.google.com/folderview?id=0B-IJ5ovZb8jFYWY5M1RTejRhNlE&usp=sharing

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Biomedical Imaging 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by