[v2,3/9] ipa: simple: data: Add OV01A10 tuning file
diff mbox series

Message ID 20260506220806.866289-1-devve.3@gmail.com
State New
Headers show
Series
  • ipa: simple: data: Add OV01A10 tuning file
Related show

Commit Message

devve May 6, 2026, 10:08 p.m. UTC
Add tuning data for the OmniVision OV01A10 sensor, calibrated from the
factory-supplied Intel IPU6 AIQB binary (ov01a_1BG101N3_MTL.aiqb)
shipped
with the Dell XPS 9320 (Meteor Lake).

The AIQB binary was parsed with some custom scripts to extract:
- 8 colour correction matrices spanning 2856K-7500K (Incandescent to
D75),
  all with rows summing to 1.0 (luminance-preserving)
- AWB neutral locus: 9 achromatic R/G, B/G points defining the sensor's
  white balance response across illuminants
- Sensor properties: 1280x800, 10-bit, GBRG colour order, base ISO 43
- Noise model: read noise variance 7.5e-5, shot noise slope 0.187

The AWB gain limits (maxGainR: 2.5, maxGainB: 3.2) are derived from the
maximum gains required to neutralise the warmest and coolest illuminants
in the locus, with 10% headroom.

Signed-off-by: d3vv3 <devve.3@gmail.com>
---
It was a best effort file before, but now I have extracted the actual
tuning data from the AIQB binary, so update the commit message and add
the new YAML file. I could not extract the black level from the AIQB
binary, so leave it as auto-detected at runtime.

As for the each row of the CCMs summing to 1.0, you are absolutely
right. I add a test on a patch, before we start adding more
tuning files.

 src/ipa/simple/data/meson.build  |  1 +
 src/ipa/simple/data/ov01a10.yaml | 55 ++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)
 create mode 100644 src/ipa/simple/data/ov01a10.yaml

Patch
diff mbox series

diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build
index 92795ee4..e6110320 100644
--- a/src/ipa/simple/data/meson.build
+++ b/src/ipa/simple/data/meson.build
@@ -1,6 +1,7 @@ 
 # SPDX-License-Identifier: CC0-1.0
 
 conf_files = files([
+    'ov01a10.yaml',
     'uncalibrated.yaml',
 ])
 
diff --git a/src/ipa/simple/data/ov01a10.yaml b/src/ipa/simple/data/ov01a10.yaml
new file mode 100644
index 00000000..fa5afcdd
--- /dev/null
+++ b/src/ipa/simple/data/ov01a10.yaml
@@ -0,0 +1,55 @@ 
+# SPDX-License-Identifier: CC0-1.0
+%YAML 1.1
+---
+version: 1
+algorithms:
+  # Black level is not specified in the AIQB calibration binary; auto-detected
+  # from the histogram dark end at runtime.
+  - BlackLevel:
+  - Awb:
+      maxGainR: 2.5
+      maxGainB: 3.2
+      speed: 0.25
+  - Ccm:
+      ccms:
+        - ct: 2856
+          ccm: [  1.1248,  0.2210, -0.3458,
+                 -0.4616,  1.7736, -0.3120,
+                 -0.4342, -0.9348,  2.3690 ]
+        - ct: 3000
+          ccm: [  1.5839, -0.4188, -0.1650,
+                 -0.3670,  1.6565, -0.2895,
+                 -0.1213, -1.0442,  2.1655 ]
+        - ct: 3450
+          ccm: [  1.6411, -0.5127, -0.1284,
+                 -0.3680,  1.6337, -0.2657,
+                 -0.1384, -1.0869,  2.2253 ]
+        - ct: 4000
+          ccm: [  1.5414, -0.4024, -0.1390,
+                 -0.3304,  1.6352, -0.3048,
+                 -0.1237, -0.6699,  1.7936 ]
+        - ct: 4150
+          ccm: [  1.7334, -0.6629, -0.0706,
+                 -0.3121,  1.6267, -0.3146,
+                 -0.0920, -0.9183,  2.0103 ]
+        - ct: 5000
+          ccm: [  1.5015, -0.3165, -0.1850,
+                 -0.2277,  1.6190, -0.3913,
+                 -0.0699, -0.7285,  1.7984 ]
+        - ct: 6500
+          ccm: [  1.8163, -0.7062, -0.1100,
+                 -0.1640,  1.5736, -0.4096,
+                 -0.0084, -0.8294,  1.8378 ]
+        - ct: 7500
+          ccm: [  1.8953, -0.7980, -0.0973,
+                 -0.1539,  1.6001, -0.4462,
+                 -0.0101, -0.7800,  1.7902 ]
+  - Adjust:
+      gamma: 2.2
+      contrast: 1.0
+      saturation: 1.0
+  - Agc:
+      exposureTarget: 1.4
+      hysteresis: 0.5
+      stepDenominator: 20
+...