Minimum Region of Interest AeRegion

Hi all,

I implemented AeRegion based on the latest code for nvarguscamerasrc and JP 4.4. The feature is working very well, however we are seeing some issues when the ROI selected is small.

Questions:

  1. Do you know if there is a minimum ROI supported by SetAeRegion?
  2. if so, does it depend on the sensor resolution?
  3. Is there any other documentation for this: virtual Size2D<uint32_t> getMinAeRegionSize() const = 0;

I integrated the function getMinAeRegionSize () in my code but I am getting this error:
‘class Argus::ICameraProperties’ has no member named ‘getMinAeRegionSize’; did you mean ‘getMaxAeRegions’?

Thanks,
-Adrian

hello ACervantes,

there’re JP-4.4 DP and JP-4.4 that have slightly pre-built updates,
please refer to JetPack Archive. may I also know what’s your l4t release version to reproduce this issue.

FYI,
there’re ICameraProperties to report AE regions,
for example,
the maximum number of regions is returned by ICameraProperties::getMaxAeRegions().
the minimum supported size of resultatnt region is returned by ICameraProperties::getMinAeRegionSize().
thanks

Hi JerryChang,

We are using JP 4.4 and LT4 32.4.3.

From the LibArgus API documentation I see that there is a getMinAeRegionSize but implementing that in my application I am getting that is not a member for that:

‘class Argus::ICameraProperties’ has no member named ‘getMinAeRegionSize’; did you mean ‘getMaxAeRegions’?

I tried with getMaxAeRegions and I am getting that there are 64 regions.
GST_ARGUS: max aeregions: 64

Thanks,
-Adrian

hello ACervantes,

getMinAeRegionSize() returns the minimum size of resultant region required by AE,
you’ll need to use width() and height() for checking the value of 2D rectangular.
for example,

--- a/public/samples/oneShot/main.cpp
+++ b/public/samples/oneShot/main.cpp

int main(int argc, char** argv)
{
...
    Argus::ICameraProperties *iCameraProperties =
        Argus::interface_cast<Argus::ICameraProperties>(device);
...
+    printf("DEBUG: getMinAeRegionSize: %dx%d\n", iCameraProperties->getMinAeRegionSize().width(), iCameraProperties->getMinAeRegionSize().height());

I’m able to call this API for checking minimum AE region size,
for example,

./argus_oneshot
Executing Argus Sample: argus_oneshot
Argus Version: 0.97.3 (multi-process)
DEBUG: getMinAeRegionSize: 256x256

Hi JerryChang,

That is almost the same code that I had, However I replaced my code with the one you provided:

  Argus::ICameraProperties *iCameraProperties =
        Argus::interface_cast<Argus::ICameraProperties>(cameraDevices[cameraIndex]);
  GST_ARGUS_PRINT("DEBUG: getMinAeRegionSize: %dx%d\n", iCameraProperties->getMinAeRegionSize().width(), iCameraProperties->getMinAeRegionSize().height());

I am seeing the same errors;

gstnvarguscamerasrc.cpp: In function ‘bool ArgusCamera::execute(int32_t, int32_t, const Argus::Size2D<unsigned int>&, int32_t, GstNvArgusCameraSrc*)’:
gstnvarguscamerasrc.cpp:636:76: error: ‘class Argus::ICameraProperties’ has no member named ‘getMinAeRegionSize’; did you mean ‘getMaxAeRegions’?
   GST_ARGUS_PRINT("DEBUG: getMinAeRegionSize: %dx%d\n", iCameraProperties->getMinAeRegionSize().width(), iCameraProperties->getMinAeRegionSize().height());
                                                                            ^
gstnvarguscamerasrc.cpp:209:51: note: in definition of macro ‘GST_ARGUS_PRINT’
 #define GST_ARGUS_PRINT(...) printf("GST_ARGUS: " __VA_ARGS__)
                                                   ^~~~~~~~~~~
gstnvarguscamerasrc.cpp:636:125: error: ‘class Argus::ICameraProperties’ has no member named ‘getMinAeRegionSize’; did you mean ‘getMaxAeRegions’?
   GST_ARGUS_PRINT("DEBUG: getMinAeRegionSize: %dx%d\n", iCameraProperties->getMinAeRegionSize().width(), iCameraProperties->getMinAeRegionSize().height());

Is that supported in JP 4.4 L4T 32.4.3? Should I test using JP 4.4.1? does JP 4.4.1 the version used in your tests?

Thanks,
-Adrian

hello ACervantes,

we have verified this with Jetson-TX2/ JetPack-4.4.
may I know how you install Jetson Multimedia API, did you running with SDKmanager to install that package?

could you please also look into header file,
i.e. /usr/src/jetson_multimedia_api/argus/include/Argus/CameraDevice.h
there should be definition of getMinAeRegionSize()
for example,

    /**
     * Returns the minimum size of resultant region required by AE.
     *
     * @see IAutoControlSettings::setAeRegions()
     */
    virtual Size2D<uint32_t> getMinAeRegionSize() const = 0;

Hi JerryChang,

I installed Jetson Multimedia API with the SDKmanager, it is a clean install of JetPack 4.4.
SDKmanager version 1.3.1-7110

There is no definition for getMinAeRegionSize() in that header file. I only see:

/**
 * Returns the maximum number of regions of interest supported by AE.
 * A value of 0 means that the entire image is the only supported region of interest.
 *
 * @see IAutoControlSettings::setAeRegions()
 */
virtual uint32_t getMaxAeRegions() const = 0;

Thanks,
-Adrian

hello ACervantes,

could you please have a try by update the header file manually,
please adding the getMinAeRegionSize() definition in post #10 for confirmation,
thanks

Hi JerryChang,

Adding that definition manually into the header file, I was able to get it working:

GST_ARGUS: max aeregions:  64 
GST_ARGUS: min aeregion size:  width: 256 height: 256 

Do you know if the minimum ROI size depends on the resolution?

Thanks,
-Adrian

hello ACervantes,

it seems there should be release package packing issue of JetPack-4.4 / MMAPI.
please do update the JP-4.4 header file manually as your temporary solution.



may I know what’s your use-case?
it’s a new implementation to add Argus API for getting minimum AE region size.
this minimum AE region size did not depends-on the image resolution, it’s according to internal AE metering settings,
thanks