UsTK : Ultrasound ToolKit  version 2.0.1 under development (2025-02-01)
tutorial-scanConversion3D.cpp
1 #include <visp3/core/vpTime.h>
2 #include <visp3/ustk_core/usImageIo.h>
3 #include <visp3/ustk_core/usPreScanToPostScan3DConverter.h>
4 #include <visp3/ustk_core/usSequenceReader.h>
5 
6 int main(int argc, char **argv)
7 {
8  std::string mhd_filename;
9 
10  for (int i = 0; i < argc; i++) {
11  if (std::string(argv[i]) == "--input")
12  mhd_filename = std::string(argv[i + 1]);
13  else if (std::string(argv[i]) == "--help") {
14  std::cout << "\nUsage: " << argv[0] << " [--input <preScan3D.xml>] [--help]\n" << std::endl;
15  return 0;
16  }
17  }
18 
19  // Get the ustk-dataset package path or USTK_DATASET_PATH environment variable value
20  if (mhd_filename.empty()) {
21  std::string env_ipath = us::getDataSetPath();
22  if (!env_ipath.empty())
23  mhd_filename = env_ipath + "/pre-scan/3D_xml/sequencepreScan3D.xml";
24  else {
25  std::cout << "You should set USTK_DATASET_PATH environment var to access to ustk dataset" << std::endl;
26  return 0;
27  }
28  }
29 
30  /* TEST : WRITE A SEQUENCE OF VOXEL IN A IMAGE
31  usImagePreScan3D<unsigned char> prescanImage;
32  prescanImage.resize(3,3,3);
33 
34  prescanImage(0,0,0,0);
35  prescanImage(1,0,0,1);
36  prescanImage(2,0,0,2);
37  prescanImage(0,1,0,3);
38  prescanImage(1,1,0,4);
39  prescanImage(2,1,0,5);
40  prescanImage(0,2,0,6);
41  prescanImage(1,2,0,7);
42  prescanImage(2,2,0,8);
43  prescanImage(0,0,1,9);
44  prescanImage(1,0,1,10);
45  prescanImage(2,0,1,11);
46  prescanImage(0,1,1,12);
47  prescanImage(1,1,1,13);
48  prescanImage(2,1,1,14);
49  prescanImage(0,2,1,15);
50  prescanImage(1,2,1,16);
51  prescanImage(2,2,1,17);
52  prescanImage(0,0,2,18);
53  prescanImage(1,0,2,19);
54  prescanImage(2,0,2,20);
55  prescanImage(0,1,2,21);
56  prescanImage(1,1,2,22);
57  prescanImage(2,1,2,23);
58  prescanImage(0,2,2,24);
59  prescanImage(1,2,2,25);
60  prescanImage(2,2,2,26);
61 
62  usImageIo::write(prescanImage,"volumeTest.mhd");
63  */
64 
66  prescanImage.resize(480, 128, 16);
68 
69  usImageIo::read(prescanImage, mhd_filename);
70 
71  std::cout << prescanImage;
72 
73  std::cout << "end reading" << std::endl;
74 
75  // scan-conversion
77 
78  double startTime = vpTime::measureTimeMs();
79  std::cout << "init converter..." << std::endl;
80 
81  converter.init(prescanImage);
82 
83  double endInitTime = vpTime::measureTimeMs();
84  std::cout << "init time (sec) = " << (endInitTime - startTime) / 1000.0 << std::endl;
85 
86  std::cout << "converting..." << std::endl;
87  converter.convert(postscanImage, prescanImage);
88 
89  double endConvertTime = vpTime::measureTimeMs();
90  std::cout << "convert time (sec) = " << (endConvertTime - endInitTime) / 1000.0 << std::endl;
91 
92  std::cout << "writing post-scan..." << std::endl;
93  std::string mhdFileName = "volumePostScan1.mhd";
94  usImageIo::write(postscanImage, mhdFileName);
95 
96  return 0;
97 }
static void read(usImageRF2D< short int > &imageRf2D, const std::string &headerFileName)
Definition: usImageIo.cpp:153
static void write(const usImageRF2D< short > &rfImage, const std::string &headerFileName, const std::string &imageExtension2D)
Definition: usImageIo.cpp:104
void resize(unsigned int height, unsigned int width, unsigned int numberOfFrames)
void init(const usImagePreScan3D< unsigned char > &preScanImage, double down=1)
void convert(usImagePostScan3D< unsigned char > &postScanImage, const usImagePreScan3D< unsigned char > &preScanImage)
VISP_EXPORT std::string getDataSetPath()
Definition: us.cpp:54