<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 16 Dec 2022 at 14:25, Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com">kieran.bingham@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Quoting Naushir Patuck via libcamera-devel (2022-12-16 13:59:03)<br>
> Add a tuning file for the IMX477 more suited to scientific applications.<br>
> The key differences from the original tuning file are:<br>
> <br>
> - Disable ALSC block completely<br>
> - Pure rec709 gamma curve, and no contrast enhance<br>
> - New CT curve and CCMs based on the illumination spectrum of a black body<br>
> radiator up to about 3600 K and the CIE illuminant D for higher color<br>
> temperatures.<br>
> <br>
> Further details on the changes can be found at:<br>
> <a href="https://forums.raspberrypi.com/viewtopic.php?t=343449" rel="noreferrer" target="_blank">https://forums.raspberrypi.com/viewtopic.php?t=343449</a><br>
> <br>
> All credit for these changes go to Dr. Rolf Henkel.<br>
<br>
Some very interesting investigations in that thread.<br>
<br>
I'm curious if we'll end up with more configurations like this for each<br>
sensor!</blockquote><div><br></div><div>I think that's entirely possible - and all part of the design with json config<br>files!<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">But I really like the graphs to present what the tuning files<br>
are doing comparitively. Much easier to grasp than a file of json<br>
data...<br>
<br>
No objections to this here but apart from admiring the graphs, I won't<br>
judge the data so:<br>
<br>
Acked-by: Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com" target="_blank">kieran.bingham@ideasonboard.com</a>><br>
<br>
<br>
My only concern/comment would be how and where would we document the<br>
differences between these tuning files? Would users just be expected to<br>
try them to see ? Or would it be clear that a 'scientific' tuning file<br>
has a specific set of properties ?<br></blockquote><div><br></div><div>At the end of the day, I think this is a choice for informed users. We provide<br>a sensible default config for visually pleasing images, but if users have a<br>specific application that requires something custom, we leave it to them to<br>switch to the appropriate tuning file that they know works for them.<br></div><div><br>Regards,</div><div>Naush</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
But any / all of that could be addressed later if needed I think.<br>
<br>
<br>
> Signed-off-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
> Signed-off-by: Rolf Henkel <<a href="mailto:cpixip@pixelcircus.com" target="_blank">cpixip@pixelcircus.com</a>><br>
> ---<br>
> .../raspberrypi/data/imx477_scientific.json | 482 ++++++++++++++++++<br>
> src/ipa/raspberrypi/data/meson.build | 1 +<br>
> 2 files changed, 483 insertions(+)<br>
> create mode 100755 src/ipa/raspberrypi/data/imx477_scientific.json<br>
> <br>
> diff --git a/src/ipa/raspberrypi/data/imx477_scientific.json b/src/ipa/raspberrypi/data/imx477_scientific.json<br>
> new file mode 100755<br>
> index 000000000000..17c4ed0a5e74<br>
> --- /dev/null<br>
> +++ b/src/ipa/raspberrypi/data/imx477_scientific.json<br>
> @@ -0,0 +1,482 @@<br>
> +{<br>
> + "version": 2.0,<br>
> + "target": "bcm2835",<br>
> + "algorithms": [<br>
> + {<br>
> + "rpi.black_level":<br>
> + {<br>
> + "black_level": 4096<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.dpc": { }<br>
> + },<br>
> + {<br>
> + "rpi.lux":<br>
> + {<br>
> + "reference_shutter_speed": 27242,<br>
> + "reference_gain": 1.0,<br>
> + "reference_aperture": 1.0,<br>
> + "reference_lux": 830,<br>
> + "reference_Y": 17755<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.noise":<br>
> + {<br>
> + "reference_constant": 0,<br>
> + "reference_slope": 2.767<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.geq":<br>
> + {<br>
> + "offset": 204,<br>
> + "slope": 0.01078<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.sdn": { }<br>
> + },<br>
> + {<br>
> + "rpi.awb":<br>
> + {<br>
> + "priors": [<br>
> + {<br>
> + "lux": 0,<br>
> + "prior":<br>
> + [<br>
> + 2000, 1.0,<br>
> + 3000, 0.0,<br>
> + 13000, 0.0<br>
> + ]<br>
> + },<br>
> + {<br>
> + "lux": 800,<br>
> + "prior":<br>
> + [<br>
> + 2000, 0.0,<br>
> + 6000, 2.0,<br>
> + 13000, 2.0<br>
> + ]<br>
> + },<br>
> + {<br>
> + "lux": 1500,<br>
> + "prior":<br>
> + [<br>
> + 2000, 0.0,<br>
> + 4000, 1.0,<br>
> + 6000, 6.0,<br>
> + 6500, 7.0,<br>
> + 7000, 1.0,<br>
> + 13000, 1.0<br>
> + ]<br>
> + }<br>
> + ],<br>
> + "modes":<br>
> + {<br>
> + "auto":<br>
> + {<br>
> + "lo": 2500,<br>
> + "hi": 8000<br>
> + },<br>
> + "incandescent":<br>
> + {<br>
> + "lo": 2500,<br>
> + "hi": 3000<br>
> + },<br>
> + "tungsten":<br>
> + {<br>
> + "lo": 3000,<br>
> + "hi": 3500<br>
> + },<br>
> + "fluorescent":<br>
> + {<br>
> + "lo": 4000,<br>
> + "hi": 4700<br>
> + },<br>
> + "indoor":<br>
> + {<br>
> + "lo": 3000,<br>
> + "hi": 5000<br>
> + },<br>
> + "daylight":<br>
> + {<br>
> + "lo": 5500,<br>
> + "hi": 6500<br>
> + },<br>
> + "cloudy":<br>
> + {<br>
> + "lo": 7000,<br>
> + "hi": 8600<br>
> + }<br>
> + },<br>
> + "bayes": 1,<br>
> + "ct_curve":<br>
> + [<br>
> + 2000.0, 0.6331025775790707, 0.27424225990946915,<br>
> + 2200.0, 0.5696117366212947, 0.3116091368689487,<br>
> + 2400.0, 0.5204264653110015, 0.34892179554105873,<br>
> + 2600.0, 0.48148675531667223, 0.38565229719076793,<br>
> + 2800.0, 0.450085403501908, 0.42145684622485047,<br>
> + 3000.0, 0.42436130159169017, 0.45611835670028816,<br>
> + 3200.0, 0.40300023695527337, 0.48950766215198593,<br>
> + 3400.0, 0.3850520052612984, 0.5215567075837261,<br>
> + 3600.0, 0.36981508088230314, 0.5522397906415475,<br>
> + 4100.0, 0.333468007836758, 0.5909770465167908,<br>
> + 4600.0, 0.31196097364221376, 0.6515706327327178,<br>
> + 5100.0, 0.2961860409294588, 0.7068178946570284,<br>
> + 5600.0, 0.2842607232745885, 0.7564837749584288,<br>
> + 6100.0, 0.2750265787051251, 0.8006183524920533,<br>
> + 6600.0, 0.2677057225584924, 0.8398879225373039,<br>
> + 7100.0, 0.2617955199757274, 0.8746456080032436,<br>
> + 7600.0, 0.25693714288250125, 0.905569559506562,<br>
> + 8100.0, 0.25287531441063316, 0.9331696750390895,<br>
> + 8600.0, 0.24946601483331993, 0.9576820904825795<br>
> + ],<br>
> + "sensitivity_r": 1.05,<br>
> + "sensitivity_b": 1.05,<br>
> + "transverse_pos": 0.0238,<br>
> + "transverse_neg": 0.04429,<br>
> + "coarse_step": 0.1<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.agc":<br>
> + {<br>
> + "metering_modes":<br>
> + {<br>
> + "centre-weighted":<br>
> + {<br>
> + "weights": [ 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0 ]<br>
> + },<br>
> + "spot":<br>
> + {<br>
> + "weights": [ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]<br>
> + },<br>
> + "matrix":<br>
> + {<br>
> + "weights": [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]<br>
> + }<br>
> + },<br>
> + "exposure_modes":<br>
> + {<br>
> + "normal":<br>
> + {<br>
> + "shutter": [ 100, 10000, 30000, 60000, 66666 ],<br>
> + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]<br>
> + },<br>
> + "short":<br>
> + {<br>
> + "shutter": [ 100, 5000, 10000, 20000, 33333 ],<br>
> + "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]<br>
> + },<br>
> + "long":<br>
> + {<br>
> + "shutter": [ 100, 10000, 30000, 60000, 120000 ],<br>
> + "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]<br>
> + }<br>
> + },<br>
> + "constraint_modes":<br>
> + {<br>
> + "normal": [<br>
> + {<br>
> + "bound": "LOWER",<br>
> + "q_lo": 0.98,<br>
> + "q_hi": 1.0,<br>
> + "y_target":<br>
> + [<br>
> + 0, 0.3,<br>
> + 1000, 0.3<br>
> + ]<br>
> + }<br>
> + ],<br>
> + "highlight": [<br>
> + {<br>
> + "bound": "LOWER",<br>
> + "q_lo": 0.98,<br>
> + "q_hi": 1.0,<br>
> + "y_target":<br>
> + [<br>
> + 0, 0.3,<br>
> + 1000, 0.3<br>
> + ]<br>
> + },<br>
> + {<br>
> + "bound": "UPPER",<br>
> + "q_lo": 0.98,<br>
> + "q_hi": 1.0,<br>
> + "y_target":<br>
> + [<br>
> + 0, 0.8,<br>
> + 1000, 0.8<br>
> + ]<br>
> + }<br>
> + ],<br>
> + "shadows": [<br>
> + {<br>
> + "bound": "LOWER",<br>
> + "q_lo": 0.0,<br>
> + "q_hi": 0.5,<br>
> + "y_target":<br>
> + [<br>
> + 0, 0.17,<br>
> + 1000, 0.17<br>
> + ]<br>
> + }<br>
> + ]<br>
> + },<br>
> + "y_target":<br>
> + [<br>
> + 0, 0.16,<br>
> + 1000, 0.165,<br>
> + 10000, 0.17<br>
> + ]<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.contrast":<br>
> + {<br>
> + "ce_enable": 0,<br>
> + "gamma_curve":<br>
> + [<br>
> + 0, 0,<br>
> + 512, 2304,<br>
> + 1024, 4608,<br>
> + 1536, 6573,<br>
> + 2048, 8401,<br>
> + 2560, 9992,<br>
> + 3072, 11418,<br>
> + 3584, 12719,<br>
> + 4096, 13922,<br>
> + 4608, 15045,<br>
> + 5120, 16103,<br>
> + 5632, 17104,<br>
> + 6144, 18056,<br>
> + 6656, 18967,<br>
> + 7168, 19839,<br>
> + 7680, 20679,<br>
> + 8192, 21488,<br>
> + 9216, 23028,<br>
> + 10240, 24477,<br>
> + 11264, 25849,<br>
> + 12288, 27154,<br>
> + 13312, 28401,<br>
> + 14336, 29597,<br>
> + 15360, 30747,<br>
> + 16384, 31856,<br>
> + 17408, 32928,<br>
> + 18432, 33966,<br>
> + 19456, 34973,<br>
> + 20480, 35952,<br>
> + 22528, 37832,<br>
> + 24576, 39621,<br>
> + 26624, 41330,<br>
> + 28672, 42969,<br>
> + 30720, 44545,<br>
> + 32768, 46065,<br>
> + 34816, 47534,<br>
> + 36864, 48956,<br>
> + 38912, 50336,<br>
> + 40960, 51677,<br>
> + 43008, 52982,<br>
> + 45056, 54253,<br>
> + 47104, 55493,<br>
> + 49152, 56704,<br>
> + 51200, 57888,<br>
> + 53248, 59046,<br>
> + 55296, 60181,<br>
> + 57344, 61292,<br>
> + 59392, 62382,<br>
> + 61440, 63452,<br>
> + 63488, 64503,<br>
> + 65535, 65535<br>
> + ]<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.ccm":<br>
> + {<br>
> + "ccms": [<br>
> + {<br>
> + "ct": 2000,<br>
> + "ccm":<br>
> + [<br>
> + 1.5813882365848004, -0.35293683714581114, -0.27378771561617715,<br>
> + -0.4347297185453639, 1.5792631087746074, -0.12102601986382337,<br>
> + 0.2322290578987574, -1.4382672640468128, 2.1386425781770755<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 2200,<br>
> + "ccm":<br>
> + [<br>
> + 1.6322048484088305, -0.45932286857238486, -0.21373542690252198,<br>
> + -0.3970719209901105, 1.5877868651467202, -0.17249380832122455,<br>
> + 0.20753774825903412, -1.2660673594740142, 2.005654261091916<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 2400,<br>
> + "ccm":<br>
> + [<br>
> + 1.6766610071470398, -0.5447101051688111, -0.16838641107407676,<br>
> + -0.3659845183388154, 1.592223692670396, -0.2127091997471162,<br>
> + 0.1833964516767549, -1.1339155942419321, 1.9089342978542396<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 2600,<br>
> + "ccm":<br>
> + [<br>
> + 1.7161984340622154, -0.6152585785678794, -0.1331100845092582,<br>
> + -0.33972082628066275, 1.5944888273736966, -0.2453979465898787,<br>
> + 0.1615577497676328, -1.0298684958833109, 1.8357854177422053<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 2800,<br>
> + "ccm":<br>
> + [<br>
> + 1.7519307259815728, -0.6748682080165339, -0.10515169074540848,<br>
> + -0.3171703484479931, 1.5955820297498486, -0.2727395854813966,<br>
> + 0.14230870739974305, -0.9460976023551511, 1.778709391659538<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 3000,<br>
> + "ccm":<br>
> + [<br>
> + 1.7846716625128374, -0.7261240476375332, -0.08274697420358428,<br>
> + -0.2975654035173307, 1.5960425637021738, -0.2961043416505157,<br>
> + 0.12546426281675097, -0.8773434727076518, 1.7330356805246685<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 3200,<br>
> + "ccm":<br>
> + [<br>
> + 1.8150085872943436, -0.7708109672515514, -0.06469468211419174,<br>
> + -0.2803468940646277, 1.596168842967451, -0.3164044170681625,<br>
> + 0.11071494533513807, -0.8199772290209191, 1.69572135046367<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 3400,<br>
> + "ccm":<br>
> + [<br>
> + 1.8433668304932087, -0.8102060605062592, -0.05013485852801454,<br>
> + -0.2650934036324084, 1.5961288492969294, -0.33427554893845535,<br>
> + 0.0977478941863518, -0.7714303112098978, 1.6647070820146963<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 3600,<br>
> + "ccm":<br>
> + [<br>
> + 1.8700575831917468, -0.8452518300291346, -0.03842644337477299,<br>
> + -0.2514794528347016, 1.5960178299141876, -0.3501774949366156,<br>
> + 0.08628520830733245, -0.729841503339915, 1.638553343939267<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 4100,<br>
> + "ccm":<br>
> + [<br>
> + 1.8988700903560716, -0.8911278803351247, -0.018848644425650693,<br>
> + -0.21487101487384094, 1.599236541382614, -0.39405450457918206,<br>
> + 0.08251488056482173, -0.7178919368326191, 1.6267009056502704<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 4600,<br>
> + "ccm":<br>
> + [<br>
> + 1.960355191764125, -0.9624344812121991, -0.0017122408632169205,<br>
> + -0.19444620905212898, 1.5978493736948447, -0.416727638296156,<br>
> + 0.06310261513271084, -0.6483790952487849, 1.5834605477213093<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 5100,<br>
> + "ccm":<br>
> + [<br>
> + 2.014680536961399, -1.0195930302148566, 0.007728256612638915,<br>
> + -0.17751999660735496, 1.5977081555831, -0.4366085498741474,<br>
> + 0.04741267583041334, -0.5950327902073489, 1.5512919847321853<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 5600,<br>
> + "ccm":<br>
> + [<br>
> + 2.062652337917251, -1.0658386679125478, 0.011886354256281267,<br>
> + -0.16319197721451495, 1.598363237584736, -0.45422061523742235,<br>
> + 0.03465810928795378, -0.5535454108047286, 1.5269025836946852<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 6100,<br>
> + "ccm":<br>
> + [<br>
> + 2.104985902038069, -1.103597868736314, 0.012503517136539277,<br>
> + -0.15090797064906178, 1.5994703078166095, -0.4698414300864995,<br>
> + 0.02421766063474242, -0.5208922818196823, 1.5081270847783788<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 6600,<br>
> + "ccm":<br>
> + [<br>
> + 2.1424988751299714, -1.134760232367728, 0.010730356010435522,<br>
> + -0.14021846798466234, 1.600822462230719, -0.48379204794526487,<br>
> + 0.015521315410496622, -0.49463630325832275, 1.4933313534840327<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 7100,<br>
> + "ccm":<br>
> + [<br>
> + 2.1758034100130925, -1.1607558481037359, 0.007452724895469076,<br>
> + -0.13085694672641826, 1.6022648614493245, -0.4962330524084075,<br>
> + 0.008226943206113427, -0.4733077192319791, 1.4815336120437468<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 7600,<br>
> + "ccm":<br>
> + [<br>
> + 2.205529206931895, -1.1826662383072108, 0.0032019529917605167,<br>
> + -0.122572009780486, 1.6037258133595753, -0.5073973734282445,<br>
> + 0.0020132587619863425, -0.4556590236414181, 1.471939788496745<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 8100,<br>
> + "ccm":<br>
> + [<br>
> + 2.232224969223067, -1.2013672897252885, -0.0016234598095482985,<br>
> + -0.11518026734442414, 1.6051544769439803, -0.5174558699422255,<br>
> + -0.0033378143542219835, -0.4408590373867774, 1.4640252230667452<br>
> + ]<br>
> + },<br>
> + {<br>
> + "ct": 8600,<br>
> + "ccm":<br>
> + [<br>
> + 2.256082295891265, -1.2173210549996634, -0.0067231350481711675,<br>
> + -0.10860272839843167, 1.6065150139140594, -0.5264728573611493,<br>
> + -0.007952618707984149, -0.4284003574050791, 1.4574646927117558<br>
> + ]<br>
> + }<br>
> + ]<br>
> + }<br>
> + },<br>
> + {<br>
> + "rpi.sharpen": { }<br>
> + },<br>
> + {<br>
> + "rpi.focus": { }<br>
> + }<br>
> + ]<br>
> +}<br>
> \ No newline at end of file<br>
> diff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/raspberrypi/data/meson.build<br>
> index 84c1dabbec9c..5565508cf602 100644<br>
> --- a/src/ipa/raspberrypi/data/meson.build<br>
> +++ b/src/ipa/raspberrypi/data/meson.build<br>
> @@ -9,6 +9,7 @@ conf_files = files([<br>
> 'imx378.json',<br>
> 'imx477.json',<br>
> 'imx477_noir.json',<br>
> + 'imx477_scientific.json',<br>
> 'imx519.json',<br>
> 'ov5647.json',<br>
> 'ov5647_noir.json',<br>
> -- <br>
> 2.25.1<br>
><br>
</blockquote></div></div>