[argyllcms] Re: ranges of LAB values

  • From: Chris Lilley <chris@xxxxxx>
  • To: graxx@xxxxxxxxxxxx
  • Date: Thu, 21 Apr 2022 13:55:41 -0400


On 2022-04-21 13:39, graxx@xxxxxxxxxxxx wrote:


I better go take more programming lessons because I never knew that “12.45” could be represented using an “integer” type. I completely confess my ignorance. I use “int” to hold numbers that “don’t have” decimal parts, such as 65536, and “double” to hold numbers that “do have” decimal parts such as “12.45” or “87.92”.

Sure, but numbers can be encoded.

For example encoding number*100 encodes 12.45 as the integer 1245.

Even for 8-bit Lab, the typical encoding of L is 00 maps to 0, while 255(FF) maps to 100 thus giving two and a half code points per "integer" step. This is clearly better than representing using only the integers 0 to 100 and leaving 101 to 255 unused.

The ICC 16-bit encoding of Lab for example encodes L=0.0 as 00 and L=100 as FF00 which is a scaling of 256 * 255 / 100.

I’m sorry I completely missed your point but I don’t feel offended.

/ Roger

*From:*argyllcms-bounce@xxxxxxxxxxxxx <argyllcms-bounce@xxxxxxxxxxxxx> *On Behalf Of *Chris Lilley
*Sent:* April 21, 2022 1:10 PM
*To:* argyllcms@xxxxxxxxxxxxx
*Subject:* [argyllcms] Re: ranges of LAB values

This is completely correct, except for the float part.

Using 16bits per component (uint16 for L, int16 for a and b) also preserves the fractional component.

But no-one should be representing Lab in 8bits unless they don't care about accuracy at all! Think of it this way - if values are rounded (or, worse, truncated) to 8bits there is a worst-case error of almost 1 on each of L, a and b. So a deltaE 76 of sqrt(3) = 1.7, from quantization error alone!

On 2022-04-21 09:23, graxx@xxxxxxxxxxxx wrote:

    Sylvain,

    CIE Lab is independent of any computer implementation.

    If you look at CIE Publications 15-2 which defines Colorimetry,
    you won’t find any mention of how the numbers should be
    represented inside a computer memory. CIE Lab numbers are just
    numbers and don’t need computers to exist.

    Actually, you need “floating-point” variables to correctly
    represent CIE Lab, otherwise you loose the fractional part.

    / Roger

    *From:*argyllcms-bounce@xxxxxxxxxxxxx
    <argyllcms-bounce@xxxxxxxxxxxxx>
    <mailto:argyllcms-bounce@xxxxxxxxxxxxx> *On Behalf Of *Sylvain Ard
    *Sent:* April 21, 2022 7:33 AM
    *To:* argyllcms@xxxxxxxxxxxxx
    *Subject:* [argyllcms] Re: ranges of LAB values

    I want to understand, it's all. I think you're right the good
    formula is 255*(0 to 1 value)-128 because I saw on Internet that
    unsigned bytes come from -128 to 127 and I think that CieLab is
    standard unsigned byte.

    Do you know my imagemagick commands ?

    Sylvain Ard
    0549507724
    0778380991

    sylvain.ard@xxxxxxxxx

    http://sylvain-ard.fr

    Entreprise individuelle SIRET : 80079243400022

    Appt 26 Bât A Résidence Le Patio

    83 rue de la Bugellerie

    86000 Poitiers

    Le jeu. 21 avr. 2022 à 13:29, Aaron Perelmuter
    <aaron.746@xxxxxxxxx> a écrit :

        I suppose that depends on from where one derives their
        definitions. I would generally do 256*x-128 as 0>>255 contains
        256 integers. Also, do the math and substitute either 127 or
        128 and I doubt the resulting colour will be in any way
        noticeably different.

        I am somewhat confused though, if you already know the answer
        to your question, why ask? Please don’t misunderstand what I’m
        saying, I mean, it’s better to be as specific as you possibly
        can in terms of what you’re asking. If you understand
        something to be 255*value-127, why not ask about the time you
        saw something very slightly different to that? Just makes it
        easier to give the exact answer you’re searching for is all.

        Keep the questions coming, we can all learn from them.

        On Thu, 21 Apr 2022 at 9:19 pm, Sylvain Ard
        <sylvain.ard@xxxxxxxxx> wrote:

            isn't it rather -127 - 128?

            because to match 0-1 values to near 127 values we do
            255*value-127 ?

            Sylvain Ard
            0549507724
            0778380991

            sylvain.ard@xxxxxxxxx

            http://sylvain-ard.fr

            Entreprise individuelle SIRET : 80079243400022

            Appt 26 Bât A Résidence Le Patio

            83 rue de la Bugellerie
            
<https://www.google.com/maps/search/83+rue+de+la+Bugellerie+86000+Poitiers?entry=gmail&source=g>

            86000 Poitiers
            
<https://www.google.com/maps/search/83+rue+de+la+Bugellerie+86000+Poitiers?entry=gmail&source=g>

            Le jeu. 21 avr. 2022 à 13:15, Aaron Perelmuter
            <aaron.746@xxxxxxxxx> a écrit :

                In most cases, for all intents and purposes, Lab is
                understood to be within the following ranges:
                L*0>>100;a*-128>>127;b*-128>>127

                As was mentioned in a reply to a previous list
                message, technically Lab values can and do sometimes
                go well outside of the ranges listed but in almost
                every instance, for the vast majority of people and
                use cases, Lab is understood to be within the bounds
                listed above.

                As was also mentioned in another reply to a list
                message, it certainly helps to be able to give a more
                accurate or more pertinent answer if you can state
                your reasons why you’d like to know what it is you’re
                asking about.

                I’m not 100% sure about this but ttbomk, there’s no
                such thing as a v2, v4 or any other version number for
                Lab profiles, for tiff or any other file format. Is
                there even a Lab profile anyway? What’s the exact file
                name for the Lab profiles you’re asking about?
                Finally, IT8 files consists of a great many different
                sub-types which are used for myriad purposes. Most
                commonly IT.7/3 and  IT8.7/4 are often used for
                profiling CMYK processes, IT8.7/2 (used to be) often
                used for creating scanner profiles and so on - I say
                used to be because not many people in this day and age
                are creating scanner profiles or even own/use a
                scanner. Regardless, there are several flavours of IT8
                type files but again, in almost every case the Lab
                range is as listed above.

                Best Regards,

                Aaron.

                On Thu, 21 Apr 2022 at 8:45 pm, Sylvain Ard
                <sylvain.ard@xxxxxxxxx> wrote:

                    Hi I would like to know the ranges of L,A and B
                    values in : ICC profiles v2, TIFF images with LAB
                    profile v2 and v4, IT8 CGATS files and their
                    matches because the ranges are differents.

                    Thank you

                    Best regards

                    Sylvain Ard
                    0549507724
                    0778380991

                    sylvain.ard@xxxxxxxxx

                    http://sylvain-ard.fr

                    Entreprise individuelle SIRET : 80079243400022

                    Appt 26 Bât A Résidence Le Patio

                    83 rue de la Bugellerie
                    
<https://www.google.com/maps/search/83+rue+de+la+Bugellerie+86000+Poitiers?entry=gmail&source=g>

                    86000 Poitiers
                    
<https://www.google.com/maps/search/83+rue+de+la+Bugellerie+86000+Poitiers?entry=gmail&source=g>

--
Chris Lilley
@svgeesus
Technical Director @ W3C
W3C Strategy Team, Core Web Design
W3C Architecture & Technology Team, Core Web & Media

--
Chris Lilley
@svgeesus
Technical Director @ W3C
W3C Strategy Team, Core Web Design
W3C Architecture & Technology Team, Core Web & Media

Other related posts: