25 typedef __int16 int16_t;
26 typedef unsigned __int16 uint16_t;
27 typedef __int32 int32_t;
28 typedef unsigned __int32 uint32_t;
29 typedef __int64 int64_t;
30 typedef unsigned __int64 uint64_t;
39 typedef std::complex<float> complex_float_t;
40 typedef std::complex<double> complex_double_t;
43 typedef struct complex_float_t{
47 typedef struct complex_double_t{
53 typedef float complex complex_float_t;
54 typedef double complex complex_double_t;
75 #include "ismrmrd/export.h"
88 ISMRMRD_USER_INTS = 8,
89 ISMRMRD_USER_FLOATS = 8,
90 ISMRMRD_PHYS_STAMPS = 3,
91 ISMRMRD_CHANNEL_MASKS = 16,
92 ISMRMRD_NDARRAY_MAXDIM = 7,
93 ISMRMRD_POSITION_LENGTH = 3,
94 ISMRMRD_DIRECTION_LENGTH = 3
102 ISMRMRD_BEGINERROR=-1,
107 ISMRMRD_RUNTIMEERROR,
133 ISMRMRD_ACQ_FIRST_IN_ENCODE_STEP1 = 1,
134 ISMRMRD_ACQ_LAST_IN_ENCODE_STEP1 = 2,
135 ISMRMRD_ACQ_FIRST_IN_ENCODE_STEP2 = 3,
136 ISMRMRD_ACQ_LAST_IN_ENCODE_STEP2 = 4,
137 ISMRMRD_ACQ_FIRST_IN_AVERAGE = 5,
138 ISMRMRD_ACQ_LAST_IN_AVERAGE = 6,
139 ISMRMRD_ACQ_FIRST_IN_SLICE = 7,
140 ISMRMRD_ACQ_LAST_IN_SLICE = 8,
141 ISMRMRD_ACQ_FIRST_IN_CONTRAST = 9,
142 ISMRMRD_ACQ_LAST_IN_CONTRAST = 10,
143 ISMRMRD_ACQ_FIRST_IN_PHASE = 11,
144 ISMRMRD_ACQ_LAST_IN_PHASE = 12,
145 ISMRMRD_ACQ_FIRST_IN_REPETITION = 13,
146 ISMRMRD_ACQ_LAST_IN_REPETITION = 14,
147 ISMRMRD_ACQ_FIRST_IN_SET = 15,
148 ISMRMRD_ACQ_LAST_IN_SET = 16,
149 ISMRMRD_ACQ_FIRST_IN_SEGMENT = 17,
150 ISMRMRD_ACQ_LAST_IN_SEGMENT = 18,
151 ISMRMRD_ACQ_IS_NOISE_MEASUREMENT = 19,
152 ISMRMRD_ACQ_IS_PARALLEL_CALIBRATION = 20,
153 ISMRMRD_ACQ_IS_PARALLEL_CALIBRATION_AND_IMAGING = 21,
154 ISMRMRD_ACQ_IS_REVERSE = 22,
155 ISMRMRD_ACQ_IS_NAVIGATION_DATA = 23,
156 ISMRMRD_ACQ_IS_PHASECORR_DATA = 24,
157 ISMRMRD_ACQ_LAST_IN_MEASUREMENT = 25,
158 ISMRMRD_ACQ_IS_HPFEEDBACK_DATA = 26,
159 ISMRMRD_ACQ_IS_DUMMYSCAN_DATA = 27,
160 ISMRMRD_ACQ_IS_RTFEEDBACK_DATA = 28,
161 ISMRMRD_ACQ_IS_SURFACECOILCORRECTIONSCAN_DATA = 29,
163 ISMRMRD_ACQ_USER1 = 57,
164 ISMRMRD_ACQ_USER2 = 58,
165 ISMRMRD_ACQ_USER3 = 59,
166 ISMRMRD_ACQ_USER4 = 60,
167 ISMRMRD_ACQ_USER5 = 61,
168 ISMRMRD_ACQ_USER6 = 62,
169 ISMRMRD_ACQ_USER7 = 63,
170 ISMRMRD_ACQ_USER8 = 64
177 ISMRMRD_IMTYPE_MAGNITUDE = 1,
178 ISMRMRD_IMTYPE_PHASE = 2,
179 ISMRMRD_IMTYPE_REAL = 3,
180 ISMRMRD_IMTYPE_IMAG = 4,
181 ISMRMRD_IMTYPE_COMPLEX = 5
188 ISMRMRD_IMAGE_IS_NAVIGATION_DATA = 1,
189 ISMRMRD_IMAGE_USER1 = 57,
190 ISMRMRD_IMAGE_USER2 = 58,
191 ISMRMRD_IMAGE_USER3 = 59,
192 ISMRMRD_IMAGE_USER4 = 60,
193 ISMRMRD_IMAGE_USER5 = 61,
194 ISMRMRD_IMAGE_USER6 = 62,
195 ISMRMRD_IMAGE_USER7 = 63,
196 ISMRMRD_IMAGE_USER8 = 64
212 uint16_t
user[ISMRMRD_USER_INTS];
256 complex_float_t *data;
317 char *attribute_string;
330 EXPORTISMRMRD
int ismrmrd_make_consistent_image(
ISMRMRD_Image *im);
331 EXPORTISMRMRD
size_t ismrmrd_size_of_image_attribute_string(
const ISMRMRD_Image *im);
332 EXPORTISMRMRD
size_t ismrmrd_size_of_image_data(
const ISMRMRD_Image *im);
346 size_t dims[ISMRMRD_NDARRAY_MAXDIM];
358 EXPORTISMRMRD
int ismrmrd_make_consistent_ndarray(
ISMRMRD_NDArray *arr);
359 EXPORTISMRMRD
size_t ismrmrd_size_of_ndarray_data(
const ISMRMRD_NDArray *arr);
368 EXPORTISMRMRD
bool ismrmrd_is_flag_set(
const uint64_t flags,
const uint64_t val);
369 EXPORTISMRMRD
int ismrmrd_set_flag(uint64_t *flags,
const uint64_t val);
370 EXPORTISMRMRD
int ismrmrd_clear_flag(uint64_t *flags,
const uint64_t val);
371 EXPORTISMRMRD
int ismrmrd_clear_all_flags(uint64_t *flags);
380 EXPORTISMRMRD
bool ismrmrd_is_channel_on(
const uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS],
const uint16_t chan);
381 EXPORTISMRMRD
int ismrmrd_set_channel_on(uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS],
const uint16_t chan);
382 EXPORTISMRMRD
int ismrmrd_set_channel_off(uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS],
const uint16_t chan);
383 EXPORTISMRMRD
int ismrmrd_set_all_channels_off(uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS]);
392 typedef void (*ismrmrd_error_handler_t)(
const char *file,
int line,
393 const char *
function,
int code,
const char *msg);
394 #define ISMRMRD_PUSH_ERR(code, msg) ismrmrd_push_error(__FILE__, __LINE__, \
395 __func__, (code), (msg))
397 const int code,
const char *msg);
407 int *code,
char **msg);
454 bitmask_ = (bitmask_ << (b-1));
458 bool isSet(
const uint64_t& m)
const {
459 return ((m & bitmask_)>0);
476 void clearAllFlags();
479 bool isChannelActive(uint16_t channel_id);
480 void setChannelActive(uint16_t channel_id);
481 void setChannelNotActive(uint16_t channel_id);
482 void setAllChannelsNotActive();
492 Acquisition(uint16_t num_samples, uint16_t active_channels=1, uint16_t trajectory_dimensions=0);
498 const uint16_t &version();
499 const uint64_t &flags();
500 uint32_t &measurement_uid();
501 uint32_t &scan_counter();
502 uint32_t &acquisition_time_stamp();
503 uint32_t (&physiology_time_stamp())[ISMRMRD_PHYS_STAMPS];
504 const uint16_t &number_of_samples();
505 uint16_t &available_channels();
506 const uint16_t &active_channels();
507 const uint64_t (&channel_mask())[ISMRMRD_CHANNEL_MASKS];
508 uint16_t &discard_pre();
509 uint16_t &discard_post();
510 uint16_t ¢er_sample();
511 uint16_t &encoding_space_ref();
512 const uint16_t &trajectory_dimensions();
513 float &sample_time_us();
514 float (&position())[3];
515 float (&read_dir())[3];
516 float (&phase_dir())[3];
517 float (&slice_dir())[3];
518 float (&patient_table_position())[3];
520 int32_t (&user_int())[ISMRMRD_USER_INTS];
521 float (&user_float())[ISMRMRD_USER_FLOATS];
524 void resize(uint16_t num_samples, uint16_t active_channels=1, uint16_t trajectory_dimensions=0);
525 const size_t getNumberOfDataElements();
526 const size_t getNumberOfTrajElements();
527 const size_t getDataSize();
528 const size_t getTrajSize();
537 const complex_float_t *
const getDataPtr()
const ;
542 complex_float_t & data(uint16_t sample, uint16_t channel);
547 void setData(complex_float_t * data);
552 complex_float_t * data_begin()
const;
557 complex_float_t * data_end()
const;
562 const float *
const getTrajPtr()
const;
567 float & traj(uint16_t dimension, uint16_t sample);
572 void setTraj(
float * traj);
577 float * traj_begin()
const;
582 float * traj_end()
const;
585 bool isFlagSet(
const uint64_t val);
586 void setFlag(
const uint64_t val);
587 void clearFlag(
const uint64_t val);
588 void clearAllFlags();
591 bool isChannelActive(uint16_t channel_id);
592 void setChannelActive(uint16_t channel_id);
593 void setChannelNotActive(uint16_t channel_id);
594 void setAllChannelsNotActive();
607 bool isFlagSet(
const uint64_t val);
608 void setFlag(
const uint64_t val);
609 void clearFlag(
const uint64_t val);
610 void clearAllFlags();
615 template <
typename T>
class EXPORTISMRMRD
Image {
619 Image(uint16_t matrix_size_x = 0, uint16_t matrix_size_y = 1,
620 uint16_t matrix_size_z = 1, uint16_t channels = 1);
626 void resize(uint16_t matrix_size_x, uint16_t matrix_size_y, uint16_t matrix_size_z, uint16_t channels);
627 uint16_t getMatrixSizeX()
const;
628 void setMatrixSizeX(uint16_t matrix_size_x);
629 uint16_t getMatrixSizeY()
const;
630 void setMatrixSizeY(uint16_t matrix_size_y);
631 uint16_t getMatrixSizeZ()
const;
632 void setMatrixSizeZ(uint16_t matrix_size_z);
633 uint16_t getNumberOfChannels()
const;
634 void setNumberOfChannels(uint16_t channels);
637 void setFieldOfView(
float fov_x,
float fov_y,
float fov_z);
638 float getFieldOfViewX()
const;
639 void setFieldOfViewX(
float f);
640 float getFieldOfViewY()
const;
641 void setFieldOfViewY(
float f);
642 float getFieldOfViewZ()
const;
643 void setFieldOfViewZ(
float f);
646 void setPosition(
float x,
float y,
float z);
647 float getPositionX()
const;
648 void setPositionX(
float x);
649 float getPositionY()
const;
650 void setPositionY(
float y);
651 float getPositionZ()
const;
652 void setPositionZ(
float z);
654 void setReadDirection(
float x,
float y,
float z);
655 float getReadDirectionX()
const;
656 void setReadDirectionX(
float x);
657 float getReadDirectionY()
const;
658 void setReadDirectionY(
float y);
659 float getReadDirectionZ()
const;
660 void setReadDirectionZ(
float z);
662 void setPhaseDirection(
float x,
float y,
float z);
663 float getPhaseDirectionX()
const;
664 void setPhaseDirectionX(
float x);
665 float getPhaseDirectionY()
const;
666 void setPhaseDirectionY(
float y);
667 float getPhaseDirectionZ()
const;
668 void setPhaseDirectionZ(
float z);
670 void setSliceDirection(
float x,
float y,
float z);
671 float getSliceDirectionX()
const;
672 void setSliceDirectionX(
float x);
673 float getSliceDirectionY()
const;
674 void setSliceDirectionY(
float y);
675 float getSliceDirectionZ()
const;
676 void setSliceDirectionZ(
float z);
678 void setPatientTablePosition(
float x,
float y,
float z);
679 float getPatientTablePositionX()
const;
680 void setPatientTablePositionX(
float x);
681 float getPatientTablePositionY()
const;
682 void setPatientTablePositionY(
float y);
683 float getPatientTablePositionZ()
const;
684 void setPatientTablePositionZ(
float z);
688 uint16_t getVersion()
const;
692 uint32_t getMeasurementUid()
const;
693 void setMeasurementUid(uint32_t measurement_uid);
695 uint16_t getAverage()
const;
696 void setAverage(uint16_t average);
698 uint16_t getSlice()
const;
699 void setSlice(uint16_t slice);
701 uint16_t getContrast()
const;
702 void setContrast(uint16_t contrast);
704 uint16_t getPhase()
const;
705 void setPhase(uint16_t phase);
707 uint16_t getRepetition()
const;
708 void setRepetition(uint16_t repetition);
710 uint16_t getSet()
const;
711 void setSet(uint16_t set);
713 uint32_t getAcquisitionTimeStamp()
const;
714 void setAcquisitionTimeStamp(uint32_t acquisition_time_stamp);
716 uint32_t getPhysiologyTimeStamp(
unsigned int stamp_id)
const;
717 void setPhysiologyTimeStamp(
unsigned int stamp_id, uint32_t value);
719 uint16_t getImageType()
const;
720 void setImageType(uint16_t image_type);
722 uint16_t getImageIndex()
const;
723 void setImageIndex(uint16_t image_index);
725 uint16_t getImageSeriesIndex()
const;
726 void setImageSeriesIndex(uint16_t image_series_index);
729 float getUserFloat(
unsigned int index)
const;
730 void setUserFloat(
unsigned int index,
float value);
732 int32_t getUserInt(
unsigned int index)
const;
733 void setUserInt(
unsigned int index, int32_t value);
736 uint64_t getFlags()
const;
737 void setFlags(
const uint64_t flags);
738 bool isFlagSet(
const uint64_t val)
const;
739 void setFlag(
const uint64_t val);
740 void clearFlag(
const uint64_t val);
741 void clearAllFlags();
748 void getAttributeString(std::string &atrr)
const;
749 void setAttributeString(
const std::string attr);
750 const size_t getAttributeStringLength();
753 T *
const getDataPtr()
const;
755 size_t getNumberOfDataElements()
const;
757 size_t getDataSize()
const;
766 T & operator () (uint16_t x, uint16_t y=0, uint16_t z=0 , uint16_t channel =0);
773 template <
typename T>
class EXPORTISMRMRD
NDArray {
778 NDArray(
const std::vector<size_t> dimvec);
784 const uint16_t getVersion();
786 const uint16_t getNDim();
787 const size_t (&getDims())[ISMRMRD_NDARRAY_MAXDIM];
788 const size_t getDataSize();
789 void resize(
const std::vector<size_t> dimvec);
790 const size_t getNumberOfElements();
800 T & operator () (uint16_t x, uint16_t y=0, uint16_t z=0, uint16_t w=0, uint16_t n=0, uint16_t m=0, uint16_t l=0);
uint16_t average
Definition: ismrmrd.h:205
struct ISMRMRD::ISMRMRD_NDArray ISMRMRD_NDArray
uint16_t data_type
Definition: ismrmrd.h:344
ISMRMRD_Constants
Definition: ismrmrd.h:87
struct ISMRMRD::ISMRMRD_Acquisition ISMRMRD_Acquisition
uint16_t version
Definition: ismrmrd.h:343
ISMRMRD_AcquisitionFlags
Definition: ismrmrd.h:132
uint16_t segment
Definition: ismrmrd.h:211
int ismrmrd_push_error(const char *file, const int line, const char *func, const int code, const char *msg)
Definition: ismrmrd.c:663
uint16_t phase
Definition: ismrmrd.h:208
uint16_t kspace_encode_step_1
Definition: ismrmrd.h:203
EXPORTISMRMRD void ismrmrd_quaternion_to_directions(float quat[4], float read_dir[3], float phase_dir[3], float slice_dir[3])
Definition: ismrmrd.c:642
Definition: ismrmrd.h:123
Definition: ismrmrd.h:119
uint16_t slice
Definition: ismrmrd.h:206
MR Acquisition type.
Definition: ismrmrd.h:487
ISMRMRD_AcquisitionHeader head
Definition: ismrmrd.h:254
uint16_t user[ISMRMRD_USER_INTS]
Definition: ismrmrd.h:212
bool ismrmrd_pop_error(char **file, int *line, char **func, int *code, char **msg)
Definition: ismrmrd.c:692
struct ISMRMRD::ISMRMRD_EncodingCounters ISMRMRD_EncodingCounters
ISMRMRD_ImageFlags
Definition: ismrmrd.h:187
ISMRMRD_ImageTypes
Definition: ismrmrd.h:176
Definition: ismrmrd.h:118
EXPORTISMRMRD int ismrmrd_sign_of_directions(float read_dir[3], float phase_dir[3], float slice_dir[3])
Definition: ismrmrd.c:552
struct ISMRMRD::ISMRMRD_Image ISMRMRD_Image
uint16_t contrast
Definition: ismrmrd.h:207
Definition: ismrmrd.h:122
uint16_t ndim
Definition: ismrmrd.h:345
std::string build_exception_string(void)
ISMRMRD C++ Interface.
Definition: ismrmrd.cpp:1147
struct ISMRMRD::ISMRMRD_ImageHeader ISMRMRD_ImageHeader
ISMRMRD_ErrorCodes
Definition: ismrmrd.h:101
uint16_t repetition
Definition: ismrmrd.h:209
N-Dimensional array type.
Definition: ismrmrd.h:773
ISMRMRD_EncodingCounters EncodingCounters
Some typedefs to beautify the namespace.
Definition: ismrmrd.h:436
Definition: dataset.h:143
Definition: ismrmrd.h:253
void * data
Definition: ismrmrd.h:347
EXPORTISMRMRD void ismrmrd_directions_to_quaternion(float read_dir[3], float phase_dir[3], float slice_dir[3], float quat[4])
Definition: ismrmrd.c:568
uint16_t set
Definition: ismrmrd.h:210
EXPORTISMRMRD int ismrmrd_init_acquisition_header(ISMRMRD_AcquisitionHeader *hdr)
Definition: ismrmrd.c:41
struct ISMRMRD::ISMRMRD_AcquisitionHeader ISMRMRD_AcquisitionHeader
Definition: ismrmrd.h:120
Definition: ismrmrd.h:202
Definition: ismrmrd.h:121
Definition: ismrmrd.h:116
EXPORTISMRMRD char * ismrmrd_strerror(int code)
Definition: ismrmrd.c:728
size_t dims[ISMRMRD_NDARRAY_MAXDIM]
Definition: ismrmrd.h:346
Definition: ismrmrd.h:342
EXPORTISMRMRD void ismrmrd_set_error_handler(ismrmrd_error_handler_t)
Definition: ismrmrd.c:724
MR Image type.
Definition: ismrmrd.h:615
Convenience class for flags.
Definition: ismrmrd.h:446
size_t ismrmrd_sizeof_data_type(int data_type)
Definition: ismrmrd.c:437
Definition: ismrmrd.h:315
ISMRMRD_DataTypes
Definition: ismrmrd.h:115
Definition: ismrmrd.h:117
EXPORTISMRMRD int ismrmrd_init_image_header(ISMRMRD_ImageHeader *hdr)
Definition: ismrmrd.c:183
uint16_t kspace_encode_step_2
Definition: ismrmrd.h:204
EXPORTISMRMRD ISMRMRD_DataTypes get_data_type()
Allowed data types for Images and NDArrays.