ISCE_INSAR/components/mroipac/icu/src/intf_filt.F

79 lines
2.3 KiB
Fortran

!c****************************************************************
subroutine intf_filt(c_intb, c_ampb, c_intb_filt)
!c****************************************************************
!c**
!c** FILE NAME: intf_filt.f
!c**
!c** DATE WRITTEN: 4-Mar-98
!c**
!c** PROGRAMMER: Charles Werner
!c**
!c** FUNCTIONAL DESCRIPTION: This routine performs general filtering
!c** of the interferogram
!c**
!c** ROUTINES CALLED: psfilt, lowpass
!c**
!c** NOTES: i_filttype: 0=lowpass, 1=PS filtering
!c**
!c** UPDATE LOG:
!c**
!c** Date Changed Reason Changed
!c** ------------ ----------------
!c** 4-Mar-98 Created
!C**
!c*****************************************************************
use icuState
implicit none
!c INPUT VARIABLES:
complex*8 c_intb(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1) !input interferogram
complex*8 c_ampb(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1) !amplitude data in (SLC-1,SLC-2) pair format
!c OUTPUT VARIABLES:
complex*8 c_intb_filt(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1)!output filtered interf.
c LOCAL VARIABLES:
integer*4 k,l,j,i !loop indices
do i=0, infp%i_azbufsize - 1 !initialize output data
do j=0, infp%i_rsamps - 1
c_intb_filt(j,i)=cmplx(0.0,0.0)
end do
end do
if(infp%i_filtopt .eq. 0) then
!c write(6,'(1x,a)') 'INTF_FILT: no interferogram filtering applied'
do l = infp%i_sline, infp%i_eline
do k=infp%i_ssamp, infp%i_esamp
c_intb_filt(k,l) = c_intb(k,l)
end do
end do
return
end if
if(infp%i_filttype .eq. 0) then !lowpass filter
call lowpass(c_intb, c_intb_filt, infp%i_sline, infp%i_eline,
$ infp%i_ssamp, infp%i_esamp, infp%r_lpwinrng, infp%r_lpwinaz)
elseif (infp%i_filttype .eq. 1) then !adaptive power spectrum filter
if(infp%i_useamp .eq. 1) then
call psfilt(c_intb, c_ampb, c_intb_filt, infp%i_sline, infp%i_eline,
$ infp%i_ssamp, infp%i_esamp, infp%r_ps_alpha)
else
call psfilt(c_intb, c_intb, c_intb_filt, infp%i_sline, infp%i_eline,
$ infp%i_ssamp, infp%i_esamp, infp%r_ps_alpha)
end if
end if
return
end