I know this topic has been discussed before (e.g., here and here), but a few years have passed and I am still running into similar issues.
Here’s a brief description of my set-up:
- Xavier NX on a CTI Boson carrier
- Framos FSM-IMX283 CSI module + 2 x FSM-IMX264 CSI modules
- Running CTI Boson BSP based on Jetson Linux R32.7.3 (Jetpack 4.6.3)
- I have installed the basic Framos .isp tuning profiles, but I disabled lens shading correction
- I have a custom application using libArgus to capture a stream in either PIXEL_FMT_YCbCr_444_888, PIXEL_FMT_YCbCr_420_888 or PIXEL_FMT_RAW16 formats
- I have the stream resolution set to the full resolution of the sensor (according to device tree and sensor datasheet), e.g., 5496 x 3694 for the IMX283.
- In addition to the .isp tuning profiles I have modified the edge enhancement settings, EDGE_ENHANCE_MODE_OFF or EDGE_ENHANCE_MODE_HIGH_QUALITY with various strength settings, including strength 0 (and event negative values, for completeness!)
- I have also tried removing the .isp tuning profiles (and deleting the cached .bin files); I can see from the nvargus-daemon logs if the profiles are actually being used or not.
Despite all this I cannot reduce the amount of edge enhancement below a certain base level, so either there is an additional setting that is perhaps not exposed via the libArgus API, or there is a large amount of sharpening baked into the ISP Bayer demosaicing algorithm, or perhaps I end up with some inadvertent resizing of the image leading to resampling with a filter that includes a contrast boost.
Here’s a slanted-edge measurement showing the spatial frequency response (SFR) of an image captured as YUV444 using the Argus ISP (blue SFRcurve), vs the same scene captured as RAW16 and then demosaiced (software DFPD method) shown as the green curve, and lastly the RAW16 software image with a small amount of post-capture sharpening (orange curve).
The YUV444 Argus ISP image has an excessive amount of sharpening, with SFR contrast well above 1.4. This also shows up as visible undershoot and overshoot if we look at the image intensity profile across the edge (the edge spread function):
Again, note the YUV444 Argus ISP image is the blue curve, with the green and orange curves corresponding to a RAW16 capture with software processing (demosaicing, WB, CCM, etc.).
Here’s a magnified view of the YUV444 Argus ISP image (4x nearest-neighbour interpolation), where the ringing is clearly visible:
compared to the RAW16 software processed image:
Given that I am using a much more recent JetPack version, I would assume that previous issues with libnvscf have been resolved. So back to my topic questions: Is it possible to further reduce the amount of edge enhancement when using YUV444 (or YUV420) capture through the Argus ISP, beyond what I see with EDGE_ENHANCE_MODE_OFF ?
Or is there a trick to capturing a full-sensor-resolution stream to avoid any resizing / resampling in the Argus ISP, other than setting the stream resolution to the sensor resolution? (this seems to work as expected with RAW16, anyway)