26 #ifndef CORE_IMAGE_GENERIC_H_ 27 #define CORE_IMAGE_GENERIC_H_ 35 #define CHECK_IMG(op)\ 37 REPORT_ERROR(ERR_IMG_UNKNOWN, "ImageGeneric: Image not initialized.");\ 113 return *(image->
MD[
n]);
118 void getDimensions(
size_t &Xdim,
size_t &Ydim,
size_t &Zdim,
size_t &Ndim)
const;
119 void getDimensions(
size_t &Xdim,
size_t &Ydim,
size_t &Zdim)
const;
139 double tilt(
const size_t n = 0)
const 141 return image->
tilt(
n);
146 void resize(
int Xdim,
int Ydim,
int Zdim,
size_t Ndim,
bool copy=
true)
149 data->
resize(Ndim, Zdim, Ydim, Xdim, copy);
215 bool mapData =
false);
257 bool mapData =
false,
bool wrap =
true);
281 image->
write(name,select_img,isStack,
mode,castMode,_swapWrite);
287 bool createTempFile=
false,
size_t select_img =
APPEND_IMAGE,
363 #define GETVALUE(type) ret = NZYX_ELEM(*(MultidimArray<type>*)data->im,n,k,i,j); 374 #define GETVALUE(type) ret = (double) A2D_ELEM(*(MultidimArray<type>*)data->im,i,j); 382 inline void setPixel(
unsigned long n,
int k,
int i,
int j,
double value)
const 384 #define SETVALUE(type) NZYX_ELEM(*(MultidimArray<type>*)data->im,n,k,i,j) = (type) value; 395 #define SETVALUE(type) A2D_ELEM(*(MultidimArray<type>*)data->im,i,j) = (type) value; 405 #define INITCONS(type) (*(MultidimArray<type>*)(data->im)).initConstant((type) value); 415 #define INITRND(type) (*(MultidimArray<type>*)(data->im)).initRandom(op1, op2, mode); 457 void divide(
const double value);
bool operator==(const ImageGeneric &i1) const
void setDataMode(DataMode mode)
void applyGeo(const MetaData &md, size_t objId, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
void movePointerTo(int select_slice=ALL_SLICES, size_t select_img=ALL_IMAGES)
int readPreviewFourier(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
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 resize(int Xdim, int Ydim, int Zdim, size_t Ndim, bool copy=true)
void setPixel(unsigned long n, int k, int i, int j, double value) const
MDRow & getGeometry(const size_t n=0)
void toString(String &s) const
void initConstant(double value) const
friend std::ostream & operator<<(std::ostream &o, const ImageGeneric &I)
#define REPORT_ERROR(nerr, ErrormMsg)
void add(const ImageGeneric &img)
void copy(const ImageGeneric &img)
int readPreviewSmooth(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
void getEulerAngles(double &rot, double &tilt, double &psi, size_t n=0)
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)
std::vector< std::unique_ptr< MDRow > > MD
MultidimArrayGeneric & operator()()
void multiply(const double value)
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)
void initGeometry(const size_t n=0)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
DataType getDatatype() const
double tilt(const size_t n=0) const
const MultidimArrayGeneric & operator()() const
const ApplyGeoParams DefaultApplyGeoParams
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const
void getPreview(ImageGeneric &imgOut, int Xdim, int Ydim=-1, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
void divide(const ImageGeneric &img)
void resize(size_t Ndim, int Zdim, int Ydim, int Xdim, bool copy=true)
#define XMIPP_EQUAL_ACCURACY
void getInfo(ImageInfo &imgInfo) const
bool equal(const MultidimArrayGeneric &op, double accuracy=XMIPP_EQUAL_ACCURACY) const
virtual void setDimensions(int Xdim, int Ydim, int Zdim, size_t Ndim)=0
void getEulerAngles(double &rot, double &tilt, double &psi, const size_t n=0) const
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)
ImageGeneric & operator=(const ImageGeneric &img)
int readOrReadPreview(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE, bool mapData=false, bool wrap=true)
double getPixel(unsigned long n, int k, int i, int j) const
void setDataMode(DataMode mode)
void reslice(AxisView view)
virtual void movePointerTo(int select_slice=ALL_SLICES, size_t select_img=ALL_IMAGES)=0
void convert2Datatype(DataType datatype, CastWriteMode castMode=CW_CONVERT)
#define MULTIDIM_ARRAY_GENERIC(v)
void setDatatype(DataType _datatype)
bool equal(const ImageGeneric &i1, double accuracy=XMIPP_EQUAL_ACCURACY) const
void initRandom(double op1, double op2, RandomMode mode=RND_UNIFORM) const
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
double psi(const double x)
int readOrReadMapped(const FileName &name, size_t select_img=ALL_IMAGES, int mode=WRITE_READONLY)
int getDatatypeDepth() const
int readPreview(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
double getPixel(int i, int j) const
void setPixel(int i, int j, double value) const
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false)
MultidimArrayGeneric * data
int readMapped(const FileName &name, size_t select_img=ALL_IMAGES, int mode=WRITE_READONLY)
void subtract(const ImageGeneric &img)
#define SWITCHDATATYPE(datatype, OP)
double tilt(const size_t n=0) const