Tracking Surface Features Over Multiple Images
4 views (last 30 days)
Show older comments
Bugrahan Guner
on 15 Aug 2023
Commented: Image Analyst
on 17 Aug 2023
Hi,
I have multiple images with a distinct surface feature. However there is a drift within the images so the surface features (thus my frame) was shifted throughout the measurements. I want to find the matching frames (regions) within them. (Since the drift is not drastic, I can observe same feature in all images but at different locations.) I have tried features like boundary tracing, etc. however it seems like it is not efficiently working. Also when I try to use binary image extraction, etc. it doesn't recognize the feature as a separate region but it includes it in a much larger blob.
Basically it is going to be finding the intersection region for +40 images and I have to depend on surface features since the base numerical data varies. Is there a way to track a surface feature, find the location of it (in terms of pixels) over the image and arrange all images with respect to the feature to include only the matching region?
2 Comments
Accepted Answer
Image Analyst
on 16 Aug 2023
Edited: Image Analyst
on 16 Aug 2023
I'm still not sure what feature you want to measure in those images, like mean intensity/color, area, centroid, number of blobs, perimeter length, bounding box, Feret widths, or whatever. Please describe exactly what "relatively large surface feature" means to you.
But it sounds like an image segmentation problem. But no, you cannot discover anything about the image without "depending" on the numerical pixel values." If you ignore those, you have nothing to work with.
I'm not sure you need to do tracking or cropping or finding the centroid or bounding box. Just because the blob of interest moves around in the field of view, and even if the camera pans around, does not necessarily mean that you need to find it, crop it, and track it. For example if you just wanted the area or velocity, you wouldn't need to do any of that.
It's a generic, general purpose demo of how to threshold an image to find blobs, and then measure things about the blobs, and extract certain blobs based on their areas or diameters.
2 Comments
Image Analyst
on 17 Aug 2023
First of all you need to segment the circular blobs. And you have to say what constitutes a blob. Is it a bright region completely encircled by a darker region that does not touch the edge of the image? Or is there some other definition. To determine how much it moved you definitely do not want to crop the image because then you don't know the location in the original field of view and thus cannot determine how much it moved when you see it in the next frame. So first you segment it, then call regionprops to find the centroid in the original full size frame. Then and only then can you optionally crop out the blob if you want cropped images for some reason. It looks like you might have multiple blobs in your image. Is that right? Are they all valid? Or are some not valid, like they're too small or something? You need to define an area range of blob areas that is acceptable, then use bwareafilt to throw out blobs from your binary image mask that are not in that area range. Then call regionprops to get the centroid and bounding box of the remaining blobs.
More Answers (0)
See Also
Categories
Find more on Lighting, Transparency, and Shading 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!