9 #include <isce3/core/forward.h>
13 #include <thrust/complex.h>
15 #include "gpuSignal.h"
25 void filter(std::valarray<std::complex<T>> &signal,
26 std::valarray<std::complex<T>> &spectrum);
29 void filter(gpuSignal<T> &signal);
40 bool _filter_set =
false;
49 ~gpuAzimuthFilter() {};
53 std::valarray<std::complex<T>> &spectrum,
77 std::valarray<std::complex<T>> &spectrum,
83 std::valarray<double> subBandCenterFrequencies,
84 std::valarray<double> subBandBandwidths,
85 std::valarray<std::complex<T>> &signal,
86 std::valarray<std::complex<T>> &spectrum,
89 std::string filterType);
92 std::valarray<double> subBandCenterFrequencies,
93 std::valarray<double> subBandBandwidths,
96 std::string filterType);
100 std::valarray<double> subBandBandwidths,
103 std::valarray<std::complex<T>> &_filter1D);
105 void constructRangeBandpassCosine(std::valarray<double> subBandCenterFrequencies,
106 std::valarray<double> subBandBandwidths,
108 std::valarray<double>& frequency,
110 std::valarray<std::complex<T>>& _filter1D);
112 void filterCommonRangeBand(T *d_refSlc, T *d_secSlc, T *range);
118 void getPeakIndex(T *data,
int data_lenth,
size_t &peakIndex);
122 double _rangePixelSpacing;
124 double _rangeBandWidth;
125 double _rangeSamplingFrequency;
126 double _rangeBandwidth;
128 bool _spectrumSum_set =
false;
132 __global__
void phaseShift_g(
thrust::complex<T> *slc, T *range,
double pxlSpace, T conj,
double wavelength, T wave_div,
int n_elements);
138 __global__
void sumSpectrum_g(
thrust::complex<T> *spectrum, T *spectrum_sum,
int n_rows,
int n_cols);
void filter(std::valarray< std::complex< T >> &signal, std::valarray< std::complex< T >> &spectrum)
Filter a signal in frequency domain.
void initiateAzimuthFilter(std::valarray< std::complex< T >> &signal, std::valarray< std::complex< T >> &spectrum, size_t ncols, size_t nrows)
constructs forward abd backward FFT plans for filtering a block of data in azimuth direction...
void initiateRangeFilter(std::valarray< std::complex< T >> &signal, std::valarray< std::complex< T >> &spectrum, size_t ncols, size_t nrows)
constructs forward abd backward FFT plans for filtering a block of data in range direction.
void constructRangeBandpassBoxcar(std::valarray< double > subBandCenterFrequencies, std::valarray< double > subBandBandwidths, double dt, int nfft, std::valarray< std::complex< T >> &_filter1D)
Construct a box car range band-pass filter for multiple bands.
void constructRangeBandpassFilter(double rangeSamplingFrequency, std::valarray< double > subBandCenterFrequencies, std::valarray< double > subBandBandwidths, std::valarray< std::complex< T >> &signal, std::valarray< std::complex< T >> &spectrum, size_t ncols, size_t nrows, std::string filterType)
Construct range band-pass filter.
void writeFilter(size_t ncols, size_t nrows)
carry over from parent class.