Xmipp  v3.23.11-Nereus
Public Member Functions | Static Public Member Functions | List of all members
BasisFilter Class Reference

#include <filters.h>

Inheritance diagram for BasisFilter:
Inheritance graph
[legend]
Collaboration diagram for BasisFilter:
Collaboration graph
[legend]

Public Member Functions

void readParams (XmippProgram *program)
 
void show ()
 
void apply (MultidimArray< double > &img)
 
- Public Member Functions inherited from XmippFilter
virtual ~XmippFilter ()
 

Static Public Member Functions

static void defineParams (XmippProgram *program)
 

Detailed Description

Definition at line 1575 of file filters.h.

Member Function Documentation

◆ apply()

void BasisFilter::apply ( MultidimArray< double > &  img)
virtual

Apply the filter to an image or volume

Implements XmippFilter.

Definition at line 3812 of file filters.cpp.

3813 {
3814  const MultidimArray<double> &mBasis = basis();
3815  if (XSIZE(img) != XSIZE(mBasis) || YSIZE(img) != YSIZE(mBasis))
3817  "Images and basis are of different size");
3818 
3819  MultidimArray<double> result;
3820  result.initZeros(img);
3821  for (size_t nn = 0; nn < NSIZE(mBasis); ++nn)
3822  {
3823  double cnn = 0;
3824  double *ptrBasis = &NZYX_ELEM(mBasis,nn,0,0,0);
3826  cnn += DIRECT_MULTIDIM_ELEM(img,n) * (*ptrBasis++);
3827  ptrBasis = &NZYX_ELEM(mBasis,nn,0,0,0);
3829  DIRECT_MULTIDIM_ELEM(result,n) += cnn * (*ptrBasis++);
3830  }
3831  img = result;
3832 }
#define NSIZE(v)
#define YSIZE(v)
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
Incorrect MultidimArray size.
Definition: xmipp_error.h:174
#define XSIZE(v)
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
#define NZYX_ELEM(v, l, k, i, j)
void initZeros(const MultidimArray< T1 > &op)
int * n

◆ defineParams()

void BasisFilter::defineParams ( XmippProgram program)
static

Define the parameters for use inside an Xmipp program

Definition at line 3788 of file filters.cpp.

3789 {
3790  program->addParamsLine("== Basis filter ==");
3791  program->addParamsLine(
3792  " [--basis <file> <N=-1>] : Stack file with the basis, N is the number of elements to consider");
3793 }
void addParamsLine(const String &line)

◆ readParams()

void BasisFilter::readParams ( XmippProgram program)
virtual

Read from program command line

Reimplemented from XmippFilter.

Definition at line 3796 of file filters.cpp.

3797 {
3798  fnBasis = program->getParam("--basis");
3799  Nbasis = program->getIntParam("--basis", 1);
3800  basis.read(fnBasis);
3801  if (Nbasis > 0)
3802  basis().resize(Nbasis, 1, YSIZE(basis()), XSIZE(basis()));
3803 }
#define YSIZE(v)
const char * getParam(const char *param, int arg=0)
#define XSIZE(v)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
int getIntParam(const char *param, int arg=0)

◆ show()

void BasisFilter::show ( )
virtual

Show parameters

Reimplemented from XmippFilter.

Definition at line 3805 of file filters.cpp.

3806 {
3807  std::cout << " Basis filter\n" << " Basis file " << fnBasis << std::endl
3808  << " Number of basis " << Nbasis << std::endl;
3809 }

The documentation for this class was generated from the following files: