1 #include <visp3/ustk_core/usMHDSequenceWriter.h>
21 if (!vpIoTools::checkDirectory(sequenceDirectory))
22 throw(vpException(vpException::badValue,
"usMHDSequenceWriter : directory name incorrect !"));
24 m_sequenceDirectory = sequenceDirectory;
41 throw(vpException(vpException::badValue,
42 "usMHDSequenceWriter : trying to write a 2D RF image in a sequence of another type of image !"));
44 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
45 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
47 char mhdFileNamebuffer[FILENAME_MAX];
48 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
50 char rawFileNamebuffer[FILENAME_MAX];
51 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
53 char rawFileNamebufferMin[FILENAME_MAX];
54 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
56 usMetaHeaderParser::MHDHeader header;
59 header.elementSpacing[0] = 1.0;
60 header.elementSpacing[1] = 1.0;
61 header.elementType = usMetaHeaderParser::MET_SHORT;
64 header.MHDFileName = std::string(mhdFileNamebuffer);
65 header.numberOfDimensions = 2;
66 header.rawFileName = std::string(rawFileNamebufferMin);
70 header.timestamp.push_back(timestamp);
74 usMetaHeaderParser mhdParser;
75 mhdParser.setMHDHeader(header);
79 usRawFileParser rawParser;
80 rawParser.write(image, std::string(rawFileNamebuffer));
98 vpException::badValue,
99 "usMHDSequenceWriter : trying to write a 2D pre-scan image in a sequence of another type of image !"));
101 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
102 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
104 char mhdFileNamebuffer[FILENAME_MAX];
105 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
107 char rawFileNamebuffer[FILENAME_MAX];
108 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
110 char rawFileNamebufferMin[FILENAME_MAX];
111 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
113 usMetaHeaderParser::MHDHeader header;
114 header.dim[0] = image.getWidth();
115 header.dim[1] = image.getHeight();
116 header.elementSpacing[0] = 1.0;
117 header.elementSpacing[1] = 1.0;
118 header.elementType = usMetaHeaderParser::MET_UCHAR;
121 header.MHDFileName = std::string(mhdFileNamebuffer);
122 header.numberOfDimensions = 2;
123 header.rawFileName = std::string(rawFileNamebufferMin);
127 header.timestamp.push_back(timestamp);
131 usMetaHeaderParser mhdParser;
132 mhdParser.setMHDHeader(header);
136 usRawFileParser rawParser;
137 rawParser.write(image, std::string(rawFileNamebuffer));
154 throw(vpException(vpException::badValue,
155 "usMHDSequenceWriter : trying to write a 2D RF image in a sequence of another type of image !"));
157 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
158 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
160 char mhdFileNamebuffer[FILENAME_MAX];
161 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
163 char rawFileNamebuffer[FILENAME_MAX];
164 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
166 char rawFileNamebufferMin[FILENAME_MAX];
167 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
169 usMetaHeaderParser::MHDHeader header;
170 header.dim[0] = image.getWidth();
171 header.dim[1] = image.getHeight();
175 header.elementType = usMetaHeaderParser::MET_UCHAR;
178 header.MHDFileName = std::string(mhdFileNamebuffer);
179 header.numberOfDimensions = 2;
180 header.rawFileName = std::string(rawFileNamebufferMin);
184 header.timestamp.push_back(timestamp);
188 usMetaHeaderParser mhdParser;
189 mhdParser.setMHDHeader(header);
194 usRawFileParser rawParser;
195 rawParser.write(image, std::string(rawFileNamebuffer));
212 throw(vpException(vpException::badValue,
213 "usMHDSequenceWriter : trying to write a 3D RF image in a sequence of another type of image !"));
215 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
216 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
218 char mhdFileNamebuffer[FILENAME_MAX];
219 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
221 char rawFileNamebuffer[FILENAME_MAX];
222 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
224 char rawFileNamebufferMin[FILENAME_MAX];
225 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
227 usMetaHeaderParser::MHDHeader header;
231 header.elementSpacing[0] = 1.0;
232 header.elementSpacing[1] = 1.0;
233 header.elementSpacing[2] = 1.0;
234 header.elementType = usMetaHeaderParser::MET_SHORT;
239 header.MHDFileName = std::string(mhdFileNamebuffer);
242 header.numberOfDimensions = 3;
243 header.rawFileName = std::string(rawFileNamebufferMin);
247 header.timestamp = timestamp;
251 usMetaHeaderParser mhdParser;
252 mhdParser.setMHDHeader(header);
256 usRawFileParser rawParser;
257 rawParser.write(image, std::string(rawFileNamebuffer));
275 vpException::badValue,
276 "usMHDSequenceWriter : trying to write a 3D pre-scan image in a sequence of another type of image !"));
278 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
279 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
281 char mhdFileNamebuffer[FILENAME_MAX];
282 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
284 char rawFileNamebuffer[FILENAME_MAX];
285 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
287 char rawFileNamebufferMin[FILENAME_MAX];
288 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
290 usMetaHeaderParser::MHDHeader header;
294 header.elementSpacing[0] = 1.0;
295 header.elementSpacing[1] = 1.0;
296 header.elementSpacing[2] = 1.0;
297 header.elementType = usMetaHeaderParser::MET_UCHAR;
302 header.MHDFileName = std::string(mhdFileNamebuffer);
305 header.numberOfDimensions = 3;
306 header.rawFileName = std::string(rawFileNamebufferMin);
310 header.timestamp = timestamp;
314 usMetaHeaderParser mhdParser;
315 mhdParser.setMHDHeader(header);
319 usRawFileParser rawParser;
320 rawParser.write(image, std::string(rawFileNamebuffer));
338 vpException::badValue,
339 "usMHDSequenceWriter : trying to write a 3D post-scan image in a sequence of another type of image !"));
341 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
342 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
344 char mhdFileNamebuffer[FILENAME_MAX];
345 snprintf(mhdFileNamebuffer, FILENAME_MAX, mhdImageFileName.c_str(), m_imageCounter);
347 char rawFileNamebuffer[FILENAME_MAX];
348 snprintf(rawFileNamebuffer, FILENAME_MAX, rawImageFileName.c_str(), m_imageCounter);
350 char rawFileNamebufferMin[FILENAME_MAX];
351 snprintf(rawFileNamebufferMin, FILENAME_MAX,
"image%05d.raw", m_imageCounter);
353 usMetaHeaderParser::MHDHeader header;
357 header.elementSpacing[0] = 1.0;
358 header.elementSpacing[1] = 1.0;
359 header.elementSpacing[2] = 1.0;
360 header.elementType = usMetaHeaderParser::MET_UCHAR;
365 header.MHDFileName = std::string(mhdFileNamebuffer);
368 header.numberOfDimensions = 3;
369 header.rawFileName = std::string(rawFileNamebufferMin);
373 header.timestamp.push_back(timestamp);
377 usMetaHeaderParser mhdParser;
378 mhdParser.setMHDHeader(header);
381 usRawFileParser rawParser;
382 rawParser.write(image, std::string(rawFileNamebuffer));
unsigned int getNumberOfFrames() const
unsigned int getHeight() const
unsigned int getWidth() const
double getHeightResolution() const
double getWidthResolution() const
double getAxialResolution() const
unsigned int getHeight() const
unsigned int getWidth() const
unsigned int getWidth() const
unsigned int getHeight() const
unsigned int getNumberOfFrames() const
void setSequenceDirectory(const std::string sequenceDirectory)
void write(const usImageRF2D< short int > &image, const uint64_t timestamp)
unsigned int getFrameNumber() const
double getMotorRadius() const
double getFramePitch() const
usMotorType getMotorType() const
int getTransmitFrequency() const
double getScanLinePitch() const
bool isTransducerConvex() const
double getTransducerRadius() const
int getSamplingFrequency() const
unsigned int getScanLineNumber() const