我需要将 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 实际上是一种冗余颜色模型,相同的颜色可以用不同的方式编码。