Xmipp  v3.23.11-Nereus
Macros | Functions
xmipp_image_generic.cpp File Reference
#include "xmipp_image.h"
#include "xmipp_image_generic.h"
#include "xmipp_image_extension.h"
#include "xmipp_error.h"
#include "xmipp_fftw.h"
#include "xmipp_types.h"
#include "xvsmooth.h"
#include "metadata_static.h"
#include "metadata_base.h"
Include dependency graph for xmipp_image_generic.cpp:

Go to the source code of this file.

Macros

#define COPY(type)   (*(Image<type>*)image) = (*(Image<type>*)img.image);
 
#define SET_DATATYPE(name)   ImageInfo imgInf; setDatatype(name, imgInf);
 
#define CONVERTTYPE(type)
 
#define ADD(type)
 
#define MINUS(type)
 
#define MULTIPLYIMG(type)
 
#define MULTIPLY(type)
 
#define DIVIDEIMG(type)
 
#define DIVIDE(type)
 

Functions

double getScale (ImageInfo imgInf, size_t &xdim, size_t &ydim)
 
void createEmptyFile (const FileName &filename, int xdim, int ydim, int Zdim, size_t select_img, bool isStack, int mode, int _swapWrite, const MDRowVec *md)
 

Macro Definition Documentation

◆ ADD

#define ADD (   type)
Value:
MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\
kk += pp;
#define pp(s, x)
Definition: ml2d.cpp:473

◆ CONVERTTYPE

#define CONVERTTYPE (   type)
Value:
Image<type> *imT = new Image<type>; \
newImage = imT;\
newMAG = new MultidimArrayGeneric((MultidimArrayBase*) &(imT->data), _datatype);\
MultidimArray<type>* pMAG;\
newMAG->getMultidimArrayPointer(pMAG);\
if (castMode == CW_CAST)\
data->getImage(*pMAG);\
else\
{\
pMAG->resize(aDim);\
double min, max;\
data->computeDoubleMinMax(min, max);\
((Image<double>*) image)->getCastConvertPageFromT(0, (char*)pMAG->data, _datatype, aDim.nzyxdim, min, max, castMode);\
}\
void min(Image< double > &op1, const Image< double > &op2)
MultidimArray< T > data
Definition: xmipp_image.h:55
void max(Image< double > &op1, const Image< double > &op2)

◆ COPY

#define COPY (   type)    (*(Image<type>*)image) = (*(Image<type>*)img.image);

◆ DIVIDE

#define DIVIDE (   type)
Value:
kk /= value;

◆ DIVIDEIMG

#define DIVIDEIMG (   type)
Value:
MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\
kk /= pp;
#define pp(s, x)
Definition: ml2d.cpp:473

◆ MINUS

#define MINUS (   type)
Value:
MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\
kk -= pp;
#define pp(s, x)
Definition: ml2d.cpp:473

◆ MULTIPLY

#define MULTIPLY (   type)
Value:
kk *= value;

◆ MULTIPLYIMG

#define MULTIPLYIMG (   type)
Value:
MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\
kk *= pp;
#define pp(s, x)
Definition: ml2d.cpp:473

◆ SET_DATATYPE

#define SET_DATATYPE (   name)    ImageInfo imgInf; setDatatype(name, imgInf);

Definition at line 222 of file xmipp_image_generic.cpp.

Function Documentation

◆ createEmptyFile()

void createEmptyFile ( const FileName _filename,
int  Xdim,
int  Ydim,
int  Zdim = 1,
size_t  select_img = APPEND_IMAGE,
bool  isStack = false,
int  mode = WRITE_OVERWRITE,
int  _swapWrite = 0,
const MDRowVec md = nullptr 
)

Create an empty image file

An image file, which name and format are given by filename, is created. Only the header info is written, and if image number is given, then disk space is reserved until select_img . Swap the endianness of the image header is also possible.

Definition at line 617 of file xmipp_image_generic.cpp.

619 {
620  ImageGeneric image;
621  size_t found = filename.find_first_of("%");
622  String strType = "";
623 
624  if (found == String::npos)
625  image.setDatatype(DT_Float);
626  else
627  {
628  strType = filename.substr(found+1).c_str();
629  image.setDatatype(str2Datatype(strType));
630  }
631 
632  // Use given metadata if present
633  if (md)
634  image.image->MDMainHeader = *md;
635 
636  image.mapFile2Write(xdim, ydim, Zdim, filename, false, select_img, isStack, mode, _swapWrite);
637 }
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)
void mode
ImageBase * image
MDRowVec MDMainHeader
DataType str2Datatype(const std::string &str)
void setDatatype(DataType _datatype)
std::string String
Definition: xmipp_strings.h:34

◆ getScale()

double getScale ( ImageInfo  imgInf,
size_t &  xdim,
size_t &  ydim 
)

Definition at line 261 of file xmipp_image_generic.cpp.

262 {
263  double scale = 0;
264  // If only xdim is passed, it is the higher allowable size, for any dimension
265  if (ydim == 0 && imgInf.adim.xdim < imgInf.adim.ydim)
266  {
267  ydim = xdim;
268  scale = ((double) ydim)/((double) imgInf.adim.ydim);
269  xdim = (int)(scale*imgInf.adim.xdim);
270  }
271  else
272  {
273  scale = ((double) xdim)/((double) imgInf.adim.xdim);
274  if (ydim == 0)
275  ydim = (int)(scale*imgInf.adim.ydim);
276  }
277  return scale;
278 }
size_t xdim
ArrayDim adim
size_t ydim