[1/6] utils: raspberrypi: ctt: Update noise/sharpness tuning
diff mbox series

Message ID 20250822123709.16966-2-david.plowman@raspberrypi.com
State New
Headers show
Series
  • Camera tuning updates for Raspberry Pi
Related show

Commit Message

David Plowman Aug. 22, 2025, 12:37 p.m. UTC
The default noise/sharpness/gamma values are updated to reflect the
latest camera tuning work.

- Denoise is inceased when not using temporal denoise.
- Denoise is reduced when benefitting from temporal denoise.
- Over-sharpening is reduced.
- High contrast gamma is slightly reduced.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
---
 utils/raspberrypi/ctt/ctt.py      |   3 +-
 utils/raspberrypi/ctt/ctt_pisp.py | 106 +++++++++++++++++-------------
 2 files changed, 64 insertions(+), 45 deletions(-)

Comments

Naushir Patuck Aug. 26, 2025, 7:12 a.m. UTC | #1
Hi David,

On Fri, 22 Aug 2025 at 13:37, David Plowman
<david.plowman@raspberrypi.com> wrote:
>
> The default noise/sharpness/gamma values are updated to reflect the
> latest camera tuning work.
>
> - Denoise is inceased when not using temporal denoise.

s/inceased/increased/

Hopefully it can be fixed when merging?

> - Denoise is reduced when benefitting from temporal denoise.
> - Over-sharpening is reduced.
> - High contrast gamma is slightly reduced.
>
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>

Reviewed-by: Naushir Patuck <naush@raspberrypi.com>


> ---
>  utils/raspberrypi/ctt/ctt.py      |   3 +-
>  utils/raspberrypi/ctt/ctt_pisp.py | 106 +++++++++++++++++-------------
>  2 files changed, 64 insertions(+), 45 deletions(-)
>
> diff --git a/utils/raspberrypi/ctt/ctt.py b/utils/raspberrypi/ctt/ctt.py
> index 186afda5..93a8e8fb 100755
> --- a/utils/raspberrypi/ctt/ctt.py
> +++ b/utils/raspberrypi/ctt/ctt.py
> @@ -436,7 +436,8 @@ class Camera:
>          write to json
>          """
>          self.json['rpi.noise']['reference_constant'] = int(noise_out[1])
> -        self.json['rpi.noise']['reference_slope'] = round(noise_out[0], 3)
> +        # Results are better with about 40% higher deviation.
> +        self.json['rpi.noise']['reference_slope'] = round(1.4 * noise_out[0], 3)
>          self.log += '\nNOISE calibrations written to json'
>          print('Finished NOISE calibrations')
>
> diff --git a/utils/raspberrypi/ctt/ctt_pisp.py b/utils/raspberrypi/ctt/ctt_pisp.py
> index a59b053c..8a5fc03f 100755
> --- a/utils/raspberrypi/ctt/ctt_pisp.py
> +++ b/utils/raspberrypi/ctt/ctt_pisp.py
> @@ -29,11 +29,11 @@ json_template = {
>          {
>              "sdn":
>              {
> -                "deviation": 1.6,
> -                "strength": 0.5,
> +                "deviation": 0.6,
> +                "strength": 0.95,
>                  "deviation2": 3.2,
>                  "deviation_no_tdn": 3.2,
> -                "strength_no_tdn": 0.75
> +                "strength_no_tdn": 0.95
>              },
>              "cdn":
>              {
> @@ -42,7 +42,7 @@ json_template = {
>              },
>              "tdn":
>              {
> -                "deviation": 0.8,
> +                "deviation": 1.0,
>                  "threshold": 0.05
>              }
>          },
> @@ -50,11 +50,11 @@ json_template = {
>          {
>              "sdn":
>              {
> -                "deviation": 1.6,
> -                "strength": 0.5,
> +                "deviation": 0.6,
> +                "strength": 0.95,
>                  "deviation2": 3.2,
>                  "deviation_no_tdn": 3.2,
> -                "strength_no_tdn": 0.75
> +                "strength_no_tdn": 0.95
>              },
>              "cdn":
>              {
> @@ -71,11 +71,11 @@ json_template = {
>          {
>              "sdn":
>              {
> -                "deviation": 1.6,
> -                "strength": 0.5,
> +                "deviation": 0.6,
> +                "strength": 0.95,
>                  "deviation2": 3.2,
>                  "deviation_no_tdn": 3.2,
> -                "strength_no_tdn": 0.75
> +                "strength_no_tdn": 0.95
>              },
>              "cdn":
>              {
> @@ -714,38 +714,56 @@ json_template = {
>      "rpi.contrast": {
>          "ce_enable": 1,
>          "gamma_curve": [
> -            0,     0,
> -            1024,  5040,
> -            2048,  9338,
> -            3072,  12356,
> -            4096,  15312,
> -            5120,  18051,
> -            6144,  20790,
> -            7168,  23193,
> -            8192,  25744,
> -            9216,  27942,
> -            10240, 30035,
> -            11264, 32005,
> -            12288, 33975,
> -            13312, 35815,
> -            14336, 37600,
> -            15360, 39168,
> -            16384, 40642,
> -            18432, 43379,
> -            20480, 45749,
> -            22528, 47753,
> -            24576, 49621,
> -            26624, 51253,
> -            28672, 52698,
> -            30720, 53796,
> -            32768, 54876,
> -            36864, 57012,
> -            40960, 58656,
> -            45056, 59954,
> -            49152, 61183,
> -            53248, 62355,
> -            57344, 63419,
> -            61440, 64476,
> +            0, 0,
> +            512, 2518,
> +            1024, 5033,
> +            1536, 7175,
> +            2048, 9309,
> +            2560, 10814,
> +            3072, 12312,
> +            3584, 13773,
> +            4096, 15225,
> +            4608, 16566,
> +            5120, 17899,
> +            5632, 19221,
> +            6144, 20534,
> +            6656, 21684,
> +            7168, 22826,
> +            7680, 24024,
> +            8192, 25212,
> +            9216, 27251,
> +            10240, 29167,
> +            11264, 30947,
> +            12288, 32696,
> +            13312, 34309,
> +            14336, 35849,
> +            15360, 37194,
> +            16384, 38445,
> +            17408, 39598,
> +            18432, 40732,
> +            19456, 41717,
> +            20480, 42687,
> +            22528, 44343,
> +            24576, 45871,
> +            26624, 47222,
> +            28672, 48441,
> +            30720, 49460,
> +            32768, 50470,
> +            34816, 51476,
> +            36864, 52480,
> +            38912, 53382,
> +            40960, 54294,
> +            43008, 55155,
> +            45056, 56035,
> +            47104, 56920,
> +            49152, 57824,
> +            51200, 58737,
> +            53248, 59666,
> +            55296, 60604,
> +            57344, 61558,
> +            59392, 62529,
> +            61440, 63516,
> +            63488, 64519,
>              65535, 65535
>          ]
>      },
> @@ -754,8 +772,8 @@ json_template = {
>      "rpi.cac": {
>      },
>      "rpi.sharpen": {
> -       "threshold": 0.25,
> -       "limit": 1.0,
> +       "threshold": 0.75,
> +       "limit": 0.5,
>         "strength": 1.0
>      },
>      "rpi.hdr":
> --
> 2.39.5
>

Patch
diff mbox series

diff --git a/utils/raspberrypi/ctt/ctt.py b/utils/raspberrypi/ctt/ctt.py
index 186afda5..93a8e8fb 100755
--- a/utils/raspberrypi/ctt/ctt.py
+++ b/utils/raspberrypi/ctt/ctt.py
@@ -436,7 +436,8 @@  class Camera:
         write to json
         """
         self.json['rpi.noise']['reference_constant'] = int(noise_out[1])
-        self.json['rpi.noise']['reference_slope'] = round(noise_out[0], 3)
+        # Results are better with about 40% higher deviation.
+        self.json['rpi.noise']['reference_slope'] = round(1.4 * noise_out[0], 3)
         self.log += '\nNOISE calibrations written to json'
         print('Finished NOISE calibrations')
 
diff --git a/utils/raspberrypi/ctt/ctt_pisp.py b/utils/raspberrypi/ctt/ctt_pisp.py
index a59b053c..8a5fc03f 100755
--- a/utils/raspberrypi/ctt/ctt_pisp.py
+++ b/utils/raspberrypi/ctt/ctt_pisp.py
@@ -29,11 +29,11 @@  json_template = {
         {
             "sdn":
             {
-                "deviation": 1.6,
-                "strength": 0.5,
+                "deviation": 0.6,
+                "strength": 0.95,
                 "deviation2": 3.2,
                 "deviation_no_tdn": 3.2,
-                "strength_no_tdn": 0.75
+                "strength_no_tdn": 0.95
             },
             "cdn":
             {
@@ -42,7 +42,7 @@  json_template = {
             },
             "tdn":
             {
-                "deviation": 0.8,
+                "deviation": 1.0,
                 "threshold": 0.05
             }
         },
@@ -50,11 +50,11 @@  json_template = {
         {
             "sdn":
             {
-                "deviation": 1.6,
-                "strength": 0.5,
+                "deviation": 0.6,
+                "strength": 0.95,
                 "deviation2": 3.2,
                 "deviation_no_tdn": 3.2,
-                "strength_no_tdn": 0.75
+                "strength_no_tdn": 0.95
             },
             "cdn":
             {
@@ -71,11 +71,11 @@  json_template = {
         {
             "sdn":
             {
-                "deviation": 1.6,
-                "strength": 0.5,
+                "deviation": 0.6,
+                "strength": 0.95,
                 "deviation2": 3.2,
                 "deviation_no_tdn": 3.2,
-                "strength_no_tdn": 0.75
+                "strength_no_tdn": 0.95
             },
             "cdn":
             {
@@ -714,38 +714,56 @@  json_template = {
     "rpi.contrast": {
         "ce_enable": 1,
         "gamma_curve": [
-            0,     0,
-            1024,  5040,
-            2048,  9338,
-            3072,  12356,
-            4096,  15312,
-            5120,  18051,
-            6144,  20790,
-            7168,  23193,
-            8192,  25744,
-            9216,  27942,
-            10240, 30035,
-            11264, 32005,
-            12288, 33975,
-            13312, 35815,
-            14336, 37600,
-            15360, 39168,
-            16384, 40642,
-            18432, 43379,
-            20480, 45749,
-            22528, 47753,
-            24576, 49621,
-            26624, 51253,
-            28672, 52698,
-            30720, 53796,
-            32768, 54876,
-            36864, 57012,
-            40960, 58656,
-            45056, 59954,
-            49152, 61183,
-            53248, 62355,
-            57344, 63419,
-            61440, 64476,
+            0, 0,
+            512, 2518,
+            1024, 5033,
+            1536, 7175,
+            2048, 9309,
+            2560, 10814,
+            3072, 12312,
+            3584, 13773,
+            4096, 15225,
+            4608, 16566,
+            5120, 17899,
+            5632, 19221,
+            6144, 20534,
+            6656, 21684,
+            7168, 22826,
+            7680, 24024,
+            8192, 25212,
+            9216, 27251,
+            10240, 29167,
+            11264, 30947,
+            12288, 32696,
+            13312, 34309,
+            14336, 35849,
+            15360, 37194,
+            16384, 38445,
+            17408, 39598,
+            18432, 40732,
+            19456, 41717,
+            20480, 42687,
+            22528, 44343,
+            24576, 45871,
+            26624, 47222,
+            28672, 48441,
+            30720, 49460,
+            32768, 50470,
+            34816, 51476,
+            36864, 52480,
+            38912, 53382,
+            40960, 54294,
+            43008, 55155,
+            45056, 56035,
+            47104, 56920,
+            49152, 57824,
+            51200, 58737,
+            53248, 59666,
+            55296, 60604,
+            57344, 61558,
+            59392, 62529,
+            61440, 63516,
+            63488, 64519,
             65535, 65535
         ]
     },
@@ -754,8 +772,8 @@  json_template = {
     "rpi.cac": {
     },
     "rpi.sharpen": {
-	"threshold": 0.25,
-	"limit": 1.0,
+	"threshold": 0.75,
+	"limit": 0.5,
 	"strength": 1.0
     },
     "rpi.hdr":