View Issue Details

IDProjectCategoryView StatusLast Update
0017061ScribusColor Managementpublic2023-12-03 23:23
Reporterpmjdebruijn Assigned Tojghali  
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Product Version1.6.0.svn 
Summary0017061: Rendering Intent Default Misleading
DescriptionCurrently Scribus has two rendering intent defaults in File - Preferences - Color Management - Document Rendering Intents:

 (1) Images (defaults to Perceptual)
 (2) Solid Colors (defaults to Relative Colorimetric)

While in principle I agree with this, there's a practical concern at play.

All public CMYK profiles I could find, only support the Colormetric intents, the Perceptual and Saturation tables are present, but linked to the Colorimetric tables. So even if the CMS is told to do Perceptual, the result will still be Colorimetric.

To be able to use a Perceptual or Saturation intent, the user has to generate their own gamut mapped (specific to a source working space profile, like sRGB), CMYK ICC profile.

Because of this, I think two changes should be seriously considered.

 (a) Have both intents default to Relative Colorimetric, given this is the actual reality almost always
 (b) Use language in the GUI, to signal Perceptual/Saturation might not always work as expected

Respective patches included:
 (a) intent-default-relative-colormetric.patch
 (b) intent-strings.patch

I realize that (b) is too late for 1.6.0, as strings have been frozen. But I hope (a) will make it into 1.6.0, and (b) will be considered for 1.6.1
TagsNo tags attached.
PatchYes

Activities

pmjdebruijn

2023-11-27 17:23

reporter  

intent-default-relative-colorimetric.patch (885 bytes)   
diff -Nurpd a/scribus/prefsmanager.cpp b/scribus/prefsmanager.cpp
--- a/scribus/prefsmanager.cpp	2023-11-27 18:02:57.000000000 +0100
+++ b/scribus/prefsmanager.cpp	2023-11-27 18:06:45.700849328 +0100
@@ -398,8 +398,10 @@ void PrefsManager::initDefaults()
 	appPrefs.colorPrefs.DCMSset.SoftProofFullOn = false;
 	appPrefs.colorPrefs.DCMSset.GamutCheck = false;
 	appPrefs.colorPrefs.DCMSset.BlackPoint = true;
+	// The vast majority of CMYK profiles only support the Relative Colorimetric table
+	// (which is duplicated into the Perceptual and Saturation tables)
 	appPrefs.colorPrefs.DCMSset.DefaultIntentColors = Intent_Relative_Colorimetric;
-	appPrefs.colorPrefs.DCMSset.DefaultIntentImages = Intent_Perceptual;
+	appPrefs.colorPrefs.DCMSset.DefaultIntentImages = Intent_Relative_Colorimetric;
 
 	appPrefs.fontPrefs.GFontSub.clear();
 	appPrefs.displayPrefs.scratch.setLeft(100);
intent-strings.patch (975 bytes)   
diff -Nurpd a/scribus/ui/prefs_colormanagement.cpp b/scribus/ui/prefs_colormanagement.cpp
--- a/scribus/ui/prefs_colormanagement.cpp	2023-11-27 18:02:56.000000000 +0100
+++ b/scribus/ui/prefs_colormanagement.cpp	2023-11-27 18:08:14.945373103 +0100
@@ -61,8 +61,10 @@ void Prefs_ColorManagement::restoreDefau
 	}
 	activateCMCheckBox->setChecked(prefsData->colorPrefs.DCMSset.CMSinUse);
 
-	std::array<QString, 4> tmp_mp = { tr("Perceptual"), tr("Relative Colorimetric"),
-	                                  tr("Saturation"), tr("Absolute Colorimetric") };
+	std::array<QString, 4> tmp_mp = { tr("Perceptual (if available)"),
+	                                  tr("Relative Colorimetric"),
+	                                  tr("Saturation (if available)"),
+	                                  tr("Absolute Colorimetric") };
 	imageRenderingIntentComboBox->clear();
 	for (uint prop = 0; prop < tmp_mp.size(); ++prop)
 		imageRenderingIntentComboBox->addItem(tmp_mp[prop]);
intent-strings.patch (975 bytes)   

jghali

2023-11-27 22:30

administrator   ~0050528

Last edited: 2023-11-27 22:33

I will neither consider (a) nor (b)

(a) I will not consider that change because that would not bring any change of result for the profiles you mentions, but could worsen results when using profiles with real perceptual/saturation intents, so that change brings no benefit.

(b) you are making fundamentally wrong assumptions about perceptual and saturation intents. These intents are vendor specific and there are very few constraints on how to generate these tables, especially in ICC v2 profiles. So while it is not optimal to link relative colorimetric intent table to perceptual/saturation tables, it's not that bad either... in ICC v2 profiles at least. So nothing prevent perceptual intent and relative colorimetric intent to be identical in ICC v2 profiles. Also despite using same tables, the CMS can have different behaviors depending on intent, especially when dealing with black point compensation.

jghali

2023-11-27 22:32

administrator   ~0050529

Last edited: 2023-11-27 22:44

>> All public CMYK profiles I could find, only support the Colormetric intents, the Perceptual and Saturation tables are present, but linked to the Colorimetric tables.

Not sure where you are getting your ICC profiles, but I have checked a few I have downloaded over past few years and all have specific perceptual intent tables, so I cannot hold that assertion as true.

pmjdebruijn

2023-11-28 17:37

reporter   ~0050532

Some clarification:

# cd-iccdump ISOcoated_v2_300_eci.icc | grep -B2 --color link
tag 07:
  sig 'A2B2' [0x41324232]
  link 'A2B0' [0x41324230]

These are actually the reverse tables (for output profiles), and it seems Saturation is linked to Perceptual (not Colorimetric), I missed this initially...

This seems like a better way to check, and the other tables contents do seem different:
for TAG in A2B0 A2B1 A2B2 B2A0 B2A1 B2A2; do iccdump -t $TAG -v3 ISOcoated_v2_300_eci.icc | md5sum; done | sort | uniq -c

I'll try to do some digging over the next days, but this seems to greatly decrease the scope of the issue.

therefore (a) probably isn't warranted

however (b) still is, as not all profiles have all tables/intents working as intended, ArgyllCMS defaults to all colorimetric unless told otherwise for example.

wrt (b), CMS behavior on LUT tables with regard to Intents really depends on those specific tables, if they have not been precomputed with a specific source gamut in mind, you will effectively only get a colorimetric transform, despite when the CMS has been told. I'm not sure why you've mentioned Blackpoint Compensation, this is mostly independent of Intent AFAIK, so it has little bearing (one way or the other) on my concerns.

Ref.: https://www.argyllcms.com/doc/colprof.html#S

jghali

2023-12-03 14:52

administrator   ~0050561

Last edited: 2023-12-03 16:45

>> however (b) still is, as not all profiles have all tables/intents working as intended, ArgyllCMS defaults to all colorimetric unless told otherwise for example.

As mentionned in my previous note, perceptual and saturation intents are not standardized and are vendor specific, so you *must not* expect anything specific from these intents. And ArgyllCMS has 100% right to use colorimetric intents for perceptual and saturation intent. However given ICC v4 constraints, I guess ArgyllCMS is limited to ICC v2 : relative colorimetric intent tables must not be black point scaled both in ICC v2 and v4 while in ICC v4 perceptual intent tables has to be black point compensated, there is a perceptual intent black point which has been explicitly defined for that matter. So in ICC v4 you basically cannot use same tables for perceptual and relative colorimetric intents. And even in ICC v2 linking perceptual intent to relative colorimetric intent tables would be considered bad behavior for reasons not even linked to the perceptual/relative intent differences.

>> I'm not sure why you've mentioned Blackpoint Compensation, this is mostly independent of Intent AFAIK, so it has little bearing (one way or the other) on my concerns.

ICC v2 does not define if data in the perceptual intent tables should be black point compensated while in ICC v4 it is mandatory. So CMS have to accommodate the fact that data in perceptual intent tables can be black point scaled or not and will usually perform an automatic black point compensation when using perceptual intent. So even if perceptual and relative colorimetric intent tables are the same, you can get a different output when using perceptual intent and relative colorimetric intent. Not everything is precomputed when creating ICC transforms, ICC profile tables are just a part of data used to compute these transforms.

>> wrt (b), CMS behavior on LUT tables with regard to Intents really depends on those specific tables, if they have not been precomputed with a specific source gamut in mind

As explained above, this is wrong, CMS behavior only partially depends on intent tables. And for the "specific source gamut", this is also wrong. For having worked on a largely distributed ICC profiler at my previous company, I can tell you it is possible to get away with this source gamut, even if this is not optimal. And the "source gamut" is anyway no excuse not to provide specific tables for perceptual/saturation intents as ICC has defined a "Perceptual Reference Medium Gamut" since years.

pmjdebruijn

2023-12-03 17:43

reporter   ~0050567

Why do you say say I'm wrong, after I've acknowledged that black point compensation affects the transform, we basically agree on this, don't we?

And with regard to the source gamut, I think we're arguing from very different perspectives. I do NOT disagree that profiles ideally should have proper Perceptual/Saturation tables. But ultimately we do not have control over this.

My suggestion to add "if available" to the perceptual/saturation intents, is that users realize that setting might not always give the result they are asking for, as most users won't known this isn't always the case. However given I was mistaken about the number of public ICCs without gamut mapped tables, this issue is less important than I initially thought it would be. So feel free to close.

Thanks for the hint about "Perceptual Reference Medium Gamut", I was not aware of this and it may turn out to be very helpful.

jghali

2023-12-03 23:22

administrator   ~0050569

Last edited: 2023-12-03 23:23

>> Why do you say say I'm wrong, after I've acknowledged that black point compensation affects the transform, we basically agree on this, don't we?

I don't think you understood what I explained. What I tried to explain is that the CMS may cause a difference of behavior between perceptual and colorimetric intent, despite perceptual and relative colorimetric intent using same tables, and in the absence of explicit request to apply black point compensation when creating color transform.

Issue History

Date Modified Username Field Change
2023-11-27 17:23 pmjdebruijn New Issue
2023-11-27 17:23 pmjdebruijn File Added: intent-default-relative-colorimetric.patch
2023-11-27 17:23 pmjdebruijn File Added: intent-strings.patch
2023-11-27 20:02 cbradney Assigned To => jghali
2023-11-27 20:02 cbradney Status new => assigned
2023-11-27 22:30 jghali Note Added: 0050528
2023-11-27 22:32 jghali Note Added: 0050529
2023-11-27 22:33 jghali Note Edited: 0050528
2023-11-27 22:44 jghali Note Edited: 0050529
2023-11-28 17:37 pmjdebruijn Note Added: 0050532
2023-12-03 14:52 jghali Note Added: 0050561
2023-12-03 15:21 jghali Note Edited: 0050561
2023-12-03 16:45 jghali Note Edited: 0050561
2023-12-03 17:43 pmjdebruijn Note Added: 0050567
2023-12-03 23:22 jghali Note Added: 0050569
2023-12-03 23:23 jghali Note Edited: 0050569