The CMYK_CONVERT procedure converts from the CMYK (cyan-magenta-yellow-black) color model to RGB (red-green-blue) and vice versa.
The procedure uses the following method to convert from CMYK to RGB:
R = (255 - C) (1 - K/255)
G = (255 - M) (1 - K/255)
B = (255 - Y) (1 - K/255)
To convert from RGB to CMYK, the procedure uses the following method:
K = minimum of (R, G, B)
C = 255 [1 - R/(255 - K)] (if K=255 then C=0)
M = 255 [1 - G/(255 - K)] (if K=255 then M=0)
Y = 255 [1 - B/(255 - K)] (if K=255 then Y=0)
In both cases the CMYK and RGB values are assumed to be in the range 0 to 255.
Note: There is no single method that is used for CMYK/RGB conversion. The method used by CMYK_CONVERT is the simplest and, depending on printing inks and screen colors, might not be optimal in all situations.
This routine is written in the IDL language. Its source code can be found in the file cmyk_convert.pro in the lib subdirectory of the IDL distribution.
Example
This example converts an image file’s RGB data to CMYK, displays the image using different color tables, converts CMYK back to RGB, and displays the image again.
file = FILEPATH( 'rose.jpg', SUBDIRECTORY=['examples','data'] )
READ_JPEG, file, image
red = REFORM( image[0,*,*] )
green = REFORM( image[1,*,*] )
blue = REFORM( image[2,*,*] )
CMYK_CONVERT, c, m, y, k, red, green, blue, /TO_CMYK
IIMAGE, GREEN=c, BLUE=c, VIEW_GRID=[2,3], DIM=[600,800]
IIMAGE, RED=m, BLUE=m, /VIEW_NEXT
IIMAGE, RED=y, GREEN=y, /VIEW_NEXT
IIMAGE, 255b-k, /VIEW_NEXT
CMYK_CONVERT, c, m, y, k, r, g, b
IIMAGE, image, /VIEW_NEXT
IIMAGE, RED=r, GREEN=g, BLUE=b, /VIEW_NEXT
Syntax
CMYK_CONVERT, C, M, Y, K, R, G, B [, /TO_CMYK]
Arguments
C, M, Y, K
To convert from CMYK to RGB, set these arguments to scalars or arrays containing the CMYK values in the range 0-255. To convert from RGB to CMYK (with the TO_CMYK keyword set), set these arguments to named variables that will contain the converted values.
R, G, B
To convert from CMYK to RGB, set these arguments to named variables that will contain the converted values. To convert from RGB to CMYK (with the TO_CMYK keyword set), set these arguments to scalars or arrays containing the RGB values.
Keywords
TO_CMYK
If this keyword is set, the values contained in the RGB arguments are converted to CMYK. The default is to convert from CMYK to RGB.
Version History
See Also
COLOR_QUAN