function eit_ratio,file1,file2,show=show,xpixs=xpixs,ypixs=ypixs,$ magnify=magnify,image1_no=image1_no,image2_no=image2_no,$ min_ratio=min_ratio,max_ratio=max_ratio,temp_bar=temp_bar, $ pixmap = pixmap ;+ ; Name: ; eit_ratio ; Purpose: create a ratio of two images and optionally display it ; ; Input Parameters: ; file1 - FITS file of image 1 = numerator ; file2 - FITS file of image 2 = denominator ; ; Output Parameters: ; eit_ratio returns ratio array ; ; Keyword Parameters: ; show - set if want output displayed ; xpixs, ypixs- set if want a subset pixel range of image, ; format is xpixs=[xstart,xstop] ; magnify - set to integer multiple for output REBIN size ; image[1,2]_no - set for image # of 3D LZ file ; temp_bar - set to display a temperature bar on bottom of image ; ; Calling Sequence: ; eit_ratio,'efr19960924.123456','efr19960924.654321',/show,$ ; magnify=3,xpixs=[100,300],ypixs=[100,300] ; ; RESTRICTIONS: ; the temperature calibration is preliminary and not very ; accurate. ; ; Method: ; read FITS file, load proper color table, subtract background, ; replace missing blocks, degrid, flat field, take ratio, subset if ; desired, rebin if desired,optionally display ; ; History: ; 24-Sep-1996 - J. Newmark - created ; 08-Dec-1996 - J. Newmark - took out all processing steps and ; directly called routine EIT_PREP ; 1997/02/06 Added missing block replacement (unit ratio) and ; MIN_RATIO, MAX_RATIO keywords for display. D.M. fecit ; 1997/02/10 J. Newmark - added "rough" temperature bar. ; 1997/09/19 D.M. fecit - added PIXMAP keyword ; 1997/10/01 J. Newmark - new call to eit_temp ;- eit_prep, file1,h1,a1,/float,/normalize,image_no=image1_no eit_prep, file2,h2,a2,/float,/normalize,image_no=image2_no sz_a = size(a1) & bx = fltarr(sz_a(1), sz_a(2), 2) bx(0, 0, 0) = a1 & bx(0, 0, 1) = a2 fake_missing_blocks, bx, 0, /after & fake_missing_blocks, bx, 1, /before a1 = bx(*, *, 0) & a2 = bx(*, *, 1) ratio = a1 / (a2 > 1) if keyword_set(xpixs) then ratio = ratio(xpixs(0):xpixs(1),*) if keyword_set(ypixs) then ratio = ratio(*,ypixs(0):ypixs(1)) sz = size(ratio) if keyword_set(magnify) then ratio = rebin(ratio,magnify*sz(1),$ magnify*sz(2),/sample) if keyword_set(show) then begin defsysv,'!image',exist=ok if not ok then begin imagelib devicelib endif if not keyword_set(pixmap) then pixmap = 0 sz = size(ratio) if !d.name eq 'X' then window, /free, xs = sz(1),ys = sz(2), pix = pixmap if keyword_set(min_ratio) then begin bottom = min_ratio endif else begin bottom = min(ratio) > 0 end if keyword_set(max_ratio) then begin topval = max_ratio endif else begin topval = 2*median(ratio) end b0 = bytscl(((ratio > bottom) < topval), top = !d.n_colors - 1) loadct, 3 tv, b0 if keyword_set(temp_bar) then begin wave1 = eit_fxpar(h1,'wavelnth',image_no=image1_no) wave2 = eit_fxpar(h2,'wavelnth',image_no=image2_no) case 1 of wave1 eq 195 and wave2 eq 171: begin tratio = (indgen(25)+1)*0.1 r824 = 0 end wave1 eq 284 and wave2 eq 195: begin tratio = (indgen(25)+1)*0.02 r284 = 1 end else: begin message,/info, 'Temperature bar only defined for 195/171 or 284/195' return,ratio end endcase temp = eit_temp(inratio = tratio,r284=r284,/pre_calc) if bottom ne 0 then bottom = eit_temp(inratio = bottom,r284=r284,/pre_calc) topval = eit_temp(inratio = topval,r284=r284,/pre_calc) temp = temp(where(temp gt bottom(0) and temp lt topval(0))) tickv = bytscl(temp, top = !d.n_colors -1 ) tnames = strmid(strtrim(temp/1.e6,2),0,4) title = 'Temperature (x10^6 K)' color_bar,b0,sz(1)/1.5,20,60,15,title=title,ticks=n_elements(tickv),$ tickv=tickv,tickname=tnames,/above endif endif return, ratio end
Last revised: - Wed May 9 21:45:03 2007- F. Auchère