9#include <isce3/core/forward.h>
13#include <thrust/complex.h>
17namespace isce3::cuda::signal {
27 void filter(std::valarray<std::complex<T>> &signal,
28 std::valarray<std::complex<T>> &spectrum);
42 bool _filter_set =
false;
48class gpuAzimuthFilter :
public gpuFilter<T> {
51 ~gpuAzimuthFilter() {};
55 std::valarray<std::complex<T>> &spectrum,
71class gpuRangeFilter :
public gpuFilter<T> {
79 std::valarray<std::complex<T>> &spectrum,
85 std::valarray<double> subBandCenterFrequencies,
86 std::valarray<double> subBandBandwidths,
87 std::valarray<std::complex<T>> &signal,
88 std::valarray<std::complex<T>> &spectrum,
91 std::string filterType);
94 std::valarray<double> subBandCenterFrequencies,
95 std::valarray<double> subBandBandwidths,
98 std::string filterType);
102 std::valarray<double> subBandBandwidths,
105 std::valarray<std::complex<T>> &_filter1D);
107 void constructRangeBandpassCosine(std::valarray<double> subBandCenterFrequencies,
108 std::valarray<double> subBandBandwidths,
110 std::valarray<double>& frequency,
112 std::valarray<std::complex<T>>& _filter1D);
114 void filterCommonRangeBand(T *d_refSlc, T *d_secSlc, T *range);
120 void getPeakIndex(T *data,
int data_lenth,
size_t &peakIndex);
124 double _rangePixelSpacing;
126 double _rangeBandWidth;
127 double _rangeSamplingFrequency;
128 double _rangeBandwidth;
130 bool _spectrumSum_set =
false;
134__global__
void phaseShift_g(
thrust::complex<T> *slc, T *range,
double pxlSpace, T conj,
double wavelength, T wave_div,
int n_elements);
137__global__
void sumSpectrum_g(
thrust::complex<T> *spectrum, T *spectrum_sum,
int n_rows,
int n_cols);
Data structure to hold a 1D Lookup table.
Definition LUT1d.h:15
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.
Definition gpuAzimuthFilter.cu:25
void writeFilter(size_t ncols, size_t nrows)
carry over from parent class.
Definition gpuFilter.cu:103
void filter(std::valarray< std::complex< T > > &signal, std::valarray< std::complex< T > > &spectrum)
Filter a signal in frequency domain.
Definition gpuFilter.cu:76
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.
Definition gpuRangeFilter.cu:126
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.
Definition gpuRangeFilter.cu:52
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.
Definition gpuRangeFilter.cu:35
Definition gpuSignal.h:14
Definition GDALDataTypeUtil.h:10