|
IDL Reference Guide: Procedures and Functions |
|
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.
CMYK_CONVERT, C, M, Y, K, R, G, B [, /TO_CMYK]
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.
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.
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.
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,*,*] ) ; Convert from RGB to CMYK CMYK_CONVERT, c, m, y, k, red, green, blue, /TO_CMYK ; Display using cyan (green + blue) color table IIMAGE, GREEN=c, BLUE=c, VIEW_GRID=[2,3], DIM=[600,800] ; Display using magenta (red + blue) color table IIMAGE, RED=m, BLUE=m, /VIEW_NEXT ; Display using yellow (red + green) color table IIMAGE, RED=y, GREEN=y, /VIEW_NEXT ; Display using inverted grayscale (like ink) IIMAGE, 255b-k, /VIEW_NEXT ; Convert from CMYK back to RGB CMYK_CONVERT, c, m, y, k, r, g, b IIMAGE, image, /VIEW_NEXT IIMAGE, RED=r, GREEN=g, BLUE=b, /VIEW_NEXT
IDL Online Help (March 06, 2007)