Thread: [Lcms-user] Soft proofing problems when the destination profile supports unbounded profile conversi
An ICC-based CMM for color management
                
                Brought to you by:
                
                    mm2
                    
                
            
            
        
        
        
    | 
      
      
      From: Elle S. <ell...@ni...> - 2016-08-10 10:44:41
       | 
| Hi Marti and all,
I am unable to get useable results when using GIMP (which uses LCMS) to 
soft proof from an RGB working space profile to an output profile.
Soft proofing only provides useable visual results if the destination 
profile doesn't support unbounded ICC profile conversions (this is with 
the gamut checks disabled, as the gamut checks introduce additional issues):
      * Soft proofing to a LUT printer profile that doesn't support 
unbounded ICC profile conversions works the way I expect soft proofing 
to work: Out of gamut colors are clipped during soft proofing and so 
they display as they would be displayed if the image were actually 
converted to the destination profile.
      * Soft proofing to a matrix RGB profile with a point curve (such 
as a V2 sRGB profile) also works as expected - again the out of gamut 
colors are clipped during the soft proofing conversion.
      * But soft proofing to a matrix RGB profile that has a parametric 
TRC (such as V4 sRGB with a parametric TRC) does *not* produce the 
expected results. Instead of being clipped to the color gamut of the 
destination color space, the soft proofed colors are simply converted 
using channel values that are less than zero and/or greater than 1.0f. 
This is the case even when the image is at integer precision, and so of 
course the image colors will be clipped as soon as the actual ICC 
profile conversion is done.
       So when soft proofing to profiles that support unbounded profile 
conversions the "soft proofed" colors look exactly like they would look 
if the user hadn't activated soft proofing. So the user has no visual 
indication that colors might actually be out of gamut, which entirely 
defeats the point of soft proofing.
       Would it be possible to put in a flag for soft proofing that says 
"after transforming to the destination profile clip the channel values 
to fit within the bounded color gamut of the destination color space, 
even if the profile supports unbounded conversons"?
Or even make it the default behavior that soft proofing results are 
clipped to the bounded color gamut of the destination color space? 
Personally I can't think of a single use case for soft proofing where 
results of soft proofing shouldn't reflect the actual *bounded* color 
gamut of the destination color space.
Speaking of flags, I've tried modifying the GIMP soft proofing transform 
code to use "cmsFLAGS_NONEGATIVES". But using or not using this flag 
doesn't seem to have any effect on the soft proofing transform (though 
it definitely affects normal ICC profile conversions). Is this by 
design? Or perhaps is there an issue with the GIMP code that sets up the 
soft proofing transform?
Best regards,
Elle
-- 
http://ninedegreesbelow.com
Color management and free/libre photography
 | 
| 
      
      
      From: Tobias E. <me...@ho...> - 2016-08-10 10:56:07
       
        
          
            Attachments:
            signature.asc
          
        
       | 
| Am Mittwoch, 10. August 2016, 06:23:51 CEST schrieb Elle Stone: [...] > Would it be possible to put in a flag for soft proofing that says > "after transforming to the destination profile clip the channel values > to fit within the bounded color gamut of the destination color space, > even if the profile supports unbounded conversons"? That's exactly what I asked for a while ago. It seems that Marti isn't convinced of that idea. :-( https://sourceforge.net/p/lcms/mailman/message/35215540/ [...] > Best regards, > Elle Tobias | 
| 
      
      
      From: Elle S. <ell...@ni...> - 2016-08-10 11:49:57
       | 
| On 08/10/2016 06:55 AM, Tobias Ellinghaus wrote: > That's exactly what I asked for a while ago. It seems that Marti isn't > convinced of that idea. :-( > > https://sourceforge.net/p/lcms/mailman/message/35215540/ Hi Tobias, I was hoping maybe some additional pleading and begging might help :) . Soft proofing is critically important. But the current situation seems to be that soft proofing is simply not useable for linear gamma source profiles (gamut checks are not reliable) or for destination profiles that support unbounded conversions (visual results are misleading). I've stared long and hard at the LCMS soft proofing code to see if I can figure out how to modify LCMS directly. The "Clipper" code is easy to modify to also clip out of gamut positive values. But cmsFLAGS_NONEGATIVES doesn't affect soft proofing, and the actual LCMS soft proofing code is completely out of my league coding-wise. So I've been trying to figure out where to intervene directly in the GIMP code, but so far haven't made much progress. Best regards, Elle | 
| 
      
      
      From: Marti M. <mar...@li...> - 2016-08-11 10:30:57
       | 
| Hello Elle et al, I've been considering the case and here are some thoughts. I understand that when softproofing some "perfect" profiles would be nice to return gamut clip, no matter the profile does not apply this clip in unbounded mode. The amount of changes in lcms code to implement this is not trivial. Actually, softproofing is implemented as a multiprofile transform with a round trip of proofed profile in the middle. If the profile does not introduce any artifact, then roundtrip is same and proofing does not show any change. To implement what you ask for, I have to clip values before and after this roundtrip. There are some use cases lost if I do this change. Just imagine somebody previewing which artifacts would get if using a certain embedded profile in a floating point image file format. If the file format supports negatives and highlights, the embedded profile would have no effect, and actually this is what softproofing gives you: the right answer. After the modification you ask for, the softproofing will return a gamut clip that the file format will not suffer. Of course this may be just a corner case, but this is just a sample. Anybody else on that? I would like to know what lcms users think and eventually modify the behavior for next release. Best regards, Marti Maria The LittleCMS project http://www.littlecms.com -----Original Message----- From: Elle Stone [mailto:ell...@ni...] Sent: miércoles, 10 de agosto de 2016 12:24 To: Lcms Liste <lcm...@li...> Subject: [Lcms-user] Soft proofing problems when the destination profile supports unbounded profile conversions Hi Marti and all, I am unable to get useable results when using GIMP (which uses LCMS) to soft proof from an RGB working space profile to an output profile. Soft proofing only provides useable visual results if the destination profile doesn't support unbounded ICC profile conversions (this is with the gamut checks disabled, as the gamut checks introduce additional issues): * Soft proofing to a LUT printer profile that doesn't support unbounded ICC profile conversions works the way I expect soft proofing to work: Out of gamut colors are clipped during soft proofing and so they display as they would be displayed if the image were actually converted to the destination profile. * Soft proofing to a matrix RGB profile with a point curve (such as a V2 sRGB profile) also works as expected - again the out of gamut colors are clipped during the soft proofing conversion. * But soft proofing to a matrix RGB profile that has a parametric TRC (such as V4 sRGB with a parametric TRC) does *not* produce the expected results. Instead of being clipped to the color gamut of the destination color space, the soft proofed colors are simply converted using channel values that are less than zero and/or greater than 1.0f. This is the case even when the image is at integer precision, and so of course the image colors will be clipped as soon as the actual ICC profile conversion is done. So when soft proofing to profiles that support unbounded profile conversions the "soft proofed" colors look exactly like they would look if the user hadn't activated soft proofing. So the user has no visual indication that colors might actually be out of gamut, which entirely defeats the point of soft proofing. Would it be possible to put in a flag for soft proofing that says "after transforming to the destination profile clip the channel values to fit within the bounded color gamut of the destination color space, even if the profile supports unbounded conversons"? Or even make it the default behavior that soft proofing results are clipped to the bounded color gamut of the destination color space? Personally I can't think of a single use case for soft proofing where results of soft proofing shouldn't reflect the actual *bounded* color gamut of the destination color space. Speaking of flags, I've tried modifying the GIMP soft proofing transform code to use "cmsFLAGS_NONEGATIVES". But using or not using this flag doesn't seem to have any effect on the soft proofing transform (though it definitely affects normal ICC profile conversions). Is this by design? Or perhaps is there an issue with the GIMP code that sets up the soft proofing transform? Best regards, Elle -- http://ninedegreesbelow.com Color management and free/libre photography ---------------------------------------------------------------------------- -- What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user | 
| 
      
      
      From: Elle S. <ell...@ni...> - 2016-08-11 19:30:39
       | 
| On 08/11/2016 06:31 AM, Marti Maria wrote: > > Hello Elle et al, > > I've been considering the case and here are some thoughts. > > I understand that when softproofing some "perfect" profiles would be nice > to return gamut clip, no matter the profile does not apply this clip in > unbounded mode. > > The amount of changes in lcms code to implement this is not trivial. > Actually, softproofing is implemented as a multiprofile transform with a > round trip of proofed profile in the middle. If the profile does not > introduce any artifact, then roundtrip is same and proofing does not show > any change. To implement what you ask for, I have to clip values before and > after this roundtrip. > There are some use cases lost if I do this change. Just imagine somebody > previewing which artifacts would get if using a certain embedded profile in > a floating point image file format. If the file format supports negatives > and highlights, the embedded profile would have no effect, and actually this > is what softproofing gives you: the right answer. After the modification you > ask for, the softproofing will return a gamut clip that the file format will > not suffer. Of course this may be just a corner case, but this is just a > sample. > > Anybody else on that? I would like to know what lcms users think and > eventually modify the behavior for next release. Hi Marti, Thank you! very much! for considering the use case of soft proofing to a profile that supports unbounded conversions, and having the soft proofed channel values be clipped to show what the image will look like at integer precision. Given the use case you mention of converting to floating point where the user really does want to see the unclipped results, perhaps a flag to clip negative channel values (that could be used when soft proofing), and another flag to clip channel values >1.0? This would cover three different use cases: 1. the user doesn't want to clip; 2. the user only wants to clip negative channel values because the goal is to convert to a floating point file format that supports channel values > 1.0f but not negative channel values; 3. the user wants to convert to integer precision for output for printing or display on the web. Best regards, Elle | 
| 
      
      
      From: Graeme G. <gr...@ar...> - 2016-08-12 00:22:51
       | 
| Marti Maria wrote: > Anybody else on that? I would like to know what lcms users think and > eventually modify the behavior for next release. Hi Marti, don't you just have to introduce a range model of the media being proofed ? For (say) printed media, the corresponding model would clip the CMYK value to the range 0.0 - 1.0. For some other media (i.e. your hypothetical file format), the appropriate range would be enforced. Bonus points for the range model emitting a meta-channel flagging out of gamut values. Cheers, Graeme. | 
| 
      
      
      From: Marti M. <mar...@li...> - 2016-08-17 11:32:45
       | 
| > don't you just have to introduce a range model of the media being proofed ? Hi Graeme, neat idea. And while I was trying to implement that, I found a solution that seems simpler to me. What about a function like that: cmsBool cmsAllowUnboundedMode(cmsHPROFILE hProfile, cmsBool on) So, the user could turn on/off the unbounded processing per-profile basis. Then, soft proofing would always turn off unbounded mode of proofed profile. if you want to gamut check in unbounded mode, you could still roundtrip the profile by using multiprofile transforms. Doing that means a change on the behavior of standard softproofing, but this is just what we intend for, right? and the CMM grows in one interesting feature. Thoughts? Marti Maria The LittleCMS project http://www.littlecms.com -----Original Message----- From: Graeme Gill [mailto:gr...@ar...] Sent: viernes, 12 de agosto de 2016 2:23 To: LCMS mailing list <lcm...@li...> Subject: Re: [Lcms-user] Soft proofing problems when the destination profile supports unbounded profile conversions Marti Maria wrote: > Anybody else on that? I would like to know what lcms users think and > eventually modify the behavior for next release. Hi Marti, don't you just have to introduce a range model of the media being proofed ? For (say) printed media, the corresponding model would clip the CMYK value to the range 0.0 - 1.0. For some other media (i.e. your hypothetical file format), the appropriate range would be enforced. Bonus points for the range model emitting a meta-channel flagging out of gamut values. Cheers, Graeme. ---------------------------------------------------------------------------- -- What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user | 
| 
      
      
      From: Tobias E. <me...@ho...> - 2016-08-17 15:05:17
       
        
          
            Attachments:
            signature.asc
          
        
       | 
| Am Mittwoch, 17. August 2016, 13:32:51 CEST schrieb Marti Maria: > > don't you just have to introduce a range model of the media being proofed > > ? > > Hi Graeme, neat idea. And while I was trying to implement that, I found a > solution that seems simpler to me. > > What about a function like that: > > cmsBool cmsAllowUnboundedMode(cmsHPROFILE hProfile, cmsBool on) So that setting would become part of the profile instead of the transform? I would prefer the latter as I tend to keep profiles around in memory and using them once for softproofing would taint them for other uses with a system as proposed. > So, the user could turn on/off the unbounded processing per-profile basis. > Then, soft proofing would always turn off unbounded mode of proofed profile. > if you want to gamut check in unbounded mode, you could still roundtrip the > profile by using multiprofile transforms. > > Doing that means a change on the behavior of standard softproofing, but this > is just what we intend for, right? and the CMM grows in one interesting > feature. > > Thoughts? > > Marti Maria > The LittleCMS project > http://www.littlecms.com Tobias [...] |