How to generate 16 bit linear, gamma=1, output files?

@Entropy512, Thank you. Your proposal worked. I used the RT ICC profile Creator tool with ‘ProPhoto’ primaries and ‘linear_g1.0’ tone response curve and created a new icc output profile, which I used as raw->tiff output profile in RT. I did not touch ‘abstract profile’, so this was kept at ‘none’.

An attempt to verify: RT | Color tab | Color Management | ‘no profile’, shows no change in apperance. That is good. I interpret that as a sign that I have actually created linear tiff.

I also tried and verify using GIMP. GIMP loads the file and states “RGB Color 16 bit linear integer”.

How to verify linear gamma in a file?

@jorismak, @priort, yes, I can see the color tab | abstract profile and I can select ‘linear g=1’, but what shall I then use as color tab | ‘output profile’? Aha, this was @Thanatomanic feedback. Got it. Thanks.

@snibgo, @ggbutcher, @Thanatomanic, I can try Elle Stone’s profiles. Are they better than RT ProPhoto (RTv4_Large)? Thank you for the direct link to profile.

Ignore anything I said…I was just going from the documentation which seems to pretty clearly state that the abstract profile can be used to create linear data for GIMP or photoshop but I suspect there is something in that that I don’t understand…

You have multiple options: How to extract and examine ICC profiles - RawPedia

It is easy to check with e.g. ICC Profile Inspector that all icc profiles in the RawTherapee\iccprofiles\output folder have a non-linear gamma.

The confusion with the abstract profile is that you can make image appear as if it were encoded with other primaries or another TRC, but ultimately the export profile determines that. This point in particular is the main reason why I don’t like the introduction of the abstract profile.

1 Like

I’d say better only from the standpoint of being V2. I know Elle “scooched” the primaries of her profiles a bit to accommodate a rounding/truncation error she believed exists in the math, but I really don’t think you’ll notice a material difference in hue…

Thanks for clarifying …I fully understand it as you explain it but not as to how it comes across in the documentation…so it would be passed to the screen as linear but in the end encoded as dictated by the gamma of the output profile?? How would this get linear data to GIMP and photoshop as it appears to be given as a use case for that function??

You would have to have the other software assume a different profile for such files. It’s easy to do, but very counter-intuitive imo.

Actually, the display profile will inflict it’s own departure from linearity, with its TRC. All of this filmic/log/sigmoid/basecurve shenanigans is between linear and that…

@Thanatomanic ICC profle inspector show that my new profile is ProPhoto and gamma=1 (curves are linear). However ICC profle inspector is Windows only.

Is there a Linux alternative? iccdump from Argyl does not support icc-v4.

Exiftool on icc-profile or extracted icc does not show gamma directly. Instead exiftool -icc_profile:* gives me: ‘Red Tone Reproduction Curve : (Binary data 16 bytes, use -b option to extract)’, etc.

Edit: But how to interpret -b data?

Yer not gonna like this… :crazy_face:

I dumped a RedTRC tag from the LargeRGB-elle-V2-g10.icc file like this:

exiftool -b -RedTRC LargeRGB-elle-V2-g10.icc > foo.bin

Then, inspected foo.bin with hexdump like this:

$ hexdump -C foo.bin 
00000000  63 75 72 76 00 00 00 00  00 00 00 01 01 00        |curv..........|
0000000e

Here’s the extract from the ICC spec regarding the format of the tag value:


6.5.2 curveType
The curveType contains a 4 byte count value and a one-dimensional table of 2 byte values. The byte stream is given below:

Byte Offset Offset Content Encoded as...
0-3 ‘curv' ‘(63726469h) type descriptor
4-7 reserved, must be set to 0
8-11 count value specifying number of entries that follow uInt32Number
12-end actual curve values starting with the zeroth entry and ending with the entry count-1. uInt16Number[]

Unless otherwise specified (see clauses 6.4.5: “blueTRCTag”, 6.4.16:
“grayTRCTag”, 6.4.18: “greenTRCTag”, and 6.4.37: “redTRCTag”) these 16 bit
unsigned integers in the range 0 to 65535 linearly map to curve values in the
interval [0.0, 1.0].

So, 8-11 are a 32-bit value, 1, indicates the curve is one 16-bit value in length, and 12-13 are a single u8fFixed8Number, a a fixed unsigned 2 byte/16 bit quantity which has 8 fractional bits (ha, wrap your head around that), with ‘01 00’ being the number 1.

THAT’s gamma = 1.0…

1 Like

I’m seeing even @Thanatomanic recommending Elle’s profiles over ones generated using RT’s icc profile generator

Is the icc profile generator built into RT (NOT the Abstract Profile which is not what I was suggesting) that broken?

I’ve used Elle’s code, but only because I found that modifying it it was the easiest way to generate ICC profiles with alternate/nonstandard transfer functions and gamuts. (Sony S-Log2/3, Panasonic V-Log, Sony S-Gamut, etc)

My current preferred ICC profile dumper is “iccDumpProfile.exe”. It comes with various other programs such as IccToXml and IccFromXml. I forget where I got it from. Possibly http://sampleicc.sourceforge.net/

For example:

iccDumpProfile.exe %ICCPROF%\LargeRGB-elle-V4-g10.icc ALL

One part of the text output is:

Contents of redTRCTag tag ('rTRC' = 72545243)
Type:   parametricCurveType
FunctionType: 0000h
Y = X ^ 1.0000

I have no opinion on whether Elle’s profiles are better or worse than others, in general.

@Entropy512 Elle has an explanation somewhere on her website with an ODT file showing annotated calculations. At one point, I asked @jdc (RT dev) about the differences between the transform matrices. If I recall correctly, he implied that he carried over the decimals, whereas Elle considered the encoding while maintaining her well-behaved colour profile criteria.

I said it is the simplest option, not the only better one :wink: It’s perfectly fine to generate a profile using RT’s ICC creator. It’s just a little more work.

If a user already has RT, I’d consider anything that requires doing something outside of the application (such as grabbing Elle’s profiles) to be more work…

I get what you’re saying, but I’ve found the work it took to get them to be well-worth the effort. It was those profiles that taught me the independence of their color and tone transforms; I used to wonder why folk were complaining about ‘sRGB’ in regard to tone transformation, because I had a set of sRGB profiles that included one with ‘g=1.0’, which is really an ‘identity transform’ that is, doesn’t change the data. i use them as working and output profiles (heck, sRGB-elle-V4-srgbtrc.icc is the display profile on my tablet, too lazy to make a calibrated profile…) in a variety of situations.

A very valuable asset.

ICC Profile creator, allows you to create a variety of ICC profiles on demand

You can choose :

  • Primaries : ACES AP0, ACES AP1, AdobeRGB, Prophoto, Rec2020, sRGB, Widegamut, BestRGB, BetaRGB, BruceRGB, Custom

  • Tone Response Curve : linear (gamma = 1), standard g=2.2, standard g=1.8, BT709 (gamma=2.2 slope=4.5) , sRGB (gamma=2.4 slope=12.92), Lab,…, Custom (gamma, slope)

  • Illuminant : D41, D50, D55, D60, D65, D80, stdA 2856K

  • ICC Version ; ICCv4 , ICCv2

  • Your description

  • You can save in the folder of your choice.

https://rawpedia.rawtherapee.com/ICC_Profile_Creator

@afre : I think the differences with Elle Stone’s profiles are zero or minimal, obviously for the same primaries, TRC, etc.

Jacques

1 Like

Yes, at least not enough to make much of a difference. Of course, people are free to arrive at their own conclusions. After all, it is open-source. :stuck_out_tongue:

@snibgo, thank you.

iccDumpProfile from http://sampleicc.sourceforge.net/ works perfectly and ‘ALL’ gives a clear analytical expression of the curve.

./iccDumpProfile RTv4_Large.icc ALL

displays this for the RT included RTv4_Large.icc:

Contents of redTRCTag tag ('rTRC' = 72545243)
Type:   parametricCurveType
FunctionType: 0004h
Y = 0.077393 * X + 0.0000  when (X < 0.0393)
Y = (0.9479 * X + 0.0521) ^ 2.4000 + 0.0000  when (X >= 0.0393)

and my linear ProPhoto (RTv4_Large), from RT ICC Profile Creator:

./iccDumpProfile RTv4_Large_Linear_g=1.0.icc ALL

Contents of redTRCTag tag ('rTRC' = 72545243)
Type:   parametricCurveType
FunctionType: 0000h
Y = X ^ 1.0000

@ggbutcher, than you for the explanation. It is always the best to read the specification. Now, when I know it, I can run iccDumpProfile and actually understand what it does.

1 Like

I can only add it to the input profiles can`t seem to ad it to the output profiles,
How whould i do that ?