42 #include <visp3/core/vpImage.h>
44 void printHelp(
const std::string &progName)
46 std::cout <<
"SYNOPSIS: " << std::endl;
47 std::cout <<
" " << progName <<
" [-v, --verbose] [-h, --help]" << std::endl;
48 std::cout <<
"DETAILS:" << std::endl;
49 std::cout <<
" -v, --verbose" << std::endl;
50 std::cout <<
" Activate verbose mode to have some logs in the console." << std::endl;
51 std::cout << std::endl;
52 std::cout <<
" -h, --help" << std::endl;
53 std::cout <<
" Display the help about the program." << std::endl;
54 std::cout << std::endl;
57 int main(
const int argc,
const char *argv[])
59 bool opt_verbose =
false;
60 for (
int i = 1; i < argc; ++i) {
61 std::string argName(argv[i]);
62 if ((argName ==
"-v") || (argName ==
"--verbose")) {
65 else if ((argName ==
"-h") || (argName ==
"--help")) {
66 printHelp(std::string(argv[0]));
71 const unsigned int nbRows = 4, nbCols = 4;
75 double sum_uchar_ref = 0.;
76 double sum_rgba_ref = 0.;
77 double sum_rgbf_ref = 0.;
78 unsigned int count_ref = 0;
80 for (
unsigned int r = 0; r < nbRows; ++r) {
81 for (
unsigned int c = 0; c < nbCols; ++c) {
82 unsigned int val = r * nbCols + c;
83 I_uchar_ref[r][c] = val;
84 I_rgba_ref[r][c].R = val;
85 I_rgba_ref[r][c].G = 2*val;
86 I_rgba_ref[r][c].B = 3*val;
87 I_rgbf_ref[r][c].R = I_rgba_ref[r][c].R;
88 I_rgbf_ref[r][c].G = I_rgba_ref[r][c].G;
89 I_rgbf_ref[r][c].B = I_rgba_ref[r][c].B;
90 sum_uchar_ref +=
static_cast<double>(val);
91 double val_rgb =
static_cast<double>(I_rgba_ref[r][c].R) +
static_cast<double>(I_rgba_ref[r][c].G) +
static_cast<double>(I_rgba_ref[r][c].B);
92 sum_rgba_ref += val_rgb;
93 sum_rgbf_ref += val_rgb;
99 double mean_uchar_ref = sum_uchar_ref /
static_cast<double>(count_ref);
100 double mean_rgba_ref = sum_rgba_ref /
static_cast<double>(count_ref);
101 double mean_rgbf_ref = sum_rgbf_ref /
static_cast<double>(count_ref);
104 double stdev_uchar_ref = 0.;
105 double stdev_rgba_ref = 0.;
106 double stdev_rgbf_ref = 0.;
107 for (
unsigned int r = 0; r < nbRows; ++r) {
108 for (
unsigned int c = 0; c < nbCols; ++c) {
109 stdev_uchar_ref += std::pow(
static_cast<double>(I_uchar_ref[r][c]) - mean_uchar_ref, 2);
110 stdev_rgba_ref += std::pow(
static_cast<double>(I_rgba_ref[r][c].R) +
static_cast<double>(I_rgba_ref[r][c].G) +
static_cast<double>(I_rgba_ref[r][c].B) - mean_rgba_ref, 2);
111 stdev_rgbf_ref += std::pow(
static_cast<double>(I_rgbf_ref[r][c].R) +
static_cast<double>(I_rgbf_ref[r][c].G) +
static_cast<double>(I_rgbf_ref[r][c].B) - mean_rgbf_ref, 2);
114 stdev_uchar_ref = std::sqrt((1./
static_cast<double>(nbRows * nbCols))* stdev_uchar_ref);
115 stdev_rgba_ref = std::sqrt((1./
static_cast<double>(nbRows * nbCols))* stdev_rgba_ref);
116 stdev_rgbf_ref = std::sqrt((1./
static_cast<double>(nbRows * nbCols))* stdev_rgbf_ref);
118 std::cout <<
"----- Input data-----" << std::endl;
119 std::cout <<
"I_uchar_ref = \n" << I_uchar_ref << std::endl;
120 std::cout <<
"sum_uchar_ref(I_uchar_ref) = " << sum_uchar_ref << std::endl;
121 std::cout <<
"mean_uchar_ref(I_uchar_ref) = " << mean_uchar_ref << std::endl;
122 std::cout <<
"stdev_uchar_ref(I_uchar_ref) = " << stdev_uchar_ref << std::endl;
123 std::cout << std::endl;
124 std::cout <<
"I_rgba_ref = \n" << I_rgba_ref << std::endl;
125 std::cout <<
"sum_rgba_ref(I_uchar_ref) = " << sum_rgba_ref << std::endl;
126 std::cout <<
"mean_rgba_ref(I_rgba_ref) = " << mean_rgba_ref << std::endl;
127 std::cout <<
"stdev_rgba_ref(I_rgba_ref) = " << stdev_rgba_ref << std::endl;
128 std::cout << std::endl;
129 std::cout <<
"I_rgbf_ref = \n" << I_rgbf_ref << std::endl;
130 std::cout <<
"sum_rgbf_ref(I_rgbf_ref) = " << sum_rgbf_ref << std::endl;
131 std::cout <<
"mean_rgbf_ref(I_rgbf_ref) = " << mean_rgbf_ref << std::endl;
132 std::cout <<
"stdev_rgbf_ref(I_rgbf_ref) = " << stdev_rgbf_ref << std::endl;
133 std::cout << std::endl;
137 unsigned int count_true = 0;
138 double sum_uchar_true = 0.;
139 double sum_rgba_true = 0.;
140 double sum_rgbf_true = 0.;
141 for (
unsigned int r = 0; r < nbRows; ++r) {
142 for (
unsigned int c = 0; c < nbCols; ++c) {
143 bool isTrue = ((r + c) % 2) == 0;
144 I_mask[r][c] = isTrue;
147 sum_uchar_true +=
static_cast<double>(I_uchar_ref[r][c]);
148 double val_rgba =
static_cast<double>(I_rgba_ref[r][c].R) +
static_cast<double>(I_rgba_ref[r][c].G) +
static_cast<double>(I_rgba_ref[r][c].B);
149 sum_rgba_true += val_rgba;
150 double val_rgbf =
static_cast<double>(I_rgbf_ref[r][c].R) +
static_cast<double>(I_rgbf_ref[r][c].G) +
static_cast<double>(I_rgbf_ref[r][c].B);
151 sum_rgbf_true += val_rgbf;
156 double mean_uchar_true = sum_uchar_true /
static_cast<double>(count_true);
157 double mean_rgba_true = sum_rgba_true /
static_cast<double>(count_true);
158 double mean_rgbf_true = sum_rgbf_true /
static_cast<double>(count_true);
160 double stdev_uchar_true = 0.;
161 double stdev_rgba_true = 0.;
162 double stdev_rgbf_true = 0.;
163 for (
unsigned int r = 0; r < nbRows; ++r) {
164 for (
unsigned int c = 0; c < nbCols; ++c) {
166 stdev_uchar_true += (
static_cast<double>(I_uchar_ref[r][c]) - mean_uchar_true) * (
static_cast<double>(I_uchar_ref[r][c]) - mean_uchar_true);
167 double val_rgba =
static_cast<double>(I_rgba_ref[r][c].R) +
static_cast<double>(I_rgba_ref[r][c].G) +
static_cast<double>(I_rgba_ref[r][c].B);
168 stdev_rgba_true += (val_rgba - mean_rgba_true) * (val_rgba - mean_rgba_true);
169 double val_rgbf =
static_cast<double>(I_rgbf_ref[r][c].R) +
static_cast<double>(I_rgbf_ref[r][c].G) +
static_cast<double>(I_rgbf_ref[r][c].B);
170 stdev_rgbf_true += (val_rgbf - mean_rgbf_true) * (val_rgbf - mean_rgbf_true);
174 stdev_uchar_true = std::sqrt((1./
static_cast<double>(count_true)) * stdev_uchar_true);
175 stdev_rgba_true = std::sqrt((1./
static_cast<double>(count_true)) * stdev_rgba_true);
176 stdev_rgbf_true = std::sqrt((1./
static_cast<double>(count_true)) * stdev_rgbf_true);
178 std::cout <<
"I_mask = \n";
179 for (
unsigned int r = 0; r < nbRows; ++r) {
180 for (
unsigned int c = 0; c < nbCols; ++c) {
181 std::cout << (I_mask[r][c] ?
"true" :
"false") <<
" ";
185 std::cout << std::endl;
186 std::cout <<
"nb_true(I_uchar_ref, I_mask) = " << count_true << std::endl;
187 std::cout <<
"sum_uchar_true(I_uchar_ref, I_mask) = " << sum_uchar_true << std::endl;
188 std::cout <<
"mean_uchar_true(I_uchar_ref, I_mask) = " << mean_uchar_true << std::endl;
189 std::cout <<
"stdev_uchar_true(I_uchar_ref, I_mask) = " << stdev_uchar_true << std::endl;
190 std::cout <<
"sum_rgba_true(I_rgba_ref, I_mask) = " << sum_rgba_true << std::endl;
191 std::cout <<
"mean_rgba_true(I_rgba_ref, I_mask) = " << mean_rgba_true << std::endl;
192 std::cout <<
"stdev_rgba_true(I_rgba_ref, I_mask) = " << stdev_rgba_true << std::endl;
193 std::cout <<
"sum_rgbf_true(I_rgbf_ref, I_mask) = " << sum_rgbf_true << std::endl;
194 std::cout <<
"mean_rgbf_true(I_rgbf_ref, I_mask) = " << mean_rgbf_true << std::endl;
195 std::cout <<
"stdev_rgbf_true(I_rgbf_ref, I_mask) = " << stdev_rgbf_true << std::endl;
196 std::cout << std::endl;
199 bool areTestOK =
true;
200 unsigned int nbFailedTests = 0;
201 std::vector<std::string> failedTestsNames;
203 std::cout <<
"----- BEGIN tests-----" << std::endl;
209 std::cout <<
"Tests on the sum" << std::endl;
211 std::string nameTest(
"vpImage<uchar>::getSum()");
212 double sum = I_uchar_ref.getSum();
216 failedTestsNames.push_back(nameTest);
220 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
222 std::cout <<
"Theoretical sum = " << sum_uchar_ref <<
" | returned value = " << sum << std::endl;
226 unsigned int nbValidPoints = 0;
227 nameTest = (
"vpImage<uchar>::getSum( const vpImage<bool> *, unsigned int * )");
228 sum = I_uchar_ref.getSum(&I_mask, &nbValidPoints);
229 success =
vpMath::equal(sum, sum_uchar_true) && (nbValidPoints == count_true);
232 failedTestsNames.push_back(nameTest);
236 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
238 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
239 std::cout <<
"Theoretical sum = " << sum_uchar_true <<
" | returned value = " << sum << std::endl;
243 nameTest = (
"vpImage<uchar>::getSum( vpImage<bool> * = nullptr, unsigned int * )");
244 sum = I_uchar_ref.getSum(
nullptr, &nbValidPoints);
245 success =
vpMath::equal(sum, sum_uchar_ref) && (nbValidPoints == (nbCols * nbRows));
248 failedTestsNames.push_back(nameTest);
252 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
254 std::cout <<
"Theoretical count = " << nbCols * nbRows <<
" | returned value = " << nbValidPoints << std::endl;
255 std::cout <<
"Theoretical sum = " << sum_uchar_ref <<
" | returned value = " << sum << std::endl;
259 nameTest = (
"vpImage<vpRGBa>::getSum()");
260 sum = I_rgba_ref.getSum();
264 failedTestsNames.push_back(nameTest);
268 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
270 std::cout <<
"Theoretical sum = " << sum_rgba_ref <<
" | returned value = " << sum << std::endl;
274 nameTest = (
"vpImage<vpRGBa>::getSum( vpImage<bool> *, unsigned int * )");
275 sum = I_rgba_ref.getSum(&I_mask, &nbValidPoints);
276 success =
vpMath::equal(sum, sum_rgba_true) && (nbValidPoints == count_true);
279 failedTestsNames.push_back(nameTest);
283 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
285 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
286 std::cout <<
"Theoretical sum = " << sum_rgba_true <<
" | returned value = " << sum << std::endl;
290 nameTest = (
"vpImage<vpRGBa>::getSum( vpImage<bool> * = nullptr, unsigned int * )");
291 sum = I_rgba_ref.getSum(
nullptr, &nbValidPoints);
292 success =
vpMath::equal(sum, sum_rgba_ref) && (nbValidPoints == (nbCols * nbRows));
295 failedTestsNames.push_back(nameTest);
299 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
301 std::cout <<
"Theoretical count = " << nbCols * nbRows <<
" | returned value = " << nbValidPoints << std::endl;
302 std::cout <<
"Theoretical sum = " << sum_rgba_ref <<
" | returned value = " << sum << std::endl;
306 nameTest = (
"vpImage<vpRGBf>::getSum()");
307 sum = I_rgbf_ref.getSum();
311 failedTestsNames.push_back(nameTest);
315 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
317 std::cout <<
"Theoretical sum = " << sum_rgbf_ref <<
" | returned value = " << sum << std::endl;
321 nameTest = (
"vpImage<vpRGBf>::getSum( vpImage<bool> *, unsigned int * )");
322 sum = I_rgbf_ref.getSum(&I_mask, &nbValidPoints);
323 success =
vpMath::equal(sum, sum_rgbf_true) && (nbValidPoints == count_true);
326 failedTestsNames.push_back(nameTest);
330 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
332 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
333 std::cout <<
"Theoretical sum = " << sum_rgbf_true <<
" | returned value = " << sum << std::endl;
337 nameTest = (
"vpImage<vpRGBf>::getSum( vpImage<bool> * = nullptr, unsigned int * )");
338 sum = I_rgbf_ref.getSum(
nullptr, &nbValidPoints);
339 success =
vpMath::equal(sum, sum_rgbf_ref) && (nbValidPoints == (nbCols * nbRows));
342 failedTestsNames.push_back(nameTest);
346 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
348 std::cout <<
"Theoretical count = " << nbCols * nbRows <<
" | returned value = " << nbValidPoints << std::endl;
349 std::cout <<
"Theoretical sum = " << sum_rgbf_ref <<
" | returned value = " << sum << std::endl;
357 std::cout <<
"Tests on the mean" << std::endl;
359 std::string nameTest(
"vpImage<uchar>::getMeanValue()");
360 double mean = I_uchar_ref.getMeanValue();
364 failedTestsNames.push_back(nameTest);
368 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
370 std::cout <<
"Theoretical mean = " << mean_uchar_ref <<
" | returned value = " << mean << std::endl;
374 nameTest =
"vpImage<uchar>::getMeanValue(vpImage<bool> *)";
375 mean = I_uchar_ref.getMeanValue(&I_mask);
379 failedTestsNames.push_back(nameTest);
383 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
385 std::cout <<
"Theoretical mean = " << mean_uchar_true <<
" | returned value = " << mean << std::endl;
389 nameTest =
"vpImage<uchar>::getMeanValue(vpImage<bool> * = nullptr)";
390 mean = I_uchar_ref.getMeanValue(
nullptr);
394 failedTestsNames.push_back(nameTest);
398 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
400 std::cout <<
"Theoretical mean = " << mean_uchar_ref <<
" | returned value = " << mean << std::endl;
404 unsigned int nbValidPoints = 0;
405 nameTest =
"vpImage<uchar>::getMeanValue(vpImage<bool> *, unsigned int &)";
406 mean = I_uchar_ref.getMeanValue(&I_mask, &nbValidPoints);
407 success =
vpMath::equal(mean, mean_uchar_true) && (nbValidPoints == count_true);
410 failedTestsNames.push_back(nameTest);
414 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
416 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
417 std::cout <<
"Theoretical mean = " << mean_uchar_true <<
" | returned value = " << mean << std::endl;
422 nameTest =
"vpImage<uchar>::getMeanValue(vpImage<bool> * = nullptr, unsigned int &)";
423 mean = I_uchar_ref.getMeanValue(
nullptr, &nbValidPoints);
424 success =
vpMath::equal(mean, mean_uchar_ref) && (nbValidPoints == (nbCols * nbRows));
427 failedTestsNames.push_back(nameTest);
431 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
433 std::cout <<
"Theoretical count = " << nbCols * nbRows <<
" | returned value = " << nbValidPoints << std::endl;
434 std::cout <<
"Theoretical mean = " << mean_uchar_ref <<
" | returned value = " << mean << std::endl;
438 nameTest =
"vpImage<vpRGBa>::getMeanValue()";
439 mean = I_rgba_ref.getMeanValue();
443 failedTestsNames.push_back(nameTest);
447 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
449 std::cout <<
"Theoretical mean = " << mean_rgba_ref <<
" | returned value = " << mean << std::endl;
453 nameTest =
"vpImage<vpRGBa>::getMeanValue(vpImage<bool> *)";
454 mean = I_rgba_ref.getMeanValue(&I_mask);
458 failedTestsNames.push_back(nameTest);
462 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
464 std::cout <<
"Theoretical mean = " << mean_rgba_true <<
" | returned value = " << mean << std::endl;
468 nameTest =
"vpImage<vpRGBa>::getMeanValue(vpImage<bool> * = nullptr)";
469 mean = I_rgba_ref.getMeanValue(
nullptr);
473 failedTestsNames.push_back(nameTest);
477 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
479 std::cout <<
"Theoretical mean = " << mean_rgba_ref <<
" | returned value = " << mean << std::endl;
484 nameTest =
"vpImage<vpRGBa>::getMeanValue(vpImage<bool> *, unsigned int &)";
485 mean = I_rgba_ref.getMeanValue(&I_mask, &nbValidPoints);
486 success =
vpMath::equal(mean, mean_rgba_true) && (nbValidPoints == count_true);
489 failedTestsNames.push_back(nameTest);
493 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
495 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
496 std::cout <<
"Theoretical mean = " << mean_rgba_true <<
" | returned value = " << mean << std::endl;
501 nameTest =
"vpImage<vpRGBa>::getMeanValue(vpImage<bool> * = nullptr, unsigned int &)";
502 mean = I_rgba_ref.getMeanValue(
nullptr, &nbValidPoints);
503 success =
vpMath::equal(mean, mean_rgba_ref) && (nbValidPoints == (nbRows * nbCols));
506 failedTestsNames.push_back(nameTest);
510 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
512 std::cout <<
"Theoretical count = " << nbRows * nbCols <<
" | returned value = " << nbValidPoints << std::endl;
513 std::cout <<
"Theoretical mean = " << mean_rgba_ref <<
" | returned value = " << mean << std::endl;
517 nameTest =
"vpImage<vpRGBf>::getMeanValue()";
518 mean = I_rgbf_ref.getMeanValue();
522 failedTestsNames.push_back(nameTest);
526 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
528 std::cout <<
"Theoretical mean = " << mean_rgbf_ref <<
" | returned value = " << mean << std::endl;
532 nameTest =
"vpImage<vpRGBf>::getMeanValue(vpImage<bool> *)";
533 mean = I_rgbf_ref.getMeanValue(&I_mask);
537 failedTestsNames.push_back(nameTest);
541 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
543 std::cout <<
"Theoretical mean = " << mean_rgbf_true <<
" | returned value = " << mean << std::endl;
547 nameTest =
"vpImage<vpRGBf>::getMeanValue(vpImage<bool> * = nullptr)";
548 mean = I_rgbf_ref.getMeanValue(
nullptr);
552 failedTestsNames.push_back(nameTest);
556 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
558 std::cout <<
"Theoretical mean = " << mean_rgbf_ref <<
" | returned value = " << mean << std::endl;
563 nameTest =
"vpImage<vpRGBf>::getMeanValue(vpImage<bool> *, unsigned int &)";
564 mean = I_rgbf_ref.getMeanValue(&I_mask, &nbValidPoints);
565 success =
vpMath::equal(mean, mean_rgbf_true) && (nbValidPoints == count_true);
568 failedTestsNames.push_back(nameTest);
572 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
574 std::cout <<
"Theoretical count = " << count_true <<
" | returned value = " << nbValidPoints << std::endl;
575 std::cout <<
"Theoretical mean = " << mean_rgbf_true <<
" | returned value = " << mean << std::endl;
580 nameTest =
"vpImage<vpRGBf>::getMeanValue(vpImage<bool> * = nullptr, unsigned int &)";
581 mean = I_rgbf_ref.getMeanValue(
nullptr, &nbValidPoints);
582 success =
vpMath::equal(mean, mean_rgbf_ref) && (nbValidPoints == (nbRows * nbCols));
585 failedTestsNames.push_back(nameTest);
589 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
591 std::cout <<
"Theoretical count = " << nbRows * nbCols <<
" | returned value = " << nbValidPoints << std::endl;
592 std::cout <<
"Theoretical mean = " << mean_rgbf_ref <<
" | returned value = " << mean << std::endl;
600 std::cout <<
"Tests on the stdev" << std::endl;
602 std::string nameTest(
"vpImage<uchar>::getStdev()");
603 double stdev = I_uchar_ref.getStdev();
607 failedTestsNames.push_back(nameTest);
611 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
613 std::cout <<
"Theoretical stdev = " << stdev_uchar_ref <<
" | returned value = " << stdev << std::endl;
617 nameTest = (
"vpImage<uchar>::getStdev(const vpImage<bool> *)");
618 stdev = I_uchar_ref.getStdev(&I_mask);
622 failedTestsNames.push_back(nameTest);
626 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
628 std::cout <<
"Theoretical stdev = " << stdev_uchar_true <<
" | returned value = " << stdev << std::endl;
632 nameTest = (
"vpImage<uchar>::getStdev(const vpImage<bool> * = nullptr)");
633 stdev = I_uchar_ref.getStdev(
nullptr);
637 failedTestsNames.push_back(nameTest);
641 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
643 std::cout <<
"Theoretical stdev = " << stdev_uchar_ref <<
" | returned value = " << stdev << std::endl;
647 nameTest = (
"vpImage<uchar>::getStdev(const double &)");
648 double mean = I_uchar_ref.getMeanValue();
649 stdev = I_uchar_ref.getStdev(mean);
653 failedTestsNames.push_back(nameTest);
657 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
659 std::cout <<
"Theoretical stdev = " << stdev_uchar_ref <<
" | returned value = " << stdev << std::endl;
663 nameTest = (
"vpImage<uchar>::getStdev(const double &, vpImage<bool> *, unsigned int *)");
664 unsigned int nbValidPoints = 0;
665 mean = I_uchar_ref.getMeanValue(&I_mask, &nbValidPoints);
666 stdev = I_uchar_ref.getStdev(mean, &I_mask, &nbValidPoints);
670 failedTestsNames.push_back(nameTest);
674 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
676 std::cout <<
"Theoretical stdev = " << stdev_uchar_true <<
" | returned value = " << stdev << std::endl;
680 nameTest = (
"vpImage<uchar>::getStdev(const double &, vpImage<bool> *, unsigned int * = nullptr)");
682 mean = I_uchar_ref.getMeanValue(
nullptr, &nbValidPoints);
683 stdev = I_uchar_ref.getStdev(mean,
nullptr, &nbValidPoints);
684 success =
vpMath::equal(stdev, stdev_uchar_ref) && (nbValidPoints == (nbRows * nbCols));
687 failedTestsNames.push_back(nameTest);
691 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
693 std::cout <<
"Theoretical count = " << nbRows * nbCols <<
" | returned value = " << nbValidPoints << std::endl;
694 std::cout <<
"Theoretical stdev = " << stdev_uchar_ref <<
" | returned value = " << stdev << std::endl;
698 nameTest =
"vpImage<vpRGBa>::getStdev()";
699 stdev = I_rgba_ref.getStdev();
703 failedTestsNames.push_back(nameTest);
707 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
709 std::cout <<
"Theoretical stdev = " << stdev_rgba_ref <<
" | returned value = " << stdev << std::endl;
713 nameTest = (
"vpImage<vpRGBa>::getStdev(const vpImage<bool> *)");
714 stdev = I_rgba_ref.getStdev(&I_mask);
718 failedTestsNames.push_back(nameTest);
722 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
724 std::cout <<
"Theoretical stdev = " << stdev_rgba_true <<
" | returned value = " << stdev << std::endl;
728 nameTest = (
"vpImage<vpRGBa>::getStdev(const vpImage<bool> * = nullptr)");
729 stdev = I_rgba_ref.getStdev(
nullptr);
733 failedTestsNames.push_back(nameTest);
737 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
739 std::cout <<
"Theoretical stdev = " << stdev_rgba_ref <<
" | returned value = " << stdev << std::endl;
743 nameTest = (
"vpImage<vpRGBa>::getStdev(const double &)");
744 mean = I_rgba_ref.getMeanValue();
745 stdev = I_rgba_ref.getStdev(mean);
749 failedTestsNames.push_back(nameTest);
753 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
755 std::cout <<
"Theoretical stdev = " << stdev_rgba_ref <<
" | returned value = " << stdev << std::endl;
759 nameTest = (
"vpImage<vpRGBa>::getStdev(const double &, vpImage<bool> *, unsigned int *)");
761 mean = I_rgba_ref.getMeanValue(&I_mask, &nbValidPoints);
762 stdev = I_rgba_ref.getStdev(mean, &I_mask, &nbValidPoints);
766 failedTestsNames.push_back(nameTest);
770 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
772 std::cout <<
"Theoretical stdev = " << stdev_rgba_true <<
" | returned value = " << stdev << std::endl;
776 nameTest = (
"vpImage<vpRGBa>::getStdev(const double &, vpImage<bool> *, unsigned int * = nullptr)");
778 mean = I_rgba_ref.getMeanValue(
nullptr, &nbValidPoints);
779 stdev = I_rgba_ref.getStdev(mean,
nullptr, &nbValidPoints);
780 success =
vpMath::equal(stdev, stdev_rgba_ref) && (nbValidPoints == (nbRows * nbCols));
783 failedTestsNames.push_back(nameTest);
787 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
789 std::cout <<
"Theoretical count = " << nbRows * nbCols <<
" | returned value = " << nbValidPoints << std::endl;
790 std::cout <<
"Theoretical stdev = " << stdev_rgba_ref <<
" | returned value = " << stdev << std::endl;
794 nameTest =
"vpImage<vpRGBf>::getStdev()";
795 stdev = I_rgbf_ref.getStdev();
799 failedTestsNames.push_back(nameTest);
803 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
805 std::cout <<
"Theoretical stdev = " << stdev_rgbf_ref <<
" | returned value = " << stdev << std::endl;
809 nameTest = (
"vpImage<vpRGBf>::getStdev(const vpImage<bool> *)");
810 stdev = I_rgbf_ref.getStdev(&I_mask);
814 failedTestsNames.push_back(nameTest);
818 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
820 std::cout <<
"Theoretical stdev = " << stdev_rgbf_true <<
" | returned value = " << stdev << std::endl;
824 nameTest = (
"vpImage<vpRGBf>::getStdev(const vpImage<bool> * = nullptr)");
825 stdev = I_rgbf_ref.getStdev(
nullptr);
829 failedTestsNames.push_back(nameTest);
833 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
835 std::cout <<
"Theoretical stdev = " << stdev_rgbf_ref <<
" | returned value = " << stdev << std::endl;
839 nameTest = (
"vpImage<vpRGBf>::getStdev(const double &)");
840 mean = I_rgbf_ref.getMeanValue();
841 stdev = I_rgbf_ref.getStdev(mean);
845 failedTestsNames.push_back(nameTest);
849 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
851 std::cout <<
"Theoretical stdev = " << stdev_rgbf_ref <<
" | returned value = " << stdev << std::endl;
855 nameTest = (
"vpImage<vpRGBf>::getStdev(const double &, vpImage<bool> *, unsigned int *)");
857 mean = I_rgbf_ref.getMeanValue(&I_mask, &nbValidPoints);
858 stdev = I_rgbf_ref.getStdev(mean, &I_mask, &nbValidPoints);
862 failedTestsNames.push_back(nameTest);
866 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
868 std::cout <<
"Theoretical stdev = " << stdev_rgbf_true <<
" | returned value = " << stdev << std::endl;
872 nameTest = (
"vpImage<vpRGBf>::getStdev(const double &, vpImage<bool> *, unsigned int * = nullptr)");
874 mean = I_rgbf_ref.getMeanValue(
nullptr, &nbValidPoints);
875 stdev = I_rgbf_ref.getStdev(mean,
nullptr, &nbValidPoints);
876 success =
vpMath::equal(stdev, stdev_rgbf_ref) && (nbValidPoints == (nbRows * nbCols));
879 failedTestsNames.push_back(nameTest);
883 std::cout <<
"\tTest " << nameTest <<
": " << (success ?
"OK" :
"failure") << std::endl;
885 std::cout <<
"Theoretical count = " << nbRows * nbCols <<
" | returned value = " << nbValidPoints << std::endl;
886 std::cout <<
"Theoretical stdev = " << stdev_rgbf_ref <<
" | returned value = " << stdev << std::endl;
892 std::cout <<
"All tests succeeded" << std::endl;
896 std::cerr << nbFailedTests <<
" tests failed: " << std::endl;
897 for (
unsigned int i = 0; i < nbFailedTests; ++i) {
898 std::cerr <<
" - " << failedTestsNames[i] << std::endl;
static bool equal(double x, double y, double threshold=0.001)