我需要将CMYK图像转换为灰度CMYK图像。起初我以为我可以使用与RGB相同的方法 - >灰度转换,如(R + G + B)/ 3或max(r,g,b)/ 2 + min(r,g,b)。但不幸的是,这对CMYK来说很糟糕,因为CMY和K是多余的。黑色cmyk(0,0,0,255)将变为64.我应该使用
int grayscaled = max((c + m + y) / 3, k)
或者它可能更棘手?我不确定,因为CMYK实际上是一个冗余的颜色模型,并且可以用不同的方式编码相同的颜色。
答案 0 :(得分:3)
有几种方法可以将RGB
转换为灰度,所提到的通道的平均值就是其中之一。使用色彩空间Y
中的YCbCr
频道也是一种常见选项,以及来自L
的{{1}}频道以及其他选项。
根据http://www.easyrgb.com/index.php?X=MATH中的公式,将LAB
转换为CMYK
很便宜,然后您可以使用众所周知的方法转换为灰度。假设范围[0,1]中的RGB
,c
,m
和y
,我们可以将其转换为灰度亮度,如下所示:
k
另请参阅http://en.wikipedia.org/wiki/Grayscale了解有关此转换为灰度的更多信息。