mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
Loading...
Searching...
No Matches
imageFilters_test.cpp
1/** \file imageUtils_test.cpp
2 */
3#include "../../catch2/catch.hpp"
4
5#include <vector>
6#include <Eigen/Dense>
7
8#include "../../../include/improc/imageFilters.hpp"
9
10using namespace Catch::Matchers;
11
12namespace unitTest
13{
14namespace improcTest
15{
16namespace imageFiltersTest
17{
18
19/// Verify precalcKernel filter
20/**
21 * \ingroup imageFilters_unit_tests
22 */
23TEST_CASE( "Verify precalcKernel filter", "[improc::imageFilters]" )
24{
25 SECTION("with Gaussian kernel")
26 {
27 typedef mx::improc::gaussKernel<mx::improc::eigenImage<float>> kernelT;
28
29 kernelT kernel(2);
30
31 mx::improc::precalcKernel<kernelT> pck(kernel, 64,64, 31.5, 31.5);
32
33 REQUIRE(pck.m_kernels.size() == 64*64);
34
36
37 bool alleq = true;
38 for(int cc = 0; cc < 64; ++cc)
39 {
40 for(int rr = 0; rr < 64; ++rr)
41 {
42 kernel.setKernel(rr-31.5, cc-31.5, karr);
43
44 pck.setKernel(rr-31.5, cc-31.5, karrpc);
45
46 alleq = ((karr - karrpc).sum() == 0);
47
48 if(!alleq) break;
49 }
50
51 if(!alleq) break;
52 }
53
54 REQUIRE(alleq);
55 }
56
57 SECTION("with azBoxKernel kernel")
58 {
60
61 kernelT kernel(3,5);
62
63 mx::improc::precalcKernel<kernelT> pck(kernel, 64,64, 31.5, 31.5);
64
65 REQUIRE(pck.m_kernels.size() == 64*64);
66
68
69 bool alleq = true;
70 for(int cc = 0; cc < 64; ++cc)
71 {
72 for(int rr = 0; rr < 64; ++rr)
73 {
74 kernel.setKernel(rr-31.5, cc-31.5, karr);
75
76 pck.setKernel(rr-31.5, cc-31.5, karrpc);
77
78 alleq = ((karr - karrpc).sum() == 0);
79
80 if(!alleq) break;
81 }
82
83 if(!alleq) break;
84 }
85
86 REQUIRE(alleq);
87 }
88}
89
90} // namespace imageFiltersTest
91} // namespace improcTest
92} // namespace unitTest
Eigen::Array< scalarT, -1, -1 > eigenImage
Definition of the eigenImage type, which is an alias for Eigen::Array.
TEST_CASE("Test error_t code names", "[error::error_t]")
Test error_t code names.
Azimuthally variable boxcar kernel.
A kernel that is pre-calculated for the entire image, useful for repeated applications.