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

#include <transform_downsample.h>

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

Public Types

enum  TDownsamplingMethod { KER_RECTANGLE, FOURIER, SMOOTH }
 

Public Member Functions

void readParams ()
 
void defineParams ()
 Define params. More...
 
void preProcess ()
 
void processImage (const FileName &fnImg, const FileName &fnImgOut, const MDRow &rowIn, MDRow &rowOut)
 
- Public Member Functions inherited from XmippMetadataProgram
MetaDatagetInputMd ()
 
MetaDataVecgetOutputMd ()
 
 XmippMetadataProgram ()
 Empty constructor. More...
 
virtual int tryRead (int argc, const char **argv, bool reportErrors=true)
 
virtual void init ()
 
virtual void setup (MetaData *md, const FileName &o="", const FileName &oroot="", bool applyGeo=false, MDLabel label=MDL_IMAGE)
 
virtual ~XmippMetadataProgram ()
 
void setMode (WriteModeMetaData _mode)
 
void setupRowOut (const FileName &fnImgIn, const MDRow &rowIn, const FileName &fnImgOut, MDRow &rowOut) const
 Prepare rowout. More...
 
virtual void wait ()
 Wait for the distributor to finish. More...
 
virtual void checkPoint ()
 For very long programs, it may be needed to write checkpoints. More...
 
virtual void run ()
 Run over all images. More...
 
- 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)
 
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 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

double step
 Downsampling factor. More...
 
TDownsamplingMethod method
 
int nThreads
 Number of Threads used in the Fourier Transform. More...
 
MultidimArray< double > kernel
 
- Public Attributes inherited from XmippMetadataProgram
FileName fn_in
 Filenames of input and output Metadata. More...
 
FileName fn_out
 
FileName baseName
 
FileName pathBaseName
 
FileName oextBaseName
 
bool apply_geo
 Apply geo. More...
 
size_t ndimOut
 Output dimensions. More...
 
size_t zdimOut
 
size_t ydimOut
 
size_t xdimOut
 
DataType datatypeOut
 
size_t mdInSize
 Number of input elements. More...
 
- Public Attributes inherited from XmippProgram
bool doRun
 
bool runWithoutArgs
 
int verbose
 Verbosity level. More...
 
int debug
 

Additional Inherited Members

- Protected Member Functions inherited from XmippMetadataProgram
virtual void initComments ()
 
virtual void postProcess ()
 
virtual bool getImageToProcess (size_t &objId, size_t &objIndex)
 
void show () const override
 
virtual void startProcessing ()
 
virtual void finishProcessing ()
 
virtual void writeOutput ()
 
virtual void showProgress ()
 
virtual void defineLabelParam ()
 
- Protected Member Functions inherited from XmippProgram
void defineCommons ()
 
- Protected Attributes inherited from XmippMetadataProgram
WriteModeMetaData mode
 Metadata writing mode: OVERWRITE, APPEND. More...
 
FileName oext
 Output extension and root. More...
 
FileName oroot
 
MDLabel image_label
 MDLabel to be used to read/write images, usually will be MDL_IMAGE. More...
 
bool produces_an_output
 Indicate that a unique final output is produced. More...
 
bool produces_a_metadata
 Indicate that the unique final output file is a Metadata. More...
 
bool each_image_produces_an_output
 Indicate that an output is produced for each image in the input. More...
 
bool allow_apply_geo
 
bool decompose_stacks
 Input Metadata will treat a stack file as a set of images instead of a unique file. More...
 
bool delete_output_stack
 Delete previous output stack file prior to process images. More...
 
bool get_image_info
 Get the input image file dimensions to further operations. More...
 
bool save_metadata_stack
 Save the associated output metadata when output file is a stack. More...
 
bool track_origin
 Include the original input image filename in the output stack. More...
 
bool keep_input_columns
 Keep input metadata columns. More...
 
bool remove_disabled
 Remove disabled images from the input selfile. More...
 
bool allow_time_bar
 Show process time bar. More...
 
bool input_is_metadata
 Input is a metadata. More...
 
bool single_image
 Input is a single image. More...
 
bool input_is_stack
 Input is a stack. More...
 
bool output_is_stack
 Output is a stack. More...
 
bool create_empty_stackfile
 
bool delete_mdIn
 
size_t time_bar_step
 Some time bar related counters. More...
 
size_t time_bar_size
 
size_t time_bar_done
 
- 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

Downsample parameters.

Definition at line 38 of file transform_downsample.h.

Member Enumeration Documentation

◆ TDownsamplingMethod

Member Function Documentation

◆ defineParams()

void ProgTransformDownsample::defineParams ( )
virtual

Define params.

Reimplemented from XmippMetadataProgram.

Definition at line 50 of file transform_downsample.cpp.

51 {
53  addUsageLine("Downsample a micrograph. For volumes use xmipp_transform_geometry.");
54  addUsageLine("+There are several downsampling methods. The most general and recommended is Fourier.");
55  addUsageLine("+Fourier downsampling puts a window in Fourier space. This is the best downsampling that can be performed.");
56  addUsageLine("+Altermatively, smoothing makes color dithering which is pretty good for visualization, ");
57  addUsageLine("+but it modifies the particle spectrum. Binning with a rectangle kernel modifies the ");
58  addUsageLine("+spectrum of the micrographs and is not recommended. You may see the effects of the different ");
59  addUsageLine("+downsampling schemes at [[http://biocomp.cnb.csic.es/~coss/Articulos/Sorzano2009d.pdf][this article]].");
60  addUsageLine("+ ");
61  addUsageLine("+The downsampling factor (--step) is the factor by which the micrograph will be reduced.");
62  addUsageLine("+For instance, a downsampling by 2 will reduce the image size to one half. Using Fourier and smooth ");
63  addUsageLine("+you may use non-integer downsampling factors, and the image size will be reduced by 1/factor");
64  addSeeAlsoLine("transform_geometry");
66  addParamsLine(" --step <factor> : Downsampling factor. factor=2 reduces the image size to one half.");
67  addParamsLine(" :+Fourier and smooth support non-integer downsampling factors.");
68  addParamsLine(" :+Rectangular binning must use integer factors.");
69  addParamsLine(" [--method <mth=fourier>] : Method for making the downsampling");
70  addParamsLine(" where <mth>");
71  addParamsLine(" fourier <numThreads=1>: Fourier supports non-integer downsampling factors");
72  addParamsLine(" :+This is the best choice.");
73  addParamsLine(" rectangle: This is simple binning in a square of size factor x factor");
74  addParamsLine(" :+This is not a good choice since it creates aliasing and ");
75  addParamsLine(" :+unequal frequency damping.");
76  addParamsLine(" smooth: smooth and colordither");
77  addParamsLine(" :+ Both input and output micrographs must be 8 bits, unsigned char");
78  addExampleLine("xmipp_transform_downsample -i micrograph.tif -o downsampledMicrograph.tif --step 2");
79 }
void addSeeAlsoLine(const char *seeAlso)
void addExampleLine(const char *example, bool verbatim=true)
bool each_image_produces_an_output
Indicate that an output is produced for each image in the input.
void addUsageLine(const char *line, bool verbatim=false)
void addParamsLine(const String &line)

◆ preProcess()

void ProgTransformDownsample::preProcess ( )
inlinevirtual

Reimplemented from XmippMetadataProgram.

Definition at line 62 of file transform_downsample.h.

63  {
64  create_empty_stackfile = false;
65  }

◆ processImage()

void ProgTransformDownsample::processImage ( const FileName fnImg,
const FileName fnImgOut,
const MDRow rowIn,
MDRow rowOut 
)
virtual

Really downsample.

Implements XmippMetadataProgram.

Definition at line 82 of file transform_downsample.cpp.

83 {
84  // Open input data
85  ImageGeneric M_in;
86  M_in.readOrReadMapped(fnImg);
87  size_t Zdim, Ydim, Xdim;
88  M_in.getDimensions(Xdim,Ydim,Zdim);
89  if (Zdim!=1)
90  REPORT_ERROR(ERR_MULTIDIM_DIM,"This program is not intended for volumes");
91 
92  // Open output data, mapped file
93  auto Xpdim = (int)floor(Xdim/step);
94  auto Ypdim = (int)floor(Ydim/step);
95  ImageGeneric M_out;
96  if (method==SMOOTH)
97  M_out.setDatatype(DT_UChar);
98  else
99  M_out.setDatatype(DT_Float);
100  M_out.mapFile2Write(Xpdim, Ypdim, 1, fnImgOut,fnImg==fnImgOut);
101 
102  // Downsample
103  if (method==KER_RECTANGLE)
104  downsampleKernel(M_in,step,M_out);
105  else if (method==FOURIER)
106  downsampleFourier(M_in,step,M_out,nThreads);
107  else
108  downsampleSmooth(M_in,M_out);
109 
110  M_out.write(fnImgOut);
111 }
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)
__host__ __device__ float2 floor(const float2 v)
#define REPORT_ERROR(nerr, ErrormMsg)
Definition: xmipp_error.h:211
TDownsamplingMethod method
int nThreads
Number of Threads used in the Fourier Transform.
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const
void downsampleFourier(const ImageGeneric &M, double step, ImageGeneric &Mp, int nThreads)
void mapFile2Write(int Xdim, int Ydim, int Zdim, const FileName &_filename, bool createTempFile=false, size_t select_img=APPEND_IMAGE, bool isStack=false, int mode=WRITE_OVERWRITE, int _swapWrite=0)
double step
Downsampling factor.
void downsampleKernel(const ImageGeneric &M, double step, ImageGeneric &Mp)
void setDatatype(DataType _datatype)
void downsampleSmooth(const ImageGeneric &M, ImageGeneric &Mp)
int readOrReadMapped(const FileName &name, size_t select_img=ALL_IMAGES, int mode=WRITE_READONLY)
Incorrect MultidimArray dimensions.
Definition: xmipp_error.h:173

◆ readParams()

void ProgTransformDownsample::readParams ( )
virtual

Read input parameters.

Reimplemented from XmippMetadataProgram.

Definition at line 32 of file transform_downsample.cpp.

33 {
34 
36  step=getDoubleParam("--step");
37  String strMethod=getParam("--method");
38  if (strMethod=="fourier")
39  {
40  nThreads=getIntParam("--method",1);
42  }
43  else if (strMethod=="smooth")
44  method=SMOOTH;
45  else
47 }
double getDoubleParam(const char *param, int arg=0)
TDownsamplingMethod method
int nThreads
Number of Threads used in the Fourier Transform.
const char * getParam(const char *param, int arg=0)
double step
Downsampling factor.
std::string String
Definition: xmipp_strings.h:34
int getIntParam(const char *param, int arg=0)

Member Data Documentation

◆ kernel

MultidimArray<double> ProgTransformDownsample::kernel

Definition at line 54 of file transform_downsample.h.

◆ method

TDownsamplingMethod ProgTransformDownsample::method

Downsampling method

Definition at line 47 of file transform_downsample.h.

◆ nThreads

int ProgTransformDownsample::nThreads

Number of Threads used in the Fourier Transform.

Definition at line 50 of file transform_downsample.h.

◆ step

double ProgTransformDownsample::step

Downsampling factor.

Definition at line 42 of file transform_downsample.h.


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