dicfourier.hpp

namespace fourier

Functions

void init(std::vector<subset::Grid> &ss_grid, std::vector<int> &ss_sizes, std::vector<int> &ss_steps, const bool *img_roi, const util::Config &conf)
void multiwindow(const std::vector<subset::Grid> &ss_grid, const double *img_ref, const double *img_def, const Interpolator &interp_def, const bool fft_mad, const double fft_mad_scale)
void single_grid(const subset::Grid &ss_grid, const double *prev_img_u, const double *prev_img_v, const int window_size, const double *img_ref, const double *img_def, const Interpolator &interp_def)
void get_single_window_fftcc_peak(double &peak_x, double &peak_y, const int ss_x, const int ss_y, const int ss_size, 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<subset::Grid> &ss_grid)
double debugcost(subset::Pixels &ss_ref, subset::Pixels &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 subset::Grid &ss_grid, 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 correlate_phase()
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)
inline void find_peak_offset(double &peak_x, double &peak_y, double &max_val, const bool subpx, const std::string &method)

Public Members

int ss_size
int n_complex
subset::Pixels ss_def
subset::Pixels 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 subset::Grid ss_grid, const subset::Grid ss_grid_prev)

Public Members

size_t max_num_neigh
std::vector<double> x
std::vector<double> y
std::vector<double> cost
std::vector<double> max_val
std::vector<int> neigh_list
std::vector<int> num_neigh_list