4

How is it possible to track common features in the following sequence of images (e.g. holes or corner points along the top margin), ? I have had no luck with ImageFeatureTrack[images] so far: it returns {{}, {}, {}, {}}, i.e. it apparently does not find nor track any features.

Update I've also tried ImageCorrespondingPoints like this, but it does not seem to find correct features either:

points = ImageCorrespondingPoints[images[[1]], images[[2]]]
c[image_, points_] :=
  ImageCompose[image, Graphics[Prepend[Disk /@ points, Red]]]
MapThread[c, {{images[[1]], images[[2]]}, points}]
Drux
  • 285
  • 1
  • 6
  • 1
    Supposedly this function was improved in 10.2.0 but I have not used it since the update. I had better results in previous versions using ImageCorrespondingPoints iteratively over pairs of images in a sequence, making sure to generate a padded mask at each step based on the keypoints returned. This way the mask is passed as an option to each successive iteration to limit the keypoint search to those found in the first image, rather than new ones each time. – IPoiler Jul 29 '15 at 11:35
  • @It'sPronouncedOiler Thx, I'll try that (too). In your experience, does the input look reasonable for feature tracking in general? Maybe the "animation" is too course, i.e. deltas between occurrences of same features are too big? – Drux Jul 29 '15 at 11:42
  • I'm far from experienced in image processing, but I can't imagine anything easier for the type of functions MMA has included than binary images like the type you have presented here. ImageKeypoints, ImageCorners, EdgeDetect, ImageLines, CrossingDetect all seem to give pretty reasonable results when I run them on these images without tweaking thresholds; I'm not sure why an update which was touted as bringing huge improvements to the image processing toolbox would still have such abysmal performance for ImageFeatureTrack. – IPoiler Jul 29 '15 at 11:57
  • @It'sPronouncedOiler Alright, so there is hope that my effort won't be wasted :) Re-thx. – Drux Jul 29 '15 at 12:00
  • @It'sPronouncedOiler Please see update. (Am I making a foolish mistake?) – Drux Jul 29 '15 at 12:36
  • 2
    You may need to play with the options of these functions a bit, such as KeypointStrength, MaxFeatures, etc. Even the best image processing programs can only make guesses without feedback from the user; ultimately you have to toy with the threshold levels of detection to get precisely what you desire. You may need to use more basic functions like ImageKeypoints (which ImageCorrespondingPoints uses) that have more adjustable properties. I know it sounds tedious but it's very difficult to find a one-size-fits-all solution in the world of image processing. – IPoiler Jul 29 '15 at 12:44
  • @It'sPronouncedOiler Excellent, thx. – Drux Jul 29 '15 at 12:47
  • Actually, from your question I myself am not quite clear on which features you want to track. Of course there are some similarities for the edge of the white large structure, but e.g. for the small black holes I couldn't say which hole moved which way. And human perception is much more advanced than most things Computer Vision can come up with. To solve your problem, I think, you should try to define some kind conditions that enable you to recognize one and the same feauture (say a hole) from one image in the others. Knowing these conditions might improve the chances of implementing with MMA. – Quit007 Oct 19 '17 at 22:21

0 Answers0