88 #define COPY(type) (*(Image<type>*)image) = (*(Image<type>*)img.image); 222 #define SET_DATATYPE(name) ImageInfo imgInf; setDatatype(name, imgInf); 233 return image->
read(name, datamode, select_img, mapData && !imgInf.swap);
239 return image->
read(name,
DATA, select_img, !imgInf.swap, mode);
246 return read(name,
DATA, select_img,
false);
252 reportWarning(
"ImageBase::readOrReadMapped: Not enough memory to allocate. \n" 253 " Proceeding to map image from file.");
268 scale = ((double) ydim)/((double) imgInf.
adim.
ydim);
269 xdim = (int)(scale*imgInf.
adim.
xdim);
273 scale = ((double) xdim)/((double) imgInf.
adim.
xdim);
275 ydim = (int)(scale*imgInf.
adim.
ydim);
283 double scale =
getScale(imgInf, xdim, ydim);
292 bool mapData,
bool wrap)
295 double scale =
getScale(imgInf, xdim, ydim);
313 int result = ig.
read(name,
DATA, select_img);
317 switch (select_slice)
321 select_slice = (int)((
float)ii.
adim.
zdim / 2.0);
330 ig().getSlice(select_slice,
data);
342 int result = ig.
read(name,
DATA, select_img);
350 resize(xdim, ydim, 1, 1,
false);
361 bool createTempFile,
size_t select_img,
bool isStack,
int mode,
int swapWrite)
366 image->
mapFile2Write(xdim,ydim,Zdim,_filename,createTempFile, select_img, isStack, mode);
374 image->
mapFile2Write(xdim,ydim,Zdim,_filename,createTempFile, select_img, isStack, mode);
425 #define CONVERTTYPE(type) Image<type> *imT = new Image<type>; \ 427 newMAG = new MultidimArrayGeneric((MultidimArrayBase*) &(imT->data), _datatype);\ 428 MultidimArray<type>* pMAG;\ 429 newMAG->getMultidimArrayPointer(pMAG);\ 430 if (castMode == CW_CAST)\ 431 data->getImage(*pMAG);\ 436 data->computeDoubleMinMax(min, max);\ 437 ((Image<double>*) image)->getCastConvertPageFromT(0, (char*)pMAG->data, _datatype, aDim.nzyxdim, min, max, castMode);\ 486 imgOut().
resize(aDimOut,
false);
493 for (
size_t k = 0;
k < aDimOut.
zdim;
k++)
496 index =
k + (aDimOut.
zdim - 1 - 2*
k) * (
int)reverse;
523 return(*(this->
data) == *(i1.
data));
530 std::cout << s <<std::endl;
535 std::stringstream ss;
537 ss <<
"Xmipp::ImageGeneric: Uninitialized image";
548 #define ADD(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 549 MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\ 562 #define MINUS(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 563 MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\ 574 #define MULTIPLYIMG(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 575 MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\ 586 #define MULTIPLY(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 597 #define DIVIDEIMG(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 598 MultidimArray<type> & pp = *((MultidimArray<type>*) img.data->im);\ 609 #define DIVIDE(type) MultidimArray<type> & kk = *((MultidimArray<type>*) data->im);\ 618 size_t select_img,
bool isStack,
int mode,
int _swapWrite,
const MDRowVec *md)
621 size_t found = filename.find_first_of(
"%");
624 if (found == String::npos)
628 strType = filename.substr(found+1).c_str();
636 image.
mapFile2Write(xdim, ydim, Zdim, filename,
false, select_img, isStack, mode, _swapWrite);
bool operator==(const ImageGeneric &i1) const
void applyGeo(const MetaData &md, size_t objId, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
int readPreviewFourier(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
void resize(int Xdim, int Ydim, int Zdim, size_t Ndim, bool copy=true)
Case or algorithm not implemented yet.
void reportWarning(const String &what)
void toString(String &s) const
void aliasSlice(MultidimArrayGeneric &mdim, int select_slice)
#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)
There is not enough memory for allocation.
std::vector< std::unique_ptr< MDRow > > MD
static void emptifyHeader(MDRow &)
void multiply(const double value)
virtual int readPreview(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)=0
void SmoothResize(byte *picSrc8, byte *destpic8, size_t swide, size_t shigh, size_t dwide, size_t dhigh)
#define MULTIPLYIMG(type)
void initGeometry(const size_t n=0)
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
#define SET_DATATYPE(name)
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
void setADimFile(ArrayDim aDim)
void getInfo(ImageInfo &imgInfo) const
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)
int readOrReadPreview(const FileName &name, size_t Xdim, size_t Ydim, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE, bool mapData=false)
void getInfo(ImageInfo &imgInfo) const
double getScale(ImageInfo imgInf, size_t &xdim, size_t &ydim)
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 selfScaleToSizeFourier(int Zdim, int Ydim, int Xdim, MultidimArray< double > &mda, int nThreads)
ImageGeneric & operator=(const ImageGeneric &img)
void applyGeo(const MetaData &md, size_t objId, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
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)
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 setDataMode(DataMode mode)
void reslice(AxisView view)
void convert2Datatype(DataType datatype, CastWriteMode castMode=CW_CONVERT)
#define MULTIDIM_ARRAY_GENERIC(v)
DataType str2Datatype(const std::string &str)
void setDatatype(DataType _datatype)
DataType datatype() const
int readApplyGeo(const FileName &name, const MDRow &row, const ApplyGeoParams ¶ms=DefaultApplyGeoParams)
int readOrReadMapped(const FileName &name, size_t select_img=ALL_IMAGES, int mode=WRITE_READONLY)
String formatString(const char *format,...)
#define CONVERTTYPE(type)
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false, int mode=WRITE_READONLY)
int readPreview(const FileName &name, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const
virtual void getPreview(ImageBase *imgOut, size_t Xdim, size_t Ydim=0, int select_slice=CENTRAL_SLICE, size_t select_img=FIRST_IMAGE)=0
int read(const FileName &name, DataMode datamode=DATA, size_t select_img=ALL_IMAGES, bool mapData=false)
Incorrect value received.
MultidimArrayGeneric * data
void mapFile2Write(size_t Xdim, size_t Ydim, size_t Zdim, const FileName &_filename, bool createTempFile=false, size_t select_img=APPEND_IMAGE, bool isStack=false, int mode=WRITE_OVERWRITE)
int readMapped(const FileName &name, size_t select_img=ALL_IMAGES, int mode=WRITE_READONLY)
void subtract(const ImageGeneric &img)
bool checkImageFileSize(const FileName &name, const ImageInfo &imgInfo, bool error)
#define SWITCHDATATYPE(datatype, OP)
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const