Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

filtering.hh

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 1999-2003 Bert Kampes
00003  * Copyright (c) 1999-2003 Delft University of Technology, The Netherlands
00004  *
00005  * This file is part of Doris, the Delft o-o radar interferometric software.
00006  *
00007  * Doris program is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 2 of the License, or
00010  * (at your option) any later version.
00011  *
00012  * Doris is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020  *
00021  * Publications that contain results produced by the Doris software should
00022  * contain an acknowledgment. (For example: The interferometric processing
00023  * was performed using the freely available Doris software package developed
00024  * by the Delft Institute for Earth-Oriented Space Research (DEOS), Delft
00025  * University of Technology, or include a reference to: Bert Kampes and
00026  * Stefania Usai. \"Doris: The Delft Object-oriented Radar Interferometric
00027  * software.\" In: proceedings 2nd ITC ORS symposium, August 1999. (cdrom)).
00028  *
00029  */
00030 /****************************************************************
00031  * $Source: /users/kampes/DEVELOP/DORIS/doris/src/RCS/filtering.hh,v $
00032  * $Revision: 3.8 $
00033  * $Date: 2005/04/22 11:30:15 $
00034  * $Author: kampes $
00035  *
00036  * Declaration of routines for filtering 
00037  ****************************************************************/
00038 
00039 
00040 #ifndef FILTERING_H                     // guard
00041 #define FILTERING_H
00042 #include "constants.hh"                 // typedefs
00043 #include "readinput.hh"                 // input structs
00044 #include "matrixbk.hh"                  // my matrix class
00045 #include "slcimage.hh"                  // my slc image class
00046 #include "orbitbk.hh"                   // my orbit class
00047 #include "productinfo.hh"               // my 'products' class
00048 
00049 
00050 
00051 
00052 // ______ Adaptive range filtering, estimate local fringe frequency _____
00053 void rangefilter(
00054         const input_gen       &generalinput,
00055         const slcimage        &master,
00056         const slcimage        &slave,
00057         const productinfo     &interferogram,
00058         const input_filtrange &filtrangeinput);
00059 
00060 // ______ Iteratively called by rangefilter ______
00061 void rfilterblock(
00062         matrix<complr4>       &MASTER,          // updated
00063         matrix<complr4>       &SLAVE,           // updated
00064         int32                  nlmean,
00065         real8                  SNRthreshold,
00066         real8                  RSR,             // in MHz?
00067         real8                  RBW,             // in MHz?
00068         real8                  hammingalpha,    
00069         int32                  oversamplefactor,   // pow2
00070         bool                   docorrectcorrel,
00071         real8                 &meanSNR,            // returned
00072         real8                 &percentnotfiltered);// returned
00073 
00074 // ______ Range filtering based on orbit _____
00075 void rangefiltporbits(
00076         const input_gen       &generalinput,
00077         const input_filtrange &filtrangeinput,
00078         const input_ell       &ellips,
00079         const slcimage        &master,
00080         const slcimage        &slave,
00081               orbit           &masterorbit,
00082               orbit           &slaveorbit
00083         );
00084 
00085 // ====== Adaptive phase filtering, weight spectrum, goldstein ======
00086 void phasefilter(
00087         const input_gen       &generalinput,
00088         const productinfo     &interferogram,
00089         const input_filtphase &filtphaseinput);
00090 
00091 // ______ goldstein filter per buffer ______
00092 matrix<complr4> goldstein(
00093         const matrix<complr4> &CINT,
00094         const real4            ALPHA,
00095         const int32            OVERLAP,
00096         const matrix<real4>   &smoothkernel);
00097 
00098 // ______ Smooth by spatial circular averaging over 2N+1 box ______
00099 matrix<real4> smooth(
00100         const matrix<real4> &A,
00101         int32 halblocksize);
00102 
00103 // ______ Smooth by FFT's, KERNEL2D once computed for ______
00104 // ______ recursive calls to smooth routine, save time ______
00105 matrix<real4> smooth(
00106         const matrix<real4>   &A,
00107         const matrix<complr4> &KERNEL2D);
00108 
00109 // ====== Spatial convolution filter per buffer ======
00110 void spatialphasefilt(
00111         const input_gen       &generalinput,
00112         const productinfo     &interferogram,
00113         const input_filtphase &filtphaseinput);
00114 
00115 // ______ Spatial convolution filter per block _____
00116 matrix<complr4> convbuffer(
00117         const matrix<complr4> &CINT,
00118         const matrix<complr4> &KERNEL2D,
00119         const int32            OVERLAP);
00120 
00121 // ====== phase filtering, spectral ======
00122 void phasefilterspectral(
00123         const input_gen       &generalinput,
00124         const productinfo     &interferogram,
00125         const input_filtphase &filtphaseinput);
00126 
00127 // ______ spectral filter per buffer ______
00128 matrix<complr4> spectralfilt(
00129         const matrix<complr4> &CINT,
00130         const matrix<real4>   &KERNEL2D,
00131         const int32            OVERLAP);
00132 
00133 // ====== azimuth filter ======
00134 void azimuthfilter(
00135         const input_gen       &generalinput,
00136         const input_filtazi   &filtaziinput,
00137         slcimage        &master,
00138         slcimage        &slave);
00139 
00140 matrix<complr4> blockazifilt(
00141         const matrix<complr4> &SLCIMAGE,
00142         const slcimage        &master,          // PRF, BW, fd0
00143         const slcimage        &slave,           // PRF, BW, fd0
00144         const real8            HAMMING);
00145 
00146 
00147 
00148 #endif // FILTERING_H
00149 
00150 
00151 

Generated on Fri Apr 22 15:57:53 2005 for Doris by doxygen 1.3.6