[PATCH 3/4] ipa: raspberrypi: Add tuning file for IMX462 sensor

David Plowman david.plowman at raspberrypi.com
Fri Nov 15 16:31:50 CET 2024


Hi Geoffrey

Thanks for the reply!

On Fri, 15 Nov 2024 at 14:30, Geoffrey Van Landeghem
<geoffrey.vl at gmail.com> wrote:
>
> Hi David,
>
> Neither the IMX327, nor the IMX426 tuning files actually present good
> camera calibration. They're just a copy of IMX290 (color). I've been
> hesitating to add those copies because of that, as without them it
> would be obvious that customers need to bring their own tuning. On the
> other hand, adding them makes it more of a plug and play solution, and
> if someone is not pleased with the output they can always start tuning
> the camera themselves. In the end, as discussed in the libcamera fork
> for RPI, we decided on adding the plain copies. Unfortunately I don't
> own the equipment to perform good camera tuning, otherwise I would
> have done the job. I don't even own the IMX327, I only own the
> Inno-maker IMX426 (which is of questionable quality).
> The approach for Pi5 would be similar, in that we copy the IMX290
> tuning just to get it going, and see if someone in the future is
> interested in providing a better tune. Actually, regarding those
> copies, there is already my PR for that on the Raspberry Pi fork for
> libcamera. I hope that's good enough.

Great, thanks for the clarification. I certainly don't want to stop us
from accepting changes that make life easier for other developers, so
I think this is fine.

I wonder if we might add a comment to the file to the effect that this
is an interim tuning. That would at least clarify the status for folks
(like me) who aren't familiar with the file's provenance.
Unfortunately JSON doesn't (strictly speaking) allow comments, so
perhaps we could add

"comment": "This is an interim tuning only. Please consider doing a
more formal tuning for your application.",

just below "target". I think the parser ignores fields it's not
expecting, so this should be fine (better double-check, though!).

With that change I'd be happy to add my tag to both these files.

@Naush, would you be OK with that too?

Thanks again!
David

>
> Kind regards,
> Geoffrey Van Landeghem
>
> Op vr 15 nov 2024 om 14:47 schreef David Plowman
> <david.plowman at raspberrypi.com>:
> >
> > Hi Geoffrey
> >
> > Thanks for sending this, always pleased to get support for new
> > cameras! Just a few questions...
> >
> > There isn't much in the way of colour tuning - can you say if this is
> > perhaps a mono sensor, or is it the case that someone might need to do
> > more colour tuning in future?
> >
> > Generally we like to support the same sensors on Pi 5 as Pi 4, but I'm
> > guessing it's not possible for you to make a Pi 5 tuning as well, is
> > that right?
> >
> > Thanks
> > David
> >
> > On Wed, 13 Nov 2024 at 22:44, Geoffrey Van Landeghem
> > <geoffrey.vl at gmail.com> wrote:
> > >
> > > Signed-off-by: Geoffrey Van Landeghem <geoffrey.vl at gmail.com>
> > > ---
> > >  src/ipa/rpi/vc4/data/imx462.json | 214 +++++++++++++++++++++++++++++++
> > >  src/ipa/rpi/vc4/data/meson.build |   1 +
> > >  2 files changed, 215 insertions(+)
> > >  create mode 100644 src/ipa/rpi/vc4/data/imx462.json
> > >
> > > diff --git a/src/ipa/rpi/vc4/data/imx462.json b/src/ipa/rpi/vc4/data/imx462.json
> > > new file mode 100644
> > > index 00000000..8f41bf51
> > > --- /dev/null
> > > +++ b/src/ipa/rpi/vc4/data/imx462.json
> > > @@ -0,0 +1,214 @@
> > > +{
> > > +    "version": 2.0,
> > > +    "target": "bcm2835",
> > > +    "algorithms": [
> > > +        {
> > > +            "rpi.black_level":
> > > +            {
> > > +                "black_level": 3840
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.dpc": { }
> > > +        },
> > > +        {
> > > +            "rpi.lux":
> > > +            {
> > > +                "reference_shutter_speed": 6813,
> > > +                "reference_gain": 1.0,
> > > +                "reference_aperture": 1.0,
> > > +                "reference_lux": 890,
> > > +                "reference_Y": 12900
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.noise":
> > > +            {
> > > +                "reference_constant": 0,
> > > +                "reference_slope": 2.67
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.geq":
> > > +            {
> > > +                "offset": 187,
> > > +                "slope": 0.00842
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.sdn": { }
> > > +        },
> > > +        {
> > > +            "rpi.awb":
> > > +            {
> > > +                "bayes": 0
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.agc":
> > > +            {
> > > +                "speed": 0.2,
> > > +                "metering_modes":
> > > +                {
> > > +                    "matrix":
> > > +                    {
> > > +                        "weights":
> > > +                        [
> > > +                            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
> > > +                        ]
> > > +                    },
> > > +                    "centre-weighted":
> > > +                    {
> > > +                        "weights":
> > > +                        [
> > > +                            3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0
> > > +                        ]
> > > +                    },
> > > +                    "spot":
> > > +                    {
> > > +                        "weights":
> > > +                        [
> > > +                            2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
> > > +                        ]
> > > +                    }
> > > +                },
> > > +                "exposure_modes":
> > > +                {
> > > +                    "normal":
> > > +                    {
> > > +                        "shutter": [ 10, 30000, 60000 ],
> > > +                        "gain": [ 1.0, 2.0, 8.0 ]
> > > +                    },
> > > +                    "short":
> > > +                    {
> > > +                        "shutter": [ 10, 5000, 10000, 20000, 120000 ],
> > > +                        "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
> > > +                    },
> > > +                    "long":
> > > +                    {
> > > +                        "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
> > > +                        "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
> > > +                    }
> > > +                },
> > > +                "constraint_modes":
> > > +                {
> > > +                    "normal": [  ],
> > > +                    "highlight": [
> > > +                        {
> > > +                            "bound": "LOWER",
> > > +                            "q_lo": 0.98,
> > > +                            "q_hi": 1.0,
> > > +                            "y_target":
> > > +                            [
> > > +                                0, 0.5,
> > > +                                1000, 0.5
> > > +                            ]
> > > +                        },
> > > +                        {
> > > +                            "bound": "UPPER",
> > > +                            "q_lo": 0.98,
> > > +                            "q_hi": 1.0,
> > > +                            "y_target":
> > > +                            [
> > > +                                0, 0.8,
> > > +                                1000, 0.8
> > > +                            ]
> > > +                        }
> > > +                    ]
> > > +                },
> > > +                "y_target":
> > > +                [
> > > +                    0, 0.16,
> > > +                    1000, 0.16,
> > > +                    10000, 0.16
> > > +                ]
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.alsc":
> > > +            {
> > > +                "omega": 1.3,
> > > +                "n_iter": 100,
> > > +                "luminance_strength": 0.7,
> > > +                "luminance_lut":
> > > +                [
> > > +                    2.844, 2.349, 2.018, 1.775, 1.599, 1.466, 1.371, 1.321, 1.306, 1.316, 1.357, 1.439, 1.552, 1.705, 1.915, 2.221,
> > > +                    2.576, 2.151, 1.851, 1.639, 1.478, 1.358, 1.272, 1.231, 1.218, 1.226, 1.262, 1.335, 1.438, 1.571, 1.766, 2.067,
> > > +                    2.381, 2.005, 1.739, 1.545, 1.389, 1.278, 1.204, 1.166, 1.153, 1.161, 1.194, 1.263, 1.356, 1.489, 1.671, 1.943,
> > > +                    2.242, 1.899, 1.658, 1.481, 1.329, 1.225, 1.156, 1.113, 1.096, 1.107, 1.143, 1.201, 1.289, 1.423, 1.607, 1.861,
> > > +                    2.152, 1.831, 1.602, 1.436, 1.291, 1.193, 1.121, 1.069, 1.047, 1.062, 1.107, 1.166, 1.249, 1.384, 1.562, 1.801,
> > > +                    2.104, 1.795, 1.572, 1.407, 1.269, 1.174, 1.099, 1.041, 1.008, 1.029, 1.083, 1.146, 1.232, 1.364, 1.547, 1.766,
> > > +                    2.104, 1.796, 1.572, 1.403, 1.264, 1.171, 1.097, 1.036, 1.001, 1.025, 1.077, 1.142, 1.231, 1.363, 1.549, 1.766,
> > > +                    2.148, 1.827, 1.594, 1.413, 1.276, 1.184, 1.114, 1.062, 1.033, 1.049, 1.092, 1.153, 1.242, 1.383, 1.577, 1.795,
> > > +                    2.211, 1.881, 1.636, 1.455, 1.309, 1.214, 1.149, 1.104, 1.081, 1.089, 1.125, 1.184, 1.273, 1.423, 1.622, 1.846,
> > > +                    2.319, 1.958, 1.698, 1.516, 1.362, 1.262, 1.203, 1.156, 1.137, 1.142, 1.171, 1.229, 1.331, 1.484, 1.682, 1.933,
> > > +                    2.459, 2.072, 1.789, 1.594, 1.441, 1.331, 1.261, 1.219, 1.199, 1.205, 1.232, 1.301, 1.414, 1.571, 1.773, 2.052,
> > > +                    2.645, 2.206, 1.928, 1.728, 1.559, 1.451, 1.352, 1.301, 1.282, 1.289, 1.319, 1.395, 1.519, 1.685, 1.904, 2.227
> > > +                ],
> > > +                "sigma": 0.005,
> > > +                "sigma_Cb": 0.005
> > > +            }
> > > +        },
> > > +        {
> > > +            "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,
> > > +                    65535, 65535
> > > +                ]
> > > +            }
> > > +        },
> > > +        {
> > > +            "rpi.sharpen": { }
> > > +        },
> > > +        {
> > > +            "rpi.ccm":
> > > +            {
> > > +                "ccms": [
> > > +                    {
> > > +                        "ct": 3900,
> > > +                        "ccm":
> > > +                        [
> > > +                            1.54659, -0.17707, -0.36953,
> > > +                            -0.51471, 1.72733, -0.21262,
> > > +                            0.06667, -0.92279, 1.85612
> > > +                        ]
> > > +                    }
> > > +                ]
> > > +            }
> > > +        }
> > > +    ]
> > > +}
> > > \ No newline at end of file
> > > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build
> > > index 8c34a1a5..6b4d443f 100644
> > > --- a/src/ipa/rpi/vc4/data/meson.build
> > > +++ b/src/ipa/rpi/vc4/data/meson.build
> > > @@ -8,6 +8,7 @@ conf_files = files([
> > >      'imx296.json',
> > >      'imx296_mono.json',
> > >      'imx378.json',
> > > +    'imx462.json',
> > >      'imx477.json',
> > >      'imx477_noir.json',
> > >      'imx477_scientific.json',
> > > --
> > > 2.43.0
> > >


More information about the libcamera-devel mailing list