[v4,7/7] ipa: rkisp1: algorithms: data: imx219: enable DPF tuning for IMX219
diff mbox series

Message ID 20251208004808.1274417-8-rui.wang@ideasonboard.com
State New
Headers show
Series
  • rebase_dpf_refactory_patch_v4
Related show

Commit Message

Rui Wang Dec. 8, 2025, 12:48 a.m. UTC
Enable the RkISP1 denoise pre-filter (DPF) for the IMX219 sensor by
adding the required DPF tuning block to imx219.yaml.

Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>
---

changelog:
 - Yaml file only support dpf conifg and dpf strength config
 
 src/ipa/rkisp1/data/imx219.yaml | 60 +++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

Comments

Jacopo Mondi Dec. 11, 2025, 4 p.m. UTC | #1
Hi Rui

On Sun, Dec 07, 2025 at 07:48:08PM -0500, Rui Wang wrote:
> Enable the RkISP1 denoise pre-filter (DPF) for the IMX219 sensor by
> adding the required DPF tuning block to imx219.yaml.
>
> Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>
> ---
>
> changelog:
>  - Yaml file only support dpf conifg and dpf strength config
>
>  src/ipa/rkisp1/data/imx219.yaml | 60 +++++++++++++++++++++++++++++++++
>  1 file changed, 60 insertions(+)
>
> diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml
> index 0d99cb52..736b0bdb 100644
> --- a/src/ipa/rkisp1/data/imx219.yaml
> +++ b/src/ipa/rkisp1/data/imx219.yaml
> @@ -111,4 +111,64 @@ algorithms:
>                 1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,
>                 1326, 1334, 1334,
>               ]
> +  - Dpf:
> +      filter:
> +        g:  [ 18, 13,  9,  5,  3,  1 ]
> +        rb: [ 18, 15, 12,  8,  5,  2 ]
> +      nll:
> +        coeff: [
> +          0,  14,  28,  42,  58,  76,  96, 120,
> +          148, 180, 216, 256, 300, 348, 400, 456,
> +          520
> +        ]
> +        scale-mode: "linear"
> +      strength:
> +        r: 80
> +        g: 80
> +        b: 80

This is what confuses me about Dpf.

We don't have an "enable DPF" control but rather only "use this DPF
mode". What 'mode' does this outer configuration represents ?

> +      modes:
> +        - type: "minimal"
> +          filter:
> +            g:  [ 14, 10,  7,  4,  2,  1 ]
> +            rb: [ 14, 11,  8,  4,  2,  1 ]
> +          nll:
> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> +            scale-mode: "linear"
> +          strength:
> +            r: 60
> +            g: 60
> +            b: 60
> +        - type: "highquality"
> +          filter:
> +            g:  [ 22, 18, 13,  8,  5,  2 ]
> +            rb: [ 20, 18, 16, 11,  7,  3 ]
> +          nll:
> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> +            scale-mode: "linear"
> +          strength:
> +            r: 130
> +            g: 130
> +            b: 130
> +        - type: "fast"
> +          filter:
> +            g:  [ 16, 12,  9,  5,  3,  1 ]
> +            rb: [ 16, 13, 10,  6,  4,  2 ]
> +          nll:
> +            coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]
> +            scale-mode: "linear"
> +          strength:
> +            r: 90
> +            g: 90
> +            b: 90
> +        - type: "zsl"
> +          filter:
> +            g:  [ 18, 14, 10,  6,  3,  1 ]
> +            rb: [ 18, 16, 13,  9,  5,  3 ]
> +          nll:
> +            coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]
> +            scale-mode: "linear"
> +          strength:
> +            r: 110
> +            g: 110
> +            b: 110
>  ...
> --
> 2.43.0
>
Rui Wang Dec. 13, 2025, 12:11 a.m. UTC | #2
Jacopo Mondi wrote:
> Hi Rui
> 
> On Sun, Dec 07, 2025 at 07:48:08PM -0500, Rui Wang wrote:
> > Enable the RkISP1 denoise pre-filter (DPF) for the IMX219 sensor by
> > adding the required DPF tuning block to imx219.yaml.
> >
> > Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>
> > ---
> >
> > changelog:
> >  - Yaml file only support dpf conifg and dpf strength config
> >
> >  src/ipa/rkisp1/data/imx219.yaml | 60 +++++++++++++++++++++++++++++++++
> >  1 file changed, 60 insertions(+)
> >
> > diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml
> > index 0d99cb52..736b0bdb 100644
> > --- a/src/ipa/rkisp1/data/imx219.yaml
> > +++ b/src/ipa/rkisp1/data/imx219.yaml
> > @@ -111,4 +111,64 @@ algorithms:
> >                 1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,
> >                 1326, 1334, 1334,
> >               ]
> > +  - Dpf:
> > +      filter:
> > +        g:  [ 18, 13,  9,  5,  3,  1 ]
> > +        rb: [ 18, 15, 12,  8,  5,  2 ]
> > +      nll:
> > +        coeff: [
> > +          0,  14,  28,  42,  58,  76,  96, 120,
> > +          148, 180, 216, 256, 300, 348, 400, 456,
> > +          520
> > +        ]
> > +        scale-mode: "linear"
> > +      strength:
> > +        r: 80
> > +        g: 80
> > +        b: 80
> 
> This is what confuses me about Dpf.
> 
> We don't have an "enable DPF" control but rather only "use this DPF
> mode". What 'mode' does this outer configuration represents ?
>
this modes map to reductionmodecontrol :
NoiseReductionModeMinimal/NoiseReductionModeHighQuality
/NoiseReductionModeFast/NoiseReductionModeZSL
each mode would own its specific config in tuning file.
and NoiseReductionModeOff equal to disable DPF

> > +      modes:
> > +        - type: "minimal"
> > +          filter:
> > +            g:  [ 14, 10,  7,  4,  2,  1 ]
> > +            rb: [ 14, 11,  8,  4,  2,  1 ]
> > +          nll:
> > +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> > +            scale-mode: "linear"
> > +          strength:
> > +            r: 60
> > +            g: 60
> > +            b: 60
> > +        - type: "highquality"
> > +          filter:
> > +            g:  [ 22, 18, 13,  8,  5,  2 ]
> > +            rb: [ 20, 18, 16, 11,  7,  3 ]
> > +          nll:
> > +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> > +            scale-mode: "linear"
> > +          strength:
> > +            r: 130
> > +            g: 130
> > +            b: 130
> > +        - type: "fast"
> > +          filter:
> > +            g:  [ 16, 12,  9,  5,  3,  1 ]
> > +            rb: [ 16, 13, 10,  6,  4,  2 ]
> > +          nll:
> > +            coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]
> > +            scale-mode: "linear"
> > +          strength:
> > +            r: 90
> > +            g: 90
> > +            b: 90
> > +        - type: "zsl"
> > +          filter:
> > +            g:  [ 18, 14, 10,  6,  3,  1 ]
> > +            rb: [ 18, 16, 13,  9,  5,  3 ]
> > +          nll:
> > +            coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]
> > +            scale-mode: "linear"
> > +          strength:
> > +            r: 110
> > +            g: 110
> > +            b: 110
> >  ...
> > --
> > 2.43.0
> >
Jacopo Mondi Dec. 15, 2025, 8:26 a.m. UTC | #3
i Rui

On Fri, Dec 12, 2025 at 07:11:32PM -0500, Rui Wang wrote:
> Jacopo Mondi wrote:
> > Hi Rui
> >
> > On Sun, Dec 07, 2025 at 07:48:08PM -0500, Rui Wang wrote:
> > > Enable the RkISP1 denoise pre-filter (DPF) for the IMX219 sensor by
> > > adding the required DPF tuning block to imx219.yaml.
> > >
> > > Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>
> > > ---
> > >
> > > changelog:
> > >  - Yaml file only support dpf conifg and dpf strength config
> > >
> > >  src/ipa/rkisp1/data/imx219.yaml | 60 +++++++++++++++++++++++++++++++++
> > >  1 file changed, 60 insertions(+)
> > >
> > > diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml
> > > index 0d99cb52..736b0bdb 100644
> > > --- a/src/ipa/rkisp1/data/imx219.yaml
> > > +++ b/src/ipa/rkisp1/data/imx219.yaml
> > > @@ -111,4 +111,64 @@ algorithms:
> > >                 1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,
> > >                 1326, 1334, 1334,
> > >               ]
> > > +  - Dpf:
> > > +      filter:
> > > +        g:  [ 18, 13,  9,  5,  3,  1 ]
> > > +        rb: [ 18, 15, 12,  8,  5,  2 ]
> > > +      nll:
> > > +        coeff: [
> > > +          0,  14,  28,  42,  58,  76,  96, 120,
> > > +          148, 180, 216, 256, 300, 348, 400, 456,
> > > +          520
> > > +        ]
> > > +        scale-mode: "linear"
> > > +      strength:
> > > +        r: 80
> > > +        g: 80
> > > +        b: 80
> >
> > This is what confuses me about Dpf.
> >
> > We don't have an "enable DPF" control but rather only "use this DPF
> > mode". What 'mode' does this outer configuration represents ?
> >
> this modes map to reductionmodecontrol :
> NoiseReductionModeMinimal/NoiseReductionModeHighQuality
> /NoiseReductionModeFast/NoiseReductionModeZSL
> each mode would own its specific config in tuning file.
> and NoiseReductionModeOff equal to disable DPF

This was not my question, sorry if it wasn't clear

The tuning file layout is the following one

  - Dpf:
      filter:
      nll:
      strength:
      modes:
        - type: "minimal"
          filter:
          nll:
          strength:
        - type: "highquality"
          filter:
          nll:
          strength:
        - type: "fast"
          filter:
          nll:
          strength:
        - type: "zsl"
          filter:
          nll:
          strength:

Each entry in "modes" is .. a mode, with it's own configuration.
BUT: what do the outer configuration refers to ? What is its purpose ?
It is not associated to any "mode", how can user select it ?

  - Dpf:
      filter:           \
      nll:              | -> This one ??
      strength:         /
      modes:
      - type: ...

Also, as I'm not sure if my reply to [v4 2/7] was clear, for each
"mode" in "modes" you should register a value for
controls::draft::NoiseReductionMode (*) and use can select which of
those to use.

  - Dpf:
      modes:
        - type: "minimal"
        - type: "highquality"

Means you should register:

        { &controls::draft::NoiseReductionMode,
          ControlInfo(NoiseReductionModeMinimal,
                      NoiseReductionModeHighQuality)) };

so that applications can only select between modes described in the
tuning file.

>
> > > +      modes:
> > > +        - type: "minimal"
> > > +          filter:
> > > +            g:  [ 14, 10,  7,  4,  2,  1 ]
> > > +            rb: [ 14, 11,  8,  4,  2,  1 ]
> > > +          nll:
> > > +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> > > +            scale-mode: "linear"
> > > +          strength:
> > > +            r: 60
> > > +            g: 60
> > > +            b: 60
> > > +        - type: "highquality"
> > > +          filter:
> > > +            g:  [ 22, 18, 13,  8,  5,  2 ]
> > > +            rb: [ 20, 18, 16, 11,  7,  3 ]
> > > +          nll:
> > > +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
> > > +            scale-mode: "linear"
> > > +          strength:
> > > +            r: 130
> > > +            g: 130
> > > +            b: 130
> > > +        - type: "fast"
> > > +          filter:
> > > +            g:  [ 16, 12,  9,  5,  3,  1 ]
> > > +            rb: [ 16, 13, 10,  6,  4,  2 ]
> > > +          nll:
> > > +            coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]
> > > +            scale-mode: "linear"
> > > +          strength:
> > > +            r: 90
> > > +            g: 90
> > > +            b: 90
> > > +        - type: "zsl"
> > > +          filter:
> > > +            g:  [ 18, 14, 10,  6,  3,  1 ]
> > > +            rb: [ 18, 16, 13,  9,  5,  3 ]
> > > +          nll:
> > > +            coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]
> > > +            scale-mode: "linear"
> > > +          strength:
> > > +            r: 110
> > > +            g: 110
> > > +            b: 110
> > >  ...
> > > --
> > > 2.43.0
> > >
>
>
>

Patch
diff mbox series

diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml
index 0d99cb52..736b0bdb 100644
--- a/src/ipa/rkisp1/data/imx219.yaml
+++ b/src/ipa/rkisp1/data/imx219.yaml
@@ -111,4 +111,64 @@  algorithms:
                1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,
                1326, 1334, 1334,
              ]
+  - Dpf:
+      filter:
+        g:  [ 18, 13,  9,  5,  3,  1 ]
+        rb: [ 18, 15, 12,  8,  5,  2 ]
+      nll:
+        coeff: [
+          0,  14,  28,  42,  58,  76,  96, 120,
+          148, 180, 216, 256, 300, 348, 400, 456,
+          520
+        ]
+        scale-mode: "linear"
+      strength:
+        r: 80
+        g: 80
+        b: 80
+      modes:
+        - type: "minimal"
+          filter:
+            g:  [ 14, 10,  7,  4,  2,  1 ]
+            rb: [ 14, 11,  8,  4,  2,  1 ]
+          nll:
+            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
+            scale-mode: "linear"
+          strength:
+            r: 60
+            g: 60
+            b: 60
+        - type: "highquality"
+          filter:
+            g:  [ 22, 18, 13,  8,  5,  2 ]
+            rb: [ 20, 18, 16, 11,  7,  3 ]
+          nll:
+            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]
+            scale-mode: "linear"
+          strength:
+            r: 130
+            g: 130
+            b: 130
+        - type: "fast"
+          filter:
+            g:  [ 16, 12,  9,  5,  3,  1 ]
+            rb: [ 16, 13, 10,  6,  4,  2 ]
+          nll:
+            coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]
+            scale-mode: "linear"
+          strength:
+            r: 90
+            g: 90
+            b: 90
+        - type: "zsl"
+          filter:
+            g:  [ 18, 14, 10,  6,  3,  1 ]
+            rb: [ 18, 16, 13,  9,  5,  3 ]
+          nll:
+            coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]
+            scale-mode: "linear"
+          strength:
+            r: 110
+            g: 110
+            b: 110
 ...