I am working on an industrial vision project using a Jetson Orin NX (JetPack 6.2 / L4T 36.5) and an Arducam AR0234 Global Shutter camera. I am attempting to stream color video while bypassing the hardware ISP, but I have hit a wall regarding color reconstruction.
Current Status
Hardware Connection: I have successfully interfaced the AR0234 directly to the MIPI CSI port (Seeed J40 carrier board).
Data Access: I have bypassed the nvargus-daemon (which returns "Insufficient camera devices") and am successfully reading raw BA10 (10-bit Bayer) data via the V4L2 API.
The Glitch: I have addressed the bit-packing issue by shifting the data (>> 6) to extract clean 8-bit data.
The Problem
While I am now able to pull raw data and perform software demosaicing (using OpenCV and manual RGB channel balancing), I am not achieving real-life color accuracy. Despite trying all four Bayer patterns (GRBG, RGGB, BGGR, GBRG) and attempting to apply a custom 3x3 Color Correction Matrix (CCM), the output colors are consistently incorrect, flat, or heavily tinted. The camera sensor is clearly capable of producing high-quality color, but the software-side “Software ISP” approach is failing to map the raw sensor data correctly to the sRGB space.
Why I’m stuck:
GStreamer Negotiation Errors: Attempting a standard GStreamer pipeline (v4l2src ! bayer2rgb ! ...) results in reason not-negotiated (-4) errors, likely because v4l2src and bayer2rgb are not handling the 10-bit raw data format natively or correctly.
Missing ISP Processing: Without the hardware ISP, I am essentially operating without black-level compensation, professional white balance, and high-quality color transformation.
Software Limitations: My manual software-side color correction (gain multipliers) is failing to produce acceptable "real-life" color fidelity, which is critical for my application.
My Question to the Community
Since the hardware ISP path (nvarguscamerasrc) is inaccessible due to the lack of an Arducam-specific ISP tuning file for JetPack 6.2 on this custom board, what is the recommended professional workflow to achieve color-accurate output from raw Bayer data on a Jetson?
Is there a way to integrate a custom 3x3 CCM or ISP-like software pipeline into a GStreamer pipeline that actually supports 10-bit data?
Are there recommended libraries or C++ implementations for "Software ISP" that perform better than generic OpenCV debayering?
Is there a known way to get an Arducam AR0234 to play nicely with the nvargus-daemon on custom Orin NX boards?