dicfourier.hpp

namespace fourier

Functions

void init(std::vector<util::SubsetData> &ssdata, std::vector<int> &ss_sizes, std::vector<int> &ss_steps, const bool *img_roi, const util::Config &conf)
void mgwd(const std::vector<util::SubsetData> &ssdata, const double *img_ref, const double *img_def, const Interpolator &interp_def, const bool fft_mad, const double fft_mad_scale)
void sgwd(const util::SubsetData &ssdata, const int window_size, const double *img_ref, const double *img_def, const Interpolator &interp_def)
std::pair<double, double> get_prev_shift(const int i, const int ss, const double ss_x, const double ss_y, const std::vector<Shift> &shifts, const std::vector<util::SubsetData> &ssdata)
double debugcost(util::Subset &ss_ref, util::Subset &ss_def)
void zero_norm_subsets(std::vector<double> &def_vals, std::vector<double> &ref_vals, int ss_size)
void smooth_field(std::vector<double> &shift, const util::SubsetData &ssdata, double sigma, int radius)
void test(double &peak_x, double &peak_y, int ss_x, int ss_y, const int window_size, const double *img_ref, const double *img_def, const Interpolator &interp_def)

Variables

std::vector<Shift> shifts
struct FFT

Public Functions

inline FFT(int ss_size_)
inline void correlate()
inline void fftshift(std::vector<double> &data, int size)
inline double safe_log(double val, double eps = 1e-7)
inline int wrap(int coord, int size)
inline void find_peak(double &peak_x, double &peak_y, double &max_val, const bool subpx, const std::string &method)

Public Members

int ss_size
int n_complex
util::Subset ss_def
util::Subset ss_ref
std::vector<std::complex<double>> fft_def
std::vector<std::complex<double>> fft_ref
std::vector<double> cross_corr
pocketfft::shape_t shape_in
pocketfft::shape_t axes = {0, 1}
pocketfft::stride_t stride_in
pocketfft::stride_t stride_out
Eigen::MatrixXd A
Eigen::VectorXd b
struct Shift

Public Functions

inline void gen_neighlist(const util::SubsetData ssdata, const util::SubsetData ssdata_prev)

Public Members

size_t num_neigh
std::vector<double> x
std::vector<double> y
std::vector<double> cost
std::vector<double> max_val
std::vector<int> neighlist