From patchwork Fri Oct 24 14:16:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Plowman X-Patchwork-Id: 24807 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 83A67C3259 for ; Fri, 24 Oct 2025 14:41:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C28B96099E; Fri, 24 Oct 2025 16:41:06 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="Tp1c900s"; dkim-atps=neutral Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9D9916097C for ; Fri, 24 Oct 2025 16:41:05 +0200 (CEST) Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-4270a3464caso972178f8f.1 for ; Fri, 24 Oct 2025 07:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1761316865; x=1761921665; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3Z72PMVGhDWjCiRhniiV8om3lgUrFIBw9gyzqZUUDKo=; b=Tp1c900s8g2xyypb1a5hcU+NitZplVuPvUV1M3Pikp7GoIG5SY0/NcLAHnQk38EOKU BefT6y93FFR/GaUK7CgjMRHXO1RAu3nYvxXWjgQJvc2EpSZ2K4zWUSM22urcsY5I0mvO m6GbKfUIBcmX3QaArzBkvPyKjmSBHVGLv+Mton1kUJGUyS0fsSNYlMKGkfOOkNo4VKvL w4cUWA024SN1ejYlLXyQdWriaY2lJIIZGTzJcDVBQLmq4yN8Y1+5U3iIf+cslkjqgqpt d6Z2i4QONKyiFndwFNrCuAHVWiQ4NvOgDxrd8VvUCqy0e00FKMYrQsDm71QzpxlWkaBJ w3uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761316865; x=1761921665; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3Z72PMVGhDWjCiRhniiV8om3lgUrFIBw9gyzqZUUDKo=; b=NuWn6fIKsn5/oTBLnfaSgiB+GQtet08nqQYbO7MmmvALoKmKaBGcw2seZMBosVaHM/ berwjN5yqUhx2Ipc4Cq6tScHj9jqm+Os5XRuRt2DOBlgqfIbyR2se+lFT4Be3FOs37VJ A4JiKsySE9T4rIkN0B7ruJo6th+xqQRc6TPM0/NuGYGtuh133apH8TKjYZJP86OzJXCc 0hgqoUMKaeObfYGnDHZ7vZabU7u31HoifnYFjIGUPQEPi0RH7q/u5zjZf5FfHevS8gek bLMRDSUYgh4d2WGn0alBpka5MSZ+rqpIPv+tje1Y47GF8cBfG9aWdNIKTNh+w/cuLezQ lPmQ== X-Gm-Message-State: AOJu0YzuCkQCTbTodBxAldE0/gY3jWrfTpUk4IdvAEY26f9nLMcNiEOI SMbMvOHcAvFHCEgp0CQcg7fVik6K8RvnFOkRuDIXbHqUOlnWLXD/tvATB+448lAEcXtvAMzWuKA yjPbOnzo= X-Gm-Gg: ASbGncsMs4pDcEFJsWycRJeHjRkDos7vU5OJ8cOovxx7CLaSqUPInV/Nzmmg55tP7lf McrmT5ZASvbtxB284V0GAjaBkAMCu8RKZnMHx8acZ+1wT09PolU4YmBWMcA89Xrccnsf5872gW7 +7hbl7gli9/8UcG2DwD7/MAHBbzykzqHE3cVsdaSjAzDcY8xXTx3/BAwcYIvw+HotTNFD9AtWsf VdyyfsYfPnwJXuM1w9vc4i1ZolSZ3lCF8JvBYM1oCRukn6Yiqad71xmmONbg3p9A4/Se5i6tLz4 2QuAJStN4FHqxqnZmS7DjwF8Z41SD8czHQrzlCx2ME5fDsDFalnOLIo4ZwqwWvtCHlBrKpNQdz7 jZRQ/jegx1YFX/2gQmqUacCKN/Tu2i1kjuNO2efk8eshw8oLT6swg3o8zqygJ85HDDh3CgzNcCX GoJybQiMhJMToDyqQeZy6OrzgEGrSzNQSOE8haZzFTekXiqnqSOWg2snKbg3KtR0e10B6ui5qbb 3CXA+E5UC/IeqXCGlr5S4n7qw== X-Google-Smtp-Source: AGHT+IGQ/m9aJsB/949FcPn8YXwoYnCn7TVwyDYyCPyZ2STeF6hhoUkDCjaI7lqnjS+2tvuqxoMpFA== X-Received: by 2002:a05:6000:26c5:b0:403:8cc:db66 with SMTP id ffacd0b85a97d-4298a0a8eb6mr4641994f8f.32.1761316862943; Fri, 24 Oct 2025 07:41:02 -0700 (PDT) Received: from localhost.localdomain ([2a06:61c0:f337:0:8aba:2a85:b765:a23e]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-429898ecabdsm9835993f8f.47.2025.10.24.07.41.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 07:41:01 -0700 (PDT) From: David Plowman To: libcamera-devel@lists.libcamera.org Cc: Peter Bailey Subject: [PATCH 3/4] ipa: rpi: pisp: vc4: Update tuning files for new awb and add model Date: Fri, 24 Oct 2025 15:16:02 +0100 Message-ID: <20251024144049.3311-4-david.plowman@raspberrypi.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251024144049.3311-1-david.plowman@raspberrypi.com> References: <20251024144049.3311-1-david.plowman@raspberrypi.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Peter Bailey Update the tuning files to include the new Awb algorithm. It is enabled by renaming disable.rpi.nn.awb to rpi.nn.awb and rpi.awb to disable.rpi.awb. Add a model for the Awb algorithm to use by default. Signed-off-by: Peter Bailey --- src/ipa/rpi/pisp/data/awb_model.tflite | Bin 0 -> 47624 bytes src/ipa/rpi/pisp/data/imx219.json | 65 ++++++++++++++- src/ipa/rpi/pisp/data/imx296.json | 64 ++++++++++++++- src/ipa/rpi/pisp/data/imx296_16mm.json | 64 ++++++++++++++- src/ipa/rpi/pisp/data/imx296_6mm.json | 64 ++++++++++++++- src/ipa/rpi/pisp/data/imx477.json | 63 +++++++++++++++ src/ipa/rpi/pisp/data/imx477_16mm.json | 65 ++++++++++++++- src/ipa/rpi/pisp/data/imx477_6mm.json | 65 ++++++++++++++- src/ipa/rpi/pisp/data/imx477_scientific.json | 79 ++++++++++++++++++- src/ipa/rpi/pisp/data/imx500.json | 67 ++++++++++++++++ src/ipa/rpi/pisp/data/imx708.json | 64 ++++++++++++++- src/ipa/rpi/pisp/data/imx708_wide.json | 62 +++++++++++++++ src/ipa/rpi/pisp/data/meson.build | 7 ++ src/ipa/rpi/pisp/data/ov5647.json | 63 +++++++++++++++ src/ipa/rpi/vc4/data/awb_model.tflite | Bin 0 -> 42976 bytes src/ipa/rpi/vc4/data/imx219.json | 64 +++++++++++++++ src/ipa/rpi/vc4/data/imx296.json | 64 +++++++++++++++ src/ipa/rpi/vc4/data/imx477.json | 69 ++++++++++++++++ src/ipa/rpi/vc4/data/imx500.json | 67 ++++++++++++++++ src/ipa/rpi/vc4/data/imx708.json | 72 +++++++++++++++++ src/ipa/rpi/vc4/data/imx708_wide.json | 62 +++++++++++++++ src/ipa/rpi/vc4/data/meson.build | 8 ++ src/ipa/rpi/vc4/data/ov5647.json | 64 +++++++++++++++ 23 files changed, 1254 insertions(+), 8 deletions(-) create mode 100644 src/ipa/rpi/pisp/data/awb_model.tflite create mode 100644 src/ipa/rpi/vc4/data/awb_model.tflite diff --git a/src/ipa/rpi/pisp/data/awb_model.tflite b/src/ipa/rpi/pisp/data/awb_model.tflite new file mode 100644 index 0000000000000000000000000000000000000000..280733265b669eee4c8c3e048ca5a18fbdde679f GIT binary patch literal 47624 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 literal 0 HcmV?d00001 diff --git a/src/ipa/rpi/vc4/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json index c43d6db4..51f4e2e0 100644 --- a/src/ipa/rpi/vc4/data/imx219.json +++ b/src/ipa/rpi/vc4/data/imx219.json @@ -128,6 +128,70 @@ "transverse_neg": 0.04881 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "ct_curve": + [ + 2498.0, 0.9309, 0.3599, + 2911.0, 0.8682, 0.4283, + 2919.0, 0.8358, 0.4621, + 3627.0, 0.7646, 0.5327, + 4600.0, 0.6079, 0.6721, + 5716.0, 0.5712, 0.7017, + 8575.0, 0.4331, 0.8037 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.04791, + "transverse_neg": 0.04881, + "ccm": + [ + 2.2229345364238413, -0.7596721523178808, -0.46326238410596027, + -0.6834893874172185, 2.7118816887417223, -1.02839940397351, + -0.2613746357615894, -0.668015927152318, 1.9293905629139072 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json index c9b9ee61..0472b8cf 100644 --- a/src/ipa/rpi/vc4/data/imx296.json +++ b/src/ipa/rpi/vc4/data/imx296.json @@ -128,6 +128,70 @@ "transverse_neg": 0.02374 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 7600 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 7600 + } + }, + "ct_curve": + [ + 2500.0, 0.5386, 0.2458, + 2800.0, 0.4883, 0.3303, + 2900.0, 0.4855, 0.3349, + 3620.0, 0.4203, 0.4367, + 4560.0, 0.3455, 0.5444, + 5600.0, 0.2948, 0.6124, + 7400.0, 0.2336, 0.6894 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.03093, + "transverse_neg": 0.02374, + "ccm": + [ + 2.1073753846153847, -0.8054946153846154, -0.30188076923076923, + -0.43306999999999995, 2.162828076923077, -0.7297680769230768, + -0.126655, -0.5027626923076922, 1.6294176923076922 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json index 46f51287..4b40299c 100644 --- a/src/ipa/rpi/vc4/data/imx477.json +++ b/src/ipa/rpi/vc4/data/imx477.json @@ -133,6 +133,75 @@ "transverse_neg": 0.04429 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "ct_curve": + [ + 2360.0, 0.6009, 0.3093, + 2848.0, 0.5071, 0.4, + 2903.0, 0.4905, 0.4392, + 3628.0, 0.4261, 0.5564, + 3643.0, 0.4228, 0.5623, + 4660.0, 0.3529, 0.68, + 5579.0, 0.3227, 0.7, + 6125.0, 0.3129, 0.71, + 6671.0, 0.3065, 0.72, + 7217.0, 0.3014, 0.73, + 7763.0, 0.295, 0.74, + 9505.0, 0.2524, 0.7856 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.0238, + "transverse_neg": 0.04429, + "ccm": + [ + 2.1643743343419066, -0.972589984871407, -0.19177768532526474, + -0.3769567095310136, 2.0993768608169443, -0.722416815431165, + -0.11786965204236007, -0.4893621633888049, 1.607231815431165 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/imx500.json b/src/ipa/rpi/vc4/data/imx500.json index 224ffb92..e12068a5 100644 --- a/src/ipa/rpi/vc4/data/imx500.json +++ b/src/ipa/rpi/vc4/data/imx500.json @@ -131,6 +131,73 @@ "transverse_neg": 0.02626 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2800, + "hi": 8000 + }, + "incandescent": + { + "lo": 2800, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 7600 + } + }, + "ct_curve": + [ + 2800.0, 0.7126, 0.3567, + 2860.0, 0.6681, 0.4042, + 2880.0, 0.6651, 0.4074, + 3580.0, 0.5674, 0.5091, + 3650.0, 0.5629, 0.5137, + 4500.0, 0.4792, 0.5982, + 4570.0, 0.4752, 0.6022, + 5648.0, 0.4137, 0.6628, + 5717.0, 0.4116, 0.6648, + 7600.0, 0.3609, 0.7138 + ], + "sensitivity_r": 1.0, + "sensitivity_b": 1.0, + "transverse_pos": 0.02798, + "transverse_neg": 0.02626, + "ccm": + [ + 1.6856933395176252, -0.4760917810760668, -0.20960155844155848, + -0.3666382560296846, 1.9130496103896104, -0.5464153432282004, + -0.060413803339517624, -0.4878164935064935, 1.5482282745825604 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json index 5aae842e..56271cbc 100644 --- a/src/ipa/rpi/vc4/data/imx708.json +++ b/src/ipa/rpi/vc4/data/imx708.json @@ -136,6 +136,78 @@ "transverse_neg": 0.03061 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "ct_curve": + [ + 2498.0, 0.8733, 0.2606, + 2821.0, 0.7707, 0.3245, + 2925.0, 0.7338, 0.3499, + 2926.0, 0.7193, 0.3603, + 2951.0, 0.7144, 0.3639, + 2954.0, 0.7111, 0.3663, + 3578.0, 0.6038, 0.4516, + 3717.0, 0.5861, 0.4669, + 3784.0, 0.5786, 0.4737, + 4485.0, 0.5113, 0.5368, + 4615.0, 0.4994, 0.5486, + 4671.0, 0.4927, 0.5554, + 5753.0, 0.4274, 0.6246, + 5773.0, 0.4265, 0.6256, + 7433.0, 0.3723, 0.6881 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.03148, + "transverse_neg": 0.03061, + "ccm": + [ + 1.5407949606299214, -0.3714970078740158, -0.16929511811023623, + -0.2801589763779528, 1.649028503937008, -0.36886236220472446, + 0.004032519685039371, -0.5251851181102363, 1.521162598425197 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json index a678dc32..684550f0 100644 --- a/src/ipa/rpi/vc4/data/imx708_wide.json +++ b/src/ipa/rpi/vc4/data/imx708_wide.json @@ -126,6 +126,68 @@ "transverse_neg": 0.01601 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "ct_curve": + [ + 2750.0, 0.7881, 0.2849, + 2940.0, 0.7559, 0.3103, + 3650.0, 0.6291, 0.4206, + 4625.0, 0.5336, 0.5161, + 5715.0, 0.4668, 0.5898 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.01165, + "transverse_neg": 0.01601, + "ccm": + [ + 1.5820866588602653, -0.39406808743169397, -0.1880145042935207, + -0.3101711553473849, 1.756938087431694, -0.44677099921935987, + -0.018062732240437158, -0.5139293442622951, 1.5319991100702577 + ], + "enable_nn": 1 + } + }, { "rpi.agc": { diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build index b42f5f6c..7516c653 100644 --- a/src/ipa/rpi/vc4/data/meson.build +++ b/src/ipa/rpi/vc4/data/meson.build @@ -29,6 +29,14 @@ conf_files = files([ 'uncalibrated.json', ]) +model_files = files([ + 'awb_model.tflite' +]) + + install_data(conf_files, install_dir : ipa_data_dir / 'rpi' / 'vc4', install_tag : 'runtime') + +install_data(model_files, + install_dir : ipa_data_dir / 'rpi' / 'vc4') diff --git a/src/ipa/rpi/vc4/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json index 38d4d265..56e33b5b 100644 --- a/src/ipa/rpi/vc4/data/ov5647.json +++ b/src/ipa/rpi/vc4/data/ov5647.json @@ -128,6 +128,70 @@ "transverse_neg": 0.04313 } }, + { + "disable.rpi.nn.awb": + { + "modes": + { + "auto": + { + "lo": 2500, + "hi": 8000 + }, + "incandescent": + { + "lo": 2500, + "hi": 3000 + }, + "tungsten": + { + "lo": 3000, + "hi": 3500 + }, + "fluorescent": + { + "lo": 4000, + "hi": 4700 + }, + "indoor": + { + "lo": 3000, + "hi": 5000 + }, + "daylight": + { + "lo": 5500, + "hi": 6500 + }, + "cloudy": + { + "lo": 7000, + "hi": 8600 + } + }, + "ct_curve": + [ + 2500.0, 1.0289, 0.4503, + 2803.0, 0.9428, 0.5108, + 2914.0, 0.9406, 0.5127, + 3605.0, 0.8261, 0.6249, + 4540.0, 0.7331, 0.7533, + 5699.0, 0.6715, 0.8627, + 8625.0, 0.6081, 1.0012 + ], + "sensitivity_r": 1.05, + "sensitivity_b": 1.05, + "transverse_pos": 0.0321, + "transverse_neg": 0.04313, + "ccm": + [ + 2.041588151260504, -0.5494553781512606, -0.49214025210084034, + -0.5116488235294118, 1.9901442857142857, -0.47849546218487393, + -0.10519773109243696, -0.641700168067227, 1.7468953781512604 + ], + "enable_nn": 1 + } + }, { "rpi.agc": {