1 
2 #include "testlib/testlib_test.h"
3 #include <vil3d/algo/vil3d_histogram.h>
4 
test_histogram_byte()5 static void test_histogram_byte()
6 {
7   vil3d_image_view<vxl_byte> image(5,5,5);
8   for (unsigned k=0;k<image.nk();++k)
9     for (unsigned j=0;j<image.nj();++j)
10       for (unsigned i=0;i<image.ni();++i)
11         image(i,j,k) = vxl_byte(i+j+k);
12 
13   std::vector<double> histo;
14   vil3d_histogram_byte(image,histo);
15   TEST("Histo size", histo.size(), 256);
16   TEST_NEAR("Histo element 0", histo[0], 1, 1e-6);
17   TEST_NEAR("Histo element 1", histo[1], 3, 1e-6);
18   TEST_NEAR("Histo element 2", histo[2], 6, 1e-6);
19   TEST_NEAR("Histo element 3", histo[3], 10, 1e-6);
20   TEST_NEAR("Histo element 4", histo[4], 15, 1e-6);
21   TEST_NEAR("Histo element 5", histo[5], 18, 1e-6);
22   TEST_NEAR("Histo element 13",histo[22],0, 1e-6);
23 
24   std::vector<double> histo2;
25   vil3d_histogram(image,histo2,0,20,20);
26   TEST("Histo size", histo2.size(), 20);
27   TEST_NEAR("Histo element 0", histo2[0], 1, 1e-6);
28   TEST_NEAR("Histo element 1", histo2[1], 3, 1e-6);
29   TEST_NEAR("Histo element 5", histo2[5], 18, 1e-6);
30   TEST_NEAR("Histo element 19",histo2[19],0, 1e-6);
31 
32   std::vector<double> histo3;
33   vil3d_histogram(image,histo3,0,20,10);
34   TEST("Histo size", histo3.size(), 10);
35   TEST_NEAR("Histo element 0", histo3[0], 4, 1e-6);
36   TEST_NEAR("Histo element 1", histo3[1], 16, 1e-6);
37   TEST_NEAR("Histo element 2", histo3[2], 33, 1e-6);
38   TEST_NEAR("Histo element 9", histo3[9], 0, 1e-6);
39 }
40 
test_algo_histogram()41 static void test_algo_histogram()
42 {
43   test_histogram_byte();
44 }
45 
46 TESTMAIN(test_algo_histogram);
47