Tracking Surface Features Over Multiple Images

4 views (last 30 days)
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
Bugrahan Guner
Bugrahan Guner on 15 Aug 2023
Edited: Bugrahan Guner on 15 Aug 2023
Hi Walter, thanks for the suggestion. I will definitely look into it. I would love to have an additional opinion over a more basic issue that might solve the problem. Is there a way to find the location of the feature in pixel form without depending numerical values. I thought I may try to find the furthest point the feature is at for all directions over the image data set (north south east and west). This way I may cut and shrink down the images to the intersection frame. It is a relatively large surface feature and doesn't necessarely has the exact same shape in every image. The intensity and shape of the feature comperatively changes between images so I couldn't manage to efficiently pinpoint the location in every single image. I am attaching zoomed in images to illustrate it.

Sign in to comment.

Accepted Answer

Image Analyst
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
Bugrahan Guner
Bugrahan Guner on 17 Aug 2023
Hi,
Thanks for your response and time. I think I expressed myself wrong. I know we have to work with pixel numbers but I meant the relative shape of the specific feature changes due to our original measurement parameter variations we have for obtaining the images. Thus, I don't have a perfect shape or color expression for the feature that we see over different images although physically it is the same feature.
I am attaching two wider images so it may create a better reference. I have to find which region matches in both images and I have to cut both images so in the end both of them will only show the matching region within them. Only reference I have about the drift is the surface feature we have on the left side of the images, so my intention was to determine where that circular feature is in both and how much it drifted from one to another. I have to find this automatically and cut the images accordingly while finding the pixel values for the new matching region (frame). Last gig is to do it for +40 images so I need to cut all in a way that in the end all of them will only show the same matching region only. I hope it clears out the uncertainty about what I am seeking. I would really appreciate guidance about how I can proceed.
Image Analyst
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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!