Xmipp
v3.23.11-Nereus
|
#include <queue>
#include <list>
#include "data/fourier_filter.h"
#include "core/histogram.h"
#include "core/metadata_extension.h"
#include "core/multidim_array.h"
#include "core/transformations.h"
#include "core/xmipp_program.h"
#include "filters.h"
#include "mask.h"
#include "morphology.h"
#include "wavelet.h"
Go to the source code of this file.
Classes | |
struct | Coordinate2D |
struct | Coordinate3D |
Macros | |
#define | CHECK_POINT(i, j) |
#define | CHECK_POINT_3D(k, i, j) |
#define | CHECK_POINT_3D(k, i, j) |
#define | CHECK_POINT_DIST(i, j, proposedDistance) |
Functions | |
void | substractBackgroundPlane (MultidimArray< double > &I) |
void | substractBackgroundRollingBall (MultidimArray< double > &I, int radius) |
void | detectBackground (const MultidimArray< double > &vol, MultidimArray< double > &mask, double alpha, double &final_mean) |
void | contrastEnhancement (Image< double > *I) |
void | regionGrowing2D (const MultidimArray< double > &I_in, MultidimArray< double > &I_out, int i, int j, float stop_colour, float filling_colour, bool less, int neighbourhood) |
void | regionGrowing3D (const MultidimArray< double > &V_in, MultidimArray< double > &V_out, int k, int i, int j, float stop_colour, float filling_colour, bool less) |
void | regionGrowing3DEqualValue (const MultidimArray< double > &V_in, MultidimArray< int > &V_out, int filling_value=0) |
void | distanceTransform (const MultidimArray< int > &in, MultidimArray< int > &out, bool wrap) |
int | labelImage2D (const MultidimArray< double > &I, MultidimArray< double > &label, int neighbourhood) |
int | labelImage3D (const MultidimArray< double > &V, MultidimArray< double > &label) |
void | removeSmallComponents (MultidimArray< double > &I, int size, int neighbourhood) |
void | keepBiggestComponent (MultidimArray< double > &I, double percentage, int neighbourhood) |
void | fillBinaryObject (MultidimArray< double > &I, int neighbourhood) |
void | varianceFilter (MultidimArray< double > &I, int kernelSize, bool relative) |
void | noisyZonesFilter (MultidimArray< double > &I, int kernelSize) |
double | giniCoeff (MultidimArray< double > &I, int varKernelSize) |
double | OtsuSegmentation (MultidimArray< double > &V) |
double | EntropySegmentation (MultidimArray< double > &V) |
double | EntropyOtsuSegmentation (MultidimArray< double > &V, double percentil, bool binarizeVolume) |
double | fastCorrentropy (const MultidimArray< double > &x, const MultidimArray< double > &y, double sigma, const GaussianInterpolator &G, const MultidimArray< int > &mask) |
double | imedDistance (const MultidimArray< double > &I1, const MultidimArray< double > &I2) |
double | imedNormalizedDistance (const MultidimArray< double > &I1, const MultidimArray< double > &I2) |
double | correlationMasked (const MultidimArray< double > &I1, const MultidimArray< double > &I2) |
double | correlationWeighted (MultidimArray< double > &I1, MultidimArray< double > &I2) |
double | svdCorrelation (const MultidimArray< double > &I1, const MultidimArray< double > &I2, const MultidimArray< int > *mask) |
void | covarianceMatrix (const MultidimArray< double > &I, Matrix2D< double > &C) |
template float | bestShift (MultidimArray< float > &, float &, float &, const MultidimArray< int > *, int) |
template<typename T > | |
T | bestShift (MultidimArray< T > &Mcorr, T &shiftX, T &shiftY, const MultidimArray< int > *mask, int maxShift) |
double | bestShift (const MultidimArray< double > &I1, const MultidimArray< std::complex< double > > &FFTI1, const MultidimArray< double > &I2, double &shiftX, double &shiftY, CorrelationAux &aux, const MultidimArray< int > *mask, int maxShift) |
double | bestShift (const MultidimArray< double > &I1, const MultidimArray< double > &I2, double &shiftX, double &shiftY, CorrelationAux &aux, const MultidimArray< int > *mask, int maxShift) |
double | bestShift (const MultidimArray< std::complex< double > > &FFTI1, const MultidimArray< std::complex< double > > &FFTI2, MultidimArray< double > &Mcorr, double &shiftX, double &shiftY, CorrelationAux &aux, const MultidimArray< int > *mask, int maxShift) |
void | bestShift (const MultidimArray< double > &I1, const MultidimArray< double > &I2, double &shiftX, double &shiftY, double &shiftZ, CorrelationAux &aux, const MultidimArray< int > *mask) |
void | bestNonwrappingShift (const MultidimArray< double > &I1, const MultidimArray< double > &I2, double &shiftX, double &shiftY, CorrelationAux &aux) |
void | bestNonwrappingShift (const MultidimArray< double > &I1, const MultidimArray< std::complex< double > > &FFTI1, const MultidimArray< double > &I2, double &shiftX, double &shiftY, CorrelationAux &aux) |
double | bestShiftRealSpace (const MultidimArray< double > &I1, MultidimArray< double > &I2, double &shiftX, double &shiftY, const MultidimArray< int > *mask, int maxShift, double shiftStep) |
void | computeAlignmentTransforms (const MultidimArray< double > &I, AlignmentTransforms &ITransforms, AlignmentAux &aux, CorrelationAux &aux2) |
double | alignImages (const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3) |
double | alignImages (const MultidimArray< double > &Iref, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3) |
double | alignImages (const MultidimArray< double > &Iref, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap) |
double | alignImagesConsideringMirrors (const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3, bool wrap, const MultidimArray< int > *mask) |
double | alignImagesConsideringMirrors (const MultidimArray< double > &Iref, MultidimArray< double > &I, Matrix2D< double > &M, bool wrap) |
double | alignImagesConsideringMirrors (const MultidimArray< double > &Iref, MultidimArray< double > &I, Matrix2D< double > &M, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3, bool wrap, const MultidimArray< int > *mask) |
void | alignSetOfImages (MetaData &MD, MultidimArray< double > &Iavg, int Niter, bool considerMirror) |
double | fastBestRotation (const MultidimArray< double > &IrefCyl, const MultidimArray< double > &Icyl, CorrelationAux &aux, VolumeAlignmentAux &aux2, double deltaAng) |
double | fastBestRotationAroundZ (const MultidimArray< double > &IrefCyl, const MultidimArray< double > &I, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
double | fastBestRotationAroundY (const MultidimArray< double > &IrefCyl, const MultidimArray< double > &I, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
double | fastBestRotationAroundX (const MultidimArray< double > &IrefCyl, const MultidimArray< double > &I, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
void | fastBestRotation (const MultidimArray< double > &IrefCylZ, const MultidimArray< double > &IrefCylY, const MultidimArray< double > &IrefCylX, const MultidimArray< double > &I, const MultidimArray< double > &Icurrent, MultidimArray< double > &Ifinal, char axis, Matrix2D< double > &R, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
void | fastBestRotation (const MultidimArray< double > &IrefCylZ, const MultidimArray< double > &IrefCylY, const MultidimArray< double > &IrefCylX, MultidimArray< double > &I, const String &eulerAngles, Matrix2D< double > &R, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
double | bestRotationAroundZ (const MultidimArray< double > &Iref, const MultidimArray< double > &I, CorrelationAux &aux, VolumeAlignmentAux &aux2) |
double | unnormalizedGaussian2D (const Matrix1D< double > &r, const Matrix1D< double > &mu, const Matrix2D< double > &sigmainv) |
void | estimateGaussian2D (const MultidimArray< double > &I, double &a, double &b, Matrix1D< double > &mu, Matrix2D< double > &sigma, bool estimateMu, int iterations) |
void | fourierBesselDecomposition (const MultidimArray< double > &img_in, double r2, int k1, int k2) |
double | Shah_energy (const MultidimArray< double > &img, const MultidimArray< double > &surface_strength, const MultidimArray< double > &edge_strength, double K, const Matrix1D< double > &W) |
double | Update_surface_Shah (MultidimArray< double > &img, MultidimArray< double > &surface_strength, MultidimArray< double > &edge_strength, const Matrix1D< double > &W) |
double | Update_edge_Shah (MultidimArray< double > &img, MultidimArray< double > &surface_strength, MultidimArray< double > &edge_strength, double K, const Matrix1D< double > &W) |
void | smoothingShah (MultidimArray< double > &img, MultidimArray< double > &surface_strength, MultidimArray< double > &edge_strength, const Matrix1D< double > &W, int OuterLoops, int InnerLoops, int RefinementLoops, bool adjust_range) |
double | tomographicDiffusion (MultidimArray< double > &V, const Matrix1D< double > &alpha, double lambda) |
void | rotationalInvariantMoments (const MultidimArray< double > &img, const MultidimArray< int > *mask, MultidimArray< double > &v_out) |
void | inertiaMoments (const MultidimArray< double > &img, const MultidimArray< int > *mask, Matrix1D< double > &v_out, Matrix2D< double > &u) |
void | fillTriangle (MultidimArray< double > &img, int *tx, int *ty, double color) |
void | localThresholding (MultidimArray< double > &img, double C, double dimLocal, MultidimArray< int > &result, MultidimArray< int > *mask) |
void | centerImageTranslationally (MultidimArray< double > &I, CorrelationAux &aux) |
void | centerImageRotationally (MultidimArray< double > &I, RotationalCorrelationAux &aux) |
Matrix2D< double > | centerImage (MultidimArray< double > &I, CorrelationAux &aux, RotationalCorrelationAux &aux2, int Niter, bool limitShift) |
void | forcePositive (MultidimArray< double > &V) |
void | computeEdges (const MultidimArray< double > &vol, MultidimArray< double > &vol_edge) |
void | forceDWTSparsity (MultidimArray< double > &V, double eps) |
double | denoiseTVenergy (double mu, const MultidimArray< double > &X, const MultidimArray< double > &Y, double s, double q, double lambda, double sigmag, double g) |
void | denoiseTVgradient (double mu, const MultidimArray< double > &X, const MultidimArray< double > &Y, double s, double q, double lambda, double sigmag, double g, MultidimArray< double > &gradientI) |
void | denoiseTVproj (const MultidimArray< double > &X, const MultidimArray< double > &Y, double theta, MultidimArray< double > &dold) |
void | denoiseTVFilter (MultidimArray< double > &xnew, int maxIter) |
void | matlab_filter (Matrix1D< double > &B, Matrix1D< double > &A, const MultidimArray< double > &X, MultidimArray< double > &Y, MultidimArray< double > &Z) |
template<typename T > | |
double | mutualInformation (const MultidimArray< T > &x, const MultidimArray< T > &y, int nx, int ny, const MultidimArray< int > *mask) |
Variables | |
constexpr double | SHIFT_THRESHOLD = 0.95 |
constexpr float | ROTATE_THRESHOLD = 1.0 |
constexpr double | INITIAL_SHIFT_THRESHOLD = SHIFT_THRESHOLD + 1.0 |
constexpr float | INITIAL_ROTATE_THRESHOLD = ROTATE_THRESHOLD + 1.0 |
constexpr double | SHAH_CONVERGENCE_THRESHOLD = 0.0001 |
double alignImages | ( | const MultidimArray< double > & | Iref, |
const AlignmentTransforms & | IrefTransforms, | ||
MultidimArray< double > & | I, | ||
Matrix2D< double > & | M, | ||
bool | wrap, | ||
AlignmentAux & | aux, | ||
CorrelationAux & | aux2, | ||
RotationalCorrelationAux & | aux3 | ||
) |
Definition at line 2047 of file filters.cpp.
double alignImagesConsideringMirrors | ( | const MultidimArray< double > & | Iref, |
const AlignmentTransforms & | IrefTransforms, | ||
MultidimArray< double > & | I, | ||
Matrix2D< double > & | M, | ||
AlignmentAux & | aux, | ||
CorrelationAux & | aux2, | ||
RotationalCorrelationAux & | aux3, | ||
bool | wrap, | ||
const MultidimArray< int > * | mask = nullptr |
||
) |
Fast alignment of two images considering mirrors. The transforms of Iref are presumed to be precomputed in IrefTransforms.
Definition at line 2150 of file filters.cpp.
double alignImagesConsideringMirrors | ( | const MultidimArray< double > & | Iref, |
MultidimArray< double > & | I, | ||
Matrix2D< double > & | M, | ||
bool | wrap | ||
) |
Align two images considering mirrors
Definition at line 2180 of file filters.cpp.
void alignSetOfImages | ( | MetaData & | MD, |
MultidimArray< double > & | Iavg, | ||
int | Niter = 10 , |
||
bool | considerMirror = true |
||
) |
Align a set of images. Align a set of images and produce a class average as well as the set of alignment parameters. The output is in Iavg. The metadata is modified by adding the alignment information (transformation and euclidean distance to the average. The process is iterative, first an average is computed. All images are aligned to the average, and this is updated. The process is run for a given number of iterations.
Definition at line 2199 of file filters.cpp.
void bestNonwrappingShift | ( | const MultidimArray< double > & | I1, |
const MultidimArray< std::complex< double > > & | FFTI1, | ||
const MultidimArray< double > & | I2, | ||
double & | shiftX, | ||
double & | shiftY, | ||
CorrelationAux & | aux | ||
) |
Translational search (non-wrapping). Assumes that the FFTI1 is already computed.
Definition at line 1903 of file filters.cpp.
template float bestShift | ( | MultidimArray< float > & | , |
float & | , | ||
float & | , | ||
const MultidimArray< int > * | , | ||
int | |||
) |
T bestShift | ( | MultidimArray< T > & | Mcorr, |
T & | shiftX, | ||
T & | shiftY, | ||
const MultidimArray< int > * | mask, | ||
int | maxShift | ||
) |
Definition at line 1594 of file filters.cpp.
double bestShift | ( | const MultidimArray< double > & | I1, |
const MultidimArray< std::complex< double > > & | FFTI1, | ||
const MultidimArray< double > & | I2, | ||
double & | shiftX, | ||
double & | shiftY, | ||
CorrelationAux & | aux, | ||
const MultidimArray< int > * | mask = nullptr , |
||
int | maxShift = -1 |
||
) |
Translational search. Assumes that FFTI1 is already computed.
Definition at line 1721 of file filters.cpp.
double bestShift | ( | const MultidimArray< std::complex< double > > & | FFTI1, |
const MultidimArray< std::complex< double > > & | FFTI2, | ||
MultidimArray< double > & | Mcorr, | ||
double & | shiftX, | ||
double & | shiftY, | ||
CorrelationAux & | aux, | ||
const MultidimArray< int > * | mask = nullptr , |
||
int | maxShift = -1 |
||
) |
Translational search. Assumes that FFTI1 and FFTI2 are already computed. Mcorr must already have the right size.
Definition at line 1744 of file filters.cpp.
void computeAlignmentTransforms | ( | const MultidimArray< double > & | I, |
AlignmentTransforms & | ITransforms, | ||
AlignmentAux & | aux, | ||
CorrelationAux & | aux2 | ||
) |
Definition at line 2035 of file filters.cpp.
void computeEdges | ( | const MultidimArray< double > & | vol, |
MultidimArray< double > & | vol_edge | ||
) |
Compute edges with Sobel
Definition at line 3517 of file filters.cpp.
double correlationMasked | ( | const MultidimArray< double > & | I1, |
const MultidimArray< double > & | I2 | ||
) |
Masked correlation based on standard deviation values.
Definition at line 1397 of file filters.cpp.
double correlationWeighted | ( | MultidimArray< double > & | I1, |
MultidimArray< double > & | I2 | ||
) |
Weighted correlation based on differences between images.
Definition at line 1457 of file filters.cpp.
void covarianceMatrix | ( | const MultidimArray< double > & | I, |
Matrix2D< double > & | C | ||
) |
Covariance matrix of an image
Definition at line 1582 of file filters.cpp.
double fastBestRotation | ( | const MultidimArray< double > & | IrefCyl, |
const MultidimArray< double > & | Icyl, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2, | ||
double | deltaAng | ||
) |
Definition at line 2255 of file filters.cpp.
void fastBestRotation | ( | const MultidimArray< double > & | IrefCylZ, |
const MultidimArray< double > & | IrefCylY, | ||
const MultidimArray< double > & | IrefCylX, | ||
const MultidimArray< double > & | I, | ||
const MultidimArray< double > & | Icurrent, | ||
MultidimArray< double > & | Ifinal, | ||
char | axis, | ||
Matrix2D< double > & | R, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2 | ||
) |
Definition at line 2318 of file filters.cpp.
void fastBestRotation | ( | const MultidimArray< double > & | IrefCylZ, |
const MultidimArray< double > & | IrefCylY, | ||
const MultidimArray< double > & | IrefCylX, | ||
MultidimArray< double > & | I, | ||
const String & | eulerAngles, | ||
Matrix2D< double > & | R, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2 | ||
) |
Find a ZYZ rotation that transforms I into Iref. The rotation matrix is returned in R. I is modified to be aligned.
Definition at line 2341 of file filters.cpp.
double fastBestRotationAroundX | ( | const MultidimArray< double > & | IrefCylX, |
const MultidimArray< double > & | I, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2 | ||
) |
Fast best rotation around X
Definition at line 2304 of file filters.cpp.
double fastBestRotationAroundY | ( | const MultidimArray< double > & | IrefCylY, |
const MultidimArray< double > & | I, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2 | ||
) |
Fast best rotation around Y
Definition at line 2290 of file filters.cpp.
double fastBestRotationAroundZ | ( | const MultidimArray< double > & | IrefCylZ, |
const MultidimArray< double > & | I, | ||
CorrelationAux & | aux, | ||
VolumeAlignmentAux & | aux2 | ||
) |
Fast best rotation around Z
Definition at line 2276 of file filters.cpp.
double fastCorrentropy | ( | const MultidimArray< double > & | x, |
const MultidimArray< double > & | y, | ||
double | sigma, | ||
const GaussianInterpolator & | G, | ||
const MultidimArray< int > & | mask | ||
) |
Correntropy with mask.
Definition at line 1244 of file filters.cpp.
void forceDWTSparsity | ( | MultidimArray< double > & | V, |
double | eps | ||
) |
Force sparsity. Only eps*100 % of the DWT coefficients are kept. It is assumed that the input volume is cubic.
Definition at line 3539 of file filters.cpp.
double imedDistance | ( | const MultidimArray< double > & | I1, |
const MultidimArray< double > & | I2 | ||
) |
IMED distance. See Wang, L et al. On the Euclidean distance of images. IEEE PAMI 27: 1334-1339 (2005)
Definition at line 1269 of file filters.cpp.
double imedNormalizedDistance | ( | const MultidimArray< double > & | I1, |
const MultidimArray< double > & | I2 | ||
) |
IMED normalized distance.
Definition at line 1321 of file filters.cpp.
void matlab_filter | ( | Matrix1D< double > & | B, |
Matrix1D< double > & | A, | ||
const MultidimArray< double > & | X, | ||
MultidimArray< double > & | Y, | ||
MultidimArray< double > & | Z | ||
) |
Definition at line 4256 of file filters.cpp.
void regionGrowing3D | ( | const MultidimArray< double > & | V_in, |
MultidimArray< double > & | V_out, | ||
int | k, | ||
int | i, | ||
int | j, | ||
float | stop_colour = 1 , |
||
float | filling_colour = 1 , |
||
bool | less = true |
||
) |
Region growing for volumes
Given a position inside a volume this function grows a region with (filling_colour) until it finds a border of value (stop_colour). If the point is outside the volume then nothing is done.
If less is true the region is grown in sucha a way that all voxels in its border are greater than the region voxels. If less is false the region is grown so that all voxels on its border are smaller than the region voxels.
Definition at line 412 of file filters.cpp.
void regionGrowing3DEqualValue | ( | const MultidimArray< double > & | V_in, |
MultidimArray< int > & | V_out, | ||
int | filling_value | ||
) |
Region growing with equal values for volumes
Given a position inside a volume this function grows a region with (filling_value) until it finds a border. If the point is outside the volume then nothing is done.
The growing only considers those voxels with value equal to the selected voxel
Definition at line 499 of file filters.cpp.
double Shah_energy | ( | const MultidimArray< double > & | img, |
const MultidimArray< double > & | surface_strength, | ||
const MultidimArray< double > & | edge_strength, | ||
double | K, | ||
const Matrix1D< double > & | W | ||
) |
Definition at line 2511 of file filters.cpp.
double svdCorrelation | ( | const MultidimArray< double > & | I1, |
const MultidimArray< double > & | I2, | ||
const MultidimArray< int > * | mask = nullptr |
||
) |
SVD correlation.
Definition at line 1535 of file filters.cpp.
double unnormalizedGaussian2D | ( | const Matrix1D< double > & | r, |
const Matrix1D< double > & | mu, | ||
const Matrix2D< double > & | sigmainv | ||
) |
Unnormalized 2D gaussian value using covariance
This function returns the value of a multivariate (2D) gaussian function at the point r (column vector of dimension 2).
G(r,mu,sigma)=exp(-0.5 * (r-mu)^t sigma^-1 (r-mu))
Definition at line 2379 of file filters.cpp.
double Update_edge_Shah | ( | MultidimArray< double > & | img, |
MultidimArray< double > & | surface_strength, | ||
MultidimArray< double > & | edge_strength, | ||
double | K, | ||
const Matrix1D< double > & | W | ||
) |
Definition at line 2657 of file filters.cpp.
double Update_surface_Shah | ( | MultidimArray< double > & | img, |
MultidimArray< double > & | surface_strength, | ||
MultidimArray< double > & | edge_strength, | ||
const Matrix1D< double > & | W | ||
) |
Definition at line 2577 of file filters.cpp.
constexpr float INITIAL_ROTATE_THRESHOLD = ROTATE_THRESHOLD + 1.0 |
Definition at line 2045 of file filters.cpp.
constexpr double INITIAL_SHIFT_THRESHOLD = SHIFT_THRESHOLD + 1.0 |
Definition at line 2044 of file filters.cpp.
constexpr float ROTATE_THRESHOLD = 1.0 |
Definition at line 2043 of file filters.cpp.
constexpr double SHAH_CONVERGENCE_THRESHOLD = 0.0001 |
Definition at line 2719 of file filters.cpp.
constexpr double SHIFT_THRESHOLD = 0.95 |
Definition at line 2042 of file filters.cpp.