pro jpegtriplets ;This program makes a jpeg file of the image that you select ; (along with its corrispoding triplet mates). ; The output file is: ~/triplet.jpg cd,'',current=cdir & cd,cdir if n_params() eq 0 then log = cdir ;current log is the default cd,'DB/Image' print,'' print,'The Test Log is: ',log ;____________________________________________________________________________ ;List Files... spawn,'lsf',files,/noshell s=size(files) nfiles=fix(s(1)) numfiles=sstr(nfiles) ;numfiles=short string (nfiles) if files(0) eq '' then begin & print,'No files found' & goto,exit & endif array_sort,files ;sorts files in assending order print,'The number of Images in this log is: ',sstr(nfiles),' (1 thru ',sstr(nfiles),')' window,1,xsize=250, ysize=850 ;____________________________________________________________________________ ;Initalize... auto=1 ;for auto=1 tvscl min=0 ;the tvscl min setting max=4095 ;the tvscl max setting ilast=0 ;ilast is the previous value of i space=1.5 ;x spacing in inches sf=.75 ;scale factor (scales the size of the images on the page) ypos=0.5 ;sets the y position for each row ff=-1 ;flag for flat fields, 1=>enabled, -1=>disabled menu: print,'' print,'Enter to... Enter to... print,' 0 Get this menu -4 Autoscale, min to max print,' -1 Quit the program -5 Scale from min to 2 x average print,' -2 Change minimum -6 Print current image print,' -3 Change maximum -7 Toggle flat field ;____________________________________________________________________________ ;begin the loop that does the deed... again: file_no=0 read,'Which triplet do you want to display, 1 thru '+sstr(nfiles)+'? (0 for menu): ',file_no if file_no eq 0 then goto,menu ;display menu if file_no eq -1 then goto, exit ;end of program if file_no eq -2 then begin ;set minimum of stretch auto=0 read,'Min? ',min print,'Min set to: ',min file_no=ilast endif if file_no eq -3 then begin ;set maximum of stretch auto=0 read,'Max? ',max print,'Max set to: ',max file_no=ilast endif if file_no eq -4 then begin ;autoscale to max and min auto=1 print,'Set to Autoscale, min to max.' file_no=ilast endif if file_no eq -5 then begin ;autoscale, range = minimum to 2 x average auto=2 print,'Set to Autoscale, min to 2xAve.' file_no=ilast endif if file_no eq -6 then begin ;prints current image set_plot,'ps' device,filename = '~/idl.ps',/times,/portrait,xsize=7.5,ysize=9,yoffset=1.0,/inches,bits_per_pixel=8 ;;device,filename = '~/idl.ps',/times,/portrait,xsize=4.5,ysize=5.4,yoffset=1.0,/inches,bits_per_pixel=8 if auto eq 1 then tvscl,bytscl(p,min=min(p),max=max(p),top=255) else tvscl,bytscl(p,min=min,max=max,top=255) ;p>minmin0 maxpt=max(pout2) display_in=uint(65535d0*(double(pout2)-double(minpt))/(double(maxpt)-double(minpt))) storfile="~/triplet2."+sstr(n)+".png" write_png,storfile,display_in ;;stop ;;;6-hist equil. ;;pout6=bytscl(p,min=min(p),max=avep+(n+3)*sigma,top=255) ;;minpt=min(pout6)>0 ;;maxpt=max(pout6) ;;p6=hist_equal(pout6,minv=minpt,maxv=maxpt,top=255) ;;storfile2="~/triplet6."+sstr(n)+".jpg" ;;write_jpeg,storfile2,p6,quality=100 ;;;7-hist equil., png ;;p7=(256./4096.)*float(p) ;;sigma7=stdev(p7,avep7) ;;minpt=min(p7)>0 ;;maxpt=max(p7) ;;p7=hist_equal(p7,minv=minpt,maxv=avep7+(n+3)*sigma7,top=255) ;;minpt=min(p7)>0 ;;maxpt=max(p7) ;;display_in=uint(65535d0*(double(p7)-double(minpt))/(double(maxpt)-double(minpt))) ;;storfile2="~/triplet7."+sstr(n)+".png" ;;write_png,storfile2,display_in ;5-png with square root stretch p5=p^.5 sigma5=stdev(p5,avep5) index=where(p5 gt avep5+n*sigma5) if index = -1 goto,skip2 p5(index)=avep5+n*sigma5 ;chops off histogram above n sigma skip2: ;;pout5=bytscl(p5,min=min(p5),max=avep5+n*sigma5,top=4095) minpt=min(p5)>0 maxpt=max(p5) display_in=uint(65535d0*(double(p5)-double(minpt))/(double(maxpt)-double(minpt))) storfile3="~/triplet5."+sstr(n)+".png" write_png,storfile3,display_in ;3-jpeg with square root stretch proot=(p)^0.5 sigma3=stdev(proot,avep3) pout3=bytscl(proot,min=min(proot),max=avep3+n*sigma3,top=255) outfile="~/triplet3."+sstr(n)+".jpg" write_jpeg,outfile,pout3,quality=100 ;;;10-hist equil., png ;;p10=(256./4096.)*float(p) ;;sigma10=stdev(p10,avep10) ;;minpt=min(p10)>0 ;;maxpt=max(p10) ;;pout10=hist_equal(p10,minv=minpt+n,maxv=maxpt,top=255) ;;minpt=min(p10)>0 ;;maxpt=max(p10) ;;display_in=uint(65535d0*(double(pout10)-double(minpt))/(double(maxpt)-double(minpt))) ;;storfile2="~/triplet10."+sstr(n)+".png" ;;write_png,storfile2,display_in endfor ;4-png with no stretch p4=p minpt=min(p4)>0 maxpt=max(p4) display_in=uint(65535d0*(double(p4)-double(minpt))/(double(maxpt)-double(minpt))) storfile2="~/triplet4."+sstr(n)+".png" write_png,storfile2,display_in ;6-hist equil. pout6=bytscl(p,min=min(p),max=max(p),top=255) minpt=min(pout6)>0 maxpt=max(pout6) p6=hist_equal(pout6,minv=minpt,maxv=maxpt,top=255) storfile2="~/triplet6."+sstr(n)+".jpg" write_jpeg,storfile2,p6,quality=100 print,' Sigma Avep Max Ratio 2xAve Ratio print,sigma,avep,(max(p)-avep)/sigma,avep/sigma print,sigma3,avep3,(max(proot)-avep3)/sigma3,avep3/sigma3 print,sigma5,avep5,(max(pout5)-avep5)/sigma5,avep5/sigma5 ;stop ilast=file_no goto,again exit: cd,cdir end