What is the fastest way to update overlaid graphics in a video?

1 view (last 30 days)
Suppose you are given a 4D image array (I), where size(I,4) equals the number of frames in the image sequence. You also have a cell array (C) of centroids and radii for detected circles in a given frame. So, for instance, C{i} is an M-by-3 array of M detected circles in the ith frame.
What is the best way to render the detected circles while viewing the video, frame by frame?
I should mention that this will be embedded in an app that I am creating for tracking objects. My current approach is as follows:
  1. I create a patch when the app is instantiated that has no visible faces or vertices.
  2. When the frame changes, I compute the correct faces and vertices for the corresponding cell in C, and then update the patch using:
set(hpatch,'Faces',f,'Vertices',v)
It works ok, but it is slow if the number of detections is large (1000+ circles in an image). Would it be faster to draw each circle as its own graphics object instead of one patch object? My concern there is that the number of objects will likely change from frame to frame, so the number of graphics objects I will need is variable. Or would it be faster to overwrite the image with the detected objects (i.e. insertShape)?

Accepted Answer

Mike Garrity
Mike Garrity on 8 Mar 2016
Edited: Walter Roberson on 8 Mar 2016
Actually, it sounds like you're probably up against this case:
But there are a lot of great suggestions in the comment thread on the post that Walter linked to.
I'm basing my guess on the fact that you said that the performance is a function of the number of circles. A graph like the ones I used in this post might be helpful in isolating the cause.
  5 Comments
Matthew Eicholtz
Matthew Eicholtz on 8 Mar 2016
Thanks for all the help. Big fan of the Graphics blog...looks like I need to add it to my bookmarked pages.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 4 Mar 2016

Community Treasure Hunt

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

Start Hunting!

Translated by