26 #ifndef _CORE_BLOBS_HH 27 #define _CORE_BLOBS_HH 139 #define blob_val(r, blob) kaiser_value(r, blob.radius, blob.alpha, blob.order) 161 #define blob_proj(r, blob) kaiser_proj(r, blob.radius, blob.alpha, blob.order) 174 #define blob_Fourier_val(w, blob) \ 175 kaiser_Fourier_value(w, blob.radius, blob.alpha, blob.order) 181 #define blob_mass(blob) \ 182 basvolume(blob.radius, blob.alpha, blob.order,3) 198 double i_n(
int n,
double x);
241 double a_0,
double a_F,
double inc_a,
double w,
double *target_att,
242 int target_length = 1);
272 int istep = 50,
int normalise = 0);
345 const Matrix2D<double> *D =
nullptr,
int threads = 1,
int Zdim = 0,
int Ydim = 0,
int Xdim = 0);
373 int grid_type,
double grid_relative_size,
376 double final_error_change = 0.01,
int tell = 0,
double R = -1,
int threads = 1);
408 double &mean_error,
double &max_error,
int eq_mode =
VARTK,
int threads=1);
double kaiser_value(double r, double a, double alpha, int m)
void voxel_volume_shape(const GridVolume &vol_blobs, const struct blobtype &blob, const Matrix2D< double > *D, Matrix1D< int > &corner1, Matrix1D< int > &size)
double alpha
Smoothness parameter.
constexpr int SHOW_CONVERSION
double optimal_FCC_grid_relative_size(struct blobtype b)
void blobs2voxels(const GridVolume &vol_blobs, const struct blobtype &blob, MultidimArray< double > *vol_voxels, const Matrix2D< double > *D=nullptr, int threads=1, int Zdim=0, int Ydim=0, int Xdim=0)
MultidimArray< double > * vol_corr
void ART_voxels2blobs_single_step(GridVolume &vol_in, GridVolume *vol_out, const struct blobtype &blob, const Matrix2D< double > *D, double lambda, MultidimArray< double > *theo_vol, const MultidimArray< double > *read_vol, MultidimArray< double > *corr_vol, const MultidimArray< double > *mask_vol, double &mean_error, double &max_error, int eq_mode=VARTK, int threads=1)
void blobs2space_coefficients(const GridVolume &vol_blobs, const struct blobtype &blob, MultidimArray< double > *vol_coefs)
void read_vol(char *vol_file, double *width, double *origx, double *origy, double *origz, unsigned *extx, unsigned *exty, unsigned *extz, double **phi)
double blob_freq_zero(struct blobtype b)
double i_nph(int n, double x)
MultidimArray< double > data
double sum_blob_Grid(const struct blobtype &blob, const Grid &grid, const Matrix2D< double > *D=nullptr)
void voxels2blobs(const MultidimArray< double > *vol_voxels, const struct blobtype &blob, GridVolume &vol_blobs, int grid_type, double grid_relative_size, double lambda, const MultidimArray< double > *vol_mask=nullptr, const Matrix2D< double > *D=nullptr, double final_error_change=0.01, int tell=0, double R=-1, int threads=1)
double blob_ops(double w, struct blobtype b)
const struct blobtype * blob
blobtype best_blob(double alpha_0, double alpha_F, double inc_alpha, double a_0, double a_F, double inc_a, double w, double *target_att, int target_length=1)
double blob_att(double w, struct blobtype b)
pthread_mutex_t blobs_conv_mutex
void footprint_blob(ImageOver &blobprint, const struct blobtype &blob, int istep=50, int normalise=0)
double kaiser_Fourier_value(double w, double a, double alpha, int m)
double i_n(int n, double x)
void * blobs2voxels_SimpleGrid(void *data)
const MultidimArray< double > * vol_blobs
const Matrix2D< double > * D
const MultidimArray< double > * vol_mask
int order
Derivation order and Bessel function order.
double kaiser_proj(double r, double a, double alpha, int m)
double inph_zeroarg(int n)
double optimal_CC_grid_relative_size(struct blobtype b)
double optimal_BCC_grid_relative_size(struct blobtype b)
double radius
Spatial radius in Universal System units.
MultidimArray< double > * vol_voxels
double basvolume(double a, double alpha, int m, int n)