;PRO CUTOFF,IMAGE,FCUTOFF
;PRO DEFRINGE,IMAGE,FRINGE,FWHM,HIFWHM 
;    Defringes image at spatial frequency index 
;    Fx = FRINGE(0), Fy = FRINGE(1) (cycles per side of image) 
;    Uses 1 - Gaussian filter of width FWHM (default = 12)  
;    Also does low pass filter, using Gaussian
;     of width HIFWHM (default = NX)
;  STILL HAS TV DISPLAYS IN IT!

;IF (N_PARAMS(0) LT 3) THEN FWHM=12. 
;Dim=size(image) 
;nx = dim(1) 
;ny = dim(2) 
;NP  = dim(dim(0)+2) 
;NP=FLOAT(NX)*NY 
;NX2 = NX/2  &  NY2=NY/2
;IF (N_PARAMS(0) LT 3) THEN HIFWHM = NX

; Defringing flter
;WID=4.*ALOG(2.)/FWHM^2 
;X2=WID*(FINDGEN(NX)-FRINGE(0))^2
;Y2=WID*(FINDGEN(NY)-FRINGE(1))^2
;W=FLTARR(NX,NY) 
;W=replicate(1.,NX,NY) 
;FOR I=0,NY-1 DO W(*,I)=1.-EXP(-(X2+Y2(I))) 

;  Low pass filter
;WID=4.*ALOG(2.)/HIFWHM^2 
;X2=FINDGEN(NX2+2)  &  X2=WID*X2^2 & XG = EXP(-X2)
;Y2=FINDGEN(NY2+2)  &  Y2=WID*Y2^2 & YG = EXP(-Y2) 
;REVNX2 = NX-NX2-1-INDGEN(NX-NX2-1)
;FOR I=0,NY2 DO BEGIN
;      W(0:NX2,I) = W(0:NX2,I)*XG(0:NX2)*YG(I)
;      W(NX2+1:*,I) = W(NX2+1:*,I)*XG(REVNX2)*YG(I)
;      ENDFOR
;W(*,NY2+1:NY-1)=ROTATE(W(*,1:NY-NY2-1),2) 
; plot_io,w(*,0) & oplot,w(0,*)
;tvscl,w,2 

;FOR I=0,N-1 DO BEGIN 
;  T=IMAGE(*,*,I) 
;  tvscl,image(*,*,i),0 
;  AVER=TOTAL(FLOAT(IMAGE))/NP 
;  TT=FFT(IMAGE-AVER,1) 
;  IMAGE=FFT(TT*W,-1) 
;  IMAGE=AVER+FLOAT(IMAGE) 
;  tvscl,image,1 
;ENDFOR 
;RETURN 
;END 
;
PRO cutoff,IMAGE,FCUTOFF,w
; Fourier lowpass filter deleting power above FCUTOFF cycles 
;   across the images 
Dim=size(image) 
nx = dim(1) 
ny = dim(2) 
np  = dim(dim(0)+2) 
X2=FINDGEN(NX) &  X2(NX/2:NX-1)=NX-X2(NX/2:NX-1)  &  X2=X2^2 
Y2=FINDGEN(NY) &  Y2(NY/2:NY-1)=NY-Y2(NY/2:NY-1)  &  Y2=Y2^2 
F2=FLOAT(FCUTOFF)^2 
W=FLTARR(NX,NY) 
FOR I=0,NY-1 DO W(*,I)=X2+Y2(I) 
WW=WHERE(W GT F2) 
  AVER=TOTAL(image)/NP 
  TT=FFT(image-AVER,1) 
  TT(WW)=COMPLEX(0,0) 
  image=FFT(TT,-1) 
  IMAGE=AVER+FLOAT(image) 
RETURN 
END 
 
