Optimising OpenMV H7 Camera for 3 feature (blob) tracking

Hi, I’m a MechEng masters student at UCT (University of Cape Town). I am currently working on a project that requires me to track 3 features on a moving ‘robot’ to estimate the pose and position of said robot. The camera is required to send the data of the 3 features (through UART for now but I might change the data communication method in future) to a base station (PC) where it runs some code to predict the pose and position.

In order to increase the accuracy of my predictions I need to maximise the performance of the camera, I am currently running GRAYSCALE - VGA resolution and outputting ±40FPS when sending the data to my base station. This was done with very little optimisation (I attempted to optimise it myself by using a ‘moving’ ROI but sadly it didn’t run as intended and I’m not too sure where I went wrong). The end goal of the project is to have 4-8 Cameras used to estimate the pose and position. What could I do to optimise the FPS output while maintaining a good resolution?

  • side note: I do also have to keep track of which feature is which so I might switch to RGB and have all 3 features be different colours, the downside would obviously be a tremendous decrease in performance so if anyone has an idea of how I can ID each feature in GRAYSCALE that would be very helpful, not urgent though.

Any information would be very much appreciated!

Hi, I don’t understand what more you want… 40 FPS at VGA is great performance.

The camera we ship with the H7 doesn’t really go faster than 40 FPS easily. The defaults for it are the best performance or so it offers.

Thanks for the response! I am just looking for ways (if there are) to increase performance in my application specifically. I agree that the performance is great already, but any increase in performance could increase the accuracy of my prediction algorithm.

I see that 40FPS could be the max for this specific camera. Is there perhaps anything I could do to increase performance? (I am open to literally any idea be it buying a different camera sensor etc.)

Get this sensor:

The FPS starts off at 40 but it can be increased to up to 240 FPS but shrinking the readout window using an ioctl.

1 Like

Thanks so much for the help, will look into getting this sensor! - One last thing to check, is it possible to shrink the readout window using the default sensor on the H7 R2? Wanted to start trying to implement and test code before the I get the OV5640. If not is it possible to do it with the MT9V034 camera sensor?

Yes, it has the same feature. However… it doesn’t work as well. With the OV5640 the readout window can be shrunk and the sensor still functions well. With the MT9M114 it… doesn’t really like doing doing non-standard resolutions. So, it’s going to be harder to find it working reliably and not crashing.

That said, the same readout window IOCTL applies for both. So, you can give it a shot.

Also, note that you will have to update the frame rate setting and finally reduce the exposure time to get the camera to speed up. This works a lot easier on the OV5640. The MT9M114 will fight going faster.

1 Like

See the high fps scripts that do it tracking for the 240 FPS control of the OV5640. It will give you some ideas on what you have to do for the MT9M114. That said, I don’t believe the script just works on that camera.

1 Like