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