3

CMYK 画像をグレースケールの CMYK 画像に変換する必要があります。最初は、(R + G + B) / 3 または max(r, g, b) / 2 + min(r, g, b) のように、RGB -> グレースケール変換と同じ方法を使用できると考えました。しかし残念ながら、CMY と K は冗長であるため、これは CMYK ではうまく機能しません。そして黒いcmyk(0、0、0、255)は64になります。

int grayscaled = max((c + m + y) / 3, k)

それとももっとトリッキーですか?CMYK は実際には冗長なカラー モデルであり、同じ色が異なる方法でエンコードされる可能性があるため、わかりません。

4

1 に答える 1

3

グレースケールに変換する方法はいくつかありますがRGB、言及されているチャネルの平均はその 1 つです。Yカラースペースのチャンネルを使用することYCbCrも一般的なオプションであり、他のオプションの中でも特に のLチャンネルを使用しLABます。

http://www.easyrgb.com/index.php?X=MATHの式によると、への変換は安価CMYKであり、よく知られているアプローチを使用してグレースケールに変換できます。、、、およびが [0, 1] の範囲にあると仮定すると、次のようにグレースケールの輝度に変換できます。RGBcmyk

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も参照してください。

于 2013-02-23T02:16:28.433 に答える