pro image_display ; ; displays one image and allows cursor to define box for photometry ; ; DPC 20070205 modified to correct 16bit unsigned and to scale ; display to show entire image ; file = dialog_pickfile(Title="Select Image") ; image = readfits(file,header,/NO_UNSIGNED) ; image_size = size(image) row1 = image_size[2] - 1 col1 = image_size[1] - 1 row0 = 0 col0 = 0 rowsize = row1 - row0 + 1 colsize = col1 - col0 + 1 print, "Image format = ",rowsize,' x ',colsize ; image_statistics, image, MEAN=image_mean, STDDEV=image_stddev print, "Mean, Stddev = ",image_mean,image_stddev ; ; device, decomposed=0 loadct, 13 tvlct, [0,255], [0,255], [0,255], 2 black = 2 white = 3 ;-------------------------------------------------------------------------- ; check that image will not spill over display ; window, 10, Xsize=1200, ysize=1000 wshow, 10, /iconic check_image_size, image, colsize, rowsize, disp_array, xsize, ysize, xscale, yscale ; window, 10, XSIZE=xsize, YSIZE=ysize, TITLE=file displ = byte(1)+bytscl((253 < (0 > ((disp_array - image_mean) * 30.0 / (image_stddev)) + 30)),min=0,max=254,top=253) tv, displ ; print,"Select upper left corner of box" cursor, x, y, /DOWN, /DEVICE wait, 0.5 xl = fix(x) / xscale yl = fix(y) / yscale print,"Select lower right corner of box" cursor, x, y, /DOWN, /DEVICE wait, 0.5 xr = fix(x) / xscale yr = fix(y) / yscale ; nx = fix(abs(xr - xl + 1)) ny = fix(abs(yl - yr + 1)) area = double(nx) * double(ny) ; ; sum counts ; sum = 0.0d0 sum2 = 0.0d0 for ix = 0, nx-1 do begin for iy = 0, ny-1 do begin sum = sum + double(image[ix+xl,iy+yr]) sum2 = sum2 + double(image[ix+xl,iy+yr]) * double(image[ix+xl,iy+yr]) endfor endfor ; mean = double(sum / area) stddev = sqrt(double(sum2/(area-1.0d0)) - mean*mean) sig_mean = stddev / sqrt(area) ; print, "Npix, Sum, Ave, Stddev, Uncer_of_Mean = ",area,sum,mean,stddev,sig_mean ; wdelete, 10 print, 'Done!' end