From 115748428ee7f815b9164607fa5f1683efaa5da1 Mon Sep 17 00:00:00 2001 From: David Plowman Date: Fri, 22 Aug 2025 13:37:07 +0100 Subject: [PATCH] ipa: rpi: vc4: Minor tuning changes Sharpening is reduced slightly for official Raspberry Pi cameras, and exposure profiles made a bit more consistent. Denoise is reduced for the imx708 where it appears too strong. Signed-off-by: David Plowman Reviewed-by: Naushir Patuck Signed-off-by: Kieran Bingham --- src/ipa/rpi/vc4/data/imx219.json | 15 ++++++++++----- src/ipa/rpi/vc4/data/imx219_noir.json | 15 ++++++++++----- src/ipa/rpi/vc4/data/imx296.json | 8 ++++---- src/ipa/rpi/vc4/data/imx296_mono.json | 10 +++++----- src/ipa/rpi/vc4/data/imx477.json | 15 ++++++++++----- src/ipa/rpi/vc4/data/imx477_noir.json | 15 ++++++++++----- src/ipa/rpi/vc4/data/imx477_scientific.json | 15 ++++++++++----- src/ipa/rpi/vc4/data/imx708.json | 21 +++++++++++++-------- src/ipa/rpi/vc4/data/imx708_noir.json | 21 +++++++++++++-------- src/ipa/rpi/vc4/data/imx708_wide.json | 21 +++++++++++++-------- src/ipa/rpi/vc4/data/imx708_wide_noir.json | 21 +++++++++++++-------- src/ipa/rpi/vc4/data/ov5647.json | 11 ++++++++--- src/ipa/rpi/vc4/data/ov5647_noir.json | 11 ++++++++--- 13 files changed, 127 insertions(+), 72 deletions(-) diff --git a/src/ipa/rpi/vc4/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json index a020b12f..8098889e 100644 --- a/src/ipa/rpi/vc4/data/imx219.json +++ b/src/ipa/rpi/vc4/data/imx219.json @@ -162,17 +162,17 @@ "normal": { "shutter": [ 100, 10000, 30000, 60000, 66666 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] } }, "constraint_modes": @@ -675,7 +675,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.hdr": diff --git a/src/ipa/rpi/vc4/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json index d8bc9639..c8c59da0 100644 --- a/src/ipa/rpi/vc4/data/imx219_noir.json +++ b/src/ipa/rpi/vc4/data/imx219_noir.json @@ -78,17 +78,17 @@ "normal": { "shutter": [ 100, 10000, 30000, 60000, 66666 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 10.0 ] } }, "constraint_modes": @@ -609,7 +609,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.hdr": diff --git a/src/ipa/rpi/vc4/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json index 8f24ce5b..7c8589b2 100644 --- a/src/ipa/rpi/vc4/data/imx296.json +++ b/src/ipa/rpi/vc4/data/imx296.json @@ -159,18 +159,18 @@ { "normal": { - "shutter": [ 100, 30000, 45000, 60000, 120000 ], - "gain": [ 1.0, 1.0, 2.0, 4.0, 12.0 ] + "shutter": [ 100, 30000, 45000, 60000, 66666 ], + "gain": [ 1.0, 1.0, 2.0, 4.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 30000 ], + "shutter": [ 100, 5000, 10000, 20000, 66666 ], "gain": [ 1.0, 2.0, 4.0, 8.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": diff --git a/src/ipa/rpi/vc4/data/imx296_mono.json b/src/ipa/rpi/vc4/data/imx296_mono.json index fe331569..ea1ed768 100644 --- a/src/ipa/rpi/vc4/data/imx296_mono.json +++ b/src/ipa/rpi/vc4/data/imx296_mono.json @@ -62,18 +62,18 @@ { "normal": { - "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 10000, 30000, 60000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": diff --git a/src/ipa/rpi/vc4/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json index fa25ee86..7d922d68 100644 --- a/src/ipa/rpi/vc4/data/imx477.json +++ b/src/ipa/rpi/vc4/data/imx477.json @@ -167,17 +167,17 @@ "normal": { "shutter": [ 100, 10000, 30000, 60000, 66666 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -680,7 +680,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.hdr": diff --git a/src/ipa/rpi/vc4/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json index 472f33fe..9de6ac4e 100644 --- a/src/ipa/rpi/vc4/data/imx477_noir.json +++ b/src/ipa/rpi/vc4/data/imx477_noir.json @@ -78,17 +78,17 @@ "normal": { "shutter": [ 100, 10000, 30000, 60000, 66666 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -636,7 +636,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.hdr": diff --git a/src/ipa/rpi/vc4/data/imx477_scientific.json b/src/ipa/rpi/vc4/data/imx477_scientific.json index 9dc32eb1..1e5d8433 100644 --- a/src/ipa/rpi/vc4/data/imx477_scientific.json +++ b/src/ipa/rpi/vc4/data/imx477_scientific.json @@ -173,17 +173,17 @@ "normal": { "shutter": [ 100, 10000, 30000, 60000, 66666 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -482,7 +482,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } } ] } \ No newline at end of file diff --git a/src/ipa/rpi/vc4/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json index e54ceff4..ec17243d 100644 --- a/src/ipa/rpi/vc4/data/imx708.json +++ b/src/ipa/rpi/vc4/data/imx708.json @@ -24,8 +24,8 @@ { "rpi.noise": { - "reference_constant": 16.0, - "reference_slope": 4.0 + "reference_constant": 0.0, + "reference_slope": 2.5 } }, { @@ -169,18 +169,18 @@ { "normal": { - "shutter": [ 100, 15000, 30000, 60000, 120000 ], - "gain": [ 1.0, 1.0, 2.0, 4.0, 6.0 ] + "shutter": [ 100, 15000, 30000, 60000, 66666 ], + "gain": [ 1.0, 1.0, 2.0, 4.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -611,7 +611,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.af": diff --git a/src/ipa/rpi/vc4/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json index f351a180..b03906fb 100644 --- a/src/ipa/rpi/vc4/data/imx708_noir.json +++ b/src/ipa/rpi/vc4/data/imx708_noir.json @@ -24,8 +24,8 @@ { "rpi.noise": { - "reference_constant": 16.0, - "reference_slope": 4.0 + "reference_constant": 0.0, + "reference_slope": 2.5 } }, { @@ -169,18 +169,18 @@ { "normal": { - "shutter": [ 100, 15000, 30000, 60000, 120000 ], - "gain": [ 1.0, 1.0, 2.0, 4.0, 6.0 ] + "shutter": [ 100, 15000, 30000, 60000, 66666 ], + "gain": [ 1.0, 1.0, 2.0, 4.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -710,7 +710,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.af": diff --git a/src/ipa/rpi/vc4/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json index bf1b122c..e94f2441 100644 --- a/src/ipa/rpi/vc4/data/imx708_wide.json +++ b/src/ipa/rpi/vc4/data/imx708_wide.json @@ -24,8 +24,8 @@ { "rpi.noise": { - "reference_constant": 16.0, - "reference_slope": 4.0 + "reference_constant": 0.0, + "reference_slope": 2.5 } }, { @@ -159,18 +159,18 @@ { "normal": { - "shutter": [ 100, 15000, 30000, 60000, 120000 ], - "gain": [ 1.0, 1.0, 2.0, 4.0, 6.0 ] + "shutter": [ 100, 15000, 30000, 60000, 66666 ], + "gain": [ 1.0, 1.0, 2.0, 4.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -610,7 +610,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.af": diff --git a/src/ipa/rpi/vc4/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json index ea1c8c69..791e05bc 100644 --- a/src/ipa/rpi/vc4/data/imx708_wide_noir.json +++ b/src/ipa/rpi/vc4/data/imx708_wide_noir.json @@ -24,8 +24,8 @@ { "rpi.noise": { - "reference_constant": 16.0, - "reference_slope": 4.0 + "reference_constant": 0.0, + "reference_slope": 2.5 } }, { @@ -159,18 +159,18 @@ { "normal": { - "shutter": [ 100, 15000, 30000, 60000, 120000 ], - "gain": [ 1.0, 1.0, 2.0, 4.0, 6.0 ] + "shutter": [ 100, 15000, 30000, 60000, 66666 ], + "gain": [ 1.0, 1.0, 2.0, 4.0, 16.0 ] }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 6.0 ] + "shutter": [ 100, 5000, 10000, 20000, 66666 ], + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] }, "long": { "shutter": [ 1000, 30000, 60000, 90000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 16.0 ] } }, "constraint_modes": @@ -601,7 +601,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.af": diff --git a/src/ipa/rpi/vc4/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json index 40c6059c..ca561e59 100644 --- a/src/ipa/rpi/vc4/data/ov5647.json +++ b/src/ipa/rpi/vc4/data/ov5647.json @@ -166,13 +166,13 @@ }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], + "shutter": [ 100, 5000, 10000, 20000, 66666 ], "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] } }, "constraint_modes": @@ -676,7 +676,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } }, { "rpi.hdr": diff --git a/src/ipa/rpi/vc4/data/ov5647_noir.json b/src/ipa/rpi/vc4/data/ov5647_noir.json index 488b7119..ae2eb71e 100644 --- a/src/ipa/rpi/vc4/data/ov5647_noir.json +++ b/src/ipa/rpi/vc4/data/ov5647_noir.json @@ -80,13 +80,13 @@ }, "short": { - "shutter": [ 100, 5000, 10000, 20000, 33333 ], + "shutter": [ 100, 5000, 10000, 20000, 66666 ], "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] }, "long": { "shutter": [ 100, 10000, 30000, 60000, 120000 ], - "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ] + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ] } }, "constraint_modes": @@ -406,7 +406,12 @@ } }, { - "rpi.sharpen": { } + "rpi.sharpen": + { + "threshold": 0.75, + "limit": 0.5, + "strength": 1.0 + } } ] } \ No newline at end of file