Camera ROI Usage?

Hello everyone,

In an attempt to speed up our camera code, I’ve played around a bit with contours and ROIs. Yet, searching for the target takes longer with an ROI than it does searching the whole image. This seems wrong, so I would like to solicit help on ROIs.

At the moment, my code looks like this:


//Initialization
const Rect areaOfInterest = {0, 0, 100, 100}; //A 100x100 square, within which the target resides.
ROI aoi;
imaqAddRectContour(&aoi, areaOfInterest);
vector<Target> results = luminancePlane->DetectEllipses(&targetEllipseDescriptor, &targetEllipseCurveOptions, &targetEllipseShapeOptions, &aoi);

What I want aoi to do is restrict the search area to the 100x100 square, but when I use &aoi instead of NULL in the search arguments, the searches take 2MS longer each time, which doesn’t seem right, because I’m cutting off about 3/8ths of the image with the ROI.

Am I restricting the area correctly, and detectEllipses just taking extra time to check aoi to ensure it’s within the area I want to search, or am I forgetting something that I have to add to the ROI to make it work?

All help appreciated. :slight_smile:
~Buddy

I’m curious how many timing samples were used to determine the effect of the ROI. Unlike most sensors, jpeg cameras aren’t very realtime friendly. First off, the jpeg returned from the camera is a different size and will take a somewhat different time to decode. Secondly, the algorithm for finding contours takes many shortcuts if it can, so the timing is very dependent on what is in the image. This means that a slim 2ms difference is probably well within the noise of the timings.

To answer your question about the ROI, I would expect it to speed up the processing by some amount, but will have no affect on the jpeg decoding which is also a pretty big cost.

There is a white paper on the NI site about the vision code, and the primary thing to speed up the processing is the threshold. The paper doesn’t go into using the ROI primarily because it is difficult to use unless you have an idea of where the robot is on the field and how big the target should be.

Greg McKaskle