Tuesday, August 3, 2010

RGB to NTSC Color Conversion in IDL

PRO rgbcolorconversion
file = FILEPATH('rose.jpg',SUBDIRECTORY = ['examples', 'data'])
queryStatus = QUERY_IMAGE(file, imageInfo)
PRINT, 'Query Status = ', queryStatus
HELP, imageInfo, /STRUCTURE
imageSize = imageInfo.dimensions
READ_JPEG,file,image
imageDims = SIZE(image, /DIMENSIONS)
; rgb to gray conversion
gimage=fltarr(imagedims[0],imagedims[1],imagedims[2])
CM=[[0.299, 0.587, 0.144],[0.596, -0.274, -0.322],[0.211, -0.523,0.312]]
for i=0,imagedims[1]-1 do begin
for j=0,imagedims[2]-1 do begin
V=image[*,i,j]
gimage[*,i,j]=CM * TRANSPOSE(V)
endfor
endfor

interleaving = WHERE((imageDims NE imageSize[0]) AND $
(imageDims NE imageSize[1])) + 1
PRINT, 'Type of Interleaving = ', interleaving
DEVICE, DECOMPOSED = 1
WINDOW, 0, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An RGB Image'
TV, image, TRUE = interleaving[0]
WINDOW, 1, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An NTSC Image'
TV, gimage, TRUE = interleaving[0]
end

No comments: