📄 fitsrgb_to_tiff.pro
字号:
PRO FITSRGB_to_TIFF, path, rgb_files, tiff_name, BY_PIXEL=by_pixel, $ PREVIEW=preview, RED=r_mix, GREEN=g_mix, BLUE=b_mix;+; NAME:; FITSRGB_to_TIFF; PURPOSE:; Combine separate red, green, and blue FITS images into TIFF format; EXPLANATION:; The output TIFF (class R) file can have colors interleaved either; by pixel or image. The colour mix is also adjustable.;; CALLING SEQUENCE:; FITSRGB_to_TIFF, path, rgb_files, tiff_name [,/BY_PIXEL, /PREVIEW,; RED= , GREEN =, BLUE =];; INPUTS:; path = file system directory path to the RGB files required.; rgb_files = string array with three components - the red FITS file; filename, the blue FITS file filename and the green FITS; file filename;; OUTPUTS:; tiff_name = string containing name of tiff file to be produced;; OPTIONAL OUTPUT:; Header = String array containing the header from the FITS file.;; OPTIONAL INPUT KEYWORDS:; BY_PIXEL = This causes TIFF file RGB to be interleaved by pixel; rather than the default of by image.; PREVIEW = Allows a 24 bit image to be displayed on the screen; to check the colour mix.; RED = Real number containing the fractional mix of red; GREEN = Real number containing the fractional mix of green; BLUE = Real number containing the fractional mix of blue;; EXAMPLE:; Read three FITS files, 'red.fits', 'blue.fits' and 'green.fits' from; the directory '/data/images/space' and output a TIFF file named; 'colour.tiff';; IDL> FITSRGB_to_TIFF, '/data/images/space', ['red.fits', $; 'blue.fits', 'green.fits'], 'colour.tiff';; Read three FITS files, 'red.fits', 'blue.fits' and 'green.fits' from; the current directory and output a TIFF file named '/images/out.tiff'; In this case, the red image is twice as strong as the green and the; blue is a third more intense. A preview on screen is also wanted.;; IDL> FITSRGB_to_TIFF, '.', ['red.fits', $; 'blue.fits', 'green.fits'], '/images/out.tiff', $; /PREVIEW, RED=0.5, GREEN=1.0, BLUE=0.666;;; RESTRICTIONS:; (1) Limited to the ability of the routine READFITS;; NOTES:; None;; PROCEDURES USED:; Functions: READFITS, CONCAT_DIR; Procedures: WRITE_TIFF;; MODIFICATION HISTORY:; 16th January 1995 - Written by Carl Shaw, Queen's University Belfast; 27 Jan 1995 - W. Landsman, Add CONCAT_DIR for VMS, Windows compatibility; Converted to IDL V5.0 W. Landsman September 1997; Use WRITE_TIFF instead of obsolete TIFF_WRITE W. Landsman December 1998; Cosmetic changes W. Landsman February 2000;-;; Make sure user has supplied valid parameters; IF N_PARAMS() LT 3 THEN BEGIN print, 'Syntax - FITSRGB_to_TIFF, path, rgb_files, tiff_name' print,' [/BY_PIXEL,/PREVIEW, RED=, GREEN=, BLUE= ]' return ENDIF; IF N_ELEMENTS(rgb_files) LT 3 THEN $ MESSAGE, 'Three filenames for the colour components have not been supplied'; by_pixel = KEYWORD_SET(BY_PIXEL); IF NOT KEYWORD_SET(r_mix) THEN r_mix = 1.0 IF NOT KEYWORD_SET(g_mix) THEN g_mix = 1.0 IF NOT KEYWORD_SET(b_mix) THEN b_mix = 1.0;; Now load the colour components; fname = CONCAT_DIR( path, rgb_files ) red = READFITS( fname[0], /SILENT) green = READFITS( fname[1], /SILENT) blue = READFITS( fname[2], /SILENT);; Data now needs to be scaled to the same byte range (0-255) and also; scaled according to the RGB mix values supplied by the user; red = red[*,*] * r_mix green = green[*,*] * g_mix blue = blue[*,*] * b_mix ;scale intensity by supplied mix; maxlim = MAX(red) > MAX(green) > MAX(blue) ;max intensity minlim = MIN(red) < MIN(green) < MIN(blue) ;min intensity red = BYTSCL(red, MIN=minlim, MAX=maxlim) green = BYTSCL(green, MIN=minlim, MAX=maxlim) blue = BYTSCL(blue, MIN=minlim, MAX=maxlim) ;scale colours to same byte range;; Preview image on window system if required; IF keyword_set(PREVIEW) THEN BEGIN window, 0, colors=256 wset, 0 tv, color_quan(red, green, blue, r, g, b, colors=255) tvlct, r, g, b ENDIF;; Now write out result as a tiff file; IF by_pixel THEN BEGIN ; ; Interleave by pixel ; extent = SIZE(red) xsize = extent[1] ysize = extent[2] ;get image size interarr = FLTARR(3, xsize, ysize, /NOZERO) ;make interleaved array interarr[0, *, *] = red interarr[1, *, *] = green interarr[2, *, *] = blue ; WRITE_TIFF, tiff_name, interarr ; ENDIF ELSE BEGIN ; ; Interleave by image ; WRITE_TIFF, tiff_name, RED=red, BLUE=blue, GREEN=green, PLANARCONFIG=2 ; ENDELSE; END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -