Skip to content

Conversation

@ryanobeirne
Copy link

Hi! I am working in the digital textile printing space where CMYK+N printer profiles are common (CMYK+Orange+Violet, CMYK+Red+Green+Blue, etc.). I've run into an issue where lcms fails to detect the black point for the Relative Colorimetric intent on CMYK+N ICC profiles.

For example, converting the colors RGB8(0,0,0) (black) and RGB8(36,36,36) (dark gray) from sRGB to a CMYK+3 profile using Relative+BPC should produce 2 distinct grays, but lcms outputs the same color for both samples. This is in contrast to the Adobe BPC implementation in Photoshop that does the same transform but produces 2 distinct grays.

I believe I have traced the issue to the cmsDetectBlackPoint function in cmssamp.c: it appears as though lcms currently uses the Perceptual black point for Relative+BPC transforms only on CMYK profiles. I believe the Perceptual black point should also be used for Relative+BPC transforms on CMYK+N profiles as well.

In this patch, I have extended the cmsDetectBlackPoint function to use the Perceptual black point for cmsSigCmykData color spaces AND all the cmsSigNcolorData color spaces. However, I'm not sure if all of these color spaces should be included or if any additional color spaces should be included as well.

I have tested this patch on cmsSig6-8colorData output profiles (CMYK+2..CMYK+4) and found the results to be congruent with Adobe Photoshop. I am happy to provide CMYK+N profiles for testing if it is helpful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant