[3/3] ipa: simple: Add OV08X40 tuning
diff mbox series

Message ID 20260816204259.2845517-4-opensource@inspiredexperts.com
State Changes Requested
Headers show
Series
  • ipa: simple: Add sensor-specific image and exposure tuning
Related show

Commit Message

James Alexander Aug. 16, 2026, 8:42 p.m. UTC
Add the ov08x40 tuning used on the HP Spectre test system and install it
with the other simple IPA data.

The matrix and image controls reduce a green-yellow cast and keep webcam
exposure and gain within practical limits on that machine. The tuning was
tested under warm indoor lighting but is not lab calibrated.

Build-tested against libcamera base b8910c9a4961 and hardware-tested as part of
the complete patch set on the target HP Spectre.

Signed-off-by: James Alexander <opensource@inspiredexperts.com>
---

Comments

Kieran Bingham Sept. 14, 2026, 11:14 a.m. UTC | #1
Quoting James Alexander (2026-08-16 21:42:59)
> Add the ov08x40 tuning used on the HP Spectre test system and install it
> with the other simple IPA data.
> 
> The matrix and image controls reduce a green-yellow cast and keep webcam
> exposure and gain within practical limits on that machine. The tuning was
> tested under warm indoor lighting but is not lab calibrated.
> 
> Build-tested against libcamera base b8910c9a4961 and hardware-tested as part of
> the complete patch set on the target HP Spectre.
> 
> Signed-off-by: James Alexander <opensource@inspiredexperts.com>
> ---
> diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build
> index 92795ee..d994100 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([
> +    'ov08x40.yaml',
>      'uncalibrated.yaml',
>  ])
>  
> diff --git a/src/ipa/simple/data/ov08x40.yaml b/src/ipa/simple/data/ov08x40.yaml
> new file mode 100644
> index 0000000..aa1b8e0
> --- /dev/null
> +++ b/src/ipa/simple/data/ov08x40.yaml
> @@ -0,0 +1,22 @@
> +# SPDX-License-Identifier: CC0-1.0
> +%YAML 1.1
> +---
> +version: 1
> +algorithms:
> +  - BlackLevel:
> +  - Awb:
> +  - Ccm:
> +      ccms:
> +        - ct: 3050
> +          ccm: [ 1.12, -0.08, -0.04,
> +                -0.05,  1.00,  0.05,
> +                -0.02, -0.10,  1.12 ]

Those are some very small numbers in the CCM, I'm not sure how much of
an effect this really has?

But really this should be something that is generated by using a colour
calibration chart and measured, and cover a range of colour
temperatures.

Alternatively there are investigations to obtain the CCMs from the aiqb
files too which might be possible to investigate, but that might have
legal implications.

So we can get 'correct' data by either:
  - Reading an existing tuning file from the closed source stack (with
    potential legal implications)

  - Capturing RAW calibration images by putting a colour chart in a
    scene with a lux/colour temperature measurement

A colour chart is about 80 euros, and an imprecise colour temperature
tools is about 20 euros from China. But using those should be better
than making guesses I think.

--
Kieran



> +          offsets: [ 0, 0, 0 ]
> +  - Adjust:
> +      contrast: 1.15
> +      gamma: 2.2
> +  - Agc:
> +      target: 2.3
> +      maxAnalogueGain: 3.0
> +      maxExposureTimeMs: 33.0
> +...
> -- 
> 2.46.0

Patch
diff mbox series

diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build
index 92795ee..d994100 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([
+    'ov08x40.yaml',
     'uncalibrated.yaml',
 ])
 
diff --git a/src/ipa/simple/data/ov08x40.yaml b/src/ipa/simple/data/ov08x40.yaml
new file mode 100644
index 0000000..aa1b8e0
--- /dev/null
+++ b/src/ipa/simple/data/ov08x40.yaml
@@ -0,0 +1,22 @@ 
+# SPDX-License-Identifier: CC0-1.0
+%YAML 1.1
+---
+version: 1
+algorithms:
+  - BlackLevel:
+  - Awb:
+  - Ccm:
+      ccms:
+        - ct: 3050
+          ccm: [ 1.12, -0.08, -0.04,
+                -0.05,  1.00,  0.05,
+                -0.02, -0.10,  1.12 ]
+          offsets: [ 0, 0, 0 ]
+  - Adjust:
+      contrast: 1.15
+      gamma: 2.2
+  - Agc:
+      target: 2.3
+      maxAnalogueGain: 3.0
+      maxExposureTimeMs: 33.0
+...