我需要将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实际上是一个冗余的颜色模型,相同的颜色可以用不同的方式编码。
发布于 2013-02-23 10:16:28
有几种方法可以将RGB转换为灰度,提到的通道的平均值是其中之一。使用色彩空间YCbCr中的Y通道以及LAB中的L通道以及其他选项也是一个常见的选项。
根据http://www.easyrgb.com/index.php?X=MATH中的公式,将CMYK转换为RGB很便宜,然后您可以使用众所周知的方法将其转换为灰度。假设c、m、y和k在0,1范围内,我们可以将其转换为灰度亮度,如下所示:
def cmyk_to_luminance(c, m, y, k):
c = c * (1 - k) + k
m = m * (1 - k) + k
y = y * (1 - k) + k
r, g, b = (1 - c), (1 - m), (1 - y)
y = 0.299 * r + 0.587 * g + 0.114 * b
return y另请参阅http://en.wikipedia.org/wiki/Grayscale,了解更多有关转换为灰度的信息。
https://stackoverflow.com/questions/15026409
复制相似问题