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

#include <volume_homogenizer.h>

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

Public Member Functions

 ProgVolumeHomogenizer ()
 
void readParams ()
 
void defineParams ()
 
void xmipp2Opencv (const MultidimArray< double > &xmippArray, cv::Mat &opencvMat)
 
void convert2Uint8 (cv::Mat opencvDoubleMat, cv::Mat &opencvUintMat)
 
void opencv2Xmipp (const cv::Mat &opencvMat, MultidimArray< double > &xmippArray)
 
void run ()
 
void parameterList (size_t imgSize, int maxParamsTrial, float *paramList)
 
- Public Member Functions inherited from XmippProgram
const char * getParam (const char *param, int arg=0)
 
const char * getParam (const char *param, const char *subparam, int arg=0)
 
int getIntParam (const char *param, int arg=0)
 
int getIntParam (const char *param, const char *subparam, int arg=0)
 
double getDoubleParam (const char *param, int arg=0)
 
double getDoubleParam (const char *param, const char *subparam, int arg=0)
 
float getFloatParam (const char *param, int arg=0)
 
float getFloatParam (const char *param, const char *subparam, int arg=0)
 
void getListParam (const char *param, StringVector &list)
 
int getCountParam (const char *param)
 
bool checkParam (const char *param)
 
bool existsParam (const char *param)
 
void addParamsLine (const String &line)
 
void addParamsLine (const char *line)
 
ParamDefgetParamDef (const char *param) const
 
virtual void quit (int exit_code=0) const
 
virtual int tryRun ()
 
void initProgress (size_t total, size_t stepBin=60)
 
void setProgress (size_t value=0)
 
void endProgress ()
 
void processDefaultComment (const char *param, const char *left)
 
void setDefaultComment (const char *param, const char *comment)
 
virtual void initComments ()
 
void setProgramName (const char *name)
 
void addUsageLine (const char *line, bool verbatim=false)
 
void clearUsage ()
 
void addExampleLine (const char *example, bool verbatim=true)
 
void addSeeAlsoLine (const char *seeAlso)
 
void addKeywords (const char *keywords)
 
const char * name () const
 
virtual void usage (int verb=0) const
 
virtual void usage (const String &param, int verb=2)
 
int version () const
 
virtual void show () const
 
virtual void read (int argc, const char **argv, bool reportErrors=true)
 
virtual void read (int argc, char **argv, bool reportErrors=true)
 
void read (const String &argumentsLine)
 
 XmippProgram ()
 
 XmippProgram (int argc, const char **argv)
 
virtual ~XmippProgram ()
 

Public Attributes

FileName fnVol
 
FileName fnRef
 
FileName fnSetOfImgIn
 
FileName fnSetOfImgOut
 
int winSize
 
double cutFreq
 
MetaDataDb mdPartialParticles
 
size_t rank
 
size_t Nprocessors
 
double pyr_scale
 
int levels
 
int iterations
 
bool addToInput
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Additional Inherited Members

- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 
- Protected Attributes inherited from XmippProgram
int errorCode
 
ProgramDefprogDef
 Program definition and arguments parser. More...
 
std::map< String, CommentListdefaultComments
 
int argc
 Original command line arguments. More...
 
const char ** argv
 

Detailed Description

Definition at line 39 of file volume_homogenizer.h.

Constructor & Destructor Documentation

◆ ProgVolumeHomogenizer()

ProgVolumeHomogenizer::ProgVolumeHomogenizer ( )

Definition at line 32 of file volume_homogenizer.cpp.

33 {
34  rank = 0;
35  Nprocessors = 1;
36 }

Member Function Documentation

◆ convert2Uint8()

void ProgVolumeHomogenizer::convert2Uint8 ( cv::Mat  opencvDoubleMat,
cv::Mat &  opencvUintMat 
)

Definition at line 89 of file volume_homogenizer.cpp.

90 {
91  double min,max;
92  cv::minMaxLoc(opencvDoubleMat, &min, &max);
93  opencvDoubleMat.convertTo(opencvUintMat, CV_8U, 255.0/(max - min), -min * 255.0/(max - min));
94 }
void min(Image< double > &op1, const Image< double > &op2)
void max(Image< double > &op1, const Image< double > &op2)

◆ defineParams()

void ProgVolumeHomogenizer::defineParams ( )
virtual

Function in which the param of each Program are defined.

Reimplemented from XmippProgram.

Definition at line 52 of file volume_homogenizer.cpp.

53 {
54  addUsageLine("Correcting the set of input images of the input volume with ");
55  addUsageLine("respect to the reference map and using optical flow algorithm");
56  addParamsLine(" -i <selfile> : Selfile with input volume. This is the volume that we aimed to deform its related particles.");
57  addParamsLine(" : Then we will use its deformed (corrected) images to merge with reference map images.");
58  addParamsLine(" -ref <selfile> : Selfile with reference volume. This is the volume that we use as the reference in OF algorithm.");
59  addParamsLine(" : This is the volume that we will be deformed");
60  addParamsLine(" -img <selfile> : Selfile with input aligned images. These images are related to the input map");
61  addParamsLine(" [-o <rootname=\"\">] : Output fileName");
62  addParamsLine(" : Output contains the list of corrected (deformed) images and their angles with respect to the reference map");
63  addParamsLine(" : NOTE: you do not need to define any extension for the output root name. ");
64  addParamsLine(" : This program will automatically create one .stk and one .xmd");
65  addParamsLine(" [--cutFreq <cutFreq=0.5>] : cut-off frequency to use for low-pass filtering of input and reference volumes. This is digital frequency");
66  addParamsLine(" [--pyr_scale <pyr_scale=0.5>] : parameter, specifying the image scale (<1) to build pyramids for each image.");
67  addParamsLine(" : pyr_scale=0.5 means a classical pyramid, where each next layer is twice smaller than the previous one.");
68  addParamsLine(" [--levels <levels=2>] : number of pyramid layers including the initial image; levels=1 means");
69  addParamsLine(" : that no extra layers are created and only the original images are used.");
70  addParamsLine(" [--winSize <winSize=50>] : averaging window size; larger values increase the algorithm robustness to image noise and give more chances");
71  addParamsLine(" : for fast motion detection, but yield more blurred motion field.");
72  addParamsLine(" [--iterations <iterations=10>] : number of iterations the algorithm does at each pyramid level.");
73  addParamsLine(" [--auto] : Automatic determination of pyr_scale, levels and iterations");
74 
75  addExampleLine("xmipp_volume_homogenizer -i volume1.vol -ref volume2.vol -img particlesOfVolume1.xmd -o outputParticles");
76 }
void addExampleLine(const char *example, bool verbatim=true)
void addUsageLine(const char *line, bool verbatim=false)
void addParamsLine(const String &line)

◆ opencv2Xmipp()

void ProgVolumeHomogenizer::opencv2Xmipp ( const cv::Mat &  opencvMat,
MultidimArray< double > &  xmippArray 
)

Definition at line 97 of file volume_homogenizer.cpp.

98 {
99  int h = opencvMat.rows;
100  int w = opencvMat.cols;
101  xmippArray.initZeros(h, w);
103  DIRECT_A2D_ELEM(xmippArray,i,j) = opencvMat.at<float>(i,j);
104 }
#define FOR_ALL_DIRECT_ELEMENTS_IN_ARRAY2D(m)
#define DIRECT_A2D_ELEM(v, i, j)
doublereal * w
#define i
#define j
void initZeros(const MultidimArray< T1 > &op)

◆ parameterList()

void ProgVolumeHomogenizer::parameterList ( size_t  imgSize,
int  maxParamsTrial,
float *  paramList 
)

Definition at line 106 of file volume_homogenizer.cpp.

107 {
108  srand (time(NULL));
109  int offset = 0;
110  for (int i=0; i < maxParamsTrial; i++)
111  {
112  if (i==0)
113  {
114  paramList[offset] = pyr_scale;
115  paramList[1+offset] = levels;
116  paramList[2+offset] = iterations;
117  }
118  else
119  {
120  paramList[offset] = (float(0.5*rand()) / RAND_MAX + 0.5); // fraction of image per pyramid 0.5, 2, winSize, 15
121  paramList[1+offset] = (rand() % 10+1); // number of pyramids (int)
122  paramList[2+offset] = (rand() % 15 + 1); // number of iterations (int)
123  }
124 
125  offset += numParams;
126 
127  }
128 
129 #ifdef DEBUG
130  std::cout << "\n" << std::endl;
131  for (int i=0; i < maxParamsTrial*numParams; i++)
132  {
133  std::cout << paramList[i] << std::endl;
134  }
135 #endif
136 
137 }
#define i
#define numParams

◆ readParams()

void ProgVolumeHomogenizer::readParams ( )
virtual

Function in which each program will read parameters that it need. If some error occurs the usage will be printed out.

Reimplemented from XmippProgram.

Definition at line 38 of file volume_homogenizer.cpp.

39 {
40  fnVol = getParam("-i");
41  fnRef = getParam("-ref");
42  fnSetOfImgIn = getParam("-img");
43  fnSetOfImgOut = getParam("-o");
44  winSize = getIntParam("--winSize");
45  cutFreq = getDoubleParam("--cutFreq");
46  pyr_scale = getDoubleParam("--pyr_scale");
47  levels = getIntParam("--levels");
48  iterations = getIntParam("--iterations");
49  addToInput = checkParam("--auto");
50 }
double getDoubleParam(const char *param, int arg=0)
const char * getParam(const char *param, int arg=0)
bool checkParam(const char *param)
int getIntParam(const char *param, int arg=0)

◆ run()

void ProgVolumeHomogenizer::run ( )
virtual

This function will be start running the program. it also should be implemented by derived classes.

Reimplemented from XmippProgram.

Definition at line 140 of file volume_homogenizer.cpp.

141 {
142  FileName fn_proj, fnIn;
143  Image<double> inV, refV;
144  Image<double> imgIn, imgCorr;
145  MetaDataDb setOfImgIn, setOfImgOut;
146  double rot, tilt, psi;
147  bool flip;
148  Projection projIn, projRef;
149  cv::Mat ProjIn, ProjRef, ProjIn8, ProjRef8, ImgIn;
150  cv::Mat flow, ImgCorr;
151  cv::Mat planes[]={flow, flow};
152  FileName stackName = fnSetOfImgOut.removeAllExtensions() + ".stk";
153  FileName mdName = fnSetOfImgOut.removeAllExtensions() + ".xmd";
154  MDRowSql rowInput;
155 
156  inV.read(fnVol);
157  inV().setXmippOrigin();
158 
159  refV.read(fnRef);
160  refV().setXmippOrigin();
161 
162  setOfImgIn.read(fnSetOfImgIn);
163  setOfImgIn.removeDisabled();
164 
165  fn_proj = stackName;
166  createEmptyFile(fn_proj, XSIZE(inV()), YSIZE(inV()), 1, setOfImgIn.size(), true, WRITE_OVERWRITE);
167 
168  //filtering the input and reference volumes
169  FourierFilter Filter;
170  Filter.FilterBand=LOWPASS;
171  Filter.FilterShape=RAISED_COSINE;
172  Filter.w1=cutFreq;
173  Filter.generateMask(inV());
174  Filter.do_generate_3dmask=true;
175  Filter.applyMaskSpace(inV());
176  Filter.applyMaskSpace(refV());
177 
178  if (addToInput) //Do automatic OF parameter search
179  {
180  int maxImagsCheck = 5;
181  int maxParamsTrial = 100;
182  cv::Mat corr;
183  double bestCorr = -1e6;
184  float* paramList = new float[numParams*maxParamsTrial];
185 
186  std::cout << "Estimating optimal parameters for OF alignment" << std::endl;
187  init_progress_bar(maxImagsCheck);
188 
189  size_t Xdim = 0;
190  size_t Ydim = 0;
191  size_t Zdim = 0;
192  size_t Ndim = 0;
193 
194  ApplyGeoParams p;
195  p.only_apply_shifts = true;
196  imgIn.readApplyGeo(setOfImgIn, 1, p);
197  imgIn.getDimensions(Xdim,Ydim,Zdim,Ndim);
198 
199  parameterList(Xdim, maxParamsTrial, paramList);
200 
201  for (size_t i = 0; i < maxImagsCheck; i++)
202  {
203  imgIn.readApplyGeo(setOfImgIn, i+1, p);
204 
205  setOfImgIn.getRow(rowInput,i+1);
206  rowInput.getValue(MDL_ANGLE_ROT, rot);
207  rowInput.getValue(MDL_ANGLE_TILT, tilt);
208  rowInput.getValue(MDL_ANGLE_PSI, psi);
209  if (rowInput.containsLabel(MDL_FLIP))
210  rowInput.getValue(MDL_FLIP, flip);
211 
212  //Reprojection from input and reference volumes to calculate optical flow (OF)
213  projectVolume(inV(), projIn, YSIZE(inV()), XSIZE(inV()), rot, tilt, psi);
214  projectVolume(refV(), projRef, YSIZE(refV()), XSIZE(refV()), rot, tilt, psi);
215 
216  if (flip)
217  {
218  projIn.mirrorX();
219  projRef.mirrorX();
220  }
221 
222  //Preparing input data to use for OF algorithm
223  xmipp2Opencv(projIn(), ImgIn); //We wamt to compare the projIn() with the projRef() imgIn here is only a holder to compare
224  xmipp2Opencv(projIn(), ProjIn);
225  xmipp2Opencv(projRef(), ProjRef);
226 
227  convert2Uint8(ProjIn,ProjIn8);
228  convert2Uint8(ProjRef,ProjRef8);
229 
230  int offset = 0;
231  for (size_t j = 0; j < maxParamsTrial; ++j)
232  {
233  cv::calcOpticalFlowFarneback(ProjRef8, ProjIn8, flow, paramList[0+offset], paramList[1+offset],paramList[2+offset], paramList[3+j], 7, 1.5, 0);
234  cv::split(flow, planes);
235 
236  for( int row = 0; row < planes[0].rows; row++ )
237  for( int col = 0; col < planes[0].cols; col++ )
238  {
239  planes[0].at<float>(row,col) += (float)col;
240  planes[1].at<float>(row,col) += (float)row;
241  }
242 
243  //applying the flow on the input image to use as the corrected one
244  cv::remap(ImgIn, ImgCorr, planes[0], planes[1], cv::INTER_CUBIC);
245  cv::matchTemplate(ImgCorr, ProjRef, corr, cv::TM_CCOEFF_NORMED);
246 
247  if( corr.at<float>(0,0) > bestCorr)
248  {
249  bestCorr = corr.at<float>(0,0);
250 
251  pyr_scale = paramList[0+offset];
252  levels = paramList[1+offset];
253  iterations = paramList[2+offset];
254  }
255 
256  offset += numParams;
257 
258  }
259 
260  progress_bar(i+1);
261 
262  }
263 
264 
265  std::cout << "Current parameters for OF: " << std::endl;
266  std::cout << "fitness value : " << bestCorr << std::endl;
267  std::cout << "Scale : " << pyr_scale << " " << " levels : "<< levels <<" WinSize : " << winSize << " Iterations : " << iterations << std::endl;
268 
269  }
270 
271  //calculating progress time
272  size_t maxNImg = setOfImgIn.size();
273 
274  if (rank == 0)
275  init_progress_bar(maxNImg);
276 
277  for (size_t i = 0; i < maxNImg; i++)
278  {
279  if ((i+1) % Nprocessors == rank)
280  {
281  ApplyGeoParams p;
282  p.only_apply_shifts = true;
283  imgIn.readApplyGeo(setOfImgIn, i+1, p);
284 
285  setOfImgIn.getRow(rowInput,i+1);
286  rowInput.getValue(MDL_ANGLE_ROT, rot);
287  rowInput.getValue(MDL_ANGLE_TILT, tilt);
288  rowInput.getValue(MDL_ANGLE_PSI, psi);
289  if (rowInput.containsLabel(MDL_FLIP))
290  rowInput.getValue(MDL_FLIP, flip);
291 
292  //Reprojection from input and reference volumes to calculate optical flow (OF)
293  projectVolume(inV(), projIn, YSIZE(inV()), XSIZE(inV()), rot, tilt, psi);
294  projectVolume(refV(), projRef, YSIZE(refV()), XSIZE(refV()), rot, tilt, psi);
295 
296  if (flip)
297  {
298  projIn.mirrorX();
299  projRef.mirrorX();
300  }
301 
302  //preparing input data to use for OF algorithm
303  xmipp2Opencv(imgIn(), ImgIn);
304  xmipp2Opencv(projIn(), ProjIn);
305  xmipp2Opencv(projRef(), ProjRef);
306  convert2Uint8(ProjIn,ProjIn8);
307  convert2Uint8(ProjRef,ProjRef8);
308 
309  /*OF algorithm/*
310  Parameters:
311  ----------
312  prev first 8-bit single-channel input image.
313  next second input image of the same size and the same type as prev.
314  flow computed flow image that has the same size as prev and type CV_32FC2.
315  pyr_scale parameter, specifying the image scale (<1) to build pyramids for each image; pyr_scale=0.5 means a classical pyramid, where each next layer is twice smaller than the previous one.
316  levels number of pyramid layers including the initial image; levels=1 means that no extra layers are created and only the original images are used.
317  winsize averaging window size; larger values increase the algorithm robustness to image noise and give more chances for fast motion detection, but yield more blurred motion field.
318  iterations number of iterations the algorithm does at each pyramid level.
319  poly_n size of the pixel neighborhood used to find polynomial expansion in each pixel; larger values mean that the image will be approximated with smoother surfaces, yielding more robust algorithm and more blurred motion field, typically poly_n =5 or 7.
320  poly_sigma standard deviation of the Gaussian that is used to smooth derivatives used as a basis for the polynomial expansion; for poly_n=5, you can set poly_sigma=1.1, for poly_n=7, a good value would be poly_sigma=1.5.
321  flags
322  */
323 
324  //cv::calcOpticalFlowFarneback(ProjRef8, ProjIn8, flow, 0.9, 5, winSize, 15, 7, 1.5, 0);
325  //Moshen: cv::calcOpticalFlowFarneback(ProjRef8, ProjIn8, flow, 0.5, 6, winSize, 3, 5, 1.1, 0);
326  //JV: cv::calcOpticalFlowFarneback(ProjRef8, ProjIn8, flow, 0.5, 2, winSize, 15, 7, 1.5, 0);
327 
328 
329  cv::calcOpticalFlowFarneback(ProjRef8, ProjIn8, flow, pyr_scale, levels, winSize, iterations, 7, 1.5, 0);
330  cv::split(flow, planes);
331 
332  for( int row = 0; row < planes[0].rows; row++ )
333  for( int col = 0; col < planes[0].cols; col++ )
334  {
335  planes[0].at<float>(row,col) += (float)col;
336  planes[1].at<float>(row,col) += (float)row;
337  }
338 
339  //applying the flow on the input image to use as the corrected one
340  cv::remap(ImgIn, ImgCorr, planes[0], planes[1], cv::INTER_CUBIC);
341 
342  //preparing output data to use for xmipp
343  opencv2Xmipp(ImgCorr, imgCorr());
344 
345 #ifdef DEBUG
346  if (i==5)
347  {
348  imgIn.write("test_raw.spi"); // Raw image to deform Not filtered or modifed
349  projIn.write("test_projIn.spi"); //map projection of conformation to deform (Noise free and filter)
350  projRef.write("test_projRef.spi"); //map projection of conformation used as reference (deform to this conformation) (Noise free and filter)
351 
352  cv::remap(ProjIn, ImgCorr, planes[0], planes[1], cv::INTER_CUBIC); //apply OF to the map projetion to see something
353  opencv2Xmipp(ImgCorr, imgCorr()); //transform to Xmipp
354  imgCorr.write("test_ProjIn_Deformed.spi"); // Image deformed
355 
356  Image<double> imgFlowX, imgFlowY;
357  opencv2Xmipp(planes[0], imgFlowX());
358  opencv2Xmipp(planes[1], imgFlowY());
359  imgFlowX.write("test_FlowX.spi");
360  imgFlowY.write("test_FlowY.spi");
361  }
362 #endif
363 
364  //filling output metaData
365  fn_proj.compose(i+1, stackName);
366 
367  rowInput.setValue(MDL_IMAGE, fn_proj);
368  rowInput.setValue(MDL_SHIFT_X, 0.0);
369  rowInput.setValue(MDL_SHIFT_Y, 0.0);
370  rowInput.setValue(MDL_SHIFT_Z, 0.0);
371 
372  imgCorr.write(fn_proj, i+1,true, WRITE_OVERWRITE);
373 
374  mdPartialParticles.addRow(rowInput);
375  rowInput.clear();
376  }
377 
378  if (rank==0)
379  progress_bar(i+1);
380  }
381 
382  synchronize();
383  gatherResults();
384 
385  if (rank == 0)
386  mdPartialParticles.write(mdName);
387 
388 }
void init_progress_bar(long total)
void parameterList(size_t imgSize, int maxParamsTrial, float *paramList)
Rotation angle of an image (double,degrees)
#define YSIZE(v)
void clear() override
Tilting angle of an image (double,degrees)
void convert2Uint8(cv::Mat opencvDoubleMat, cv::Mat &opencvUintMat)
Shift for the image in the X axis (double)
void write(const FileName &name="", size_t select_img=ALL_IMAGES, bool isStack=false, int mode=WRITE_OVERWRITE, CastWriteMode castMode=CW_CAST, int _swapWrite=0)
void compose(const String &str, const size_t no, const String &ext="")
Special label to be used when gathering MDs in MpiMetadataPrograms.
FileName removeAllExtensions() const
void mirrorX(void)
Definition: xmipp_image.h:865
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams &params=DefaultApplyGeoParams)
#define i
std::unique_ptr< MDRow > getRow(size_t id) override
size_t addRow(const MDRow &row) override
void setValue(const MDObject &object) override
Flip the image? (bool)
#define XSIZE(v)
void progress_bar(long rlen)
#define numParams
#define RAISED_COSINE
T & getValue(MDLabel label)
void projectVolume(FourierProjector &projector, Projection &P, int Ydim, int Xdim, double rot, double tilt, double psi, const MultidimArray< double > *ctf)
void createEmptyFile(const FileName &filename, int xdim, int ydim, int Zdim, size_t select_img, bool isStack, int mode, int _swapWrite, const MDRowVec *md)
void write(const FileName &outFile, WriteModeMetaData mode=MD_OVERWRITE) const override
size_t size() const override
#define j
bool containsLabel(MDLabel label) const override
void xmipp2Opencv(const MultidimArray< double > &xmippArray, cv::Mat &opencvMat)
virtual void removeDisabled()
double psi(const double x)
Shift for the image in the Z axis (double)
void read(const FileName &inFile, const std::vector< MDLabel > *desiredLabels=NULL, bool decomposeStack=true) override
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
Shift for the image in the Y axis (double)
void opencv2Xmipp(const cv::Mat &opencvMat, MultidimArray< double > &xmippArray)
Name of an image (std::string)
#define LOWPASS
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const

◆ xmipp2Opencv()

void ProgVolumeHomogenizer::xmipp2Opencv ( const MultidimArray< double > &  xmippArray,
cv::Mat &  opencvMat 
)

Definition at line 79 of file volume_homogenizer.cpp.

80 {
81  int h = YSIZE(xmippArray);
82  int w = XSIZE(xmippArray);
83  opencvMat = cv::Mat::zeros(h, w,CV_32FC1);
85  opencvMat.at<float>(i,j) = (float) DIRECT_A2D_ELEM(xmippArray,i,j);
86 }
#define YSIZE(v)
#define FOR_ALL_DIRECT_ELEMENTS_IN_ARRAY2D(m)
#define DIRECT_A2D_ELEM(v, i, j)
doublereal * w
#define i
#define XSIZE(v)
#define j

Member Data Documentation

◆ addToInput

bool ProgVolumeHomogenizer::addToInput

Definition at line 58 of file volume_homogenizer.h.

◆ cutFreq

double ProgVolumeHomogenizer::cutFreq

Definition at line 46 of file volume_homogenizer.h.

◆ fnRef

FileName ProgVolumeHomogenizer::fnRef

Definition at line 42 of file volume_homogenizer.h.

◆ fnSetOfImgIn

FileName ProgVolumeHomogenizer::fnSetOfImgIn

Definition at line 42 of file volume_homogenizer.h.

◆ fnSetOfImgOut

FileName ProgVolumeHomogenizer::fnSetOfImgOut

Definition at line 42 of file volume_homogenizer.h.

◆ fnVol

FileName ProgVolumeHomogenizer::fnVol

Definition at line 42 of file volume_homogenizer.h.

◆ iterations

int ProgVolumeHomogenizer::iterations

Definition at line 56 of file volume_homogenizer.h.

◆ levels

int ProgVolumeHomogenizer::levels

Definition at line 54 of file volume_homogenizer.h.

◆ mdPartialParticles

MetaDataDb ProgVolumeHomogenizer::mdPartialParticles

Definition at line 48 of file volume_homogenizer.h.

◆ Nprocessors

size_t ProgVolumeHomogenizer::Nprocessors

Definition at line 50 of file volume_homogenizer.h.

◆ pyr_scale

double ProgVolumeHomogenizer::pyr_scale

Definition at line 52 of file volume_homogenizer.h.

◆ rank

size_t ProgVolumeHomogenizer::rank

Definition at line 50 of file volume_homogenizer.h.

◆ winSize

int ProgVolumeHomogenizer::winSize

Definition at line 44 of file volume_homogenizer.h.


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