function scc_img_trim, im, hdr,cor1_flip=cor1_flip,silent=silent ;+ ; $Id: scc_img_trim.pro,v 1.19 2007/06/28 20:51:20 colaninn Exp $ ; ; Project : STEREO SECCHI ; ; Name : scc_img_trim.pro ; ; Purpose : returns rectified images with under/over scan areas removed ; ; Explanation: The program returns the imaging area of the CCD. If the ; image has not been rectified such that ecliptic north ; is up then the image is rectified ; ; Use : IDL> img = scc_img_trim(im, hdr) ; ; Inputs : im - any SECCHI image ; hdr -image header (FITS or SECCHI header structure) ; ; Outputs : img - imaging area; floating point array ; ; Side Effects : Modifies header structure to new image values. ; ; Keywords : cor1_flip - set if using old cor1 data ; ; Calls : SCC_FITSHDR2STRUCT, SECCHI_RECTIFY,SCC_UPDATE_HISTORY, ; FITSHEAD2WCS, WCS_GET_COORD ; ; Category : Admistration ; ; Prev. Hist. : None. ; ; Written : Robin C Colaninno NRL/GMU October 2006 ; ; $Log: scc_img_trim.pro,v $ ; Revision 1.19 2007/06/28 20:51:20 colaninn ; *** empty log message *** ; ; Revision 1.18 2007/05/21 20:16:06 colaninn ; added silent keyword ; ; Revision 1.17 2007/05/18 19:38:52 colaninn ; added correction for data region keywords ; ; Revision 1.16 2007/03/23 18:28:17 colaninn ; mysterious stop left in program ; ; Revision 1.15 2007/03/22 14:52:30 colaninn ; removed -1 from crpix update ; ; Revision 1.14 2007/02/26 19:09:02 colaninn ; add cor1_flip keyword ; ; Revision 1.13 2007/01/31 19:53:41 thernis ; Add missing parentheses and a 'y' :) ; ; Revision 1.12 2007/01/31 18:29:21 colaninn ; added scc_update_history ; ; Revision 1.11 2007/01/29 22:40:13 nathan ; add rev number to history ; ; Revision 1.10 2007/01/19 17:19:31 colaninn ; fixed values for new CCD area ; ; Revision 1.9 2007/01/18 21:19:37 colaninn ; corrected for COR1 flip ; ; Revision 1.8 2007/01/03 21:31:10 colaninn ; changed data area ; ; Revision 1.7 2006/12/05 21:04:57 colaninn ; corrected hdr.summed code ; ; Revision 1.6 2006/11/27 19:53:25 colaninn ; changed output text ; ; Revision 1.5 2006/11/21 19:49:29 colaninn ; moved header update to IF statement ; ; Revision 1.4 2006/11/09 16:20:13 colaninn ; complete overhaul ; ; Revision 1.3 2006/10/24 20:33:10 colaninn ; added 1 to crpix to match secchi_rectify.pro ; ; Revision 1.2 2006/10/23 19:28:38 colaninn ; added updates to center keywords ; ; Revision 1.1 2006/10/20 15:40:46 colaninn ; first entry ; ;- ON_ERROR,2 info="$Id: scc_img_trim.pro,v 1.19 2007/06/28 20:51:20 colaninn Exp $" len=strlen(info) histinfo=strmid(info,1,len-2) IF(DATATYPE(hdr) NE 'STC') THEN hdr=SCC_FITSHDR2STRUCT(hdr) IF ~strmatch(TAG_NAMES(hdr,/STRUCTURE_NAME),'SECCHI_HDR_STRUCT*') THEN $ MESSAGE, 'ONLY SECCHI HEADER STRUCTURE ALLOWED' OBSRVTRY = hdr.OBSRVTRY ;--This is to accommodate pre-commissioning data IF keyword_set(cor1_flip) THEN BEGIN IF OBSRVTRY EQ 'STEREO_A' THEN OBSRVTRY = 'STEREO_B'$ ELSE OBSRVTRY = 'STEREO_A' ENDIF ;--Calculate data area from un-rectified image cooridinates x1 = 51-hdr.P1COL IF x1 LT 0 THEN x1 =0 x2 = hdr.P2COL-hdr.P1COL IF x2 GT 2048+x1-1 THEN x2 = 2048+x1-1 y1 = 1-hdr.P1ROW IF y1 LT 0 THEN y1=0 y2 = hdr.P2ROW-hdr.P1ROW IF y2 GT 2048+y1-1 THEN y2 = 2048+y1-1 ;--Reset P1(2)COL and P1(2)ROW to trimmed values IF hdr.P1COL LT 51 THEN hdr.P1COL=51 hdr.P2COL = hdr.P1COL+(x2-x1) IF hdr.P1ROW LT 1 THEN hdr.P1ROW=1 hdr.P2ROW = hdr.P1ROW+(y2-y1) ;--Correct data area cooridinates for summing x1 = fix(x1/2^(hdr.summed-1)) x2 = ((hdr.P2COL-hdr.P1COL+1)/2^(hdr.summed-1))+x1-1 y1 = fix(y1/2^(hdr.summed-1)) y2 =((hdr.P2ROW-hdr.P1ROW+1)/2^(hdr.summed-1))+y1-1 ;--Convert data area cooridinates for rectified image ;--Reset R1(2)COL and R1(2)ROW to trimmed values IF hdr.RECTIFY EQ 'T' THEN BEGIN IF (OBSRVTRY EQ 'STEREO_A') THEN BEGIN CASE hdr.DETECTOR OF 'EUVI': BEGIN rx1 = hdr.naxis1-y2-1 rx2 = hdr.naxis1-y1-1 ry1 = hdr.naxis2-x2-1 ry2 = hdr.naxis2-x1-1 hdr.R1COL = 2176-hdr.P2ROW+1 hdr.R2COL = 2176-hdr.P1ROW+1 hdr.R1ROW = 2176-hdr.P2COL+1 hdr.R2ROW = 2176-hdr.P1COL+1 END 'COR1': BEGIN rx1 = y1 rx2 = y2 ry1 = hdr.naxis2-x2-1 ry2 = hdr.naxis2-x1-1 hdr.R1COL = hdr.P1ROW hdr.R2COL = hdr.P2ROW hdr.R1ROW = 2176-hdr.P2COL+1 hdr.R2ROW = 2176-hdr.P1COL+1 END 'COR2': BEGIN rx1 = hdr.naxis1-y2-1 rx2 = hdr.naxis1-y1-1 ry1 = x1 ry2 = x2 hdr.R1COL = 2176-hdr.P2ROW+1 hdr.R2COL = 2176-hdr.P1ROW+1 hdr.R1ROW = hdr.P1COL hdr.R2ROW = hdr.P2COL END 'HI1': BEGIN rx1 = x1 rx2 = x2 ry1 = y1 ry2 = y2 hdr.R1COL = hdr.P1COL hdr.R2COL = hdr.P2COL hdr.R1ROW = hdr.P1ROW hdr.R2ROW = hdr.P2ROW END 'HI2': BEGIN rx1 = x1 rx2 = x2 ry1 = y1 ry2 = y2 hdr.R1COL = hdr.P1COL hdr.R2COL = hdr.P2COL hdr.R1ROW = hdr.P1ROW hdr.R2ROW = hdr.P2ROW END ENDCASE ENDIF IF (OBSRVTRY EQ 'STEREO_B') THEN BEGIN CASE hdr.DETECTOR OF 'EUVI': BEGIN rx1 = y1 rx2 = y2 ry1 = hdr.naxis2-x2-1 ry2 = hdr.naxis2-x1-1 hdr.R1COL = hdr.P1ROW hdr.R2COL = hdr.P2ROW hdr.R1ROW = 2176-hdr.P2COL+1 hdr.R2ROW = 2176-hdr.P1COL+1 END 'COR1': BEGIN rx1 = hdr.naxis1-y2-1 rx2 = hdr.naxis1-y1-1 ry1 = x1 ry2 = x2 hdr.R1COL = 2176-hdr.P2ROW+1 hdr.R2COL = 2176-hdr.P1ROW+1 hdr.R1ROW = hdr.P1COL hdr.R2ROW = hdr.P2COL END 'COR2': BEGIN rx1 = y1 rx2 = y2 ry1 = hdr.naxis2-x2-1 ry2 = hdr.naxis2-x1-1 hdr.R1COL = hdr.P1ROW hdr.R2COL = hdr.P2ROW hdr.R1ROW = 2176-hdr.P2COL+1 hdr.R2ROW = 2176-hdr.P1COL+1 END 'HI1': BEGIN rx1 = hdr.naxis1-x2-1 rx2 = hdr.naxis1-x1-1 ry1 = hdr.naxis2-y2-1 ry2 = hdr.naxis2-y1-1 hdr.R1COL = 2176-hdr.P2ROW hdr.R2COL = 2176-hdr.P1ROW hdr.R1ROW = 2176-hdr.P2COL hdr.R2ROW = 2176-hdr.P1COL END 'HI2': BEGIN rx1 = hdr.naxis1-x2-1 rx2 = hdr.naxis1-x1-1 ry1 = hdr.naxis2-y2-1 ry2 = hdr.naxis2-y1-1 hdr.R1COL = 2176-hdr.P2ROW hdr.R2COL = 2176-hdr.P1ROW hdr.R1ROW = 2176-hdr.P2COL hdr.R2ROW = 2176-hdr.P1COL END ENDCASE ENDIF ;--Data area cooridinates for rectified image x1 = rx1 x2 = rx2 y1 = ry1 y2 = ry2 ENDIF ;--Apply Trim------------------------------------ img = im[x1:x2,y1:y2] s = size(img,/dim) hdr.DSTART1=1 hdr.DSTOP1=s[0] hdr.DSTART2=1 hdr.DSTOP2=s[1] IF (hdr.naxis1 NE s[0]) OR (hdr.naxis2 NE s[1]) THEN BEGIN IF ~keyword_set(silent) THEN message,'Removing image under/over scan',/inform ;--Update header values; image cooridinates IF ~keyword_set(silent) THEN message,'Updating header',/inform s = size(img,/dim) hdr.NAXIS1 = s[0] hdr.NAXIS2 = s[1] hdr.CRPIX1 = hdr.CRPIX1-x1 hdr.CRPIX1A = hdr.CRPIX1A-x1 hdr.CRPIX2 = hdr.CRPIX2-y1 hdr.CRPIX2A = hdr.CRPIX2A-y1 WCS = FITSHEAD2WCS(hdr) xycen = WCS_GET_COORD(WCS, [(hdr.NAXIS1-1.)/2., (hdr.NAXIS2-1.)/2.]) hdr.XCEN=xycen[0] hdr.YCEN=xycen[1] hdr = SCC_UPDATE_HISTORY(hdr,'scc_img_trim.pro,v 1.12 2007/01/31 REMOVED OVER/UNDER SCAN') ENDIF RETURN,img END