/
camconst.json
3200 lines (2861 loc) · 177 KB
/
camconst.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
vim: set syntax=javascript:
DO NOT EDIT THIS FILE!
All changes made here will be lost on software update. If you want to add custom values or change existing ones, create
a "camconst.json" file next to your personal "options" file. Its values will then override and/or complete the ones of
this file.
If you add values for your own camera, consider sharing them with the community for everyone's benefit. You can do so
via our forum or GitHub page:
- https://discuss.pixls.us/c/software/rawtherapee
- https://github.com/Beep6581/RawTherapee/issues
Value priority:
1. If you set the dcraw matrix in your user camconst.json file for a camera entry which already exists in RT's file
(same camera, same model), your values will replace RT's ones.
2. If you set the black level values in your user camconst.json file for a camera entry which already exists in RT's
file, your values will replace RT's ones, even if RT's ones are more complete and/or detailed. You might want to
copy/paste RT's levels first (if provided) to your user's file and complete/modify them.
3. Same for the white levels, independent of the black levels.
This file is in JSON format and contains camera constants which RawTherapee uses when parsing raw files.
Raw files themselves unfortunately do not contain all information needed for making a raw conversion. Typically color
response information and black/white levels are missing. That's why this file is needed.
This file is read once during startup, so if the file is updated you need to restart RawTherapee in order for changes to
take effect. The file is not intended for modification by the casual user, but advanced users can add missing camera
information to this file. If you do so, please report using the links above so that we can incorporate your changes for
everyone's benefit.
RawTherapee uses dcraw as the raw format parser. dcraw contains hard-coded camera constants, but not for all cameras,
and the values are not always accurate. For example dcraw only supports one white level, while some cameras have
different white levels per channel and per ISO. If a camera is not listed in this file the constants from dcraw will be
used. If listed here this information will override the constants in dcraw (if any).
Partial information is supported. For example if the raw file itself contains a color matrix then there is no need to
enter it here. A camera whose black level is measured on special pixels in the raw file should only have white levels
here. And so forth.
Examples:
{
// Make and model separated with single space, must match make and model as provided by dcraw (case-insensitive):
"make_model": "ManufacturerA ModelB",
// Some Panasonic and Canon DSLRs (of the lower category, such as Canon 550D) exist/ under alternate naming in
// various marketplaces (EOS 550D, EOS Rebel T2i, EOS Kiss X4).
// For new models that are still not supported by the dcraw version used in current RT, we have to fill all the
// alternate names or else RT will not recognize the alternate model names.
// For models supported by dcraw, filling the alternate names is simply desired (for better user info).
// The format of multiple naming is to write all names in brackets i.e instead of
// "make_model": "Canon EOS 550D",
// type
// "make_model": [ "Canon EOS 550D", "Canon EOS Rebel T2i", "Canon EOS Kiss X4" ],
// ColorMatrix with CIE Standard Illuminant D65, in dcraw format:
"dcraw_matrix": [ 7530, -1942, -255, -4318, 11390, 3362, -926, 1694, 7649 ],
// Black level (or black offset if a base black is already extracted from Exif by dcraw, see Panasonic,
// recent Nikon). For some rare cases where dcraw detects wrong black level we need to correct it with
// absolute black i.e one that is not added up the detected. For this job we have to define "black" as
// 65535+desired_black. For example to correct a wrongly detected black level of 9 instead of the correct
// 600 we define "black": 66135, i.e. 65535+600, and white level same for all colors at all ISOs.
"ranges": { "black": 10, "white": 1000 },
// Crop away masked sensor borders, 10 pixels left, 20 pixels top, resulting image width/height 4000x3000.
// Instead of width/height you can write a negative number which specifies how much of right/bottom border
// that should be removed but keep in mind that sometimes after converting to DNG the borders are already
// cropped so the "negative number" way is not totally safe.
"raw_crop": [ 10, 20, 4000, 3000 ],
// Almost same as MaskedAreas DNG tag, used for black level measuring. Here up to two areas can be defined
// by tetrads of numbers:
"masked_areas": [ 51, 2, 3804, 156, 51, 5794, 3804, 5792 ],
// Two tetrads define two areas. The difference vs "raw_crop" is the meaning of the numbers which here are
// expressing the absolute distance (in pixels) of each side of each rectangular "masked area" from the top
// and left side of the sensor
// - the first number is the distance of the top edge from the sensor's top
// - the second is the distance of the left side from the sensor's left
// - the third is the distance of the bottom side from the sensor's top
// - the fourth is the distance of the right side from the sensor's left
// It is useful after detecting the masked areas, to not fully use these areas but leave a border of 2-4 pixels
// instead, to take care of possible light leaks from the light sensing area to the optically black (masked)
// area or sensor imperfections at the outer borders.
// list of indices of the rows with on-sensor PDAF pixels, for cameras that have such features. The indices here form a pattern that is repeated for the whole height of the sensor. The values are relative to the "pdaf_offset" value (see below)
"pdaf_pattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
// index of the first row of the PDAF pattern in the sensor (0 is the topmost row). Allowed to be negative for convenience (this means that the first repetition of the pattern doesn't start from the first row)
"pdaf_offset" : 3
},
{
"make_model": "ManufacturerA ModelB",
"dcraw_matrix": [ 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 ],
// Black and white levels per ISO per channel.
// In this example there are only two ISOs - normally the list should be more populated.
// When RawTherapee asks for black/white levels for a specific ISO the closest match is picked.
"ranges": {
"black": [
{ "iso": 100, "levels": 10 }, // here only one level, same level for all channels
{ "iso": 3200, "levels": [ 50, 60, 50 ] } // 3 levels, G2 same as G1
],
"white": [
{ "iso": 100, "levels": [ 10000, 11000, 10000, 12000 ] }, // 4 levels, G1 and G2 different
{ "iso": 3200, "levels": [ 11000, 11000, 10000, 12000 ] }
]
}
}
How to Measure White Levels:
----------------------------
dcraw provides the default values used by RawTherapee, but often provides too high white levels, and only provides a
single value regardless of color channel, ISO or aperture. If you open an image with a large clipped area and that
is rendered in a pink/magenta color rather than white it usually means that the white level constant is too high. You can
fix this by adjusting white-point correction in the Raw tab > Raw White Points, or permanently fix it by measuring and
providing a more exact white level in camconst.json so RawTherapee gets to know from start where the camera actually
clips. Providing a complete and detailed white-level profile can be a quite large and complicated effort. As an
alternative you can provide a simpler profile.We suggest one of the following alternatives in rising difficulty
(and generally diminishing return):
A) Provide a single white-level value measured on the native ISO (base ISO). For many cameras this will actually be
complete information, those that don't vary on channel, ISO or aperture.
B) Check through all ISOs and if there are differences in white level provide an array with white level per ISO.
C) In addition to ISO, check for aperture scaling and add that.
D) In addition to ISO and aperture scaling check for color channel differences and add that.
Doing A is often better than nothing, as dcraw's default is often too high.B can also be worthwhile for some cameras (or
else you'll get pink highlights for some ISOs), while C and D can generally be seen as fine-tuning.
Here follows a guide how to measure white levels (clipping levels):
Shoot with your camera into a bright light source, such as a lamp, and make sure the shutter speed is long enough to get
overexposure (we want clipping!). Preferably overexpose lightly, say 1 or 2 stops if you can. The reason for this is that
some cameras with fuzzy white levels may look less fuzzy than they actually are if over-exposure is heavy.
Use f/5.6 or smaller aperture (=larger f-number) to avoid any raw scaling the camera might have for large apertures.
Open the file in a raw analyzer such as RawDigger and check the pixel values for the clipped areas (if you are using
RawDigger, make sure you have disabled"subtract black" in preferences or else sample values can be wrong). In
this stage we always look at white level before black level subtraction! White levels can be different on color
channel (R, G1, B, G2, note the two greens, most often both green channels have the same white level though) and
vary depending on ISO setting, so if you want to provide a complete profile make one shoot for each ISO (even 1/3
steps, so yes it can be quite a lot of pictures to shoot and check).
In addition, many cameras scale the raw values for large apertures. It's generally not that important to cover this, but
if you want to extract most out of the camera you should cover this too. Then you need to shoot with a wide aperture
lens (ideally the widest available from the manufacturer) and test each aperture (1/3 steps) from the widest (say f/1.2)
until the camera stops scaling the raw values (usually f/2.8 or f/4.0). If the camera also have ISO scaling you need to
shoot at these different ISOs to detect any differences in scaling, there can be a bit of variation. If you don't have
access to the widest lens available for the system (say only an f/1.8 lens instead of an f/1.2) it can still be valuable
to have the values down to what you can provide. Brands known to have models that have aperture scaling of white levels
include Canon and Nikon. Note that if white levels are not scaled the camera may have raw scaling anyway (Sony for
example), but as such scaling will not affect raw decoding we don't need to care about that.
PROVIDE CONSERVATIVE VALUES. Most cameras have a little noise at the white level, and some can have a lot. In your raw
analyzer, move around and look at the values in the clipped areas to get a sense of the variation, and/or look at the
histogram. While it's common to with very little variation, say only +/-2 units, some can have +/-500 or more (some may
have different variation depending on ISO). There can also be camera-to-camera variation.
If the white level is set too high RawTherapee will not think the pixels are clipped and you can get discolored
highlights (usually pink), this is what we want to avoid. If white level is set too low RawTherapee will clip early, ie
you lose a little highlight detail, but the color is rendered correctly and highlight reconstruction can work properly,
so this is not as bad. This is why we want conservative values.
By conservative values we mean that if you see a white level of most often 15760 and occasionally 15759 (i.e. very small
variation of white level which is a common case), you set the white level around 50-100 14-bit units below or
10-20 12-bit units. Say at 15700 in this example, or 4080 instead of 4095 for 12-bit raws. This way we get a little margin
from noise and camera variation. Since sensor raw values are linear, you lose, for example,
log2(1-50/15760) = -0.005 stops of detail, i.e. irrelevant. Thus it is better to provide RawTherapee with knowledge
where the image clips rather than keeping that last 0.005 stop of highlight information and risking that clipping will
not be detected properly.
It is very usual for white level to be a bell distribution instead of a candle when the camera applies long exposure
noise reduction (LENR) by subtracting a black frame and/or when the system is destabilized due to temperature. Some models have
always a bell distribution at WL. If you have a fuzzy white level look at the linear histogram; you will probably see a
normal/Gaussian distribution (bell shape) noise peak at clipping and probably also a peak at a hard raw data clip level
usually at or close to a power of two - 1, such as 4095 or 16383. Then you pick a value just before the bell shape
rises, i.e. to the left of the bell meaning that you cut away the whole fuzzy noise peak. If a little of the starting edge
of the noise will be included it's not harmful, but 99% of it should be above. This would mean that it's better to
measure white level on long exposure/high temp raws but since this if difficult and time consuming we choose to measure
on normal raws and cover the abnormalities with the conservative WL values. A more detailed approach when we only have
non-LENR measures is to subtract a value according to per ISO read noise. We can find data regarding read noise (stdev
of Gaussian distribution) at http://www.photonstophotos.net/Charts/RN_ADU.htm . We find the per ISO tead_noise and
subtract from the measured value 6*read_noise. This gives confidence that 99.5% of the bell is clipped out.
If you have used Adobe's DNG Converter and analyzed it's output you may have noticed that it's very conservative
regarding white levels, i.e. it cuts away quite a lot from the top. While we also recommend to be conservative, you can
generally be a little bit less so than Adobe's DNG Converter. RawTherapee is meant to max out what you can get from your
camera, and the white levels should mirror that, within reason.
The aperture scaling feature is meant to raise the white level to not miss out on highlight detail when the camera has
scaled the raw values (and thus raised white levels). Many cameras do this, but not all, and can only do it for lenses
that report aperture to the camera (i.e. you see it in the Exif data). Providing proper aperture scaling values is a bit
more advanced task, so if you are unsure we recommend to skip that part.
Beware that the raw format may have a ceiling so that it clips scaled values, for example the Canon 5D mark II maxes out
at 16383 which happens at f/1.8 for ISOs with the white level at 15750, but for ISO160 when the white level is 12800 it
does not max out. If there is such a raw limit it must also be provided ("ranges":"white_max"). Usually you will not
need a margin on white_max as it clips there as a result of an in-camera math operation.
Note that aperture scaling can be quite small, for the 5D mark II it's only 0.2 stop down to f/1.2 and then it can be
discussed if it's worthwhile to care. The "worst" cameras scale about 0.6 stops though, and then it's more valuable to
compensate. If you skip aperture scaling RawTherapee will clip the files a little bit too early and you miss that last
fraction of highlight detail, but you get no processing problems. Setting un-conservative scale factors can on the other
hand cause a too high white level and break highlight processing, so be careful.
Scaling can vary slightly depending on ISO (if white levels vary) so make sure to provide conservative scalings so
regardless of ISO you don't get a too high white level. We recommend to keep a small margin here also white levels,
i.e. 0.5% lower or so. For example if base (not conservative!) white level is 15750 and the scaled is 16221 we have a
scaling factor of 16221/15750=1.0299 i.e. +2.9% we set the factor to 1.025 to keep a margin. The abnormal cases are
already covered by setting conservative per ISO White levels.
The scale factor you provide here is applied on the white level before black level subtraction (if any), i.e. directly on
the white level value you provide in the camconst.json file. Black level (if provided) is not scaled. Please report to
us if you come across a camera which scales black levels, then we can add that as an option. Usually the camera applies
an offset to shift back the black level to the standard level after scaling.
If RawTherapee doesn't find an entry for the aperture used in the image, it will pick the closest above, i.e. if the
apertures 1.0 and 2.0 is in the table and the image has aperture 1.2, it will pick scaling for 2.0, even if 1.0 is the
closer aperture. The reason for always checking the closest above is that we rather get a bit too low white level than
too high, as discussed before.
Some cameras have different white levels on different color channels. When this is the case the difference is often so
small so you can just provide a single value instead, i.e. a conservative value based on the lowest clipping.
What we know at the time of writing about different brands/models (not complete info):
- Canon CR2: typically same clipping per channel, but significant variations on ISO and aperture. Maxes out at 16383,
black level measured on masked black pixels, i.e. don't provide that.
- Nikon NEF: sometimes different clipping per color (most often negligible though). Will do aperture and ISO scaling,
but often to a lesser extent than Canon files, i.e. not as much to gain.
- Sony ARW2: no scaling. Generally black level around 512, and white level 16350 and to be conservative say 16300.
Note that some raw formats may go through a certain amount of pre-processing based on meta data, such as curve and
levels adjustments and various calibrations. The Phase One IIQ is one example, and this means that if you look at the
data in a raw analyzer such as RawDigger it may perform a different type of preprocessing than RawTherapee's loader
does, and you may end up providing incompatible black/white levels.
You can use RawTherapee for analysis too, it's safer as you are using it's own raw decoder but it's not as
user-friendly: enable verbose mode in options so you get output on the console. When you load a file you will see a
message of current black and white levels and if they came from dcraw or camconst.json. If you're adjusting an existing
camconst.json value you can just read what it is in the file and not need to enable verbose output.
Reset exposure sliders to neutral, and zoom in on a large clipped highlight. Move around the mouse pointer within, it
should show stable 100% on R G B. If so, the white level is not too high, it could however be too low. To test that, go
to the raw tab and adjust the "white point linear correction factor", reduce it until one of the channels is no longer
100%, and then increase in steps of 0.01 until all are 100 again. Usually you play around in the range 0.90 to 0.99, i.e.
a very small adjustment. When you've found this factor you should apply it on the old white level to find a new larger
one. As RT's "white point linear correction factor" work after black level subtraction and camconst.json want values
without it we need to do some math:
BL = black level (typically something near 0, 256, 512, 1024 or 2048 find it in the verbose output or if available in
camconst.json)
F = white point linear correction factor you just found out (typically in the range 0.90 to 0.99 if you need to
increase white level, 1.01 to 1.10 if decrease)
oldWL = old white level, found in verbose output or in camconst.json if available.
newWL = BL + (oldWL - BL) / F
Note that if black level is 0 which it is for many cameras, the formula simplifies to: new white level = oldWL / F.
Here's an example from a Canon 1000D: black level is 256, old white level is 3651, white point correction factor becomes
0.90, then new white level is 256 + (3651 - 256) / 0.9 = 4028.
If your camera have different black levels per channel use the one which yields the smallest white level (can be the
largest or smallest, test!).
This new white level you then enter in your camconst.json file. The same procedure can be used if the white level is too
high, i.e. if you see pink highlights, then increase the correction factor above 1.0 until you just start seeing stable
100% on all channels, you use the same formula to calculate the new smaller white level.
About black levels:
-------------------
Unlike for white levels it's much more common that black levels can be derived from the format. Either it's simply
0 (typical for old Nikon cameras, newer Nikons (year 2013-14) have a BL at around 150 12-bit or 600/768 14-bit ), or it
can be derived from masked pixels (typical for Canon cameras) or otherwise be extracted from some tag.
Some formats have built-in subtraction information and are pre-processed by dcraw to end up at a black level of
zero (Phase One's IIQ).
For Panasonic cameras, the black level defined in camconst.json is the black level offset, which comes from
BlackLevel3 + BlackLevel2. RawTherapee then reads the base black levels from Exif data (0x001c BlackLevelRed,
0x001d BlackLevelGreen and 0x001e BlackLevelBlue) and adds them to the offset.
In all, you typically should not care about the black level in camconst.json, any information that can be derived from
the raw file itself should not be specified in camconst.json! Sony's ARW2 is one of the few exceptions (with a single
black level around 512, or 800 for RX10/100 models), but dcraw generally has good constants for these already.
Currently we have chosen not to provide any guide how to measure black levels as we don't think it will be a common task
(it's also more difficult to do than measure white levels). If you experience a black level issue it's more likely due
to a format parsing bug which should be fixed in dcraw and/or RawTherapee's raw format parser.
How does a black level issue look? If the image has a color cast and is possibly duller than normal it's likely that
black levels are off. The color cast is typically stronger in darker colors but it can be hard to see, it's more often
experienced as a cast over the whole image.
Camera constants:
-----------------
When adding camera constants please set a quality level so we know the status for future updates
Quality A: complete information, no need to add more, to the best of our knowledge
Quality B: not complete, but very little to gain from adding more
Quality C: complementing with additional information would provide significant gain
Quality X: unknown, i.e. we know too little about the camera properties to know if we have enough info.
*/
{"camera_constants": [
{ // Quality A
"make_model": "Canon EOS 5D Mark II",
"dcraw_matrix": [ 4716,603,-830,-7799,15474,2480,-1496,1937,6651 ],
"ranges": {
// black levels are read from raw masked pixels
// white levels are same for all colors, but vary on ISO
"white": [
{ "iso": 50, "levels": 15600 }, // typical: 15760
{ "iso": 100, "levels": 15600 },
{ "iso": 125, "levels": 15600 },
{ "iso": 160, "levels": 12700 },
{ "iso": 200, "levels": 15600 },
{ "iso": 250, "levels": 15600 },
{ "iso": 320, "levels": 12700 }, // typical: 12810
{ "iso": 400, "levels": 15600 },
{ "iso": 500, "levels": 15600 },
{ "iso": 640, "levels": 12700 },
{ "iso": 800, "levels": 15600 },
{ "iso": 1000, "levels": 15600 },
{ "iso": 1250, "levels": 12700 },
{ "iso": 1600, "levels": 15600 },
{ "iso": 2000, "levels": 15600 },
{ "iso": 2500, "levels": 15600 },
{ "iso": 3200, "levels": 15600 },
{ "iso": 4000, "levels": 15600 },
{ "iso": 5000, "levels": 15600 },
{ "iso": 6400, "levels": 16200 }, // typical: 16383
{ "iso": 12800, "levels": 16200 },
{ "iso": 25600, "levels": 16200 }
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for and f/1.0 (had no lenses to test with), but the typical 15700 white level
// maxes out at "white_max" for f/1.8 and below anyway.
{ "aperture": 1.2, "scale_factor": 1.100 }, // guessed by relative 5DIII data
{ "aperture": 1.4, "scale_factor": 1.077 },
{ "aperture": 1.6, "scale_factor": 1.054 },
{ "aperture": 1.8, "scale_factor": 1.039 },
{ "aperture": 2.0, "scale_factor": 1.031 },
{ "aperture": 2.2, "scale_factor": 1.021 },
{ "aperture": 2.5, "scale_factor": 1.016 },
{ "aperture": 2.8, "scale_factor": 1.010 },
{ "aperture": 3.2, "scale_factor": 1.004 },
{ "aperture": 3.5, "scale_factor": 1.003 }
]
}
},
{ // Quality C
"make_model": "Canon EOS-1Ds",
"dcraw_matrix": [ 3925, 4060, -1739, -8973, 16552, 2545, -3287, 3945, 8243 ] // DNG
},
{ // Quality C, INTERMEDIATE ISO SAMPLES MISSING
"make_model": "Canon EOS-1D X Mark II",
"dcraw_matrix": [ 7596,-978,-967,-4808,12571,2503,-1398,2567,5752 ],
//"raw_crop": [ 192, 96, 8696, 5800 ], // Full sensor 5568x3708 top38, left72, official crop left84, top50, right5555, bottom3697, 5472X3648
//"masked_areas": [ 50, 4, 3697, 68 ], // left out 4 first columns from calculations because possibly the BL is still imbalanced there
"ranges": {
// black levels are read from raw masked pixels
// white levels are same for all colors all ISOs, but safety margin vary on ISO
"white": [
{ "iso": 50, "levels": 16350 }, // typical for all ISOs: 16383, stdev 2.25
{ "iso": 100, "levels": 16350 }, // stdev 2.25
{ "iso": [ 125, 160, 200, 250 ], "levels": 16340 }, // stdev 2.5
{ "iso": [ 320, 400, 500 ], "levels": 16330 }, // stdev 2.95
{ "iso": [ 640, 800, 1000 ], "levels": 16320 }, // stdev x, 4.0 , x
{ "iso": [ 1250, 1600, 2000 ], "levels": 16300 }, // stdev x, 6.0 , x
{ "iso": [ 2500, 3200, 4000 ], "levels": 16250 }, // STDEV x, 9.8 , x
{ "iso": [ 5000, 6400, 8000 ], "levels": 16150 }, // stdev x, 17, x
{ "iso": [ 10000, 12800, 16000 ], "levels": 16100 }, // stdev x, 34 , x
{ "iso": [ 20000, 25600, 32000 ], "levels": 16000 }, // stdev x, 68 , x
{ "iso": [ 40000, 51200, 64000 ], "levels": 15700 }, // stdev x, 125, x
{ "iso": [ 80000, 102400 ], "levels": 15100 }, // stdev x, 245
{ "iso": [ 204800 ], "levels": 14000 },
{ "iso": [ 409600 ], "levels": 13000 }
],
"white_max": 16383,
"aperture_scaling": [
// no need for aperture scaling because typical WL is 16383 at all ISOs
{ "aperture": 1.2, "scale_factor": 1.130 }, // guessed by relative 6D data
{ "aperture": 1.4, "scale_factor": 1.090 },
{ "aperture": 1.6, "scale_factor": 1.060 },
{ "aperture": 1.8, "scale_factor": 1.040 },
{ "aperture": 2.0, "scale_factor": 1.030 },
{ "aperture": 2.2, "scale_factor": 1.020 },
{ "aperture": 2.5, "scale_factor": 1.015 },
{ "aperture": 2.8, "scale_factor": 1.010 },
{ "aperture": 3.2, "scale_factor": 1.005 },
{ "aperture": 3.5, "scale_factor": 1.003 }
]
}
},
{ // Quality C, initial data by @agriggio, white frame samples provided by @noirsabb in #5862, color charts not processed yet
"make_model" : "CANON EOS-1D X MARK III",
"raw_crop": [ 72, 38, 5496, 3670 ],
"masked_areas" : [ 40, 10, 5534, 70 ],
"ranges" : { "white" : 16382 }
},
{ // Quality A
"make_model": "Canon EOS 5D Mark III",
"dcraw_matrix": [ 6722,-635,-963,-4287,12460,2028,-909,2162,5668 ],
"ranges": {
// black levels are read from raw masked pixels
// white levels are same for all colors, but vary on ISO
"white": [
{ "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 12800, 16000, 20000 ], "levels": 15180 }, // typical: 15282
{ "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 13200 }, // typical: 13306
{ "iso": [ 25600, 32000, 40000, 51200, 102400 ], "levels": 16200 }
],
"white_max": 16383,
"aperture_scaling": [
{ "aperture": 1.2, "scale_factor": 1.130 },
{ "aperture": 1.4, "scale_factor": 1.090 },
{ "aperture": 1.6, "scale_factor": 1.065 },
{ "aperture": 1.8, "scale_factor": 1.040 },
{ "aperture": 2.0, "scale_factor": 1.025 },
{ "aperture": 2.2, "scale_factor": 1.020 },
{ "aperture": 2.5, "scale_factor": 1.015 },
{ "aperture": 2.8, "scale_factor": 1.010 },
{ "aperture": 3.2, "scale_factor": 1.005 },
{ "aperture": 3.5, "scale_factor": 1.002 }
]
}
},
{ // Quality B, some intermediate ISO samples missing, LENR samples missing so White Levels not properly indicated, some aperture scaling missing
"make_model": "Canon EOS 5D Mark IV",
"global_green_equilibration" : true,
"dcraw_matrix": [ 6445,-366,-864,-4436,12204,2513,-953,2496,6348 ], // DNG v13.2
"raw_crop": [ 136, 42, 6740, 4500 ], // full size 6880x4544, official crop 148,54,6867,4533
"masked_areas": [ 54, 4, 4534, 132 ],
"ranges": {
"white": [
{ "iso": [ 100, 125, 200, 250 ], "levels": 16100 }, // nominal 16383, LENR?
{ "iso": [ 160 ], "levels": 13000 }, // nominal f8-13105
{ "iso": [ 320, 640, 1250, 2500 ], "levels": 13300 }, // G1,G2 F4.0-13422-F2.8-13562-13616
{ "iso": [ 5000, 10000, 20000 ], "levels": 13200 }, // G1,G2 F4.0-13422-F2.8-13562-13616
{ "iso": [ 400, 500, 800, 1000, 1600, 2000, 3200, 4000 ], "levels": 16100 }, // nominal 16383,
{ "iso": [ 6400, 8000, 12800, 16000, 25600, 32000 ], "levels": 16000 }, // R,G1,G2 16383, LENR?
{ "iso": [ 40000, 51200, 102400 ], "levels": 15800 } // 16383, LENR?
],
"white_max": 16383,
"aperture_scaling": [
/* need more data to properly fill all scale factors */
{ "aperture": 1.4, "scale_factor": 1.160 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.120 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.080 }, // guessed
{ "aperture": 2.0, "scale_factor": 1.050 }, // 14171/13422=1.055
{ "aperture": 2.2, "scale_factor": 1.035 }, // 13954/13422=1.039
{ "aperture": 2.5, "scale_factor": 1.025 }, // 11400/11000=1.028
{ "aperture": 2.8, "scale_factor": 1.015 }, // 13562/13422 - 13731,13688,13562
{ "aperture": 3.2, "scale_factor": 1.010 }, // guessed
{ "aperture": 3.5, "scale_factor": 1.005 } // 13508/13422
]
}
},
{ // Quality C, intermediate ISO samples missing but safely guessed, aperture scaling measures missing
"make_model": [ "Canon EOS 5DS R", "Canon EOS 5DS" ],
//"dcraw_matrix": [ 6848,-1661,-221,-3904,10931,3434,-470,1251,6039 ], // DNG_V9.0 A
"dcraw_matrix": [ 6250,-711,-808,-5153,12794,2636,-1249,2198,5610 ], // DNG_V9.0 D65
"raw_crop": [ 192, 96, 8696, 5800 ], // 800, 300, 7500, 4700 - 160,64,8730x5800 - sensor 8896x5920 top64, left160, official crop left196, top100, right 8883, bottom 5891, 8688X5792
"masked_areas": [ 100, 40, 5892, 158 ], // left out 40 first columns from calculations because possibly the BL is still imbalanced there
"ranges": {
"white": [
{ "iso": [ 50, 100 ], "levels": 14650 }, // typical 14733
{ "iso": [ 160, 320, 640, 1250, 2500, 5000 ], "levels": 15280 }, // typical 15383
{ "iso": [ 125, 200, 250, 400, 500, 800, 1000, 1600, 2000 ], "levels": 15280 }, // typical R15330-GB15383
{ "iso": [ 3200, 4000, 6400, 8000, 10000, 12800, 16000, 20000, 25600 ], "levels": 15100 } // clippings at R 15200-15300, G1,G2,B 15360-15390
],
"white_max": 16383,
"aperture_scaling": [
{ "aperture": 1.4, "scale_factor": 1.150 }, // 37/32 6-0-6-0-7-0-6-0-7-0
{ "aperture": 1.6, "scale_factor": 1.070 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.040 }, // 15501/14733=1.0521, 15352/14733=1.042 16030/15390
{ "aperture": 2.0, "scale_factor": 1.025 }, // 15129/14733=1.0268 - 15800/15383=1.027
{ "aperture": 2.2, "scale_factor": 1.013 }, // 15591/15383, 14931/14733
{ "aperture": 2.5, "scale_factor": 1.008 }, // 14857/14733
{ "aperture": 2.8, "scale_factor": 1.003 }, // 14783/14733 15435/15383
{ "aperture": 3.2, "scale_factor": 1.001 }, // 15409/15383
{ "aperture": 3.5, "scale_factor": 1.000 } // 14733/14733
]
}
},
{ // Quality A, some missing scaling factors are safely guessed - samples by sfink16 & RawConvert at RT forums
"make_model": "Canon EOS 6D",
"dcraw_matrix": [ 7034,-804,-1014,-4420,12564,2058,-851,1994,5758 ],
"ranges": {
"white": [
{ "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200 ], "levels": 15180 }, // typical 15283
{ "iso": [ 4000, 6400, 8000, 12800 ], "levels": 15100 }, // typical 15283
{ "iso": [ 16000, 25600 ], "levels": 14900 }, // typical 15283
{ "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 13100 }, // typical 13225
{ "iso": [ 5000, 10000 ], "levels": 13000 }, // typical 13225
{ "iso": [ 20000 ], "levels": 12800 }, // typical 13225
{ "iso": [ 51200, 102400 ], "levels": 15900 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.0 (had no lenses to test with), but the
// ISO 160-320... 12650 white levels maxes out at "white_max" for f/1.2 and below anyway.
{ "aperture": 1.2, "scale_factor": 1.130 }, // from histogramm 1 gap in every 7 levels
{ "aperture": 1.4, "scale_factor": 1.090 }, // histogram 3 gaps in every 32 levels
{ "aperture": 1.6, "scale_factor": 1.060 }, // 16213/15283
{ "aperture": 1.8, "scale_factor": 1.040 }, // 16004/15283
{ "aperture": 2.0, "scale_factor": 1.030 }, // 15800/15283
{ "aperture": 2.2, "scale_factor": 1.020 }, // guessed
{ "aperture": 2.5, "scale_factor": 1.015 }, // 15541/15283
{ "aperture": 2.8, "scale_factor": 1.010 }, // 15437/15283
{ "aperture": 3.2, "scale_factor": 1.005 }, // 15361/15283
{ "aperture": 3.5, "scale_factor": 1.000 } // no sample
]
}
},
{ // Quality B, some missing scaling factors are safely guessed
"make_model": "Canon EOS 6D Mark II",
"dcraw_matrix": [ 6875,-970,-932,-4691,12459,2501,-874,1953,5809 ], // DNG v_9.12 D65
"raw_crop": [ 120, 44, 6264, 4180 ], // fullraw size 6384x4224 useful 120,44,6264x4180 // TODO: See EOS RP
// "raw_crop": [ 128, 52, 6248, 4168 ], // official jpeg crop 120+12,44+12,6240x4160
"masked_areas": [ 44, 4, 4220, 116 ],
"ranges": {
"white": [
{ "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200 ], "levels": 16300 }, // typical 16383
{ "iso": [ 4000, 6400, 8000, 12800 ], "levels": 16200 }, // typical 16383
{ "iso": [ 16000, 25600 ], "levels": 16100 }, // typical 16383
{ "iso": [ 160 ], "levels": 13000 }, // typical 13044
{ "iso": [ 320, 640, 1250, 2500 ], "levels": 13250 }, // typical 13337
{ "iso": [ 5000, 10000 ], "levels": 13100 }, // typical 13367
{ "iso": [ 20000, 40000 ], "levels": 12900 }, // typical 13367
{ "iso": [ 51200, 102400 ], "levels": 15900 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.0 (had no lenses to test with), but the
// ISO 160-320... 13044 white levels maxes out at "white_max" for f/1.2 and below anyway.
{ "aperture": 1.2, "scale_factor": 1.130 }, // guessed
{ "aperture": 1.4, "scale_factor": 1.100 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.080 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.060 }, // 13890/13044=1.065 11284/10512 = 1.073
{ "aperture": 2.0, "scale_factor": 1.040 }, // 13602/13044=1.042 11151/10512 = 1.060
{ "aperture": 2.2, "scale_factor": 1.030 }, // 10982/10512=1.045
{ "aperture": 2.5, "scale_factor": 1.020 }, // 10840/10512 = 1.030
{ "aperture": 2.8, "scale_factor": 1.010 }, // 13530/13367= 1.012 - 12225/12048 = 1.015
{ "aperture": 3.2, "scale_factor": 1.005 }, // 12194/12048 = 1.012
{ "aperture": 3.5, "scale_factor": 1.000 } // 12092/12048 = 1.004
]
}
},
{ // Quality B, taken from 6D Mark II because identical sensor (different matrix)
"make_model": "Canon EOS RP",
"dcraw_matrix": [ 8608,-2097,-1178,-5425,13265,2383,-1149,2238,5680 ], // DNG v13.2
// Let dcraw handle crop, because camconst shouldn't override for different crop factors. See #6255
"masked_areas": [ 44, 4, 4220, 116 ], // Potential problem for different crop factor as well
"ranges": {
"white": [
{ "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200 ], "levels": 16300 }, // typical 16383
{ "iso": [ 4000, 6400, 8000, 12800 ], "levels": 16200 }, // typical 16383
{ "iso": [ 16000, 25600 ], "levels": 16100 }, // typical 16383
{ "iso": [ 160 ], "levels": 13000 }, // typical 13044
{ "iso": [ 320, 640, 1250, 2500 ], "levels": 13250 }, // typical 13337
{ "iso": [ 5000, 10000 ], "levels": 13100 }, // typical 13367
{ "iso": [ 20000, 40000 ], "levels": 12900 }, // typical 13367
{ "iso": [ 51200, 102400 ], "levels": 15900 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.0 (had no lenses to test with), but the
// ISO 160-320... 13044 white levels maxes out at "white_max" for f/1.2 and below anyway.
{ "aperture": 1.2, "scale_factor": 1.130 }, // guessed
{ "aperture": 1.4, "scale_factor": 1.100 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.080 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.060 }, // 13890/13044=1.065 11284/10512 = 1.073
{ "aperture": 2.0, "scale_factor": 1.040 }, // 13602/13044=1.042 11151/10512 = 1.060
{ "aperture": 2.2, "scale_factor": 1.030 }, // 10982/10512=1.045
{ "aperture": 2.5, "scale_factor": 1.020 }, // 10840/10512 = 1.030
{ "aperture": 2.8, "scale_factor": 1.010 }, // 13530/13367= 1.012 - 12225/12048 = 1.015
{ "aperture": 3.2, "scale_factor": 1.005 }, // 12194/12048 = 1.012
{ "aperture": 3.5, "scale_factor": 1.000 } // 12092/12048 = 1.004
]
}
},
{ // Quality A, ISO and aperture WL data by CharlyW at RawTherapee forums, missing samples safely guessed
"make_model": "Canon EOS 7D",
"dcraw_matrix": [ 5962,-171,-732,-4189,12307,2099,-911,1981,6304 ], // Colin Walker
//"dcraw_matrix": [ 6843,-996,-856,-3876,11761,2396,-593,1772,6198 ], // DNG v13.2
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13584
{ "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.250 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.150 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.110 }, // 15196/13584
{ "aperture": 2.0, "scale_factor": 1.080 }, // 14734/13584
{ "aperture": 2.2, "scale_factor": 1.050 }, // 14386/13584
{ "aperture": 2.5, "scale_factor": 1.040 }, // 14272/13584
{ "aperture": 2.8, "scale_factor": 1.030 }, // 14042/13584
{ "aperture": 3.2, "scale_factor": 1.015 }, // guessed
{ "aperture": 3.5, "scale_factor": 1.000 } // guessed negligible
]
}
},
{ // Quality A, f/1.6 aperture scale factor missing but safely guessed, ISO and aperture data by charlyw at RT forums
"make_model": "Canon EOS 7D Mark II",
"dcraw_matrix": [ 7268,-1082,-969,-4186,11839,2663,-825,2029,5839 ], // dng_v8.7 d65
//"dcraw_matrix": [ 6285,-147,-821,-4080,11695,2714,-1045,2459,5497 ], // DXO D50
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13500 }, // typical 13583 - LENR 13550
{ "iso": [ 160, 320, 640, 1250, 2500, 5000 ], "levels": 12500 }, // typical 12559
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000 ], "levels": 15200 }, // typical 15303 - LENR 15270,15260,15240,15220,
{ "iso": [ 6400, 8000, 10000, 12800, 16000, 20000, 25600 ], "levels": 15100 }, // typical G1,G2 15303, R,B = 15430 LENR 15200 .. 15100
{ "iso": 51200, "levels": 16300 } // typical 16383 red 16371
],
"white_max": 16383,
"aperture_scaling": [
/* no scale factors known for f/1.6, f/1.0 (had no lenses to test with) */
{ "aperture": 1.4, "scale_factor": 1.200 }, // 15100/12277 Exif
{ "aperture": 1.6, "scale_factor": 1.100 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.050 }, // 14372/13583 - 13283
{ "aperture": 2.0, "scale_factor": 1.030 }, // 14034/13583 - 12973
{ "aperture": 2.2, "scale_factor": 1.015 }, // 13808/13583 - 12766
{ "aperture": 2.5, "scale_factor": 1.007 }, // 13696/13583 - 12662
{ "aperture": 2.8, "scale_factor": 1.007 }, // 13696/13583 - 12663
{ "aperture": 3.2, "scale_factor": 1.000 }, // 13583/13583 - 12559
{ "aperture": 3.5, "scale_factor": 1.000 }
]
}
},
{ // Quality A - ISO and aperture WL data by Ilias at Avclub gr forums
"make_model": "Canon EOS 40D",
"dcraw_matrix": [ 6070,-746,-856,-7652,15365,2442,-2026,2553,7314 ], // DNG v13.2
"raw_crop": [ 30, 18, 3908, 2602 ],
"masked_areas": [ 20, 2, 2616, 20 ],
"ranges": {
"white": [
{ "iso": 100, "levels": 13700 }, // typical 13825
{ "iso": [ 125, 250, 500, 1000, 3200 ], "levels": 16280 }, // typical 16383
{ "iso": [ 160, 320, 640 ], "levels": 12600 }, // typical 12744
{ "iso": [ 200, 400 ], "levels": 16100 }, // typical 16224
{ "iso": 800, "levels": 15900 }, // gaussian histogram 15900-16224
{ "iso": 1600, "levels": 14900 }, // gaussian histogram 14900-15750
{ "iso": 1250, "levels": 11900 } // gaussian histogram 11900-12500
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
// typical 12700 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.265 }, // 16142/12744
{ "aperture": 1.6, "scale_factor": 1.145 }, // 15872/13825
{ "aperture": 1.8, "scale_factor": 1.090 }, // 15103/13825
{ "aperture": 2.0, "scale_factor": 1.035 }, // 14334/13825
{ "aperture": 2.2, "scale_factor": 1.005 }, // 13950/13825
{ "aperture": 2.5, "scale_factor": 1.000 } // 13825/13825
]
}
},
{ // Quality A, ISO and aperture WL data by Ayshih at Magic Lantern forums
"make_model": "Canon EOS 50D",
"dcraw_matrix": [ 4920,616,-593,-6494,13965,2784,-1774,3178,7004 ], // DNG v13.2
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13300 }, // typical 13432
{ "iso": [ 160, 320, 640, 1250 ], "levels": 12700 }, // typical 12790-12810
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 2500, 3200 ], "levels": 15630 }, // typical 15763-15733
{ "iso": [ 6400, 12800 ], "levels": 16200 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
{ "aperture": 1.4, "scale_factor": 1.270 },
{ "aperture": 1.6, "scale_factor": 1.150 },
{ "aperture": 1.8, "scale_factor": 1.090 },
{ "aperture": 2.0, "scale_factor": 1.040 },
{ "aperture": 2.2, "scale_factor": 1.020 },
{ "aperture": 2.5, "scale_factor": 1.010 },
{ "aperture": 2.8, "scale_factor": 1.000 },
{ "aperture": 3.2, "scale_factor": 1.000 }
]
}
},
{ // Quality A, ISO and aperture WL data copied from Shalrath's 60D data at RawTherapee forums
"make_model": "Canon EOS 60Da",
"dcraw_matrix": [ 17492,-7240,-2023,-1791,10323,1701,-186,1329,5406 ], // 60Da dng d65
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.300 }, // gaps 81of301
{ "aperture": 1.6, "scale_factor": 1.200 },
{ "aperture": 1.8, "scale_factor": 1.140 },
{ "aperture": 2.0, "scale_factor": 1.080 }, // gaps 1of11
{ "aperture": 2.2, "scale_factor": 1.060 },
{ "aperture": 2.5, "scale_factor": 1.050 },
{ "aperture": 2.8, "scale_factor": 1.030 },
{ "aperture": 3.2, "scale_factor": 1.015 },
{ "aperture": 3.5, "scale_factor": 1.000 } // no sample but it would be negligible
]
}
},
{ // Quality A, ISO and aperture WL data by Shalrath at RawTherapee forums
"make_model": "Canon EOS 60D",
"dcraw_matrix": [ 6719,-994,-925,-4408,12426,2211,-887,2129,6051 ], // Origin unknown
//"dcraw_matrix": [ 6941, -1164, -857, -3825, 11597, 2534, -416, 1540, 6039 ], // DNG v13.2
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.300 }, // gaps 81of301
{ "aperture": 1.6, "scale_factor": 1.200 },
{ "aperture": 1.8, "scale_factor": 1.140 },
{ "aperture": 2.0, "scale_factor": 1.080 }, // gaps 1of11
{ "aperture": 2.2, "scale_factor": 1.060 },
{ "aperture": 2.5, "scale_factor": 1.050 },
{ "aperture": 2.8, "scale_factor": 1.030 },
{ "aperture": 3.2, "scale_factor": 1.015 },
{ "aperture": 3.5, "scale_factor": 1.000 } // no sample but it would be negligible
]
}
},
{ // Quality B, more aperture scale factors needed
"make_model": "Canon EOS 70D",
"dcraw_matrix": [ 7034,-804,-1014,-4420,12564,2058,-851,1994,5758 ], // DNG D65
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500, 5000 ], "levels": 12450 }, // typical 12559
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 10000 ], "levels": 15200 }, // typical 15303 - ISO 8000-10000 guessed
{ "iso": [ 12800, 25600 ], "levels": 16200 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but even with the
// 12500 white levels nearly maxes out for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.240 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.160 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.110 }, // 31of35
{ "aperture": 2.0, "scale_factor": 1.060 }, // guessed
{ "aperture": 2.2, "scale_factor": 1.030 }, // guessed
{ "aperture": 2.5, "scale_factor": 1.015 }, // guessed
{ "aperture": 2.8, "scale_factor": 1.008 }, // 15432/15303
{ "aperture": 3.2, "scale_factor": 1.000 },
{ "aperture": 3.5, "scale_factor": 1.000 }
]
}
},
{ // Quality B, White Levels not properly indicated, aperture scaling..missing scaling factors are guessed
"make_model": "Canon EOS 80D",
"dcraw_matrix": [ 7457,-672,-937,-4849,12495,2643,-1213,2354,5492 ], // DNG v13.2
"raw_crop": [ 264, 34, 6024, 4022 ], // full size 6288x4056, official crop 276,46,6275,4045
"masked_areas": [ 40, 96, 4000, 260 ],
"ranges": {
"white": [
{ "iso": [ 100 ], "levels": 16100 }, // nominal 16383, LENR blue 16243
{ "iso": [ 125, 200, 250, 400 ], "levels": 16200 }, // nominal 16383, LENR blue 16243
{ "iso": [ 160 ], "levels": 13000 }, // nominal 13097,
{ "iso": [ 320, 640, 1250 ], "levels": 13250 }, // G1,G2 13415
{ "iso": [ 500, 800, 1000 ], "levels": 16150 }, // nominal 16383, LENR ISO3200 16150
{ "iso": [ 1600, 2000, 3200 ], "levels": 16100 }, // nominal 16383, LENR ISO3200 16150
{ "iso": [ 2500, 5000 ], "levels": 13150 }, // G1,G2 13415
{ "iso": [ 4000, 6400 ], "levels": 16050 }, // nominal 16383, LENR ISO6400 16050
{ "iso": [ 8000, 10000 ], "levels": 16000 }, // R,G1,G2 16383, B 16243, LENR B 16000
{ "iso": [ 12800, 16000, 25600 ], "levels": 15900 } // R,G1,G2 16383, B 16243, LENR BLUE 15750
],
"white_max": 16383,
"aperture_scaling": [
// need for more data to properly fill all scale factors
{ "aperture": 1.4, "scale_factor": 1.200 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.130 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.090 }, // 14338/13097 = 1.094
{ "aperture": 2.0, "scale_factor": 1.060 }, // 13934/13097 = 1.063
{ "aperture": 2.2, "scale_factor": 1.025 }, // 13438/13097 = 1.026
{ "aperture": 2.5, "scale_factor": 1.005 }, // 13190/13097 = 1.007
{ "aperture": 2.8, "scale_factor": 1.000 } // 13097/13097
]
}
},
{ // Quality B, aperture scaling..missing scaling factors are guessed
"make_model": [ "Canon EOS 77D", "Canon EOS 9000D" ],
"dcraw_matrix": [ 7377,-742,-998,-4235,11981,2549,-673,1918,5538 ], // DNG_V9.10.1 D65
"raw_crop": [ 264, 36, 6024, 4020 ], // full size 6288x4056, official crop 276,48,6275,4047
"masked_areas": [ 40, 96, 4000, 260 ],
"ranges": {
"white": [
{ "iso": [ 100 ], "levels": 16300 }, // nominal 16383
{ "iso": [ 125, 200, 250, 400 ], "levels": 16300 }, // nominal 16383
{ "iso": [ 160 ], "levels": 13000 }, // nominal 13109,
{ "iso": [ 320, 640, 1250 ], "levels": 13300 }, // G1,G2 13403
{ "iso": [ 500, 800, 1000 ], "levels": 16200 }, // nominal 16383
{ "iso": [ 1600, 2000, 3200 ], "levels": 16100 }, // nominal 16383
{ "iso": [ 2500, 5000 ], "levels": 13150 }, // G1,G2 13423
{ "iso": [ 4000, 6400 ], "levels": 16000 }, // nominal 16383
{ "iso": [ 8000, 10000,12800, 16000 ], "levels": 15800 }, // R,G1,G2 16383
{ "iso": [ 25600, 51200 ], "levels": 15500 } // R,G1,G2 16383
],
"white_max": 16383,
"aperture_scaling": [
// need for more data to properly fill all scale factors
{ "aperture": 1.4, "scale_factor": 1.200 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.130 }, // 15264/13423
{ "aperture": 1.8, "scale_factor": 1.090 }, // guessed
{ "aperture": 2.0, "scale_factor": 1.060 }, // guessed
{ "aperture": 2.2, "scale_factor": 1.025 }, // guessed
{ "aperture": 2.5, "scale_factor": 1.005 }, // guessed
{ "aperture": 2.8, "scale_factor": 1.000 } // guessed
]
}
},
// Canon mid-range DSLRs (Rebels)
{ // Quality C
"make_model": "Canon EOS 400D DIGITAL",
"dcraw_matrix": [ 7054, -1501, -990, -8156, 15544, 2812, -1278, 1414, 7796 ],
"ranges": {
"white": 4056
}
},
{ // Quality B, ISO and aperture WL data by ..... at RawTherapee forums, missing samples safely guessed
"make_model": [ "Canon EOS 550D", "Canon EOS Rebel T2i", "Canon EOS Kiss X4" ],
"dcraw_matrix": [ 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 ], // dcraw 550d
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13584
{ "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.250 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.150 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.110 }, // 15196/13584
{ "aperture": 2.0, "scale_factor": 1.080 }, // 14734/13584
{ "aperture": 2.2, "scale_factor": 1.050 }, // 14386/13584
{ "aperture": 2.5, "scale_factor": 1.040 }, // 14272/13584
{ "aperture": 2.8, "scale_factor": 1.030 }, // 14042/13584
{ "aperture": 3.2, "scale_factor": 1.015 }, // guessed
{ "aperture": 3.5, "scale_factor": 1.000 } // guessed negligible
]
}
},
{ // Quality B, scaling factors missing but guessed safely
"make_model": [ "Canon EOS 600D", "Canon EOS Rebel T3i", "Canon EOS Kiss X5", "Canon EOS 1200D", "Canon EOS Rebel T5", "Canon EOS Kiss X70" ],
//"dcraw_matrix": [ 13254,-6296,-1798,184,2753,90,1438,-566,1129 ], // Infrared guessed
"dcraw_matrix": [ 6461,-907,-882,-4300,12184,2378,-819,1944,5931 ], // dcp D65 colormatrix2
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 12800 ], "levels": 15200 } // typical 15303
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.290 }, // guessed from 60D data
{ "aperture": 1.6, "scale_factor": 1.190 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.140 }, // guessed
{ "aperture": 2.0, "scale_factor": 1.090 }, // 12293/11222 = 1.095
{ "aperture": 2.2, "scale_factor": 1.060 }, // 11971/11222 = 1.066
{ "aperture": 2.5, "scale_factor": 1.050 }, // guessed
{ "aperture": 2.8, "scale_factor": 1.030 }, // iso100: 14042/13584=1.0336 - iso200 15820/15303 = 1.0348
{ "aperture": 3.2, "scale_factor": 1.000 } //
]
}
},
{ // Quality A, only one scaling factor missing and guessed safely, EOS 700D not tested but available samples look same as 650D, EOS 100D shares sensor and came out the same time as the 700D
"make_model": [ "Canon EOS 650D", "Canon EOS Rebel T4i", "Canon EOS Kiss X6i", "Canon EOS 700D", "Canon EOS Rebel T5i", "Canon EOS Kiss X7i", "Canon EOS 100D", "Canon EOS Rebel SL1", "Canon EOS Kiss X7" ],
"dcraw_matrix": [ 6602,-841,-939,-4472,12458,2247,-975,2039,6148 ],
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 12550 }, // typical 12650
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000 ], "levels": 15200 }, // typical 15303
{ "iso": [ 12800, 25600 ], "levels": 16200 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
// typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway.
{ "aperture": 1.4, "scale_factor": 1.200 }, // 16332/13583
{ "aperture": 1.6, "scale_factor": 1.080 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.055 }, // 14372/13583
{ "aperture": 2.0, "scale_factor": 1.030 }, // 14034/13583
{ "aperture": 2.2, "scale_factor": 1.025 }, // 13921/13583
{ "aperture": 2.5, "scale_factor": 1.020 }, //
{ "aperture": 2.8, "scale_factor": 1.000 }, //
{ "aperture": 3.2, "scale_factor": 1.000 } //
]
}
},
{ // Quality C, aperture scale factors and intermediate ISOs missing but safely guessed
"make_model": [ "Canon EOS 750D", "Canon EOS Rebel T6i", "Canon EOS Kiss X8i", "Canon EOS 760D", "Canon EOS Rebel T6s", "Canon EOS 8000D" ],
"dcraw_matrix": [ 6362,-823,-847,-4426,12109,2616,-743,1857,5635 ], // dng_v9.0 d65
"raw_crop": [ 72, 34, 6024, 4022 ], // full size 6096x4056, official crop 84,46,6083,4045
"masked_areas": [ 40, 16, 4000, 54 ],
"ranges": {
"white": [
{ "iso": [ 100, 125 ], "levels": 13300 }, // typical 13583
{ "iso": [ 160, 320, 640, 1250, 2500, 5000 ], "levels": 12500 }, // typical 12600
{ "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000 ], "levels": 15200 }, // typical 15303
{ "iso": [ 6400, 8000, 10000, 12800, 16000, 20000 ], "levels": 15100 }, // typical 15303
{ "iso": 25600, "levels": 16300 } // typical 16383
],
"white_max": 16383,
"aperture_scaling": [
// all scale factors are guessed to be same as 7DII
{ "aperture": 1.4, "scale_factor": 1.200 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.100 }, // guessed
{ "aperture": 1.8, "scale_factor": 1.050 }, // guessed
{ "aperture": 2.0, "scale_factor": 1.030 }, // guessed
{ "aperture": 2.2, "scale_factor": 1.015 }, // guessed
{ "aperture": 2.5, "scale_factor": 1.007 }, // guessed
{ "aperture": 2.8, "scale_factor": 1.007 }, // guessed
{ "aperture": 3.2, "scale_factor": 1.000 }, // guessed
{ "aperture": 3.5, "scale_factor": 1.000 }
]
}
},
{ // Quality C, white levels and aperture scaling copied from Canon EOS77d
"make_model": [ "Canon EOS Rebel T7i", "Canon EOS 800D", "Canon EOS Kiss X9i" ],
"dcraw_matrix": [ 6969,-512,-968,-4425,12161,2553,-739,1981,5601 ], // DNG v13.2
"raw_crop": [ 264, 36, 6024, 4020 ], // full size 6288x4056, official crop 276,48,6275,4047
"masked_areas": [ 40, 96, 4000, 260 ],
"ranges": {
"white": [
{ "iso": [ 100 ], "levels": 16300 }, // nominal 16383
{ "iso": [ 125, 200, 250, 400 ], "levels": 16300 }, // nominal 16383
{ "iso": [ 160 ], "levels": 13000 }, // nominal 13109,
{ "iso": [ 320, 640, 1250 ], "levels": 13300 }, // G1,G2 13403
{ "iso": [ 500, 800, 1000 ], "levels": 16200 }, // nominal 16383
{ "iso": [ 1600, 2000, 3200 ], "levels": 16100 }, // nominal 16383
{ "iso": [ 2500, 5000 ], "levels": 13150 }, // G1,G2 13423
{ "iso": [ 4000, 6400 ], "levels": 16000 }, // nominal 16383
{ "iso": [ 8000, 10000,12800, 16000 ], "levels": 15800 }, // R,G1,G2 16383
{ "iso": [ 25600, 51200 ], "levels": 15500 } // R,G1,G2 16383
],
"white_max": 16383,
"aperture_scaling": [
// need for more data to properly fill all scale factors
{ "aperture": 1.4, "scale_factor": 1.200 }, // guessed
{ "aperture": 1.6, "scale_factor": 1.130 }, // 15264/13423
{ "aperture": 1.8, "scale_factor": 1.090 }, // guessed
{ "aperture": 2.0, "scale_factor": 1.060 }, // guessed
{ "aperture": 2.2, "scale_factor": 1.025 }, // guessed
{ "aperture": 2.5, "scale_factor": 1.005 }, // guessed
{ "aperture": 2.8, "scale_factor": 1.000 } // guessed
]