40 MITK_TEST_BEGIN(
"ToFImageCsvWriter");
41 mitk::ToFImageCsvWriter::Pointer csvWriter = mitk::ToFImageCsvWriter::New();
42 MITK_TEST_CONDITION_REQUIRED(csvWriter.GetPointer(),
"Testing initialization of test object!");
43 MITK_TEST_CONDITION_REQUIRED(csvWriter->GetExtension() ==
".csv",
"Testing correct initialization of member variable extension!");
47 unsigned int dimX = 100 + rand()%100;
48 unsigned int dimY = 100 + rand()%100;
49 unsigned int pixelNumber = dimX*dimY;
50 unsigned int numOfFrames = 1 + rand()%100;
54 MITK_INFO<<numOfFrames;
56 mitk::Image::Pointer distanceImage = mitk::ImageGenerator::GenerateRandomImage<float>(dimX, dimY, numOfFrames);
57 mitk::Image::Pointer amplitudeImage = mitk::ImageGenerator::GenerateRandomImage<float>(dimX, dimY, numOfFrames);
58 mitk::Image::Pointer intensityImage = mitk::ImageGenerator::GenerateRandomImage<float>(dimX, dimY, numOfFrames);
61 std::string distanceImageFileName(
"distImg.csv");
62 std::string amplitudeImageFileName(
"amplImg.csv");
63 std::string intensityImageFileName(
"intImg.csv");
65 csvWriter->SetDistanceImageFileName(distanceImageFileName);
66 csvWriter->SetAmplitudeImageFileName(amplitudeImageFileName);
67 csvWriter->SetIntensityImageFileName(intensityImageFileName);
68 csvWriter->SetAmplitudeImageSelected(
true);
69 csvWriter->SetIntensityImageSelected(
true);
71 csvWriter->SetToFCaptureWidth(dimX);
72 csvWriter->SetToFCaptureHeight(dimY);
75 mitk::ImageSliceSelector::Pointer distanceSelector = mitk::ImageSliceSelector::New();
76 mitk::ImageSliceSelector::Pointer amplitudeSelector = mitk::ImageSliceSelector::New();
77 mitk::ImageSliceSelector::Pointer intensitySelector = mitk::ImageSliceSelector::New();
79 mitk::Image::Pointer tmpDistance;
80 mitk::Image::Pointer tmpAmplitude;
81 mitk::Image::Pointer tmpIntensity;
83 distanceSelector->SetInput(distanceImage);
84 amplitudeSelector->SetInput(amplitudeImage);
85 intensitySelector->SetInput(intensityImage);
89 float* amplitudeArray;
90 float* intensityArray;
93 for(
unsigned int i = 0; i<numOfFrames; i++)
95 distanceSelector->SetSliceNr(i);
96 distanceSelector->Update();
97 mitk::ImageReadAccessor tmpDistAcc(distanceSelector->GetOutput());
98 distanceArray = (
float*) tmpDistAcc.GetData();
100 amplitudeSelector->SetSliceNr(i);
101 amplitudeSelector->Update();
102 mitk::ImageReadAccessor tmpAmplAcc(amplitudeSelector->GetOutput());
103 amplitudeArray = (
float*)tmpAmplAcc.GetData();
105 intensitySelector->SetSliceNr(i);
106 intensitySelector->Update();
107 mitk::ImageReadAccessor tmpIntenAcc(intensitySelector->GetOutput());
108 intensityArray = (
float*)tmpIntenAcc.GetData();
110 csvWriter->Add(distanceArray, amplitudeArray, intensityArray);
114 FILE* distanceInfile =
nullptr;
115 FILE* amplitudeInfile =
nullptr;
116 FILE* intensityInfile =
nullptr;
119 OpenCsvFile(&(distanceInfile), distanceImageFileName);
120 OpenCsvFile(&(amplitudeInfile), amplitudeImageFileName);
121 OpenCsvFile(&(intensityInfile), intensityImageFileName);
123 float distVal = 0.0, amplVal = 0.0, intenVal = 0.0;
124 int dErr = 0, aErr = 0, iErr = 0;
125 bool readingCorrect =
true;
128 for(
unsigned int j=0; j<numOfFrames; j++)
130 distanceSelector->SetSliceNr(j);
131 distanceSelector->Update();
132 mitk::ImageReadAccessor tmpDistAcc(distanceSelector->GetOutput());
133 distanceArray = (
float*) tmpDistAcc.GetData();
135 amplitudeSelector->SetSliceNr(j);
136 amplitudeSelector->Update();
137 mitk::ImageReadAccessor tmpAmplAcc(amplitudeSelector->GetOutput());
138 amplitudeArray = (
float*)tmpAmplAcc.GetData();
140 intensitySelector->SetSliceNr(j);
141 intensitySelector->Update();
142 mitk::ImageReadAccessor tmpIntenAcc(intensitySelector->GetOutput());
143 intensityArray = (
float*)tmpIntenAcc.GetData();
146 for(
unsigned int i=0; i<pixelNumber; i++)
150 dErr = fscanf (distanceInfile,
"%f", &distVal);
151 aErr = fscanf (amplitudeInfile,
"%f", &lVal);
152 iErr = fscanf (intensityInfile,
"%f", &intenVal);
156 dErr = fscanf (distanceInfile,
",%f", &distVal);
157 aErr = fscanf (amplitudeInfile,
",%f", &lVal);
158 iErr = fscanf (intensityInfile,
",%f", &intenVal);
162 if (dErr==0 || dErr==EOF)
164 MITK_TEST_CONDITION_REQUIRED((dErr!=0 && dErr!=EOF),
"Testing open and read csv distance file");
166 if (aErr==0 || aErr==EOF)
168 MITK_TEST_CONDITION_REQUIRED((aErr!=0 && aErr!=EOF),
"Testing open and read csv amplitude file");
170 if (iErr==0 || iErr==EOF)
172 MITK_TEST_CONDITION_REQUIRED((iErr!=0 && iErr!=EOF),
"Testing open and read csv intensity file");
178 readingCorrect =
false;
182 MITK_TEST_CONDITION_REQUIRED(readingCorrect,
"Testing if the output values are correct.");
185 dErr = fscanf (distanceInfile,
",%f", &distVal);
186 aErr = fscanf (amplitudeInfile,
",%f", &lVal);
187 iErr = fscanf (intensityInfile,
",%f", &intenVal);
188 MITK_TEST_CONDITION_REQUIRED((dErr==EOF),
"Testing EOF distance file");
189 MITK_TEST_CONDITION_REQUIRED((aErr==EOF),
"Testing EOF amplitude file");
190 MITK_TEST_CONDITION_REQUIRED((iErr==EOF),
"Testing EOF intensity file");
197 remove( distanceImageFileName.c_str() );
198 remove( amplitudeImageFileName.c_str() );
199 remove( intensityImageFileName.c_str() );