Unable to convert colors? #412
-
BTW, Coloraide is not for the faint of heart. I managed to get to this point: rom coloraide import cat xyz_d65 = lab_D65.convert("xyz-d65").coords() xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyz_d65, method='bradford') But I can't figure how to convert xyz_d50 to Lab_d50? Lab_d50 = xyz_d50 ??? |
Beta Was this translation helpful? Give feedback.
Replies: 11 comments 20 replies
-
I think you are greatly overthinking things. ColorAide generally tries to dumb things down a lot for the average user. >>> Color("lab", [30, 26, -27]).convert('xyz-d65')
color(xyz-d65 0.08955 0.06312 0.16465 / 1) ColorAide exposes Yes, you could subclass the existing XYZ spaces and add more XYZ spaces with different illuminants, but we added the ones that the average user would need to use. |
Beta Was this translation helpful? Give feedback.
-
If it helps, each supported color space has their name mentioned in their |
Beta Was this translation helpful? Give feedback.
-
I will also state that most people will not need to use Our goal isn't to necessarily be a colour science library, which is a great library, but to appeal to people that just want to use colors. It is possible that maybe sometimes I delve a little too deep into topics in the documentation 😅. There's a lot to know about colors, so I think it is interesting to help people understand some of it, but the average user is going to just be converting, filtering, mixing, etc. We wanted to make that fairly easy to do. |
Beta Was this translation helpful? Give feedback.
-
Lastly, the documentation covers color object generally (how to create colors, convert colors, clone colors, etc.) https://facelessuser.github.io/coloraide/color/#converting. The documentation also covers color manipulation: https://facelessuser.github.io/coloraide/manipulation/. |
Beta Was this translation helpful? Give feedback.
-
Here is modified code:
from coloraide import cat
from coloraide import Color
lab_D65 = Color("lab", [30, 26, -27], illuminant="D65")
# Convert Lab (D65) to XYZ (D65)
xyz_d65 = lab_D65.convert("xyz-d65").coords()
# Apply chromatic adaptation from D65 to D50
# xyzd50 = Color('prophoto-rgb', [1, 1, 1]).convert('xyz-d50').coords()
xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyz_d65, method='bradford')
# Convert XYZ (D50) to Lab (D50)
lab_d50 = Color('xyz-d50', xyz_d50).convert('lab')
The problem I run into is that the adapted D50 XYZ values are not comparable to the adapted D50 XYZ values I get either in Excel or Matlab?
Lab
Violet 287ª
6500K
X D65
8.63
30.00
Y D65
6.24
26.49
Z D65
16.47
-27.25
Lab
Violet 287ª
D50
X D50
8.36
29.79
Y D50
6.15
23.94
Z D50
12.40
-27.40
ColorAide
XYZ
Lab
D50
9.45
30.56
D50
6.46
29.83
D50
21.88
-48.23
/ Roger
________________________________
From: Isaac Muse ***@***.***>
Sent: Monday, April 1, 2024 3:50 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Author ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
I feel I don't know enough about Object-oriented programming. So when you talk "sub-classes", even though the concept looks crystal-clear to you, I struggle...
I understand. Unfortunately, some assumptions must be made about people's understanding of the underlying language (Python in this case), but I understand that that means some users may be confused about some concepts.
But the way you have it, 1) you don't use any variable names? Which is completely alien to me? And 2) you "seem" to be creating a new instance of a variable to which you assign the 'xyz-d65' color space, and 3) in order to execute an XYZ to Lab conversion, which your last line of code does not seem to do? You've gone back to my starting Lab_D65 variable? Why? 5) I am looking for the way to convert 'xyz_d65" to Lab_d50. So 6) was it my mistake to name the result of the CAT 'xyz_d65'? When the result is actually XYZ "D50"?
Let me back up a little, I guess I'm trying to demonstrate 2 things. One, how to manually apply chromatic adaptation. I may be getting a little sloppy with my examples. The playground I link to is akin to doing things in a python terminal session. But let me be more clear with my example.
Here we are simply taking the Lab D50 color and converting it to XYZ D50. We manually apply the chromatic adaptation which requires the starting white point and the target white point (D50 and D65 respectively) and the XYZ coordinates (relative to D50) that require the chromatic adaptation. That will return XYZ coordinates, adapted to XYZ D65. We can take those coordinates and instantiate a new Color object that is using the XYZ D65 color space with those coordinates.
Manual Example<https://facelessuser.github.io/coloraide/playground/?code=from%20coloraide%20import%20Color%0Afrom%20coloraide%20import%20cat%0Alab%20%3D%20Color%28%22lab%22%2C%20%5B30%2C%2026%2C%20-27%5D%29%0Axyz_d50%20%3D%20lab.convert%28%27xyz-d50%27%29%0Awhite_point_d50%20%3D%20cat.WHITES%5B%272deg%27%5D%5B%27D50%27%5D%0Awhite_point_d65%20%3D%20cat.WHITES%5B%272deg%27%5D%5B%27D65%27%5D%0Axyz_d65_coords%20%3D%20Color.chromatic_adaptation%28white_point_d50%2C%20white_point_d65%2C%20xyz_d50.coords%28%29%29%0Axyz_d65%20%3D%20Color%28%27xyz-d65%27%2C%20xyz_d65_coords%29%0Aprint%28xyz_d65%29>
>> from coloraide import Color
>> from coloraide import cat
>> lab = Color("lab", [30, 26, -27])
>> xyz_d50 = lab.convert('xyz-d50')
>> white_point_d50 = cat.WHITES['2deg']['D50']
>> white_point_d65 = cat.WHITES['2deg']['D65']
>> xyz_d65_coords = Color.chromatic_adaptation(white_point_d50, white_point_d65, xyz_d50.coords())
>> xyz_d65 = Color('xyz-d65', xyz_d65_coords)
>> print(xyz_d65)
color(xyz-d65 0.08955 0.06312 0.16465 / 1)
ColorAide uses this internally any time a color is converted. Any conversion that requires a white point change will cause the color to be converted to XYZ (using the current white point), chromatic adaptation will then be applied so that it is in XYZ with the new white point, and then it will be converted to target color space.
As long as the the appropriate color spaces plugins are registered, the user doesn't have to think about chromatic adaptation. It is probably good to know it happens, but it will be taken care of for them. That is the second thing I was trying to demonstrate.
Automatic Example<https://facelessuser.github.io/coloraide/playground/?code=from%20coloraide%20import%20Color%0Alab%20%3D%20Color%28%22lab%22%2C%20%5B30%2C%2026%2C%20-27%5D%29%0Axyz_d65%20%3D%20lab.convert%28%27xyz-d65%27%29%0Aprint%28xyz_d65%29>.
>> from coloraide import Color
>> lab = Color("lab", [30, 26, -27])
>> xyz_d65 = lab.convert('xyz-d65')
>> print(xyz_d65)
color(xyz-d65 0.08955 0.06312 0.16465 / 1)
Here I am being more explicit.
Since chromatic adaptation happens through XYZ, XYZ is kind of the bridge color space, almost all color conversions go through XYZ. Some exceptions are things like sRGB to HSL since HSL is just a different representation of sRGB. But if we wanted to go from HSL to Lab, we would go (roughly) from HSL -> sRGB -> XYZ D65 -> XYZ D50 -> Lab.
The user doesn't need to care about all of this and can simply specify.
>> Color('hsl', [270, 1, 0.5]).convert('lab')
color(--lab 39.283 74.649 -95.545 / 1)
This "dumbs" down the entire process so the user can just specify the color and convert to whatever they want (assuming it is supported) and go. Obviously, for those who want to know the entire process, this hides a lot of that.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5E3IV7QINOKJOCUHSTY3G3CDAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4DSNZWGEZTO>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Please find attached the Excel sheet where you can verify my transformations.
Here is the python code :
from coloraide import cat
from coloraide import Color
lab_D65 = Color("lab", [30, 26, -27], illuminant="D65")
# Convert Lab (D65) to XYZ (D65)
xyz_d65 = lab_D65.convert("xyz-d65").coords()
# Apply chromatic adaptation from D65 to D50
xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyz_d65, method='bradford')
# Convert XYZ (D50) to Lab (D50)
lab_d50 = Color('xyz-d50', xyz_d50).convert('lab')
I'm sorry to put you through this mess.
I hate to think that this is most likely a problem of "misunderstanding" on my part.
/ Roger
…________________________________
From: Isaac Muse ***@***.***>
Sent: Wednesday, April 3, 2024 5:02 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
@Roger-Breton<https://github.com/Roger-Breton> Can you post your data in a more readable format? I'm just having trouble understanding what each line means. I'm sure it probably came from a spreadsheet or something, but it is a bit confusing in its current form.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5EWNNWVW4L4NLXPPQDY3RU6FAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMBSGEYTO>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Starting CIE LCh (uv) D65 value = 30 40 287ª
XYZ Source (D65)
Lab
Source LMS
Bradford Matrix Scaler
Illuminant XYZ (D65)
Violet 287ª
6500K
Rho
0.9423475
0.8961
0.2664
-0.1614
0.9504296
X D65
8.63
30.00
Gamma
1.0404467
-0.7502
1.7135
0.0367
1
Y D65
6.24
26.49
Beta
1.0895008
0.0389
-0.0685
1.0296
1.0888005
Z D65
16.47
-27.25
XYZ Destination (D50)
Lab
Destination LMS
Bradford Matrix Scaler
Illuminant XYZ (D50)
Violet 287ª
D50
Rho
0.9972185
0.8961
0.2664
-0.1614
0.9641658
X D50
8.36
29.79
Gamma
1.0204639
-0.7502
1.7135
0.0367
1
Y D50
6.15
23.94
Beta
0.8185249
0.0389
-0.0685
1.0296
0.825096
Z D50
12.40
-27.40
Ratio of Illuminants
1.0582279
0
0
ColorAide
0
0.980794
0
XYZ
Lab
0
0
0.7512844
D50
9.45
30.56
D50
6.46
29.83
Inverse of Matrix Scaler
D50
21.88
-48.23
0.9860197
-0.1469093
0.1598049
0.4318790
0.5184238
0.0492221
-0.0085203
0.0400416
0.9684881
Inverse * Ratios
1.0434336
-0.144088
0.1200589
0.4570264
0.5084669
0.0369798
-0.009016
0.0392725
0.72761
Final Bradford Matrix
1.0477857
0.0228524
-0.050086
0.029528
0.9904768
-0.017029
-0.009238
0.0150502
0.7520438
…________________________________
From: Isaac Muse ***@***.***>
Sent: Wednesday, April 3, 2024 5:20 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
Unfortunately, spreadsheets can't be attached to Github comments via email. Maybe if you can just take a screenshot and attach it directly in GitHub (or attach the spreadsheet if GitHub allows it...it may not).
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5FEOZV4473NKTLW4PTY3RXAPAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMBSGIZTS>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Try this link:
[https://res-h3.public.cdn.office.net/assets/mail/file-icon/png/xlsx_16x16.png]Bradford CAT Excel (2024 04 03 for ColorAide).xlsx<https://1drv.ms/x/s!AkD78CVR1NBqm_UZ1YxEgqbDdOlbZw?e=Sjt1LZ>
I have to say, the way I'm doing this in Excel is correct.
And I come out the same results, to a fraction of a decimal, in Matlab.
So I know my method is sound.
/ Roger
…________________________________
From: Isaac Muse ***@***.***>
Sent: Thursday, April 4, 2024 3:18 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
Apologies, but I still can't make sense of this. It just comes out as a column of data, and I think I just lose the context of what I'm looking at. If you can make the spreadsheet available via Google Drive, DropBox, or some other file sharing service, I think we'll be able to move forward. Or even post a screenshot of the data organized with better context. I just really need the data formatted so I can be sure what I'm looking at.
Did you see my earlier post as well comparing against easyRGB? There seems to be some doubt as to whether we are doing things correctly, but compared to another unbiased source, our results are comparable.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5GF4ADLUYDNIPCELLDY3WRR7AVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMJTGY4DQ>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Dear Isaac,
I believe the differences between our respective CAT adaptation stems from the fact that, in my original (naive?) chromatic_adaptation call, I specified the use of the optional 'Bradford' parameter:
xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyz_d65, method='bradford')
whereas in your code, today, you don't :
xyzd50 = Color.chromatic_adaptation(cat.WHITES['2deg']['D65'], cat.WHITES['2deg']['D50'], xyzd65.coords())
You see? And that makes for two different results.
I concede to you that, without the use of the optional 'Bradford' parameter, in your call statement, the adapted xyzD50 is correct. But why?
Regards,
/ Roger
________________________________
From: Isaac Muse ***@***.***>
Sent: Thursday, April 4, 2024 3:49 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
@Roger-Breton<https://github.com/Roger-Breton> Okay, I can now make sense of things. Your claims for ColorAide output are wrong, most likely because I suspect. I will demonstrate below.
Your results which we are comparing against. Our whitepoint will be slightly different just due to how we generate it from the chromaticity points, but I will output them for comparison. Generally our results will be comparable.
Lab
Violet 287ª 6500K
X D65 8.63 30.00
Y D65 6.24 26.49
Z D65 16.47 -27.25
Lab
Violet 287ª D50
X D50 8.36 29.79
Y D50 6.15 23.94
Z D50 12.40 -27.40
Here are ColorAides actual results. I want you to note that we scale XYZ between 0 - 1, not 0 - 100. We specifically note this here<https://facelessuser.github.io/coloraide/colors/xyz_d65/> and here<https://facelessuser.github.io/coloraide/colors/xyz_d50/>. I've also printed our white point as it does slightly vary from yours. I'm just noting it, not to say yours is wrong, but to explain why there will be some slight deviation. Generally, results will be approximately the same.
Source:
>> from coloraide import Color
>> from coloraide import util
>> from coloraide import cat
>> util.xy_to_xyz(cat.WHITES['2deg']['D65'])
[0.9504559270516716, 1.0, 1.0890577507598784]
>> util.xy_to_xyz(cat.WHITES['2deg']['D50'])
[0.9642956764295677, 1.0, 0.8251046025104602]
>> XYZ100 = [8.63, 6.24, 16.47]
>> XYZ1 = [c / 100 for c in XYZ100]
>> xyzd65 = Color('xyz-d65', XYZ1)
>> labd65 = xyzd65.convert('lab-d65')
>> xyzd50 = xyzd65.convert('xyz-d50')
>> labd50 = xyzd65.convert('lab')
>> print(xyzd65)
color(xyz-d65 0.0863 0.0624 0.1647 / 1)
>> print(xyzd50)
color(xyz-d50 0.0836 0.06155 0.12398 / 1)
>> print(labd65)
color(--lab-d65 30.01 26.412 -27.228 / 1)
>> print(labd50)
color(--lab 29.8 23.882 -27.361 / 1)
To clear up whether this works manually, see below.
>> from coloraide import Color
>> from coloraide import cat
>> XYZ100 = [8.63, 6.24, 16.47]
>> XYZ1 = [c / 100 for c in XYZ100]
>> xyzd65 = Color('xyz-d65', XYZ1)
>> xyzd50 = Color.chromatic_adaptation(cat.WHITES['2deg']['D65'], cat.WHITES['2deg']['D50'], xyzd65.coords())
>> print(xyzd50)
[0.08360155956434158, 0.061547933420552856, 0.12397546369244132]
>> Color('xyz-d50', xyzd50).convert('lab')
color(--lab 29.8 23.882 -27.361 / 1)
This should finally clear up any confusion about us performing the CAT correctly or not.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5BKIXW6C6PCM2U7MRLY3WVEZAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMJTHEZDO>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I see. So I was converting in the wrong direction? Unknowingly?
Well, it wasn't obvious which parameter was considered "Source" and which parameter was considered "Destination" from your documentation
Chromatic Adaptation - ColorAide Documentation (facelessuser.github.io)<https://facelessuser.github.io/coloraide/cat/>
These four lines of code were the only thing that there are :
>> from coloraide import cat
>> xyzd50 = Color('prophoto-rgb', [1, 1, 1]).convert('xyz-d50').coords()
>> xyzd65 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyzd50, method='bradford')
>> manual = Color('xyz-d65', xyzd65).convert('srgb')
>> auto = Color('prophoto-rgb', [1, 1, 1]).convert('srgb')
>> manual, auto
(color(srgb 1 1 1 / 1), color(srgb 1 1 1 / 1))
You tell me which parameter is which from this example, Isaac?
The documentation ought to specify which argument is Source and which is Destination, along the lines of
>> xyzd65 = Color.chromatic_adaptation(Source, Destination, xyzd50, method='bradford')
I guess I could have done a better job of inferring which is which since the variable to be converted as "xyzd50" and the output of the conversion was "xyzd65". Maybe it was late at night and I was still feebly trying to follow your "object" model?
Anyhow, case closed. I thank you for your help and patience.
/ Roger
________________________________
From: Isaac Muse ***@***.***>
Sent: Thursday, April 4, 2024 4:35 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
I believe the differences between our respective CAT adaptation stems from the fact that, in my original (naive?) chromatic_adaptation call, I specified the use of the optional 'Bradford' parameter:
No, the default IS bradford. See here<https://github.com/facelessuser/coloraide/blob/main/coloraide/util.py#L19>.
Let me demonstrate so there is no more confusion:
>> from coloraide import Color
>> from coloraide import cat
>> XYZ100 = [8.63, 6.24, 16.47]
>> XYZ1 = [c / 100 for c in XYZ100]
>> xyzd65 = Color('xyz-d65', XYZ1)
>> Color.chromatic_adaptation(cat.WHITES['2deg']['D65'], cat.WHITES['2deg']['D50'], xyzd65.coords())
[0.08360155956434158, 0.061547933420552856, 0.12397546369244132]
>> Color.chromatic_adaptation(cat.WHITES['2deg']['D65'], cat.WHITES['2deg']['D50'], xyzd65.coords(), method='bradford')
[0.08360155956434158, 0.061547933420552856, 0.12397546369244132]
Exact same results because "bradford" is the default.
So, why are you getting different results? Let's take a closer look at what you are doing.
xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyz_d65, method='bradford')
The signature of the function is:
Color.chromatic_adaptation(from_white_point, to_white_point, xyz_to_convert)
You are giving it a D65 XYZ color, but saying it is a D50 when it is not, and then converting it to D65, which is not what you want. You want this.
xyz_d50 = Color.chromatic_adaptation(cat.WHITES['2deg']["D65"], cat.WHITES['2deg']["D50"], xyz_d65, method='bradford')
Hopefully, everything is clear now. If there was some source of confusion that led you to believe that the order you were using was correct over what I did, then please do let me know and I will be happy to correct it.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5A7G3IWTP5XR52ZDTLY3W2RTAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMJUGM2DC>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Thank you for your kindness and patience.
I didn't expect you'd actually be willing to help me clear out MY confusion.
I should have picked up on the name of the variables which direction was which 🙁
/ Roger
________________________________
From: Isaac Muse ***@***.***>
Sent: Thursday, April 4, 2024 8:32 PM
To: facelessuser/coloraide ***@***.***>
Cc: Roger-Breton ***@***.***>; Mention ***@***.***>
Subject: Re: [facelessuser/coloraide] Unable to convert colors? (Discussion #412)
You tell me which parameter is which from this example, Isaac?
I can't tell if you are directing frustration at me or not. I hope not because I've attempted to add as much documentation as I can to help people, probably more than you will often find in other projects, and I've tried to be patient and help you.
To answer your question, I have an entire explanation as to what is being done leading up the the example. I specify the order before showing the example.
So, we can actually do this manually and compare the results to convert() which automatically handles chromatic adaptation. In order to do this, we need to provide the specified "white point" for the source color and the "white point" for the destination color along with the XYZ coordinates we wish to transform. ColorAide uses the Bradford CAT by default, so we will specify that CAT for consistency.
In the example we start with a xyzd50 variable and send it in as the value to convert and get a xyzd65 variable. It seems clear to me we are converting from D50 to D65. The example call to the function mirrors the description above that mentions the source white point, destination white point, and the XYZ input. The names of the input and output also match the white points being used for the source and the input
>> from coloraide import cat
>> xyzd50 = Color('prophoto-rgb', [1, 1, 1]).convert('xyz-d50').coords()
>> xyzd50
[0.9642956764295677, 1.0, 0.8251046025104602]
>> xyzd65 = Color.chromatic_adaptation(cat.WHITES['2deg']["D50"], cat.WHITES['2deg']["D65"], xyzd50, method='bradford')
>> manual = Color('xyz-d65', xyzd65).convert('srgb')
I've spent a lot of time trying to make clear what the library does, granted, what seems obvious to me may not be obvious to others. I will take all of this into consideration when tweaking the documentation in the future.
—
Reply to this email directly, view it on GitHub<#412 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AEVBK5HTJDXDDEDVNJNSEWLY3XWIFAVCNFSM6AAAAABFPRWH7KVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TAMJVGY4DQ>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
I can't tell if you are directing frustration at me or not. I hope not because I've attempted to add as much documentation as I can to help people, probably more than you will often find in other projects, and I've tried to be patient and help you.
To answer your question, I have an entire explanation as to what is being done leading up the the example. I specify the order before showing the example.