How can Argus be used to improve image quality? What is the process for implementing this?

Hello, our team has developed the driver for the IMX327 camera for the Orin NX development board, and it has been correctly loaded onto the board. We can capture video with the camera using the video-viewer command. However, the image quality might need improvement. I noticed that NVIDIA provides the Argus API for the ISP process, and I have already run some examples under the Argus directory by installing the nvidia-l4t-jetson-multimedia-api package via sudo apt install. However, I still don’t fully understand how Argus works.

My questions are:

  1. If I want to improve the camera’s image quality, should I continue studying Argus and write a complete ISP process code using the Argus API?
  2. Or, do I only need to write part of the ISP process and somehow integrate it into the default image capture output flow?
  3. Alternatively, do you know of any other methods to improve the image output quality?



For the Bayer sensor you need to have camera partner for the IQ tuning.
If YUV sensor you need to external ISP vendor to help to improve the image quality.

Thanks

1 Like

Thank you for the response. The camera we are using is a Bayer sensor and does not have a built-in ISP module. So, what is the general purpose of the Argus functionality and API provided by NVIDIA? I always thought it was intended for developers to use to optimize image quality.

Check this document for the detail.

https://docs.nvidia.com/jetson/l4t-multimedia/group__LibargusAPI.html

1 Like

I know this isn’t answering your question, but…

A large portion of the noise you see in your images is because you’re taking pictures of moving objects at night. Your camera is trying to balance gain and exposure time to get a bright enough image without motion blur.

If you camera is in a stationary position and you’re able to use a light, the easiest way for you to increase image quality would be to add lighting. Another thing you could do is move your camera to a position closer along the axis of motion of the object you’re imaging, this way you could increase the exposure time without getting as much motion blur, then you could turn down the gain. Basically move the camera to a position more behind (probably above) the cars passing by.

1 Like

Hello, I carefully reviewed the webpage you provided and noticed it mentions that libargus offers image processing functions such as noise reduction and sharpening. Could you clarify if this part is handled automatically by the system during camera image capture, without requiring developers to manually implement noise reduction or sharpening processes?

Additionally, libargus provides auto-exposure and auto-white balance features. If the results still need improvement when using auto-exposure, do you know of any other optimization methods?

Thank you for your suggestion. Due to some engineering considerations, our camera is planned to be installed on the roadside, and lighting has already been set up. Previously, we used an IMX385 camera with a built-in ISP module, which allowed us to conveniently call the ISP for debugging and optimizing image quality. However, we are unsure whether, when using Argus to perform ISP, it is possible to further optimize the image quality.

Hi @Star_sea!

I have been researching on the libargus library and I did not found any way to set the exposure and white-balance manually.Maybe GStreamer Noise Reduction Element wiki that could help you to reduce the noise on environments with motion objects.

Thanks,

Oscar Fallas
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com
Website: https://www.ridgerun.com/

1 Like

Argus provide some basic function for noise reduce and sharpness enhance if those doesn’t acceptable the you need IQ tuning process by camera partner.

Thanks

1 Like