1 #include <visp3/ustk_core/usMHDSequenceWriter.h>
22 if (!vpIoTools::checkDirectory(sequenceDirectory))
23 throw(vpException(vpException::badValue,
"usMHDSequenceWriter : directory name incorrect !"));
25 m_sequenceDirectory = sequenceDirectory;
42 throw(vpException(vpException::badValue,
43 "usMHDSequenceWriter : trying to write a 2D RF image in a sequence of another type of image !"));
45 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
46 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
48 char mhdFileNamebuffer[FILENAME_MAX];
49 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
51 char rawFileNamebuffer[FILENAME_MAX];
52 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
54 char rawFileNamebufferMin[FILENAME_MAX];
55 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
57 usMetaHeaderParser::MHDHeader header;
60 header.elementSpacing[0] = 1.0;
61 header.elementSpacing[1] = 1.0;
62 header.elementType = usMetaHeaderParser::MET_SHORT;
65 header.MHDFileName = std::string(mhdFileNamebuffer);
66 header.numberOfDimensions = 2;
67 header.rawFileName = std::string(rawFileNamebufferMin);
71 header.timestamp.push_back(timestamp);
75 usMetaHeaderParser mhdParser;
76 mhdParser.setMHDHeader(header);
80 usRawFileParser rawParser;
81 rawParser.write(image, std::string(rawFileNamebuffer));
99 vpException::badValue,
100 "usMHDSequenceWriter : trying to write a 2D pre-scan image in a sequence of another type of image !"));
102 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
103 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
105 char mhdFileNamebuffer[FILENAME_MAX];
106 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
108 char rawFileNamebuffer[FILENAME_MAX];
109 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
111 char rawFileNamebufferMin[FILENAME_MAX];
112 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
114 usMetaHeaderParser::MHDHeader header;
115 header.dim[0] = image.getWidth();
116 header.dim[1] = image.getHeight();
117 header.elementSpacing[0] = 1.0;
118 header.elementSpacing[1] = 1.0;
119 header.elementType = usMetaHeaderParser::MET_UCHAR;
122 header.MHDFileName = std::string(mhdFileNamebuffer);
123 header.numberOfDimensions = 2;
124 header.rawFileName = std::string(rawFileNamebufferMin);
128 header.timestamp.push_back(timestamp);
132 usMetaHeaderParser mhdParser;
133 mhdParser.setMHDHeader(header);
137 usRawFileParser rawParser;
138 rawParser.write(image, std::string(rawFileNamebuffer));
155 throw(vpException(vpException::badValue,
156 "usMHDSequenceWriter : trying to write a 2D RF image in a sequence of another type of image !"));
158 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
159 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
161 char mhdFileNamebuffer[FILENAME_MAX];
162 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
164 char rawFileNamebuffer[FILENAME_MAX];
165 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
167 char rawFileNamebufferMin[FILENAME_MAX];
168 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
170 usMetaHeaderParser::MHDHeader header;
171 header.dim[0] = image.getWidth();
172 header.dim[1] = image.getHeight();
176 header.elementType = usMetaHeaderParser::MET_UCHAR;
179 header.MHDFileName = std::string(mhdFileNamebuffer);
180 header.numberOfDimensions = 2;
181 header.rawFileName = std::string(rawFileNamebufferMin);
185 header.timestamp.push_back(timestamp);
189 usMetaHeaderParser mhdParser;
190 mhdParser.setMHDHeader(header);
195 usRawFileParser rawParser;
196 rawParser.write(image, std::string(rawFileNamebuffer));
213 throw(vpException(vpException::badValue,
214 "usMHDSequenceWriter : trying to write a 3D RF image in a sequence of another type of image !"));
216 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
217 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
219 char mhdFileNamebuffer[FILENAME_MAX];
220 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
222 char rawFileNamebuffer[FILENAME_MAX];
223 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
225 char rawFileNamebufferMin[FILENAME_MAX];
226 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
228 usMetaHeaderParser::MHDHeader header;
232 header.elementSpacing[0] = 1.0;
233 header.elementSpacing[1] = 1.0;
234 header.elementSpacing[2] = 1.0;
235 header.elementType = usMetaHeaderParser::MET_SHORT;
240 header.MHDFileName = std::string(mhdFileNamebuffer);
243 header.numberOfDimensions = 3;
244 header.rawFileName = std::string(rawFileNamebufferMin);
248 header.timestamp = timestamp;
252 usMetaHeaderParser mhdParser;
253 mhdParser.setMHDHeader(header);
257 usRawFileParser rawParser;
258 rawParser.write(image, std::string(rawFileNamebuffer));
276 vpException::badValue,
277 "usMHDSequenceWriter : trying to write a 3D pre-scan image in a sequence of another type of image !"));
279 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
280 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
282 char mhdFileNamebuffer[FILENAME_MAX];
283 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
285 char rawFileNamebuffer[FILENAME_MAX];
286 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
288 char rawFileNamebufferMin[FILENAME_MAX];
289 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
291 usMetaHeaderParser::MHDHeader header;
295 header.elementSpacing[0] = 1.0;
296 header.elementSpacing[1] = 1.0;
297 header.elementSpacing[2] = 1.0;
298 header.elementType = usMetaHeaderParser::MET_UCHAR;
303 header.MHDFileName = std::string(mhdFileNamebuffer);
306 header.numberOfDimensions = 3;
307 header.rawFileName = std::string(rawFileNamebufferMin);
311 header.timestamp = timestamp;
315 usMetaHeaderParser mhdParser;
316 mhdParser.setMHDHeader(header);
320 usRawFileParser rawParser;
321 rawParser.write(image, std::string(rawFileNamebuffer));
339 vpException::badValue,
340 "usMHDSequenceWriter : trying to write a 3D post-scan image in a sequence of another type of image !"));
342 std::string mhdImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.mhd");
343 std::string rawImageFileName = m_sequenceDirectory + vpIoTools::path(
"/") + std::string(
"image%05d.raw");
345 char mhdFileNamebuffer[FILENAME_MAX];
346 sprintf(mhdFileNamebuffer, mhdImageFileName.c_str(), m_imageCounter);
348 char rawFileNamebuffer[FILENAME_MAX];
349 sprintf(rawFileNamebuffer, rawImageFileName.c_str(), m_imageCounter);
351 char rawFileNamebufferMin[FILENAME_MAX];
352 sprintf(rawFileNamebufferMin,
"image%05d.raw", m_imageCounter);
354 usMetaHeaderParser::MHDHeader header;
358 header.elementSpacing[0] = 1.0;
359 header.elementSpacing[1] = 1.0;
360 header.elementSpacing[2] = 1.0;
361 header.elementType = usMetaHeaderParser::MET_UCHAR;
366 header.MHDFileName = std::string(mhdFileNamebuffer);
369 header.numberOfDimensions = 3;
370 header.rawFileName = std::string(rawFileNamebufferMin);
374 header.timestamp.push_back(timestamp);
378 usMetaHeaderParser mhdParser;
379 mhdParser.setMHDHeader(header);
382 usRawFileParser rawParser;
383 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